diff --git a/plugins/fabrik_element/databasejoin/databasejoin-min.js b/plugins/fabrik_element/databasejoin/databasejoin-min.js index 9c9cb796de5..b682550dde6 100644 --- a/plugins/fabrik_element/databasejoin/databasejoin-min.js +++ b/plugins/fabrik_element/databasejoin/databasejoin-min.js @@ -1,3 +1,3 @@ /*! Fabrik */ -define(["jquery","fab/element","fab/encoder","fab/fabrik","fab/autocomplete-bootstrap"],function(jQuery,FbElement,Encoder,Fabrik,AutoComplete){return window.FbDatabasejoin=new Class({Extends:FbElement,options:{id:0,formid:0,key:"",label:"",windowwidth:360,displayType:"dropdown",popupform:0,listid:0,listRef:"",joinId:0,isJoin:!1,canRepeat:!1,fullName:"",show_please_select:!1,allowadd:!1,autoCompleteOpts:null,observe:[]},initialize:function(e,t){this.activePopUp=!1,this.activeSelect=!1,this.setPlugin("databasejoin"),this.parent(e,t),this.init()},watchAdd:function(){var e,t;(e=this.getContainer())&&((t=e.getElement(".toggle-addoption")).removeEvent("click",this.watchAddEvent),this.watchAddEvent=this.start.bind(this),t.addEvent("click",this.watchAddEvent))},start:function(e,t){if(this.options.editable){var i,n=this.getContainer();t=!!t;var o=function(){this.close()};if(i=!1,e&&(e.stop(),o=function(){this.fitToContent(!1)},i=!0,this.activePopUp=!0),(!!0!==t||0!==this.options.popupform&&!1!==this.options.allowadd)&&null!==this.element&&null!==n){var s=n.getElement(".toggle-addoption"),a="null"===typeOf(s)?e.target.get("href"):s.get("href");a+="&format=partial";var l=this.element.id+"-popupwin";this.windowopts={id:l,data:this.form.getFormElementData(),title:Joomla.JText._("PLG_ELEMENT_DBJOIN_ADD"),contentType:"xhr",loadMethod:"xhr",contentURL:a,height:320,minimizable:!1,collapsible:!0,visible:i,modalId:this.options.modalId,onContentLoaded:o,destroy:!0};var r=this.options.windowwidth;""!==r&&(this.windowopts.width=r,this.windowopts.onContentLoaded=o),this.win=Fabrik.getWindow(this.windowopts)}}},getBlurEvent:function(){return"auto-complete"===this.options.displayType?"change":this.parent()},removeOption:function(e,t){var i=document.id(this.element.id);switch(this.options.displayType){case"dropdown":case"multilist":for(var n=i.options,o=0;o=this.options.optsPerRow&&(n.inject(this.element,"bottom"),h=jQuery(this.element).children("div[data-role=fabrik-rowopts]").last()[0]),e.inject(h,"bottom"),e.getElement("input").checked=r},hasSubElements:function(){var e=this.options.displayType;return"checkbox"===e||"radio"===e||this.parent()},getCheckboxTmplNode:function(){if(Fabrik.bootstrapped&&(this.chxTmplNode=jQuery(Fabrik.jLayouts["fabrik-element-"+this.getPlugin()+"-form-checkbox_"+this.strElement])[0],!this.chxTmplNode&&"checkbox"===this.options.displayType)){var e=this.element.getElements("> .fabrik_subelement");0===e.length?(this.chxTmplNode=this.element.getElement(".chxTmplNode").getChildren()[0].clone(),this.element.getElement(".chxTmplNode").destroy()):this.chxTmplNode=e.getLast().clone()}return this.chxTmplNode},getCheckboxRowOptsNode:function(){if(Fabrik.bootstrapped)this.chxTmplNode=jQuery(Fabrik.jLayouts["fabrik-element-"+this.getPlugin()+"-form-rowopts"])[0];else if(!this.chxTmplNode&&"checkbox"===this.options.displayType){var e=this.element.getElements("> .fabrik_subelement");0===e.length?(this.chxTmplNode=this.element.getElement(".chxTmplNode").getChildren()[0].clone(),this.element.getElement(".chxTmplNode").destroy()):this.chxTmplNode=e.getLast().clone()}return this.chxTmplNode},updateFromServer:function(r){var e=this.form.getFormElementData(),d=this,t={option:"com_fabrik",format:"raw",task:"plugin.pluginAjax",plugin:"databasejoin",method:"ajax_getOptions",element_id:this.options.id,formid:this.options.formid,repeatCounter:this.options.repeatCounter};if(t=Object.append(e,t),"auto-complete"===this.options.displayType&&""===r)return this.addOption("","",!0),this.element.fireEvent("change",new Event.Mock(this.element,"change")),void this.element.fireEvent("blur",new Event.Mock(this.element,"blur"));r&&(t[this.strElement+"_raw"]=r,t[this.options.fullName+"_raw"]=r),Fabrik.loader.start(this.element.getParent(),Joomla.JText._("COM_FABRIK_LOADING")),new Request.JSON({url:"",method:"post",data:t,onSuccess:function(e){Fabrik.loader.stop(d.element.getParent());var t,i=!1,n=d.getOptionValues();if("auto-complete"!==d.options.displayType||""!==r||0!==n.length){var o=[];if(e.each(function(e){o.push(e.value),n.contains(e.value)||null===e.value||(t=d.options.value===e.value,d.addOption(e.value,e.text,t),i=!0)}),n.each(function(e){o.contains(e)||(t=d.getValue()===e,d.removeOption(e,t),i=!0)}),i&&(d.element.fireEvent("change",new Event.Mock(d.element,"change")),d.element.fireEvent("blur",new Event.Mock(d.element,"blur"))),d.options.showDesc){var s=d.getContainer().getElement(".dbjoin-description");jQuery(s).empty();var a=jQuery(Fabrik.jLayouts["fabrik-element-"+d.getPlugin()+"-form-description-div"])[0],l=0;e.each(function(e){var t=jQuery(a).clone();t.removeClass("description-0"),t.addClass("description-"+l++),d.options.value===e.value&&t.css("display",""),t.html(e.description),jQuery(s).append(t)})}d.activePopUp=!1,Fabrik.fireEvent("fabrik.dbjoin.update",[d,e])}}}).post()},getSubOptions:function(){var e;switch(this.options.displayType){case"dropdown":case"multilist":e=this.element.getElements("option");break;case"checkbox":e=this.element.getElements("[data-role=suboption] input[type=checkbox]");break;case"radio":default:e=this.element.getElements("[data-role=suboption] input[type=radio]")}return e},getSubOptsRow:function(){var e;switch(this.options.displayType){case"dropdown":case"multilist":default:break;case"checkbox":case"radio":e=this.element.getElements("[data-role=fabrik-rowopts]")}return e},getOptionValues:function(){var e=this.getSubOptions(),t=[];return e.each(function(e){t.push(e.get("value"))}),t.unique()},appendInfo:function(e){var t=e.rowid,o=this,i={formid:this.options.popupform,rowid:t};new Request.JSON({url:"index.php?option=com_fabrik&view=form&format=raw",data:i,onSuccess:function(e){var i=e.data[o.options.key],t=e.data[o.options.label];switch(o.options.displayType){case"dropdown":case"multilist":var n=o.element.getElements("option").filter(function(e,t){if(e.get("value")===i)return"dropdown"===o.options.displayType?o.element.selectedIndex=t:e.selected=!0,!0});0===n.length&&o.addOption(i,t);break;case"auto-complete":case"checkbox":o.addOption(i,t);break;case"radio":default:0===(n=o.element.getElements(".fabrik_subelement").filter(function(e,t){if(e.get("value")===i)return e.checked=!0})).length&&o.addOption(i,t)}"null"!==typeOf(o.element)&&(o.element.fireEvent("change",new Event.Mock(o.element,"change")),o.element.fireEvent("blur",new Event.Mock(o.element,"blur")))}}).send()},watchSelect:function(){var e,t,i=this;if(e=this.getContainer()){var n=e.getElement(".toggle-selectoption");"null"!==typeOf(n)&&(n.addEvent("click",function(e){i.selectRecord(e)}),Fabrik.addEvent("fabrik.list.row.selected",function(e){i.options.listid.toInt()===e.listid.toInt()&&i.activeSelect&&(i.update(e.rowid),t=i.element.id+"-popupwin-select",Fabrik.Windows[t]&&Fabrik.Windows[t].close(),i.element.fireEvent("change",new Event.Mock(i.element,"change")),i.element.fireEvent("blur",new Event.Mock(i.element,"blur")))}),this.unactiveFn=function(){i.activeSelect=!1},window.addEvent("fabrik.dbjoin.unactivate",this.unactiveFn),this.selectThenAdd()),this.selectThenAdd()}},selectThenAdd:function(){Fabrik.addEvent("fabrik.block.added",function(e,t){t==="list_"+this.options.listid+this.options.listRef&&e.form.addEvent("click:relay(.addbutton)",function(e,t){e.preventDefault();var i=this.selectRecordWindowId();Fabrik.Windows[i].close(),this.start(e,!0)}.bind(this))}.bind(this))},destroy:function(){window.removeEvent("fabrik.dbjoin.unactivate",this.unactiveFn)},selectRecord:function(e){window.fireEvent("fabrik.dbjoin.unactivate"),this.activeSelect=!0,e.stop();var t=this.selectRecordWindowId(),i=this.getContainer().getElement("a.toggle-selectoption").href;i+="&format=partial",i+="&triggerElement="+this.element.id,i+="&resetfilters=1",i+="&c="+this.options.listRef;this.windowopts={id:t,modalId:"db_join_select",title:Joomla.JText._("PLG_ELEMENT_DBJOIN_SELECT"),contentType:"xhr",loadMethod:"xhr",evalScripts:!0,contentURL:i,width:this.options.windowwidth,height:320,minimizable:!1,collapsible:!0,onContentLoaded:function(){this.fitToContent(!1)}},Fabrik.getWindow(this.windowopts)},selectRecordWindowId:function(){return this.element.id+"-popupwin-select"},numChecked:function(){return"checkbox"!==this.options.displayType?null:this._getSubElements().filter(function(e){return"0"!==e.value&&e.checked}).length},update:function(e){if(this.getElement(),"null"!==typeOf(this.element)){if(!this.options.editable){if(this.element.set("html",""),""===e)return;"string"===typeOf(e)&&(e=JSON.parse(e));var t=this.form.getFormData();return"object"===typeOf(t)&&(t=$H(t)),void e.each(function(e){"null"!==typeOf(t.get(e))?this.element.innerHTML+=t.get(e)+"
":this.element.innerHTML+=e+"
"}.bind(this))}this.setValue(e)}},setValue:function(e){var t=!1;if("null"!==typeOf(this.element.options))for(var i=0;i=this.options.optsPerRow&&(n.inject(this.element,"bottom"),h=jQuery(this.element).children("div[data-role=fabrik-rowopts]").last()[0]),e.inject(h,"bottom"),e.getElement("input").checked=r},hasSubElements:function(){var e=this.options.displayType;return"checkbox"===e||"radio"===e||this.parent()},getCheckboxTmplNode:function(){if(Fabrik.bootstrapped&&(this.chxTmplNode=jQuery(Fabrik.jLayouts["fabrik-element-"+this.getPlugin()+"-form-checkbox_"+this.strElement])[0],!this.chxTmplNode&&"checkbox"===this.options.displayType)){var e=this.element.getElements("> .fabrik_subelement");0===e.length?(this.chxTmplNode=this.element.getElement(".chxTmplNode").getChildren()[0].clone(),this.element.getElement(".chxTmplNode").destroy()):this.chxTmplNode=e.getLast().clone()}return this.chxTmplNode},getCheckboxRowOptsNode:function(){if(Fabrik.bootstrapped)this.chxTmplNode=jQuery(Fabrik.jLayouts["fabrik-element-"+this.getPlugin()+"-form-rowopts"])[0];else if(!this.chxTmplNode&&"checkbox"===this.options.displayType){var e=this.element.getElements("> .fabrik_subelement");0===e.length?(this.chxTmplNode=this.element.getElement(".chxTmplNode").getChildren()[0].clone(),this.element.getElement(".chxTmplNode").destroy()):this.chxTmplNode=e.getLast().clone()}return this.chxTmplNode},updateFromServer:function(r){var e=this.form.getFormElementData(),d=this,t={option:"com_fabrik",format:"raw",task:"plugin.pluginAjax",plugin:"databasejoin",method:"ajax_getOptions",element_id:this.options.id,formid:this.options.formid,repeatCounter:this.options.repeatCounter};if(t=Object.append(e,t),"auto-complete"===this.options.displayType&&""===r)return this.addOption("","",!0),this.element.fireEvent("change",new Event.Mock(this.element,"change")),void this.element.fireEvent("blur",new Event.Mock(this.element,"blur"));r&&(t[this.strElement+"_raw"]=r,t[this.options.fullName+"_raw"]=r),Fabrik.loader.start(this.element.getParent(),Joomla.JText._("COM_FABRIK_LOADING")),new Request.JSON({url:"",method:"post",data:t,onSuccess:function(e){Fabrik.loader.stop(d.element.getParent());var t,i=!1,n=d.getOptionValues();if("auto-complete"!==d.options.displayType||""!==r||0!==n.length){var o=[];if(e.each(function(e){o.push(e.value),n.contains(e.value)||null===e.value||(t=d.options.value===e.value,d.addOption(e.value,e.text,t),i=!0)}),n.each(function(e){o.contains(e)||(t=d.getValue()===e,d.removeOption(e,t),i=!0)}),i&&(d.element.fireEvent("change",new Event.Mock(d.element,"change")),d.element.fireEvent("blur",new Event.Mock(d.element,"blur"))),d.options.showDesc){var s=d.getContainer().getElement(".dbjoin-description");jQuery(s).empty();var a=jQuery(Fabrik.jLayouts["fabrik-element-"+d.getPlugin()+"-form-description-div"])[0],l=0;e.each(function(e){var t=jQuery(a).clone();t.removeClass("description-0"),t.addClass("description-"+l++),d.options.value===e.value&&t.css("display",""),t.html(e.description),jQuery(s).append(t)})}d.activePopUp=!1,Fabrik.fireEvent("fabrik.dbjoin.update",[d,e])}}}).post()},getSubOptions:function(){var e;switch(this.options.displayType){case"dropdown":case"multilist":e=this.element.getElements("option");break;case"checkbox":e=this.element.getElements("[data-role=suboption] input[type=checkbox]");break;case"radio":default:e=this.element.getElements("[data-role=suboption] input[type=radio]")}return e},getSubOptsRow:function(){var e;switch(this.options.displayType){case"dropdown":case"multilist":default:break;case"checkbox":case"radio":e=this.element.getElements("[data-role=fabrik-rowopts]")}return e},getOptionValues:function(){var e=this.getSubOptions(),t=[];return e.each(function(e){t.push(e.get("value"))}),t.unique()},appendInfo:function(e){var t=e.rowid,o=this,i={formid:this.options.popupform,rowid:t};new Request.JSON({url:"index.php?option=com_fabrik&view=form&format=raw",data:i,onSuccess:function(e){var i=e.data[o.options.key],t=e.data[o.options.label];switch(o.options.displayType){case"dropdown":case"multilist":var n=o.element.getElements("option").filter(function(e,t){if(e.get("value")===i)return"dropdown"===o.options.displayType?o.element.selectedIndex=t:e.selected=!0,!0});0===n.length&&o.addOption(i,t);break;case"auto-complete":case"checkbox":o.addOption(i,t);break;case"radio":default:0===(n=o.element.getElements(".fabrik_subelement").filter(function(e,t){if(e.get("value")===i)return e.checked=!0})).length&&o.addOption(i,t)}"null"!==typeOf(o.element)&&(o.element.fireEvent("change",new Event.Mock(o.element,"change")),o.element.fireEvent("blur",new Event.Mock(o.element,"blur")))}}).send()},watchSelect:function(){var e,t,i=this;if(e=this.getContainer()){var n=e.getElement(".toggle-selectoption");"null"!==typeOf(n)&&(n.addEvent("click",function(e){i.selectRecord(e)}),Fabrik.addEvent("fabrik.list.row.selected",function(e){i.options.listid.toInt()===e.listid.toInt()&&i.activeSelect&&(i.update(e.rowid),t=i.element.id+"-popupwin-select",Fabrik.Windows[t]&&Fabrik.Windows[t].close(),i.element.fireEvent("change",new Event.Mock(i.element,"change")),i.element.fireEvent("blur",new Event.Mock(i.element,"blur")))}),this.unactiveFn=function(){i.activeSelect=!1},window.addEvent("fabrik.dbjoin.unactivate",this.unactiveFn),this.selectThenAdd()),this.selectThenAdd()}},selectThenAdd:function(){Fabrik.addEvent("fabrik.block.added",function(e,t){t==="list_"+this.options.listid+this.options.listRef&&e.form.addEvent("click:relay(.addbutton)",function(e,t){e.preventDefault();var i=this.selectRecordWindowId();Fabrik.Windows[i].close(),this.start(e,!0)}.bind(this))}.bind(this))},destroy:function(){window.removeEvent("fabrik.dbjoin.unactivate",this.unactiveFn)},selectRecord:function(e){window.fireEvent("fabrik.dbjoin.unactivate"),this.activeSelect=!0,e.stop();var t=this.selectRecordWindowId(),i=this.getContainer().getElement("a.toggle-selectoption").href;i+="&format=partial",i+="&triggerElement="+this.element.id,i+="&resetfilters=1",i+="&c="+this.options.listRef;this.windowopts={id:t,modalId:"db_join_select",title:Joomla.JText._("PLG_ELEMENT_DBJOIN_SELECT"),contentType:"xhr",loadMethod:"xhr",evalScripts:!0,contentURL:i,width:this.options.windowwidth,height:320,minimizable:!1,collapsible:!0,onContentLoaded:function(){this.fitToContent(!1)}},Fabrik.getWindow(this.windowopts)},selectRecordWindowId:function(){return this.element.id+"-popupwin-select"},numChecked:function(){return"checkbox"!==this.options.displayType?null:this._getSubElements().filter(function(e){return"0"!==e.value&&e.checked}).length},update:function(e){if(this.getElement(),"null"!==typeOf(this.element)){if(!this.options.editable){if(this.element.set("html",""),""===e)return;"string"===typeOf(e)&&(e=JSON.parse(e));var t=this.form.getFormData();return"object"===typeOf(t)&&(t=$H(t)),void e.each(function(e){"null"!==typeOf(t.get(e))?this.element.innerHTML+=t.get(e)+"
":this.element.innerHTML+=e+"
"}.bind(this))}this.setValue(e)}},setValue:function(e){var t=!1;if("null"!==typeOf(this.element.options))for(var i=0;i