From cedf17e1e654430ec39023c012337d0191d7d52b Mon Sep 17 00:00:00 2001 From: Stefan Wolff Date: Thu, 22 Sep 2016 15:43:51 +0200 Subject: [PATCH 1/6] fix hard coded label "more..." --- .../freemarker/IndividualListController.java | 31 ++++++++++--------- .../webapp/controller/json/JsonServlet.java | 4 +-- .../SearchIndividualsDataGetter.java | 2 +- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java index 728a4c77c..8290df18f 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualListController.java @@ -22,6 +22,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.Res import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.individuallist.IndividualListResults; import edu.cornell.mannlib.vitro.webapp.dao.IndividualDao; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; import edu.cornell.mannlib.vitro.webapp.modules.searchEngine.SearchEngineException; import edu.cornell.mannlib.vitro.webapp.modules.searchEngine.SearchQuery; import edu.cornell.mannlib.vitro.webapp.utils.searchengine.SearchQueryUtils; @@ -94,7 +95,7 @@ public class IndividualListController extends FreemarkerHttpServlet { vclass.getURI(), page, alpha, - vreq.getWebappDaoFactory().getIndividualDao()); + vreq); body.putAll(vcResults.asFreemarkerMap()); List inds = vcResults.getEntities(); @@ -148,12 +149,12 @@ public class IndividualListController extends FreemarkerHttpServlet { return SearchQueryUtils.getPageParameter(request); } - public static IndividualListResults getResultsForVClass(String vclassURI, int page, String alpha, IndividualDao indDao) + public static IndividualListResults getResultsForVClass(String vclassURI, int page, String alpha, VitroRequest vreq) throws SearchException{ try{ List classUris = Collections.singletonList(vclassURI); - IndividualListQueryResults results = buildAndExecuteVClassQuery(classUris, alpha, page, INDIVIDUALS_PER_PAGE, indDao); - return getResultsForVClassQuery(results, page, INDIVIDUALS_PER_PAGE, alpha); + IndividualListQueryResults results = buildAndExecuteVClassQuery(classUris, alpha, page, INDIVIDUALS_PER_PAGE, vreq.getWebappDaoFactory().getIndividualDao()); + return getResultsForVClassQuery(results, page, INDIVIDUALS_PER_PAGE, alpha, vreq); } catch (SearchEngineException e) { String msg = "An error occurred retrieving results for vclass query"; log.error(msg, e); @@ -165,31 +166,31 @@ public class IndividualListController extends FreemarkerHttpServlet { } } - public static IndividualListResults getResultsForVClassIntersections(List vclassURIs, int page, int pageSize, String alpha, IndividualDao indDao) { + public static IndividualListResults getResultsForVClassIntersections(List vclassURIs, int page, int pageSize, String alpha, VitroRequest vreq) { try{ - IndividualListQueryResults results = buildAndExecuteVClassQuery(vclassURIs, alpha, page, pageSize, indDao); - return getResultsForVClassQuery(results, page, pageSize, alpha); + IndividualListQueryResults results = buildAndExecuteVClassQuery(vclassURIs, alpha, page, pageSize, vreq.getWebappDaoFactory().getIndividualDao()); + return getResultsForVClassQuery(results, page, pageSize, alpha, vreq); } catch(Throwable th) { log.error("Error retrieving individuals corresponding to intersection multiple classes." + vclassURIs.toString(), th); return IndividualListResults.EMPTY; } } - public static IndividualListResults getRandomResultsForVClass(String vclassURI, int page, int pageSize, IndividualDao indDao) { + public static IndividualListResults getRandomResultsForVClass(String vclassURI, int page, int pageSize, VitroRequest vreq) { try{ List classUris = Collections.singletonList(vclassURI); - IndividualListQueryResults results = buildAndExecuteRandomVClassQuery(classUris, page, pageSize, indDao); - return getResultsForVClassQuery(results, page, pageSize, ""); + IndividualListQueryResults results = buildAndExecuteRandomVClassQuery(classUris, page, pageSize, vreq.getWebappDaoFactory().getIndividualDao()); + return getResultsForVClassQuery(results, page, pageSize, "", vreq); } catch(Throwable th) { log.error("An error occurred retrieving random results for vclass query", th); return IndividualListResults.EMPTY; } } - private static IndividualListResults getResultsForVClassQuery(IndividualListQueryResults results, int page, int pageSize, String alpha) { + private static IndividualListResults getResultsForVClassQuery(IndividualListQueryResults results, int page, int pageSize, String alpha, VitroRequest vreq) { long hitCount = results.getHitCount(); if ( hitCount > pageSize ){ - return new IndividualListResults(hitCount, results.getIndividuals(), alpha, true, makePagesList(hitCount, pageSize, page)); + return new IndividualListResults(hitCount, results.getIndividuals(), alpha, true, makePagesList(hitCount, pageSize, page, vreq)); }else{ return new IndividualListResults(hitCount, results.getIndividuals(), alpha, false, Collections.emptyList()); } @@ -221,7 +222,7 @@ public class IndividualListController extends FreemarkerHttpServlet { } - public static List makePagesList( long size, int pageSize, int selectedPage ) { + public static List makePagesList( long size, int pageSize, int selectedPage , VitroRequest vreq) { List records = new ArrayList( MAX_PAGES + 1 ); int requiredPages = (int) (size/pageSize) ; @@ -234,7 +235,7 @@ public class IndividualListController extends FreemarkerHttpServlet { for(int page = 1; page < requiredPages && page <= MAX_PAGES ; page++ ){ records.add( new PageRecord( "page=" + page, Integer.toString(page), Integer.toString(page), selectedPage == page ) ); } - records.add( new PageRecord( "page="+ (MAX_PAGES+1), Integer.toString(MAX_PAGES+1), "more...", false)); + records.add( new PageRecord( "page="+ (MAX_PAGES+1), Integer.toString(MAX_PAGES+1), I18n.text(vreq, "paging_link_more"), false)); }else if( requiredPages > MAX_PAGES && selectedPage+1 > MAX_PAGES && selectedPage < requiredPages - MAX_PAGES){ //the selected pages is in the middle of the list of page int startPage = selectedPage - MAX_PAGES / 2; @@ -242,7 +243,7 @@ public class IndividualListController extends FreemarkerHttpServlet { for(int page = startPage; page <= endPage ; page++ ){ records.add( new PageRecord( "page=" + page, Integer.toString(page), Integer.toString(page), selectedPage == page ) ); } - records.add( new PageRecord( "page="+ (endPage+1), Integer.toString(endPage+1), "more...", false)); + records.add( new PageRecord( "page="+ (endPage+1), Integer.toString(endPage+1), I18n.text(vreq, "paging_link_more"), false)); }else if ( requiredPages > MAX_PAGES && selectedPage > requiredPages - MAX_PAGES ){ //the selected page is in the end of the list int startPage = requiredPages - MAX_PAGES; diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/json/JsonServlet.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/json/JsonServlet.java index c479f5a09..a1c9f27e3 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/json/JsonServlet.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/json/JsonServlet.java @@ -109,7 +109,7 @@ public class JsonServlet extends VitroHttpServlet { vclassURIs, page, INDIVIDUALS_PER_PAGE, alpha, - vreq.getWebappDaoFactory().getIndividualDao()); + vreq); } catch(Exception ex) { log.error("Error in retrieval of search results for VClass " + vclassURIs.toString(), ex); return IndividualListResults.EMPTY; @@ -144,7 +144,7 @@ public class JsonServlet extends VitroHttpServlet { vclassURI, page, pageSize, - vreq.getWebappDaoFactory().getIndividualDao()); + vreq); } catch(Exception ex) { log.error("Error in retrieval of search results for VClass " + vclassURI, ex); return IndividualListResults.EMPTY; diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SearchIndividualsDataGetter.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SearchIndividualsDataGetter.java index 739b9f309..b0bfed510 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SearchIndividualsDataGetter.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/utils/dataGetter/SearchIndividualsDataGetter.java @@ -177,7 +177,7 @@ public class SearchIndividualsDataGetter extends DataGetterBase implements DataG vclass.getURI(), page, alpha, - vreq.getWebappDaoFactory().getIndividualDao()); + vreq); body.putAll(vcResults.asFreemarkerMap()); List inds = vcResults.getEntities(); From 3ab448a926ff029f2a32022779e7c23bf53303b2 Mon Sep 17 00:00:00 2001 From: Stefan Wolff Date: Fri, 23 Sep 2016 16:29:43 +0200 Subject: [PATCH 2/6] fix hard coded label "pages" --- .../templates/freemarker/body/search/search-pagedResults.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/src/main/webapp/templates/freemarker/body/search/search-pagedResults.ftl b/webapp/src/main/webapp/templates/freemarker/body/search/search-pagedResults.ftl index 0c8ed5ed2..d0805bc3d 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/search/search-pagedResults.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/search/search-pagedResults.ftl @@ -67,7 +67,7 @@ <#-- Paging controls --> <#if (pagingLinks?size > 0)>
- Pages: + ${i18n().pages}: <#if prevPage??> <#list pagingLinks as link> <#if link.url??> From 5539034f005681204e97a9635c79ba19db975925 Mon Sep 17 00:00:00 2001 From: Stefan Wolff Date: Fri, 23 Sep 2016 16:44:14 +0200 Subject: [PATCH 3/6] fix hard coded labels "pages" and "to" --- legacy/webapp/languages/es_GO/i18n/all_es_GO.properties | 2 ++ webapp/src/main/webapp/i18n/all.properties | 2 ++ .../templates/freemarker/body/search/search-pagedResults.ftl | 4 ++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/legacy/webapp/languages/es_GO/i18n/all_es_GO.properties b/legacy/webapp/languages/es_GO/i18n/all_es_GO.properties index a62a3a29d..510718694 100644 --- a/legacy/webapp/languages/es_GO/i18n/all_es_GO.properties +++ b/legacy/webapp/languages/es_GO/i18n/all_es_GO.properties @@ -518,6 +518,8 @@ class_link = Enlace clase previous = Anterior page_link = enlace de la página next_capitalized = Próximo +download_results = resultados de la transferencia directa +to = a # # shortview templates ( /templates/freemarker/body/partials/shortview ) diff --git a/webapp/src/main/webapp/i18n/all.properties b/webapp/src/main/webapp/i18n/all.properties index 4c0ead6af..fe311f533 100644 --- a/webapp/src/main/webapp/i18n/all.properties +++ b/webapp/src/main/webapp/i18n/all.properties @@ -531,6 +531,8 @@ class_link = class link previous = Previous page_link = page link next_capitalized = Next +download_results = Download Results +to = to # # shortview templates ( /templates/freemarker/body/partials/shortview ) diff --git a/webapp/src/main/webapp/templates/freemarker/body/search/search-pagedResults.ftl b/webapp/src/main/webapp/templates/freemarker/body/search/search-pagedResults.ftl index d0805bc3d..b701ccb57 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/search/search-pagedResults.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/search/search-pagedResults.ftl @@ -20,7 +20,7 @@ var urlsBase = '${urls.base}'; - Download Results + ${i18n().download_results} <#-- --> @@ -42,7 +42,7 @@ <#if classLinks?has_content>
<#if classGroupName?has_content> -

${i18n().limit} ${classGroupName} to

+

${i18n().limit} ${classGroupName} ${i18n().to}

<#else>

${i18n().limit_to}

From 8c8985bdc21cbfd036e7676751f4aa9bf3f9f391 Mon Sep 17 00:00:00 2001 From: Stefan Wolff Date: Fri, 23 Sep 2016 17:25:05 +0200 Subject: [PATCH 4/6] fix some hard coded page titles and messages --- .../controller/admin/RestrictLoginsController.java | 3 ++- .../controller/admin/StartupStatusController.java | 3 ++- .../controller/freemarker/PageController.java | 13 +++++++------ .../controller/individual/IndividualController.java | 9 +++++---- .../languages/es_GO/i18n/all_es_GO.properties | 8 ++++++++ webapp/src/main/webapp/i18n/all.properties | 8 ++++++++ 6 files changed, 32 insertions(+), 12 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/admin/RestrictLoginsController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/admin/RestrictLoginsController.java index a3f04be48..e80d7f2d5 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/admin/RestrictLoginsController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/admin/RestrictLoginsController.java @@ -16,6 +16,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; /** * Offer the user the ability to apply a RestrictedAuthenticator or revert to a @@ -80,7 +81,7 @@ public class RestrictLoginsController extends FreemarkerHttpServlet { boolean restricted = figureCurrentlyState() == State.RESTRICTED; Map body = new HashMap(); - body.put("title", "Restrict Logins"); + body.put("title", I18n.text(vreq, "restrict_logins")); body.put("restricted", restricted); if (!MESSAGE_NO_MESSAGE.equals(messageCode)) { body.put(messageCode, Boolean.TRUE); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/admin/StartupStatusController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/admin/StartupStatusController.java index 991f53792..ae295ed35 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/admin/StartupStatusController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/admin/StartupStatusController.java @@ -11,6 +11,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServlet; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; import edu.cornell.mannlib.vitro.webapp.startup.StartupStatus; /** @@ -27,7 +28,7 @@ public class StartupStatusController extends FreemarkerHttpServlet { protected ResponseValues processRequest(VitroRequest vreq) { Map body = new HashMap(); - body.put("title", "Startup Status"); + body.put("title", I18n.text(vreq, "startup_status")); body.put("status", StartupStatus.getBean(getServletContext())); body.put("contextPath", getContextPath()); body.put("applicationName", getApplicationName(vreq)); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/PageController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/PageController.java index f772537c7..13595fd1d 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/PageController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/PageController.java @@ -27,6 +27,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; import edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; import edu.cornell.mannlib.vitro.webapp.utils.dataGetter.DataGetter; import edu.cornell.mannlib.vitro.webapp.utils.dataGetter.DataGetterUtils; /** @@ -188,23 +189,23 @@ public class PageController extends FreemarkerHttpServlet{ private ResponseValues doError(VitroRequest vreq) { Map body = new HashMap(); - body.put("title","Page could not be created"); - body.put("errorMessage", "There was an error while creating the page, please check the logs."); + body.put("title", I18n.text(vreq, "page_not_created")); + body.put("errorMessage", I18n.text(vreq, "page_not_created_msg")); return new TemplateResponseValues(Template.TITLED_ERROR_MESSAGE.toString(), body, HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } private ResponseValues doNotFound(VitroRequest vreq) { Map body = new HashMap(); - body.put("title","Page Not Found"); - body.put("errorMessage", "The page was not found in the system."); + body.put("title", I18n.text(vreq, "page_not_found")); + body.put("errorMessage", I18n.text(vreq, "page_not_found_msg")); return new TemplateResponseValues(Template.TITLED_ERROR_MESSAGE.toString(), body, HttpServletResponse.SC_NOT_FOUND); } private ResponseValues doNoPageSpecified(VitroRequest vreq) { Map body = new HashMap(); - body.put("title","No page URI specified"); - body.put("errorMessage", "Could not generate page beacause it was unclear what page was being requested. A URL mapping may be missing."); + body.put("title",I18n.text(vreq, "page_uri_missing")); + body.put("errorMessage", I18n.text(vreq, "page_uri_missing_msg")); return new TemplateResponseValues(Template.TITLED_ERROR_MESSAGE.toString(), body, HttpServletResponse.SC_NOT_FOUND); } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/individual/IndividualController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/individual/IndividualController.java index 4c14f4a9c..5abf27a70 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/individual/IndividualController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/individual/IndividualController.java @@ -21,6 +21,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.Exc import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.RedirectResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; /** * Handles requests for entity information. @@ -74,7 +75,7 @@ public class IndividualController extends FreemarkerHttpServlet { * If we can't figure out what individual you want, or if there * is no such individual, show an informative error page. */ - return doNotFound(); + return doNotFound(vreq); case BYTESTREAM_REDIRECT: /* * If the Individual requested is a FileBytestream, redirect @@ -116,10 +117,10 @@ public class IndividualController extends FreemarkerHttpServlet { new IndividualRequestAnalysisContextImpl(vreq)).analyze(); } - private ResponseValues doNotFound() { + private ResponseValues doNotFound(VitroRequest vreq) { Map body = new HashMap(); - body.put("title", "Individual Not Found"); - body.put("errorMessage", "The individual was not found in the system."); + body.put("title", I18n.text(vreq, "individual_not_found")); + body.put("errorMessage", I18n.text(vreq, "individual_not_found_msg")); return new TemplateResponseValues(TEMPLATE_HELP, body, HttpServletResponse.SC_NOT_FOUND); diff --git a/legacy/webapp/languages/es_GO/i18n/all_es_GO.properties b/legacy/webapp/languages/es_GO/i18n/all_es_GO.properties index 510718694..3741d22d6 100644 --- a/legacy/webapp/languages/es_GO/i18n/all_es_GO.properties +++ b/legacy/webapp/languages/es_GO/i18n/all_es_GO.properties @@ -234,6 +234,7 @@ verbose_turn_off = Apagar resource_uri = URI de recursos individual_not_found = Individual no encontrado +individual_not_found_msg = El individuo no se encontró en el sistema. entity_to_query_for = Este id es el identificador de la entidad para consultar. netid también funciona. menu_ordering = Menú pedidos @@ -423,6 +424,13 @@ run_sdb_setup = Ejecutar la instalación SDB unrecognized_user = Usuario no reconocido no_individual_associated_with_id = Por alguna razón, no hay ninguna persona en VIVO que se asocia con su ID de red. Tal vez usted debería ponerse en contacto con el administrador de VIVO. +page_not_created = página no pudo ser creado +page_not_created_msg = Se ha producido un error al crear la página, por favor, compruebe los registros. +page_not_found = Página no encontrada +page_not_found_msg = La página no se ha encontrado en el sistema. +page_uri_missing = No se especifica la página URI +page_uri_missing_msg = No se pudo generar la página pd no estaba claro en qué página se está solicitando. Una asignación de dirección URL es posible que falte. + # # site admin templates ( /templates/freemarker/body/siteAdmin ) # diff --git a/webapp/src/main/webapp/i18n/all.properties b/webapp/src/main/webapp/i18n/all.properties index fe311f533..a980cc36d 100644 --- a/webapp/src/main/webapp/i18n/all.properties +++ b/webapp/src/main/webapp/i18n/all.properties @@ -246,6 +246,7 @@ verbose_turn_off = Turn off resource_uri = Resource URI individual_not_found = Individual not found +individual_not_found_msg = The individual was not found in the system. entity_to_query_for = This id is the id of the entity to query for. netid also works. menu_ordering = Menu Ordering @@ -435,6 +436,13 @@ run_sdb_setup = Run SDB Setup unrecognized_user = Unrecognized user no_individual_associated_with_id = For some reason, there is no individual in VIVO that is associated with your Net ID. Perhaps you should contact your VIVO administrator. +page_not_created = Page could not be created +page_not_created_msg = There was an error while creating the page, please check the logs. +page_not_found = Page Not Found +page_not_found_msg = The page was not found in the system. +page_uri_missing = No page URI specified +page_uri_missing_msg = Could not generate page beacause it was unclear what page was being requested. A URL mapping may be missing. + # # site admin templates ( /templates/freemarker/body/siteAdmin ) # From f518e78760a0b7c2d7ba2a2984adbd610b4a4a79 Mon Sep 17 00:00:00 2001 From: Stefan Wolff Date: Tue, 1 Nov 2016 15:48:49 +0100 Subject: [PATCH 5/6] show class names in list views corresponding to preferred languages --- .../vitro/webapp/dao/jena/JenaBaseDao.java | 22 +++++++++++++ .../jena/ObjectPropertyStatementDaoJena.java | 31 +++++++++++++------ 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDao.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDao.java index 74a224829..c6b9edade 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDao.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDao.java @@ -868,6 +868,28 @@ public class JenaBaseDao extends JenaBaseDaoCon { return label; } + /** + * Searches for literal in preferred language. + * @param labels + * the literals to search; must not be null + * @return the literal in preferred language if its containing in given list; + * otherwise the first entry will returned; returns null if an empty list was given + */ + protected Literal tryLiteralForPreferredLanguages(List labels) { + + // search for literal of preferred language + for (Literal literal : labels) { + for (String lang : PREFERRED_LANGUAGES) { + if (lang.equals(literal.getLanguage())) { + return literal; + } + } + } + + // return first literal as last resort + return 0 == labels.size() ? null : labels.get(0); + } + private Literal tryPropertyForPreferredLanguages( OntResource r, Property p, boolean alsoTryNoLang ) { Literal label = null; List labels = r.listPropertyValues(p).toList(); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java index 43c43699c..7985a4932 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java @@ -7,7 +7,9 @@ import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; +import java.util.Map.Entry; import java.util.Objects; import java.util.Set; @@ -17,6 +19,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.jena.ontology.OntModel; +import org.apache.jena.ontology.OntResource; import org.apache.jena.query.Dataset; import org.apache.jena.query.Query; import org.apache.jena.query.QueryExecution; @@ -26,6 +29,7 @@ import org.apache.jena.query.QuerySolution; import org.apache.jena.query.QuerySolutionMap; import org.apache.jena.query.ResultSet; import org.apache.jena.query.Syntax; +import org.apache.jena.rdf.model.Literal; import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.ModelFactory; import org.apache.jena.rdf.model.Property; @@ -503,7 +507,8 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec return Collections.emptyMap(); } - Map types = new LinkedHashMap(); + Map result = new LinkedHashMap(); + Map> types = new LinkedHashMap>(); DatasetWrapper w = dwf.getDatasetWrapper(); Dataset dataset = w.getDataset(); dataset.getLock().enterCriticalSection(Lock.READ); @@ -521,16 +526,24 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec } RDFNode labelNode = soln.get("label"); - String label = null; - if (labelNode.isLiteral()) { - label = labelNode.asLiteral().getLexicalForm(); - } - - if (StringUtils.isNotBlank(type) && StringUtils.isNotBlank(label)) { - types.put(type, label); + if (StringUtils.isNotBlank(type) && labelNode.isLiteral()) { + + List langLabels = types.get(type); + if (null == langLabels) { + types.put(type, langLabels = new ArrayList()); + } + langLabels.add(labelNode.asLiteral()); + } } - return types; + + // choose labels corresponding to preferred languages + Set>> typeEntries = types.entrySet(); + for (Entry> current : typeEntries) { + result.put(current.getKey(), tryLiteralForPreferredLanguages(current.getValue()).getLexicalForm()); + } + + return result; } catch (Exception e) { log.error("Error getting most specific types for subject " + subjectUri); From 71db92490dc5f5055170a9e8499822d1b976cab3 Mon Sep 17 00:00:00 2001 From: Stefan Wolff Date: Tue, 1 Nov 2016 16:38:41 +0100 Subject: [PATCH 6/6] translate page titles of search result page and login page --- .../webapp/controller/freemarker/StaticPageController.java | 4 +++- .../vitro/webapp/search/controller/PagedSearchController.java | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/StaticPageController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/StaticPageController.java index b4c115f6a..09ea8ded9 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/StaticPageController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/StaticPageController.java @@ -5,12 +5,14 @@ package edu.cornell.mannlib.vitro.webapp.controller.freemarker; import java.util.HashMap; import java.util.Map; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; +import edu.cornell.mannlib.vitro.webapp.i18n.I18n; /* * Servlet that only specifies a template, without putting any data @@ -33,7 +35,7 @@ public class StaticPageController extends FreemarkerHttpServlet { String requestedUrl = vreq.getServletPath(); String title = null; if (requestedUrl.equals("/login")) { - title = "Log in to " + siteName; + title = StringUtils.capitalize(I18n.text(vreq, "log_in")) + " - " + siteName; } return title; } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/search/controller/PagedSearchController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/search/controller/PagedSearchController.java index 57fcc63a2..6a313e409 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/search/controller/PagedSearchController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/search/controller/PagedSearchController.java @@ -262,8 +262,8 @@ public class PagedSearchController extends FreemarkerHttpServlet { .getIndividualTemplateModels(individuals, vreq)); body.put("querytext", queryText); - body.put("title", queryText + " - " + appBean.getApplicationName() - + " Search Results"); + body.put("title", new StringBuilder().append(appBean.getApplicationName()).append(" - "). + append(I18n.text(vreq, "search_results_for")).append(" '").append(queryText).append("'").toString()); body.put("hitCount", hitCount); body.put("startIndex", startIndex);