DokuWiki - So zeigen Sie die Bearbeitungsschaltflächen in Abschnittsüberschriften an

2142
Robinicks

In DokuWiki gibt es ein Plugin, das mit der neuesten stabilen Version (2009-02-14) kompatibel ist. Es kann die Bearbeitungsschaltflächen in Abschnittsüberschriften (wie Wikipedia oder MediaWiki) anzeigen, anstatt sie am Ende des Abschnittstextes anzuzeigen.

Die Standardmethode ist verwirrend, da Sie zum Bearbeiten eines Abschnitts bis zum Ende des Inhalts scrollen und dort auf die Schaltfläche Bearbeiten klicken müssen.

3

2 Antworten auf die Frage

4
Robinicks

Okay, ich habe herausgefunden, wie ich es selbst mache, und hier ist die Lösung, so dass Sie Schaltflächen in den Abschnittskopfzeilen wie Wikipedia verwenden können.

Öffnen Sie die folgende Datei in einem Texteditor.

"\ dokuwiki \ inc \ parser \ handler.php"

In der Nähe der Linie 110 finden Sie Folgendes:

 if ($level<=$conf['maxseclevel']) { $this->_addCall('section_edit',array($this->status['section_edit_start'], $pos-1, $this->status['section_edit_level'], $this->status['section_edit_title']), $pos); $this->status['section_edit_start'] = $pos; $this->status['section_edit_level'] = $level; $this->status['section_edit_title'] = $title; } 

Ersetzen Sie das oben genannte durch:

 if ($level<=$conf['maxseclevel']) { $this->status['section_edit_start'] = $pos; $this->status['section_edit_level'] = $level; $this->status['section_edit_title'] = $title; $this->_addCall('section_edit',array($this->status['section_edit_start'], $pos-1, $this->status['section_edit_level'], $this->status['section_edit_title']), $pos); } 

Speichern und schließen Sie die PHP-Datei und laden Sie einen Artikel erneut in Ihr Wiki - und voila! Sie haben DokuWiki erfolgreich "modifiziert", um Bearbeitungsschaltflächen in der Nähe jeder Kopfzeile zu haben und den entsprechenden Abschnitt zu bearbeiten.

Hoffe das hilft.

Die einzigen Nachteile sind: (1) Am Ende des Artikels wird eine zusätzliche Bearbeitungsschaltfläche angezeigt. (2) Wenn Sie einen Abschnitt bearbeiten, werden alle Wikitext-Elemente des Artikels ab diesem Abschnitt angezeigt. (Beide sind nicht wirklich wichtig, daher ist dieser Fix von Bedeutung.) ist verarbeitbar!) Robinicks vor 14 Jahren 0
Aber es gibt noch ein anderes Problem (3), wenn Sie einen Abschnitt bearbeiten, scheint er beim Kopieren der Änderungen zu duplizieren Robinicks vor 14 Jahren 0
1
Nathan

Es scheint nicht möglich zu sein, dies in PHP zu tun, da das Rendering so gemacht wird, dass wir den Endbereich des Abschnitts nicht kennen, aber wir können die Buttons verschieben, sobald die Seite mit Javascript gerendert wurde.

Zum Release 2016-06-26a "Elenor of Tsort" bearbeiten Sie lib / scripts / page.js und fügen Folgendes ein:

/** * Moves the edit buttons beside the headings once it has the edit end range since we dont know it when rendering the heading in PHP. */ moveEditButtonsToHeadings: function(){ jQuery('form.btn_secedit').each(function(){ var $tgt = jQuery(this).parent(), $editButton = jQuery(this).parent(), nr = $tgt.attr('class').match(/(\s+|^)editbutton_(\d+)(\s+|$)/)[2];  // Walk the dom tree in reverse to find the sibling which is or contains the section edit marker while($tgt.length > 0 && !($tgt.hasClass('sectionedit' + nr) || $tgt.find('.sectionedit' + nr).length)) { $tgt = $tgt.prev(); }  // move the edit button and adjust the styles $tgt.css('display', 'inline-block'); $editButton.detach().insertAfter($tgt); if ($tgt.prop("tagName") == 'H1') { $editButton.css('marginTop', '0.4em'); } else if ($tgt.prop("tagName") == 'H2') { $editButton.css('marginTop', '0.2em'); } else { $editButton.css('marginTop', '0.0em'); } $editButton.css('marginRight', '10px'); $editButton.css('float', 'left'); }); },  sectionHighlight2: function() { jQuery('div.secedit') .mouseover(function(){ var $tgt = jQuery(this), $level = $tgt.next(); $level.addClass('section_highlight'); }) .mouseout(function(){ var $tgt = jQuery(this), $level = $tgt.next(); $level.removeClass('section_highlight'); }); } 

Ändern Sie die init-Funktion, um die beiden neuen Funktionen aufzurufen, und kommentieren Sie den alten sectionHighlight aus.

init: function(){ //dw_page.sectionHighlight(); dw_page.moveEditButtonsToHeadings(); dw_page.sectionHighlight2(); jQuery('a.fn_top').mouseover(dw_page.footnoteDisplay); dw_page.makeToggle('#dw__toc h3','#dw__toc > div'); }