Модуль ежедневник 'CMS Joomla'
Министерство
образования Республики Беларусь
Учреждение
образования «Гродненский государственный университет имени Янки Купалы»
Факультет
математики и информатики
Кафедра
программного обеспечения интеллектуальных и компьютерных систем
Курсовая
работа
Модуль
ежедневник «CMS Joomla»
Выполнил:
студент 3 курса, 8 группы, специальность: «Программное обеспечение
информационных технологий»
Пометько
Александр Викторович
Научный
руководитель: старший преподаватель Гуща Юлия Вальдемаровна
Гродно
2013
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
ГЛАВА
1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
.1
Обзор CMS - систем
.2
Модуль CMS: особенности создание
.3
Выбор средств реализации
1.3.1
XML
.3.2
PHP
.3.3
Adobe Dreamweaver CS6
ГЛАВА
2. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ МОДУЛЯ «ЕЖЕДНЕВНИК»
.1
Структура модуля «Ежедневник»
.2
Файл с настройками модуля
.3
Логика модуля
ГЛАВА
3. ДЕМОНСТРАЦИЯ МОДУЛЯ «ЕЖЕДНЕВНИК»
.1
Установка и настройка модуля
.2
Демонстрация работы модуля
ЗАКЛЮЧЕНИЕ
СПИСОК
ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
Приложение
А
Листинг
1. (v1.css)
Листинг
2. (default.php)
Листинг
3 ( mod_jalendar.xml)
ВВЕДЕНИЕ
Когда Интернет еще делал свои первые шаги,
сайты, как правило, были довольно простыми и имели только одну цель -
предоставление пользователю доступа к статичной текстовой или графической
информации. Добавлять новые страницы и изменять текст на них приходилось
достаточно редко, этим занимались обычно сами разработчики сайтов.
Постепенно функции сайтов расширялись, возникала
необходимость регулярно (по несколько раз в день или даже чаще) обновлять информацию
на страницах сайтов и стало ясно, что этот процесс желательно автоматизировать.
Для этого и были созданы первые CMS ( Content management system ) - системы
управления содержимым или системы управления сайтом
СMS предоставляет ряд функций:
.Предоставление инструментов для создания
содержимого, организация совместной работы над содержимым.
.Управление содержимым: хранение, контроль
версий, соблюдение режима доступа, управление потоком документов и т. п.
.Публикация содержимого.
.Представление информации в виде, удобном для
навигации, поиска.
В системе управления содержимым могут находиться
самые различные данные: документы, фильмы, фотографии, номера телефонов,
научные данные и так далее. Такая система часто используется для хранения,
управления, пересмотра и публикации документации. Контроль версий является
одним из основных её преимуществ, когда содержимое изменяется группой лиц.
В мире существует огромное множество CMS для
самых разных целей, самого разного качества, самой разной перспективы, стоимости,
распространённости и так далее. Одними из самых распространённых являются
Joomla, Drupal, Wordpress, vBulletin, TYPO3.[1]
В каждой CMS существует такой термин как модуль.
Итак, это отдельные небольшие многофункциональные решения для сайта на CMS. При
помощи модулей, можно вывести какую либо информацию (погоду, счетчики, контент,
слайдшоу и.т.д.). Модули для CMS это чрезвычайно важно, т.к. без них
функциональность CMS значительно снижается.
Целью курсовой работы является - разработка
модуля «Ежедневник» для CMS Joomla.
Порядок выполнения работы:
. Обзор материалов, касающихся систем и
технологий для реализации.
. Моделирование предметной области и обоснование
выбранных средств разработки проекта.
. Программная реализация проекта.
ГЛАВА 1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
1.1 Обзор
CMS - систем
.2
Рис. 1.1. Процентное соотношение использования
различных CMS
что-то среднее между обширными возможностями
ориентированного на разработчиков Drupal и простотой WordPress, но с более
широкими возможностями для разработки. Как и любая CMS - система, Joomla имеет
свои преимущества и недостатки:
Преимущества:
. Поддержка протоколов контроля доступа (OpenID,
LDAP, Gmail.com);
. Наличие удобной админ-панели с широким набором
функций: шаблоны, стили, управление меню и так далее;
. Простой процесс установки для неопытных
пользователей;
Недостатки:
. Система довольно поверхностна и слаба,
несмотря на всю универсальность;
. Больше платных плагинов и тем в сравнении с
WordPress. Будьте готовы платить; - это лучшее решение: CMS с расширенными
функциями и возможностями. Она обеспечивает более богатую и гибкую структуру
веб-сайта, чем WordPress. Важной особенностью системы является минимальный
набор инструментов при начальной установке, который дополняется по мере
необходимости различного рода модулями, плагинами, компонентами. Это снижает
загромождение административной панели ненужными элементами, а также снижает
нагрузку на сервер и экономит место на хостинге. Такой подход наиболее прост и
понятен, как в использовании, так и в понимании.
.2 Модуль CMS: особенности создания
Для разработки модулей Joomla необходимы знания
основ объектно-ориентированного программирования в PHP, HTML, CSS, XML.
Простейший модуль Joomla как минимум должен
иметь два файла: основной php-файл (который содержит исполняемый код),
xml-файл, содержащий все атрибуты и настройки модуля.
Существует определённая структура файлов и
каталогов модуля:- находятся таблицы стилей для данного модуля, формата
css.(Image) - находятся изображения, преимущественно форматов png и ico. За
счёт своего минимального размера и оптимального качества.(Template) - хранится
шаблон отображающий данные.
В корневом каталоге должны находиться как
минимум 2 файла форматов php и xml:- установочный файл для модуля, через него в
админ панели модуля будут настраиваться параметры для модуля (размер, фон и
т.п.).- входная точка для запуска нашего модуля, этот файл вызывается ядром
Joomla, а он в свою очередь подключает шаблон и отображает его.
В каждом каталоге может находиться файл формата
html: пустой файл который отобразит чистую страницу при прямом обращении к
директории.Framework дает нам широкий спектр возможностей - можно узнать как
обратиться к важным глобальным объектам внутри расширения.
Гибкость модуля достигается за счёт его
настройки. Фактически чем их больше, тем более гибким и универсальным можно
считать модуль.
Без использование базы данных в модулях -
полезность модуля сводиться к нулю.[2]
.3 Выбор средств реализации
.3.1 XML
При создании модуля, XML файл имеет важную роль,
ведь именно он будет указывать Joomla как и куда устанавливать модуль. В нём
будут прописаны основные параметры и настройки, описываться основная информация
о разработчике, указываться необходимые файлы и каталоги, а также языки.
.3.2 PHP
Важнейшую роль в работе модуля имеет скрипт,
написанный на серверном языке программирования: PHP. Он отвечает за логику
модуля, его действия, является входной точкой запуска модуля. Этот файл
вызывается ядром Joomla.
.3.3 Adobe Dreamweaver CS6
Данное программное обеспечение обладает
достаточно приятным и интуитивным визуальным интерфейсом, с его помощью
довольно просто вести редактирование и создание файлов. Она проста в обращении,
отличный редактор кода и функционал.
ГЛАВА 2. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ МОДУЛЯ
«ЕЖЕДНЕВНИК»
.1 Структура модуля «Ежедневник»
Общая структура модуля представлена на рисунке
2.1.
Рис. 2.1. Структура модуля «Ежедневник»
- содержит в себе файл с схемой оформления
модуля: v1.css (см. листинг 1).- содержит изображения необходимые для работы
модуля:.png - изображение стрелки вправо ..png
- изображение двойной стрелки вправо ..png
- изображение стрелки влево ..png - изображение
двойной стрелки влево .- содержит шаблон
отображения данных._jalendar.xml - установочный файл для модуля, через него в
админ панели модуля будут настраиваться параметры для модуля._jalendar.php -
вся логика модуля..html - пустой файл который отобразит чистую страницу при
прямом обращении к директории..php - вспомогательный класс, отвечающий за
оформление и расположение числа, месяца, года, события.
Каждый каталог содержит в себе файл index.html:
пустой файл, который отобразит пустую страницу при прям обращении к директории.
.2 Файл с настройками модуля
Файл XML указывает Joomla как и куда
устанавливать модуль, также в нём хранятся следующие настройки:
.Указана информация о разработчике.
. Указаны пути для необходимых файлов.
. Прописаны основные и дополнительные параметры
модуля.
Исходный код XML файла (см. листинг 2).
2.3 Логика модуля
Логика модуля написана на языке программирования
PHP.
Ниже представлен исходный код логики модуля:
<?php(!defined ('_JEXEC'))
{
define( '_JEXEC', 1 );(
'JPATH_BASE', dirname(__FILE__).'/../..' );( 'DS', DIRECTORY_SEPARATOR
);_once('../../configuration.php'
);_once('../../includes/defines.php');_once('../../includes/framework.php');
$ajaxed=1;
$mainframe =&
JFactory::getApplication('site');
$mainframe->initialise();
$language =& JFactory::getLanguage();
$language->load('mod_jalendar');
$document =
&JFactory::getDocument();
$mid = (int)
JRequest::getVar('mid');
$query = "SELECT params FROM
#__modules WHERE id = $mid;";
$database = JFactory::getDBO();
$database->setQuery($query);
$params =
$database->loadResult();
$params = new JParameter ($params);
}
defined( '_JEXEC' ) or die(
'Restricted access' );_once( dirname(__FILE__).DS.'helper.php' );
$rooturi=parse_url(JURI::root());
$rooturi=$rooturi['scheme'].'://'.$rooturi['host'].'/';
$curmonth=(int)
JRequest::getVar('curmonth',($params->get("default_month")?$params->get("default_month"):date('n')));
$curyear=(int)
JRequest::getVar('curyear',($params->get("default_year")?$params->get("default_year"):date('Y')));
$dayofmonths=array(31,(!($curyear%400)?29:(!($curyear%100)?28:(!($curyear%4)?29:28))
), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);(empty($mid)) $mid=$module->id;
$calen =
modJalendar::getCal($curmonth,$curyear,$params,$dayofmonths);
if
(file_exists(dirname(__FILE__).DS.'../../administrator/components/com_jalendar/config.php')
&& $params->get( "all_links" )==1)
{
require_once(dirname(__FILE__).DS.'../../administrator/components/com_jalendar/config.php');
$config=new
JalendarConfig();($config->a_type==0 || $config->a_type==2) $links =
modJalendar::DayLink($curmonth,$curyear,$config);($config->a_type==1 ||
$config->a_type==2) $a_links = modJalendar::DayLinkC($curmonth,$curyear);
$mergelinks=array_merge((array)
$a_links,(array)$links);
}
$cont =
modJalendar::getContent($calen,$params,$curmonth,$curyear,$mergelinks,$mid,$ajaxed,$dayofmonths,$rooturi);(!($params->get("CSSlist")))
$css=modJalendar::getCSS($params);
( JModuleHelper::getLayoutPath(
'mod_jalendar' ) );
?>
ГЛАВА 3. ДЕМОНСТРАЦИЯ МОДУЛЯ «ЕЖЕДНЕВНИК»
.1 Установка и настройка модуля
. Авторизоваться в панели администрирования.
. Выбирать меню пункт "Расширения"
-> "Установить/Удалить".
. Открыть раздел "Установить".
. В пункте "Загрузить файл пакета"
нажимаем кнопку "Обзор".
. Выбрать архив с модулем на локальной машине.
. Нажать кнопку "Загрузить файл &
Установить".
. Включить модуль как показано на изображении
ниже:
Рис. 3.1. Менеджер модулей
.Выбирать из списка наш модуль, настраиваем
подробности:
Рис. 3.2. Подробности модуля
. Настроить параметры модуля:
. По желанию настроить расширенные параметры:
Рис. 3.4. Расширенные параметры модуля
. Добавить новый материал(указать все
необходимые параметры):
Рис. 3.5. Добавление материала
. Сохранить все изменения и перейти к просмотру
модуля.
3.2 Демонстрация работы модуля
Начальная страница приложения:
Рис. 3.6. Начальная страница
На странице находится календарь (нижним
подчёркиванием выделены даты, у которых есть события), для просмотра выбрать
нужную дату.
Рис. 3.7. Календарь
После выбора даты появляется следующее окно(дата
на 22 мая 2013):
Рис. 3.8. Выбранная дата 22 мая
ЗАКЛЮЧЕНИЕ
В данной курсовой работе был расширен
стандартный календарь CMS Joomla, который предоставляет возможность создания
ежедневника на вашем сайте. Были достигнуты следующие поставленные цели:
создание структуры модуля.
создание файла шаблонизации модуля.
создание цветовой схемы для модуля.
создание XML файла с описанием и настройками.
создание PHP файла с логикой приложения.
календарь модуль файл
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
СMS
- системы [Электронный ресурс] - <http://ru.wikipedia.org/> -
дата:18.02.2013.
Моддули
под Joomla [Электронный ресурс] - <http://joomla-book.ru> - дата:
19.02.2013.
Марк
Декстер, Луис Лэндри, Joomla программирование / Марк Декстер Луис Лэндри //
Пер. с англ.- М.: ООО «Бином-Пресс», 2003 г. - 560 с.
Топ
5 CMS - систем [Электронный ресурс] <http://habrahabr.ru/post/151879/> -
дата: 19.04.2013.
Приложение А
Листинг 1. (v1.css)
.monthname {
font-family: "Trebuchet
MS", Arial, sans-serif;size: 10pt;weight: bolder;
color: black;
}
.yearname{
font-family: "Trebuchet
MS", Arial, sans-serif;size: 10pt;weight: bolder;
color: black;
}.monthlink{
color: black !important;decoration:
underline !important;
}
a.yearlink{: black
!important;decoration: underline !important;
}.grid_c {
font-family: "Trebuchet
MS", Arial, sans-serif;size: 10pt;
}.jal_header {
}
td#dayname {
font-weight: bolder;
}.dayweek1 {: #4F76A3;
}.dayweek2 {: #4F76A3;
}
td.dayweek3 {: #4F76A3;
}
.dayweek4 {: #4F76A3;
}.dayweek5 {: #4F76A3;
}.dayweek6 {: red;
}
td.dayweek7 {: red;
}
td.pndayweek {: #c0c0c0;
}
td.numweek{: #34c924;
}
a.dwlink{: inherit
!important;decoration: none !important;
}
Листинг 2.
(default.php)
<?php( '_JEXEC' ) or die(
'Restricted access' );($params->get("CSSlist")) JHTML::stylesheet(
$params->get("CSSlist"), 'modules/mod_jalendar/css/' );
{
?>
<?php$css;
?>
</style>
<?php
}::_('behavior.mootools');($params->get("use_ajax"))
{
?>
<script
type="text/javascript" charset='utf-8'
src="modules/mod_jalendar/js/jal.js">
</script>
<script
type="text/javascript" charset='utf-8'>server_url = '<?php echo
$rooturi; ?>';
</script>
<?php
}$cont;
?
Листинг 3 (
mod_jalendar.xml)
<?xml version="1.0"
encoding="utf-8"?>
<install type="module"
version="1.5.0">
<name>Planner</name>
<author>Alexpo</author>
<license>alexpo@ojooo.com</license>
<creationDate>17.05.2013</creationDate>
<version>1.0.1</version>
<releaseDate>17.05.2013</releaseDate>
<files>
<filename
module="mod_jalendar">index.html</filename>
<filename>helper.php</filename>
<filename>mod_jalendar.php</filename>
<folder>tmpl</folder>
<folder>css</folder>
<folder>img</folder>
<folder>js</folder>
<folder>elements</folder>
</files>
<languages>
<language
tag="en-GB">languages/en-GB.mod_jalendar.ini</language>
<language
tag="ru-RU">languages/ru-RU.mod_jalendar.ini</language>
<language
tag="it-IT">languages/it-IT.mod_jalendar.ini</language>
<language
tag="fr-FR">languages/fr-FR.mod_jalendar.ini</language>
<language
tag="de-DE">languages/de-DE.mod_jalendar.ini</language>
</languages>
<params>
<param name="use_ajax"
type="list" default="1" label="Use AJAX"
description="">
<option
value="0">No</option>
<option
value="1">Yes</option>
</param>
<param name="all_links"
type="list" default="1" label="Links"
description="">
<option value="0">No
links</option>
<option
value="1">Only days with articles</option>
<option
value="2">All days as links</option>
</param>
<param
name="month_link" type="list" default="0"
label="Month link" description="">
<option
value="0">No</option>
<option
value="1">Yes</option>
</param>
<param name="year_link"
type="list" default="0" label="Year link"
description="">
<option
value="0">No</option>
<option
value="1">Yes</option>
</param>
<param
name="monthname_len" type="list" default="f"
label="Lenght month name" description="">
<option
value="f">full</option>
<option
value="3">3</option>
<option
value="1">1</option>
</param>
<param name="dayname_len"
type="list" default="2" label="Lenght day name"
description="">
<option
value="1">one letters</option>
<option
value="2">two letters</option>
<option value="3">3
letters</option>
</param>
<param name="linecount"
type="list" default="1" label="Place Year and
Month" description="">
<option value="0">In
line</option>
<param name="arrow_en"
type="list" default="2" label="Arrow"
description="">
<option value="0">No
arrow</option>
<option
value="1">For months</option>
<option
value="2">For month and year</option>
</param>
<param name="firstday"
type="list" default="0" label="First day of the
week" description="">
<option
value="0">Monday</option>
<option
value="1">Tuesday</option>
<option
value="2">Wednesday</option>
<option
value="3">Thursday</option>
<option
value="4">Friday</option>
<option
value="5">Saturday</option>
<option
value="6">Sunday</option>
</param>
<param
name="default_year" type="text" label="Default
Year" description="" />
<param
name="default_month" type="list" default="0"
label="Default Month" description="">
<option value="0">No
set</option>
<option
value="1">January</option>
<option
value="2">February</option>
<option
value="3">March</option>
<option
value="4">April</option>
<option
value="5">May</option>
<option
value="6">June</option>
<option
value="7">July</option>
<option
value="8">August</option>
<option
value="9">September</option>
<option
value="10">October</option>
<option
value="11">November</option>
<option
value="12">December</option>
</param>
<param name="pnmonths"
type="list" default="0" label="Show days previous and
next months" description="">
<option
value="0">No</option>
<option
value="1">Yes</option>
</param>
<param name="num_week"
type="list" default="0" label="Number the Week"
description="">
<option
value="0">No</option>
<option
value="1">Simple numbered</option>
<option
value="2">Sequentially numbered</option>
</param>
<param
name="orientation" type="list" default="0"
label="Orientation" description="">
<option
value="0">horizontal</option>
<option
value="1">vertical</option>
</param>
<param name="encode"
type="list" default="UTF-8" label="Encoding"
description="">
<option
value="UTF-8">UTF-8</option>
<option
value="ISO-8859-1">ISO-8859-1</option>
<option
value="Windows-1251">Windows-1251</option>
<option
value="KOI8-R">KOI8-R</option>
<option
value="ISO-8859-1">ISO-8859-1</option>
</param>
</params>
<params
group="advanced"
addpath="/modules/mod_jalendar/elements/">
<param name="color_1"
type="text" default="#4F76A3" label="Color
monday" description="" />
<param name="color_2"
type="text" default="#4F76A3" label="Color
Tuesday" description="" />
<param name="color_3"
type="text" default="#4F76A3" label="Color
Wednesday" description="" />
<param name="color_4"
type="text" default="#4F76A3" label="Color
Thursday" description="" />
<param name="color_5"
type="text" default="#4F76A3" label="Color
Friday" description="" />
<param name="color_6"
type="text" default="#ff0000" label="Color
Saturday" description="" />
<param name="color_7"
type="text" default="#ff0000" label="Color
Sunday" description="" />
<param
name="color_month" type="text" default="black"
label="Color Month" description="" />
<param
name="color_year" type="text" default="black"
label="Color Year" description="" />
<param name="color_num"
type="text" default="green" label="Color
Numerate" description="" />
<param
name="color_daylink" type="text" default=""
label="Color day link" description="" />
<param
name="color_pnmonthday" type="text"
default="#c0c0c0" label="Color previous and next month day"
description="" />
<param
name="underline_day" type="list"
default="underline" label="Underline day link"
description="">
<option
value="none">none</option>
<option
value="underline">underline</option>
</param>
<param
name="underline_month" type="list"
default="underline" label="Underline month link"
description="">
<option
value="none">none</option>
</param>
<param
name="underline_year" type="list"
default="underline" label="Underline year link"
description="">
<option
value="none">none</option>
<option
value="underline">underline</option>
</param>
<param
name="month_size" type="list" default="12"
label="Month size" description="">
<option
value="10">small</option>
<option
value="11">medium</option>
<option
value="12">large</option>
</param>
<param name="year_size"
type="list" default="11" label="Year size"
description="">
<option
value="10">small</option>
<option
value="11">medium</option>
<option
value="12">large</option>
</param>
<param
type="spacer"></param>
<param name="CSSlist"
type="CSSlist" label="Using user CSS"
description="Copy your CSS files in folder 'CSS'"/>
</params>
</install>