Dotclear

source: plugins/dcCKEditor/_post_config.php @ 3090:e4c0a9a29852

Revision 3090:e4c0a9a29852, 6.9 KB checked in by Nicolas <nikrou77@…>, 10 years ago (diff)

Users can now add a background text color button using ckeditor

RevLine 
[2738]1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
[2972]6# Copyright (c) 2003-2015 Olivier Meunier & Association Dotclear
[2738]7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12
13if (!defined('DC_CONTEXT_ADMIN')) { return; }
14header('Content-type: text/javascript');
[2761]15if (!empty($_GET['context'])) {
16     $context = $_GET['context'];
17} else {
18     $context = '';
19}
[2738]20$__extraPlugins = new ArrayObject();
[2761]21$core->callBehavior('ckeditorExtraPlugins',$__extraPlugins,$context);
[2738]22$extraPlugins = $__extraPlugins->getArrayCopy();
23?>
24(function($) {
25     $.toolbarPopup = function toolbarPopup(url) {
[2962]26          if (dotclear.admin_base_url != '') {
27               var pos = url.indexOf(dotclear.admin_base_url);
28               if (pos == -1) {
29                    url = dotclear.admin_base_url + url;
30               }
31          }
32
[2835]33          var args = Array.prototype.slice.call(arguments);
34          var width = 520, height = 420;
35          if (args[1]!==undefined) {
36               width = args[1].width || width;
37               height = args[1].height || height;
38          }
39
[2738]40          var popup_params = 'alwaysRaised=yes,dependent=yes,toolbar=yes,';
[2835]41          popup_params += 'height='+height+',width='+width+',menubar=no,resizable=yes,scrollbars=yes,status=no';
[2738]42          var popup_link = window.open(url,'dc_popup', popup_params);
43     };
44
45     $.stripBaseURL = function stripBaseURL(url) {
46          if (dotclear.base_url != '') {
47               var pos = url.indexOf(dotclear.base_url);
48               if (pos == 0) {
49                    url = url.substr(dotclear.base_url.length);
50               }
51          }
[2751]52
[2738]53          return url;
54     };
55
[2751]56     /* Retrieve editor from popup */
[2816]57     $.active_editor = null;
[2751]58     $.getEditorName = function getEditorName() {
59          return $.active_editor;
[2738]60     }
[2816]61     chainHandler(window, 'onbeforeunload', function(e) {
62          if (e == undefined && window.event) {
63               e = window.event;
64          }
65
66          var editor = CKEDITOR.instances[$.getEditorName()];
[2854]67          if (editor!==undefined && !confirmClosePage.formSubmit && editor.checkDirty()) {
[2816]68               e.returnValue = confirmClosePage.prompt;
69               return confirmClosePage.prompt;
70          }
71          return false;
72     });
[2738]73})(jQuery);
74
75$(function() {
76     /* By default ckeditor load related resources with a timestamp to avoid cache problem when upgrading itself
77      * load_plugin_file.php does not allow other param that file to load (pf param), so remove timestamp
78      */
79
80     CKEDITOR.timestamp = '';
[3055]81<?php if (!isset($dcckeditor_disable_native_spellchecker) || $dcckeditor_disable_native_spellchecker):?>
[3056]82     CKEDITOR.config.disableNativeSpellChecker = true;
[3055]83<?php else:?>
[3056]84     CKEDITOR.config.disableNativeSpellChecker = false;
[3052]85<?php endif;?>
[2738]86     CKEDITOR.config.skin = 'dotclear,'+dotclear.dcckeditor_plugin_url+'/js/ckeditor-skins/dotclear/';
[3040]87     CKEDITOR.config.baseHref = dotclear.base_url;
88     CKEDITOR.config.height = '<?php echo $core->auth->getOption('edit_size') * 14;?>px';
[2738]89
[2751]90<?php if (!empty($dcckeditor_cancollapse_button)):?>
[2738]91     CKEDITOR.config.toolbarCanCollapse = true;
92<?php endif;?>
[2751]93
94     CKEDITOR.plugins.addExternal('entrylink',dotclear.dcckeditor_plugin_url+'/js/ckeditor-plugins/entrylink/');
[2738]95     CKEDITOR.plugins.addExternal('dclink',dotclear.dcckeditor_plugin_url+'/js/ckeditor-plugins/dclink/');
96     CKEDITOR.plugins.addExternal('media',dotclear.dcckeditor_plugin_url+'/js/ckeditor-plugins/media/');
[2869]97     CKEDITOR.plugins.addExternal('img',dotclear.dcckeditor_plugin_url+'/js/ckeditor-plugins/img/');
[3090]98     <?php if (!empty($dcckeditor_textcolor_button) || !empty($dcckeditor_background_textcolor_button)):?>
99     // button add "More Colors..." can be added if colordialog plugin is enabled
100     CKEDITOR.config.colorButton_enableMore = true;
101     <?php endif;?>
[2738]102
103<?php if (!empty($extraPlugins) && count($extraPlugins)>0) {
104     foreach ($extraPlugins as $plugin) {
105          printf("\tCKEDITOR.plugins.addExternal('%s','%s');\n", $plugin['name'], $plugin['url']);
106     }
107}
108?>
[3052]109     if (dotclear.ckeditor_context===undefined || dotclear.ckeditor_tags_context[dotclear.ckeditor_context]===undefined) {
110          return;
111     }
[2854]112     $(dotclear.ckeditor_tags_context[dotclear.ckeditor_context].join(',')).ckeditor({
[2738]113<?php
[2869]114$defautExtraPlugins = 'entrylink,dclink,media,justify,colorbutton,format,img';
[2738]115if (!empty($extraPlugins) && count($extraPlugins)>0) {
116     foreach ($extraPlugins as $plugin) {
117          $defautExtraPlugins .= ','. $plugin['name'];
118     }
119}
120?>
121          extraPlugins: '<?php echo $defautExtraPlugins;?>',
122
[2751]123          <?php if (!empty($dcckeditor_format_select)):?>
[2738]124          // format tags
[2972]125<?php if (!empty($dcckeditor_format_tags)):?>
[3090]126          format_tags: '<?php echo $dcckeditor_format_tags;?>',
[2972]127<?php else:?>
[2738]128          format_tags: 'p;h1;h2;h3;h4;h5;h6;pre;address',
[2972]129<?php endif;?>
[2738]130          // following definition are needed to be specialized
131          format_p: { element: 'p' },
132          format_h1: { element: 'h1' },
133          format_h2: { element: 'h2' },
134          format_h3: { element: 'h3' },
135          format_h4: { element: 'h4' },
136          format_h5: { element: 'h5' },
137          format_h6: { element: 'h6' },
138          format_pre: { element: 'pre' },
139          format_address: { element: 'address' },
140          <?php endif;?>
141
142          entities: false,
143          removeButtons: '',
144          allowedContent: true,
145          toolbar: [
146               {
147                    name: 'basicstyles',
148                    items: [
149<?php if (!empty($dcckeditor_format_select)):?>
150                         'Format',
151<?php endif;?>
152                         'Bold','Italic','Underline','Strike','Subscript','Superscript','Code','Blockquote',
[2751]153
[2738]154<?php if (!empty($dcckeditor_list_buttons)):?>
155                         'NumberedList', 'BulletedList',
156<?php endif;?>
157                         'RemoveFormat'
158                    ]
159               },
160<?php if (!empty($dcckeditor_clipboard_buttons)):?>
161               {
162                    name: 'clipoard',
163                    items: ['Cut','Copy','Paste','PasteText','PasteFromWord']
164               },
165<?php endif;?>
166<?php if (!empty($dcckeditor_alignment_buttons)):?>
167               {
168                    name: 'paragraph',
169                    items: ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock']
170               },
171<?php endif;?>
172<?php if (!empty($dcckeditor_table_button)):?>
173               {
174                    name: 'table',
175                    items: ['Table']
176               },
177<?php endif;?>
178               {
179                    name: 'custom',
180                    items: [
[2869]181                         'EntryLink','dcLink','Media','img','-',
[2854]182                         'Source'
[2738]183<?php if (!empty($dcckeditor_textcolor_button)):?>
[3090]184                         ,'TextColor'
185<?php endif;?>
186<?php if (!empty($dcckeditor_background_textcolor_button)):?>
187                         ,'BGColor'
[2738]188<?php endif;?>
[2751]189                    ]
[2738]190               },
[3090]191               {
192                    name: 'special',
193                    items: [
194                         'Maximize'
195                    ]
196               },
[2738]197               <?php // add extra buttons comming from dotclear plugins
198               if (!empty($extraPlugins) && count($extraPlugins)>0) {
199                    $extraPlugins_str = "{name: 'extra', items: [%s]},\n";
200                    $extra_icons = '';
201                    foreach ($extraPlugins as $plugin) {
202                         $extra_icons .= sprintf("'%s',", $plugin['button']);
203                    }
204                    printf($extraPlugins_str, $extra_icons);
205               }
206               ?>
207          ]
208     });
209
210     CKEDITOR.on('instanceReady', function(e) {
211          if ($('label[for="post_excerpt"] a img').attr('src')==dotclear.img_minus_src) {
212               $('#cke_post_excerpt').removeClass('hide');
213          } else {
214               $('#cke_post_excerpt').addClass('hide');
215          }
[2751]216
[2738]217          $('#excerpt-area label').click(function() {
218               $('#cke_post_excerpt').toggleClass('hide',$('#post_excerpt').hasClass('hide'));
219          });
220     });
[2751]221
222     // @TODO: find a better way to retrieve active editor
223     for (var id in CKEDITOR.instances) {
224          CKEDITOR.instances[id].on('focus', function(e) {
225               $.active_editor = e.editor.name;
226          });
227     }
[2738]228});
Note: See TracBrowser for help on using the repository browser.

Sites map