Add patch for WMD plugin. This new plugin adds live preview and text controls to ikiwiki edit pages.
parent
de695df72f
commit
cc194fe527
|
@ -16,4 +16,85 @@ add to ikiwiki.
|
|||
>> about a showdown plugin. Maybe a WMD plugin would be worthwhile. I might
|
||||
>> look into it if I have time on the weekend. -- [[Will]]
|
||||
|
||||
[[!tag wishlist done]]
|
||||
[[!tag wishlist]]
|
||||
|
||||
>>> Below is a simple plugin/[[patch]] to make use of the WMD editor. Turns out it isn't hard at all to
|
||||
>>> get a basic version going (that don't handle directives at all). I've
|
||||
>>> removed the done tag so this is visible as a patch. -- [[Will]]
|
||||
|
||||
------
|
||||
|
||||
### Instructions:
|
||||
|
||||
|
||||
Download the [WMD source](http://wmd-editor.com/downloads/wmd-1.0.1.zip). In that zip file you'll
|
||||
find a few example html files, a readme and `wmd` directory. Move the `wmd` directory into the
|
||||
ikiwiki `underlays` directory. You should now have an `underlays/wmd/wmd.js` file as well as
|
||||
some other javascript files and an images directory in the same place.
|
||||
|
||||
Note that the WMD plugin does **not** handle directives. For this reason the normal `preview` button
|
||||
remains. Some CSS to clean up the display of the live WMD preview would be good.
|
||||
|
||||
Install the following patch and plugin file. Then enable the 'wmd' plugin.
|
||||
|
||||
|
||||
diff --git a/templates/editpage.tmpl b/templates/editpage.tmpl
|
||||
index 4b54db2..b1cf015 100644
|
||||
--- a/templates/editpage.tmpl
|
||||
+++ b/templates/editpage.tmpl
|
||||
@@ -37,6 +37,7 @@ Optional comment about this change:<br />
|
||||
</div>
|
||||
</TMPL_IF>
|
||||
<TMPL_VAR FORM-END>
|
||||
+<TMPL_VAR WMD_PREVIEW>
|
||||
|
||||
<TMPL_IF NAME="PAGE_PREVIEW">
|
||||
<hr />
|
||||
|
||||
-----
|
||||
|
||||
#!/usr/bin/perl
|
||||
package IkiWiki::Plugin::wmd;
|
||||
|
||||
use warnings;
|
||||
use strict;
|
||||
use IkiWiki 3.00;
|
||||
use POSIX;
|
||||
use Encode;
|
||||
|
||||
sub import {
|
||||
add_underlay("wmd");
|
||||
hook(type => "getsetup", id => "wmd", call => \&getsetup);
|
||||
hook(type => "formbuilder_setup", id => "wmd", call => \&formbuilder_setup);
|
||||
}
|
||||
|
||||
sub getsetup () {
|
||||
return
|
||||
plugin => {
|
||||
safe => 1,
|
||||
rebuild => 1,
|
||||
},
|
||||
}
|
||||
|
||||
sub formbuilder_setup (@) {
|
||||
my %params=@_;
|
||||
my $form=$params{form};
|
||||
|
||||
return if ! defined $form->field("do");
|
||||
|
||||
return unless (($form->field("do") eq "edit") ||
|
||||
($form->field("do") eq "create"));
|
||||
|
||||
$form->tmpl_param("wmd_preview", "<div class=\"wmd-preview\"></div>\n".include_javascript(undef, 1));
|
||||
}
|
||||
|
||||
sub include_javascript ($;$) {
|
||||
my $page=shift;
|
||||
my $absolute=shift;
|
||||
|
||||
return '<script src="'.urlto("wmd.js", $page, $absolute).
|
||||
'" type="text/javascript"></script>'."\n";
|
||||
}
|
||||
|
||||
1
|
||||
|
||||
|
|
Loading…
Reference in New Issue