6 include_once
'../../../../../../../mainfile.php';
7 require_once XOOPS_ROOT_PATH.
'/modules/rmcommon/loader.php';
15 var DOM = tinymce.DOM;
17 tinymce.PluginManager.requireLangPack(
'exmsystem');
19 tinymce.create(
'tinymce.plugins.EXMSystem', {
21 <?php
RMEvents::get()->run_event(
'rmcommon.tiny.plugin.controls'); ?>
23 init :
function(ed, url){
25 var tbId1 = ed.getParam(
'exmsystem_adv_toolbar1',
'toolbar2');
26 var tbId2 = ed.getParam(
'exmsystem_adv_toolbar2',
'toolbar3');
27 var tbId3 = ed.getParam(
'exmsystem_adv_toolbar3',
'toolbar4');
28 var moreHTML =
'<img src="' + url +
'/img/trans.gif" class="mceEXMmore mceItemNoResize" title="'+ed.getLang(
'exmsystem.exm_more_alt')+
'" />';
29 var nextpageHTML =
'<img src="' + url +
'/img/trans.gif" class="mceEXMnextpage mceItemNoResize" title="'+ed.getLang(
'exmsystem.exm_page_alt')+
'" />';
35 ed.onPostRender.add(
function() {
36 if ( ed.getParam(
'exmsystem_adv_hidden', 1) ) {
37 DOM.hide(ed.controlManager.get(tbId1).id);
38 if(ed.controlManager.get(tbId2)!=undefined)
39 DOM.hide(ed.controlManager.get(tbId2).id);
40 if(ed.controlManager.get(tbId3)!=undefined)
41 DOM.hide(ed.controlManager.get(tbId3).id);
43 t._resizeIframe(ed, tbId1, 28);
44 t._resizeIframe(ed, tbId2, 28);
45 t._resizeIframe(ed, tbId3, 28);
50 ed.addCommand(
'EXM_More',
function() {
51 ed.execCommand(
'mceInsertContent', 0, moreHTML);
54 ed.addCommand(
'EXM_Page',
function() {
55 ed.execCommand(
'mceInsertContent', 0, nextpageHTML);
58 ed.addCommand(
'EXM_Adv',
function() {
59 var cm = ed.controlManager;
61 if (DOM.isHidden(ed.controlManager.get(tbId1).id)) {
62 cm.setActive(
'exm_adv', 1);
63 DOM.show(ed.controlManager.get(tbId1).id);
64 if(ed.controlManager.get(tbId2)!=undefined)
65 DOM.show(ed.controlManager.get(tbId2).id);
66 if(ed.controlManager.get(tbId3)!=undefined);
67 DOM.show(ed.controlManager.get(tbId3).id);
68 t._resizeIframe(ed, tbId, -28);
69 ed.settings.exmsystem_adv_hidden = 0;
71 cm.setActive(
'exm_adv', 0);
72 DOM.hide(ed.controlManager.get(tbId1).id);
73 if(ed.controlManager.get(tbId2)!=undefined)
74 DOM.hide(ed.controlManager.get(tbId2).id);
75 if(ed.controlManager.get(tbId3)!=undefined);
76 DOM.hide(ed.controlManager.get(tbId3).id);
78 t._resizeIframe(ed, tbId1, 28);
79 t._resizeIframe(ed, tbId2, 28);
80 t._resizeIframe(ed, tbId3, 28);
81 ed.settings.exmsystem_adv_hidden = 1;
86 ed.addCommand(
'mceEXMImg',
function() {
87 ed.windowManager.open({
88 file :
'<?php echo RMCURL; ?>/include/tiny-images.php',
89 width : 600 + parseInt(ed.getLang(
'exmsystem.delta_width', 0)),
90 height : 600 + parseInt(ed.getLang(
'exmsystem.delta_height', 0)),
92 title:
'<?php _e('Insert Image
','rmcommon
'); ?>',
101 ed.addCommand(
'mceExmIcons',
function() {
102 ed.windowManager.open({
103 file :
'<?php echo RMCURL; ?>/include/emotions.php',
104 width : 300 + parseInt(ed.getLang(
'exmsystem.delta_width', 0)),
105 height : 250 + parseInt(ed.getLang(
'exmsystem.delta_height', 0)),
113 ed.addButton(
'exm_more', {
114 title :
'exmsystem.exm_more_desc',
115 image : url +
'/img/more.gif',
119 ed.addButton(
'exm_page', {
120 title :
'exmsystem.exm_page_desc',
121 image : url +
'/img/page.gif',
125 ed.addButton(
'exm_adv', {
126 title :
'exmsystem.exm_adv_desc',
127 image : url +
'/img/toolbars.gif',
132 ed.addButton(
'exm_img', {
133 title :
'exmsystem.exm_img_desc',
135 image : url+
'/img/exmimg.png'
140 ed.addButton(
'exm_icons', {
141 title :
'exmsystem.exm_icons_desc',
143 image : url+
'/img/icon.png'
147 ed.addCommand(
'JustifyLeft',
function() {
148 var n = ed.selection.getNode();
150 if ( n.nodeName !=
'IMG' )
151 ed.editorCommands.mceJustify(
'JustifyLeft',
'left');
152 else ed.plugins.exmsystem.do_align(n,
'alignleft');
155 ed.addCommand(
'JustifyRight',
function() {
156 var n = ed.selection.getNode();
158 if ( n.nodeName !=
'IMG' )
159 ed.editorCommands.mceJustify(
'JustifyRight',
'right');
160 else ed.plugins.exmsystem.do_align(n,
'alignright');
163 ed.addCommand(
'JustifyCenter',
function() {
164 var n = ed.selection.getNode(), P = ed.dom.getParent(n,
'p'), DL = ed.dom.getParent(n,
'dl');
166 if ( n.nodeName ==
'IMG' && ( P || DL ) )
167 ed.plugins.exmsystem.do_align(n,
'aligncenter');
168 else ed.editorCommands.mceJustify(
'JustifyCenter',
'center');
172 t._handleMoreBreak(ed, url);
179 RMEvents::get()->run_event(
'rmcommon.tinymce.plugin.loading');
185 getInfo :
function() {
187 longname :
'EXMSystem Plugin',
189 authorurl :
'http://redmexico.com.mx',
190 infourl :
'http://redmexico.com.mx',
196 do_align :
function(n, a) {
197 var P, DL, DIV, cls, c, ed = tinyMCE.activeEditor;
199 if ( /^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className) )
202 P = ed.dom.getParent(n,
'p');
203 DL = ed.dom.getParent(n,
'dl');
204 DIV = ed.dom.getParent(n,
'div');
207 cls = ed.dom.hasClass(DL, a) ?
'alignnone' : a;
208 DL.className = DL.className.replace(/align[^
'"]+\s?/g, '');
209 ed.dom.addClass(DL, cls);
210 c = (cls == 'aligncenter
') ? ed.dom.addClass(DIV, 'mceIEcenter
') : ed.dom.removeClass(DIV, 'mceIEcenter
');
212 cls = ed.dom.hasClass(n, a) ? 'alignnone
' : a;
213 n.className = n.className.replace(/align[^ '"]+\s?/g, '');
214 ed.dom.addClass(n, cls);
215 if ( cls == 'aligncenter' )
216 ed.dom.setStyle(P, 'textAlign', 'center');
217 else if (P.style && P.style.textAlign == 'center')
218 ed.dom.setStyle(P, 'textAlign', '');
221 ed.execCommand('mceRepaint');
224 // Resizes the iframe by a relative height value
225 _resizeIframe : function(ed, tb_id, dy) {
226 var ifr = ed.getContentAreaContainer().firstChild;
228 DOM.setStyle(ifr, 'height', ifr.clientHeight + dy); // Resize iframe
229 ed.theme.deltaHeight += dy; // For resize cookie
232 _handleMoreBreak : function(ed, url) {
233 var moreHTML = '<img src="' + url + '/img/trans.gif
" alt="$1
" class="mceEXMmore mceItemNoResize
" title="'+ed.getLang('exmsystem.exm_more_alt
')+'" />';
234 var nextpageHTML = '<img src="' + url + '/img/trans.gif
" class="mceEXMnextpage mceItemNoResize
" title="'+ed.getLang('exmsystem.exm_page_alt
')+'" />';
236 // Load plugin specific CSS into editor
237 ed.onInit.add(function() {
238 ed.dom.loadCSS(url + '/css/content.css');
241 // Display morebreak instead if img in element path
242 ed.onPostRender.add(function() {
243 if (ed.theme.onResolveName) {
244 ed.theme.onResolveName.add(function(th, o) {
245 if (o.node.nodeName == 'IMG') {
246 if ( ed.dom.hasClass(o.node, 'mceEXMmore') )
248 if ( ed.dom.hasClass(o.node, 'mceEXMnextpage') )
256 // Replace morebreak with images
257 ed.onBeforeSetContent.add(function(ed, o) {
258 o.content = o.content.replace(/<!--more(.*?)-->/g, moreHTML);
259 o.content = o.content.replace(/<!--nextpage-->/g, nextpageHTML);
262 // Replace images with morebreak
263 ed.onPostProcess.add(function(ed, o) {
265 o.content = o.content.replace(/<img[^>]+>/g, function(im) {
266 if (im.indexOf('class="mceEXMmore
') !== -1) {
267 var m, moretext = (m = im.match(/alt="(.*?)"/)) ? m[1] : '';
268 im = '<!--more
'+moretext+'-->
';
270 if (im.indexOf('class=
"mceEXMnextpage') !== -1)
271 im = '<!--nextpage-->';
277 // Set active buttons if user selected pagebreak or more break
278 ed.onNodeChange.add(function(ed, cm, n) {
279 cm.setActive('exm_page', n.nodeName === 'IMG' && ed.dom.hasClass(n, 'mceEXMnextpage'));
280 cm.setActive('exm_more', n.nodeName === 'IMG' && ed.dom.hasClass(n, 'mceEXMmore'));
287 // Evento para registrar nuevas funciones en el plugin exmsystem
288 RMEvents::get()->run_event('rmcommon.tinymce.plugin.functions','');
292 tinymce.PluginManager.add('exmsystem', tinymce.plugins.EXMSystem);