[ Index ] |
|
Code source de Serendipity 1.2 |
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 };
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Nov 24 09:00:37 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |