MMI Name Authority schema extension notes
This page is out dated. Please see notes for v1.11.
Basic info:
Server: collectionspace.movingimage.us
Version: 1.9
Tenant: mmi
Tenant ID: 42
Tenant string name: PersonTenant42
XML namespace: http://collectionspace.org/services/person/local/mmi
Built using mini-build tool: /tmp/tenant-customizations-v1.9/
Name authority record
file paths:
/tmp/v1.9/services/acquisition/3rdparty/nuxeo-platform-cs-person-mmi/src/main/resources/schemas/persons_mmi.xsd /tmp/v1.9/services/acquisition/3rdparty/nuxeo-platform-cs-person-mmi/src/main/resources/META-INF/MANIFEST.MF /tmp/v1.9/services/acquisition/3rdparty/nuxeo-platform-cs-person-mmi/src/main/resources/OSGI-INF/core-types-contrib.xml /tmp/v1.9/services/acquisition/3rdparty/nuxeo-platform-cs-person-mmi/src/main/resources/OSGI-INF/ecm-types-contrib.xml /tmp/v1.9/services/acquisition/3rdparty/nuxeo-platform-cs-person-mmi/src/main/resources/OSGI-INF/layouts-contrib.xml /tmp/v1.9/services/acquisition/3rdparty/nuxeo-platform-cs-person-mmi/src/main/resources/OSGI-INF/life-cycle-contrib.xml /tmp/v1.9/services/acquisition/3rdparty/nuxeo-platform-cs-person-mmi/build.xml /tmp/v1.9/services/acquisition/3rdparty/nuxeo-platform-cs-person-mmi/pom.xml /tmp/v1.9/services/acquisition/3rdparty/build.xml /tmp/v1.9/services/acquisition/3rdparty/pom.xml -/tmp/v1.9/services/common/src/main/cspace/config/services/tenants/mmi/tenant-bindings.delta.xml- /usr/local/share/1.9/jboss-4.2.3.GA/server/cspace/cspace/config/services/tenants/mmi/tenant-bindings.delta.xml /tmp/tenant-customizations-v1.9/ui/our-tenant/bundle/core-messages.properties /tmp/tenant-customizations-v1.9/ui/our-tenant/html/pages/PersonTemplate.html /tmp/tenant-customizations-v1.9/application/our-tenant/base-authority-person.xml /tmp/tenant-customizations-v1.9/application/our-tenant/domain-authority-person.xml
Added a repeating controlled list (multi-valued field):
Name Type
1 This is a new field that will be added as a schema extension for the person authority. Since there is no current sub-module for our custom schema the first step is to add an person sub-module nuxeo-platform-cs-person-mmi
that defines the custom mmi schema. The following steps have been adapted from Rick's helpful How to add an extension schema page.
- a. add a custom person schema file
persons_mmi.xsd
with new field namenameType
Note new field on line 23.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- MMI Person schema (XSD) Entity : Person Part : local - Museum of the Moving Image (MMI) Used for: Nuxeo EP core document type $LastChangedRevision: 860 $ $LastChangedDate: 2009-10-14 14:48:05 -0700 (Wed, 14 Oct 2009) $ --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://collectionspace.org/services/person/local/mmi" xmlns="http://collectionspace.org/services/person/local/mmi" targetNamespace="http://collectionspace.org/services/person/local/mmi" version="0.1" > <!-- See http://wiki.collectionspace.org/display/collectionspace/Person+Service+Home --> <xs:element name="nameTypes"> <xs:complexType> <xs:sequence> <xs:element name="nameType" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
- b. edit
MANIFEST.MF
to reference newmmi
module Note references to lowercasemmi
tenant string name on lines 3, 4, and 18.Manifest-Version: 1.0 Bundle-ManifestVersion: 1 Bundle-Name: org.collectionspspace.personTenant42 Bundle-SymbolicName: org.collectionspace.personTenant42;singleton:=true Bundle-Version: 1.0.0 Bundle-Localization: plugin Bundle-Vendor: Nuxeo Require-Bundle: org.nuxeo.runtime, org.nuxeo.ecm.core.api, org.nuxeo.ecm.core, org.nuxeo.ecm.core.api, org.nuxeo.ecm.platform.types.api, org.nuxeo.ecm.platform.versioning.api, org.nuxeo.ecm.platform.ui, org.nuxeo.ecm.platform.forms.layout.client, org.nuxeo.ecm.platform.ws, org.collectionspace.collectionspace_core Provide-Package: org.collectionspace.personTenant42 Nuxeo-Component: OSGI-INF/core-types-contrib.xml, OSGI-INF/life-cycle-contrib.xml, OSGI-INF/ecm-types-contrib.xml, OSGI-INF/layouts-contrib.xml
- c. add a custom schema to parent document type
core-types-contrib.xml
and reference new person authority schema Note reference tommi
schema names and tenant string names on lines 2, 8, 21 and 26.<?xml version="1.0"?> <component name="org.collectionspace.personTenant42.coreTypes"> <!--<extension target="org.nuxeo.ecm.core.schema.TypeService" point="schema"> <schema name="personauthorities_common" prefix="personauthorities_common" src="schemas/personauthorities_common.xsd"/> </extension>--> <extension target="org.nuxeo.ecm.core.schema.TypeService" point="schema"> <schema name="persons_mmi" prefix="persons_mmi" src="schemas/persons_mmi.xsd"/> </extension> <!--<extension target="org.nuxeo.ecm.core.schema.TypeService" point="doctype"> <doctype name="Personauthority" extends="Document"> <schema name="common"/> <schema name="dublincore"/> <schema name="collectionspace_core"/> <schema name="personauthorities_common"/> </doctype> </extension>--> <extension target="org.nuxeo.ecm.core.schema.TypeService" point="doctype"> <doctype name="PersonTenant42" extends="Document"> <schema name="common"/> <schema name="dublincore"/> <schema name="collectionspace_core"/> <schema name="persons_common"/> <schema name="persons_mmi"/> <!--<prefetch>persons_common:displayName persons_common:refName persons_common:shortIdentifier</prefetch>--> </doctype> </extension> </component>
- d. edit
ecm-types-contrib.xml
to reference newmmi
component Note reference tommi
tenant string name on lines 2, 31, 39, 45 and 51.<?xml version="1.0"?> <component name="org.collectionspace.personTenatn42.ecm.types"> <!--<extension target="org.nuxeo.ecm.platform.types.TypeService" point="types"> <type id="Personauthority" coretype="Personauthority"> <label>org.collectionspace.personauthority</label> <default-view>view_documents</default-view> <layouts mode="any"> <layout>heading</layout> <layout>collectionspace_core</layout> <layout>cspersonauthority</layout> </layouts> </type> <type id="Folder" coretype="Folder"> <subtypes> <type>Personauthority</type> </subtypes> </type> <type id="Workspace" coretype="Workspace"> <subtypes> <type>Personauthority</type> </subtypes> </type> </extension>--> <extension target="org.nuxeo.ecm.platform.types.TypeService" point="types"> <type id="PersonTenant42" coretype="PersonTenant42"> <label>org.collectionspace.person</label> <!--icon>/icons/file.gif</icon--> <default-view>view_documents</default-view> <layouts mode="any"> <layout>heading</layout> <layout>collectionspace_core</layout> <layout>personTenant42</layout> </layouts> </type> <type id="Folder" coretype="Folder"> <subtypes> <type>PersonTenant42</type> </subtypes> </type> <type id="Workspace" coretype="Workspace"> <subtypes> <type>PersonTenant42</type> </subtypes> </type> </extension> </component>
- e. edit
layouts-contrib.xml
to reference newmmi
componentNote reference to
mmi
tenant string name on line 3<?xml version="1.0"?> <component name="org.collectionspace.personTenant42.layouts.webapp"> ...
and on line 76.
<extension target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager" point="layouts"> <layout name="personTenant42"> <templates> <template mode="any">/layouts/layout_default_template.xhtml</template> </templates> ...
- f. edit
life-cycle-contrib.xml
to reference newmmi
component Note reference tommi
tenant string name on lines 2 and 7.<?xml version="1.0"?> <component name="org.collectionspace.ecm.platform.personTenant42.LifeCycleManagerExtensions"> <extension target="org.nuxeo.ecm.core.lifecycle.LifeCycleService" point="types"> <types> <!--<type name="Personauthority">default</type>--> <type name="PersonTenant42">default</type> </types> </extension> </component>
- g. edit
3rdparty/nuxeo-platform-cs-person-mmi/build.xml
so to build the custom sub-module Note reference tommi
project name on line 1, and tenant string name on lines 13 and 15.<project name="nuxeo-platform-cs-personTenant42" default="package" basedir="."> <description> person nuxeo document type </description> <!-- set global properties for this build --> <property name="services.trunk" value="../../../.."/> <!-- environment should be declared before reading build.properties --> <property environment="env" /> <property file="${services.trunk}/build.properties" /> <property name="mvn.opts" value="" /> <property name="src" location="src"/> <property name="nuxeo.person.jar" value="org.collectionspace.services.personTenant42.3rdparty.nuxeo-${cspace.release}.jar"/> <property name="nuxeo.person.jars.all" value="org.collectionspace.services.personTenant42.3rdparty.nuxeo-*.jar"/> ...
- h. edit
3rdparty/nuxeo-platform-cs-person-mmi/pom.xml
to reference newmmi
component Note reference tommi
tenant string name on lines 12, 13, and description on line 15.<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <parent> <groupId>org.collectionspace.services</groupId> <artifactId>org.collectionspace.services.person.3rdparty</artifactId> <version>1.9-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.collectionspace.services</groupId> <artifactId>org.collectionspace.services.personTenant42.3rdparty.nuxeo</artifactId> <name>services.personTenant42.3rdparty.nuxeo</name> <packaging>jar</packaging> <description> MMI Person Nuxeo Document Type </description> ...
- i. edit
3rdparty/build.xml
so to build the custom sub-moduleNote reference to
mmi
custom module on lines 11, 116, 122, 128 and 134.<project name="person.3rdparty" default="package" basedir="."> <description> person service 3rdparty </description> <!-- set global properties for this build --> <property name="services.trunk" value="../../.."/> <!-- enviornment should be declared before reading build.properties --> <property environment="env" /> <property file="${services.trunk}/build.properties" /> <property name="mvn.opts" value="" /> <property name="src" location="src"/> <property name="nuxeo-platform-person" value="nuxeo-platform-person"/> <property name="nuxeo-platform-person-mmi" value="nuxeo-platform-person-mmi"/> ...
and further down the file
<target name="deploy" depends="install" description="deploy person in ${jboss.server.nuxeo}"> <ant antfile="nuxeo-platform-cs-person/build.xml" target="deploy" inheritall="false"/> <ant antfile="nuxeo-platform-cs-person-mmi/build.xml" target="deploy" inheritall="false"/> </target> <target name="undeploy" description="undeploy person from ${jboss.server.nuxeo}"> <ant antfile="nuxeo-platform-cs-person/build.xml" target="undeploy" inheritall="false"/> <ant antfile="nuxeo-platform-cs-person-mmi/build.xml" target="undeploy" inheritall="false"/> </target> <target name="dist" description="generate distribution for person" depends="package"> <ant antfile="nuxeo-platform-cs-person/build.xml" target="dist" inheritall="false"/> <ant antfile="nuxeo-platform-cs-person-mmi/build.xml" target="dist" inheritall="false"/> </target> <target name="dist_installer" description="generate distribution for collectionobject" depends="package"> <ant antfile="nuxeo-platform-cs-person/build.xml" target="dist_installer" inheritall="false"/> <ant antfile="nuxeo-platform-cs-person-mmi/build.xml" target="dist_installer" inheritall="false"/> </target> </project>
- j. edit
3rdparty/pom.xml
to reference newmmi
component Note reference tommi
custom module on line 21.<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <parent> <groupId>org.collectionspace.services</groupId> <artifactId>org.collectionspace.services.person</artifactId> <version>1.9-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.collectionspace.services</groupId> <artifactId>org.collectionspace.services.person.3rdparty</artifactId> <name>services.person.3rdparty</name> <packaging>pom</packaging> <description> 3rd party build for person service </description> <modules> <module>nuxeo-platform-cs-person</module> <module>nuxeo-platform-cs-person-mmi</module> </modules> </project>
- k. add this code chunk to tenant binding
tenant-bindings-delta.xml
<!-- Person authority --> <tenant:serviceBindings merge:matcher="id" id="Persons"> <service:object xmlns:service="http://collectionspace.org/services/common/service" > <service:part id="42" merge:matcher="skip" merge:action="insert" control_group="Managed" versionable="true" auditable="false" label="persons_mmi" updated="" order="4"> <service:content contentType="application/xml"> <service:xmlContent namespaceURI="http://collectionspace.org/services/person/local/mmi" schemaLocation="http://collectionspace.org/services/person/local/mmi http://collectionspace.org/services/person/local/persons_mmi.xsd" /> </service:content> </service:part> </service:object> </tenant:serviceBindings>
2. add field id and selector to domain-authority-person.xml
Note the section
attribute for the new field. Every new field will have this identifying attribute.
<repeat id="nameTypes" section="mmi"> <field id="nameType" section="mmi"> <selector>personAuthority-nameType</selector> <options> <option id="display" default="yes">Display</option> <option id="index">Index</option> <option id="maiden">Maiden</option> <option id="pseudonym">Pseudonym</option> </options> </field> </repeat>
3. edit base-authority-person.xml
to point to new schema
Note the id
attribute on line 11. This connects with the section
attribute from the domain-authority-person.xml
file.
<record id="person" type="authority,compute-displayname"> <terms-used>false</terms-used> <!-- XXX servcie layer doesn't currently support person terms but it does on organisations - go figure --> <web-url>person</web-url> <services-tenant-auth-singular>Personauthority</services-tenant-auth-singular> <services-tenant-auth-plural>Personauthorities</services-tenant-auth-plural> <services-tenant-singular>Person</services-tenant-singular> <services-instances-path>personauthorities_common:http://collectionspace.org/services/person,abstract-common-list/list-item</services-instances-path> <services-single-instance-path>personauthorities_common:http://collectionspace.org/services/person,personauthorities_common</services-single-instance-path> <services-list-path>http://collectionspace.org/services/person,abstract-common-list/list-item</services-list-path> <services-record-path id="mmi">persons_mmi:http://collectionspace.org/services/person/local/mmi,persons_mmi</services-record-path> <services-record-path>persons_common:http://collectionspace.org/services/person,persons_common</services-record-path> ...
4. add field label to core-messages.properties
person-nameTypesLabel: Name type
5. added to PersonTemplate.html
<div class="info-pair"> <div class="header"> <div class="csc-person-nameTypes-label label"></div> </div> <div class="content"> <select type="text" class="csc-personAuthority-nameType input-select" > <option value="">Options not loaded</option> </select> </div> </div>
6. run mini-build scripts to deploy changes across all layers and then build & deploy updated services module from source
cd /tmp/tenant-customizations-v1.9/application ant deploy cd /tmp/tenant-customizations-v1.9/ui ant deploy cd /tmp/v1.9/services/person mvn clean install -DskipTests cd /tmp/v1.9/services/person ant undeploy deploy
Added two fields which are a repeating group with a name authority field and a controlled list:
Affiliated organization and Affiliated organization type.
1. added to persons_mmi.xsd
<xs:element name="affiliatedPersonOrgGroupList" type="affiliatedPersonOrgGroupList"/> <xs:complexType name="affiliatedPersonOrgGroupList"> <xs:sequence> <xs:element name="affiliatedPersonOrgGroup" type="affiliatedPersonOrgGroup" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="affiliatedPersonOrgGroup"> <xs:sequence> <xs:element name="affiliatedPersonOrg" type="xs:string"/> <xs:element name="affiliatedPersonOrgType" type="xs:string"/> </xs:sequence> </xs:complexType>
2. added to domain-authority-person.xml
<repeat id="affiliatedPersonOrgGroupList/affiliatedPersonOrgGroup" section="mmi"> <field id="affiliatedPersonOrg" autocomplete="person-person" section="mmi"> <selector>personAuthority-affiliatedPersonOrg</selector> </field> <field id="affiliatedPersonOrgType" section="mmi"> <selector>personAuthority-affiliatedPersonOrgType</selector> <options> <option id="">Please select a value</option> <option id="employee">Employee</option> <option id="founder">Founder</option> <option id="member">Member</option> <option id="partner">Partner</option> </options> </field> </repeat>
3. added to core-messages.properties
person-affiliatedPersonOrgGroupLabel: Affiliated person/organization person-affiliatedPersonOrgLabel: Affiliated person/organization person-affiliatedPersonOrgTypeLabel: Affiliated person/organization type
4. added to PersonTemplate.html
<div class="info-pair"> <div class="header"> <div class="label csc-person-affiliatedPersonOrgGroup-label label"></div> </div> <div class="content"> <table> <thead> <tr> <td class="csc-person-affiliatedPersonOrg-label label"></td> <td class="csc-person-affiliatedPersonOrgType-label label"></td> </tr> </thead> <tbody> <tr class="csc-person-affiliatedPersonOrgGroup"> <td> <input type="text" class="input-alpha-table csc-personAuthority-affiliatedPersonOrg" /> </td> <td><select class="input-select csc-personAuthority-affiliatedPersonOrgType"> <option value="">Options not loaded</option> </select> </td> </tr> </tbody> </table> </div> </div>
Next, changed Person's Salutation and Person's Title from a controlled list to a normal text field.
1. commented out the <options> ... </options>
portion from both fields in base-authority-person.xml
<field id="salutation"> <selector>personAuthority-salutation</selector> <!--<options> <option id="dear" default="yes">Dear</option> <option id="hello">Hello</option> <option id="to">To</option> </options>--> </field> <field id="title"> <selector>personAuthority-title</selector> <!--<options> <option id="" default="yes">Please select a value</option> <option id="Mr">Mr</option> <option id="Mrs">Mrs</option> <option id="Ms">Ms</option> <option id="Miss">Miss</option> <option id="Dr">Dr</option> <option id="Professor">Professor</option> <option id="Sir">Sir</option> <option id="Dame">Dame</option> <option id="Baron">Baron</option> <option id="Baroness">Baroness</option> <option id="Lord">Lord</option> <option id="Lady">Lady</option> </options>--> </field>
2. Changed input type for the two fields in PersonTemplate.html
from <select
to <input
<tr class="csc-personAuthority-name"> <td><input type="text" class="csc-personAuthority-salutation"/></td> <td><input type="text" class="csc-personAuthority-title"/></td> ...
Changed Term Status from normal text field into a controlled list field
1. added an <options> ... </options>
section to the termStatus section in base-authority-person.xml
<field id="termStatus" seperate_ui_container="true"> <selector>personAuthority-status</selector> <options> <option id="quickaddedneedsattention" default="yes">Quick added, needs attention</option> <option id="inprogress">In progress</option> <option id="complete">Complete</option> </options> </field>
Everything below this line is old and incorrect. Please see the notes for v1.11 for complete instructions.
Added seven new fields:
Source; Entity type; Life span; Scope notes; Source notes; Organization's contact name; and Function
1. added to persons_common.xsd
<xs:element name="nameSource" type="xs:string"/> <xs:element name="entityType" type="xs:string"/> <xs:element name="lifeSpan" type="xs:string"/> <xs:element name="scopeNote" type="xs:string"/> <xs:element name="sourceNote" type="xs:string"/> <xs:element name="orgContactNames"> <xs:complexType> <xs:sequence> <xs:element name="orgContactName" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="nameFunctions"> <xs:complexType> <xs:sequence> <xs:element name="nameFunction" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element>
2. added to cspace-config-core.xml
<field id="nameSource" seperate_ui_container="true" section="mmi"> <selector>personAuthority-nameSource</selector> <options> <option id="" default="yes">Please select a value</option> <option id="afi_catalog">AFI Catalog</option> <option id="encyclopedia_of_early_cinema">Encyclopedia of Early Cinema</option> <option id="halliwells_whos_who_in_the_movies">Halliwell's Who's Who in the Cinema</option> <option id="library_of_congress_name_authority">Library of Congress Name Authority</option> <option id="other">Other</option> <option id="root">Root</option> <option id="silent_film necrology_2nd_edition">Silent Film Necrology, 2nd Edition</option> <option id="the_film_encyclopedia_4th_edition">The Film Encyclopedia, 4th Edition</option> </options> </field> <field id="entityType" seperate_ui_container="true" section="mmi"> <selector>personAuthority-entityType</selector> <options> <option id="" default="yes">Please select a value</option> <option id="corporation">Corporation</option> <option id="group">Group</option> <option id="individual">Individual</option> </options> </field> <field id="lifeSpan" section="mmi"> <selector>personAuthority-lifeSpan</selector> </field> <field id="scopeNote" section="mmi"> <selector>personAuthority-scopeNote</selector> </field> <field id="sourceNote" section="mmi"> <selector>personAuthority-sourceNote</selector> </field> <!-- new MMI repeatable field --> <repeat id="orgContactNames" section="mmi"> <!--<selector>personAuthority-orgContactName</selector>--> <field id="orgContactName" autocomplete="person-person section="mmi"> <selector>personAuthority-orgContactName</selector> </field> </repeat> <repeat id="nameFunctions section="mmi""> <!--<selector>personAuthority-nameFunction</selector>--> <field id="nameFunction" section="mmi"> <selector>personAuthority-nameFunction</selector> </field> </repeat>
3. added to core-messages.properties
person-nameSourceLabel: Source person-entityTypeLabel: Entity type person-lifeSpanLabel: Life span person-scopeNoteLabel: Scope note person-sourceNoteLabel: Source note person-orgContactNamesLabel: Organization's contact name person-nameFunctionsLabel: Function
4. added to PersonTemplate.html
<div class="info-pair"> <div class="header"> <div class="csc-person-nameSource-label label"></div> </div> <div class="content"> <select class="csc-personAuthority-nameSource input-select" ><option value="">Options not loaded</option></select> </div> </div> <div class="info-pair-select"> <div class="header"> <div class="csc-person-entityType-label label"></div> </div> <div class="content"> <select class="csc-personAuthority-entityType input-select" ><option value="">Options not loaded</option></select> </div> </div> <div class="info-pair-select"> <div class="header"> <div class="csc-person-lifeSpan-label label"></div> </div> <div class="content"> <input type="text" class="csc-personAuthority-lifeSpan" disabled="disbaled" /> </div> </div> <div class="info-pair"> <div class="header"> <div class="csc-person-scopeNote-label label"></div> </div> <div class="content"> <textarea rows="4" cols="30" class="csc-personAuthority-scopeNote" /> </div> </div> <div class="info-pair"> <div class="header"> <div class="csc-person-sourceNote-label label"></div> </div> <div class="content"> <textarea rows="4" cols="30" class="csc-personAuthority-sourceNote" /> </div> </div> <div class="info-pair"> <div class="header"> <div class="csc-person-orgContactNames-label label"></div> </div> <div class="content"> <input type="text" class="csc-personAuthority-orgContactName" /> </div> </div> <div class="info-pair"> <div class="header"> <div class="csc-person-nameFunctions-label label"></div> </div> <div class="content"> <input type="text" class="csc-personAuthority-nameFunction" /> </div> </div>
Recreated Contact Information Group for Person(Name) Authority. I still need to find a way to activate this authority within the larger Person Authority record
1. added to persons_common.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://collectionspace.org/contact/" xmlns="http://collectionspace.org/contact/" targetNamespace="http://collectionspace.org/contact/" version="0.1"> <xs:element name="csid" type="xs:string" /> <xs:element name="inAuthority" type="xs:string" /> <xs:element name="inItem" type="xs:string" /> <!-- Email Group --> <xs:element name="emailGroupList" type="emailGroupList"/> <xs:complexType name="emailGroupList"> <xs:sequence> <xs:element name="emailGroup" type="emailGroup" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="emailGroup"> <xs:sequence> <xs:element name="email" type="xs:string"/> <xs:element name="emailType" type="xs:string"/> </xs:sequence> </xs:complexType> <!-- telephone Group --> <xs:element name="telephoneGroupList" type="telephoneGroupList"/> <xs:complexType name="telephoneGroupList"> <xs:sequence> <xs:element name="telephoneGroup" type="telephoneGroup" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="telephoneGroup"> <xs:sequence> <xs:element name="telephoneNumber" type="xs:string"/> <xs:element name="telephoneNumberType" type="xs:string"/> </xs:sequence> </xs:complexType> <!-- fax number Group --> <xs:element name="faxNumberGroupList" type="faxNumberGroupList"/> <xs:complexType name="faxNumberGroupList"> <xs:sequence> <xs:element name="faxNumberGroup" type="faxNumberGroup" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="faxNumberGroup"> <xs:sequence> <xs:element name="faxNumber" type="xs:string"/> <xs:element name="faxNumberType" type="xs:string"/> </xs:sequence> </xs:complexType> <!-- web Group --> <xs:element name="webGroupList" type="webGroupList"/> <xs:complexType name="webGroupList"> <xs:sequence> <xs:element name="webGroup" type="webGroup" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="webGroup"> <xs:sequence> <xs:element name="web" type="xs:string"/> <xs:element name="webType" type="xs:string"/> </xs:sequence> </xs:complexType> <!-- address Group --> <xs:element name="addressGroupList" type="addressGroupList"/> <xs:complexType name="addressGroupList"> <xs:sequence> <xs:element name="addressGroup" type="addressGroup" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="addressGroup"> <xs:sequence> <xs:element name="addressPlace" type="xs:string"/> <xs:element name="addressPlace2" type="xs:string"/> <xs:element name="addressCity" type="xs:string"/> <xs:element name="addressState" type="xs:string"/> <xs:element name="addressPostcode" type="xs:string"/> <xs:element name="addressCountry" type="xs:string"/> <xs:element name="addressType" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema>
2. added to cspace-config-core.xml
<section> <!-- new MMI repeatable email group --> <repeat id="emailGroupList/emailGroup"> <field id="email"> <selector>contactAuthority-email</selector> </field> <field id="emailType"> <selector>contactAuthority-emailType</selector> <options> <option id="">Please select a value</option> <option id="home">Home</option> <option id="work">Work</option> <option id="other">Other</option> </options> </field> </repeat> <!-- new MMI repeatable telephone number group --> <repeat id="telephoneNumberGroupList/telephoneNumberGroup"> <field id="telephoneNumber"> <selector>contactAuthority-telephoneNumber</selector> </field> <field id="telephoneNumberType"> <selector>contactAuthority-telephoneNumberType</selector> <options> <option id="">Please select a value</option> <option id="home">Home</option> <option id="mobile">Mobile</option> <option id="work">Work</option> <option id="other">Other</option> </options> </field> </repeat> <!-- new MMI repeatable fax number group --> <repeat id="faxNumberGroupList/faxNumberGroup"> <field id="faxNumber"> <selector>contactAuthority-faxNumber</selector> </field> <field id="faxNumberTypeType"> <selector>contactAuthority-faxNumberType</selector> <options> <option id="">Please select a value</option> <option id="home">Home</option> <option id="work">Work</option> <option id="other">Other</option> </options> </field> </repeat> <!-- new MMI repeatable web group --> <repeat id="webGroupList/webGroup"> <field id="web"> <selector>contactAuthority-web</selector> </field> <field id="webType"> <selector>contactAuthority-webType</selector> <options> <option id="">Please select a value</option> <option id="home">Home</option> <option id="work">Work</option> <option id="other">Other</option> </options> </field> </repeat> <!-- new MMI repeatable address group --> <repeat id="addressGroupList/addressGroup"> <field id="addressPlace"> <selector>contactAuthority-addressPlace</selector> </field> <field id="addressPlace2"> <selector>contactAuthority-addressPlace2</selector> </field> <field id="addressCity"> <selector>contactAuthority-addressCity</selector> </field> <field id="addressState"> <selector>contactAuthority-addressState</selector> </field> <field id="addressPostcode"> <selector>contactAuthority-addressPostcode</selector> </field> <field id="addressCountry"> <selector>contactAuthority-addressCountry</selector> <options> <option id="">Please select a value</option> <option id="home">Home</option> <option id="work">Work</option> <option id="other">Other</option> </options> </field> </repeat> </section>
3. added to core-messages.properties
#Contact contact: Contact contact-emailGroupLabel: Email contact-telephoneNumberGroupLabel: Telephone number contact-faxNumberGroupLabel: Fax number contact-webGroupLabel: Web address contact-addressGroupLabel: Address line 1 contact-emailLabel: Email contact-emailTypeLabel: Email type contact-telephoneNumberLabel: Telephone number contact-telephoneNumberTypeLabel: Telephone number type contact-faxNumberLabel: Fax number contact-faxNumberTypeLabel: Fax number type contact-webLabel: Web address contact-webTypeLabel: Web address type contact-addressPlaceLabel: Address line 1 contact-addressPlace2Label: Address line 2 contact-addressCityLabel: City/Town/Municipality contact-addressStateLabel: Province/Territory/State contact-addressPostcodeLabel: Postcode contact-addressCountryLabel: Country contact-addressTypeLabel: Address type
4. added to PersonTemplate.html
<div class="info-column"> <div class="info-column2-50 fl-force-left"> <div class="info-pair"> <div class="header"> <div class="label csc-contact-emailGroup-label label"></div> </div> <div class="content"> <table> <thead> <tr> <td class="csc-contact-email-label label"></td> <td class="csc-contact-emailType-label label"></td> </tr> </thead> <tbody> <tr class="csc-contact-emailGroup"> <td><input type="text" class="input-alpha-table csc-contactAuthority-email" /></td> <td><select class="input-select csc-contactAuthority-emailType"><option value="">Options not loaded</option></select></td> </tr> </tbody> </table> </div> </div> <div class="info-pair"> <div class="header"> <div class="label csc-contact-telephoneNumberGroup-label label"></div> </div> <div class="content"> <table> <thead> <tr> <td class="csc-contact-telephoneNumber-label label"></td> <td class="csc-contact-telephoneNumberType-label label"></td> </tr> </thead> <tbody> <tr class="csc-contact-telephoneNumberGroup"> <td><input type="text" class="input-alpha-table csc-contactAuthority-telephoneNumber" /></td> <td><select class="input-select csc-contactAuthority-telephoneNumberType"><option value="">Options not loaded</option></select></td> </tr> </tbody> </table> </div> </div> </div> <div class="info-column2-50 fl-force-right"> <div class="info-pair"> <div class="header"> <div class="label csc-contact-faxNumberGroup-label label"></div> </div> <div class="content"> <table> <thead> <tr> <td class="csc-contact-faxNumber-label label"></td> <td class="csc-contact-faxNumberType-label label"></td> </tr> </thead> <tbody> <tr class="csc-contact-faxNumberGroup"> <td><input type="text" class="input-alpha-table csc-contactAuthority-faxNumber" /></td> <td><select class="input-select csc-contactAuthority-faxNumberType"><option value="">Options not loaded</option></select></td> </tr> </tbody> </table> </div> </div> <div class="info-pair"> <div class="header"> <div class="label csc-contact-webGroup-label label"></div> </div> <div class="content"> <table> <thead> <tr> <td class="csc-contact-web-label label"></td> <td class="csc-contact-webType-label label"></td> </tr> </thead> <tbody> <tr class="csc-contact-webGroup"> <td><input type="text" class="input-alpha-table csc-contactAuthority-web" /></td> <td><select class="input-select csc-contactAuthority-webType"><option value="">Options not loaded</option></select></td> </tr> </tbody> </table> </div> </div> </div> <div class="clear"></div> </div> <div class="info-column"> <div class="info-pair"> <div class="header"> <div class="label csc-contact-addressGroup-label label"></div> </div> <div class="content"> <table> <thead> <tr> <td class="csc-contact-addressPlace-label label"></td> <td class="csc-contact-addressPlace2-label label"></td> <td class="csc-contact-addressCity-label label"></td> <td class="csc-contact-addressState-label label"></td> <td class="csc-contact-addressPostcode-label label"></td> <td class="csc-contact-addressCountry-label label"></td> <td class="csc-contact-addressType-label label"></td> </tr> </thead> <tbody> <tr class="csc-contact-addressGroup"> <td><input type="text" class="input-alpha-table csc-contactAuthority-addressPlace" /></td> <td><input type="text" class="input-alpha-table csc-contactAuthority-addressPlace2" /></td> <td><input type="text" class="input-alpha-table csc-contactAuthority-addressCity" /></td> <td><input type="text" class="input-alpha-table csc-contactAuthority-addressState" /></td> <td><input type="text" class="input-alpha-table csc-contactAuthority-addressPostcode" /></td> <td><input type="text" class="input-alpha-table csc-contactAuthority-addressCountry" /></td> <td><select class="input-select csc-contactAuthority-addressType"><option value="">Options not loaded</option></select></td> </tr> </tbody> </table> </div> </div> </div>