From 60d2296fe3f139ac9e2e88c369a750e5de9ec865 Mon Sep 17 00:00:00 2001
From: Fernando Pietchaki Domingues <fpd09@c3sl.ufpr.br>
Date: Fri, 23 Aug 2013 15:07:46 -0300
Subject: [PATCH] adicionado barra com seletor de linguagem. Adicionados mais
 alguns elementos visuais.

---
 .../aspect/artifactbrowser/Navigation.java    | 15 ++++++++
 .../app/xmlui/aspect/eperson/EditProfile.java |  5 +--
 .../aspect/viewArtifacts/Navigation.java      | 16 +++++++++
 .../app/xmlui/cocoon/DSpaceLocaleAction.java  | 34 +++++++++++++-----
 dspace/config/dspace.cfg                      |  4 +--
 .../src/main/webapp/i18n/messages_pt_BR.xml   |  2 +-
 .../themes/Participatorio/lib/css/style.css   | 16 +++++++--
 .../lib/xsl/core/page-structure.xsl           | 36 +++++++++++++++++++
 8 files changed, 111 insertions(+), 17 deletions(-)

diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/Navigation.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/Navigation.java
index 4fca691..4ed8cdf 100644
--- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/Navigation.java
+++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/artifactbrowser/Navigation.java
@@ -11,6 +11,7 @@ import java.io.IOException;
 import java.io.Serializable;
 import java.sql.SQLException;
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 
 import org.apache.cocoon.caching.CacheableProcessingComponent;
@@ -36,6 +37,7 @@ import org.dspace.content.DSpaceObject;
 import org.dspace.content.Item;
 import org.dspace.app.util.Util;
 import org.dspace.core.ConfigurationManager;
+import org.dspace.core.I18nUtil;
 import org.xml.sax.SAXException;
 
 /**
@@ -206,6 +208,19 @@ public class Navigation extends AbstractDSpaceTransformer implements CacheablePr
         pageMeta.addMetadata("page","contactURL").addContent(contextPath + "/contact");
         pageMeta.addMetadata("page","feedbackURL").addContent(contextPath + "/feedback");
         
+// #############################################################################################
+        // Add the locale meta data including language dependant labels
+        Locale[] locales = I18nUtil.getSupportedLocales();
+        for (int i=0; i < locales.length; i++)
+        {
+        	pageMeta.addMetadata("page", "supportedLocale").addContent(locales[i].toString());
+        	// now add the appropriate labels
+        	pageMeta.addMetadata("supportedLocale", locales[i].toString()).addContent(locales[i].getDisplayName(locales[i]));
+        }
+        pageMeta.addMetadata("page","currentLocale").addContent(context.getCurrentLocale().toString());
+// #############################################################################################
+
+        
         DSpaceObject dso = HandleUtil.obtainHandle(objectModel);
         if (dso != null)
         {
diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/eperson/EditProfile.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/eperson/EditProfile.java
index e7674ef..9a68759 100644
--- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/eperson/EditProfile.java
+++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/eperson/EditProfile.java
@@ -62,7 +62,7 @@ import org.xml.sax.SAXException;
  */
 public class EditProfile extends AbstractDSpaceTransformer
 {
-    private static Logger log = Logger.getLogger(EditProfile.class);
+    private static java.util.logging.Logger log = Logger.getLogger(EditProfile.class);
 
     /** Language string used: */
     private static final Message T_title_create =
@@ -481,7 +481,8 @@ public class EditProfile extends AbstractDSpaceTransformer
      */
     private static Locale[] getSupportedLocales()
     {
-        String ll = ConfigurationManager.getProperty("xmlui.supported.locales");
+// #############################################################################################
+        String ll = ConfigurationManager.getProperty("webui.supported.locales");
         if (ll != null)
         {
             return I18nUtil.parseLocales(ll);
diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/viewArtifacts/Navigation.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/viewArtifacts/Navigation.java
index ff4ba4e..ac12e95 100644
--- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/viewArtifacts/Navigation.java
+++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/viewArtifacts/Navigation.java
@@ -26,11 +26,13 @@ import org.dspace.content.Community;
 import org.dspace.content.DSpaceObject;
 import org.dspace.content.Item;
 import org.dspace.core.ConfigurationManager;
+import org.dspace.core.I18nUtil;
 import org.xml.sax.SAXException;
 
 import java.io.IOException;
 import java.io.Serializable;
 import java.sql.SQLException;
+import java.util.Locale;
 
 /**
  * This transform applies the basic navigational links that should be available
@@ -128,6 +130,20 @@ public class Navigation extends AbstractDSpaceTransformer implements CacheablePr
         pageMeta.addMetadata("page","contactURL").addContent(contextPath + "/contact");
         pageMeta.addMetadata("page","feedbackURL").addContent(contextPath + "/feedback");
 
+        
+// #############################################################################################
+        // Add the locale meta data including language dependant labels
+        Locale[] locales = I18nUtil.getSupportedLocales();
+        for (int i=0; i < locales.length; i++)
+        {
+        	pageMeta.addMetadata("page", "supportedLocale").addContent(locales[i].toString());
+        	// now add the appropriate labels
+        	pageMeta.addMetadata("supportedLocale", locales[i].toString()).addContent(locales[i].getDisplayName(locales[i]));
+        }
+        pageMeta.addMetadata("page","currentLocale").addContent(context.getCurrentLocale().toString());
+// #############################################################################################
+
+
         DSpaceObject dso = HandleUtil.obtainHandle(objectModel);
         if (dso != null)
         {
diff --git a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/cocoon/DSpaceLocaleAction.java b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/cocoon/DSpaceLocaleAction.java
index 1a601fd..e9980e6 100644
--- a/dspace-xmlui/src/main/java/org/dspace/app/xmlui/cocoon/DSpaceLocaleAction.java
+++ b/dspace-xmlui/src/main/java/org/dspace/app/xmlui/cocoon/DSpaceLocaleAction.java
@@ -16,7 +16,10 @@ import org.apache.cocoon.environment.Redirector;
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.cocoon.i18n.I18nUtils;
 import org.apache.cocoon.i18n.I18nUtils.LocaleValidator;
+
+import org.dspace.app.xmlui.utils.ContextUtil;
 import org.dspace.core.ConfigurationManager;
+import org.dspace.core.Context;
 import org.dspace.core.I18nUtil;
 
 import java.util.ArrayList;
@@ -96,14 +99,25 @@ public class DSpaceLocaleAction extends ServiceableAction implements Configurabl
             getLogger().debug("Found locale: " + localeStr);
         }
 
+// #############################################################################################
+//        I18nUtils.storeLocale(objectModel,
+//                              "locale-attribute",
+//                              localeStr,
+//                              false,
+//                              false,
+//                              false,
+//                              false);
         I18nUtils.storeLocale(objectModel,
-                              "locale-attribute",
-                              localeStr,
-                              false,
-                              false,
-                              false,
-                              false);
-
+                "locale-attribute",
+                localeStr,
+                false,
+                true,
+                false,
+                false);
+        Context context = ContextUtil.obtainContext(objectModel);
+        context.setCurrentLocale(locale);
+// #############################################################################################        
+        
         // Set up a map for sitemap parameters
         Map<String, String> map = new HashMap<String, String>();
         map.put("language", locale.getLanguage());
@@ -129,11 +143,13 @@ public class DSpaceLocaleAction extends ServiceableAction implements Configurabl
     	 */
     	public DSpaceLocaleValidator()
     	{
-            if (ConfigurationManager.getProperty("xmlui.supported.locales") != null)
+// #############################################################################################
+            if (ConfigurationManager.getProperty("webui.supported.locales") != null)
             {
             	supportedLocales = new ArrayList<Locale>();
             	
-                String supportedLocalesConfig = ConfigurationManager.getProperty("xmlui.supported.locales");
+// #############################################################################################
+                String supportedLocalesConfig = ConfigurationManager.getProperty("webui.supported.locales");
                 
                 String[] parts = supportedLocalesConfig.split(",");
                 
diff --git a/dspace/config/dspace.cfg b/dspace/config/dspace.cfg
index 8a52c32..29a60ad 100644
--- a/dspace/config/dspace.cfg
+++ b/dspace/config/dspace.cfg
@@ -1579,13 +1579,13 @@ plugin.single.org.dspace.app.webui.util.StyleSelection = \
 # Default Locale
 # A Locale in the form country or country_language or country_language_variant
 # if no default locale is defined the server default locale will be used.
-default.locale = en
+default.locale = pt_BR
 
 # All the Locales that are supported by this instance of DSpace
 # A comma-separated list of Locales. All types of Locales country, country_language, country_language_variant
 # Note that the appropriate file are present, especially that all the Messages_x.properties are there
 # may be used, e. g: webui.supported.locales = en, de
-
+webui.supported.locales = pt_BR, en
 
 #### Additional configuration for Item Mapper ####
 
diff --git a/dspace/modules/xmlui/src/main/webapp/i18n/messages_pt_BR.xml b/dspace/modules/xmlui/src/main/webapp/i18n/messages_pt_BR.xml
index 51fc572..ecf078e 100644
--- a/dspace/modules/xmlui/src/main/webapp/i18n/messages_pt_BR.xml
+++ b/dspace/modules/xmlui/src/main/webapp/i18n/messages_pt_BR.xml
@@ -2546,7 +2546,7 @@
 
     <message key="xmlui.structure.AboutRepositoryTitle">Sobre o repositório</message>
     <message key="xmlui.structure.AboutRepositoryTrail">Sobre o repositório</message>
-    <message key="xmlui.structure.AboutRepositoryText">Para modificar o conteúdo desta pagin, edite os arquivos de internacionalização e adicione seu próprio  texto ao titulo, trail e corpo.</message>
+    <message key="xmlui.structure.AboutRepositoryText">Para modificar o conteúdo desta pagina, edite os arquivos de internacionalização e adicione seu próprio texto ao titulo, trail e corpo.</message>
     
     
 </catalogue>
diff --git a/dspace/modules/xmlui/src/main/webapp/themes/Participatorio/lib/css/style.css b/dspace/modules/xmlui/src/main/webapp/themes/Participatorio/lib/css/style.css
index 5514dba..7a998d1 100644
--- a/dspace/modules/xmlui/src/main/webapp/themes/Participatorio/lib/css/style.css
+++ b/dspace/modules/xmlui/src/main/webapp/themes/Participatorio/lib/css/style.css
@@ -164,6 +164,11 @@ select.multiple {
     color: #1F3F5E;
 }
 
+#ds-language-selection {
+   float: right;
+   margin-right: 5px;
+}
+
 #no-js-warning,
 #ds-trail,
 #ds-header,
@@ -395,6 +400,7 @@ p {
 .primary {
     margin-top: 10px;
     margin-bottom: 30px;
+    margin-right: 10px;
 }
 
 ol {
@@ -1082,7 +1088,8 @@ div.item-summary-view-metadata {
 div.simple-item-view-authors {
     font-size: 123.1%;
     font-weight: bold;
-    border-bottom:1px solid #D8E8EB;
+    border-bottom: 1px dotted #CCCCCC;
+    padding-top: 5px;
     padding-bottom: 2px;
     margin-bottom: 20px;
     text-align: justify;
@@ -1100,7 +1107,8 @@ div.simple-item-view-description {
 
 #aspect_artifactbrowser_ItemViewer_div_item-view h2,
 div.simple-item-view-description h3{
-    border-bottom:1px solid #D8E8EB;
+    border-top: 1px dotted #CCCCCC;
+    padding-top: 5px;
     margin-bottom: 3px;
 }
 
@@ -1172,8 +1180,10 @@ div.spacer{
 #aspect_artifactbrowser_CommunityViewer_div_community-home h2,
 #aspect_artifactbrowser_CollectionViewer_div_collection-home h2 {
     margin-top: 30px;
-    border-bottom:1px solid #D8E8EB;
     margin-bottom: 3px;
+    border-top: 1px dotted #CCCCCC;
+    padding-top: 5px;
+
 }
 
 .ds-logo-wrapper {
diff --git a/dspace/modules/xmlui/src/main/webapp/themes/Participatorio/lib/xsl/core/page-structure.xsl b/dspace/modules/xmlui/src/main/webapp/themes/Participatorio/lib/xsl/core/page-structure.xsl
index d8f98cb..3563800 100644
--- a/dspace/modules/xmlui/src/main/webapp/themes/Participatorio/lib/xsl/core/page-structure.xsl
+++ b/dspace/modules/xmlui/src/main/webapp/themes/Participatorio/lib/xsl/core/page-structure.xsl
@@ -420,6 +420,41 @@
     <xsl:template name="buildTrail">
         <div id="ds-trail-wrapper">
             <ul id="ds-trail">
+                <!-- Seletor de linguagem pt_BR / en -->
+                <div id="ds-language-selection">
+                    <a>
+                        <xsl:attribute name="href">
+                            <xsl:value-of select="concat($context-path,'/?locale-attribute=pt_BR')"/>
+                        </xsl:attribute>
+                        <xsl:text>Português</xsl:text>
+                    </a>
+                    <a>
+                        <xsl:attribute name="href">
+                            <xsl:value-of select="concat($context-path,'/?locale-attribute=en')"/>
+                        </xsl:attribute>
+                        <xsl:text>English</xsl:text>
+                    </a>
+                </div>
+<!--  ############################################################################################# -->
+<!-- Seletor de linguagem baseado no que está ativo no arquivo de configuração do dspace (webui.supported.locales) -->
+<!-- Infelizmente, não funciona... algum problema com a geração de pageMeta, provavelmente no metodo -->
+<!-- org.dspace.app.xmlui.aspect.viewArtifacts.Navigation.addPageMeta -->
+<!--             Display a language selection if more than 1 language is supported -->
+<!--             <xsl:if test="count(/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='page'][@qualifier='supportedLocale']) &gt; 1"> -->
+<!--                 <div id="ds-language-selection"> -->
+<!--                     <xsl:for-each select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='page'][@qualifier='supportedLocale']"> -->
+<!--                         <xsl:variable name="locale" select="."/> -->
+<!--                         <a> -->
+<!--                             <xsl:attribute name="href"> -->
+<!--                                 <xsl:value-of select="concat($context-path,'/?locale-attribute=')"/> -->
+<!--                                 <xsl:value-of select="$locale"/> -->
+<!--                             </xsl:attribute> -->
+<!--                             <xsl:value-of select="/dri:document/dri:meta/dri:pageMeta/dri:metadata[@element='supportedLocale'][@qualifier=$locale]"/> -->
+<!--                         </a> -->
+<!--                     </xsl:for-each> -->
+<!--                 </div> -->
+<!--             </xsl:if> -->
+<!-- ############################################################################################# -->
                 <xsl:choose>
                     <xsl:when test="starts-with($request-uri, 'page/about')">
                         <li class="ds-trail-link first-link">
@@ -532,6 +567,7 @@
         </xsl:if>
     </xsl:template>
 
+
     <!-- Like the header, the footer contains various miscellaneous text, links, and image placeholders -->
     <xsl:template name="buildFooter">
         <div id="ds-footer-wrapper">
-- 
GitLab