includes/clientside/tinymce/plugins/inlinepopups/editor_plugin_src.js
changeset 476 f26a69c40431
parent 459 31c23016ab62
child 543 dffcbfbc4e59
equal deleted inserted replaced
475:51386f1852b8 476:f26a69c40431
     1 /**
     1 /**
     2  * $Id: editor_plugin_src.js 602 2008-02-15 14:52:29Z spocke $
     2  * $Id: editor_plugin_src.js 644 2008-02-26 18:03:45Z spocke $
     3  *
     3  *
     4  * @author Moxiecode
     4  * @author Moxiecode
     5  * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
     5  * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
     6  */
     6  */
     7 
     7 
    71 			t.features = f;
    71 			t.features = f;
    72 			t.params = p;
    72 			t.params = p;
    73 			t.onOpen.dispatch(t, f, p);
    73 			t.onOpen.dispatch(t, f, p);
    74 
    74 
    75 			if (f.type) {
    75 			if (f.type) {
    76 				opt += ' modal ' + f.type;
    76 				opt += ' mceModal';
       
    77 
       
    78 				if (f.type)
       
    79 					opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1);
       
    80 
    77 				f.resizable = false;
    81 				f.resizable = false;
    78 			}
    82 			}
    79 
    83 
    80 			if (f.statusbar)
    84 			if (f.statusbar)
    81 				opt += ' statusbar';
    85 				opt += ' mceStatusbar';
    82 
    86 
    83 			if (f.resizable)
    87 			if (f.resizable)
    84 				opt += ' resizable';
    88 				opt += ' mceResizable';
    85 
    89 
    86 			if (f.minimizable)
    90 			if (f.minimizable)
    87 				opt += ' minimizable';
    91 				opt += ' mceMinimizable';
    88 
    92 
    89 			if (f.maximizable)
    93 			if (f.maximizable)
    90 				opt += ' maximizable';
    94 				opt += ' mceMaximizable';
    91 
    95 
    92 			if (f.movable)
    96 			if (f.movable)
    93 				opt += ' movable';
    97 				opt += ' mceMovable';
    94 
    98 
    95 			// Create DOM objects
    99 			// Create DOM objects
    96 			t._addAll(document.body, 
   100 			t._addAll(document.body, 
    97 				['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', style : 'width:100px;height:100px'}, 
   101 				['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', style : 'width:100px;height:100px'}, 
    98 					['div', {id : id + '_wrapper', 'class' : 'wrapper' + opt},
   102 					['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},
    99 						['div', {id : id + '_top', 'class' : 'top'}, 
   103 						['div', {id : id + '_top', 'class' : 'mceTop'}, 
   100 							['div', {'class' : 'left'}],
   104 							['div', {'class' : 'mceLeft'}],
   101 							['div', {'class' : 'center'}],
   105 							['div', {'class' : 'mceCenter'}],
   102 							['div', {'class' : 'right'}],
   106 							['div', {'class' : 'mceRight'}],
   103 							['span', {id : id + '_title'}, f.title || '']
   107 							['span', {id : id + '_title'}, f.title || '']
   104 						],
   108 						],
   105 
   109 
   106 						['div', {id : id + '_middle', 'class' : 'middle'}, 
   110 						['div', {id : id + '_middle', 'class' : 'mceMiddle'}, 
   107 							['div', {id : id + '_left', 'class' : 'left'}],
   111 							['div', {id : id + '_left', 'class' : 'mceLeft'}],
   108 							['span', {id : id + '_content'}],
   112 							['span', {id : id + '_content'}],
   109 							['div', {id : id + '_right', 'class' : 'right'}]
   113 							['div', {id : id + '_right', 'class' : 'mceRight'}]
   110 						],
   114 						],
   111 
   115 
   112 						['div', {id : id + '_bottom', 'class' : 'bottom'},
   116 						['div', {id : id + '_bottom', 'class' : 'mceBottom'},
   113 							['div', {'class' : 'left'}],
   117 							['div', {'class' : 'mceLeft'}],
   114 							['div', {'class' : 'center'}],
   118 							['div', {'class' : 'mceCenter'}],
   115 							['div', {'class' : 'right'}],
   119 							['div', {'class' : 'mceRight'}],
   116 							['span', {id : id + '_status'}, 'Content']
   120 							['span', {id : id + '_status'}, 'Content']
   117 						],
   121 						],
   118 
   122 
   119 						['a', {'class' : 'move', href : 'javascript:;'}],
   123 						['a', {'class' : 'mceMove', href : 'javascript:;'}],
   120 						['a', {'class' : 'min', href : 'javascript:;', onmousedown : 'return false;'}],
   124 						['a', {'class' : 'mceMin', href : 'javascript:;', onmousedown : 'return false;'}],
   121 						['a', {'class' : 'max', href : 'javascript:;', onmousedown : 'return false;'}],
   125 						['a', {'class' : 'mceMax', href : 'javascript:;', onmousedown : 'return false;'}],
   122 						['a', {'class' : 'med', href : 'javascript:;', onmousedown : 'return false;'}],
   126 						['a', {'class' : 'mceMed', href : 'javascript:;', onmousedown : 'return false;'}],
   123 						['a', {'class' : 'close', href : 'javascript:;', onmousedown : 'return false;'}],
   127 						['a', {'class' : 'mceClose', href : 'javascript:;', onmousedown : 'return false;'}],
   124 						['a', {id : id + '_resize_n', 'class' : 'resize resize-n', href : 'javascript:;'}],
   128 						['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', href : 'javascript:;'}],
   125 						['a', {id : id + '_resize_s', 'class' : 'resize resize-s', href : 'javascript:;'}],
   129 						['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', href : 'javascript:;'}],
   126 						['a', {id : id + '_resize_w', 'class' : 'resize resize-w', href : 'javascript:;'}],
   130 						['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', href : 'javascript:;'}],
   127 						['a', {id : id + '_resize_e', 'class' : 'resize resize-e', href : 'javascript:;'}],
   131 						['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', href : 'javascript:;'}],
   128 						['a', {id : id + '_resize_nw', 'class' : 'resize resize-nw', href : 'javascript:;'}],
   132 						['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', href : 'javascript:;'}],
   129 						['a', {id : id + '_resize_ne', 'class' : 'resize resize-ne', href : 'javascript:;'}],
   133 						['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', href : 'javascript:;'}],
   130 						['a', {id : id + '_resize_sw', 'class' : 'resize resize-sw', href : 'javascript:;'}],
   134 						['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', href : 'javascript:;'}],
   131 						['a', {id : id + '_resize_se', 'class' : 'resize resize-se', href : 'javascript:;'}]
   135 						['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', href : 'javascript:;'}]
   132 					]
   136 					]
   133 				]
   137 				]
   134 			);
   138 			);
   135 
   139 
   136 			DOM.setStyles(id, {top : -10000, left : -10000});
   140 			DOM.setStyles(id, {top : -10000, left : -10000});
   157 			if (!f.type) {
   161 			if (!f.type) {
   158 				DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});
   162 				DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});
   159 				DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});
   163 				DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});
   160 				DOM.setAttrib(id + '_ifr', 'src', u);
   164 				DOM.setAttrib(id + '_ifr', 'src', u);
   161 			} else {
   165 			} else {
   162 				DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'button ok', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');
   166 				DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');
   163 
   167 
   164 				if (f.type == 'confirm')
   168 				if (f.type == 'confirm')
   165 					DOM.add(id + '_wrapper', 'a', {'class' : 'button cancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');
   169 					DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');
   166 
   170 
   167 				DOM.add(id + '_middle', 'div', {'class' : 'icon'});
   171 				DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});
   168 				DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));
   172 				DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));
   169 			}
   173 			}
   170 
   174 
   171 			// Register events
   175 			// Register events
   172 			mdf = Event.add(id, 'mousedown', function(e) {
   176 			mdf = Event.add(id, 'mousedown', function(e) {
   174 
   178 
   175 				w = t.windows[id];
   179 				w = t.windows[id];
   176 				t.focus(id);
   180 				t.focus(id);
   177 
   181 
   178 				if (n.nodeName == 'A' || n.nodeName == 'a') {
   182 				if (n.nodeName == 'A' || n.nodeName == 'a') {
   179 					if (n.className == 'max') {
   183 					if (n.className == 'mceMax') {
   180 						w.oldPos = w.element.getXY();
   184 						w.oldPos = w.element.getXY();
   181 						w.oldSize = w.element.getSize();
   185 						w.oldSize = w.element.getSize();
   182 
   186 
   183 						vp = DOM.getViewPort();
   187 						vp = DOM.getViewPort();
   184 
   188 
   187 						vp.h -= 2;
   191 						vp.h -= 2;
   188 
   192 
   189 						w.element.moveTo(vp.x, vp.y);
   193 						w.element.moveTo(vp.x, vp.y);
   190 						w.element.resizeTo(vp.w, vp.h);
   194 						w.element.resizeTo(vp.w, vp.h);
   191 						DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});
   195 						DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});
   192 						DOM.addClass(id + '_wrapper', 'maximized');
   196 						DOM.addClass(id + '_wrapper', 'mceMaximized');
   193 					} else if (n.className == 'med') {
   197 					} else if (n.className == 'mceMed') {
   194 						// Reset to old size
   198 						// Reset to old size
   195 						w.element.moveTo(w.oldPos.x, w.oldPos.y);
   199 						w.element.moveTo(w.oldPos.x, w.oldPos.y);
   196 						w.element.resizeTo(w.oldSize.w, w.oldSize.h);
   200 						w.element.resizeTo(w.oldSize.w, w.oldSize.h);
   197 						w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);
   201 						w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);
   198 
   202 
   199 						DOM.removeClass(id + '_wrapper', 'maximized');
   203 						DOM.removeClass(id + '_wrapper', 'mceMaximized');
   200 					} else if (n.className == 'move')
   204 					} else if (n.className == 'mceMove')
   201 						return t._startDrag(id, e, n.className);
   205 						return t._startDrag(id, e, n.className);
   202 					else if (DOM.hasClass(n, 'resize'))
   206 					else if (DOM.hasClass(n, 'mceResize'))
   203 						return t._startDrag(id, e, n.className.substring(7));
   207 						return t._startDrag(id, e, n.className.substring(13));
   204 				}
   208 				}
   205 			});
   209 			});
   206 
   210 
   207 			clf = Event.add(id, 'click', function(e) {
   211 			clf = Event.add(id, 'click', function(e) {
   208 				var n = e.target;
   212 				var n = e.target;
   209 
   213 
   210 				t.focus(id);
   214 				t.focus(id);
   211 
   215 
   212 				if (n.nodeName == 'A' || n.nodeName == 'a') {
   216 				if (n.nodeName == 'A' || n.nodeName == 'a') {
   213 					switch (n.className) {
   217 					switch (n.className) {
   214 						case 'close':
   218 						case 'mceClose':
   215 							t.close(null, id);
   219 							t.close(null, id);
   216 							return Event.cancel(e);
   220 							return Event.cancel(e);
   217 
   221 
   218 						case 'button ok':
   222 						case 'mceButton mceOk':
   219 						case 'button cancel':
   223 						case 'mceButton mceCancel':
   220 							f.button_func(n.className == 'button ok');
   224 							f.button_func(n.className == 'mceButton mceOk');
   221 							return Event.cancel(e);
   225 							return Event.cancel(e);
   222 					}
   226 					}
   223 				}
   227 				}
   224 			});
   228 			});
   225 
   229 
   255 			w.zIndex = this.zIndex++;
   259 			w.zIndex = this.zIndex++;
   256 			w.element.setStyle('zIndex', w.zIndex);
   260 			w.element.setStyle('zIndex', w.zIndex);
   257 			w.element.update();
   261 			w.element.update();
   258 
   262 
   259 			id = id + '_wrapper';
   263 			id = id + '_wrapper';
   260 			DOM.removeClass(t.lastId, 'focus');
   264 			DOM.removeClass(t.lastId, 'mceFocus');
   261 			DOM.addClass(id, 'focus');
   265 			DOM.addClass(id, 'mceFocus');
   262 			t.lastId = id;
   266 			t.lastId = id;
   263 		},
   267 		},
   264 
   268 
   265 		_addAll : function(te, ne) {
   269 		_addAll : function(te, ne) {
   266 			var i, n, t = this, dom = tinymce.DOM;
   270 			var i, n, t = this, dom = tinymce.DOM;
   306 				t._fixIELayout(id, 1);
   310 				t._fixIELayout(id, 1);
   307 
   311 
   308 				return Event.cancel(e);
   312 				return Event.cancel(e);
   309 			});
   313 			});
   310 
   314 
   311 			if (ac != 'move')
   315 			if (ac != 'Move')
   312 				startMove();
   316 				startMove();
   313 
   317 
   314 			function startMove() {
   318 			function startMove() {
   315 				if (eb)
   319 				if (eb)
   316 					return;
   320 					return;
   329 				// Setup placeholder
   333 				// Setup placeholder
   330 				p = we.getXY();
   334 				p = we.getXY();
   331 				sz = we.getSize();
   335 				sz = we.getSize();
   332 				sx = cp.x + p.x - vp.x;
   336 				sx = cp.x + p.x - vp.x;
   333 				sy = cp.y + p.y - vp.y;
   337 				sy = cp.y + p.y - vp.y;
   334 				DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'placeholder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});
   338 				DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});
   335 				ph = new Element('mcePlaceHolder');
   339 				ph = new Element('mcePlaceHolder');
   336 			};
   340 			};
   337 
   341 
   338 			// Handle mouse move/drag
   342 			// Handle mouse move/drag
   339 			mm = Event.add(d, 'mousemove', function(e) {
   343 			mm = Event.add(d, 'mousemove', function(e) {
   343 
   347 
   344 				x = e.screenX - sex;
   348 				x = e.screenX - sex;
   345 				y = e.screenY - sey;
   349 				y = e.screenY - sey;
   346 
   350 
   347 				switch (ac) {
   351 				switch (ac) {
   348 					case 'resize-w':
   352 					case 'ResizeW':
   349 						dx = x;
   353 						dx = x;
   350 						dw = 0 - x;
   354 						dw = 0 - x;
   351 						break;
   355 						break;
   352 
   356 
   353 					case 'resize-e':
   357 					case 'ResizeE':
   354 						dw = x;
   358 						dw = x;
   355 						break;
   359 						break;
   356 
   360 
   357 					case 'resize-n':
   361 					case 'ResizeN':
   358 					case 'resize-nw':
   362 					case 'ResizeNW':
   359 					case 'resize-ne':
   363 					case 'ResizeNE':
   360 						if (ac == "resize-nw") {
   364 						if (ac == "ResizeNW") {
   361 							dx = x;
   365 							dx = x;
   362 							dw = 0 - x;
   366 							dw = 0 - x;
   363 						} else if (ac == "resize-ne")
   367 						} else if (ac == "ResizeNE")
   364 							dw = x;
   368 							dw = x;
   365 
   369 
   366 						dy = y;
   370 						dy = y;
   367 						dh = 0 - y;
   371 						dh = 0 - y;
   368 						break;
   372 						break;
   369 
   373 
   370 					case 'resize-s':
   374 					case 'ResizeS':
   371 					case 'resize-sw':
   375 					case 'ResizeSW':
   372 					case 'resize-se':
   376 					case 'ResizeSE':
   373 						if (ac == "resize-sw") {
   377 						if (ac == "ResizeSW") {
   374 							dx = x;
   378 							dx = x;
   375 							dw = 0 - x;
   379 							dw = 0 - x;
   376 						} else if (ac == "resize-se")
   380 						} else if (ac == "ResizeSE")
   377 							dw = x;
   381 							dw = x;
   378 
   382 
   379 						dh = y;
   383 						dh = y;
   380 						break;
   384 						break;
   381 
   385 
   382 					case 'move':
   386 					case 'mceMove':
   383 						dx = x;
   387 						dx = x;
   384 						dy = y;
   388 						dy = y;
   385 						break;
   389 						break;
   386 				}
   390 				}
   387 
   391