AUI.add("liferay-portlet-dynamic-data-mapping-custom-fields",function(A){var AArray=A.Array;var AEscape=A.Escape;var FormBuilderTextField=A.FormBuilderTextField;var FormBuilderTypes=A.FormBuilderField.types;var LiferayFormBuilderUtil=Liferay.FormBuilder.Util;var Lang=A.Lang;var LString=Lang.String;var booleanParse=A.DataType.Boolean.parse;var camelize=Lang.String.camelize;var instanceOf=A.instanceOf;var isNull=Lang.isNull;var isObject=Lang.isObject;var isUndefined=Lang.isUndefined;var isValue=Lang.isValue;
var CSS_FIELD=A.getClassName("field");var CSS_FIELD_CHOICE=A.getClassName("field","choice");var CSS_FIELD_RADIO=A.getClassName("field","radio");var CSS_FORM_BUILDER_FIELD_NODE=A.getClassName("form-builder-field","node");var CSS_RADIO=A.getClassName("radio");var DEFAULTS_FORM_VALIDATOR=A.config.FormValidator;var LOCALIZABLE_FIELD_ATTRS=Liferay.FormBuilder.LOCALIZABLE_FIELD_ATTRS;var RESTRICTED_NAME="submit";var STR_BLANK="";var STR_DASH="-";var STR_SPACE=" ";var TPL_COLOR='\x3cinput class\x3d"field form-control" type\x3d"text" value\x3d"'+
A.Escape.html("Colour")+'" readonly\x3d"readonly"\x3e';var TPL_GEOLOCATION='\x3cdiv class\x3d"field-labels-inline"\x3e'+'\x3cimg src\x3d"'+themeDisplay.getPathThemeImages()+'/common/geolocation.png" title\x3d"'+A.Escape.html("Geolocate")+'" /\x3e'+"\x3cdiv\x3e";var TPL_INPUT_BUTTON='\x3cdiv class\x3d"form-group"\x3e'+'\x3cinput class\x3d"field form-control" type\x3d"text" value\x3d"" readonly\x3d"readonly"\x3e'+'\x3cdiv class\x3d"button-holder"\x3e'+'\x3cbutton class\x3d"btn select-button btn-default" type\x3d"button"\x3e'+
'\x3cspan class\x3d"lfr-btn-label"\x3e'+A.Escape.html("Select")+"\x3c/span\x3e"+"\x3c/button\x3e"+"\x3c/div\x3e"+"\x3c/div\x3e";var TPL_PARAGRAPH="\x3cp\x3e\x3c/p\x3e";var TPL_RADIO='\x3cdiv class\x3d"'+CSS_RADIO+'"\x3e'+'\x3clabel class\x3d"radio-inline" for\x3d"{id}"\x3e'+'\x3cinput id\x3d"{id}" class\x3d"'+[CSS_FIELD,CSS_FIELD_CHOICE,CSS_FIELD_RADIO,CSS_FORM_BUILDER_FIELD_NODE].join(" ")+'" name\x3d"{name}" type\x3d"radio" value\x3d"{value}" {checked} {disabled} /\x3e'+"{label}"+"\x3c/label\x3e"+
"\x3c/div\x3e";var TPL_SEPARATOR='\x3cdiv class\x3d"separator"\x3e\x3c/div\x3e';var TPL_TEXT_HTML='\x3ctextarea class\x3d"form-builder-field-node lfr-ddm-text-html"\x3e\x3c/textarea\x3e';var TPL_WCM_IMAGE='\x3cdiv class\x3d"form-group"\x3e'+'\x3cinput class\x3d"field form-control" type\x3d"text" value\x3d"" readonly\x3d"readonly"\x3e'+'\x3cdiv class\x3d"button-holder"\x3e'+'\x3cbutton class\x3d"btn select-button btn-default" type\x3d"button"\x3e'+'\x3cspan class\x3d"lfr-btn-label"\x3e'+A.Escape.html("Select")+
"\x3c/span\x3e"+"\x3c/button\x3e"+"\x3c/div\x3e"+'\x3clabel class\x3d"control-label"\x3e'+A.Escape.html("Image Description")+"\x3c/label\x3e"+'\x3cinput class\x3d"field form-control" type\x3d"text" value\x3d"" disabled\x3e'+"\x3c/div\x3e";var UNIQUE_FIELD_NAMES_MAP=Liferay.FormBuilder.UNIQUE_FIELD_NAMES_MAP;var UNLOCALIZABLE_FIELD_ATTRS=Liferay.FormBuilder.UNLOCALIZABLE_FIELD_ATTRS;DEFAULTS_FORM_VALIDATOR.STRINGS.structureDuplicateFieldName="Please enter a unique field name.";DEFAULTS_FORM_VALIDATOR.RULES.structureDuplicateFieldName=
function(value,editorNode){var instance=this;var editingField=UNIQUE_FIELD_NAMES_MAP.getValue(value);var duplicate=editingField&&!editingField.get("selected");if(duplicate){editorNode.selectText(0,value.length);instance.resetField(editorNode)}return!duplicate};DEFAULTS_FORM_VALIDATOR.STRINGS.structureFieldName="Please enter only alphanumeric characters or underscore.";DEFAULTS_FORM_VALIDATOR.RULES.structureFieldName=function(value){return LiferayFormBuilderUtil.validateFieldName(value)};DEFAULTS_FORM_VALIDATOR.STRINGS.structureRestrictedFieldName=
Lang.sub("{0} is a reserved word and cannot be used.",[RESTRICTED_NAME]);DEFAULTS_FORM_VALIDATOR.RULES.structureRestrictedFieldName=function(value){return RESTRICTED_NAME!==value};var applyStyles=function(node,styleContent){var styles=styleContent.replace(/\n/g,STR_BLANK).split(";");node.setStyle(STR_BLANK);styles.forEach(function(item,index){var rule=item.split(":");if(rule.length==2){var key=camelize(rule[0]);var value=rule[1].trim();node.setStyle(key,value)}})};var ColorCellEditor=A.Component.create({EXTENDS:A.BaseCellEditor,
NAME:"color-cell-editor",prototype:{ELEMENT_TEMPLATE:'\x3cinput type\x3d"text" /\x3e',renderUI:function(){var instance=this;ColorCellEditor.superclass.renderUI.apply(instance,arguments);var input=instance.get("boundingBox").one("input");var colorPicker=(new A.ColorPickerPopover({trigger:input,zIndex:65535})).render();colorPicker.on("select",function(event){input.setStyle("color",event.color);input.val(event.color);instance.fire("save",{newVal:instance.getValue(),prevVal:event.color})});instance.set("colorPicker",
colorPicker)},getElementsValue:function(){var instance=this;var retVal;var input=instance.get("boundingBox").one("input");if(input){var val=input.val();if(/#[A-F\d]{6}/.test(val))retVal=val}return retVal},_defSaveFn:function(){var instance=this;var colorPicker=instance.get("colorPicker");var input=instance.get("boundingBox").one("input");if(/#[A-F\d]{6}/.test(input.val()))ColorCellEditor.superclass._defSaveFn.apply(instance,arguments);else colorPicker.show()},_uiSetValue:function(val){var instance=
this;var input=instance.get("boundingBox").one("input");input.setStyle("color",val);input.val(val);instance.elements.val(val)}}});var DLFileEntryCellEditor=A.Component.create({EXTENDS:A.BaseCellEditor,NAME:"document-library-file-entry-cell-editor",prototype:{ELEMENT_TEMPLATE:'\x3cinput type\x3d"hidden" /\x3e',getElementsValue:function(){var instance=this;return instance.get("value")},_defInitToolbarFn:function(){var instance=this;DLFileEntryCellEditor.superclass._defInitToolbarFn.apply(instance,arguments);
instance.toolbar.add({label:"Select",on:{click:A.bind("_onClickChoose",instance)}},1);instance.toolbar.add({label:"Clear",on:{click:A.bind("_onClickClear",instance)}},2)},_getDocumentLibrarySelectorURL:function(){var instance=this;var portletNamespace=instance.get("portletNamespace");var portletURL=Liferay.PortletURL.createURL(themeDisplay.getLayoutRelativeControlPanelURL());portletURL.setParameter("criteria","com.liferay.item.selector.criteria.file.criterion.FileItemSelectorCriterion");portletURL.setParameter("itemSelectedEventName",
portletNamespace+"selectDocumentLibrary");var criterionJSON={desiredItemSelectorReturnTypes:"com.liferay.item.selector.criteria.FileEntryItemSelectorReturnType"};portletURL.setParameter("0_json",JSON.stringify(criterionJSON));portletURL.setParameter("1_json",JSON.stringify(criterionJSON));var uploadCriterionJSON={desiredItemSelectorReturnTypes:"com.liferay.item.selector.criteria.FileEntryItemSelectorReturnType",URL:instance._getUploadURL()};portletURL.setParameter("2_json",JSON.stringify(uploadCriterionJSON));
portletURL.setPortletId(Liferay.PortletKeys.ITEM_SELECTOR);portletURL.setPortletMode("view");portletURL.setWindowState("pop_up");return portletURL.toString()},_getUploadURL:function(){var instance=this;var portletURL=Liferay.PortletURL.createURL(themeDisplay.getLayoutRelativeControlPanelURL());portletURL.setLifecycle(Liferay.PortletURL.ACTION_PHASE);portletURL.setParameter("cmd","add_temp");portletURL.setParameter("javax.portlet.action","/document_library/upload_file_entry");portletURL.setParameter("p_auth",
Liferay.authToken);portletURL.setPortletId(Liferay.PortletKeys.DOCUMENT_LIBRARY);return portletURL.toString()},_isDocumentLibraryDialogOpen:function(){var instance=this;var portletNamespace=instance.get("portletNamespace");return!!Liferay.Util.getWindow(portletNamespace+"selectDocumentLibrary")},_onClickChoose:function(){var instance=this;var portletNamespace=instance.get("portletNamespace");var itemSelectorDialog=new A.LiferayItemSelectorDialog({eventName:portletNamespace+"selectDocumentLibrary",
on:{selectedItemChange:function(event){var selectedItem=event.newVal;if(selectedItem){var itemValue=JSON.parse(selectedItem.value);instance._selectFileEntry(itemValue.groupId,itemValue.title,itemValue.uuid)}}},url:instance._getDocumentLibrarySelectorURL()});itemSelectorDialog.open()},_onClickClear:function(){var instance=this;instance.set("value",STR_BLANK)},_onDocMouseDownExt:function(event){var instance=this;var boundingBox=instance.get("boundingBox");var documentLibraryDialogOpen=instance._isDocumentLibraryDialogOpen();
if(!documentLibraryDialogOpen&&!boundingBox.contains(event.target))instance.set("visible",false)},_selectFileEntry:function(groupId,title,uuid){var instance=this;instance.set("value",JSON.stringify({groupId:groupId,title:title,uuid:uuid}))},_syncElementsFocus:function(){var instance=this;var boundingBox=instance.toolbar.get("boundingBox");var button=boundingBox.one("button");if(button)button.focus();else DLFileEntryCellEditor.superclass._syncElementsFocus.apply(instance,arguments)},_syncFileLabel:function(title,
url){var instance=this;var contentBox=instance.get("contentBox");var linkNode=contentBox.one("a");if(!linkNode){linkNode=A.Node.create("\x3ca\x3e\x3c/a\x3e");contentBox.prepend(linkNode)}linkNode.setAttribute("href",url);linkNode.setContent(LString.escapeHTML(title))},_uiSetValue:function(val){var instance=this;if(val)LiferayFormBuilderUtil.getFileEntry(val,function(fileEntry){var url=LiferayFormBuilderUtil.getFileEntryURL(fileEntry);instance._syncFileLabel(fileEntry.title,url)});else{instance._syncFileLabel(STR_BLANK,
STR_BLANK);val=STR_BLANK}instance.elements.val(val)}}});var JournalArticleCellEditor=A.Component.create({EXTENDS:A.BaseCellEditor,NAME:"journal-article-cell-editor",prototype:{ELEMENT_TEMPLATE:'\x3cinput type\x3d"hidden" /\x3e',getElementsValue:function(){var instance=this;return instance.get("value")},getParsedValue:function(value){if(Lang.isString(value))if(value!=="")value=JSON.parse(value);else value={};return value},setValue:function(value){var instance=this;var parsedValue=instance.getParsedValue(value);
if(!parsedValue.className&&!parsedValue.classPK)value="";else value=JSON.stringify(parsedValue);instance.set("value",value)},_defInitToolbarFn:function(){var instance=this;JournalArticleCellEditor.superclass._defInitToolbarFn.apply(instance,arguments);instance.toolbar.add({label:"Select",on:{click:A.bind("_onClickChoose",instance)}},1);instance.toolbar.add({label:"Clear",on:{click:A.bind("_onClickClear",instance)}},2)},_getWebContentSelectorURL:function(){var instance=this;var url=Liferay.PortletURL.createRenderURL(themeDisplay.getURLControlPanel());
url.setParameter("eventName","selectContent");url.setParameter("groupId",themeDisplay.getScopeGroupId());url.setParameter("p_auth",Liferay.authToken);url.setParameter("selectedGroupId",themeDisplay.getScopeGroupId());url.setParameter("showNonindexable",true);url.setParameter("showScheduled",true);url.setParameter("typeSelection","com.liferay.journal.model.JournalArticle");url.setPortletId("com_liferay_asset_browser_web_portlet_AssetBrowserPortlet");url.setWindowState("pop_up");return url},_handleCancelEvent:function(event){var instance=
this;instance.get("boundingBox").hide()},_handleSaveEvent:function(event){var instance=this;JournalArticleCellEditor.superclass._handleSaveEvent.apply(instance,arguments);instance.get("boundingBox").hide()},_onClickChoose:function(event){var instance=this;Liferay.Util.selectEntity({dialog:{constrain:true,destroyOnHide:true,modal:true},eventName:"selectContent",id:"selectContent",title:"Web Content",uri:instance._getWebContentSelectorURL()},function(event){if(event.details.length>0){var selectedWebContent=
event.details[0];instance.setValue({className:selectedWebContent.assetclassname,classPK:selectedWebContent.assetclasspk,title:selectedWebContent.assettitle})}})},_onClickClear:function(){var instance=this;instance.set("value",STR_BLANK)},_onDocMouseDownExt:function(event){var instance=this;var boundingBox=instance.get("boundingBox");if(!boundingBox.contains(event.target))instance._handleCancelEvent(event)},_syncJournalArticleLabel:function(title){var instance=this;var contentBox=instance.get("contentBox");
var linkNode=contentBox.one("span");if(!linkNode){linkNode=A.Node.create("\x3cspan\x3e\x3c/span\x3e");contentBox.prepend(linkNode)}linkNode.setContent(LString.escapeHTML(title))},_uiSetValue:function(val){var instance=this;if(val){val=JSON.parse(val);var title="Web Content"+": "+val.classPK;instance._syncJournalArticleLabel(title)}else instance._syncJournalArticleLabel(STR_BLANK)}}});var LinkToPageCellEditor=A.Component.create({EXTENDS:A.DropDownCellEditor,NAME:"link-to-page-cell-editor",prototype:{OPT_GROUP_TEMPLATE:'\x3coptgroup label\x3d"{label}"\x3e{options}\x3c/optgroup\x3e',
renderUI:function(val){var instance=this;var options={};LinkToPageCellEditor.superclass.renderUI.apply(instance,arguments);A.io.request(themeDisplay.getPathMain()+"/portal/get_layouts",{after:{success:function(){var response=JSON.parse(this.get("responseData"));if(response&&response.layouts){instance._createOptionElements(response.layouts,options,STR_BLANK);instance.set("options",options)}}},data:{cmd:"getAll",expandParentLayouts:true,groupId:themeDisplay.getScopeGroupId(),p_auth:Liferay.authToken,
paginate:false}})},_createOptionElements:function(layouts,options,prefix){var instance=this;layouts.forEach(function(item,index){options[prefix+item.name]={groupId:item.groupId,layoutId:item.layoutId,name:item.name,privateLayout:item.privateLayout};if(item.hasChildren)instance._createOptionElements(item.children.layouts,options,prefix+STR_DASH+STR_SPACE)})},_createOptions:function(val){var instance=this;var privateOptions=[];var publicOptions=[];A.each(val,function(item,index){var values={id:A.guid(),
label:index,value:LString.escapeHTML(JSON.stringify(item))};var optionsArray=publicOptions;if(item.privateLayout)optionsArray=privateOptions;optionsArray.push(Lang.sub(instance.OPTION_TEMPLATE,values))});var optGroupTemplate=instance.OPT_GROUP_TEMPLATE;var publicOptGroup=Lang.sub(optGroupTemplate,{label:"Public Pages",options:publicOptions.join(STR_BLANK)});var privateOptGroup=Lang.sub(optGroupTemplate,{label:"Private Pages",options:privateOptions.join(STR_BLANK)});var elements=instance.elements;
elements.setContent(publicOptGroup+privateOptGroup);instance.options=elements.all("option")},_uiSetValue:function(val){var instance=this;var options=instance.options;if(options&&options.size()){options.set("selected",false);if(isValue(val)){var selLayout=LiferayFormBuilderUtil.parseJSON(val);options.each(function(item,index){var curLayout=LiferayFormBuilderUtil.parseJSON(item.attr("value"));if(curLayout.groupId===selLayout.groupId&&curLayout.layoutId===selLayout.layoutId&&curLayout.privateLayout===
selLayout.privateLayout)item.set("selected",true)})}}return val}}});Liferay.FormBuilder.CUSTOM_CELL_EDITORS={};var customCellEditors=[ColorCellEditor,DLFileEntryCellEditor,JournalArticleCellEditor,LinkToPageCellEditor];customCellEditors.forEach(function(item,index){Liferay.FormBuilder.CUSTOM_CELL_EDITORS[item.NAME]=item});var LiferayFieldSupport=function(){};LiferayFieldSupport.ATTRS={autoGeneratedName:{setter:booleanParse,value:true},indexType:{value:"keyword"},localizable:{setter:booleanParse,value:true},
name:{setter:LiferayFormBuilderUtil.normalizeKey,validator:function(val){return!UNIQUE_FIELD_NAMES_MAP.has(val)},valueFn:function(){var instance=this;var label=LiferayFormBuilderUtil.normalizeKey(instance.get("label"));label=label.replace(/[^a-z0-9]/gi,"");var name=label+instance._randomString(4);while(UNIQUE_FIELD_NAMES_MAP.has(name))name=A.FormBuilderField.buildFieldName(name);return name}},repeatable:{setter:booleanParse,value:false}};LiferayFieldSupport.prototype.initializer=function(){var instance=
this;instance.after("nameChange",instance._afterNameChange)};LiferayFieldSupport.prototype._afterNameChange=function(event){var instance=this;UNIQUE_FIELD_NAMES_MAP.remove(event.prevVal);UNIQUE_FIELD_NAMES_MAP.put(event.newVal,instance)};LiferayFieldSupport.prototype._handleDeleteEvent=function(event){var instance=this;var strings=instance.getStrings();var deleteModal=Liferay.Util.Window.getWindow({dialog:{bodyContent:strings.deleteFieldsMessage,destroyOnHide:true,height:200,resizable:false,toolbars:{footer:[{cssClass:"btn-primary",
label:"OK",on:{click:function(){instance.destroy();deleteModal.hide()}}},{label:"Cancel",on:{click:function(){deleteModal.hide()}}}]},width:700},title:instance.get("label")}).render().show();event.stopPropagation()};LiferayFieldSupport.prototype._randomString=function(length){var randomString=Liferay.Util.randomInt().toString(36);return randomString.substring(0,length)};var LocalizableFieldSupport=function(){};LocalizableFieldSupport.ATTRS={localizationMap:{setter:A.clone,value:{}},readOnlyAttributes:{getter:"_getReadOnlyAttributes"}};
LocalizableFieldSupport.prototype.initializer=function(){var instance=this;var builder=instance.get("builder");instance.after("render",instance._afterLocalizableFieldRender);LOCALIZABLE_FIELD_ATTRS.forEach(function(localizableField){instance.after(localizableField+"Change",instance._afterLocalizableFieldChange)});builder.translationManager.after("editingLocaleChange",instance._afterEditingLocaleChange,instance)};LocalizableFieldSupport.prototype._afterEditingLocaleChange=function(event){var instance=
this;instance._syncLocaleUI(event.newVal)};LocalizableFieldSupport.prototype._afterLocalizableFieldChange=function(event){var instance=this;var builder=instance.get("builder");var translationManager=builder.translationManager;var editingLocale=translationManager.get("editingLocale");instance._updateLocalizationMapAttribute(editingLocale,event.attrName)};LocalizableFieldSupport.prototype._afterLocalizableFieldRender=function(event){var instance=this;var builder=instance.get("builder");var translationManager=
builder.translationManager;var editingLocale=translationManager.get("editingLocale");instance._updateLocalizationMap(editingLocale)};LocalizableFieldSupport.prototype._getReadOnlyAttributes=function(val){var instance=this;var builder=instance.get("builder");var translationManager=builder.translationManager;var defaultLocale=translationManager.get("defaultLocale");var editingLocale=translationManager.get("editingLocale");if(defaultLocale!==editingLocale)val=UNLOCALIZABLE_FIELD_ATTRS.concat(val);return AArray.dedupe(val)};
LocalizableFieldSupport.prototype._syncLocaleUI=function(locale){var instance=this;var builder=instance.get("builder");var localizationMap=instance.get("localizationMap");var translationManager=builder.translationManager;var defaultLocale=themeDisplay.getDefaultLanguageId();if(translationManager)defaultLocale=translationManager.get("defaultLocale");var localeMap=localizationMap[locale]||localizationMap[defaultLocale];if(isObject(localeMap)){LOCALIZABLE_FIELD_ATTRS.forEach(function(item,index){if(item!==
"options"){var localizedItem=localeMap[item];if(!isUndefined(localizedItem)&&!isNull(localizedItem))instance.set(item,localizedItem)}});builder._syncUniqueField(instance)}if(instanceOf(instance,A.FormBuilderMultipleChoiceField))instance._syncOptionsLocaleUI(locale);if(builder.editingField===instance)builder.propertyList.set("data",instance.getProperties())};LocalizableFieldSupport.prototype._syncOptionsLocaleUI=function(locale){var instance=this;var options=instance.get("options");options.forEach(function(item,
index){var localizationMap=item.localizationMap;if(isObject(localizationMap)){var localeMap=localizationMap[locale];if(isObject(localeMap))item.label=localeMap.label}});instance.set("options",options)};LocalizableFieldSupport.prototype._updateLocalizationMap=function(locale){var instance=this;LOCALIZABLE_FIELD_ATTRS.forEach(function(item,index){instance._updateLocalizationMapAttribute(locale,item)})};LocalizableFieldSupport.prototype._updateLocalizationMapAttribute=function(locale,attributeName){var instance=
this;if(attributeName==="options")instance._updateLocalizationMapOptions(locale);else{var localizationMap=instance.get("localizationMap");var localeMap=localizationMap[locale]||{};localeMap[attributeName]=instance.get(attributeName);localizationMap[locale]=localeMap;instance.set("localizationMap",localizationMap)}};LocalizableFieldSupport.prototype._updateLocalizationMapOptions=function(locale){var instance=this;var options=instance.get("options");if(options)options.forEach(function(item,index){var localizationMap=
item.localizationMap;if(!isObject(localizationMap))localizationMap={};localizationMap[locale]={label:item.label};item.localizationMap=localizationMap})};var SerializableFieldSupport=function(){};SerializableFieldSupport.prototype._addDefinitionFieldLocalizedAttributes=function(fieldJSON){var instance=this;LOCALIZABLE_FIELD_ATTRS.forEach(function(attr){if(attr==="options"){if(instanceOf(instance,A.FormBuilderMultipleChoiceField))instance._addDefinitionFieldOptions(fieldJSON)}else fieldJSON[attr]=instance._getLocalizedValue(attr)})};
SerializableFieldSupport.prototype._addDefinitionFieldUnlocalizedAttributes=function(fieldJSON){var instance=this;UNLOCALIZABLE_FIELD_ATTRS.forEach(function(attr){fieldJSON[attr]=instance.get(attr)})};SerializableFieldSupport.prototype._addDefinitionFieldOptions=function(fieldJSON){var instance=this;var options=instance.get("options");var fieldOptions=[];if(options){options.forEach(function(option){var fieldOption={};var localizationMap=option.localizationMap;fieldOption.value=option.value;fieldOption.label=
{};A.each(localizationMap,function(item,index,collection){fieldOption.label[index]=LiferayFormBuilderUtil.normalizeValue(item.label)});fieldOptions.push(fieldOption)});fieldJSON.options=fieldOptions}};SerializableFieldSupport.prototype._addDefinitionFieldNestedFields=function(fieldJSON){var instance=this;var nestedFields=[];instance.get("fields").each(function(childField){nestedFields.push(childField.serialize())});if(nestedFields.length>0)fieldJSON.nestedFields=nestedFields};SerializableFieldSupport.prototype._getLocalizedValue=
function(attribute){var instance=this;var builder=instance.get("builder");var localizationMap=instance.get("localizationMap");var localizedValue={};var translationManager=builder.translationManager;var defaultLocale=translationManager.get("defaultLocale");translationManager.get("availableLocales").forEach(function(locale){var value=A.Object.getValue(localizationMap,[locale,attribute]);if(!isValue(value)){value=A.Object.getValue(localizationMap,[defaultLocale,attribute]);if(!isValue(value))for(var localizationMapLocale in localizationMap){value=
A.Object.getValue(localizationMap,[localizationMapLocale,attribute]);if(isValue(value))break}if(!isValue(value))value=STR_BLANK}localizedValue[locale]=LiferayFormBuilderUtil.normalizeValue(value)});return localizedValue};SerializableFieldSupport.prototype.serialize=function(){var instance=this;var fieldJSON={};instance._addDefinitionFieldLocalizedAttributes(fieldJSON);instance._addDefinitionFieldUnlocalizedAttributes(fieldJSON);instance._addDefinitionFieldNestedFields(fieldJSON);return fieldJSON};
A.Base.mix(A.FormBuilderField,[LiferayFieldSupport,LocalizableFieldSupport,SerializableFieldSupport]);var FormBuilderProto=A.FormBuilderField.prototype;var originalGetPropertyModel=FormBuilderProto.getPropertyModel;FormBuilderProto.getPropertyModel=function(){var instance=this;var model=originalGetPropertyModel.call(instance);var type=instance.get("type");var indexTypeOptions={"":"No","keyword":"Yes"};if(type=="ddm-image"||type=="text")indexTypeOptions={"":"Not Indexable","keyword":"Indexable - Keyword",
"text":"Indexable - Text"};if(type=="ddm-text-html"||type=="textarea")indexTypeOptions={"":"Not Indexable","text":"Indexable - Text"};var booleanOptions={"false":"No","true":"Yes"};model.forEach(function(item,index){if(item.attributeName=="name")item.editor=new A.TextCellEditor({validator:{rules:{value:{required:true,structureDuplicateFieldName:true,structureFieldName:true,structureRestrictedFieldName:true}}}})});return model.concat([{attributeName:"indexType",editor:new A.RadioCellEditor({options:indexTypeOptions}),
formatter:function(val){return indexTypeOptions[val.data.value]},name:"Indexable"},{attributeName:"localizable",editor:new A.RadioCellEditor({options:booleanOptions}),formatter:function(val){return booleanOptions[val.data.value]},name:"Localizable"},{attributeName:"repeatable",editor:new A.RadioCellEditor({options:booleanOptions}),formatter:function(val){return booleanOptions[val.data.value]},name:"Repeatable"}])};var DDMColorField=A.Component.create({ATTRS:{dataType:{value:"color"},fieldNamespace:{value:"ddm"},
showLabel:{value:false}},EXTENDS:A.FormBuilderField,NAME:"ddm-color",prototype:{getHTML:function(){return TPL_COLOR},getPropertyModel:function(){var instance=this;var model=DDMColorField.superclass.getPropertyModel.apply(instance,arguments);model.forEach(function(item,index,collection){var attributeName=item.attributeName;if(attributeName==="predefinedValue")collection[index]={attributeName:attributeName,editor:new ColorCellEditor,name:"Predefined Value"}});return model}}});var DDMDateField=A.Component.create({ATTRS:{dataType:{value:"date"},
fieldNamespace:{value:"ddm"}},EXTENDS:A.FormBuilderTextField,NAME:"ddm-date",prototype:{renderUI:function(){var instance=this;DDMDateField.superclass.renderUI.apply(instance,arguments);var trigger=instance.get("templateNode").one("input");if(trigger)instance.datePicker=(new A.DatePickerDeprecated({calendar:{locale:Liferay.ThemeDisplay.getLanguageId()},on:{selectionChange:function(event){var date=event.newSelection;instance.setValue(A.Date.format(date))}},popover:{on:{keydown:function(event){var instance=
this;var domEvent=event.domEvent;if(domEvent.keyCode==9&&domEvent.target.hasClass("yui3-calendar-grid")){instance.hide();Liferay.Util.focusFormField(trigger)}}}},trigger:trigger})).render();instance.datePicker.calendar.set("strings",{next:"Next",none:"None",previous:"Previous",today:"Today"})},getPropertyModel:function(){var instance=this;var model=DDMDateField.superclass.getPropertyModel.apply(instance,arguments);model.forEach(function(item,index,collection){var attributeName=item.attributeName;
if(attributeName==="predefinedValue")collection[index]={attributeName:attributeName,editor:new A.DateCellEditor({dateFormat:"%m/%d/%Y",inputFormatter:function(val){var instance=this;var value=val;if(Array.isArray(val))value=instance.formatDate(val[0]);return value},outputFormatter:function(val){var instance=this;var retVal=val;if(Array.isArray(val)){var formattedValue=A.DataType.Date.parse(instance.get("dateFormat"),val[0]);retVal=[formattedValue]}return retVal}}),name:"Predefined Value"}});return model}}});
var DDMDecimalField=A.Component.create({ATTRS:{dataType:{value:"double"},fieldNamespace:{value:"ddm"}},EXTENDS:A.FormBuilderTextField,NAME:"ddm-decimal"});var DDMDocumentLibraryField=A.Component.create({ATTRS:{dataType:{value:"document-library"},fieldNamespace:{value:"ddm"}},EXTENDS:A.FormBuilderField,NAME:"ddm-documentlibrary",prototype:{getHTML:function(){return TPL_INPUT_BUTTON},getPropertyModel:function(){var instance=this;var model=DDMDocumentLibraryField.superclass.getPropertyModel.apply(instance,
arguments);model.forEach(function(item,index){var attributeName=item.attributeName;if(attributeName==="predefinedValue"){item.editor=new DLFileEntryCellEditor;item.formatter=function(obj){var data=obj.data;var label=STR_BLANK;var value=data.value;if(value!==STR_BLANK)label="("+"File"+")";return label}}else if(attributeName==="type")item.formatter=instance._defaultFormatter});return model},_defaultFormatter:function(){var instance=this;return"documents-and-media"},_uiSetValue:function(){return"Select"}}});
var DDMGeolocationField=A.Component.create({ATTRS:{dataType:{value:"geolocation"},fieldNamespace:{value:"ddm"},localizable:{setter:booleanParse,value:false}},EXTENDS:A.FormBuilderField,NAME:"ddm-geolocation",prototype:{getHTML:function(){return TPL_GEOLOCATION},getPropertyModel:function(){var instance=this;return DDMGeolocationField.superclass.getPropertyModel.apply(instance,arguments).filter(function(item,index){return item.attributeName!=="predefinedValue"})}}});var DDMImageField=A.Component.create({ATTRS:{dataType:{value:"image"},
fieldNamespace:{value:"ddm"},indexType:{value:"text"}},EXTENDS:A.FormBuilderField,NAME:"ddm-image",prototype:{getHTML:function(){return TPL_WCM_IMAGE}}});var DDMIntegerField=A.Component.create({ATTRS:{dataType:{value:"integer"},fieldNamespace:{value:"ddm"}},EXTENDS:A.FormBuilderTextField,NAME:"ddm-integer"});var DDMNumberField=A.Component.create({ATTRS:{dataType:{value:"number"},fieldNamespace:{value:"ddm"}},EXTENDS:A.FormBuilderTextField,NAME:"ddm-number"});var DDMParagraphField=A.Component.create({ATTRS:{dataType:{value:undefined},
fieldNamespace:{value:"ddm"},showLabel:{readOnly:true,value:true},style:{value:STR_BLANK}},EXTENDS:A.FormBuilderField,NAME:"ddm-paragraph",UI_ATTRS:["label","style"],prototype:{getHTML:function(){return TPL_PARAGRAPH},getPropertyModel:function(){var instance=this;return[{attributeName:"type",editor:false,name:"Type"},{attributeName:"label",editor:new A.TextAreaCellEditor,name:"Text"},{attributeName:"style",editor:new A.TextAreaCellEditor,name:"Style"}]},_uiSetLabel:function(val){var instance=this;
instance.get("templateNode").setContent(val)},_uiSetStyle:function(val){var instance=this;var templateNode=instance.get("templateNode");applyStyles(templateNode,val)}}});var DDMRadioField=A.Component.create({ATTRS:{dataType:{value:"radio"},predefinedValue:{setter:function(val){return val}}},EXTENDS:A.FormBuilderRadioField,NAME:"ddm-radio",OVERRIDE_TYPE:"radio",prototype:{_uiSetOptions:function(val){var instance=this;var buffer=[];var counter=0;var predefinedValue=instance.get("predefinedValue");var templateNode=
instance.get("templateNode");A.each(val,function(item){var checked=predefinedValue===item.value;buffer.push(Lang.sub(TPL_RADIO,{checked:checked?'checked\x3d"checked"':"",disabled:instance.get("disabled")?'disabled\x3d"disabled"':"",id:AEscape.html(instance.get("id")+counter++),label:AEscape.html(item.label),name:AEscape.html(instance.get("name")),value:AEscape.html(item.value)}))});instance.optionNodes=A.NodeList.create(buffer.join(""));templateNode.setContent(instance.optionNodes)},_uiSetPredefinedValue:function(val){var instance=
this;var optionNodes=instance.optionNodes;if(!optionNodes)return;optionNodes.set("checked",false);optionNodes.all('input[value\x3d"'+AEscape.html(val)+'"]').set("checked",true)}}});var DDMSeparatorField=A.Component.create({ATTRS:{dataType:{value:undefined},fieldNamespace:{value:"ddm"},showLabel:{value:false},style:{value:STR_BLANK}},EXTENDS:A.FormBuilderField,NAME:"ddm-separator",UI_ATTRS:["style"],prototype:{getHTML:function(){return TPL_SEPARATOR},getPropertyModel:function(){var instance=this;var model=
DDMSeparatorField.superclass.getPropertyModel.apply(instance,arguments);model.push({attributeName:"style",editor:new A.TextAreaCellEditor,name:"Style"});return model},_uiSetStyle:function(val){var instance=this;var templateNode=instance.get("templateNode");applyStyles(templateNode,val)}}});var DDMHTMLTextField=A.Component.create({ATTRS:{dataType:{value:"html"},fieldNamespace:{value:"ddm"},indexType:{value:"text"}},EXTENDS:FormBuilderTextField,NAME:"ddm-text-html",prototype:{getHTML:function(){return TPL_TEXT_HTML}}});
var DDMJournalArticleField=A.Component.create({ATTRS:{dataType:{value:"journal-article"},fieldNamespace:{value:"ddm"}},EXTENDS:A.FormBuilderField,NAME:"ddm-journal-article",prototype:{getHTML:function(){return TPL_INPUT_BUTTON},getPropertyModel:function(){var instance=this;var model=DDMJournalArticleField.superclass.getPropertyModel.apply(instance,arguments);model.push({attributeName:"style",editor:new A.TextAreaCellEditor,name:"Style"});model.forEach(function(item,index,collection){var attributeName=
item.attributeName;if(attributeName==="predefinedValue"){item.editor=new JournalArticleCellEditor;item.formatter=function(obj){var data=obj.data;var label=STR_BLANK;var value=data.value;if(value!==STR_BLANK)label="("+"Web Content"+")";return label}}});return model}}});var DDMLinkToPageField=A.Component.create({ATTRS:{dataType:{value:"link-to-page"},fieldNamespace:{value:"ddm"}},EXTENDS:A.FormBuilderField,NAME:"ddm-link-to-page",prototype:{getHTML:function(){return TPL_INPUT_BUTTON}}});var DDMTextAreaField=
A.Component.create({ATTRS:{indexType:{value:"text"}},EXTENDS:A.FormBuilderTextAreaField,NAME:"textarea"});var plugins=[DDMColorField,DDMDateField,DDMDecimalField,DDMDocumentLibraryField,DDMGeolocationField,DDMImageField,DDMIntegerField,DDMJournalArticleField,DDMLinkToPageField,DDMNumberField,DDMParagraphField,DDMRadioField,DDMSeparatorField,DDMHTMLTextField,DDMTextAreaField];plugins.forEach(function(item,index){FormBuilderTypes[item.OVERRIDE_TYPE||item.NAME]=item})},"",{requires:["aui-base","aui-color-picker-popover",
"aui-io-request","aui-url","liferay-item-selector-dialog","liferay-portlet-dynamic-data-mapping","liferay-portlet-url"]});
AUI.add("liferay-portlet-dynamic-data-mapping",function(A){var AArray=A.Array;var Lang=A.Lang;var BODY=A.getBody();var instanceOf=A.instanceOf;var isArray=Array.isArray;var isFormBuilderField=function(value){return value instanceof A.FormBuilderField};var isObject=Lang.isObject;var isString=Lang.isString;var isUndefined=Lang.isUndefined;var DEFAULTS_FORM_VALIDATOR=A.config.FormValidator;var MAP_HIDDEN_FIELD_ATTRS={checkbox:["readOnly"],DEFAULT:["readOnly","width"],separator:["indexType","localizable",
"predefinedValue","readOnly","required"]};var REGEX_HYPHEN=/[-\u2013\u2014]/i;var SETTINGS_TAB_INDEX=1;var STR_BLANK="";var STR_SPACE=" ";var STR_UNDERSCORE="_";DEFAULTS_FORM_VALIDATOR.STRINGS.structureFieldName="Please enter only alphanumeric characters.";DEFAULTS_FORM_VALIDATOR.RULES.structureFieldName=function(value){return/^[\w\-]+$/.test(value)};var LiferayAvailableField=A.Component.create({ATTRS:{localizationMap:{validator:isObject,value:{}},name:{validator:isString}},EXTENDS:A.FormBuilderAvailableField,
NAME:"availableField"});var ReadOnlyFormBuilderSupport=function(){};ReadOnlyFormBuilderSupport.ATTRS={readOnly:{value:false}};A.mix(ReadOnlyFormBuilderSupport.prototype,{initializer:function(){var instance=this;if(instance.get("readOnly")){instance.set("allowRemoveRequiredFields",false);instance.set("enableEditing",false);instance.translationManager.hide();instance.after("render",instance._afterRenderReadOnlyFormBuilder);instance.after("*:render",instance._afterFieldRender);instance.dropContainer.delegate("mouseover",
instance._onMouseOverFieldReadOnlyFormBuilder,".form-builder-field")}},_afterFieldRender:function(event){var field=event.target;if(instanceOf(field,A.FormBuilderField)){var readOnlyAttributes=AArray.map(field.getPropertyModel(),function(item){return item.attributeName});field.set("readOnlyAttributes",readOnlyAttributes)}},_afterRenderReadOnlyFormBuilder:function(){var instance=this;instance.tabView.enableTab(1);instance.openEditProperties(instance.get("fields").item(0));instance.tabView.getTabs().item(0).hide()},
_onMouseOverFieldReadOnlyFormBuilder:function(event){var field=A.Widget.getByNode(event.currentTarget);field.controlsToolbar.hide();field.get("boundingBox").removeClass("form-builder-field-hover")}});A.LiferayAvailableField=LiferayAvailableField;var LiferayFormBuilder=A.Component.create({ATTRS:{availableFields:{validator:isObject,valueFn:function(){return LiferayFormBuilder.AVAILABLE_FIELDS.DEFAULT}},fieldNameEditionDisabled:{value:false},portletNamespace:{value:STR_BLANK},portletResourceNamespace:{value:STR_BLANK},
propertyList:{value:{strings:{asc:"Ascending",desc:"Descending",reverseSortBy:Lang.sub("Reverse Sort by {0}",["{column}"]),sortBy:Lang.sub("Sort by {0}",["{column}"])}}},strings:{value:{addNode:"Add Field",button:"Button",buttonType:"Button Type",deleteFieldsMessage:"Are you sure you want to delete the selected entries? They will be deleted immediately.",duplicateMessage:"Duplicate",editMessage:"Edit",label:"Field Label",large:"Large",localizable:"Localizable",medium:"Medium",multiple:"Multiple",
name:"Name",no:"No",options:"Options",predefinedValue:"Predefined Value",propertyName:"Property Name",required:"Required",reset:"Reset",save:"Save",settings:"Settings",showLabel:"Show Label",small:"Small",submit:"Submit",tip:"Tip",type:"Type",value:"Value",width:"Width",yes:"Yes"}},translationManager:{validator:isObject,value:{}},validator:{setter:function(val){var instance=this;var config=A.merge({fieldStrings:{name:{required:"This field is required."}},rules:{name:{required:true,structureFieldName:true}}},
val);return config},value:{}}},EXTENDS:A.FormBuilder,AUGMENTS:[ReadOnlyFormBuilderSupport],LOCALIZABLE_FIELD_ATTRS:["label","options","predefinedValue","style","tip"],NAME:"liferayformbuilder",UNIQUE_FIELD_NAMES_MAP:new A.Map,UNLOCALIZABLE_FIELD_ATTRS:["dataType","fieldNamespace","indexType","localizable","multiple","name","readOnly","repeatable","required","showLabel","type"],prototype:{initializer:function(){var instance=this;instance.MAP_HIDDEN_FIELD_ATTRS=A.clone(MAP_HIDDEN_FIELD_ATTRS);var translationManager=
instance.translationManager=new Liferay.TranslationManager(instance.get("translationManager"));instance.after("render",function(event){translationManager.render()});instance.after("fieldsChange",instance._afterFieldsChange);instance.addTarget(Liferay.Util.getOpener().Liferay);instance._toggleInputDirection(translationManager.get("defaultLocale"))},bindUI:function(){var instance=this;LiferayFormBuilder.superclass.bindUI.apply(instance,arguments);instance.translationManager.after("defaultLocaleChange",
instance._onDefaultLocaleChange,instance);instance.translationManager.after("editingLocaleChange",instance._afterEditingLocaleChange,instance);instance.on("datatable:render",instance._onDataTableRender);instance.on("drag:drag",A.DD.DDM.syncActiveShims,A.DD.DDM,true);instance.on("model:change",instance._onPropertyModelChange)},createField:function(){var instance=this;var field=LiferayFormBuilder.superclass.createField.apply(instance,arguments);field.set("strings",instance.get("strings"));var fieldHiddenAttributeMap=
{checkbox:instance.MAP_HIDDEN_FIELD_ATTRS.checkbox,"ddm-separator":instance.MAP_HIDDEN_FIELD_ATTRS.separator,default:instance.MAP_HIDDEN_FIELD_ATTRS.DEFAULT};var hiddenAtributes=fieldHiddenAttributeMap[field.get("type")];if(!hiddenAtributes)hiddenAtributes=fieldHiddenAttributeMap.default;field.set("hiddenAttributes",hiddenAtributes);return field},deserializeDefinitionFields:function(content){var instance=this;var availableLanguageIds=content.availableLanguageIds;var fields=content.fields;fields.forEach(function(fieldJSON){instance._deserializeField(fieldJSON,
availableLanguageIds)});return fields},eachParentField:function(field,fn){var instance=this;var parent=field.get("parent");while(isFormBuilderField(parent)){fn.call(instance,parent);parent=parent.get("parent")}},getContent:function(){var instance=this;var definition={};var translationManager=instance.translationManager;definition.availableLanguageIds=translationManager.get("availableLocales");definition.defaultLanguageId=translationManager.get("defaultLocale");definition.fields=instance._getSerializedFields();
return JSON.stringify(definition,null,4)},getContentValue:function(){var instance=this;return window[instance.get("portletResourceNamespace")+"getContentValue"]()},plotField:function(field,container){var instance=this;LiferayFormBuilder.UNIQUE_FIELD_NAMES_MAP.put(field.get("name"),field);return LiferayFormBuilder.superclass.plotField.apply(instance,arguments)},_afterEditingLocaleChange:function(event){var instance=this;instance._toggleInputDirection(event.newVal)},_afterFieldsChange:function(event){var instance=
this;var tabs=instance.tabView.getTabs();var activeTabIndex=tabs.indexOf(instance.tabView.getActiveTab());if(activeTabIndex===SETTINGS_TAB_INDEX)instance.editField(event.newVal.item(0))},_beforeGetEditor:function(record,column){var instance=this;var columnEditor=column.editor;var recordEditor=record.get("editor");var editor=recordEditor||columnEditor;if(instanceOf(editor,A.BaseOptionsCellEditor))if(editor.get("rendered"))instance._toggleOptionsEditorInputs(editor);else editor.after("render",function(){instance._toggleOptionsEditorInputs(editor)});
editor.after("render",function(){editor.set("visible",true);var boundingBox=editor.get("boundingBox");if(boundingBox)boundingBox.show()})},_deserializeField:function(fieldJSON,availableLanguageIds){var instance=this;var fields=fieldJSON.fields;if(isArray(fields))fields.forEach(function(item,index){instance._deserializeField(item,availableLanguageIds)});instance._deserializeFieldLocalizationMap(fieldJSON,availableLanguageIds);instance._deserializeFieldLocalizableAttributes(fieldJSON)},_deserializeFieldLocalizableAttributes:function(fieldJSON){var instance=
this;var defaultLocale=instance.translationManager.get("defaultLocale");var editingLocale=instance.translationManager.get("editingLocale");LiferayFormBuilder.LOCALIZABLE_FIELD_ATTRS.forEach(function(item,index){var localizedValue=fieldJSON[item];if(item!=="options"&&localizedValue)fieldJSON[item]=localizedValue[editingLocale]||localizedValue[defaultLocale]})},_deserializeFieldLocalizationMap:function(fieldJSON,availableLanguageIds){var instance=this;availableLanguageIds.forEach(function(languageId){fieldJSON.localizationMap=
fieldJSON.localizationMap||{};fieldJSON.localizationMap[languageId]={};LiferayFormBuilder.LOCALIZABLE_FIELD_ATTRS.forEach(function(attribute){var attributeMap=fieldJSON[attribute];if(attributeMap&&attributeMap[languageId])fieldJSON.localizationMap[languageId][attribute]=attributeMap[languageId]})});if(fieldJSON.options)instance._deserializeFieldOptionsLocalizationMap(fieldJSON,availableLanguageIds)},_deserializeFieldOptionsLocalizationMap:function(fieldJSON,availableLanguageIds){var instance=this;
var labels;var defaultLocale=instance.translationManager.get("defaultLocale");var editingLocale=instance.translationManager.get("editingLocale");fieldJSON.options.forEach(function(item,index){labels=item.label;item.label=labels[editingLocale]||labels[defaultLocale];item.localizationMap={};availableLanguageIds.forEach(function(languageId){item.localizationMap[languageId]={label:labels[languageId]}})})},_getGeneratedFieldName:function(label){var instance=this;var normalizedLabel=LiferayFormBuilder.Util.normalizeKey(label);
var generatedName=normalizedLabel;if(LiferayFormBuilder.Util.validateFieldName(generatedName)){var counter=1;while(LiferayFormBuilder.UNIQUE_FIELD_NAMES_MAP.has(generatedName))generatedName=normalizedLabel+counter++}return generatedName},_getSerializedFields:function(){var instance=this;var fields=[];instance.get("fields").each(function(field){fields.push(field.serialize())});return fields},_onDataTableRender:function(event){var instance=this;A.on(instance._beforeGetEditor,event.target,"getEditor",
instance)},_onDefaultLocaleChange:function(event){var instance=this;var fields=instance.get("fields");var newVal=event.newVal;var translationManager=instance.translationManager;var availableLanguageIds=translationManager.get("availableLocales");if(availableLanguageIds.indexOf(newVal)<0){var config={fields:fields,newVal:newVal,prevVal:event.prevVal};translationManager.addAvailableLocale(newVal);instance._updateLocalizationMaps(config)}},_onMouseOutField:function(event){var instance=this;var field=
A.Widget.getByNode(event.currentTarget);instance._setInvalidDDHandles(field,"remove");LiferayFormBuilder.superclass._onMouseOutField.apply(instance,arguments)},_onMouseOverField:function(event){var instance=this;var field=A.Widget.getByNode(event.currentTarget);instance._setInvalidDDHandles(field,"add");LiferayFormBuilder.superclass._onMouseOverField.apply(instance,arguments)},_onPropertyModelChange:function(event){var instance=this;var fieldNameEditionDisabled=instance.get("fieldNameEditionDisabled");
var changed=event.changed;var attributeName=event.target.get("attributeName");var editingField=instance.editingField;var readOnlyAttributes=editingField.get("readOnlyAttributes");if(changed.hasOwnProperty("value")&&readOnlyAttributes.indexOf("name")===-1)if(attributeName==="name")editingField.set("autoGeneratedName",event.autoGeneratedName===true);else if(attributeName==="label"&&editingField.get("autoGeneratedName")&&!fieldNameEditionDisabled){var translationManager=instance.translationManager;if(translationManager.get("editingLocale")===
translationManager.get("defaultLocale")){var generatedName=instance._getGeneratedFieldName(changed.value.newVal);if(LiferayFormBuilder.Util.validateFieldName(generatedName)){var nameModel=instance.propertyList.get("data").filter(function(item,index){return item.get("attributeName")==="name"});if(nameModel.length)nameModel[0].set("value",generatedName,{autoGeneratedName:true})}}}},_renderSettings:function(){var instance=this;instance._renderPropertyList()},_setAvailableFields:function(val){var instance=
this;var fields=val.map(function(item,index){return instanceOf(item,A.PropertyBuilderAvailableField)?item:new A.LiferayAvailableField(item)});fields.sort(function(a,b){return A.ArraySort.compare(a.get("label"),b.get("label"))});return fields},_setFields:function(){var instance=this;LiferayFormBuilder.UNIQUE_FIELD_NAMES_MAP.clear();return LiferayFormBuilder.superclass._setFields.apply(instance,arguments)},_setFieldsSortableListConfig:function(){var instance=this;var config=LiferayFormBuilder.superclass._setFieldsSortableListConfig.apply(instance,
arguments);config.dd.plugins=[{cfg:{constrain:"#main-content"},fn:A.Plugin.DDConstrained},{cfg:{horizontal:false,node:"#main-content"},fn:A.Plugin.DDNodeScroll}];return config},_setInvalidDDHandles:function(field,type){var instance=this;var methodName=type+"Invalid";instance.eachParentField(field,function(parent){var parentBB=parent.get("boundingBox");parentBB.dd[methodName]("#"+parentBB.attr("id"))})},_toggleInputDirection:function(locale){var rtl=Liferay.Language.direction[locale]==="rtl";BODY.toggleClass("form-builder-ltr-inputs",
!rtl);BODY.toggleClass("form-builder-rtl-inputs",rtl)},_toggleOptionsEditorInputs:function(editor){var instance=this;var boundingBox=editor.get("boundingBox");if(boundingBox.hasClass("radiocelleditor")){var defaultLocale=instance.translationManager.get("defaultLocale");var editingLocale=instance.translationManager.get("editingLocale");var inputs=boundingBox.all(".celleditor-edit-input-value");Liferay.Util.toggleDisabled(inputs,defaultLocale!==editingLocale)}},_updateLocalizationMaps:function(config){var instance=
this;var fields=config.fields;var newVal=config.newVal;var prevVal=config.prevVal;fields._items.forEach(function(field){var childFields=field.get("fields");var localizationMap=field.get("localizationMap");var config={fields:childFields,newVal:newVal,prevVal:prevVal};localizationMap[newVal]=localizationMap[prevVal];instance._updateLocalizationMaps(config)})}}});LiferayFormBuilder.Util={getFileEntry:function(fileJSON,callback){var instance=this;fileJSON=instance.parseJSON(fileJSON);Liferay.Service("/dlapp/get-file-entry-by-uuid-and-group-id",
{groupId:fileJSON.groupId,uuid:fileJSON.uuid},callback)},getFileEntryURL:function(fileEntry){var instance=this;var buffer=[themeDisplay.getPathContext(),"documents",fileEntry.groupId,fileEntry.folderId,encodeURIComponent(fileEntry.title)];return buffer.join("/")},normalizeKey:function(key){var instance=this;key=key.trim();for(var i=0;i<key.length;i++){var item=key[i];if(!A.Text.Unicode.test(item,"L")&&!A.Text.Unicode.test(item,"N")&&!A.Text.Unicode.test(item,"Pd")&&item!=STR_UNDERSCORE)key=key.replace(item,
STR_SPACE)}key=Lang.String.camelize(key,STR_SPACE);return key.replace(/\s+/ig,"")},normalizeValue:function(value){var instance=this;if(isUndefined(value))value=STR_BLANK;return value},parseJSON:function(value){var instance=this;var data={};try{data=JSON.parse(value)}catch(e){}return data},validateFieldName:function(fieldName){var valid=true;if(REGEX_HYPHEN.test(fieldName)){valid=false;return valid}for(var i=0;i<fieldName.length;i++){var item=fieldName[i];if(!A.Text.Unicode.test(item,"L")&&!A.Text.Unicode.test(item,
"N")&&!A.Text.Unicode.test(item,"Pd")&&item!=STR_UNDERSCORE){valid=false;break}}return valid}};LiferayFormBuilder.DEFAULT_ICON_CLASS="icon-fb-custom-field";var AVAILABLE_FIELDS={DDM_STRUCTURE:[{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.checkbox,iconClass:"icon-fb-boolean",label:"Boolean",type:"checkbox"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-adjust",label:"Colour",type:"ddm-color"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-calendar",label:"Date",type:"ddm-date"},
{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-fb-decimal",label:"Decimal",type:"ddm-decimal"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-file-text",label:"Documents and Media",type:"ddm-documentlibrary"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-fb-text",label:"Web Content",type:"ddm-journal-article"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-edit-sign",label:"HTML",type:"ddm-text-html"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,
iconClass:"icon-globe",label:"Geolocation",type:"ddm-geolocation"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-fb-integer",label:"Integer",type:"ddm-integer"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-link",label:"Link to Page",type:"ddm-link-to-page"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-fb-number",label:"Number",type:"ddm-number"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-fb-radio",label:"Radio",type:"radio"},
{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-fb-select",label:"Select",type:"select"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-fb-text",label:"Text",type:"text"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-fb-text-box",label:"Text Box",type:"textarea"}],DDM_TEMPLATE:[{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-fb-paragraph",label:"Paragraph",type:"ddm-paragraph"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,
iconClass:"icon-fb-separator",label:"Separator",type:"ddm-separator"},{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-fb-fieldset",label:"Fieldset",type:"fieldset"}],DEFAULT:[{fieldLabel:"Button",iconClass:"form-builder-field-icon form-builder-field-icon-button",label:"Button",type:"button"},{fieldLabel:"Checkbox",iconClass:"icon-fb-boolean",label:"Checkbox",type:"checkbox"},{fieldLabel:"Fieldset",iconClass:"form-builder-field-icon form-builder-field-icon-fieldset",label:"Fieldset",
type:"fieldset"},{fieldLabel:"Text Box",iconClass:"icon-fb-text",label:"Text Box",type:"text"},{fieldLabel:"Text Area (HTML)",iconClass:"icon-fb-text-box",label:"Text Area (HTML)",type:"textarea"},{fieldLabel:"Radio Buttons",iconClass:"icon-fb-radio",label:"Radio Buttons",type:"radio"},{fieldLabel:"Select Option",iconClass:"icon-fb-select",label:"Select Option",type:"select"}],WCM_STRUCTURE:[{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.DEFAULT,iconClass:"icon-picture",label:"Image",type:"ddm-image"},
{hiddenAttributes:MAP_HIDDEN_FIELD_ATTRS.separator,iconClass:"icon-fb-separator",label:"Separator",type:"ddm-separator"}]};AVAILABLE_FIELDS.WCM_STRUCTURE=AVAILABLE_FIELDS.WCM_STRUCTURE.concat(AVAILABLE_FIELDS.DDM_STRUCTURE);LiferayFormBuilder.AVAILABLE_FIELDS=AVAILABLE_FIELDS;Liferay.FormBuilder=LiferayFormBuilder},"",{requires:["arraysort","aui-form-builder-deprecated","aui-form-validator","aui-map","aui-text-unicode","json","liferay-menu","liferay-translation-manager","liferay-util-window","text"]});
AUI.add("liferay-portlet-dynamic-data-lists",function(A){var AArray=A.Array;var DateMath=A.DataType.DateMath;var FormBuilder=Liferay.FormBuilder;var Lang=A.Lang;var EMPTY_FN=A.Lang.emptyFn;var FIELDS_DISPLAY_INSTANCE_SEPARATOR="_INSTANCE_";var FIELDS_DISPLAY_NAME="_fieldsDisplay";var STR_EMPTY="";var isArray=Array.isArray;var isNumber=Lang.isNumber;var SpreadSheet=A.Component.create({ATTRS:{portletNamespace:{validator:Lang.isString,value:STR_EMPTY},recordsetId:{validator:isNumber,value:0},structure:{validator:isArray,
value:[]}},CSS_PREFIX:"table",DATATYPE_VALIDATOR:{"double":"number","integer":"digits","long":"digits"},EXTENDS:A.DataTable,NAME:A.DataTable.Base.NAME,TYPE_EDITOR:{"checkbox":A.CheckboxCellEditor,"ddm-color":FormBuilder.CUSTOM_CELL_EDITORS["color-cell-editor"],"ddm-date":A.DateCellEditor,"ddm-decimal":A.TextCellEditor,"ddm-documentlibrary":FormBuilder.CUSTOM_CELL_EDITORS["document-library-file-entry-cell-editor"],"ddm-integer":A.TextCellEditor,"ddm-link-to-page":FormBuilder.CUSTOM_CELL_EDITORS["link-to-page-cell-editor"],
"ddm-number":A.TextCellEditor,"radio":A.RadioCellEditor,"select":A.DropDownCellEditor,"text":A.TextCellEditor,"textarea":A.TextAreaCellEditor},prototype:{initializer:function(){var instance=this;instance._setDataStableSort(instance.get("data"));instance.set("scrollable",true);instance.on("dataChange",instance._onDataChange);instance.on("model:change",instance._onRecordUpdate)},addEmptyRows:function(num){var instance=this;var columns=instance.get("columns");var data=instance.get("data");var keys=columns.map(function(item,
index){return item.key});data.add(SpreadSheet.buildEmptyRecords(num,keys))},updateMinDisplayRows:function(minDisplayRows,callback){var instance=this;callback=callback&&A.bind(callback,instance)||EMPTY_FN;var recordsetId=instance.get("recordsetId");Liferay.Service("/ddl.ddlrecordset/update-min-display-rows",{minDisplayRows:minDisplayRows,recordSetId:recordsetId,serviceContext:JSON.stringify({scopeGroupId:themeDisplay.getScopeGroupId(),userId:themeDisplay.getUserId()})},callback)},_afterActiveCellIndexChange:function(event){var instance=
this;var activeCell=instance.get("activeCell");var boundingBox=instance.get("boundingBox");var scrollableElement=boundingBox.one(".table-x-scroller");var tableHighlightBorder=instance.highlight.get("activeBorderWidth")[0];var activeCellWidth=activeCell.outerWidth()+tableHighlightBorder;var scrollableWidth=scrollableElement.outerWidth();var activeCellOffsetLeft=activeCell.get("offsetLeft");var scrollLeft=scrollableElement.get("scrollLeft");var activeCellOffsetRight=activeCellOffsetLeft+activeCellWidth;
var scrollTo=scrollLeft;if(scrollLeft+scrollableWidth<activeCellOffsetRight)scrollTo=activeCellOffsetRight-scrollableWidth;else if(activeCellOffsetLeft<scrollLeft)scrollTo=activeCellOffsetLeft;scrollableElement.set("scrollLeft",scrollTo)},_afterSelectionKey:function(event){var instance=this;var activeCell=instance.get("activeCell");var alignNode=event.alignNode||activeCell;var column=instance.getColumn(alignNode);if(activeCell&&event.keyCode===13&&column.type!=="textarea")instance._onEditCell(activeCell)},
_normalizeFieldData:function(item,record,fieldsDisplayValues,normalized){var instance=this;var type=item.type;var value=record.get(item.name);if(!record.changed[item.id]&&(value&&value.length>0))return;if(type==="ddm-link-to-page"){value=FormBuilder.Util.parseJSON(value);delete value.name;value=JSON.stringify(value)}else if(type==="select"){if(!isArray(value))value=AArray(value);value=JSON.stringify(value)}normalized[item.name]=instance._normalizeValue(value);fieldsDisplayValues.push(item.name+FIELDS_DISPLAY_INSTANCE_SEPARATOR+
instance._randomString(8));if(isArray(item.fields))item.fields.forEach(function(item){instance._normalizeFieldData(item,record,fieldsDisplayValues,normalized)})},_normalizeRecordData:function(record){var instance=this;var structure=instance.get("structure");var fieldsDisplayValues=[];var normalized={};structure.forEach(function(item){instance._normalizeFieldData(item,record,fieldsDisplayValues,normalized)});normalized[FIELDS_DISPLAY_NAME]=fieldsDisplayValues.join(",");delete normalized.displayIndex;
delete normalized.recordId;return normalized},_normalizeValue:function(value){var instance=this;return String(value)},_onDataChange:function(event){var instance=this;instance._setDataStableSort(event.newVal)},_onEditCell:function(event){var instance=this;SpreadSheet.superclass._onEditCell.apply(instance,arguments);var activeCell=instance.get("activeCell");var alignNode=event.alignNode||activeCell;var column=instance.getColumn(alignNode);var record=instance.getRecord(alignNode);var data=instance.get("data");
var portletNamespace=instance.get("portletNamespace");var recordsetId=instance.get("recordsetId");var structure=instance.get("structure");var editor=instance.getEditor(record,column);if(editor)editor.setAttrs({data:data,portletNamespace:portletNamespace,record:record,recordsetId:recordsetId,structure:structure,zIndex:Liferay.zIndex.OVERLAY})},_onRecordUpdate:function(event){var instance=this;if(!event.changed.hasOwnProperty("recordId")){var data=instance.get("data");var recordsetId=instance.get("recordsetId");
var record=event.target;var recordId=record.get("recordId");var fieldsMap=instance._normalizeRecordData(record);var recordIndex=data.indexOf(record);if(recordId>0)SpreadSheet.updateRecord(recordId,recordIndex,fieldsMap,true);else SpreadSheet.addRecord(recordsetId,recordIndex,fieldsMap,function(json){if(json.recordId>0)record.set("recordId",json.recordId,{silent:true})})}},_randomString:function(length){var random=Math.random();var randomString=random.toString(36);return randomString.substring(length)},
_setDataStableSort:function(data){var instance=this;data.sort=function(options){if(this.comparator){options=options||{};var models=this._items.concat();A.ArraySort.stableSort(models,A.bind(this._sort,this));var facade=A.merge(options,{models:models,src:"sort"});if(options.silent)this._defResetFn(facade);else this.fire("reset",facade)}return this}}},addRecord:function(recordsetId,displayIndex,fieldsMap,callback){var instance=this;callback=callback&&A.bind(callback,instance)||EMPTY_FN;Liferay.Service("/ddl.ddlrecord/add-record",
{displayIndex:displayIndex,fieldsMap:JSON.stringify(fieldsMap),groupId:themeDisplay.getScopeGroupId(),recordSetId:recordsetId,serviceContext:JSON.stringify({scopeGroupId:themeDisplay.getScopeGroupId(),userId:themeDisplay.getUserId(),workflowAction:Liferay.Workflow.ACTION_PUBLISH})},callback)},buildDataTableColumns:function(columns,locale,structure,editable){var instance=this;columns.forEach(function(item,index){var dataType=item.dataType;var label=item.label;var name=item.name;var type=item.type;
item.key=name;var EditorClass=instance.TYPE_EDITOR[type]||A.TextCellEditor;var config={elementName:name,strings:{cancel:"Cancel",edit:"Edit",save:"Save"},validator:{rules:{}}};var required=item.required;var structureField;if(required)label+=" ("+"Required"+")";label=A.Escape.html(label);item.label=label;if(type==="checkbox"){config.options={"true":"True"};config.inputFormatter=function(value){if(Array.isArray(value)&&value.length>0)value=value[0];var checkedValue="false";if(value==="true")checkedValue=
value;return checkedValue};item.formatter=function(obj){var data=obj.data;var value=data[name];if(value==="true")value="True";else if(value==="false")value="False";return value}}else if(type==="ddm-date"){config.inputFormatter=function(val){return val.map(function(item,index){return A.DataType.Date.format(item)})};config.outputFormatter=function(val){return val.map(function(item,index){var date;if(item!==STR_EMPTY)date=A.DataType.Date.parse(item);else date=new Date;date=DateMath.add(date,DateMath.MINUTES,
date.getTimezoneOffset());return date})};item.formatter=function(obj){var data=obj.data;var value=data[name];if(isArray(value))value=value[0];return value}}else if(type==="ddm-decimal"||type==="ddm-integer"||type==="ddm-number"){config.outputFormatter=function(value){var number=A.DataType.Number.parse(value);var numberValue=STR_EMPTY;if(isNumber(number))numberValue=number;return numberValue};item.formatter=function(obj){var data=obj.data;var value=A.DataType.Number.parse(data[name]);if(!isNumber(value))value=
STR_EMPTY;return value}}else if(type==="ddm-documentlibrary")item.formatter=function(obj){var data=obj.data;var label=STR_EMPTY;var value=data[name];if(value!==STR_EMPTY){var fileData=FormBuilder.Util.parseJSON(value);if(fileData.title)label=fileData.title}return label};else if(type==="ddm-link-to-page")item.formatter=function(obj){var data=obj.data;var label=STR_EMPTY;var value=data[name];if(value!==STR_EMPTY){var linkToPageData=FormBuilder.Util.parseJSON(value);if(linkToPageData.name)label=linkToPageData.name}return label};
else if(type==="radio"){structureField=instance.findStructureFieldByAttribute(structure,"name",name);config.multiple=false;config.options=instance.getCellEditorOptions(structureField.options,locale)}else if(type==="select"){structureField=instance.findStructureFieldByAttribute(structure,"name",name);var multiple=A.DataType.Boolean.parse(structureField.multiple);var options=instance.getCellEditorOptions(structureField.options,locale);item.formatter=function(obj){var data=obj.data;var label=[];var value=
data[name];if(isArray(value))value.forEach(function(item1,index1){label.push(options[item1])});return label.join(", ")};config.inputFormatter=AArray;config.multiple=multiple;config.options=options}else if(type==="textarea"){item.allowHTML=true;item.formatter=function(obj){var data=obj.data;var value=data[name];if(!value)return value;return value.split("\n").join("\x3cbr\x3e")}}var validatorRuleName=instance.DATATYPE_VALIDATOR[dataType];var validatorRules=config.validator.rules;validatorRules[name]=
A.mix({required:required},validatorRules[name]);if(validatorRuleName)validatorRules[name][validatorRuleName]=true;if(editable&&item.editable)item.editor=new EditorClass(config)});return columns},buildEmptyRecords:function(num,keys){var instance=this;var emptyRows=[];for(var i=0;i<num;i++)emptyRows.push(instance.getRecordModel(keys));return emptyRows},findStructureFieldByAttribute:function(fieldsArray,attributeName,attributeValue){var instance=this;var structureField;AArray.some(fieldsArray,function(item){var nestedFieldsArray=
item.fields;if(item[attributeName]===attributeValue)structureField=item;else if(nestedFieldsArray)structureField=instance.findStructureFieldByAttribute(nestedFieldsArray,attributeName,attributeValue);return structureField!==undefined});return structureField},getCellEditorOptions:function(options,locale){var normalized={};options.forEach(function(item,index){normalized[item.value]=item.label;var localizationMap=item.localizationMap;if(localizationMap[locale])normalized[item.value]=localizationMap[locale].label});
return normalized},getRecordModel:function(keys){var instance=this;var recordModel={};keys.forEach(function(item,index){recordModel[item]=STR_EMPTY});return recordModel},updateRecord:function(recordId,displayIndex,fieldsMap,merge,callback){var instance=this;callback=callback&&A.bind(callback,instance)||EMPTY_FN;Liferay.Service("/ddl.ddlrecord/update-record",{displayIndex:displayIndex,fieldsMap:JSON.stringify(fieldsMap),mergeFields:merge,recordId:recordId,serviceContext:JSON.stringify({scopeGroupId:themeDisplay.getScopeGroupId(),
userId:themeDisplay.getUserId(),workflowAction:Liferay.Workflow.ACTION_PUBLISH})},callback)}});Liferay.SpreadSheet=SpreadSheet;var DDLUtil={previewDialog:null,openPreviewDialog:function(content){var instance=this;var previewDialog=instance.previewDialog;if(!previewDialog){previewDialog=Liferay.Util.Window.getWindow({dialog:{bodyContent:content},title:"Preview"});instance.previewDialog=previewDialog}else{previewDialog.show();previewDialog.set("bodyContent",content)}}};Liferay.DDLUtil=DDLUtil},"",{requires:["aui-arraysort",
"aui-datatable","datatable-sort","json","liferay-portlet-dynamic-data-mapping-custom-fields","liferay-portlet-url","liferay-util-window"]});
