CB Авторизация

Ваш логин в:

Меню пользователя
Скачать
Статьи на сайте
 
Плагины пользователя (часть 1)
Написал Kotofeich   
14.08.2007

Программные расширения пользовательского типа (User-type plug-ins) добавляют различные функции к CommunityBuilder. Они могут содержать как вкладки, так и пользовательские боты. 

Работа с параметрами
 Параметры могут быть определены в xml файле (см. статьи по xml-файлам).
Они хранятся внутри CommunityBuilder, в определенных таблицах БД, выделенных для данного плагина.

Эти параметры могут быть получены в php коде следующим образом:

$params = $this->params;
$pmsType = $params->get('pmsType', '1');
$showTitle = $params->get('showTitle', "1");


Первый аргумент функции $params->get указывает имя возвращаемого параметра. Это имя изначально указывается в xml файле (в теге <param> , атрибут “name=”).
Второй параметр необязателен. Он показывает значение по-умолчанию и должен соответствовать значению “default=”  тега “<param>” в xml файле. 
Третий параметр, тоже необязателен - это определенный метод. Бывает трех видов: search/paging/sorting. О нем будет рассказано позже, в статье "Другие формы ввода".

В случае, если вы обрабатываете вкладки, $this-> params вернет параметры вашей вкладки и параметры плагина в целом. Позже, выбранные пользователем настройки плагина, также будут доступны через эту функцию.

Обработка ошибок

Используя плагины и вкладки, вы можете получать сообщения об ошибках. Для этого, каждый раз нужно вызывать следующую функцию:

/**
* PRIVATE метод: показывает текст о последней ошибке
* @param - строкой параметр ошибки
* @return - булев тип (истина).
*/
function _setErrorMSG($msg)

Для этого, также может быть использован  следующий обработчик ошибок, останавливающий нормальную работу модуля CB Workflow  и выводящий сообщение об ошибке (на данный момент обработка производится с помощью метода js alert):

/**
* PRIVATE метод: устанавливает приоритет обработки (по-умолчанию 0)
* @param приоритет
* @return булев тип (истина)
*/
function raiseError($priority)


Обьекты
Все взаимодействия между CommunityBuilder и плагинами сделаны через объекты. Конечно, есть некоторые функции, не являющиеся обьектами, но мы стремимся сделать CB максимально обьектно-ориентированным, чтобы программистам было легче работать с ним.

Обычно, объекты плагинов обьявляются в коде только один раз,  после чего обьектные-переменные доступны в течение выполнения запроса CommunityBuilder  - генерации страницы.
Так, например, если страница генерируется по запросу userbot, а потом вкладкой, то обьекты, созданные для первого случая, останутся работать во втором.

Каждый обект должен указывать конструктор (так же, как в php4) своего родительского класса.

Пожалуйста, имейте в виду, что в дальнейшей работе не все вкладки будут загружены и показаны.

Разработчики CB  предоставили возможность вывода вкладок: одна за другой и, при выборе вкладки, не нужно перезагружать страничку. Поэтому, во время показа вкладок, вы можете использовать метод getDisplayTab(), чтобы перейти на нужную вкладку программно, указав ее название. 

Вкладки
Все вкладки получены из этого класса:

/**
* Класс вкладок
* @package Community Builder
* @author JoomlaJoe and Beat
*/
class cbTabHandler extends cbPluginHandler {
/**
* Конструктор
*/
function cbTabHandler() {
$this->cbPluginHandler();
}
/**
* Генерирует меню и статус пользоватея, показывая его в профиле пользователя, возвращается через $this->addMenu
* @param обьект вкладки, записанный в БД
* @param обьект mosUser (пользователь, который должен быть выведен на экран)
* @param int 1 для фронт-енда, 2 для бак-енда
* @returns булев тип : либо истина, либо ложь если включено ErrorMSG
*/
function getMenuAndStatus($tab,$user,$ui) {
}
/**
* Генерирует html-код вкладки для отображения html кода во вкладке в профиле пользователя
* @param обьект вкладки, записанный в БД
* @param обьект mosUser (пользователь, который должен быть выведен на экран)
* @param  int 1 для фронт-енда, 2 для бак-енда
* @returns mixed : либо истина, либо ложь (если есть сообщение об ошибке ErrorMSG)
generated
*/
function getDisplayTab($tab, $user, $ui) {
}
/**
*  Генерирует HTML, чтобы показать пользователю настройки вкладки
* @param обьект вкладки, записанный в БД
* @param обьект mosUser (пользователь, который должен быть выведен на экран)
* @param  int 1 для фронт-енда, 2 для бак-енда
* @returns mixed : либо строка html -содержимое вкладки, либо ложь (если есть сообщение об ошибке ErrorMSG)
generated
*/
function getEditTab($tab, $user, $ui) {
}
/**
* Сохраняет настройки вкладки пользователя
* @param обьект вкладки, записанный в БД
* @param обьект mosUser (пользователь, который должен быть выведен на экран)
* @param  int 1 для фронт-енда, 2 для бак-енда
* @param массив данных _POST для сохранения содержимого редактируемой вкладки, после генерации ее методом getEditTab
* @returns mixed : либо строка html -содержимое вкладки, либо ложь (если есть сообщение об ошибке ErrorMSG)
generated
*/
function saveEditTab($tab, $user, $ui, $postdata) {
}
/**
* Генерирует html-код для вывода вкладки/зарегистрированной области
* @param обьект вкладки, записанный в БД
* @param обьект mosUser (пользователь, который должен быть выведен на экран)
* @param  int 1 для фронт-енда, 2 для бак-енда
* @returns mixed : либо строка html -содержимое вкладки, либо ложь (если есть сообщение об ошибке ErrorMSG)
generated
*/
function getDisplayRegistration($tab, $user, $ui) {
}
/**
* Сохраняет настройки зарегистрированной области/вкладки пользователя
* @param обьект вкладки, записанный в БД
* @param обьект mosUser (пользователь, который должен быть выведен на экран)
* @param  int 1 для фронт-енда, 2 для бек-енда
* @param массив данных _POST для сохранения содержимого редактируемой вкладки, после генерации ее методом getEditTab
* @returns mixed : либо строка html -содержимое вкладки, либо ложь (если есть сообщение об ошибке ErrorMSG)
generated
*/
function saveRegistrationTab($tab, $user, $ui, $postdata) {
}

PMS и меню вкладок определены в этом базовом классе (задокументированы и описаны в их собственных файлах).

Каждая вкладка в getDisplayTab должна содержать код для отображения описания, установленного админом в бек-енде.

if ($tab->description != null) $return .= "\t\t<div
class=\"tab_Description\">".unHtmlspecialchars(getLangDefinition($tab-
>description))."</div>\n";

Заметьте, что все пользовательские параметры не зависят от включения магических кавычек в настройках php, и поэтому, если вы выполняете sql-запросы, то они должны содержать обратные слэши или их  нужно обрабатывать, например, так: $database->getEscaped($row->username).
 
< Пред.   След. >

 

© 2011 Русский сайт поддержки Community Builder
Все права принадлежат Sunshine studio, LLC
Партнерки
Модуль SunBlog
CB поиск пользователя

CB Online

Посетителей нет.
CB статистика
5039 зарегестрировано
0 сегодня
0 за неделю
0 за месяц
Последние: Denis85

Дружина
хостится тут

и отзывы о хостинге для Joomla от дружинников