lpaulsen93 / dokuwiki_note

DokuWiki plugin which displays boxes with four kinds of design for each note-type
http://www.dokuwiki.org/plugin:note
GNU General Public License v2.0
5 stars 6 forks source link

Feature Request: make notes extensible without altering the distribution #21

Open lmachucab opened 4 years ago

lmachucab commented 4 years ago

As of currently (late 2020, what a year) and according to the official documentation, adding a new note type requires editing several files in the plugin:note distribution, such as syntax.php; meaning, those additions are lost when upgrading, downgrading or reinstalling the distribution.

Ideally, a mechanism should be in place so that notes customization can be done another way, without altering distribution files.

An example strategy that I can think of would be the following:

Notes customization would be picked from the one place (or few places) users are expected to customize - userstyle.css and related files. Users do this by adding a new specification such as what follows:

.plugin_note .notecustomnote {
    /* I loved <blink>, don't judge me */
    text-transform: wavy, blink, matrix, rotate, etc;
}

Notes are given the base CSS class plugin_note, which contains the base styling and is provided by the plugin's style.css, and the second style which is variable and depends on what the user inputs:

<div class="plugin_note ${note_tag}"> ...

If sanitizing the note tag listings is desired, the sanitized list can be built at page load time (or, if something like a service worker is available, at service start with an optional refresh) from the following two sources (this sourcing can also be used to build a toolbar menu):

Optionally, to avoid runtime building as per option 2, users can be required to register their note types in a configuration file such as DOKU_CONF/notes.txt. Since the users of the plugin itself are expected to have access to userstyle.css anyway, this should pose no problem.