Come faccio a consentire agli utenti di annullare la pubblicazione e pubblicare i propri contenuti?

drupal.stackexchange https://drupal.stackexchange.com/questions/193

  •  16-10-2019
  •  | 
  •  

Domanda

voglio consentire agli utenti di annullare la pubblicazione e pubblicare i propri contenuti. Per impostazione predefinita, devi dare "amministra i nodi" il permesso che gli utenti siano in grado di annullare la pubblicazione o pubblicare contenuti. Questo è modo di ampia però. Voglio consentire agli utenti di annullare la pubblicazione o pubblicare un nodo se e solo se l'hanno creato. Questo significa anche che dovrebbero essere in grado di visualizzare i nodi inediti se e solo se l'hanno creato.

È stato utile?

Soluzione

Un approccio UI che ho usato su alcuni siti è il Override modulo Opzioni nodo , aggiunge autorizzazioni simili a quelle che la mia altra risposta fornisce, oltre a un ulteriore gruppo.

Altri suggerimenti

Usiamo sempre il Pubblicare modulo contenuti per questo. Si aggiunge un certo numero di autorizzazioni specifiche e una pubblicazione / scheda Sospendi su nodi.

Questo modulo

  • consente granulare pubblicare e annullare la pubblicazione delle autorizzazioni:
    • globale (UN / pubblicare qualsiasi contenuto)
    • per "tipo di nodo" (UN / pubblicare qualsiasi [NodeType] contenuti)
    • per utente (UN / pubblicare propria [NodeType] contenuti
  • aggiunge una scheda "Pubblica / Annulla pubblicazione" per la pagina di nodo per un solo clic di un / pubblicazione.
  • espone pubblicano / collegamenti annullare la pubblicazione ai vostri punti di vista, rendendo più semplice per i flussi di lavoro Streamline per i revisori, i redattori e gli editori.
  • è leggero e sempre sarà.

Mi consiglia di utilizzare la revisioning Modulo che ti dà un paio di vantaggi rispetto ai metodi di cui sopra. Uno, naturalmente, è che si tratta di un modulo completamente mantenuta e quindi ci saranno un sacco di occhi sul codice e un sacco di correzioni di bug. Due, si ottengono più caratteristiche per adattarsi questo nel vostro flusso di lavoro complessivo.

Per il vostro caso d'uso, offre agli utenti sia le autorizzazioni "creatore" e le autorizzazioni "moderatore", in modo che possano sostanzialmente moderare i propri contenuti, ma, come dice nella descrizione del modulo, sono non data god-like poteri come dare 'amministra i nodi' darebbe.

C'è un modulo che fa questo, ma io non riesco a ricordare il nome. Infatti io mi sentivo che l'approccio del modulo ha preso era troppo ingombrante, aveva un sacco di codice quando il codice vero e importante è stato veramente solo una linea avvolto con una certa logica permesso.

Questa è la mia versione del codice:

function MYMODULE_perm() {
  $perms[] = 'administer status of any content';

  foreach (node_get_types() as $type) {
    if (isset($type->type)) {
      $perms[] = 'administer status of any '. check_plain($type->type) .' content';
      $perms[] = 'administer status of own '. check_plain($type->type) .' content';
    }
  }

  return $perms;
}

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if ($form['#id'] == 'node-form' && $form_id == "{$form['#node']->type}_node_form" && _MYMODULE_access($form['#node']->type)) {
    if ($form['options']['#access'] == FALSE) {
      $form['options']['#access'] = TRUE;
    }
  }
}

function _MYMODULE_access($type) {
  return user_access('administer status of any content')
      || user_access('administer status of any ' . check_plain($type) . ' content')
      || user_access('administer status of own ' . check_plain($type) . ' content');
}

che aggiunge alcuni permessi aggiuntivi che consentono di consentire agli utenti di pubblicare / annullamento della pubblicazione propria o tutto un tipo di contenuto, e tutti i tipi di contenuto, insieme come si desidera.

Voglio solo di aggiornare Decipher risposta, cuciture strega da me l'approccio migliore se non si desidera aggiungere un altro modulo, per adattarsi per Drupal 7:

/**
 * Implements hook_permission().
 */
function MYMODULE_permission() {  
  $perms = array(
    'administer status of any content' => array(
      'title' => t('Administer status for all content type'),
      'description' => t(''),
      'restrict access' => true
    ),
  );

  foreach (node_type_get_types() as $type) {
    if (isset($type->type)) {
      $perm_types = array(
        'administer status of any '. check_plain($type->type) .' content' => array(
          'title' => t('Administer status of any '. check_plain($type->type) .' content'),
          'description' => t(''),
        ),

        'administer status of own '. check_plain($type->type) .' content' => array(
          'title' => t('Administer status of own '. check_plain($type->type) .' content'),
          'description' => t(''),
        ),
      );
      $perms = array_merge($perms,$perm_types);
    }
  }

  return $perms;
}


function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if (preg_match('/_node_form$/', $form_id) && _MYMODULE_access($form['#node']->type)) {
    if ($form['options']['#access'] == FALSE) {
      $form['options']['#access'] = TRUE;
    }
  }
}

function _MYMODULE_access($type) {
  return user_access('administer status of any content')
      || user_access('administer status of any ' . check_plain($type) . ' content')
      || user_access('administer status of own ' . check_plain($type) . ' content');
}

È possibile raggiungere questo obiettivo unendo la potenza della Flag e Regole moduli

  1. Crea una nuova bandiera Pubblica e dare agli utenti il ??permesso di unica bandiera i propri contenuti.
  2. Avanti, aggiungere una nuova regola che si innesca quando un nodo è in posizione e che pubblica il nodo contrassegnato. Allo stesso modo, creare una seconda regola che unpublishes i nodi che sono sotto senza bandiera Pubblica .
  3. Infine, dare agli utenti il ??permesso di vedere i propri nodi inediti e aggiungere un Pubblica per le pagine del nodo.

Il accesso contenuto del modulo dovrebbe coprire ciò che si desidera.

Questo modulo permette di gestire le autorizzazioni per i tipi di contenuto per ruolo e autore. Esso consente di visualizzazione personalizzata specifiy, modifica e cancellazione delle autorizzazioni per ogni tipo di contenuto. Opzionalmente è possibile abilitare per le impostazioni di accesso ai contenuti, in modo da poter personalizzare l'accesso per ogni nodo del contenuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a drupal.stackexchange
scroll top