[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 var ImageDialog = { 2 preInit : function() { 3 var url; 4 5 tinyMCEPopup.requireLangPack(); 6 7 if (url = tinyMCEPopup.getParam("external_image_list_url")) 8 document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>'); 9 }, 10 11 init : function(ed) { 12 var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode(), fl = tinyMCEPopup.getParam('external_image_list', 'tinyMCEImageList'); 13 14 tinyMCEPopup.resizeToInnerSize(); 15 this.fillClassList('class_list'); 16 this.fillFileList('src_list', fl); 17 this.fillFileList('over_list', fl); 18 this.fillFileList('out_list', fl); 19 TinyMCE_EditableSelects.init(); 20 21 if (n.nodeName == 'IMG') { 22 nl.src.value = dom.getAttrib(n, 'src'); 23 nl.width.value = dom.getAttrib(n, 'width'); 24 nl.height.value = dom.getAttrib(n, 'height'); 25 nl.alt.value = dom.getAttrib(n, 'alt'); 26 nl.title.value = dom.getAttrib(n, 'title'); 27 nl.vspace.value = this.getAttrib(n, 'vspace'); 28 nl.hspace.value = this.getAttrib(n, 'hspace'); 29 nl.border.value = this.getAttrib(n, 'border'); 30 selectByValue(f, 'align', this.getAttrib(n, 'align')); 31 selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true); 32 nl.style.value = dom.getAttrib(n, 'style'); 33 nl.id.value = dom.getAttrib(n, 'id'); 34 nl.dir.value = dom.getAttrib(n, 'dir'); 35 nl.lang.value = dom.getAttrib(n, 'lang'); 36 nl.usemap.value = dom.getAttrib(n, 'usemap'); 37 nl.longdesc.value = dom.getAttrib(n, 'longdesc'); 38 nl.insert.value = ed.getLang('update'); 39 40 if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover'))) 41 nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1'); 42 43 if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout'))) 44 nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1'); 45 46 if (ed.settings.inline_styles) { 47 // Move attribs to styles 48 if (dom.getAttrib(n, 'align')) 49 this.updateStyle('align'); 50 51 if (dom.getAttrib(n, 'hspace')) 52 this.updateStyle('hspace'); 53 54 if (dom.getAttrib(n, 'border')) 55 this.updateStyle('border'); 56 57 if (dom.getAttrib(n, 'vspace')) 58 this.updateStyle('vspace'); 59 } 60 } 61 62 // Setup browse button 63 document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); 64 if (isVisible('srcbrowser')) 65 document.getElementById('src').style.width = '260px'; 66 67 // Setup browse button 68 document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image'); 69 if (isVisible('overbrowser')) 70 document.getElementById('onmouseoversrc').style.width = '260px'; 71 72 // Setup browse button 73 document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image'); 74 if (isVisible('outbrowser')) 75 document.getElementById('onmouseoutsrc').style.width = '260px'; 76 77 // If option enabled default contrain proportions to checked 78 if (ed.getParam("advimage_constrain_proportions", true)) 79 f.constrain.checked = true; 80 81 // Check swap image if valid data 82 if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value) 83 this.setSwapImage(true); 84 else 85 this.setSwapImage(false); 86 87 this.changeAppearance(); 88 this.showPreviewImage(nl.src.value, 1); 89 }, 90 91 insert : function(file, title) { 92 var ed = tinyMCEPopup.editor, t = this, f = document.forms[0]; 93 94 if (f.src.value === '') { 95 if (ed.selection.getNode().nodeName == 'IMG') { 96 ed.dom.remove(ed.selection.getNode()); 97 ed.execCommand('mceRepaint'); 98 } 99 100 tinyMCEPopup.close(); 101 return; 102 } 103 104 if (tinyMCEPopup.getParam("accessibility_warnings", 1)) { 105 if (!f.alt.value) { 106 tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) { 107 if (s) 108 t.insertAndClose(); 109 }); 110 111 return; 112 } 113 } 114 115 t.insertAndClose(); 116 }, 117 118 insertAndClose : function() { 119 var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el; 120 121 tinyMCEPopup.restoreSelection(); 122 123 // Fixes crash in Safari 124 if (tinymce.isWebKit) 125 ed.getWin().focus(); 126 127 if (!ed.settings.inline_styles) { 128 args = { 129 vspace : nl.vspace.value, 130 hspace : nl.hspace.value, 131 border : nl.border.value, 132 align : getSelectValue(f, 'align') 133 }; 134 } else { 135 // Remove deprecated values 136 args = { 137 vspace : '', 138 hspace : '', 139 border : '', 140 align : '' 141 }; 142 } 143 144 tinymce.extend(args, { 145 src : nl.src.value.replace(/ /g, '%20'), 146 width : nl.width.value, 147 height : nl.height.value, 148 alt : nl.alt.value, 149 title : nl.title.value, 150 'class' : getSelectValue(f, 'class_list'), 151 style : nl.style.value, 152 id : nl.id.value, 153 dir : nl.dir.value, 154 lang : nl.lang.value, 155 usemap : nl.usemap.value, 156 longdesc : nl.longdesc.value 157 }); 158 159 args.onmouseover = args.onmouseout = ''; 160 161 if (f.onmousemovecheck.checked) { 162 if (nl.onmouseoversrc.value) 163 args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';"; 164 165 if (nl.onmouseoutsrc.value) 166 args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';"; 167 } 168 169 el = ed.selection.getNode(); 170 171 if (el && el.nodeName == 'IMG') { 172 ed.dom.setAttribs(el, args); 173 } else { 174 tinymce.each(args, function(value, name) { 175 if (value === "") { 176 delete args[name]; 177 } 178 }); 179 180 ed.execCommand('mceInsertContent', false, tinyMCEPopup.editor.dom.createHTML('img', args), {skip_undo : 1}); 181 ed.undoManager.add(); 182 } 183 184 tinyMCEPopup.editor.execCommand('mceRepaint'); 185 tinyMCEPopup.editor.focus(); 186 tinyMCEPopup.close(); 187 }, 188 189 getAttrib : function(e, at) { 190 var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2; 191 192 if (ed.settings.inline_styles) { 193 switch (at) { 194 case 'align': 195 if (v = dom.getStyle(e, 'float')) 196 return v; 197 198 if (v = dom.getStyle(e, 'vertical-align')) 199 return v; 200 201 break; 202 203 case 'hspace': 204 v = dom.getStyle(e, 'margin-left') 205 v2 = dom.getStyle(e, 'margin-right'); 206 207 if (v && v == v2) 208 return parseInt(v.replace(/[^0-9]/g, '')); 209 210 break; 211 212 case 'vspace': 213 v = dom.getStyle(e, 'margin-top') 214 v2 = dom.getStyle(e, 'margin-bottom'); 215 if (v && v == v2) 216 return parseInt(v.replace(/[^0-9]/g, '')); 217 218 break; 219 220 case 'border': 221 v = 0; 222 223 tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) { 224 sv = dom.getStyle(e, 'border-' + sv + '-width'); 225 226 // False or not the same as prev 227 if (!sv || (sv != v && v !== 0)) { 228 v = 0; 229 return false; 230 } 231 232 if (sv) 233 v = sv; 234 }); 235 236 if (v) 237 return parseInt(v.replace(/[^0-9]/g, '')); 238 239 break; 240 } 241 } 242 243 if (v = dom.getAttrib(e, at)) 244 return v; 245 246 return ''; 247 }, 248 249 setSwapImage : function(st) { 250 var f = document.forms[0]; 251 252 f.onmousemovecheck.checked = st; 253 setBrowserDisabled('overbrowser', !st); 254 setBrowserDisabled('outbrowser', !st); 255 256 if (f.over_list) 257 f.over_list.disabled = !st; 258 259 if (f.out_list) 260 f.out_list.disabled = !st; 261 262 f.onmouseoversrc.disabled = !st; 263 f.onmouseoutsrc.disabled = !st; 264 }, 265 266 fillClassList : function(id) { 267 var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; 268 269 if (v = tinyMCEPopup.getParam('theme_advanced_styles')) { 270 cl = []; 271 272 tinymce.each(v.split(';'), function(v) { 273 var p = v.split('='); 274 275 cl.push({'title' : p[0], 'class' : p[1]}); 276 }); 277 } else 278 cl = tinyMCEPopup.editor.dom.getClasses(); 279 280 if (cl.length > 0) { 281 lst.options.length = 0; 282 lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); 283 284 tinymce.each(cl, function(o) { 285 lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); 286 }); 287 } else 288 dom.remove(dom.getParent(id, 'tr')); 289 }, 290 291 fillFileList : function(id, l) { 292 var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; 293 294 l = typeof(l) === 'function' ? l() : window[l]; 295 lst.options.length = 0; 296 297 if (l && l.length > 0) { 298 lst.options[lst.options.length] = new Option('', ''); 299 300 tinymce.each(l, function(o) { 301 lst.options[lst.options.length] = new Option(o[0], o[1]); 302 }); 303 } else 304 dom.remove(dom.getParent(id, 'tr')); 305 }, 306 307 resetImageData : function() { 308 var f = document.forms[0]; 309 310 f.elements.width.value = f.elements.height.value = ''; 311 }, 312 313 updateImageData : function(img, st) { 314 var f = document.forms[0]; 315 316 if (!st) { 317 f.elements.width.value = img.width; 318 f.elements.height.value = img.height; 319 } 320 321 this.preloadImg = img; 322 }, 323 324 changeAppearance : function() { 325 var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg'); 326 327 if (img) { 328 if (ed.getParam('inline_styles')) { 329 ed.dom.setAttrib(img, 'style', f.style.value); 330 } else { 331 img.align = f.align.value; 332 img.border = f.border.value; 333 img.hspace = f.hspace.value; 334 img.vspace = f.vspace.value; 335 } 336 } 337 }, 338 339 changeHeight : function() { 340 var f = document.forms[0], tp, t = this; 341 342 if (!f.constrain.checked || !t.preloadImg) { 343 return; 344 } 345 346 if (f.width.value == "" || f.height.value == "") 347 return; 348 349 tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height; 350 f.height.value = tp.toFixed(0); 351 }, 352 353 changeWidth : function() { 354 var f = document.forms[0], tp, t = this; 355 356 if (!f.constrain.checked || !t.preloadImg) { 357 return; 358 } 359 360 if (f.width.value == "" || f.height.value == "") 361 return; 362 363 tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width; 364 f.width.value = tp.toFixed(0); 365 }, 366 367 updateStyle : function(ty) { 368 var dom = tinyMCEPopup.dom, b, bStyle, bColor, v, isIE = tinymce.isIE, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value}); 369 370 if (tinyMCEPopup.editor.settings.inline_styles) { 371 // Handle align 372 if (ty == 'align') { 373 dom.setStyle(img, 'float', ''); 374 dom.setStyle(img, 'vertical-align', ''); 375 376 v = getSelectValue(f, 'align'); 377 if (v) { 378 if (v == 'left' || v == 'right') 379 dom.setStyle(img, 'float', v); 380 else 381 img.style.verticalAlign = v; 382 } 383 } 384 385 // Handle border 386 if (ty == 'border') { 387 b = img.style.border ? img.style.border.split(' ') : []; 388 bStyle = dom.getStyle(img, 'border-style'); 389 bColor = dom.getStyle(img, 'border-color'); 390 391 dom.setStyle(img, 'border', ''); 392 393 v = f.border.value; 394 if (v || v == '0') { 395 if (v == '0') 396 img.style.border = isIE ? '0' : '0 none none'; 397 else { 398 var isOldIE = tinymce.isIE && (!document.documentMode || document.documentMode < 9); 399 400 if (b.length == 3 && b[isOldIE ? 2 : 1]) 401 bStyle = b[isOldIE ? 2 : 1]; 402 else if (!bStyle || bStyle == 'none') 403 bStyle = 'solid'; 404 if (b.length == 3 && b[isIE ? 0 : 2]) 405 bColor = b[isOldIE ? 0 : 2]; 406 else if (!bColor || bColor == 'none') 407 bColor = 'black'; 408 img.style.border = v + 'px ' + bStyle + ' ' + bColor; 409 } 410 } 411 } 412 413 // Handle hspace 414 if (ty == 'hspace') { 415 dom.setStyle(img, 'marginLeft', ''); 416 dom.setStyle(img, 'marginRight', ''); 417 418 v = f.hspace.value; 419 if (v) { 420 img.style.marginLeft = v + 'px'; 421 img.style.marginRight = v + 'px'; 422 } 423 } 424 425 // Handle vspace 426 if (ty == 'vspace') { 427 dom.setStyle(img, 'marginTop', ''); 428 dom.setStyle(img, 'marginBottom', ''); 429 430 v = f.vspace.value; 431 if (v) { 432 img.style.marginTop = v + 'px'; 433 img.style.marginBottom = v + 'px'; 434 } 435 } 436 437 // Merge 438 dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText), 'img'); 439 } 440 }, 441 442 changeMouseMove : function() { 443 }, 444 445 showPreviewImage : function(u, st) { 446 if (!u) { 447 tinyMCEPopup.dom.setHTML('prev', ''); 448 return; 449 } 450 451 if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true)) 452 this.resetImageData(); 453 454 u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u); 455 456 if (!st) 457 tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this);" onerror="ImageDialog.resetImageData();" />'); 458 else 459 tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this, 1);" />'); 460 } 461 }; 462 463 ImageDialog.preInit(); 464 tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |