¿Vista con filtro = contenido (dinámico) de un campo?

Events happening in the community are now at Drupal community events on www.drupal.org.
fermoon's picture

Buenos días/tardes/noches.

Entre otras cosas, estoy buscando la forma de crear una vista que muestre los registros que coincidan con el contenido de otro campo en específico.

En realidad son varias preguntas en una, pero trataré de explicar el contexto:

Sitio web: Transportistas (se asignan servicios "viajes" a conductores de varios tipos de transporte: Uber, mensajería, turismo, taxi...).

El admin crea un nodo "viaje" con los datos (fecha, hora, origen, destino) que los demás usuarios (conductores) revisarán para elegir los servicios que quieran hacer.

Hay un campo "Status del viaje" que inicialmente está en DISPONIBLE, y que esperamos que cada conductor pueda cambiar a ASIGNADO (o también, en su caso, CANCELADO, CUMPLIDO, etc).

Hay un campo "conductor", con contenido tipo "User", que puede contener el nombre de Usuario de cualquiera de los conductores. El admin lo deja vacío y la idea es que cualquier conductor pueda tomar ese viaje (poner su usuario como valor de ese campo).

PREGUNTA 1:

¿Cómo lograr que cualquier conductor pueda ver el contenido de todos los campos, pero editar solamente los campos que queremos permitirle cambiar para que el sitio cumpla su función (Status del viaje y Conductor)?

PREGUNTA 2:

¿Cómo podría hacerse que el conductor pueda ponerse a sí mismo (su User) en "Conductor", sin que pueda elegir ninguna otra opción más que ésa? Editarlo o hacer alguna acción tras la cual el contenido del campo "Conductor" sea el nombre de ese usuario.

PREGUNTA 3:

Después ¿Es posible hacer una vista que muestre a cada usuario los "viajes" que él ha llevado a cabo (sólo los de él)? Una vista con un filtro sobre el campo "Conductor" que muestre solamente las coincidencias del nombre de ese Usuario en el campo "Conductor". Ojo: 1) En cada usuario sería diferente esa búsqueda, por lo que no sirve crear una vista con un filtro simple, que busque un texto estático "x". 2) No se trata del campo "autor" del nodo (siempre es el admin), sino el usuario mencionado en el campo "conductor", de tipo User.

Espero haberlo explicado con suficiente claridad. Si no, estoy a la orden para preguntas y aclaraciones. ¡Gracias!

Comments

Hola Fermoon, Pregunta 1:

w4lt3r's picture

Hola Fermoon,

  • Pregunta 1: Puedes utilizar el siguiente modulo field_access
  • Pregunta 2: Formas se me ocurren varias; la forma que indicas en lo personal no me parece muy idonea, en lo personal yo lo implementaria de la siguiente manera:
    1. Crearia un módulo custom para implementar el hook hook_menu, la idea es crear una ruta por ejemplo:
      <?php
      function mi_modulo_menu() {
       
      $menu = array();
       
      // El '%' es un comodin, el cual seria el id del nodo de tipo ruta.
       
      $menu['node/%/asignar'] = array(
         
      'access callback' => 'user_is_logged_in'
          'page callback'
      => 'mi_modulo_asignar_ruta',
         
      'page arguments' => array(1),
         
      'menu type' => MENU_CALLBACK
       
      );
        return
      $menu;
      }
      ?>
      La idea es, una vez el piloto autenticado ingresa a ver tu nodo de tipo ruta en este habra un boton que diga "asignar ruta" y cuando le de click lo conducira al path que hemos creado y se ejecutara la función, en ella crearemos el código necesario para establecer el valor del campo que creaste.
  • Pregunta 3: Claro que puedes con la opción de filtro contextual de la vista, te dejo el enlace https://www.drupal.org/node/1578558

¡Voy a estudiarlo!

fermoon's picture

¡Gracias w4lt3r! Voy a tratar de implementar tus consejos.

Mi nivel es intermedio (tomándolo con alta autoestima, para no decir bajo, lo cual sería baja autoestima, jejeje). En las preguntas 1 y 3 creo que no habrá mayor problema; la de la la 2 espero no equivocarme al aplicarlo.

Sí, en cuanto a la 2 yo había pensado que, en lugar de que el "conductor" editara manualmente esos campos, ponerle una especie de botón que simplemente él clickeé para asignarse ese "viaje" (en realidad no necesitamos que el edite nada de forma consciente, sino solamente que él pueda indicar "yo quiero este viaje", y listo). Lo malo es que no tengo el nivel para programar desde cero. Entonces, aunque me falta aplicar tu secuencia para entender cómo funciona exactamente, con ella me ayudas muchísimo.

Me pongo a trabajar y te cuento mis progresos (si es que los hay, jajaja!).

Bueno si tienes dudas con

w4lt3r's picture

Bueno si tienes dudas con gusto escribelas y vemos de que manera te ayudamos.

Problema con versiones de Drupal (7 y 8).

fermoon's picture

Me está costando trabajo decidirme por una de las dos versiones de Drupal (7 u 8).

Por una parte, he esperado mucho para que la versión 8 madure y sea lo suficientemente robusta para que valga la pena el cambio (en muchas cosas lo es con mucho). Sin embargo, muchos de los módulos no existen todavía.

Decidí formar este proyecto en versión 8, pero me he encontrado con que muchas de las cosas que ya tenía resueltas en 7, no están implementadas en 8.

Es el caso del módulo FieldAccess.

Es mi reporte; seguiremos informando...

Pues hay varias variables que

w4lt3r's picture

Pues hay varias variables que tenes que tomar en cuenta para optar entre la versión 7 y 8, como por ejemplo:

  • ¿Que tanto experiencia tienes programando?
  • ¿Que tanto conoces de PHP?
  • ¿Que tanto conoces el core de ambas versiones?
  • ¿Que tan maduros estan los módulos de la versión 8 comparandolas con la versión 7?
  • ¿Cuál de los dos core te ofrece mas módulos que te puedan facilitar tu trabajo de integración?

Si bien es cierto que muchos recomiendan usar la versión 8 tienes que ver si tienes el conocimiento adecuado para hacer y/o modificar lo que te haga falta y dependiendo del tamaño del proyecto esa decisión es clave para el exito o fracaso de tu proyecto.

Spanish

Group organizers

Group notifications

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