Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2009-09-17 14:49:30

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Сервисные функции при создании плагинов

1. Программно скрыть некоторые пункты меню (посматриваю в сторону makeCategoryList, если не верно то поправьте меня)
2. Как грамотно послать ajax запрос, чтобы вернулся только результат выполнения запрашиваемой функции плагина
3. Запретить редакторам редактировать новости в определенных категориях
4. Какие функции могут выводить сообщения пользователям (если есть такие)


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#2 2009-09-17 16:37:18

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Сервисные функции при создании плагинов

Это вопрос, ответ на кем-то заданный вопрос или утверждение? smile

Не в сети

#3 2009-09-17 17:47:15

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Сервисные функции при создании плагинов

vitaly пишет:

Это вопрос, ответ на кем-то заданный вопрос или утверждение? smile

Это вопрос.
Планирую перенести свой сайт на ng, но для этого мне необходимо дополнить функционал, сейчас разбираюсь в плагиностроении. Общий принцип работы системы понятен (с точки зрения архитектуры). Большую часть исходников уже проанализировал.
И у меня возникли вопросы: например, как я понял категории загружаются из базы в локальный массив, и если их из этого массива убрать, то они отображаться не будут, вот и интересует правильно ли понял, если да, то с каким action-ом мне создавать плагин, чтобы он был вызван между загрузкой категорий из базы и выводом их на экран.
Второй вопрос про ajax запрос (просто еще не смотрел как тут реализовано), но меня интересует только формат запроса, ведь движек както должен понять что я хочу вывести не весь сайт, а получить только кусочек.
Третий вопрос. Есть ли какой-то префильтер, который не даст определенной группе пользователей редактировать или просматривать новости из определенной категории.
Четвертый вопрос. Например мой плагин определяет, что конкретный пользователь не имеет доступа к информации которую выводит данный плагин и надо пользователю об этом сообщить, я конечно понимаю, что это можно сделать средствами того-же плагина, просто если в системе уже имеется модуль вывода сообщений пользователю, то почему бы им не воспользоваться.


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#4 2009-09-17 17:49:31

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: Сервисные функции при создании плагинов

По поводу makeCategoryList, поддерживаю вопрос (возможно немного иного плана): как сделать, чтобы в настройках категории заполнено поле "Альтернативный URL", то эта категория не отображалась в списке при добавлении/редактировании новости?

Не в сети

#5 2009-09-17 19:05:07

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Сервисные функции при создании плагинов

Amarelius, постараюсь ответить по порядку:
1. Категории - нет, исправлять содержимое массива ни в коем случае нельзя, т.к. данные из него используются и для отображения новостей.
Если тебе нужно заменить меню категорий, то лучше сделай свой собственный плагин, который будет генерировать нужное тебе меню. При желании плагин сможет создать доп. поля в таблице категорий и в админке плагина можно будет его настраивать.

2. Специальных механизмов для работы с AJAX'ом нет. Возможность выдачи только части информации также не предусмотрено.
Если хочешь понять как можно сделать что-то на AJAX'е, то посмотри на плагин jchat.
RPC механизм пока только в зачаточном состоянии, но будет развиваться.

3. Префильтр именно на редактирование? Боюсь, что такого нет. Редактировать новости может автор новости и администраторы с редакторами.
С просмотром тоже вопрос - если надо скрыть контент, то можно. Если же надо саму новость скрыть, то, боюсь, не получится.
Единственный способ - собственный плагин для отображения, который будет работать по аналогии с механизмом поиска (в поиске можно задать SQL фильтр на вывод контента)

4. Для вывода сообщения можно использовать стандартную функцию msg(), а можно - в отдельном шаблоне выводить информационный блок (это сделано в плагине complain, файл engine/plugins/complain/complain.php, строки 39-45)

Не в сети

#6 2009-09-17 19:06:29

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Сервисные функции при создании плагинов

infinity237 пишет:

По поводу makeCategoryList, поддерживаю вопрос (возможно немного иного плана): как сделать, чтобы в настройках категории заполнено поле "Альтернативный URL", то эта категория не отображалась в списке при добавлении/редактировании новости?

Логичнее было бы это захардкодить. Так, наверное, и сделаю - категории с альт. урлом не предназначены ведь для использования в новостях.

Не в сети

#7 2009-09-17 21:30:08

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Сервисные функции при создании плагинов

vitaly пишет:

Если хочешь понять как можно сделать что-то на AJAX'е, то посмотри на плагин jchat

Как я понял, надо поиграться с переменными $SUPRESS_TEMPLATE_SHOW и $SUPRESS_MAINBLOCK_SHOW.

спс vitaly, теперь немного разобрался, думаю за пару недель переберусь на платформу ng.
Жаль нет встроенной возможности создавать разные группы пользователей и управлять правами доступа, прийдется быстренько наваять временное решение.


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#8 2009-09-17 21:55:50

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Сервисные функции при создании плагинов

Amarelius, да, всё верно - эти переменные позволяют отключить вывод основного шаблона.
А групп, к сожалению, пока нет sad

Не в сети

#9 2009-09-17 22:40:21

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Сервисные функции при создании плагинов

Еще один вопрос, по безопасности базы данных.
Движек имеет функцию по экранированию и замене опасного содержимого для баз данных или использовать стандартные php-средства?


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#10 2009-09-17 22:45:35

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Сервисные функции при создании плагинов

"Глубоко встроенных" (типа magic quotes) функций нет - если серьёзно, но от подобных вещей вреда больше чем пользы.

В самом же движке (и во всех плагинах) используется стандартный метод - без экранирования в SQL запрос добавляются только те переменные, которые сформированы двигом (к примеру, собственный счетчик) и в которых не может быть ничего опасного.

Для экранирования используется функция db_squote(), рекомендую использовать именно её (она находится в functions.inc.php и сама добавляет апострофы). Если посмотришь на SQL запросы, то заметишь, что она используется в 90% запросов smile

Не в сети

#11 2009-09-18 18:36:14

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Сервисные функции при создании плагинов

vitaly, а есть описание всех полей для файла version у плагина?
Поля нашел, просматривать что каждое из них делает долговато, хотя назначение большинства итак понятно...

Вот то что понял. Поправь и дополни меня пожалуста

id - уникальное имя
name - название (отображаеться в админке)
version - версия
acts - действие при котором запускается плагин (может иметь несколько значений), формат index; nameplugin.php
здесь сразу вопрос: какие acts бывают и какой их порядок вызова (или прикаких условиях)
file - ????????????????????????
config - файл конфигурации
install - файл установки плагина
deinstall - файл удаления плагина
management - ???????????????????????????
type - тип (видел только plugin)
Вопрос: какие типы еще бывают
description - описание (отображаеться в админке)
author - автор (тоже видно в админке)
author_uri - страничка автора (тоже в админке)
permanent - ????????????????????????????????????
library - ???????????????????????????????
actions - тоже что и acts


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#12 2009-09-19 03:46:51

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Сервисные функции при создании плагинов

Выложил драфт описание структуры файла version, пока ещё не интегрированное в основное меню документации.
Если найдёшь какие-либо неточности - пиши.

Чуть позже дам и описание существующих action'ов и правила их использования.

Не в сети

#13 2009-09-20 21:58:19

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Сервисные функции при создании плагинов

При установке плагина использую $ULIB->registerCommand для регистрации форматов ссылок в системе
Вопрос в следующем: Как удалить зарегистрированные форматы ссылок при удалении плагина (в классе urlLibrary метода выполняющего подобные действия не обнаружил, версия движка из SVN)

Изменено Amarelius (2009-09-20 22:00:07)


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#14 2009-09-21 00:54:13

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Сервисные функции при создании плагинов

Amarelius, ты задаёшь очень хорошие вопросы smile
Добавил новую функцию:

// Remove recently registered command
function removeCommand($plugin, $cmd)

Отпишись, plz, по результатам тестирования.

Не в сети

#15 2009-09-21 01:10:51

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Сервисные функции при создании плагинов

vitaly пишет:

Отпишись, plz, по результатам тестирования.

спс все отлично работает.


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#16 2009-09-21 01:18:10

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Сервисные функции при создании плагинов

Что за плагин делаешь?

Не в сети

#17 2009-09-21 01:41:23

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Сервисные функции при создании плагинов

Читаю дисциплину Экономическая информатика в университете. Пишу плагин, который разбивает пользователей на разные группы (студенты, преподаватели и т.д.) с настраиваемыми правами доступа к последующим плагинам. Следующий, это база дисциплин с привязкой к преподавателям. (эти я уже сделал) А сейчас делаю электронный журнал и рейтинг, когда сделаю останется написать систему публикации разного рода контента (здесь буду использовать штатные возможности движка) и на десерт систему проведения тестов на время с возможностью контроля прохождения (администратором) в режиме реального времени. Получиться эдакий маленький moodle, только с более дружественным интерфейсом и более шустрый.


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#18 2009-09-21 02:21:34

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Сервисные функции при создании плагинов

Ого, круто!

Не в сети

#19 2009-09-24 14:58:28

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Сервисные функции при создании плагинов

Замечание к 378- ревизии. Все-таки неплохо было-бы описать action-ы для полноты понимания работы ядра. Например мне не очень понятно при каких условиях тот или иной плагин привязывать к тому или иному action-у. Ведь в большинстве случаев плагин все равно работает без проблем, но ведь разработчики не просто так подробили их, а заложили в это (как я думаю) какую то логику. Очень хочется понять эту логику. Причем некоторые action-ы не всегда запускаються, т.е. имеют условие на запуск, тоже интересно знать какие и при каких условиях. И последнее, как я понял я могу создавать свои action-ы и использовать их по аналогии событий в системном программировании, если я не прав поправьте меня.

Изменено Amarelius (2009-09-24 15:24:45)


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#20 2009-09-24 17:23:59

ROZARD
Модератор
Откуда Россия, Астрахань
Зарегистрирован: 2008-10-13
Сообщений: 1,523
Рейтинг :   82 
Сайт

Re: Сервисные функции при создании плагинов

Без экшенов плагин вообще не будет загружаться. Экшен в плагин указывают для того чтобы показать в каком месте должен начать загружаться плагин. Например без 378-ой ревизии когда открываешь форум на отдельно странице вместе с ним и загружаются все плагины которые включены, что приводит к уменьшению производительности. Но если в экшене указать "core" то плагин будет грузиться везде с другими плагинами. Включив дебаг ты можешь сам убедиться в том какие плагины и где грузяться. В плагинах нужно четко понимать где должен работать данный плагин и указывать их в экшене.
Экшены:
index - звгрузка происходит при на главной странице сайта - main.tpl
news_full - плагин будет загружаться при открытии полной новости - news.full.tpl
news_short - загрузка плагина в короткой новости - news.short.tpl
static - загруска при статистической страницы - static/default.tpl
users - при просмотре профиля - users.tpl
comments - с комментариями работает вроде в любом шаблоне, одно ед. шаблона нет.
ppages - указывается если у плагина будет своя страница
[hr /]
Это часто употребляемые, а вообще их больше. Найти экшены можно самому!
С помощью экшенов можно перехватывать работу ядра и передавать значения с одного плагина в другой.
Создавать экшены можно, НО НЕ НУЖНО... Экшены указываются только в ядре двига и в некоторых редкий случаях, например в плагине comments... И чтобы никому не пришло в голову их добавлять просто так, писать как их добавить плагин я думаю не к чему...

P.S. В вики ещё пока документацию по разработке плагинов не скидывал, но скоро скину...

Не в сети

#21 2009-09-24 17:36:36

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Сервисные функции при создании плагинов

ROZARD, спс за описание.
А документация по разработке плагинов боюсь мне уже не понадобится, слишком поздно wink
Правда вот у меня еще вопросик (копаться в коде сейчас лень, но просто интересно), как работает оповещение в админ-панели о наличии новой версии плагина. И как это прикрутить к своим.

Изменено Amarelius (2009-09-24 17:37:12)


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#22 2009-09-24 17:48:06

ROZARD
Модератор
Откуда Россия, Астрахань
Зарегистрирован: 2008-10-13
Сообщений: 1,523
Рейтинг :   82 
Сайт

Re: Сервисные функции при создании плагинов

Amarelius, Уведомление происходит от http://ngcms.ru/ полную ссылку давать не буду... Кнопка загорается при сравнивании Version: из version плагина с версии которая указана на сервере http://ngcms.ru/... Короче тебе нужно договариваться по этому поводу. С кем я думаю ты знаешь...:) Но это скорее всего будет автоматически для плагинов которые выложены бесплатно...:rolleyes:

Не в сети

#23 2009-09-24 18:10:17

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Сервисные функции при создании плагинов

ROZARD, еще раз спс., ссылку я уже обнаружил.
По твоему совету включил debug (как я сразу не догадался? smile наверно прогулял этот урок в школе) и с action стало все понятно.

А вот по поводу использования собственных action в своих плагинах, готов с тобой долго и нудно спорить.
Если я например пишу систему которая состоит из группы плагинов, которые должны синхронизировать свою работу между собой, или должна присутствовать какая либо причино-следственная связь между ними, то при помощи собственных action это будет решить проще и красивее, чем например оставлять метки о состоянии того или иного плагина, а потом в другом плагине их считывать.

Когда придет время использовать свои action, думаю разберусь, а вот за debug-режим действительно спасибо, просто как-то вылетело из головы.
Кстати, я для вывода значений php-функции var_dump использую функцию движка msg, ты знаешь как можно использовать var_dump более корректно, а то как то некошерно получается, или как вывести значения интересующих меня переменных в debug-блок.


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#24 2009-09-24 18:22:40

ROZARD
Модератор
Откуда Россия, Астрахань
Зарегистрирован: 2008-10-13
Сообщений: 1,523
Рейтинг :   82 
Сайт

Re: Сервисные функции при создании плагинов

Amarelius, Чтобы вывести в дебаг для этого нужно в плагине объявить переменную глобальной локальной через global ***; и в index.php к выводу дебага приписать эту переменную, только зачем это всё...
Я var_export() и  var_dump() даже не пользуюсь, обхожусь простым print и print_r и уже через них смотрю значение переменных или sql запрос... А msg() пользуешься чтобы значения переменной для отладки красиво выводились?

Не в сети

#25 2009-09-24 18:35:07

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Сервисные функции при создании плагинов

ROZARD пишет:

А msg() пользуешься чтобы значения переменной для отладки красиво выводились?

Нет, просто var_dump не во всех случаях выводит на экран, в движке скорее всего используются функции типа ob_start и ob_clean которые и подчищают ее вывод, а простой print меня не совсем удовлетворяет.


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

Подвал раздела

Работает на FluxBB