Pour utiliser l'autocomplete "dynamique" dans les formulaires modifiés localement:
Ajouter dans les fichiers form.xhtml personnalisés (avant la balise "</head>"), la ligne :
<xi:include href="oxf:/xbl/ori-md-editor/ori-autocomplete/ori-autocomplete.xbl" xxi:omit-xml-base="true"/>
Pour les formulaires Dublin-Core, remplacer dans le fichier form.xhtml personnalisé les blocs creator et subject comme suit:
<!-- DC CREATOR --> <fieldset> <legend><xforms:output value="$fr-resources/ori-oaidc-creator" /></legend> <widget:ori-block element="dc:creator" minOccurs="0" maxOccurs="unbounded" preceding-elements="dc:title"> <xforms:select1 ref="." selection="open" incremental="true" appearance="xxforms:autocomplete" xxforms:filter="true"> <xforms:label class="hidden"><xforms:output value="$fr-resources/ori-oaidc-creator" /></xforms:label> <xforms:alert><xforms:output value="$fr-resources/ori-required-field" /></xforms:alert> <xforms:itemset nodeset="for $current in . return if (normalize-space($current) = '') then (xxforms:instance('authors')/vdex:term/vdex:term/vdex:caption/vdex:langstring)[position() le 10] else (xxforms:instance('authors')/vdex:term/vdex:term/vdex:caption/vdex:langstring[starts-with(lower-case(normalize-space(.)), lower-case($current))])[position() le 10]"> <xforms:label value="normalize-space(.)"/> <xforms:value value="normalize-space(.)"/> </xforms:itemset> </xforms:select1> </widget:ori-block> </fieldset> <!-- DC SUBJECT --> <fieldset class="collapsible"> <legend><xforms:output value="$fr-resources/ori-oaidc-subject" /></legend> <widget:ori-block element="dc:subject" minOccurs="0" maxOccurs="unbounded" sortable="true" preceding-elements="dc:creator | dc:title"> <xforms:select1 ref="." selection="open" incremental="true" appearance="xxforms:autocomplete" xxforms:filter="true"> <xforms:label class="hidden"><xforms:output value="$fr-resources/ori-oaidc-subject" /></xforms:label> <xforms:alert><xforms:output value="$fr-resources/ori-alert" /></xforms:alert> <xforms:itemset nodeset="for $current in . return if (normalize-space($current) = '') then (xxforms:instance('keywords')/vdex:term/vdex:caption/vdex:langstring)[position() le 10] else (xxforms:instance('keywords')/vdex:term/vdex:caption/vdex:langstring[starts-with(lower-case(normalize-space(.)), lower-case($current))])[position() le 10]"> <!-- NOTE: @value is not standard XForms, but we need it instead of @ref until the label values are normalized in keywords.xml --> <xforms:label value="normalize-space(.)"/> <xforms:value value="normalize-space(.)"/> </xforms:itemset> </xforms:select1> </widget:ori-block> </fieldset>
par :
<!-- DC CREATOR --> <fieldset> <legend><xforms:output value="$fr-resources/ori-oaidc-creator" /></legend> <widget:ori-block element="dc:creator" minOccurs="0" maxOccurs="unbounded" preceding-elements="dc:title"> <orixbl:autocomplete ref="." vocab-collection="people_vcard" vocab-query="people_vcard.xq" language="fr"> <xforms:label class="hidden"><xforms:output value="$fr-resources/ori-oaidc-creator" /></xforms:label> <xforms:alert><xforms:output value="$fr-resources/ori-required-field" /></xforms:alert> </orixbl:autocomplete> </widget:ori-block> </fieldset> <!-- DC SUBJECT --> <fieldset> <legend><xforms:output value="$fr-resources/ori-oaidc-subject" /></legend> <widget:ori-block element="dc:subject" minOccurs="0" maxOccurs="unbounded" sortable="true" preceding-elements="dc:creator | dc:title"> <orixbl:autocomplete ref="." vocab-collection="indexed_subjects" vocab-query="indexed_subjects.xq" language="fr"> <xforms:label class="hidden"><xforms:output value="$fr-resources/ori-oaidc-subject" /></xforms:label> <xforms:alert><xforms:output value="$fr-resources/ori-required-field" /></xforms:alert> </orixbl:autocomplete> </widget:ori-block> </fieldset>
Pour les formulaires LOM personnalisés, remplacer dans le fichier content-xforms.xml (pour le formulaire auteur) ou case-general.xml (pour le formulaire complet) , le bloc keyword comme suit:
<!-- 1.5 Keyword --> <fieldset> <widget:legend instance="i18n_lom" termIdentifier="1.5"/> <widget:ori-block element="lom:keyword" minOccurs="0" maxOccurs="unbounded" parent-element="lom:general" preceding-elements="lom:identifier | lom:title | lom:language | lom:description"> <widget:lom-string-with-language> <xforms:select1 ref="." selection="open" incremental="true" appearance="xxforms:autocomplete" xxforms:filter="true"> <xforms:label ref="xxforms:instance('i18n_lom')/vdex:term/vdex:term[vdex:termIdentifier = '1.5']/vdex:caption/vdex:langstring[@language=xxforms:instance('fr-language-instance')]" class="hidden"/> <xforms:alert ref="xxforms:instance('i18n_lom')/vdex:term/vdex:term[vdex:termIdentifier = '1.5']/vdex:metadata/orioai:alert/vdex:langstring[@language=xxforms:instance('fr-language-instance')]"/> <xforms:itemset nodeset="for $current in . return if (normalize-space($current) = '') then (xxforms:instance('keywords')/vdex:term/vdex:caption/vdex:langstring[@language = $current/@language])[position() le 10] else (xxforms:instance('keywords')/vdex:term/vdex:caption/vdex:langstring[@language = $current/@language][starts-with(lower-case(normalize-space(.)), lower-case($current))])[position() le 10]"> <!-- NOTE: @value is not standard XForms, but we need it instead of @ref until the label values are normalized in keywords.xml --> <xforms:label value="normalize-space(.)"/> <xforms:value value="normalize-space(.)"/> </xforms:itemset> </xforms:select1> </widget:lom-string-with-language> </widget:ori-block> </fieldset>
Par :
<!-- 1.5 Keyword --> <fieldset> <widget:legend instance="i18n_lom" termIdentifier="1.5"/> <widget:ori-block element="lom:keyword" minOccurs="0" maxOccurs="unbounded" sortable="true" parent-element="lom:general" preceding-elements="lom:identifier|lom:title|lom:language|lom:description"> <orixbl:autocomplete ref="lom:string" vocab-collection="indexed_keywords" vocab-query="indexed_keywords.xq" language="fr"> <xforms:label ref="xxforms:instance('i18n_lom')/vdex:term/vdex:term[vdex:termIdentifier = '1.5']/vdex:caption/vdex:langstring[@language=xxforms:instance('fr-language-instance')]" class="hidden"/> <xforms:alert ref="xxforms:instance('i18n_lom')/vdex:term/vdex:term[vdex:termIdentifier = '1.5']/vdex:metadata/orioai:alert/vdex:langstring[@language=xxforms:instance('fr-language-instance')]"/> </orixbl:autocomplete> </widget:ori-block> </fieldset>
2- Supprimer les instances xforms inutiles dans les fichiers main-model.xhtml et/ou form.xhtml personnalisés
<xforms:instance id="people-vcards" src="/fr/service/custom/ori-md-editor/oriGetVocab?vocab=people_vcard" xxforms:readonly="true" xxforms:cache="true"/> <xforms:instance id="keywords" src="/fr/service/custom/ori-md-editor/oriGetVocab?vocab=indexed_keywords" xxforms:readonly="true" xxforms:cache="true"/> <xforms:instance id="personal_mads" src="/fr/service/custom/ori-md-editor/oriGetVocab?vocab=personal_mads" xxforms:readonly="true" xxforms:cache="true"/>
Pour utiliser le dialogue dialog-dewey-search.xml
Remplacer le dialogue dialog-taxonomy-search.xml par dialog-dewey-search.xml en fin des fichiers xform.xhtml personnalisés
<xi:include href="oxf:/forms/ori-md-editor/lom-full/form/dialog-taxonomy-search.xml"/>
par
<xi:include href="oxf:/forms/ori-md-editor/lom-full/form/dialog-dewey-search.xml"/>