350 lines
8.2 KiB
JavaScript
350 lines
8.2 KiB
JavaScript
/* This compressed file is part of Xinha. For uncompressed sources, forum, and bug reports, go to xinha.org */
|
|
/* This file is part of version 0.95 released Mon, 12 May 2008 17:33:15 +0200 */
|
|
/* The URL of the most recent version of this file is http://svn.xinha.webfactional.com/trunk/plugins/Forms/forms.js */
|
|
function Forms(_1){
|
|
this.editor=_1;
|
|
var _2=_1.config;
|
|
var bl=Forms.btnList;
|
|
var _4=this;
|
|
var _5=["linebreak"];
|
|
for(var i=0;i<bl.length;++i){
|
|
var _7=bl[i];
|
|
if(!_7){
|
|
_5.push("separator");
|
|
}else{
|
|
var id=_7[0];
|
|
if(i<3){
|
|
_2.registerButton(id,this._lc(_7[1]),_1.imgURL("ed_"+_7[0]+".gif","Forms"),false,function(_9,id){
|
|
_4.buttonPress(_9,id);
|
|
});
|
|
}else{
|
|
_2.registerButton(id,this._lc(_7[1]),_1.imgURL("ed_"+_7[0]+".gif","Forms"),false,function(_b,id){
|
|
_4.buttonPress(_b,id);
|
|
},"form");
|
|
}
|
|
_5.push(id);
|
|
}
|
|
}
|
|
_2.toolbar.push(_5);
|
|
}
|
|
Forms._pluginInfo={name:"Forms",origin:"version: 1.0, by Nelson Bright, BrightWork, Inc., http://www.brightworkweb.com",version:"2.0",developer:"Udo Schmal",developer_url:"",sponsor:"L.N.Schaffrath NeueMedien",sponsor_url:"http://www.schaffrath-neuemedien.de/",c_owner:"Udo Schmal & Schaffrath-NeueMedien",license:"htmlArea"};
|
|
Forms.btnList=[null,["form","Form"],null,["textarea","Textarea"],["select","Selection Field"],["checkbox","Checkbox"],["radio","Radio Button"],["text","Text Field"],["password","Password Field"],["file","File Field"],["button","Button"],["submit","Submit Button"],["reset","Reset Button"],["image","Image Button"],["hidden","Hidden Field"],["label","Label"],["fieldset","Field Set"]];
|
|
Forms.prototype._lc=function(_d){
|
|
return Xinha._lc(_d,"Forms");
|
|
};
|
|
Forms.prototype.onGenerate=function(){
|
|
this.editor.addEditorStylesheet(Xinha.getPluginDir("Forms")+"/forms.css");
|
|
};
|
|
Forms.prototype.buttonPress=function(_e,_f,_10){
|
|
function optionValues(_11,_12){
|
|
this.text=_11;
|
|
this.value=_12;
|
|
}
|
|
var _13=new Object();
|
|
var _14=_f;
|
|
var sel=_e._getSelection();
|
|
var _16=_e._createRange(sel);
|
|
if(_f=="form"){
|
|
var pe=_e.getParentElement();
|
|
var frm=null;
|
|
while(pe&&(pe.nodeType==1)&&(pe.tagName.toLowerCase()!="body")){
|
|
if(pe.tagName.toLowerCase()=="form"){
|
|
frm=pe;
|
|
break;
|
|
}else{
|
|
pe=pe.parentNode;
|
|
}
|
|
}
|
|
if(frm){
|
|
_13.f_name=frm.name;
|
|
_13.f_action=frm.action;
|
|
_13.f_method=frm.method;
|
|
_13.f_enctype=frm.enctype;
|
|
_13.f_target=frm.target;
|
|
}else{
|
|
_13.f_name="";
|
|
_13.f_action="";
|
|
_13.f_method="";
|
|
_13.f_enctype="";
|
|
_13.f_target="";
|
|
}
|
|
_e._popupDialog("plugin://Forms/form",function(_19){
|
|
if(_19){
|
|
if(frm){
|
|
frm.name=_19["f_name"];
|
|
frm.setAttribute("action",_19["f_action"]);
|
|
frm.setAttribute("method",_19["f_method"]);
|
|
frm.setAttribute("enctype",_19["f_enctype"]);
|
|
frm.setAttribute("target",_19["f_target"]);
|
|
}else{
|
|
frm="<form name=\""+_19["f_name"]+"\"";
|
|
if(_19["f_action"]!=""){
|
|
frm+=" action=\""+_19["f_action"]+"\"";
|
|
}
|
|
if(_19["f_method"]!=""){
|
|
frm+=" method=\""+_19["f_method"]+"\"";
|
|
}
|
|
if(_19["f_enctype"]!=""){
|
|
frm+=" enctype=\""+_19["f_enctype"]+"\"";
|
|
}
|
|
if(_19["f_target"]!=""){
|
|
frm+=" target=\""+_19["f_target"]+"\"";
|
|
}
|
|
frm+=">";
|
|
_e.surroundHTML(frm," </form>");
|
|
}
|
|
}
|
|
},_13);
|
|
}else{
|
|
var _1a="";
|
|
if(typeof _10=="undefined"){
|
|
_10=_e.getParentElement();
|
|
var tag=_10.tagName.toLowerCase();
|
|
if(_10&&(tag=="legend")){
|
|
_10=_10.parentElement;
|
|
tag=_10.tagName.toLowerCase();
|
|
}
|
|
if(_10&&!(tag=="textarea"||tag=="select"||tag=="input"||tag=="label"||tag=="fieldset")){
|
|
_10=null;
|
|
}
|
|
}
|
|
if(_10){
|
|
_14=_10.tagName.toLowerCase();
|
|
_13.f_name=_10.name;
|
|
_1a=_10.tagName;
|
|
if(_14=="input"){
|
|
_13.f_type=_10.type;
|
|
_14=_10.type;
|
|
}
|
|
switch(_14){
|
|
case "textarea":
|
|
_13.f_cols=_10.cols;
|
|
_13.f_rows=_10.rows;
|
|
_13.f_text=_10.innerHTML;
|
|
_13.f_wrap=_10.getAttribute("wrap");
|
|
_13.f_readOnly=_10.getAttribute("readOnly");
|
|
_13.f_disabled=_10.getAttribute("disabled");
|
|
_13.f_tabindex=_10.getAttribute("tabindex");
|
|
_13.f_accesskey=_10.getAttribute("accesskey");
|
|
break;
|
|
case "select":
|
|
_13.f_size=parseInt(_10.size);
|
|
_13.f_multiple=_10.getAttribute("multiple");
|
|
_13.f_disabled=_10.getAttribute("disabled");
|
|
_13.f_tabindex=_10.getAttribute("tabindex");
|
|
var _1c=new Array();
|
|
for(var i=0;i<=_10.options.length-1;i++){
|
|
_1c[i]=new optionValues(_10.options[i].text,_10.options[i].value);
|
|
}
|
|
_13.f_options=_1c;
|
|
break;
|
|
case "text":
|
|
case "password":
|
|
_13.f_value=_10.value;
|
|
_13.f_size=_10.size;
|
|
_13.f_maxLength=_10.maxLength;
|
|
_13.f_readOnly=_10.getAttribute("readOnly");
|
|
_13.f_disabled=_10.getAttribute("disabled");
|
|
_13.f_tabindex=_10.getAttribute("tabindex");
|
|
_13.f_accesskey=_10.getAttribute("accesskey");
|
|
break;
|
|
case "hidden":
|
|
_13.f_value=_10.value;
|
|
break;
|
|
case "submit":
|
|
case "reset":
|
|
_13.f_value=_10.value;
|
|
_13.f_disabled=_10.getAttribute("disabled");
|
|
_13.f_tabindex=_10.getAttribute("tabindex");
|
|
_13.f_accesskey=_10.getAttribute("accesskey");
|
|
break;
|
|
case "checkbox":
|
|
case "radio":
|
|
_13.f_value=_10.value;
|
|
_13.f_checked=_10.checked;
|
|
_13.f_disabled=_10.getAttribute("disabled");
|
|
_13.f_tabindex=_10.getAttribute("tabindex");
|
|
_13.f_accesskey=_10.getAttribute("accesskey");
|
|
break;
|
|
case "button":
|
|
_13.f_value=_10.value;
|
|
_13.f_onclick=_10.getAttribute("onclick");
|
|
_13.f_disabled=_10.getAttribute("disabled");
|
|
_13.f_tabindex=_10.getAttribute("tabindex");
|
|
_13.f_accesskey=_10.getAttribute("accesskey");
|
|
break;
|
|
case "image":
|
|
_13.f_value=_10.value;
|
|
_13.f_src=_10.src;
|
|
_13.f_disabled=_10.getAttribute("disabled");
|
|
_13.f_tabindex=_10.getAttribute("tabindex");
|
|
_13.f_accesskey=_10.getAttribute("accesskey");
|
|
break;
|
|
case "file":
|
|
_13.f_disabled=_10.getAttribute("disabled");
|
|
_13.f_tabindex=_10.getAttribute("tabindex");
|
|
_13.f_accesskey=_10.getAttribute("accesskey");
|
|
break;
|
|
case "label":
|
|
_13.f_text=_10.innerHTML;
|
|
_13.f_for=_10.getAttribute("for");
|
|
_13.f_accesskey=_10.getAttribute("accesskey");
|
|
break;
|
|
case "fieldset":
|
|
if(_10.firstChild.tagName.toLowerCase()=="legend"){
|
|
_13.f_text=_10.firstChild.innerHTML;
|
|
}else{
|
|
_13.f_text="";
|
|
}
|
|
break;
|
|
}
|
|
}else{
|
|
_13.f_name="";
|
|
switch(_f){
|
|
case "textarea":
|
|
case "select":
|
|
case "label":
|
|
case "fieldset":
|
|
_1a=_f;
|
|
break;
|
|
default:
|
|
_1a="input";
|
|
_13.f_type=_f;
|
|
break;
|
|
}
|
|
_13.f_options="";
|
|
_13.f_cols="20";
|
|
_13.f_rows="4";
|
|
_13.f_multiple="false";
|
|
_13.f_value="";
|
|
_13.f_size="";
|
|
_13.f_maxLength="";
|
|
_13.f_checked="";
|
|
_13.f_src="";
|
|
_13.f_onclick="";
|
|
_13.f_wrap="";
|
|
_13.f_readOnly="false";
|
|
_13.f_disabled="false";
|
|
_13.f_tabindex="";
|
|
_13.f_accesskey="";
|
|
_13.f_for="";
|
|
_13.f_text="";
|
|
_13.f_legend="";
|
|
}
|
|
_e._popupDialog("plugin://Forms/"+_1a+".html",function(_1e){
|
|
if(_1e){
|
|
if(_1e["f_cols"]){
|
|
if(isNaN(parseInt(_1e["f_cols"],10))||parseInt(_1e["f_cols"],10)<=0){
|
|
_1e["f_cols"]="";
|
|
}
|
|
}
|
|
if(_1e["f_rows"]){
|
|
if(isNaN(parseInt(_1e["f_rows"],10))||parseInt(_1e["f_rows"],10)<=0){
|
|
_1e["f_rows"]="";
|
|
}
|
|
}
|
|
if(_1e["f_size"]){
|
|
if(isNaN(parseInt(_1e["f_size"],10))||parseInt(_1e["f_size"],10)<=0){
|
|
_1e["f_size"]="";
|
|
}
|
|
}
|
|
if(_1e["f_maxlength"]){
|
|
if(isNaN(parseInt(_1e["f_maxLength"],10))||parseInt(_1e["f_maxLength"],10)<=0){
|
|
_1e["f_maxLength"]="";
|
|
}
|
|
}
|
|
if(_10){
|
|
for(field in _1e){
|
|
if((field=="f_text")||(field=="f_options")||(field=="f_onclick")||(field=="f_checked")){
|
|
continue;
|
|
}
|
|
if(_1e[field]!=""){
|
|
_10.setAttribute(field.substring(2,20),_1e[field]);
|
|
}else{
|
|
_10.removeAttribute(field.substring(2,20));
|
|
}
|
|
}
|
|
if(_14=="textarea"){
|
|
_10.innerHTML=_1e["f_text"];
|
|
}else{
|
|
if(_14=="select"){
|
|
_10.options.length=0;
|
|
var _1f=_1e["f_options"];
|
|
for(i=0;i<=_1f.length-1;i++){
|
|
_10.options[i]=new Option(_1f[i].text,_1f[i].value);
|
|
}
|
|
}else{
|
|
if(_14=="label"){
|
|
_10.innerHTML=_1e["f_text"];
|
|
}else{
|
|
if(_14=="fieldset"){
|
|
if(_13.f_text!=""){
|
|
if(_10.firstChild.tagName.toLowerCase()=="legend"){
|
|
_10.firstChild.innerHTML=_1e["f_text"];
|
|
}
|
|
}else{
|
|
}
|
|
}else{
|
|
if((_14=="checkbox")||(_14=="radio")){
|
|
if(_1e["f_checked"]!=""){
|
|
_10.checked=true;
|
|
}else{
|
|
_10.checked=false;
|
|
}
|
|
}else{
|
|
if(_1e["f_onclick"]){
|
|
_10.onclick="";
|
|
if(_1e["f_onclick"]!=""){
|
|
_10.onclick=_1e["f_onclick"];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
var _20="";
|
|
for(field in _1e){
|
|
if(!_1e[field]){
|
|
continue;
|
|
}
|
|
if((_1e[field]=="")||(field=="f_text")||(field=="f_options")){
|
|
continue;
|
|
}
|
|
_20+=" "+field.substring(2,20)+"=\""+_1e[field]+"\"";
|
|
}
|
|
if(_14=="textarea"){
|
|
_20="<textarea"+_20+">"+_1e["f_text"]+"</textarea>";
|
|
}else{
|
|
if(_14=="select"){
|
|
_20="<select"+_20+">";
|
|
var _1f=_1e["f_options"];
|
|
for(i=0;i<=_1f.length-1;i++){
|
|
_20+="<option value=\""+_1f[i].value+"\">"+_1f[i].text+"</option>";
|
|
}
|
|
_20+="</select>";
|
|
}else{
|
|
if(_14=="label"){
|
|
_20="<label"+_20+">"+_1e["f_text"]+"</label>";
|
|
}else{
|
|
if(_14=="fieldset"){
|
|
_20="<fieldset"+_20+">";
|
|
if(_1e["f_legend"]!=""){
|
|
_20+="<legend>"+_1e["f_text"]+"</legend>";
|
|
}
|
|
_20+="</fieldset>";
|
|
}else{
|
|
_20="<input type=\""+_14+"\""+_20+">";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
_e.insertHTML(_20);
|
|
}
|
|
}
|
|
},_13);
|
|
}
|
|
};
|
|
|