MediaWiki 1.22.0 - Ejercicios (2) - Soluciones

¡Atención!Estos ejercicios corresponden a una versión antigua de MediaWiki. No están actualizados a versiones más actuales porque desde el curso 2014/15 no estoy trabajando en clase MediaWiki ya que estoy dedicando más tiempo a otras aplicaciones. He mantenido estos ejercicios en los apuntes por si le pueden servir a alguien.

En esta lección se proponen soluciones de los ejercicios de MediaWiki (2). Se recomienda intentar realizarlos primero sin recurrir a estas soluciones.

MediaWiki (2) 1 - Cambiar el logotipo

  1. Manual MediaWiki: https://www.mediawiki.org/wiki/Manual:FAQ#How_do_I_change_the_logo.3F

    Para cambiar el logotipo, hay que modificar en el archivo de configuración LocalSettings.php de MediaWiki:

    $wgLogo = "$wgStylePath/common/images/wiki.png";

    Para evitar que una actualización posterior de MediaWiki sustituya nuestro logo, es mejor usar un fichero con otro nombre y guardarlo en otra carpeta dentro de $wgStylePath.

    Cada skin usa un tamaño distinto para los logos (el skin Vector usa 160x160píxeles, pero bastantes skins usan 135x135 píxeles). Si se usan tamaños superiores, Vector recorta las imágenes y otros skins las muestran completas.

MediaWiki (2) 2 - Wikis privados

  1. Manual MediaWiki:

    Para convertir la wiki pública en una wiki privada se puede añadir, entre otros, los siguientes valores en el archivo de configuración LocalSettings.php de MediaWiki:

    $wgGroupPermissions['*']['createaccount'] = false;
    $wgGroupPermissions['*']['edit'] = false;
    $wgGroupPermissions['*']['read'] = false;
    

MediaWiki (2) 3 - Editar tablas

  1. Manual MediaWiki: https://www.mediawiki.org/wiki/Help:Tables

    Manual Wikipedia: https://en.wikipedia.org/wiki/Help:Tables

    El código para generar las tablas del ejemplo es el siguiente:

    {| class="wikitable"
    |-
    ! Planeta
    ! Diámetro
    |-
    | Mercurio
    | align="right" | 4.879,4 km
    |-
    | Venus
    | align="right" | 12.103,6 km
    |-
    | Tierra
    | align="right" | 12.756,2 km
    |}
    
    {| class="wikitable"
    |+ Elementos químicos
    |-
    ! align="left" | Símbolo
    | align="center" | H
    | align="center" | He
    | align="center" | Li
    |-
    ! align="left" | Nombre
    | Hidrógeno
    | Helio
    | Litio
    |-
    ! align="left" | Masa atómica
    | 1,00797 u
    | 4,00260 u
    | 6,94174 u
    |}
    
    {| class="wikitable"
    |-
    | A
    | colspan="3" | B
    |-
    | rowspan="3" | C
    | colspan="2" rowspan="2" style="background-color: lightblue; color: blue; font-size: 200%" |D
    | E
    |-
    | F
    |-
    | G
    | H
    | I
    |}

MediaWiki (2) 4 - Subir archivos SVG

  1. Para poder subir archivos SVG, hay que añadir en el archivo de configuración LocalSettings.php de MediaWiki:
    $wgFileExtensions[] = 'svg';
    $wgAllowTitlesInSVG = true;
    
  2. Las imágenes SVG no se incluyen directamente en las páginas, sino que se convierten automáticamente a PNG. Para ello es necesario configurar algún convertidor de SVG a PNG:
    • Inkscape

      Manual MediaWiki: https://www.mediawiki.org/wiki/Manual:$wgSVGConverters

      Es fácil de instalar y configurar y funciona bien.

      La última versión de Inkscape se puede descargar de https://www.cdlibre.org/consultar/catalogo/Graficos_Editores-graficos.html

      En el archivo de configuración LocalSettings.php de MediaWiki hay que añadir:

      $wgSVGConverter = 'Inkscape';
      $wgSVGConverters = array(
          'Inkscape' => '"ruta_de_Inkscape\inkscape.exe" -z -w $width -f $input -e $output',
      );
      
    • ImageMagick

      Manual MediaWiki: https://www.mediawiki.org/wiki/Manual:Installing_third-party_tools

      Aunque es fácil de instalar y configurar, MediaMagick no funciona demasiado bien (por ejemplo, si la imagen contiene degradados).

      Para Windows, se puede descargar la versión portable de http://www.imagemagick.org/script/index.php o de https://sourceforge.net/projects/imagemagick/files/. El fichero para Windows se llama ImageMagick-X.Y.Z-N-Q16-x86-windows.zip, y actualmente (enero de 2013) la última versión disponible es la versión 6.8.1-9 del 6 de enero de 2013). Este fichero se debe descomprimir en la carpeta de mediawiki.

      En el archivo de configuración LocalSettings.php de MediaWiki hay que añadir:

      $wgAllowTitlesInSVG = true;
      $wgSVGConverter = 'ImageMagick';
      $wgUseImageMagick = true;
      $wgSVGConverters = array(
          'ImageMagick' => '"ruta_de_ImageMagick/convert.exe" -background white -geometry $width $input $output',
        );
      

      En el archivo de configuración LocalSettings.php de MediaWiki hay un par de líneas comentadas sobre Imagemagick que no es necesario modificar:

      #$wgUseImageMagick = true;
      #$wgImageMagickConvertCommand = "/usr/bin/convert";
      
    • Batik

      Batik es una biblioteca Java para manipular SVG. La página web es https://xmlgraphics.apache.org/batik/. Yo no lo he probado, pero por lo visto es muy lenta.

    • librsvg

      librsvg es una biblioteca de visualización de SVG para GNOME. Se puede descargar de https://download.gnome.org/sources/librsvg/

      Yo no lo he probado, pero por lo visto es muy rápido, pero complicado de instalar (sobre todo en Windows, aunque también en Linux) porque tiene muchas dependencias.

MediaWiki (2) 5 - Subir otros tipos de archivos

  1. En el archivo de configuración LocalSettings.php de MediaWiki hay que añadir una línea por cada formato de archivo:
    $wgFileExtensions[] = 'svg';
    $wgFileExtensions[] = 'pdf';
    
  2. Manual MediaWiki: https://www.mediawiki.org/wiki/Help:Links#Internal_links

    Para enlazar los archivos subidos:

    [[media:nombre de archivo | texto ]

MediaWiki (2) 6 - Crear una galería

  1. Manual Mediawiki: https://www.mediawiki.org/wiki/Help:Images#Rendering_a_gallery_of_images

    Para crear una galería de imágenes:

    <gallery>
    nombre del archivo de imagen | leyenda
    nombre del archivo de imagen | leyenda
    nombre del archivo de imagen | leyenda
    </gallery>
    

MediaWiki (2) 7 - Tablas colapsables

  1. El código del ejemplo sería el siguiente:
    • En la página
      Esto es un ejemplo de tabla colapsable:
      {| class="wikitable collapsible collapsed"
      |-
      ! colspan="4" | Esta tabla se puede mostrar u ocultar
      |-
      ! !! 1 !! 2 !! 3
      |- align="center"
      ! A
      | A1 || A2 || A3
      |- align="center"
      ! B
      | B1 || B2 || B3
      |}
              
    • En la página http:// ... /index.php?title=MediaWiki:Common.js
      /**
       * Collapsible tables *********************************************************
       *
       * Description: Allows tables to be collapsed, showing only the header. See
       *              [[Wikipedia:NavFrame]].
       * Maintainers: [[User:R. Koot]]
       */
      
      var autoCollapse = 2;
      var collapseCaption = 'ocultar';
      var expandCaption = 'mostrar';
      
      window.collapseTable = function ( tableIndex ) {
          var Button = document.getElementById( 'collapseButton' + tableIndex );
          var Table = document.getElementById( 'collapsibleTable' + tableIndex );
      
          if ( !Table || !Button ) {
              return false;
          }
      
          var Rows = Table.rows;
          var i;
      
          if ( Button.firstChild.data === collapseCaption ) {
              for ( i = 1; i < Rows.length; i++ ) {
                  Rows[i].style.display = 'none';
              }
              Button.firstChild.data = expandCaption;
          } else {
              for ( i = 1; i < Rows.length; i++ ) {
                  Rows[i].style.display = Rows[0].style.display;
              }
              Button.firstChild.data = collapseCaption;
          }
      };
      
      function createCollapseButtons() {
          var tableIndex = 0;
          var NavigationBoxes = {};
          var Tables = document.getElementsByTagName( 'table' );
          var i;
      
          function handleButtonLink( index, e ) {
              window.collapseTable( index );
              e.preventDefault();
          }
      
          for ( i = 0; i < Tables.length; i++ ) {
              if ( $( Tables[i] ).hasClass( 'collapsible' ) ) {
      
                  /* only add button and increment count if there is a header row to work with */
                  var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
                  if ( !HeaderRow ) continue;
                  var Header = HeaderRow.getElementsByTagName( 'th' )[0];
                  if ( !Header ) continue;
      
                  NavigationBoxes[ tableIndex ] = Tables[i];
                  Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
      
                  var Button     = document.createElement( 'span' );
                  var ButtonLink = document.createElement( 'a' );
                  var ButtonText = document.createTextNode( collapseCaption );
      
                  Button.className = 'collapseButton';  /* Styles are declared in Common.css */
      
                  ButtonLink.style.color = Header.style.color;
                  ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
                  ButtonLink.setAttribute( 'href', '#' );
                  $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
                  ButtonLink.appendChild( ButtonText );
      
                  Button.appendChild( document.createTextNode( '[' ) );
                  Button.appendChild( ButtonLink );
                  Button.appendChild( document.createTextNode( ']' ) );
      
                  Header.insertBefore( Button, Header.firstChild );
                  tableIndex++;
              }
          }
      
          for ( i = 0;  i < tableIndex; i++ ) {
              if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) || ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) ) ) {
                  window.collapseTable( i );
              }
              else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
                  var element = NavigationBoxes[i];
                  while ((element = element.parentNode)) {
                      if ( $( element ).hasClass( 'outercollapse' ) ) {
                          window.collapseTable ( i );
                          break;
                      }
                  }
              }
          }
      }
      
      mw.hook( 'wikipage.content' ).add( createCollapseButtons )
      

MediaWiki (2) 8 - Extensión Vector

  1. Para ver si la extensión Vector ya está incluida en MediaWiki hay que ver si en la carpeta extensions hay una carpeta Vector.

    Para ver si la extensión Vector está activada hay que abrir la página Especial:Versión (Special:Version) y ver si en el apartado Extensiones instaladas aparece la extensión Vector.

  2. Opción EditWarning de Vector
    • Con la extensión Vector sin activar, comprobar que en la página Especial:Preferencias (Special:Preferences), en la pestaña Edición, apartado Opciones avanzadas, no aparece la opción "Advertirme cuando abandone una página editada con cambios sin grabar".
    • Para activar Vector, añadir en el archivo de configuración LocalSettings.php de MediaWiki:
      require_once( "$IP/extensions/Vector/Vector.php" );
    • Una vez activada, en la página Especial:Versión (Special:Version) debe aparecer la extensión vector y en la página Especial:Preferencias (Special:Preferences) debe aparecer la opción "Advertirme cuando abandone una página editada con cambios sin grabar".
    • Para que la opción "Advertirme cuando abandone una página editada con cambios sin grabar" aparezca de forma predeterminada, añadir en el archivo de configuración LocalSettings.php de MediaWiki:
      $wgDefaultUserOptions['useeditwarning'] = 1;

MediaWiki (2) Ampliación 1 - Copia de seguridad

Por escribir

MediaWiki (2) Ampliación 2 - Otras extensiones

Por escribir

MediaWiki (2) Ampliación 3 - Avisos en instalación

Por escribir

MediaWiki (2) Ampliación 4 - Líneas de tiempo (EasyTimeLine)

Por escribir

MediaWiki (2) XX - Otros

Texto
Resultado Sintaxis
Cita {{Cita|Texto de la cita|[[Autor]], ''Obra''}}