diff --git a/Jenkinsfile b/Jenkinsfile index 57c878626..210f8a28f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -112,6 +112,18 @@ pipeline { } } } + stage('trigger docker build') { + when { + anyOf { + branch 'master' + branch 'hotfix_release_*' + branch 'develop' + } + } + steps { + build wait: false, job: 'goobi-workflow/goobi-docker/master', parameters: [[$class: 'StringParameterValue', name: 'UPSTREAM_BRANCH', value: String.valueOf(BRANCH_NAME)]] + } + } } post { always { diff --git a/install/config/config_contentServer.xml b/install/config/config_contentServer.xml new file mode 100644 index 000000000..4d08d0c8c --- /dev/null +++ b/install/config/config_contentServer.xml @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + true + changeme + changeme + https://myendpoint.tld + + + diff --git a/pom.xml b/pom.xml index 401dddbbf..ad0aa93ba 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.goobi.workflow workflow-base - 24.05 + 24.06 workflow-core diff --git a/src/main/java/de/sub/goobi/config/ConfigurationHelper.java b/src/main/java/de/sub/goobi/config/ConfigurationHelper.java index b3edfd840..344b6b8cd 100644 --- a/src/main/java/de/sub/goobi/config/ConfigurationHelper.java +++ b/src/main/java/de/sub/goobi/config/ConfigurationHelper.java @@ -361,7 +361,11 @@ public String getProcessImagesFallbackDirectoryName() { * This method is used to get information about custom processes. The process name is part of the configuration key. */ public String getAdditionalProcessFolderName(String foldername) { - return getLocalString("process.folder.images." + foldername, ""); + return getAdditionalProcessFolderName("images", foldername); + } + + public String getAdditionalProcessFolderName(String folder, String foldername) { + return getLocalString("process.folder." + folder + "." + foldername, ""); } public String getProcessOcrTxtDirectoryName() { @@ -1123,10 +1127,6 @@ public boolean isMetsEditorDisplayFileManipulation() { return getLocalBoolean("MetsEditorDisplayFileManipulation", false); } - public boolean isMetsEditorShowArchivedFolder() { - return getLocalBoolean("MetsEditorShowArchivedFolder", false); - } - public boolean isMetsEditorShowMetadataPopup() { return getLocalBoolean("MetsEditorShowMetadataPopup", true); } diff --git a/src/main/java/de/sub/goobi/export/dms/ExportDms.java b/src/main/java/de/sub/goobi/export/dms/ExportDms.java index d9fdea5d8..4c47145d7 100644 --- a/src/main/java/de/sub/goobi/export/dms/ExportDms.java +++ b/src/main/java/de/sub/goobi/export/dms/ExportDms.java @@ -165,8 +165,8 @@ public boolean startExport(Process myProzess, String inZielVerzeichnis) throws I return false; } } - newfile.setDigitalDocument(gdzfile.getDigitalDocument()); - gdzfile = newfile; + // throw away validation file and re-read the original data + gdzfile = myProzess.readMetadataFile(); } catch (Exception exception) { //NOSONAR InterruptedException must not be re-thrown as it is not running in a separate thread Helper.setFehlerMeldung(Helper.getTranslation("exportError") + myProzess.getTitel(), exception); diff --git a/src/main/java/de/sub/goobi/forms/AdditionalField.java b/src/main/java/de/sub/goobi/forms/AdditionalField.java index 3c14d94c1..4fab656f2 100644 --- a/src/main/java/de/sub/goobi/forms/AdditionalField.java +++ b/src/main/java/de/sub/goobi/forms/AdditionalField.java @@ -25,6 +25,9 @@ */ package de.sub.goobi.forms; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -46,7 +49,7 @@ public class AdditionalField { @Getter private boolean required = false; @Getter - private String from = "prozess"; + private String from = "process"; @Getter @Setter private List selectList; @@ -72,6 +75,13 @@ public class AdditionalField { @Setter private boolean multiselect = false; + @Getter + @Setter + private String fieldType; + @Getter + @Setter + private String pattern; + public void setInitStart(String newValue) { this.initStart = newValue; if (this.initStart == null) { @@ -169,6 +179,35 @@ public void setValues(List values) { wert = wert.substring(0, wert.length() - 1); } } + + public LocalDateTime getValueAsDateTime() { + if (StringUtils.isNotBlank(wert)) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"); + return LocalDateTime.from(formatter.parse(wert)); + } else { + return LocalDateTime.now(); + } + } + + public void setValueAsDateTime(LocalDateTime date) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"); + wert = formatter.format(date); + } + + public LocalDate getValueAsDate() { + if (StringUtils.isNotBlank(wert)) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + return LocalDate.from(formatter.parse(wert)); + } else { + return LocalDate.now(); + } + } + + public void setValueAsDate(LocalDate date) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + wert = formatter.format(date); + } + } /* =============================================================== */ diff --git a/src/main/java/de/sub/goobi/forms/AdministrationForm.java b/src/main/java/de/sub/goobi/forms/AdministrationForm.java index b11e2cde3..b3664d617 100644 --- a/src/main/java/de/sub/goobi/forms/AdministrationForm.java +++ b/src/main/java/de/sub/goobi/forms/AdministrationForm.java @@ -63,7 +63,7 @@ public class AdministrationForm implements Serializable { @Setter private IAdministrationPlugin administrationPlugin; - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments @Push PushContext adminPluginPush; diff --git a/src/main/java/de/sub/goobi/forms/MassImportForm.java b/src/main/java/de/sub/goobi/forms/MassImportForm.java index c065cfce0..03ed8dabd 100644 --- a/src/main/java/de/sub/goobi/forms/MassImportForm.java +++ b/src/main/java/de/sub/goobi/forms/MassImportForm.java @@ -99,7 +99,7 @@ public class MassImportForm implements Serializable { private static final String docStructsGetter = "getCurrentDocStructs"; - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments private GoobiScriptManager goobiScriptManager; private ImportFormat format = null; private final ImportPluginLoader ipl = new ImportPluginLoader(); @@ -168,7 +168,7 @@ public class MassImportForm implements Serializable { @Getter private Batch batch; - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments private NavigationForm bean; @Getter diff --git a/src/main/java/de/sub/goobi/forms/NavigationForm.java b/src/main/java/de/sub/goobi/forms/NavigationForm.java index 8997c15e9..62c0a53c3 100644 --- a/src/main/java/de/sub/goobi/forms/NavigationForm.java +++ b/src/main/java/de/sub/goobi/forms/NavigationForm.java @@ -100,7 +100,7 @@ public class NavigationForm implements Serializable { private HashMap uiStatus = new HashMap<>(); private String currentTheme = "/uii"; - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments @Push PushContext workflowPluginPush; diff --git a/src/main/java/de/sub/goobi/forms/ProzesskopieForm.java b/src/main/java/de/sub/goobi/forms/ProzesskopieForm.java index d59eee9fc..51de8bc5c 100644 --- a/src/main/java/de/sub/goobi/forms/ProzesskopieForm.java +++ b/src/main/java/de/sub/goobi/forms/ProzesskopieForm.java @@ -35,6 +35,7 @@ import java.nio.file.Paths; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -75,6 +76,9 @@ import org.goobi.production.plugin.interfaces.IOpacPluginVersion2; import org.goobi.production.properties.ProcessProperty; import org.goobi.production.properties.PropertyParser; +import org.goobi.vocabulary.Field; +import org.goobi.vocabulary.VocabRecord; +import org.goobi.vocabulary.Vocabulary; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; @@ -104,6 +108,7 @@ import de.sub.goobi.persistence.managers.ProjectManager; import de.sub.goobi.persistence.managers.RulesetManager; import de.sub.goobi.persistence.managers.StepManager; +import de.sub.goobi.persistence.managers.VocabularyManager; import de.unigoettingen.sub.search.opac.ConfigOpac; import de.unigoettingen.sub.search.opac.ConfigOpacCatalogue; import de.unigoettingen.sub.search.opac.ConfigOpacDoctype; @@ -430,10 +435,12 @@ private AdditionalField readAdditionalFieldConfiguration(HierarchicalConfigurati fa.setIsnotdoctype(item.getString("@isnotdoctype")); fa.setInitStart(item.getString("@initStart")); fa.setInitEnd(item.getString("@initEnd")); + fa.setFieldType(item.getString("@type", "text")); + fa.setPattern(item.getString("@pattern")); - if (item.getBoolean("@ughbinding", false)) { + if (StringUtils.isNotBlank(item.getString("@metadata")) && item.getBoolean("@ughbinding", true)) { fa.setUghbinding(true); - fa.setDocstruct(item.getString("@docstruct")); + fa.setDocstruct(item.getString("@docstruct", "topstruct")); fa.setMetadata(item.getString("@metadata")); } if (item.getBoolean("@autogenerated", false)) { @@ -465,6 +472,26 @@ private AdditionalField readAdditionalFieldConfiguration(HierarchicalConfigurati String sid = hc.getString("."); fa.getSelectList().add(new SelectItem(sid, svalue, null)); } + + String vocabularyTitle = item.getString("@vocabulary"); + if (StringUtils.isNotBlank(vocabularyTitle)) { + Vocabulary currentVocabulary = VocabularyManager.getVocabularyByTitle(vocabularyTitle); + if (currentVocabulary != null && currentVocabulary.getId() != null) { + VocabularyManager.getAllRecords(currentVocabulary); + List recordList = currentVocabulary.getRecords(); + Collections.sort(recordList); + List selectItems = new ArrayList<>(recordList.size()); + for (VocabRecord vr : recordList) { + for (Field f : vr.getFields()) { + if (f.getDefinition().isMainEntry()) { + selectItems.add(new SelectItem(f.getValue(), f.getValue())); + break; + } + } + } + fa.setSelectList(selectItems); + } + } return fa; } @@ -550,7 +577,7 @@ private void fillFieldsFromMetadataFile() throws PreferencesException { if (field.isUghbinding() && field.getShowDependingOnDoctype(getDocType())) { /* welches Docstruct */ DocStruct myTempStruct = this.myRdf.getDigitalDocument().getLogicalDocStruct(); - if ("firstchild".equals(field.getDocstruct())) { //NOSONAR + if ("child".equals(field.getDocstruct()) || "firstchild".equals(field.getDocstruct())) { //NOSONAR try { myTempStruct = this.myRdf.getDigitalDocument().getLogicalDocStruct().getAllChildren().get(0); } catch (RuntimeException e) { @@ -954,7 +981,7 @@ public String createNewProcess() /* welches Docstruct */ DocStruct myTempStruct = this.myRdf.getDigitalDocument().getLogicalDocStruct(); DocStruct myTempChild = null; - if ("firstchild".equals(field.getDocstruct())) { + if ("child".equals(field.getDocstruct()) || "firstchild".equals(field.getDocstruct())) { try { myTempStruct = this.myRdf.getDigitalDocument().getLogicalDocStruct().getAllChildren().get(0); } catch (RuntimeException e) { @@ -1327,13 +1354,13 @@ private void addProperties() { values.add(field.getWert()); } for (String value : values) { - if ("werk".equals(field.getFrom())) { + if ("work".equals(field.getFrom()) || "werk".equals(field.getFrom())) { bh.EigenschaftHinzufuegen(werk, field.getTitel(), value); } - if ("vorlage".equals(field.getFrom())) { + if ("template".equals(field.getFrom()) || "vorlage".equals(field.getFrom())) { bh.EigenschaftHinzufuegen(vor, field.getTitel(), value); } - if ("prozess".equals(field.getFrom())) { + if ("process".equals(field.getFrom()) || "prozess".equals(field.getFrom())) { bh.EigenschaftHinzufuegen(this.prozessKopie, field.getTitel(), value); } } diff --git a/src/main/java/de/sub/goobi/forms/SessionForm.java b/src/main/java/de/sub/goobi/forms/SessionForm.java index 4a188a1f1..fc770afed 100644 --- a/src/main/java/de/sub/goobi/forms/SessionForm.java +++ b/src/main/java/de/sub/goobi/forms/SessionForm.java @@ -24,8 +24,6 @@ import de.sub.goobi.config.ConfigurationHelper; import de.sub.goobi.helper.Helper; -import de.sub.goobi.helper.exceptions.DAOException; -import de.sub.goobi.persistence.managers.UserManager; import lombok.Getter; import lombok.Setter; import lombok.extern.log4j.Log4j2; @@ -99,7 +97,7 @@ public class SessionForm implements Serializable { /** * The request object of the current session */ - @Inject + @Inject //NOSONAR needs to be a field injection, as the been constructor does not allow arguments private HttpServletRequest request; /** @@ -111,11 +109,11 @@ public class SessionForm implements Serializable { @Getter private String sessionListErrorTime = ""; - @Inject + @Inject //NOSONAR needs to be a field injection, as the been constructor does not allow arguments @Push PushContext adminMessageChannel; - @Inject + @Inject //NOSONAR needs to be a field injection, as the been constructor does not allow arguments @Getter private GoobiScriptManager gsm; @@ -279,7 +277,7 @@ public void updateSessionUserName(HttpSession updatedSession, User updatedUser) SessionInfo knownSession = this.getSessionInfoById(id); if (knownSession == null) { - log.debug(LoginBean.LOGIN_LOG_PREFIX + "Created new session for user."); + log.trace(LoginBean.LOGIN_LOG_PREFIX + "Created new session for user."); SessionInfo newSession = new SessionInfo(); newSession.setUserName(LOGGED_OUT); newSession.setUserId(0); @@ -290,8 +288,6 @@ public void updateSessionUserName(HttpSession updatedSession, User updatedUser) } if (updatedUser == null) { - log.debug(LoginBean.LOGIN_LOG_PREFIX + "Following user will be logged out:"); - SessionForm.logUserInformation(knownSession); knownSession.setUserName(LOGGED_OUT); updatedSession.setAttribute("User", LOGGED_OUT); knownSession.setUserId(0); @@ -308,7 +304,7 @@ public void updateSessionUserName(HttpSession updatedSession, User updatedUser) knownSession.setUserId(updatedUser.getId()); knownSession.setUserTimeout(timeout); updatedSession.setMaxInactiveInterval(timeout); - log.debug(LoginBean.LOGIN_LOG_PREFIX + "Removing old sessions..."); + log.trace(LoginBean.LOGIN_LOG_PREFIX + "Removing old sessions..."); this.removeAbandonedSessions(true); log.trace(LoginBean.LOGIN_LOG_PREFIX + "Sessions list is up to date."); } @@ -345,10 +341,6 @@ private void removeAbandonedSessions(boolean logKeptSessions) { boolean noAddress = session.getUserIpAddress() == null; if (overTimeout || loggedOut || noAddress) { - if (overTimeout) { - log.debug(LoginBean.LOGIN_LOG_PREFIX + "Following user will be logged out because timeout is exceeded:"); - log.debug(LoginBean.LOGIN_LOG_PREFIX + "User name: " + session.getUserName()); - } message.append("\nSession " + counter + " will be removed because timeout is exceeded or session is abandoned."); log.trace(message.toString()); this.sessions.remove(index); @@ -362,26 +354,6 @@ private void removeAbandonedSessions(boolean logKeptSessions) { } } - /** - * Prints the login name, the first name and the last name of the user in the given session object to the debug log output. If the user is - * unknown, no log is printed. - * - * @param session The object that contains the session information and the user information - */ - public static void logUserInformation(SessionInfo session) { - try { - User user = UserManager.getUserById(session.getUserId()); - if (user == null) { - return; - } - log.debug(LoginBean.LOGIN_LOG_PREFIX + "Login name: " + user.getLogin()); - log.debug(LoginBean.LOGIN_LOG_PREFIX + "First name: " + user.getVorname()); - log.debug(LoginBean.LOGIN_LOG_PREFIX + "Last name: " + user.getNachname()); - } catch (DAOException daoException) { - log.trace(daoException); - } - } - /** * Returns the current time, formatted as HH:MM:SS * diff --git a/src/main/java/de/sub/goobi/helper/BagCreation.java b/src/main/java/de/sub/goobi/helper/BagCreation.java index 6509a201f..186e358be 100644 --- a/src/main/java/de/sub/goobi/helper/BagCreation.java +++ b/src/main/java/de/sub/goobi/helper/BagCreation.java @@ -50,6 +50,8 @@ public class BagCreation { @Getter private Path documentationFolder; @Getter + private Path attachmentsFolder; + @Getter private Path otherFolder; @Getter private Metadata metadata = new Metadata(); @@ -88,6 +90,7 @@ public void createIEFolder(String folderName, String objectFolderName) { metadataFolder = Paths.get(ieFolder.toString(), "metadata"); objectsFolder = Paths.get(ieFolder.toString(), objectFolderName); documentationFolder = Paths.get(ieFolder.toString(), "documentation"); + attachmentsFolder = Paths.get(ieFolder.toString(), "attachments"); otherFolder = Paths.get(ieFolder.toString(), "other"); try { StorageProvider.getInstance().createDirectories(metadataFolder); diff --git a/src/main/java/de/sub/goobi/helper/NIOFileUtils.java b/src/main/java/de/sub/goobi/helper/NIOFileUtils.java index e4e7cd8d0..dc135afd7 100644 --- a/src/main/java/de/sub/goobi/helper/NIOFileUtils.java +++ b/src/main/java/de/sub/goobi/helper/NIOFileUtils.java @@ -151,9 +151,7 @@ public Integer getNumberOfFiles(Path dir, final String... suffixes) { /* -------------------------------- * die Images zählen * --------------------------------*/ - anzahl = list(dir.toString(), path -> { - return Arrays.stream(suffixes).anyMatch(suffix -> path.getFileName().toString().endsWith(suffix)); - } + anzahl = list(dir.toString(), path -> Arrays.stream(suffixes).anyMatch(suffix -> path.getFileName().toString().endsWith(suffix)) ).size(); @@ -264,9 +262,7 @@ public List listDirNames(String folder) { return this.list(folder, folderFilter); } - public static final DirectoryStream.Filter imageNameFilter = path -> { - return checkImageType(path.getFileName().toString()); - }; + public static final DirectoryStream.Filter imageNameFilter = path -> checkImageType(path.getFileName().toString()); public static final DirectoryStream.Filter objectNameFilter = path -> { String prefix = ConfigurationHelper.getInstance().getImagePrefix(); @@ -333,13 +329,9 @@ public boolean accept(Path path) throws IOException { } }; - public static final DirectoryStream.Filter folderFilter = path -> { - return path.toFile().isDirectory(); - }; + public static final DirectoryStream.Filter folderFilter = path -> path.toFile().isDirectory(); - public static final DirectoryStream.Filter fileFilter = path -> { - return path.toFile().isFile(); - }; + public static final DirectoryStream.Filter fileFilter = path -> path.toFile().isFile(); public static final DirectoryStream.Filter DATA_FILTER = path -> { String name = path.getFileName().toString(); diff --git a/src/main/java/de/sub/goobi/helper/S3FileUtils.java b/src/main/java/de/sub/goobi/helper/S3FileUtils.java index 394cb07c8..770f4bcc2 100644 --- a/src/main/java/de/sub/goobi/helper/S3FileUtils.java +++ b/src/main/java/de/sub/goobi/helper/S3FileUtils.java @@ -762,6 +762,13 @@ public void move(Path oldPath, Path newPath) throws IOException { } if (oldType == StorageType.S3 && newType == StorageType.S3) { // copy on s3 + if (isDirectory(oldPath)) { + // copy all files in prefix, delete old files + copyDirectory(oldPath, newPath); + deleteDir(oldPath); + } + } else { + // copy single file Copy copy = transferManager.copy(getBucket(), path2Key(oldPath), getBucket(), path2Key(newPath)); try { copy.waitForCompletion(); @@ -772,7 +779,6 @@ public void move(Path oldPath, Path newPath) throws IOException { Thread.currentThread().interrupt(); } } - } @Override diff --git a/src/main/java/de/sub/goobi/helper/VariableReplacer.java b/src/main/java/de/sub/goobi/helper/VariableReplacer.java index 9d6735853..43cfe40cc 100644 --- a/src/main/java/de/sub/goobi/helper/VariableReplacer.java +++ b/src/main/java/de/sub/goobi/helper/VariableReplacer.java @@ -506,7 +506,7 @@ public String replace(String inString) { try { String value = process.getConfiguredImageFolder(folderName); inString = inString.replace(r.group(), value); - } catch (IOException | SwapException | DAOException e) { + } catch (IllegalArgumentException | IOException | SwapException | DAOException e) { log.error(e); } } diff --git a/src/main/java/de/sub/goobi/helper/servletfilter/SecurityCheckFilter.java b/src/main/java/de/sub/goobi/helper/servletfilter/SecurityCheckFilter.java index 52adbecbb..c7acfe32a 100644 --- a/src/main/java/de/sub/goobi/helper/servletfilter/SecurityCheckFilter.java +++ b/src/main/java/de/sub/goobi/helper/servletfilter/SecurityCheckFilter.java @@ -43,7 +43,7 @@ public class SecurityCheckFilter implements Filter { - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments private LoginBean userBean; public SecurityCheckFilter() { //called once. no method arguments allowed here! @@ -51,10 +51,12 @@ public SecurityCheckFilter() { //called once. no method arguments allowed here! @Override public void init(FilterConfig conf) throws ServletException { + // do nothing } @Override public void destroy() { + // do nothing } /** Creates a new instance of SecurityCheckFilter */ diff --git a/src/main/java/de/sub/goobi/helper/servletfilter/SessionCounterFilter.java b/src/main/java/de/sub/goobi/helper/servletfilter/SessionCounterFilter.java index cc6373d24..76f689375 100644 --- a/src/main/java/de/sub/goobi/helper/servletfilter/SessionCounterFilter.java +++ b/src/main/java/de/sub/goobi/helper/servletfilter/SessionCounterFilter.java @@ -46,7 +46,7 @@ public class SessionCounterFilter implements Filter { ServletContext servletContext; - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments private SessionForm sf; @Override diff --git a/src/main/java/de/sub/goobi/metadaten/AltoSaver.java b/src/main/java/de/sub/goobi/metadaten/AltoSaver.java index 0671c893e..4a2cb3c30 100644 --- a/src/main/java/de/sub/goobi/metadaten/AltoSaver.java +++ b/src/main/java/de/sub/goobi/metadaten/AltoSaver.java @@ -56,7 +56,7 @@ public class AltoSaver { private static XPathFactory xFactory = XPathFactory.instance(); public static void saveAltoChanges(Path altoFile, AltoChange[] changes) throws JDOMException, IOException { - if (changes == null || changes.length == 0) { + if (changes == null) { return; } Document doc = sax.build(altoFile.toFile()); @@ -65,17 +65,21 @@ public static void saveAltoChanges(Path altoFile, AltoChange[] changes) throws J //first remove all tags and tagrefs. Create new Tags element if necessary XPathExpression tagsXPath = xFactory.compile("//alto:Tags", Filters.element(), null, namespace); Element tagsElement = tagsXPath.evaluateFirst(doc); - if (writeTags) { - if (tagsElement == null) { - int layoutIndex = doc.getRootElement().indexOf(doc.getRootElement().getChild("Layout", namespace)); - tagsElement = new Element("Tags", doc.getRootElement().getNamespace()); - doc.getRootElement().addContent(layoutIndex, tagsElement); - } + if (writeTags && tagsElement == null) { + int layoutIndex = doc.getRootElement().indexOf(doc.getRootElement().getChild("Layout", namespace)); + tagsElement = new Element("Tags", doc.getRootElement().getNamespace()); + doc.getRootElement().addContent(layoutIndex, tagsElement); + } else if (!writeTags && tagsElement != null) { + doc.getRootElement().removeContent(tagsElement); + tagsElement = null; + } + if (tagsElement != null) { tagsElement.removeChildren("NamedEntityTag", namespace); - XPathExpression stringsXPath = xFactory.compile("//alto:String", Filters.element(), null, namespace); - List stringElements = stringsXPath.evaluate(doc); - stringElements.forEach(string -> string.removeAttribute("TAGREFS")); } + XPathExpression stringsXPath = xFactory.compile("//alto:String", Filters.element(), null, namespace); + List stringElements = stringsXPath.evaluate(doc); + stringElements.forEach(string -> string.removeAttribute("TAGREFS")); + int tagCounter = 0; for (AltoChange change : changes) { @@ -107,7 +111,8 @@ public static void saveAltoChanges(Path altoFile, AltoChange[] changes) throws J log.error("Cannot add alto change: Unknown action {}", change.getAction()); } } - try (OutputStream out = StorageProvider.getInstance().newOutputStream(altoFile)) { + try ( + OutputStream out = StorageProvider.getInstance().newOutputStream(altoFile)) { XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat()); xmlOut.output(doc, out); } diff --git a/src/main/java/io/goobi/workflow/api/connection/SftpUtils.java b/src/main/java/io/goobi/workflow/api/connection/SftpUtils.java index cf5cf6a00..a9b3a3ad2 100644 --- a/src/main/java/io/goobi/workflow/api/connection/SftpUtils.java +++ b/src/main/java/io/goobi/workflow/api/connection/SftpUtils.java @@ -128,6 +128,9 @@ public List listContent() throws IOException { throw new IOException(e); } for (LsEntry entry : lsList) { + if (".".equals(entry.getFilename()) || "..".equals(entry.getFilename())) { + continue; + } content.add(entry.getFilename()); } Collections.sort(content); @@ -197,6 +200,13 @@ public void deleteFile(String filename) throws IOException { } catch (SftpException e) { throw new IOException(e); } + } + public void deleteFolder(String filename) throws IOException { + try { + sftpChannel.rmdir(filename); + } catch (SftpException e) { + throw new IOException(e); + } } } diff --git a/src/main/java/io/goobi/workflow/xslt/XsltToPdf.java b/src/main/java/io/goobi/workflow/xslt/XsltToPdf.java index d49284674..574dfe32a 100644 --- a/src/main/java/io/goobi/workflow/xslt/XsltToPdf.java +++ b/src/main/java/io/goobi/workflow/xslt/XsltToPdf.java @@ -32,6 +32,7 @@ import java.io.OutputStream; import java.util.List; +import javax.xml.XMLConstants; import javax.xml.transform.Result; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; @@ -51,6 +52,7 @@ import de.sub.goobi.config.ConfigurationHelper; import lombok.extern.log4j.Log4j2; +import net.sf.saxon.lib.FeatureKeys; /** * This class provides generating a docket based on the generated xml log @@ -189,11 +191,15 @@ private void writeExportToFile(OutputStream os, ByteArrayOutputStream out, Strin // transform xml try { Transformer xslfoTransformer; + TransformerFactory factory = TransformerFactory.newInstance(); + factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + factory.setAttribute(FeatureKeys.ALLOW_EXTERNAL_FUNCTIONS, false); FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); foUserAgent.setTargetResolution(dpi); Fop fop; if (isList) { - xslfoTransformer = TransformerFactory.newInstance().newTransformer(transformSource); + xslfoTransformer = factory.newTransformer(transformSource); } else { xslfoTransformer = XsltToPdf.getTransformer(transformSource); } diff --git a/src/main/java/org/goobi/api/mq/ExternalConnectionFactory.java b/src/main/java/org/goobi/api/mq/ExternalConnectionFactory.java index e3d020c85..33879f208 100644 --- a/src/main/java/org/goobi/api/mq/ExternalConnectionFactory.java +++ b/src/main/java/org/goobi/api/mq/ExternalConnectionFactory.java @@ -84,7 +84,7 @@ private static Connection createSQSConnection() throws JMSException { String accessKey = "x"; String secretKey = "x"; client = AmazonSQSClientBuilder.standard() - .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey))) + .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey))) //NOSONAR: this not a real pw, its only a placeholder .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, region)) .build(); } else { diff --git a/src/main/java/org/goobi/api/rest/CurrentUsers.java b/src/main/java/org/goobi/api/rest/CurrentUsers.java index 544fae3c7..e4d2c5f3e 100644 --- a/src/main/java/org/goobi/api/rest/CurrentUsers.java +++ b/src/main/java/org/goobi/api/rest/CurrentUsers.java @@ -44,10 +44,14 @@ @Path("/currentusers") public class CurrentUsers { - @Inject @Setter private SessionForm sessionForm; + @Inject + public CurrentUsers(SessionForm sessionForm) { + this.sessionForm = sessionForm; + } + /** * Returns the list of current users. The list of current users is stored in SessionForm. The list is of type List. All irrelevant * fields of SessionInfo are excluded with JsonIgnore annotation. The resulting list will contain the name of a user, the IP address, the login diff --git a/src/main/java/org/goobi/api/rest/DeveloperResource.java b/src/main/java/org/goobi/api/rest/DeveloperResource.java index b77fb507e..24af29ba8 100644 --- a/src/main/java/org/goobi/api/rest/DeveloperResource.java +++ b/src/main/java/org/goobi/api/rest/DeveloperResource.java @@ -33,9 +33,13 @@ @Path("developer") public class DeveloperResource { - @Inject DeveloperModeBean devModeBean; + @Inject + public DeveloperResource(DeveloperModeBean devModeBean) { + this.devModeBean = devModeBean; + } + @POST @Path("/reload") public void reload() { diff --git a/src/main/java/org/goobi/api/rest/JsonImportParser.java b/src/main/java/org/goobi/api/rest/JsonImportParser.java index 13ee855cd..85ebc3962 100644 --- a/src/main/java/org/goobi/api/rest/JsonImportParser.java +++ b/src/main/java/org/goobi/api/rest/JsonImportParser.java @@ -40,7 +40,6 @@ import ugh.fileformats.json.JsonFileformat; @HarvesterGoobiImport(description = "Import Json Records") -@Path("/metadata/json") public class JsonImportParser extends MetadataService implements MetadataParser, IRestAuthentication { @Override diff --git a/src/main/java/org/goobi/api/rest/Login.java b/src/main/java/org/goobi/api/rest/Login.java index e56cf625f..1f967cc6d 100644 --- a/src/main/java/org/goobi/api/rest/Login.java +++ b/src/main/java/org/goobi/api/rest/Login.java @@ -73,10 +73,14 @@ public class Login { @Setter private HttpServletResponse servletResponse; - @Inject @Setter private SessionForm sessionForm; + @Inject + public Login(SessionForm sessionForm) { + this.sessionForm = sessionForm; + } + @POST @Path("/openid/implicitflow") @Operation(summary = "OpenID connect callback", description = "Verifies an openID claim and starts a session for the user") @@ -270,7 +274,7 @@ public String apacheHeaderLogin() throws IOException { servletResponse.sendRedirect("/goobi/uii/logout.xhtml"); return ""; } - log.debug(LoginBean.LOGIN_LOG_PREFIX + "User can be logged in via SSO:"); + log.debug(LoginBean.LOGIN_LOG_PREFIX + "User can be logged in via SSO"); userBean.setSsoError(null); user.lazyLoad(); userBean.setMyBenutzer(user); diff --git a/src/main/java/org/goobi/api/rest/PausedAutomaticStepsResource.java b/src/main/java/org/goobi/api/rest/PausedAutomaticStepsResource.java index 015883413..936838da1 100644 --- a/src/main/java/org/goobi/api/rest/PausedAutomaticStepsResource.java +++ b/src/main/java/org/goobi/api/rest/PausedAutomaticStepsResource.java @@ -35,9 +35,13 @@ @Path("/stepspaused") public class PausedAutomaticStepsResource { - @Inject private JobTypesCache pausedJobsBean; + @Inject + public PausedAutomaticStepsResource(JobTypesCache pausedJobsBean) { + this.pausedJobsBean = pausedJobsBean; + } + @GET @Path("/{stepName}") @Produces(MediaType.APPLICATION_JSON) diff --git a/src/main/java/org/goobi/api/rest/process/image/GoobiImageResource.java b/src/main/java/org/goobi/api/rest/process/image/GoobiImageResource.java index ffecda882..c04093653 100644 --- a/src/main/java/org/goobi/api/rest/process/image/GoobiImageResource.java +++ b/src/main/java/org/goobi/api/rest/process/image/GoobiImageResource.java @@ -195,7 +195,7 @@ public Response redirectToCanonicalImageInfo() throws ContentLibException { public Boolean isInCache(@PathParam("process") String processIdString, @PathParam("folder") String folder, @PathParam("filename") String filename, @PathParam("region") String region, @PathParam("size") String size, @PathParam("rotation") String rotation, @PathParam("quality") String quality, @PathParam("format") String format, @PathParam("cacheCommand") String command) - throws ContentLibException { + throws ContentLibException { try { filename = URLDecoder.decode(filename, UTF_8); } catch (UnsupportedEncodingException e) { @@ -248,13 +248,17 @@ public Response getImage(@PathParam("process") String processIdString, @PathPara private ImageResource createImageResource(String processIdString, String folder, String filename) throws IllegalRequestException, ContentLibException { - ImageResource imageResource = new ImageResource(context, request, response, folder, filename); - Path processFolder = metadataFolderPath.resolve(processIdString); - imageResource.setResourceURI(createGoobiResourceURI(request, processIdString, folder, filename)); - imageResource.setImageURI(createGoobiImageURI(request, processFolder, folder, filename)); + ImageResource imageResource = new ImageResource(context, request, response, getFilename(folder), getFilename(filename)); + Path processFolder = metadataFolderPath.resolve(getFilename(processIdString)); + imageResource.setResourceURI(createGoobiResourceURI(request, getFilename(processIdString), getFilename(folder), getFilename(filename))); + imageResource.setImageURI(createGoobiImageURI(request, processFolder, getFilename(folder), getFilename(filename))); return imageResource; } + public String getFilename(String folder) { + return Path.of(folder).getFileName().toString(); + } + private URI createGoobiImageURI(HttpServletRequest request, Path processFolder, String folder, String filename) throws ContentLibException { try { imageFolder = Paths.get(NIOFileUtils.sanitizePath(getImagesFolder(processFolder, folder).toString(), processFolder.toString())); @@ -301,8 +305,8 @@ private URI createGoobiImageURI(HttpServletRequest request, Path processFolder, // size on the original image Dimension size = requestedImageSize.orElse(null); getThumbnailSize(imagePath.getParent().getFileName().toString()) - .map(sizeString -> calcThumbnailScale(imageSize, sizeString, size, requestedRegionSize.isPresent())) - .ifPresent(scale -> setThumbnailScale(scale, request)); + .map(sizeString -> calcThumbnailScale(imageSize, sizeString, size, requestedRegionSize.isPresent())) + .ifPresent(scale -> setThumbnailScale(scale, request)); log.debug("Using thumbnail {} for image width {} and region width {}", imagePath, requestedImageSize.map(Object::toString).orElse("max"), requestedRegionSize.map(Dimension::getWidth).map(Object::toString).orElse("full")); @@ -723,10 +727,10 @@ private static void setThumbnailFolders(Path imageFolder, Path thumbsFolder) { List thumbFolderPaths = getMatchingThumbnailFolders(imageFolder, thumbsFolder); availableThumbnailFolders.put(imageFolder.toString(), thumbFolderPaths.stream() - .map(Path::getFileName) - .map(Path::toString) - .sorted((name1, name2) -> getSize(name1).compareTo(getSize(name2))) - .collect(Collectors.toList())); + .map(Path::getFileName) + .map(Path::toString) + .sorted((name1, name2) -> getSize(name1).compareTo(getSize(name2))) + .collect(Collectors.toList())); } private List getImageTiles(List tileSizes, List scales) { diff --git a/src/main/java/org/goobi/beans/Process.java b/src/main/java/org/goobi/beans/Process.java index 86a802e74..1c82e25c7 100644 --- a/src/main/java/org/goobi/beans/Process.java +++ b/src/main/java/org/goobi/beans/Process.java @@ -36,6 +36,7 @@ import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Iterator; @@ -433,7 +434,7 @@ public String getImagesOrigDirectory(boolean useFallBack) throws IOException, Sw //fall back to largest thumbnail image java.nio.file.Path largestThumbnailDirectory = getThumbsDirectories(masterFolder).entrySet() .stream() - .sorted((entry1, entry2) -> entry2.getKey().compareTo(entry2.getKey())) + .sorted(Comparator.comparing(Entry::getKey)) .map(Entry::getValue) .map(Paths::get) .filter(StorageProvider.getInstance()::isDirectory) @@ -481,13 +482,16 @@ public String getMatchingImageDir(String thumbDirName) { } public String getImagesDirectory() throws IOException, SwapException { - String pfad = getProcessDataDirectory() + "images" + FileSystems.getDefault().getSeparator(); + return getDirectory("images"); + } + + public String getDirectory(String folder) throws IOException, SwapException { + String pfad = getProcessDataDirectory() + folder + FileSystems.getDefault().getSeparator(); try { FilesystemHelper.createDirectory(pfad); } catch (InterruptedException e) { //NOSONAR InterruptedException must not be re-thrown as it is not running in a separate thread log.error(e); } - return pfad; } @@ -1924,11 +1928,22 @@ public String getConfiguredImageFolder(String folderName) throws IOException, Sw return getImagesTifDirectory(false); } - String imagefolder = this.getImagesDirectory(); - String foldername = VariableReplacer.simpleReplace(ConfigurationHelper.getInstance().getAdditionalProcessFolderName(folderName), this); - if (StringUtils.isNotBlank(foldername)) { - return imagefolder + foldername; + String folder = this.getImagesDirectory(); + String folderPath; + if (folderName.contains(".")) { + String[] split = folderName.split("\\."); + if (split.length != 2) { + throw new IllegalArgumentException("Hierarchy is not allowed for configured folders: " + folderName); + } + folder = this.getDirectory(split[0]); + folderPath = VariableReplacer.simpleReplace(ConfigurationHelper.getInstance().getAdditionalProcessFolderName(split[0], split[1]), this); + } else { + folderPath = VariableReplacer.simpleReplace(ConfigurationHelper.getInstance().getAdditionalProcessFolderName(folderName), this); + } + if (StringUtils.isNotBlank(folderPath)) { + return folder + folderPath; } + // TODO: fix this NPE return null; } @@ -2041,7 +2056,7 @@ public List getImageComments() throws IOException, InterruptedExce } public List getArchivedImageFolders() throws IOException, InterruptedException, SwapException, DAOException { - if (this.id == null || !ConfigurationHelper.getInstance().isMetsEditorShowArchivedFolder()) { + if (this.id == null || ConfigurationHelper.getInstance().useS3()) { return new ArrayList<>(); } List filesInImages = StorageProvider.getInstance().list(this.getImagesDirectory()); diff --git a/src/main/java/org/goobi/goobiScript/GoobiScriptManager.java b/src/main/java/org/goobi/goobiScript/GoobiScriptManager.java index 433cc8b8e..f8cbc63ac 100644 --- a/src/main/java/org/goobi/goobiScript/GoobiScriptManager.java +++ b/src/main/java/org/goobi/goobiScript/GoobiScriptManager.java @@ -84,7 +84,7 @@ public class GoobiScriptManager { private Map actionToScriptImplMap; - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments @Push PushContext goobiscriptUpdateChannel; private LocalDateTime lastPush; diff --git a/src/main/java/org/goobi/managedbeans/DeveloperModeBean.java b/src/main/java/org/goobi/managedbeans/DeveloperModeBean.java index 56b172789..43f2b4e19 100644 --- a/src/main/java/org/goobi/managedbeans/DeveloperModeBean.java +++ b/src/main/java/org/goobi/managedbeans/DeveloperModeBean.java @@ -38,7 +38,7 @@ @ApplicationScoped public class DeveloperModeBean { - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments @Push PushContext developerMessageChannel; diff --git a/src/main/java/org/goobi/managedbeans/JobTypesBean.java b/src/main/java/org/goobi/managedbeans/JobTypesBean.java index 55f961971..1d8241985 100644 --- a/src/main/java/org/goobi/managedbeans/JobTypesBean.java +++ b/src/main/java/org/goobi/managedbeans/JobTypesBean.java @@ -57,7 +57,7 @@ public class JobTypesBean implements Serializable { private static final String RETURN_PAGE_ALL = "admin_jobtypes_all.xhtml"; private static final String RETURN_PAGE_EDIT = "admin_jobtypes_edit.xhtml"; - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments private JobTypesCache jobTypesCache; private List stepTitles; private List availableStepTitles; diff --git a/src/main/java/org/goobi/managedbeans/LoginBean.java b/src/main/java/org/goobi/managedbeans/LoginBean.java index 1f4c139b4..cedb18e51 100644 --- a/src/main/java/org/goobi/managedbeans/LoginBean.java +++ b/src/main/java/org/goobi/managedbeans/LoginBean.java @@ -295,6 +295,11 @@ public String EinloggenAls() { try { this.myBenutzer = UserManager.getUserById(loginID); + if (!currentUser.isSuperAdmin() && this.myBenutzer.isSuperAdmin()) { + Helper.setFehlerMeldung("Non-superadmin users are not allowed to log in as superadmin users!"); + return ""; + } + // Creating journal entry currentUser.setContent("Log in as user '" + this.myBenutzer.getNachVorname() + "'."); currentUser.addJournalEntry(); diff --git a/src/main/java/org/goobi/managedbeans/MessageQueueBean.java b/src/main/java/org/goobi/managedbeans/MessageQueueBean.java index 87957d616..77b473b00 100644 --- a/src/main/java/org/goobi/managedbeans/MessageQueueBean.java +++ b/src/main/java/org/goobi/managedbeans/MessageQueueBean.java @@ -400,8 +400,8 @@ public void calculateStatistics() { hbarDataSetVolumes.setLabel(Helper.getTranslation("volumes")); hbarDataSetVolumes.setBorderColor("rgb(54, 142, 224)"); hbarDataSetVolumes.setBackgroundColor("rgb(54, 142, 224)"); - List pageValues = new ArrayList<>(); - List volumeValues = new ArrayList<>(); + List pageValues = new ArrayList<>(); + List volumeValues = new ArrayList<>(); List labels = new ArrayList<>(); diff --git a/src/main/java/org/goobi/managedbeans/PluginInstallBean.java b/src/main/java/org/goobi/managedbeans/PluginInstallBean.java index e1f61bd2f..569cd81fa 100644 --- a/src/main/java/org/goobi/managedbeans/PluginInstallBean.java +++ b/src/main/java/org/goobi/managedbeans/PluginInstallBean.java @@ -30,6 +30,7 @@ import java.io.Serializable; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.List; @@ -47,7 +48,6 @@ import org.apache.commons.io.FileUtils; import org.apache.deltaspike.core.api.scope.WindowScoped; import org.apache.http.HttpResponse; -import org.apache.http.client.ClientProtocolException; import org.apache.http.client.fluent.Request; import org.apache.tools.tar.TarEntry; import org.apache.tools.tar.TarInputStream; @@ -84,7 +84,7 @@ public class PluginInstallBean implements Serializable { private static XPathFactory xFactory = XPathFactory.instance(); private static XPathExpression versionXpath = xFactory.compile("//version", Filters.element()); - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments private HelperForm helperForm; @Getter @@ -101,7 +101,7 @@ public class PluginInstallBean implements Serializable { private transient Path tempDir; @PostConstruct - private void init() throws ClientProtocolException, IOException, JDOMException { + private void init() throws IOException, JDOMException { ConfigurationHelper config = ConfigurationHelper.getInstance(); String queryUrl = config.getPluginServerUrl(); if (queryUrl.isBlank()) { @@ -127,7 +127,7 @@ private void init() throws ClientProtocolException, IOException, JDOMException { .collect(Collectors.groupingBy(PluginInstallInfo::getType)); } - private Optional getLatestGoobiVersionFromNexus() throws ClientProtocolException, IOException, JDOMException { + private Optional getLatestGoobiVersionFromNexus() throws IOException, JDOMException { SAXBuilder saxB = XmlTools.getSAXBuilder(); String nexusUrl = "https://nexus.intranda.com/repository/maven-public/de/intranda/goobi/workflow/goobi-core-jar/maven-metadata.xml"; try (InputStream in = Request.Get(nexusUrl).execute().returnContent().asStream()) { @@ -141,7 +141,7 @@ private Optional getLatestGoobiVersionFromNexus() throws ClientProtocolE } } - public void downloadAndInstallPlugin(PluginInstallInfo pluginInfo) throws ClientProtocolException, IOException, JDOMException { + public void downloadAndInstallPlugin(PluginInstallInfo pluginInfo) throws IOException, JDOMException { ConfigurationHelper config = ConfigurationHelper.getInstance(); PluginVersion version = pluginInfo.getVersions().get(0); String downloadUrl = String.format("%s/api/plugins/%s/versions/%s/goobiversions/%s/archive", @@ -170,7 +170,7 @@ public String parseUploadedPlugin() throws IOException, JDOMException { if (!Files.exists(tempDir)) { this.tempDir = Files.createTempDirectory("goobi_plugin_installer"); //NOSONAR, using temporary file is save here } - Path tarPath = tempDir.resolve(uploadedPluginFile.getSubmittedFileName()); + Path tarPath = tempDir.resolve(Paths.get(uploadedPluginFile.getSubmittedFileName()).getFileName().toString()); try (InputStream responseStream = uploadedPluginFile.getInputStream()) { Files.copy(responseStream, tarPath); } @@ -230,8 +230,8 @@ public String cancelInstall() { public boolean getAreAllConflictsFixed() { Object[] conflicts = this.pluginInstaller.getCheck().getConflicts().values().toArray(); - for (int index = 0; index < conflicts.length; index++) { - PluginInstallConflict conflict = (PluginInstallConflict) (conflicts[index]); + for (Object conflict2 : conflicts) { + PluginInstallConflict conflict = (PluginInstallConflict) (conflict2); if (!conflict.isFixed()) { return false; } diff --git a/src/main/java/org/goobi/managedbeans/PluginsBean.java b/src/main/java/org/goobi/managedbeans/PluginsBean.java index 30066353c..5c0459764 100644 --- a/src/main/java/org/goobi/managedbeans/PluginsBean.java +++ b/src/main/java/org/goobi/managedbeans/PluginsBean.java @@ -82,7 +82,7 @@ public class PluginsBean implements Serializable { private static final long serialVersionUID = 9152658727528258005L; - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments HelperForm helperForm; @Getter diff --git a/src/main/java/org/goobi/managedbeans/ProcessBean.java b/src/main/java/org/goobi/managedbeans/ProcessBean.java index e61016390..f76851a45 100644 --- a/src/main/java/org/goobi/managedbeans/ProcessBean.java +++ b/src/main/java/org/goobi/managedbeans/ProcessBean.java @@ -339,10 +339,10 @@ public class ProcessBean extends BasicBean implements Serializable { @Getter private Map> displayableMetadataMap = new HashMap<>(); - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments private StepBean bean; - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments private GoobiScriptManager goobiScriptManager; public ProcessBean() { @@ -2738,6 +2738,7 @@ public void nextEntry() { } if (newProcessId != null) { myProzess = ProcessManager.getProcessById(newProcessId); + myNewProcessTitle = myProzess.getTitel(); } } @@ -2763,6 +2764,7 @@ public void previousEntry() { if (newProcessId != null) { myProzess = ProcessManager.getProcessById(newProcessId); + myNewProcessTitle = myProzess.getTitel(); } } } diff --git a/src/main/java/org/goobi/managedbeans/SearchBean.java b/src/main/java/org/goobi/managedbeans/SearchBean.java index dc06cdaf5..797955189 100644 --- a/src/main/java/org/goobi/managedbeans/SearchBean.java +++ b/src/main/java/org/goobi/managedbeans/SearchBean.java @@ -60,7 +60,7 @@ public class SearchBean implements Serializable { private static final String NOT_SELECTED = "notSelected"; - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments private ProcessBean processBean; @Getter diff --git a/src/main/java/org/goobi/managedbeans/StatisticalQuestionBean.java b/src/main/java/org/goobi/managedbeans/StatisticalQuestionBean.java index 5eb0344b1..f5d629dc0 100644 --- a/src/main/java/org/goobi/managedbeans/StatisticalQuestionBean.java +++ b/src/main/java/org/goobi/managedbeans/StatisticalQuestionBean.java @@ -90,7 +90,7 @@ public class StatisticalQuestionBean implements Serializable { private TimeUnit sourceTimeUnit; private int sourceNumberOfTimeUnits = 0; - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments @Push PushContext statisticsPluginPush; @@ -144,6 +144,7 @@ public String getData() { } public void setData(String data) { + // do nothing } /** diff --git a/src/main/java/org/goobi/managedbeans/StepBean.java b/src/main/java/org/goobi/managedbeans/StepBean.java index 8c5af00a2..4860c41d3 100644 --- a/src/main/java/org/goobi/managedbeans/StepBean.java +++ b/src/main/java/org/goobi/managedbeans/StepBean.java @@ -177,7 +177,7 @@ public class StepBean extends BasicBean implements Serializable { @Getter private Map> displayableMetadataMap = new HashMap<>(); - @Inject + @Inject // NOSONAR needs to be a field injection, as the been constructor does not allow arguments @Push PushContext stepPluginPush; diff --git a/src/main/java/org/goobi/managedbeans/VocabularyBean.java b/src/main/java/org/goobi/managedbeans/VocabularyBean.java index 1f268629e..db50146d7 100644 --- a/src/main/java/org/goobi/managedbeans/VocabularyBean.java +++ b/src/main/java/org/goobi/managedbeans/VocabularyBean.java @@ -62,6 +62,7 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.util.CellReference; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.goobi.vocabulary.Definition; import org.goobi.vocabulary.Field; import org.goobi.vocabulary.VocabRecord; @@ -378,6 +379,61 @@ public void downloadRecords() { } } + public void downloadRecordsExcel() { + VocabularyManager.getAllRecords(currentVocabulary); + String title = currentVocabulary.getTitle(); + String description = currentVocabulary.getDescription(); + List definitionList = currentVocabulary.getStruct(); + List recordList = currentVocabulary.getRecords(); + + Workbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet((StringUtils.isBlank(description) ? title : title + " - " + description).replace("/", "")); + + // create header + Row headerRow = sheet.createRow(0); + int columnCounter = 0; + for (Definition definition : definitionList) { + headerRow.createCell(columnCounter) + .setCellValue(StringUtils.isNotBlank(definition.getLanguage()) ? definition.getLabel() + " (" + definition.getLanguage() + ")" + : definition.getLabel()); + columnCounter = columnCounter + 1; + } + + int rowCounter = 1; + // add records + for (VocabRecord rec : recordList) { + Row resultRow = sheet.createRow(rowCounter); + columnCounter = 0; + for (Definition definition : definitionList) { + resultRow.createCell(columnCounter).setCellValue(rec.getFieldValue(definition)); + columnCounter = columnCounter + 1; + } + rowCounter = rowCounter + 1; + } + + // write result into output stream + FacesContext facesContext = FacesContextHelper.getCurrentFacesContext(); + + HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse(); + OutputStream out; + try { + out = response.getOutputStream(); + response.setContentType("application/vnd.ms-excel"); + response.setHeader("Content-Disposition", "attachment;filename=\"" + title + ".xlsx\""); + wb.write(out); + out.flush(); + + facesContext.responseComplete(); + } catch (IOException e) { + log.error(e); + } + try { + wb.close(); + } catch (IOException e) { + log.error(e); + } + } + /** * allow file upload for vocabulary records * diff --git a/src/main/java/org/goobi/production/flow/jobs/AbstractGoobiJob.java b/src/main/java/org/goobi/production/flow/jobs/AbstractGoobiJob.java index f7850af51..da69b7246 100644 --- a/src/main/java/org/goobi/production/flow/jobs/AbstractGoobiJob.java +++ b/src/main/java/org/goobi/production/flow/jobs/AbstractGoobiJob.java @@ -59,13 +59,24 @@ public void execute(JobExecutionContext context) throws JobExecutionException { log.trace("Start scheduled Job: " + getJobName()); if (!running) { setRunning(true); - execute(); BackgroundJob details = new BackgroundJob(); details.setJobName(getJobName()); details.setJobType("quartz"); - details.setJobStatus(JobStatus.FINISH); - BackgroundJobManager.saveBackgroundJob(details); - setRunning(false); + try { + execute(); + details.setJobStatus(JobStatus.FINISH); + BackgroundJobManager.saveBackgroundJob(details); + setRunning(false); + } catch (Exception e) { + details.setJobStatus(JobStatus.ERROR); + BackgroundJobManager.saveBackgroundJob(details); + setRunning(false); + log.error(e); + JobExecutionException jee = new JobExecutionException(e); + jee.setRefireImmediately(false); + jee.setUnscheduleFiringTrigger(true); + throw jee; + } } log.trace("End scheduled Job: " + getJobName()); } diff --git a/src/main/java/org/goobi/production/flow/statistics/hibernate/FilterHelper.java b/src/main/java/org/goobi/production/flow/statistics/hibernate/FilterHelper.java index d2edaa33e..a53ff658a 100644 --- a/src/main/java/org/goobi/production/flow/statistics/hibernate/FilterHelper.java +++ b/src/main/java/org/goobi/production/flow/statistics/hibernate/FilterHelper.java @@ -105,33 +105,18 @@ public static String limitToUserAssignedSteps(Boolean stepOpenOnly, Boolean user /* only assigned projects */ answer.append( - " AND schritte.ProzesseID in (select ProzesseID from prozesse where prozesse.ProjekteID in (select ProjekteID from projektbenutzer where projektbenutzer.BenutzerID = " + " AND prozesse.ProjekteID in (select ProjekteID from projektbenutzer where projektbenutzer.BenutzerID = " + userId + ") "); - if (!user.isSuperAdmin()) { - // limit result to institution of current user - - answer.append(" and prozesse.ProjekteID in (select ProjekteID from projekte WHERE institution_id = "); - answer.append(user.getInstitution().getId()); - answer.append(") "); - } - answer.append(")"); /* * only steps assigned to the user groups the current user is member of */ - answer.append(" AND schritte.SchritteID in (select distinct schritte.SchritteID from schritte join schritteberechtigtegruppen on "); - answer.append("schritte.SchritteID = schritteberechtigtegruppen.schritteID where (schritteberechtigtegruppen.BenutzerGruppenID in "); - answer.append("(SELECT benutzergruppenmitgliedschaft.BenutzerGruppenID FROM benutzergruppenmitgliedschaft WHERE "); - answer.append("benutzergruppenmitgliedschaft.BenutzerID = " + userId + "))"); - answer.append("UNION (SELECT DISTINCT "); - answer.append(" schritte.SchritteID "); - answer.append(" FROM "); - answer.append(" schritte "); - answer.append(" LEFT JOIN schritteberechtigtebenutzer ON schritte.SchritteID = schritteberechtigtebenutzer.schritteID "); - answer.append(" WHERE "); - answer.append(" schritteberechtigtebenutzer.BenutzerID = " + userId + ")) "); - + answer.append(" AND schritte.SchritteID IN (SELECT DISTINCT schritteberechtigtegruppen.SchritteID FROM "); + answer.append("schritteberechtigtegruppen WHERE (schritteberechtigtegruppen.BenutzerGruppenID IN (SELECT "); + answer.append("benutzergruppenmitgliedschaft.BenutzerGruppenID FROM benutzergruppenmitgliedschaft WHERE "); + answer.append("benutzergruppenmitgliedschaft.BenutzerID = " + userId + ")) UNION (SELECT DISTINCT schritteberechtigtebenutzer.SchritteID "); + answer.append(" FROM schritteberechtigtebenutzer WHERE schritteberechtigtebenutzer.BenutzerID = " + userId + ")) "); return answer.toString(); } @@ -385,7 +370,7 @@ protected static String filterStepDoneUser(String tok) { String login = tok.substring(tok.indexOf(":") + 1).replace("\\_", "_"); return " prozesse.ProzesseID in (select ProzesseID from schritte where schritte.BearbeitungsBenutzerID = (select BenutzerID from benutzer where benutzer.login = '" - + login + "'))"; + + login + "'))"; } /** @@ -758,7 +743,7 @@ public static String criteriaBuilder(String inFilter, Boolean isTemplate, Boolea if (isStep) { flagSteps = true; filter = checkStringBuilder(filter, true); - filter.append(" prozesse.prozesseId not in (select prozesse.prozesseID from prozesse where prozesse.istTemplate = true) "); + filter.append(" prozesse.istTemplate = false "); } // preparation to filter for step dates @@ -973,7 +958,7 @@ else if (tok.toLowerCase().startsWith(FilterString.STEP) || tok.toLowerCase().st } else if (tok.toLowerCase().startsWith(FilterString.PROCESS) || tok.toLowerCase().startsWith(FilterString.PROZESS)) { filter = checkStringBuilder(filter, true); filter.append(" prozesse.Titel like '" + leftTruncationCharacter + MySQLHelper.escapeSql(tok.substring(tok.indexOf(":") + 1)) - + rightTruncationCharacter + "'"); + + rightTruncationCharacter + "'"); } else if (tok.toLowerCase().startsWith(FilterString.INSTITUTION)) { filter = checkStringBuilder(filter, true); filter.append(filterInstitution(tok, false)); @@ -995,7 +980,7 @@ else if (tok.toLowerCase().startsWith(FilterString.STEP) || tok.toLowerCase().st } else { filter = checkStringBuilder(filter, true); filter.append(" batches.batchName like '" + leftTruncationCharacter + MySQLHelper.escapeSql(substring) - + rightTruncationCharacter + "'"); + + rightTruncationCharacter + "'"); } } catch (NumberFormatException e) { @@ -1092,7 +1077,7 @@ else if (tok.toLowerCase().startsWith("-" + FilterString.STEPINWORK) } else { filter = checkStringBuilder(filter, true); filter.append(" batches.batchName not like '" + leftTruncationCharacter + MySQLHelper.escapeSql(substring) - + rightTruncationCharacter + "' OR batches.batchName IS NULL OR prozesse.batchID IS NULL "); + + rightTruncationCharacter + "' OR batches.batchName IS NULL OR prozesse.batchID IS NULL "); } } catch (NumberFormatException e) { @@ -1101,7 +1086,7 @@ else if (tok.toLowerCase().startsWith("-" + FilterString.STEPINWORK) } else if (tok.toLowerCase().startsWith("-")) { filter = checkStringBuilder(filter, true); filter.append(" prozesse.Titel not like '" + leftTruncationCharacter + MySQLHelper.escapeSql(tok.substring(1)) - + rightTruncationCharacter + "'"); + + rightTruncationCharacter + "'"); } // USE OR @@ -1177,7 +1162,7 @@ else if (tok.toLowerCase().startsWith("|" + FilterString.STEPINWORK) } else if (tok.toLowerCase().startsWith("|" + FilterString.PROCESS) || tok.toLowerCase().startsWith("|" + FilterString.PROZESS)) { filter = checkStringBuilder(filter, false); filter.append(" prozesse.Titel like '" + leftTruncationCharacter + MySQLHelper.escapeSql(tok.substring(tok.indexOf(":") + 1)) - + rightTruncationCharacter + "'"); + + rightTruncationCharacter + "'"); } else if (tok.toLowerCase().startsWith("|" + FilterString.BATCH) || tok.toLowerCase().startsWith("|" + FilterString.GRUPPE)) { try { String substring = tok.substring(tok.indexOf(":") + 1); @@ -1191,7 +1176,7 @@ else if (tok.toLowerCase().startsWith("|" + FilterString.STEPINWORK) } else { filter = checkStringBuilder(filter, false); filter.append(" batches.batchName like '" + leftTruncationCharacter + MySQLHelper.escapeSql(substring) - + rightTruncationCharacter + "'"); + + rightTruncationCharacter + "'"); } } catch (NumberFormatException e) { @@ -1200,11 +1185,11 @@ else if (tok.toLowerCase().startsWith("|" + FilterString.STEPINWORK) } else if (tok.toLowerCase().startsWith("|")) { filter = checkStringBuilder(filter, false); filter.append(" prozesse.Titel like '" + leftTruncationCharacter + MySQLHelper.escapeSql(tok.substring(1)) - + rightTruncationCharacter + "'"); + + rightTruncationCharacter + "'"); } else { filter = checkStringBuilder(filter, true); filter.append(" prozesse.Titel like '" + leftTruncationCharacter + MySQLHelper.escapeSql(tok.substring(tok.indexOf(":") + 1)) - + rightTruncationCharacter + "'"); + + rightTruncationCharacter + "'"); } if (newFilterGroup && !currentDateFilter.isStepFilterPresent() && !currentDateFilter.getDateFilter().isEmpty()) { newFilterGroup = false; diff --git a/src/main/java/org/goobi/production/flow/statistics/hibernate/StatQuestThroughput.java b/src/main/java/org/goobi/production/flow/statistics/hibernate/StatQuestThroughput.java index 38c986eda..c8a79b6c2 100644 --- a/src/main/java/org/goobi/production/flow/statistics/hibernate/StatQuestThroughput.java +++ b/src/main/java/org/goobi/production/flow/statistics/hibernate/StatQuestThroughput.java @@ -137,85 +137,60 @@ public List getDataTables(String filter, String originalFilter, boole * ============== */ - // what do we do here? - // okay ... first we find out how many steps the selected set has - // finding lowest step and highest step (no step name discrimination) - Integer uBound; - Integer uBoundOpen = getMaxStepCount(HistoryEventType.stepOpen); - Integer uBoundDone = getMaxStepCount(HistoryEventType.stepDone); - if (uBoundOpen < uBoundDone) { - uBound = uBoundDone; - } else { - uBound = uBoundOpen; - } - - Integer lBound; - Integer lBoundOpen = getMinStepCount(HistoryEventType.stepOpen); - Integer lBoundDone = getMinStepCount(HistoryEventType.stepDone); - - if (lBoundOpen < lBoundDone) { - lBound = lBoundDone; - } else { - lBound = lBoundOpen; - } - // then for each step we get both the open and the done count within the // selected intervalls and merge it within one table - for (Integer i = lBound; i <= uBound; i++) { - - DataTable tableStepOpen; - tableStepOpen = getSpecificSteps(i, HistoryEventType.stepOpen); - tableStepOpen.setShowableInTable(true); + DataTable tableStepOpen; + tableStepOpen = getSpecificSteps(0, HistoryEventType.stepOpen); - DataTable tableStepDone; - tableStepDone = getSpecificSteps(i, HistoryEventType.stepDone); + tableStepOpen.setShowableInTable(true); - tableStepDone.setShowableInTable(true); + DataTable tableStepDone; + tableStepDone = getSpecificSteps(0, HistoryEventType.stepDone); - // to merge we just take each table and dump the entire content in a - // row for the open step - DataRow rowOpenSteps = new DataRow(Helper.getTranslation("openSteps") + " " + i.toString()); - for (DataRow dtr : tableStepOpen.getDataRows()) { - rowOpenSteps.addValue(dtr.getName(), dtr.getValue(0)); - } + tableStepDone.setShowableInTable(true); - // adding the first row - String title = ""; - if (tableStepOpen.getName().length() > 0) { - title = tableStepOpen.getName(); - } else { - title = tableStepDone.getName(); - } + // to merge we just take each table and dump the entire content in a + // row for the open step + DataRow rowOpenSteps = new DataRow(Helper.getTranslation("openSteps") + " " + 0); + for (DataRow dtr : tableStepOpen.getDataRows()) { + rowOpenSteps.addValue(dtr.getName(), dtr.getValue(0)); + } - tableStepOpenAndDone = new DataTable(Helper.getTranslation("throughput") + " " + Helper.getTranslation("steps") + " " + title); - tableStepOpenAndDone.addDataRow(rowOpenSteps); + // adding the first row + String title = ""; + if (tableStepOpen.getName().length() > 0) { + title = tableStepOpen.getName(); + } else { + title = tableStepDone.getName(); + } - // row for the done step - rowOpenSteps = new DataRow(Helper.getTranslation("doneSteps") + " " + i.toString()); - for (DataRow dtr : tableStepDone.getDataRows()) { - rowOpenSteps.addValue(dtr.getName(), dtr.getValue(0)); - } + tableStepOpenAndDone = new DataTable(Helper.getTranslation("throughput") + " " + Helper.getTranslation("steps") + " " + title); + tableStepOpenAndDone.addDataRow(rowOpenSteps); - // adding that row - tableStepOpenAndDone.addDataRow(rowOpenSteps); + // row for the done step + rowOpenSteps = new DataRow(Helper.getTranslation("doneSteps") + " " + 0); + for (DataRow dtr : tableStepDone.getDataRows()) { + rowOpenSteps.addValue(dtr.getName(), dtr.getValue(0)); + } - // turning off table rendering - tableStepOpenAndDone.setShowableInTable(false); + // adding that row + tableStepOpenAndDone.addDataRow(rowOpenSteps); - // inverting the orientation - tableStepOpenAndDone = tableStepOpenAndDone.getDataTableInverted(); - tableStepOpenAndDone.setUnitLabel(Helper.getTranslation(this.timeGrouping.getSingularTitle())); + // turning off table rendering + tableStepOpenAndDone.setShowableInTable(false); - // Dates may not be all in the right order because of it's - // composition from 2 tables - List allTempRows = tableStepOpenAndDone.getDataRows(); - // this fixes the sorting problem - Collections.sort(allTempRows, new DataTableComparator()); + // inverting the orientation + tableStepOpenAndDone = tableStepOpenAndDone.getDataTableInverted(); + tableStepOpenAndDone.setUnitLabel(Helper.getTranslation(this.timeGrouping.getSingularTitle())); - allTables.add(tableStepOpenAndDone); + // Dates may not be all in the right order because of it's + // composition from 2 tables + List allTempRows = tableStepOpenAndDone.getDataRows(); + // this fixes the sorting problem + Collections.sort(allTempRows, new DataTableComparator()); - } + allTables.add(tableStepOpenAndDone); return allTables; } @@ -412,23 +387,4 @@ private DataTable buildDataTableFromSQL(String natSQL, String headerFromSQL) { return dtbl; } - - /** - * method retrieves the highest step order in the requested history range - * - * @param requestedType - */ - private Integer getMaxStepCount(HistoryEventType requestedType) { - return 0; - } - - /** - * method retrieves the lowest step order in the requested history range - * - * @param requestedType - */ - private Integer getMinStepCount(HistoryEventType requestedType) { - return 0; - } - } diff --git a/src/main/java/org/goobi/production/plugin/interfaces/IGuiPlugin.java b/src/main/java/org/goobi/production/plugin/interfaces/IGuiPlugin.java new file mode 100644 index 000000000..cc8473f6c --- /dev/null +++ b/src/main/java/org/goobi/production/plugin/interfaces/IGuiPlugin.java @@ -0,0 +1,11 @@ +package org.goobi.production.plugin.interfaces; + +public interface IGuiPlugin { + public default String[] getJsPaths() { + return new String[0]; + } + + public default String[] getCssPaths() { + return new String[0]; + } +} diff --git a/src/main/resources/config_contentServer.xml b/src/main/resources/config_contentServer.xml index d87dbd11d..4d08d0c8c 100644 --- a/src/main/resources/config_contentServer.xml +++ b/src/main/resources/config_contentServer.xml @@ -46,7 +46,7 @@ + forceConvertToBuffered="false" forceConvertToRGB="false" forwardDirectlyIfPossible="true" preferredImageReader="com.twelvemonkeys"> diff --git a/src/main/resources/messages_de.properties b/src/main/resources/messages_de.properties index 77e9c4647..6df2c3d4e 100644 --- a/src/main/resources/messages_de.properties +++ b/src/main/resources/messages_de.properties @@ -747,6 +747,7 @@ geheZuSeite=Gehe zu Seite general=Allgemein zzz generalError=Es ist ein Fehler aufgetreten. generateValues=Werte generieren +generated=(automatisch erzeugt) generieren=Generieren gesamtesTrefferset=Gesamtes Trefferset gesamtesTreffersetInMeinHomeverzeichnis=Gesamtes Trefferset in mein Benutzerverzeichnis laden @@ -1298,6 +1299,7 @@ intranda_administration_showconfigfiles=Konfigurationsdateien anzeigen intranda_administration_snippetCreator=Snippet Creator intranda_administration_vocabularies=Vokabulare intranda_metadata_changeType=Publikationstyp wechseln +intranda_metadata_createStructureElements=Strukturelemente generieren intranda_quartz_herisJob=HERIS Import intranda_statistics_allStepsPerProject=Arbeitsschritte pro Projekt intranda_statistics_file_count=Dateianzahl ermitteln @@ -2284,10 +2286,14 @@ plugin_administration_archive_Number=Archiv Nummer plugin_administration_archive_Shelfmark=Signatur(en) plugin_administration_archive_accessrestrict=Zugangsbestimmungen plugin_administration_archive_accruals=Neuzug\u00E4nge +plugin_administration_archive_accruals_head=\u00DCberschrift +plugin_administration_archive_accruals_p=Beschreibung plugin_administration_archive_acqinfo=Abgebende Stelle plugin_administration_archive_advancedSearch=Erweiterte Suche plugin_administration_archive_agencycode=Agency code plugin_administration_archive_altformavail=Kopien bzw. Reproduktionen +plugin_administration_archive_altformavail_head=\u00DCberschrift +plugin_administration_archive_altformavail_p=Beschreibung plugin_administration_archive_appraisal=Bewertung und Kassation plugin_administration_archive_area_access=Zugangs- und Benutzungsbedingungen plugin_administration_archive_area_content=Inhalt und innere Ordnung @@ -2322,6 +2328,8 @@ plugin_administration_archive_duplicateEadFile=Kopie des Bestands erstellen plugin_administration_archive_duplicateNode=Knoten duplizieren plugin_administration_archive_eadid=EAD ID plugin_administration_archive_editorName=Bearbeiter +plugin_administration_archive_extref=Beschreibung des Links +plugin_administration_archive_extrefhref=Link zum Repository plugin_administration_archive_font=Schrift plugin_administration_archive_langmaterial=Sprache | Schrift plugin_administration_archive_loadDatabase=Bearbeitung beginnen @@ -2336,7 +2344,6 @@ plugin_administration_archive_newNode=Neuen Knoten einf\u00FCgen plugin_administration_archive_noConnectionToDatabase=Es besteht keine Verbindung zur BaseX-Datenbank. Bitte \u00FCberpr\u00FCfen Sie die Installation und stellen Sie sicher, dass die BaseX-Datenbank gestartet wurde. plugin_administration_archive_noElementSelectedHeading=Es ist derzeit kein Element ausgew\u00E4hlt. plugin_administration_archive_noElementSelectedText=Bitte w\u00E4hlen Sie zun\u00E4chst im linken Bereich einen Knoten aus, den Sie bearbeiten m\u00F6chten. -plugin_administration_archive_nodelink=Verkn\u00FCpfung zu anderen Knoten plugin_administration_archive_nodeType=Knotentyp plugin_administration_archive_nodeType_audio=Audiodokument plugin_administration_archive_nodeType_file=Akte @@ -2344,9 +2351,13 @@ plugin_administration_archive_nodeType_folder=Verzeichnis plugin_administration_archive_nodeType_image=Bild plugin_administration_archive_nodeType_other=Anderes Dokument plugin_administration_archive_nodeType_video=Videodokument +plugin_administration_archive_nodelink=Verkn\u00FCpfung zu anderen Knoten plugin_administration_archive_oddnote=Weitere Anmerkungen plugin_administration_archive_originalsloc=Aufbewahrungsort der Originale +plugin_administration_archive_originalsloc_head=\u00DCberschrift +plugin_administration_archive_originalsloc_p=Beschreibung plugin_administration_archive_origination=Name der Provenienzstelle +plugin_administration_archive_originationcorpname=K\u00F6rperschaft der Provenienzstelle plugin_administration_archive_otherfindaid=Findhilfsmittel plugin_administration_archive_person=Person plugin_administration_archive_physdesc=Umfang @@ -2360,6 +2371,9 @@ plugin_administration_archive_process_no_process=- bisher kein Goobi-Vorgang zug plugin_administration_archive_recordGroupExists=Es existiert bereits ein Bestand mit diesem Namen. plugin_administration_archive_recordid=Record ID plugin_administration_archive_removeInvalidProcessIds=Verweise zu Vorg\u00E4ngen aktualisieren +plugin_administration_archive_repository=Repository +plugin_administration_archive_repositoryLabel=Bezeichnung +plugin_administration_archive_repositoryaddressline=Adresse plugin_administration_archive_role=Rolle plugin_administration_archive_saveAndExit=Archivbestand speichern und verlassen plugin_administration_archive_scopecontent=Form und Inhalt @@ -2368,6 +2382,7 @@ plugin_administration_archive_selectionText=Bitte w\u00E4hlen Sie zun\u00E4chst plugin_administration_archive_separatedmaterial=Verwandte Verzeichnungseinheiten plugin_administration_archive_show_details=Details einblenden plugin_administration_archive_suffix=Suffix +plugin_administration_archive_titleproper=Titel des Findbuches plugin_administration_archive_unitdate=Entstehungszeitraum plugin_administration_archive_unitdatestructured=Strukturiertes Datum der Einheit plugin_administration_archive_unitid=Unit ID @@ -2855,10 +2870,14 @@ plugin_massupload_insertmode_barcode=Erkennung von Barcodes plugin_massupload_insertmode_imageName=Analyse der Dateinamen plugin_massupload_selectFiles=Dateien ausw\u00E4hlen und hochladen plugin_massupload_startInserting=Dateien in Vorg\u00E4nge einspielen -plugin_massupload_use_home_directory=Lade Bilder aus meinem Benutzerverzeichnis +plugin_massupload_use_home_directory=Bilder aus Benutzerverzeichnis laden plugin_metadata_changeTemplate_changeTemplate=\u00C4ndern plugin_metadata_changeTemplate_description=Hier kann der Publikationstyp des Datensatzes ge\u00E4ndert werden. plugin_metadata_changeTemplate_selectTemplate=Vorlage w\u00E4hlen +plugin_metadata_createElements_generateElements=Generieren +plugin_metadata_createElements_generateTitle=Titel generieren +plugin_metadata_createElements_numberOfImages=Anzahl Seiten pro Strukturelement +plugin_metadata_createElements_selectType=Typ ausw\u00E4hlen plugin_newspaperRecognizer_applyEveryIssue=Auf alle Ausgaben anwenden plugin_newspaperRecognizer_applyEverySecondIssue=Auf jede zweite Ausgabe anwenden plugin_newspaperRecognizer_applyEveryThirdIssue=Auf jede dritte Ausgabe anwenden @@ -2871,7 +2890,7 @@ plugin_newspaperRecognizer_issue-type_Ausgabe=Ausgabe plugin_newspaperRecognizer_issue-type_Beilage=Beilage plugin_newspaperRecognizer_issue-type_Einband-und-Profil=Einband und Profil plugin_newspaperRecognizer_issue-type_Inhaltsverzeichnis=Inhaltsverzeichnis -plugin_newspaperRecognizer_issue-type_Leading-page=Leading page +plugin_newspaperRecognizer_issue-type_Leading-page=Titelblatt plugin_newspaperRecognizer_issue-type_Morgenausgabe=Morgenausgabe plugin_newspaperRecognizer_issue-type_from_date={0} vom {1} plugin_newspaperRecognizer_loadingImages=Bilder werden geladen @@ -2920,6 +2939,7 @@ plugin_opac_json_volume=Band plugin_replaceImages=Bilder ersetzen plugin_replaceimages_filename=Dateiname plugin_replaceimages_image=Bild +plugin_replaceimages_orderLabel=Logische Seitenzahl plugin_replaceimages_remark=Anmerkung plugin_replaceimages_saveAndExit=Speichern und verlassen plugin_restorearchivedimages_imagesRestored=Die Bilder wurden erfolgreich wieder hergestellt @@ -3250,6 +3270,8 @@ requiredValue=ist ein Pflichtfeld, hat aber keinen Wert rerender=Statistik neu berechnen resetPosition=Position zur\u00FCcksetzen resizeBox=Gr\u00F6\u00DFe der Box anpassen +result=Ergebnis +results=Ergebnisse returnHome=Hier geht es zur\u00FCck auf die Goobi-Startseite rights=Rechte rights_Admin_Administrative_Tasks=Administrative Aufgaben diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index 79882ab30..8281cfcc6 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -747,6 +747,7 @@ geheZuSeite=Go to page general=General zzz generalError=An error has occurred. generateValues=Generate values +generated=(automatically generated) generieren=Generate gesamtesTrefferset=All hits gesamtesTreffersetInMeinHomeverzeichnis=Put all hits in my user directory @@ -1298,6 +1299,7 @@ intranda_administration_showconfigfiles=Show config files intranda_administration_snippetCreator=Snippet Creator intranda_administration_vocabularies=Vocabularies zzz intranda_metadata_changeType=Change publication typezzz +intranda_metadata_createStructureElements=Generate structure elementszzz intranda_quartz_herisJob=HERIS Import intranda_statistics_allStepsPerProject=Workflow steps per project intranda_statistics_file_count=Determine number of files @@ -2284,10 +2286,14 @@ plugin_administration_archive_Number=Archive Number plugin_administration_archive_Shelfmark=Reference code(s) plugin_administration_archive_accessrestrict=Conditions governing access plugin_administration_archive_accruals=Accruals +plugin_administration_archive_accruals_head=Headingzzz +plugin_administration_archive_accruals_p=Descriptionzzz plugin_administration_archive_acqinfo=Immediate source of acquisition or transfer plugin_administration_archive_advancedSearch=Advanced searchzzz plugin_administration_archive_agencycode=Agency code plugin_administration_archive_altformavail=Existence and location of copies +plugin_administration_archive_altformavail_head=Headingzzz +plugin_administration_archive_altformavail_p=Descriptionzzz plugin_administration_archive_appraisal=Appraisal, destruction and scheduling information plugin_administration_archive_area_access=Condition of Access and Use Area plugin_administration_archive_area_content=Content and Structure Area @@ -2322,6 +2328,8 @@ plugin_administration_archive_duplicateEadFile=Create a copy of the filezzz plugin_administration_archive_duplicateNode=Duplicate nodezzz plugin_administration_archive_eadid=EAD ID plugin_administration_archive_editorName=Editor zzz +plugin_administration_archive_extref=Link descriptionzzz +plugin_administration_archive_extrefhref=Repository linkzzz plugin_administration_archive_font=Font plugin_administration_archive_langmaterial=Language | Scripts of material plugin_administration_archive_loadDatabase=Start editing @@ -2336,7 +2344,6 @@ plugin_administration_archive_newNode=Insert new node plugin_administration_archive_noConnectionToDatabase=There is no connection to the BaseX database. Please check the installation and make sure that the BaseX database has been started. plugin_administration_archive_noElementSelectedHeading=No element is currently selected. plugin_administration_archive_noElementSelectedText=Please first select a node in the left-hand area that you would like to edit. -plugin_administration_archive_nodelink=Link to other nodeszzz plugin_administration_archive_nodeType=Node type plugin_administration_archive_nodeType_audio=Audio document plugin_administration_archive_nodeType_file=File @@ -2344,9 +2351,13 @@ plugin_administration_archive_nodeType_folder=Directory plugin_administration_archive_nodeType_image=Image plugin_administration_archive_nodeType_other=Other document plugin_administration_archive_nodeType_video=Video document +plugin_administration_archive_nodelink=Link to other nodeszzz plugin_administration_archive_oddnote=Odd notes plugin_administration_archive_originalsloc=Existence and location of originals +plugin_administration_archive_originalsloc_head=Headingzzz +plugin_administration_archive_originalsloc_p=Descriptionzzz plugin_administration_archive_origination=Name of creator(s) +plugin_administration_archive_originationcorpname=Corporate body of the provenancezzz plugin_administration_archive_otherfindaid=Finding aids plugin_administration_archive_person=Person plugin_administration_archive_physdesc=Extent and medium of the unit of description (quantity, bulk, or size) @@ -2360,6 +2371,9 @@ plugin_administration_archive_process_no_process=- No Goobi process assigned so plugin_administration_archive_recordGroupExists=A record group with this name already exists.zzz plugin_administration_archive_recordid=Record ID plugin_administration_archive_removeInvalidProcessIds=Update references to processeszzz +plugin_administration_archive_repository=Repository +plugin_administration_archive_repositoryLabel=Label +plugin_administration_archive_repositoryaddressline=Address plugin_administration_archive_role=Role plugin_administration_archive_saveAndExit=Save and exit record group plugin_administration_archive_scopecontent=Scope and content @@ -2368,6 +2382,7 @@ plugin_administration_archive_selectionText=Please first select the record group plugin_administration_archive_separatedmaterial=Related units of description plugin_administration_archive_show_details=Show details plugin_administration_archive_suffix=Suffixzzz +plugin_administration_archive_titleproper=Title of the Finding Aidzzz plugin_administration_archive_unitdate=Date(s) plugin_administration_archive_unitdatestructured=Structured Date of the Unit plugin_administration_archive_unitid=Unit ID @@ -2855,10 +2870,14 @@ plugin_massupload_insertmode_barcode=Barcode detectionzzz plugin_massupload_insertmode_imageName=Image name analysiszzz plugin_massupload_selectFiles=Select files and upload plugin_massupload_startInserting=Insert files into processes -plugin_massupload_use_home_directory=Load images from my user directory +plugin_massupload_use_home_directory=Load images from user directory plugin_metadata_changeTemplate_changeTemplate=Change plugin_metadata_changeTemplate_description=The publication type of the record can be changed here.zzz plugin_metadata_changeTemplate_selectTemplate=Select templatezzz +plugin_metadata_createElements_generateElements=Generate +plugin_metadata_createElements_generateTitle=Generate titlezzz +plugin_metadata_createElements_numberOfImages=Number of pages per elementzzz +plugin_metadata_createElements_selectType=Select typezzz plugin_newspaperRecognizer_applyEveryIssue=Apply every issue zzz plugin_newspaperRecognizer_applyEverySecondIssue=Apply every second issue zzz plugin_newspaperRecognizer_applyEveryThirdIssue=Apply every third issue zzz @@ -2920,6 +2939,7 @@ plugin_opac_json_volume=Volume plugin_replaceImages=Replace images plugin_replaceimages_filename=Filename plugin_replaceimages_image=Image +plugin_replaceimages_orderLabel=Logical page number plugin_replaceimages_remark=Remark plugin_replaceimages_saveAndExit=Save and exit plugin_restorearchivedimages_imagesRestored=The images were successfully restored zzz @@ -3250,6 +3270,8 @@ requiredValue=is required but has no value rerender=Rerender statistic resetPosition=Reset position resizeBox=Resize box +result=Result +results=Results returnHome=Back to Goobi start page rights=Rights rights_Admin_Administrative_Tasks=Administrative tasks diff --git a/src/main/resources/messages_es.properties b/src/main/resources/messages_es.properties index dcbce825e..34c9f908d 100644 --- a/src/main/resources/messages_es.properties +++ b/src/main/resources/messages_es.properties @@ -747,6 +747,7 @@ geheZuSeite=Ir a p\u00E1gina general=General zzz generalError=Se ha producido un error. generateValues=Generar valores +generated=(generado autom\u00E1ticamente) zzz generieren=Generar gesamtesTrefferset=Todos los resultados gesamtesTreffersetInMeinHomeverzeichnis=Cargar todos los resultados en mi directorio de usuario @@ -1298,6 +1299,7 @@ intranda_administration_showconfigfiles=Mostrar archivos de configuraci\u00F3n z intranda_administration_snippetCreator=Snippet Creator intranda_administration_vocabularies=zzz intranda_metadata_changeType=zzz +intranda_metadata_createStructureElements=zzz intranda_quartz_herisJob=zzz intranda_statistics_allStepsPerProject=Pasos de trabajo por proyecto zzz intranda_statistics_file_count=Determinar el n\u00FAmero de archivos zzz @@ -2284,10 +2286,14 @@ plugin_administration_archive_Number=N\u00FAmero de archivo zzz plugin_administration_archive_Shelfmark=Firma(s) zzz plugin_administration_archive_accessrestrict=Normas de acceso zzz plugin_administration_archive_accruals=Nuevos ingresos zzz +plugin_administration_archive_accruals_head=zzz +plugin_administration_archive_accruals_p=zzz plugin_administration_archive_acqinfo=Oficina de expedici\u00F3n zzz plugin_administration_archive_advancedSearch=zzz plugin_administration_archive_agencycode=C\u00F3digo de la agencia zzz plugin_administration_archive_altformavail=Copias o reproducciones zzz +plugin_administration_archive_altformavail_head=zzz +plugin_administration_archive_altformavail_p=zzz plugin_administration_archive_appraisal=Valoraci\u00F3n y casaci\u00F3n zzz plugin_administration_archive_area_access=Condiciones de acceso y uso zzz plugin_administration_archive_area_content=Contenido y orden interno zzz @@ -2322,6 +2328,8 @@ plugin_administration_archive_duplicateEadFile=zzz plugin_administration_archive_duplicateNode=zzz plugin_administration_archive_eadid=EAD ID zzz plugin_administration_archive_editorName=Editor zzz +plugin_administration_archive_extref=zzz +plugin_administration_archive_extrefhref=zzz plugin_administration_archive_font=Fuente zzz plugin_administration_archive_langmaterial=Language | Scripts of material zzz plugin_administration_archive_loadDatabase=Empezar a editar zzz @@ -2343,9 +2351,13 @@ plugin_administration_archive_nodeType_folder=Directorio zzz plugin_administration_archive_nodeType_image=Imagen zzz plugin_administration_archive_nodeType_other=Otro documento zzz plugin_administration_archive_nodeType_video=Documento de v\u00EDdeo zzz +plugin_administration_archive_nodelink=zzz plugin_administration_archive_oddnote=Otras observaciones zzz plugin_administration_archive_originalsloc=Lugar de almacenamiento de los originales zzz +plugin_administration_archive_originalsloc_head=zzz +plugin_administration_archive_originalsloc_p=zzz plugin_administration_archive_origination=Nombre de la oficina de origen zzz +plugin_administration_archive_originationcorpname=zzz plugin_administration_archive_otherfindaid=Ayudas para la b\u00FAsqueda zzz plugin_administration_archive_person=Persona zzz plugin_administration_archive_physdesc=Alcance zzz @@ -2359,6 +2371,9 @@ plugin_administration_archive_process_no_process=- Ning\u00FAn proceso de Goobi plugin_administration_archive_recordGroupExists=zzz plugin_administration_archive_recordid=ID de registro zzz plugin_administration_archive_removeInvalidProcessIds=zzz +plugin_administration_archive_repository=zzz +plugin_administration_archive_repositoryLabel=zzz +plugin_administration_archive_repositoryaddressline=zzz plugin_administration_archive_role=Rollo zzz plugin_administration_archive_saveAndExit=Guardar y salir de las existencias del archivo zzz plugin_administration_archive_scopecontent=Forma y contenido zzz @@ -2367,6 +2382,7 @@ plugin_administration_archive_selectionText=Seleccione primero los fondos de arc plugin_administration_archive_separatedmaterial=Unidades de distorsi\u00F3n relacionadas zzz plugin_administration_archive_show_details=Mostrar detalles zzz plugin_administration_archive_suffix=zzz +plugin_administration_archive_titleproper=zzz plugin_administration_archive_unitdate=Per\u00EDodo de origen zzz plugin_administration_archive_unitdatestructured=Fecha estructurada de la unidad zzz plugin_administration_archive_unitid=ID de la unidad zzz @@ -2858,6 +2874,10 @@ plugin_massupload_use_home_directory=Cargar im\u00E1genes de mi directorio de us plugin_metadata_changeTemplate_changeTemplate=zzz plugin_metadata_changeTemplate_description=zzz plugin_metadata_changeTemplate_selectTemplate=zzz +plugin_metadata_createElements_generateElements=zzz +plugin_metadata_createElements_generateTitle=zzz +plugin_metadata_createElements_numberOfImages=zzz +plugin_metadata_createElements_selectType=zzz plugin_newspaperRecognizer_applyEveryIssue=Apply every issue zzz plugin_newspaperRecognizer_applyEverySecondIssue=Apply every second issue zzz plugin_newspaperRecognizer_applyEveryThirdIssue=Apply every third issue zzz @@ -2919,6 +2939,7 @@ plugin_opac_json_volume=Volumen zzz plugin_replaceImages=Replace images zzz plugin_replaceimages_filename=Filename zzz plugin_replaceimages_image=Image zzz +plugin_replaceimages_orderLabel=Logical page number zzz plugin_replaceimages_remark=Remark zzz plugin_replaceimages_saveAndExit=Save and exit zzz plugin_restorearchivedimages_imagesRestored=Las im\u00E1genes fueron restauradas con \u00E9xito zzz @@ -3249,6 +3270,8 @@ requiredValue=es un campo obligatorio pero no tiene un valor rerender=Calcular nuevamente la estad\u00EDstica resetPosition=Reajustar la posici\u00F3n zzz resizeBox=Ajustar el tama\u00F1o de la caja zzz +result=Result zzz +results=Results zzz returnHome=Volver a la p\u00E1gina de inicio de Goobi rights=Derechos rights_Admin_Administrative_Tasks=Tareas administrativas zzz diff --git a/src/main/resources/messages_fr.properties b/src/main/resources/messages_fr.properties index 861d637b8..23ffde99a 100644 --- a/src/main/resources/messages_fr.properties +++ b/src/main/resources/messages_fr.properties @@ -747,6 +747,7 @@ geheZuSeite=Go to page zzz general=G\u00E9n\u00E9ral zzz generalError=An error has occurred. zzz generateValues=Generate values zzz +generated=(g\u00E9n\u00E9r\u00E9 automatiquement) zzz generieren=Generate zzz gesamtesTrefferset=All hits zzz gesamtesTreffersetInMeinHomeverzeichnis=Put all hits in my user directory zzz @@ -1298,6 +1299,7 @@ intranda_administration_showconfigfiles=Show config files zzz intranda_administration_snippetCreator=Snippet Creator intranda_administration_vocabularies=zzz intranda_metadata_changeType=zzz +intranda_metadata_createStructureElements=zzz intranda_quartz_herisJob=zzz intranda_statistics_allStepsPerProject=Workflow steps per project zzz intranda_statistics_file_count=D\u00E9terminer le nombre de fichiers zzz @@ -2284,10 +2286,14 @@ plugin_administration_archive_Number=Num\u00E9ro d'archive zzz plugin_administration_archive_Shelfmark=R\u00E9f\u00E9rence plugin_administration_archive_accessrestrict=Conditions d'acc\u00E8s plugin_administration_archive_accruals=Accroissements +plugin_administration_archive_accruals_head=zzz +plugin_administration_archive_accruals_p=zzz plugin_administration_archive_acqinfo=Modalit\u00E9s d'entr\u00E9e plugin_administration_archive_advancedSearch=zzz plugin_administration_archive_agencycode=Code de l'agence zzz plugin_administration_archive_altformavail=Existence et lieu de conservation de copies +plugin_administration_archive_altformavail_head=zzz +plugin_administration_archive_altformavail_p=zzz plugin_administration_archive_appraisal=\u00C9valuation, tris et \u00E9liminations, sort final plugin_administration_archive_area_access=Zone des conditions d'acc\u00E8s et d'utilisation plugin_administration_archive_area_content=Zone du contenu et de la structure @@ -2322,6 +2328,8 @@ plugin_administration_archive_duplicateEadFile=zzz plugin_administration_archive_duplicateNode=zzz plugin_administration_archive_eadid=EAD ID zzz plugin_administration_archive_editorName=R\u00E9dacteur en chef zzz +plugin_administration_archive_extref=zzz +plugin_administration_archive_extrefhref=zzz plugin_administration_archive_font=Police zzz plugin_administration_archive_langmaterial=Langue et \u00E9criture des documents plugin_administration_archive_loadDatabase=Commencer le montage zzz @@ -2343,9 +2351,13 @@ plugin_administration_archive_nodeType_folder=Annuaire zzz plugin_administration_archive_nodeType_image=Image zzz plugin_administration_archive_nodeType_other=Autre document zzz plugin_administration_archive_nodeType_video=Document vid\u00E9o zzz +plugin_administration_archive_nodelink=zzz plugin_administration_archive_oddnote=Autres remarques zzz plugin_administration_archive_originalsloc=Existence et lieu de conservation des originaux +plugin_administration_archive_originalsloc_head=zzz +plugin_administration_archive_originalsloc_p=zzz plugin_administration_archive_origination=Nom du producteur +plugin_administration_archive_originationcorpname=zzz plugin_administration_archive_otherfindaid=Instruments de recherche plugin_administration_archive_person=Personne zzz plugin_administration_archive_physdesc=Importance mat\u00E9rielle et support de l'unit\u00E9 de description (quantit\u00E9, volume ou dimension) @@ -2359,6 +2371,9 @@ plugin_administration_archive_process_no_process=- Aucun processus Goobi attribu plugin_administration_archive_recordGroupExists=zzz plugin_administration_archive_recordid=ID de l'enregistrement zzz plugin_administration_archive_removeInvalidProcessIds=zzz +plugin_administration_archive_repository=zzz +plugin_administration_archive_repositoryLabel=zzz +plugin_administration_archive_repositoryaddressline=zzz plugin_administration_archive_role=Rouleau zzz plugin_administration_archive_saveAndExit=Sauvegarde et sortie des fonds d'archives zzz plugin_administration_archive_scopecontent=Pr\u00E9sentation du contenu @@ -2367,6 +2382,7 @@ plugin_administration_archive_selectionText=Veuillez d'abord s\u00E9lectionner l plugin_administration_archive_separatedmaterial=Sources compl\u00E9mentaires plugin_administration_archive_show_details=Afficher les d\u00E9tails zzz plugin_administration_archive_suffix=zzz +plugin_administration_archive_titleproper=zzz plugin_administration_archive_unitdate=Dates plugin_administration_archive_unitdatestructured=Date de l'unit\u00E9 structur\u00E9e zzz plugin_administration_archive_unitid=ID de l'unit\u00E9 zzz @@ -2858,6 +2874,10 @@ plugin_massupload_use_home_directory=Load images from my user directory zzz plugin_metadata_changeTemplate_changeTemplate=zzz plugin_metadata_changeTemplate_description=zzz plugin_metadata_changeTemplate_selectTemplate=zzz +plugin_metadata_createElements_generateElements=zzz +plugin_metadata_createElements_generateTitle=zzz +plugin_metadata_createElements_numberOfImages=zzz +plugin_metadata_createElements_selectType=zzz plugin_newspaperRecognizer_applyEveryIssue=Apply every issue zzz plugin_newspaperRecognizer_applyEverySecondIssue=Apply every second issue zzz plugin_newspaperRecognizer_applyEveryThirdIssue=Apply every third issue zzz @@ -2919,6 +2939,7 @@ plugin_opac_json_volume=Volume zzz plugin_replaceImages=Replace images zzz plugin_replaceimages_filename=Filename zzz plugin_replaceimages_image=Image zzz +plugin_replaceimages_orderLabel=Logical page number zzz plugin_replaceimages_remark=Remark zzz plugin_replaceimages_saveAndExit=Save and exit zzz plugin_restorearchivedimages_imagesRestored=Les images ont \u00E9t\u00E9 restaur\u00E9es avec succ\u00E8s zzz @@ -3249,6 +3270,8 @@ requiredValue=is required but has no value zzz rerender=Rerender statistic zzz resetPosition=Reset position zzz resizeBox=Resize box zzz +result=Result zzz +results=Results zzz returnHome=Back to Goobi start page zzz rights=Rights zzz rights_Admin_Administrative_Tasks=Administrative tasks zzz diff --git a/src/main/resources/messages_it.properties b/src/main/resources/messages_it.properties index cf53ba51f..c0dd050fb 100644 --- a/src/main/resources/messages_it.properties +++ b/src/main/resources/messages_it.properties @@ -747,6 +747,7 @@ geheZuSeite=Vai alla pagina zzz general=Generale zzz generalError=Si \u00E8 verificato un errore. zzz generateValues=generare valori zzz +generated=(generato automaticamente) zzz generieren=Genera zzz gesamtesTrefferset=Set totale di colpi zzz gesamtesTreffersetInMeinHomeverzeichnis=Caricare l'intero set di hit nella mia directory utente zzz @@ -1298,6 +1299,7 @@ intranda_administration_showconfigfiles=Visualizzare i file di configurazione zz intranda_administration_snippetCreator=Snippet Creator intranda_administration_vocabularies=zzz intranda_metadata_changeType=zzz +intranda_metadata_createStructureElements=zzz intranda_quartz_herisJob=zzz intranda_statistics_allStepsPerProject=Fasi di lavoro per progetto zzz intranda_statistics_file_count=Determinare il numero di file zzz @@ -2284,10 +2286,14 @@ plugin_administration_archive_Number=Numero d'archivio zzz plugin_administration_archive_Shelfmark=Firma(e) zzz plugin_administration_archive_accessrestrict=Regolamenti di accesso zzz plugin_administration_archive_accruals=Nuovi arrivi zzz +plugin_administration_archive_accruals_head=zzz +plugin_administration_archive_accruals_p=zzz plugin_administration_archive_acqinfo=Ufficio di emissione zzz plugin_administration_archive_advancedSearch=zzz plugin_administration_archive_agencycode=Codice dell'agenzia zzz plugin_administration_archive_altformavail=Copie o riproduzioni zzz +plugin_administration_archive_altformavail_head=zzz +plugin_administration_archive_altformavail_p=zzz plugin_administration_archive_appraisal=Valutazione e cassazione zzz plugin_administration_archive_area_access=Condizioni di accesso e uso zzz plugin_administration_archive_area_content=Contenuto e ordine interno zzz @@ -2322,6 +2328,8 @@ plugin_administration_archive_duplicateEadFile=zzz plugin_administration_archive_duplicateNode=zzz plugin_administration_archive_eadid=EAD ID zzz plugin_administration_archive_editorName=Editore zzz +plugin_administration_archive_extref=zzz +plugin_administration_archive_extrefhref=zzz plugin_administration_archive_font=Font zzz plugin_administration_archive_langmaterial=Language | Scripts of material zzz plugin_administration_archive_loadDatabase=Iniziare il montaggio zzz @@ -2343,9 +2351,13 @@ plugin_administration_archive_nodeType_folder=Directory zzz plugin_administration_archive_nodeType_image=Immagine zzz plugin_administration_archive_nodeType_other=Altro documento zzz plugin_administration_archive_nodeType_video=Documento video zzz +plugin_administration_archive_nodelink=zzz plugin_administration_archive_oddnote=Ulteriori osservazioni zzz plugin_administration_archive_originalsloc=Luogo di conservazione degli originali zzz +plugin_administration_archive_originalsloc_head=zzz +plugin_administration_archive_originalsloc_p=zzz plugin_administration_archive_origination=Nome dell'ufficio di provenienza zzz +plugin_administration_archive_originationcorpname=zzz plugin_administration_archive_otherfindaid=Aiuti alla ricerca zzz plugin_administration_archive_person=Persona zzz plugin_administration_archive_physdesc=Portata zzz @@ -2359,6 +2371,9 @@ plugin_administration_archive_process_no_process=- Nessun processo Goobi assegna plugin_administration_archive_recordGroupExists=zzz plugin_administration_archive_recordid=ID record zzz plugin_administration_archive_removeInvalidProcessIds=zzz +plugin_administration_archive_repository=zzz +plugin_administration_archive_repositoryLabel=zzz +plugin_administration_archive_repositoryaddressline=zzz plugin_administration_archive_role=Rotolo zzz plugin_administration_archive_saveAndExit=Salvare e uscire dall'archivio zzz plugin_administration_archive_scopecontent=Forma e contenuto zzz @@ -2367,6 +2382,7 @@ plugin_administration_archive_selectionText=Per prima cosa seleziona i fondi del plugin_administration_archive_separatedmaterial=Unit\u00E0 di distorsione correlate zzz plugin_administration_archive_show_details=Mostra i dettagli zzz plugin_administration_archive_suffix=zzz +plugin_administration_archive_titleproper=zzz plugin_administration_archive_unitdate=Periodo di origine zzz plugin_administration_archive_unitdatestructured=Data strutturata dell'unit\u00E0 zzz plugin_administration_archive_unitid=ID unit\u00E0 zzz @@ -2858,6 +2874,10 @@ plugin_massupload_use_home_directory=Caricare le immagini dalla mia directory ut plugin_metadata_changeTemplate_changeTemplate=zzz plugin_metadata_changeTemplate_description=zzz plugin_metadata_changeTemplate_selectTemplate=zzz +plugin_metadata_createElements_generateElements=zzz +plugin_metadata_createElements_generateTitle=zzz +plugin_metadata_createElements_numberOfImages=zzz +plugin_metadata_createElements_selectType=zzz plugin_newspaperRecognizer_applyEveryIssue=Apply every issue zzz plugin_newspaperRecognizer_applyEverySecondIssue=Apply every second issue zzz plugin_newspaperRecognizer_applyEveryThirdIssue=Apply every third issue zzz @@ -2919,6 +2939,7 @@ plugin_opac_json_volume=Volume zzz plugin_replaceImages=Replace images zzz plugin_replaceimages_filename=Filename zzz plugin_replaceimages_image=Image zzz +plugin_replaceimages_orderLabel=Logical page number zzz plugin_replaceimages_remark=Remark zzz plugin_replaceimages_saveAndExit=Save and exit zzz plugin_restorearchivedimages_imagesRestored=Le immagini sono state ripristinate con successo zzz @@ -3249,6 +3270,8 @@ requiredValue=\u00E8 un campo obbligatorio, ma non ha alcun valore zzz rerender=Ricalcolare le statistiche zzz resetPosition=Posizione di reset zzz resizeBox=Regolazione delle dimensioni della scatola zzz +result=Result zzz +results=Results zzz returnHome=Clicca qui per tornare alla homepage di Goobi zzz rights=Diritti zzz rights_Admin_Administrative_Tasks=Compiti amministrativi zzz diff --git a/src/main/resources/messages_iw.properties b/src/main/resources/messages_iw.properties index 68ee0e81c..905b070d5 100644 --- a/src/main/resources/messages_iw.properties +++ b/src/main/resources/messages_iw.properties @@ -1,5 +1,6 @@ AND=\u05DE\u05DB\u05D9\u05DC AddNewGroup=Add group zzz +Admin_config_file_editor=zzz Anlegen\ eines\ Prozesses\ (auf\ Bandebene)=\u05EA\u05D7\u05D9\u05DC\u05EA \u05EA\u05D4\u05DC\u05D9\u05DA (\u05D1\u05E8\u05DE\u05EA \u05E4\u05E8\u05D9\u05D8) Anlegen\ eines\ Prozesses\ auf\ Bandebene=\u05EA\u05D7\u05D9\u05DC\u05EA \u05EA\u05D4\u05DC\u05D9\u05DA (\u05D1\u05E8\u05DE\u05EA \u05E4\u05E8\u05D9\u05D8) AuswaehlenAusVorhandenenProzessen=\u05D1\u05D7\u05E8 \u05DE\u05EA\u05D5\u05DA \u05EA\u05D4\u05DC\u05D9\u05DB\u05D9\u05DD \u05E7\u05D5\u05D3\u05DE\u05D9\u05DD @@ -44,6 +45,9 @@ GoobiScript_warning_page=\u05D4\u05D0\u05DD \u05D4\u05D9\u05E0\u05DA \u05D1\u05D GoobiScript_warning_selection=\u05D4\u05D0\u05DD \u05D4\u05D9\u05E0\u05DA \u05D1\u05D8\u05D5\u05D7 \u05E9\u05D1\u05E8\u05E6\u05D5\u05E0\u05DA \u05DC\u05D4\u05D5\u05E6\u05D9\u05D0 \u05DC\u05E4\u05D5\u05E2\u05DC \u05D0\u05EA \u05D4GoobiScript \u05E2\u05D1\u05D5\u05E8 \u05D4\u05DE\u05D1\u05D7\u05E8 \u05D4\u05D6\u05D4 \u05E9\u05DC \u05D4\u05EA\u05D0\u05DE\u05D5\u05EA \u05DC\u05DE\u05E1\u05E0\u05DF \u05D4\u05E9\u05D0\u05D9\u05DC\u05EA\u05D4? GoobiScript_wrong_answer=\u05EA\u05E9\u05D5\u05D1\u05EA\u05DA \u05D4\u05D9\u05D9\u05EA\u05D4 \u05E9\u05D2\u05D5\u05D9\u05D4. \u05D4GoobiScript \u05DC\u05D0 \u05D9\u05D5\u05E9\u05DD. HttpSchritt=\u05E6\u05E2\u05D3 HTTP +IMAGE_COMMENT_LOCATION_LAYOUT_WIZARD=zzz +IMAGE_COMMENT_LOCATION_METADATA_EDITOR=zzz +IMAGE_COMMENT_LOCATION_PLUGIN_IMAGEQA=zzz INSERT_AFTER=Insert after step zzz INSERT_BEFORE=Insert before current step zzz IS=\u05D4\u05D5\u05D0 @@ -224,6 +228,7 @@ SearchResultField_lastError=Last error message zzz Sicherheitskopie\ neu=\u05E9\u05D7\u05D6\u05E8 \u05D7\u05D6\u05E8 TIFF-Header\ erstellen=\u05E6\u05D5\u05E8 TIFF \u05DE\u05D5\u05D1\u05D9\u05DC (\u05E9\u05E0\u05DE\u05E6\u05D0 \u05D1\u05E8\u05D0\u05E9 \u05D4\u05E8\u05E9\u05D9\u05DE\u05D4) Tiff-Header\ erstellen=\u05E6\u05D5\u05E8 Tiff \u05DE\u05D5\u05D1\u05D9\u05DC (\u05E9\u05E0\u05DE\u05E6\u05D0 \u05D1\u05E8\u05D0\u05E9 \u05D4\u05E8\u05E9\u05D9\u05DE\u05D4) +Tomcat\ v9.0\ Server\ at\ localhost=zzz URI=\u05DB\u05EA\u05D5\u05D1\u05EA UngueltigeDaten\:=\u05E0\u05EA\u05D5\u05E0\u05D9\u05DD \u05DC\u05D0 \u05EA\u05E7\u05D9\u05E0\u05D9\u05DD\: UngueltigerTitelFuerVorgang=\u05DB\u05D5\u05EA\u05E8\u05EA \u05E2\u05D1\u05D5\u05E8 \u05EA\u05D4\u05DC\u05D9\u05DA \u05D0\u05D9\u05E0\u05D4 \u05EA\u05E7\u05D9\u05E0\u05D4 @@ -239,6 +244,9 @@ abgeschlosseneTasksAusListeEntfernen=\u05D4\u05E1\u05E8 \u05DE\u05E9\u05D9\u05DE abschliessen=\u05E1\u05D9\u05D9\u05DD accessLicence=\u05E8\u05D9\u05E9\u05D9\u05D5\u05DF \u05D2\u05D9\u05E9\u05D4 accessStatus=\u05DE\u05E6\u05D1 \u05D2\u05D9\u05E9\u05D4 +action__delete_entity=zzz +action__edit_entity=zzz +action__set_named_entity=zzz active=\u05E4\u05E2\u05D9\u05DC add=Add zzz addAnnotation=\u05D4\u05D5\u05E1\u05E3 \u05D4\u05E2\u05E8\u05EA \u05D4\u05E1\u05D1\u05E8 @@ -254,6 +262,16 @@ addToSelectedBatch=\u05D4\u05D5\u05E1\u05E3 \u05EA\u05D4\u05DC\u05D9\u05DB\u05D9 addTranscription=\u05D4\u05D5\u05E1\u05E3 \u05EA\u05E2\u05EA\u05D9\u05E7 additionalOptions=\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05E0\u05D5\u05E1\u05E4\u05D5\u05EA administration=\u05E0\u05D9\u05D4\u05D5\u05DC (\u05D0\u05D3\u05DE\u05D9\u05E0\u05D9\u05E1\u05D8\u05E8\u05E6\u05D9\u05D4) +administration_config_file_editor_backup_not_writable_check_permissions=zzz +administration_config_file_editor_config_file_selection=zzz +administration_config_file_editor_edit_file=zzz +administration_config_file_editor_explanation_for=zzz +administration_config_file_editor_file_name=zzz +administration_config_file_editor_file_not_writable_check_permissions=zzz +administration_config_file_editor_help_messages_de.properties=zzz +administration_config_file_editor_save_unsaved_changes=zzz +administration_config_file_editor_show_file=zzz +administration_config_file_editor_unsaved_changes=zzz administrationsaufgaben=\u05DE\u05E9\u05D9\u05DE\u05D5\u05EA \u05E0\u05D9\u05D4\u05D5\u05DC (\u05D0\u05D3\u05DE\u05D9\u05E0\u05D9\u05E1\u05D8\u05E8\u05D8\u05D9\u05D1\u05D9\u05D5\u05EA) administrativ=\u05E0\u05D9\u05D4\u05D5\u05DC\u05D9 (\u05D0\u05D3\u05DE\u05D9\u05E0\u05D9\u05E1\u05D8\u05E8\u05D8\u05D9\u05D1\u05D9) aktivSeit=\u05E4\u05E2\u05D9\u05DC \u05D4\u05D7\u05DC \u05DE @@ -553,6 +571,7 @@ displayLastEditionTask=Show name of last closed step zzz displayLastEditionUser=Show user of the last change zzz displayLocksColumn=\u05D4\u05E8\u05D0\u05D4 \u05D2\u05D5\u05E9\u05D9\u05DD displayMetadataColumn=\u05D4\u05E8\u05D0\u05D4 \u05DE\u05D8\u05D0-\u05D3\u05D0\u05D8\u05D0 +displayNumberOfImagesColumn=zzz displayOnlyOpenTasks=\u05D4\u05E8\u05D0\u05D4 \u05DE\u05E9\u05D9\u05DE\u05D5\u05EA \u05E4\u05EA\u05D5\u05D7\u05D5\u05EA \u05D1\u05DC\u05D1\u05D3 displayOnlySelectedTasks=\u05D4\u05E8\u05D0\u05D4 \u05E8\u05E7 \u05D0\u05EA \u05D4\u05DE\u05E9\u05D9\u05DE\u05D5\u05EA \u05E9\u05DC\u05D9 displayProcessDateColumn=\u05D4\u05E8\u05D0\u05D4 \u05E0\u05EA\u05D5\u05E0\u05D9 \u05D9\u05E6\u05D9\u05E8\u05EA \u05EA\u05D4\u05DC\u05D9\u05DA @@ -728,6 +747,7 @@ geheZuSeite=\u05E2\u05D1\u05D5\u05E8 \u05D0\u05DC \u05E2\u05DE\u05D5\u05D3 general=General zzz generalError=\u05E9\u05D2\u05D9\u05D0\u05D4 \u05DB\u05DC\u05DC\u05D9\u05EA \u05D0\u05D9\u05E8\u05E2\u05D4. generateValues=\u05D9\u05D9\u05E6\u05E8 \u05E2\u05E8\u05DB\u05D9\u05DD +generated=(automatically generated) zzz generieren=\u05D9\u05D9\u05E6\u05E8 \u05E2\u05E8\u05DB\u05D9\u05DD gesamtesTrefferset=\u05DB\u05DC \u05D4\u05D4\u05EA\u05D0\u05DE\u05D5\u05EA gesamtesTreffersetInMeinHomeverzeichnis=\u05E9\u05D9\u05DD \u05D0\u05EA \u05DB\u05DC \u05D4\u05D4\u05EA\u05D0\u05DE\u05D5\u05EA \u05D1\u05EA\u05D9\u05E7\u05D9\u05D9\u05EA \u05D4\u05D1\u05D9\u05EA \u05E9\u05DC\u05D9* (\u05D1\u05DE\u05E7\u05D1\u05E5 \u05D4\u05DE\u05DB\u05D9\u05DC \u05DE\u05D9\u05D3\u05E2 \u05D1\u05E0\u05D5\u05E9\u05D0) @@ -791,6 +811,7 @@ helpDisplayLastEditionTask=Should the column with the name of the last closed st helpDisplayLastEditionUser=Should the column be displayed with the user name who edited the last closed step? zzz helpDisplayLocksColumn=\u05E6\u05D9\u05D9\u05DF \u05D4\u05D0\u05DD \u05DC\u05D4\u05E6\u05D9\u05D2 \u05D0\u05EA \u05D4\u05E2\u05DE\u05D5\u05D3\u05D4 \u05E9\u05DE\u05E6\u05D1\u05D9\u05E2\u05D4 \u05D4\u05D0\u05DD \u05DC\u05DE\u05E9\u05EA\u05DE\u05E9 \u05D9\u05E9 \u05DB\u05E8\u05D2\u05E2 \u05E9\u05D9\u05DE\u05D5\u05E9 \u05D1\u05DC\u05E2\u05D3\u05D9 \u05D1\u05DE\u05D8\u05D0-\u05D3\u05D0\u05D8\u05D0 \u05E9\u05D2\u05D5\u05E8\u05DD \u05DC\u05DB\u05DA \u05E9\u05DE\u05E9\u05EA\u05DE\u05E9\u05D9\u05DD \u05D0\u05D7\u05E8\u05D9\u05DD \u05DC\u05D0 \u05D9\u05DB\u05D5\u05DC\u05D9\u05DD \u05DC\u05D2\u05E9\u05EA \u05DC\u05DE\u05D8\u05D0-\u05D3\u05D0\u05D8\u05D0 \u05D6\u05D4 helpDisplayMetadataColumn=\u05DB\u05D0\u05DF \u05EA\u05D5\u05DB\u05DC \u05DC\u05D4\u05D2\u05D3\u05D9\u05E8 \u05D4\u05D0\u05DD \u05D1\u05E8\u05E6\u05D5\u05E0\u05DA \u05E9 Goobi \u05D9\u05DB\u05DC\u05D5\u05DC \u05E4\u05E8\u05D8\u05D9\u05DD \u05E1\u05E4\u05E6\u05D9\u05E4\u05D9\u05D9\u05DD \u05E9\u05DC \u05DE\u05D8\u05D0-\u05D3\u05D0\u05D8\u05D0 \u05D1\u05DB\u05DC \u05E4\u05E2\u05DD \u05D1\u05E8\u05E9\u05D9\u05DE\u05D4 +helpDisplayNumberOfImagesColumn=zzz helpDisplayOnlyOpenTasks=\u05E6\u05D9\u05D9\u05DF \u05D4\u05D0\u05DD \u05DC\u05D4\u05E6\u05D9\u05D2 \u05E8\u05E7 \u05DE\u05E9\u05D9\u05DE\u05D5\u05EA \u05E9\u05E0\u05DE\u05E6\u05D0\u05D5\u05EA \u05D1\u05E1\u05D8\u05D8\u05D5\u05E1 '\u05E4\u05EA\u05D5\u05D7' helpDisplayOnlySelectedTasks=\u05DB\u05D0\u05DF \u05EA\u05D5\u05DB\u05DC \u05DC\u05E6\u05D9\u05D9\u05DF \u05D4\u05D0\u05DD \u05DC\u05D4\u05E6\u05D9\u05D2 \u05E8\u05E7 \u05D0\u05EA \u05D4\u05DE\u05E9\u05D9\u05DE\u05D5\u05EA \u05E9\u05DB\u05D1\u05E8 \u05D0\u05D9\u05E9\u05E8\u05EA \u05E9\u05D0\u05EA\u05D4 \u05DB\u05E8\u05D2\u05E2 \u05DE\u05E2\u05D1\u05D3 helpDisplayOtherTasks=\u05DB\u05D0\u05DF \u05EA\u05D5\u05DB\u05DC \u05DC\u05E6\u05D9\u05D9\u05DF \u05D4\u05D0\u05DD \u05D1\u05E8\u05E6\u05D5\u05E0\u05DA \u05E9 Goobi \u05D9\u05DB\u05DC\u05D5\u05DC \u05D1\u05E8\u05E9\u05D9\u05DE\u05EA \u05D4\u05DE\u05D8\u05DC\u05D5\u05EA \u05E9\u05DC\u05DA \u05DE\u05D8\u05DC\u05D5\u05EA \u05D0\u05D7\u05E8\u05D5\u05EA \u05E9\u05DB\u05D1\u05E8 \u05D0\u05D5\u05E9\u05E8\u05D5 \u05DC\u05E2\u05D9\u05D1\u05D5\u05D3 \u05E2"\u05D9 \u05DE\u05E9\u05EA\u05DE\u05E9\u05D9\u05DD \u05D0\u05D7\u05E8\u05D9\u05DD \u05DE\u05D0\u05D5\u05EA\u05D4 \u05E7\u05D1\u05D5\u05E6\u05EA-\u05DE\u05E9\u05EA\u05DE\u05E9 @@ -1040,7 +1061,9 @@ help_intranda_administration_repository_oaiUrl=zzz help_intranda_administration_repository_project=zzz help_intranda_administration_repository_rootUrl=zzz help_intranda_administration_repository_script=zzz +help_intranda_administration_repository_startDate=zzz help_intranda_administration_repository_template=zzz +help_intranda_administration_repository_testmode=zzz help_intranda_administration_repository_type=zzz help_plugin_administration_snippet_displayNameAdditionalLanguage=Here you can specify the translation for an additional language (e.g. Titulo principal). zzz help_plugin_administration_snippet_displayNameEng=Definition of the display name in English (e.g. Main title). zzz @@ -1254,6 +1277,7 @@ intranda_administration_repositories=Repositories zzz intranda_administration_repository=zzz intranda_administration_repository_delay=zzz intranda_administration_repository_enableGoobiImport=Create processes zzz +intranda_administration_repository_endDate=zzz intranda_administration_repository_exportFolder=zzz intranda_administration_repository_fileformat=zzz intranda_administration_repository_frequency=zzz @@ -1263,7 +1287,9 @@ intranda_administration_repository_metadataPrefix=zzz intranda_administration_repository_metadataSet=zzz intranda_administration_repository_oaiUrl=zzz intranda_administration_repository_rootUrl=zzz +intranda_administration_repository_startDate=zzz intranda_administration_repository_template=zzz +intranda_administration_repository_testmode=zzz intranda_administration_repository_type=zzz intranda_administration_reset_pagination=Reset pagination zzz intranda_administration_restorearchivedimagefolders=Restore archived image folders zzz @@ -1378,6 +1404,8 @@ korrekturmeldungSenden=Report error zzz korrekturmeldungSendenForAll=\u05E9\u05DC\u05D7 \u05D4\u05D5\u05D3\u05E2\u05EA \u05EA\u05D9\u05E7\u05D5\u05DF \u05DC\u05E9\u05DC\u05D1\u05D9 alle korrekturmeldungSendenSingle=\u05E9\u05DC\u05D7 \u05D4\u05D5\u05D3\u05E2\u05EA \u05EA\u05D9\u05E7\u05D5\u05DF \u05DC\u05E9\u05DC\u05D1 \u05D4\u05E0\u05D5\u05DB\u05D7\u05D9 kw=w +label__named_entity=zzz +label__named_entity_type=zzz langLaufendeAufgaben=\u05D9\u05D5\u05DE\u05DF-\u05E8\u05D9\u05E6\u05D4 \u05E9\u05DC \u05DE\u05E9\u05D9\u05DE\u05D5\u05EA language=\u05E9\u05E4\u05D4 lastImage=\u05E9\u05DD \u05D4\u05EA\u05DE\u05D5\u05E0\u05D4 @@ -2082,6 +2110,7 @@ playerPermissions=\u05D4\u05E8\u05E9\u05D0\u05D5\u05EA \u05E9\u05D7\u05E7\u05DF pleaseEnterNumberOfProcesses=Please enter the number of processes to confirm this action zzz plugin=\u05E4\u05DC\u05D0\u05D2-\u05D0\u05D9\u05DF pluginLeave=\u05E6\u05D0 \u05DE\u05E4\u05DC\u05D0\u05D2-\u05D0\u05D9\u05DF +pluginSaveAndLeave=zzz plugin_NliDailyPres_executeSingleImport=zzz plugin_NliDailyPress_statistics_calculate=Generate result list zzz plugin_NliDailyPress_statistics_cmsId=CMS ID zzz @@ -2256,9 +2285,14 @@ 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_accruals=Accruals zzz +plugin_administration_archive_accruals_head=zzz +plugin_administration_archive_accruals_p=zzz plugin_administration_archive_acqinfo=Immediate source of acquisition or transfer zzz +plugin_administration_archive_advancedSearch=zzz plugin_administration_archive_agencycode=Agency code zzz plugin_administration_archive_altformavail=Existence and location of copies zzz +plugin_administration_archive_altformavail_head=zzz +plugin_administration_archive_altformavail_p=zzz plugin_administration_archive_appraisal=Appraisal, destruction and scheduling information zzz plugin_administration_archive_area_access=Condition of Access and Use Area zzz plugin_administration_archive_area_content=Content and Structure Area zzz @@ -2271,6 +2305,7 @@ plugin_administration_archive_arrangement=System of arrangement zzz plugin_administration_archive_bibliography=Publication note zzz plugin_administration_archive_bioghist=Administrative | Biographical history zzz plugin_administration_archive_c=The database file cannot be loaded. zzz +plugin_administration_archive_clear=zzz plugin_administration_archive_conventiondeclaration=Rules or Conventions zzz plugin_administration_archive_createNewArchive=Create new record group zzz plugin_administration_archive_createProcesses=Create missing processes for all lowest level subnodes zzz @@ -2288,8 +2323,12 @@ plugin_administration_archive_deleteNode=Delete node zzz plugin_administration_archive_descriptionLevel=Level of description zzz plugin_administration_archive_didnote=Note zzz plugin_administration_archive_download=Download as EAD file zzz +plugin_administration_archive_duplicateEadFile=zzz +plugin_administration_archive_duplicateNode=zzz plugin_administration_archive_eadid=EAD ID zzz plugin_administration_archive_editorName=Editor zzz +plugin_administration_archive_extref=zzz +plugin_administration_archive_extrefhref=zzz plugin_administration_archive_font=Font zzz plugin_administration_archive_langmaterial=Language | Scripts of material zzz plugin_administration_archive_loadDatabase=Start editing zzz @@ -2311,19 +2350,29 @@ plugin_administration_archive_nodeType_folder=Directory zzz plugin_administration_archive_nodeType_image=Image zzz plugin_administration_archive_nodeType_other=Other document zzz plugin_administration_archive_nodeType_video=Video document zzz +plugin_administration_archive_nodelink=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_p=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_person=Person zzz plugin_administration_archive_physdesc=Extent and medium of the unit of description (quantity, bulk, or size) zzz plugin_administration_archive_physdescstructured=Standardized extent and medium of the unit of description (quantity, bulk, or size) zzz plugin_administration_archive_phystech=Physical characteristics and technical requirements zzz plugin_administration_archive_please_select_node=Please select a node first. zzz +plugin_administration_archive_prefix=zzz plugin_administration_archive_process=Goobi process zzz plugin_administration_archive_process_create_process=Create Goobi process zzz plugin_administration_archive_process_no_process=- No Goobi process assigned so far - zzz +plugin_administration_archive_recordGroupExists=zzz plugin_administration_archive_recordid=Record ID zzz +plugin_administration_archive_removeInvalidProcessIds=zzz +plugin_administration_archive_repository=zzz +plugin_administration_archive_repositoryLabel=zzz +plugin_administration_archive_repositoryaddressline=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 @@ -2331,6 +2380,8 @@ 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 plugin_administration_archive_separatedmaterial=Related units of description zzz plugin_administration_archive_show_details=Show details zzz +plugin_administration_archive_suffix=zzz +plugin_administration_archive_titleproper=zzz plugin_administration_archive_unitdate=Date(s) zzz plugin_administration_archive_unitdatestructured=Structured date of the unit zzz plugin_administration_archive_unitid=Unit ID zzz @@ -2707,6 +2758,7 @@ plugin_intranda_statistics_storagePerProcess_sizeMediaTotal=\u05D2\u05D5\u05D3\u plugin_intranda_step_LayoutWizzard=intranda LayoutWizzard plugin_intranda_step_MetadataEnhancer=\u05D4\u05E2\u05E9\u05E8 \u05DE\u05D8\u05D0-\u05D3\u05D0\u05D8\u05D0 \u05D1\u05D0\u05DE\u05E6\u05E2\u05D5\u05EA \u05D0\u05DE\u05D9\u05E0\u05D5\u05EA \u05DE\u05D9\u05D3\u05E2 plugin_intranda_step_catalogue_request=\u05D1\u05E7\u05E9\u05EA \u05E7\u05D8\u05DC\u05D5\u05D2 +plugin_intranda_step_displayContent=zzz plugin_intranda_step_fetch_images_from_metadata_forProcess=for process zzz plugin_intranda_step_fetch_images_from_metadata_imageMissing=Image file missing zzz plugin_intranda_step_fetch_images_from_metadata_imagesImportedForProcess=Images imported for process zzz @@ -2757,7 +2809,9 @@ plugin_intranda_step_metadata_per_image_overwriteField=Overwrite all existing fi plugin_intranda_step_metadata_per_image_processSearch=Search process zzz plugin_intranda_step_metadata_per_image_processSearchDescription=Search here for a Goobi process for which a reference is to be created. zzz plugin_intranda_step_metadata_per_image_rating=Rating zzz +plugin_intranda_step_metadata_per_image_referenceAdd=zzz plugin_intranda_step_metadata_per_image_references=References zzz +plugin_intranda_step_metadata_per_image_removeLink=zzz plugin_intranda_step_metadata_per_image_value=Value zzz plugin_intranda_step_newspaperRecognizer=\u05D9\u05E6\u05D9\u05E8\u05EA \u05D0\u05D9\u05E0\u05D3\u05E7\u05E1\u05D9\u05DD \u05DC\u05E2\u05D9\u05EA\u05D5\u05E0\u05D9\u05DD plugin_intranda_step_ocrselector=OCR page selection zzz @@ -2809,7 +2863,10 @@ plugin_list_title_workflow=Workflow zzz plugin_massUpload_analyzing=Analysing barcodes zzz plugin_massupload_allFilesInserted=\u05D4\u05E7\u05D1\u05E6\u05D9\u05DD \u05E0\u05E7\u05E8\u05D0\u05D5 \u05D5\u05E9\u05DC\u05D1\u05D9 \u05DE\u05D4\u05DC\u05DA-\u05D4\u05E2\u05D1\u05D5\u05D3\u05D4 \u05D4\u05D5\u05E9\u05DC\u05DE\u05D5 plugin_massupload_analyzeBarcodes=Analyse barcodes zzz +plugin_massupload_insertMode=zzz plugin_massupload_insertionStartedViaGoobiScript=Started importing images via GoobiScript. zzz +plugin_massupload_insertmode_barcode=zzz +plugin_massupload_insertmode_imageName=zzz plugin_massupload_selectFiles=\u05D1\u05D7\u05E8 \u05E7\u05D1\u05E6\u05D9\u05DD \u05D5\u05D4\u05E2\u05DC\u05D4 plugin_massupload_startInserting=\u05D4\u05DB\u05E0\u05E1 \u05E7\u05D1\u05E6\u05D9\u05DD \u05DC\u05EA\u05D5\u05DA \u05EA\u05D4\u05DC\u05D9\u05DB\u05D9\u05DD plugin_massupload_use_home_directory=\u05D8\u05E2\u05DF \u05EA\u05DE\u05D5\u05E0\u05D5\u05EA \u05DE\u05EA\u05D5\u05DA \u05E1\u05E4\u05E8\u05D9\u05D9\u05EA \u05D4\u05D1\u05D9\u05EA \u05E9\u05DC\u05D9 @@ -2823,6 +2880,14 @@ plugin_newspaperRecognizer_biWeekly=Bi-weekly zzz plugin_newspaperRecognizer_date=Date zzz plugin_newspaperRecognizer_deleteManualResults=Delete manual results zzz plugin_newspaperRecognizer_friday=Friday zzz +plugin_newspaperRecognizer_issue-type_Abendausgabe=zzz +plugin_newspaperRecognizer_issue-type_Ausgabe=zzz +plugin_newspaperRecognizer_issue-type_Beilage=zzz +plugin_newspaperRecognizer_issue-type_Einband-und-Profil=zzz +plugin_newspaperRecognizer_issue-type_Inhaltsverzeichnis=zzz +plugin_newspaperRecognizer_issue-type_Leading-page=zzz +plugin_newspaperRecognizer_issue-type_Morgenausgabe=zzz +plugin_newspaperRecognizer_issue-type_from_date=zzz plugin_newspaperRecognizer_loadingImages=Loading images zzz plugin_newspaperRecognizer_monday=Monday zzz plugin_newspaperRecognizer_nro=No. zzz @@ -2869,6 +2934,7 @@ plugin_opac_json_volume=Volume zzz plugin_replaceImages=Replace images zzz plugin_replaceimages_filename=Filename zzz plugin_replaceimages_image=Image zzz +plugin_replaceimages_orderLabel=Logical page number zzz plugin_replaceimages_remark=Remark zzz plugin_replaceimages_saveAndExit=Save and exit zzz plugin_restorearchivedimages_imagesRestored=The images were successfully restored zzz @@ -3190,6 +3256,7 @@ reload=\u05D8\u05E2\u05DF-\u05DE\u05D7\u05D3\u05E9 removeFilter=\u05D4\u05E1\u05E8 \u05DE\u05E1\u05E0\u05DF \u05DE\u05D4\u05E8\u05E9\u05D9\u05DE\u05D4 removeFromAssociatedBatch=\u05D4\u05E1\u05E8 \u05D0\u05EA \u05D4\u05EA\u05D4\u05DC\u05D9\u05DB\u05D9\u05DD \u05E9\u05E0\u05D1\u05D7\u05E8\u05D5 \u05DE\u05D4\u05D0\u05E6\u05D5\u05D5\u05EA \u05D4\u05E7\u05E9\u05D5\u05E8\u05D5\u05EA \u05E9\u05DC\u05D4\u05DD removeGroup=Remove group zzz +removeSelectedItem=zzz reportError=\u05D3\u05D5\u05D5\u05D7 \u05E2\u05DC \u05E9\u05D2\u05D9\u05D0\u05D4 reportSolution=Send solution zzz representative=\u05E0\u05E6\u05D9\u05D2 @@ -3198,6 +3265,8 @@ requiredValue=\u05E0\u05D3\u05E8\u05E9 \u05D0\u05D1\u05DC \u05D0\u05D9\u05DF \u0 rerender=\u05E1\u05D8\u05D8\u05D9\u05E1\u05D8\u05D9\u05E7\u05EA \u05E1\u05D9\u05D3\u05D5\u05E8-\u05DE\u05D7\u05D3\u05E9 resetPosition=\u05D0\u05E4\u05E1 \u05DE\u05D9\u05E7\u05D5\u05DD resizeBox=\u05E9\u05E0\u05D4 \u05D2\u05D5\u05D3\u05DC \u05EA\u05D9\u05D1\u05D4 +result=Result zzz +results=Results zzz returnHome=\u05D7\u05D6\u05E8\u05D4 \u05DC\u05D3\u05E3 \u05D4\u05D4\u05EA\u05D7\u05DC\u05D4 \u05E9\u05DC Goobi rights=\u05D6\u05DB\u05D5\u05D9\u05D5\u05EA rights_Admin_Administrative_Tasks=\u05DE\u05E9\u05D9\u05DE\u05D5\u05EA \u05DE\u05E0\u05D4\u05DC\u05D9\u05D5\u05EA @@ -3221,6 +3290,7 @@ rights_Admin_Users_Allow_Switch=\u05D0\u05E4\u05E9\u05E8 \u05D4\u05D7\u05DC\u05E rights_Admin_Users_Change_Passwords=Reset passwords zzz rights_Admin_Vocabulary=Vocabularies - Records zzz rights_Admin_Vocabulary_Management=Vocabularies - Administration zzz +rights_Admin_config_file_editor=zzz rights_Statistics_CurrentUsers=\u05D4\u05E6\u05D2 \u05DE\u05E9\u05EA\u05DE\u05E9\u05D9\u05DD \u05E0\u05D5\u05DB\u05D7\u05D9\u05D9\u05DD rights_Statistics_CurrentUsers_Details=\u05D4\u05E6\u05D2 \u05E4\u05E8\u05D8\u05D9 \u05DE\u05E9\u05EA\u05DE\u05E9\u05D9\u05DD \u05E0\u05D5\u05DB\u05D7\u05D9\u05D9\u05DD rights_Statistics_General=\u05E1\u05D8\u05D8\u05D9\u05E1\u05D8\u05D9\u05E7\u05D5\u05EA \u05DB\u05DC\u05DC\u05D9\u05D5\u05EA @@ -3445,6 +3515,8 @@ templateProviderOfflineFileNotFound=\u05E1\u05E4\u05E7 \u05EA\u05D1\u05E0\u05D9\ templateProviderOfflineXMLmalformed=\u05E1\u05E4\u05E7 \u05EA\u05D1\u05E0\u05D9\u05EA \u05DE\u05D1\u05D5\u05E1\u05E1\u05EA-XML \u05E0\u05E4\u05DC, \u05E7\u05D5\u05D1\u05E5 \u05D4 XML \u05DC\u05E7\u05D5\u05D9 throughput=\u05EA\u05E4\u05D5\u05E7\u05D4 thumbnail=\u05EA\u05DE\u05D5\u05E0\u05D4 \u05DE\u05DE\u05D5\u05D6\u05E2\u05E8\u05EA \u05D4\u05DE\u05E7\u05D5\u05E9\u05E8\u05EA \u05DC\u05EA\u05DE\u05D5\u05E0\u05D4 \u05D4\u05D2\u05D3\u05D5\u05DC\u05D4 +ticketName=zzz +ticketType=zzz tiffHeader=\u05DB\u05D5\u05EA\u05E8\u05EA \u05E2\u05DC\u05D9\u05D5\u05E0\u05D4 \u05DE\u05E1\u05D5\u05D2 TIFF tifheaderdocumentname=\u05E9\u05DD \u05D4\u05DE\u05E1\u05DE\u05DA \u05DB\u05D5\u05EA\u05E8\u05EA \u05E2\u05DC\u05D9\u05D5\u05E0\u05D4 \u05DE\u05E1\u05D5\u05D2 TIFF tifheaderimagedescription=\u05EA\u05D9\u05D0\u05D5\u05E8 \u05EA\u05DE\u05D5\u05E0\u05D4 \u05DB\u05D5\u05EA\u05E8\u05EA \u05E2\u05DC\u05D9\u05D5\u05E0\u05D4 \u05DE\u05E1\u05D5\u05D2 TIFF @@ -3456,6 +3528,7 @@ timeoutWarningDMS=\u05D1\u05DE\u05D4\u05DC\u05DA \u05D4\u05D9\u05D9\u05E6\u05D5\ titel=\u05DB\u05D5\u05EA\u05E8\u05EA title=\u05E9\u05DD \u05EA\u05D4\u05DC\u05D9\u05DA titleEmpty=\u05E9\u05DD \u05D4\u05EA\u05D4\u05DC\u05D9\u05DA \u05E8\u05D9\u05E7 +title__named_entity_editor=zzz to=\u05E2\u05D3 toolentwicklung=intranda GmbH, G\u00F6ttingen too\u1E3EanyBatchesSelected=\u05E0\u05D1\u05D7\u05E8\u05D5 \u05D9\u05D5\u05EA\u05E8 \u05DE\u05D9\u05D3\u05D9 \u05D0\u05E6\u05D5\u05D5\u05EA \u05D1\u05DB\u05D3\u05D9 \u05DC\u05D4\u05E4\u05E2\u05D9\u05DC \u05E4\u05E2\u05D5\u05DC\u05D4 \u05D6\u05D5. diff --git a/src/main/resources/messages_nl.properties b/src/main/resources/messages_nl.properties index 71a714bae..81a4261d7 100644 --- a/src/main/resources/messages_nl.properties +++ b/src/main/resources/messages_nl.properties @@ -747,6 +747,7 @@ geheZuSeite=Ga naar de pagina zzz general=Algemeen zzz generalError=Er is een fout opgetreden. zzz generateValues=waarden genereren zzz +generated=(automatisch gegenereerd) zzz generieren=Genereer zzz gesamtesTrefferset=Totaal aantal hits zzz gesamtesTreffersetInMeinHomeverzeichnis=Upload de gehele hit-set naar mijn gebruikersmap zzz @@ -1298,6 +1299,7 @@ intranda_administration_showconfigfiles=Configuratiebestanden weergeven zzz intranda_administration_snippetCreator=Snippet Creator intranda_administration_vocabularies=zzz intranda_metadata_changeType=zzz +intranda_metadata_createStructureElements=zzz intranda_quartz_herisJob=zzz intranda_statistics_allStepsPerProject=Werkstappen per project zzz intranda_statistics_file_count=Bepaal het aantal bestanden zzz @@ -2284,10 +2286,14 @@ plugin_administration_archive_Number=Archiefnummer zzz plugin_administration_archive_Shelfmark=Handtekening(en) zzz plugin_administration_archive_accessrestrict=Toegangsvoorschriften zzz plugin_administration_archive_accruals=Nieuw binnengekomen zzz +plugin_administration_archive_accruals_head=zzz +plugin_administration_archive_accruals_p=zzz plugin_administration_archive_acqinfo=Bureau van afgifte zzz plugin_administration_archive_advancedSearch=zzz plugin_administration_archive_agencycode=Code van het agentschap zzz plugin_administration_archive_altformavail=Kopie\u00EBn of reproducties zzz +plugin_administration_archive_altformavail_head=zzz +plugin_administration_archive_altformavail_p=zzz plugin_administration_archive_appraisal=Taxatie en cassatie zzz plugin_administration_archive_area_access=Voorwaarden voor toegang en gebruik zzz plugin_administration_archive_area_content=Inhoud en interne orde zzz @@ -2322,6 +2328,8 @@ plugin_administration_archive_duplicateEadFile=zzz plugin_administration_archive_duplicateNode=zzz plugin_administration_archive_eadid=EAD ID zzz plugin_administration_archive_editorName=Redacteur zzz +plugin_administration_archive_extref=zzz +plugin_administration_archive_extrefhref=zzz plugin_administration_archive_font=Lettertype zzz plugin_administration_archive_langmaterial=Language | Scripts of material zzz plugin_administration_archive_loadDatabase=Begin met bewerken zzz @@ -2343,9 +2351,13 @@ plugin_administration_archive_nodeType_folder=Directory zzz plugin_administration_archive_nodeType_image=Afbeelding zzz plugin_administration_archive_nodeType_other=Ander document zzz plugin_administration_archive_nodeType_video=Videodocument zzz +plugin_administration_archive_nodelink=zzz plugin_administration_archive_oddnote=Verdere opmerkingen zzz plugin_administration_archive_originalsloc=Bewaarplaats van de originelen zzz +plugin_administration_archive_originalsloc_head=zzz +plugin_administration_archive_originalsloc_p=zzz plugin_administration_archive_origination=Naam van het kantoor van herkomst zzz +plugin_administration_archive_originationcorpname=zzz plugin_administration_archive_otherfindaid=Steun voor vondsten zzz plugin_administration_archive_person=Persoon zzz plugin_administration_archive_physdesc=Werkingssfeer zzz @@ -2359,6 +2371,9 @@ plugin_administration_archive_process_no_process=- Geen Goobi proces toegewezen plugin_administration_archive_recordGroupExists=zzz plugin_administration_archive_recordid=Record ID zzz plugin_administration_archive_removeInvalidProcessIds=zzz +plugin_administration_archive_repository=zzz +plugin_administration_archive_repositoryLabel=zzz +plugin_administration_archive_repositoryaddressline=zzz plugin_administration_archive_role=Roll zzz plugin_administration_archive_saveAndExit=Opslaan en afsluiten van archiefbestanden zzz plugin_administration_archive_scopecontent=Vorm en inhoud zzz @@ -2367,6 +2382,7 @@ plugin_administration_archive_selectionText=Selecteer eerst de archiefstukken wa plugin_administration_archive_separatedmaterial=Verwante vervormingseenheden zzz plugin_administration_archive_show_details=Toon details zzz plugin_administration_archive_suffix=zzz +plugin_administration_archive_titleproper=zzz plugin_administration_archive_unitdate=Periode van oorsprong zzz plugin_administration_archive_unitdatestructured=Gestructureerde datum van de eenheid zzz plugin_administration_archive_unitid=Eenheid ID zzz @@ -2858,6 +2874,10 @@ plugin_massupload_use_home_directory=Foto's uit mijn gebruikersmap laden zzz plugin_metadata_changeTemplate_changeTemplate=zzz plugin_metadata_changeTemplate_description=zzz plugin_metadata_changeTemplate_selectTemplate=zzz +plugin_metadata_createElements_generateElements=zzz +plugin_metadata_createElements_generateTitle=zzz +plugin_metadata_createElements_numberOfImages=zzz +plugin_metadata_createElements_selectType=zzz plugin_newspaperRecognizer_applyEveryIssue=Apply every issue zzz plugin_newspaperRecognizer_applyEverySecondIssue=Apply every second issue zzz plugin_newspaperRecognizer_applyEveryThirdIssue=Apply every third issue zzz @@ -2919,6 +2939,7 @@ plugin_opac_json_volume=Volume zzz plugin_replaceImages=Replace images zzz plugin_replaceimages_filename=Filename zzz plugin_replaceimages_image=Image zzz +plugin_replaceimages_orderLabel=Logical page number zzz plugin_replaceimages_remark=Remark zzz plugin_replaceimages_saveAndExit=Save and exit zzz plugin_restorearchivedimages_imagesRestored=De beelden werden met succes hersteld zzz @@ -3249,6 +3270,8 @@ requiredValue=is een verplicht veld, maar heeft geen waarde zzz rerender=Herberekenen van de statistieken zzz resetPosition=Reset positie zzz resizeBox=Aanpassen van de grootte van de doos zzz +result=Result zzz +results=Results zzz returnHome=Klik hier om terug te keren naar de Goobi homepage zzz rights=Rechten zzz rights_Admin_Administrative_Tasks=Administratieve taken zzz diff --git a/src/main/resources/messages_pt.properties b/src/main/resources/messages_pt.properties index 2af99ced4..2280817d5 100644 --- a/src/main/resources/messages_pt.properties +++ b/src/main/resources/messages_pt.properties @@ -747,6 +747,7 @@ geheZuSeite=Ir para a p\u00E1gina zzz general=Geral zzz generalError=Ocorreu um erro. zzz generateValues=gerar valores zzz +generated=(gerado automaticamente) zzz generieren=Gerar zzz gesamtesTrefferset=Conjunto de acerto total zzz gesamtesTreffersetInMeinHomeverzeichnis=Carregar todo o conjunto de acertos para o meu direct\u00F3rio de utilizadores zzz @@ -1298,6 +1299,7 @@ intranda_administration_showconfigfiles=Exibir arquivos de configura\u00E7\u00E3 intranda_administration_snippetCreator=Snippet Creator intranda_administration_vocabularies=zzz intranda_metadata_changeType=zzz +intranda_metadata_createStructureElements=zzz intranda_quartz_herisJob=zzz intranda_statistics_allStepsPerProject=Etapas de trabalho por projeto zzz intranda_statistics_file_count=Determinar o n\u00FAmero de ficheiros zzz @@ -2284,10 +2286,14 @@ plugin_administration_archive_Number=N\u00FAmero de arquivo zzz plugin_administration_archive_Shelfmark=Assinatura(\u00F5es) zzz plugin_administration_archive_accessrestrict=Regulamentos de acesso zzz plugin_administration_archive_accruals=Rec\u00E9m-chegados zzz +plugin_administration_archive_accruals_head=zzz +plugin_administration_archive_accruals_p=zzz plugin_administration_archive_acqinfo=Gabinete de emiss\u00E3o zzz plugin_administration_archive_advancedSearch=zzz plugin_administration_archive_agencycode=C\u00F3digo da ag\u00EAncia zzz plugin_administration_archive_altformavail=C\u00F3pias ou reprodu\u00E7\u00F5es zzz +plugin_administration_archive_altformavail_head=zzz +plugin_administration_archive_altformavail_p=zzz plugin_administration_archive_appraisal=Valoriza\u00E7\u00E3o e cassa\u00E7\u00E3o zzz plugin_administration_archive_area_access=Condi\u00E7\u00F5es de acesso e utiliza\u00E7\u00E3o zzz plugin_administration_archive_area_content=Conte\u00FAdo e ordem interna zzz @@ -2322,6 +2328,8 @@ plugin_administration_archive_duplicateEadFile=zzz plugin_administration_archive_duplicateNode=zzz plugin_administration_archive_eadid=EAD ID zzz plugin_administration_archive_editorName=Editor zzz +plugin_administration_archive_extref=zzz +plugin_administration_archive_extrefhref=zzz plugin_administration_archive_font=Fonte zzz plugin_administration_archive_langmaterial=Language | Scripts of material zzz plugin_administration_archive_loadDatabase=Comece a editar zzz @@ -2343,9 +2351,13 @@ plugin_administration_archive_nodeType_folder=Direct\u00F3rio zzz plugin_administration_archive_nodeType_image=Imagem zzz plugin_administration_archive_nodeType_other=Outro documento zzz plugin_administration_archive_nodeType_video=Documento em v\u00EDdeo zzz +plugin_administration_archive_nodelink=zzz plugin_administration_archive_oddnote=Outras observa\u00E7\u00F5es zzz plugin_administration_archive_originalsloc=Local de armazenamento dos originais zzz +plugin_administration_archive_originalsloc_head=zzz +plugin_administration_archive_originalsloc_p=zzz plugin_administration_archive_origination=Nome do escrit\u00F3rio de proveni\u00EAncia zzz +plugin_administration_archive_originationcorpname=zzz plugin_administration_archive_otherfindaid=Ajudas \u00E0 procura zzz plugin_administration_archive_person=Person zzz plugin_administration_archive_physdesc=\u00C2mbito zzz @@ -2359,6 +2371,9 @@ plugin_administration_archive_process_no_process=- Nenhum processo Goobi atribu\ plugin_administration_archive_recordGroupExists=zzz plugin_administration_archive_recordid=Identifica\u00E7\u00E3o do registo zzz plugin_administration_archive_removeInvalidProcessIds=zzz +plugin_administration_archive_repository=zzz +plugin_administration_archive_repositoryLabel=zzz +plugin_administration_archive_repositoryaddressline=zzz plugin_administration_archive_role=Rolo zzz plugin_administration_archive_saveAndExit=Save and exit record group zzz plugin_administration_archive_scopecontent=Forma e conte\u00FAdo zzz @@ -2367,6 +2382,7 @@ plugin_administration_archive_selectionText=Por favor, seleccione primeiro os ar plugin_administration_archive_separatedmaterial=Unidades de distor\u00E7\u00E3o relacionadas zzz plugin_administration_archive_show_details=Mostrar detalhes zzz plugin_administration_archive_suffix=zzz +plugin_administration_archive_titleproper=zzz plugin_administration_archive_unitdate=Per\u00EDodo de origem zzz plugin_administration_archive_unitdatestructured=Data estruturada da unidade zzz plugin_administration_archive_unitid=ID da unidade zzz @@ -2858,6 +2874,10 @@ plugin_massupload_use_home_directory=Carregar fotos do meu diret\u00F3rio de usu plugin_metadata_changeTemplate_changeTemplate=zzz plugin_metadata_changeTemplate_description=zzz plugin_metadata_changeTemplate_selectTemplate=zzz +plugin_metadata_createElements_generateElements=zzz +plugin_metadata_createElements_generateTitle=zzz +plugin_metadata_createElements_numberOfImages=zzz +plugin_metadata_createElements_selectType=zzz plugin_newspaperRecognizer_applyEveryIssue=Apply every issue zzz plugin_newspaperRecognizer_applyEverySecondIssue=Apply every second issue zzz plugin_newspaperRecognizer_applyEveryThirdIssue=Apply every third issue zzz @@ -2919,6 +2939,7 @@ plugin_opac_json_volume=Volume zzz plugin_replaceImages=Replace images zzz plugin_replaceimages_filename=Filename zzz plugin_replaceimages_image=Image zzz +plugin_replaceimages_orderLabel=Logical page number zzz plugin_replaceimages_remark=Remark zzz plugin_replaceimages_saveAndExit=Save and exit zzz plugin_restorearchivedimages_imagesRestored=As imagens foram restauradas com sucesso zzz @@ -3249,6 +3270,8 @@ requiredValue=\u00E9 um campo obrigat\u00F3rio, mas n\u00E3o tem valor zzz rerender=Estat\u00EDsticas recalculadas zzz resetPosition=Posi\u00E7\u00E3o de reinicializa\u00E7\u00E3o zzz resizeBox=Ajustar o tamanho da caixa zzz +result=Result zzz +results=Results zzz returnHome=Clique aqui para voltar para a p\u00E1gina inicial do Goobi zzz rights=Direitos zzz rights_Admin_Administrative_Tasks=Tarefas administrativas zzz diff --git a/src/main/resources/template.properties b/src/main/resources/template.properties index d152fa862..e62446a11 100644 --- a/src/main/resources/template.properties +++ b/src/main/resources/template.properties @@ -27,7 +27,7 @@ goobiFolder=/opt/digiverso/goobi/ # parent folder for home directories, default is goobiFolder + users/ #dir_Users=/home/ -#folder for debugging files, can be used by opac beautifier +#folder for debugging files, can be used by opac beautifier #debugFolder= # folder for the process log @@ -40,7 +40,7 @@ goobiFolder=/opt/digiverso/goobi/ # path for swapping, this could for example be /tmp/unused/ #swapPath= -# naming rule for master folder +# naming rule for master folder #process.folder.images.master={processtitle}_master # naming rule for media folder @@ -117,11 +117,11 @@ showStatisticsOnStartPage=true #show button to link into home directory #ui_showFolderLinkingInProcessList=false -#display confirmation dialogue when link into home directory is set from process list +#display confirmation dialogue when link into home directory is set from process list #confirmLinking=false # show/hide menu entry for config editor. It is useful to hide the area if configuration files are managed outside the usual folder (in s3 buckets, via docker image, in openshift) -#showConfigEditor=true +showConfigEditor=true # A button to reimport already exported content can be activated #renderReimport=false @@ -187,14 +187,14 @@ ldap_use=false #SsoParameterType=header # The name of the HTTP header field to login #SsoHeaderName=Casauthn -# Enables a logout page for +# Enables a logout page for #showSSOLogoutPage=false # ----------------------------------- # external users # ----------------------------------- -# enable an additional login area for external users, it allows a different UI and a self registration +# enable an additional login area for external users, it allows a different UI and a self registration #EnableExternalUserLogin=false # assign the self registered users to this institution, this could be "goobi" for example @@ -400,7 +400,7 @@ useLocalSQS=false # initialise all sub elements in Mets editor to assign default values, default value is true MetsEditorEnableDefaultInitialisation=true -# create pagination when mets editor is opened +# create pagination when mets editor is opened #MetsEditorEnableImageAssignment=true # use special pagination type for automatic default pagination (uncounted, roman, arabic) @@ -409,7 +409,7 @@ MetsEditorDefaultPagination=uncounted # configure the locking time for mets editor timeout in ms, default is 30 minutes MetsEditorLockingTime=1800000 -# use external ocr for text in mets editor or use existing files +# use external ocr for text in mets editor or use existing files #MetsEditorUseExternalOCR=false # The number of backups can be set here. 0 means that no backups are created @@ -422,16 +422,16 @@ numberOfMetaBackups=25 # OCR-Button fuer ausgewaehltes Strukturelement anzeigen showOcrButton=false +# if true, the alto editor within the metadata editor allows setting named entity tags for words the alto file +showNamedEntityEditor=false + # Display the METS editor area for manipulation of the image set MetsEditorDisplayFileManipulation=false -# Display archived folders -MetsEditorShowArchivedFolder=false - # display/hide metadata popup in structure tree #MetsEditorShowMetadataPopup=true -# use a maximum of characters to display titles in the left part of mets editor, the default value is 0 (everything is displayed) +# use a maximum of characters to display titles in the left part of mets editor, the default value is 0 (everything is displayed) MetsEditorMaxTitleLength=0 # ----------------------------------- @@ -458,7 +458,7 @@ ImagePrefix=\\w+ #ImagePrefix=\\d{8} #ImagePrefix=.+ -# define owner of images, when read access is provided. Default is root user +# define owner of images, when read access is provided. Default is root user #UserForImageReading=root # This can be set to true to use image thumbnails @@ -524,7 +524,7 @@ ExportExiftoolPath=/usr/bin/exiftool # set if Master-Images-Folder 'orig_' should be used at all useOrigFolder=true -# if this parameter is missing or 'false' the old export mechanism is used, otherwise there is no timelimit for export +# if this parameter is missing or 'false' the old export mechanism is used, otherwise there is no timelimit for export exportWithoutTimeLimit=true # Validate images on mets export. Default value is true @@ -551,7 +551,7 @@ ExportInTemporaryFile=false # Use UUID for each file id instead of incremental numbers ExportCreateUUID=false -# Create premis elements for technical metadata for each exorted file +# Create premis elements for technical metadata for each exorted file ExportCreateTechnicalMetadata=false # Define here if in the automatic export images shall be exported too or not diff --git a/src/main/webapp/resources/compositesPG/formInputCalendar.xhtml b/src/main/webapp/resources/compositesPG/formInputCalendar.xhtml index fac175696..32b0d75b1 100644 --- a/src/main/webapp/resources/compositesPG/formInputCalendar.xhtml +++ b/src/main/webapp/resources/compositesPG/formInputCalendar.xhtml @@ -18,37 +18,89 @@ - - + + + + + - + + +
@@ -64,10 +116,35 @@
- - - - + + + + + + + + + + + +
diff --git a/src/main/webapp/uii/administration.xhtml b/src/main/webapp/uii/administration.xhtml index 025baa74b..6a670379e 100644 --- a/src/main/webapp/uii/administration.xhtml +++ b/src/main/webapp/uii/administration.xhtml @@ -23,6 +23,7 @@ or AdministrationForm.administrationPlugin.title eq 'd-plugin_kb_import-dashboard' or AdministrationForm.administrationPlugin.title eq 'intranda_administration_showconfigfiles' or AdministrationForm.administrationPlugin.title eq 'intranda_administration_copymasteranchor' + or AdministrationForm.administrationPlugin.title eq 'intranda_administration_restorearchivedimagefolders' ? '/uii/templatePG/templatePG.html' : '/uii/template/template.html'}" xmlns:x="http://myfaces.apache.org/tomahawk" xmlns:intranda="http://xmlns.jcp.org/jsf/composite/compositesPG" diff --git a/src/main/webapp/uii/guiPluginNew.xhtml b/src/main/webapp/uii/guiPluginNew.xhtml new file mode 100644 index 000000000..f1ec44369 --- /dev/null +++ b/src/main/webapp/uii/guiPluginNew.xhtml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/uii/includes/metseditor/metseditor_pagination.xhtml b/src/main/webapp/uii/includes/metseditor/metseditor_pagination.xhtml index 51233e40a..78fc16203 100644 --- a/src/main/webapp/uii/includes/metseditor/metseditor_pagination.xhtml +++ b/src/main/webapp/uii/includes/metseditor/metseditor_pagination.xhtml @@ -117,8 +117,11 @@ execute="@this" render="mainimagearea" /> + name="data-toggle" + value="tooltip" /> +
diff --git a/src/main/webapp/uii/process_all.xhtml b/src/main/webapp/uii/process_all.xhtml index 7eecb00e4..9e279cd37 100644 --- a/src/main/webapp/uii/process_all.xhtml +++ b/src/main/webapp/uii/process_all.xhtml @@ -420,7 +420,7 @@ value="#{item.batch.batchId}" rendered="#{item.batch != null}" /> @@ -1333,12 +1333,21 @@