⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cform.js

📁 著名免费网上商店系统
💻 JS
📖 第 1 页 / 共 2 页
字号:
var cform = {
	runtime:{id_seq:0,mce:[]},
	create:function(finfo,base,header){
		cform.runtime.mce = [];
		var tmp = [];
		var i=0;
		for(k in finfo.elements){
				cform.runtime.currentFid = ++cform.runtime.id_seq;
				o = Builder.node('tbody',{id:'form_'+cform.runtime.currentFid});
				i = finfo.elements[k].items;
				for(name in i){
					if (i[name]['type'] != 'hidden') {
						cform.insEle(i[name],name,o);
					} else {
						tmp.push(cform.ele(i[name],name,cform.runtime.id_seq));
					}
				}
				tmp.each(
					function(h) {
						o.appendChild(h);
					}
				);
				delete(tmp);
				base.appendChild(
					Builder.node('table',{className:'section '+(1%2==0?'row_1':'row_2'),width:'100%',cellspacing:0,cellpadding:5,style:finfo.elements[k].hidden?'visibility: hidden;position: absolute;z-index:-5;top:0':'visibility: visible;position: static;z-index:-5;top:0'},[
						isNaN(Number(k))?Builder.node('caption',{},[k]):'',
						o
					])
				);
				i++;
		}
		var actionBar = Builder.node('div',{className:'actionBar'});
		if(!finfo.buttons){
			var btn = Builder.node('b',{className:'button',onclick:'cform.submit(this)'},[
						Builder.node('label',{},__('save'))
						]);
			actionBar.appendChild(btn);
//      header.appendChild(btn.cloneNode(true));
		}else{
			finfo.buttons.each(
					function(b){
						var btn = Builder.node('b',{className:'button',onclick:(b.onclick?('if(function(){'+b.onclick+'}())cform.submit(this)'):'cform.submit(this)')},[
							Builder.node('label',{},b.label)
							])
						if(b.value) btn.appendChild(Builder.node('input',{type:'hidden',name:'_submit',value:b.value}));
						actionBar.appendChild(btn);
//            header.appendChild(btn.cloneNode(true));
					}
				);
		}
		base.appendChild(actionBar);

		cform.runtime.mce.each(
				function(e){
					X.mce.init(e);
				}
			);
	},
	submit:function(o){
		obj = Builder.node('div',{className:'disableImg',style:'z-index:999999999; background:#fff; position:absolute;filter:alpha(opacity=50);opacity:0.5;'});
		document.body.appendChild(obj);
		Position.clone(o, obj, {setWidth:false,setHeight:false,setWidth:100,setHeight:100});
//		if (!stopSubmit) {
			for(o=o.parentNode;o&&o.tagName!='FORM';o=o.parentNode){;}
			X.form.submit(o);
			stopSubmit = 1;
//		}
		setTimeout('remove()',2500);
		remove = function () {
			document.body.removeChild(obj);
//			stopSubmit = 0;
		}
	},
	insEle:function(e,name,field){
		id=1;

		var label = Builder.node('label',{'for':++cform.runtime.id_seq},[e.label,(e.required?Builder.node('span',{className:'required-dot'},'*'):'  ')]);
		if(e.type) label.appendChild(Builder.node('input',{type:'hidden','name':'_F['+name+'][type]',value:e.type}));
		if(e.label) label.appendChild(Builder.node('input',{type:'hidden','name':'_F['+name+'][label]',value:e.label}));
		if(e.required && e.type!='file') label.appendChild(Builder.node('input',{type:'hidden','name':'_F['+name+'][required]',value:e.required}));
		section = Builder.node('tr',{fname:name},[
			Builder.node('th',{className:'label',width:'20%',valign:'top',align:'right'},[label]),
			Builder.node('td',{width:'790%',className:'value'},[cform.ele(e,name,cform.runtime.id_seq)]),
			Builder.node('td',{width:'1%',valign:'top',className:'helpMsg'},[
				e.helpMsg?Builder.node('span',{style:"display:none;"},e.helpMsg):''
			])
		]);
		if(e.hidden){
			section.style.visibility='hidden';
			section.style.position='absolute';
			section.style.zIndex=-5;
			section.style.top=0;
		} else {
			section.style.visibility='visible';
			section.style.position='static';
			section.style.zIndex=-5;
			section.style.top=0;
		}
		field.appendChild(section);
	},
	appendAttrs:function(obj,opts){
			for(i in opts){
				if(['onclick','onchange'].include(i)){
					eval('Event.observe(obj,"'+i.substr(2)+'",function(e){var o=Event.element(e);'+opts[i]+'},false)');
				}else{
					if(!['type','label','options','adv','value','style','required','link'].include(i) && typeof(opts[i])=='string')
						obj.setAttribute(i,opts[i]);
					else if(i=='style'){
						for(s in opts[i]){
							obj.style[s]=opts[i][s];
						}
					}
				}
			}
			if(opts.required && opts.type!='checkbox'){
				Element.addClassName(obj,'required');
			}
			if(opts.type && !['checkbox','label'].include(opts.type)){
				Element.addClassName(obj,'validate-'+opts.type);
			}
			return obj;
	},
	ele:function(e,c_name,c_id){
		switch(e.type){
			case 'bool':
				if(e.value == 1){
					var y = cform.appendAttrs(Builder.node('input',{type:'radio',name:c_name,value:'1',checked:'checked'},[]),e);
					var n = cform.appendAttrs(Builder.node('input',{type:'radio',name:c_name,value:'0'},[]),e);
				} else {
					var y = cform.appendAttrs(Builder.node('input',{type:'radio',name:c_name,value:'1'},[]),e);
					var n = cform.appendAttrs(Builder.node('input',{type:'radio',name:c_name,value:'0',checked:'checked'},[]),e);
				}
				return Builder.node('span',{},[ __('yes'), y , __('no'), n ]);
				break;

			case 'checkbox':
				var sel=Builder.node('span',{},[]), key, opt=e.options,s=0,i=0;
				if(opt){
					if(opt.each){
						opt.each(
							function(o,i){
								sel.appendChild(
											Builder.node('label',{'for':'_ele_'+c_id+'_'+i,className:'check_label'},[
												(e.value && e.value.include && e.value.include(i))?
													cform.appendAttrs(Builder.node('input',{id:'_ele_'+c_id+'_'+i,name:c_name+'[]',type:'checkbox',value:i,checked:'checked'}),e)
													:
													cform.appendAttrs(Builder.node('input',{id:'_ele_'+c_id+'_'+i,name:c_name+'[]',type:'checkbox',value:i}),e)
													, o ])
								);
							}
						)
					}else{
						for(key in opt){
							sel.appendChild(
								Builder.node('label',{'for':'_ele_'+c_id+'_'+i,className:'check_label'},[
									(e.value && e.value.include && e.value.include(key))?
										cform.appendAttrs(Builder.node('input',{id:'_ele_'+c_id+'_'+i,name:c_name+'[]',type:'checkbox',value:key,checked:'checked'}),e)
										:
										cform.appendAttrs(Builder.node('input',{id:'_ele_'+c_id+'_'+i,name:c_name+'[]',type:'checkbox',value:key}),e)
										, opt[key] ])
							);
							i++;
						}
					}
				}
				return sel;

			case 'radio':
				var sel=Builder.node('span',{},[]), key, opt=e.options,s=0,i=0;
				if(opt){
					if(opt.each){
						opt.each(
							function(o,i){
								sel.appendChild(
											Builder.node('label',{'for':'_ele_'+c_id+'_'+i,className:'check_label'},[
												(i == e.value)?
													cform.appendAttrs(Builder.node('input',{id:'_ele_'+c_id+'_'+i,name:c_name,type:'radio',value:i,checked:'checked'}),e)
													:
													cform.appendAttrs(Builder.node('input',{id:'_ele_'+c_id+'_'+i,name:c_name,type:'radio',value:i}),e)
													, o ])
								);
							}
						)
					}else{
						for(key in opt){
							sel.appendChild(
								Builder.node('label',{'for':'_ele_'+c_id+'_'+i,className:'check_label'},[
									(key == e.value)?
										cform.appendAttrs(Builder.node('input',{id:'_ele_'+c_id+'_'+i,name:c_name,type:'radio',value:key,checked:'checked'}),e)
										:
										cform.appendAttrs(Builder.node('input',{id:'_ele_'+c_id+'_'+i,name:c_name,type:'radio',value:key}),e)
										, opt[key] ])
							);
							i++;
						}
					}
				}
				return sel;

			case 'select':
				var sel=Builder.node('select',{name:c_name},[]), key, opt=e.options,s=0;
				if(opt){
					if(opt.toArray){
						s=e.value;
						for(i=0;i<opt.length;i++){
							sel.appendChild(Builder.node('option',{value:i},[opt[i]]));
						}
					}else{
						var i=0;
						for(key in opt){
							sel.appendChild(Builder.node('option',{value:key},[opt[key]]));
							if(key == e.value){
								s=i;
							}
							i++;
						}
					}
					if(sel.childNodes.length>s)
						sel.selectedIndex=s;
				}
				return cform.appendAttrs(sel,e);
			case 'file':
				return Builder.node('span',{},[
					cform.appendAttrs(Builder.node('input',{className:'file',type:'file',name:c_name},[]),e)
				]);
			case 'hidden':
				return cform.appendAttrs(Builder.node('input',{type:'hidden',name:c_name,value:(e.value?e.value:'')},[]),e) ;
				
			case 'check':
				if(e.value == 1){
					return Builder.node('input',{type:'checkbox',name:c_name,value:1,checked:'checked'},[]) ;
				}else{
					return Builder.node('input',{type:'checkbox',name:c_name,value:1},[]) ;
				}
				
			case 'label':
				var link = e.link, target = e.target, value = e.value, style = e.style, str = '';
				if(typeof(link) == "undefined"){
					a = Builder.node('span',{},[value?value:'']);
				}else{
					if(typeof(link)=='object'){
						args = link.args;
						args.each(
							function(item){
								str += '\''+item+'\',';
							}
						);
						str = str.substr(0, str.length-1);
						a = Builder.node('span',{className:'link',onclick:'X.go({ctl:\''+link.ctl+'\',act:\''+link.act+'\',p:['+str+']},{target:\''+(target?target:'')+'\'})'},[value]);
					}else{
						a = Builder.node('a',{href:link,target:(target?target:'')},[value]);
					}
				}
				return Builder.node('span',{},[cform.appendAttrs(a,e)]);
			case 'color':
				ele = cform.appendAttrs(Builder.node('input',{id:'colorinput-'+c_id,name:c_name,value:(e.value?e.value:'')}),e);
			    ele.onclick=function(){
					if(!$("colorpicker201")){
					new Insertion.Bottom(document.body, '<div id="colorpicker201" class="colorpicker201"></div>');
					//new Insertion.Top($("colorpicker201"),'<iframe src="javascript:false" scrolling="no" frameborder="0" style="z-index:-1;position:absolute; top:5px; left:2px;width:300;height:400px;"></iframe>');
					}
				  showColorGrid2(this.id,this.id);
				};
				return ele;
			case 'date':
				return cform.appendAttrs(Builder.node('input',{id:c_id,name:c_name,onclick:"new Date().datePicker('"+c_id+"')",value:(e.value?e.value:'')}),e);

			case 'time':
				return Builder.node('span',{},[
						cform.appendAttrs(Builder.node('input',{id:c_id,name:c_name+'[date]',onfocus:"new Date().datePicker('"+c_id+"')",value:(e.date || '')}),e),
						Builder.node('input',{style:'margin-left:20px',name:c_name+'[h]',value:(e.time.h || ''),size:2,maxlength:2,className:''}),':',
						Builder.node('input',{value:(e.time.m || ''),name:c_name+'[m]',size:2,maxlength:2})
						]);

			case 'password':
				return cform.appendAttrs(Builder.node('input',{'type':'password',value:(e.value?e.value:''),name:c_name}),e) ;

			case 'passwordAgain':
				ele = Builder.node('span',{},[
					Builder.node('input',{id:c_id,className:'validate-passwordag','type':'password',value:(e.value?e.value:''),name:c_name+'[0]'}),
					Builder.node('span',{},' - '),
					cform.appendAttrs(Builder.node('input',{'for':c_id,className:'validate-passwordag','type':'password',value:(e.value?e.value:''),name:c_name+'[1]'}),e)
				]);
				return ele;

			case 'rtf':
				e=Builder.node('textarea',{className:'_rtf',style:'height:180px;width:100%',name:c_name,id:'e_'+c_id},[(e.value?e.value:'')]);
				cform.runtime.mce.push(e);
				return e;

			case 'html':
				e = Builder.node('textarea',{className:'_html',style:'height:100px;width:100%',name:c_name,id:'e_'+c_id},[(e.value?e.value:'')]);
				cform.runtime.mce.push(e);
				return e;

			case 'text':
				return cform.appendAttrs(Builder.node('textarea',{style:'height:150px;width:100%',name:c_name,id:'e_'+c_id},[(e.value?e.value:'')]),e);

			case 'shortText':
				return cform.appendAttrs(Builder.node('textarea',{style:'height:150px;width:300px',name:c_name,id:'e_'+c_id},[(e.value?e.value:'')]),e);

			case 'list':
//				if(e.view){
//					var body = Builder.node('ul',{cname:c_name,style:'height:200px;overflow-y:scroll'});
//					body.innerHTML = e.view;
//					base = Builder.node('div',{className:'',style:'border:1px solid #999;'},[
//								body
//						]);
//					return base;
//				}else{
					return Builder.node('div',{className:'clist',list:e.list});
//				}
			case 'view':
				box = Builder.node('span',{name:c_name});
				box.innerHTML = e.view;
				return box;
			case 'goods':
				if(e.multiSelect){
					base = Builder.node('div',{className:'selectboxbar'},[
							Builder.node('div',{className:'title'},[
								Builder.node('input',{type:'button',className:'buttoninput',value:__('Add'),onclick:"Dialog.goods("+(e.jsdisplay?e.jsdisplay:'cform.object.goods.addItem')+",{obj:this.parentNode.nextSibling,type:'checkbox',name:'goods'})"}),
								Builder.node('input',{type:'button',className:'buttoninput',onclick:"this.parentNode.nextSibling.innerHTML=''",value:__('Clear')})
							]),
							content=Builder.node('ul',{cname:c_name,style:'height:200px;overflow-y:scroll'}),
						]);
				}else{
					base =
						Builder.node('div',{className:''},[
							content=Builder.node('ul',{cname:c_name,style:'float:left;'}),
							Builder.node('div',{style:'float:right;text-align:left;'},[
								Builder.node('input',{type:'button',className:'buttoninput',className:'button',value:__('Add'),onclick:"Dialog.goods(cform.object.goods.addItem,{obj:this.parentNode.previousSibling,type:'radio',name:'goods'})"}),
							]),

						]);
				}
				if(e.value){
					cform.object.setValue(content,e.value,c_name,e.multiSelect);
				}
				return base;			
				
			case 'goodsGrp':
				if(e.multiSelect){
					if(e.view){
						var body = Builder.node('ul',{cname:c_name});
						body.innerHTML = e.view;
						base = Builder.node('div',{className:'selectboxbar'},[
								Builder.node('div',{className:'title'},[
									Builder.node('input',{type:'button',className:'buttoninput',value:__('Add'),onclick:"Dialog.goodsGrp("+(e.jsdisplay?e.jsdisplay:'cform.object.goodsGrp.addItem')+",{obj:this.parentNode.nextSibling,type:'checkbox',name:'goodsGrp',name:'goodsGrp'})"}),
									Builder.node('input',{type:'button',className:'buttoninput',onclick:"this.parentNode.nextSibling.innerHTML=''",value:__('Clear')})
								]),
								body
							]);
					}else{
						base = Builder.node('div',{className:'selectboxbar'},[
								Builder.node('div',{className:'title'},[
									Builder.node('input',{type:'button',className:'buttoninput',value:__('Add'),onclick:"Dialog.goodsGrp("+(e.jsdisplay?e.jsdisplay:'cform.object.goodsGrp.addItem')+",{obj:this.parentNode.nextSibling,type:'checkbox',name:'goodsGrp',name:'goodsGrp'})"}),
									Builder.node('input',{type:'button',className:'buttoninput',onclick:"this.parentNode.nextSibling.innerHTML=''",value:__('Clear')})
								]),
								content=Builder.node('ul',{cname:c_name,style:'height:200px;overflow-y:scroll'})

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -