it-swarm-id.com

Bagaimana saya membiarkan pengguna membatalkan publikasi dan mempublikasikan konten mereka sendiri?

Saya ingin membiarkan pengguna membatalkan publikasi dan mempublikasikan konten mereka sendiri. Secara default, Anda harus memberikan izin "kelola node" agar pengguna dapat membatalkan publikasi atau mempublikasikan konten. Itu adalah cara untuk melebar. Saya ingin membiarkan pengguna membatalkan publikasi atau menerbitkan simpul jika dan hanya jika mereka membuatnya. Ini juga berarti mereka harus dapat melihat node yang tidak dipublikasikan jika dan hanya jika mereka membuatnya.

30
Chaulky

Pendekatan UI yang saya gunakan pada beberapa situs adalah modul Override Node , menambahkan izin yang mirip dengan yang disediakan oleh jawaban saya yang lain, ditambah banyak tambahan.

20
Decipher

Kami selalu menggunakan modul Publikasikan Konten untuk itu. Ini menambahkan sejumlah izin berbutir halus dan tab terbitkan/tidak diterbitkan pada node.

Modul ini

  • memungkinkan penerbitan granular dan izin publikasi:
    • global (batalkan/terbitkan konten apa pun)
    • per "tipe simpul" (batalkan/publikasikan konten [nodetype])
    • per pengguna (batalkan/publikasikan konten [nodetype] sendiri
  • menambahkan tab "Terbitkan/Batalkan publikasi" ke halaman simpul untuk sekali klik/publikasi.
  • mengekspos tautan terbitkan/terbitkan ke tampilan Anda, sehingga memudahkan untuk merampingkan alur kerja untuk pengulas, editor, dan penerbit.
  • ringan dan akan selalu.
20
marcvangend

Saya akan merekomendasikan menggunakan Modul Revisi yang memberi Anda beberapa manfaat dibandingkan metode di atas. Salah satunya tentu saja adalah modul yang dipelihara sepenuhnya dan dengan demikian akan ada banyak mata pada kode dan banyak perbaikan bug. Dua, Anda akan mendapatkan lebih banyak fitur untuk menyesuaikan ini ke dalam alur kerja keseluruhan Anda.

Untuk kasus penggunaan Anda, berikan kepada pengguna Anda izin "pencipta" dan izin "moderator", sehingga mereka pada dasarnya dapat memoderasi konten mereka sendiri, tetapi seperti yang dikatakan dalam deskripsi modul, mereka tidak diberi kekuatan seperti dewa seperti memberikan 'kelola node' akan memberi.

9
coderintherye

Ada modul yang melakukan ini, tapi saya tidak ingat namanya. Saya benar-benar merasa bahwa pendekatan yang diambil modul itu terlalu rumit, itu memiliki banyak kode ketika kode penting sebenarnya hanya benar-benar satu baris dibungkus dengan beberapa logika izin.

Ini adalah versi kode saya:

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

Itu menambahkan beberapa izin tambahan yang memungkinkan Anda mengizinkan pengguna untuk mempublikasikan/membatalkan publikasi mereka sendiri atau semua jenis konten, dan semua jenis konten, mengatur apa yang Anda inginkan.

6
Decipher

Saya hanya ingin memperbarui jawaban Penguraian, penyihir jahitan kepada saya pendekatan terbaik jika Anda tidak ingin menambahkan modul lain, cocok untuk 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');
}
3
anou

Anda dapat mencapai ini dengan menggabungkan kekuatan modul Bendera dan Aturan .

  1. Buat Bendera baru Terbitkan dan beri pengguna izin untuk hanya menandai konten mereka sendiri.
  2. Selanjutnya, tambahkan Aturan baru yang memicu ketika node ditandai dan yang menerbitkan node ditandai. Demikian pula, buat Aturan kedua yang membatalkan publikasi node yang tidak ditandai di bawah Terbitkan .
  3. Terakhir, beri pengguna izin untuk melihat node yang tidak dipublikasikan sendiri dan menambahkan tautan Terbitkan ke halaman node.
0
Jeroen