DokuWiki - Як показувати кнопки редагування на заголовках розділів


3

У ДокуВікі є якісь підключати сумісна з останньою стабільною версією (2009-02-14), яка може показувати кнопки редагування на заголовках розділів (наприклад, Wikipedia або MediaWiki) замість того, щоб показувати їх у кінці тексту розділу.

За замовчуванням це заплутано, оскільки, коли ви хочете відредагувати розділ, вам потрібно прокрутити його до кінця його контенту і натиснути кнопку редагування.

Відповіді:


4

Добре, я зрозумів, як це зробити сам, і ось рішення, так що ви можете мати кнопки редагування на заголовки розділів, такі як Вікіпедія.

Відкрийте наступний файл у текстовому редакторі.

синтаксичний аналізатор \ t

Біля лінії 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, щоб кнопки редагування знаходилися біля кожного заголовка, щоб відредагувати відповідний розділ.

Сподіваюся, що це допомагає.


Єдині недоліки: (1) Ви побачите одну додаткову кнопку редагування в кінці статті (2), у якій буде показано весь розділ wikitext у статті з цього розділу далі. є працездатним!)
Robinicks

Але є ще одна проблема (3), коли редагування розділу дублює його, коли ви зберігаєте зміни
Robinicks

1

Це не представляється можливим зробити це в 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 для виклику двох нових функцій і коментар старого розділу Highlight.

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');
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.