chamilo para-desarrolladores-1.9
TRANSCRIPT
Chamilo 1.9 para desarrolladores
Historia de versiones
1.8.6.21.8.7
1.8.7.11.8.8
1.8.8.21.8.8.4
1.9 -> noviembre 2011?
Comunidad
LMS
AsociaciónSocios
Empleo
Software (libre)
Comunidad
● 660,000 usuarios en el mundo (+1000/día)● 1100 portales● 300 activos en foros● 27 desarrolladores● 40 traductores● 50 “reporteros”/”consejeros”
Mejoran la calidad del software
Facilitan su aprendizaje
Herramientas para programar
● ¿Eclipse 3.2 + PHPEclipse + Subclipse ? ● Navegadores + Flash player 9● Bajo MS-Windows
● EasyPHP / WAMPP (Apache + PHP5 + MySQL)
● Bajo Ubuntu Linux● sudo apt-get install apache2 libapache2-mod-php5
mysql-server phpmyadmin● Descargar http://www.chamilo.org/es/download-es/
Herramientas
Estructura
Chamilo
Base principal: 105 tablas
+ stats+ users
Base cursos: 85 tablas
Bases de datos y Caching
● Campos eficientes = ancho fijo● Tablas en Cache = memoria RAM++
Hojas de referencia
http://beeznest.wordpress.com/2010/04/05/chamilo-developers-quick-reference-sheets/
http://beeznest.wordpress.com/?s=quickref
Recursos
● http://www.chamilo.org/forum● http://support.chamilo.org/projects/chamilo-18/wiki● http://support.chamilo.org● http://code.google.com/p/chamilo (classic)● Convenciones de código (wiki)● http://translate.chamilo.org (Chrome)
Plugin, tool e integración
● Plugin– Agrega funcionalidad– No modifica el código de Chamilo
● Tool– Agrega funcionalidad– Modifica el código de Chamilo
Plugin, tool, integración
● Integración
– Integrar tool o plugin dentro de Chamilo– Soportarlo en las versiones siguientes
● Ejemplos– Messages (tool)– Date (plugin)– Search (tool)– Glossary (tool)
Plugin, tool, integración
Desarrollemos uno!
● Ejemplo: Glosario● Necesitamos
– Un editor de textos (o de código PHP)– Un navegador– Una instalación de Chamilo– Una herramienta para consultar la BD
¿Desarrollamos uno?
● ¿Un glosario, qué es?– Un directorio de palabras– Con definiciones– Que puedo consultar como alumno– Que puedo modificar como profesor
¿Desarrollamos uno?
● En Chamilo necesito– Declarar este tool– Integrarlo dentro de la estructura– Darle una base de datos– Darle una interfaz– Darle unas funciones de acceso– Darle términos traducibles para la interfaz
¿Desarrollamos uno?
● Declarar– main/inc/lib/main_api.lib.php– define('TOOL_GLOSSARY', 'glossary');
¿Desarrollamos uno?
● Integración en la estructura– main/glossary/– Nuevo fichero main/glossary/index.php
¿Desarrollamos uno?
● Base de datos
CREATE TABLE glossary (id int auto_increment,
title varchar(200),
description text
);
¿Desarrollamos uno?
● Base de datos (2)– Para nuevas instalaciones
● main/inc/lib/add_course.lib.inc.php
– Para actualizaciones● main/install/migrate-db-1.8.8-1.8.9.pre.sql
– Para el enlace dentro de la página de cursoapi_sql_query("INSERT INTO `" . $tbl_course_homepage . "` (...)
VALUES ('" .TOOL_GLOSSARY."', 'glossary/index.php', 'glossary.gif', '1', '0', '', 'NO', '_self', 'authoring')");
¿Desarrollamos uno?
● Base de datos (3)– Declarar tabla dentro de
main/inc/lib/database.constants.inc.php :// glossary tables
define('TABLE_GLOSSARY', 'glossary');
¿Desarrollamos uno?
● Interfaz<?php
/* License terms */
/**
* Description of the script
*/
require_once '../inc/global.inc.php';
$tool = TOOL_GLOSSARY;
$abc = 5 + 4; //code logic
Display::display_header($tool);
echo $abc; //display code
Display::display_footer();
¿Desarrollamos uno?
● Funciones de acceso– Si es de acceso general -> main/inc/lib– Si es de acceso local -> main/glossary/
● De preferencia una clase● main/glossary/glossary.class.php
class glossary {
public var $terms;
public static function glossary(...) {
...
}
public static function get_terms_for_display(...) {...}
}
¿Desarrollamos uno?
● Términos traducibles– Agregar main/lang/spanish/glossary.inc.php
● Agregar mis variables en forma
$MyLanguageVariable = “Mi variable de idioma”;
– Usar get_lang('MyLanguageVariable')
¿Desarrollamos uno?
● Interfaz (2)<?php
/* License terms */
/**
* Description of the script
*/
$language_files = array('glossary');
require_once '../inc/global.inc.php';
require_once 'glossary.class.php';
$tool = TOOL_GLOSSARY;
$glossary = new glossary();
Display::display_header($tool);
echo $glossary -> get_terms_for_display($_GET['term_id']);
Display::display_footer();
¿Desarrollamos uno?
¿Desarrollamos uno?
Bugs y parches
http://support.chamilo.org/
Bugs y parches
● Elementos esenciales de un bug report– Evitar duplicados
– Título claro
– Descripción completa
– URL o nombre del script
– Parámetros del URL
– Como reproducir (desde el login)
– Captura de pantalla
– Mensaje de error (copiar y pegar)
Bugs y parches
Fin