00001 <?php
00002
00003
00004
00005
00006
00007
00008 class CKEditor {
00009 const CONFIG_DEFAULT = 'default';
00010
00011 private static $configs = array();
00012
00013
00014
00015
00016 public static function enable(PageData $page_data, $config = self::CONFIG_DEFAULT) {
00017 if (!$config instanceof CKEditorConfig) {
00018 $config = self::get_config($config);
00019 }
00020
00021 $page_data->head->add_js_file('js/ckeditor/ckeditor.js');
00022 if (Load::is_module_loaded('javascript.jquery')) {
00023 $page_data->head->add_js_file('js/ckeditor/adapters/jquery.js');
00024 }
00025
00026 $page_data->head->add_js_file($config->init_file);
00027
00028
00029 $path = Config::get_value(Config::URL_BASEDIR) . 'js/ckeditor/';
00030 $page_data->head->add_js_snippet("var CKEDITOR_BASEPATH = '$path';", true);
00031 }
00032
00033
00034
00035
00036
00037
00038
00039
00040 public static function create_config($name, $template = self::CONFIG_DEFAULT) {
00041 $template = self::get_config($template);
00042 self::$configs[$name] = $template;
00043 HtmlText::register_editor($name, $template);
00044 return $template;
00045 }
00046
00047
00048
00049
00050
00051
00052
00053 private static function get_config($name) {
00054 $ret = Arr::get_item(self::$configs, $name, false);
00055 if ($ret === false) {
00056 $ret = new CKEditorConfig();
00057 }
00058 return $ret;
00059 }
00060
00061
00062
00063
00064
00065
00066 public static function get_all_configs() {
00067 return self::$configs;
00068 }
00069 }
00070
00071
00072
00073
00074
00075
00076
00077 class CKEditorConfig implements IRichtTextEditor {
00078
00079
00080
00081
00082
00083 public $init_file = 'js/ckeditor/default.js';
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095 public function apply(PageData $page_data, $name) {
00096 CKEditor::enable($page_data, $this);
00097 }
00098 }