raw
mp-wp_genesis           1 var ImageDialog = {
mp-wp_genesis 2 preInit : function() {
mp-wp_genesis 3 var url;
mp-wp_genesis 4
mp-wp_genesis 5 tinyMCEPopup.requireLangPack();
mp-wp_genesis 6
mp-wp_genesis 7 if (url = tinyMCEPopup.getParam("external_image_list_url"))
mp-wp_genesis 8 document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
mp-wp_genesis 9 },
mp-wp_genesis 10
mp-wp_genesis 11 init : function() {
mp-wp_genesis 12 var f = document.forms[0], ed = tinyMCEPopup.editor;
mp-wp_genesis 13
mp-wp_genesis 14 // Setup browse button
mp-wp_genesis 15 document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
mp-wp_genesis 16 if (isVisible('srcbrowser'))
mp-wp_genesis 17 document.getElementById('src').style.width = '180px';
mp-wp_genesis 18
mp-wp_genesis 19 e = ed.selection.getNode();
mp-wp_genesis 20
mp-wp_genesis 21 this.fillFileList('image_list', 'tinyMCEImageList');
mp-wp_genesis 22
mp-wp_genesis 23 if (e.nodeName == 'IMG') {
mp-wp_genesis 24 f.src.value = ed.dom.getAttrib(e, 'src');
mp-wp_genesis 25 f.alt.value = ed.dom.getAttrib(e, 'alt');
mp-wp_genesis 26 f.border.value = this.getAttrib(e, 'border');
mp-wp_genesis 27 f.vspace.value = this.getAttrib(e, 'vspace');
mp-wp_genesis 28 f.hspace.value = this.getAttrib(e, 'hspace');
mp-wp_genesis 29 f.width.value = ed.dom.getAttrib(e, 'width');
mp-wp_genesis 30 f.height.value = ed.dom.getAttrib(e, 'height');
mp-wp_genesis 31 f.insert.value = ed.getLang('update');
mp-wp_genesis 32 f.class_name.value = ed.dom.getAttrib(e, 'class');
mp-wp_genesis 33 this.styleVal = ed.dom.getAttrib(e, 'style');
mp-wp_genesis 34 selectByValue(f, 'image_list', f.src.value);
mp-wp_genesis 35 selectByValue(f, 'align', this.getAttrib(e, 'align'));
mp-wp_genesis 36 this.updateStyle();
mp-wp_genesis 37 }
mp-wp_genesis 38 },
mp-wp_genesis 39
mp-wp_genesis 40 fillFileList : function(id, l) {
mp-wp_genesis 41 var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
mp-wp_genesis 42
mp-wp_genesis 43 l = window[l];
mp-wp_genesis 44
mp-wp_genesis 45 if (l && l.length > 0) {
mp-wp_genesis 46 lst.options[lst.options.length] = new Option('', '');
mp-wp_genesis 47
mp-wp_genesis 48 tinymce.each(l, function(o) {
mp-wp_genesis 49 lst.options[lst.options.length] = new Option(o[0], o[1]);
mp-wp_genesis 50 });
mp-wp_genesis 51 } else
mp-wp_genesis 52 dom.remove(dom.getParent(id, 'tr'));
mp-wp_genesis 53 },
mp-wp_genesis 54
mp-wp_genesis 55 update : function() {
mp-wp_genesis 56 var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el;
mp-wp_genesis 57
mp-wp_genesis 58 tinyMCEPopup.restoreSelection();
mp-wp_genesis 59
mp-wp_genesis 60 if (f.src.value === '') {
mp-wp_genesis 61 if (ed.selection.getNode().nodeName == 'IMG') {
mp-wp_genesis 62 ed.dom.remove(ed.selection.getNode());
mp-wp_genesis 63 ed.execCommand('mceRepaint');
mp-wp_genesis 64 }
mp-wp_genesis 65
mp-wp_genesis 66 tinyMCEPopup.close();
mp-wp_genesis 67 return;
mp-wp_genesis 68 }
mp-wp_genesis 69
mp-wp_genesis 70 if (!ed.settings.inline_styles) {
mp-wp_genesis 71 args = tinymce.extend(args, {
mp-wp_genesis 72 vspace : nl.vspace.value,
mp-wp_genesis 73 hspace : nl.hspace.value,
mp-wp_genesis 74 border : nl.border.value,
mp-wp_genesis 75 align : getSelectValue(f, 'align')
mp-wp_genesis 76 });
mp-wp_genesis 77 } else
mp-wp_genesis 78 args.style = this.styleVal;
mp-wp_genesis 79
mp-wp_genesis 80 tinymce.extend(args, {
mp-wp_genesis 81 src : f.src.value,
mp-wp_genesis 82 alt : f.alt.value,
mp-wp_genesis 83 width : f.width.value,
mp-wp_genesis 84 height : f.height.value,
mp-wp_genesis 85 'class' : f.class_name.value
mp-wp_genesis 86 });
mp-wp_genesis 87
mp-wp_genesis 88 el = ed.selection.getNode();
mp-wp_genesis 89
mp-wp_genesis 90 if (el && el.nodeName == 'IMG') {
mp-wp_genesis 91 ed.dom.setAttribs(el, args);
mp-wp_genesis 92 } else {
mp-wp_genesis 93 ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});
mp-wp_genesis 94 ed.dom.setAttribs('__mce_tmp', args);
mp-wp_genesis 95 ed.dom.setAttrib('__mce_tmp', 'id', '');
mp-wp_genesis 96 ed.undoManager.add();
mp-wp_genesis 97 }
mp-wp_genesis 98
mp-wp_genesis 99 tinyMCEPopup.close();
mp-wp_genesis 100 },
mp-wp_genesis 101
mp-wp_genesis 102 updateStyle : function() {
mp-wp_genesis 103 var dom = tinyMCEPopup.dom, st, v, cls, oldcls, rep, f = document.forms[0];
mp-wp_genesis 104
mp-wp_genesis 105 if (tinyMCEPopup.editor.settings.inline_styles) {
mp-wp_genesis 106 st = tinyMCEPopup.dom.parseStyle(this.styleVal);
mp-wp_genesis 107
mp-wp_genesis 108 // Handle align
mp-wp_genesis 109 v = getSelectValue(f, 'align');
mp-wp_genesis 110 cls = f.class_name.value || '';
mp-wp_genesis 111 cls = cls ? cls.replace(/alignright\s*|alignleft\s*|aligncenter\s*/g, '') : '';
mp-wp_genesis 112 cls = cls ? cls.replace(/^\s*(.+?)\s*$/, '$1') : '';
mp-wp_genesis 113 if (v) {
mp-wp_genesis 114 if (v == 'left' || v == 'right') {
mp-wp_genesis 115 st['float'] = v;
mp-wp_genesis 116 delete st['vertical-align'];
mp-wp_genesis 117 oldcls = cls ? ' '+cls : '';
mp-wp_genesis 118 f.class_name.value = 'align' + v + oldcls;
mp-wp_genesis 119 } else {
mp-wp_genesis 120 st['vertical-align'] = v;
mp-wp_genesis 121 delete st['float'];
mp-wp_genesis 122 f.class_name.value = cls;
mp-wp_genesis 123 }
mp-wp_genesis 124 } else {
mp-wp_genesis 125 delete st['float'];
mp-wp_genesis 126 delete st['vertical-align'];
mp-wp_genesis 127 f.class_name.value = cls;
mp-wp_genesis 128 }
mp-wp_genesis 129
mp-wp_genesis 130 // Handle border
mp-wp_genesis 131 v = f.border.value;
mp-wp_genesis 132 if (v || v == '0') {
mp-wp_genesis 133 if (v == '0')
mp-wp_genesis 134 st['border'] = '0';
mp-wp_genesis 135 else
mp-wp_genesis 136 st['border'] = v + 'px solid black';
mp-wp_genesis 137 } else
mp-wp_genesis 138 delete st['border'];
mp-wp_genesis 139
mp-wp_genesis 140 // Handle hspace
mp-wp_genesis 141 v = f.hspace.value;
mp-wp_genesis 142 if (v) {
mp-wp_genesis 143 delete st['margin'];
mp-wp_genesis 144 st['margin-left'] = v + 'px';
mp-wp_genesis 145 st['margin-right'] = v + 'px';
mp-wp_genesis 146 } else {
mp-wp_genesis 147 delete st['margin-left'];
mp-wp_genesis 148 delete st['margin-right'];
mp-wp_genesis 149 }
mp-wp_genesis 150
mp-wp_genesis 151 // Handle vspace
mp-wp_genesis 152 v = f.vspace.value;
mp-wp_genesis 153 if (v) {
mp-wp_genesis 154 delete st['margin'];
mp-wp_genesis 155 st['margin-top'] = v + 'px';
mp-wp_genesis 156 st['margin-bottom'] = v + 'px';
mp-wp_genesis 157 } else {
mp-wp_genesis 158 delete st['margin-top'];
mp-wp_genesis 159 delete st['margin-bottom'];
mp-wp_genesis 160 }
mp-wp_genesis 161
mp-wp_genesis 162 // Merge
mp-wp_genesis 163 st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st));
mp-wp_genesis 164 this.styleVal = dom.serializeStyle(st);
mp-wp_genesis 165 }
mp-wp_genesis 166 },
mp-wp_genesis 167
mp-wp_genesis 168 getAttrib : function(e, at) {
mp-wp_genesis 169 var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
mp-wp_genesis 170
mp-wp_genesis 171 if (ed.settings.inline_styles) {
mp-wp_genesis 172 switch (at) {
mp-wp_genesis 173 case 'align':
mp-wp_genesis 174 if (v = dom.getStyle(e, 'float'))
mp-wp_genesis 175 return v;
mp-wp_genesis 176
mp-wp_genesis 177 if (v = dom.getStyle(e, 'vertical-align'))
mp-wp_genesis 178 return v;
mp-wp_genesis 179
mp-wp_genesis 180 break;
mp-wp_genesis 181
mp-wp_genesis 182 case 'hspace':
mp-wp_genesis 183 v = dom.getStyle(e, 'margin-left')
mp-wp_genesis 184 v2 = dom.getStyle(e, 'margin-right');
mp-wp_genesis 185 if (v && v == v2)
mp-wp_genesis 186 return parseInt(v.replace(/[^0-9]/g, ''));
mp-wp_genesis 187
mp-wp_genesis 188 break;
mp-wp_genesis 189
mp-wp_genesis 190 case 'vspace':
mp-wp_genesis 191 v = dom.getStyle(e, 'margin-top')
mp-wp_genesis 192 v2 = dom.getStyle(e, 'margin-bottom');
mp-wp_genesis 193 if (v && v == v2)
mp-wp_genesis 194 return parseInt(v.replace(/[^0-9]/g, ''));
mp-wp_genesis 195
mp-wp_genesis 196 break;
mp-wp_genesis 197
mp-wp_genesis 198 case 'border':
mp-wp_genesis 199 v = 0;
mp-wp_genesis 200
mp-wp_genesis 201 tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
mp-wp_genesis 202 sv = dom.getStyle(e, 'border-' + sv + '-width');
mp-wp_genesis 203
mp-wp_genesis 204 // False or not the same as prev
mp-wp_genesis 205 if (!sv || (sv != v && v !== 0)) {
mp-wp_genesis 206 v = 0;
mp-wp_genesis 207 return false;
mp-wp_genesis 208 }
mp-wp_genesis 209
mp-wp_genesis 210 if (sv)
mp-wp_genesis 211 v = sv;
mp-wp_genesis 212 });
mp-wp_genesis 213
mp-wp_genesis 214 if (v)
mp-wp_genesis 215 return parseInt(v.replace(/[^0-9]/g, ''));
mp-wp_genesis 216
mp-wp_genesis 217 break;
mp-wp_genesis 218 }
mp-wp_genesis 219 }
mp-wp_genesis 220
mp-wp_genesis 221 if (v = dom.getAttrib(e, at))
mp-wp_genesis 222 return v;
mp-wp_genesis 223
mp-wp_genesis 224 return '';
mp-wp_genesis 225 },
mp-wp_genesis 226
mp-wp_genesis 227 resetImageData : function() {
mp-wp_genesis 228 var f = document.forms[0];
mp-wp_genesis 229
mp-wp_genesis 230 f.width.value = f.height.value = "";
mp-wp_genesis 231 },
mp-wp_genesis 232
mp-wp_genesis 233 updateImageData : function() {
mp-wp_genesis 234 var f = document.forms[0], t = ImageDialog;
mp-wp_genesis 235
mp-wp_genesis 236 if (f.width.value == "")
mp-wp_genesis 237 f.width.value = t.preloadImg.width;
mp-wp_genesis 238
mp-wp_genesis 239 if (f.height.value == "")
mp-wp_genesis 240 f.height.value = t.preloadImg.height;
mp-wp_genesis 241 },
mp-wp_genesis 242
mp-wp_genesis 243 getImageData : function() {
mp-wp_genesis 244 var f = document.forms[0];
mp-wp_genesis 245
mp-wp_genesis 246 this.preloadImg = new Image();
mp-wp_genesis 247 this.preloadImg.onload = this.updateImageData;
mp-wp_genesis 248 this.preloadImg.onerror = this.resetImageData;
mp-wp_genesis 249 this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value);
mp-wp_genesis 250 }
mp-wp_genesis 251 };
mp-wp_genesis 252
mp-wp_genesis 253 ImageDialog.preInit();
mp-wp_genesis 254 tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);