From 06be7e7ccd33b362a148309ce0a9e3a48bfe5427 Mon Sep 17 00:00:00 2001 From: Milos Popovic Date: Tue, 7 Apr 2026 15:26:58 +0200 Subject: [PATCH 01/10] Fixed head titles --- .../webapp/controller/freemarker/HomePageController.java | 3 ++- .../webapp/templates/freemarker/page/partials/title.ftl | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/HomePageController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/HomePageController.java index 6f59dbd429..6682e8a858 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/HomePageController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/HomePageController.java @@ -53,7 +53,8 @@ protected ResponseValues processRequest(VitroRequest vreq) throws InstantiationE }*/ body.put("dataServiceUrlVClassesForVClassGroup", UrlBuilder.getUrl("/dataservice?getVClassesForVClassGroup=1&classgroupUri=")); body.put("geoFocusMapsEnabled", getGeoFocusMapsFlag(vreq)); - + body.put("title","Home"); + return new TemplateResponseValues(BODY_TEMPLATE, body); } diff --git a/webapp/src/main/webapp/templates/freemarker/page/partials/title.ftl b/webapp/src/main/webapp/templates/freemarker/page/partials/title.ftl index 6170814a42..76516e321c 100644 --- a/webapp/src/main/webapp/templates/freemarker/page/partials/title.ftl +++ b/webapp/src/main/webapp/templates/freemarker/page/partials/title.ftl @@ -1,3 +1,7 @@ <#-- $This file is distributed under the terms of the license in LICENSE$ --> -${(title?html)!siteName!} +<#if title?? && title?has_content> + ${title?html} | ${siteName} +<#else> + ${siteName} + \ No newline at end of file From 6a089e995196b66865528b6018606bf0e3540ca8 Mon Sep 17 00:00:00 2001 From: Milos Popovic Date: Tue, 7 Apr 2026 15:30:06 +0200 Subject: [PATCH 02/10] Added option to read title for edit pages --- .../templatemodels/edit/EditConfigurationTemplateModel.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java index 853ef79664..204f91a61a 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java @@ -135,6 +135,11 @@ private String getSelectedValue(String field) { } public String getPageTitle() { + String title = editConfig.getNewResources().get("pageTitle"); + if (title != null && !title.isEmpty()) { + return title; + } + String pageTitle = i18n.text("edit_page_title"); return pageTitle != null ? pageTitle : "Edit"; } From ce4e6dcd46f0303976a1142ce4e2755b3fd9293d Mon Sep 17 00:00:00 2001 From: Milos Popovic Date: Tue, 7 Apr 2026 15:36:48 +0200 Subject: [PATCH 03/10] Capitalization group names --- .../partials/individual/individual-property-group-tabs.ftl | 2 +- .../main/webapp/templates/freemarker/lib/lib-properties.ftl | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/individual-property-group-tabs.ftl b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/individual-property-group-tabs.ftl index 8cb8721040..55fe34aedf 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/individual-property-group-tabs.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/individual-property-group-tabs.ftl @@ -50,7 +50,7 @@ <#if groupName?has_content> <#--the function replaces spaces in the name with underscores, also called for the property group menu--> <#assign groupNameHtmlId = p.createPropertyGroupHtmlId(groupName) > - + <#else> diff --git a/webapp/src/main/webapp/templates/freemarker/lib/lib-properties.ftl b/webapp/src/main/webapp/templates/freemarker/lib/lib-properties.ftl index ce8c110fb7..cf4699ecf4 100644 --- a/webapp/src/main/webapp/templates/freemarker/lib/lib-properties.ftl +++ b/webapp/src/main/webapp/templates/freemarker/lib/lib-properties.ftl @@ -348,3 +348,7 @@ name will be used as the label. --> <#local groupName = groupName?replace("&", "-and-")> <#return groupName> + +<#function capitalizeGroupName propertyGroupName> + <#return propertyGroupName?cap_first> + From 3ad9e56a9f9fde263b1b0f2fb70a3680305e4d9e Mon Sep 17 00:00:00 2001 From: Milos Popovic Date: Tue, 7 Apr 2026 15:39:17 +0200 Subject: [PATCH 04/10] Individual Uri RDF labels --- .../i18n/en_US/interface-i18n/firsttime/vitro_UiLabel.ttl | 8 ++++++++ webapp/src/main/webapp/js/individual/individualUriRdf.js | 6 +++--- .../freemarker/body/individual/individual-vitro.ftl | 4 +++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/home/src/main/resources/rdf/i18n/en_US/interface-i18n/firsttime/vitro_UiLabel.ttl b/home/src/main/resources/rdf/i18n/en_US/interface-i18n/firsttime/vitro_UiLabel.ttl index 5130b36336..449364700b 100644 --- a/home/src/main/resources/rdf/i18n/en_US/interface-i18n/firsttime/vitro_UiLabel.ttl +++ b/home/src/main/resources/rdf/i18n/en_US/interface-i18n/firsttime/vitro_UiLabel.ttl @@ -3062,6 +3062,14 @@ uil-data:share_profile_uri.Vitro uil:hasKey "share_profile_uri" ; uil:hasPackage "Vitro-languages" . +uil-data:uri_input_label.Vitro + rdf:type owl:NamedIndividual ; + rdf:type uil:UILabel ; + rdfs:label "URI Link"@en-US ; + uil:hasApp "Vitro" ; + uil:hasKey "uri_input_label" ; + uil:hasPackage "Vitro-languages" . + uil-data:no_html_specified.Vitro rdf:type owl:NamedIndividual ; rdf:type uil:UILabel ; diff --git a/webapp/src/main/webapp/js/individual/individualUriRdf.js b/webapp/src/main/webapp/js/individual/individualUriRdf.js index 9cb436a05b..d42a058543 100644 --- a/webapp/src/main/webapp/js/individual/individualUriRdf.js +++ b/webapp/src/main/webapp/js/individual/individualUriRdf.js @@ -8,7 +8,7 @@ $(document).ready(function(){ { querySelector: "span#iconControlsLeftSide > img#uriIcon", data: { - title: '
' + i18nStringsUriRdf.shareProfileUri + '
' + i18nStringsUriRdf.viewRDFProfile + '
', + title: '
' + i18nStringsUriRdf.shareProfileUri + '
' + i18nStringsUriRdf.viewRDFProfile + '
', trigger: "click", customClass: "vitroTooltip", placements: ['top', 'right', 'bottom', 'left'], @@ -18,7 +18,7 @@ $(document).ready(function(){ { querySelector: "span#iconControlsVitro > img#uriIcon", data: { - title: '
' + i18nStringsUriRdf.shareProfileUri + '
' + i18nStringsUriRdf.viewRDFProfile + '
', + title: '
' + i18nStringsUriRdf.shareProfileUri + '
' + i18nStringsUriRdf.viewRDFProfile + '
', trigger: "click", customClass: "vitroTooltip", placements: ['top', 'right', 'bottom', 'left'], @@ -28,7 +28,7 @@ $(document).ready(function(){ { querySelector: "span#iconControlsRightSide > img#uriIcon", data: { - title: '
' + i18nStringsUriRdf.shareProfileUri + '
' + i18nStringsUriRdf.viewRDFProfile + '
', + title: '
' + i18nStringsUriRdf.shareProfileUri + '
' + i18nStringsUriRdf.viewRDFProfile + '
', trigger: "click", customClass: "vitroTooltip", placements: ['top', 'left', 'bottom', 'right'], diff --git a/webapp/src/main/webapp/templates/freemarker/body/individual/individual-vitro.ftl b/webapp/src/main/webapp/templates/freemarker/body/individual/individual-vitro.ftl index 4c7d6a09cb..ab948a0a91 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/individual/individual-vitro.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/individual/individual-vitro.ftl @@ -91,7 +91,9 @@ var i18nStringsUriRdf = { shareProfileUri: '${i18n().share_profile_uri?js_string}', viewRDFProfile: '${i18n().view_profile_in_rdf?js_string}', - closeString: '${i18n().close?js_string}' + closeString: '${i18n().close?js_string}', + uriInputString: '${i18n().uri_input_label?js_string}' + }; var i18nStrings = { displayLess: '${i18n().display_less?js_string}', From 2966de4f92a31f7e7b9eed6728ef744aec0fed6a Mon Sep 17 00:00:00 2001 From: Milos Popovic Date: Tue, 7 Apr 2026 15:43:07 +0200 Subject: [PATCH 05/10] Individual property group capitalizeGroupName labels --- .../partials/individual/individual-property-group-tabs.ftl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/individual-property-group-tabs.ftl b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/individual-property-group-tabs.ftl index 55fe34aedf..c5b2d7d2ef 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/partials/individual/individual-property-group-tabs.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/partials/individual/individual-property-group-tabs.ftl @@ -20,11 +20,11 @@ <#assign groupNameHtmlId = "${i18n().properties}" > <#if tabCount = 1 > -
  • ${groupName}
  • +
  • ${p.capitalizeGroupName(groupName)}
  •  
  • <#assign tabCount = 2> <#else> -
  • ${groupName}
  • +
  • ${p.capitalizeGroupName(groupName)}
  •  
  • From 0e443420b677391ce9f2f6d00fc959233e296f69 Mon Sep 17 00:00:00 2001 From: Milos Popovic Date: Tue, 7 Apr 2026 15:47:20 +0200 Subject: [PATCH 06/10] Person position title --- .../controller/EditRequestDispatchController.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java index 7cfc2efb00..3608692547 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java @@ -44,6 +44,8 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditSubmissionUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.MultiValueEditSubmission; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.EditConfigurationGenerator; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; +import edu.cornell.mannlib.vitro.webapp.i18n.I18nBundle; import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.edit.EditConfigurationTemplateModel; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.edit.MultiValueEditSubmissionTemplateModel; @@ -268,6 +270,15 @@ private EditConfigurationVTwo setupEditConfiguration(String editConfGeneratorNam editConfig.setEditKey(editKey); + I18nBundle i18n = I18n.bundle(vreq); + String title = i18n.text("manage_positions"); + Individual subject = vreq.getWebappDaoFactory().getIndividualDao().getIndividualByURI(editConfig.getSubjectUri()); + if( subject != null && subject.getName() != null ){ + title += " - " + subject.getName(); + } + editConfig.addNewResource("pageTitle", title); + + //put edit configuration in session so it can be accessed on form submit. EditConfigurationVTwo.putConfigInSession(editConfig, session); return editConfig; From f1513831133056210122a08a3dcb327a5e2c2f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Popovi=C4=87?= Date: Tue, 7 Apr 2026 18:06:59 +0200 Subject: [PATCH 07/10] Update focus on show less --- webapp/src/main/webapp/js/individual/moreLessController.js | 1 + 1 file changed, 1 insertion(+) diff --git a/webapp/src/main/webapp/js/individual/moreLessController.js b/webapp/src/main/webapp/js/individual/moreLessController.js index b2a0103d5a..da9d18034b 100644 --- a/webapp/src/main/webapp/js/individual/moreLessController.js +++ b/webapp/src/main/webapp/js/individual/moreLessController.js @@ -26,6 +26,7 @@ $(document).ready(function(){ $itemContainer.hide(); $(this).attr('href', '#show more content'); $(this).text(i18nStrings.displayMoreEllipsis); + $(this).focus(); togglePropDisplay.showMore($toggleLink, $itemContainer); return false; }); From bf83b16f4683189182f68f765e77eeee3aece076 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Popovi=C4=87?= Date: Tue, 7 Apr 2026 18:08:02 +0200 Subject: [PATCH 08/10] Update focus, cusom form autocomplete --- .../freemarker/edit/forms/js/customFormWithAutocomplete.js | 1 + 1 file changed, 1 insertion(+) diff --git a/webapp/src/main/webapp/templates/freemarker/edit/forms/js/customFormWithAutocomplete.js b/webapp/src/main/webapp/templates/freemarker/edit/forms/js/customFormWithAutocomplete.js index 7328e5d0be..6fea1e4529 100644 --- a/webapp/src/main/webapp/templates/freemarker/edit/forms/js/customFormWithAutocomplete.js +++ b/webapp/src/main/webapp/templates/freemarker/edit/forms/js/customFormWithAutocomplete.js @@ -557,6 +557,7 @@ var customForm = { // boolean controls whether the acSelector value gets cleared. var clearAcSelectorVal = true; + let focus = null; if ( $(selectedObj).attr('id') == "typeSelector" ) { $acSelectionObj = customForm.acSelections[$(selectedObj).attr('acGroupName')]; From bfaa1921f0b067813dcdeee81f69d37b8bc9e2b1 Mon Sep 17 00:00:00 2001 From: Milos Popovic Date: Fri, 29 May 2026 11:22:27 +0200 Subject: [PATCH 09/10] Fixed html title for individual page --- .../controller/EditRequestDispatchController.java | 14 +++----------- .../edit/EditConfigurationTemplateModel.java | 9 ++++++++- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java index 3608692547..88409b636f 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java @@ -44,8 +44,6 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditSubmissionUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.MultiValueEditSubmission; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.EditConfigurationGenerator; -import edu.cornell.mannlib.vitro.webapp.i18n.I18n; -import edu.cornell.mannlib.vitro.webapp.i18n.I18nBundle; import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.edit.EditConfigurationTemplateModel; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.edit.MultiValueEditSubmissionTemplateModel; @@ -269,15 +267,9 @@ private EditConfigurationVTwo setupEditConfiguration(String editConfGeneratorNam String editKey = EditConfigurationUtils.getEditKey(vreq); editConfig.setEditKey(editKey); - - I18nBundle i18n = I18n.bundle(vreq); - String title = i18n.text("manage_positions"); - Individual subject = vreq.getWebappDaoFactory().getIndividualDao().getIndividualByURI(editConfig.getSubjectUri()); - if( subject != null && subject.getName() != null ){ - title += " - " + subject.getName(); - } - editConfig.addNewResource("pageTitle", title); - + // Browser/tab title comes from EditConfigurationTemplateModel#getPageTitle: + // optional editConfig newResource "pageTitle" (set by a generator if needed), + // otherwise i18n key edit_page_title with optional subject name suffix. //put edit configuration in session so it can be accessed on form submit. EditConfigurationVTwo.putConfigInSession(editConfig, session); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java index 204f91a61a..86daa92495 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/edit/EditConfigurationTemplateModel.java @@ -141,7 +141,14 @@ public String getPageTitle() { } String pageTitle = i18n.text("edit_page_title"); - return pageTitle != null ? pageTitle : "Edit"; + if (StringUtils.isBlank(pageTitle)) { + pageTitle = "Edit"; + } + Individual subject = EditConfigurationUtils.getSubjectIndividual(vreq); + if (subject != null && StringUtils.isNotBlank(subject.getName())) { + pageTitle = pageTitle + " - " + subject.getName(); + } + return pageTitle; } private void setFormTitle() { From 5e9e1484d1d1c5ef239ee0deca6f3017f86b8857 Mon Sep 17 00:00:00 2001 From: Milos Popovic Date: Fri, 29 May 2026 11:23:02 +0200 Subject: [PATCH 10/10] Added missing EOF new line --- .../main/webapp/templates/freemarker/page/partials/title.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/src/main/webapp/templates/freemarker/page/partials/title.ftl b/webapp/src/main/webapp/templates/freemarker/page/partials/title.ftl index 76516e321c..fee75d741c 100644 --- a/webapp/src/main/webapp/templates/freemarker/page/partials/title.ftl +++ b/webapp/src/main/webapp/templates/freemarker/page/partials/title.ftl @@ -4,4 +4,4 @@ ${title?html} | ${siteName} <#else> ${siteName} - \ No newline at end of file +