Kullanıcıların kendi içeriklerini yayınlamalarına ve yayınlamalarına nasıl izin veririm?


30

Kullanıcıların kendi içeriklerini yayınlamalarına ve yayınlamalarına izin vermek istiyorum. Varsayılan olarak, kullanıcıların içeriği yayınlayabilmeleri veya yayınlayabilmeleri için "yönetim düğümleri" izni vermelisiniz. Gerçi genişlemenin yolu bu. Kullanıcıların, yalnızca oluşturduysa bir düğümü yayından kaldırmalarına veya yayımlamalarına izin vermek istiyorum. Bu aynı zamanda yayınlanmamış düğümleri eğer ve sadece yaratmışlarsa görebilecekleri anlamına gelir.

Yanıtlar:


20

Bazı sitelerde kullandığım bir UI yaklaşımı, Geçersiz Kılma Düğümü Seçenekleri modülüdür, diğer cevabımın sağladığıma benzer izinler ve bir sürü fazlalık ekler.


Bu en basit yaklaşım gibi görünüyor ... ve şu anda benim için çalışıyor. Teşekkürler!
Chaulky

Bu, yönetim düğümleri olmadan yayın yapma ve yapışkanlığa izin verebileceğiniz en iyisidir :)
Alex Weber

Bu konuyla başa çıkmak için harika bir modül gibi görünüyor.
zilverdistel

20

Bunun için her zaman İçeriği Yayınla modülünü kullanırız. Çok sayıda iyi ayarlanmış izin ve düğümlerde yayınlama / yayından kaldırma sekmesi ekler.

Bu modül

  • ayrıntılı yayınlama ve yayından kaldırma izinlerini sağlar:
    • global (herhangi bir içeriği kaldır / yayınla)
    • "düğüm tipi" başına (herhangi bir [nodetype] içeriğin kaldırılması / yayınlanması)
    • kullanıcı başına (kendi [nodetype] içeriğin kaldırılması / yayınlanması
  • tek tıklatma / yayınlama için düğüm sayfasına bir "Yayınla / Yayından Kaldır" sekmesi ekler.
  • görüşlerinize, yayınlarınıza / yayından kaldırmanıza izin verir; böylece gözden geçirenler, editörler ve yayıncılar için iş akışını kolaylaştırır.
  • hafiftir ve daima olacaktır.

9

Yukarıdaki yöntemlere göre size birkaç avantaj sağlayan Revizyon Modülünü kullanmanızı tavsiye ederim . Elbette bir tanesi tamamen bakımlı bir modül olmasıdır ve bu nedenle kod üzerinde çok fazla göz ve bir çok hata düzeltmesi olacaktır. İkincisi, bunu genel iş akışınıza sığdırmak için daha fazla özellik elde edeceksiniz.

Kullanımı durumda İçin onlar temelde kendi içeriklerini orta böylece, kullanıcıların "yaratıcısı" izinleri ve "moderatör" izinleri hem verir ama modül açıklamasında söylediği gibi, onlar vardır değil 'tanrı-benzeri tür veren arasındaki kuvvetler verilen yönetim düğümleri verecek.


Bu çok ilginç bir seçenek, ama içeride ihtiyacım olandan çok daha fazlası var. Bildiğim için memnun olduğumu düşündüğüm için, kullanışlı olacağı başka siteler de düşünebilirim.
Chaulky

6

Bunu yapan bir modül var, ancak adını tam olarak hatırlayamıyorum. Aslında modülün uyguladığı yaklaşımın çok hantal olduğunu hissettim, gerçek önemli kodun izin izin mantığına sahip tek bir satır olması durumunda çok fazla kod vardı.

Bu benim kodumun versiyonudur:

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

Bu, kullanıcıların kendi türlerini veya tüm içerik türlerini yayınlamalarına / yayından kaldırmalarına izin vermenize izin veren ve tüm içerik türlerini dilediğiniz şekilde ayarlayabilmenizi sağlayan birkaç izin sağlar.


Teşekkürler, bu oldukça iyi görünüyor, mantıklı. Peki ya yayınlanmamış içeriğini görebiliyor olmak? Eğer göremezlerse, nasıl yayınlayacak?
Chaulky

Bunu etkilememelidir, IIRC kullanıcısı 'yönetici düğümleri' olsun olmasın yayınlanmamış içeriğini görebilir.
deşifre

3

Ben sadece Deşifre 7’ye uyacak başka bir modül eklemek istemiyorsan, deşifre cevabını güncellemek istiyorum, cadı bana en iyi yaklaşımı seçti:

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

bir yazım hatası var. $ perms_type dosyasını $ perm_types olarak değiştir - artı herhangi bir / kendi statüsü kontrol edilmedi ..
rémy

0

Bunu Bayrak ve Kural modüllerinin gücünü birleştirerek elde edebilirsiniz .

  1. Yeni bir Bayrak Yayınlama oluşturun ve kullanıcılara yalnızca kendi içeriklerini işaretleme izni verin.
  2. Ardından, bir düğüm işaretlendiğinde tetiklenen ve işaretli düğümü yayınlayan yeni bir Kural ekleyin. Benzer şekilde, Yayınla altında etiketlenmemiş düğümlerin yayından kaldırılmasını sağlayan ikinci bir Kural oluşturun .
  3. Son olarak, kullanıcılara kendi yayınlanmamış düğümlerini görme izni verin ve düğüm sayfalarına bir Yayınla bağlantısı ekleyin .

-1

İçerik erişim modülü istediğini kapsamalıdır.

Bu modül, içerik türleri için izinleri role ve yazara göre yönetmenizi sağlar. Her içerik türü için özel görünüm belirlemenizi, düzenlemenizi ve silmenizi sağlar. İsteğe bağlı olarak içerik erişim ayarları başına etkinleştirebilirsiniz, böylece her içerik düğümü için erişimi özelleştirebilirsiniz.


1
Belirsiz bir cevap biraz. Bu Decipher'in cevabına tercih edilirse, belki bu yaklaşımın faydalarını açıklayabilir misiniz?
Chris Cohen,

Content Access modülü sorunu gerçekten çözmez, Görünüm, Düzenleme ve Silme'yi rol olarak belirleme ancak Yayımlama yeteneği ekler.
04:11 de
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.