2. Qui sóc
Luis Ortiz Ramos
● luis@ateneatech.com
● @luisortizramos
Atenea tech
● http://ateneatech.com
● hola@ateneatech.com
● @ateneatech
3. 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
4.
5. 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
10. 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.
11. Solució
● Organic Groups: No. És massa complicat de mantenir per a
l'administrador
● Alternativa: tota la informació a Continguts i Usuaris
13. 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.
14. Solució: actualització i esborrat
Codi!
/**
* 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;
}