Вот протокол так-сказать:
Вооружившись статьёй http://joomlaportal.ru/content/view/1372/68/ приступил к проверке.

1. Поставили чистую Джустину 1.1.3.
2. Поставили на неё компонент Ремозитори.
3. Сделал SQL запрос в базу:
SET @parent_name = 'Public Backend';
SET @new_name = 'DownloadsManager';
SELECT @ins_id := group_id, @ins_lft := lft, @ins_rgt := rgt
FROM jos_core_acl_aro_groups
WHERE name = @parent_name;
SELECT @new_id := MAX(group_id) + 1 FROM jos_core_acl_aro_groups;
UPDATE jos_core_acl_aro_groups SET rgt=rgt+2 WHERE rgt>=@ins_rgt;
UPDATE jos_core_acl_aro_groups SET lft=lft+2 WHERE lft>@ins_rgt;
INSERT INTO jos_core_acl_aro_groups (group_id,parent_id,name,lft,rgt)
VALUES (@new_id,@ins_id,@new_name,@ins_rgt,@ins_rgt+1);
4. Открыл файл
/administrator/components/com_user/admin.user.php, нашёл в нём
if (!in_array($row-
>gid,getGIDSChildren($my->gid))) {
и заменил на
if ($my->gid != 25 && !in_array($row->gid,getGIDSChildren($my->gid))) {
5. Открыл
/includes/gacl.class.php после строчки
$this->_mos_add_acl( 'administration', 'login', 'users', 'manager', null, null ;
добавил
$this->_mos_add_acl( 'administration', 'login', 'users', 'downloadsmanager', null, null );
6. Строчку
$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_media' );
не находим, поэтому предполагаем, что нам подойдёт строчка
$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_jwmmxtd' );
и после неё добавляем
$this->_mos_add_acl( 'administration', 'edit', 'users', 'downloadsmanager', 'components', 'com_remository' );
7. Поскольку написано
"Все, пользователи группы DownloadsManager будут иметь доступ к компоненту Remository. Займемся теперь доступностью пункта меню Компоненты" пробуем создать такого пользователя.
Пользователя создали, он заходит в админку и действительно пока не видит меню компоненты. Получается пока всё правильно.8. В
/administrator/modules/mod_fullmenu.php ищем строку
$canManageUsers = $acl->acl_check( 'administration', 'manage', 'users', $usertype, 'components', 'com_users' );
и о чудо находим целых две таких строки одну в начале файла другую в конце. Из того что дальше написано, что чуть ниже находится
if ( $installComponents) {
предполагаем, что нам нужна нижняя запись, поэтому после неё добавляем:
$canEditRemository = $acl->acl_check( 'administration', 'manage', 'users', $usertype, 'components', 'com_remository' );
$canEditContent = $acl->acl_check( 'administration', 'edit', 'users', $usertype, 'components', 'com_content' );
$canEditMenus = $acl->acl_check( 'administration', 'edit', 'users', $usertype, 'components', 'com_menus' );
9. Ищем
if ($installComponents) {
не находим, а находим
if ( $installComponents) {
предполагаем, что это то самое и меняем на
if ($installComponents || $canEditRemository) {
10. Ищем
// Content Sub-Menu
, не находим, а находим
/* Content Sub-Menu */
подозреваем, что это оно и после вставляем
if ($canEditContent) {
и как сказано в статье "чуть ниже" ищем
// Components Sub-Menu
находим эту строчку значительно выше, догадываемся, что это не то, и снизу находим
/* Components Sub-Menu */
, вот после неё вставляем
}
11. Ищем
['<img src="../includes/js/ThemeOffice/media.png" />','Media Manager','index2.php?option=com_media',null,'Manage Media Files'],
вместо этого находим
['<img src="../includes/js/ThemeOffice/media.png" />','Медиа менеджер','index2.php?option=com_jwmmxtd',null,'Управление медиа файлами'],
и меняем её естественно ни как сказано в материале на:
<?php if ($canEditMenus) { ?>
['<img src="../includes/js/ThemeOffice/media.png" />','Media Manager','index2.php?option=com_media',null,'Manage Media Files'],
<?php } ?>
а на:
<?php if ($canEditMenus) { ?>
['<img src="../includes/js/ThemeOffice/media.png" />','Медиа менеджер','index2.php?option=com_jwmmxtd',null,'Управление медиа файлами'],
<?php } ?>
12. Ищем
$manageMenuMan = $acl->acl_check( 'administration', 'manage', 'users', $usertype, 'components', 'com_menumanager' );
находим почти тоже самое только перед равно меньше пробелов, после добавляем
$manageMenu = $acl->acl_check( 'administration', 'manage', 'users', $usertype, 'components', 'com_menus' );
13. В статье сказано
"Все, теперь пользователей группы DownloadsManager станет доступно меню Компоненты, в котором будет только один подпункт — Remository. Другие компоненты будут недоступны (за исключением com_content, com_menus
и com_typedcontent)." Смострим.... снова смотрим.... меню компонентов нет, что-то пошло не так, поэтому идём дальше.14. В
/includes/gacl.class.php после строчки
//array( 'administration', 'edit', 'users', 'manager', 'modules', 'all' );
вставляем:
// access to com_menus
$this->_mos_add_acl( 'administration', 'edit', 'users', 'super administrator', 'components', 'com_menus' );
$this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'com_menus' );
$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_menus' );
// access to com_content
$this->_mos_add_acl( 'administration', 'edit', 'users', 'super administrator', 'components', 'com_content' );
$this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'com_content' );
$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_content' );
// access to com_typecontent
$this->_mos_add_acl( 'administration', 'edit', 'users', 'super administrator', 'components', 'com_typedcontent'
);
$this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'com_typedcontent' );
$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_typedcontent' );
15. В
/administrator/components/com_menus/admin.menus.php ищем
defined( '_VALID_MOS' ) or die( 'Restricted access' );
находим похожее
defined( '_VALID_MOS' ) or die( 'Прямой вызов файла запрещен' );
после добавляем:
if (!($acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'all' )
| $acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'com_menus' ))) {
mosRedirect( 'index2.php', _NOT_AUTH );
}
16. В
/administrator/components/com_content/admin.content.php ищем
defined( '_VALID_MOS' ) or die( 'Restricted access' );
снова находим
defined( '_VALID_MOS' ) or die( 'Прямой вызов файла запрещен' );
после которой добавляем:
if (!($acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'all' )
| $acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'com_content' ))) {
mosRedirect( 'index2.php', _NOT_AUTH );
}
17. В
/administrator/components/com_typedcontent/admin.typedcontent.php снова находим
defined( '_VALID_MOS' ) or die( 'Прямой вызов файла запрещен' ); снова после вставляем:
if (!($acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'all' )
| $acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'com_typedcontent' ))) {
mosRedirect( 'index2.php', _NOT_AUTH );
}
18.
Говорят, что всё должно заработать, пробуем... да действительно, не чего редактировать нельзя, но меню "Компоненты" так и не появилось, могу заподозрить, что или сделал что-то не так или, что нужно править ещё что-то, например полазить в настройках отображения меню.Может кто подскажет, что я не так сделал?