Понадобилась мне на новой работе внутрифирменная система общения типа ECM-WorkFlow (система корпоративного общения, планирование событий, командная работа над проектами, полноценный контроль доступа к контенту и пр.), посмотрел существующие ECM решения, все очень дорого или расчитано на крупный сегмент бизнеса. А потом прикинул, на джумле ведь есть все необходимое: календарь\планировщик - jcalc_pro, менеджер проектов – projectfork (аналог phprojekt), расширенный конструктор контента - K2, социальная сеть - JomSocial и т.д..
Основная идея: Столкнулся с тем что в среде коммерческих разработок многие не доверяют Joomla!, а порой и Open Source в целом и хотят или навороченный битрикс или готовы писать подобную CSM снуля. Ну и решил я сделать якобы свою компиляцию CMS на базе Joomla Framework (Пояснения и мои размышления относительно этого можно прочитать в отдельной статье) Профессионал конечно догадается, зато клиент будет спать спокойно.
Joomla 1.5.22 rus + AdminPraise 2.4 rus + K2 2.4.1 rus + JomSocial_1.8.8rus + noixacl2.0.6 + fabrik_2.0.2 rus FULL + JCalPro2.2.7.441 rus + projectfork 2109 rus + пр. Нюансы: - K2 c расширениями полностью интегрирован в AdminPraise(backend) и frontend - Jcomments интегрирован в K2, JomSocial и JCalPro - Fabrik со всеми существующими расширениями из SVN Fabrik - Noixacl со всеми адаптерами - точечная настройка прав всех и вся + все исправления (народные патчи) из багтракера - Социальная сеть JomSocial интегрированная с K2, Jcomments и Kunena (по этому мануалу )
- основной упор на широчайшие возможности администрирования и автоматизации (в самом широком смысле) - сильный упор на защищенность движка: переработанный .htaccess (там теперь вообще много полезного и интересного, гляньте), установленый плагин firewall-а, доп.защита админки УРЛ ключем с оповещениями, компоненты по мониторингу настроек сервера и движка, логирование действий в админке и пр. - возможность быстрого обновления ядра и расширений - русифицировано около 90% всех расширений, обновлено все что можно обновить без ущерба для русификации. - большинство компонентов и модулей уже настроены, русифицированы и выведены или в главное меню или на главную страницу - удалены лишние языки в т.ч. вручную из компонентов. оставлены только en и ru - установка происходит не встроенным инсталятором joomla а с помощью инсталятора Joomla Pack Installer 4. принцип один и тот-же. Но есть небольшой нюанс: сборка ставится по умолчанию с демонстрационными данными. + необходимо будет сделать ещё несколько настроек (см. ниже в конце статьи) Забегая вперед, крайне рекомендую сохранить эту страницу себе на диск, пригодиться при установке и настройке. - по умолчанию логин/пароль - admin 12345 (Важно! При инстале лучше не менять дефолтный пароль, это можно сделать потом через админпанель.)
Информационная структура (внешней части сайта):
Публикации
Новости компании
Официальные сообщения
Прочие новости
Документация
Справочники
Нормативная документация
Библиотека
События
Календарь событий (месяц, неделя, повестка)
Создание событий
Проекты
Менеджер проектов
Менеджер задач
Контроль времени
Файловый менеджер
Календарь проектов
Система сообщений
Пользователи\группы\права
Форум
Социальная сеть
Чат
Функциональная структура:
Основной функционал
Первое что сделал, взял за основу Joomla 1.5.22, поудалял «джумловские теги» и установил тему административного модуля AdminPraise 2.4 Rus. (пришлось попотеть подгоняя шаблон под адекватный рабочий вид, исправлены ошибки разработчиков, подправлены визуальные косяки после русификации, многочисленные правки и пр. Из приятных плюсов темы - Подробныйц лог действий в админпанекли) Если что, "?tp=1" в этом админшаблоне тоже работает. Также для тех кому по душе спартанский стиль добавил шаблон админпанели Khepri_Spart .
Далее установил конструктор контента (CCK) - K2 2.4.1rus с модулями и плагинами и долго и упорно перенастраивал все меню в админ модуле, заменяя стандартные джумловские ссылки
Далее noixacl + дополнения (адаптеры) - компонент позволяет создавать как новые группы пользователей (например "superpuper administrator", "newsmaker" и т.п.) так и новые "уровни" пользователей (дополнительно к Public, Registered, Special). Данный компонент встраивается в управление пользователями Joomla, никаких хаков кода. Использование дополнительных адаптеров дает возможность тонкой настройки прав доступа к пунктам меню, модулям, компонентам и основным административным функциям.
Далее Fabrik – мощнейший компонент позволяющий создавать формы и таблицы (MySQL), которые выполняются внутри Joomla!. Используя данный компонент вы можете создавать приложения различной сложности, от простых форм обратной связи, до сложных приложений со сложной логикой и набором взаимосвязанных таблиц и форм. + Самая вкусная часть сборки – полный набор расширяющих плагинов (Все из SVN за 08.10) Описание возможностей при этом возрастает до неприличия, думаю знающие люди оценят.
Далее JCalPro - это W3C-совместимы, очень функциональный календарь, почти что похожий по возможностям на Google Календарь. Множество настроек, грамотная работа с событими, удобная установка шаблонов, поддержка встроенной системы Joomla! по назначению прав доступа к созданию/управлению/просмотру/повторению событий календаря, возможность создания нескольких календарей, в том числе для собственного или публичного использования, управление событиями, поддержка re-captcha, поддержка RSS-лент и SEF-адресации (ЧПУ), поддержка технологии AJAX, импорт событий
Далее ProjectFork - (Неплохой аналог phprojekt) Данный компонент позволяет организовать удаленное управление проектами для совместной работы. Данный менеджер проектов содержит в себе систему проектов, систему заданий, систему разграничения доступа, контроль времени, ответственные, форум, файловый архив, календарь и многое другое.
Ну и наконец из крупного функционала - социальная сеть JomSocial интегрированная с K2, Jcomments и Kunena (по этому мануалу ) также проинсталированы все офиц. модули и плагины к JomSocial (по умолчанию многие отключены)
А теперь полный перечень
Контент
Управление содержимым сайта:
JomSocial_1.8.8rus Многофункциональная социальная сеть
com JCalPro2.2.7.441+themes RUS - инетрактивный календарь событий
com ProjectFork - компонент позволяет организовать удаленное управление проектами для совместной работы
com K2 2.4.1 rus - конструктор контента (CCK)
jce_advlink_k2100 - плагин к JCE. При создании ссылки в редакторе будет доступен контент из К2 mod_aidanews_for_k2_v_1_1_2 - Многофункциональный модуль вывода контента из К2 mod_k2_admin_countfiledownloads_05 - Слайс в админпанели с рейтингом скачки файлов из К2 mod_k2items_v101 big fx news show - Многофункциональный модуль вывода контента из К2 mod_lofk2slideshow big fx news show - Многофункциональный модуль вывода контента из К2 plg_k2_UserExtendedFields-v1.0 - Дополнительные поля пользователей в профайле К2 plg_k2jcomments_v1.1 - Интеграция с Jcomments xmp_k2_plug - Интеграция с XMap
com_jsecure-2.1.2_RUS_by_OMEN доступ в админку по урл ключу + оповещения
mod ualog Recent Activity 1.0 модуль-лог всех действий в админпанели с фильтром по юзерам и компонентам
plg JHackGuard.v1.0.9_RUS firewall для джумлы пропускающий все запросы к сайту через себя и отфильтровывающий все основные атаки (sql-injection,xss,file upload и пр.)
plg_JomDefender v1.0 - Доп. защита: доппароль админки, резка джумлатегов, ipblock и пр.
plug_fuck_reset - блокировка функции восстановления пароля для выбранных групп пользователей (популярное начало взлома сайта)
plg_reg_approv - Премодерация новых аккаунтов пользователей
Админу
Администратору:
com noixacl2.0.6 - Расширенное управление пользователями, правами и группами
com jdiagnostic 1.5.5 набор полезных утилит для админа
com_admintools-1.0.RC2-core набор полезных утилит для админа
com NoNumberManager v1.5.1 - Система обновлений от производителя расширений NoNumber, таких как AdvancedModuleManager,ModulesAnywhere,ArticlesAnywhere и пр.
mod foobla_todo_1.5.2.0 TODO коллективный список дел для администраторов
plg optimizetables_j1.5_v2.0 автооптимизция таблиц БД по расписанию
plg JA Compress - Плагин сжатие и оптимизации выходных CSS и JavaScript сайта
Разработчику
Инструментарий разработчика:
com_fabrik_2.0.2 rus - мощнейший компонент позволяющий создавать формы и таблицы (MySQL), которые выполняются внутри Joomla
+ плагины (полный набор - больше сотни) к нему из их SVN за октябрь 2010 + расширенная русификация (Спасибо Николаю (ovenm)!)
com sm_replacingtext - поиск и замена текста на сайте
com DB Replacer v0.1.5 - поиск и замена текста на сайте
com Jposition v2.0 просмотр содержимого блоков сайта (как ?tp=1 только в админке и удобнее)
com_jolomea 0.0.6 компонент позволяющий переводить языковые файлы других расширений прямо из админки
com jumi_pack_206 вставка любого кода, создание своих расширений
com_wcp_1.0.1 компонент позволяющий сделать "рабочую" копию текущего сайта (файлы и/или базу) для того чтобы не рискуя, полноценно работать с копией а потом разом перенести все изменения на основной сайт.
com SypexDumper_206
Интеграция стороннего скрипта по работе с базами MySQL. Помог мне когда понадобилось причесать кодировку во всех таблицах к единому utf8
com_towns_1.0 SQL база областей-городов
mod artplugins Позволяет подключать плагины в любом месте сайта а не только в com_content
mod MetaMod_1.5k - Модуль позволяет выводить др модули по правилам (по дате,ip,колву показов,php и пр)
mod_article1.5.1.6 - Модуль позволяет вставить статью в любую позицию на сайте.
plg Sourcerer-v2.4.10 вставка html,css,js кода в статьи
plg ArticlesAnywhere-v1.6.1 позволит вам вставляь статьи в любое место на вашем сайте
plg_contentpassword.1.7.3 возможность установить произвольный пароль на произвольные статьи
plg ModulesAnywhere-v1.6.0 вставка модулей в любое место статьи
plg jqueryintegrator - добавление в джумлу свежих библиотек jquery
plg_jfirephp_v1.0.1_b54 firephp - инструмент для отладки в Джумле.(по умолчанию отключен)
plugin_componen t.1.8 - плагин вставки включения компонентов в любое место сайта
plg_ki_mootools_control-0.1 - плагин для отладки mootools скриптов
plg_firebug аналог firefox-firebug для joomla в любом браузере
plg_templatebybrowser_v1.1 - выбор шаблона сайта в зависимости от браузера
SEF-SEO
SEF-SEO оптмизация и раскрутка сайта:
com ARTIO joomsef-3.7.5 ЧПУ - читабельные линки и многое другое:
com joomlatags_core1.2.8_rus возм. быстрого вывода произвольных тегов к статьям
li>plg_SEOGenerator 3.0 Более продвинутая автогенерация метаданных по шаблонам
plg Best Alias Joomla SEO v1.1 Автоподстановка в поле "псевдоним" переведенных на eng заголовков статей, эл-ов меню, категорий и разделов. Для перевода используется авто-on-line переводчик
plg Admin Bar Unlocker 0.9.1 - плагин разблокирует меню при редактировании в админпанели
plg Blogomunity's AJAX Toggler 1.6 - плагин значительно ускоряет работу административной панели сайта используя технологию AJAX
plg joomla_version_check 1.2 помещает иконку в верхней пенели админки если джумла устарела
plg AddToMenu-v1.3.0 быстрое добавление статьи или категории в меню Joomla
plg cleanresponse_j15 - удаление джумла тегов при включенном gzip
plg AdminBarDocker-v1.2.0 приклеивание топа меню в админке при скроле
plg_better preview 1.7.0 - улучшенный вариант предпросмотра статьи в админке
plg ChtmlBtn1.0.3 - кнопка в редакторе для вставки своего html кода
Некоторые модули сайта и плагины установлены но не подключены, чтобы не перегружать сайт или по причине своей функциональной специфичности.
Настройка прав доступа
Уровень
Натсройка прав доступа
Возможности
Уровень ядра Joomla модифицированный компонентом noixacl
Пользователи (com_users) Стандартная регистрация
Группы пользователей
Уровни доступа (Public, Registered, Special)
Возможность создания новых пользователей, групп, уровней доступа, назначение прав группам на доступ к разным меню, модулям, контенту, компонентам и основным админ функциям
Уровень Конструктора контента К2 (Публикации)
Пользователи (возможен импорт com_users)
Группы пользователей (возможен импорт из Joomla)
Возможность создания новых пользователей и групп для точного управления доступом к конкретным разделам контента
Форум
Группы пользователей (модераторы и пр)
Назначение пользователей (com_users) в группы компонента форум
Менеджер проектов
Пользователи (возможен импорт com_users)
Группы пользователей (возможен импорт из Joomla)
Возможность создания новых пользователей и групп для точного управления доступом к различным разделам менеджера проектов
Т.е. Обычный Joomla - пользователь User1 из группы Register может входить в различные подгруппы компонентов форума, публикаций, проектов с точной настройкой прав в каждом компоненте
Скриншоты главной страницы и админпанели
Необходимый уровень знаний
- уверенное владение поисковыми системами :) - уверенное владение базовыми возможностями Joomla (администрироваие,установка) - базовые/уверенные знания PHP,CSS,HTML,JS - базовые/уверенные представления об отладке, владение FireFox-FireBug, IE8-F12 - базовые знания по установке и работе с локальными web-серверами - базовые представления о серверном ПО, методах защиты (chmod, .htaccess) - базовые представления о БД MySQL, PhpMyAdmin - базовые знания о строении расширений joomla т.е. архитектуре MVC (например знать как найти языковой файл к расширению или как менять вид вывода материалов в шаблоне сайта а не в папке com_content) - в идеале, знания в области js (Для успешной интеграции всех интерактивных "web2.0" плюшек, вернее устранение(обход) возможных конфликтов разных библиотек типа mootools, jquery и пр.)
Минимальные системные требования
Для локальной работы: Необходим полноценный вебсервер типа Zend Server(Обрезанный Денвер врядли подойдет) ибо важны не только версии компонентов но и их взамосвязь и настройки. Для установки на хостинг: нормальный хостер :) (например sweb.ru) у которого помимо всего прочего должно быть: - mod_rewrite ON - register_globals OFF - корректная работа с .htaccess - внятная, оперативная служба поддержки ...а без всего этого такой хостинг и даром не нужен :)
А вообще надо понимать, что голой Joomle много не надо, она может и на PHP 4.x и MySQL 4.x работать спокойно, но большинство современных компонентов, использующих модные web 2.0 плюшки, требуют уже соответствующие обновления. Что-ж, это плата за всякие аяксы, удобности и автоматизации (На нормальных "хостингах" как правило все уже стоит как надо)
Особенности установки:
Важно! После первого захода в админку, идем в меню "Сайт->Общие настройки" и во всех вкладках заменяем, где есть, пути "C:/AppServ/www/ecm/..." на ваши. Также желательно в файле configuration.php изменить $live_site на ваш сайт (Все таки мы использовали не родной инсталятор, за все приходится платить :) , но ничего страшного, после этой процедуры Joomla будет установлена как положено). А самое главное, смените пароль и email у пользователя admin и удалите всех остальных пользователей
Если после установки на вебсервер выдает "internаl server error" то: 1) Проверить включен ли в вашем ПХП mod_rewrite (должен быть включен, трясите сапорт) 2) Проверяем причастность файла .htaccess (переименовываем,обновляем страницу) если из-за него, то ваш сервак криво настроен и не особо надежен, но заставить работать можно, открываем .htaccess (незабыли переименовать обратно) и коментируем (#) строки с русскими коментариями, ищем "виновную" строку методом тыка (начинать лучше с конца файла перед блоком SEF)
Для того чтобы максимально обезопасить свой сайт и обеспечить работоспособность firewall-а (отдельный плагин к Joomla) необходимо чтобы в настройках ПХП было выставлено значение register_globals OFF. Вы можете выставить это значение самостоятельно для своего сайта, для этого откройте файл .htaccess в корне сайта (если у вас htaccess.txt то переименуйте его) и любом месте с новой строки добавьте php_flag register_globals OFF (в данной сборке уже сделано) Если кому интересны подробности то прошу сюда
Настройки firewall-а выставлены на максимум, поэтому если надо будет их настроить (у меня, чтобы заработал Jcomments пришлось выключить дополнительную фильтрацию GET-запросов (не велика потеря)) это делается в плагине Security - jHackGuard.
Также не забудьте в компоненте jsecure включить защиту и придумать ключевое слово для защиты входа в админку по ключевому слову типа www.youresite.ru/administrator?sekretword
И напоследок, что касается защиты, в сборку включен очень полезный компонент шифрования данных стандартных форм. Однако если вы используетет сторонние модули авторизации на сайте (в этой сборке, например, yoologin) и обнаружили что не можете с Frontend-а зайти на сайт (пишет логин или пароль неверный) то проверьте наличие соответствующего расширения в Компоненты-Encryption configuration (я установил все что нашел) а самое главное, для выбранного типа модуля авторизации проверьте название (id,name формы и полей) и если нужно поправьте.
Еще момент. Если в компоненте Attachments не скачиваются большие файлы то увеличте параметр php_value memory_limit в .htaccess (это особенность не сборки, но я убил кучу времени чтоб это узнать)
Сборка содержит расширения работающие с интернетом, поэтому чтобы небыло тормозов при локальной работе я временно отключил эти расширения. Если у вас есть постоянное подключение к интернету (трафик небольшой), или вы установили сборку на вебсервер, то рекомендую проделать следующее: идем в админпанель-плагины, после этого в таблице плагинов находим и включаем: (ускорим себе поиск если поиспользуем фильтр или сортировку по id) 1) content - blogping - Плагин "приглашает" пауков при обновлении контента (ускоряется индексация страниц в поисковиках и каталогах) 2) system - joomla version check - Проверка версии Joomla 3) best alias - On-line Перевод(транислит) заголовков(titles) и формирование "псевдонимов"(alias) контента т.е. по сути аналог ЧПУ 4) В JCE редакторе включаем on-line проверка правописания: идем в Компоненты->JCE->Groups->Default->Параметры плагина-> Ищем Spell Checker, жмем "Стандартный" и меняем в поле "Движок" значение с "Внутренний PHP" на "Google"
Самое больное место место во всех крупных разработках это совместимость JS библиотек используемых разными расширениями (в Joomla больше всего безобразничают mootools и jquery) Если с первым мало что можно сделать, то со вторым попроще. В сборках установлен plg jqueryintegrator - добавление в джумлу свежих библиотек jquery. В связи с этим маленький нюанс, если новое расширение использует jquery и если в его настройках есть выбор "загружать jquery" или нет, то незабудьте переключить в "не загружать", иначе возможны js конфликты.
Особенности локальной установки:
Если в процессе установки появляются ошибки mysql или после установки видим "белый экран" в админке или кракозябры, скорей всего у вас старые версии (или апача или майскула или пыпыха) или неустановлены необходимые расширения в пхп, поэтому чтобы не мучиться с обновлениями и настройками рекомендую воспользоваться готовой простой и профессиональной сборкой Zend Server (Обрезанный Денвер врядли подойдет) При установке Zend Server выбрать конфигурацию custom и дополнительно выбрать Addtional Extensions, phpMyAdmin и MySQL Server. Также у вас должно быть активно подключение к интернету (скачивает свежие phpMyAdmin и MySQL Server, да, спорное решение, но что есть то есть) Для дотошных, вот мой сервер: ZendServer-CE-5.0.2_RC153-5.3.2-Windows_x86 (конфигурация custom) / апач 2.2.15 / пых 5.3.2 / майскул 5.1.47
Ну или на старых вебсерверах можно попробовать повыключать спорные модули (так сказать самые требовательные к настройкам сервера): Модули сайта: mod_note_its, mod_jvclouds3D, mod_yoo_toppanel Модули админпанели: mod_easysearch, mod_apdock, mod_manchucomlist Плагины: Proofreader systembot, Security - jHackGuard
Если после установки выдает "internаl server error" то Раскомментировать строку LoadModule rewrite_module modules/mod_rewrite.so в конфигурационном файле сервера httpd.conf. и Перезапустить сервер (связано с особеностью компонента Artio JoomSEF). ( В Зенде для этого есть удобный Web интерфейс - http://localhost:10081/ZendServer )
Также лучше сразу поправить некоторые переменные в php.ini max_execution_time = 50 memory_limit = 16M и также перезапустить вебсервер ( В Зенде для этого есть удобный Web интерфейс - http://localhost:10081/ZendServer )
При установке на нормальный хостинг, подобных проблем быть не должно, в противном случае методы лечения те-же, только через сапорт.
P.S. Просьба в случае обнаружения ошибок, (мало-ли, несовместимость компонентов, вспышки на солнце) сразу писать мне. Исправим,отладим, сделаем конфетку. В письме указывайте пожалуйста конкретное место (ссылка,скриншот) и описывайте свои действия поподробнее а также не забудьте указать версию сборки, название вашего сервера (самосборный,zend,appserv,денвер и пр.) с указанием точной версии, а также версии апача, майскула, пхп и по возможности(в идеале) сообщения из firebug-a и из ИЕ8-F12