/dirty-on-steroids

A set of user javascript powered features for dirty.ru. All credit goes to Stasik0, BearOff, crea7or, lamo4ok and NickJr.

Primary LanguageJavaScript

Модульный сервис-пак, инструкция по применению

Написание плагина

Плагины к сервис-паку - объекты со следующим интерфейсом:

type - тип плагина, используется для определения, в какую вкладку определять конфигурафионные контролы данного плагина
name - название плагина, используется для именования контрола с резервированным именем active, если такой есть
author - строка, определяющая автора, используется для поддержания ЧСВ
config - объект с конфигурационными данными плагина. Интерфейс, позволяющий управлять данными, создается ядром.
run - функция инициализации плагина, пускаемая ядром

Чтобы включить плагин в состав сервис-пака, необходимо вызвать метод d3.addModule(), передав в качестве параметра объект плагина.

Пример смотри в файле extra/browser.js

Описание конфигурационных данных.

Конфигурационные данные представляют собою объект шаблона {название_переменной:{свойства_переменной}}. Свойства переменной:
type - обязательное свойство, означает тип контрола для управления этой переменной. Поддерживаются text, checkbox, radio, select
value - начальное значение переменной по умолчанию
caption - метка контрола переменной. Если caption отсутствует, в качестве метки используется имя переменной
options - массив значений для контролов типа radio и select

Пример смотри в файле extra/test.js

Сервисы, предоставляемые ядром.

d3.user.name - имя пользователя. null, если пользователь не залогинен
d3.user.id - id пользователя. null, если пользователь не залогинен
d3.setStyle(element,style) - установка CSS свойств для элемента
d3.newElement(tagName,parms) - создание нового элемента и опциональня установка атрибутов, элементов стиля и свойства innerHTML
d3.newDiv(parms) - вызов d3.newElement с параметром tagName='div'
d3.get - объект с методами взятия элементов страницы d3. Пока реализованы logoutLink() и leftNavigation(). Будет развиваться.
d3.json.encode(value) - кодирование объекта в json
d3.json.decode(json) - декодирование json
d3.addModule(module) - добавление модуля (плагина) в сервис-пак
d3.window - оригинальный объект window
d3.document - оригинальный объект document
d3.xpath.get(selector,context) - поиск по документу или указанному элементу при помощи XPath. Возвращает XPathResult, тип результата - ORDERED_NODE_SNAPSHOT_TYPE
d3.xpath.each(selector,function(node,nodeIndex){},context) - поиск при помощи XPath и применение к найденным узлам указанной функции. 
 Функция получает в качестве параметров найденный элемент, индекс элемента и может вернуть false, если хочет прервать выполнение цикла для оставшихся результатов.
d3.content.posts - массив постов на странице. Пустой, если постов нет.
d3.content.comments - массив комментариев на странице. Пустой, если комментариев нет.
d3.content.onNewComment(function(comment){}) - добавление обработчика нового комментария.
d3.getLocalStorageItem(name, defaultValue) - достаёт name параметр из LocalStorage, если name==null возвращает defaultValue.

Интерфейсы постов и комментариев
offset - отступ контейнера с начала страницы
height - высота контейнера
getContent() - взять контейнер содержимого
getContentText() - взять содержимое в виде текста
ratingContainer() - взять контейнер рейтинга
ratingValue() - взять значение рейтинга как число. Для постов и комментариев со скрытым рейтингом - значение будет null.