Панель слева
|
|
17.01.2011 18:57
|
#
Добрый день не могли бы вы разъяснить,на простом примере, как при разработки своего модуля, добавить панель слева(например категории в форуме)? |
|
|
Встроенные возможности работы с графикой в TeamWox
В статье рассматривается работа с графическими изображениями, используя встроенные возможности системы TeamWox. |
|
|
18.01.2011 13:42
|
#
paxerus:
Добрый день не могли бы вы разъяснить,на простом примере, как при разработки своего модуля, добавить панель слева(например категории в форуме)? Интерфейс модуля может требовать наличия левой "панели" или быть без него. Указать серверу TeamWox, что модулю необходима левая "панель", необходимо в ответ на вызов функции ModuleGetInfo .dll вашего модуля. В структуре ModuleInfo для поля flags необходимо указать флаг TW_MODULE_FLAG_LEFTPAGE. //+------------------------------------------------------------------+ //| Получение информации о модуле | //+------------------------------------------------------------------+ _DLLAPI TWRESULT __cdecl ModuleGetInfo(int index, ModuleInfo *info) { if(info==NULL) return(RES_E_INVALID_ARGS); //--- if(index==0) { //--- заполняем структуру static ModuleInfo module_info= { ...................................................................................................... TW_MODULE_FLAG_LEFTPAGE | TW_MODULE_FLAG_DIGITAL_SIGN | TW_MODULE_FLAG_MODULE_TAB, // флаги ...................................................................................................... }; memcpy(info,&module_info,sizeof(module_info)); return(RES_S_OK); } //--- return(RES_E_NOT_FOUND); } Флаги, которые можно указать для поля flags приведены в перечислении EnModuleFlags, определение которого дано в файле SDK\API\Core.h Если в настройках модуля (структура ModuleInfo) указан соответствующий флаг, то сервер автоматически будет отображать левую "панель". Сервер указывает в качестве URL-а для страницы отображаемой слева - /[short_module_name]/left (например, /board/left). Вы должны реализовать в своем модуле обработку запроса на указанной URL. |
|
|
|
18.01.2011 16:20
|
#
Посмотрите исходники модуля Forum (он идет в составе SDK) - там как раз есть работа с левой панелью. Или речь о том, чтобы внедриться в чужую левую панель существующих модулей? |
|
|
|
19.01.2011 17:28
|
#
renat:
Посмотрите исходники модуля Forum (он идет в составе SDK) - там как раз есть работа с левой панелью. Или речь о том, чтобы внедриться в чужую левую панель существующих модулей? хорошо посмотрю ,нет речь идет именно про свою панель, alexey спасибо за разъяснения |
|
|
|
20.01.2011 13:31
|
#
Объясните пожалуйста для чего в модуле Форума есть структура BoardCategory а так же класс CBoardCategory(чем они отличаются ,заем структура если есть класс), и для чег онеобходим интерфейс IBoardCategory, а то чтото как то запутанно там у вас:) |
|
|
|
20.01.2011 14:03
|
#
paxerus:
Объясните пожалуйста для чего в модуле Форума есть структура BoardCategory а так же класс CBoardCategory(чем они отличаются ,заем структура если есть класс), и для чег онеобходим интерфейс IBoardCategory, а то чтото как то запутанно там у вас:) Логика модуля форум требует наличия у категории разграничения прав доступа. Сотрудники видят в левой "панели" список категорий в зависимости от разрешений на каждую категорию. В менеджере форума IBoards (SDK\API\Board.h) объявлены несколько методов для работы по списком категорий форума. Для того, чтобы другие модули могли работать с данным списком необходим интерфейс IBoardCategory: class IBoards { public: //--- работа с категориями virtual TWRESULT CategoriesCount(const Context *context, int flags, int *count) =0; virtual TWRESULT CategoriesGet(const Context *context, int flags, IBoardCategory **categories, int *count)=0; virtual TWRESULT CategoryGet(const Context *context, INT64 category_id, IBoardCategory **category) =0; virtual TWRESULT CategoryGet(const Context *context, INT64 category_id, BoardCategoryInfo *category) =0; virtual TWRESULT CategoryCreate(const Context *context, IBoardCategory **category) =0; virtual TWRESULT CategoryUpdate(const Context *context, IBoardCategory *category) =0; virtual TWRESULT CategoryDelete(const Context *context, INT64 category_id) =0; ........................................... }; С целью повышения производительности список категорий кешируется в памяти. Он запрашивается из БД один раз при инициализации модуля Форум. Структура BoardCategory используется для хранения записи о категории в кеше (в памяти). Класс CBoardCategory - это реализация интерфейса IBoardCategory. Данный класс необходим для получения копии списка разрешений для категории. Если нет необходимости получать и изменять список разрешений на категорию необходимо использовать структуру BoardCategoryInfo, которая содержит минимум необходимой информации. |
|
|
|
20.01.2011 14:08
|
#
Спасибо, теперь стало понятно |
|
|
|
20.01.2011 14:11
|
#
Если для Вашей задачи не нужна сложная логика с проверкой и изменением
разрешений на каждую запись (категорию, фильтр и т.д.), то Вам не нужно реализовывать для этого отдельные классы и объявлять интерфейсы. Вы можете для отображении левой "панели" список сформировать непосредственно в шаблоне. <!-- Часть шаблона template\left.tpl --> var filters = [ {"id":"index", "name":"<lngj:MYMOD_OPENED />", "title":"<lngj:MYMOD_OPENED_TITLE />", "link":"\/mymodule\/index"}, {"id":"completed","name":"<lngj:MYMOD_COMPLETED />","title":"<lngj:MYMOD_COMPLETED_TITLE />","link":"\/mymodule\/completed"}, {"id":"closed", "name":"<lngj:MYMOD_CLOSED />", "title":"<lngj:MYMOD_CLOSED_TITLE />", "link":"\/mymodule\/closed"} ]; TeamWox.Control("List",filters); |
|
|
|
20.01.2011 14:27
|
#
alexey:
Если для Вашей задачи не нужна сложная логика с проверкой и изменением разрешений на каждую запись (категорию, фильтр и т.д.), то Вам не нужно реализовывать для этого отдельные классы и объявлять интерфейсы. Вы можете для отображении левой "панели" список сформировать непосредственно в шаблоне.
Я Так понял логика такая, при запуске модуля грузится таблица с категориями, далее при любом изменении дерева(списка), мы подгружаем с базы список заного. с точки зрения С++ более или менее понятно ,но возможно придется помучатся с шаблоном вроде разобрался как сделать дерево, посмотрим что получится |
|
|
|
20.01.2011 14:31
|
#
paxerus:
Я Так понял логика такая, при запуске модуля грузится таблица с категориями, далее при любом изменении дерева(списка), мы подгружаем с базы список заного. с точки зрения С++ более или менее понятно ,но возможно придется помучатся с шаблоном вроде разобрался как сделать дерево, посмотрим что получится Для того чтобы отображать древовидный список можете использовать элемент управления TreeList, который используется в модуле Сервисдеск и Чат. Описание этого и других элементов управления есть в документации (Documentation\TeamWoxSDK_russian.chm), которая идет в поставке с TeamWox SDK. |
|
| К списку тем | 12 |