উত্তর:
যতক্ষণ না প্রতিটি মডিউল তাদের নিজস্ব অনুমতিগুলি সংজ্ঞায়িত করতে পারে ততক্ষণ এই স্ট্রিংগুলির একটি "কঠোর" তালিকা নেই। আপনার যদি সত্যিই প্রোগ্রামালিফিকভাবে এমন একটি তালিকা থাকা প্রয়োজন তবে আপনাকে এটি "নির্মাণ" করতে হবে।
আপনি এই স্ক্রিপ্টটি একটি / ডেভেল / পিএইচপি পৃষ্ঠায় চালাতে পারেন। (অবশ্যই, আপনার ডিভেল মডিউলটি দরকার )
// Render role/permission overview:
$options = array();
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
print_r($module);
// Drupal 6
// if ($permissions = module_invoke($module, 'perm')) {
// print_r($permissions);
// }
// Drupal 7
if ($permissions = module_invoke($module, 'permission')) {
print_r($permissions);
}
}
@ বারডির যেমন বলেছিলেন, কোন অনুমতিগুলি পাওয়া যায় তা দেখার সহজ উপায় হ'ল দ্রুপাল in-এর অনুমতি প্রশাসক / লোক / অনুমতিতে যাওয়া।
আমি যে সমস্যাটি চালিয়ে যাচ্ছি তা হ'ল আমি কখনই বুঝতে পারছিলাম না যে অনুমতিটি ব্যবহারের জন্য 'অ্যাক্সেস আর্গুমেন্ট' হিসাবে আমার কী স্ট্রিং সরবরাহ করতে হবে। ঠিক আছে, আপনি যে অনুমতিগুলি ব্যবহার করতে চান তার জন্য আপনি স্ট্রিংয়ের নামটি কীভাবে খুঁজে পান (এই উদাহরণটি গুগল ক্রোম ব্যবহার করে))
প্রথম ধাপ. আপনি যে অনুমতিটি ব্যবহার করতে চান সেটি অ্যাডমিন / লোক / অনুমতিতে যান এবং আপনি যে অনুমতিটি ব্যবহার করতে চান তার ডানদিকে একটি চেক বাক্সে ডান ক্লিক করুন। 'উপাদান পরিদর্শন করুন' নির্বাচন করুন বা উত্সটি দেখুন।
পরবর্তী চেক বাক্সের মানটি দেখুন এবং মানটি নোট করুন। (এই ক্ষেত্রে স্ট্রিংটি হ'ল 'কুপন সামগ্রী তৈরি করুন')
Hook_menu () এ অ্যাক্সেস আর্গুমেন্ট হিসাবে আপনার সরবরাহ করতে হবে এটি স্ট্রিং
উদাহরণ কোড: (প্রাসঙ্গিক আইটেমগুলি সরানো হয়েছে, শিরোনাম, কলব্যাক ইত্যাদি ভুলে যাবেন না হুক_মেনু ())
function fsrsys_menu() {
$items = array();
$items['my-custom-url'] = array(
'access callback' => 'user_access',
'access arguments' => array('create coupon content'),
);
return $items;
}
এখানে হাজার উত্তরের একটি ডি 7 সংস্করণ রয়েছে, প্রিন্ট_আরের পরিবর্তে ডিএসএম ব্যবহার করার জন্য এবং হুক_পিমারেশন প্রয়োগ করে না এমন মডিউলগুলি ছেড়ে দেওয়ার জন্য:
// Render permission overview:
$options = array();
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
if ($permissions = module_invoke($module, 'permission')) {
// List only the modules that have permissions.
dsm($module);
dsm($permissions);
}
}
আপনি user_permission_get_modules()
ফাংশনটি ব্যবহার করতে পারেন যা সমস্ত সংজ্ঞায়িত অনুমতি এবং তাদের মডিউলগুলির একটি অ্যারে প্রদান করে।
অনুমতিগুলির সাথে সম্পর্কিত মডিউলগুলি নির্ধারণ করুন।
ফেরত মূল্য
$ অনুমতি => $ মডিউলে ফর্ম্যাটটিতে একটি সহযোগী অ্যারে।
সবচেয়ে সহজ উপায় হ'ল অনুমতি পৃষ্ঠাটি পরীক্ষা করা (ডি 7: অ্যাডমিন / লোক / অনুমতি, ডি 6: অ্যাডমিন / ব্যবহারকারী / অনুমতি)। নোট করুন যে আপনি সরাসরি ড্রুপাল 6 এ প্রদর্শিত স্ট্রিংটি ব্যবহার করেন, 7 এর জন্য আপনার চেকবক্সের নাম / মানটি দেখতে হবে। এটি কারণ এখন ড্রুপাল 7 এ অনুমতিগুলির একটি অনুবাদকৃত শিরোনাম এবং বিবরণ রয়েছে।
সুতরাং আপনি যদি ড্রুপাল 7 এ "প্রকাশিত সামগ্রী দেখুন" এর অনুমতিটির জন্য নামটি চান তবে মানটি হল "প্রবেশাধিকার সামগ্রী" যা আপনার অনুমতিের নাম।
আপনি যদি জানেন যে অনুমতিটি কোন মডিউল থেকে আসছে, আপনি সেই মডিউলটির সংশ্লিষ্ট হুক_পার্ম () (ডি 6) / হুক_পিমেশন () (ডি 7) বাস্তবায়নও পরীক্ষা করতে পারেন ।
অনেক ক্ষেত্রে, আপনি নিজের অনুমোদনের সংজ্ঞা দিতে এবং এটি ব্যবহার করতে চান, আপনি উপরের হুক দিয়ে এটি করতে পারেন।
ডিভেল মডিউলটি ব্যবহার করে
দেভেল মডিউলটি ইনস্টল ও সক্ষম করার পরে নেভিগেট করুন admin/config/development/devel
। "অনুমতি এবং মডিউলগুলির মেশিনের নাম প্রদর্শন করুন" শিরোনামে একটি সেটিংস রয়েছে। এটি পরীক্ষা করা হয়েছে তা নিশ্চিত হন।
অনুমতি পৃষ্ঠাতে এখন people/permissions
, আপনি যে অনুমতিটি জিজ্ঞাসা করছেন তার নামটি ধরে রাখুন। এটি এক বা দুটি বিলম্ব করতে পারে তবে তারপরে স্ট্রিংয়ের মানটি প্রদর্শিত হবে।
এখানে একটি সরল ফর্মের পরিবর্তন রয়েছে যা অনুমতি পৃষ্ঠাতে নামের সাথে অনুমতি কী যুক্ত করবে। এটি এটি সন্ধান করা সহজ করা উচিত। আপনাকে এটিকে একটি কাস্টম মডিউলে যুক্ত করতে হবে এবং সেই মডিউলটির নাম দিয়ে "মাইমডিউল" প্রতিস্থাপন করতে হবে।
/**
* Implements hook_form_FORM_ID_alter().
*/
function mymodule_form_user_admin_permissions_alter(&$form, $form_state) {
foreach ($form['permission'] as $key => &$item) {
if (isset($item['#type']) && $item['#type'] == 'item') {
$item['#markup'] .= ' (' . $key . ')';
}
}
}
আমি এই জাভাস্ক্রিপ্ট স্নিপেট তৈরি করেছি যা আমাকে এটিতে সহায়তা করে। আমি এটি চকচকে থিমটিতে ড্রুপাল 7 এ পরীক্ষা করেছি ।
এটি মূলত মেশিনের নাম আউটপুট করে, সেই নামের প্রথম চেকবক্স থেকে নেওয়া প্রথম কক্ষে, লেবেলের নীচে। স্ক্রিপ্টটি jQuery এর উপর নির্ভর করে, যা ড্রুপাল 7-এ কোনও সমস্যা হওয়া উচিত নয়।
আমি সাধারণত এটি বিকাশকারী সরঞ্জামগুলির কনসোলে পেস্ট করি এবং সেখান থেকে এটি চালিত করি। ভবিষ্যতে আমি এটির জন্য একটি বুকমার্কলেট তৈরি করতে পারি।
// Go through each of the rows on the permissin table
rows = jQuery('#permissions tr');
rows.each(function() {
// Get the first checkbox in the row.
checkbox = jQuery('.checkbox .form-checkbox', this).first();
// Get the first cell, containing the permission label.
nameCell = jQuery('td:first-child', this);
// In case this is not a permission row
if(checkbox.length == 0) {
return;
}
// Embed the permission maching name on permission label cell.
nameCell.append("<div><code>" + checkbox.val() + "</code></div>");
});
এটি সহজ করার জন্য এটি একটি সাধারণ মডিউল: অ্যাক্সেস আর্গুমেন্টের তালিকা
শুভেচ্ছা সহ
কিছু মডিউল সরিয়ে ফেলুন, আপনি / প্রশাসক / লোক / অনুমতিতে মেশিনের অনুমতি দেখতে পাবেন
function YOURMODULE_form_user_admin_permissions_alter(&$form, &$form_state)
{
$perms = &$form['permission'];
$group_counter = 0;
foreach ($perms as $k => &$v) {
if ($k == $group_counter) { // skip fieldsets
$group_counter++;
continue;
}
$v['#markup'] .= ' (<span class="description" style="color:brown">'.$k.'</span>)';
}
}
শুভেচ্ছা
array_keys()
অবশ্যই অনুরোধ করা তথ্য পান। এর পরে আপনি এছাড়াও ফলাফলের ব্যবহার করতে পারেনuser_role_grant_permissions
, উদাহরণস্বরূপ প্রশাসকের ভূমিকা সব অনুমতি মঞ্জুর করতে:user_role_grant_permissions(variable_get("user_admin_role"), array_keys(user_permission_get_modules()));