Actions — или встраиваемые действия в Нпж очень похожи на то же самое в WackoWiki. Они предназначены для встраивания в документы различных сервисных возможностей, например, рубрикатора журнала, или формы поиска, или автоматического оглавления, формируемого по заголовкам.
Вставить Действие в документ можно, написав {{ActionName}} в тексте (в формате «вики/вака-разметка»). Тогда при отображении документа эта строчка заменится на результат работы соответствующего Действия. Попробуйте вставить в ваши документы {{Search}}, {{JournalIndex}} — вы увидите, что происходит.
На часто задаваемые вопросы по использованию Действий ищите ответ здесь — Частые Вопросы.Actions.
2. Основы синтаксиса Действий
2.1. Параметры Действий, чувствительность к регистру
Синтаксис Действий нечувствителен к регистру, но пока чувствителен к английскому языку.
кстати, вот таким зелёным цветом помечены возможности, которые придуманы, но не реализованы
Действие может иметь дополнительные настройки, управляемые через параметры. Названия параметров чувствительны и к регистру и к языку, значения же должны быть заключены в кавычки или не содержать пробелов, см. пример:
2.2. Управление рамочкой — wrapper
Результат выполнения большинства действий обрамляется рамочкой <fieldset> или заключается в причудливую конструкцию из <div>-ов. Это стандартное оформление называется wrapper и задаётся коллекцией шаблонов. Менять это оформление можно, указывая значение параметра wrapper при вызове Действия.
Возможные значения параметра wrapper:
none — отключить рамочку совсем
fieldset — оформить в <fieldset>, стандартную GUI-рамочку с заголовком
div — оформление с помощью <div>, заголовок выделяется отдельной плашкой
include — отличается от предыдущего варианта более мелким кеглем шрифта заголовка, наличием ссылки (правка) и дублированием заголовка вверху и внизу самого результата Действия.
menu — выравненный по правому краю блок фиксированной ширины в 250 пикселей. Текст размещается на плашке серого цвета фона, заголовок страницы не показывается
2.3. MVC- (Page Listing-) параметры
Действия, помеченные как MVC, возвращают список записей, и поэтому их оформление настраивается единообразным способом с помощью двух типовых параметров, которые определяют функциональный и оформительский шаблоны вывода результата. Ниже перечислены возможные значения обоих параметров.
Параметр mode задаёт функциональный шаблон вывода списка записей, определяя наиболее общий типаж оформления.
Возможные значения параметра mode :
feed — оформление в виде ленты (включает текст сообщений, юзерпики/аватары)
list — оформление списковой структурой или деревом (как правило, включает в себя только заголовки записей
periodical — оформление с разбиением по времени, например, помесячно или подневно (хороший пример — node@npj:NodeChanges)
Параметр style же касается прочих, мелких нюансов оформления — таких как используемые html-конструкции, расположение юзерпиков и тому подобное. Неудивительно, что для каждого из значений mode свои значения style. Не будем расписывать, какие именно, просто перечислим:
Возможные значения параметра style:
параметр period определяет периодичность разбиения списка
3. Действия, возвращающие список записей (MVC)
3.1. Feed — лента сообщений по тематике
Этот action формирует ленту по тому или иному критерию.
Позволяет строить рубрицированные ленты внутри своего журнала, потом позволит то же самое делать в сообществе. Кроме этого, модераторы могут собрать себе мод-фиды на одной странице своего журнала.
Алиасы: ModerateFeed, ModFeed — лента немодерированных сообщений (для модераторов)
Syntax:
type — my — лента постингов данного аккаунта. corr, correspondents — лента корреспондентов, mod — только для сообществ — лента немодерированных сообщений (доступна только модераторам), rank — строит ленту из сообщений пользователей, внесённых в группы с рангом, не меньше, чем minrank (актуально для сообществ и РГ)
groups — имеет смысл только для type="correspondents". Выводит ленту, состоящую только из перечисленных групп.
pagesize — сколько записей вывести в одной странице ленты
for — для какого журнала (или рубрики журнала) строить ленту. Если указать здесь какое-нибудь «ключевое слово» вашего журнала, вы получите ленту сообщений, связанных с этим «ключевым словом»
filter — позволяет показать в ленте только анонсы событий или документов. announce = events + documents
dtfrom, dtto — показывает ленту за определённый период. dfrom должно быть раньше, чем dtto
dt — показывает ленту только за сегодняшний день. Или за вчерашний.
3.2. Tree / Index — предметный указатель, дерево рубрик
Action нужен всем тем, кто жить не может без иерархической навигации. Отображает дерево вложенности кластеров друг в друга. Т.е. подкластеры представляются поддеревьями кластера и так далее. Очень мощный action, имеет много настроек и алиасов.
Алиасы:
JournalTree — для всего журнала, ClusterTree — для текущего подкластера;
Keywords, KeywordsTree — для рубрик/ключевых слов, ClustersTree — для перечня документов, у которых есть поддокументы (обратите внимание на s)
Index, ClusterIndex, JournalIndex — показывают предметный указатель, причём JournalIndex показывает все документы журнала, а остальные — только первый уровень вложенности.
Syntax:
for — относительный адрес кластера, для которого формируется список изменений. По умолчанию — текущий документ. Важно, что это первый параметр, называться он может как угодно. Для алиасов пропускаем.
depth — глубина просмотра дерева. нулевое или нечисленное значение — значит всё до конца.
filter — показывать только ключевые слова / подкластеры / дайджесты / вообще все документы кластера/журнала
subject — параметр, который определяет, что показывать в качестве ссылки, полный таг, сабжект (заголовок) или последнюю не содержащую «слэш» часть тага.
index — показывать вверху и внизу список буков индекса, которые являются быстрыми ссылками
3.3. Changes — перечень последних изменений
Action очень нужен для мониторинга активности в журнале или отдельном его кластере. Кроме того, фактически служит основным навигационным инструментом при работе над какой-то ячейкой ячеистого гипертекста.
Aliases: JournalChanges, RecentChanges — для всего журнала, ClusterChanges — для текущего подкластера, NodeChanges/~NodeRecentChanges — для вего узла; в них можно не указывать параметр for
Digests — показать дайджесты текущей рубрики или всего журнала (очень актуально для сообщества, см. killerapp@npj:digests)
Syntax:
for — относительный адрес кластера, для которого формируется список изменений. По умолчанию — текущий документ. Важно, что это первый параметр, называться он может как угодно. Для алиасов пропускаем
digests — показать все дайджесты указанной рубрики (не путайте с {{Tree filter="digests"}})
limit или max — определяет сколько ссылок показывать в списке. Немного не то же, что у Feed, потому что листалки тут почему-то нет =)
3.4. Facet — список записей по набору рубрик
Данный Action предназначен для формирования выборок из журнала, основанных на рубрикации. Параметры позволяют настроить отображение как содержимого одной рубрики, так и пересечение, и объединение рубрик между собой. Фасет чрезвычайно необходим вам, если вы хотите регулярно смотреть, например, записи, помеченные «Нпж» и «Юзабилити» одновременно.
Aliases: ClusterFacet — для текущего документа, идентичен просто facet без параметров =)
используется в FacetFilter для отображения результата выборки
Syntax:
keywords — ключслова, они же имена рубрик. Могут быть абсолютными, могут быть относительными — в последнем случае мы считаем, что они заданы относительно корня журнала (т.е. WackoWiki = kuso@npj:WackoWiki)
operator — выбирает один из режимов фасета — делать ли пересечение (AND) или объединение (OR) рубрик. Законы логики должны быть вам знакомы.
filter — какие типы записей отображать? Если не указан, отображаем все.
order — указывает на порядок вывода списка — какой параметр записи учитывать (первые три — время, дальше таг или заголовок)
subject — выбирает, что отображать в ссылках — заголовки или таги. По умолчанию, кажется, заголовки =)
limit или max — определяет сколько ссылок показывать в списке. Немного не то же, что у Feed, потому что листалки тут тоже почему-то нет =). Главным образом по причине сложного и запутанного запроса в БД, но это уже технические детали.
3.9. (-) Orphaned — страницы, на которые нет ссылок
(нереализовано)
4. Действия, возвращающие список адресов (но не записей)
4.1. (-) Wanted — перечень адресов страниц, которых ещё нет
(нереализовано)
5. Действия оформления текущей записи
5.1. TOC / TableOfContents — автооглавление
Действие формирует оглавление по заголовкам в теле страницы. Чем-то похоже на автооглавление MSWord.
Syntax:
page или for — относительный адрес кластера, для которого формируется список изменений. По умолчанию — текущий документ. Можно задавать и абсолютный адрес, напримерНоде::ЧастыеВопросы/Actions
from и to ограничивают включение заголовков в содержание. По умолчанию (соответствует примеру выше) в оглавление включаются заголовки начиная со 2го уровня (три "=") и заканчивая 4ым (пять "=") включительно
numerate — если указан этот параметр, то происходит сквозная автонумерация заголовков (т.е они получаются вида 2.1., 3.7.2., и т.п.), причём нумеруются они и в оглавлении, и в самом тексте.
p включает разметку параграфов и задаёт один из стилей разметки (смотрите P для описания, что это такое)
5.2. P / ShowParagraphs — автонумерация параграфов
Если написать в тексте {{P}}, то непосредственно там, где вы это напишете, никаких изменений не произойдёт. Однако, весь документ будет разбит на параграфы и параграфы будут понумерованы и сопровождены ссылками. Параметрами можно настроить стиль вывода этих ссылок.
Syntax:
style или align — какой стиль оформления выбрать
name определяет правило формирования номера параграфа (абсолютная по всему узлу, относительно текущей главы или относительно рассматриваемого документа)
заглавными буквами тут помечены варианты «по-умолчанию»
6. Прочие
6.1. Include — вставка одного документа в другой
Action нужен для вставки одного документа в другой, сборки итогового документа из нескольких мелких, разбиения большого документа на несколько более простых мелких. Если документа, на который ссылается инклюд, ещё нет — выводится ссылка-приглашение его создать.
NB: в сообщения (посты) инклюды вставлять нельзя. Там они автоматически заменяются на ссылку. Сообщения в документы инклюдить можно.
Вложенные инклюды делать можно, цикличные нельзя.
Syntax:
page — относительный адрес страницы, которую нужно вставить в эту. Можно указывать и !/, и ../, и Kuso@NPJ:... имя параметра неважно, главное, он должен быть первым. Более того, вы можете указать в качестве адреса и вызов какого-нибудь сервиса, вроде Kuso@npj:RecentChanges.
wrap_always — по умолчанию, если у просматривающего нет прав на редактирование вставленного документа, то «рамочка» вокруг него не показывается. Задав единицу этому параметру можно принудительно показывать рамочки всем. Выбор рамочки делается с помощью параметра Wrapper.
subject — опциональный параметр. Показывать заголовок вместо тага в рамке оформления инклюда.
no_error — опциональный параметр. Когда он установлен, то если страница недоступна для просмотра, сообщение об этой «ошибке» не выводится.
FacetFilter — непростая выборка по рубрикатору
Действие Facet позволяет сформировать выборку по жёстко прописанному в параметре набору ключевых слов. Действие FacetFilter выводит форму, где позволяет посетителю самому настроить параметры выборки. Набор чекбоксов она выводит, да.
Syntax:
cols — на сколько колонок разбить список рубрик/ключевых слов
root — если указан, то в форме показывается только ключевые слова, находящиеся в данной рубрике (сравните kuso@npj:Npj/FacetFilter, kuso@npj:Аспирантура/FacetFilter, kuso@npj:FacetFilter)
keywords — перечисленные через пробел (как в Facet) ключевые слова, с которыми результат будет связан принудительно.
dest позволяет выбрать, куда будет осуществлён переход по нажатию кнопки — на ту же самую страницу (со всем, что окружает фильтр), или будет выведен только результат выборки
mode, style — см. MVC-Действия — они будут переданы в Facet. Это же касается operator, filter, order, subject
6.2. Digest — форма для создания дайджеста
Это Действие предназначено для доступа к механизму «дайджестов». Результатом его применения вы увидите форму со множеством настроек и большой кнопкой, по нажатию на которую вы перейдёте к редактированию черновика дайджеста (черновик составляется автоматически в соответствии с настройками, сделанными в форме). Попробуйте, вдруг вам понравится =)
Syntax:
все параметры опциональные и по сути позволяют просто указывать значения «по-умолчанию» для каждого из полей формы
feed/for — адрес рубрики, по которой строить дайджест
dtfrom/dtto — период, за который строится дайджест. Можно вместо периода указать dtlast=1, тогда дайджест будет строиться начиная с момента, на котором закончился предыдущий дайджест и по указанный dtto. Установки «по-умолчанию» покрывают последний месяц (30 дней)
filter — аналогичен тому, что у Feed — какие сообщения включать в дайджест
targetmask — адрес, куда будет сохранён дайджест. Дайджесты, создаваемые в журнале РГ сохраняются там же, все остальные — в вашем журнале.
hide_ — эти параметры позволяют скрывать элементы интерфейса, тем самым блокируя изменения предустановленных параметров. Как вы заметите, hide_build и следующие четыре параметра позволяют скрывать даже кнопки!
mode — выбор механизма «черновика дайджеста»
template, formatting — параметры черновика, доступные в mode=simple
html — параметр оформления дайджеста в mode=form
6.3. Directory / Users / etc. — каталог аккаунтов
Этот action формирует список зарегистрированных пользователей узла, сообществ, рабочих групп на узле. Кроме этого, этот же action позволяет получить список членов/модераторов сообществ
Алиасы: Users, Communities, Workgroups
Syntax:
show — какие аккаунты показать, пользовательские или сообществ или рабочих групп. Значение по-умолчанию — all
class — показывать аккаунты только этого «класса». Классы задаются в конфигурации узла, как правило это короткие английские имена. На нашем узле классов пока нет.
style — стиль оформления — две разновидности списков и простое перечисление через запятую, которое и является умолчательным.
order — порядок, в котором будут отсортированы аккаунты при отображении
6.4. Goto / Redirect — переход по НПЖ-адресу
Этот action выводит форму для ввода НПЖ-адреса, по которому осуществляет переход. Специальным параметром можно обязать его осуществлять переход безусловно при попытке загрузить данную страницу. Также умеет чувствовать querystring ?goto=... и осуществлять переход. Быстрый вызов action можно произвести по комбинации Ctrl+Shift+G.
Алиасы: Redirect (immediate=1 всегда)
Syntax:
to — куда осуществлять переход, если он безусловный; или чем заполнить форму «по-умолчанию». Название параметра неважно, главное, что он первый.
immediate — если указан данный параметр, переход будет осуществлён без спроса пользователя.
absolute — если указан данный параметр, то адрес воспринимается в абсолютном контексте, иначе он привязан к контексту страницы, из которой вызван.
6.5. Versions — перечень версий/анонсов документа
Action нужен для того, чтобы показать список версий или анонсов данного документа и дать доступ к сравнению их между собой. Он позволяет показывать выборочно анонсы в одном или нескольких сообществах, скрывая остальные и вообще работает более гибко, чем простой переход по ссылке !/Versions.
Алиасы: PageVersions, PageAnnounces — показывают только версии или только анонсы
Syntax:
page — относительный адрес документа, для которого показываем версии. Можно указывать и !/, и ../, и Kuso@NPJ:... имя параметра неважно, главное, он первый. В алиасах его указывать не нужно, затем они и нужны.
style — стиль оформления: показывать или нет ссылки на дифф
tag — префикс для разметки версий?, фильтрация — будут показаны только те версии, метки которых начинаются с этого префикса
author — показать версии только этого автора
skipsame — не показывать версии одного автора, идущие подряд — показывать только самую последнюю. Для анонсов — не показывать более старые анонсы в тех же сообществах/журналах
limit — сколько показывать версий (если используется skipsame, то может быть показано меньше версий)
no_current — не показывать текущую версию в списке
show — какие списки показывать — версий, анонсов или оба
announced — перечисленные через пробел НПЖ-адреса журналов/сообществ, анонсы в которых нужно включить в список (все остальные анонсы не будут показываться)
заглавными выделены значения «по умолчанию»
6.6. A / Anchor — вставка якоря для гиперссылки
Этот action вставляет в документ тэг языка HTML, позволяющий сослаться в точности на данное место документа
Алиасы: A, Anchor
Syntax:
name — имя якоря. Впоследствии именно его Вы будете использовать в ссылке после знака #. Имя этого параметра неважно, главное, он должен быть первым.
title — то, что посетитель страницы увидит, наведя на якорь мышку. Имеет смысл, только если выставлен параметр text.
text — текст, который будет выведен в теле страницы.
6.7. Nodes — список знакомых узлов
Этот action вставляет в документ таблицу с перечнем всех НПЖ-узлов, знакомых текущему узлу.
6.8. Subscribers — статистика подписки для владельца рубрики
С помощью этого action владелец журнала или документа может посмотреть некоторую статистику подписчиков на свой журнал, отдельную рубрику или документ.
Статистика может показываться как обще-суммарная, так и детализированная по каждому подписчику индивидуально. Последний вид статистики доступен для просмотра только владельцам журнала, или модераторам/менеджерам (если статистика считается для сообщества/рабочей группы.
Алиасы: SubscribeStats, EmailSubscribers Syntax:
param0 — неважно, как называется параметр. Важно, что он указывает на журнал или рубрику, статистику которой вы хотите вывести
totals — если выставить его в единичку, то вы увидите только суммарные цифры, без деталей поименно
only_email позволяет выводить в список только email-подписчиков, игнорируя корреспондентов.
Важно, что этот action показывает только непосредственных подписчиков, а не вообще всех, кто будет получать уведомление при, например, новом комментарии к записи. Последнее пока невозможно, хотя и планируется к внедрению.
7. Устаревшая документация
(устаревшая, архивная информация по нерефакторенным действиям)
7.1. BackLinks — ссылки на данный документ
Это очень интересный action, потому что он создаёт двунаправленный гипертекст. Он формирует список документов и сообщений, сославшихся на данный.
Alias: Чувствствую, что нужны алиасы, но не знаю какие.
Syntax:
for — Для какой страницы выводить список backlinks.