1 PostNuke Web Framework Mateo Tibaquirá Universidad del Cauca Nov/07
2 Introducción Historia, Características, Beneficios y Desventajas. Versiones, Licenciamiento. Instalación Requerimientos, Distribuciones. Instalando, Actualizando, Migrando a PostNuke. Conceptos generales Themes, Módulos, Hooks y Bloques. Distribución en el sistema de archivos. Panel de administración: Estructura, Configuración. Instalando nuevos módulos al sistema. Configurando: página de inicio, usuarios, contenidos. Sistema de Permisos Temas a tratar Tabla de Contenidos
3 Posibles distribuciones Portal de Noticias Comunidad de Práctica Sitio Web Empresarial Página Web Personal Desarrollando en PostNuke API y clases útiles: DBUtil, SecurityUtil Estructura y funcionamiento de un módulo Desarrollo Ágil con ModuleStudio Temas a tratar Tabla de Contenidos
4 PostNuke nació como un Fork de PHP-Nuke cuando un grupo de desarrolladores talentosos se vieron frustrados con las limitaciones en el desarrollo de este último, y deciden desarrollar una de las mejores soluciones del mundo de una forma más abierta; re-escribir el código enfocándose en altos niveles de seguridad y rendimiento. Un API modular que facilite el desarrollos de terceras partes, entre otros objetivos. El proyecto como tal comenzó en Julio de 2001. Fue el primero en proveer un centro de operaciones como SourceForge para los desarrolladores de módulos. En Junio del 2004 se conformó la PostNuke Software Fundation, para asegurar que los objetivos y la dirección del proyecto de mantengan dentro de la filosofía del software libre, código de calidad, colaboración y estándares abiertos. Hasta el día de hoy la comunidad se ha mantenido y la re-escritura de la aplicación está casi completa para el lanzamiento de la ùltima versiòn estable. Introducción Historia
5 API maduro y robusto, todo un Framework de Aplicaciones Web. Enfocado a tener altos niveles de seguridad. Estructura Modular completamente extensible. Sistema Avanzado de permisos grupales. Soporte Multilenguaje. Soporte de URLs amigables. API para realizar búsquedas internas. Instalación guiada basada en Web. Potente módulo para soportar y configurar editores WYSIWYG. Soporte para módulos plenamente “plantillados” que permite la personalización del sistema a través de HTML simple y sin modificar el código de la aplicación. Muy ventajoso para unir el trabajo de diseñadores y desarrolladores. Abstracción de Base de Datos con AdoDB + DBUtil Introducción Características
6 Arquitectura fácil de entender y muy intuitiva. El API del núcleo es el mismo para los modelos, vistas y controladores usados en los módulos. El re-uso de APIs y módulos es fomentado por el diseño. Bajo acoplamiento y cohesión, lo que da como resultado aplicaciones fáciles de desarrollar y probar. Diseñado para ser cacheado. API robusto y clases útiles que facilitan mucho el desarrollo de aplicaciones Web de alta complejidad. Cumple con los estándares de la W3C y las recomendaciones WCAG. Introducción Beneficios Desventajas Curva de aprendizaje alta para algunos aspectos como Smarty y el sistema de Permisos. Se basa en muchos archivos pequeños, por lo que el servidor debe ser optimizado.
7 Actualmente la version estable es la 0.764. La re-escritura del código para la 0.8 ha tomado casi cuatro años, mejorando muchisimo la calidad del Framework. Recientemente el Comité Directivo de la PostNuke Software Fundation decidió cambiar el nombre para reflejar el comenzar de nuevo de esta aplicación y quitarse la mala imagen *Nuke. Junto con el cambio de nombre, la numeración también cambia y PostNuke 0.8 va a ser equivalente a $NewName 1.0 Introducción Versiones Licenciamiento Software bajo licencia GNU GPL. Uso libre que permite modificaciones sin restricción para adaptarse a los requerimientos específicos, y libre distribución de modificaciones respetando los créditos de los autores originales.
8 PHP 4.3.x o mayor. MySQL 4.1.x o mayor. Instalación Requerimientos Blogging, Scouts… Grupos de Investigación UniCauca… Distribuciones
9 Paso 1: Lenguaje principal del sitio Instalación Instalando PostNuke 0.8
10 Paso 2: Aceptando la licencia GNU GPL Instalación Instalando PostNuke 0.8
11 Paso 3: Requerimientos del sistema Instalación Instalando PostNuke 0.8
12 Paso 4: Información de la Base de Datos Instalación Instalando PostNuke 0.8
13 Paso 5: Tipo de instalación a utilizar Instalación Instalando PostNuke 0.8
14 Paso 6: Crear al usuario Administrador Instalación Instalando PostNuke 0.8
15 Paso 7: Seleccionar el módulo del Homepage Instalación Instalando PostNuke 0.8
16 Paso 8: Seleccionar el Theme del sitio Instalación Instalando PostNuke 0.8
17 Paso 9: Listo! Créditos a todos los esfuerzos. Instalación Instalando PostNuke 0.8
18 Themes, Módulos, Hooks y Bloques Conceptos básicos Conceptos generales: Themes, Módulos, Hooks y Bloques
19 Se encargan de la apariencia global del sitio (estilos, imágenes, a veces menús). Pueden darle una disposición diferente al contenido dependiendo de la sección (módulo). También pueden asignar diferentes paletas de colores a cada sección (módulo). Aquí se ubican las plantillas y estilos personalizados que sobre-escribirán a los que vienen por defecto en los módulos. Conceptos generales: Themes, Módulos, Hooks y Bloques Los Themes
20 Conceptos generales: Themes, Módulos, Hooks y Bloques Los Themes
21 Conceptos generales: Themes, Módulos, Hooks y Bloques Los Themes
22 Son la base funcional de la plataforma. Siguen un patrón MVC no Orientado a Objetos. Pueden definir relaciones de dependencia con otros módulos. Definen sus tablas, esquemas de permisos, controladores, modelos (APIs), vistas… Contienen los elementos que necesitan para funcionar en su propia carpeta. Conceptos generales: Themes, Módulos, Hooks y Bloques Los Módulos
23 Conceptos generales: Themes, Módulos, Hooks y Bloques Los Módulos
24 Pueden ser clasificadas según el tipo de modelos (escenarios - roles). Por defecto se tienen APIs de usuario y administrador. Se localizan en: modules/ModName/pntypeapi.php por ejemplo: modules/News/pnuserapi.php Las funciones del API se definen de una forma única: function ModName_typeapi_FuncName($args), donde $args es una matriz de parámetros; y son llamadas mediante la siguiente función del core-API: pnModAPIFunc(‘ModName’, ‘type’, ‘FuncName’, $args). Los APIs de los módulos pueden ser usados desde cualquier punto del sistema (Modelos, Vistas y Controladores) para extraer datos o usar las funcionalidades de otros módulos. Conceptos generales: Themes, Módulos, Hooks y Bloques Módulos: El Modelo (API)
25 Basadas en el muy conocido proyecto: Smarty. Sintaxis integrada al código HTML. Definen la disposición, estilos y efectos aplicados al contenido específico del módulo. El núcleo completo está embebido en plugins para hacer re-uso de las funciones del core-API dentro de las plantillas. Por ejemplo: Una variable de sesión asignada en la plantilla: Conceptos generales: Themes, Módulos, Hooks y Bloques Módulos: La Vista
26 Conceptos generales: Themes, Módulos, Hooks y Bloques Módulos: La Vista $article.title $article.categoria $article.hometext $article.bodytext $article.notes pnarticleadminlinks
27 Conceptos generales: Themes, Módulos, Hooks y Bloques Módulos: El Controlador Destinado a recibir los datos GET/POST/FILE/SESSION, cargar el(los) API(s) y poner los resultados en las plantillas, devolviendo una salida HTML. Se localizan en: modules/ModName/pntype.php por ejemplo: modules/News/pnuser.php Las funciones entrada se definen de una forma única: function ModName_type_FuncName($args); y el llamado es genérico a través de la URL: index.php?module=ModName&type=Type&func=FuncName o mediante la siguiente función del core-API: pnModFunc(‘ModName’, ‘type’, ‘FuncName’, $args). Tiene una función ejecutada por defecto: ‘main’.
28 Son módulos que tienen un único propósito: Prestarles servicios a los demás. Escuchan los eventos de otros módulos para brindarles funcionalidad añadida. Se llaman para 'item', 'category‘, 'module‘, en los eventos 'new', 'create', 'modify', 'update', 'delete', 'transform', 'display', 'modifyconfig', 'updateconfig‘. Ejemplos: EZComments, Ratings, pnUpper, Tags AutoLinks, bbCode, bbSmiles, wikiCode HitCount, trackback Conceptos generales: Themes, Módulos, Hooks y Bloques Los Hooks
29 Son pequeñas funcionalidades que no son tan grandes como para implementar un módulo como tal o pequeñas funciones usadas para extraer cierta información y acompañar el contenido principal de alguna sección del sitio. Residen dentro de los módulos a los que se relacionan, ubicándose en la carpeta: modules/ModName/pnblocks. Pueden crearse bloques personalizados e incluirlos en la carpeta config/blocks. También tienen una plantilla para su salida HTML. Conceptos generales: Themes, Módulos, Hooks y Bloques Los Bloques
30 A nivel general los archivos se organizan así: Conceptos generales: Distribución del sistema de archivos Distribución del sistema Código Personalizado IconSets, imágenes usadas globalmente Créditos, changelog, licencia, manual Núcleo, utilidades, otros proyectos utilizados por el sistema Archivos temporales de instalación Javascript utilizado globalmente Archivos globales de lenguage Módulos de terceras partes Carpeta para archivos temporales Módulos del Núcleo de PostNuke Themes disponibles en el sistema
31 /includes: Conceptos generales: Distribución del sistema de archivos El núcleo
32 /system: Conceptos generales: Distribución del sistema de archivos Módulos del sistema
33 /modules: Conceptos generales: Distribución del sistema de archivos Módulos de terceras partes
34 /config: Conceptos generales: Distribución del sistema de archivos Personalización
35 /themes: Conceptos generales: Distribución del sistema de archivos Personalización Las plantillas del Theme pueden “sobre-escribir” a las plantillas que vienen por defecto en los módulos del núcleo o a los de terceras-partes, así dentro del Theme permanecen las modificaciones que se hagan al sistema y conservar esos cambios ante una eventual actualización del núcleo.
36 URL de entrada: admin.php Conceptos generales: Panel de administración: Estructura, Configuración Panel de Administración
37 Subir, Regenerar lista, Instalar, Activar, y Listo! Conceptos generales: Instalando nuevos módulos al sistema Instalando Módulos homepage Configurando: página de inicio Configurando: Usuarios Users admin panel Pages, News, Scribite Configurando: Contenidos
38 Conceptos generales: Configurando: página de inicio, usuarios, contenidos. Sitios de Estudio
39 Conceptos generales: Configurando: página de inicio, usuarios, contenidos. Sitios de Estudio
40 Conceptos generales: Configurando: página de inicio, usuarios, contenidos. Sitios de Estudio
41 Conceptos generales: Configurando: página de inicio, usuarios, contenidos. Sitios de Estudio
42 Los permisos son reglas aplicadas a los grupos de usuarios del sistema que definen el nivel de acceso a cada componente/instancia del sistema. Se sobre-escriben según el orden asignado en la lista de permisos. Sistema de Permisos Conceptos generales: Sistema de Permisos
43 Desarrollando en PostNuke: API y clases útiles: DBUtil, SecurityUtil API y Utilidades El API de PostNuke centraliza las funciones que necesitamos de una forma intuitiva. SecurityUtil FormUtil DBUtil Loader AjaxUtil CategoryUtil
44 DBUtil DBUtil es una poderosa clase que nos permite abstraer el manejo de la base de datos a un nivel muy alto. Desarrollando en PostNuke: API y clases útiles: DBUtil, SecurityUtil
45 Desarrollando en PostNuke: Estructura y funcionamiento de un módulo Módulos: El Controlador Pseudocódigo: Funcion del módulo News que muestra un artículo. Recibe como parámetro el ID del artículo. function news_user_display($args) { $sid = (int)FormUtil::getPassedValue('sid', null, 'REQUEST'); $apiargs = array(‘sid'=>$sid); $article = pnModAPIFunc(‘News', 'user', 'getarticle', $args); pnModAPIFunc('News', 'user', 'incrementreadcount', $args); $pnRender = pnRender::getInstance('News'); $pnRender->assign(‘article', $article); return $pnRender->fetch('news_user_article.htm'); } * esta función retorna un artículo renderizado cuando es llamada via http://www.domain.edu/index.php?module=News&func=display&sid =X
46 ModuleStudio MóduleStudio es una herramienta basada en los principios del Desarrollo de Software Orientado por Modelos (MDSD) que abstrae a un nuevo nivel la creación de módulos en PostNuke. Desarrollando en PostNuke: Desarrollo Ágil con ModuleStudio
47 ModuleStudio Desarrollando en PostNuke: Desarrollo Ágil con ModuleStudio
48 ModuleStudio Desarrollando en PostNuke: Desarrollo Ágil con ModuleStudio
49 ModuleStudio Desarrollando en PostNuke: Desarrollo Ágil con ModuleStudio
50 Muchas gracias! Mateo Tibaquirá PostNuke Documentation Team