DokuWiki - Как показать кнопки редактирования в заголовках разделов

1807
Robinicks

В DokuWiki есть ли плагин, совместимый с последней стабильной версией (2009-02-14), который может показывать кнопки редактирования в заголовках разделов (например, в Википедии или MediaWiki) вместо того, чтобы показывать их в конце текста раздела.

Способ по умолчанию сбивает с толку, поскольку, когда вы хотите отредактировать раздел, вы должны прокрутить до конца его содержание и нажать там кнопку редактирования.

3

2 ответа на вопрос

4
Robinicks

Хорошо, я понял, как сделать это сам, а вот решение, так что вы можете иметь кнопки редактирования на заголовок раздела, как Википедия.

Откройте следующий файл в текстовом редакторе.

"\ DokuWiki \ вкл \ парсер \ handler.php"

Рядом с линией 110 вы найдете это:

 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; } 

Замените вышеупомянутое этим:

 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); } 

Сохраните и закройте файл PHP и перезагрузите статью в вики - и вуаля! Вы успешно "отредактировали" DokuWiki, чтобы иметь кнопки редактирования возле каждого заголовка, чтобы редактировать соответствующий раздел.

Надеюсь это поможет.

Единственными недостатками являются: (1) вы увидите одну дополнительную кнопку редактирования в конце статьи (2) редактирование раздела покажет весь вики-текст в статье, начиная с этого раздела и далее (и то, и другое не имеет значения, так что это исправление работоспособен!) Robinicks 14 лет назад 0
О, но есть еще одна проблема (3) редактирование раздела, кажется, дублирует его при сохранении изменений Robinicks 14 лет назад 0
1
Nathan

В PHP это не представляется возможным из-за того, как выполняется рендеринг, мы не будем знать конечный диапазон раздела, но мы можем перемещать кнопки после того, как страница будет отображена с помощью javascript.

Для выпуска 2016-06-26a "Elenor of Tsort" отредактируйте lib / scripts / page.js и вставьте:

/** * 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'); }); } 

Измените функцию init, чтобы вызвать две новые функции и закомментировать старый sectionHighlight.

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'); }