Ocultar páginas de un elp

Voy a explicar como se hace un mini-hack en eXeLearning, que nos va a permitir personalizar nuestros materiales simplemente cambiando un parámetro de la URL donde lo tengamos alojado (solo he probado en formato web, que es el que yo uso, seguramente en SCORM no se pueda). 

A veces es interesante tener un mismo libro de eXe pero mostrar a determinado alumnado ese material con algunas páginas ocultas. Por ejemplo podemos tener un libro con páginas de ampliación y de refuerzo, y podríamos tener tres versiones, una versión “plana”, otra con más material de refuerzo, y otra con más material de profundización, pero el núcleo de todos ellos es el mismo. Para hacer esto, tendríais que copiar el elp 3 veces e ir cambiando páginas en cada uno de ellos, con el problema de que cuando actualicéis una página común tenéis que actualizarlo en los 3 elp.

Vamos a intentar hacer un elp común, y luego personalizarlo dándole a cada alumno simplemente una URL que variará en un parámetro. Que combinado con las restricciones de Moodle podemos hacer que automáticamente se le muestre al alumno el material que realmente necesita.

Aquí hay un ejemplo y la explicación de cómo hacerlo.

eXeLearning – Incluir páginas de un elp en otro.

A continuación voy a mostrar como tener un elp con páginas genéricas que podremos usar en otros elp, con la ventaja de que al modificar el original se verán modificadas en el resto que lo incluyan sin tener que hacer nada.

Para ello vamos a trabajar en ambos elp con la opción de Personalizar la sección HEAD, que os encontráis aquí:

 

En el elp que usemos como base tenemos que poner el siguiente código

<script type=’text/javascript’>
    window.onload = function() {
        $(‘body > :not(article)’).hide();
        $(‘article’).appendTo(‘body’);
        $(“.emphasis1″).first().css({‘margin-top’: ‘0px’});
    }
</script>
<style>
    body,html {background: none;}
    header{text-align:left;}
</style>

<script src=”https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.2/iframeResizer.contentWindow.min.js” integrity=”sha512-14SY6teTzhrLWeL55Q4uCyxr6GQOxF3pEoMxo2mBxXwPRikdMtzKMYWy2B5Lqjr6PHHoGOxZgPaxUYKQrSmu0A==” crossorigin=”anonymous” referrerpolicy=”no-referrer”></script>

Eso hará que al exportar el elp, deje en cada página solo los idevice, quitando todos los menú y el resto de elementos del estilo que uséis (solo lo he probado con Educaand_Adultos). Aquí tenéis un ejemplo. Cuidado porque no podréis navegar por las páginas, tenéis que saber como se llama cada una para encontrarla, si exportáis en vuestro equipo como carpeta autocontenida veréis todas las páginas html que se generan y su nombre.

Ahora nos vamos al elp donde queremos incluir páginas del elp anterior. Nos vamos al mismo lugar, Personalizar la sección HEAD y ahora añadimos el siguiente código:

<script src=”https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.2/iframeResizer.min.js” integrity=”sha512-dnvR4Aebv5bAtJxDunq3eE8puKAJrY9GBJYl9GC6lTOEC76s1dbDfJFcL9GyzpaDW4vlI/UjR8sKbc1j6Ynx6w==” crossorigin=”anonymous” referrerpolicy=”no-referrer” ></script>
<style>
       iframe { width: 100%; }
</style>
<script type=”text/javascript”>
      window.onload = function () {
                $(“iframe”)[0].setAttribute(“scrolling”, “no”);
                $(“iframe”)[0].removeAttribute(“width”);
                $(“iframe”)[0].removeAttribute(“height”);
                $(“.ExternalUrlIdevice>.toggle-idevice”).hide();
                iFrameResize({ log: true, heightCalculationMethod: “documentElementOffset” });
      };
</script>

Y por último solo nos queda usar el iDevice Sitio Web Externo en la página de nuestro libro que queramos y añadimos la url de una de las páginas del primer elp exportado. La opción de altura del marco es irrelevante en nuestro caso. El código que hemos puesto antes en la personalización de HEAD hace que no tenga ninguna función.

Aquí tenéis un ejemplo que incluye páginas del primer elp que os enlace antes. 

Además de en el alojamiento de mi centro, lo he probado en graasp y funciona perfectamente, solo le he visto un fallo, si la página que incrustas tiene varios iDevices y el usuario los minimiza, no cambia el tamaño y queda un espacio en blanco al final, cuando debajo no hay otros iDevice ni siquiera se nota, pero si hay algún iDevice al final si se queda un espacio en blanco, se puede ver en el ejemplo que he pasado antes en la segunda página que tiene iDevice antes y después del incrustado.

Sistema para publicar elp de eXeLearning de forma automatica

A continuación voy a explicar como he montado un sistema en mi centro para que los elp que los profesores usan en sus clases sean exportados en la web del centro de forma automática, y lo mejor de todo, para que cuando se hace cualquier cambio en el elp, esas modificaciones se propaguen automáticamente al material público de la web del centro.

Como una imagen vale más que mil palabras, y un vídeo mil veces más que una imagen, a continuación tenéis un vídeo con el funcionamiento en directo del sistema:

Y en esta ilustración un esquema del funcionamiento:

Basicamente, con un servicio (rclone_sync) que llama a rclone cada 10 segundos sincronizo los elp de la unidad compartida de drive a una carpeta del servidor. Otro servicio (observa_materiales) que hace uso de inotify detecta los cambios en los archivos que sincronizo. Cuando se detecta un cambio (nuevo archivo, archivo borrado o archivo modificado) se llama a script_materiales.sh que a su vez llama a exe_do para que exporte el elp como una carpeta web autocontenida. Dicha carpeta se aloja en materiales_web guardando la misma jerarquía de carpetas que nos encontramos en la unidad compartida. Y por último el mismo servicio rclone_sync sincroniza con rclone la carpeta materiales_web con el alojamiento web que tenemos contratado en el centro. En el caso de borrado de un archivo elp, se elimina la carpeta exportada previamente.

Ahora vamos al lio. Para montar el sistema necesitamos los siguientes elementos:

  • Un servidor x86 con conexión a internet encendido 24/7, pongo x86 porque creo que de eXeLearning no hay versiones arm para las raspberrypi, al menos yo no las conozco, pero podéis usar cualquier equipo viejo que tengáis por el centro, o si como yo ya tenéis un servidor, simplemente es cuestión de ampliar su uso.
  • Un alojamiento web propio, nosotros tenemos con ovh un alojamiento de 100Gb por 25€ al año, más que suficiente para todos los profesores del centro, además tiene el certificado para https incluido. Este alojamiento os debe dar un acceso por ftp.

Pues si tenéis eso en vuestro centro es hora de ponernos manos a la obra.

Lo primero que vamos a hacer es instalar eXeLearning en nuestro servidor, no hace falta que el servidor tenga entorno gráfico, ya que no vamos a usar la aplicación como tal, sino el ejecutable exe_do que trae la instalación. De hecho mi servidor no esta conectado a ningún monitor, y todo lo he hecho a través de ssh. A fecha 17 de noviembre de 2021 la última versión es 2.6, si cuando leas esto hay una versión superior busca el enlace del archivo deb en su web.

para ello escribimos en la terminal:

wget https://descargas.intef.es/cedec/exe_learning/2.6/intef-exe_2.6_all.deb

Una vez descargado el paquete lo instalamos con:

sudo dpkg -i intef-exe_2.6_all.deb

Seguramente tendremos dependencias no instaladas y dpkg nos avisará de ello. Asi que tendremos que instalar dichas dependencias y terminar de configurar el paquete de exe con:

sudo dpkg -f install

Ahora vamos a comprobar que eXe se ha instalado correctamente y que exe_do funciona, que es realmente el ejecutable que vamos a necesitar nosotros, ejecutamos lo siguiente que nos dará información de cómo usar exe_do:

exe_do -h

Ahora vamos a instalar inotify, este es el sistema que nos avisará cuando haya cambios en los archivos elp, y avisará a nuestro script.

sudo apt install inotify-tools

Antes de pasar a la siguiente parte del tutorial, debéis tener rclone configurado con la unidad compartida de Google Drive, así como el acceso ftp del alojamiento web que tengáis contratado, en este y este articulo expli como hacer ambas cosas.

En mi caso la configuración de la unidad compartida la tengo con el nombre materiales en rclone y la configuración del alojamiento la tengo con el nombre ovh y dentro del ftp, la carpeta que voy a usar para las exportaciones es www/exe2

También tenéis que tener dos carpetas en vuestro home, una para alojar los archivos de la Unidad Compartida y otro para alojar los archivos de las exportaciones. En mi caso la primera es /home/jamelrom/materiales y la segunda es /home/jamelrom/materiales_web

Ahora vamos con los servicios, necesitamos dos. El primer servicio lo vamos a montar idéntico a como lo explico en este artículo la única diferencia es el apartado ExecStart que en este caso tiene que dar cabida para 2 procesos: el que sincroniza Google Drive con mi carpeta local, y el que sincroniza mi carpeta local de elementos exportados con el alojamiento web. Yo he llamado al servicio rclone_sync.service tal y como se llama en ese artículo. El timer lo he puesto en este caso en 10 segundos (10s) en vez de 1 minuto. El ExecStart debe quedar así:

ExecStart=/bin/bash -c “rclone sync materiales: /home/jamelrom/materiales_web ftp_ovh:www/exe2/ –config /home/jamelrom/.config/rclone/rclone.conf && rclone sync /home/jamelrom/materiales/ –config /home/jamelrom/.config/rclone/rclone.conf “

Delante del config son dos guiones lo que hay que poner, pero WordPress lo cambia a un guión largo y no he visto la forma de cambiarlo.

Ahora vamos con el siguiente servicio, observar_materiales.service, este servicio lanzará un script que tendremos en nuestro home, para ello debemos crear el archivo con:

sudo nano /etc/systemd/system/observa_materiales.service 

con el siguiente contenido:

[Unit]
Description=Observa la carpeta materiales
[Service]
Type=simple
ExecStart=/bin/bash /home/jamelrom/script_materiales.sh
Restart=always
RestartSec=1
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=observa_materiales
User=jamelrom
Group=jamelrom

[Install]
WantedBy=multi-user.target

cambia jamelrom por tu usuario en el archivo

Ahora creamos el script, con:

nano script_materiales.sh con el siguiente  contenido

De nuevo cambia jamelrom por tu usuario en el script

por ultimo nos queda activar el servicio observa_materiales.service para ello ejecutamos:

sudo systemctl enable observa_materiales.service

Algunos comandos útiles que nos permitirán conocer como esta funcionando el servicio:

  • journalctl -fu observa_materiales nos muestra la salida por pantalla del servicio, lo que nos será útil para observar posibles errores de exe_do
  • sudo systemctl restart observa_materiales.service nos permite reiniciar el servicio, si hacemos cambios en el script_materiales.sh es necesario reiniciar el servicio

 

OPCIONAL

Este apartado es opcional, pero muy recomendable.

Si solo usáis los estilos que vienen por defecto en eXeLearning no tenéis que hacer nada, pero si usáis por ejemplos los estilos Educaand de la Junta de Andalucía, o alguno personalizado para vuestro centro tenemos que instalarlo, para que se pueda desplegar bien con exe_do, como en nuestro servidor no tenemos pantalla (si tenéis pantalla y entorno gráfico, podéis simplemente abrir exe e instalar los estilos que necesitéis) navegamos en algún equipo donde tengamos instalados todos los estilos que nos interesan hasta 

C:\Users\tu_usuario\AppData\Roaming\exe\style en Windows

/home/tu_usuario/.exe/style en Linux

Veremos algo asi:

ahora tendremos que copiar las carpetas que ahí nos encontramos en nuestro servidor en la ruta /home/tu_usuario/.exe/style 

Yo, como en el servidor tengo montada con rclone mi unidad de Google Drive lo más cómodo ha sido pegar las carpetas a Google Drive y pasarlas todas a la configuración de exe del servidor con:

cp -r gdrive/gmel/exe .exe/style

teniendo el prompt en la carpeta personal y teniendo montada mi unidad de drive en gdrive/gmel

Con la instalación por defecto, si algún compañero sube un elp con un estilo que no sea uno de los que trae exe por defecto, o uno de los que acabamos de copiar, exe_do usará el estilo INTEF, si queréis que el estilo por defecto sea otro diferente, podéis hacerlo editando el fichero .exe/exe.conf por ejemplo con 

nano .exe/exe.conf

Esta es la parte que a nosotros nos interesa, en mi caso he sustituido INTEF por Educaand_Cordoba que es el estilo Educaand_Adultos con el logo de nuestro centro, vosotros podéis usar el estilo que queráis, pero tiene que llamarse exactamente igual que el estilo, que es la carpeta que antes hemos copiado a .exe/style

OPCIONAL 2

Otro elemento opcional pero de nuevo muy recomendable, con un pequeño cambio en nuestro script y añadiendo una página nueva en nuestros libros de eXeLearning vamos a tener nuestro contenido automáticamente exportado a pdf y en formato zip, listo para ser usado con eXereader o para que otro docente se lo descargue y modifique en eXeLeraning. Y todo esto igual que la versión web, cada vez que cambiemos el archivo elp, se reconstruirá el pdf y el fichero zip.

Tenemos que instalar dos utilidades en nuestro servidor con:

sudo apt install wkhtmltopdf

sudo apt install xvfb

Ahora hay que añadir dos líneas al script, una linea volverá a llamar a exe_do para generar el archivo zip que permite su uso con exereader y la otra linea, de nuevo con exe_do generará en un directorio temporal ~/temp/single el material en un formato de página html única, y luego con wkhtmltopdf convierte el html en pdf, la aplicación xvfb nos permitirá lanzar esta última herramienta de conversión sin entorno gráfico, ya que parece que por un bug da error, aquí tenéis el script completo con esas dos líneas, recordad que después de hacer cualquier cambio en el script hay que reiniciarlo con:

sudo systemctl restart observa_materiales.service

Una vez cambiado el script si añadís este elp como página de vuestros proyectos, tendréis una página al final de vuestros materiales como ésta.

Problemas conocidos

El sistema tiene dos problemas conocidos:

  • Si creas una carpeta en la unidad compartida, creas en su interior uno o varios elp, se deplegaran en el servidor dichos elp. Si ahora borras dichos elp y la carpeta, se borrarán los contenidos desplegados, pero en el servidor se mantendra la carpeta que contenian los elp pero vacía.
  • Si creas un elp y tiene un nombre que es igual al de una carpeta con la que comparte carpeta padre, en el servidor se borraran todos los contenidos que cuelgan de esa carpeta con el nombre del elp, y solo serán regenerados los materiales cuando se actualicen, pero cuando ese elp “problematico” se vuelva a actualizar volverá a borrar los contenidos desplegados de la carpeta homónima. En mi caso le he dicho a mis compañeros que los elp tienen que estar en carpetas que no contengan otras carpetas, así eliminamos el problema. A continuación una imagen con la situación que genera conflicto.

 

Nueva funcionalidad del Coloreador de Séneca – Pasar lista en el futuro

Este titulo tan llamativo de Pasar lista en el futuro, esconde una necesidad que se presenta en mi centro, el IPEP Córdoba, nosotros en educación semipresencial tenemos dos turnos en cada curso, de mañana y tarde. Yo este año, imparto mi asignatura el martes de 20 a 22 horas y la misma el jueves de 10:30 a a 12:30, el alumnado se matricula en uno de los dos turnos, pero damos libertad total (salvo problemas de aforo) para que cada semana pueda venir en un turno u otro, algo que facilita mucho la conciliación entre la vida de adulto y los estudios. Pero a nosotros nos genera un pequeño problema, cuando un alumno del turno del jueves viene el martes, yo no puedo marcarle asistencia a clase porque séneca no permite pasar faltas de días del futuro. 

Para este problema he desarrollado la siguiente funcionalidad en el Coloreador, que se activa dentro de iSeneca Web. A partir de ahora nos aparece un nuevo botón que se llama Guardar:

 

 

Si estamos a martes y entro en mi hora de clase del jueves, puedo pasar lista, pulsar el botón Guardar y dichas asistencias quedarán guardadas en el Coloreador, además se descargará la página HTML, esto se hace por si el jueves ha cambiado la lista de alumnos que había el martes, cuando el jueves vuelva a entrar en dicha clase para pasar lista, me aparecerán las asistencias que marque el martes, si ha cambiado la lista de alumnos el Coloreador me avisará con un mensaje como el siguiente:

Si nos pasa eso solo tenemos que ir a nuestra carpeta de descargas y abrir el último archivo html con nombre fatas_guardadas.html ahí tenemos las faltas que marcamos el martes.

Cuidado!!! como he dicho antes esas faltas no quedan guardadas en Séneca, sino que están almacenadas en el Coloreador en nuestro ordenador, así que para recuperarlas debemos entrar el jueves con el mismo ordenador y navegador con el que pulsamos Guardar el martes.

A continuación hay un vídeo donde explico la nueva función en directo.

 

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies