Як дозволити користувачам публікувати та публікувати власний вміст?


30

Я хочу дозволити користувачам публікувати та публікувати власний контент. За замовчуванням ви повинні дати дозвіл "адмініструвати вузли", щоб користувачі могли скасувати публікацію або публікувати вміст. Це шлях до широкого, хоча. Я хочу дозволити користувачам скасувати публікацію або опублікувати вузол, якщо і лише тоді, коли вони його створили. Це також означає, що вони повинні мати можливість переглядати неопубліковані вузли, якщо і лише тоді, коли вони їх створили.

Відповіді:


20

Підхід користувальницького інтерфейсу, який я використовував на деяких сайтах, є модулем Override Node Options , додає дозволи, схожі на ті, які надає моя інша відповідь, а також купу додаткових.


Це здається найпростішим підходом ... і він зараз працює для мене. Спасибі!
Chaulky

Це найкраще, оскільки ви можете дозволити публікацію та липкість без адміністративних вузлів :)
Alex Weber

Схоже, чудовий модуль для вирішення цього питання.
zilverdistel

20

Для цього ми завжди використовуємо модуль " Опублікувати вміст" . Він додає ряд тонкодоступних дозволів та вкладку "Опублікувати / скасувати публікацію" на вузлах.

Цей модуль

  • дозволяє чіткі дозволи на публікацію та скасування публікації:
    • глобальний (скасувати / публікувати будь-який вміст)
    • за "тип вузла" (скасувати / опублікувати будь-який вміст [nodetype])
    • на користувача (скасувати / опублікувати власний вміст [nodetype])
  • додає на сторінку вузла вкладку "Опублікувати / Скасувати публікацію" для одного клацання миші та публікації.
  • розкриває посилання на публікацію / неприєднання до ваших поглядів, що спрощує впорядкування робочих процесів для рецензентів, редакторів та видавців.
  • легкий і завжди буде.

9

Я рекомендую використовувати Модуль ревізії, який дає кілька переваг у порівнянні з перерахованими вище методами. Звичайно, це повністю підтримуваний модуль, і таким чином буде багато уваги на код і багато виправлень помилок. По-друге, ви отримаєте більше функцій, щоб вписати це у ваш загальний робочий процес.

Що стосується Вашого використання, надає Вашим користувачам дозволу "творця" та "модератора", щоб вони могли в основному модерувати власний вміст, але, як йдеться в описі модуля, їм не надаються богоподібні повноваження, такі як надання " адміністрування вузлів 'дасть.


Це дуже цікавий варіант, але там є набагато більше, ніж мені потрібно. Думав, що я радий, що про це знаю, я можу придумати деякі інші сайти, які стануть у нагоді.
Chaulky

6

Є модуль, який робить це, але я не можу повністю запам'ятати ім'я. Я насправді вважав, що підхід, який модуль прийняв, був занадто громіздким, він мав багато коду, коли власне важливим кодом був лише один рядок, обгорнутий певною логікою дозволу.

Це моя версія коду:

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

Це додає кілька додаткових дозволів, які дозволяють дозволити користувачам публікувати / скасовувати публікацію власного або всього типу вмісту та всіх типів вмісту.


Дякую, це виглядає досить добре, має сенс. А як із можливістю перегляду їх неопублікованого вмісту? Якщо вони не можуть його переглянути, як опублікувати його?
Chaulky

Якщо це не впливає, користувач IIRC може бачити свій неопублікований вміст, незалежно від того, чи є "адміністративні вузли".
Розшифруйте

3

Я просто хочу оновити відповідь "Розшифрувати", щоб відьма мені найкраще підходила, якщо ви не хочете додати ще один модуль, який підходить для 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');
}

є друкарська помилка. змінити $ perms_type на $ perm_types - плюс будь-який / власний статус не перевірено ..
rémy

0

Ви можете досягти цього, поєднавши потужність модулів Прапор та Правила .

  1. Створіть нову публікацію прапорців та надайте користувачам дозвіл лише позначати власний вміст.
  2. Далі додайте нове правило, яке запускається, коли вузол позначено прапором, і яке публікує позначений вузол. Аналогічно створіть друге правило, яке видаляє вузли, відмічені під Publish .
  3. Нарешті, надайте користувачам дозвіл на перегляд власних неопублікованих вузлів та додайте посилання Publish на сторінки вузла.

-1

Модуль доступу до вмісту повинен охоплювати те, що потрібно.

Цей модуль дозволяє керувати дозволами для типів вмісту за роллю та автором. Це дозволяє вказати власні перегляд, редагувати та видаляти дозволи для кожного типу вмісту. За бажанням можна включити налаштування доступу до вмісту, щоб ви могли налаштувати доступ для кожного контентного вузла.


1
Трохи невиразної відповіді. Якщо це є кращим, ніж відповідь Дешифера, можливо, ви могли б детальніше ознайомитися з перевагами цього підходу?
Кріс Коен

Модуль доступу до вмісту насправді не вирішує проблему, він додає можливість встановлювати перегляд, редагування та видалення за ролями, але не публікувати.
Розшифруйте
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.