Как разрешить пользователям публиковать и публиковать собственный контент?

Я хочу, чтобы пользователи могли публиковать и публиковать собственный контент. По умолчанию вы должны предоставить разрешение «администрировать узлы», чтобы пользователи могли публиковать или публиковать материалы. Это путь к широкому, хотя. Я хочу, чтобы пользователи отменили публикацию или публикацию узла тогда и только тогда, когда они его создали. Это также означает, что они должны иметь возможность просматривать неопубликованные узлы тогда и только тогда, когда они его создали.

30 голосов | спросил Chaulky 3 MaramThu, 03 Mar 2011 08:16:02 +03002011-03-03T08:16:02+03:0008 2011, 08:16:02

7 ответов


20

Мы всегда используем модуль Опубликовать контент для этого. Он добавляет несколько мелких разрешений и публикует /не публикует вкладку на узлах.

  

Этот модуль

     
  • позволяет выполнять гранулированные публикации и отказоустойчивые разрешения:   
    • global (un /публиковать любой контент)
    •   
    • за «тип узла» (un /публиковать любой контент [nodetype])
    •   
    • для пользователя (un /publish собственный контент [nodetype]
    •   
  •   
  • добавляет вкладку «Опубликовать /отменить публикацию» на странице узла для однократного удаления /публикации.
  •   
  • позволяет публиковать /публиковать ссылки на ваши представления, упрощая оптимизацию рабочих процессов для рецензентов, редакторов и издателей.
  •   
  • - легкий и всегда будет.
  •   
ответил marcvangend 7 MarpmMon, 07 Mar 2011 13:00:27 +03002011-03-07T13:00:27+03:0001 2011, 13:00:27
9

Я бы рекомендовал использовать Revisioning Module , который дает вам несколько преимуществ по сравнению с вышеуказанными методами. Разумеется, это полностью поддерживаемый модуль, и, следовательно, будет много глаз на код и множество исправлений ошибок. Во-вторых, вы получите больше возможностей, чтобы соответствовать этому в вашем общем рабочем процессе.

В вашем случае использования ваши пользователи предоставляют разрешения «создателя» и «модератора», поэтому они могут в основном сгладить свой собственный контент, но, как говорится в описании модуля, они not заданные богоподобные способности, такие как предоставление «управляющих узлов».

ответил coderintherye 4 MaramFri, 04 Mar 2011 02:22:35 +03002011-03-04T02:22:35+03:0002 2011, 02:22:35
6

Есть модуль, который делает это, но я не могу запомнить имя. Я действительно чувствовал, что подход, который принял модуль, был слишком громоздким, у него было много кода, когда фактический важный код был только на одной линии, завернутой с некоторой логикой разрешения.

Это моя версия кода:

  функция MYMODULE_perm () {
  $ perms [] = 'администрировать статус любого контента';

  foreach (node_get_types () как $ type) {
    if (isset (тип $ type>)) {
      $ perms [] = 'администрировать статус любого'. check_plain (тип $ type->). ' содержание ';
      $ perms [] = 'управлять статусом собственного'. check_plain (тип $ type->). ' содержание ';
    }
  }

  return $ perms;
}

функция MYMODULE_form_alter (& amp; $ form, & amp; $ form_state, $ form_id) {
  if ($ form ['# id'] == 'node-form' & amp; & amp; $ form_id == "{$ form ['# node'] -> type} _node_form" & amp; _MYMODULE_access ($ form ['#node'] -> type)) {
    if ($ form ['options'] ['# access'] == FALSE) {
      $ form ['options'] ['# access'] = TRUE;
    }
  }
}

function _MYMODULE_access ($ type) {
  return user_access («администрировать статус любого контента»)
      || user_access («администрировать статус любого». check_plain ($ type). 'content')
      || user_access («управлять статусом собственного». check_plain ($ type). 'content');
}
 

Это добавляет несколько дополнительных разрешений, которые позволяют пользователям публиковать /публиковать или публиковать их собственный или весь тип контента, а также все типы контента, как вы хотите.

ответил Decipher 3 MaramThu, 03 Mar 2011 08:26:15 +03002011-03-03T08:26:15+03:0008 2011, 08:26:15
3

Я просто хочу обновить Decipher answer, witch seams для меня лучший подход, если вы не хотите добавлять еще один модуль, чтобы соответствовать Drupal 7:

  /**
 * Реализует hook_permission ().
 * /
функция MYMODULE_permission () {
  $ perms = array (
    «управлять статусом любого контента» => массив (
      'title' => t («Администрирование статуса для всех типов контента»),
      'description' => т ( ''),
      'ограничивать доступ' => правда
    ),
  );

  foreach (node_type_get_types () как $ type) {
    if (isset (тип $ type>)) {
      $ perm_types = array (
        «управлять статусом любого». check_plain (тип $ type->). ' content '=> массив (
          'title' => t («Администрировать статус любого». check_plain (тип $ type>). 'content'),
          'description' => т ( ''),
        ),

        «управлять статусом собственного». check_plain (тип $ type->). ' content '=> массив (
          'title' => t («Администрирование статуса собственного». check_plain (тип $ type>). 'content'),
          'description' => т ( ''),
        ),
      );
      $ perms = array_merge ($ perms, $ perm_types);
    }
  }

  return $ perms;
}


функция MYMODULE_form_alter (& amp; $ form, & amp; $ form_state, $ form_id) {
  if (preg_match ('/_ node_form $ /', $ form_id) & amp;> _MYMODULE_access ($ form ['# node'] -> type)) {
    if ($ form ['options'] ['# access'] == FALSE) {
      $ form ['options'] ['# access'] = TRUE;
    }
  }
}

function _MYMODULE_access ($ type) {
  return user_access («администрировать статус любого контента»)
      || user_access («администрировать статус любого». check_plain ($ type). 'content')
      || user_access («управлять статусом собственного». check_plain ($ type). 'content');
}
 
ответил anou 18 J0000006Europe/Moscow 2013, 14:40:36
0

Вы можете достичь этого, объединив в себе флаг и Правила .

  1. Создайте новый флаг Опубликовать и дайте пользователям разрешить только флаг собственного контента.
  2. Затем добавьте новое правило, которое запускается, когда узел помечен и публикует отмеченный узел. Аналогичным образом создайте второе правило, которое отменяет публикацию узлов, которые не привязаны к Publish .
  3. Наконец, дайте пользователям разрешение видеть свои собственные неопубликованные узлы и добавьте ссылку Опубликовать на страницы узла.
ответил Jeroen 4 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 04 Sep 2016 15:07:48 +0300 2016, 15:07:48
-1

Модуль доступа к содержимому должен охватывать то, что вы хотите.

  

Этот модуль позволяет вам управлять разрешениями для типов контента по ролям и автору. Он позволяет вам указать пользовательские виды просмотра, редактирования и удаления разрешений для каждого типа контента. При желании вы можете включить настройки доступа к содержимому, чтобы вы могли настроить доступ для каждого узла контента.

ответил Jeremy French 3 MarpmThu, 03 Mar 2011 12:22:57 +03002011-03-03T12:22:57+03:0012 2011, 12:22:57

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132