[ Index ]
 

Code source de Serendipity 1.2

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/htmlarea/ -> popupwin.js (source)

   1  // (c) dynarch.com 2003-2004
   2  // Distributed under the same terms as HTMLArea itself.
   3  
   4  function PopupWin(editor, title, handler, initFunction) {
   5      this.editor = editor;
   6      this.handler = handler;
   7      var dlg = window.open("", "__ha_dialog",
   8                    "toolbar=no,menubar=no,personalbar=no,width=600,height=600,left=20,top=40" +
   9                    "scrollbars=no,resizable=no");
  10      this.window = dlg;
  11      var doc = dlg.document;
  12      this.doc = doc;
  13      var self = this;
  14  
  15      var base = document.baseURI || document.URL;
  16      if (base && base.match(/(.*)\/([^\/]+)/)) {
  17          base = RegExp.$1 + "/";
  18      }
  19      if (typeof _editor_url != "undefined" && !/^\//.test(_editor_url) && !/http:\/\//.test(_editor_url)) {
  20          // _editor_url doesn't start with '/' which means it's relative
  21          // FIXME: there's a problem here, it could be http:// which
  22          // doesn't start with slash but it's not relative either.
  23          base += _editor_url;
  24      } else
  25          base = _editor_url;
  26      if (!/\/$/.test(base)) {
  27          // base does not end in slash, add it now
  28          base += '/';
  29      }
  30      this.baseURL = base;
  31  
  32      doc.open();
  33      var html = "<html><head><title>" + title + "</title>\n";
  34      // html += "<base href='" + base + "htmlarea.js' />\n";
  35      html += "<style type='text/css'>@import url(" + base + "htmlarea.css);</style></head>\n";
  36      html += "<body class='dialog popupwin' id='--HA-body'></body></html>";
  37      doc.write(html);
  38      doc.close();
  39  
  40      // sometimes I Hate Mozilla... ;-(
  41  	function init2() {
  42          var body = doc.body;
  43          if (!body) {
  44              setTimeout(init2, 25);
  45              return false;
  46          }
  47          dlg.title = title;
  48          doc.documentElement.style.padding = "0px";
  49          doc.documentElement.style.margin = "0px";
  50          var content = doc.createElement("div");
  51          content.className = "content";
  52          self.content = content;
  53          body.appendChild(content);
  54          self.element = body;
  55          initFunction(self);
  56          dlg.focus();
  57      };
  58      init2();
  59  };
  60  
  61  PopupWin.prototype.callHandler = function() {
  62      var tags = ["input", "textarea", "select"];
  63      var params = new Object();
  64      for (var ti = tags.length; --ti >= 0;) {
  65          var tag = tags[ti];
  66          var els = this.content.getElementsByTagName(tag);
  67          for (var j = 0; j < els.length; ++j) {
  68              var el = els[j];
  69              var val = el.value;
  70              if (el.tagName.toLowerCase() == "input") {
  71                  if (el.type == "checkbox") {
  72                      val = el.checked;
  73                  }
  74              }
  75              params[el.name] = val;
  76          }
  77      }
  78      this.handler(this, params);
  79      return false;
  80  };
  81  
  82  PopupWin.prototype.close = function() {
  83      this.window.close();
  84  };
  85  
  86  PopupWin.prototype.addButtons = function() {
  87      var self = this;
  88      var div = this.doc.createElement("div");
  89      this.content.appendChild(div);
  90      div.className = "buttons";
  91      for (var i = 0; i < arguments.length; ++i) {
  92          var btn = arguments[i];
  93          var button = this.doc.createElement("button");
  94          div.appendChild(button);
  95          button.innerHTML = HTMLArea.I18N.buttons[btn];
  96          switch (btn) {
  97              case "ok":
  98              button.onclick = function() {
  99                  self.callHandler();
 100                  self.close();
 101                  return false;
 102              };
 103              break;
 104              case "cancel":
 105              button.onclick = function() {
 106                  self.close();
 107                  return false;
 108              };
 109              break;
 110          }
 111      }
 112  };
 113  
 114  PopupWin.prototype.showAtElement = function() {
 115      var self = this;
 116      // Mozilla needs some time to realize what's goin' on..
 117      setTimeout(function() {
 118          var w = self.content.offsetWidth + 4;
 119          var h = self.content.offsetHeight + 4;
 120          // size to content -- that's fuckin' buggy in all fuckin' browsers!!!
 121          // so that we set a larger size for the dialog window and then center
 122          // the element inside... phuck!
 123  
 124          // center...
 125          var el = self.content;
 126          var s = el.style;
 127          // s.width = el.offsetWidth + "px";
 128          // s.height = el.offsetHeight + "px";
 129          s.position = "absolute";
 130          s.left = (w - el.offsetWidth) / 2 + "px";
 131          s.top = (h - el.offsetHeight) / 2 + "px";
 132          if (HTMLArea.is_gecko) {
 133              self.window.innerWidth = w;
 134              self.window.innerHeight = h;
 135          } else {
 136              self.window.resizeTo(w + 8, h + 35);
 137          }
 138      }, 25);
 139  };


Généré le : Sat Nov 24 09:00:37 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics