Làm cách nào để người dùng không xuất bản và xuất bản nội dung của riêng họ?


30

Tôi muốn cho phép người dùng không xuất bản và xuất bản nội dung của riêng họ. Theo mặc định, bạn phải cấp quyền "quản trị nút" cho người dùng để có thể hủy xuất bản hoặc xuất bản nội dung. Đó là cách để mặc dù rộng. Tôi muốn cho phép người dùng hủy xuất bản hoặc xuất bản một nút nếu và chỉ khi họ tạo nó. Điều này cũng có nghĩa là họ sẽ có thể xem các nút chưa được công bố nếu và chỉ khi họ tạo nó.

Câu trả lời:


20

Một cách tiếp cận giao diện người dùng mà tôi đã sử dụng trên một số trang web là mô-đun Tùy chọn nút ghi đè , thêm các quyền tương tự với các quyền mà câu trả lời khác của tôi cung cấp, cộng với một loạt bổ sung.


Đây dường như là cách tiếp cận đơn giản nhất ... và nó hiện đang làm việc cho tôi. Cảm ơn!
Chaulky

Đây là cách tốt nhất vì bạn có thể cho phép xuất bản & dính mà không cần quản trị các nút :)
Alex Weber

Trông giống như một mô-đun tuyệt vời để đối phó với vấn đề này.
zilverdistel

20

Chúng tôi luôn sử dụng mô-đun Xuất bản nội dung cho điều đó. Nó thêm một số quyền hạn chi tiết và một tab xuất bản / không xuất bản trên các nút.

Mô-đun này

  • cho phép xuất bản chi tiết và cấp phép chưa xuất bản:
    • toàn cầu (bỏ / xuất bản bất kỳ nội dung)
    • mỗi "loại nút" (bỏ / xuất bản bất kỳ nội dung [gật đầu] nào)
    • trên mỗi người dùng (un / xuất bản nội dung [gật đầu]
  • thêm tab "Xuất bản / Chưa xuất bản" vào trang nút cho một lần nhấp un / xuất bản.
  • hiển thị các liên kết xuất bản / chưa xuất bản đến các chế độ xem của bạn, giúp dễ dàng hợp lý hóa quy trình công việc cho người đánh giá, người chỉnh sửa và nhà xuất bản.
  • là nhẹ và luôn luôn sẽ được.

9

Tôi khuyên bạn nên sử dụng Mô-đun sửa đổi , cung cấp cho bạn một số lợi ích so với các phương pháp trên. Tất nhiên, đó là một mô-đun được bảo trì đầy đủ và do đó sẽ có rất nhiều mắt về mã và rất nhiều sửa lỗi. Hai, bạn sẽ nhận được nhiều tính năng hơn để phù hợp với quy trình công việc chung của bạn.

Đối với trường hợp sử dụng của bạn, cung cấp cho người dùng của bạn cả quyền "người tạo" và quyền "người điều hành", vì vậy về cơ bản họ có thể kiểm duyệt nội dung của mình, nhưng như đã nói trong mô tả mô-đun, họ không được trao quyền như thần quản trị các nút 'sẽ cung cấp.


Đây là một lựa chọn rất thú vị, nhưng có nhiều thứ hơn tôi cần. Nghĩ rằng tôi rất vui vì tôi biết về nó, tôi có thể nghĩ về một số trang web khác nó sẽ có ích.
Chaulky

6

Có một mô-đun thực hiện điều này, nhưng tôi không thể nhớ tên. Tôi thực sự cảm thấy rằng cách tiếp cận mà mô-đun thực hiện quá cồng kềnh, nó có rất nhiều mã khi mã quan trọng thực sự chỉ thực sự là một dòng được bao bọc bởi một số logic cho phép.

Đây là phiên bản mã của tôi:

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

Điều đó bổ sung thêm một số quyền cho phép bạn cho phép người dùng xuất bản / hủy xuất bản của riêng họ hoặc tất cả các loại nội dung và tất cả các loại nội dung, đặt theo cách bạn muốn.


Cảm ơn, điều đó có vẻ khá tốt, có ý nghĩa. Còn về việc có thể xem nội dung chưa được công bố của họ thì sao? Nếu họ không thể xem nó, làm thế nào để xuất bản nó?
Chaulky

Không nên ảnh hưởng đến điều đó, IIRC người dùng có thể thấy nội dung chưa được công bố của họ cho dù có 'nút quản trị' hay không.
Giải mã

3

Tôi chỉ muốn cập nhật câu trả lời Giải mã, phù hợp với tôi cách tiếp cận tốt nhất nếu bạn không muốn thêm mô-đun khác, để phù hợp với 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');
}

có một lỗi đánh máy. thay đổi $ perms_type thành $ perm_types - cộng với bất kỳ trạng thái / riêng nào không được kiểm tra ..
rémy

0

Bạn có thể đạt được điều này bằng cách kết hợp sức mạnh của các mô-đun CờQuy tắc .

  1. Tạo một Cờ mới Xuất bản và cấp cho người dùng quyền chỉ gắn cờ nội dung của riêng họ.
  2. Tiếp theo, thêm một Quy tắc mới kích hoạt khi một nút được gắn cờ và xuất bản nút được gắn cờ. Tương tự, tạo một Quy tắc thứ hai hủy xuất bản các nút không được lưu trong mục Xuất bản .
  3. Cuối cùng, cung cấp cho người dùng quyền xem các nút chưa được công bố của riêng họ và thêm liên kết Xuất bản vào các trang của nút.

-1

Các mô-đun truy cập nội dung nên bao gồm những gì bạn muốn.

Mô-đun này cho phép bạn quản lý quyền cho các loại nội dung theo vai trò và tác giả. Nó cho phép bạn chỉ định chế độ xem tùy chỉnh, chỉnh sửa và xóa quyền cho từng loại nội dung. Tùy chọn bạn có thể bật cho mỗi cài đặt truy cập nội dung, do đó bạn có thể tùy chỉnh quyền truy cập cho từng nút nội dung.


1
Một câu trả lời mơ hồ. Nếu điều này thích hợp hơn với câu trả lời của Giải mã, có lẽ bạn có thể giải thích về lợi ích của phương pháp này?
Chris Cohen

Mô-đun Truy cập Nội dung không thực sự giải quyết được vấn đề, nó bổ sung khả năng đặt Xem, Chỉnh sửa và Xóa theo vai trò nhưng không Xuất bản.
Giải mã
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.