PukiWikiにWYSIWYGエディタを取り入れるのお話
はじめに
正直なことを言うと導入方法とか、使用して思ったことを書こうとは思っていません。少し躓いたところを補足的な感じで書いていきます。
使用したもの
使用したもの | バージョン |
---|---|
PutiWiki | 1.5.1(UTF-8版) |
PHP | 7.1.10(built: Sep 26 2017 20:04:32) |
tinymceedit | 0.1.3 |
OS | Windows 10 |
ブラウザ | Chrome 65.0.3325.181 |
WYSIWYGエディタプラグインはOxyさんのtinymceeditをお借りしました。
導入
上記リンクを参照ください。しかし、私の環境ではすべて終わった後にエラーが出たので、私なりの解消法をおおざっぱに書きます。
Parse error: syntax error, unexpected 'new' (T_NEW) in ...\plugin\wiki2xhtml.php on line xxx
plugin\wiki2xhtml.phpのエラーが出た箇所の= &
を=
だけにする。
これで編集ができるようになったが、更新時にエラー
Fatal error: Uncaught Error: [] operator not supported for strings in ...\plugin\xhtml2wiki.php:xxx
plugin\xhtml2wiki.phpのエラーが出た行
$this->body[] = $head . $line . $foot . "\n";
の上に
if ($this->body == ''){ $this->body = array(); }
これで動くようになった。
もうちょっと
ここまででしっかり動くのですが、これだけだと通常編集時(元からあるWYSIWYGではないほう)のレイアウトが少し気になってしまった。
lib/html.phpの
$body = <<<EOD <div class="edit_form"><form style="margin-bottom: 0px;" action="$script" method="post">$template $addtag <input name="cmd" type="hidden" value="$cmd" /> <input name="page" type="hidden" value="$s_page" /> <input name="digest" type="hidden" value="$s_digest" /> <textarea id="tinymce" cols="$cols" name="msg" rows="$rows">$s_postdata</textarea> <textarea id="tinymce" style="display: none;" cols="1" name="original" rows="1">$s_original</textarea> <div style="float: left;"><input accesskey="p" name="preview" type="submit" value="$btn_preview" /> <input accesskey="s" name="write" type="submit" value="$_btn_update" /> $add_top $add_notimestamp</div> </form><form style="margin-top: 0px;" action="$script" method="post"><input name="cmd" type="hidden" value="$cmd" /> <input name="page" type="hidden" value="$s_page" /> <input accesskey="c" name="cancel" type="submit" value="$_btn_cancel" /></form></div> EOD;
に変更した所を
if ( $vars['cmd'] == "edit" ){ $editorbreak = "<br />"; } elseif ( $vars['cmd'] == "tinymceedit" ){ $editorbreak = ""; } $body = <<<EOD <div class="edit_form"><form style="margin-bottom: 0px;" action="$script" method="post">$template $addtag <input name="cmd" type="hidden" value="$cmd" /> <input name="page" type="hidden" value="$s_page" /> <input name="digest" type="hidden" value="$s_digest" /> <textarea id="tinymce" cols="$cols" name="msg" rows="$rows">$s_postdata</textarea> {$editorbreak} <textarea id="tinymce" style="display: none;" cols="1" name="original" rows="1">$s_original</textarea> <div style="float: left;"><input accesskey="p" name="preview" type="submit" value="$btn_preview" /> <input accesskey="s" name="write" type="submit" value="$_btn_update" /> $add_top $add_notimestamp</div> </form><form style="margin-top: 0px;" action="$script" method="post"><input name="cmd" type="hidden" value="$cmd" /> <input name="page" type="hidden" value="$s_page" /> <input accesskey="c" name="cancel" type="submit" value="$_btn_cancel" /></form></div> EOD;
に変更しなおすことでちょっとすっきりした感じになった。めでたしめでたし。