DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


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.
  • 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

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki