diff --git a/repo/src/main/amp/config/alfresco/module/uploader-plus-repo/model/uploader-plus-model.xml b/repo/src/main/amp/config/alfresco/module/uploader-plus-repo/model/uploader-plus-model.xml index 2767284..c605998 100644 --- a/repo/src/main/amp/config/alfresco/module/uploader-plus-repo/model/uploader-plus-model.xml +++ b/repo/src/main/amp/config/alfresco/module/uploader-plus-repo/model/uploader-plus-model.xml @@ -30,6 +30,17 @@ false + + Allowed proxy types + d:text + false + true + + true + false + false + + diff --git a/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/allowed-content-types.get.js b/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/allowed-content-types.get.js index 3d04bbf..ab0fc66 100644 --- a/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/allowed-content-types.get.js +++ b/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/allowed-content-types.get.js @@ -43,6 +43,8 @@ while (destNode !== null && !destNode.hasAspect("up:UploadFolder")) { if (destNode === null) { model.types = null; + model.proxyTypes = null; } else { model.types = destNode.properties["up:allowedTypes"]; + model.proxyTypes = destNode.properties["up:allowedProxyTypes"]; } diff --git a/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/allowed-content-types.get.json.ftl b/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/allowed-content-types.get.json.ftl index 2145dd6..39a77d0 100644 --- a/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/allowed-content-types.get.json.ftl +++ b/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/allowed-content-types.get.json.ftl @@ -10,5 +10,16 @@ <#else> null +, +"proxyTypes" : + <#if proxyTypes??> + [ + <#list proxyTypes as proxyType> + "${proxyType}"<#if proxyType_has_next>, + + ] + <#else> + null + } \ No newline at end of file diff --git a/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/upload-folders-list.get.json.ftl b/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/upload-folders-list.get.json.ftl index 8510ba6..6fb0422 100644 --- a/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/upload-folders-list.get.json.ftl +++ b/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/upload-folders-list.get.json.ftl @@ -11,6 +11,13 @@ "${allowedType}"<#if allowedType_has_next>, + ], + "allowedProxyTypes": [ + <#if node.properties["up:allowedProxyTypes"]??> + <#list node.properties["up:allowedProxyTypes"] as allowedProxyType> + "${allowedProxyType}"<#if allowedProxyType_has_next>, + + ] }<#if node_has_next>, diff --git a/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/upload-folders-new.post.js b/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/upload-folders-new.post.js index a11b096..0574708 100644 --- a/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/upload-folders-new.post.js +++ b/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/upload-folders-new.post.js @@ -13,6 +13,7 @@ if (node.hasAspect("up:UploadFolder")) { } else { var props = new Array(2); props["up:allowedTypes"] = null; + props["up:allowedProxyTypes"] = null; node.addAspect("up:UploadFolder", props); node.save(); diff --git a/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/upload-folders-new.post.json.ftl b/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/upload-folders-new.post.json.ftl index b78d980..2a65781 100644 --- a/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/upload-folders-new.post.json.ftl +++ b/repo/src/main/amp/config/alfresco/templates/webscripts/com/softwareloop/uploader-plus/upload-folders-new.post.json.ftl @@ -4,7 +4,8 @@ "node": { "nodeRef": "${node.nodeRef}", "path": "${node.displayPath}\/${node.properties.name}", -"allowedTypes": [] +"allowedTypes": [], +"allowedProxyTypes": [] } } \ No newline at end of file diff --git a/surf/src/main/amp/config/alfresco/site-webscripts/com/softwareloop/uploader-plus/uploader-plus-admin.get.properties b/surf/src/main/amp/config/alfresco/site-webscripts/com/softwareloop/uploader-plus/uploader-plus-admin.get.properties index beb7313..6dd981a 100644 --- a/surf/src/main/amp/config/alfresco/site-webscripts/com/softwareloop/uploader-plus/uploader-plus-admin.get.properties +++ b/surf/src/main/amp/config/alfresco/site-webscripts/com/softwareloop/uploader-plus/uploader-plus-admin.get.properties @@ -1,5 +1,6 @@ title.path = Path title.allowed.types = Allowed types +title.allowed.proxyTypes= Allowed proxy types title.actions = Actions loading.folders = Loading folders no.folders.found = No folders found diff --git a/surf/src/main/amp/web/components/uploader-plus/css/uploader-plus-admin.css b/surf/src/main/amp/web/components/uploader-plus/css/uploader-plus-admin.css index e1d7def..dc2bd26 100644 --- a/surf/src/main/amp/web/components/uploader-plus/css/uploader-plus-admin.css +++ b/surf/src/main/amp/web/components/uploader-plus/css/uploader-plus-admin.css @@ -50,7 +50,7 @@ div.yui-u.edit-metadata.flat-button { display: none; } -.form-container select.supported-types-select { +.form-container select.supported-types-select, .form-container select.supported-proxy-types-select { width: 100%; height: 20em; } \ No newline at end of file diff --git a/surf/src/main/amp/web/components/uploader-plus/js/uploader-plus-admin.js b/surf/src/main/amp/web/components/uploader-plus/js/uploader-plus-admin.js index 7efe826..4bc82fd 100644 --- a/surf/src/main/amp/web/components/uploader-plus/js/uploader-plus-admin.js +++ b/surf/src/main/amp/web/components/uploader-plus/js/uploader-plus-admin.js @@ -100,6 +100,12 @@ YAHOO.extend(SoftwareLoop.UploaderPlusAdmin, Alfresco.component.Base, { sortable: false, formatter: SoftwareLoop.hitch(this, this.allowedTypesFormatter) }, + { + key: "allowedProxyTypes", + label: this.msg("title.allowed.proxyTypes"), + sortable: false, + formatter: SoftwareLoop.hitch(this, this.allowedTypesFormatter) + }, { key: "actions", label: this.msg("title.actions"), @@ -116,7 +122,7 @@ YAHOO.extend(SoftwareLoop.UploaderPlusAdmin, Alfresco.component.Base, { connXhrMode: "queueRequests", responseSchema: { resultsList: "results", - fields: ["path", "nodeRef", "allowedTypes"] + fields: ["path", "nodeRef", "allowedTypes", "allowedProxyTypes"] } }); @@ -299,10 +305,11 @@ YAHOO.extend(SoftwareLoop.UploaderPlusAdmin, Alfresco.component.Base, { titleNode.innerHTML = Alfresco.util.encodeHTML(this.prettyPath(data.path)); } - var selectNode = YAHOO.util.Dom.getElementsByClassName( + var supportedTypes = YAHOO.util.Dom.getElementsByClassName( "supported-types-select", "select")[0]; - - this.populateAllowedTypesSelect(selectNode); + var supportedProxyTypes = YAHOO.util.Dom.getElementsByClassName( + "supported-proxy-types-select", "select")[0]; + this.populateAllowedTypesSelect(supportedTypes, supportedProxyTypes); return true; }, @@ -313,6 +320,7 @@ YAHOO.extend(SoftwareLoop.UploaderPlusAdmin, Alfresco.component.Base, { Alfresco.logger.debug("onSuccess callback", arguments); var dataObj = response.config.dataObj; data.allowedTypes = dataObj.prop_up_allowedTypes.split(","); + data.allowedProxyTypes = dataObj.prop_up_allowedProxyTypes.split(","); this.widgets.dataTable.updateRow(record, data); Alfresco.util.PopupManager.displayMessage({ text: this.msg("operation.completed.successfully") @@ -369,12 +377,18 @@ YAHOO.extend(SoftwareLoop.UploaderPlusAdmin, Alfresco.component.Base, { Alfresco.logger.debug("END deleteUploadFolderHandler"); }, - populateAllowedTypesSelect: function (selectNode) { + populateAllowedTypesSelect: function (allowedTypes, allowedProxyTypes) { Alfresco.logger.debug("populateAllowedTypesSelect", arguments); - var selectedValues = selectNode.getAttribute("data-selectedValues"); - var selectedValuesArray = []; - if (selectedValues) { - selectedValuesArray = selectedValues.split(","); + var selectedAllowedTypeValues = allowedTypes.getAttribute("data-selectedValues"); + var selectedAllowedTypeValuesArray = []; + if (allowedTypes) { + selectedAllowedTypeValuesArray = selectedAllowedTypeValues.split(","); + } + + var selectedAllowedProxyTypeValues = allowedProxyTypes.getAttribute("data-selectedValues"); + var selectedAllowedProxyTypeValuesArray = []; + if (allowedProxyTypes) { + selectedAllowedProxyTypeValuesArray = selectedAllowedProxyTypeValues.split(","); } Alfresco.util.Ajax.jsonGet({ url: this.listContentTypesUrl, @@ -386,7 +400,7 @@ YAHOO.extend(SoftwareLoop.UploaderPlusAdmin, Alfresco.component.Base, { for (var i = 0; i < types.length; i++) { Alfresco.logger.debug("Type index", i); var type = types[i]; - var selected = selectedValuesArray.indexOf(type) > -1; + var selected = selectedAllowedTypeValuesArray.indexOf(type) > -1; var typeName = this.msg("type." + type.replace(":", "_")); if (typeName.lastIndexOf("type.", 0) === 0) { @@ -394,7 +408,23 @@ YAHOO.extend(SoftwareLoop.UploaderPlusAdmin, Alfresco.component.Base, { } var option = new Option(typeName, type); - selectNode.add(option); + allowedTypes.add(option); + option.selected = selected; + } + + var types = response.json.types; + for (var i = 0; i < types.length; i++) { + Alfresco.logger.debug("Type index", i); + var type = types[i]; + var selected = selectedAllowedProxyTypeValuesArray.indexOf(type) > -1; + + var typeName = this.msg("type." + type.replace(":", "_")); + if (typeName.lastIndexOf("type.", 0) === 0) { + typeName = type; + } + + var option = new Option(typeName, type); + allowedProxyTypes.add(option); option.selected = selected; } }, diff --git a/surf/src/main/amp/web/components/uploader-plus/js/uploader-plus-mixin.js b/surf/src/main/amp/web/components/uploader-plus/js/uploader-plus-mixin.js index d1f8676..3b0494f 100644 --- a/surf/src/main/amp/web/components/uploader-plus/js/uploader-plus-mixin.js +++ b/surf/src/main/amp/web/components/uploader-plus/js/uploader-plus-mixin.js @@ -13,6 +13,7 @@ "/uploader-plus/allowed-content-types", types : null, + proxyTypes : null, typesLoaded : false, @@ -53,6 +54,7 @@ fn: function (response) { Alfresco.logger.debug("loadTypes successCallback", arguments); this.types = response.json.types; + this.proxyTypes = response.json.proxyTypes; this.typesLoaded = true; if (callback) { @@ -271,7 +273,14 @@ var formRuntime = this.formUi.formsRuntime; var form = Dom.get(formRuntime.formId); var propertyData = formRuntime._buildAjaxForSubmit(form); - propertyData.contentType = contentType; + + //Replace content type with cm:content for proxy types, to allow aspects to be added + if (this.proxyTypes && this.proxyTypes.indexOf(contentType)!==-1) { + propertyData.contentType = "cm:content"; + } else { + propertyData.contentType = contentType; + } + this.fileStore[data.id].propertyData = propertyData; Alfresco.logger.debug("END processMetadata", propertyData); }, diff --git a/surf/src/main/resources/META-INF/share-config-custom.xml b/surf/src/main/resources/META-INF/share-config-custom.xml index f4563c1..b021d54 100644 --- a/surf/src/main/resources/META-INF/share-config-custom.xml +++ b/surf/src/main/resources/META-INF/share-config-custom.xml @@ -16,11 +16,13 @@
+
+ @@ -33,6 +35,14 @@ + + + + supported-proxy-types-select + + +