Drupal Dojo Buenos Aires Wiki - adminescolar

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
You are viewing a wiki page. You are welcome to join the group and then edit it. Be bold!

¡Estamos construyendo la aplicación web adminescolar en nuestros talleres DojoBaires!

Contános cómo lo seguiste...

Video primera sesión: http://vimeo.com/12150357
Video segunda sesión: http://vimeo.com/12152184
Video tercera sesión: http://vimeo.com/12261027
Video cuarta sesión: http://vimeo.com/12646058
Video quinta sesión: http://vimeo.com/12853587

Quinta sesión

En la ultima sesión quedamos en evaluar posibles modulos que nos permitan crear el sistema de envios para cumplir con el User story actual.

Modulos propuestos:
* Notifications
* Privatemsg
* Rules

Estamos probando notifications, y nos encontramos con dificultad para recibir los correos en un mail catchall de yahoo.com luego de varias pruebas, sospechamos que el problema esta en que yahoo no esta recibiendo los mails.

Por definir

Aun no hemos definido como relacionar las notas a los alumnos y como vincular los alumnos con los padres respectivos.

cristianwds: podemos vincular alumnos y padres con node-reference?

Dudas sobre theming en drupal :

elkin_taharon:
1 - Los mejores themes para comenzar una implementación desde cero.

  • Fusion
  • Zen

2 - Variables y configuraciones que podemos realizar en un .info
3 - Buenas practicas al momento de hacer custom regions.
4 - Conocer a fondo las funciones para sobre escribir en el template.php
5 - Algo de como hacer temas teniendo en cuenta las buenas practicas de programación en drupal.
6 - Buenas practicas para tener front pages vistosas sin sacrificar tiempo de carga ( Existen estas buenas practicas ?)

cristianwds:
1- Cuando usamos Firebug para ver adonde cambiar un atributo, como determinamos que clase es la correcta para no afectar otros sectores del sitio?
2- Como saber que nombre de tpl.php usamos cuando queremos generar uno nuevo, en Theming information dentro de Views? (Hay que conocer las sugerencias)
3- Como puedo reemplazar el nombre Tarjeta de Credito, por la imagen de la tarjeta correspondiende, existiendo varias tarjetas dentro de un tipo de contenido?
4- Como themear los botones de todo el sitio?
5- Como sobreescribir una funcion de theme en template.php?
6- Themear formulario de buscador y el resultado del buscador avanzado?

claudia:
1. Cómo hacer un theme desde cero: desde Photoshop -> Drupal theme

Lista de Themas de base
* Zen http://www.drupal.org/project/zen
• 960.gs http://drupal.org/project/ninesixty
• Genesis http://www.drupal.org/project/genesis
• ATCK http://www.drupal.org/project/atck
• Basic http://www.drupal.org/project/basic
• Beginning http://www.drupal.org/project/beginning
• Blueprint http://www.drupal.org/project/Blueprint
• Clean http://www.drupal.org/project/clean
• Flexible 2 http://www.drupal.org/project/flexible
• Foundation http://www.drupal.org/project/foundation
• Framework http://www.drupal.org/project/framework
• Hunchbaque http://www.drupal.org/project/hunchbaque
• Tendu http://www.drupal.org/project/tendu

Cuarta sesión

Creamos un repositorio público en GitHub para la aplicación, y aprendimos empujar el estado del desarrollo a este repositorio remoto desde el repositorio local en el servidor de trabajo.

Hicimos una introducción al sistema de temear (theming) de Drupal.

Pregunta para estudiar: ¿Cómo es la mejor manera de implementar el user story "Maestro quiere enviar mensajes a los padres y alumnos de su clase".

Tercera sesión

Empezamos haciendo un repositorio local Git, hablamos cómo incluir la base de datos en los resguardos (commits) para tener una foto exacto de un hito en el desarrollo (un resguardo atómico), y hicimos nuestro primer commit.

$ git init
$ git add .
$ git commit -am "Resguardo inicial"
$ git log

Estando en el directorio principal de Drupal, el init genera el repositorio (dentro del directorio ".git"), el commando add agrega todos los archivos al área de archivos habilitados para el resguardo (staging, commit), y el commit ya efectúa el resguardo. Con el comando log podemos ver qué tenemos en el repositorio.

Avanzamos bastante en la aplicación, si no pudiste estar, vean el video: http://vimeo.com/12261027

Vimos lo útiles que son los módulos http://drupal.org/project/adminrole y http://drupal.org/project/admin_menu.

Aprendimos cómo configurar el módulo Organic Groups, que requiere un tipo de contenido para los grupos, y por lo menos un tipo de contenido que van a ser habilitados como envíos asociados a los grupos.

Logramos que el secretario crea un curso, que el maestro entra en su curso y que pudiera enviar un mensaje a los padres y alumnos que el secretario había asignado al curso.

Y hicimo un commit (resguardo)!

Segunda sesión

Elegimos un nombre para la aplicación en desarrollo: adminescolar
Alentando la comunicación entre la administración de la escuela y la comunidad educativa

Instalamos un theme "base" y creamos un sub-theme propio

Instalamos el theme Fusion por los siguientes razones:

  • Ante todo queremos aprender crear aplicaciones web con el menor esfuerzo posible, y un sub-theme de fusion otorga muchos beneficios (palanquear muchos estilos reutilizables y aplicarlos a bloques, views, nodos, etc. en forma interactiva; ver página principal del theme).
  • Es un theme limpio que palanquea el paradigma del grid (ver http://960.gs ), muy fácil de "sub-temear".
  • Está en desarrollo activo.

Reconocemos que el theme Zen también hubiera sido un punto de partido muy digno. Invitamos a que se abra un wiki aquí para discutir los méritos de los distintos themes. Vean aquí una lista muy completa en el Drupal Handbook: http://drupal.org/node/323993 (Starter Themes).

En el video mostramos cómo crear el sub-theme, y como sacar el jugo del fusion.

Adoptamos una metodología de trabajo super agil

Habíamos identificado a los roles, y a los user stories de cada rol. Ahora procedemos a la construcción de la aplicación mediante el proceso de elegir uno o dos user stories como carga inmediata de trabajo (tipo kanban, ver por ejemplo http://geeks.ms/blogs/aarroyo/archive/2009/08/12/kanban.aspx ), implementarlos, y luego reevaluar toda la situación en la práctica, para decidir la carga de trabajo (backlog) siguiente.

Y en el video, vimos la gran potencia de las metodologías ágiles. Sin escuela en ellas, cuando uno está enfrentado con el "cómo empezar a implementar todo", piensa en componentes. "Primero implementamos los mensajes"; o "Los padres constituyen la médula de la aplicación, empezamos por ahí"; o "implementamos los cursos primero". El problema es que una prestación (feature) o componente no nos informa muy claramente qué hay que hacer. En cambio un user story sí.

Alguien dijo, en cambio, "implementamos los tipos de contenido primero". Hicimos la lista:

  • mensaje
  • actividad
  • calendario
  • grupo
  • registro de objeto perdido
  • perfil
  • registro de asistencia
  • plan de estudio (contiene materias)
  • materia
  • calificacion
  • cuaderno de comunicaciones
  • curso 1 B de la tarde
  • boletín
  • contacto
  • foro de discusión

Podríamos crear todos los tipos de contenido primero; pero hay dos problemas:

  • No sabemos que relación tienen entre sí, ni qué campos deben tener
  • Hay varias formas de implementarlos

En cambio, si agarramos un User Story bien carnoso en cuanto a la arquitectura, sí nos informa y nos obliga a construir lo que hace falta: y sólo lo que haga falta!

Fue muy instructivo: topamos en el grupo con el User Story "Como un maestra quiero enviar las calificaciones a los padres y a los alumnos"

Al poner manos a la obra para implementarlo, nos obliga a definir arquitectura (que tipos de contenido, qué campos requieren, qué módulos usamos, etc.) en la justa medida.

Lo primero que tendríamos que haber hecho fue simplemente dar de alta los roles (maestro, alumno, padre, secretario), pero lo hicimos en el momento justo en que teníamos que crear un user reference (referencia a usuario) al rol de maestro para asignar un maestro a un curso.

Nos pusimos a pensar: el maestro quiere enviar calificaciones a los padres y a los alumnos. Entonces necesitamos implementar el curso como grupo que contiene el maestro, los padres y los alumnos.

Decidimos hacerlo con el modulo Organic Groups (http://drupal.org/project/og). Y allí nos dimos cuenta que para crear un curso (Primero B del turno tarde) necesitamos crear un tipo de contenido curso, cosa que al crear un nodo de tipo curso estabamos creando un grupo curso. Acto seguido instalamos los siguientes módulos:

Dicho sea de paso, en el video verás cómo usamos el drush para instalar todo desde la línea de comando muy rapidamente.

Ya muy sobre la hora decidimos que necesitabamos crear los siguientes tipos de contenido con sus respectivos campos (para empezar, justo lo que necesitamos para implementar el User Story en nuestra carga de trabajo):

  • Curso

    • Division - Texto - ejemplo "Primero B"
    • Turno - Texto - ejemplo "Tarde"
    • Maestro - User Reference del rol maestro
    • Plan de estudio
  • Materia

    • Nombre
    • ....?
  • Plan de Estudio

    • Año
    • Materia - Node reference - multiple

Justo allí nos cansamos, y en la próxima sesión retomamos nuestra carga de trabajo.

Primera sesión

Decidimos hacer una aplicación para que escuelas primarias pueden ofrecer un espacio de comunicación social entre la administración de la escuela, los maestros, los padres y los alumnos.

Metodología agil para el desarrollo de una aplicación web:

  1. roles
  2. para cada rol, cuales son sus user stories
  3. analizamos los user stories
    --> plan de trabajo
    --> arquitectura: cuales modulos usamos

Ejemplo de user story (narrativa de usuario):
Como padre de un alumno, quiero saber las notas que tiene mi hijo, para poder mejor ayudarlo

rol .... acción ... para qué (valor)

Lista de roles:

SECRETARIO administración escuela
MAESTRO
ALUMNO
PADRES
VISITANTE

Los user stories:

SECRETARIO
dirigir notas por morosidad
Notificar sobre actividades extracurriculares (campamentos, etc)
Encargado de notificaciones generales
Cargar en un schedule (calendario) las actividades por grupos. (actos, fiestas deportivas)
Elementos perdidos (lost and found)

MAESTRO
consultar historial de alumnos (notas, mensajes, asistencia), comunicados de la escuela, enviar notas a los padres y alumnos
Como maestro quisiera confirmar cuales padres han leído los mensajes, registros, etc.
Como maestro quiero ofrecer pruebas interactivas que los alumnos pueden hacer desde su casa

ALUMNO
comentar las notas que observan mis padres
leer las notas propias, no de otros alumnos
consultar el plan de estudio
consultar calendario de actividades

PADRES
poder ver las notas de mi hijo, enviar mensajes al maestro, recibir newsletters de la escuela
Como padre quisiera poder evaluar los maestros de mis hijos y ver las evaluaciones de otros.
Como padre quisiera poder enviar un mensaje privado a un maestro

VISITANTE
visitante - Solicita su registro como padre, ve lista de alumnos, establece contacto con director ó maestro.

***** Vamos a agregar campos multimedia a varios de los tipos de contenido, y vamos a hacer galerias de estos elementos *****

Analizamos los user stories para ver qué tipos de contenidos Drupal vamos a necesitar:

mensajes
newsletters (comunicados)
calendario
actividad / evento
signup / registrarse para un evento
notas
faltas o asistencia
comentario / anotación
plan de estudio
grado (grupo de alumnos cursando)
"salon" ... "curso"
Curso - 3er grado B turno tarde
tipo de contenido con grado (año), número, turno
perfil
grupo

Usamos context y features para cada componente? como Open Atrium y ahora Open Publish?

Módulos que seguro necesitaremos

cck
views
content profile
organic groups
private message privatemsg
envio masivo de mail a un grupo
vbo con envio de mail a una lista de usuarios
notificaciones (como en g.d.o)
notifications

Qué vamos a hacer

Decidir que theme base utilizar, bajarlo y crear un sub-theme
Candidatos: zen, fusion-core, ninesixty. Favorito (VK): fusion-core

Aquí pulimos la lista de tipos de contenidos y los módulos que vamos a hacer para la implementación de cada user story

En el curso de la semana antes del taller del jueves 27/5, colocamos aquí cada user story y tengamos una conversación de cómo se va a implementar:

SECRETARIO
Administrar los cursos
VK: auto nodetitle para crear el titulo desde ciertos campos: por ej.: Curso 3er grado B turno tarde
Dirigir notas por morosidad
VK: privatemsg?

Notificar sobre actividades extracurriculares (campamentos, etc)
VK: evento (creado por cck/date/calendar), newsletter

Encargado de notificaciones generales
VK: newsletter (simplenews?)

Cargar en un schedule (calendario) las actividades por grupos. (actos, fiestas deportivas)

Elementos perdidos (lost and found)

MAESTRO
consultar historial de alumnos (notas, mensajes, asistencia), comunicados de la escuela, enviar notas a los padres y alumnos
Como maestro quisiera confirmar cuales padres han leído los mensajes, registros, etc.

ALUMNO
comentar las notas que observan mis padres
leer las notas propias, no de otros alumnos
consultar el plan de estudio
consultar calendario de actividades

PADRES
poder ver las notas de mi hijo, enviar mensajes al maestro, recibir newsletters de la escuela
Como padre quisiera poder evaluar los maestros de mis hijos y ver las evaluaciones de otros.
Como padre quisiera poder enviar un mensaje privado a un maestro

VISITANTE
visitante - Solicita su registro como padre, ve lista de alumnos, establece contacto con director ó maestro.

***** Vamos a agregar campos multimedia a varios de los tipos de contenido, y vamos a hacer galerias de estos elementos *****

Planificación primera sesión (19/5/2010)

La primera tarea es elegir un objetivo:
* Hay otro, de hacer un clon de Facebook (que nos vendría bien!).
* Hay otro, de hacer una herramiento de gestión de proyectos.
* Sugiero una aplicación para comparar precios de distintos Supermercados (viene bien porque el indec no existe)
* Colocar más ideas a continuación.

Votaremos los que participamos en la primera reunión.

*Agrego un "business directory" (directorio de tiendas). Gracias muy buena iniciativa! estaré espectante. CodigoDiego
*Agrego un site para escuelas primarias y secundarias. Que permita accesos por grupos (los chicos y padres) a galerías de fotos y videos, calendario de reuniones, tareas, exámenes. Foros para comunicación entre alumnos, Datos de contacto para permitir la comunicación entre padres. Newsletters para comunicaciones institucionales. Y hay mas para pensar y agregar.

Buenos Aires

Group organizers

Group categories

Cosas Baires

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: