TRABAJAR CON USUARIOS

Drupal tiene dentro de su API una forma de interactuar con los usuarios. Para ello usaremos el hook_user que tiene la siguiente forma: hook_user($op, &$edit, &$account, $category = NULL) Este hook permite reaccionar cuando diferentes operaciones se están realizando en una cuenta de usuario.

Parámetros
$op El tipo de acción u operación que se está realizando sobre los usuarios. Los posibles valores son: • "after_update": El objeto usuario ha sido actualizado y cambiado. Usé esta operación si usted necesita reusar información del objeto usuario. • "delete": La cuenta de usuario acaba de ser borrada. El módulo puede quietar los elementos adicionales que ha agregado al objeto de la base de datos. • "form": El formulario de edición de la cuenta de usuario va a ser mostrado. El módulo puede presentar elementos del formulario que quiere agregar al formulario. • "insert": La cuenta de usuario acaba de ser creada. El módulo puede utilizarlo para agregar los elementos en la base de datos. • "load": La cuenta de usuario acaba de ser cargada. El módulo puede responder a esto a agregar información adicional dentro del objeto usuario. • "login": El usuario acaba de loguearse • "logout": El usuario acaba de desloguearse • "register": El formulario de registro está a punto de ser mostrado. El módulo puede agregar los elementos que desee al formulario. • "submit": Modifica la cuenta antes de ser grabada. • "update": La cuenta de usuario acaba de ser modificada. El módulo puede grabar sus agregados personalizados al objeto usuario en la base de datos. • "validate": Permite validar los datos. • view": El objeto usuario va a ser mostrado.

&$edit El array de valores de formulario enviados por el usuario. &$account El objeto usuario en el que las operaciones van a realizarse.

1

$category La categoría de información del usuario que está siendo editada.

Return value
Varía dependiendo de la operación: • "categories": Un array que pemfielduede tener las siguientes llaves: • "name": El nombre interno de la categoría. • "title": El nombre para humanos, localizado para esta categoría. • "weight": Un entero que indica el orden para esta categoría. • "access callback": El nombre de una función access callback que se va a suar cuando se edite esta categoría. Si es que no se ha especificado el valor por defecto es user_edit_access(). Ver el hook_menu() para más información de los menu access callbacks. • "access arguments": Los argumentos para la función access callback function. El valor por defecto, si es que no se ha especificado es array(1). • "delete": Nada. • "form", "register": Un array $form que contiene los elementos a mostrarse. • "insert": Nada. • "load": Nada. • "login": Nada. • "logout": Nada. • "submit": Nada. • "update": Nada. • "validate": Nada. • "view": Nada. <?php function hook_user($op, &$edit, &$account, $category = NULL) { if ($op == 'form' && $category == 'account') { $form['comment_settings'] = array( '#type' => 'fieldset', '#title' => t('Comment settings'), '#collapsible' => TRUE, '#weight' => 4, ); $form['comment_settings']['signature'] = array( '#type' => 'textarea', '#title' => t('Signature'), '#default_value' => $edit['signature'],

2

'#description' => t('Your signature will be publicly displayed at the end of your comments.'), ); return $form; } } ?>

JAVASCRIPT
La primera línea de JavaScript en el core de drupal en el archivo drupal.js es una declaración de objeto: var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'themes': {}, 'locale': {} }; En este código, Drupal es un Objeto declarado como igual a si mismo, o, si no está establecido aún, igual a { 'settings': {}, 'behaviors': {}, 'themes': {}, 'locale': {} } es decir, un objeto que contiene 4 propiedades (settings, behaviors, themes, and locale) cada uno de ellos es a su vez un objeto. Esta línea de código es un inicializador de objeto. Este objeto drupal y sus propiedades pueden ser usadas y extendidas por otros módulos.

Drupal.settings
Drupal.settings nos permite enviar información desde nuestro código PHP al código JavaScript. Esto significa que puedes cambiar la forma como se comporta tu JavaScript de acuerdo a como es configurado tu módulo. Ejemplo: Creamos un array con los valores de configuración: <?php $my_settings = array( 'basepath' => $base_path, 'animation_effect' => variable_get('effect', 'none') ); ?> Luego hacemos un llamado a drupal_add_js() y le pasamos el array, y en el segundo parámetro le pasamos el String "setting":

3

<?php drupal_add_js(array('my_module' => $my_settings), 'setting'); ?> Ahora tu código Javascript puede acceder al valor de la siguiente manera: var basepath = Drupal.settings.my_module.basepath; var effect = Drupal.settings.my_module.animation_effect;

Drupal.behaviors
El modo usual de jQuery para cargar el código es el siguiente: $(document).ready(function(){ // do some fancy stuff }); Esto nos permite asegurarnos que nuestro código se va a poder ejecutar tran pronto como el árbol DOM ha sido cargado. Sin embargo, en drupal 6, no necesitamos incluir la función $(document).ready(). Lo que tenemos que hacer es incluir todo nuestro código dentro de una función que nosotros asignaremos como propiedad del objeto Drupal.behaviors. Como veíamos antes el objeto Drupal.behaviors es en si mismo una propiedad del objeto Drupal, y cuando nosotros necesitemos que nuestro módulo agregue un nuevo behaviors, simplemente extendemos este objeto. Un ejemplo de código es el siguiente: Drupal.behaviors.myModuleBehavior = function (context) { //do some fancy stuff }; Cualquier función definida como una propiedd de Drupal.behaviors será llamada cuando el DOM sea cargado. drupal.js tiene una función $(document).ready() que llama a todas las propiedades de Drupal.behaviors.

La función Drupal.theme
Drupal.theme() es la contraparte de la función theme(). Entonces, cuando nosotros hacemos un llamado a Drupal.theme, le pasamos como primer argumento el nombre de la función y todos los demás argumentos son aquellos

4

que recibirá la función. Un ejemplo más abajo: Drupal.theme.prototype.myThemeFunction = function (left, top, width) { var myDiv = '<div id="myDiv" style="left:'+ left +'px; top:'+ top +'px; width:'+ width +'px;">'; myDiv += '</div>'; return myDiv; }; Y acá está como debería llamarse Drupal.theme('myThemeFunction', 50, 100, 500);

Drupal.locale
La propiedad Drupal.locale trabaja en conjunción con Drupal.t, el JavaScript equivalente de la función t() del lado del servidor. Este almacena una colección traducciones de los String, de tal manera que Drupal.t pueda acceder los string requeridos por Drupal.locale para poder traducir lo que recibe.

5

Sign up to vote on this title
UsefulNot useful