12-11-2018 01:04 AM
i'm stuck from past 1 week for this topic , not able to create my own metadata content template
how many files are to be created and what are the dependency needed?
i'm not able to figure it out properly
i have gone through all the alfresco documentation online and also with so many links but no progress at all
previously i mentioned this question even though i couldn't make it out of it
please help me with this metadata creation from basic steps from where exactly should i start creating metadata template
metadata template for eg it could be any document like Sales document with it's required metadata like document id , name, sales period etc etc..
give me the steps or provide some sample template for it so it could be great pleasure.
thank you
12-11-2018 07:31 AM
Hi,
I have used sdk2 for this type of configuration.
1)Create Content model and deploy it.
Step-By-Step: Creating A Custom Model
2)Configure you custom metedata with custom form
Displaying type metadata | Alfresco Documentation
3) Create button to create custom content(you can add this control to create content menu also)
share\src\main\amp\config\alfresco\web-extension\site-data\extensions\xxx.xml
<extension>
<modules>
<module>
<id> Custom Document Lirary Button</id>
<version>1.0</version>
<auto-deploy>true</auto-deploy>
<customizations>
<customization>
<targetPackageRoot>org.alfresco.components.documentlibrary</targetPackageRoot>
<sourcePackageRoot>com.org.components.documentlibrary</sourcePackageRoot>
</customization>
</customizations>
</module>
</modules>
</extension>
config\alfresco\web-extension\site-webscripts\com\org\components\documentlibrary\documentlist-v2.get.html.ftl
<@markup id="documentlist-dependencies" target="js" action="after" scope="global">
<@script type="text/javascript" src="${url.context}/res/js/components/documentlibrary/extensions/custom-documentlist.js" group="documentlibrary"/>
</@markup>
config\alfresco\web-extension\site-webscripts\com\org\components\documentlibrary\documentlist-v2.get.js
for (var i=0; i<model.widgets.length; i++) {
if (model.widgets[i].id == "DocumentList") {
model.widgets[i].name = "ORG.components.DocumentList";
} }
src\main\amp\web\js\components\documentlibrary\extensions\org-documentlist.js
if (typeof ORG == undefined || !ORG) {
var ORG = {};
}
if (!ORG.components) {
ORG.components = {};
}
(function() {
var $siteURL = Alfresco.util.siteURL;
ORG.components.DocumentList = function CustomDocumentList_constructor(htmlId) {
ORG.components.DocumentList.superclass.constructor.call(this, htmlId);
return this;
};
YAHOO.extend(ORG.components.DocumentList, Alfresco.DocumentList,
{
onReady: function CustomDL_onReady()
{
ORG.components.DocumentList.superclass.onReady.call(this);
var elms=Dom.getElementsByClassName("left");
var spn=document.createElement('span');
var btn = document.createElement('button');
var t = document.createTextNode("Computer & Mobile");
btn.appendChild(t);
btn.onclick= this.onButtonClick;
spn.setAttribute('class','yui-button yui-push-button');
spn.appendChild(btn);
elms[0].appendChild(spn);
},
onButtonClick: function CustomDL_onButtonClick(e, p_obj)
{
var toolbar = Alfresco.util.ComponentManager.findFirst("Alfresco.DocListToolbar");
var actions = toolbar.modules.docList;
var destination = toolbar.doclistMetadata.parent.nodeRef;
var doBeforeDialogShow = function DLTB_onNewFolder_doBeforeDialogShow(p_form, p_dialog)
{
Dom.get(p_dialog.id + "-dialogTitle").innerHTML = "Header";
Dom.get(p_dialog.id + "-dialogHeader").innerHTML = "Title";
};
var templateUrl = YAHOO.lang.substitute(Alfresco.constants.URL_SERVICECONTEXT + "components/form?itemKind={itemKind}&itemId={itemId}&destination={destination}&mode={mode}&submitType={submitType}&formId={formId}&showCancelButton=true",
{
itemKind: "type",
itemId: "custom-type", // Here define your custom type that you have defined in content-model
destination: destination,
mode: "create",
submitType: "json",
formId: "doclib-common"
});
var createFolder = new Alfresco.module.SimpleDialog(toolbar.id + "-createFolder");
createFolder.setOptions(
{
width: "58em", templateUrl: templateUrl, actionUrl: null, destroyOnHide: true,
doBeforeDialogShow:
{
fn: doBeforeDialogShow,
scope: this
},
onSuccess:
{
fn: function DLTB_onNewFolder_success(response)
{
var activityData;
var folderName = response.config.dataObj["prop_name"];
var folderNodeRef = response.json.persistedObject;
activityData =
{
fileName: folderName,
nodeRef: folderNodeRef,
path: toolbar.currentPath + (toolbar.currentPath !== "/" ? "/" : "") + folderName
};
toolbar.modules.actions.postActivity(toolbar.options.siteId, "folder-added", "documentlibrary", activityData);
YAHOO.Bubbling.fire("folderCreated",
{
name: folderName,
parentNodeRef: destination
});
Alfresco.util.PopupManager.displayMessage(
{ text: toolbar.msg("message.new-folder.success", folderName) });}, scope: this},
onFailure:
{
fn: function DLTB_onNewFolder_failure(response)
{ if (response){
var folderName = response.config.dataObj["prop_name"];
Alfresco.util.PopupManager.displayMessage(
{ text: toolbar.msg("message.new-folder.failure", folderName)});
}else{
Alfresco.util.PopupManager.displayMessage(
{ text: toolbar.msg("message.failure") }); }
createFolder.widgets.cancelButton.set("disabled", false);
},scope: this
}});
createFolder.show();
return createFolder;}});})();
12-11-2018 05:12 AM
Hi,
Do you want to create your content with custom property same way as alfresco is creating(Folder with name,title,description,Plain text with name,content,title,description)?
12-11-2018 05:40 AM
Yes
12-11-2018 07:31 AM
Hi,
I have used sdk2 for this type of configuration.
1)Create Content model and deploy it.
Step-By-Step: Creating A Custom Model
2)Configure you custom metedata with custom form
Displaying type metadata | Alfresco Documentation
3) Create button to create custom content(you can add this control to create content menu also)
share\src\main\amp\config\alfresco\web-extension\site-data\extensions\xxx.xml
<extension>
<modules>
<module>
<id> Custom Document Lirary Button</id>
<version>1.0</version>
<auto-deploy>true</auto-deploy>
<customizations>
<customization>
<targetPackageRoot>org.alfresco.components.documentlibrary</targetPackageRoot>
<sourcePackageRoot>com.org.components.documentlibrary</sourcePackageRoot>
</customization>
</customizations>
</module>
</modules>
</extension>
config\alfresco\web-extension\site-webscripts\com\org\components\documentlibrary\documentlist-v2.get.html.ftl
<@markup id="documentlist-dependencies" target="js" action="after" scope="global">
<@script type="text/javascript" src="${url.context}/res/js/components/documentlibrary/extensions/custom-documentlist.js" group="documentlibrary"/>
</@markup>
config\alfresco\web-extension\site-webscripts\com\org\components\documentlibrary\documentlist-v2.get.js
for (var i=0; i<model.widgets.length; i++) {
if (model.widgets[i].id == "DocumentList") {
model.widgets[i].name = "ORG.components.DocumentList";
} }
src\main\amp\web\js\components\documentlibrary\extensions\org-documentlist.js
if (typeof ORG == undefined || !ORG) {
var ORG = {};
}
if (!ORG.components) {
ORG.components = {};
}
(function() {
var $siteURL = Alfresco.util.siteURL;
ORG.components.DocumentList = function CustomDocumentList_constructor(htmlId) {
ORG.components.DocumentList.superclass.constructor.call(this, htmlId);
return this;
};
YAHOO.extend(ORG.components.DocumentList, Alfresco.DocumentList,
{
onReady: function CustomDL_onReady()
{
ORG.components.DocumentList.superclass.onReady.call(this);
var elms=Dom.getElementsByClassName("left");
var spn=document.createElement('span');
var btn = document.createElement('button');
var t = document.createTextNode("Computer & Mobile");
btn.appendChild(t);
btn.onclick= this.onButtonClick;
spn.setAttribute('class','yui-button yui-push-button');
spn.appendChild(btn);
elms[0].appendChild(spn);
},
onButtonClick: function CustomDL_onButtonClick(e, p_obj)
{
var toolbar = Alfresco.util.ComponentManager.findFirst("Alfresco.DocListToolbar");
var actions = toolbar.modules.docList;
var destination = toolbar.doclistMetadata.parent.nodeRef;
var doBeforeDialogShow = function DLTB_onNewFolder_doBeforeDialogShow(p_form, p_dialog)
{
Dom.get(p_dialog.id + "-dialogTitle").innerHTML = "Header";
Dom.get(p_dialog.id + "-dialogHeader").innerHTML = "Title";
};
var templateUrl = YAHOO.lang.substitute(Alfresco.constants.URL_SERVICECONTEXT + "components/form?itemKind={itemKind}&itemId={itemId}&destination={destination}&mode={mode}&submitType={submitType}&formId={formId}&showCancelButton=true",
{
itemKind: "type",
itemId: "custom-type", // Here define your custom type that you have defined in content-model
destination: destination,
mode: "create",
submitType: "json",
formId: "doclib-common"
});
var createFolder = new Alfresco.module.SimpleDialog(toolbar.id + "-createFolder");
createFolder.setOptions(
{
width: "58em", templateUrl: templateUrl, actionUrl: null, destroyOnHide: true,
doBeforeDialogShow:
{
fn: doBeforeDialogShow,
scope: this
},
onSuccess:
{
fn: function DLTB_onNewFolder_success(response)
{
var activityData;
var folderName = response.config.dataObj["prop_name"];
var folderNodeRef = response.json.persistedObject;
activityData =
{
fileName: folderName,
nodeRef: folderNodeRef,
path: toolbar.currentPath + (toolbar.currentPath !== "/" ? "/" : "") + folderName
};
toolbar.modules.actions.postActivity(toolbar.options.siteId, "folder-added", "documentlibrary", activityData);
YAHOO.Bubbling.fire("folderCreated",
{
name: folderName,
parentNodeRef: destination
});
Alfresco.util.PopupManager.displayMessage(
{ text: toolbar.msg("message.new-folder.success", folderName) });}, scope: this},
onFailure:
{
fn: function DLTB_onNewFolder_failure(response)
{ if (response){
var folderName = response.config.dataObj["prop_name"];
Alfresco.util.PopupManager.displayMessage(
{ text: toolbar.msg("message.new-folder.failure", folderName)});
}else{
Alfresco.util.PopupManager.displayMessage(
{ text: toolbar.msg("message.failure") }); }
createFolder.widgets.cancelButton.set("disabled", false);
},scope: this
}});
createFolder.show();
return createFolder;}});})();
12-11-2018 08:35 AM
thanks for the help.
and what is above code for?
can you give any idea for that?
and can you tell me how to create custom pages and provide this above content in it?
12-11-2018 09:59 AM
This code is used to create custom content like create folder/plain text.
12-12-2018 01:10 AM
can i use default custom model for my use?
12-12-2018 10:01 AM
Hi:
A simple example is here:
https://github.com/zylklab/zk-url-shortener
In zylklab there are other examples, that use metadata templates for custom models.
https://github.com/zylklab/zk-zpm-statusable
Regards.
--C.
12-13-2018 12:04 AM
Thanks Cesar Sir
Explore our Alfresco products with the links below. Use labels to filter content by product module.