menús Ocultar otros dominios de formulario de edición nodo en un sitio de Drupal utilizando acceso de dominio

StackOverflow https://stackoverflow.com/questions/3036293

Pregunta

Estoy en el proceso de hacer algunas mejoras en un sitio de Drupal en vivo que está utilizando el módulo de acceso de dominio para ejecutar una serie de micrositios. Estoy tratando de encontrar una manera de restringir los menús de un usuario puede enviar un mensaje al nodo de la pantalla de edición. Un usuario en uno de los dominios sólo debe ser capaz de enviar un mensaje a los menús asociados a ese dominio.

¿Hay una manera sencilla de lograr esto? Supongo que hay algunos ganchos que podría utilizar, pero hasta ahora no he sido capaz de identificarlos. Preferiría no tener que instalar más módulos para lograr esto y para ser capaz de añadir algo de código para el sitio actual para alterar las formas. El sitio está luchando con el gran número de módulos que hemos tenido que instalar en ella ya.

¿Fue útil?

Solución 3

Finalmente encontró una manera de fijar esto para el proyecto en particular que he estado trabajando en: en module_form_alter He añadido lo siguiente: -

global $_domain;
if (isset($_domain['domain_id'])) { // only display domain's primary links
  $menus[domain_conf_variable_get($_domain['domain_id']
    ,'menu_primary_links_source')] = $_domain['sitename'].' Primary links';
}
if ( isset($menus) ) {
  $options = menu_parent_options($menus, $form['menu']['#item']);
  $form['menu']['parent']['#options'] = $options;
}

Esto restringe las opciones de menú a solo menú de enlaces principal del dominio actual que es justo lo que queríamos.

Gracias a Fabian que me apuntaban en la dirección correcta antes .

Otros consejos

De acuerdo con la readme para el módulo, es necesario establecer algunos permisos específicos en la gestión de usuarios:

  

Para activar esta función, se debe conceder a los 'nodos de edición del dominio' y   (Opcionalmente) el permiso 'nodos de dominio Borrar' a algunos roles. A continuación, asigne   cuentas de usuarios individuales a dominios específicos para asignarlos como Editores de dominio.

A partir de mi experiencia hace muchas lunas con el módulo, se puede comprobar el objeto $ usuario global y averiguar qué dominios el usuario debe tener acceso a. A continuación, puede utilizar una forma alter para eliminar cualquier opción del cuadro de selección que no quiere que ver. Como siempre con Drupal sin embargo, es mejor dejar que alguien más escribir el código - por lo que si el módulo de dominio proporciona esta funcionalidad, lo utilizan

Aquí hay un código actualizado para Drupal 7:

/**
 * Implements hook_form_FORM_ID_alter().
 */
function MYMODULE_form_page_node_form_alter(&$form, &$form_state) {
  global $_domain;
  if (isset($_domain['domain_id'])) { // only display domain's primary links
    $menus[domain_conf_variable_get($_domain['domain_id'], 'menu_main_links_source')] = $_domain['sitename'].' Main menu';
  }
  if (isset($menus)) {
    $options = menu_parent_options($menus, $form['#node']->type);
    $form['menu']['link']['parent']['#options'] = $options;
  }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top