AEPap web en Drupal desenvolupada per Atenea tech

15
Associació Espanyola de Pediatria d'Atenció Primària

Transcript of AEPap web en Drupal desenvolupada per Atenea tech

Associació Espanyola de Pediatria d'Atenció Primària

Qui sóc

Luis Ortiz Ramos● [email protected]● @luisortizramos

Atenea tech● http://ateneatech.com● [email protected]● @ateneatech

L'AEPap

● Més de 3000 pediatres d'atenció primària

● Es sustenta en organitzacións:

○ Associacións regionals○ Grups de treball

● http://aepap.org

La nova Web

Objectiu:● Comunicar l'activitat generada per l'associació i per les

organitzacions que hi formen part. Requeriments principals:

● Contingut estàtic:○ Pàgines○ Formulari de contacte

● Contingut dinàmic:○ Secció d'actualitat○ Secció d'agenda○ Secció de biblioteca

● Organitzacions

Solució: core

Solució: mòduls contribuïts

Camps:● Link● Email● References● Date● Fieldgroup

Vistes:

● Views● Views slideshow● Calendar

Gestió de menús:● Menu block● Menu position

Gestió d'adreces:

● Pathauto● Transliteration● Token

Organitzacions

Associacions regionals i grups de treball

Organitzacions

Requeriments principals: ● Contingut estàtic:

○ Pàgines○ Formulari de contacte

● Contingut dinàmic:○ Secció d'actualitat○ Secció d'agenda○ Secció de biblioteca

Usuaris editors poden afegir contingut dinàmic només a les organitzacions de les que són membres.

Solució

● Organic Groups: No. És massa complicat de mantenir per a l'administrador

● Alternativa: tota la informació a Continguts i Usuaris

Solució

Solució: creació de continguts

El camp lloc de publicació només pot fer referencia a nodes resultat d'una vista que mostra les organitzacions de les que l'usuari actual és membre.

Solució: actualització i esborratCodi! /** * Implements hook_node_access(). */function aepap_node_access($node, $op, $account) { // Operació és actualització o esborrat if ($op=='delete' || $op=='update') { // Contingut és notícia if ($node->type=='new') { // Usuari és editor d'organització if (array_key_exists(9, $account->roles)) { $publication_place = node_load($node->field_new_publication_place['und'][0]['nid']); if (!empty($publication_place->field_members)) { foreach($publication_place->field_members['und'] as $member) { // Usuari és membre de la organització que és lloc de publicació de la notícia if ($member['uid'] == $user->uid) { return NODE_ACCESS_ALLOW; } } } } } } return NODE_ACCESS_IGNORE;}

Preguntes?