Ocultar os menus de outros domínios do formulário de edição do nó em um site drupal usando acesso ao domínio

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

Pergunta

Estou fazendo algumas melhorias em um site DRUPAL ao vivo que está usando o módulo de acesso ao domínio para executar vários microsites. Estou tentando encontrar uma maneira de restringir os menus que um usuário pode publicar no conteúdo da tela de edição do nó. Um usuário em um dos domínios só deve ser capaz de postar conteúdo em menus associados a esse domínio.

Existe uma maneira simples de conseguir isso? Acho que existem alguns ganchos que eu poderia usar, mas até agora não consegui identificá -los. Prefiro não precisar instalar módulos adicionais para conseguir isso e poder adicionar algum código ao site atual para alterar os formulários. O site está lutando com o grande número de módulos que já tivemos que instalar nele.

Foi útil?

Solução 3

Eventualmente, encontrei uma maneira de consertar isso para o projeto em particular em que tenho trabalhado: em Module_form_alter, adicionei o seguinte:-

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;
}

Isso restringe as opções de menu apenas ao menu de links primários do domínio atual, que é exatamente o que queríamos.

Graças a Fabian quem me apontou em a direção certa mais cedo.

Outras dicas

De acordo com Leia-me Para o módulo, você precisa definir algumas permissões específicas no gerenciamento de usuários:

Para ativar esse recurso, você deve conceder os 'nós do domínio de edição' e (opcionalmente) a permissão 'Excluir nós de nós de domínio' para algumas funções. Em seguida, atribua contas de usuários individuais a domínios específicos para atribuí -los como editores de domínio.

Pela minha experiência, muitas luas atrás com o módulo, você pode verificar o objeto Global $ User e descobrir a quais domínios o usuário deve ter acesso. Em seguida, você pode usar um Alter Form para remover quaisquer opções da caixa de seleção que você não deseja que elas vejam. Como sempre com o Drupal, é melhor deixar alguém escrever o código - por isso, se o módulo de domínio fornecer essa funcionalidade, use -o!

Aqui está algum código atualizado para o 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top