Компонент CMS Jommla 1.5 - Raspisanie
Предназначен для размещения на сайте расписания ВУЗ-а
       Скачать компонент      Смотреть демо-версию

Web-разработка :
Программирование на языке PHP, БД MySQL ;
JOOMLA - компоненты, модули, шаблоны и др. ;

 Инструкция по подготовке к работе и использованию компонента Расписание
Предыстория создания данного компонента.
Предыстория такова. Работая в Web-редакции одного из московских ВУЗ-ов, мне по роду деятельности, приходилось выкладывать расписание учебных занятий на сайте. Тот кто когда-либо занимался данным вопросом, понимает насколько это сложный вопрос. Перед тем как приступить к решению этого вопроса я просмотрел как это делается на сайтах других учебных заведений. Чего только мне не пришлось увидеть! От добротно сделанных word и pdf документов, до выложенных на всеобщее обозрение фотографий сделанных непрофессионально, "мыльницей", непосредственно со стены учебного заведения (ужос!). Все, или почти все варианты выкладки расписания предусматривали вариант скачивания расписания на домашний компьютер пользователем. А очень хотелось что-бы расписание можно было смотреть прямо на странице сайта. Для этого, учитывая специфику данного вопроса мне приходилось делать очень сложную табличную верстку html-страницы в режиме дизайна программы Dreamweaver. 
Позволю себе напомнить некоторые основные сложности или особенности расписания учебных занятий на примере того образовательного учреждения где мне пришлось работать. Во-первых это наличие первых и вторых недель (возможные варианты: левая и правая неделя, чётная и нечётная и т.д. и т.п.). Далее, занятия как правило бывают в форме лекций, где присутствует несколько учебных групп и в форме семинаров или др. где как правило присутствует только одна группа или подгруппа. Составление расписания дело трудоёмкое и как правило расписание очень часто корректируется в ходе образовательного процесса. Созданием расписания занимается отдельное должностное лицо - в моём случае его должность называлась диспетчер. Осознавая тот факт, что расписанием, в том числе и выкладкой его на сайт должен заниматся именно диспетчер, а никак не я, мне пришло в голову написать этот компонент, что-бы уже указанное должностное лицо отрабатывало в полной мере хлеб насущный. В то время сайт верстался табличным дизайном, не на движке и я предполагал что в последствии сайт будет переведён на движок Joomla и ратовал за этот движок. В результате руководство приняло другое решение, ну ему виднее. А компонент остался.
Что нужно иметь ввиду и сделать перед использованием компонента.
Во-первых хочу напомнить образовательную структуру вуза, в самом обобщённом виде, и в том варианте какой был в моём случае и именно на этот структурный вариант расчитано использование данного компонента, как поведёт себя компонент в других случаях - мне неизвестно.
1. И так, университет состоит из факультетов. Применительно к данному компоненту это какая-то фраза, например: "Экономический факультет".
2. Далее, каждый факультет состоит из специальностей, под использованием в данном компоненте понятия специаальность, подразумевается использование некоторой абревиатуры, например: "ЭиБУ", имеется ввиду что-то вроде от "экономика и бухгалтерский учёт".
3. Затем, каждая специальность состоит из учебных групп, которые в свою очередь каким-то образом именуются, применительно к нашему случаю это какое-то цифровое обозначение, например 121 или 435. Первоначальные цифры указывают на курс.
Повторюсь, данный компонент расчитан на использование в том случае, если будет соблюдена именно такая структура: факультет (какая-либо фраза), который состоит из специальностей (указываются в виде аббревиатуры), каждая специальность состоит из учебных групп (указываются в виде трёхзначных групп). Возможные отклонения например в обозначении групп - не рассматривались и результат мне не известен.
4. Скачиваем с сайта выложенный архив с компонентом (comRaspisanie.rar) и открываем его . После распаковки архива извлекаем из него вложенный архив com_raspisanie.zip - это непосредственно  архив компонента, но его пока нельзя использовать, т.к. пока что в нём не заложена структура Вашего образовательного учреждения. Распаковываем архив com_raspisanie.zip, на выходе получаем две папки: admin и site, а также файл install.xml.
В папках admin - language - en-GB выбираем языковой файл en-GB.com_raspisanie.ini и открываем его в текстовом редакторе. Очень рекомендую использовать текстовой редактор Notepad++, т.к. он в отличии от Блокнота обладает таким свойством как подсветка синтаксиса и это значительно облегчит процесс корректировки данного файла. Вот код файла en-GB.com_raspisanie.ini точнее та его часть которая требует изменения, она заключена между строками комментария - : КОНФИГУРАЦИЯ СТРУКТУРЫ ВУЗа и КОНЕЦ КОНФИГУРАЦИИ СТРУКТУРЫ ВУЗа

# КОНФИГУРАЦИЯ СТРУКТУРЫ ВУЗа ------------------------------------------------------------------- !
# Указываем количество факультетов ВУЗа --------------------------------------------------------- !
KOLICHESTVO_FAKULTETOV=4
# ----------------------------------------------------------------------------------------------- !
# Далее идет пример создания структуры расписания на примере первого факультета его обозначение
# указывается как FAK_0, читая комментарии необходимо в той же последовательности и по тому же
# принципу создать структуру для всех остальных факультетов, строго соблюдая принцип создания
# не только непосредственно структуры но и обозначений элементов структуры которые прописываются
# заглавной латиницей с использованием слеша и чисел, н.п. - FAK_0_SPEC_2_GRUPPY
# ОБРАТИТЕ ВНИМАНИЕ! Вся нумерация начинается с 0 а не с 1. ЭТО ВАЖНО !!!
# ----------------------------------------------------------------------------------------------- !
# --- НАЧАЛО ПРИМЕРА РАСТРОЙКИ ПАРАМЕТРОВ ОДНОГО ФАКУЛЬТЕТА --- ;
# --- Имя первого факультета ---- !
FAK_0=Строительный факультет
# --- Указываем количество специальностей на FAK_0 --- !
FAK_0_KOLSPEC=4
# --- Далее перечисляем специальности на FAK_0 --- !
FAK_0_SPEC_0=Гидротехническое строительство
# --- И попутно в указанной форме(!!!) выводим номера групп входящих в 
# --- данную специальность разделяя их номера знаком * ------ !
FAK_0_SPEC_0_GRUPPY=111*112*211*212*311*312*411*511
# --- И так для остальных специальностей текущего факультета FAK_0 --- !
FAK_0_SPEC_1=Промышленное строительство
FAK_0_SPEC_1_GRUPPY=113*114*213*214*313*314*413*513
FAK_0_SPEC_2=Промышленное строительство(с)
FAK_0_SPEC_2_GRUPPY=115*116*215*216*315*316*415*515
FAK_0_SPEC_3=Гражданское строительство
FAK_0_SPEC_3_GRUPPY=117*118*217*218*317*318*417*517
# --- КОНЕЦ ПРИМЕРА РАСТРОЙКИ ПАРАМЕТРОВ ОДНОГО ФАКУЛЬТЕТА --- ;
# --- И далее по аналогии для всех факультетов --------------- !
# --- Имена специальностей далее указаваются аббревиатурой --- !
FAK_1=Факультет природообустройства
FAK_1_KOLSPEC=4
FAK_1_SPEC_0=МРОЗ
FAK_1_SPEC_0_GRUPPY=121*122*221*222*321*322*421*521
FAK_1_SPEC_1=МЗКиЗП
FAK_1_SPEC_1_GRUPPY=123*124*223*224*323*324*423*523
FAK_1_SPEC_2=МРОЗс
FAK_1_SPEC_2_GRUPPY=125*126*225*226*325*326*425*525
FAK_1_SPEC_3=КИОВР
FAK_1_SPEC_3_GRUPPY=127*128*227*228*327*328*427*527

FAK_2=Экономический факультет
FAK_2_KOLSPEC=4
FAK_2_SPEC_0=ЭУПП
FAK_2_SPEC_0_GRUPPY=131*132*231*232*331*332*431*531
FAK_2_SPEC_1=ЭУН
FAK_2_SPEC_1_GRUPPY=133*134*233*234*333*334*433*533
FAK_2_SPEC_2=ЭУВХ
FAK_2_SPEC_2_GRUPPY=135*136*235*236*335*336*435*535
FAK_2_SPEC_3=БПП
FAK_2_SPEC_3_GRUPPY=137*138*237*238*337*338*437*537

FAK_3=Механический факультет
FAK_3_KOLSPEC=4
FAK_3_SPEC_0=БТМ
FAK_3_SPEC_0_GRUPPY=141*142*241*242*341*342*441*541
FAK_3_SPEC_1=МОЗОС
FAK_3_SPEC_1_GRUPPY=143*144*243*244*343*344*443*543
FAK_3_SPEC_2=СТТ
FAK_3_SPEC_2_GRUPPY=145*146*245*246*345*346*445*545
FAK_3_SPEC_3=ЗЧС
FAK_3_SPEC_3_GRUPPY=147*148*247*248*347*348*447*547
# КОНЕЦ КОНФИГУРАЦИИ СТРУКТУРЫ ВУЗа ------------------------------ !

Я отдаю себе отчёт что это не совсем удобный способ составления структуры, но это на мой взгляд наименее неудобный способ, другие варианты были ещё сложнее. Кто когда-либо сталкивался в работе с расписанием - поймёт меня.
Учитывая тот факт что этим компонентом будут пользоваться всё-таки сотрудники или студенты ВУЗа я не стану утомлять себя долгим пояснением к коду, остановлюсь лишь на некоторых моментах. В примере выложена структура ВУЗа состоящая из 4 факультетов в каждом из которых по 4  специальности, в каждой специальности по 8 учебных групп. В строках комментария подробно изложен принцип формирования структуры одного факультета. Естественно пользователю необходимо по аналогии соблюдая правила и последовательность именования констант в левой части (заглавные латинские буквы, нижний слеш, а также цифры до знака = н.п. FAK_0_SPEC_1), написать свою структуру. 
5. После внесения всех необходимых изменений в файле en-GB.com_raspisanie.ini сохраняем и закрываем его и вновь zip-архивируем две папки admin и site а так-же файл install.xml в один архив дав ему имя com_raspisanie.zip и как и другие компоненты инсталлируем на сайт. После инсталляции в главной административной панели сайта в пункте Компоненты появляется ссылка - Raspisanie, перейдя по которой - попадаем в раздел работы в компонентом.
Работа с компонентом
После того как компонент установлен делаем из какого-либо меню ссылку на компонент, процедура обычная :Главная админпанель сайта - Все меню - Выбрать меню - Создать - Raspisanie - Default Разметка - (Заголовок, псевдоним) - Сохранить. При переходе в меню на сайте по ссылке на материал Расписание, Вы увидите страницу с ненаполненным swf-файлом. Расписание необходимо наполнить. Как я уже говорил, это работа диспетчера, пусть он трудится. 
Наполнение расписания.
Перейдя из главного меню админпанели: Компонеты - Raspisanie попадаем в административную часть компонента и сразу после инсталляции видим только одну закладку: Общие настройки расписания. Открываем закладку и устанавливаем общие настройки: ширину swf-файла выводящего информацию о расписании занятий выбранной группы, прописываем время учебных пар, например так 09-00 : 10-35, далее если есть желание в нижней панели swf-файла вывести какой-либо баннер, прописыаем с клавиатуры путь к нему из корневой директории, например bannery/banner1.swf, далее оформляем верхнюю и нижнюю части расписания используя два текстовых редактора и сохраняем настройки.
Далее создаём расписание для одной группы. Нажимаем Создать. При переходе в раздел Raspisanie: [Создать] видим разворачивающиеся закладки соответствующие установленным нами в файле en-GB.com_raspisanie.ini факультетам, развернув закладку видим перечень специальностей и соответствующиий им перечень учебных групп. Для создания материала расписания группы, кликом выбираем специальность и в текстовом поле "Создать запись для группы" прописываем её номер (см. скриншот 1). Далее, после создания материала расписания гр 112 в разделе Raspisanie создаётся разворачивающаяся закладка Факультет - Специальность - Группа (см. скриншот 2).
raspisanie1

Скриншот 1. Создание материала расписания группы 112,
специальность ГТС, строительного факультета
 raspisanie2
Скриншот 2. Разворачивающаяся закладка выбора расписания группы.
Кликнув по имени группы, перходим в раздел наполнения и корректировки
расписания.

Кликнув по номеру(имени) группы переходим к наполнению расписания в разделе Raspisanie:[Изменить], см. скриншот 3.
Очень важно! Работа компонента Raspisanie, как впрочем и любого другого компонента, основана на использовании записей в таблицах баз данных (MySQL). Выборка данных из таблиц происходит по стандартным SQL-запросам. Для того что-бы расписание в его пользовательской части (на сайте) смотрелось удобоваримо и не выдавало ошибок, как показала практика испытаний, необходимо вначале создать пустые записи расписания всех учебных групп, таким образом что-бы они шли по порядку установленным структурой самого расписания и прописанного нами в файле en-GB.com_raspisanie.ini, ну или создавать и заполнять их последовательно, без перескоков по курсам. Например из скриншота 2 видно что в специальности ГТС первым было создано расписание для группы 112 тогда как из скриншота 1 явствует что она идёт второй в ряду учебных групп, после группы 111. Необходимо было вначале создать хоть и пустое расписание для группы 111 а уж затем создавать расписание для 112, в противном случае в пользовательской части ссылка на расписание группы 112 будет стоять выше раписания группы 111, что вызовет определённый дискомфорт восприятия.
Скриншот 3. Раздел наполнения и корректировки расписания группы
Из приведённого скриншота явствует то, что по понедельникам, в зависимости от текущей недели в группе 112 будет 3 или 4 пары,
причём занятия первой пары в зависимости от недели тоже будут меняться, четвёртая пара будет только по вторым неделям, вторая
и третья пары от текущих недель не зависят.

raspisanie3

Нельзя сказать что это полная инструкция работы с компонентом Raspisanie, остаётся надеяться на степень подготовки диспетчера
расписания и администратора сайта, да и к тому же место работы - ВУЗ, тоже обязывает как минимум к сообразительности. 
Если возникнут вопросы, пишите : Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript