Wie lasse ich Benutzer ihre eigenen Inhalte unveröffentlicht und veröffentlichen?

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

  •  16-10-2019
  •  | 
  •  

Frage

Ich möchte die Benutzer unveröffentlicht und ihre eigenen Inhalte veröffentlichen lassen. Standardmäßig müssen Sie die Berechtigung "Verwalten von Knoten" geben, damit Benutzer Inhalte unveröffentlicht oder veröffentlichen können. Das ist der Weg zum Breiten. Ich möchte die Benutzer, wenn sie ihn erstellt haben, einen Knoten unveröffentlicht oder veröffentlichen lassen. Dies bedeutet auch, dass sie in der Lage sein sollten, unveröffentlichte Knoten zu betrachten, wenn sie ihn erstellt haben.

War es hilfreich?

Lösung

Ein UI -Ansatz, den ich auf einigen Websites verwendet habe, ist die Knotenoptionen überschreiben Das Modul fügt ähnliche Berechtigungen hinzu, die meine andere Antwort sowie ein Bündel mehr bieten.

Andere Tipps

Wir verwenden immer das Inhalte veröffentlichen Modul dafür. Es fügt eine Reihe feinkörniger Berechtigungen und eine Veröffentlichung/unveröffentlichte Registerkarte auf Knoten hinzu.

Dieses Modul

  • Ermöglicht granulare Veröffentlichung und unveröffentlichte Berechtigungen:
    • global (un/veröffentlichen Inhalt)
    • per "Knotentyp" (UN/Veröffentlichung eines Inhalts von [Nodetype])
    • pro Benutzer (UN/Veröffentlichung eigener [Nodetyp] Inhalt
  • Fügt der Knotenseite eine Registerkarte "Veröffentlichen/unveröffentlicht" für One-Click-UN/Publishing hinzu.
  • Entellt die Veröffentlichung/unveröffentlichtes Links zu Ihren Ansichten auf und erleichtert es einfach, Workflows für Rezensenten, Redakteure und Verleger zu optimieren.
  • ist leicht und wird es immer sein.

Ich würde empfehlen, die zu verwenden Revisionsmodul Das bietet Ihnen einige Vorteile gegenüber den oben genannten Methoden. Eines ist natürlich, dass es sich um ein vollständig gepflegtes Modul handelt und daher viele Augen auf den Code und viele Fehlerbehebungen geben wird. Zweitens erhalten Sie mehr Funktionen, die sich in Ihren Gesamt -Workflow einfügen.

Für Ihren Anwendungsfall geben Sie Ihren Benutzern sowohl die Berechtigungen "Ersteller" als auch die "Moderator" -Träger, sodass sie im Grunde genommen ihren eigenen Inhalt moderieren können. nicht Angesichts der gottähnlichen Kräfte wie dem Geben von „Verwaltungsknoten“ würden es geben.

Es gibt ein Modul, das dies tut, aber ich kann mich nicht ganz an den Namen erinnern. Ich hatte tatsächlich das Gefühl, dass der Ansatz, den das Modul verfolgte, zu umständlich war, es hatte viel Code, wenn der tatsächliche wichtige Code nur eine Zeile war, die mit einer Berechtigungslogik eingewickelt war.

Dies ist meine Version des Codes:

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

Dies fügt ein paar zusätzliche Berechtigungen hinzu, mit denen Sie Benutzern ihre eigenen oder alle Inhaltstypen und alle Inhaltstypen veröffentlichen/unveröffentlicht haben können, wie Sie es wünschen.

Ich möchte nur die Decipher -Antwort aktualisieren, Hexennähte für mich den besten Ansatz, wenn Sie kein weiteres Modul hinzufügen möchten, um für Drupal 7 zu passen:

/**
 * 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');
}

Sie können dies erreichen, indem Sie die Kraft des Flagge und Regeln Module.

  1. Erstellen Sie eine neue Flagge Veröffentlichen und geben den Benutzern die Erlaubnis, nur ihren eigenen Inhalt zu markieren.
  2. Fügen Sie als Nächstes eine neue Regel hinzu, die auslöst, wenn ein Knoten gekennzeichnet ist und der den gekennzeichneten Knoten veröffentlicht. Erstellen Sie in ähnlicher Weise eine zweite Regel, die Knoten unveröffentlicht, die unter Unerminderung unterliegt Veröffentlichen.
  3. Geben Sie den Benutzern die Erlaubnis, ihre eigenen unveröffentlichten Knoten zu sehen und a hinzuzufügen Veröffentlichen Link zu den Seiten des Knotens.

Das Inhaltszugriff Das Modul sollte abdecken, was Sie wollen.

Mit diesem Modul können Sie Berechtigungen für Inhaltstypen nach Rolle und Autor verwalten. Sie können benutzerdefinierte Ansicht, Bearbeiten und Löschen von Berechtigungen für jeden Inhaltstyp spezifizieren. Optional können Sie pro Inhaltszugriffseinstellungen aktivieren, sodass Sie den Zugriff für jeden Inhaltsknoten anpassen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit drupal.stackexchange
scroll top