Доброго вечора,
Давно шось цікавого від себе не писав сюди, хоча є про шо писати, але ніяк не зберусь. Отож не буду відволікатись на всякі мєлочі, а зразу перейду до теми.
Не так давно, а рівно тиждень назад, до мене прийшло трошки вільного часу на роботі, який я вирішив використати розробляючи якісь інструменти для покращення і пришвидшення побудови сайтів. В силу того, що я не ЦМСочнік, тобто ніколи не страждав написанням якихось CMS по три-чотири версії як інші це робили, але старався розробляти більш цікаві і не рутинні речі. Побавившись з джанго я зрозумів, що дуже багато вирішує для фреймворка його вигляд в робочому стані. Я говорю наразі про адмін частину, яка в джанго вже побудована і моделюється на основі ORM і бази даних.
Ставити мету оптимізувати і написати аналогічно як з джанго для kohana я не рішився, бо процес автоматизації мені ще не зрозумілий, але каркас для цього я робив останній тиждень.
Результатом своєї праці поділюсь чуть пізніше, наразі це дуже бета версія, ще не потестовано багато речей, але розкажу шо воно робить. Уявіть що ми маємо якусь сутність (користувач, для прикладу), який пише пости (іншу сутність), а пости в свою чергу мають коментарі (що є третьою сутністю). Фронтенд дизайнери намалюють, переживати в цьому плані мені як програмісту зовсім не потрібно, а вот бекенд прийдеться проектувати самому. Хотілось щоб бекенд мав зрочний аяксовий інтерфейс з мінімум перезагрузок сторінок, тобто банально перехід тільки між списками сутностей перегружав сторінку.
До того я довго працював з Magento, особливо мені сподобалось як обробляються форми на адмін частині, багато перечитав коду як це все робити за допомогою Prototype. Також дуже цікаво розібратись в Varien бібліотеках, які постачаються разом з Magento і використовують Prototype як нижчий рівень, але про це варто писати окрему статтю.
Я пішов по шляху меншого супротиву, я розумію як працює Prototype, познайомився з його API, але не провів жодного вечора на сайті з документацією, тому вирішив взяти собі на озброєння jQuery-UI, яке мені здалось і красивішим і не менш функціональним.
З технічної точки зору в мене получився абстрактний котроллер, в якому зібрана загальна логіка CRUD інтерфейсу для будь-якої сутності і який в бекенді має ORM модель для роботи з базою даних (власне це теж варто б винести в інтерфейс, який може замість бази використовувати якийсь xml або ще інший ресурс даних) і декількох виглядів, які власне відповідають за виведення списку елементів, створення, редагування і видалення. Кошерно, по MVC паттерну.
З сторони браузера в нас сиренький jQuery, приправлений Flexigrid’ом і чуть більше сотні стрічок коду на джаваскріпті. Чим більше часу приділяю для jQuery, тим більше подобається мені писати використовуючи її. Все супер логічно, в мануал можна подивитись хіба шо аргументи функцій підглянути.
Як тільки виправлю всі баги і витестую — викладу прототип подивиитсь. Далі — напевне будемо прикручувати до блога.
P.S.: в вордпресса дуже гарно перероблена адмін частина в версії 2.7. Один з факторів, який надихнув на таке.
P.P.S.: луччє б ото комєнти прикрутив сюди, замість того шоб всяку непонятну ахінєю нести.