Вы не зашли.
1. Программно скрыть некоторые пункты меню (посматриваю в сторону makeCategoryList, если не верно то поправьте меня)
2. Как грамотно послать ajax запрос, чтобы вернулся только результат выполнения запрашиваемой функции плагина
3. Запретить редакторам редактировать новости в определенных категориях
4. Какие функции могут выводить сообщения пользователям (если есть такие)
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
Это вопрос, ответ на кем-то заданный вопрос или утверждение?
Это вопрос.
Планирую перенести свой сайт на ng, но для этого мне необходимо дополнить функционал, сейчас разбираюсь в плагиностроении. Общий принцип работы системы понятен (с точки зрения архитектуры). Большую часть исходников уже проанализировал.
И у меня возникли вопросы: например, как я понял категории загружаются из базы в локальный массив, и если их из этого массива убрать, то они отображаться не будут, вот и интересует правильно ли понял, если да, то с каким action-ом мне создавать плагин, чтобы он был вызван между загрузкой категорий из базы и выводом их на экран.
Второй вопрос про ajax запрос (просто еще не смотрел как тут реализовано), но меня интересует только формат запроса, ведь движек както должен понять что я хочу вывести не весь сайт, а получить только кусочек.
Третий вопрос. Есть ли какой-то префильтер, который не даст определенной группе пользователей редактировать или просматривать новости из определенной категории.
Четвертый вопрос. Например мой плагин определяет, что конкретный пользователь не имеет доступа к информации которую выводит данный плагин и надо пользователю об этом сообщить, я конечно понимаю, что это можно сделать средствами того-же плагина, просто если в системе уже имеется модуль вывода сообщений пользователю, то почему бы им не воспользоваться.
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
По поводу makeCategoryList, поддерживаю вопрос (возможно немного иного плана): как сделать, чтобы в настройках категории заполнено поле "Альтернативный URL", то эта категория не отображалась в списке при добавлении/редактировании новости?
Не в сети
Amarelius, постараюсь ответить по порядку:
1. Категории - нет, исправлять содержимое массива ни в коем случае нельзя, т.к. данные из него используются и для отображения новостей.
Если тебе нужно заменить меню категорий, то лучше сделай свой собственный плагин, который будет генерировать нужное тебе меню. При желании плагин сможет создать доп. поля в таблице категорий и в админке плагина можно будет его настраивать.
2. Специальных механизмов для работы с AJAX'ом нет. Возможность выдачи только части информации также не предусмотрено.
Если хочешь понять как можно сделать что-то на AJAX'е, то посмотри на плагин jchat.
RPC механизм пока только в зачаточном состоянии, но будет развиваться.
3. Префильтр именно на редактирование? Боюсь, что такого нет. Редактировать новости может автор новости и администраторы с редакторами.
С просмотром тоже вопрос - если надо скрыть контент, то можно. Если же надо саму новость скрыть, то, боюсь, не получится.
Единственный способ - собственный плагин для отображения, который будет работать по аналогии с механизмом поиска (в поиске можно задать SQL фильтр на вывод контента)
4. Для вывода сообщения можно использовать стандартную функцию msg(), а можно - в отдельном шаблоне выводить информационный блок (это сделано в плагине complain, файл engine/plugins/complain/complain.php, строки 39-45)
Не в сети
По поводу makeCategoryList, поддерживаю вопрос (возможно немного иного плана): как сделать, чтобы в настройках категории заполнено поле "Альтернативный URL", то эта категория не отображалась в списке при добавлении/редактировании новости?
Логичнее было бы это захардкодить. Так, наверное, и сделаю - категории с альт. урлом не предназначены ведь для использования в новостях.
Не в сети
Если хочешь понять как можно сделать что-то на AJAX'е, то посмотри на плагин jchat
Как я понял, надо поиграться с переменными $SUPRESS_TEMPLATE_SHOW и $SUPRESS_MAINBLOCK_SHOW.
спс vitaly, теперь немного разобрался, думаю за пару недель переберусь на платформу ng.
Жаль нет встроенной возможности создавать разные группы пользователей и управлять правами доступа, прийдется быстренько наваять временное решение.
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
Еще один вопрос, по безопасности базы данных.
Движек имеет функцию по экранированию и замене опасного содержимого для баз данных или использовать стандартные php-средства?
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
"Глубоко встроенных" (типа magic quotes) функций нет - если серьёзно, но от подобных вещей вреда больше чем пользы.
В самом же движке (и во всех плагинах) используется стандартный метод - без экранирования в SQL запрос добавляются только те переменные, которые сформированы двигом (к примеру, собственный счетчик) и в которых не может быть ничего опасного.
Для экранирования используется функция db_squote(), рекомендую использовать именно её (она находится в functions.inc.php и сама добавляет апострофы). Если посмотришь на SQL запросы, то заметишь, что она используется в 90% запросов
Не в сети
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
Не в сети
Выложил драфт описание структуры файла version, пока ещё не интегрированное в основное меню документации.
Если найдёшь какие-либо неточности - пиши.
Чуть позже дам и описание существующих action'ов и правила их использования.
Не в сети
При установке плагина использую $ULIB->registerCommand для регистрации форматов ссылок в системе
Вопрос в следующем: Как удалить зарегистрированные форматы ссылок при удалении плагина (в классе urlLibrary метода выполняющего подобные действия не обнаружил, версия движка из SVN)
Изменено Amarelius (2009-09-20 22:00:07)
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
Amarelius, ты задаёшь очень хорошие вопросы
Добавил новую функцию:
// Remove recently registered command
function removeCommand($plugin, $cmd)
Отпишись, plz, по результатам тестирования.
Не в сети
Отпишись, plz, по результатам тестирования.
спс все отлично работает.
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
Читаю дисциплину Экономическая информатика в университете. Пишу плагин, который разбивает пользователей на разные группы (студенты, преподаватели и т.д.) с настраиваемыми правами доступа к последующим плагинам. Следующий, это база дисциплин с привязкой к преподавателям. (эти я уже сделал) А сейчас делаю электронный журнал и рейтинг, когда сделаю останется написать систему публикации разного рода контента (здесь буду использовать штатные возможности движка) и на десерт систему проведения тестов на время с возможностью контроля прохождения (администратором) в режиме реального времени. Получиться эдакий маленький moodle, только с более дружественным интерфейсом и более шустрый.
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
Замечание к 378- ревизии. Все-таки неплохо было-бы описать action-ы для полноты понимания работы ядра. Например мне не очень понятно при каких условиях тот или иной плагин привязывать к тому или иному action-у. Ведь в большинстве случаев плагин все равно работает без проблем, но ведь разработчики не просто так подробили их, а заложили в это (как я думаю) какую то логику. Очень хочется понять эту логику. Причем некоторые action-ы не всегда запускаються, т.е. имеют условие на запуск, тоже интересно знать какие и при каких условиях. И последнее, как я понял я могу создавать свои action-ы и использовать их по аналогии событий в системном программировании, если я не прав поправьте меня.
Изменено Amarelius (2009-09-24 15:24:45)
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
Без экшенов плагин вообще не будет загружаться. Экшен в плагин указывают для того чтобы показать в каком месте должен начать загружаться плагин. Например без 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. В вики ещё пока документацию по разработке плагинов не скидывал, но скоро скину...
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
ROZARD, спс за описание.
А документация по разработке плагинов боюсь мне уже не понадобится, слишком поздно
Правда вот у меня еще вопросик (копаться в коде сейчас лень, но просто интересно), как работает оповещение в админ-панели о наличии новой версии плагина. И как это прикрутить к своим.
Изменено Amarelius (2009-09-24 17:37:12)
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
Amarelius, Уведомление происходит от http://ngcms.ru/ полную ссылку давать не буду... Кнопка загорается при сравнивании Version: из version плагина с версии которая указана на сервере http://ngcms.ru/... Короче тебе нужно договариваться по этому поводу. С кем я думаю ты знаешь...:) Но это скорее всего будет автоматически для плагинов которые выложены бесплатно...:rolleyes:
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
ROZARD, еще раз спс., ссылку я уже обнаружил.
По твоему совету включил debug (как я сразу не догадался? наверно прогулял этот урок в школе) и с action стало все понятно.
А вот по поводу использования собственных action в своих плагинах, готов с тобой долго и нудно спорить.
Если я например пишу систему которая состоит из группы плагинов, которые должны синхронизировать свою работу между собой, или должна присутствовать какая либо причино-следственная связь между ними, то при помощи собственных action это будет решить проще и красивее, чем например оставлять метки о состоянии того или иного плагина, а потом в другом плагине их считывать.
Когда придет время использовать свои action, думаю разберусь, а вот за debug-режим действительно спасибо, просто как-то вылетело из головы.
Кстати, я для вывода значений php-функции var_dump использую функцию движка msg, ты знаешь как можно использовать var_dump более корректно, а то как то некошерно получается, или как вывести значения интересующих меня переменных в debug-блок.
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети
Amarelius, Чтобы вывести в дебаг для этого нужно в плагине объявить переменную глобальной локальной через global ***; и в index.php к выводу дебага приписать эту переменную, только зачем это всё...
Я var_export() и var_dump() даже не пользуюсь, обхожусь простым print и print_r и уже через них смотрю значение переменных или sql запрос... А msg() пользуешься чтобы значения переменной для отладки красиво выводились?
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
А msg() пользуешься чтобы значения переменной для отладки красиво выводились?
Нет, просто var_dump не во всех случаях выводит на экран, в движке скорее всего используются функции типа ob_start и ob_clean которые и подчищают ее вывод, а простой print меня не совсем удовлетворяет.
Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com
Не в сети