Очень пробная версия
По-тихоньку заканчиваю Strawberry 2.0a, вот решил проверить рабочесть на сервере с php4 и непонятной версией MySQL (новая клубника делалась на php 5.1.2 и MySQL 4.1 с хреном). Почти всё работает, не считая некоторых глюков с mkdir(), в пхп5 можно рекурсивно создавать директории, а для пхп4 нужно будет дописать функцию. Уверен, есть ещё что-то, что неработает, но незамечено.
Вы можете , что пока есть. Сейчас самое главное это закончить натягивать дизайн (он будет из CuteSystem), сделать юзабильную админку и закончить с руфусом (настройкой УРЛов). Частично он меня устраивает, но имеет неприятные издержки.
Что есть в движке сейчас:
- модуль новостей (и философия у него именно новостная, т.е. новости и ничего более)
- система юзерей, с добавлением/удалением друзей, профайлом
- модуль регистрации/авторизации пользователей
- модуль картинок
- модуль файлов
- модуль мэнеджера (это замена админки, вообще всё можно редктировать через интерфейс сайта - просто УРЛ настроить, да дизайн выбрать или подключить через нужный тег (про теги дальше))
- модуль комментариев (их можно прикручивать ко всему, даже к статичному контенту)
- модуль мэнеджера конфига
- модуль Explorer. Хилая, первая версия проводника по файлам с возможностью редактировать и менять имя файлам. Пока не работает на сервере (нужно мучится с chmod() и umask()), но будет, иначе нахуй нада, верно?
Модули это лишь часть движка. Их можно отключать и подключать. Какие-то модули требуют установки других модулей, а так же плагинов, тегов и расширений, но об этом ниже.
В обязательном порядке будет модуль каталог mp3. Я хоть как-то хочу оправдать несколько часов ухайдаханых в написание функций для чтения/записи id3 версий 1 и 1.1. С pecl`овским расширением id3 функции совместимы.
Другая часть Клубники это плагины. Их первостепенная задача - расширить функциональность модулей.
Имеются:
- плагин категорий
- плагин ключслов (категории вид сбоку, к релизу категории будут изменены: будет иерархия, выбор только одной и т.д., "мои представления" о категориях, короче. Ключслава изменены не будут, они будут плоскими и выбирать их можно будет кучей)
- плагин групп пользователей (очень простой)
- плагин доп. полей
- плагин для выбора формата поста, хранит информацию в доп. полях. Плагин формата это такой тест доп. полей
- плагин голосований
- плагин для замены простых ббкодов в комментариях
- ну и плагин "сколько времени прошло"
Надо заметить, что изначально (без модулей-плагинов) джижок очень голый, то есть абсолютно. Не считая набора функций и классов (этот набор называется API) для удобства работы, в нём нет ничего.
Плагины расширяют внутреннюю (api) и внешнюю (модули) функциональность. Но при этом они могут быть отключены, что есть отрицательно. Поэтому существуют ещё и расширения. Они расширяют обе функциональности - и внешнюю, и внутреннюю. Они и обязательно подключаются, и в то же время неглубоко вшиты в движок.
По умолчанию входят:
- расширения для работы с аяксом
- расширение страниц (как вики)
- расширение инсталяции Strawberry (и в дальнейшем апгрейд будет тоже расширением)
- шаблонизатор
Вот я и подошёл к очень, на мой взгляд, интересному месту. Шаблонизатор.
Как показала практика, чистый php в шаблонах это не очень удобно. Если его сократить до необходимого (логика, работа с циклами) и заменить функции и переменные на теги, то на вид всё будет более понятно конечному юзеру. Проблема лишь в том, что к ББкодам возващаться не хотелось, ни в каком виде. Поэтому выбрал более приятный глазу html-like (когда пишите <тег параметр="значение параметра" />). Например как в Textpattern`е или MovableType. Но хотелось ещё и работы с html-документом вообще. То есть, не тупо находить и заменять определённые теги, но заменять и атрибуты. Например, сделать из атрибута confirm="нажми ок" любого тега такой onclick="var conf = confirm('нажми ok'); if (conf) return true; else return false;" (кликаем на что-то и вылезает окошечко). Конечно, так же хотелось и валидации форм. Кто в курсе, тот знает какой геморой эта самая валидалия. зайдите и ничего не вводив нажмите "гашетку в пол".
Очень важно, что валидация и прочие теги/атрибуты идут через шаблон, а его локализировать проще. Формально это не является влезанием в ядно/код и это не пугает людей. Может возникнуть логичное замечание, мол, как можно доверить такую вещь незнающему, что нужно тут или там сделать человеку. Логика понятна, но не верна. Дело в том, что лучше когда пользователь решает, что ему надо (например, при регистрации указывать имя или нет). Это во-первых, а во-вторых, по идеи нужно запихнуть какие-либо формы глубоко в код, чтобы пользователь случайно не сменил имя какого-то из полей.
Сами теге это, по большому счёту, обычные функции, а атрибуты - параметры. Но функцию нельзя вызвать в обычном тексте, а тег можно. К тому же, если плагин/модуль отключён, то его функции будут недоступны и банально вызовут смерть сайта. С тегами такое не произайдёт.
Посмотреть на работу некоторых тегов . Там используются теги poll для вызова голосования, user для пользователя, image для картинки, categorieslist и keywordslist для вызова списка категорий и ключслов (там вызываются категории и ключслова использованые в новостях), page для вызова псевдо-статичной страницы (расширение страниц, которые похожи на вики).
На сегодня скрипт имеет ~32 тега разной необходимости и функциональности. Скрипт знает четыре атибута, которые не связаны с имеющимеся тегами: валидация форм, вызов аякса, простая проверка прав доступа и приведённый выше для подтверждения (confirm).
Теги делятся на две категории. Первая это tag. Что-то что не закрыто, типа тегов meta или link. Вторая - container. Это теги типа b, table.
Ну и последнее. Strawberry 2.0 была написан с нуля значит имеет право сменить лицензию. То есть теперь Слава и я можем менять лицензию. И GNU GPL она точно не будет. Жестокий век, жестокие сердца, да. Примерный текст лицензии можно . Главная идея - не пизди и не пиздим будешь.
Вот такие пироги. Клубничные, да.
P.S. В связи с тем, что наши со Славкой запасы (мы как голубая межнациональная семья, да) конвертируемой и не очень валюты заканчивается и приходов более менее крупных сумм не придвидится, некоторые модули/плагины могут быть или стать (к релизу или далее) платными. Это не факт, но вполне возможно. Платность не коснётся никого из старых пользователей (про которых мы в курсе, конечно же - по форуму или комментариям).
категория: Другое / комментировать (123)

anz // 20 марта 2007 - 08:41
логига проста и понятна, верной дорогой идем товарищи...
"Strawberry 2.0 была написан с нуля значит имеет право сменить лицензию." - как я понял переезда не будет... а как быть? или я ошибаюсь?
спасибо.
действие: ответить