dari88's diary

これから趣味にするプログラミング/PHP/javascript/kohana/CMS/web design/

kohanaのテスト8・・・WYSIWYGエディタTinyMCEを試す

 WordPress や Joomla がどんなものなのか構造を勉強しています。WordPress って非常に良く出来ていますね。分かりやすいし、雰囲気も良い感じ。なんだか HatenaBlog の雰囲気と似ている気がします。

 データベースの構成とか大変参考になります。しかし、テンプレートを見てみると細切れになった PHPのコードが沢山埋め込まれていて読んでられません。ロジックはできるだけコントロールに書いて、ビューのロジックはシンプルにしたいものです。

 ということで、小生がこれらの CMS を基盤として利用することは考えられません。そうなると kohana + ZF(Zend FrameWork)に戻ることになります。

 WordPress がテキスト入力に利用しているエディタは TinyMCE というものだという記事を目にしたので、今日はこれをテストしてみました。結論から言うと、これは素晴らしい出来です。kohana の環境でもあっさり動作してくれました。以下、そのメモです。

 

TinyMCEのテスト

TinyMCEのサイトから TinyMCE 3.5 をダウンロードして解凍します。
・tinymce フォルダを htdocs/js/下に配置します。
・tinymce/examples/css/content.css を htdocs/css/tinymce/下にコピーします。
・htdocs/js/tinymce/options.js ファイルを作り、次の内容とします。

tinyMCE.init({
    // General options
    mode : "textareas",
    theme : "advanced",
    plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

    // Theme options
    theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
    theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
    theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
    theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : true,

    // Skin options
    skin : "o2k7",
    skin_variant : "silver",

    // CSS (should be your site CSS)
    content_css : "/css/tinymce/content.css"

    }
);

NetBeans を使って kohana のプログラムを書きます。
・コントローラ kohana/application/classes/controller/test8.php

<?php

defined('SYSPATH') OR die('No direct access allowed.');

class Controller_Test8 extends Controller {

    public function action_index() {

        if (isset($_POST['title'])) {
            $title = $_POST['title'];
            $text = $_POST['text'];
        } else {
            $title = "";
            $text = "";
        }


        $this->response->body(View::factory('test8')
                        ->bind('title', $title)
                        ->bind('text', $text));
    }

}

?>

・ビュー kohana/application/views/test8.php

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript" src="/js/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
        <script type="text/javascript" src="/js/tinymce/options.js"></script>
        <title></title>
    </head>
    <body>
        
        <?php echo Form::open() ?>

<h1>WYSIWYGエディタのテスト</h1>


    <dl>
        <dt><?php echo Form::label('title', 'タイトル') ?></dt>
        <dd><?php echo Form::input('title', $title, array('size' => '100')) ?></dd>

        <dt><?php echo Form::label('text', '記事') ?></dt>
        <dd><?php echo Form::textarea('text', $text) ?></dd>

    </dl>

    <?php echo Form::submit(NULL, '登録する') ?>
    <?php echo Form::close() ?>
            
            
    </body>
</html>

  以上で準備は終わりです。ブラウザで localhost/kohana/test8 にアクセスするとエディターが登場するので、いろいろ試してみましょう。XSS対策は出来ています。フォントがちょっと小さいんじゃないでしょうか? content.css で指定しているフォントサイズを 14 くらいにすると良いように感じます。

 kohana でコミュニティーサイトを構築する環境が一歩前進しました。次は ZF の勉強をしたいと思います。