[44] | 1 |
|
---|
| 2 | var tinymce = null, tinyMCEPopup, tinyMCE;
|
---|
| 3 |
|
---|
| 4 | tinyMCEPopup = {
|
---|
| 5 | init: function() {
|
---|
| 6 | var t = this, w, ti, li, q, i, it;
|
---|
| 7 |
|
---|
| 8 | li = ('' + document.location.search).replace(/^\?/, '').split('&');
|
---|
| 9 | q = {};
|
---|
| 10 | for (i=0; i<li.length; i++) {
|
---|
| 11 | it = li[i].split('=');
|
---|
| 12 | q[unescape(it[0])] = unescape(it[1]);
|
---|
| 13 | }
|
---|
| 14 |
|
---|
| 15 | if (q.mce_rdomain)
|
---|
| 16 | document.domain = q.mce_rdomain;
|
---|
| 17 |
|
---|
| 18 | // Find window & API
|
---|
| 19 | w = t.getWin();
|
---|
| 20 | tinymce = w.tinymce;
|
---|
| 21 | tinyMCE = w.tinyMCE;
|
---|
| 22 | t.editor = tinymce.EditorManager.activeEditor;
|
---|
| 23 | t.params = t.editor.windowManager.params;
|
---|
| 24 |
|
---|
| 25 | // Setup local DOM
|
---|
| 26 | t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);
|
---|
| 27 | t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);
|
---|
| 28 | },
|
---|
| 29 |
|
---|
| 30 | getWin : function() {
|
---|
| 31 | return window.dialogArguments || opener || parent || top;
|
---|
| 32 | },
|
---|
| 33 |
|
---|
| 34 | getParam : function(n, dv) {
|
---|
| 35 | return this.editor.getParam(n, dv);
|
---|
| 36 | },
|
---|
| 37 |
|
---|
| 38 | close : function() {
|
---|
| 39 | var t = this, win = t.getWin();
|
---|
| 40 |
|
---|
| 41 | // To avoid domain relaxing issue in Opera
|
---|
| 42 | function close() {
|
---|
| 43 | win.tb_remove();
|
---|
| 44 | tinymce = tinyMCE = t.editor = t.dom = t.dom.doc = null; // Cleanup
|
---|
| 45 | };
|
---|
| 46 |
|
---|
| 47 | if (tinymce.isOpera)
|
---|
| 48 | win.setTimeout(close, 0);
|
---|
| 49 | else
|
---|
| 50 | close();
|
---|
| 51 | },
|
---|
| 52 |
|
---|
| 53 | execCommand : function(cmd, ui, val, a) {
|
---|
| 54 | a = a || {};
|
---|
| 55 | a.skip_focus = 1;
|
---|
| 56 |
|
---|
| 57 | this.restoreSelection();
|
---|
| 58 | return this.editor.execCommand(cmd, ui, val, a);
|
---|
| 59 | },
|
---|
| 60 |
|
---|
| 61 | storeSelection : function() {
|
---|
| 62 | this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark('simple');
|
---|
| 63 | },
|
---|
| 64 |
|
---|
| 65 | restoreSelection : function() {
|
---|
| 66 | var t = tinyMCEPopup;
|
---|
| 67 |
|
---|
| 68 | if (tinymce.isIE)
|
---|
| 69 | t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
|
---|
| 70 | }
|
---|
| 71 | }
|
---|
| 72 | tinyMCEPopup.init();
|
---|
| 73 |
|
---|
| 74 | var wpImage = {
|
---|
| 75 | preInit : function() {
|
---|
| 76 | // import colors stylesheet from parent
|
---|
| 77 | var win = tinyMCEPopup.getWin();
|
---|
| 78 | var styles = win.document.styleSheets;
|
---|
| 79 |
|
---|
| 80 | for ( i = 0; i < styles.length; i++ ) {
|
---|
| 81 | var url = styles.item(i).href;
|
---|
| 82 | if ( url && url.indexOf('colors') != -1 )
|
---|
| 83 | document.write( '<link rel="stylesheet" href="'+url+'" type="text/css" media="all" />' );
|
---|
| 84 | }
|
---|
| 85 | },
|
---|
| 86 |
|
---|
| 87 | I : function(e) {
|
---|
| 88 | return document.getElementById(e);
|
---|
| 89 | },
|
---|
| 90 |
|
---|
| 91 | current : '',
|
---|
| 92 | link : '',
|
---|
| 93 | link_rel : '',
|
---|
| 94 | target_value : '',
|
---|
| 95 | current_size_sel : 's100',
|
---|
| 96 | width : '',
|
---|
| 97 | height : '',
|
---|
| 98 | align : '',
|
---|
| 99 | img_alt : '',
|
---|
| 100 |
|
---|
| 101 | setTabs : function(tab) {
|
---|
| 102 | var t = this;
|
---|
| 103 |
|
---|
| 104 | if ( 'current' == tab.className ) return false;
|
---|
| 105 | t.I('div_advanced').style.display = ( 'tab_advanced' == tab.id ) ? 'block' : 'none';
|
---|
| 106 | t.I('div_basic').style.display = ( 'tab_basic' == tab.id ) ? 'block' : 'none';
|
---|
| 107 | t.I('tab_basic').className = t.I('tab_advanced').className = '';
|
---|
| 108 | tab.className = 'current';
|
---|
| 109 | return false;
|
---|
| 110 | },
|
---|
| 111 |
|
---|
| 112 | img_seturl : function(u) {
|
---|
| 113 | var t = this, rel = t.I('link_rel').value;
|
---|
| 114 |
|
---|
| 115 | if ( 'current' == u ) {
|
---|
| 116 | t.I('link_href').value = t.current;
|
---|
| 117 | t.I('link_rel').value = t.link_rel;
|
---|
| 118 | } else {
|
---|
| 119 | t.I('link_href').value = t.link;
|
---|
| 120 | if ( rel ) {
|
---|
| 121 | rel = rel.replace( /attachment|wp-att-[0-9]+/gi, '' );
|
---|
| 122 | t.I('link_rel').value = tinymce.trim(rel);
|
---|
| 123 | }
|
---|
| 124 | }
|
---|
| 125 | },
|
---|
| 126 |
|
---|
| 127 | imgAlignCls : function(v) {
|
---|
| 128 | var t = this, cls = t.I('img_classes').value;
|
---|
| 129 |
|
---|
| 130 | t.I('img_demo').className = t.align = v;
|
---|
| 131 |
|
---|
| 132 | cls = cls.replace( /align[^ "']+/gi, '' );
|
---|
| 133 | cls += (' ' + v);
|
---|
| 134 | cls = cls.replace( /\s+/g, ' ' ).replace( /^\s/, '' );
|
---|
| 135 |
|
---|
| 136 | if ( 'aligncenter' == v ) {
|
---|
| 137 | t.I('hspace').value = '';
|
---|
| 138 | t.updateStyle('hspace');
|
---|
| 139 | }
|
---|
| 140 |
|
---|
| 141 | t.I('img_classes').value = cls;
|
---|
| 142 | },
|
---|
| 143 |
|
---|
| 144 | showSize : function(el) {
|
---|
| 145 | var t = this, demo = t.I('img_demo'), w = t.width, h = t.height, id = el.id || 's100', size;
|
---|
| 146 |
|
---|
| 147 | size = parseInt(id.substring(1)) / 200;
|
---|
| 148 | demo.width = Math.round(w * size);
|
---|
| 149 | demo.height = Math.round(h * size);
|
---|
| 150 |
|
---|
| 151 | t.showSizeClear();
|
---|
| 152 | el.style.borderColor = '#A3A3A3';
|
---|
| 153 | el.style.backgroundColor = '#E5E5E5';
|
---|
| 154 | },
|
---|
| 155 |
|
---|
| 156 | showSizeSet : function() {
|
---|
| 157 | var t = this;
|
---|
| 158 |
|
---|
| 159 | if ( (t.width * 1.3) > parseInt(t.preloadImg.width) ) {
|
---|
| 160 | var s130 = t.I('s130'), s120 = t.I('s120'), s110 = t.I('s110');
|
---|
| 161 |
|
---|
| 162 | s130.onclick = s120.onclick = s110.onclick = null;
|
---|
| 163 | s130.onmouseover = s120.onmouseover = s110.onmouseover = null;
|
---|
| 164 | s130.style.color = s120.style.color = s110.style.color = '#aaa';
|
---|
| 165 | }
|
---|
| 166 | },
|
---|
| 167 |
|
---|
| 168 | showSizeRem : function() {
|
---|
| 169 | var t = this, demo = t.I('img_demo'), f = document.forms[0];
|
---|
| 170 |
|
---|
| 171 | demo.width = Math.round(f.width.value * 0.5);
|
---|
| 172 | demo.height = Math.round(f.height.value * 0.5);
|
---|
| 173 | t.showSizeClear();
|
---|
| 174 | t.I(t.current_size_sel).style.borderColor = '#A3A3A3';
|
---|
| 175 | t.I(t.current_size_sel).style.backgroundColor = '#E5E5E5';
|
---|
| 176 |
|
---|
| 177 | return false;
|
---|
| 178 | },
|
---|
| 179 |
|
---|
| 180 | showSizeClear : function() {
|
---|
| 181 | var divs = this.I('img_size').getElementsByTagName('div');
|
---|
| 182 |
|
---|
| 183 | for ( i = 0; i < divs.length; i++ ) {
|
---|
| 184 | divs[i].style.borderColor = '#f1f1f1';
|
---|
| 185 | divs[i].style.backgroundColor = '#f1f1f1';
|
---|
| 186 | }
|
---|
| 187 | },
|
---|
| 188 |
|
---|
| 189 | imgEditSize : function(el) {
|
---|
| 190 | var t = this, f = document.forms[0];
|
---|
| 191 |
|
---|
| 192 | if ( ! t.preloadImg || ! t.preloadImg.width || ! t.preloadImg.height ) return;
|
---|
| 193 | var W = parseInt(t.preloadImg.width), H = parseInt(t.preloadImg.height), w = t.width || W, h = t.height || H, id = el.id || 's100';
|
---|
| 194 |
|
---|
| 195 | size = parseInt(id.substring(1)) / 100;
|
---|
| 196 |
|
---|
| 197 | w = Math.round(w * size);
|
---|
| 198 | h = Math.round(h * size);
|
---|
| 199 |
|
---|
| 200 | f.width.value = Math.min(W, w);
|
---|
| 201 | f.height.value = Math.min(H, h);
|
---|
| 202 |
|
---|
| 203 | t.current_size_sel = id;
|
---|
| 204 | t.demoSetSize();
|
---|
| 205 | },
|
---|
| 206 |
|
---|
| 207 | demoSetSize : function(img) {
|
---|
| 208 | var demo = this.I('img_demo'), f = document.forms[0];
|
---|
| 209 |
|
---|
| 210 | demo.width = f.width.value ? Math.round(f.width.value * 0.5) : '';
|
---|
| 211 | demo.height = f.height.value ? Math.round(f.height.value * 0.5) : '';
|
---|
| 212 | },
|
---|
| 213 |
|
---|
| 214 | demoSetStyle : function() {
|
---|
| 215 | var f = document.forms[0], demo = this.I('img_demo'), dom = tinyMCEPopup.editor.dom;
|
---|
| 216 |
|
---|
| 217 | if (demo) {
|
---|
| 218 | dom.setAttrib(demo, 'style', f.img_style.value);
|
---|
| 219 | dom.setStyle(demo, 'width', '');
|
---|
| 220 | dom.setStyle(demo, 'height', '');
|
---|
| 221 | }
|
---|
| 222 | },
|
---|
| 223 |
|
---|
| 224 | origSize : function() {
|
---|
| 225 | var t = this, f = document.forms[0], el = t.I('s100');
|
---|
| 226 |
|
---|
| 227 | f.width.value = t.width = t.preloadImg.width;
|
---|
| 228 | f.height.value = t.height = t.preloadImg.height;
|
---|
| 229 | t.showSizeSet();
|
---|
| 230 | t.demoSetSize();
|
---|
| 231 | t.showSize(el);
|
---|
| 232 | },
|
---|
| 233 |
|
---|
| 234 | init : function() {
|
---|
| 235 | var ed = tinyMCEPopup.editor, h;
|
---|
| 236 |
|
---|
| 237 | h = document.body.innerHTML;
|
---|
| 238 |
|
---|
| 239 | // Replace a=x with a="x" in IE
|
---|
| 240 | if (tinymce.isIE)
|
---|
| 241 | h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"')
|
---|
| 242 |
|
---|
| 243 | document.body.innerHTML = ed.translate(h);
|
---|
| 244 | window.setTimeout( function(){wpImage.setup();}, 100 );
|
---|
| 245 | },
|
---|
| 246 |
|
---|
| 247 | setup : function() {
|
---|
| 248 | var t = this, h, c, el, id, link, fname, f = document.forms[0], ed = tinyMCEPopup.editor, d = t.I('img_demo'), dom = tinyMCEPopup.dom, DL, caption = '';
|
---|
| 249 | document.dir = tinyMCEPopup.editor.getParam('directionality','');
|
---|
| 250 |
|
---|
| 251 | if ( tinyMCEPopup.editor.getParam('wpeditimage_disable_captions', false) )
|
---|
| 252 | t.I('cap_field').style.display = 'none';
|
---|
| 253 |
|
---|
| 254 | tinyMCEPopup.restoreSelection();
|
---|
| 255 | el = ed.selection.getNode();
|
---|
| 256 | if (el.nodeName != 'IMG') return;
|
---|
| 257 |
|
---|
| 258 | f.img_src.value = d.src = link = ed.dom.getAttrib(el, 'src');
|
---|
| 259 | ed.dom.setStyle(el, 'float', '');
|
---|
| 260 | t.getImageData();
|
---|
| 261 | c = ed.dom.getAttrib(el, 'class');
|
---|
| 262 |
|
---|
| 263 | if ( DL = dom.getParent(el, 'dl') ) {
|
---|
| 264 | var dlc = ed.dom.getAttrib(DL, 'class');
|
---|
| 265 | dlc = dlc.match(/align[^ "']+/i);
|
---|
| 266 | if ( dlc && ! dom.hasClass(el, dlc) ) {
|
---|
| 267 | c += ' '+dlc;
|
---|
| 268 | tinymce.trim(c);
|
---|
| 269 | }
|
---|
| 270 |
|
---|
| 271 | tinymce.each(DL.childNodes, function(e) {
|
---|
| 272 | if ( e.nodeName == 'DD' && dom.hasClass(e, 'wp-caption-dd') ) {
|
---|
| 273 | caption = e.innerHTML;
|
---|
| 274 | return;
|
---|
| 275 | }
|
---|
| 276 | });
|
---|
| 277 | }
|
---|
| 278 |
|
---|
| 279 | f.img_cap.value = caption;
|
---|
| 280 | f.img_title.value = ed.dom.getAttrib(el, 'title');
|
---|
| 281 | f.img_alt.value = ed.dom.getAttrib(el, 'alt');
|
---|
| 282 | f.border.value = ed.dom.getAttrib(el, 'border');
|
---|
| 283 | f.vspace.value = ed.dom.getAttrib(el, 'vspace');
|
---|
| 284 | f.hspace.value = ed.dom.getAttrib(el, 'hspace');
|
---|
| 285 | f.align.value = ed.dom.getAttrib(el, 'align');
|
---|
| 286 | f.width.value = t.width = ed.dom.getAttrib(el, 'width');
|
---|
| 287 | f.height.value = t.height = ed.dom.getAttrib(el, 'height');
|
---|
| 288 | f.img_classes.value = c;
|
---|
| 289 | f.img_style.value = ed.dom.getAttrib(el, 'style');
|
---|
| 290 |
|
---|
| 291 | // Move attribs to styles
|
---|
| 292 | if (dom.getAttrib(el, 'hspace'))
|
---|
| 293 | t.updateStyle('hspace');
|
---|
| 294 |
|
---|
| 295 | if (dom.getAttrib(el, 'border'))
|
---|
| 296 | t.updateStyle('border');
|
---|
| 297 |
|
---|
| 298 | if (dom.getAttrib(el, 'vspace'))
|
---|
| 299 | t.updateStyle('vspace');
|
---|
| 300 |
|
---|
| 301 | if (pa = ed.dom.getParent(el, 'A')) {
|
---|
| 302 | f.link_href.value = t.current = ed.dom.getAttrib(pa, 'href');
|
---|
| 303 | f.link_title.value = ed.dom.getAttrib(pa, 'title');
|
---|
| 304 | f.link_rel.value = t.link_rel = ed.dom.getAttrib(pa, 'rel');
|
---|
| 305 | f.link_style.value = ed.dom.getAttrib(pa, 'style');
|
---|
| 306 | t.target_value = ed.dom.getAttrib(pa, 'target');
|
---|
| 307 | f.link_classes.value = ed.dom.getAttrib(pa, 'class');
|
---|
| 308 | }
|
---|
| 309 |
|
---|
| 310 | f.link_target.checked = ( t.target_value && t.target_value == '_blank' ) ? 'checked' : '';
|
---|
| 311 |
|
---|
| 312 | fname = link.substring( link.lastIndexOf('/') );
|
---|
| 313 | fname = fname.replace(/-[0-9]{2,4}x[0-9]{2,4}/, '' );
|
---|
| 314 | t.link = link.substring( 0, link.lastIndexOf('/') ) + fname;
|
---|
| 315 |
|
---|
| 316 | if ( c.indexOf('alignleft') != -1 ) {
|
---|
| 317 | t.I('alignleft').checked = "checked";
|
---|
| 318 | d.className = t.align = "alignleft";
|
---|
| 319 | } else if ( c.indexOf('aligncenter') != -1 ) {
|
---|
| 320 | t.I('aligncenter').checked = "checked";
|
---|
| 321 | d.className = t.align = "aligncenter";
|
---|
| 322 | } else if ( c.indexOf('alignright') != -1 ) {
|
---|
| 323 | t.I('alignright').checked = "checked";
|
---|
| 324 | d.className = t.align = "alignright";
|
---|
| 325 | } else if ( c.indexOf('alignnone') != -1 ) {
|
---|
| 326 | t.I('alignnone').checked = "checked";
|
---|
| 327 | d.className = t.align = "alignnone";
|
---|
| 328 | }
|
---|
| 329 |
|
---|
| 330 | if ( t.width && t.preloadImg.width ) t.showSizeSet();
|
---|
| 331 | document.body.style.display = '';
|
---|
| 332 | },
|
---|
| 333 |
|
---|
| 334 | remove : function() {
|
---|
| 335 | var ed = tinyMCEPopup.editor, p, el;
|
---|
| 336 |
|
---|
| 337 | tinyMCEPopup.restoreSelection();
|
---|
| 338 | el = ed.selection.getNode();
|
---|
| 339 | if (el.nodeName != 'IMG') return;
|
---|
| 340 |
|
---|
| 341 | if ( (p = ed.dom.getParent(el, 'div')) && ed.dom.hasClass(p, 'mceTemp') )
|
---|
| 342 | ed.dom.remove(p);
|
---|
| 343 | else if ( (p = ed.dom.getParent(el, 'A')) && p.childNodes.length == 1 )
|
---|
| 344 | ed.dom.remove(p);
|
---|
| 345 | else ed.dom.remove(el);
|
---|
| 346 |
|
---|
| 347 | ed.execCommand('mceRepaint');
|
---|
| 348 | tinyMCEPopup.close();
|
---|
| 349 | return;
|
---|
| 350 | },
|
---|
| 351 |
|
---|
| 352 | update : function() {
|
---|
| 353 | var t = this, f = document.forms[0], ed = tinyMCEPopup.editor, el, b, fixSafari = null, DL, P, A, DIV, do_caption = null, img_class = f.img_classes.value, html;
|
---|
| 354 |
|
---|
| 355 | tinyMCEPopup.restoreSelection();
|
---|
| 356 | el = ed.selection.getNode();
|
---|
| 357 |
|
---|
| 358 | if (el.nodeName != 'IMG') return;
|
---|
| 359 | if (f.img_src.value === '') {
|
---|
| 360 | t.remove();
|
---|
| 361 | return;
|
---|
| 362 | }
|
---|
| 363 |
|
---|
| 364 | if ( f.img_cap.value != '' && f.width.value != '' ) {
|
---|
| 365 | do_caption = 1;
|
---|
| 366 | img_class = img_class.replace( /align[^ "']+\s?/gi, '' );
|
---|
| 367 | }
|
---|
| 368 |
|
---|
| 369 | A = ed.dom.getParent(el, 'a');
|
---|
| 370 | P = ed.dom.getParent(el, 'p');
|
---|
| 371 | DL = ed.dom.getParent(el, 'dl');
|
---|
| 372 | DIV = ed.dom.getParent(el, 'div');
|
---|
| 373 |
|
---|
| 374 | tinyMCEPopup.execCommand("mceBeginUndoLevel");
|
---|
| 375 |
|
---|
| 376 | ed.dom.setAttribs(el, {
|
---|
| 377 | src : f.img_src.value,
|
---|
| 378 | title : f.img_title.value,
|
---|
| 379 | alt : f.img_alt.value,
|
---|
| 380 | width : f.width.value,
|
---|
| 381 | height : f.height.value,
|
---|
| 382 | style : f.img_style.value,
|
---|
| 383 | 'class' : img_class
|
---|
| 384 | });
|
---|
| 385 |
|
---|
| 386 | if ( f.link_href.value ) {
|
---|
| 387 | // Create new anchor elements
|
---|
| 388 | if ( A == null ) {
|
---|
| 389 | if ( ! f.link_href.value.match(/https?:\/\//i) )
|
---|
| 390 | f.link_href.value = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.link_href.value);
|
---|
| 391 |
|
---|
| 392 | if ( tinymce.isWebKit && ed.dom.hasClass(el, 'aligncenter') ) {
|
---|
| 393 | ed.dom.removeClass(el, 'aligncenter');
|
---|
| 394 | fixSafari = 1;
|
---|
| 395 | }
|
---|
| 396 |
|
---|
| 397 | tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
|
---|
| 398 | if ( fixSafari ) ed.dom.addClass(el, 'aligncenter');
|
---|
| 399 |
|
---|
| 400 | tinymce.each(ed.dom.select("a"), function(n) {
|
---|
| 401 | if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
|
---|
| 402 |
|
---|
| 403 | ed.dom.setAttribs(n, {
|
---|
| 404 | href : f.link_href.value,
|
---|
| 405 | title : f.link_title.value,
|
---|
| 406 | rel : f.link_rel.value,
|
---|
| 407 | target : (f.link_target.checked == true) ? '_blank' : '',
|
---|
| 408 | 'class' : f.link_classes.value,
|
---|
| 409 | style : f.link_style.value
|
---|
| 410 | });
|
---|
| 411 | }
|
---|
| 412 | });
|
---|
| 413 | } else {
|
---|
| 414 | ed.dom.setAttribs(A, {
|
---|
| 415 | href : f.link_href.value,
|
---|
| 416 | title : f.link_title.value,
|
---|
| 417 | rel : f.link_rel.value,
|
---|
| 418 | target : (f.link_target.checked == true) ? '_blank' : '',
|
---|
| 419 | 'class' : f.link_classes.value,
|
---|
| 420 | style : f.link_style.value
|
---|
| 421 | });
|
---|
| 422 | }
|
---|
| 423 | }
|
---|
| 424 |
|
---|
| 425 | if ( do_caption ) {
|
---|
| 426 | var id, cap_id = '', cap, DT, DD, cap_width = 10 + parseInt(f.width.value), align = t.align.substring(5), div_cls = (t.align == 'aligncenter') ? 'mceTemp mceIEcenter' : 'mceTemp';
|
---|
| 427 |
|
---|
| 428 | if ( DL ) {
|
---|
| 429 | ed.dom.setAttribs(DL, {
|
---|
| 430 | 'class' : 'wp-caption '+t.align,
|
---|
| 431 | style : 'width: '+cap_width+'px;'
|
---|
| 432 | });
|
---|
| 433 |
|
---|
| 434 | if ( DIV )
|
---|
| 435 | ed.dom.setAttrib(DIV, 'class', div_cls);
|
---|
| 436 |
|
---|
| 437 | if ( (DT = ed.dom.getParent(el, 'dt')) && (DD = DT.nextSibling) && ed.dom.hasClass(DD, 'wp-caption-dd') )
|
---|
| 438 | ed.dom.setHTML(DD, f.img_cap.value);
|
---|
| 439 |
|
---|
| 440 | } else {
|
---|
| 441 | var lnk = '', pa;
|
---|
| 442 | if ( (id = f.img_classes.value.match( /wp-image-([0-9]{1,6})/ )) && id[1] )
|
---|
| 443 | cap_id = 'attachment_'+id[1];
|
---|
| 444 |
|
---|
| 445 | if ( f.link_href.value && (lnk = ed.dom.getParent(el, 'a')) ) {
|
---|
| 446 | if ( lnk.childNodes.length == 1 )
|
---|
| 447 | html = ed.dom.getOuterHTML(lnk);
|
---|
| 448 | else {
|
---|
| 449 | html = ed.dom.getOuterHTML(lnk);
|
---|
| 450 | html = html.match(/<a[^>]+>/i);
|
---|
| 451 | html = html+ed.dom.getOuterHTML(el)+'</a>';
|
---|
| 452 | }
|
---|
| 453 | } else html = ed.dom.getOuterHTML(el);
|
---|
| 454 |
|
---|
| 455 | html = '<dl id="'+cap_id+'" class="wp-caption '+t.align+'" style="width: '+cap_width+
|
---|
| 456 | 'px"><dt class="wp-caption-dt">'+html+'</dt><dd class="wp-caption-dd">'+f.img_cap.value+'</dd></dl>';
|
---|
| 457 |
|
---|
| 458 | cap = ed.dom.create('div', {'class': div_cls}, html);
|
---|
| 459 |
|
---|
| 460 | if ( P ) {
|
---|
| 461 | P.parentNode.insertBefore(cap, P);
|
---|
| 462 | if ( P.childNodes.length == 1 )
|
---|
| 463 | ed.dom.remove(P);
|
---|
| 464 | else if ( lnk && lnk.childNodes.length == 1 )
|
---|
| 465 | ed.dom.remove(lnk);
|
---|
| 466 | else ed.dom.remove(el);
|
---|
| 467 | } else if ( pa = ed.dom.getParent(el, 'TD,TH,LI') ) {
|
---|
| 468 | pa.appendChild(cap);
|
---|
| 469 | if ( lnk && lnk.childNodes.length == 1 )
|
---|
| 470 | ed.dom.remove(lnk);
|
---|
| 471 | else ed.dom.remove(el);
|
---|
| 472 | }
|
---|
| 473 | }
|
---|
| 474 |
|
---|
| 475 | } else {
|
---|
| 476 | if ( DL && DIV ) {
|
---|
| 477 | var aa;
|
---|
| 478 | if ( f.link_href.value && (aa = ed.dom.getParent(el, 'a')) ) html = ed.dom.getOuterHTML(aa);
|
---|
| 479 | else html = ed.dom.getOuterHTML(el);
|
---|
| 480 |
|
---|
| 481 | P = ed.dom.create('p', {}, html);
|
---|
| 482 | DIV.parentNode.insertBefore(P, DIV);
|
---|
| 483 | ed.dom.remove(DIV);
|
---|
| 484 | }
|
---|
| 485 | }
|
---|
| 486 |
|
---|
| 487 | if ( f.img_classes.value.indexOf('aligncenter') != -1 ) {
|
---|
| 488 | if ( P && ( ! P.style || P.style.textAlign != 'center' ) )
|
---|
| 489 | ed.dom.setStyle(P, 'textAlign', 'center');
|
---|
| 490 | } else {
|
---|
| 491 | if ( P && P.style && P.style.textAlign == 'center' )
|
---|
| 492 | ed.dom.setStyle(P, 'textAlign', '');
|
---|
| 493 | }
|
---|
| 494 |
|
---|
| 495 | if ( ! f.link_href.value && A ) {
|
---|
| 496 | b = ed.selection.getBookmark();
|
---|
| 497 | ed.dom.remove(A, 1);
|
---|
| 498 | ed.selection.moveToBookmark(b);
|
---|
| 499 | }
|
---|
| 500 |
|
---|
| 501 | tinyMCEPopup.execCommand("mceEndUndoLevel");
|
---|
| 502 | ed.execCommand('mceRepaint');
|
---|
| 503 | tinyMCEPopup.close();
|
---|
| 504 | },
|
---|
| 505 |
|
---|
| 506 | updateStyle : function(ty) {
|
---|
| 507 | var dom = tinyMCEPopup.dom, st, v, f = document.forms[0], img = dom.create('img', {style : f.img_style.value});
|
---|
| 508 |
|
---|
| 509 | if (tinyMCEPopup.editor.settings.inline_styles) {
|
---|
| 510 | // Handle align
|
---|
| 511 | if (ty == 'align') {
|
---|
| 512 | dom.setStyle(img, 'float', '');
|
---|
| 513 | dom.setStyle(img, 'vertical-align', '');
|
---|
| 514 |
|
---|
| 515 | v = f.align.value;
|
---|
| 516 | if (v) {
|
---|
| 517 | if (v == 'left' || v == 'right')
|
---|
| 518 | dom.setStyle(img, 'float', v);
|
---|
| 519 | else
|
---|
| 520 | img.style.verticalAlign = v;
|
---|
| 521 | }
|
---|
| 522 | }
|
---|
| 523 |
|
---|
| 524 | // Handle border
|
---|
| 525 | if (ty == 'border') {
|
---|
| 526 | dom.setStyle(img, 'border', '');
|
---|
| 527 |
|
---|
| 528 | v = f.border.value;
|
---|
| 529 | if (v || v == '0') {
|
---|
| 530 | if (v == '0')
|
---|
| 531 | img.style.border = '0';
|
---|
| 532 | else
|
---|
| 533 | img.style.border = v + 'px solid black';
|
---|
| 534 | }
|
---|
| 535 | }
|
---|
| 536 |
|
---|
| 537 | // Handle hspace
|
---|
| 538 | if (ty == 'hspace') {
|
---|
| 539 | dom.setStyle(img, 'marginLeft', '');
|
---|
| 540 | dom.setStyle(img, 'marginRight', '');
|
---|
| 541 |
|
---|
| 542 | v = f.hspace.value;
|
---|
| 543 | if (v) {
|
---|
| 544 | img.style.marginLeft = v + 'px';
|
---|
| 545 | img.style.marginRight = v + 'px';
|
---|
| 546 | }
|
---|
| 547 | }
|
---|
| 548 |
|
---|
| 549 | // Handle vspace
|
---|
| 550 | if (ty == 'vspace') {
|
---|
| 551 | dom.setStyle(img, 'marginTop', '');
|
---|
| 552 | dom.setStyle(img, 'marginBottom', '');
|
---|
| 553 |
|
---|
| 554 | v = f.vspace.value;
|
---|
| 555 | if (v) {
|
---|
| 556 | img.style.marginTop = v + 'px';
|
---|
| 557 | img.style.marginBottom = v + 'px';
|
---|
| 558 | }
|
---|
| 559 | }
|
---|
| 560 |
|
---|
| 561 | // Merge
|
---|
| 562 | f.img_style.value = dom.serializeStyle(dom.parseStyle(img.style.cssText));
|
---|
| 563 | this.demoSetStyle();
|
---|
| 564 | }
|
---|
| 565 | },
|
---|
| 566 |
|
---|
| 567 | checkVal : function(f) {
|
---|
| 568 |
|
---|
| 569 | if ( f.value == '' ) {
|
---|
| 570 | // if ( f.id == 'width' ) f.value = this.width || this.preloadImg.width;
|
---|
| 571 | // if ( f.id == 'height' ) f.value = this.height || this.preloadImg.height;
|
---|
| 572 | if ( f.id == 'img_src' ) f.value = this.I('img_demo').src || this.preloadImg.src;
|
---|
| 573 | }
|
---|
| 574 | },
|
---|
| 575 |
|
---|
| 576 | resetImageData : function() {
|
---|
| 577 | var f = document.forms[0];
|
---|
| 578 |
|
---|
| 579 | f.width.value = f.height.value = '';
|
---|
| 580 | },
|
---|
| 581 |
|
---|
| 582 | updateImageData : function() {
|
---|
| 583 | var f = document.forms[0], t = wpImage;
|
---|
| 584 |
|
---|
| 585 | if ( f.width.value == '' || f.height.value == '' ) {
|
---|
| 586 | f.width.value = t.width = t.preloadImg.width;
|
---|
| 587 | f.height.value = t.height = t.preloadImg.height;
|
---|
| 588 | }
|
---|
| 589 |
|
---|
| 590 | t.showSizeSet();
|
---|
| 591 | t.demoSetSize();
|
---|
| 592 | if ( f.img_style.value )
|
---|
| 593 | t.demoSetStyle();
|
---|
| 594 | },
|
---|
| 595 |
|
---|
| 596 | getImageData : function() {
|
---|
| 597 | var t = wpImage, f = document.forms[0];
|
---|
| 598 |
|
---|
| 599 | t.preloadImg = new Image();
|
---|
| 600 | t.preloadImg.onload = t.updateImageData;
|
---|
| 601 | t.preloadImg.onerror = t.resetImageData;
|
---|
| 602 | t.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.img_src.value);
|
---|
| 603 | }
|
---|
| 604 | };
|
---|
| 605 |
|
---|
| 606 | window.onload = function(){wpImage.init();}
|
---|
| 607 | wpImage.preInit();
|
---|