Maintenance Mode
Nombre del Plugin: ort_maintenancemode
El objetivo del plugin es brindar al administrador del sitio la posibilidad de cambiar el estado de conexion del mismo. Basicamente existen 2 estados (Active / Maintenance). El plugin generara una nueva solapa titulada "Maintenance Mode", en la misma el Administrador podra realizar un switch entre los dos estados posibles, para ello contara con dos radio buttons cuyos valores seran "Active" y "Maintenance". En caso de haber seleccionado la opcion que cambia a estado de Mantenimiento del sitio, el administrador debera ingresar un numero de articulo, ese articulo (creado de antemano) sera el encargado de informar a los navegantes (de manera amigable y diplomatica, dentro de lo posible) la imposibilidad momentanea de navegacion por los contenidos del sitio debido a tareas de mantenimiento.
El ort_maintenancemode_adm sera un plugin que funcionara del lado del administrador y su funcionalidad "core" radica en interceptar los Responses del textpatern para cambiarlos (si el estado="Maintenance") antes del render de contenidos solicitados en el Request.
Hector Rosso - Daniel Mammana
Posible Implementación
El hecho de que este plugin permita al usuario poner en modo mantenimiento el TextPattern implica que es posible que el usuario esté pensando en:
- hacer cambios fundamentales que pueden hacer que el TextPattern en sí se ponga inestable en algún momento (e.g. mover la base de datos de un lado a otro y que la misma no exista en algún momento)
- tratar de resolver algún problema grave con el TextPattern que no está andando bien por algún motivo.
Esto me hace pensar que el plugin debería depdner lo menos posible en toda la lógica del TextPattern para mostrar las cosas, con lo cual, el mismo no debería, en particular, usar la base de datos... igual, sospecho que si no hay ningún acceso a la base de datos igual va a palmar.
Visión del usuario
En la página de administración debería verse:
1. un par de radio-buttons que le permitan al usuario poner el TextPattern en modo "maintenance" u "on-line". 1. una ventana de texto para que el usuario pueda poner el mensaje que va a aparecer en modo maintenance.
Implementación
En una primera versión, podemos poner un texto simple y envolverlo (o no) en el HTML mínimo imprescindible para devolverlo.
Más adelante, deberíamos soportar dos o tres opciones:
1. Texto simple. 1. HTML completo (algo que el usuario edite con dreamweaver o frontpage y pegue ahí. 1. Textile ("the TextPattern way") nosotros deberíamos traducir el Textile a HTML y guardarlo en modo HTML.
Todo deberíamos guardarlo en archivos de texto en el directorio de files o en el directorio textpattern directamente. Nuestros archivos deberían llamarse ort_maintenance_xxxx de modo que quede claro qué es.
Podría haber un ort_maintenance_control y un ort_maintenance_data. El primero nos dirá si debemos mostrar nuestra paginita o dejar que el TextPattern labure normalmente... la no existencia del archivo de control implica que el TextPattern labura normalmente. Cuando permitamos al usuario seleccionar si el mensaje lo guarda como texto simple, como HTML o como Textile, esto también lo tendremos que codificar dentro de ort_maintenance_control. En ort_maintenance_data vamos a tener el HTML listo para mandar a pantalla en caso de estar en modo maintenance.
callback
Si bien no encontré mucha información más allá de lo poco que dice el TextBook acerca de los callback events del lado público, la forma de colgarse es muy simple:
if (@txpinterface == 'public')
register_callback("ort_publico", "pretext");
function ort_publico($event,$step) {
$out = <<<EOT
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>MANTENIMENTO DEL SITIO</title>
</head>
<body>
<p align="center" style="margin-top:4em">Sitio en mantenimiento</p>
</body>
</html>
EOT;
echo $out;
exit;
}
Si ponen esto en un plugin funciona "derecho viejo". Hay que ver de, en lugar de poner la página hardwired en el fuente, leerla de ort_maintenance_data y mostrarla o no (y de un modo u otro) según lo que haya en ort_maintenance_control.
