forked from daffl/jquery.dform
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.dform-0.1.4.min.js
15 lines (15 loc) · 6.98 KB
/
jquery.dform-0.1.4.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(function(a){function h(b,d,e){if(typeof d=="string"){a.isArray(b[d])||(b[d]=[]);b[d].push(e)}else typeof d=="object"&&a.each(d,function(f,i){h(b,f,i)})}var g={},c={};a.fn.extend({runSubscription:function(b,d,e){a.dform.hasSubscription(b)&&this.each(function(){var f=this;a.each(g[b],function(i,j){j.call(a(f),d,e)})});return this},runAll:function(b){var d=b.type,e=this;this.runSubscription("[pre]",b,d);a.each(b,function(f,i){a(e).runSubscription(f,i,d)});this.runSubscription("[post]",b,d);return this},
formElement:function(b,d){if(d&&a.dform.converters&&a.dform.converters[d])b=a.dform.converters[d](b);d=a.dform.createElement(b);this.append(a(d));a(d).runAll(b);return this},buildForm:function(b,d,e){if(typeof b=="string"){var f=a(this);a.get(b,d,function(i,j,k){a(f).buildForm(i);a.isFunction(e)&&e(i,j,k)},a.dform.options.ajaxFormat)}else{b.type||(b=a.extend({type:"form"},b));if(this.is(b.type)){this.dformAttr(b);this.runAll(b)}else this.formElement(b,d)}return this},dformAttr:function(b,d){var e=
a.keyset(g);a.isArray(d)&&a.merge(e,d);this.attr(a.withoutKeys(b,e));return this}});a.extend(a,{keyset:function(b){var d=[];a.each(b,function(e){d.push(e)});return d},withKeys:function(b,d){var e={};a.each(d,function(f,i){if(b[i])e[i]=b[i]});return e},withoutKeys:function(b,d){var e={};a.each(b,function(f,i){if(a.inArray(f,d)==-1)e[f]=i});return e},getValueAt:function(b,d){d=a.isArray(d)?d:d.split(".");b=b;for(var e=0;e<d.length;e++){var f=d[e];if(!b[f])return false;b=b[f]}return b}});a.dform={options:{prefix:"ui-dform-",
ajaxFormat:"json"},defaultType:function(b){return a("<"+b.type+">").dformAttr(b)},removeType:function(b){delete c[b]},typeNames:function(){return a.keyset(c)},addType:function(b,d){h(c,b,d)},addTypeIf:function(b,d,e){b&&a.dform.addType(d,e)},subscriberNames:function(){return a.keyset(g)},subscribe:function(b,d){h(g,b,d)},subscribeIf:function(b,d,e){b&&a.dform.subscribe(d,e)},removeSubscription:function(b){delete g[b]},hasSubscription:function(b){return g[b]?true:false},createElement:function(b){var d=
b.type;if(!d)throw"No element type given! Must always exist.";var e=null;if(c[d]){var f=a.withoutKeys(b,["type"]);a.each(c[d],function(i,j){e=j.call(e,f)})}else e=a.dform.defaultType(b);return a(e)}}})(jQuery);
(function(a){function h(g,c){return function(b){return a(g).dformAttr(b,c)}}a.dform.addType({container:h("<div>"),form:h("<form>"),text:h('<input type="text" />'),password:h('<input type="password" />'),submit:h('<input type="submit" />'),reset:h('<input type="reset" />'),hidden:h('<input type="hidden" />'),radio:h('<input type="radio" />'),checkbox:h('<input type="checkbox" />'),checkboxes:h("<div>",["name"]),radiobuttons:h("<div>",["name"]),file:h('<input type="file" />'),number:h('<input type="number" />'),
url:h('<input type="url" />'),tel:h('<input type="tel" />'),email:h('<input type="email" />')});a.dform.subscribe({"class":function(g){this.addClass(g)},html:function(g){this.html(g)},elements:function(g){var c=a(this);a.each(g,function(b,d){if(typeof b=="string")d.name=name;a(c).formElement(d)})},value:function(g){this.val(g)},css:function(g){this.css(g)},options:function(g,c){var b=a(this);if(c=="select"||c=="optgroup")a.each(g,function(d,e){var f={type:"option"};if(typeof e=="string"){f.value=
d;f.html=e}if(typeof e=="object")f=a.extend(f,e);a(b).formElement(f)});else if(c=="checkboxes"||c=="radiobuttons"){b=this;a.each(g,function(d,e){var f=c=="radiobuttons"?{type:"radio"}:{type:"checkbox"};if(typeof e=="string")f.caption=e;else a.extend(f,e);f.value=d;a(b).formElement(f)})}},caption:function(g,c){var b={};if(typeof g=="string")b.html=g;else a.extend(b,g);if(c=="fieldset"){b.type="legend";c=a.dform.createElement(b);this.prepend(c);a(c).runAll(b)}else{b.type="label";if(this.attr("id"))b["for"]=
this.attr("id");g=a.dform.createElement(b);c=="checkbox"||c=="radio"?this.parent().append(a(g)):a(g).insertBefore(a(this));a(g).runAll(b)}},type:function(g,c){a.dform.options.prefix&&this.addClass(a.dform.options.prefix+c)},url:function(g){this.buildForm(g)},"[post]":function(g,c){if(c=="checkboxes"||c=="radiobuttons")this.children("[type="+(c=="checkboxes"?"checkbox":"radio")+"]").each(function(){a(this).attr("name",g.name)})}})})(jQuery);
(function(a){function h(c,b){c=a.keyset(a.ui[c].prototype.options);return a.withKeys(b,c)}function g(c){if(a.isFunction(c.split)){c=c.split(".");if(c.length>1){var b=c.shift();if(b=jQuery.global.localize(b))return a.getValueAt(b,c)}}return false}a.dform.addTypeIf(a.isFunction(a.fn.progressbar),"progressbar",function(c){return a("<div>").dformAttr(c).progressbar(h("progressbar",c))});a.dform.addTypeIf(a.isFunction(a.fn.slider),"slider",function(c){return a("<div>").dformAttr(c).slider(h("slider",c))});
a.dform.addTypeIf(a.isFunction(a.fn.accordion),"accordion",function(c){return a("<div>").dformAttr(c)});a.dform.addTypeIf(a.isFunction(a.fn.tabs),"tabs",function(c){return a("<div>").dformAttr(c)});a.dform.subscribeIf(a.isFunction(a.fn.accordion),"entries",function(c,b){if(b=="accordion"){var d=this;a.each(c,function(e,f){e=a.extend({type:"div"},f);a(d).formElement(e);if(f.caption){f=a(d).children("div:last").prev();f.replaceWith('<h3><a href="#">'+f.html()+"</a></h3>")}})}});a.dform.subscribeIf(a.isFunction(a.fn.tabs),
"entries",function(c,b){if(b=="tabs"){var d=this;this.append("<ul>");var e=a(d).children("ul:first");a.each(c,function(f,i){f=i.id?i.id:f;a.extend(i,{type:"container",id:f});a(d).formElement(i);i=a(d).children("div:last").prev();a(i).wrapInner(a("<a>").attr("href","#"+f));a(e).append(a("<li>").wrapInner(i))})}});a.dform.subscribeIf(a.isFunction(a.fn.dialog),"dialog",function(c,b){if(b=="form"||b=="fieldset")this.dialog(c)});a.dform.subscribeIf(a.isFunction(a.fn.resizable),"resizable",function(c){this.resizable(c)});
a.dform.subscribeIf(a.isFunction(a.fn.datepicker),"datepicker",function(c,b){b=="text"&&this.datepicker(c)});a.dform.subscribeIf(a.isFunction(a.fn.autocomplete),"autocomplete",function(c,b){b=="text"&&this.autocomplete(c)});a.dform.subscribe("[post]",function(c,b){if(this.parents("form").hasClass("ui-widget")){if((b=="button"||b=="submit")&&a.isFunction(a.fn.button))this.button();a.inArray(b,["text","textarea","password","fieldset"])!=-1&&this.addClass("ui-widget-content ui-corner-all")}if(b=="accordion"||
b=="tabs")this[b](h(b,c))});a.dform.subscribeIf(a.isFunction(a.fn.validate),{"[pre]":function(c,b){if(b=="form"){b={};if(this.hasClass("ui-widget"))b={highlight:function(d){a(d).addClass("ui-state-highlight")},unhighlight:function(d){a(d).removeClass("ui-state-highlight")}};typeof c.validate=="object"&&a.extend(b,c.validate);this.validate(b)}},validate:function(c,b){b!="form"&&this.rules("add",c)}});a.dform.subscribeIf(a.isFunction(a.fn.ajaxForm),"ajax",function(c,b){b=="form"&&this.ajaxForm(c)});
a.dform.subscribeIf(a.global&&a.isFunction(a.global.localize),"html",function(c){(c=g(c))&&a(this).html(c)});a.dform.subscribeIf(a.global,"options",function(c,b){if(b=="select"&&typeof c=="string"){a(this).html("");(c=g(c))&&a(this).runSubscription("options",c,b)}});a.dform.subscribeIf(a.isFunction(a.fn.wysiwyg),"wysiwyg",function(){})})(jQuery);