Форум Академгородка, Новосибирск > CMS с поддержкой произвольных объектов данных
Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CMS с поддержкой произвольных объектов данных
Форум Академгородка, Новосибирск > Компьютеры и сети > Программирование > WEB-программирование
Daniel
Задача в следующем. Нужно минимальными усилиями создать относительно простую базу данных с распределенным доступом через web для использования внутри фирмы. К дизайну требований никаких.

Посоветуйте хорошую CMS (или подскажите подходящие ключевые слова для google), которая имеет возможность определения произвольных объектов и добавления/редактирования/просмотра/удаления/поиска их через стандартные формы. То есть хотелось бы следующее: захожу под админом, создаю объект, задаю ему имя (например, "myobject") и поля. У каждого поля есть тип (SQL) и формат ввода (например: поле "info", тип текстовый, вводится через TEXTAREA или поле "start", тип дата, вводится через компонент "календарь"). Также должна быть возможность задавать отношения между объектами. Дальше в меню CMS-ки добавляется ссылка "myobjects", по которой любой пользователь может просмотреть все объекты, редактировать, удалить, добавить их через стандартную форму и т.д.

Пример того, что имеется ввиду - Microsoft SharePoint.
Но желательно open source-решение на Apache + PHP (или Perl).
Знаю как только одну CMS-ку, которая это может - Xaraya, но прошлый опыт ее использования показал, что она тормозит довольно сильно + она плохо задокументирована в части "data objects", приходилось лезть в сорцы и задавать вопросы фэнам.

Знаю, что это элементарно делается на RoR (и Django, наверное), но там нужно специфицировать объекты программно. Помню еще СУБД Cache это умела (там были автоматически создаваемые custom forms), но там тоже спецификация текстовая. В данном случае не хочу ничего прогать, ибо запарило изобретать велосипеды!

В Mambo, Joomla, Drupal, e107 по умолчанию этого нет. Может быть есть plugin? smile.gif (сомневаюсь) Тут на форуме расписали TYPO3, думал, что она это может, но оказалось, что нет! И расширения подходящего для нее нашел (в списке Reviewed точно нет).

Вообще кажется, что довольно значительная часть кода типичного классического web-приложения - это простая визуализация/редактирование через HTML данных из базы. Так почему это до сих пор не сделано в CMS-ках? Чтобы программерам было за что платить? smile.gif

Резюмируя, хотелось бы найти CMS, которая:
- open source, работает на Apache + PHP
- имеет стандартный набор функциональности CMS (добавление статических страниц, управление пользователями и т.п.)
- имеет интерфейс создания объектов произвольной структуры (а ля MS Access) с возможностью связывать объекты по полям
- имеет интерфейсы для просмотра объектов списком, поиска, редактирования, удаления, добавления
- дополнительно: есть возможность редактировать шаблоны вышеперечисленного (взять стандартный и поправить)

Пользовался табличкой cmsmatrix, чтобы найти подходящую, но там это довольно проблематично (попробуйте сами, основное требование называется Flexibility -> Metadata, но это не совсем то, что надо, а еще там нетривиально найти именно open source).

Итак, кандидаты:

1. Xaraya - не подходит: нет поддержки связей между объектами
2. SharePoint - не подходит: требует IIS
3. Plone + ATSchemaEditorNG, Inventory Builder - не подходит: требует Python, Zope

Потом можно будет составить табличку с особенностями, возможностями, плюсами и минусами каждой.
АНТ0Н
ИМХО Xaraya малое дерьмо. Баги при установке, ужасный интерфейс, да и вообще - черт ногу сломит.
Daniel
QUOTE (АНТ0Н @ Feb 10 2007, 06:19)
ИМХО Xaraya малое дерьмо. Баги при установке, ужасный интерфейс, да и вообще - черт ногу сломит.

Это типа "оффтоп от модератора"?

Я и написал, что она мне не очень понравилась, что хочется нечто другое, и попросил посоветовать альтернативы, а не обсирать.

Хотя лично у меня багов при установке не было.
Просто тормозила.
Интерфейс не очень удобный, зато возможностей по настройке очень много.
Доков мало - это прохо. Хотя хорошая поддержка в IRC.

Добавил в список XOOPS, но еще не пробовал, пишут, что там это есть.
АНТ0Н
Тут я вообще не помошник smile.gif
Как приверженцы ОСей советуют только свою, как приверженцы браузеров совтуют только свой, так и CMS - имхо "интимный" выбор владельцев, студий, разработчиков (в настоящее время особенно), за которую они голову отвертят и будут слюной брызгать в споре.
А на данном форуме широкий обзор CMS вам не устроят.
А что я могу разрекламировать - вы наверное догадались. smile.gif
АНТ0Н
Зайдите на форум любой CMS, если конечно он у нее есть, и тупо запостите там тему "Хочу поставить данную CMS, но пока сомневаюсь...". И так с десяток. Потом сравните 10 этих тредов. Они будут одинаковы, только одно слово будет заменено - название CMS.
Daniel
Возможно, вы не совсем поняли.
Нужна конкретная возможность - создание и управление объектами данных произвольной структуры. Это не "нечто", а конкретный компонент, который можно реализовать для любой CMS.
Надеялся, что ответит кто-то, кто в этим сталкивался или эксперт по CMS-кам smile.gif
Заходить и региться в десятки форумов, чтобы это узнать времени нет.
Бян
QUOTE (Daniel @ Feb 10 2007, 21:24)
Возможно, вы не совсем поняли.
Нужна конкретная возможность - создание и управление объектами данных произвольной структуры. Это не "нечто", а конкретный компонент, который можно реализовать для любой CMS.
Надеялся, что ответит кто-то, кто в этим сталкивался или эксперт по CMS-кам smile.gif
Заходить и региться в десятки форумов, чтобы это узнать времени нет.

В PHP on Rails есть что то похожее.
Daniel
QUOTE (Бян @ Feb 11 2007, 18:15)
QUOTE (Daniel @ Feb 10 2007, 21:24)
Возможно, вы не совсем поняли.
Нужна конкретная возможность - создание и управление объектами данных произвольной структуры. Это не "нечто", а конкретный компонент, который можно реализовать для любой CMS.
Надеялся, что ответит кто-то, кто в этим сталкивался или эксперт по CMS-кам smile.gif
Заходить и региться в десятки форумов, чтобы это узнать времени нет.

В PHP on Rails есть что то похожее.

если это аналог ror, то там надо прогать, чтобы описать объекты
в xaraya, например, объекты определяются через web-интерфейс
Бян
QUOTE (Daniel @ Feb 13 2007, 17:10)
если это аналог ror, то там надо прогать, чтобы описать объекты
в xaraya, например, объекты определяются через web-интерфейс

не знаю, но вроде нет.
Скачайте, там есть туториал, где пишут магазин, и объект "товар" (его атрибуты) описывают через веб интерфейс.
matroskin
Приходилось делать подобное на zope/plone. Для этого использовал продукты (модули) для Plone - ATSchemaEditorNG, Inventory Builder, правда внешнюю базу данных не использовал, но в Zope есть "переходник" для SQL, название щас не вспомню, легко найти на zope.org.

Правда такое решение, как я уже говорил в соседней ветке, потребует здравого железа, но работать с ним, в принципе, можно. Со "стандартным набором функциональности CMS" там все ОК. Есть проблемка - все это для торчков Питона, но оно же и преимущество, спать будет спокойнее smile.gif Правда, про возможность "связывать элементы по полям" не совсем понял, но если понял правильно, то это возможно. В остальном перечисленным критериям вполне соответствует (Opensource, Apache в качестве frontend, достаточно удобное редактирование шаблонов, работа с контентными типами - просмотр, редактирование на 5+, ни в одном CMS не встречал такого удобства).

Опять же, на мой взгяд, ставить это все и настраивать, чтоб хорошо работало - задача не многим более тривиальная, чем написание кода ручками (возможно немного "наследить" в коде всё-таки придётся ). В каком-то смысле Zope и Plone (как частный случай продукта для Zope) и есть такая системка-мечта, в которой почти все вопросы решаются через веб-интерфейс. Плата - тактовая частота процессора, оперативная память, дни, потраченные на изучение и чтение документации. Но достигнутый результат может стоить усилий. Zope/Plone довольно популярны для корпоративных решений в Европе.

Вообще у меня эта тема всплывала неоднократно. Планирую, в качестве полезного эксерсиза как-нибудь написать такую вещицу для своего проекта на Django. Если это случится не через десять тысяч лет, сделаю инсталляцию для всеобщего осмеяния smile.gif

Вообще, любопытно как ты решишь этот вопрос. Расскажешь, если не затруднит, на чем остановился..
Daniel
Про Xoops сказки оказались.
Хорошая CMS, но нет в ней такого модуля.
PHP on Rails слишком сырая.
В Xaraya как оказалось нельзя по-простому задать отношения между объектами - обязательно надо писать код.
Daniel
Итак, потратив 2 рабочих дня, сделал то что требуется с помощью Django.
Первый день ушел на знакомство с существующими фреймворками быстрой разработки, т.к. из вышесказанного ясно, что готовых CMS под WAMP с возможностью определения динамических данных на сегодняшний день нет (кроме Xaraya, где можно задать объекты, но нельзя задать отношения), 2-й день ушел на создание (хотя, может быть, я тормоз).

В итоге получилось приложение с аутентикацией пользователей и 2-мя таблицами, связанными по одному полю. Одна из них привязана еще и к пользователю. Типы полей включают тексты, даты, флажки, e-mail, URL и другие. Есть просмотр списка объектов с поиском по определенным полям, сортировками, фильтрами. Есть формы добавления и редактирования с корректной валидацией, а также удаление объектов. Связанный объект можно задать как отдельно, так и через подформу вместе с родительским. Всего на это ушло менее 100 строчек кода! Включая всевозможные конфиги.

Почему именно Django? В Django есть админский интерфейс, который реализует почти всю названную функциональность. Остается только описать объекты с их полями. Делается это с помощью API Django на Питоне. Конечно, хотелось бы использовать PHP, но, как оказалось ни один из существующих вэб-фреймворков для PHP подобного интерфейса не имеет. То есть, чтобы сделать то же самое с помощью любого PHP-фреймворка, нужно самостоятельно 1) описывать валидацию полей объектов или как минимум 2) описывать шаблоны отображения списка и форм, и 3) поиск/фильтры/сортировки по полям... Это конечно спорное утверждение, но мною было просмотрено порядка 15 самых крутых PHP-фреймворков, так что кто захочет оспорить - приводите примеры. В Django пришлось поправить только шаблон шапки сайта, другие шаблоны не трогал. С Ruby on Rails связываться не стал, т.к. пока нет времени изучать Ruby, не знаю, есть ли подобный интерфейс там.

На самом деле Django - тоже не сахар. Траблы начались с установки. Скачал Питон 2.5, легко установил. Потом промаялся с настройкой mod_python, т.к. виндовой сборки последней 2.Х версии под установленный Apache 1.3.29 (самые последние, которые есть не заработали, да к тому же они для Питона 2.0-2.2, а Django требует >= 2.3). Переходить на Апач 2.Х - не вариант, т.к. под ним настроены куча сайтов и модулей (включая mod_perl, с которым тоже немало трахался). Ну ладно, буду использовать питоновский сервер через mod_proxy. Далее скачал последний релиз Django, установил (он пожаловался на отсутствие setuptools, которые он искал по битой ссылке, их тоже скачал и установил отдельно). При запуске сайта Django сказал - жуйте - нужен MySQLdb. Сборки MySQLdb под венду для Питона 2.5 нету, только 2.4, сорцы для сборки потребовали наличие MSVS2k3. Ладно, сносим Питон. Ставлю 2.4 + setuptools + Django по новой. Ура, работает! Первую версию осилил довольно быстро по туториалу и докам на сайте. Дальше дорабатывал с помощью гугла. И все-таки в конце возникло 2 косяка: 1) формат даты не устанавливался, если не сменить LANGUAGE с 'en-us' на 'ru-ru' (тогда админка будет переведена на русский) или '' (нашел экспериментально, локаль английская); 2) игнорировался TIME_ZONE и даты устанавливались и отображались по Гринвичу, оказалось, что это баг, и что он исправлен в SVN-версии (но не в релизе), пришлось патчить сорцы руками.

В целом, получил бесценный опыт и остался доволен результатом smile.gif
Странно, что для PHP подходящего решения найти не удалось.

Ссылки:
Django
PHP MVC Frameworks
Taking a look at ten different PHP frameworks

P.S. Как ни странно, подавляющее большинство PHP-фреймфорков, во-первых, не использует Smarty для шаблонов (либо <?php echo display(...) ?>, либо свой собственный движок), во-вторых, не использует готовый ORMapper (коих полно), а изобретает свой - LAME!!!
matroskin
QUOTE (Daniel @ Feb 25 2007, 23:43)
На самом деле Django - тоже не сахар. Траблы начались с установки. Скачал Питон 2.5, легко установил. Потом промаялся с настройкой mod_python, т.к. виндовой сборки последней 2.Х версии под установленный Apache 1.3.29 (самые последние, которые есть не заработали, да к тому же они для Питона 2.0-2.2, а Django требует >= 2.3). Переходить на Апач 2.Х - не вариант, т.к. под ним настроены куча сайтов и модулей (включая mod_perl, с которым тоже немало трахался). Ну ладно, буду использовать питоновский сервер через mod_proxy. Далее скачал последний релиз Django, установил (он пожаловался на отсутствие setuptools, которые он искал по битой ссылке, их тоже скачал и установил отдельно). При запуске сайта Django сказал - жуйте - нужен MySQLdb. Сборки MySQLdb под венду для Питона 2.5 нету, только 2.4, сорцы для сборки потребовали наличие MSVS2k3. Ладно, сносим Питон. Ставлю 2.4 + setuptools + Django по новой. Ура, работает! Первую версию осилил довольно быстро по туториалу и докам на сайте. Дальше дорабатывал с помощью гугла. И все-таки в конце возникло 2 косяка: 1) формат даты не устанавливался, если не сменить LANGUAGE с 'en-us' на 'ru-ru' (тогда админка будет переведена на русский) или '' (нашел экспериментально, локаль английская); 2) игнорировался TIME_ZONE и даты устанавливались и отображались по Гринвичу, оказалось, что это баг, и что он исправлен в SVN-версии (но не в релизе), пришлось патчить сорцы руками.

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

Вариантом с apache + mod_python, который официально рекомендуют "джанговцы", я остался недоволен, и, кстати, недоволен нынешним apache-ем как таковым, поэтому использую связку lighttpd + fastcgi. Такой расклад удобен тем, что его можно ставить за уже установленным apache + mod_proxi или rewrite. Плюсов много - от удобства конфигурирования lighttpd (в конфигах последних версий apache можно заблудиться и умереть), до разницы в скорости и значительно меньших потребляемых ресурсах.

Про дистриб Django для Windows ничего не могу сказать (а хотел бы smile.gif ), так как не работаю с ней давно, но факт, что до неё многие вещи долетают последними, так что насчет Python 2.5 ты точно погорячился. У меня на Gentoo никаких затруднений не было, ebuild-ы обновляются своевременно. Использую Sqlite3, Django-0.95.1, Lighttpd-1.4.13, Python-2.4.4, полёт нормальный smile.gif

А с датами тоже косячок ловил smile.gif Что правда, то правда..
Daniel
Оказывается у drupal есть CCK. Пока не юзал.
are
Использую TYPO3 уже пару лет, кратко скажу, что "входной билет" в изучении данной системы весьма дорогой.

Конкретно по существу вопроса: в TYPO3 есть такой плагинчик: Kickstarter. Он позволяет побыстренькому создать табличку или несколько связанных табличек и "накидать" необходимые поля.
Не нужно париться и программировать интерфейс по заполнению данных в админке.

Для теста решил создать простой плагин для риелтора. Тип данных "квартира"
Улица (выпадающий список)
Район (выпадающий список)
Номер дома (текстовое поле)
... и тп

пара скриншотов (то что видит разработчик):
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла

то, что видит конечный пользователь в админке (риелтор) при добавлении/редактировании
Нажмите для просмотра прикрепленного файла

Нажмите для просмотра прикрепленного файла


Kickstarter также генерит стандартный php код для отображения списка данных в Front-end.
Этот код можно и нужно менять в зависимости от конкретной задачи.

ПС.
скриншоты старые, TYPO3 админка сейчас выглядит по-другому
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2024 IPS, Inc.