diff src/main/webapp/metadataFragment.xhtml @ 10:a50cf11e5178

Rewrite LGDataverse completely upgrading to dataverse4.0
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 08 Sep 2015 17:00:21 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/webapp/metadataFragment.xhtml	Tue Sep 08 17:00:21 2015 +0200
@@ -0,0 +1,244 @@
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+     xmlns:h="http://java.sun.com/jsf/html"
+     xmlns:f="http://java.sun.com/jsf/core"
+     xmlns:ui="http://java.sun.com/jsf/facelets"
+     xmlns:c="http://java.sun.com/jsp/jstl/core"
+     xmlns:p="http://primefaces.org/ui"
+     xmlns:o="http://omnifaces.org/ui"
+     xmlns:jsf="http://xmlns.jcp.org/jsf">
+
+    <!-- View Mode -->
+
+  <div class="panel-group" jsf:rendered="${empty editMode  or managePage}">
+      <o:importFunctions type="edu.harvard.iq.dataverse.util.MarkupChecker" />
+        <ui:repeat value="#{metadataBlocks}"  
+                   var="metadataBlockVal" varStatus="block">
+            <div class="panel panel-default">
+                <div data-toggle="collapse" data-target="#panelCollapse#{block.index}" class="panel-heading text-info">
+                    #{metadataBlockVal.key.displayName} &#160;<span class="glyphicon #{block.first?'glyphicon-chevron-up':'glyphicon-chevron-down'}"/>
+                </div>
+                <div id="panelCollapse#{block.index}" class="collapse #{block.first?'in':''}">
+                    <div class="panel-body">
+                        <ui:fragment rendered="#{block.index == '0' and datasetPage}">
+                            <div class="form-group">
+                                <label for="metadata_publicationDate" class="col-sm-3 control-label">
+                                    <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{bundle['dataset.metadata.persistentId.tip']}">
+                                        #{bundle['dataset.metadata.persistentId']}
+                                    </span>
+                                </label>
+                                <div class="col-sm-9">
+                                    #{globalId}
+                                </div>
+                            </div>
+                            <div class="form-group" jsf:rendered="#{!empty publicationDate}">
+                                <label for="metadata_publicationDate" class="col-sm-3 control-label">
+                                    <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{bundle['dataset.metadata.publicationDate.tip']}">
+                                        #{bundle['dataset.metadata.publicationDate']}
+                                    </span>
+                                </label>
+                                <div class="col-sm-9">
+                                    #{publicationDate}
+                                </div>
+                            </div>
+                        </ui:fragment>
+                        <ui:repeat value="#{metadataBlockVal.value}" var="dsf">
+                            <div class="form-group">
+                                <label for="metadata_#{dsf.datasetFieldType.name}" class="col-sm-3 control-label">
+                                    <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{dsf.datasetFieldType.description}">
+                                        #{dsf.datasetFieldType.title}
+                                    </span>
+                                </label>
+                                <!-- Primitive datasetFields -->
+                                <div class="col-sm-9" jsf:rendered="#{dsf.datasetFieldType.primitive}">
+                                    <h:outputText value="#{dsf.datasetFieldType.fieldType ne 'TEXTBOX' ? dsf.value : MarkupChecker:sanitizeBasicHTML(dsf.value) }" rendered="#{!dsf.datasetFieldType.allowMultiples}"
+                                                  escape="#{dsf.datasetFieldType.fieldType ne 'TEXTBOX'}"/>
+                                    <ui:repeat value="#{dsf.values}" var="value" varStatus="loop" rendered="#{dsf.datasetFieldType.allowMultiples}">
+                                        <h:outputText value="#{loop.first?'':'; '}#{dsf.datasetFieldType.fieldType ne 'TEXTBOX' ? value : MarkupChecker:sanitizeBasicHTML(value)}" 
+                                                      escape="#{dsf.datasetFieldType.fieldType ne 'TEXTBOX'}"/>
+                                    </ui:repeat>
+                                </div>
+                                <!-- Compound datasetFields -->
+                                <div class="col-sm-9" jsf:rendered="#{dsf.datasetFieldType.compound}">
+                                    <ui:fragment rendered="#{dsf.datasetFieldType.name == 'datasetContact'}">
+                                        <p class="help-block">
+                                            <span class="glyphicon glyphicon-info-sign"/> 
+                                            <h:outputText value=" #{bundle['dataset.contact.tip']}"/>
+                                        </p>
+                                    </ui:fragment>
+                                    <ui:repeat value="#{dsf.datasetFieldCompoundValues}" var="compoundValue">
+                                        <ui:repeat value="#{compoundValue.displayValueMap.entrySet().toArray()}" var="cvPart" varStatus="partStatus">
+                                            <h:outputText value="#{dsf.datasetFieldType.displayFormat} " rendered="${!partStatus.first}"/>
+                                            <h:outputText value="#{cvPart.key.datasetFieldType.fieldType ne 'URL' and
+                                                                                            cvPart.key.datasetFieldType.fieldType ne 'TEXTBOX' ? cvPart.value : MarkupChecker:sanitizeBasicHTML(cvPart.value)}" 
+                                                                                            escape="#{cvPart.key.datasetFieldType.fieldType ne 'URL' and
+                                                                                            cvPart.key.datasetFieldType.fieldType ne 'TEXTBOX'}"/>
+                                        </ui:repeat>
+                                        <br/>                                                    
+                                    </ui:repeat>
+                                </div>
+                            </div>
+                        </ui:repeat>
+                    </div>
+                </div>
+            </div>
+        </ui:repeat>
+    </div>
+
+    <!-- Edit Mode -->
+    <ui:fragment rendered="${(!empty editMode)}">
+        <o:importFunctions type="java.util.Collections" />
+        <div class="panel-group">
+            <ui:repeat value="#{metadataBlocks}" var="metadataBlockVal" varStatus="block">
+                <div class="panel panel-default" jsf:rendered="#{(editMode == 'METADATA' or metadataBlockVal.key.displayOnCreate or !metadataBlockVal.key.isEmpty() 
+                                                                 or metadataBlockVal.key.isHasRequired()) 
+                                                                 or (!datasetPage) }">                
+
+                    <div data-toggle="collapse" data-target="#panelCollapse#{block.index}" class="panel-heading text-info">
+                        #{metadataBlockVal.key.displayName} <span class="glyphicon #{block.first?'glyphicon-chevron-up':'glyphicon-chevron-down'}"/>
+                    </div>
+                    <div id="panelCollapse#{block.index}" class="collapse #{block.first || editMode == 'CREATE'?'in':''}">
+                        <div class="panel-body">
+                            <ui:repeat value="#{metadataBlockVal.value}" var="dsf">
+                                <ui:fragment rendered="#{((editMode == 'METADATA' 
+                                                         or dsf.datasetFieldType.displayOnCreate or !dsf.isEmpty() or dsf.required or dsf.datasetFieldType.hasRequiredChildren) and dsf.include)
+                                                         or (!datasetPage and dsf.include)}">
+
+                                    <div class="form-group">
+                                        <label for="metadata_#{dsf.datasetFieldType.name}" class="col-sm-3 control-label">
+                                            <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{dsf.datasetFieldType.description}">
+                                                #{dsf.datasetFieldType.title}
+                                            </span>
+                                            <h:outputText styleClass="glyphicon glyphicon-asterisk text-danger" value="" rendered="#{dsf.required  or dsf.datasetFieldType.hasRequiredChildren }" />
+                                        </label>
+
+                                        <!-- Primitive fields -->
+                                        <p:fragment autoUpdate="true" rendered="#{dsf.datasetFieldType.primitive}">
+                                            <div class="form-group">
+                                                <ui:remove><!-- There is an issue with the dynamic +/- and the primefaces autoupdate where they are not working
+                                                    well together for the primitive fields, but are for the compound fields. So as a workaround for the primitive,
+                                                    we wrap them in a ui:repeat that iterates on a single list. Note: dummyVar is never used--></ui:remove>
+                                                <ui:repeat value="#{Collections:singletonList('')}" var="dummyVar">
+                                                    <div class="form-col-container col-sm-12">
+                                                        <ui:repeat value="#{dsf.datasetFieldValues}" var="dsfv" varStatus="valCount" >
+                                                            <div class="form-group dataset-field-values">
+                                                                <div class="form-col-container col-sm-9 edit-field">
+                                                                    <ui:include src="datasetFieldForEditFragment.xhtml">
+                                                                        <ui:param name="dsfv" value="#{dsfv}"/>
+                                                                        <ui:param name="dsfvIndex" value="#{valCount.index}"/>
+                                                                    </ui:include>
+                                                                </div>
+                                                                <!-- Add / Remove buttons -->
+                                                                <div class="col-xs-3 field-add-delete" jsf:rendered="#{dsf.datasetFieldType.allowMultiples and !dsf.datasetFieldType.controlledVocabulary}">
+                                                                    <p:commandLink tabindex="#{block.index+1}" title="#{bundle.add}"
+                                                                                     styleClass="btn btn-default btn-sm bootstrap-button-tooltip #{dsf.datasetFieldType.compound ? 'compound-field-btn' : ''}"
+                                                                                     actionListener="#{dsf.addDatasetFieldValue(valCount.index + 1)}"
+                                                                                     oncomplete="javascript:bind_bsui_components();">
+                                                                        <span class="glyphicon glyphicon-plus no-text"/>
+                                                                    </p:commandLink>
+                                                                    <p:commandLink tabindex="#{block.index+1}" title="#{bundle.delete}"
+                                                                                     styleClass="btn btn-default btn-sm bootstrap-button-tooltip #{dsf.datasetFieldType.compound ? 'compound-field-btn' : ''}"
+                                                                                     rendered="#{dsf.datasetFieldValues.size() > 1}"
+                                                                                     actionListener="#{dsf.removeDatasetFieldValue(valCount.index)}"
+                                                                                     oncomplete="javascript:bind_bsui_components();">
+                                                                        <span class="glyphicon glyphicon-minus no-text"/>
+                                                                    </p:commandLink>
+                                                                </div>
+                                                            </div>
+                                                        </ui:repeat>
+                                                        <ui:fragment rendered="#{dsf.datasetFieldType.controlledVocabulary}">
+                                                            <p:selectOneMenu tabindex="#{block.index+1}"
+                                                                             value="#{dsf.singleControlledVocabularyValue}" converter="controlledVocabularyValueConverter" style="width: auto !important; max-width:100%; min-width:200px;" styleClass="form-control primitive SELECT TESTTEST"
+                                                                             rendered="#{!dsf.datasetFieldType.allowMultiples}">
+                                                                <f:selectItem itemLabel="#{bundle.select}" itemValue="" noSelectionOption="true"/>
+                                                                <f:selectItems value="#{dsf.datasetFieldType.controlledVocabularyValues}" var="cvv" itemLabel="#{cvv.strValue}" itemValue="#{cvv}" />
+                                                            </p:selectOneMenu>
+                                                            <div class="ui-inputfield form-control select-scroll-block" jsf:rendered="#{dsf.datasetFieldType.allowMultiples}">
+                                                                <p:selectManyCheckbox value="#{dsf.controlledVocabularyValues}" converter="controlledVocabularyValueConverter"
+                                                                                      layout="pageDirection">
+                                                                    <f:selectItem itemLabel="#{bundle.select}" class="chkbox-label-margin" itemValue="" noSelectionOption="true"/>
+                                                                    <f:selectItems value="#{dsf.datasetFieldType.controlledVocabularyValues}" var="cvv" itemLabel="#{cvv.strValue}" itemValue="#{cvv}" />
+                                                                </p:selectManyCheckbox>
+                                                            </div>
+                                                            <div class="alert-danger" jsf:rendered="#{!empty dsf.validationMessage}">
+                                                                <strong>#{dsf.validationMessage}</strong>
+                                                            </div>
+                                                        </ui:fragment>
+                                                    </div>
+                                                </ui:repeat>
+                                            </div>
+                                        </p:fragment>
+
+                                        <!-- Compound fields -->
+                                        <p:fragment autoUpdate="true" rendered="#{dsf.datasetFieldType.compound}">
+                                            <div class="form-group form-col-container col-sm-9 dataset-field-values">
+                                                <ui:repeat value="#{dsf.datasetFieldCompoundValues}" var="compoundValue" varStatus="valCount">
+                                                    <div class="form-group form-col-container col-sm-9 edit-compound-field">
+                                                        <!-- Sub Fields -->
+                                                        <ui:repeat value="#{compoundValue.childDatasetFields}" var="subdsf">
+                                                            <div class="form-col-container #{(subdsf.datasetFieldType.fieldType == 'TEXTBOX') ? 'col-sm-12' : 'col-sm-6'}">
+                                                                <ui:fragment rendered="#{subdsf.datasetFieldType.name == 'dsDescriptionValue'}">
+                                                                    <p class="help-block">
+                                                                        <span class="glyphicon glyphicon-info-sign"/> 
+                                                                        <h:outputFormat value=" #{bundle.htmlAllowedMsg}" escape="false">
+                                                                            <f:param value="#{bundle.htmlAllowedTags}"/>
+                                                                        </h:outputFormat>
+                                                                    </p>
+                                                                </ui:fragment>
+                                                                <label class="control-label" for="metadata_#{subdsf.datasetFieldType.name}">
+                                                                    <span data-toggle="tooltip" data-placement="auto right" class="tooltiplabel text-info" data-original-title="#{subdsf.datasetFieldType.description}">#{subdsf.datasetFieldType.title}</span>
+                                                                    <h:outputText styleClass="glyphicon glyphicon-asterisk text-danger" value="" rendered="#{subdsf.required}" />
+                                                                </label>
+                                                                <ui:fragment rendered="#{!subdsf.datasetFieldType.controlledVocabulary}">
+                                                                    <ui:include src="datasetFieldForEditFragment.xhtml">
+                                                                        <ui:param name="dsfv" value="#{subdsf.singleValue}"/>
+                                                                        <ui:param name="dsfvIndex" value="0"/>
+                                                                    </ui:include>
+                                                                </ui:fragment>
+                                                                <!-- MOVED SELECT ONE TO dataFieldForEdit -->
+                                                                <div jsf:rendered="#{subdsf.datasetFieldType.controlledVocabulary}">
+                                                                    <p:selectOneMenu tabindex="#{block.index+1}" value="#{subdsf.singleControlledVocabularyValue}" converter="controlledVocabularyValueConverter" style="width: auto !important; max-width:100%; min-width:200px;" 
+                                                                                     rendered="#{!subdsf.datasetFieldType.allowMultiples}">
+                                                                        <f:selectItem itemLabel="#{bundle.select}" itemValue="" noSelectionOption="true"/>
+                                                                        <f:selectItems value="#{subdsf.datasetFieldType.controlledVocabularyValues}" var="cvv" itemLabel="#{cvv.strValue}" itemValue="#{cvv}" />
+                                                                    </p:selectOneMenu>
+                                                                    <div class="ui-inputfield form-control select-scroll-block" jsf:rendered="#{subdsf.datasetFieldType.allowMultiples}">
+                                                                        <p:selectManyCheckbox value="#{subdsf.controlledVocabularyValues}" converter="controlledVocabularyValueConverter"
+                                                                                              layout="pageDirection">
+                                                                            <f:selectItems value="#{subdsf.datasetFieldType.controlledVocabularyValues}" var="cvv" itemLabel="#{cvv.strValue}" itemValue="#{cvv}" />
+                                                                        </p:selectManyCheckbox>
+                                                                    </div>
+                                                                    <div class="alert-danger" jsf:rendered="#{!empty subdsf.validationMessage}">
+                                                                        <strong>#{subdsf.validationMessage}</strong>
+                                                                    </div>
+                                                                </div>
+                                                            </div>
+                                                        </ui:repeat>
+                                                    </div>
+                                                    <div class="col-sm-3 field-add-delete" jsf:rendered="#{dsf.datasetFieldType.allowMultiples and !dsf.datasetFieldType.controlledVocabulary}">
+                                                        <p:commandLink tabindex="#{block.index+1}" title="#{bundle.add}" 
+                                                                         styleClass="btn btn-default btn-sm bootstrap-button-tooltip #{dsf.datasetFieldType.compound ? 'compound-field-btn' : ''}"
+                                                                         actionListener="#{dsf.addDatasetFieldCompoundValue(valCount.index + 1)}"
+                                                                         oncomplete="javascript:bind_bsui_components();">
+                                                            <span class="glyphicon glyphicon-plus no-text"/>
+                                                        </p:commandLink>
+                                                        <p:commandLink tabindex="#{block.index+1}" title="#{bundle.delete}" 
+                                                                         styleClass="btn btn-default btn-sm bootstrap-button-tooltip #{dsf.datasetFieldType.compound ? 'compound-field-btn' : ''}"
+                                                                         rendered="#{dsf.datasetFieldCompoundValues.size() > 1}"
+                                                                         actionListener="#{dsf.removeDatasetFieldCompoundValue(valCount.index)}"
+                                                                         oncomplete="javascript:bind_bsui_components();">
+                                                            <span class="glyphicon glyphicon-minus no-text"/>
+                                                        </p:commandLink>
+                                                    </div>
+                                                </ui:repeat>
+                                            </div>
+                                        </p:fragment>
+                                    </div>
+                                </ui:fragment>
+                            </ui:repeat>
+                        </div>
+                    </div>
+                </div>
+            </ui:repeat>
+        </div>
+    </ui:fragment>
+</ui:composition>
\ No newline at end of file