Yazar olmayanlar için "yayınlanmamış içeriği görüntüleme" izni


18

Oturum açmış (ancak yönetici olmayan) bir kullanıcının yayınlanmamış içeriği (CSS düğümü yayınlanmamış sınıfıyla işaretlenmiş) görmesine izin vermek için izin düzeyinde bir yol olup olmadığını görmek için biraz googled. Bu sadece Drupal 8 için planlanmış gibi görünüyor. Ama belki birisi geçici bir çözüm yapacak kadar zekiydi?

Content EditorYazar olup olmadıklarına bakılmaksızın, yayınlanmamış tüm içeriği görebilmesi gereken bir rolüm var .

Yanıtlar:


17

Sen tamam çok küçük bir özel modülü yazma Eğer bir arada kullanabilir hook_permission()ve hook_node_access()bunun için:

function MYMODULE_permission() {
  return array(
    'unconditionally view unpublished content' => array(
      'title' => t('Unconditionally View Unpublished Content'),
      'restrict access' => TRUE
    )
  );
}

function MYMODULE_node_access($node, $op, $account) {
  // We're only bothered about the 'view' operation at the moment
  if ($op == 'view') {
    // If the user has access to our new permission, let 'em at it
    if (user_access('unconditionally view unpublished content', $account)) {
      return NODE_ACCESS_ALLOW;
    }
  }

  // For everything else let the system decide.
  return NODE_ACCESS_IGNORE;
}

Yeni izni atadığınız herhangi bir rol, yayınlanıp yayınlanmadığına bakılmaksızın herhangi bir düğümü görüntüleyebilmelidir.


&& user_access('administer nodes')İçeriği oluşturma haklarına bağlı olması için güvenliği biraz güçlendirmek için ekledim . Şimdi bu "koşulsuz" değil. Örnek için teşekkürler!
Artur

Evet biraz 'sığır eti' isteyebilirsiniz bahsetmeliydim :) yardım etmek sevindim
Clive

yine harika şeyler, Clive. Bu benim sorunlardan birini de belirli bir sınıflandırma terimi ile düğümlere erişimi kısıtlamak için çözer !!!
uwe

1
Kod gerçekten "koşulsuz herhangi bir içeriği görüntülemek" dir. Düğümün yayınlanıp yayınlanmadığını asla kontrol etmez. Veya rolün içeriği ilk etapta görme izni varsa.
JM01

6

İlk olarak yukarıdaki kodu denedim, ki bu harika. Ancak bir role yayınlanmamış içerik üzerinde haklar verdikten sonra, bu rol görünümlerde yayınlanmamış içeriği hala göremedi ve bu bazı editörlerin rolleri için çok yararlı olabilir ...

Ben view_unpublished modülünü kullanarak çözdüm .


Bu eklentiyi yükledim ve sorunumu çözmek yerine, yaptığım özel Yönetici grubu için görüntülenmeyen tüm içeriği yapmadı.
mohamad salama

Böyle bir davranışa sahip olduğunuz için üzgünüm. Bir süredir kullanıyorum ve herhangi bir rolle hiç böyle bir pb almadım (Yönetici grubunuzun bir rol olduğunu kastediyorsanız). Bu konuda DO'da yayınlayabilirsiniz .
Kojo

3

Bunun için Revizyon modülünü kullanıyorum . Kurulumun ardından, her içerik türü için aşağıdaki izinleri oluşturur:

  • İçerik türü : Kendi içeriğinizin düzeltmelerini görüntüleyin

  • İçerik türü : Herhangi birinin içeriğinin düzeltmelerini görüntüleyin

  • İçerik türü : Kendi içeriğinin düzeltmelerini yayınlama

  • İçerik türü : Herhangi birinin içeriğinin düzeltmelerini yayınlama

Editörlerime herhangi birinin içeriğinin düzeltmelerini görüntüleme izni vererek, diğer kullanıcılar tarafından oluşturulan veya revize edilen tüm düğümlere erişebilir ve bunları yayınlayabilirler.


1

Yaptığım şey buydu ....

Her düğüm türü için 'herhangi bir içerik iznini görüntüle' oluşturur. Düğüm modülünün yaptığı ile hemen hemen aynıdır, ancak ekstra seçeneği ekler.

/**
 * Implements hook_permission().
 */
function MODULE_permission() {
  $perms = array();
  foreach (node_permissions_get_configured_types() as $type) {
    $info = node_type_get_type($type);
    $perms += array(
      "view $type content" => array(
        'title' => t('%type_name: View any content', array('%type_name' => $info->name)),
      )
    );
  }
  return $perms;
}

/**
 * Implements hook_node_access().
 */
function MODULE_node_access($node, $op, $account) {
  $type = is_string($node) ? $node : $node->type;

  if (in_array($type, node_permissions_get_configured_types())) {
    if ($op == 'view' && user_access('view ' . $type . ' content', $account)) {
      return NODE_ACCESS_ALLOW;
    }
  }

  return NODE_ACCESS_IGNORE;
}

1

Bunun için Drupal 7 ve Drupal 8 için bir modül var:

View_unpublished

Bu modül, belirli bir türdeki yayınlanmamış düğümleri görüntülemek için belirli kullanıcı rollerine erişim izni vermenizi sağlar. Erişim kontrolü bu bakımdan oldukça ayrıntılıdır.



0

Basit ve makul bir çözüm, düğümlerde 'ön sayfaya yükselt' bayrağını kullanmaktır.

Bu bayrak için başka bir kullanımınız yoksa, 'ön sayfaya yükseltildi' konusundaki görüşlerinizi filtreleyin. İçerik düzenleyicileriniz tanıtılmadan önce düğüm üzerinde çalışabilir (doğrudan bağlantı kullanarak). Ancak potansiyel olarak site ziyaretçilerine henüz görünmeyecektir.

Bu ilhamı Youtube'un 'liste dışı video' yaklaşımından aldık.


0

Yalnızca devre dışı bir görünümde içeriği görmeniz gerekiyorsa SQL rewritingiçinde Query Settingsaltında OtherGörünümler arayüzünde.

Kullanıcıların yalnızca yayınlanmamış içeriğin işaretini kaldırabilmesini istediğim için bu benim için çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.