03-26-2013 05:35 AM
Hi,
I need to replace the subject field vocabularies by other domain specific tags. I want to do it in a plugin contribution so that it is easier for us to keep several environments in sync.
I have found how to contribute new vocabularies, but I don't know what do I need to override to replace the vanilla topic/subtopic with a custom vocabulary (it will also have 2 level hierarchy).
Anyone may point me in the right direction?
Edit: We are using Nuxeo CAP with DAM (5.6)
Thanks. Jose
04-04-2013 03:19 PM
Ok. This is what I have done in case it can be useful to someone:
I have overriden the topic and subtopic directories defined in nuxeo-platform-default-config. Like this:
In my plugin, I have created the csv files for topics and subtopics, with the same schemas than the originals (check the source!):
src/main/resources/directories/my-subtopic.csv
src/main/resources/directories/my-topic.csv
Then I have created the contribution file:
OSGI-INF/my-directories-contrib.xml
With this:
<?xml version="1.0"?>
<component name="org.my.ecm.directories">
<require>org.nuxeo.ecm.directories</require>
<extension target="org.nuxeo.ecm.directory.sql.SQLDirectoryFactory"
point="directories">
<directory name="subtopic">
<schema>xvocabulary</schema>
<parentDirectory>topic</parentDirectory>
<dataSource>java:/nxsqldirectory</dataSource>
<cacheTimeout>3600</cacheTimeout>
<cacheMaxSize>1000</cacheMaxSize>
<table>my_subtopic</table>
<idField>id</idField>
<autoincrementIdField>false</autoincrementIdField>
<dataFile>directories/my-subtopic.csv</dataFile>
<createTablePolicy>on_missing_columns</createTablePolicy>
</directory>
<directory name="topic">
<schema>vocabulary</schema>
<dataSource>java:/nxsqldirectory</dataSource>
<cacheTimeout>3600</cacheTimeout>
<cacheMaxSize>1000</cacheMaxSize>
<table>my_topic</table>
<idField>id</idField>
<autoincrementIdField>false</autoincrementIdField>
<dataFile>directories/my-topic.csv</dataFile>
<createTablePolicy>on_missing_columns</createTablePolicy>
</directory>
</extension>
</component>
The table names must be different than the original ones.
Then, in META-INF/MANIFEST.MF:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: my-plugin
Bundle-SymbolicName: org.my.video;singleton:=true
Bundle-Version: 1.0.0
Bundle-Vendor: Me
Bundle-Category: web
Bundle-Localization: plugin
Nuxeo-Component: OSGI-INF/my-directories-contrib.xml
Require-Bundle: org.nuxeo.ecm.default.config
In OSGI-INF/l10n/ I have created the desired l10n properties for the topics and subtopics (must match the keys defined in the csv files), for instance:
OSGI-INF/l10n/messages.properties
OSGI-INF/l10n/messages_en.properties
OSGI-INF/l10n/messages_fr.properties
And finally in OSGI-INF/deployment-fragment.xml:
<?xml version="1.0"?>
<fragment version="1">
<require>all</require>
<install>\
<unzip from="${bundle.fileName}" to="/" prefix="web">
<include>/web/nuxeo.war/**</include>
</unzip>
<delete path="${bundle.fileName}.tmp" />
<mkdir path="${bundle.fileName}.tmp" />
<unzip from="${bundle.fileName}" to="${bundle.fileName}.tmp" />
<append from="${bundle.fileName}.tmp/OSGI-INF/l10n/messages.properties"
to="nuxeo.war/WEB-INF/classes/messages.properties" addNewLine="true" />
<append from="${bundle.fileName}.tmp/OSGI-INF/l10n/messages_en.properties"
to="nuxeo.war/WEB-INF/classes/messages_en.properties" addNewLine="true" />
<append from="${bundle.fileName}.tmp/OSGI-INF/l10n/messages_fr.properties"
to="nuxeo.war/WEB-INF/classes/messages_fr.properties" addNewLine="true" />
<delete path="${bundle.fileName}.tmp" />
</install>
</fragment>
Cheers.
04-04-2013 03:19 PM
Ok. This is what I have done in case it can be useful to someone:
I have overriden the topic and subtopic directories defined in nuxeo-platform-default-config. Like this:
In my plugin, I have created the csv files for topics and subtopics, with the same schemas than the originals (check the source!):
src/main/resources/directories/my-subtopic.csv
src/main/resources/directories/my-topic.csv
Then I have created the contribution file:
OSGI-INF/my-directories-contrib.xml
With this:
<?xml version="1.0"?>
<component name="org.my.ecm.directories">
<require>org.nuxeo.ecm.directories</require>
<extension target="org.nuxeo.ecm.directory.sql.SQLDirectoryFactory"
point="directories">
<directory name="subtopic">
<schema>xvocabulary</schema>
<parentDirectory>topic</parentDirectory>
<dataSource>java:/nxsqldirectory</dataSource>
<cacheTimeout>3600</cacheTimeout>
<cacheMaxSize>1000</cacheMaxSize>
<table>my_subtopic</table>
<idField>id</idField>
<autoincrementIdField>false</autoincrementIdField>
<dataFile>directories/my-subtopic.csv</dataFile>
<createTablePolicy>on_missing_columns</createTablePolicy>
</directory>
<directory name="topic">
<schema>vocabulary</schema>
<dataSource>java:/nxsqldirectory</dataSource>
<cacheTimeout>3600</cacheTimeout>
<cacheMaxSize>1000</cacheMaxSize>
<table>my_topic</table>
<idField>id</idField>
<autoincrementIdField>false</autoincrementIdField>
<dataFile>directories/my-topic.csv</dataFile>
<createTablePolicy>on_missing_columns</createTablePolicy>
</directory>
</extension>
</component>
The table names must be different than the original ones.
Then, in META-INF/MANIFEST.MF:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: my-plugin
Bundle-SymbolicName: org.my.video;singleton:=true
Bundle-Version: 1.0.0
Bundle-Vendor: Me
Bundle-Category: web
Bundle-Localization: plugin
Nuxeo-Component: OSGI-INF/my-directories-contrib.xml
Require-Bundle: org.nuxeo.ecm.default.config
In OSGI-INF/l10n/ I have created the desired l10n properties for the topics and subtopics (must match the keys defined in the csv files), for instance:
OSGI-INF/l10n/messages.properties
OSGI-INF/l10n/messages_en.properties
OSGI-INF/l10n/messages_fr.properties
And finally in OSGI-INF/deployment-fragment.xml:
<?xml version="1.0"?>
<fragment version="1">
<require>all</require>
<install>\
<unzip from="${bundle.fileName}" to="/" prefix="web">
<include>/web/nuxeo.war/**</include>
</unzip>
<delete path="${bundle.fileName}.tmp" />
<mkdir path="${bundle.fileName}.tmp" />
<unzip from="${bundle.fileName}" to="${bundle.fileName}.tmp" />
<append from="${bundle.fileName}.tmp/OSGI-INF/l10n/messages.properties"
to="nuxeo.war/WEB-INF/classes/messages.properties" addNewLine="true" />
<append from="${bundle.fileName}.tmp/OSGI-INF/l10n/messages_en.properties"
to="nuxeo.war/WEB-INF/classes/messages_en.properties" addNewLine="true" />
<append from="${bundle.fileName}.tmp/OSGI-INF/l10n/messages_fr.properties"
to="nuxeo.war/WEB-INF/classes/messages_fr.properties" addNewLine="true" />
<delete path="${bundle.fileName}.tmp" />
</install>
</fragment>
Cheers.
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.