diff --git a/.gitattributes b/.gitattributes index cbb7afc8f9a37e5af888d6c6b57be7603020ecdb..2d68bba5435a2d88b7a550df755f283492179cb0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -88,6 +88,7 @@ ecrire/action/legender.php -text ecrire/action/logout.php -text ecrire/action/petitionner.php -text ecrire/action/poster_forum_prive.php -text +ecrire/action/preferer.php -text ecrire/action/purger.php -text ecrire/action/referencer_traduction.php -text ecrire/action/regler_moderation.php -text diff --git a/ecrire/action/preferer.php b/ecrire/action/preferer.php new file mode 100644 index 0000000000000000000000000000000000000000..075adcd389ed7813d24f2bba844b3b2e8c19aa9e --- /dev/null +++ b/ecrire/action/preferer.php @@ -0,0 +1,47 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2008 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + + +function action_preferer_dist() { + // + // Preferences de presentation + // + + $prefs_mod = false; + + if (_request('set_couleur')) { + $GLOBALS['visiteur_session']['prefs']['couleur'] = intval(_request('set_couleur')); + $prefs_mod = true; + } + if (_request('set_disp')) { + $GLOBALS['visiteur_session']['prefs']['display'] = intval(_request('set_disp')); + $prefs_mod = true; + } + if ($prefs_mod AND intval($GLOBALS['visiteur_session']['id_auteur'])) { + sql_updateq('spip_auteurs', array('prefs' => serialize($GLOBALS['visiteur_session']['prefs'])), "id_auteur=" .intval($GLOBALS['visiteur_session']['id_auteur'])); + + // Si modif des couleurs en ajax, stop ici + if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') exit; + } + + if (isset($_GET['set_ecran'])) { + // Poser un cookie, + // car ce reglage depend plus du navigateur que de l'utilisateur + $GLOBALS['spip_ecran'] = $_GET['set_ecran']; + include_spip('inc/cookie'); + spip_setcookie('spip_ecran', $GLOBALS['spip_ecran'], time() + 365 * 24 * 3600); + } +} + +?> \ No newline at end of file diff --git a/ecrire/inc/actions.php b/ecrire/inc/actions.php index 02f31fcc35934fe031a5445d6a93e86c7a51d384..a9ec068bdc7dc5caba2a20644b2b32afad0c972f 100644 --- a/ecrire/inc/actions.php +++ b/ecrire/inc/actions.php @@ -23,7 +23,7 @@ function generer_action_auteur($action, $arg, $redirect="", $mode=false, $att='' // http://doc.spip.org/@redirige_action_auteur function redirige_action_auteur($action, $arg, $ret, $gra='', $mode=false, $atts='') { - $r = generer_url_ecrire($ret, $gra, true, _DIR_RESTREINT_ABS); + $r = _DIR_RESTREINT . generer_url_ecrire($ret, $gra, true, true); return generer_action_auteur($action, $arg, $r, $mode, $atts); } diff --git a/ecrire/inc/ajouter_documents.php b/ecrire/inc/ajouter_documents.php index 3f403936629cbe78c4e7bc7c6c5e5403e3d1a3f3..0805dfece8a164d193f977b00c69482f5b5c74b0 100644 --- a/ecrire/inc/ajouter_documents.php +++ b/ecrire/inc/ajouter_documents.php @@ -474,7 +474,7 @@ function liste_archive_jointe($valables, $zip, $type, $id, $mode, $id_document, "</p><p>" . _T('upload_fichier_zip_texte2') . "</p>" . - generer_form_public('joindre', $texte,' method="post"'); + generer_form_action('joindre', $texte,' method="post"'); if(_request("iframe")=="iframe") { return "<p>build form $iframe_redirect</p>" . diff --git a/ecrire/inc/commencer_page.php b/ecrire/inc/commencer_page.php index 1df4afab4282036cf357e2c6134ce813963a3e5f..6bf9c7ddb5b6117f9d4cd2f6011ba4560edad97d 100644 --- a/ecrire/inc/commencer_page.php +++ b/ecrire/inc/commencer_page.php @@ -90,9 +90,9 @@ function init_body($rubrique='accueil', $sous_rubrique='accueil', $id_rubrique=' /* if ($menu) $res .= "\n<div><map name='map_layout' id='map_layout'>" - . lien_change_var (self(), 'set_disp', 1, '1,0,18,15', _T('lien_afficher_texte_seul'), "onmouseover=\"changestyle('bandeauvide');\" onfocus=\"changestyle('bandeauvide');\" onblur=\"changestyle('bandeauvide');\"") - . lien_change_var (self(), 'set_disp', 2, '19,0,40,15', _T('lien_afficher_texte_icones'), "onmouseover=\"changestyle('bandeauvide');\" onfocus=\"changestyle('bandeauvide');\" onblur=\"changestyle('bandeauvide');\"") - . lien_change_var (self(), 'set_disp', 3, '41,0,59,15', _T('lien_afficher_icones_seuls'), "onmouseover=\"changestyle('bandeauvide');\" onfocus=\"changestyle('bandeauvide');\" onblur=\"changestyle('bandeauvide');\"") + . lien_change_var (generer_url_action('preferer',"set_disp=1&redirect=".urlencode(self())), '1,0,18,15', _T('lien_afficher_texte_seul'), "onmouseover=\"changestyle('bandeauvide');\" onfocus=\"changestyle('bandeauvide');\" onblur=\"changestyle('bandeauvide');\"") + . lien_change_var (generer_url_action('preferer',"set_disp=2&redirect=".urlencode(self())), '19,0,40,15', _T('lien_afficher_texte_icones'), "onmouseover=\"changestyle('bandeauvide');\" onfocus=\"changestyle('bandeauvide');\" onblur=\"changestyle('bandeauvide');\"") + . lien_change_var (generer_url_action('preferer',"set_disp=3&redirect=".urlencode(self())), '41,0,59,15', _T('lien_afficher_icones_seuls'), "onmouseover=\"changestyle('bandeauvide');\" onfocus=\"changestyle('bandeauvide');\" onblur=\"changestyle('bandeauvide');\"") . "\n</map></div>"; */ if ($spip_display == "4") { @@ -141,14 +141,14 @@ function init_body($rubrique='accueil', $sous_rubrique='accueil', $id_rubrique=' // grand ecran if ($spip_ecran == "large") { $i = _T('info_petit_ecran'); - $res .= "<a href='". parametre_url(self(),'set_ecran', 'etroit') ."' class='icone26' onmouseover=\"changestyle('bandeauecran');\" title=\"$i\" onfocus=\"changestyle('bandeauecran');\" onblur=\"changestyle('bandeauecran');\">" . + $res .= "<a href='". generer_url_action('preferer',"set_ecran=etroit&redirect=".urlencode(self())) ."' class='icone26' onmouseover=\"changestyle('bandeauecran');\" title=\"$i\" onfocus=\"changestyle('bandeauecran');\" onblur=\"changestyle('bandeauecran');\">" . http_img_pack("set-ecran-etroit.png", $i, "width='26' height='20'") . "</a>"; - $ecran = "<div><a href='".parametre_url(self(),'set_ecran', 'etroit')."' class='lien_sous'>"._T('info_petit_ecran')."</a>/<b>"._T('info_grand_ecran')."</b></div>"; + $ecran = "<div><a href='".generer_url_action('preferer',"set_ecran=etroit&redirect=".urlencode(self()))."' class='lien_sous'>"._T('info_petit_ecran')."</a>/<b>"._T('info_grand_ecran')."</b></div>"; } else { $i = _T('info_grand_ecran'); - $res .= "<a href='".parametre_url(self(),'set_ecran', 'large')."' class='icone26' onmouseover=\"changestyle('bandeauecran');\" title=\"$i\" onfocus=\"changestyle('bandeauecran');\" onblur=\"changestyle('bandeauecran');\">" . + $res .= "<a href='".generer_url_action('preferer',"set_ecran=large&redirect=".urlencode(self()))."' class='icone26' onmouseover=\"changestyle('bandeauecran');\" title=\"$i\" onfocus=\"changestyle('bandeauecran');\" onblur=\"changestyle('bandeauecran');\">" . http_img_pack("set-ecran.png", $i, "width='26' height='20'") ."</a>"; - $ecran = "<div><b>"._T('info_petit_ecran')."</b>/<a href='".parametre_url(self(),'set_ecran', 'large')."' class='lien_sous'>"._T('info_grand_ecran')."</a></div>"; + $ecran = "<div><b>"._T('info_petit_ecran')."</b>/<a href='".generer_url_action('preferer',"set_ecran=large&redirect=".urlencode(self()))."' class='lien_sous'>"._T('info_grand_ecran')."</a></div>"; } // Choix de la couleur diff --git a/ecrire/inc/couleurs.php b/ecrire/inc/couleurs.php index 307473366a4df832e1e89412488e4559f989058c..e0bb14c09fffd165353e6bb10eae06a3d52561bd 100644 --- a/ecrire/inc/couleurs.php +++ b/ecrire/inc/couleurs.php @@ -90,7 +90,7 @@ onblur="changestyle(\'bandeauinterface\');"'; foreach ($couleurs_spip as $key => $val) { $bloc .= '<a href="' - . parametre_url(self(), 'set_couleur', $key) + . generer_url_action('preferer',"set_couleur=$key&redirect=".urlencode(self())) . '"' . ' rel="'.generer_url_public('style_prive','ltr=' . $GLOBALS['spip_lang_left'] . '&' diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index 69cebf390bbdc58c8ff0a96778250f2f188ff3c0..7f778c3bb45fdc58cb5932b0a211c6fe4d161225 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -2460,7 +2460,7 @@ function chercher_rubrique($msg,$id, $id_parent, $type, $id_secteur, $restreint, . "</div>"; } $form = "<input type='hidden' name='editer_$type' value='oui' />\n" . $form; - $form = generer_action_auteur("editer_$type", $id, _DIR_RESTREINT_ABS . self(), $form, " method='post' class='submit_plongeur'"); + $form = generer_action_auteur("editer_$type", $id, self(), $form, " method='post' class='submit_plongeur'"); } if ($retour_sans_cadre) diff --git a/ecrire/inc/forum.php b/ecrire/inc/forum.php index a2cd385aac8d5c1b4e1606a543c45b27788ef5d0..32dc6c873db076c6ff3ab5c9d593527c066a5f61 100644 --- a/ecrire/inc/forum.php +++ b/ecrire/inc/forum.php @@ -164,7 +164,7 @@ function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref return; } - $lien = _DIR_RESTREINT_ABS . generer_url_ecrire($script, $args, true, true) . "#id$id_forum"; + $lien = _DIR_RESTREINT . generer_url_ecrire($script, $args, true, true) . "#id$id_forum"; $boutons =''; if ($suppression) $boutons .= icone_inline(_T('icone_supprimer_message'), generer_action_auteur('instituer_forum',"$id_forum-$suppression", $lien), @@ -178,7 +178,7 @@ function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref if ($valider_repondre) { $dblret = rawurlencode($lien); - $boutons .= icone_inline(_T('icone_valider_message') . " & " . _T('lien_repondre_message'), generer_action_auteur('instituer_forum',"$id_forum-$valider", generer_url_public('forum', "$ref&id_forum=$id_forum&retour=$dblret", true, true)), + $boutons .= icone_inline(_T('icone_valider_message') . " & " . _T('lien_repondre_message'), generer_action_auteur('instituer_forum',"$id_forum-$valider", _DIR_RACINE . generer_url_public('forum', "$ref&id_forum=$id_forum&retour=$dblret", true, true)), $logo, "creer.gif", 'right', 'non'); } diff --git a/ecrire/inc/gadgets.php b/ecrire/inc/gadgets.php index 065216d901047f6337a81a95901555bc63e9ae47..fd615e71a51667efcca930fa032466b789ff4579 100644 --- a/ecrire/inc/gadgets.php +++ b/ecrire/inc/gadgets.php @@ -125,9 +125,9 @@ function bandeau_gadgets($largeur, $options, $id_rubrique) { // menu $bandeau .= "\n<div id='preferences_map'><map name='map_layout' id='map_layout'>" - . lien_change_var (self(), 'set_disp', 1, '1,0,18,15', _T('lien_afficher_texte_seul')) - . lien_change_var (self(), 'set_disp', 2, '19,0,40,15', _T('lien_afficher_texte_icones')) - . lien_change_var (self(), 'set_disp', 3, '41,0,59,15', _T('lien_afficher_icones_seuls')) + . lien_change_var (generer_url_action('preferer',"set_disp=1&redirect=".urlencode(self())),'','', '1,0,18,15', _T('lien_afficher_texte_seul')) + . lien_change_var (generer_url_action('preferer',"set_disp=2&redirect=".urlencode(self())),'','', '19,0,40,15', _T('lien_afficher_texte_icones')) + . lien_change_var (generer_url_action('preferer',"set_disp=3&redirect=".urlencode(self())),'','', '41,0,59,15', _T('lien_afficher_icones_seuls')) . "\n</map></div>"; $bandeau .= "<div id='preferences_menu'>" . http_img_pack("choix-layout$spip_lang_rtl".($spip_lang=='he'?'_he':'').".gif", _T('choix_interface'), " style='vertical-align: middle' width='59' height='15' usemap='#map_layout'") @@ -135,9 +135,9 @@ function bandeau_gadgets($largeur, $options, $id_rubrique) { . "</div>"; // ecran if ($spip_ecran == "large") - $bandeau .= "<div id='preferences_ecran'><a href='".parametre_url(self(),'set_ecran', 'etroit')."' class='lien_sous'>"._T('info_petit_ecran')."</a>/<b>"._T('info_grand_ecran')."</b></div>"; + $bandeau .= "<div id='preferences_ecran'><a href='".generer_url_action('preferer',"set_ecran=etroit&redirect=".urlencode(self()))."' class='lien_sous'>"._T('info_petit_ecran')."</a>/<b>"._T('info_grand_ecran')."</b></div>"; else - $bandeau .= "<div id='preferences_ecran'><b>"._T('info_petit_ecran')."</b>/<a href='".parametre_url(self(),'set_ecran', 'large')."' class='lien_sous'>"._T('info_grand_ecran')."</a></div>"; + $bandeau .= "<div id='preferences_ecran'><b>"._T('info_petit_ecran')."</b>/<a href='".generer_url_action('preferer',"set_ecran=large&redirect=".urlencode(self()))."' class='lien_sous'>"._T('info_grand_ecran')."</a></div>"; $bandeau .= "</div>"; diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php index ca92da47c20008bfa87acac5ce0446f5c81e4771..2dfd0a7beaa525db1ae24232f324418054f25eba 100644 --- a/ecrire/inc/presentation.php +++ b/ecrire/inc/presentation.php @@ -944,7 +944,7 @@ function fin_page() return debut_grand_cadre(true) . (($spip_display == 4) ? ("<div><a href='" - . parametre_url(self(),'set_disp', '2') + . generer_url_action('preferer','set_disp=2&redirect='.urlencode(self())) . "'>" . _T("access_interface_graphique") . "</a></div>") diff --git a/ecrire/inc/securiser_action.php b/ecrire/inc/securiser_action.php index 06d9c9411998eab5ca3f6f62620be20663cb9ecf..82439f8695c550a42d8fdb4d81cff15c66bd5879 100644 --- a/ecrire/inc/securiser_action.php +++ b/ecrire/inc/securiser_action.php @@ -58,7 +58,7 @@ function securiser_action_auteur($action, $arg, $redirect="", $mode=false, $att= <input name='hash' type='hidden' value='$hash' /> <input name='arg' type='hidden' value='$arg' />"; - return generer_form_public($action, $mode, $att); + return generer_form_action($action, $mode, $att); } // http://doc.spip.org/@caracteriser_auteur diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 0bebdbccf6c80d5b72af89874894931f20a2d6c1..f7cc9d3b4657db461fb0259173c3bfb0d39a41fe 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -348,7 +348,7 @@ function self($amp = '&', $root = false) { // supprimer les variables sans interet if (test_espace_prive()) { $url = preg_replace (',([?&])(' - .'lang|set_options|set_couleur|set_disp|set_ecran|show_docs|' + .'lang|show_docs|' .'changer_lang|var_lang|action)=[^&]*,i', '\1', $url); $url = preg_replace(',([?&])[&]+,', '\1', $url); $url = preg_replace(',[&]$,', '\1', $url); @@ -920,9 +920,8 @@ function generer_form_ecrire($script, $corps, $atts='', $submit='') { // On n'applique pas la recommandation ci-dessus pour les scripts publics // qui ne sont pas destines a etre mis en signets -// http://doc.spip.org/@generer_form_public -function generer_form_public($script, $corps, $atts='') { - return "\n<form action='" . generer_url_public() . +function generer_form_action($script, $corps, $atts='') { + return "\n<form action='" . (_DIR_RACINE ? generer_url_ecrire() : generer_url_public()) . "'" . $atts . ">\n" . @@ -934,10 +933,15 @@ function generer_form_public($script, $corps, $atts='') { // http://doc.spip.org/@generer_url_action function generer_url_action($script, $args="", $no_entities=false ,$rel = false) { - - return generer_url_public('', - "action=$script" .($args ? "&$args" : ''), - $no_entities); + $url = _DIR_RACINE ? generer_url_ecrire() : generer_url_public(); + $url = parametre_url($url,'action',$script); + if ($args) $url .= quote_amp('&'.$args); + + if ($no_entities) $url = str_replace('&','&',$url); + return $url; + return generer_url_public('', + "action=$script" .($args ? "&$args" : ''), + $no_entities); } diff --git a/ecrire/index.php b/ecrire/index.php index 8e2a00cc4a99ef3813a0246259c9a4927380a4d9..a1365e82418cf31ee8698194a940bad28440784e 100644 --- a/ecrire/index.php +++ b/ecrire/index.php @@ -62,39 +62,6 @@ if (autoriser_sans_cookie($exec)) { } } -// -// Preferences de presentation -// - -$prefs_mod = false; - -if (isset($_GET['set_couleur'])) { - $GLOBALS['visiteur_session']['prefs']['couleur'] = intval($_GET['set_couleur']); - $prefs_mod = true; -} -if (isset($_GET['set_disp'])) { - $GLOBALS['visiteur_session']['prefs']['display'] = intval($_GET['set_disp']); - $prefs_mod = true; -} -if ($prefs_mod AND !$var_auth) { - sql_updateq('spip_auteurs', array('prefs' => serialize($GLOBALS['visiteur_session']['prefs'])), "id_auteur=" .intval($GLOBALS['visiteur_session']['id_auteur'])); - - // Si modif des couleurs en ajax, stop ici - if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') exit; -} - -// compatibilite ascendante -$GLOBALS['spip_display'] = isset($GLOBALS['visiteur_session']['prefs']['display']) - ? $GLOBALS['visiteur_session']['prefs']['display'] - : 0; - -if (isset($_GET['set_ecran'])) { - // Poser un cookie, - // car ce reglage depend plus du navigateur que de l'utilisateur - $GLOBALS['spip_ecran'] = $_GET['set_ecran']; - spip_setcookie('spip_ecran', $GLOBALS['spip_ecran'], time() + 365 * 24 * 3600); - } else $GLOBALS['spip_ecran'] = isset($_COOKIE['spip_ecran']) ? $_COOKIE['spip_ecran'] : "etroit"; - // initialiser a la langue par defaut include_spip('inc/lang'); @@ -115,7 +82,22 @@ if (isset($_COOKIE['spip_lang_ecrire'])) { } } -utiliser_langue_visiteur(); +utiliser_langue_visiteur(); + +if (_request('action') OR _request('var_ajax') OR _request('formulaire_action')){ + // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires + include_spip('public/aiguiller'); + if ( + // cas des appels actions ?action=xxx + traiter_appels_actions() + OR + // cas des hits ajax sur les inclusions ajax + traiter_appels_inclusions_ajax() + OR + // cas des formulaires charger/verifier/traiter + traiter_formulaires_dynamiques()) + exit; // le hit est fini ! +} // // Gestion d'une page normale de l'espace prive @@ -166,17 +148,11 @@ AND $l = @unserialize($l)) { } } -if (_request('action') OR _request('var_ajax') OR _request('formulaire_action')){ - // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires - include_spip('public/aiguiller'); - if ( - // cas des hits ajax sur les inclusions ajax - traiter_appels_inclusions_ajax() - OR - // cas des formulaires charger/verifier/traiter - traiter_formulaires_dynamiques()) - exit; // le hit est fini ! -} +// compatibilite ascendante +$GLOBALS['spip_display'] = isset($GLOBALS['visiteur_session']['prefs']['display']) + ? $GLOBALS['visiteur_session']['prefs']['display'] + : 0; +$GLOBALS['spip_ecran'] = isset($_COOKIE['spip_ecran']) ? $_COOKIE['spip_ecran'] : "etroit"; // Passer la main aux outils XML a la demande (meme les redac s'ils veulent). if ($var_f = _request('transformer_xml')) { @@ -199,4 +175,4 @@ if ($GLOBALS['var_mode'] == 'debug') { if (count($tableau_des_erreurs) AND $affiche_boutons_admin) echo affiche_erreurs_page($tableau_des_erreurs); -?> +?> \ No newline at end of file diff --git a/ecrire/oo/index.php b/ecrire/oo/index.php index b8fbcd40efb23f12d3ab8f3489424e88905a8a7f..8f583f98b7413184d99d282e1ccfc57c3423ffb5 100644 --- a/ecrire/oo/index.php +++ b/ecrire/oo/index.php @@ -3,6 +3,6 @@ // ACCESSIBILITE // la page /oo offre une lecture en mode "texte seul" -@header("Location: ../?set_disp=4&set_options=basiques&exec=" . $_REQUEST['exec']); +@header("Location: ../?action=preferer&set_disp=4&redirect=".urlencode("./?exec=" . $_REQUEST['exec'])); ?>