====== Faster DokuWiki Plugin ====== ---- plugin ---- description: Speed up DokuWiki through inline section edit, inline previews, AJAXed page loads, and pre-loading. author : Eli Fenton email : elifenton@this_is_not_a_real_email.fake type : action, javascript lastupdate : 2024-02-10 compatible : Hrun, Detritus, Elenor of Tsort, Frusterick Manners, Greebo, Hogfather, Igor, Jack Jackrum, Kaos depends : conflicts : ckgedit, codemirror, qna similar : sectionedit, quickedit, inlineeditor tags : section, editing, ajax, fast, preview, navigation downloadurl: https://github.com/zioth/dokuwiki_fastwiki/archive/master.zip bugtracker : https://github.com/zioth/dokuwiki_fastwiki/issues sourcerepo : https://github.com/zioth/dokuwiki_fastwiki donationurl: screenshot_img : ---- This plugin is part of my effort to make the DokuWiki experience smoother and faster. It provides full-featured inline section editing, and dramatically speeds up editing, edit previews and page loads. Search and install the plugin using the [[plugin:extension|Extension Manager]]. Refer to [[:Plugins]] on how to install plugins manually. ====== Features ====== These settings are available in the DokuWiki administrative interface, under "Configuration Settings." ===== Inline Section Editing ===== {{ http://zioth.com/_media/dev/dokuwiki/fastwiki_secedit.jpg?w=350&nolink|}} //Setting name: secedit// When this feature is enabled, section editing happens inline. That is, the piece of the page you want to edit is replaced with the editor. If you also enable the //preview// setting, previews will appear inline as well. This feature should be compatible with all templates, and all plugins except those that change section editing behavior. If you discover any incompatibilities, please [[https://github.com/zioth/dokuwiki_fastwiki/issues|report a bug]]. If you are using the [[.:discussion|discussion]] plugin, be aware that the inline edit toolbar will have reduced functionality. This is due to the way discussion works. ===== Inline Previews ===== //Setting name: preview// When this setting is enabled, editor previews (including section edit previews) appear below the editor, without reloading the page. To make this work with section editing, enable //secedit.// To make it work with normal editing, enable //fastpages//. This setting should be compatible with all templates and plugins. ===== Fast Mode Switch ===== //Setting name: fastpages// When this setting is enabled, changing page modes -- for example, from viewing a page to editing it, or from site index to revision history -- happens without reloading the page. Only the center content area is changed, and there is a loading animation while the new content is being loaded.((Complete list of supported actions: show, edit, draft, history, recent, revisions, show, subscribe, backlink, index, profile, media, diff, showtag)) Enabling this feature fixes a bug in DokuWiki. You will no longer get an "are you sure you want to leave" alert when all you did was move the cursor around in the editor. You have to actually change something. This feature also works with the [[.:tags|tags plugin]], which makes that plugin behave better with many templates than it does now. This feature might not be compatible with all templates, and it won't work with any plugin which changes content outside the main content area. === Plugin compatibility issues === * CKGedit doesn't work with sectionedit: https://github.com/zioth/dokuwiki_fastwiki/issues/24 * CodeMirror doesn't work with sectionedit: https://github.com/zioth/dokuwiki_fastwiki/issues/18 * [[.:qna|QNA]] has conflicts with header syntax: https://github.com/zioth/dokuwiki_fastwiki/issues/33 **Fixed**: * edittable fixed on 2015-09-16: https://github.com/zioth/dokuwiki_fastwiki/issues/23 * [[.:hidden|hidden]] fixed on 2015-12-25. * [[.:imgpaste|imgpaste]] fixed on 2017-11-25. https://github.com/zioth/dokuwiki_fastwiki/issues/22 * [[.:struct|struct]] fixed on 2018-01-02. https://github.com/zioth/dokuwiki_fastwiki/issues/25 ===Supported templates=== Templates have a variety of behavior when switching view modes. Some hide the sidebar in some modes. Some have links while others have buttons. I have made an effort to support many of the most popular templates. Feel free to request others, if you find that your favorite template doesn't behave correctly. These templates support transitions from every supported mode to every other supported mode. For example, if your url includes "?do=edit" and you switch to "show" mode, the plugin will be invoked, loading the new page quickly. * [[template:prsnl10|prsnl10]] * [[template:vector|vector]] These templates load all transitions quickly, provided that you start in "show" mode. If your url includes "?do=edit" or other action, the plugin will be disabled. * [[template:starter|starter]], and templates based on it: * [[template:dokuwiki|dokuwiki default]] * [[template:greensteel|greensteel]] * [[template:starterbootstrap|starter bootstrap]] * [[template:arctic|arctic]] * [[template:scanlines|scanlines]] * [[template:bootstrap3]] * [[template:dokubook]] === Templates with built-in support === //See [[plugin:fastwiki:integration]].// * None yet. ===== Fast Edit Saves ===== //Setting name: fastsave// When this feature is enabled, saving from the editor does not reload the page. To make it work with section editing, enable //secedit//. To make it work with the regular editor, enable //fastpages.// This feature might not be compatible with all templates. The issues are the same as with the //fastpages// setting. ===== Fast ID Switch ===== //Setting names: fastshow, fastshow_same_ns, fastshow_include, fastshow_exclude// When this feature is enabled, entirely new pages load without reloading the page. For example, switching from a:b:c to a:b:d will not reload. However, the page will reload if there is an ACL difference between the two pages. That is, if you have the right to edit the current page but not the next page, the whole page will reload. If anything other than the main page content changes when you switch pages, do not enable this setting (but see the other fastshow settings for how to limit it). For example, if the sidebar has page-specific content, that content will _not_ be reloaded on a page transition. The browser history will reflect the page change. Since Microsoft Internet Explorer 9 and below can't manipulate browser history, those browsers are automatically excluded from this feature. === Setting: fastshow_same_ns === In some wikis, the sidebar, header or footer is namespace-specific. If this is the case for your wiki, enable this setting, so that the feature is only used when switching to another page in the same namespace. === Setting: fastshow_include === Use this if you only want the feature to work in a comma-delimited list of namespaces and pages. === Setting: fastshow_exclude === Use this if you want the feature to work everywhere but in a comma-delimited list of namespaces and pages. You can use this together with //fastshow_include// to exclude certain sub-namespaces of the //fastshow_include// list. === Template Support === Support for this feature is the same as for //fastpages//. However, the [[template:starterbootstrap|starter bootstrap]] template does not support this feature, because it uses non-standard code for the table of contents.((starterbootstrap developer: See [[.:fastwiki:integration|Integrating Fastwiki]] if you want to remove this restriction)). === Comments Support === If your wiki uses the [[plugin:discussion|Discussion plugin]] or [[plugin:disqus|Disqus plugin]], it should work fine, since the discussion is part of the main content area and thus reloaded with the page change. However, if your template inserts a comments section outside the main content area, it will not be updated on page change. You can update your comments section by hooking into this plugin's API (see [[.:fastwiki:integration|Integrating Fastwiki]]). ===== Even Faster ID Switch! ===== //Setting names: preload, preload_batchsize, preload_per_page// Want a super speed boost? Enable this experimental feature (along with //fastshow//) to pre-load links on the page. By the time the user clicks on a link, it may already be loaded, resulting in an instantaneous page switch. Pre-loads are remembered when you switch pages (within the limitations of //fastshow// settings), so for a heavily linked wiki, the site will get faster the more you use it. Warning: This feature will significantly increase network usage. A typical wiki might require 500kb for the first page loaded and 50kb for each subsequent page. With this setting enabled, you'll load an additional 5-20kb per link on the page. If you average 30 links a page (including sidebars), that's 320kb per page instead of just 50kb. Note that the additional size will not affect page load time; preloads don't happen until after the page is loaded. Warning: This feature will break page-count statistics. If you keep track of how many users visit each page, do not enable this feature. Support for this feature is the same as for //fastshow.// **Note:** This feature will only be available if your php installation includes the curl library. === Setting: preload_batchsize === Default=10. This is the maximum number of pages which can be fetched by a single AJAX request. If there are more than this many links on the page, they will be requested in batches. === Setting: preload_per_page === Default=100. This is the maximum number of new (previously uncached) links that will be loaded on a single page. If there are more than this many links on a page, no preloading will happen at all. The page is so heavily linked that it's unlikely we'll cache the right page. ---- ===== Template/Plugin developers: Integrating Fastwiki ===== While this plugin does have specific initialization code for some templates, that's not really maintainable. Templates change, and template creators may have different ideas in mind than I do. Because of this, I've added an event-based API for templates. [[plugin:fastwiki:integration|More Details...]] Plugins don't usually require any special integration with Fastwiki, but if you notice any bugs, you might be able to fix them using the same API that template developers use. Please let me know if you add support to your template. ==Templates with 3rd party integration== * [[template:sprintdoc]] ==Plugins with 3rd party integration== * [[plugin:dropfiles]] * [[plugin:struct]] * [[plugin:imgpaste]] ===== TODO ===== **[[https://github.com/zioth/dokuwiki_fastwiki/issues?q=is%3Aopen+is%3Aissue+label%3Abug|Known Issues]]** **[[https://github.com/zioth/dokuwiki_fastwiki/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement|Future Plans]]** **[[https://github.com/zioth/dokuwiki_fastwiki/issues?q=is%3Aissue+label%3Awontfix+is%3Aclosed|Features that won't be added]]** ===== Changelog ===== {{rss>https://github.com/zioth/dokuwiki_fastwiki/commits/master.atom date}} ===== FAQ ===== ==Where can I see it in action?== You can try out the inline section editor at https://zioth.com/wiki/playground2 (username: demo. password: demo). ==How do I make my template/plugin work with fastwiki?== [[plugin:fastwiki:integration]] ==Why don't I see the preload setting?== The deployment of PHP on your server has the curl library disabled. ===== Discussion ===== Hey Zioth was hoping to get ahold of you about some of your WRAP plugin extentions. Is there any way I can reach you? Thanks! Sure! You can reach me through my github page: https://github.com/zioth/contactme