IntraACL/ru
IntraACL — лучшее расширение для MediaWiki, связанное с поддержкой прав. Создано на основе отлаженного и очень сильно допиленного HaloACL.
Contents
Основные отличия
Редактор
thumb|right|200px|Редактор прав HaloACL В HaloACL интерфейс служебной страницы реализован неудобно, глючит и тормозит, на основе JavaScript-фреймворка YAHOO UI (в жизни к нему теперь не притронусь). Кроме того, он переусложнён (можно написать раз в 5 меньше кода), и ужасен с точки зрения удобства пользователя — он пошаговый и не очень интерактивный.
thumb|right|200px|Редактор прав IntraACL В IntraACL интерфейс гораздо дружелюбнее и написан на «голом» JavaScript’е, без использования каких-либо фреймворков вообще (кроме МедиаВиковского AJAX’а — sajax_do_call), посему работает очень шустро и приятно. Аналогично реализован и редактор групп, и списка шаблонов быстрого доступа.
Сравнение
Пример создания прав в редакторе HaloACL:
- Сначала нужно выбрать, что создаём — права, шаблон, или «личный шаблон».
- Потом выбрать на что создаём права — на страницу, категорию, namespace, свойство. Опция «свойство» не скрывается, даже если Semantic MediaWiki не установлена.
- Ввести имя и нажать «Далее». После этого поменять имя, естественно, уже нельзя.
- Нажать «Create right». Откроется страшная форма с кучей полей.
- Ввести имя и описание для «права». То есть словесное описание. Зачем оно — понятия не имею.
- Выбрать права галочками.
- Выбрать «кому» из 5 вариантов («мне», «набору юзеров/групп», «всем», «всем зарегистрированным», «всем анонимным»).
- Выбрать галочками, кому же всё-таки, в случае набора. Выбор ведётся из YUI TreeView, фильтруемого тут же, и со страшной силой тормозит.
- Чтобы просмотреть, кому что-то выдано сейчас, надо переключиться на другую вкладку.
- После этого нажать «Сохранить право». Но если вы думаете, что квест закончен и всё сохранилось, очень ошибаетесь.
- Нажать «Далее».
- Ещё одной такой же формочкой задать права на изменение самих прав.
- Нажать «Далее».
- Нажать «Сохранить».
Только после этого ваши права сохранятся. При всём этом процессе увидеть, какие реально получились права с учётом всех включений шаблонов и групп нельзя. Также нельзя увидеть реальный текст определения, который в действительности сохранится на страницу прав. Также в оригинале плохо работает и само сохранение — иногда оно сохраняет текст определения, но не разбирает его на права и они в итоге не действуют.
В IntraACL, с другой стороны, редактор интерактивный, не пошаговый и всегда показывает то, что будет сохранять.
- В любой момент можно поменять, что защищаем, добавить права, права на изменения прав или включения шаблонов.
- Везде работает автозаполнение (autocomplete) — подсказывает страницы, пространства имён, категории, пользователей, группы.
- При выборе пользователя или группы состояние флажков (✓) меняется так, чтобы отражать текущие права выбранного пользователя/группы.
- Причём, редактор подгружает включаемые определения групп и шаблонов и вычисляет реальные права, учитывая, если право было дано пользователю, потому что он находится в группе или если право дано через шаблон.
- Дать или отобрать права очень легко — нужно просто отметить или снять флажок. Текст определения прав при этом изменится.
- Кнопка «Сохранить» ровно одна :)
Панель
Переделана панель, появляющаяся при редактировании страниц:
- Не требует тяжёлого JavaScript’а.
- Сохраняет состояние при нажатии «Предпросмотра».
- Показывает ссылки на шаблоны быстрого доступа, чтобы можно было просмотреть их содержимое.
- Подсказывает, какие ещё права действуют на страницу (то есть права на пространства имён и категории).
- Подсказывает, когда вы не можете редактировать права страницы.
Упрощения
Убраны права на «добавление семантических аннотаций», «редактирование через форму», «редактирование через WYSIWYG-редактор», ибо приравнены просто к праву редактирования.
Убраны такие понятия, как «Личный шаблон по умолчанию» (Default user template), «Белый список» (Whitelist). Первое потому, что неудобно в одном месте задавать шаблон по умолчанию, а в другом — список шаблонов, доступных для быстрого выбора на панельке. Удобно в общем списке выбирать тот, который будет по умолчанию. Второе потому, что «белый список» только усложняет проверки — на страницы можно просто раздать права на чтение, что будет эквивалентно.
Убрана возможность перевода названий функций парсера и их параметров, ибо нефиг разводить 1С («Если (хаха) то (хаха) КонецЕсли»). Названия всегда на английском.
Рефакторинг кода
Огромный объём рефакторинга. Например, константы перемещены из отдельный классов в общий, локализация упрощена, функции парсера более не полагаются на то, что при сохранении статья будет parse’иться, а также позволяют массовое редактирование и импорт/экспорт (то есть редактирование нескольких страниц за запрос).
Общие черты
Все определения прав, групп и т. п. хранятся как вики-страницы в специальном пространстве имён ACL.
Также полностью совместим интерфейс для расширений (метод Title::userCanReadEx()).
Терминология
Терминология в основе прав HaloACL и IntraACL лежит общая:
SD (Security Descriptor)
Права для чего-нибудь. Чем-нибудь может быть страница, категория, пространство имён. В Semantic MediaWiki чем-нибудь также может быть свойство (property). SD может включать в себя IR (Inline Rights), включение PR (Predefined Rights), и права на изменение самого SD.
PR (Predefined right или Right template)
Шаблон прав, ничего конкретно не защищающий. По структуре совпадает с SD. Его можно включать в другие шаблоны или в SD, и тогда права, определённые в нём, распространяются на то, куда он включён.
IR (Inline right)
«Базовая единица» прав — «одно право». Имеет две характеристики:
- кому выдано — это набор пользователей и/или набору групп (не вики-групп, а HaloACL-групп).
- что выдано — набор прав.
Доступны следующие права: чтение, запись, удаление, переименование, создание новых статей, (только в IntraACL) изменение прав статьи. В оригинальном HaloACL также выделяются права на: добавление семантических аннотаций, редактирование через форму, редактирование через WYSIWYG-редактор. В IntraACL эти 3 права приравнены к праву редактирования (ну что за бред — разрешать править статью через WYSIWYG, но не разрешать просто) и ликвидированы.