จำกัด ผู้ใช้โปรแกรมแก้ไขเพื่อแก้ไขเนื้อหาในภาษาใดภาษาหนึ่งโดยเฉพาะ


15

ฉันกำลังพยายามสร้างบทบาทสำหรับผู้แก้ไขที่ผู้แก้ไขเพียงรายเดียวเท่านั้นที่สามารถเข้าถึงเพื่อแก้ไขเนื้อหาภาษาอังกฤษและอีกคนหนึ่งเท่านั้นที่สามารถเข้าถึงเนื้อหาในภาษาอื่นได้

ฉันค้นคว้ามาระยะหนึ่งแล้วลองตรวจสอบการเข้าถึงเนื้อหาด้วย แต่ฉันไม่พบวิธีแก้ปัญหาใด ๆ

ฉันจะทำให้สิ่งนี้เกิดขึ้นได้อย่างไร

ขอขอบคุณ!


ดูเหมือนซ้ำdrupal.stackexchange.com/questions/130741/...
Sumit Madan

1
ฉันไม่คิดว่ามันเป็นเพราะปัญหาของฉันไม่ได้เป็นเพียงแค่การแปล มันเป็นสิทธิ์ของการสร้างและแก้ไขโหนดด้วย
BálintDeáki

โอ้ .. โอเค เข้าใจแล้ว
Sumit Madan

1
drupal.org/project/i18n_accessคุณสามารถลองได้เช่นเดียวกับความต้องการของคุณ
Bala

คำตอบ:


2

คำตอบที่ระบุที่นี่จะช่วยให้คุณให้สิทธิ์ในการแปลภาษาเฉพาะ

หลังจากติดตั้งโมดูลจัดการการแปลแล้ว

คุณสามารถสร้างผู้ใช้ที่มีความสามารถในการแปลของพวกเขา

คุณสามารถระบุว่าผู้ใช้สามารถแปลจากภาษาอังกฤษเป็นภาษาสเปนและผู้ใช้คนอื่นสามารถแปลจากภาษาอังกฤษเป็นภาษาฝรั่งเศสในขณะที่สร้างผู้ใช้

  • สร้างผู้ใช้ใหม่ด้วยบทบาทผู้ใช้: นักแปล (ซึ่งถูกสร้างขึ้นเมื่อtmgt moduleติดตั้ง)

  • จากนั้นเลือกทักษะการแปลของเขา / เธอดังแสดงด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่


1
ในกรณีนี้ฉันจะต้องได้รับอนุญาตจากผู้ใช้ในการสร้าง / แก้ไขเนื้อหาของภาษาเฉพาะเช่นที่ฉันอธิบายมันไม่ได้สำหรับการแปล
BálintDeáki


0

คุณสามารถเปลี่ยนหรือเปลี่ยนการเรียกกลับการเข้าถึงสำหรับโหนดแก้ไขรูปแบบการใช้hook_menu_alter

ในการให้สิทธิ์ที่จะปรากฏในหน้าจอการอนุญาตตามภาษาที่คุณใช้คุณจะต้องใช้โมดูลที่กำหนดเองโดยใช้ hook นี้:

/**
 * Implements hook_permission().
 */
function MODULENAME_permission(){

  //do something here to get an array of language names: $languages (I'm not familiar with i18n)

  foreach ($languages as $lang) {
    $permissions[$term->name] = array(
      'title' => t($lang->name), //Or wherever the langauge name is stored
      'description' => t('Edit content in '. $lang->name), //Again, adjust as needed
    );
  }

  return $permissions;
}

สิ่งนี้จะใส่ช่องทำเครื่องหมายในหน้าสิทธิ์ภายใต้ชื่อโมดูลของคุณสำหรับแต่ละภาษาในเว็บไซต์ ฉันจะสมมติว่าชื่อภาษาไม่เปลี่ยนแปลงในกรณีนี้ปลอดภัยที่จะทำ

จากนั้นคุณเพียงแค่ต้องใช้มันเพื่อปิดกั้นการเข้าถึงหากผู้ใช้ไม่ได้รับอนุญาตเช่นนี้:

/**
 * Implements hook_node_access($node, $op, $account).
 */
function MODULENAME_node_access($node, $op, $account){

  //Get the language name for the node and store in variable $lang (again, I don't know how)

  //Then see if the user can do anything except view it
  if ($op != 'view'){
    if (!user_access($lang)){
      return NODE_ACCESS_DENY;
    }
  }

  return NODE_ACCESS_IGNORE;
}

หมายเหตุการทำเช่นนี้บทบาทจะต้องได้รับอนุญาต 'แก้ไขโหนด' และสิทธิ์ตามภาษาเพื่อแก้ไขโหนดใด ๆ


ที่กล่าวมาดูเหมือนว่าโมดูล i18n_access จะทำเคล็ดลับ
Darvanen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.