Смотрю сезон пошел на собственные велосипеды )))
Я тоже не отбился от рук.
Правда еще не допилены некоторые места.
Официально "релизнуться" хотелось бы к концу этого месяца.
Но обещать ничего не буду...
Собственно пощупайте:
http://cms[dot]deepserver[dot]ru/
http://cms[dot]deepserver[dot]ru/admin
PFS-admin
123456
Курочить можно только то что разрешено правами для данного пользователя. )))
Вот скрин прав:
Собственно все вопросы и предложения будут мной внимательно выслушаны.
Допишу сюда.
Человек не с форума сказал:
1) заменить ссылки "редактировать" и "удалить" на соответствующие иконки.
И еще ОЦЕНИТЕ ПОЖАЛУЙСТА УДОБСТВО И ПОНЯТНОСТЬ ПО 10-тибальной ШКАЛЕ
1. DeepVarvar - 15 Марта, 2012 - 15:30:08 - перейти к сообщению
2. caballero - 15 Марта, 2012 - 15:51:45 - перейти к сообщению
это - больше к пользователям
эдесь в основном программеры - им интересно внутренности а не цвет
текста и количество менюшек
эдесь в основном программеры - им интересно внутренности а не цвет
текста и количество менюшек
3. DeepVarvar - 15 Марта, 2012 - 15:56:49 - перейти к сообщению
Если все по времени срастется, выложу код к концу месяца.
caballero, а ты заметил что документы бывают разных типов?
т.е. модули для новостей, статей и каталога писать не надо..
А вот плагины, такие как регистрация, корзина, обратная связь, личный кабинет - уже надо.
Зачатки их уже есть.
Просто хотелось бы запилить готовый набор с основными плагинами и исправить баги.
Затем выкладывать и код...
caballero, а ты заметил что документы бывают разных типов?
т.е. модули для новостей, статей и каталога писать не надо..
А вот плагины, такие как регистрация, корзина, обратная связь, личный кабинет - уже надо.
Зачатки их уже есть.
Просто хотелось бы запилить готовый набор с основными плагинами и исправить баги.
Затем выкладывать и код...
4. DelphinPRO - 15 Марта, 2012 - 16:06:52 - перейти к сообщению
caballero пишет:
эдесь в основном программеры - им интересно внутренности а не цвет
текста и количество менюшек
текста и количество менюшек
точно
5. DeepVarvar - 15 Марта, 2012 - 16:08:51 - перейти к сообщению
Тогда я немного рано
Но продолжу в этой же теме.
Но продолжу в этой же теме.
6. EuGen - 15 Марта, 2012 - 16:50:39 - перейти к сообщению
DeepVarvar
Даже с точки зрения юзабилити.
0. Разрешить ввод логина без учета регистра
1. Не показывать те элементы управления, которые предоставляют действия, недоступные в силу ограничений прав роли
2. При добавлении документа, если заполнены не все поля, происходит их сброс после сообщения об ошибке (представим, что я заполнял этот документ часа 2-3)
Даже с точки зрения юзабилити.
0. Разрешить ввод логина без учета регистра
1. Не показывать те элементы управления, которые предоставляют действия, недоступные в силу ограничений прав роли
2. При добавлении документа, если заполнены не все поля, происходит их сброс после сообщения об ошибке (представим, что я заполнял этот документ часа 2-3)
7. DeepVarvar - 15 Марта, 2012 - 16:51:46 - перейти к сообщению
EuGen, принято, сделаю.
Так же заменить htmlspecialchars на htmlentities при записи строк в базу,
но данная проблема только в контексте ЦКэдитора.
Даже не знаю, модет сам админ захочет добавить в страницу некоторый js-код,
ну например карту яндекса или гугла...
Так же заменить htmlspecialchars на htmlentities при записи строк в базу,
но данная проблема только в контексте ЦКэдитора.
Даже не знаю, модет сам админ захочет добавить в страницу некоторый js-код,
ну например карту яндекса или гугла...
8. DeepVarvar - 15 Марта, 2012 - 19:21:25 - перейти к сообщению
Так я не понял, это меня по XSS ломанули,
или legal означает что в поле CKEditor можно вставлять различные скриптовые конструкции?
Вопрос находится тут:
http://cms[dot]deepserver[dot]ru/test
или legal означает что в поле CKEditor можно вставлять различные скриптовые конструкции?
Вопрос находится тут:
http://cms[dot]deepserver[dot]ru/test
9. EuGen - 15 Марта, 2012 - 20:12:43 - перейти к сообщению
DeepVarvar
Это я Вам оставил подсказку. Дело в том, что, имея лишь ограниченный аккаунт, можно попытаться таким образом завладеть аккаунтом root-пользователя. Это в предположении, что на конечном сайте, который будет строиться на этой CMS, будет несколько пользователей, например, контент-менеджеры. Разумеется, вряд ли кто-то сам себе будет писать подобное, но если к примеру контентом занимается сторонняя компания - почему бы и нет.
Это я Вам оставил подсказку. Дело в том, что, имея лишь ограниченный аккаунт, можно попытаться таким образом завладеть аккаунтом root-пользователя. Это в предположении, что на конечном сайте, который будет строиться на этой CMS, будет несколько пользователей, например, контент-менеджеры. Разумеется, вряд ли кто-то сам себе будет писать подобное, но если к примеру контентом занимается сторонняя компания - почему бы и нет.
10. DeepVarvar - 05 Июня, 2013 - 09:22:35 - перейти к сообщению
.
Я говорил что не буду создавать новые темы когда есть хоть и старая, но моя?
Ну если не говорил - значит говорю - да, я подниму старую тему, чтобы все были "в теме".
На самом деле гдето есть тема, посвещенная этому вопросу, которая еще старше этой.
Но - прах её пуху, или пух её праху, не важно..
Прошло уже больше года. А я все ковыряюсь и ковыряюсь.
С одной стороны - я уже наковырял достаточно для того, чтобы хоть что-то показать.
С другой стороны - нужна ваша критика, ато я "протух" уже к текущему моменту.
Ниже прикреплен архив с мини-сборкой.
Чем же мини- отличается от макси- ?
Всего-лишь тем, что в мини-сборке отсутствует то самое "вкусное" динамическое дерево документов.
Поддержка модулей и контроллеров была реализована
только для решения совсем уж нетривиальных задач - для изменения данных.
Т.е. чтобы просто показать любую страницу пользователю,
не нужно никаких модулей и контроллеров.
Не важно что это - товар, новость, раздел каталога, etc..
Это вобщем-то и отличает мое творение от всех остальных раскиданых в тырнете.
Я конечно же вскоре выложу сюда полную версию.
Но вернемся к тому что я предоставил здесь и сейчас.
Увы - к текущему моменту не написано ни строчки документации.
Валяются где-то пара файлов с черновым текстом, и только..
В архиве есть папочка install, в которой все достаточно подробно описано, как запуститься.
Этого достаточно, да не совсем.
Для начала работы еще необходимо создать "тему" через которую будет выводиться контент для пользака.
Создается она в папке application/layouts/themes/название_вашей_темы
Создав пустую папку темы, пройдите в админке в "Глобальные настройки".
Вываливающиеся исключения подскажут какие папки и файлы являются для темы обязательными.
Теперь немного практики.
В папке application/modules/ можно создавать свои модули, контроллеры..
Если вы создаете модуль:
Создайте папку с именем модуля, например mymodule.
В эту папку положите файл с именем mymodule.php - это локалный bootstrap модуля.
Создайте рядом с этим файлом папку controllers, в неё вы будете класть контроллеры этого модуля.
Локальный bootstrap, естественно, выполняется всегда,
не зависимо какой из контроллеров модуля запросили.
Если вы создаете простой контроллер:
Создайте папку с именем контроллера, например mycontroller.
В эту папку положите файл с именем mycontroller.php.
Этот контроллер будет "сам себе bootstrap".
При парсинге строки запроса система ищет соответственно части вида:
/module/controller/action?p=123
/controller/action?p=123
/module/controller?p=123
По умолчанию, если строка запроса пуста (главная страница),
вызывается application/modules/main/main.php.
Данное поведение реализовано только в этой сборке, только в виде "костыля".
По умолчанию у всех вызывается метод index().
Любой из файлов модулей/контроллеров должны в себе содержать как минимум это:
Я говорил что не буду создавать новые темы когда есть хоть и старая, но моя?
Ну если не говорил - значит говорю - да, я подниму старую тему, чтобы все были "в теме".
На самом деле гдето есть тема, посвещенная этому вопросу, которая еще старше этой.
Но - прах её пуху, или пух её праху, не важно..
Прошло уже больше года. А я все ковыряюсь и ковыряюсь.
С одной стороны - я уже наковырял достаточно для того, чтобы хоть что-то показать.
С другой стороны - нужна ваша критика, ато я "протух" уже к текущему моменту.
Ниже прикреплен архив с мини-сборкой.
Чем же мини- отличается от макси- ?
Всего-лишь тем, что в мини-сборке отсутствует то самое "вкусное" динамическое дерево документов.
Поддержка модулей и контроллеров была реализована
только для решения совсем уж нетривиальных задач - для изменения данных.
Т.е. чтобы просто показать любую страницу пользователю,
не нужно никаких модулей и контроллеров.
Не важно что это - товар, новость, раздел каталога, etc..
Это вобщем-то и отличает мое творение от всех остальных раскиданых в тырнете.
Я конечно же вскоре выложу сюда полную версию.
Но вернемся к тому что я предоставил здесь и сейчас.
Увы - к текущему моменту не написано ни строчки документации.
Валяются где-то пара файлов с черновым текстом, и только..
В архиве есть папочка install, в которой все достаточно подробно описано, как запуститься.
Этого достаточно, да не совсем.
Для начала работы еще необходимо создать "тему" через которую будет выводиться контент для пользака.
Создается она в папке application/layouts/themes/название_вашей_темы
Создав пустую папку темы, пройдите в админке в "Глобальные настройки".
Вываливающиеся исключения подскажут какие папки и файлы являются для темы обязательными.
Теперь немного практики.
В папке application/modules/ можно создавать свои модули, контроллеры..
Если вы создаете модуль:
Создайте папку с именем модуля, например mymodule.
В эту папку положите файл с именем mymodule.php - это локалный bootstrap модуля.
Создайте рядом с этим файлом папку controllers, в неё вы будете класть контроллеры этого модуля.
Локальный bootstrap, естественно, выполняется всегда,
не зависимо какой из контроллеров модуля запросили.
Если вы создаете простой контроллер:
Создайте папку с именем контроллера, например mycontroller.
В эту папку положите файл с именем mycontroller.php.
Этот контроллер будет "сам себе bootstrap".
При парсинге строки запроса система ищет соответственно части вида:
/module/controller/action?p=123
/controller/action?p=123
/module/controller?p=123
По умолчанию, если строка запроса пуста (главная страница),
вызывается application/modules/main/main.php.
Данное поведение реализовано только в этой сборке, только в виде "костыля".
По умолчанию у всех вызывается метод index().
Любой из файлов модулей/контроллеров должны в себе содержать как минимум это:
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- class mycontroller extends baseController {
- public function index() {
- view::setProtectedLayout("name.html");
- }
- }
Как видно из примера:
1) Все контроллеры наследуют и расширяют класс baseController
2) Обязательно нужно указать шаблон вывода.
3) Обязательно нужен метод index().
На разницу protected и public видов шаблонов в данной сборке можно подзабить.
Есть два метода setProtectedLayout() и setPublicLayout(),
которые подключают шаблон вывода соответственно из папок protected или public.
На самом деле шаблон вывода не всегда обязательно указывать.
Есть исключение - отличный от html контекст вывода.
Для тех, кто дочитал до этого места:
CMS поддерживает четыре контекста вывода - html, txt, json, xml.
Для тех кто не понял что это:
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- class mycontroller extends baseController {
- public function index() {
- view::setOutputContext("json");
- }
- }
При запросе урл http://localhost/mycontroller выведет:
{"test":[1,2,3]}
Но вернемся к тому случаю, где шаблон подключать всетаки нужно.
Предположим, мы хотим вывести в шаблон некоторые переменные.
Отлично. Принцип прост.
Попутно покажу как получать данные из строки запроса.
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- class mycontroller extends baseController {
- public function index() {
- // получаем айдишник из урл: http://localhost/mycontroller?id=534
- // есть еще и request::shiftParam("имя_параметра");
- // разница в том, что если делаешь get, то только считывает,
- // а если shift, то считывает и удаляет из стека параметров,
- // такое бывает иногда полезно
- $id = request::getParam("id");
- // проверим число ли это
- // проверка кстати не пропустит "всякую хрень"
- // с пробелами, ведущими нулями и прочим невалидом..
- if (!utils::isNumber($id)) {
- throw new memberErrorException("Что за хрень?", "Ты прислал мне не число!");
- }
- // отправляем строку во вьюху
- view::assign("test", "Привет, это тест!");
- // как видно можно подавать сразу ассоциативный массив
- // а теперь его же, только иначе, разница будет видна в шаблоне
- // добавили еще и тот полученный айдишник
- view::assign("your_id", $id);
- // указываем через какой шаблон выводить
- view::setProtectedLayout("name.html");
- }
- }