diff --git a/pom.xml b/pom.xml index a7a9ac561..c71f8dffb 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.goobi.workflow workflow-base - 24.10 + 24.11 workflow-core diff --git a/src/main/java/de/sub/goobi/persistence/managers/ProcessMysqlHelper.java b/src/main/java/de/sub/goobi/persistence/managers/ProcessMysqlHelper.java index 2de2b378e..a252ddb1c 100644 --- a/src/main/java/de/sub/goobi/persistence/managers/ProcessMysqlHelper.java +++ b/src/main/java/de/sub/goobi/persistence/managers/ProcessMysqlHelper.java @@ -24,7 +24,11 @@ import java.sql.SQLException; import java.sql.Statement; import java.sql.Timestamp; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Optional; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; @@ -252,7 +256,7 @@ public static int getProcessCount(String filter, Institution institution) throws Connection connection = null; StringBuilder sql = new StringBuilder(); sql.append("SELECT COUNT(1) FROM prozesse left join batches on prozesse.batchID = batches.id "); - sql.append("left JOIN projekte on prozesse.ProjekteID = projekte.ProjekteID "); + sql.append("INNER JOIN projekte on prozesse.ProjekteID = projekte.ProjekteID "); if (institution != null) { sql.append("and projekte.institution_id = "); sql.append(institution.getId()); @@ -281,7 +285,7 @@ public static List getProcesses(String order, String filter, Integer st Connection connection = null; StringBuilder sql = new StringBuilder(); sql.append("SELECT prozesse.* FROM prozesse left join batches on prozesse.batchID = batches.id "); - sql.append("left JOIN projekte on prozesse.ProjekteID = projekte.ProjekteID "); + sql.append("INNER JOIN projekte on prozesse.ProjekteID = projekte.ProjekteID "); if (institution != null) { sql.append("and projekte.institution_id = "); sql.append(institution.getId()); @@ -716,7 +720,7 @@ public static String getExportPluginName(int processId) throws SQLException { } } - public static final ResultSetHandler resultSetToBatchHandler = new ResultSetHandler() { + public static final ResultSetHandler resultSetToBatchHandler = new ResultSetHandler<>() { @Override public Batch handle(ResultSet rs) throws SQLException { @@ -731,7 +735,7 @@ public Batch handle(ResultSet rs) throws SQLException { } }; - public static final ResultSetHandler> resultSetToBatchListHandler = new ResultSetHandler>() { + public static final ResultSetHandler> resultSetToBatchListHandler = new ResultSetHandler<>() { @Override public List handle(ResultSet rs) throws SQLException { List answer = new ArrayList<>(); diff --git a/src/main/java/io/goobi/workflow/api/vocabulary/helper/ExtendedFieldInstance.java b/src/main/java/io/goobi/workflow/api/vocabulary/helper/ExtendedFieldInstance.java index 6a6c82588..045a297a4 100644 --- a/src/main/java/io/goobi/workflow/api/vocabulary/helper/ExtendedFieldInstance.java +++ b/src/main/java/io/goobi/workflow/api/vocabulary/helper/ExtendedFieldInstance.java @@ -131,7 +131,7 @@ private void sortTranslations() { } private void sortTranslations(FieldValue value) { - Collections.sort(value.getTranslations(), Comparator.comparing(TranslationInstance::getLanguage)); + value.getTranslations().sort(Comparator.comparing(TranslationInstance::getLanguage, Comparator.nullsFirst(Comparator.naturalOrder()))); } public FieldValue addFieldValue() { diff --git a/src/main/java/org/goobi/managedbeans/VocabularyRecordsBean.java b/src/main/java/org/goobi/managedbeans/VocabularyRecordsBean.java index eb8568b42..e06eab0cb 100644 --- a/src/main/java/org/goobi/managedbeans/VocabularyRecordsBean.java +++ b/src/main/java/org/goobi/managedbeans/VocabularyRecordsBean.java @@ -57,7 +57,6 @@ public class VocabularyRecordsBean implements Serializable { private static final long serialVersionUID = 5672948572345L; private static final String RETURN_PAGE_OVERVIEW = "vocabulary_records"; - private static final String RETURN_PAGE_UPLOAD = "vocabulary_upload"; private static final VocabularyAPIManager api = VocabularyAPIManager.getInstance(); @@ -75,7 +74,7 @@ public class VocabularyRecordsBean implements Serializable { private Part uploadedFile; @Getter @Setter - private boolean clearBeforeImport; + private boolean clearBeforeImport = false; public String load(ExtendedVocabulary vocabulary) { this.vocabulary = vocabulary; diff --git a/src/main/java/org/goobi/production/properties/ProcessProperty.java b/src/main/java/org/goobi/production/properties/ProcessProperty.java index c648f973f..ff5f19f53 100644 --- a/src/main/java/org/goobi/production/properties/ProcessProperty.java +++ b/src/main/java/org/goobi/production/properties/ProcessProperty.java @@ -26,30 +26,33 @@ * exception statement from your version. */ +import io.goobi.workflow.api.vocabulary.VocabularyAPIManager; +import io.goobi.workflow.api.vocabulary.helper.ExtendedVocabularyRecord; +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.goobi.beans.Processproperty; +import org.goobi.beans.Step; +import org.goobi.managedbeans.FormInputMultiSelectBean; +import org.goobi.managedbeans.FormInputMultiSelectHelper; +import org.goobi.production.cli.helper.StringPair; + +import javax.faces.model.SelectItem; import java.io.Serializable; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; +import java.util.Collections; import java.util.Comparator; import java.util.Date; +import java.util.LinkedList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import io.goobi.workflow.api.vocabulary.VocabularyAPIManager; -import io.goobi.workflow.api.vocabulary.helper.ExtendedVocabularyRecord; -import lombok.extern.slf4j.Slf4j; -import org.goobi.beans.Processproperty; -import org.goobi.beans.Step; -import org.goobi.production.cli.helper.StringPair; - -import lombok.Getter; -import lombok.Setter; - -import javax.faces.model.SelectItem; - @Slf4j public class ProcessProperty implements IProperty, Serializable { @@ -104,11 +107,18 @@ public class ProcessProperty implements IProperty, Serializable { @Setter private String pattern = "dd.MM.yyyy"; + @Getter + private FormInputMultiSelectBean normalSelectionBean; + @Getter + private FormInputMultiSelectBean vocabularySelectionBean; + public ProcessProperty() { this.possibleValues = new ArrayList<>(); this.projects = new ArrayList<>(); this.workflows = new ArrayList<>(); this.showStepConditions = new ArrayList<>(); + this.normalSelectionBean = new FormInputMultiSelectHelper(() -> this.possibleValues, this::getSelectedValues, this::setSelectedValues); + this.vocabularySelectionBean = new FormInputMultiSelectHelper(() -> this.possibleValues, this::getSelectedVocabularyRecords, this::setSelectedValues); } /* @@ -121,13 +131,7 @@ public void setValue(String value) { this.value = value; this.readValue = value; if (Type.VOCABULARYREFERENCE.equals(this.type)) { - try { - ExtendedVocabularyRecord rec = VocabularyAPIManager.getInstance().vocabularyRecords().get(this.value); - this.readValue = rec.getMainValue(); - } catch (Exception e) { - log.warn("Unable to retrieve vocabulary record reference \"{}\"", this.value); - this.readValue = "Broken vocabulary reference"; - } + this.readValue = readVocabularyMainValueForRecord(this.value); } } @@ -216,7 +220,7 @@ public List getValueList() { if (this.value != null && this.value.contains("; ")) { return Arrays.asList(this.value.split("; ")); } else { - return new ArrayList<>(); + return Collections.emptyList(); } } @@ -229,8 +233,50 @@ public void setValueList(List valueList) { this.readValue = value; } + private List getSelectedValues() { + return new LinkedList<>( + getValueList().stream() + .map(value -> new SelectItem(value, value)) + .toList() + ); + } + + public List getMultiVocabularyReferenceList() { + return getValueList().stream() + .map(this::readVocabularyMainValueForRecord) + .toList(); + } + + private String readVocabularyMainValueForRecord(String ref) { + if (StringUtils.isBlank(ref)) { + return ""; + } + try { + ExtendedVocabularyRecord rec = VocabularyAPIManager.getInstance().vocabularyRecords().get(ref); + return rec.getMainValue(); + } catch (Exception e) { + log.warn("Unable to retrieve vocabulary record reference \"{}\"", ref); + return "Broken vocabulary reference"; + } + } + + private List getSelectedVocabularyRecords() { + return new LinkedList<>( + getValueList().stream() + .map(ref -> new SelectItem(ref, readVocabularyMainValueForRecord(ref))) + .toList() + ); + } + + private void setSelectedValues(List selectItems) { + this.setValueList(selectItems.stream() + .map(SelectItem::getValue) + .map(Object::toString) + .toList()); + } + public boolean getBooleanValue() { - return this.value != null && "true".equalsIgnoreCase(this.value); + return "true".equalsIgnoreCase(this.value); } public void setBooleanValue(boolean val) { diff --git a/src/main/java/org/goobi/production/properties/PropertyParser.java b/src/main/java/org/goobi/production/properties/PropertyParser.java index c2f67c883..749bef22e 100644 --- a/src/main/java/org/goobi/production/properties/PropertyParser.java +++ b/src/main/java/org/goobi/production/properties/PropertyParser.java @@ -27,8 +27,10 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.LinkedList; import java.util.List; +import de.sub.goobi.helper.Helper; import io.goobi.workflow.api.vocabulary.APIException; import io.goobi.workflow.api.vocabulary.VocabularyAPIManager; import org.apache.commons.configuration.ConfigurationException; @@ -206,10 +208,13 @@ public List getPropertiesForStep(Step mySchritt) { pp.setName(config.getString(property + "/@name")); pp.setContainer(config.getString(property + "/@container")); + // workflows + + // project and workflows are configured correct? + // projects int count = config.getMaxIndex(property + "/project"); for (int j = 0; j <= count; j++) { - pp.getProjects().add(config.getString(property + "/project[" + (j + 1) + "]")); } @@ -273,12 +278,17 @@ public List getPropertiesForStep(Step mySchritt) { pp.setReadValue(""); } - // possible values - count = config.getMaxIndex(property + "/value"); - for (int j = 0; j <= count; j++) { - String value = config.getString(property + "/value[" + (j + 1) + "]"); - pp.getPossibleValues().add(new SelectItem(value, value)); + if (Type.VOCABULARYREFERENCE.equals(pp.getType()) || Type.VOCABULARYMULTIREFERENCE.equals(pp.getType())) { + populatePossibleValuesWithVocabulary(property, pp); + } else { + // possible values + count = config.getMaxIndex(property + "/value"); + for (int j = 0; j <= count; j++) { + String value = config.getString(property + "/value[" + (j + 1) + "]"); + pp.getPossibleValues().add(new SelectItem(value, value)); + } } + properties.add(pp); } } @@ -404,28 +414,20 @@ public List getPropertiesForProcess(Process process) { pp.setReadValue(""); } - if (Type.VOCABULARYREFERENCE.equals(pp.getType())) { - String vocabularyName = config.getString(property + "/vocabulary"); - try { - long vocabularyId = VocabularyAPIManager.getInstance().vocabularies().findByName(vocabularyName).getId(); - pp.setPossibleValues(VocabularyAPIManager.getInstance().vocabularyRecords().list(vocabularyId) - .all() - .request() - .getContent() - .stream() - .map(r -> new SelectItem(r.getURI(), r.getMainValue())) - .toList()); - } catch (APIException e) { - log.warn("Unable to parse vocabulary reference property \"{}\"", property, e); + if (Type.VOCABULARYREFERENCE.equals(pp.getType()) || Type.VOCABULARYMULTIREFERENCE.equals(pp.getType())) { + populatePossibleValuesWithVocabulary(property, pp); + } else { + // possible values + count = config.getMaxIndex(property + "/value"); + if (count > 0 && pp.getPossibleValues().isEmpty() && !Type.LISTMULTISELECT.equals(pp.getType())) { + pp.getPossibleValues().add(new SelectItem("", Helper.getTranslation("bitteAuswaehlen"))); + } + for (int j = 0; j <= count; j++) { + String value = config.getString(property + "/value[" + (j + 1) + "]"); + pp.getPossibleValues().add(new SelectItem(value, value)); } } - // possible values - count = config.getMaxIndex(property + "/value"); - for (int j = 0; j <= count; j++) { - String value = config.getString(property + "/value[" + (j + 1) + "]"); - pp.getPossibleValues().add(new SelectItem(value, value)); - } if (log.isDebugEnabled()) { log.debug("add property A " + pp.getName() + " - " + pp.getValue() + " - " + pp.getContainer()); } @@ -497,7 +499,10 @@ public List getProcessCreationProperties(Process process, Strin List properties = new ArrayList<>(); List propertyList = config.configurationsAt("/property"); - for (HierarchicalConfiguration prop : propertyList) { + for (int i = 0; i < propertyList.size(); i++) { + HierarchicalConfiguration prop = propertyList.get(i); + String property = "/property[" + (i+1) + "]"; + ProcessProperty pp = new ProcessProperty(); // general values for property pp.setName(prop.getString("@name")); @@ -549,10 +554,15 @@ public List getProcessCreationProperties(Process process, Strin pp.getProcessCreationConditions().add(new StringPair(hc.getString("@property"), hc.getString("@value"))); } - // possible values - pp.getPossibleValues().addAll(Arrays.stream(prop.getStringArray("/value")) - .map(v -> new SelectItem(v, v)) - .toList()); + if (Type.VOCABULARYREFERENCE.equals(pp.getType()) || Type.VOCABULARYMULTIREFERENCE.equals(pp.getType())) { + populatePossibleValuesWithVocabulary(property, pp); + } else { + // possible values + pp.getPossibleValues().addAll(Arrays.stream(prop.getStringArray("/value")) + .map(v -> new SelectItem(v, v)) + .toList()); + } + properties.add(pp); } } @@ -560,4 +570,24 @@ public List getProcessCreationProperties(Process process, Strin } + private void populatePossibleValuesWithVocabulary(String property, ProcessProperty pp) { + String vocabularyName = config.getString(property + "/vocabulary"); + try { + long vocabularyId = VocabularyAPIManager.getInstance().vocabularies().findByName(vocabularyName).getId(); + pp.setPossibleValues(new LinkedList<>()); + // this "Please select" element is only required for non drop-down badge components, as this component handles it itself + if (Type.VOCABULARYREFERENCE.equals(pp.getType())) { + pp.getPossibleValues().add(new SelectItem("", Helper.getTranslation("bitteAuswaehlen"))); + } + pp.getPossibleValues().addAll(VocabularyAPIManager.getInstance().vocabularyRecords().list(vocabularyId) + .all() + .request() + .getContent() + .stream() + .map(r -> new SelectItem(r.getURI(), r.getMainValue())) + .toList()); + } catch (APIException e) { + log.warn("Unable to parse vocabulary (multi) reference property \"{}\"", property, e); + } + } } diff --git a/src/main/java/org/goobi/production/properties/Type.java b/src/main/java/org/goobi/production/properties/Type.java index 20518e3d2..a86228988 100644 --- a/src/main/java/org/goobi/production/properties/Type.java +++ b/src/main/java/org/goobi/production/properties/Type.java @@ -38,7 +38,8 @@ public enum Type { LINK("link"), METADATA("metadata"), HTML("html"), - VOCABULARYREFERENCE("vocabularyreference"); + VOCABULARYREFERENCE("vocabularyreference"), + VOCABULARYMULTIREFERENCE("vocabularymultireference"); @Getter private String name; diff --git a/src/main/resources/messages_de.properties b/src/main/resources/messages_de.properties index 6c6bb912b..434087351 100644 --- a/src/main/resources/messages_de.properties +++ b/src/main/resources/messages_de.properties @@ -1877,7 +1877,7 @@ mets_navigateTwoImagesRight=Zwei Seiten nach rechts navigieren mets_no_metadata_assigned=Es wurden keine Metadaten zugewiesen mets_no_metadatagroups_assigned=Es wurden keine Metadatengruppen zugewiesen mets_no_persons_assigned=Es wurden keine Personen zugewiesen -mets_notRestricted=Nicht zugriffsbeschr\u00E4nkt +mets_notRestricted=Zugriffsbeschr\u00E4nkung aktivieren zzz mets_pageArea=Bereich auf {0} mets_paginationAssignmentError=Die Seiten konnten nicht zugewiesen werden. M\u00F6glicherweise fehlt die erste oder letzte Seite oder die Reihenfolge ist vertauscht. mets_personsOfCurrentDocStruct=Personen des ausgew\u00E4hlten Strukturelements @@ -1886,7 +1886,7 @@ mets_removeTheseImages=Diese Bilder aus der Seitenzuweisung entfernen mets_resetImageRotation=Bild zur\u00FCcksetzen mets_resetPagination=Paginierung vollst\u00E4ndig zur\u00FCcksetzen mets_reset_pagination_confirmation=Soll die Paginierung wirklich vollst\u00E4ndig zur\u00FCckgesetzt werden? Diese \u00C4nderung wird auf die Festplatte geschrieben und kann nur durch den Eingriff eines Administrators r\u00FCckg\u00E4ngig gemacht werden -mets_restricted=Zugriffsbeschr\u00E4nkt +mets_restricted=Zugriffsbeschr\u00E4nkung aktiv. Hier klicken, um diese zu entfernen. zzz mets_rotateImageLeft=Bild nach links rotieren mets_rotateImageRight=Bild nach rechts rotieren mets_selectCountingType=Auswahl der Z\u00E4hlweise diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index 5e6a054e8..99a50c8ae 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -1877,7 +1877,7 @@ mets_navigateTwoImagesRight=Navigate two pages to the right mets_no_metadata_assigned=No metadata assigned mets_no_metadatagroups_assigned=No metadata groups assigned mets_no_persons_assigned=No persons assigned -mets_notRestricted=Not restrictedzzz +mets_notRestricted=Activate access restriction zzz mets_pageArea=Area on {0} mets_paginationAssignmentError=The pages could not be assigned. The first or last page may be missing, or the order may be wrong. mets_personsOfCurrentDocStruct=Persons of the selected structure element @@ -1886,7 +1886,7 @@ mets_removeTheseImages=Remove these images from the list of assigned pages mets_resetImageRotation=Reset image rotation mets_resetPagination=Reset pagination completely mets_reset_pagination_confirmation=Should the pagination really be completely reset? This change is written to the hard disk and can only be undone by the intervention of an administrator zzz -mets_restricted=Restrictedzzz +mets_restricted=Access restriction active. Click here to remove it. zzz mets_rotateImageLeft=Rotate image to the left mets_rotateImageRight=Rotate image to the right mets_selectCountingType=Select counting type diff --git a/src/main/resources/messages_es.properties b/src/main/resources/messages_es.properties index 1dba1d59f..60da14840 100644 --- a/src/main/resources/messages_es.properties +++ b/src/main/resources/messages_es.properties @@ -1877,7 +1877,7 @@ mets_navigateTwoImagesRight=Navigate two pages to the right zzz mets_no_metadata_assigned=No se asignaron metadatos zzz mets_no_metadatagroups_assigned=No se asignaron grupos de metadatos zzz mets_no_persons_assigned=No se asignaron personas zzz -mets_notRestricted=zzz +mets_notRestricted=Activate access restriction zzz mets_pageArea=\u00C1rea en {0} zzz mets_paginationAssignmentError=Las p\u00E1ginas no pudieron ser asignadas. Posiblemente falta la primera o la \u00FAltima p\u00E1gina o el orden es err\u00F3neo. zzz mets_personsOfCurrentDocStruct=Personas del elemento de fuerza seleccionado zzz @@ -1886,7 +1886,7 @@ mets_removeTheseImages=Eliminar estas im\u00E1genes de la asignaci\u00F3n de p\u mets_resetImageRotation=Restablecer la rotaci\u00F3n de la imagen zzz mets_resetPagination=Reajustar la paginaci\u00F3n completamente zzz mets_reset_pagination_confirmation=\u00BFDeber\u00EDa reiniciarse por completo la paginaci\u00F3n? Este cambio se escribe en el disco duro y s\u00F3lo puede deshacerse mediante la intervenci\u00F3n de un administrador zzz -mets_restricted=zzz +mets_restricted=Access restriction active. Click here to remove it. zzz mets_rotateImageLeft=Gire la imagen a la izquierda zzz mets_rotateImageRight=Gire la imagen a la derecha zzz mets_selectCountingType=Selecci\u00F3n del modo de conteo zzz diff --git a/src/main/resources/messages_fr.properties b/src/main/resources/messages_fr.properties index d485c1eed..29a0e8cef 100644 --- a/src/main/resources/messages_fr.properties +++ b/src/main/resources/messages_fr.properties @@ -1877,7 +1877,7 @@ mets_navigateTwoImagesRight=Navigate two pages to the right zzz mets_no_metadata_assigned=No metadata assigned zzz mets_no_metadatagroups_assigned=No metadata groups assigned zzz mets_no_persons_assigned=No persons assigned zzz -mets_notRestricted=zzz +mets_notRestricted=Activate access restriction zzz mets_pageArea=Area on {0} zzz mets_paginationAssignmentError=The pages could not be assigned. The first or last page may be missing, or the order may be wrong. zzz mets_personsOfCurrentDocStruct=Persons of the selected structure element zzz @@ -1886,7 +1886,7 @@ mets_removeTheseImages=Remove these images from the list of assigned pages zzz mets_resetImageRotation=Reset image rotation zzz mets_resetPagination=Reset pagination completely zzz mets_reset_pagination_confirmation=Faut-il vraiment r\u00E9initialiser compl\u00E8tement la pagination ? Cette modification est \u00E9crite sur le disque dur et ne peut \u00EAtre annul\u00E9e que par l'intervention d'un administrateur. zzz -mets_restricted=zzz +mets_restricted=Access restriction active. Click here to remove it. zzz mets_rotateImageLeft=Rotate image to the left zzz mets_rotateImageRight=Rotate image to the right zzz mets_selectCountingType=Select counting type zzz diff --git a/src/main/resources/messages_it.properties b/src/main/resources/messages_it.properties index 69d81f940..beaa2501c 100644 --- a/src/main/resources/messages_it.properties +++ b/src/main/resources/messages_it.properties @@ -1877,7 +1877,7 @@ mets_navigateTwoImagesRight=Navigate two pages to the right zzz mets_no_metadata_assigned=Non sono stati assegnati metadati zzz mets_no_metadatagroups_assigned=Non sono stati assegnati gruppi di metadati zzz mets_no_persons_assigned=Non sono state assegnate persone zzz -mets_notRestricted=zzz +mets_notRestricted=Activate access restriction zzz mets_pageArea=Portata a {0} zzz mets_paginationAssignmentError=Non \u00E8 stato possibile assegnare le pagine. Forse manca la prima o l'ultima pagina o l'ordine \u00E8 invertito. zzz mets_personsOfCurrentDocStruct=Persone dell'elemento di forza selezionato zzz @@ -1886,7 +1886,7 @@ mets_removeTheseImages=Rimuovere queste immagini dall'assegnazione della pagina mets_resetImageRotation=Reimposta immagine zzz mets_resetPagination=Reimpostare completamente la paginazione zzz mets_reset_pagination_confirmation=La paginazione deve davvero essere completamente azzerata? Questo cambiamento viene scritto sul disco rigido e pu\u00F2 essere annullato solo dall'intervento di un amministratore zzz -mets_restricted=zzz +mets_restricted=Access restriction active. Click here to remove it. zzz mets_rotateImageLeft=Ruotare l'immagine a sinistra zzz mets_rotateImageRight=Ruotare l'immagine a destra zzz mets_selectCountingType=Selezione del modo di conteggio zzz diff --git a/src/main/resources/messages_iw.properties b/src/main/resources/messages_iw.properties index 2e1e2bf0c..5af850ae2 100644 --- a/src/main/resources/messages_iw.properties +++ b/src/main/resources/messages_iw.properties @@ -22,9 +22,9 @@ DELETE_CURRENT_STEP=Delete step zzz DocketInUse=\u05D4\u05DE\u05E2\u05D2\u05DF \u05E2\u05D3\u05D9\u05D9\u05DF \u05DE\u05EA\u05D5\u05D6\u05DB\u05E8 \u05D1\u05EA\u05D4\u05DC\u05D9\u05DB\u05D9\u05DD \u05D5\u05E2\u05DC \u05DB\u05DF \u05D0\u05D9\u05E0\u05D5 \u05D9\u05DB\u05D5\u05DC \u05DC\u05D4\u05D9\u05DE\u05D7\u05E7. DocketNotFound=\u05D4\u05E7\u05D5\u05D1\u05E5 \u05D4\u05DE\u05D1\u05D5\u05E7\u05E9 \u05D0\u05D9\u05E0\u05D5 \u05D9\u05DB\u05D5\u05DC \u05DC\u05D4\u05D9\u05DE\u05E6\u05D0. Eigenschaft=\u05DE\u05D0\u05E4\u05D9\u05D9\u05DF +Error=running tool or reading report file\=Fehler\:\=zzz Error\ running\ tool\ or\ reading\ report\ file=zzz Error\ while\ loading\ metadata=\u05E9\u05D2\u05D9\u05D0\u05D4 \u05D1\u05EA\u05D4\u05DC\u05D9\u05DA \u05D4\u05E2\u05DC\u05D0\u05EA \u05DE\u05D8\u05D0-\u05D3\u05D0\u05D8\u05D0 -Error=running\ tool\ or\ reading\ report\ file=Fehler\:=zzz ErrorDMSExport=\u05D4\u05EA\u05D4\u05DC\u05D9\u05DA {0} \u05D0\u05D9\u05E0\u05D5 \u05D9\u05DB\u05D5\u05DC \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05D9\u05D9\u05D5\u05E6\u05D0 \u05D1\u05E9\u05DC \u05EA\u05E7\u05DC\u05D4\: {1} ErrorLoadingValidationPlugin=\u05DC\u05D0 \u05D9\u05DB\u05D5\u05DC \u05DC\u05D8\u05E2\u05D5\u05DF \u05D0\u05EA \u05D4PLUGIN \u05D4\u05DE\u05D0\u05E9\u05E8. ErrorMetadataNotUpdated=\u05E7\u05D5\u05D1\u05E5 \u05D4\u05DE\u05D8\u05D0-\u05D3\u05D0\u05D8\u05D0 {0} \u05DC\u05D0 \u05D9\u05DB\u05D5\u05DC \u05D4\u05D9\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05E2\u05D5\u05D3\u05DB\u05DF. @@ -1877,6 +1877,7 @@ mets_navigateTwoImagesRight=Navigate two pages to the right zzz mets_no_metadata_assigned=\u05DC\u05D0 \u05D4\u05D5\u05E7\u05E6\u05D4 \u05DE\u05D8\u05D0-\u05D3\u05D0\u05D8\u05D0 mets_no_metadatagroups_assigned=\u05DC\u05D0 \u05D4\u05D5\u05E7\u05E6\u05D5 \u05E7\u05D1\u05D5\u05E6\u05D5\u05EA \u05DE\u05D8\u05D0-\u05D3\u05D0\u05D8\u05D0 mets_no_persons_assigned=\u05DC\u05D0 \u05D4\u05D5\u05E7\u05E6\u05D5 \u05D0\u05E0\u05E9\u05D9\u05DD +mets_notRestricted=Activate access restriction zzz mets_pageArea=Area on {0} zzz mets_paginationAssignmentError=\u05DC\u05D0 \u05E0\u05D9\u05EA\u05DF \u05D4\u05D9\u05D4 \u05DC\u05D4\u05E7\u05E6\u05D5\u05EA \u05E2\u05DE\u05D5\u05D3\u05D9\u05DD \u05D0\u05DC\u05D5. \u05DB\u05E0\u05E8\u05D0\u05D4 \u05D4\u05E2\u05DE\u05D5\u05D3 \u05D4\u05E8\u05D0\u05D3\u05D5\u05DF \u05D0\u05D5 \u05D4\u05D0\u05D7\u05E8\u05D5\u05DF \u05D7\u05E1\u05E8\u05D9\u05DD \u05D0\u05D5 \u05E9\u05D4\u05E1\u05D3\u05E8 \u05DC\u05D0 \u05E0\u05DB\u05D5\u05DF.zzz mets_personsOfCurrentDocStruct=\u05D0\u05E0\u05E9\u05D9\u05DD \u05E9\u05DC \u05D4\u05D2\u05D5\u05E8\u05DD \u05D4\u05DE\u05D1\u05E0\u05D9 \u05D4\u05E0\u05D1\u05D7\u05E8 @@ -1885,6 +1886,7 @@ mets_removeTheseImages=\u05D4\u05E1\u05E8 \u05EA\u05DE\u05D5\u05E0\u05D5\u05EA \ mets_resetImageRotation=Reset image rotation zzz mets_resetPagination=\u05D0\u05E4\u05E1 \u05DE\u05E1\u05E4\u05D5\u05E8 \u05DC\u05D7\u05DC\u05D5\u05D8\u05D9\u05DF mets_reset_pagination_confirmation=Should the pagination really be completely reset? This change is written to the hard disk and can only be undone by the intervention of an administrator zzz +mets_restricted=Access restriction active. Click here to remove it. zzz mets_rotateImageLeft=\u05E1\u05D5\u05D1\u05D1 \u05EA\u05DE\u05D5\u05E0\u05D4 \u05DC\u05E9\u05DE\u05D0\u05DC mets_rotateImageRight=\u05E1\u05D5\u05D1\u05D1 \u05EA\u05DE\u05D5\u05E0\u05D4 \u05DC\u05D9\u05DE\u05D9\u05DF mets_selectCountingType=\u05D1\u05D7\u05E8 \u05E1\u05D5\u05D2 \u05E1\u05E4\u05D9\u05E8\u05D4 @@ -2306,12 +2308,9 @@ plugin_administration_archive_DescriptionDates=zzz plugin_administration_archive_Number=Archive Number zzz plugin_administration_archive_Shelfmark=Reference code(s) zzz plugin_administration_archive_accessrestrict=Conditions governing access zzz -plugin_administration_archive_accessrestrict_date=date zzz plugin_administration_archive_accessrestrict_date=zzz -plugin_administration_archive_accessrestrict_value=Value zzz plugin_administration_archive_accessrestrict_value=zzz plugin_administration_archive_accruals=Accruals zzz -plugin_administration_archive_accruals_date=date zzz plugin_administration_archive_accruals_date=zzz plugin_administration_archive_accruals_head=zzz plugin_administration_archive_accruals_p=zzz @@ -2323,12 +2322,9 @@ plugin_administration_archive_agencycode=Agency code zzz plugin_administration_archive_agent=zzz plugin_administration_archive_altformavail=Existence and location of copies zzz plugin_administration_archive_altformavail_head=zzz -plugin_administration_archive_altformavail_link=Link zzz plugin_administration_archive_altformavail_link=zzz plugin_administration_archive_altformavail_p=zzz -plugin_administration_archive_altformavail_person=Person zzz plugin_administration_archive_altformavail_person=zzz -plugin_administration_archive_altformavail_shelfmark=Signature zzz plugin_administration_archive_altformavail_shelfmark=zzz plugin_administration_archive_appraisal=Appraisal, destruction and scheduling information zzz plugin_administration_archive_area_access=Condition of Access and Use Area zzz @@ -2413,21 +2409,15 @@ plugin_administration_archive_numberOfNodes=zzz plugin_administration_archive_oddnote=Odd notes zzz plugin_administration_archive_originalsloc=Existence and location of originals zzz plugin_administration_archive_originalsloc_head=zzz -plugin_administration_archive_originalsloc_link=Link zzz plugin_administration_archive_originalsloc_link=zzz plugin_administration_archive_originalsloc_p=zzz -plugin_administration_archive_originalsloc_person=Person zzz plugin_administration_archive_originalsloc_person=zzz -plugin_administration_archive_originalsloc_shelfmark=Signature zzz plugin_administration_archive_originalsloc_shelfmark=zzz plugin_administration_archive_origination=Name of creator(s) zzz plugin_administration_archive_originationcorpname=zzz plugin_administration_archive_otherfindaid=Finding aids zzz -plugin_administration_archive_otherfindaid_link=Link to finding aid zzz plugin_administration_archive_otherfindaid_link=zzz -plugin_administration_archive_otherfindaid_node=Nodes of the finding aid zzz plugin_administration_archive_otherfindaid_node=zzz -plugin_administration_archive_otherfindaid_type=Type of finding aid zzz plugin_administration_archive_otherfindaid_type=zzz plugin_administration_archive_permission_management_new=zzz plugin_administration_archive_permission_management_upload=zzz @@ -2436,10 +2426,8 @@ plugin_administration_archive_person=Person zzz plugin_administration_archive_physdesc=Extent and medium of the unit of description (quantity, bulk, or size) zzz plugin_administration_archive_physdescdimensions=zzz plugin_administration_archive_physdescextent=zzz -plugin_administration_archive_physdescquantity=Quantity zzz plugin_administration_archive_physdescquantity=zzz plugin_administration_archive_physdescstructured=Standardized extent and medium of the unit of description (quantity, bulk, or size) zzz -plugin_administration_archive_physdescunittype=Type zzz plugin_administration_archive_physdescunittype=zzz plugin_administration_archive_phystech=Physical characteristics and technical requirements zzz plugin_administration_archive_please_select_node=Please select a node first. zzz @@ -2457,7 +2445,6 @@ plugin_administration_archive_reviewRequired=zzz plugin_administration_archive_role=Role zzz plugin_administration_archive_saveAndExit=Save and exit record group zzz plugin_administration_archive_scopecontent=Scope and content zzz -plugin_administration_archive_selection=Selection zzz plugin_administration_archive_selection=zzz plugin_administration_archive_selectionHeading=Selection of the record group zzz plugin_administration_archive_selectionText=Please first select the record group you would like to work with\: zzz diff --git a/src/main/resources/messages_nl.properties b/src/main/resources/messages_nl.properties index e776cb7cb..d1c1fc8c8 100644 --- a/src/main/resources/messages_nl.properties +++ b/src/main/resources/messages_nl.properties @@ -1877,7 +1877,7 @@ mets_navigateTwoImagesRight=Navigate two pages to the right zzz mets_no_metadata_assigned=Er zijn geen metagegevens toegewezen zzz mets_no_metadatagroups_assigned=Er zijn geen metadatagroepen toegewezen zzz mets_no_persons_assigned=Er zijn geen personen toegewezen zzz -mets_notRestricted=zzz +mets_notRestricted=Activate access restriction zzz mets_pageArea=Bereik tot {0} zzz mets_paginationAssignmentError=De pagina's konden niet worden toegewezen. Mogelijk ontbreekt de eerste of laatste pagina of is de volgorde omgekeerd. zzz mets_personsOfCurrentDocStruct=Personen van het geselecteerde krachtelement zzz @@ -1886,7 +1886,7 @@ mets_removeTheseImages=Verwijder deze afbeeldingen van de paginatoewijzing zzz mets_resetImageRotation=Afbeelding terugzetten zzz mets_resetPagination=Paginering volledig resetten zzz mets_reset_pagination_confirmation=Moet de paginering echt helemaal opnieuw worden ingesteld? Deze wijziging wordt op de harde schijf geschreven en kan alleen ongedaan worden gemaakt door tussenkomst van een beheerder zzz -mets_restricted=zzz +mets_restricted=Access restriction active. Click here to remove it. zzz mets_rotateImageLeft=Afbeelding naar links draaien zzz mets_rotateImageRight=Beeld naar rechts draaien zzz mets_selectCountingType=Selectie van de telmodus zzz diff --git a/src/main/resources/messages_pt.properties b/src/main/resources/messages_pt.properties index 0050da475..e53e9c4e9 100644 --- a/src/main/resources/messages_pt.properties +++ b/src/main/resources/messages_pt.properties @@ -1877,7 +1877,7 @@ mets_navigateTwoImagesRight=Navigate two pages to the right zzz mets_no_metadata_assigned=N\u00E3o foram atribu\u00EDdos metadados zzz mets_no_metadatagroups_assigned=N\u00E3o foram atribu\u00EDdos grupos de metadados zzz mets_no_persons_assigned=Nenhuma pessoa foi designada zzz -mets_notRestricted=zzz +mets_notRestricted=Activate access restriction zzz mets_pageArea=Alcance at\u00E9 {0} zzz mets_paginationAssignmentError=As p\u00E1ginas n\u00E3o puderam ser atribu\u00EDdas. Possivelmente a primeira ou \u00FAltima p\u00E1gina esteja em falta ou a ordem seja invertida. zzz mets_personsOfCurrentDocStruct=Pessoas do elemento de for\u00E7a selecionado zzz @@ -1886,7 +1886,7 @@ mets_removeTheseImages=Remover estas imagens da atribui\u00E7\u00E3o da p\u00E1g mets_resetImageRotation=Redefinir imagem zzz mets_resetPagination=Redefinir completamente a pagina\u00E7\u00E3o zzz mets_reset_pagination_confirmation=A pagina\u00E7\u00E3o deve realmente ser completamente reiniciada? Esta altera\u00E7\u00E3o \u00E9 escrita no disco r\u00EDgido e s\u00F3 pode ser desfeita pela interven\u00E7\u00E3o de um administrador zzz -mets_restricted=zzz +mets_restricted=Access restriction active. Click here to remove it. zzz mets_rotateImageLeft=Rodar a imagem para a esquerda zzz mets_rotateImageRight=Rodar a imagem para a direita zzz mets_selectCountingType=Sele\u00E7\u00E3o do modo de contagem zzz diff --git a/src/main/webapp/WEB-INF/taglibs/properties/editDialog.xhtml b/src/main/webapp/WEB-INF/taglibs/properties/editDialog.xhtml index 239967b7b..0cde608ef 100644 --- a/src/main/webapp/WEB-INF/taglibs/properties/editDialog.xhtml +++ b/src/main/webapp/WEB-INF/taglibs/properties/editDialog.xhtml @@ -51,7 +51,7 @@ id="value" styleClass="form-control" value="#{myprocess_item.value}" - readonly="#{myprocess_item.showProcessGroupAccessCondition == 'READ'}"> + disabled="#{scope == 'step' ? myprocess_item.currentStepAccessCondition == 'READ' : myprocess_item.showProcessGroupAccessCondition == 'READ'}"> + disabled="#{scope == 'step' ? myprocess_item.currentStepAccessCondition == 'READ' : myprocess_item.showProcessGroupAccessCondition == 'READ'}"> + disabled="#{scope == 'step' ? myprocess_item.currentStepAccessCondition == 'READ' : myprocess_item.showProcessGroupAccessCondition == 'READ'}"> @@ -140,32 +140,24 @@ - - + +
+ for="select" + styleClass="control-label" + value="#{!myprocess_item.isNew?myprocess_item.name:msgs.wert}" />
- - - + + for="select" + showDetail="true" + styleClass="help-inline text-danger" />
@@ -183,7 +175,7 @@ + disabled="#{scope == 'step' ? myprocess_item.currentStepAccessCondition == 'READ' : myprocess_item.showProcessGroupAccessCondition == 'READ'}" /> +
+
- - - + + + + + + rendered="#{(property.type.name != 'link') and (property.type.name != 'boolean') and (property.type.name != 'html') and (property.type.name != 'listmultiselect') and (property.type.name != 'vocabularyreference') and (property.type.name != 'vocabularymultireference')}" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/main/webapp/resources/composites/formGroupPerson.xhtml b/src/main/webapp/resources/composites/formGroupPerson.xhtml index cf24d6959..369310e6c 100644 --- a/src/main/webapp/resources/composites/formGroupPerson.xhtml +++ b/src/main/webapp/resources/composites/formGroupPerson.xhtml @@ -30,18 +30,24 @@ styleClass="form-group__label" value="#{msgs.vorname}:" /> - diff --git a/src/main/webapp/uii/guiPluginNew.xhtml b/src/main/webapp/uii/guiPluginNew.xhtml index d1d188962..4a39ca675 100644 --- a/src/main/webapp/uii/guiPluginNew.xhtml +++ b/src/main/webapp/uii/guiPluginNew.xhtml @@ -4,7 +4,9 @@ xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:intranda="http://xmlns.jcp.org/jsf/composite/compositesPG" xmlns:h="http://xmlns.jcp.org/jsf/html" - template="/uii/templatePG/templatePG.html" + template="#{((AktuelleSchritteForm.myPlugin.title eq 'intranda_step_replace-images') + or (AktuelleSchritteForm.myPlugin.title eq 'intranda_step_flex-images')) + ? '/uii/templatePG/templatePG.html' : '/uii/template/template.html'}" > a,.duplicate > span { display: inline-block; height: 25px; diff --git a/src/main/webapp/uii/templatePG/includes/journal.xhtml b/src/main/webapp/uii/templatePG/includes/journal.xhtml index c2bb7c7fb..46f714243 100644 --- a/src/main/webapp/uii/templatePG/includes/journal.xhtml +++ b/src/main/webapp/uii/templatePG/includes/journal.xhtml @@ -268,14 +268,7 @@ value="#{bean.journal}" varStatus="row"> - -

- - - -

-
+
  • @@ -346,7 +339,7 @@ + value="#{entry.formattedDate} #{entry.creationTime}">
  • diff --git a/src/main/webapp/uii/templatePG/includes/process/processcreation_properties.xhtml b/src/main/webapp/uii/templatePG/includes/process/processcreation_properties.xhtml index 663d050fb..c531b60c7 100644 --- a/src/main/webapp/uii/templatePG/includes/process/processcreation_properties.xhtml +++ b/src/main/webapp/uii/templatePG/includes/process/processcreation_properties.xhtml @@ -95,7 +95,7 @@
    - +
    - - + +
    - +
    - - - + + for="select" + showDetail="true" + styleClass="help-inline text-danger" />
    diff --git a/src/main/webapp/uii/vocabulary_records.xhtml b/src/main/webapp/uii/vocabulary_records.xhtml index 568a8019b..6731fdf77 100644 --- a/src/main/webapp/uii/vocabulary_records.xhtml +++ b/src/main/webapp/uii/vocabulary_records.xhtml @@ -163,10 +163,12 @@