Розробка середовища для управління сайтами на основі HTML5
Дипломная работа, 15 Января 2012, автор: пользователь скрыл имя
Описание работы
У нашій епосі всесвітня павутина має дуже велике значення. Великі корпорації, маленькі фірми, навіть фізичні особи мають свої власні сайти. Сучасні сайти знатно відрізняються від сайтів, які створювались декілька років тому – нові веб-технології з’являються майже з кожним роком та доповнюють існуючі сайти. Кожен, хто вирішив створити собі власний сайт, хоче зробити його, використовуючи останні новинки веб-індустрії. Однак не всі можуть створювати сайти взагалі.
Содержание
Вступ 5
Постановка завдання 7
1. Огляд існуючих технологій 8
1.1 Веб-розробка 8
1.1.1 Серверні мови 8
1.1.2 Клієнтські мови 17
1.2 Системи керування вмістом 21
1.3 HMTL5 26
2. Вибір технологій розробки 30
2.1 Мова програмування 30
2.2 Система керування базами даних 32
2.3 JavaScript фреймворк 32
2.4 WYSIWYG редактор 33
3. Опис роботи 34
3.1 Абстрактна модель програми 34
3.2 Проектування бази даних 34
3.3 Створення структури програми 36
3.4 Розробка ядра програми 37
Висновки 39
Література 40
Додаток А 41
Додаток Б 44
Работа содержит 1 файл
Диплом.doc
— 262.50 Кб (Скачать)title - заголовок пункту меню
type - тип елемента меню. (0 - посилання на головну сторінку, 1 - посилання на користувальницьку сторінку, 2 - посилання на зовнішній ресурс)
page_id - ідентифікатор користувальницької сторінки (якщо тип елемента меню = 1)
url - посилання на зовнішній ресурс (якщо тип елемента меню = 2)
order - порядковий номер при виведенні на сайті
active - прапор активності (0 - не активно, 1 - активно)
Таблиця 3
Структура таблиці menu
| Поле | Тип даних | Індекси | NULL |
| id | INT(8) UNSIGNED | PRIMARY KEY | NOT NULL |
| title | VARCHAR(50) | NOT NULL | |
| type | ENUM('home','page','url') | NOT NULL | |
| page_id | INT(8) UNSIGNED | NULL | |
| url | VARCHAR(100) | NULL | |
| order | INT(8) UNSIGNED | NOT NULL | |
| active | TINYINT(1) UNSIGNED | NULL |
3.3
Створення структури
програми
Система
буде реалізована з використанням
патерну програмування MVC (Model-View-Controller,
Модель-Вид-Контролер), який дозволяє розділити
логіку роботи системи на три складові:
робота з даними (модель), робота з користувачем
(вид) та управління програмою(контролер).
Для полегшення створення структури системи
буде використовуватися метод перевантаження
функції __autoload() для автоматичного підключення
файлів, що містять класи, які ще не були
визначені в процесі виконання програми.
Цей метод дозволяє позбутися від великої
кількості використань оператора include
в коді програми а також розташувати класи
в зручній ієрархії, використовуючи файлову
систему. Точкою входу в програму буде
файл index.php, на який будуть перенаправлятися
будь-які запити до сайту, якщо тільки
цей запит не був зроблений до існуючого
на сервері файлу. Файл index.php, як і всі файли,
доступні ззовні, будуть розташовуватися
в директорії www яка являється публічною.
Решта системних файлів і директорій будуть
розташовані на рівень вище. Структуру
файлів проекту можна знайти в Додатку
А.
3.4
Розробка ядра програми
Ядро системи представляє із себе набір класів глобального призначення. Решта класів успадковуються від цих класів.
- Application - основний клас програми. Сінглтон. Реалізує в собі функції головного контролера, маршрутизує запити і виводить результативний HTML у потік виводу
- Controller - абстрактний клас контролера. Визначає основні структурні властивості контролерів. Використовується для реалізації класів системних контролерів
- DB - Основний клас для роботи з базою даних. Сінглтон. Є врапером абстрактного інтерфейсу доступу до бази даних PDO. Надає функції простого виконання запитів SELECT, INSERT, UPDATE, DELETE і отримання результатів цих запитів.
- Session - клас для роботи з сесією. Сінглтон. Надає простий і зручний спосіб взаємодії з даними, збереженими в сесії.
- View - клас, який реалізує функції компонента Вид патерну MVC. Включає в себе функції рендеринга шаблонів та макетів. Підтримує внутрішній рендеринг.
- Controller_Admin - абстрактний клас контролерів модуля управління. Успадковуєте від класу Controller і додає перевірку на авторизацію.
Також
до складу ядра входять моделі:
- Auth - модель
используемая для
аутентификации пользователя в модуле управления. - Menu - модель, використовувана для відображення та редагування меню сайту. Сінглтон.
- Pages - модель, що використовується для роботи зі сторінками сайту. Сінглтон.
- Settings - модель, використовувана для роботи з настройками системи. Сінглтон.
Сирцевий код
цих класів можна знайти у Додатку Б
Крім
того в ядро входить також JavaScript
фреймворк jQuery, WYSIWYG редактор CKEditor та файловий
веб-менеджер KCFinder.
Висновки
У ході виконання роботи була розроблена унікальна безкоштовна система керування вмістом, заснована на HTML5.
Реалізована система керування вмістом у порівнянні з сучасними аналогічними системами, є вузькоспеціалізованою, легкою і простою в експлуатації а також платформонезалежною і підтримуваною більшістю сучасних веб-хостингів.
Зі сторони клієнту підтримується більшістю сучасних веб-браузерів, таких як Google Chrome, Mozilla Firefox, Safari, Opera, Microsoft Internet Explorer 9 (для більш ранніх версій Microsoft Internet Explorer передбачена часткова сумісність).
Код
структуризован таким чином, що можна
легко відокремити програмну
логіку (моделі та контролери в контексті
MVC) від шаблонів сторінок (види в контексті
MVC). Крім того структура коду досить проста
для подальшого розвитку програмного
продукту. У результаті розроблена система
керування вмістом має підтримку HTML5 і
являється відносно простою в експлуатації.
Література
- Олищук А.В. Разработка Web-приложений на PHP 5. Профессиональная работа. — М.: Вильямс, 2006. — С. 352
- Кузнецов Максим, Симдянов Игорь Объектно-ориентированное программирование на PHP. — Спб.: БХВ-Петербург, 2007. — С. 608.
- Соколов Сергей Александрович. HTML и CSS в примерах, типовых решениях и задачах. Профессиональная работа. — М.: Вильямс, 2007. — С. 416.
- Самков Г. jQuery. Сборник рецептов. — СПб.: БХВ-Петербург, 2010. — С. 416.
- A vocabulary and associated APIs for HTML and XHTML [Електронний ресурс] http://dev.w3.org/html5/spec/
Додаток А
Структура
файлів проекту
configs
access.ini
db.ini
controllers
Admin
Index.php
Login.php
Menu.php
Pages.php
Settings.php
Users.php
Index.php
library
Controller
Admin.php
Application.php
Controller.php
DB.php
Session.php
View.php
models
Auth.php
Menu.php
Pages.php
Settings.php
User.php
views
admin
index
index.phtml
login
index.phtml
menu
index.phtml
pages
index.phtml
settings
index.phtml
index
index.phtml
layouts
site
footer.phtml
menu.phtml
admin.phtml
default.phtml
login.phtml
www
ckeditor*
css
admin.css
del.css
site.css
style.css
images
edit.png
wait.gif
js
admin
menu.js
pages.js
settings.js
jquery
jquery-latest.js
jquery-ui-1.8rc3.custom.
html5.js
layout.js
kcfinder*
.htaccess
include.php
index.php
* - директорії ckeditor та kcfinder містять в собі структуру файлів, що не відноситься безпосередньо до даного дипломного проекту, так як це сторонні розробки
Додаток Б
Сирцевий код базових класів та файлів
www\index.php
<?php
require_once('include.
Application::getInstance(
www\include.php
<?php
function d($t){
echo "<xmp>";
print_r($t);
echo "</xmp>";
}
function
_d($t){d($t);exit;}
// Время начала работы приложения (для дебага)
defined('START_TIME')
|| define('START_TIME', microtime(true));
// Задаем путь к корневой папке приложения
defined('ROOT_PATH')
|| define('ROOT_PATH', realpath(dirname(__FILE__)
. '/..'));
// Задаем путь к папке публичного доступа приложения
defined('WWW_PATH')
|| define('WWW_PATH', realpath(dirname(__FILE__)
. '/../www'));
//
Задаем путь к папке
defined('CONFIG_PATH')
|| define('CONFIG_PATH', realpath(dirname(__FILE__)
. '/../configs'));
//
Задаем путь к папке
defined('LIBRARY_PATH')
|| define('LIBRARY_PATH', realpath(dirname(__FILE__)
. '/../library'));
// Задаем путь к папке моделей приложения
defined('MODELS_PATH')
|| define('MODELS_PATH', realpath(dirname(__FILE__)
. '/../models'));
// Задаем путь к папке видов приложения
defined('VIEWS_PATH')
|| define('VIEWS_PATH', realpath(dirname(__FILE__)
. '/../views'));
//
Задаем путь к папке
defined('CONTROLLERS_
|| define('CONTROLLERS_PATH', realpath(dirname(__FILE__)
. '/../controllers'));
error_reporting
(E_ALL ^ E_NOTICE ^ E_DEPRECATED);
set_include_path(
LIBRARY_PATH,
MODELS_PATH,
VIEWS_PATH,
CONTROLLERS_PATH,
'.',
get_include_path()
)));
function __autoload($class_name)
{
$class_name_array = explode('_',$class_name);
$class_name_array[
$class_path = implode('/',$class_name_array)