it-swarm-es.com

¿Cómo hacer que una función esté disponible solo para determinados espacios?

Para un sitio Drupal 6 Open Atrium (es decir, características, espacios, grupos orgánicos) que estoy ejecutando, he creado algunas características personalizadas que solo se aplican realmente a un puñado de los cientos de grupos en el sitio.

Tal como está, la pantalla de configuración "Personalizar funciones" muestra todas las funciones, incluidas aquellas que me gustaría restringir intencionalmente a solo un par de grupos especiales.

¿Cuál es la mejor manera de evitar que estas funciones especiales se ofrezcan a todos los grupos, mientras se conservan esas funciones en los grupos especiales?

3
smokris

Las características de cada espacio se configuran mediante la función spaces_features_form(). Puede implementar hook_form_alter() para eliminar de forma selectiva y condicional características de grupos específicos.

function MYMODULE_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'spaces_features_form') {
    $space = spaces_get_space();
    // Populate the array with hard-coded NIDs, or whatever logic
    // needed to determine if these features should be allowed.
    if ($space->type == 'og' && !in_array($space->group->nid, array(...))) {
      // Hide features foo and bar.
      foreach (array('feature_foo', 'feature_bar') as $feature) {
        $form['spaces_features'][$feature]['#access'] = FALSE;
      }
    }
  }
}
2
jhedstrom

Las características son módulos. Los módulos están habilitados en todo el sistema y no se pueden vincular a un espacio o grupo. Sin embargo, puede controlar el acceso a ellos creando permisos personalizados, consulte hook_perm () .

1
tim.plunkett

Agregaría a esta sugerencia hook_perm una alteración en el formulario para deshabilitar la función aplicable según el tipo de grupo. hook_form_alter probablemente no funcionará porque los elementos relacionados con la función no estarán presentes todavía. Puede que tenga que registrar un # after_build hook y luego modificar el formulario en consecuencia.

1
lordg

El contexto es definitivamente el camino a seguir.
Contexto , Funciones y Espacios son una combinación poderosa. Esta publicación de DevelopmentSeed debería ayudar: Crear una "función de blog" en Drupal con contexto y espacios

1
teknikqa