[ Index ]

WordPress Cross Reference

title

Body

[close]

/wp-includes/js/tinymce/plugins/inlinepopups/ -> editor_plugin_src.js (source)

   1  /**
   2   * editor_plugin_src.js
   3   *
   4   * Copyright 2009, Moxiecode Systems AB
   5   * Released under LGPL License.
   6   *
   7   * License: http://tinymce.moxiecode.com/license
   8   * Contributing: http://tinymce.moxiecode.com/contributing
   9   */
  10  
  11  (function() {
  12      var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;
  13  
  14      tinymce.create('tinymce.plugins.InlinePopups', {
  15          init : function(ed, url) {
  16              // Replace window manager
  17              ed.onBeforeRenderUI.add(function() {
  18                  ed.windowManager = new tinymce.InlineWindowManager(ed);
  19                  DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css");
  20              });
  21          },
  22  
  23          getInfo : function() {
  24              return {
  25                  longname : 'InlinePopups',
  26                  author : 'Moxiecode Systems AB',
  27                  authorurl : 'http://tinymce.moxiecode.com',
  28                  infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
  29                  version : tinymce.majorVersion + "." + tinymce.minorVersion
  30              };
  31          }
  32      });
  33  
  34      tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', {
  35          InlineWindowManager : function(ed) {
  36              var t = this;
  37  
  38              t.parent(ed);
  39              t.zIndex = 300000;
  40              t.count = 0;
  41              t.windows = {};
  42          },
  43  
  44          open : function(f, p) {
  45              var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u, parentWindow;
  46  
  47              f = f || {};
  48              p = p || {};
  49  
  50              // Run native windows
  51              if (!f.inline)
  52                  return t.parent(f, p);
  53  
  54              parentWindow = t._frontWindow();
  55              if (parentWindow && DOM.get(parentWindow.id + '_ifr')) {
  56                  parentWindow.focussedElement = DOM.get(parentWindow.id + '_ifr').contentWindow.document.activeElement;
  57              }
  58              
  59              // Only store selection if the type is a normal window
  60              if (!f.type)
  61                  t.bookmark = ed.selection.getBookmark(1);
  62  
  63              id = DOM.uniqueId();
  64              vp = DOM.getViewPort();
  65              f.width = parseInt(f.width || 320);
  66              f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0);
  67              f.min_width = parseInt(f.min_width || 150);
  68              f.min_height = parseInt(f.min_height || 100);
  69              f.max_width = parseInt(f.max_width || 2000);
  70              f.max_height = parseInt(f.max_height || 2000);
  71              f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0)));
  72              f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0)));
  73              f.movable = f.resizable = true;
  74              p.mce_width = f.width;
  75              p.mce_height = f.height;
  76              p.mce_inline = true;
  77              p.mce_window_id = id;
  78              p.mce_auto_focus = f.auto_focus;
  79  
  80              // Transpose
  81  //            po = DOM.getPos(ed.getContainer());
  82  //            f.left -= po.x;
  83  //            f.top -= po.y;
  84  
  85              t.features = f;
  86              t.params = p;
  87              t.onOpen.dispatch(t, f, p);
  88  
  89              if (f.type) {
  90                  opt += ' mceModal';
  91  
  92                  if (f.type)
  93                      opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1);
  94  
  95                  f.resizable = false;
  96              }
  97  
  98              if (f.statusbar)
  99                  opt += ' mceStatusbar';
 100  
 101              if (f.resizable)
 102                  opt += ' mceResizable';
 103  
 104              if (f.minimizable)
 105                  opt += ' mceMinimizable';
 106  
 107              if (f.maximizable)
 108                  opt += ' mceMaximizable';
 109  
 110              if (f.movable)
 111                  opt += ' mceMovable';
 112  
 113              // Create DOM objects
 114              t._addAll(DOM.doc.body, 
 115                  ['div', {id : id, role : 'dialog', 'aria-labelledby': f.type ? id + '_content' : id + '_title', 'class' : (ed.settings.inlinepopups_skin || 'clearlooks2') + (tinymce.isIE && window.getSelection ? ' ie9' : ''), style : 'width:100px;height:100px'}, 
 116                      ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},
 117                          ['div', {id : id + '_top', 'class' : 'mceTop'}, 
 118                              ['div', {'class' : 'mceLeft'}],
 119                              ['div', {'class' : 'mceCenter'}],
 120                              ['div', {'class' : 'mceRight'}],
 121                              ['span', {id : id + '_title'}, f.title || '']
 122                          ],
 123  
 124                          ['div', {id : id + '_middle', 'class' : 'mceMiddle'}, 
 125                              ['div', {id : id + '_left', 'class' : 'mceLeft', tabindex : '0'}],
 126                              ['span', {id : id + '_content'}],
 127                              ['div', {id : id + '_right', 'class' : 'mceRight', tabindex : '0'}]
 128                          ],
 129  
 130                          ['div', {id : id + '_bottom', 'class' : 'mceBottom'},
 131                              ['div', {'class' : 'mceLeft'}],
 132                              ['div', {'class' : 'mceCenter'}],
 133                              ['div', {'class' : 'mceRight'}],
 134                              ['span', {id : id + '_status'}, 'Content']
 135                          ],
 136  
 137                          ['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}],
 138                          ['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
 139                          ['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
 140                          ['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
 141                          ['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
 142                          ['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}],
 143                          ['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}],
 144                          ['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}],
 145                          ['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}],
 146                          ['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}],
 147                          ['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}],
 148                          ['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}],
 149                          ['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}]
 150                      ]
 151                  ]
 152              );
 153  
 154              DOM.setStyles(id, {top : -10000, left : -10000});
 155  
 156              // Fix gecko rendering bug, where the editors iframe messed with window contents
 157              if (tinymce.isGecko)
 158                  DOM.setStyle(id, 'overflow', 'auto');
 159  
 160              // Measure borders
 161              if (!f.type) {
 162                  dw += DOM.get(id + '_left').clientWidth;
 163                  dw += DOM.get(id + '_right').clientWidth;
 164                  dh += DOM.get(id + '_top').clientHeight;
 165                  dh += DOM.get(id + '_bottom').clientHeight;
 166              }
 167  
 168              // Resize window
 169              DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh});
 170  
 171              u = f.url || f.file;
 172              if (u) {
 173                  if (tinymce.relaxedDomain)
 174                      u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;
 175  
 176                  u = tinymce._addVer(u);
 177              }
 178  
 179              if (!f.type) {
 180                  DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});
 181                  DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});
 182                  DOM.setAttrib(id + '_ifr', 'src', u);
 183              } else {
 184                  DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');
 185  
 186                  if (f.type == 'confirm')
 187                      DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');
 188  
 189                  DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});
 190                  DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));
 191                  
 192                  Event.add(id, 'keyup', function(evt) {
 193                      var VK_ESCAPE = 27;
 194                      if (evt.keyCode === VK_ESCAPE) {
 195                          f.button_func(false);
 196                          return Event.cancel(evt);
 197                      }
 198                  });
 199  
 200                  Event.add(id, 'keydown', function(evt) {
 201                      var cancelButton, VK_TAB = 9;
 202                      if (evt.keyCode === VK_TAB) {
 203                          cancelButton = DOM.select('a.mceCancel', id + '_wrapper')[0];
 204                          if (cancelButton && cancelButton !== evt.target) {
 205                              cancelButton.focus();
 206                          } else {
 207                              DOM.get(id + '_ok').focus();
 208                          }
 209                          return Event.cancel(evt);
 210                      }
 211                  });
 212              }
 213  
 214              // Register events
 215              mdf = Event.add(id, 'mousedown', function(e) {
 216                  var n = e.target, w, vp;
 217  
 218                  w = t.windows[id];
 219                  t.focus(id);
 220  
 221                  if (n.nodeName == 'A' || n.nodeName == 'a') {
 222                      if (n.className == 'mceClose') {
 223                          t.close(null, id);
 224                          return Event.cancel(e);
 225                      } else if (n.className == 'mceMax') {
 226                          w.oldPos = w.element.getXY();
 227                          w.oldSize = w.element.getSize();
 228  
 229                          vp = DOM.getViewPort();
 230  
 231                          // Reduce viewport size to avoid scrollbars
 232                          vp.w -= 2;
 233                          vp.h -= 2;
 234  
 235                          w.element.moveTo(vp.x, vp.y);
 236                          w.element.resizeTo(vp.w, vp.h);
 237                          DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});
 238                          DOM.addClass(id + '_wrapper', 'mceMaximized');
 239                      } else if (n.className == 'mceMed') {
 240                          // Reset to old size
 241                          w.element.moveTo(w.oldPos.x, w.oldPos.y);
 242                          w.element.resizeTo(w.oldSize.w, w.oldSize.h);
 243                          w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);
 244  
 245                          DOM.removeClass(id + '_wrapper', 'mceMaximized');
 246                      } else if (n.className == 'mceMove')
 247                          return t._startDrag(id, e, n.className);
 248                      else if (DOM.hasClass(n, 'mceResize'))
 249                          return t._startDrag(id, e, n.className.substring(13));
 250                  }
 251              });
 252  
 253              clf = Event.add(id, 'click', function(e) {
 254                  var n = e.target;
 255  
 256                  t.focus(id);
 257  
 258                  if (n.nodeName == 'A' || n.nodeName == 'a') {
 259                      switch (n.className) {
 260                          case 'mceClose':
 261                              t.close(null, id);
 262                              return Event.cancel(e);
 263  
 264                          case 'mceButton mceOk':
 265                          case 'mceButton mceCancel':
 266                              f.button_func(n.className == 'mceButton mceOk');
 267                              return Event.cancel(e);
 268                      }
 269                  }
 270              });
 271              
 272              // Make sure the tab order loops within the dialog.
 273              Event.add([id + '_left', id + '_right'], 'focus', function(evt) {
 274                  var iframe = DOM.get(id + '_ifr');
 275                  if (iframe) {
 276                      var body = iframe.contentWindow.document.body;
 277                      var focusable = DOM.select(':input:enabled,*[tabindex=0]', body);
 278                      if (evt.target.id === (id + '_left')) {
 279                          focusable[focusable.length - 1].focus();
 280                      } else {
 281                          focusable[0].focus();
 282                      }
 283                  } else {
 284                      DOM.get(id + '_ok').focus();
 285                  }
 286              });
 287              
 288              // Add window
 289              w = t.windows[id] = {
 290                  id : id,
 291                  mousedown_func : mdf,
 292                  click_func : clf,
 293                  element : new Element(id, {blocker : 1, container : ed.getContainer()}),
 294                  iframeElement : new Element(id + '_ifr'),
 295                  features : f,
 296                  deltaWidth : dw,
 297                  deltaHeight : dh
 298              };
 299  
 300              w.iframeElement.on('focus', function() {
 301                  t.focus(id);
 302              });
 303  
 304              // Setup blocker
 305              if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') {
 306                  DOM.add(DOM.doc.body, 'div', {
 307                      id : 'mceModalBlocker',
 308                      'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker',
 309                      style : {zIndex : t.zIndex - 1}
 310                  });
 311  
 312                  DOM.show('mceModalBlocker'); // Reduces flicker in IE
 313                  DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'true');
 314              } else
 315                  DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1);
 316  
 317              if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel))
 318                  DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
 319  
 320              DOM.setAttrib(id, 'aria-hidden', 'false');
 321              t.focus(id);
 322              t._fixIELayout(id, 1);
 323  
 324              // Focus ok button
 325              if (DOM.get(id + '_ok'))
 326                  DOM.get(id + '_ok').focus();
 327              t.count++;
 328  
 329              return w;
 330          },
 331  
 332          focus : function(id) {
 333              var t = this, w;
 334  
 335              if (w = t.windows[id]) {
 336                  w.zIndex = this.zIndex++;
 337                  w.element.setStyle('zIndex', w.zIndex);
 338                  w.element.update();
 339  
 340                  id = id + '_wrapper';
 341                  DOM.removeClass(t.lastId, 'mceFocus');
 342                  DOM.addClass(id, 'mceFocus');
 343                  t.lastId = id;
 344                  
 345                  if (w.focussedElement) {
 346                      w.focussedElement.focus();
 347                  } else if (DOM.get(id + '_ok')) {
 348                      DOM.get(w.id + '_ok').focus();
 349                  } else if (DOM.get(w.id + '_ifr')) {
 350                      DOM.get(w.id + '_ifr').focus();
 351                  }
 352              }
 353          },
 354  
 355          _addAll : function(te, ne) {
 356              var i, n, t = this, dom = tinymce.DOM;
 357  
 358              if (is(ne, 'string'))
 359                  te.appendChild(dom.doc.createTextNode(ne));
 360              else if (ne.length) {
 361                  te = te.appendChild(dom.create(ne[0], ne[1]));
 362  
 363                  for (i=2; i<ne.length; i++)
 364                      t._addAll(te, ne[i]);
 365              }
 366          },
 367  
 368          _startDrag : function(id, se, ac) {
 369              var t = this, mu, mm, d = DOM.doc, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh;
 370  
 371              // Get positons and sizes
 372  //            cp = DOM.getPos(t.editor.getContainer());
 373              cp = {x : 0, y : 0};
 374              vp = DOM.getViewPort();
 375  
 376              // Reduce viewport size to avoid scrollbars while dragging
 377              vp.w -= 2;
 378              vp.h -= 2;
 379  
 380              sex = se.screenX;
 381              sey = se.screenY;
 382              dx = dy = dw = dh = 0;
 383  
 384              // Handle mouse up
 385              mu = Event.add(d, 'mouseup', function(e) {
 386                  Event.remove(d, 'mouseup', mu);
 387                  Event.remove(d, 'mousemove', mm);
 388  
 389                  if (eb)
 390                      eb.remove();
 391  
 392                  we.moveBy(dx, dy);
 393                  we.resizeBy(dw, dh);
 394                  sz = we.getSize();
 395                  DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight});
 396                  t._fixIELayout(id, 1);
 397  
 398                  return Event.cancel(e);
 399              });
 400  
 401              if (ac != 'Move')
 402                  startMove();
 403  
 404  			function startMove() {
 405                  if (eb)
 406                      return;
 407  
 408                  t._fixIELayout(id, 0);
 409  
 410                  // Setup event blocker
 411                  DOM.add(d.body, 'div', {
 412                      id : 'mceEventBlocker',
 413                      'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'),
 414                      style : {zIndex : t.zIndex + 1}
 415                  });
 416  
 417                  if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))
 418                      DOM.setStyles('mceEventBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
 419  
 420                  eb = new Element('mceEventBlocker');
 421                  eb.update();
 422  
 423                  // Setup placeholder
 424                  p = we.getXY();
 425                  sz = we.getSize();
 426                  sx = cp.x + p.x - vp.x;
 427                  sy = cp.y + p.y - vp.y;
 428                  DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});
 429                  ph = new Element('mcePlaceHolder');
 430              };
 431  
 432              // Handle mouse move/drag
 433              mm = Event.add(d, 'mousemove', function(e) {
 434                  var x, y, v;
 435  
 436                  startMove();
 437  
 438                  x = e.screenX - sex;
 439                  y = e.screenY - sey;
 440  
 441                  switch (ac) {
 442                      case 'ResizeW':
 443                          dx = x;
 444                          dw = 0 - x;
 445                          break;
 446  
 447                      case 'ResizeE':
 448                          dw = x;
 449                          break;
 450  
 451                      case 'ResizeN':
 452                      case 'ResizeNW':
 453                      case 'ResizeNE':
 454                          if (ac == "ResizeNW") {
 455                              dx = x;
 456                              dw = 0 - x;
 457                          } else if (ac == "ResizeNE")
 458                              dw = x;
 459  
 460                          dy = y;
 461                          dh = 0 - y;
 462                          break;
 463  
 464                      case 'ResizeS':
 465                      case 'ResizeSW':
 466                      case 'ResizeSE':
 467                          if (ac == "ResizeSW") {
 468                              dx = x;
 469                              dw = 0 - x;
 470                          } else if (ac == "ResizeSE")
 471                              dw = x;
 472  
 473                          dh = y;
 474                          break;
 475  
 476                      case 'mceMove':
 477                          dx = x;
 478                          dy = y;
 479                          break;
 480                  }
 481  
 482                  // Boundary check
 483                  if (dw < (v = w.features.min_width - sz.w)) {
 484                      if (dx !== 0)
 485                          dx += dw - v;
 486  
 487                      dw = v;
 488                  }
 489      
 490                  if (dh < (v = w.features.min_height - sz.h)) {
 491                      if (dy !== 0)
 492                          dy += dh - v;
 493  
 494                      dh = v;
 495                  }
 496  
 497                  dw = Math.min(dw, w.features.max_width - sz.w);
 498                  dh = Math.min(dh, w.features.max_height - sz.h);
 499                  dx = Math.max(dx, vp.x - (sx + vp.x));
 500                  dy = Math.max(dy, vp.y - (sy + vp.y));
 501                  dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x));
 502                  dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y));
 503  
 504                  // Move if needed
 505                  if (dx + dy !== 0) {
 506                      if (sx + dx < 0)
 507                          dx = 0;
 508      
 509                      if (sy + dy < 0)
 510                          dy = 0;
 511  
 512                      ph.moveTo(sx + dx, sy + dy);
 513                  }
 514  
 515                  // Resize if needed
 516                  if (dw + dh !== 0)
 517                      ph.resizeTo(sz.w + dw, sz.h + dh);
 518  
 519                  return Event.cancel(e);
 520              });
 521  
 522              return Event.cancel(se);
 523          },
 524  
 525          resizeBy : function(dw, dh, id) {
 526              var w = this.windows[id];
 527  
 528              if (w) {
 529                  w.element.resizeBy(dw, dh);
 530                  w.iframeElement.resizeBy(dw, dh);
 531              }
 532          },
 533  
 534          close : function(win, id) {
 535              var t = this, w, d = DOM.doc, fw, id;
 536  
 537              id = t._findId(id || win);
 538  
 539              // Probably not inline
 540              if (!t.windows[id]) {
 541                  t.parent(win);
 542                  return;
 543              }
 544  
 545              t.count--;
 546  
 547              if (t.count == 0) {
 548                  DOM.remove('mceModalBlocker');
 549                  DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'false');
 550                  t.editor.focus();
 551              }
 552  
 553              if (w = t.windows[id]) {
 554                  t.onClose.dispatch(t);
 555                  Event.remove(d, 'mousedown', w.mousedownFunc);
 556                  Event.remove(d, 'click', w.clickFunc);
 557                  Event.clear(id);
 558                  Event.clear(id + '_ifr');
 559  
 560                  DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak
 561                  w.element.remove();
 562                  delete t.windows[id];
 563  
 564                  fw = t._frontWindow();
 565  
 566                  if (fw)
 567                      t.focus(fw.id);
 568              }
 569          },
 570          
 571          // Find front most window
 572          _frontWindow : function() {
 573              var fw, ix = 0;
 574              // Find front most window and focus that
 575              each (this.windows, function(w) {
 576                  if (w.zIndex > ix) {
 577                      fw = w;
 578                      ix = w.zIndex;
 579                  }
 580              });
 581              return fw;
 582          },
 583  
 584          setTitle : function(w, ti) {
 585              var e;
 586  
 587              w = this._findId(w);
 588  
 589              if (e = DOM.get(w + '_title'))
 590                  e.innerHTML = DOM.encode(ti);
 591          },
 592  
 593          alert : function(txt, cb, s) {
 594              var t = this, w;
 595  
 596              w = t.open({
 597                  title : t,
 598                  type : 'alert',
 599                  button_func : function(s) {
 600                      if (cb)
 601                          cb.call(s || t, s);
 602  
 603                      t.close(null, w.id);
 604                  },
 605                  content : DOM.encode(t.editor.getLang(txt, txt)),
 606                  inline : 1,
 607                  width : 400,
 608                  height : 130
 609              });
 610          },
 611  
 612          confirm : function(txt, cb, s) {
 613              var t = this, w;
 614  
 615              w = t.open({
 616                  title : t,
 617                  type : 'confirm',
 618                  button_func : function(s) {
 619                      if (cb)
 620                          cb.call(s || t, s);
 621  
 622                      t.close(null, w.id);
 623                  },
 624                  content : DOM.encode(t.editor.getLang(txt, txt)),
 625                  inline : 1,
 626                  width : 400,
 627                  height : 130
 628              });
 629          },
 630  
 631          // Internal functions
 632  
 633          _findId : function(w) {
 634              var t = this;
 635  
 636              if (typeof(w) == 'string')
 637                  return w;
 638  
 639              each(t.windows, function(wo) {
 640                  var ifr = DOM.get(wo.id + '_ifr');
 641  
 642                  if (ifr && w == ifr.contentWindow) {
 643                      w = wo.id;
 644                      return false;
 645                  }
 646              });
 647  
 648              return w;
 649          },
 650  
 651          _fixIELayout : function(id, s) {
 652              var w, img;
 653  
 654              if (!tinymce.isIE6)
 655                  return;
 656  
 657              // Fixes the bug where hover flickers and does odd things in IE6
 658              each(['n','s','w','e','nw','ne','sw','se'], function(v) {
 659                  var e = DOM.get(id + '_resize_' + v);
 660  
 661                  DOM.setStyles(e, {
 662                      width : s ? e.clientWidth : '',
 663                      height : s ? e.clientHeight : '',
 664                      cursor : DOM.getStyle(e, 'cursor', 1)
 665                  });
 666  
 667                  DOM.setStyle(id + "_bottom", 'bottom', '-1px');
 668  
 669                  e = 0;
 670              });
 671  
 672              // Fixes graphics glitch
 673              if (w = this.windows[id]) {
 674                  // Fixes rendering bug after resize
 675                  w.element.hide();
 676                  w.element.show();
 677  
 678                  // Forced a repaint of the window
 679                  //DOM.get(id).style.filter = '';
 680  
 681                  // IE has a bug where images used in CSS won't get loaded
 682                  // sometimes when the cache in the browser is disabled
 683                  // This fix tries to solve it by loading the images using the image object
 684                  each(DOM.select('div,a', id), function(e, i) {
 685                      if (e.currentStyle.backgroundImage != 'none') {
 686                          img = new Image();
 687                          img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1');
 688                      }
 689                  });
 690  
 691                  DOM.get(id).style.filter = '';
 692              }
 693          }
 694      });
 695  
 696      // Register plugin
 697      tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups);
 698  })();
 699  


Generated: Tue Mar 25 01:41:18 2014 WordPress honlapkészítés: online1.hu