Для примера, открываете файл: admin/controller/user/user_permission.php там находите строку вида:
if (isset($this->request->post['permission']['modify'])) {
перед ней пишите что то типа:
// Categories
$this->load->model('catalog/category');
$categories = $this->model_catalog_category->getAllCategories();
$this->data['categories'] = $this->getAllCategories($categories);
if (isset($this->request->post['permission']['edit'])) {
$this->data['edit'] = $this->request->post['permission']['edit'];
} elseif (isset($user_group_info['permission']['edit'])) {
$this->data['edit'] = $user_group_info['permission']['edit'];
} else {
$this->data['edit'] = array();
}
Потом находите строку вида:
protected function validateDelete() {
перед ней добавляете:
private function getAllCategories($categories, $parent_id = 0, $parent_name = '') {
$output = array();
if (array_key_exists($parent_id, $categories)) {
if ($parent_name != '') {
$parent_name .= $this->language->get('text_separator');
}
foreach ($categories[$parent_id] as $category) {
$output[$category['category_id']] = array(
'category_id' => $category['category_id'],
'name' => $parent_name . $category['name']
);
$output += $this->getAllCategories($categories, $category['category_id'], $parent_name . $category['name']);
}
}
return $output;
}
а так же в файле: admin/view/template/user/user_group_form.tpl
находите строку:
</table>
</form>
перед ней добавляете:
<tr>
<td><?php echo 'Права на редактирование'; ?></td>
<td><div class="scrollbox">
<?php $class = 'odd'; ?>
<?php foreach ($categories as $category) { ?>
<?php $class = ($class == 'even' ? 'odd' : 'even'); ?>
<div class="<?php echo $class; ?>">
<?php if (in_array($category['category_id'], $edit)) { ?>
<input type="checkbox" name="permission[edit][]" value="<?php echo $category['category_id']; ?>" checked="checked" />
<?php echo $category['name']; ?>
<?php } else { ?>
<input type="checkbox" name="permission[edit][]" value="<?php echo $category['category_id']; ?>" />
<?php echo $category['name']; ?>
<?php } ?>
</div>
<?php } ?>
</div>
<a onclick="$(this).parent().find(':checkbox').attr('checked', true);"><?php echo $text_select_all; ?></a> / <a onclick="$(this).parent().find(':checkbox').attr('checked', false);"><?php echo $text_unselect_all; ?></a></td>
</tr>
Получится что то типа (в настройке прав пользователя):
а уже в самих TPL-ах, ставите на условия циклы по типу:
<?php if ($this->user->hasPermission('edit', $category['category_id'])) { ?>
<?php foreach ($category['action'] as $action) { ?>
[ <a href="<?php echo $action['href']; ?>"><?php echo $action['text']; ?></a> ]
<?php } ?>
<?php } else { ?>
<a style="color:green;"><?php echo 'Нет прав'; ?></a>
<?php } ?>
дальше - уже виртуозность...
P.S. Это пример для редактирования категорий, я бы проставил ещё проверку на человеческий фактор, если в браузере ввести в ручную id категории (в самой форме) по типу:
if (!isset($this->request->get['category_id'])) {
$this->data['action'] = $this->url->link('catalog/category/insert', 'token=' . $this->session->data['token'], 'SSL');
} else {
if ($this->user->hasPermission('edit', $this->request->get['category_id'])) {
$this->data['action'] = $this->url->link('catalog/category/update', 'token=' . $this->session->data['token'] . '&category_id=' . $this->request->get['category_id'], 'SSL');
} else {
$this->redirect($this->url->link('catalog/category', 'token=' . $this->session->data['token'], 'SSL'));
}
}