diff --git a/pom.xml b/pom.xml
index a7a9ac561..c71f8dffb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
io.goobi.workflowworkflow-base
- 24.10
+ 24.11workflow-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 @@
-
-
+
+