sistema:adaptacion_gn

¡Esta es una revisión vieja del documento!


Adaptar GeoNetwork

La página web del proyecto es http://geonetwork-opensource.org, el repositorio del código fuente es https://github.com/geonetwork/core-geonetwork.

Este artículo describe

  • La descarga del código fuente de GeoNetwork
  • La compilación del código fuente como web archive (.war)
  • La adaptación de la aplicación a GeOrellana

Para descargar el código fuente se describe en http://geonetwork-opensource.org/downloads.html y la guía de desarrollo.
Se requiere GIT instalado.

Los requisitos para la compilación son JDK 1.7 o mayor, así como Maven.
Para el módulo del interfaz web web-ui se recomienda el uso de closure.

El manual de desarrolladores indica cómo checkout una versión específica, y su posterior compilación.

En el caso de que se usa JDK 1.7 sea necesario ejecutar el siguiente comando antes de compilar el código

export MAVEN_OPTS="-Xmx512M -XX:MaxPermSize=256M"

Para testear el código fuente se puede usar el servidor jetty integrado en maven en http://localhost/geonetwork:8080:

cd web
mvn jetty:run

En el caso de que se realizan cambios en el código fuente y se vuelve a testear la aplicación será necesario borrar archivos cacheados, y si deseado también la base de datos h2:

rm web/src/main/webapp/WEB-INF/data/wro4j-cache.h2.db web/src/main/webapp/WEB-INF/data/wro4j-cache.lock.db
rm web/geonetwork.*

Si se ha descargado el código fuente y compilado una versión específica se adapta esa misma. La adaptación puede realizarse en un branch nuevo, para no sobreescribirla con futuros actualizaciones del código fuente en la computadora.

Por ejemplo, para crear el branch georellana a partir de la versión 3.0.4:

git checkout 3.0.4
git branch georellana-3.0.4
git checkout georellana-3.0.4

Para GeOrellana se adapta lo siguiente:

  1. El menú principal
  2. El pie de la página
  3. El imagen coorporativo (colores de enlaces, etc.)
  4. La extensión del mapa de la búsqueda
  5. El lenguaje del interfaz de usuarios (solo español)

Después de haber adaptado el repositorio se realiza un commit y un push al repositorio Github de georellana (el comando push requiere configuración!!):

git add --all
git commit -m "adaptado a GeOrellana"
git push

En el menu principal se cambian los nombres y el orden de los enlaces a un lado, y al otro se añaden los enlaces a la wiki (página de inicio) y a la aplicación de meteo.

  1. En el archivo web-ui/src/main/resources/catalog/templates/top-toolbar.html se reemplaza el apartado
          <li>
            <a data-gn-active-tb-item="catalog.search#/home">
              <img class="gn-logo"
                   data-ng-src="../../images/logos/{{info.site.siteId}}.png?{{info.site.lastUpdate}}"/>
              <span class="visible-lg">{{info.site.name}}</span>
            </a>
          </li>

    con

          <li>
            <a  href="../../../wiki">
              <img class="gn-logo"
                   data-ng-src="../../../img/logos/logo.png"/>
              <span class="visible-lg"> Inicio</span>
            </a>
          </li>
          <li>
            <a data-gn-active-tb-item="catalog.search#/home">
              <i class="fa fa-location-arrow">
              <span class="visible-lg"> Cat&aacute;logo</span>
            </a>
          </li>
  2. Detrás de <li> adminConsole se añade el enlace a la aplicación de meteorología
          <li class="dropdown" >
    	<a href="" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
    	  <i class="fa fa-eye" aria-hidden="true"></i>
    	  <span class="visible-lg"> Apps </span><span class="caret"></span>
    	</a>
    	<ul class="dropdown-menu" role="menu">
    	  <li>
    	   <a href="../../../apps/meteo">
    	     <i class="fa fa-bolt"></i>
    	     <span class="visible-lg"> Meteo</span>
    	   </a>
    	  </li>
    	</ul>
          </li>
  3. Se remueve el selector de lenguajes borrando el siguiente apartado <form>
        <form class="navbar-form navbar-right" role="language">
          <div class="form-group pull-right"
               data-gn-language-switcher="lang"
               data-langs="langs"
               data-lang-labels="langLabels"/>
        </form>

Sin pie de página: Borrar el siguiente div en el archivo web-ui/src/main/resources/catalog/views/default/templates/index.html

<div class="navbar navbar-default gn-bottom-bar">
  <ul class="nav navbar-nav">
    <li><a href="http://geonetwork-opensource.org/">
      <i class="fa fa-fw"></i>
      <span data-translate="">about</span>
    </a></li>
    <li class="hidden-sm"><a href="https://github.com/geonetwork/core-geonetwork">
      <i class="fa fa-github"></i>
      <span data-translate="">github</span></a></li>
    <li>
      <a data-translate=""
         data-translate-values="{platform: '{{info.site.platform.name}}', version: '{{info.site.platform.version}}', subversion: '{{info.site.platform.subVersion}}'}">
        versionDetails</a>
    </li>
    <li>
      <a href="rss.search?sortBy=changeDate&georss=simplepoint"
              title="{{'lastRecords' | translate}}">
        <i class="fa fa-rss"/>
      </a>
    </li>
  </ul>
</div>

Para adaptar los colores de los enlaces, botones, así como el diseño y layout del menú principal se añaden los siguientes líneas al archivo gn_view.less:

.navbar {
  margin: 1px 1px 18px 1px;
  border-width:0px 0px 5px 0px;
  border-image:url("../../img/logos/pachakutic.jpg") 5;
}
.navbar-nav > li > a {
 height: 55px;
}
.btn-primary {
  background-color: #903d99;
  border-color: #00419b;
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active {
  background-color: #783480;
  border-color: #00419b;
}
.btn-link {
  color: #903d99;
}
.btn-link:hover, .btn-link:focus, .btn-link:active {
  color: #783480;
}
a {
  color: #903d99;
}
a:hover, a:focus {
  color: #783480;
}

Para testear la instalación se puede remplazar la línea del border-image de .navbar con
border-image:url(“http://geo.gporellana.gob.ec/img/logos/pachakutic.jpg”) 5;

Para que el visor carga por defecto la extensión de GeOrellana se adaptan las coordenadas y los niveles de zoom en

  1. El archivo xml /web/src/main/webapp/WEB-INF/data/data/resources/map/config-viewer.xml las coordenadas
          <ows:LowerCorner>-8641464.000526832 -174152.000612247</ows:LowerCorner>
          <ows:UpperCorner>-8369795.000054762 -5359.00000408245</ows:UpperCorner> 
  2. El archivo javascript /web-ui/src/main/resources/catalog/views/default la coordenada center y dos veces el factor de zoom
              var mapsConfig = {
                center: [-8505629.0240585705, -89755.04789996],
                zoom: 6
                //maxResolution: 9783.93962050256
              };
     
              var searchMap = new ol.Map({
                controls:[],
                layers: [new ol.layer.Tile({
                  source: new ol.source.OSM()
                })],
                view: new ol.View({
                  center: mapsConfig.center,
                  zoom: 6
                })
              });

Español como lenguaje por defecto

Se especifica el lenguaje por defecto en los siguientes archivos xml:

  1. en el archivo web/src/main/webapp/WEB-INF/spring-servlet.xml se cambia el valor de defaultLocale a spa:
            <bean id="localeResolver"
                    class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
                    <property name="defaultLocale" value="spa" />
            </bean>
  2. y en el archivo websrc/main/webapp/WEB-INF/config.xml
    	<language>spa</language> 
  3. para que se usa solo el lenguaje por defecto se añade una línea en core/src/main/java/org/fao/geonet/web/LocaleRedirects.java
        //Después de la siguiente línea
        String userLang = langHeader.split("-|,", 2)[0].toLowerCase();
        //Se añade esta línea
        userLang = "unknown";

Corregir un error debido a nombres de archivos

Solo necesario si el interfaz de usuarios no se muestra en español, se supone que en una de los próximas actualizaciones este paso ya no sea necesario al que se va a corregir este error.

En la carpeta web-ui/src/main/resources/catalog/locales se copian los siguientes archivos:

cp es-admin.json sp-admin.json
cp es-core.json sp-core.json
cp es-editor.json sp-editor.json
cp es-search.json sp-search.json