在 DokuWiki 中,是否有插入与最新的稳定版本(2009-02-14)兼容,可以在部分标题(如 Wikipedia 或 MediaWiki)上显示编辑按钮,而不是在部分文本的末尾显示它们。
默认方式令人困惑,因为当您想要编辑某个部分时,您必须滚动到其内容的末尾并单击那里的编辑按钮。
答案1
好的,我已经想出了如何自己做,下面是解决方案,这样你就可以使用编辑按钮在章节标题,如维基百科。
在文本编辑器中打开以下文件。
“\dokuwiki\inc\parser\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 文件,然后在您的 wiki 上重新加载一篇文章 - 瞧!您已成功“修改” DokuWiki,使其在每个标题附近都有编辑按钮,以编辑相应的部分。
希望这可以帮助。
答案2
由于渲染方式的原因,在 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');
}