fr:tips:back_to_edited_section
Après une édition, retourne à la section qui vient d'être modifiée
- Fonction intégrée à Dokuwiki depuis la version 2009-02-14 → ce qui suit est inutile si vous possédez cette version ou plus.
- Fonctionne pour moi (emauvaisfr [at] yahoo [dot] fr) avec un Dokuwiki 2008-05-05.
- Fichiers modifiés (à modifier dans cet ordre) :
./doku.php ./inc/actions.php ./inc/html.php ./inc/parser/xhtml.php
- (Voir les ajouts marqués
//Ajout pour anchor
)- Dans
./doku.php
:[...] //import variables $QUERY = trim($_REQUEST['id']); $ID = getID(); $NS = getNS($ID); $REV = $_REQUEST['rev']; $ACT = $_REQUEST['do']; $IDX = $_REQUEST['idx']; $DATE = $_REQUEST['date']; $RANGE = $_REQUEST['lines']; $HIGH = $_REQUEST['s']; //Ajout pour anchor $ANCHOR=$_REQUEST['anchor']; //Fin ajout if(empty($HIGH)) $HIGH = getGoogleQuery(); [...]
- Dans
./inc/actions.php
:[...] function act_save($act){ global $ID; global $DATE; global $PRE; global $TEXT; global $SUF; global $SUM; //Ajout pour anchor global $ANCHOR; //Fin ajout //spam check if(checkwordblock()) return 'wordblock'; //conflict check //FIXME use INFO if($DATE != 0 && @filemtime(wikiFN($ID)) > $DATE ) return 'conflict'; //save it saveWikiText($ID,con($PRE,$TEXT,$SUF,1),$SUM,$_REQUEST['minor']); //use pretty mode for con //unlock it unlock($ID); //delete draft act_draftdel($act); //show it session_write_close(); //Ajout pour anchor //header("Location: ".wl($ID,'',true)); if ($ANCHOR) header("Location: ".wl($ID,'',true)."#$ANCHOR"); else header("Location: ".wl($ID,'',true)); //Fin ajout exit(); } [...]
- Dans
./inc/html.php
:[...] function html_secedit_button($matches){ global $ID; global $INFO; $section = $matches[2]; $name = $matches[1]; //Ajout pour anchor $anchor = $matches[3]; //Fin ajout $secedit = ''; $secedit .= '<div class="secedit">'; //Ajout pour anchor //$secedit .= html_btn('secedit',$ID,'', // array('do' => 'edit', // 'lines' => "$section", // 'rev' => $INFO['lastmod']), // 'post', $name); $secedit .= html_btn('secedit',$ID,'', array('do' => 'edit', 'lines' => "$section", 'rev' => $INFO['lastmod'], 'anchor' => $anchor), 'post', $name); //Fin ajout $secedit .= '</div>'; return $secedit; } [...] function html_secedit($text,$show=true){ global $INFO; if($INFO['writable'] && $show && !$INFO['rev']){ //Ajout pour anchor //$text = preg_replace_callback('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#', $text2 = preg_replace_callback('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] \#(.*?) -->#', 'html_secedit_button', $text); if ($text2==$text) $text2 = preg_replace_callback('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#', 'html_secedit_button', $text); $text=&$text2; //Fin ajout }else{ //Ajout pour anchor //$text = preg_replace('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#','',$text); $text2 = preg_replace('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] \#(.*?) -->#','',$text); if ($text2==$text) $text2 = preg_replace('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#','',$text); $text=&$text2; //Fin ajout } return $text; } [...] function html_edit($text=null,$include='edit'){ //FIXME: include needed? global $ID; global $REV; global $DATE; global $RANGE; global $PRE; global $SUF; global $INFO; global $SUM; global $lang; global $conf; //Ajout pour anchor global $ANCHOR; //Fin ajout [...] $form = new Doku_Form('dw__editform'); $form->addHidden('id', $ID); $form->addHidden('rev', $REV); $form->addHidden('date', $DATE); $form->addHidden('prefix', $PRE); $form->addHidden('suffix', $SUF); $form->addHidden('changecheck', $check); //Ajout pour anchor $form->addHidden('anchor', $ANCHOR); //Fin ajout [...]
- Dans
./inc/parser/xhtml.php
:[...] var $_counter = array(); // used as global counter, introduced for table classes //Ajout pour anchor var $HID=""; //Fin ajout [...] function header($text, $level, $pos) { //Ajout pour anchor global $HID; //fin ajout $hid = $this->_headerToLink($text,true); //Ajout pour anchor $HID=$hid; //Fin ajout //only add items within configured levels $this->toc_additem($hid, $text, $level); // write the header $this->doc .= DOKU_LF.'<h'.$level.'><a name="'.$hid.'" id="'.$hid.'">'; $this->doc .= $this->_xmlEntities($text); $this->doc .= "</a></h$level>".DOKU_LF; } [...] function section_edit($start, $end, $level, $name) { global $conf; //Ajout pour anchor global $HID; //Fin ajout if ($start!=-1 && $level<=$conf['maxseclevel']) { $name = str_replace('"', '', $name); //Ajout pour anchor //$this->doc .= '<!-- SECTION "'.$name.'" ['.$start.'-'.(($end===0)?'':$end).'] -->'; $this->doc .= '<!-- SECTION "'.$name.'" ['.$start.'-'.(($end===0)?'':$end).'] #'.$HID.' -->'; //Fin ajout } } [...]
Discussion
- Dites-moi tout…
fr/tips/back_to_edited_section.txt · Dernière modification : 2009-02-18 17:51 de 145.242.11.4