SugarCRM - TinyMCEを使ったフィールドを作成する

, ,

WordPressとかであるあのリッチテキストエディタ(TinyMCE)をSugarCRMで実装するサンプルを紹介する。
このTinMCEはEmailTemplatesモジュールでは有効化されているが、これを自分らで作ったフィールドでも有効化するというのが今回のネタ。

EditViewで有効化

Sugarでは簡単にTinyMCEを使えるように、さりげなくクラスが作られているのでそれを使う。
view.edit.phppreDisplayに以下のように書く。

<?php

if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

require_once 'include/SugarTinyMCE.php';

class HogesViewEdit extends ViewEdit
{
function preDisplay()
{
parent::preDisplay();

$tinyHtml = '';

// TinyMCE 有効化
$tiny = new SugarTinyMCE();
$tiny->defaultConfig['cleanup_on_startup'] = true;
$tinyHtml = $tiny->getInstance('tinymce_field');
$this->ev->ss->assign('tiny', $tinyHtml);
}
}

SugarTinyMCE::getInstance()には、有効化したいフィールド名を引数として渡す。
JavaScriptやらが返されるのでそのままSmartyにassignする。

editviewdefsで受け取る

assignした$tinyHtmlをフィールドのHTMLとして使うようにする。
editviewdefs.phpの有効したいフィールド(この例でいくとtinymce_field)のカスタムコードに{$tiny}を足して、assignした内容を受け取れるようにする。

こんだけで有効化できる。簡単!

XSSに気をつけて!

このまま実装すると

<script>console.log(document.cookie);</script>

とかできちゃうのでXSSには十分注意されたし。