01-08-2013 11:17 AM
Hi,
I'm trying to make it possible to manage from the UI the content of custom directories, which I couldn't implement as vocabularies since I needed to add some custom columns. It seems like we can contribute directories to the "Vocabularies" admin tab by setting a custom layout, so I tried to build my own through Studio:
-I made a custom form layout that uses the /layouts/directory_layout_template.xhtml template
/>
-I contributed the layout through an XML contribution:
<extension target="org.nuxeo.ecm.directory.ui.DirectoryUIManager" point="directories">
<directory name="XXX" layout="FormLayoutXXX@edit" sortField="label" />
</extension>
The last part feels a bit hacky, but it actually manages to bring the directory correctly on the admin tab, and I'm even able to edit or delete items correctly.
But! I can't create new entries. I also tried to use the "...@create" layout in case it was different in any way, still I fail to create new entries with the following error:
org.nuxeo.ecm.core.api.ClientException: org.nuxeo.ecm.directory.DirectoryException: Missing id
at org.nuxeo.ecm.webapp.directory.DirectoryUIActionsBean.createDirectoryEntry(DirectoryUIActionsBean.java:248)
(actually thrown at SQLSession#createEntry(Map<String, Object>), l.180)
The code looks for a "id" field among the entry fields ; in the case of custom directories, while "id" is indeed unset, "customSchema:id" is actually set. As far as I could dig, the problem seems to lie in that fields fetched through entry.getProperties(schemaName)
(SQLSession, l.1086) do not contain the prefix in the case of vocabularies, but they do otherwise, and the SQLSession doesn't like it.
Thanks for your help.
EDIT:
.
<directory name="XXX">
<schema>schemaXXX</schema>
<dataSource>java:/nxsqldirectory</dataSource>
<cacheTimeout>3600</cacheTimeout>
<cacheMaxSize>1000</cacheMaxSize>
<table>vocabulary_XXX</table>
<idField>id</idField>
<autoincrementIdField>false</autoincrementIdField>
<dataFile>directories/XXX.csv</dataFile>
<createTablePolicy>on_missing_columns</createTablePolicy>
</directory>
.
<?xml version="1.0"?>
<xs:schema targetNamespace="http://www.nuxeo.org/ecm/schemas/directory_XXX"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="id" type="xs:string"/>
<xs:element name="label" type="xs:string"/>
<xs:element name="custom_col_1" type="xs:string"/>
<xs:element name="custom_col_2" type="xs:string"/>
<xs:element name="custom_col_3" type="xs:string"/>
<xs:element name="obsolete" type="xs:integer" default="0"/>
<xs:element name="ordering" type="xs:integer" default="10000000"/>
</xs:schema>
.
"id","label","custom_col_1","custom_col_2","custom_col_3","obsolete","ordering"
"...","...",,"..","...","0","0"
01-30-2013 10:59 AM
Hello,
I don't know if you still have the problem, but...
I suppose you added a prefix for your custom directory schema, in your schema contrib file :
<schema name="pack" src="directoryschema/pack.xsd" prefix="pp" />
If this is the case, removing the prefix should resolve the problem. (Still, it doesn't really solve the problem, this is just a bug workaround)
01-09-2013 06:34 AM
How did you define your directory in XML ?
01-09-2013 07:15 AM
I just added some details on the post, thanks
01-30-2013 10:59 AM
Hello,
I don't know if you still have the problem, but...
I suppose you added a prefix for your custom directory schema, in your schema contrib file :
<schema name="pack" src="directoryschema/pack.xsd" prefix="pp" />
If this is the case, removing the prefix should resolve the problem. (Still, it doesn't really solve the problem, this is just a bug workaround)
01-30-2013 11:06 AM
Woah, I just tried, and it worked. Awesome! Thank you a lot, I was really out of ideas on this one.
01-30-2013 11:12 AM
You are welcome. I usually don't put prefix for directories, as i had some problems in the past
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.