6127
Система управления сайтами. Обзор основных CMS. Создание собственной системы управления контентом
Дипломная
Информатика, кибернетика и программирование
Введение Развитие компьютерных сетей и коммуникаций значительно расширяет возможности применения информационных технологий и систем обеспечения ведения электронного бизнеса. Все больше жителей Республики Беларусь предпочитают покупать товары в Интер...
Русский
2012-12-29
1.16 MB
231 чел.
Развитие компьютерных сетей и коммуникаций значительно расширяет возможности применения информационных технологий и систем обеспечения ведения электронного бизнеса. Все больше жителей Республики Беларусь предпочитают покупать товары в Интернет-магазинах, играть в Интернет-казино, читать Интернет-газеты и журналы и общаться с друзьями через Интернет. Быстро растущая Интернет аудитория является новым рынком сбыта для компаний разного профиля. Отсутствие географических барьеров для рекламы и распространения товаров и услуг привлекает в Интернет-бизнес все новые предприятия. В Республике Беларусь есть очень успешно работающие Интернет-магазины, тем не менее, можно сказать, что белорусская коммерция ещё только делает свои первые шаги, тогда как за рубежом электронные магазины и услуги уже завоевали популярность широких слоев населения.
При учете всех требований безопасности электронная коммерция становится мощнейшим средством, способным не только изменить всю структуру торговли и денежного обращения во всем мире, но и приносить конкретную прибыль организациям ее использующим.
Необходимость систем управления для владельцев сайтов начала проявляться в тот момент, когда количество материалов на веб-сайтах начало стремительно расти. Это привело к тому, что традиционные «ручные» технологии разработки и поддержки сайтов, когда сайт состоял из статических страниц и набора дополнительных специализированных скриптов, стали не успевать за быстро меняющимися условиями бизнеса. Ввод данных на сайт требовал (как минимум) знания технологий HTML/CSS верстки, изменения структуры сайтов были сопряжены с каскадным изменением большого количества взаимосвязанных страниц. Различные автоматизированные механизмы, вроде гостевых книг и новостных лент, внедренные на сайтах как отдельные скрипты и, как правило, написанные разными специалистами, перестали удовлетворять требованиям безопасности.
Актуальность разработки систем управления сайтом обусловлена необходимостью автоматизировать процесс работы с сайтом. Оперативное обновление (добавление/удаление/редактирование) содержания, настройка модулей системы должны выполняться не разработчиками, а людьми, чьи познания в IT можно охарактеризвать как "пользователь ПК", т.е. сотрудниками компании.
Цель данного дипломного проекта: «Проектирование и разработка системы управления сайтами»
В процессе дипломного проекта требуется решить следующие задачи:
Любой Web-сайт состоит из набора страниц, а различия заключаются лишь в том, как они организованы. Существует два вида организации Web-сайта статический и динамический. В первом случае специалисты, отвечающие за создание и поддержку сайта, пишут в HTML-форме каждую в отдельности страницу, включая ее оформление и контент. Во втором в основе любой Web-страницы лежит шаблон, определяющий расположение в окне Web-браузера всех компонентов страницы и вставка конкретной информации производится с использованием стандартных средств, не требующих от участника процесса знания языка HTML и достаточно сложных для неспециалиста процедур публикации Web-страницы.
Если сайт состоит из множества страниц или он должен часто обновляться, то преимущество динамической организации становится очевидным. Разработчикам Web-сайта не надо переписывать всю страницу при изменении ее информационного наполнения или дизайна. Страницы не хранятся целиком, а формируются динамически при обращении к ним.
Таким образом, отделение дизайна от контента является главной отличительной особенностью динамических сайтов от статических. На этой основе возможны дальнейшие усовершенствования структуры сайта, такие как определение различных пользовательских функций и автоматизация бизнес-процессов, а самое главное, контроль поступающего на сайт контента [10].
Для создания динамического сайта возможны два пути. Во-первых, это написание собственных программ, отвечающих за создание нужных шаблонов и поддерживающих необходимые функции. При этом созданная система будет полностью отвечать потребностям, однако возможно потребует больших программистских усилий и времени. Второй путь это воспользоваться уже существующими системами, которые и называются системами управления Web-контентом. Преимуществом этого пути является уменьшение затрат времени и сил. К его недостаткам можно отнести снижение гибкости, предоставление недостаточного или чрезмерного набора возможностей.
Под контентом (дословный перевод английского термина content, означающего содержание, содержимое) понимают информационное наполнение сайта то есть все типы материалов, которые находятся на сервере: web-страницы, документы, программы, аудио-файлы, фильмы и так далее. Таким образом, управление контентом это процесс управления подобными материалами. Он включает следующие элементы: размещение материалов на сервере, удаление материалов с сервера, когда в них больше нет необходимости, организацию (реорганизацию) материалов, возможность отслеживать их состояние.
Система управления содержимым/контентом (англ. Content management system, CMS) компьютерная программа или система, используемая для обеспечения и организации совместного процесса создания, редактирования и управления текстовых и мультимедиа документов (содержимое или контента). Обычно это содержимое рассматривается как неструктурированные данные предметной задачи в противоположность структурированным данным, обычно находящимися под управлением СУБД) [9].
В общем случае CMS делятся на:
ECMS Enterprise Content Management System (Система управления контентом масштаба предприятия)
WCMS Web Content Management System (Система управления Web-контентом).
В силу того, что ECMS имеют глубокую внутреннюю классификацию по предметным областям (HRM, DMS, CRM, ERP и т.д.) термин CMS заместил собой WCMS, превратившись в синоним системы управления сайтами. Подобные CMS позволяют управлять текстовым и графическим наполнением веб-сайта, предоставляя пользователю удобные инструменты хранения и публикации информации.
Сейчас существует множество готовых систем управления содержимым сайта, в том числе и бесплатных. Их можно разделить на три типа, по способу работы:
Генерация страниц по запросу. Системы такого типа работают на основе связки «Модуль редактирования → База данных → Модуль представления». Модуль представления генерирует страницу с содержанием при запросе на него, на основе информации из базы данных. Информация в базе данных изменяется с помощью модуля редактирования. Страницы заново создаются сервером при каждом запросе, что в свою очередь создаёт дополнительную нагрузку на системные ресурсы. Нагрузка может быть многократно снижена при использовании средств кэширования, которые имеются в современных веб-серверах [1, c. 325].
Генерация страниц при редактировании. Системы этого типа суть программы для редактирования страниц, которые при внесении изменений в содержание сайта создают набор статических страниц. При таком способе жертвуется интерактивность между посетителем и содержимым сайта.
Смешанный тип. Как понятно из названия, сочетает в себе преимущества первых двух. Может быть реализован путём кэширования модуль представления генерирует страницу один раз, в дальнейшем она в несколько раз быстрее подгружается из кэша. Кэш может обновляться как автоматически, по истечению некоторого срока времени или при внесении изменений в определённые разделы сайта, так и вручную по команде администратора. Другой подход сохранение определённых информационных блоков на этапе редактирования сайта и сборка страницы из этих блоков при запросе соответствующей страницы пользователем.
Термин контент-менеджер обозначает род профессиональной деятельности редактор сайта.
Большая часть современных систем управления содержимым реализуется с помощью визуального (WYSIWYG) редактора программы, которая создаёт HTML-код из специальной упрощённой разметки, позволяющей пользователю проще форматировать текст [10].
Функции систем управления контентом можно разделить на несколько основных категорий:
Создание предоставление авторам удобных и привычных средств создания контента.
Управление хранение контента в едином репозитории. Это позволяет следить за версиями документов, контролировать, кто и когда их изменял, убеждаться, что каждый пользователь может изменить только тот раздел, за который он отвечает. Кроме того, обеспечивается интеграция с существующими информационными источниками и ИТ-системами. CMS поддерживает контроль над рабочим потоком документов, т.е. контроль за процессом их одобрения. Таким образом, управление контентом включает в себя хранение, отслеживание версий, контроль за доступом, интеграцию с другими информационными системами и управление потоком документов.
В мире существует множество систем управления контентом. Условно можно выделить три основных класса подобных приложений:
Очевидно, что подобное решение может хорошо решать задачи создания такого же рода сайтов, но может быть совершенно неприспособленно для решения задач другого плана (электронная коммерция, b2b и т.д.).
Zope CMF и iNetSite
Среди объектно-ориентированных CMS-систем можно встретить каркасы. Классический пример Zope CMF. Вообще, Zope ведущий свободно распространяемый сервер приложений, специализирующийся на управлении контентом в порталах и пользовательских приложений. На основе этого сервера приложений построен каркас управления контентом Zope CMF, с помощью которого, в свою очередь, создан целый ряд CMS-систем, в частности, Plone.
На основе сервера приложений Zope разработана отечественная CMS iNetSite (http://www.ramax.ru/services/web_content/inetsite) комплексный программный продукт, предназначенный для создания и последующего сопровождения веб-сайтов любой сложности и назначения.
eZ Publish
Еще одна очень распространенная объектно-ориентированная CMS eZ Publish. Системы семейства eZ базируются на свободно распространяемом продукте eZ Publish. Наличие двух лицензий GPL и профессиональной позволяет создавать коммерческие продукты на основе каркаса eZ Publish, обеспечивая этой системе поддержку как сообщества Open Source, так и профессиональных разработчиков.
Система eZ Publish предназначена также для создания и управления содержимым Internet-магазина, новостного сайта, фотогалереи или форума.
Платформа: PHP, MySQL, Apache. На этапе инсталляции присутствует мультиязычность (русский язык тоже есть), а очень удобный и продуманный пошаговый инсталлятор позволяет без особых осложнений установить систему на любой хостинг. eZ publish имеет возможность устанавливаться сразу в настроенной конфигурации, соответственно предназначению сайта. Среди конфигураций есть новостной сайт, корпоративный портал, интернет-магазин, блог, форум, галерея изображений и интранет-портал.
Недостаток отсутствие встроенного визуального редактора для создания контента. отличные способности по работе с мультимедийным содержимым позволяют рекомендовать ее для построения каталогов и библиотек, магазинов для специфических немассовых товаров. Для серьезных контентных проектов система пока проигрывает из-за отсутствия визуального редактора.
MS Content Management Server
Microsoft Content Management Server (MCMS) представляет собой систему управления Web-контентом, которая дает возможность создавать, развертывать и поддерживать динамично меняющиеся Web-сайты. Благодаря интеграции с Visual Studio .NET и поддержке функций управления исходными кодами, MCMS позволяет разработчикам создавать сайты, которые потом могут управляться и поддерживаться как ИТ-специалистами, так и бизнес-пользователями. Первые могут централизованно управлять брэндингом, рабочим потоком документов и безопасностью, тогда как вторые создавать собственный контент, управлять им и публиковать его, используя знакомые приложения, такие как Word или Internet Explorer.
Объектная модель поддерживает разработку в среде Visual Studio .Net и .Net Framework. Возможно объединение через Microsoft Solutions for Internet Business (MSIB) Content Connector с сервером Microsoft Commerce Server для создания решений в области электронной коммерции.
Content Management Server 2002 позволит публиковать материалы непосредственно из Microsoft Word, взаимодействовать с другими системами, производить быстрое развертывание, управлять цифровыми хранилищами и идентификацией, осуществлять перевод Web-серверов, XML-редактирование и поиск.
Communiware
Communiware (http://www.communiware.ru) соответствует сетевой модели представления данных. Эта система представляет собой инструментарий нового поколения для создания вертикальных Web-сайтов и порталов.
Администраторский интерфейс очень похож на интерфейс самого сайта, но при этом к каждому информационному элементу добавлены ссылки на формы его создания, редактирования и удаления. Это очень удобная и мощная концепция, позволяющая за несколько минут освоить основные операции управления содержанием.
Рекомендуется его для проектов среднего масштаба, где важна гибкость системы.
Функционирует под ОС Unix, с использованием СУБД Oracle или PostgreSQL.
Предназначен для поддержки корпоративных сайтов, электронных СМИ, электронных магазинов, порталов.
Для некоммерческих проектов распространяется бесплатно. Для других 150 у.е.
DynaSite
Система DynaSite (http://www.reksoft.ru/products/dynasite/) ориентирована на управление сложными структурами данных. Возможны следующие варианты поставки:
DynaSite Publishing предназначен для создания и управления корпоративном сайтом или онлайновым информационным изданием. В базовую комплектацию входят все необходимые компоненты для управления содержанием (созданием сайта и его информационным наполнением). При необходимости дополняется маркетинговыми инструментами, а также средствами электронной коммерции.
DynaSite Publishing Enterprise Edition специализированное решение, предназначенное для компаний с разветвленной структурой, позволяющее создать неограниченное число сайтов с различными адресами. При этом все сайты будут объединены в одной базе данных DynaSite и иметь общий список пользователей и настройки.
DynaSite Commerce позволяет в максимально короткие сроки организовать центр электронной коммерции в сети Интернет. В базовую комплектацию входят все необходимые для электронной торговли модули. Разнообразие опций позволяет использовать систему, как в розничной торговле, так и для создания сложной сбытовой структуры и управления дилерской сетью.
DynaSite Hosting организовать на одном ядре DynaSite хостинг неограниченного числа независимых друг от друга сайтов и электронных магазинов. Решение для хостинг-провайдеров. Имеет все необходимые средства для управления системой в целом и интеграции с внешними информационными системами.
Работает в серверной ОС Microsoft с СУБД MS SQL Server и web-серверами ColdFusion Application Server, IIS, Apache.
В ядре объединены модули, реализующие базовую функциональность системы:
Бизнес-компоненты, поставляемые с DynaSite, обеспечивают дополнительную функциональность, реализующую тот или иной бизнес-процесс.
Для связи с внешними информационными системами и создания дополнительных компонентов предусмотрен специальный интерфейс для разработчика DynaSite SDK.
Таким образом, создаваемое с помощью DynaSite приложение может быть интегрировано с другими информационными системами, например бухгалтерской, складской, почтовой и т. д.
Предназначена для поддержки корпоративных сайтов, электронных СМИ, электронных магазинов, порталов и интернет-сообществ. Копия системы стоит 1500 у.е.
Saitistika
CMS Saitistika (http://www.saitistika.ru) коробочный продукт. Ориентирован на дилеров (веб-разработчиков, провайдеров). Преусмотрен франчайзинг.
Работает с ОС Windows Server, web-сервером Internet Information Server и СУБД MS SQL Server.
Предназначена для поддержки корпоративных сайтов, электронных СМИ, электронных магазинов, порталов и интернет-сообществ.
NetCat
Система NetCat (http://www.netcat.ru) ориентирована на управление проектами среднего и высокого уровня сложности.
Использует СУБД Linux/FreeBSD, web-сервер Apache, технологию PHP и СУБД MySQL. Нетребовательна к системным ресурсам, что позволяет использовать ее на маломощных машинах. Стоимость 300 у.е.
PHPNuke
Модульная CMS. Распространяется бесплатно. PHPNuke это универсальная система построения сайта, с текстовым и графическим наполнением. Включает в себя все инструменты, необходимые для создания портала (в широком его понимании). Принимая во внимание большое количество реализованных по умолчанию функций, а так же наличие модулей, произведенных третьими лицами, данная CMS система может быть применена в следующих областях
Поддерживает 25 языков, Yahoo подобный механизм поиска, возможность комментариев в опросах, поддержка тем, менеджер дат, менеджер управления файлами, работа с заголовками, менеджер часто задаваемых вопросов, система обзоров, информационный бюллетень, категоризациа статей, многоязычное управление и т.д.
Для работы PHP-Nuke требуется:
Так же система работает и на платформах: FreeBSD, OS/2, MacOS и д.р.; на базах данных: mSQL, PostgreSQL, PostgreSQL_local, ODBC, ODBC_Adabas и д.р.
Mambo и Joomla!
Mambo одна из самых популярных модульных CMS. В ее состав входит полностью основанный на БД движок с использованием PHP/MySQL. Имеется возможность работы под ОС Linux, FreeBSD, MacOSX, Solaris, AIX, SCO, WinNT, Win2K, однако ее использование в различных ОС имеет свою специфику.
Для создания контента Mambo предоставляет выбор из 3 визуальных редакторов, что упрощает редактирование материалов до уровня редактирования текста в программе Word.
На сегодня можно найти более 700 модулей и компонентов, которые удовлетворят требования любого автора сайта. Система подходит как для небольшого, так и для крупного корпоративного сайта или информационного проекта. Интернационализация сделана очень хорошо.
Joomla! появилась как результат многолетней работы над ее знаменитой предшественницей Mambo. Команда разработчиков создала Joomla! 1.0 на основе Mambo 4.5.2.3 и здесь пути этих двух систем разошлись. Принципиальных отличий между эти ми двумя CMS нет.
Xoops
Модульная CMS. Полная объектная ориентация всей архитектуры системы (сайту доступно большое количество дополнительных модулей, реализующих почти все необходимые функции). Для создания и управления внешним видом есть мощная система визуальных тем, которых достаточно много в библиотеке на сайте.
Documentum
Documentum ведущий поставщик коммерческого программного обеспечения для интегрированного управления документами и контентом. В области управления документами его ближайшими соперниками являются Open Text, IBM и FileNet, а в сфере управления контентом Vignette, Stellent и Interwoven.
В области управления документами решения от Documentum наиболее надежны благодаря возможностям репликации контента и управления им на очень высоком уровне детализации (для переиспользования и перенацеливания), а также поддержке преобразований сложно структурированных документов, расширяемости репозитория и поддержке XML. Важные достоинства Documentum состоят в глубоком знании процессов управления потоком документов, контроля версий и управления архивами. Однако решения Documentum могут оказаться менее эффективными, чем некоторые решения-конкуренты, при обработке представления документов на больших Web-сайтах.
Система Documentum имеет объектно-реляционную архитектуру (т.е. объектная модель данных отображается на реляционную базу данных), поэтому может быть отнесена к объектным CMS-системам.
FileNet
Этот поставщик, фокусирующийся на коммерческих системах управления контентом предприятия, долго был лидером на данном рынке, а купив компанию eGail FileNet, вышел на рынок WCM. Это позволило FileNet предложить широкий спектр услуг организациям, реализующим решения для управления контентом. До сих пор компания фокусируется преимущественно на управлении процессами и поддержке транзакционного контента
Предлагаются следующие пакеты: Business Process Manager автоматизация сложных бизнес-процессов; Content Manager управление, совместное использование и доступ к документам или другим формам контента; Web Content Manager автоматизация создания, одобрения и публикации контента на Web-сайтах; Image Manager управление фиксированными типами контента, включая изображения, факсы и т.п.
IBM Content Manager
Система IBM Content Manager позволяет организациям получать, хранить, управлять и распространять все формы цифрового контента, включая отсканированные текстовые документы, XML, HTML и мультимедиа. Content Manager полное интегрированное решение для управления документами, предназначенное для потребителей, которые хотят пользоваться универсальным продуктом одного поставщика.
Другой ключевой момент возможности управления web-контентом. Корпорация анонсировала объединение Content Manager с WebSphere Portal, который обеспечивает возможности публикации в Web. Теперь Content Manager будет представлять собой репозиторий для WebSphere-портала. Content Manager также объединен с WebSphere Portal с помощью портлетов, позволяющих пользователю получать доступ к контенту всех типов. После приобретения компании Tarian Software, поставщика решений для управления записями, IBM расширила спектр своего ECM-инструментария за счет средств управления жизненным циклом контента.
Модель данных Content Manager объектно-ориентированная.
Заказчики web-сайтов на основе CMS.
Выбор наиболее подходящей CMS (Content Management System) для проекта или корпоративного сайта в первую очередь зависит от категории заказчика, бюджета, предполагаемой сложности сайта и технического обеспечения.
Предприятия и компании розничной торговли, дилеры.
Большая часть заказчиков из этой группы проявляет интерес к разработке представительских веб-сайтов, которые помимо информации о компании включают новости, каталоги продукции, механизм формирования заявки на продукцию. В ряде случаев они заинтересованы в создании механизма регистрации посетителей сайта, подключении гостевых книг и т.п. Все эти требования соответственно отражаются на требованиях к CMS.
Одним из основных требований является обеспечить возможность управления веб-сайтом собственными силами, не прибегая к услугам разработчика или стороннего специалиста. Поэтому для данной категории заказчиков критичными являются требования удобства применения. Не менее важным является обеспечение модульности и возможность выбирать, компоновать необходимые функции веб-сайта в зависимости от пожеланий заказчика, а также добавлять новые функции по мере развития веб-сайта.
Среди этих заказчиков выделяется категория, которая может быть заинтересована в разработке сайтов электронной коммерции, но при этом реальные трудности возникают с интеграцией их системы документооборота в интернет. Зачастую рабочая база данных компании ведется сама по себе, а на сервере лежит собственная база данных, созданная специально для торгового автомата.
Собственно электронные магазины в большей степени востребованы в таких сферах торговли как: торговля цветами, книжная торговля, торговля мобильными телефонами т.е. все, что связано с продукцией массового спроса, которая не составляет проблем в плане доставки курьером или почтой. Оплата очень часто осуществляется обычными офф-лайновыми способами при доставке курьеру, оплатой через Сбербанк и т.п., т.е. не требуется интеграция с электронными платежными системами. Необходимо отметить, что на сегодняшний день не существует сколько-нибудь надежной электронной платежной интернет-системы. Самая популярная WebMoney. Однако никаких юридических гарантий надежности ее работы нет.
Разграничение прав доступа и установление групп пользователей и их полномочий требуются только для сайтов электронной коммерции.
Многие компании искусственно ограничивают для своих сотрудников доступ к веб-сайту и отказываются от интеграции своих рабочих БД в интернет, т.к. опасаются за безопасность данных, а вкладывать значительные средства в ее обеспечение не готовы.
Предприятия оптовой торговли.
Также заинтересованы в разработке представительских ресурсов. Освоение сети Интернет начинают, как правило, с создания обычного, зачастую статического сайта.
Существенным моментом является наличие дилеров, дистрибьюторов и рано или поздно возникающая необходимость организовать взаимодействие с ними в режиме он-лайн.
Крупные компании могут проявлять заинтересованность в создании дилерских площадок с авторизованным доступом к ним. Для таких проектов необходима интеграция с бизнес-процессами компании, базами данных. Изменения в базах данных должны происходить оперативно, отображая процессы резервирования продукции тем или иным дилером. Важно поскольку на площадке могут одновременно работать несколько удаленных пользователей, особое значение приобретают механизмы, обеспечивающие синхронизацию данных.
Производственные предприятия.
Для данной группы потенциальных заказчиков актуальным является не только создание представительских ресурсов, но и возможность организовать работу (т.н. "виртуальное координирование") с дилерами, поставщиками, партнерами, используя возможности Интернет. Речь об организации сетей internet/intranet, создании дилерских площадок, разработке и внедрении механизмов для проведения электронных торгов, аукционов и тендеров. Что касается последних, то они зачастую организуются в рамках отраслевых порталов.
Примечание: Важно отметить, что проекты В2В часто инициируются компаниями IT-профиля как собственно интернет-проекты. Основные трудности возникают с их продвижением и привлечением целевой аудитории. Подавляющее большинство электронных торговых площадок на сегодняшний день работает в тестовом режиме, максимальная отдача при этом от размещения информации в каталогах компаний и баннерной рекламы, платных сопутствующих услуг.
Реальную конкуренцию им (в плане привлечения и взаимодействия с целевой аудиторией) составляют отраслевые порталы. Важно отметить, что предприятия традиционного бизнеса часто начинают свою деятельность в секторе В2В именно с создания собственного вертикального портала.
Для решений В2В необходимо обеспечить интеграцию с бизнес-процессами фирмы, с рабочими базами данных, т.к. информация, отображающаяся на сайте должна всегда пребывать в актуальном состоянии, а ее обновление должно происходить оперативно и при этом проходить необходимые стадии, связанные с утверждением документов к публикации. К CMS в данном случае предъявляются требования, связанные с обеспечением механизма документооборота, а также обеспечением информационной безопасности.
Предприятия банковской и финансовой сферы.
Предприятия банковской сферы наиболее активно используют технологии интернет для взаимодействия со своими клиентами, обеспечения сервисов, необходимых предприятиям электронной коммерции и пр.
Однако многие из банковских структур по сей день располагают интернет-ресурсами, которые не соответствуют современным требованиям с точки зрения дизайна и функциональности. Некоторые банки и их филиалы не имеют собственных представительств в сети Интернет.
Предприятия сферы услуг.
Для сферы услуг возможности, предоставляемые Интернет, наиболее актуальны с точки зрения их продвижения к конечному потребителю, особое место занимают услуги, оказываемые он-лайн.
Для веб-ресурсов этой группы важна интерактивность, возможность осуществлять оперативную обратную связь с пользователями, обеспечивать их информационную поддержку. Это означает, что на веб-ресурсах используются формы анкетирования, сервисы "вопрос-ответ", реализуются форумы. WCMS таких ресурсов должна обеспечивать все необходимые функции.
В связи с мировым финансовым кризисом, многие компании урезают затраты на IT сектор. Малые и средние копании ограничиваются сайтами-визитками, крупные придерживаются идеологии использвания систем управления «под себя». Поэтому выбор пал на разработку решения собственными ресурсами, оптимизированную под чаще всего встречающиеся запросы заказчиков. К его достоинствам можно отнести повышение гибкости, предоставление необхдимого набора возможностей.
В процессе обзора коммерческих и свободных CMS мы можем наблюдать тенденцию по предоставлению заказчику системы, которая требует навыков программиста, поэтому было решено отказаться от такого подхода и следовать идеологии Microsoft Windows, т.е. система должна быть изначально ориентирована на обычного пользователя ПК.
Структура базы данных приложения отражена на рисунке 2.1.
Рисунок 2.1 Структура базы данных приложения
Основная идея систем управления контентом разделение визуального дизайна сайта и его информационного наполнения. При создании сайта с помощью такой системы разрабатывается набор шаблонов страниц, в которых впоследствии размещается информация. В этом случае роль разработчиков (фактически это группа внедрения) ограничивается только созданием "начальной" информационной системы на основе системы управления контентом, затем пользователи сами публикуют требуемую информацию и определяют ее представление. Управление сайтом сводится к минимуму, администратору остается только управлять пользователями.
Пользователи CMS делятся на две группы создатели шаблонов страниц и авторы контента (информационного наполнения). Таким образом, одна группа пользователей создает структуру и оформление страниц, а другая наполняет его содержанием (рисунок 2.2).
Рисунок 2.2. Схема функционирования CMS
Функции систем управления контентом структурированы согласно жизненному циклу системы.
Сначала группа внедрения разворачивает ядро CMS и создает в СУБД информационное хранилище контента БД. Далее администратор предоставляет доступ к системе различным пользователям, затем создается контент, он публикуется, и в нем применяются шаблоны оформления [6, c. 317].
Создание контента.
На первом этапе необходимо создать все типы контента и схемы их метаописаний, а также настроить систему на определенный поток работ (если система поддерживает создание потоков работ, а не использует единственный встроенный). Понятие типа контента аналогично понятию класса, а элементы контента представляют собой набор экземпляров таких "классов". Типами контента являются, например, текст и изображение; экземпляром контента конкретный документ или картинка.
Следующая важная возможность хранение информации о версии контента. Это позволяет задать номер версии любых операций изменения контента и при необходимости восстановить его. В любой момент можно отказаться от изменений и, практически в режиме реального времени, откатиться на одну из предыдущих зафиксированных версий. Строгий контроль версий необходим для определения ответственности отдельных лиц, а также для резервного и аварийного восстановления системы.
Кроме управления контентом, система должна предоставлять возможность создавать метаданные о нем. Метаданные это сведения о данных, свойства данных. Примером метаданных служат ключевые (характерные) слова документов, предназначенные для поисковых или отчетных систем. Системы управления контентом, рассматриваемые в данном обзоре, не поддерживают метаданные, хотя можно специально ввести дополнительные типы контента, представляющие собой метаданные.
После того, как все типы контента созданы, авторы информационного наполнения начинают создавать, изменять и удалять элементы контента указанного типа. CMS уже содержит некоторый набор визуальных компонентов, например, для редактирования текста, выбора изображений, выбора шаблона представления.
Кроме непосредственно редактирования элементов контента, необходимо предусмотреть разбиение контента по категориям или рубрикам.
Создание шаблонов оформления.
В качестве решения проблемы представления в системах управления контентом используется технология шаблонов, определяющих внешний вид страницы. Разработчику шаблонов не нужно знать никаких технических тонкостей. На ранних этапах существования WWW шаблоны представляли "заготовки" HTML-кода, из которого путем манипуляций в HTML-редакторе получались готовые страницы. Сегодня такими заготовками манипулируют уже не дизайнеры в своих редакторах, а серверные web-приложения. Таким образом, современный шаблон Web-страницы представляет собой блок HTML, который благодаря специальным тегам или внедренным сценариям, облегчает включение динамически сгенерированного содержания на этапе выполнения. При использовании подобных шаблонов программистам необходим некоторый стандартизированный интерфейс для работы с ними шаблонный движок (в английском языке существует устоявшийся термин template engine), который может иметь разнообразные дополнительные функции, например, поддерживать кэширование шаблонов, их динамическое обновление и т.д.
Публикация контента.
Механизм публикации информации в системе управления контентом отвечает за процесс создания, редактирования и удаления шаблонов страниц, а также за сопоставление типов контента и шаблонов страниц. В состав дополнительных возможностей системы публикации может входить предварительная генерация статической версии сайта. Эта опция очень полезна в случае размещения информационной системы на оборудовании с ограниченными возможностями.
Типичный процесс публикации информации в World Wide Web реализован в Microsoft Content Management Server. Обычным приемом обеспечения оформления информационного наполнения являются шаблоны представления информации. Поэтому первым этапом процесса является создание наборов шаблонов. Типичный шаблон содержит разметку HTML и места, куда в дальнейшем будут вставлены данные (placeholder'ы в терминологии Microsoft). Далее на основе этих шаблонов авторы информационного наполнения создают страницы и представляют их редакторам для одобрения. Редакторы, в свою очередь, могут либо отклонить страницу и вернуть ее автору на доработку, либо одобрить ее и передать модератору сайта. В первом случае процесс повторяется снова, во втором же модератор сайта проверяет расположение страницы на сайте, дату и срок ее публикации. Если все в порядке, страница становится видна пользователям. Несмотря на то, что рабочий процесс в Microsoft Content Management Server фиксирован и не может быть изменен в дальнейшем, подобное решение подходит большинству пользователей, которым необходимо публиковать информацию в World Wide Web [3, c. 118].
Управление пользователями.
Управление пользователями включает создание, изменение и удаление учетных записей отдельных пользователей и их групп, а также назначение прав для работы с элементами контента. Важной частью требований является наличие пользовательских профилей (profiles), с помощью которых можно сгенерировать персональное представление информации для каждого пользователя. Полезной является и возможность пользователя делегировать свои права. Это позволяет пользователям переназначать исполнителя конкретной работы и избегать простоев из-за отсутствия отдельного лица.
Системы управления контентом управляют учетными записями пользователей на основе собственных групп, не используя существующие идентификационные системы, например, Windows. Аутентификация средствами Windows позволила бы значительно упростить администрирование. При этом система управления контентом могла бы использовать операционную систему локального компьютера или контролера домена для проверки и сопровождения учетной записи пользователя.
Представление информации создается на основе данных, а также предпочтений конкретного пользователя. Персонификация достигается путем использование профилей специальных записей, в которых хранится информация, специфичная для конкретных пользователей.
В самом общем виде архитектуру систем управления Web-контентом можно представить следующим образом (рисунок 2.3).
Рисунок 2.3 Архитектура CMS
В основе данной технологии лежит трехзвенная архитектура клиент/сервер. Такая архитектура разбивает процесс обработки данных между клиентом, сервером приложений и хранилищем данных. В отличие от традиционной двухзвенной архитектуры здесь присутствует сервер приложений как промежуточное звено между клиентом и хранилищем данных.
В системе присутствует два хранилища. В первом (обычно реляционная СУБД) хранятся все данные, которые публикуются на сайте. Во втором (обычно файловая система) хранятся элементы представления шаблоны, графические изображения и т.д.
Получая запрос, сервер приложений обрабатывает его, связываясь с хранилищем данных, в каком бы месте необходимые данные не находились. Клиент лишь получает результат в виде HTML-файла. Таким образом, сервер приложений является стандартизованной платформой для динамической доставки контента и построения основных приложений. Серверов приложений может быть много, а связь с ними происходит через Web-сервер.
Рассмотрим пример реализации архитектуры системы управления контентом на примере CMS DotNetNuke 4 (рисунок 2.4).
Рисунок 2.4 Архитектура CMS на примере DNN
Ядро системы управления контентом представляет собой динамический сайт, созданный на языке Visual Basic.NET с использованием технологи и ASP.NET 2.0. Поэтому для ее функционирования требуется web-сервер с поддержкой этой технологии. В качестве такого сервера может выступать Microsoft Internet Information Services 5 или 6. В качестве хранилища данных CMS DotNetNuke 4 может использовать файловую систему web-сервера и базу данных под управлением СУБД Microsoft SQL Server. Поддерживаются все варианты поставки этой СУБД и версии 2000/2005. СУБД может функционировать как в операционной системе web-сервера, так и на удаленном компьютере. В первом случае возможно использование бесплатных версий MS SQL Server Microsoft Desktop Engine и Microsoft SQL Server Express 2005.
Для реализации модулей управления системы управления сайтами потребуется спроектировать и разработать пользовательские элементы управления, которые будут являться отдельными независимыми модулями системы. В проекте, элементы управления будут разделены на три категории.
Работа модулей управления системы реализована следующим образом: существует две страницы, страница ввода и страница вывода. В зависимости от того, какой модуль меню выберет пользователь, на страницы будут загружаться соответствующие пользовательские элементы управления (рисунок 2.5).
Рисунок 2.5 Паттерн проектирования Carrier-Rider-Mapper
Общая архитектура продукта построена на паттерне проектирования Carrier-Rider-Mapper.
Поток информации от носителя к клиенту (считывание): Carrier -> Reader -> Scanner->Client. |
Рисунок 2.6 Архитектура продукта
Модульность, API, CMF:
Публичный раздел:
Компоненты:
Составные блоки сайта:
Многостраничные компоненты (рисунок 2.7):
Рисунок 2.7 Набор взаимосвязанных страниц
Недостатки реализации с помощью обычных компонентов:
Недостатки реализации одним большим компонентом:
Модули пользовательской части приложения состоят из страниц и элементов управления. По количеству их гораздо меньше модулей управления системы.
Страницы системы:
MasterPage базовая страница приложения. Данную страницу наследуют (реализуют) все страницы пользовательской части. В этот контейнер помещаются необходимые контролы или модули в зависимости от страницы на которую заходит посетитель, то что необходимо вставить определяет PageModule.
Default.aspx стартовая страница приложения.
Элементы управления и модули системы:
BannerBlock.ascx банерный блок.
LastNews.ascx блок из последних новостей.
SearchControl.ascx элемент управления для поиска по сайту.
SiteMapControl.ascx элемент управления отображает карту сайта по связям страниц.
SubscriptionControl.ascx модуль подписки на новости.
VoteQuestionControl.ascx модуль для проведения опросов.
Feedback.aspx форма обратной связи.
ViewArticles.aspx блок, куда выводиться содержание статьи.
ViewNews.aspx блок, куда выводиться содержание новости.
Error.aspx блок, куда выводиться содержание ошибки.
Print.aspx версия печати для статьи или новости.
Login.aspx форма авторизации.
Ниже представлены алгоритмы базовых моделей системы.
Интерфейс необходимый для всех маппируемых сущностей. Его реализуют все интерфейсы, поэтому напрямую от него наследоваться не следует.
Имя объекта.
Cущность.
internal sealed partial class Essence : Entity, IComparable<Essence>, IDisposable, IKey, IName
{
Название столбца для данной сущности (по умолчанию "Name").
#region Свойство ColumnName
public string ColumnName
{
get
{
if (_ColumnName == string.Empty)
return "Name";
return _ColumnName;
}
}
[Mapped]
private string _ColumnName;
#endregion
Ссылка, ведущая с рабочего стола (по умолчанию "Records.aspx?table=" + _Key).
#region Свойство URL
public string URL
{
get
{
if (_URL == string.Empty)
return "Records.aspx?table=" + _Key;
return _URL;
}
}
[Mapped]
private string _URL;
#endregion
Является ли данная сущность мапируемой сущностью.
#region Свойство IsEntity
public bool IsEntity
{
get
{
return ((_Key != string.Empty) || (_URL == string.Empty));
}
}
#endregion
Будут ли отображены объекты сущности на рабочем столе.
#region Свойство IsDesktop
public bool IsDesktop
{
get
{
if (_IsEnabled == false)
return false;
return _IsDesktop;
}
set { _IsDesktop = value; }
}
[Mapped]
private bool _IsDesktop;
#endregion
Возвращает true, если пользователь с ID = userID имеет доступ к данной сущности.
public bool GetAccess(int userID)
{
if (userID == Auth.AdminID)
return true;
List<User2Essence> AL = App.Storage.GetList<User2Essence>();
foreach (User2Essence Item in AL)
if ((Item.EssenceID == _ID) && (Item.UserID == userID))
return true;
return false;
}
#region Реализация IKey
public string Key
{
get
{
if (_Key == string.Empty)
return _Name;
return _Key;
}
set { _Key = value; }
}
[Mapped]
private string _Key;
#endregion
}
}
namespace Cleopatra.Objects
{
Элемент алфавитного указателя.
[Logable]
public sealed partial class Index : Entity, IComparable<Index>, IName, IRow, ISearchable
{
Конструктор.
public Index() { }
Текст. HTML код.
#region Свойство Text
public string Text
{
get { return _Text; }
set { _Text = value; }
}
[Mapped]
private string _Text;
#endregion
#region Реализация IName
public string Name
{
get { return _Name; }
set { _Name = value; }
}
[Mapped]
private string _Name;
#endregion
#region Реализация IDate
public DateTime DateModify
{
get { return _DateModify; }
set { _DateModify = value; }
}
[Mapped]
private DateTime _DateModify;
#endregion
#region Реализация ISearchable
string[] ISearchable.Data
{
get
{
return new string[] { _Name, _Text };
}
}
string ISearchable.URL
{
get
{
return string.Format("view{0}.aspx?ID={1}", this.GetType().Name, _ID);
}
}
#endregion
#region Реализация IComparable
int IComparable<Index>.CompareTo(Index other)
{
return _Name.CompareTo(other._Name);
}
#endregion
}
}
Т.к. объем всех алгоритмов модулей управления системы очень велик в данной главе будут описаны только основные модули.
Модуль редактирования статей.
namespace Cleopatra.UI.CMS
{
Страница редактирования Article.
public partial class EditArticle : TranslateblePage
{
protected BoxText tbTags;
protected BoxText tbName;
protected BoxHTML tbText;
protected Label lbKey;
protected CheckBox cbProtect;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindData();
}
private void BindData()
{
cbProtect.Visible = (Auth.CurrentUserID == Auth.AdminID);
int ID = FooID;
if (ID == -1)
return;
Article Node = App.Storage.GetItem<Article>(ID);
tbName.Value = Node.Name;
tbText.Value = Node.Text;
tbTags.Value = Node.Tags;
lbKey.Text = Node.Key;
cbProtect.Checked = Node.IsProtect;
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (this.IsValid == false)
return;
Article Node;
int ID = FooID;
if (ID == -1)
Node = new Article();
else
Node = App.Storage.GetItem<Article>(ID);
Node.Name = tbName.Value;
Node.Text = tbText.Value;
Node.Tags = tbTags.Value;
Node.IsProtect = cbProtect.Checked;
if (Node.ID == 0)
{
Node.Key = GetUnique(TextJet.Translit(Node.Name, 36).ToLower(), 0);
App.Storage.Create(Node);
Page NewPage = new Page();
NewPage.Content = Cleopatra.Services.ContentType.Article;
NewPage.Key = Node.Key;
NewPage.Name = Node.Name;
App.Storage.Create(NewPage);
Добавляет доступ для всех пользователей.
User2Page Up;
List<User> AL = App.Storage.GetList<User>();
foreach (User Item in AL)
{
Up = new User2Page();
if
(Item.Name.Equals(Auth.GUEST_NAME,StringComparison.OrdinalIgnoreCase)==true)
Up.UserID = Auth.GuestID;
else
Up.UserID = Item.ID;
Up.PageID = NewPage.ID;
App.Storage.Create(Up);
}
}
else
App.Storage.Update(Node);
string RedirectURL = "Records.aspx?table=" + typeof(Article).Name;
Response.Redirect(RedirectURL);
}
Возвращает уникальный URL для статьи, на уровне сайта.
private string GetUnique(string value, int postNum)
{
string NewName = value;
if (postNum > 0)
NewName += postNum.ToString();
Проверка: нет ли уже статьи с таким Key.
List<Article> Arts = App.Storage.GetList<Article>();
foreach (Article Item in Arts)
if (Item.Key == NewName)
return GetUnique(value, ++postNum);
Проверка: нет ли уже подобного модуля.
string Folder = Server.MapPath("~/") + App.FOLDER_MODULES;
foreach (string Item in Directory.GetFiles(Folder, "*.aspx"))
{
if (NewName == Path.GetFileNameWithoutExtension(Item).ToLower())
return GetUnique(value, ++postNum);
}
return NewName;
}
Для прав доступа.
#region Свойство EssenceType
public override Type EssenceType
{
get { return typeof(Article); }
}
#endregion
}
}
Модуль управления правами доступа и учетными записями пользователей.
namespace Cleopatra.UI.CMS
{
Страница редактирования User.
public partial class EditUser : TranslateblePage
{
protected BoxText tbName;
protected BoxText tbPassword;
protected BoxText tbCopy;
protected HtmlContainerControl trCMS;
protected HtmlContainerControl trPages;
protected HtmlContainerControl trPassword;
protected System.Web.UI.WebControls.Label lbExample;
protected System.Web.UI.WebControls.Label lbError;
protected System.Web.UI.WebControls.CheckBox cbProtect;
protected System.Web.UI.WebControls.DataList dlCMS;
protected System.Web.UI.WebControls.DataList dlPages;
private const string DESKTOP = "Desktop";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindData();
}
private void BindData()
{
cbProtect.Visible = (Auth.CurrentUserID == Auth.AdminID);
tbPassword.tb.TextMode = System.Web.UI.WebControls.TextBoxMode.Password;
tbCopy.tb.TextMode = System.Web.UI.WebControls.TextBoxMode.Password;
lbExample.Text = PasswordGenerator.Generate(10);
int ID = FooID;
User Node = App.Storage.GetItem<User>(ID);
// Поправка на гостя
if (ID != -1)
{
if (Node.Name == Auth.GUEST_NAME)
{
ID = Auth.GuestID;
tbName.tb.Attributes["readonly"] = "readonly";
trPassword.Visible = false;
tbCopy.Visible = false;
}
tbCopy.IsRequire = false;
tbPassword.IsRequire = false;
}
// Собираем права
if (Auth.CurrentUserID == Auth.AdminID)
{
List<AccessNode> Accessp = new List<AccessNode>();
List<Page> ALp = App.Storage.GetList<Page>();
foreach (Page Item in ALp)
{
// Исключения
if (Item.Key == "error")
continue;
Accessp.Add(new AccessNode(Item, ID));
}
dlPages.DataSource = Accessp;
dlPages.DataBind();
if (ID != Auth.GuestID)
{
List<AccessNode> Accesse = new List<AccessNode>();
List<Essence> ALe = App.Storage.GetList<Essence>();
foreach (Essence Item in ALe)
{
if (Item.IsEnabled == true)
{
// Исключения
if (Item.Name == DESKTOP)
continue;
Accesse.Add(new AccessNode(Item, ID));
}
}
dlCMS.DataSource = Accesse;
dlCMS.DataBind();
}
else
trCMS.Visible = false;
}
else
{
trCMS.Visible = false;
trPages.Visible = false;
}
if (ID == -1)
return;
tbName.Value = Node.Name;
cbProtect.Checked = Node.IsProtect;
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (this.IsValid == false)
return;
if (tbPassword.tb.Text != tbCopy.tb.Text)
{
lbError.Visible = true;
return;
}
User Node;
int ID = FooID;
if (ID == -1)
Node = new User();
else
Node = App.Storage.GetItem<User>(ID);
if (tbPassword.tb.Text != string.Empty)
Node.Password = tbPassword.tb.Text;
Node.Name = tbName.Value;
Node.IsProtect = cbProtect.Checked;
if (ID == -1)
App.Storage.Create(Node);
else
App.Storage.Update(Node);
// Обновляем права сайта
if (Node.Name == Auth.GUEST_NAME)
ID = Auth.GuestID;
else
ID = Node.ID;
if (FooID != 0)
{
List<IEntity> Deletes = new List<IEntity>();
List<User2Page> ALup = App.Storage.GetList<User2Page>();
foreach (User2Page Item in ALup)
if (Item.UserID == ID)
Deletes.Add(Item);
if (ID != Auth.GuestID)
{
List<User2Essence> ALue = App.Storage.GetList<User2Essence>();
foreach (User2Essence Item in ALue)
if (Item.UserID == ID)
Deletes.Add(Item);
}
// Удаляем устаревшие права
foreach (IEntity Item in Deletes)
App.Storage.Delete(Item as Entity);
}
foreach (System.Web.UI.WebControls.DataListItem Item in dlPages.Items)
{
System.Web.UI.WebControls.CheckBox cbAccess = (Item.FindControl("cbAccess") as System.Web.UI.WebControls.CheckBox);
if (cbAccess.Checked)
{
User2Page Up = new User2Page();
Up.UserID = ID;
Up.PageID = (int)dlPages.DataKeys[Item.ItemIndex];
App.Storage.Create(Up);
}
}
// Обновляем парва на страницы CMS
if (ID != Auth.GuestID)
{
bool IsAddDesktop = false;
foreach (System.Web.UI.WebControls.DataListItem Item in dlCMS.Items)
{
System.Web.UI.WebControls.CheckBox cbAccess = (Item.FindControl("cbAccess") as System.Web.UI.WebControls.CheckBox);
if (cbAccess.Checked)
{
User2Essence Ue = new User2Essence();
Ue.UserID = ID;
Ue.EssenceID = (int)dlCMS.DataKeys[Item.ItemIndex];
App.Storage.Create(Ue);
IsAddDesktop = true;
}
}
// Если хотя бы одна страница CMS добавлена, необходимо добавить и рабочий стол
if (IsAddDesktop == true)
{
List<Essence> AL = App.Storage.GetList<Essence>();
foreach (Essence Item in AL)
{
if (Item.Name == DESKTOP)
{
User2Essence Ue = new User2Essence();
Ue.UserID = ID;
Ue.EssenceID = Item.ID;
App.Storage.Create(Ue);
break;
}
}
}
}
string RedirectURL = "Records.aspx?table=" + typeof(User).Name;
Response.Redirect(RedirectURL);
}
Для прав доступа.
#region Свойство EssenceType
public override Type EssenceType
{
get { return typeof(User); }
}
#endregion
Определяет права доступа.
/// <remarks>Нужен только для DataBinding</remarks>
private class AccessNode
{
Конструктор.
/// <param name="p">Страница</param>
/// <param name="userID">ID пользователя</param>
public AccessNode(Page p, int userID)
{
_ID = p.ID;
_Name = p.Name;
if (userID == -1)
return;
List<User2Page> AL = App.Storage.GetList<User2Page>();
foreach (User2Page Item in AL)
{
if ((Item.PageID == p.ID) && (Item.UserID == userID))
{
_IsRight = true;
break;
}
}
}
Конструктор.
/// <param name="e">Сущность CMS</param>
/// <param name="userID">ID пользователя</param>
public AccessNode(Essence e, int userID)
{
_ID = e.ID;
_Name = e.Name;
_IsRight = e.GetAccess(userID);
}
ID.
#region Свойство ID
public int ID
{
get { return _ID; }
set { _ID = value; }
}
private int _ID;
#endregion
Название.
#region Свойство Name
public string Name
{
get { return _Name; }
set { _Name = value; }
}
private string _Name;
#endregion
Доступ.
#region Свойство IsRight
public bool IsRight
{
get { return _IsRight; }
set { _IsRight = value; }
}
private bool _IsRight;
#endregion
}
}
}
Класс страниц сайта.
namespace Cleopatra.UI.Site
{
public abstract class Module : System.Web.UI.Page
{
Параметр по умолчанию
protected int FooID
{
get
{
int Result = 0;
if (int.TryParse(Request["ID"], out Result) == false)
FactoryUI.GoError(ErrorType.ParamNotValid);
return Result;
}
}
Здесь происходит добавление ссылок на используемые "js" и "css".
protected override void OnLoad(EventArgs e)
{
FactoryUI.AddReference(this);
base.OnLoad(e);
}
Здесь происходит вставка заголовков, если они не были вставлены в наследнике.
/// </summary>
protected override void OnLoadComplete(EventArgs e)
{
if (this._IsChangeTitle == true)
return;
string value = this.Context.Items[CashKeys.PAGE_NAME].ToString();
this.Title = value;
this.Label = value;
}
Заголовок в интерфейсе.
#region Свойство Label
protected string Label
{
get
{
if (this.Master != null)
return (this.Master as Cleopatra.UI.Site.Master).Label;
else
return null;
}
set
{
if (this.Master != null)
(this.Master as Cleopatra.UI.Site.Master).Label = value;
this._IsChangeTitle = true;
}
}
#endregion
Заголовок.
#region Свойство Title
public new string Title
{
get
{
return _Title;
}
set
{
_Title = value;
base.Title += " | " + _Title;
this._IsChangeTitle = true;
}
}
private string _Title;
#endregion
Строка ключевых слов.
#region Свойство Tags
public string Tags
{
set
{
HtmlMeta HM = new HtmlMeta();
HM.Name = "keywords";
HM.Content = value;
this.Header.Controls.Add(HM);
}
}
#endregion
Флаг, был ли изменён заголовок страницы.
private bool _IsChangeTitle;
Возвращает короткую строку obj, длинной length.
/// <param name="objStr">Исходная строка</param>
/// <param name="length">Длинна строки выходной строки</param>
/// <remarks>Используется в связке с методом Eval()</remarks>
protected static string Cut(object objStr, int length)
{
return FactoryUI.Cut(objStr, length);
}
Возвращает текст динамического блока (Embade) по ключу key.
protected static string GetHTML(string key)
{
return Embade.GetHTML(key);
}
}
}
namespace Cleopatra.UI.Site
{
Главная страница.
public partial class Default : System.Web.UI.Page
{
Возвращает текст динамического блока (Embade) по ключу key
protected static string GetHTML(string key)
{
return Embade.GetHTML(key);
}
}
}
namespace Cleopatra.UI.Site
{
public partial class Master : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
this.Context.RewritePath(this.Request.RawUrl.Replace("/" + App.FOLDER_MODULES, null));
}
Возвращает текст динамического блока (Embade) по ключу key.
public static string GetHTML(string key)
{
return Embade.GetHTML(key);
}
Заголовок отображаемый на странице.
#region Свойство Label
public string Label
{
get { return _Label; }
set { _Label = value; }
}
private string _Label;
#endregion
}
}
namespace Cleopatra.UI.Site
{
Форма обратной связи.
public partial class Feedback : Module
{
protected Label lbResult;
protected TextBox tbName;
protected TextBox tbMail;
protected TextBox tbText;
protected HtmlContainerControl tblForm;
protected HtmlContainerControl trRecipient;
protected DropDownList ddlRecipients;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
this.BindData();
}
private void BindData()
{
List<Recipient> AL = App.Storage.GetList<Recipient>();
trRecipient.Visible = (AL.Count > 1);
if (trRecipient.Visible == true)
{
ddlRecipients.DataSource = AL;
ddlRecipients.DataBind();
foreach (Recipient Item in AL)
{
if (Item.IsDefault == true)
{
ddlRecipients.SelectedValue = Item.ID.ToString();
break;
}
}
}
}
protected void btnSend_Click(object sender, EventArgs e)
{
string To;
List<Recipient> AL = App.Storage.GetList<Recipient>();
switch (AL.Count)
{
case 0:
To = Settings.Get("mailadmin");
break;
case 1:
To = AL[0].Mail;
break;
default:
Recipient Node = App.Storage.GetItem<Recipient>(Converter.GetInteger(ddlRecipients.SelectedValue));
To = Node.Mail;
break;
}
Dictionary<string, string> Dic = new Dictionary<string, string>();
Dic.Add("Name", tbName.Text.Trim());
Dic.Add("Mail", tbMail.Text.Trim());
Dic.Add("Text", tbText.Text.Trim());
string Pattern = GetHTML("body_feedback");
string Body = TextJet.Format(Pattern, Dic);
bool Result = MailRobot.Send(Settings.Get("feedbacksubject"), tbMail.Text.Trim().ToLower(), To, Body);
if (Result == true)
{
lbResult.Text = Language.MsgFeedbackSuccess;
//lbResult.CssClass = string.Empty;
}
else
{
lbResult.Text = Language.MsgFeedbackFailure;
lbResult.CssClass = "error";
}
tblForm.Visible = false;
lbResult.Visible = true;
}
}
}
namespace Cleopatra.UI.Site
{
Страница статьи.
public partial class ViewArticle : Module
{
protected HyperLink hlPrint;
protected HtmlContainerControl tdMain;
protected void Page_Load(object sender, EventArgs e)
{
//if (!IsPostBack)
BindData();
}
private void BindData()
{
string Key = Context.Items[CashKeys.ARTICLE_KEY].ToString();
Article Art = App.Storage.GetItem<Article>(Key);
if (Art == null)
return;
this.Tags = Art.Tags;
this.Title = Art.Name;
this.Label = Art.Name;
this.tdMain.InnerHtml = Art.Text;
if (hlPrint != null)
hlPrint.NavigateUrl = "~/Print.aspx?ID=" + Art.ID.ToString();
}
}
}
namespace Cleopatra.UI.Site
{
Карта сайта.
public partial class Sitemap : Module
{
protected TreeView tvMap;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindData();
}
private void BindData()
{
int RootID = Converter.GetInteger(this.Request["ID"], 0);
Generate(tvMap.Nodes, RootID);
tvMap.ExpandAll();
}
Метод рекурсивного обхода, заполнения меню.
/// <param name="col">Коллекция элементов меню</param>
/// <param name="nodeID">ID узла, которым коллекция col, будет заполнена</param>
private static void Generate(TreeNodeCollection col, int nodeID)
{
List<MenuNode> AL = App.Storage.GetList<MenuNode>();
TreeNode Child;
foreach (MenuNode Item in AL)
{
if (Item.ParentID == nodeID)
{
Child = new TreeNode(Item.Name, null, null, Item.URL, null);
if (Item.URL.StartsWith(@"http://", StringComparison.OrdinalIgnoreCase) == false)
Child.NavigateUrl = "~/" + Child.NavigateUrl;
col.Add(Child);
Generate(Child.ChildNodes, Item.ID);
}
}
}
}
}
При расчете экономической эффективности разработки программного обеспечения необходимо сопоставить затраты на решение задачи при ручном методе ее решения с затратами, связанными с ее автоматизацией. В том случае, если разрабатываемая задача внедряется взамен уже функционирующей или она представляет собой модификацию существующей задачи, необходимо осуществить сравнение затрат на создание и функционирование старой и новой задачи.
Определение годового экономического эффекта от сокращения ручного труда при обработке информации производится в описанной ниже последовательности.
Единовременные капитальные затраты представляют собой цену программного продукта (ПП). Различают оптовую и отпускную цену программы. Все расчеты между покупателем и продавцом продукции, к числу которой относят и программные продукты, производятся на основе отпускных цен. В настоящее время в соответствии с законодательством РБ в отпускную цену наряду с оптовой ценой включается налог на добавленную стоимость.
Определяющим фактором оптовой цены разработки является трудоемкость создания ПП.
Трудоемкость разработки программного продукта (ПП) может быть определена укрупненным методом. При этом необходимо воспользоваться формулой:
, (4.1)
где ТОА трудоемкость подготовки описания задачи и исследования алгоритма решения;
ТБС трудоемкость разработки блок-схемы алгоритма;
ТП трудоемкость программирования по готовой блок-схеме;
ТОТЛ трудоемкость отладки программы на ЭВМ;
ТДР трудоемкость подготовки документации по задаче в рукописи;
ТДО трудоемкость редактирования, печати и оформления документации по задаче.
Составляющие приведенной формулы определяются, в свою очередь, через условное число операторов Q в разрабатываемом ПП по формуле:
(4.2)
где q число операторов в программе (q=2200);
С коэффициент сложности программы (С=1,1);
p коэффициент коррекции программы в ходе ее разработки (р=0,1);
Коэффициент сложности программы С характеризует относительную сложность программ задачи по отношению к так называемой типовой задаче, сложность которой принята за единицу. Значение коэффициента определяется на базе экспертных оценок.
Коэффициент коррекции программ p характеризует увеличение объема работ за счет внесения изменений в алгоритм и программу, изменения состава и структуры информации, а также уточнений, вносимых разработчиком программы для улучшения ее качества без изменения постановки задачи.
Q=2200 . 1,1 . (1+0,1)=2662 операторов
Тогда составляющие трудоемкости разработки программы определятся по формулам:
, (4.3)
, (4.4)
, (4.5)
, (4.6)
, (4.7)
, (4.8)
где W коэффициент увеличения затрат труда вследствие недостаточного или некачественного описания задачи (W = 1,3);
К коэффициент квалификации разработчика алгоритмов и программ (при стаже работы до двух лет К=0,8, при стаже от двух до трех лет К=1,0, при стаже от трех до пяти лет К=1,1...1,2 ,при стаже от пяти до семи лет К=1,3...1,4 , при стаже свыше семи лет К= 1,5...1,6.) (К=1,2);
TОА=(2662 . 1,3) / (80 . 1,2) = 36,05 чел-ч
TВС=2662 / (22,5 . 1,2) = 98,59 чел-ч
TП=2662 / (22,5 . 1,2) = 98,59 чел-ч
TОТЛ=2662 / (4,5 . 1,2) = 492,96 чел-ч
TДР=2662 / (17,5 . 1,2) = 126,76 чел-ч
ТДО=0,75 . 126,76 = 95,07
Определим трудоемкость разработки ПП:
ТРЗ=36,05 + 98,59+98,59+492,96+126,76+95,07=948,02 чел-ч
Для определения себестоимости создания программного продукта необходимо определить затраты на заработную плату разработчика по формуле:
(4.9)
где ТРЗ трудоемкость разработки программного продукта, чел-ч;
tЧР среднечасовая ставка работника, осуществлявшего разработку программного продукта, руб.;
q коэффициент, учитывающий процент премий и доплат к тарифному фонду в организации-разработчике (q=0,35);
а коэффициент, учитывающий дополнительную заработную плату (а=0,15);
b коэффициент, учитывающий начисления на заработную плату, включая отчисления в фонд социальной защиты населения, на содержание учреждений здравоохранения, другие фонды, чрезвычайный чернобыльский налог и другие (b=0,4).
Среднечасовая ставка работника определяется исходя из Единой тарифной системы оплаты труда в Республике Беларусь по следующей формуле:
, (4.10)
где Q1 среднемесячная заработная плата работника 1 разряда, руб (Q1=70000)
kТ тарифный коэффициент работника соответствующего разряда (kТ=3,08);
167,4 нормативное количество рабочих часов в месяце;
tЧР=(70 000 . 3,08) / 167,4 = 1 287,93 руб.
Определим затраты на заработную плату разработчика:
ЗРЗ=948,02 . 1 287,93 . (1 + 0,35) . (1 + 0,15) . (1 + 0,4) = 2 653 807,42 руб.
В себестоимость разработки ПП включаются также затраты на отладку ПП в процессе его создания. Для определения их величины необходимо рассчитать стоимость машино-часа работы ЭВМ, на которой осуществлялась отладка. Данная величина соответствует величине арендной платы за один час работы ЭВМ.
Затраты на отладку программы определяются по формуле:
, (4.11)
где ТОТЛ трудоемкость отладки программы, час (определяется по формуле 5.6);
SМЧ стоимость машино-часа работы ЭВМ, руб./час (определяется по формуле 5.15);
ЗОТ = 492,96 . 296,51 = 146 167,57 руб.
Себестоимость разработки ПП определяется по формуле:
, (4.12)
где F коэффициент накладных расходов проектной организации без учета эксплуатации ЭВМ (F=1,15);
СПР=2 350 519 . 1,15 + 146 168 = 2 849 265 руб.
Определение оптовой и отпускной цены ПП. Оптовая цена складывается из себестоимости создания программного продукта и плановой прибыли на программу. Оптовая цена ПП определяется по формуле:
, (4.13)
где ПР плановая прибыль на программу, руб.
Плановая прибыль на программу определяется по формуле:
, (4.14)
где СПР себестоимость программы;
НП норма прибыли проектной организации (НП = 0,25);
ПР=2 849 265 . 0,25 = 712 316 руб.
Определим оптовую цену ПП:
ЦО=2 849 265 + 712 316 = 3 561 581 руб.
Отпускная цена программы определяется по формуле:
,
где ЦО оптовая цена программы, руб.;
ЗРЗ затраты на заработную плату разработчиков программы;
ПР размер плановой прибыли на программу;
НДОБ -ставка налога на добавленную стоимость % (НДОБ = 18).
Определим отпускную цену ПП:
ЦПР=3 561 581 + (2 350 519 + 712 316) . 0,18 = 4 112 891 руб.
Определение стоимости машино-часа работы ЭВМ (для разработанного ПП). Стоимость машино-часа работы ЭВМ определяется по формуле:
, (4.15)
где СЭ расходы на электроэнергию за час работы ЭВМ, руб.;
АЭВМ годовая величина амортизационных отчислений на реновацию ЭВМ;
РЭВМ годовые затраты на ремонт и техническое обслуживание ЭВМ, руб.;
АПЛ годовая величина амортизационных отчислений на реновацию производственных площадей, занимаемых ЭВМ, руб.;
РПЛ годовые затраты на ремонт и содержание производственных площадей, руб.;
НН годовая величина налога на недвижимость, руб.;
ФЭВМ годовой фонд времени работы ЭВМ, час.
Расходы на электроэнергию за час работы ЭВМ определяются по формуле:
, (4.16)
где NЭ установленная мощность электродвигателя ЭВМ, кВт (NЭ=0,42);
kИС коэффициент использования энергоустановок по мощности (kИС = 0,9);
ЦЭ стоимость 1 кВт-часа электроэнергии, руб. (ЦЭ=65);
Годовая величина амортизационных отчислений на реновацию ЭВМ определяется по формуле:
, (4.17)
где ЦЭВМ цена ЭВМ на момент ее выпуска, руб. (ЦЭВМ=500 . 2 200 =1 100 000,00 руб.);
kУ коэффициент удорожания ЭВМ ( зависит от года выпуска) (kУ=1);
kМ коэффициент, учитывающий затраты на монтаж и транспортировку ЭВМ (kМ = 1,05);
НАЭВМ норма амортизационных отчислений на ЭВМ, % (НАЭВМ = 10);
ЦБЭВМ балансовая стоимость ЭВМ, руб (ЦБЭВМ=1 100 000 . 1 . 1,05=1 155 000 руб.);
АЭВМ=1 155 000 . 10 / 100 = 115 500 руб.
Годовые затраты на ремонт и техническое обслуживание ЭВМ укрупнено определяются по формуле:
, (4.18)
где kРО коэффициент, учитывающий затраты на ремонт и техническое обслуживание ЭВМ, в том числе затраты на запчасти, зарплату ремонтного персонала (kРО = 0,1);
Годовая величина амортизационных отчислений на реновацию производственных площадей, занятых ЭВМ определяется по формуле:
, (4.19)
где ЦБПЛ балансовая стоимость площадей, руб;
НАПЛ норма амортизационных отчислений на производственные площади, % (НАПЛ =1,2);
SЭВМ площадь, занимаемая ЭВМ, кв.м. (SЭВМ=2);
kД коэффициент, учитывающий дополнительную площадь (kД =3);
ЦПЛ цена 1 кв.м. производственной площади, руб (ЦПЛ=400000);
АПЛ = 2 . 3 . 400 000 . 1,2 / 100 = 28 800 руб.
Годовые затраты на ремонт и содержание производственных площадей укрупнено могут быть определены по формуле:
, (4.20)
где kРЭ коэффициент, учитывающий затраты на ремонт и эксплуатацию производственных площадей (kРЭ = 0,05);
РПЛ = 2 . 3 . 400 000 . 0,05 = 120 000 руб.
Величина налога на недвижимость определяется по формуле:
, (4.21)
где СНН ставка налога на недвижимость, % (СНН = 1);
Годовой фонд времени работы ЭВМ определяется, исходя из режима ее работы, и рассчитывается по формуле:
, (4.22)
где tСС среднесуточная фактическая загрузка ЭВМ, час (tСС=8);
ТСГ среднее количество дней работы ЭВМ в год, дней (ТСГ=250);
ФЭВМ = 8 . 250 = 2 000 час.
Определим стоимость машино-часа работы ЭВМ:
SМЧ=88,83 + (115 500 + 115 500 + 28 800 + 120 000 + 35 550) / 2 000 = 296,51 руб
Внедрение ПП может обеспечить пользователю ожидаемый прирост прибыли за счет сокращения трудоемкости решения задачи, являющейся предметом автоматизации и, как результат, снижения текущих затрат, связанных с решением данной задачи.
В том случае, если внедряемый ПП заменяет ручной труд, то производится сопоставление текущих затрат, связанных с решением задачи в ручном режиме и автоматизированном. В том случае, если разрабатываемая задача внедряется взамен уже функционирующей или она представляет собой модификацию существующей задачи, необходимо осуществить сравнение затрат на создание и функционирование старой и новой задачи.
Годовые эксплуатационные расходы при ручной обработке информации (текущем варианте решения задачи) определяются по формуле
(4.23)
где Тр трудоемкость разового решения задачи, чел-ч (Тр=3);
tчр среднечасовая ставка работника, осуществляющего обслуживание ПП, руб (tчр=1 287,93 руб);
k периодичность решения задачи в течение года, раз/год (k=500);
q коэффициент, учитывающий процент премий (q=2,75);
а коэффициент, учитывающий дополнительную заработную плату (a=0,15);
b коэффициент, учитывающий начисления на заработную плату (b=0,4).
ЗР = 3 . 500 . 1287,93 . (1 + 2,75) . (1 + 0,15) . (1 + 0,4) = 11 663 816 руб.
Для расчета годовых текущих затрат, связанных с эксплуатацией ПП, необходимо определить время решения данной задачи на ЭВМ.
Время решения задачи на ЭВМ определяется по формуле:
, (4.24)
где ТВВ время ввода в ЭВМ исходных данных, необходимых для решения задачи, мин;
ТР время вычислений, мин (ТР=1);
ТВЫВ время вывода результатов решения задачи (включая время распечатки на принтере), мин (ТВЫВ=1);
dПЗ коэффициент, учитывающий подготовительно-заключительное время (dПЗ = 0,175).
Время ввода в ЭВМ исходных данных может быть определено по формуле:
, (4.25)
где КZ среднее количество знаков, набираемых с клавиатуры при вводе исходных данных (КZ=500);
HZ норматив набора 100 знаков, мин (HZ = 6);
ТВВ = 500 . 6 / 100 = 30 мин.
Определим время решения задачи на ЭВМ:
ТЗ = (30 +1 + 1) . (1 + 0,175) / 60 = 0,63 ч.
Затраты на заработную плату пользователя ПП определяются по формуле:
(4.26)
где ТЗ время решения задачи на ЭВМ, час;
tПР среднечасовая ставка работника пользователя программы, руб. (определяется аналогично ставке работника, осуществляющего ручной расчет) (tпр=1 287,93 руб);
k периодичность решения задачи в течение года, раз/год (k=500);
q коэффициент, учитывающий процент премий (q=2,75);
а коэффициент, учитывающий дополнительную заработную плату (a=0,15);
b коэффициент, учитывающий начисления на заработную плату (b=0,4).
ЗП = 0,18 . 500 . 1287,93 . (1 + 2,75) . (1 + 0,15) . (1 + 0,4) = 2 449 401 руб.
Затраты на оплату аренды ЭВМ для решения задачи определяются по следующей формуле:
, (4.27)
где SМЧ стоимость одного машино-часа работы ЭВМ, которая будет использоваться для решения задачи, руб.
Годовые текущие затраты, связанные с эксплуатацией задачи, определяются по формуле
, (4.28)
где ЗП затраты на заработную плату пользователя программы;
ЗА затраты на оплату аренды ЭВМ при решении задачи.
ЗТ=2 449 401 + 342546 = 2 791 947 руб.
Сравнительная характеристика по основным показателям решений по управлению сайтами представлена в таблице 4.1.
Таблица 4.1 Сравнительная характеристика решений управления сайтами
Наименование показателя |
Коэффициент весомости, |
Количество баллов, |
|
Текущее решение |
Разработанный программный модуль |
||
1. Качество товара |
|||
1.1 Назначение |
0,08 |
8 |
8 |
1.2. Надежность |
0,25 |
7 |
7 |
1.3. Универсальность |
0,2 |
7 |
10 |
1.4. Безопасность |
0,15 |
8 |
8 |
1.5. Стоимость |
0,15 |
5 |
9 |
5,74 |
6,94 |
По данным табл. 4.1 построим радар конкурентоспособности (рисунок 4.1):
Рисунок 4.1 Радар конкурентоспособности решений управления сайтами
Для определения конкурентоспособности используется отношение:
(4.29) |
где количество баллов по i-му показателю разработанного ПС;
количество баллов по i-му показателю ПС-конкурента;
коэффициент весомости по i-му показателю.
Таким образом, получаем конкурентоспособность 1,2, что больше единицы и, следовательно, предложенное решение конкурентоспособно.
Ожидаемый прирост прибыли в результате внедрения задачи взамен ручного ее расчета укрупнено может быть определен по формуле:
, (4.30)
где СНП ставка налога на прибыль, % (СНП=24);
ПУ = (11 663 816 2 791 947) . (1 0,24) = 6 742 620 руб./год.
Для определения годового экономического эффекта от разработанной программы необходимо определить суммарные капитальные затраты на разработку и внедрения программы по формуле:
, (4.31)
где КЗ капитальные и приравненные к ним затраты;
ЦПРП отпускная цена программы для конкретного пользователя.
Капитальные и приравненные к ним затраты в случае, если необходимо приобретение новой ЭВМ для решения комплекса задач, в который входит рассматриваемая, по формуле:
, (4.32)
где ЦБЭВМ балансовая стоимость комплекта вычислительной техники, необходимого для решения задачи, руб. (ЦБЭВМ = 1 155 000 руб.).
КЗ=1 155 000 . 0,18 . 500 / 2 000 = 181 913 руб.
КО = 181 913 + 4 112 891 = 4 294 804 руб.
Годовой экономический эффект от сокращения ручного труда при обработке информации определяется по формуле:
, (4.33)
где Е коэффициент эффективности, равный ставке за кредиты на рынке долгосрочных кредитов (Е = 0,25);
ЭФ = 6 742 620 0,25 . 4 294 804 = 5 668 919 руб.
Срок возврата инвестиций определяется по формуле:
, (4.34)
ТВ = 4 294 804 / 6 742 620 = 0,59 лет.
Основные результаты расчета представлены в таблице 4.2.
Таблица 4.2 Технико-экономические показатели проекта
Наименование показателя |
Варианты |
|
Базовый |
Проектный |
|
1. Трудоемкость решения задачи, час |
3 |
0,63 |
2. Периодичность решения задачи, раз в год |
500 |
500 |
3. Годовые текущие затраты, связанные с решением задачи, руб |
11 663 816 |
2 791 947 |
4. Отпускная цена программы, руб |
4 112 891 |
|
5. Степень новизны программы |
Б |
|
6. Группа сложности алгоритма |
1 |
|
7. Прирост условной прибыли, руб./ год |
6 742 620 |
|
8. Годовой экономический эффект пользователя, руб |
5 668 919 |
|
9. Срок возврата инвестиций, лет |
0,59 |
Разработанное программное обеспечение к дипломному проекту на тему «Система разработки сайтов» обеспечивает получение годового экономического эффекта в сумме 5 668 919 руб. при отпускной цене программы 4 112 891 руб. Проект обеспечивает возврат инвестиций за 0,59 лет при номинальном сроке возврата кредита 4 года.
Данный программный продукт рентабельный и конкурентоспособный с точки зрения экономики и может быть использован для автоматизации процесса управления сайтом.
В ЧУП «ГАМАР-СКГ» списочная численность работающих составляет 11 человек, из них 1 директор, 1 зам. директора, 1 бухгалтер, 1 дизайнер, 1 тестировщик, 6 инженеров-программистов.
Из списочной численности видно, что отсутствует лицо, ответственное за охрану труда на предприятии. Обязанности инженера по охране труда исполняет директор. Он проводи инструктажи, с целью предотвращения появлений случаев травматизма. Случаев травматизма за последние год отсутствуют. Анализ заболеваемости за последние три года представлен в табл. 5.1.
Таблица 5.1 Анализ заболеваемости сотрудников ЧУП «ГАМАР-СКГ» в период с 2007 по 2008 годы
Год |
Количество дней заболеваемости |
Тенденция к росту |
2007 |
35 |
|
2008 |
30 |
-5 |
В ЧУП «ГАМАР-СКГ» в период с 2007 по 2008 годы общая тенденция к заболеваемости снижается. Большинство случаев потери рабочего времени связано с заболеванием при эпидемиях гриппа. Условия труда в ЧУП «ГАМАР-СКГ» соответствуют нормативным показателям.
Работы, проводимые в ЧУП «ГАМАР-СКГ», осуществляются в офисных помещениях. Для создания оптимальных метеорологических условий в офисных помещениях в холодное время года применяют паровое отопление, а в летнее кондиционеры. В офисных помещениях расположено 11 рабочих мест, все из которых оборудовано компьютерами.
При работе персонала за компьютером основными вредными производственными факторами являются: нарушения параметров микроклимата; шум; вибрации; неправильная организация освещения; электромагнитные излучения; несоблюдение эргономических требований при проектировании рабочих мест.
Температура воздуха, влажность и скорость движения воздуха благоприятно влияют на самочувствие сотрудников и являются комфортными и, как следствие это повышает работоспособность работников. Данные значения факторов микроклимата соответствуют регламентированным параметрам. В табл. 5.2 приведены параметры микроклимата помещений ЧУП «ГАМАР-СКГ».
Таблица 5.2 Значения основных параметров микроклимата в помещениях ЧУП «ГАМАР-СКГ»
Фактор |
Значение |
Единицы измерения |
Влажность воздуха |
45 55 |
% |
Температура воздуха |
18 25 |
ºС |
Скорость движения воздуха |
0,1 |
м/с |
Особенность трудовой деятельности операторов ЭВМ является повышенное зрительное напряжение, связанное со слежением за информацией на экране монитора. Поэтому при такой работе имеет большое значение качество освещенности рабочего места.
В зависимости от времени суток и расположения рабочего места в ЧУП «ГАМАР-СКГ» применяют:
Естественное освещение в офисе ЧУП «ГАМАР-СКГ» является боковым. Искусственное освещение создается галогенными лампами Haloline 60W 230V l=74,9 mm, расположенными равномерно по всей площади помещения.
Произведем расчет освещения методом светового потока. Потребный световой поток лампы равен:
, (5.1)
где ЕН нормируемая освещенность, Лк;
А освещаемая площадь;
коэффициент минимальной освещенности: = 1;
К коэффициент запаса: К = 1,4
коэффициент использования светильников, = 3,2.
(5.2)
Индекс помещения:
, (5.3)
где hР расчетная высота.
м (5.4)
Пример расчета освещения:
(5.5)
м2 (5.6)
Лм (5.7)
Произведем расчет объем воздуха, приходящийся на одного работающего по формуле:
, (5.8)
где V объем помещения;
n количество работающих.
, (5.9)
где b удельный воздухообмен на одного работающего.
Пример расчета воздухообмена:
м3, (5.10)
м3. (5.11)
Для поддержания нормативных значений микроклимата можно путем использования кондиционеров, отопительных приборов, а также при помощи вентиляции. Для очищения воздуха от пыли в местах забора устанавливают фильтры 2-го и 3-го класса типов ФППУ, ФСВУ, ФЯЛ, ФВН.
При эксплуатации вычислительной техники возможны следующие опасные производственные факторы:
- опасность поражения электрическим током;
- опасность воздействия статического электричества.
Опасность поражения электрическим током возникает при прикосновении к открытым токоведущим частям с нарушенной изоляцией или к оборудованию, находящемуся под напряжением при отсутствии или нарушении изоляции.
По степени поражения людей электрическим током кабинет относится к классу помещений без повышенной опасности. Для устранения поражения людей электрическим током при появлении напряжения на конструктивных частях электрооборудования предусмотрено защитное заземление с сопротивлением в любое время года не более 4 Ом.
Опасность возникновения статического электричества проявляется в возможности образования электрической искры и вредном действии его на организм человека. Эта искра может служить причиной воспламенения горючих или взрывоопасных газов, паров или пыли с воздухом. Статическое электричество оказывает вредное воздействие на организм человека, причем не только при непосредственном контакте с зарядом, но и за счет действия электрического поля, возникающего вокруг заряженных поверхностей.
Основные способы защиты от статического электричества:
Для оказания первой помощи пострадавшему от электрического тока необходимо быстрое отключение оборудования, которого касается пострадавший, определение состояния пострадавшего и выбор мер первой помощи.
При оборудовании рабочего места ПЭВМ согласно нормам учитываются границы поля зрения программиста, которые определяются движениями глаз и голоВы (рисунок 5.1). Различают зоны зрительного наблюдения в вертикальной плоскости, ограниченные определенными углами, в которых располагаются дисплей ЭВМ (40-60º), пюпитр (35-45º) и клавиатура. При организации рабочего места учитываются антропометрические данные программистов, а также предусматривается соответствующее размещение элементов оборудования в зависимости от характера выполняемой работы.
Рисунок 5.1 Зоны для выполнения ручных операций и размещения органов управления
1, 2 зона для размещения часто используемых органов управления
3 зона для размещения редко используемых органов управления
5.4 Пожарная безопасность
В современных ЭВМ имеется высокая плотность размещения элементов электронных схем. В непосредственной близости друг от друга располагаются соединительные провода, коммуникационные кабели. При протекании по ним электрического тока выделяется значительное количество теплоты, что может привести к повышению температуры отдельных узлов до 80-100°С, при этом возможно отклонение изоляции соединительных проводов что, как правило, приводит к короткому замыканию, которое сопровождается искрением и ведет к недостаточной надежности и перегрузке элементов электронных схем. Для отбора избыточной теплоты от ЭВМ служат системы вентиляции и кондиционирования воздуха.
Здание, где располагается ЧУП «ГАМАР-СКГ» относится:
по огнестойкости I категория;
по пожаровзрывобезопасности категория Д;
Здание, где располагается ЧУП «ГАМАР-СКГ» является девятиэтажным, офис ЧУП «ГАМАР-СКГ» расположен на девятом этаже. В здании расположены пожарные гидранты, работающие от общего водоснабжения, к которым обеспечен свободный доступ, а также находятся схемы эвакуации, в которых указано расположение огнетушителей. На данном этаже расположены два огнетушителя, находящихся в кабинетах.
В офисных помещения ЧУП «ГАМАР-СКГ» присутствуют по 2 огнетушителя. Для данного помещения идеально наличие огнетушителя ОУ-5, ОПС-5 или ОП-1 «Момент», так как в офисе находится много материалов органического происхождения (бумага, мебель).
Данная дипломная работа раскрывает тему автоматизации управления сайтом.
Приведена структурная схема программного средства и описание его работы. С функциональной точки зрения приведен список функций используемых программным средством. Также приведено руководство пользователя по интерфейсу программного средства включающего в себя описание настроек программы.
В технико-экономическом обосновании система была оценена по разным критериям, была проведена оценка конкурентоспособности продукта. Было рассчитано смета затрат, себестоимость и отпускная цена программного средства, а также расчет экономического эффекта Была рассмотрена производственная санитария и техника безопасности рабочего места программиста.
В результате проделанной работы была разработана система управления сайтами. Система разработана на платформе ASP.NET на языке C#. В качестве базы данных использовалась MS Access. Так же использовалась библиотека Ajaxcontroltoolkits.
Система представляет собой приложение с архитектурой клиент-сервер. В качестве клиентского приложения выступает любой Интернет браузер.
Разработанная система реализует следующие функции:
Преимущества системы:
В заключение можно сказать, что данный программный продукт имеет ряд существенных преимуществ и может использоваться для работы с любым сайтом.
Исходный текст Default.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Web.UI.WebControls;
using Cleopatra.Objects;
using Cleopatra.Services;
using Cleopatra.UI.CMS;
namespace Cleopatra.UI.CMS
{
/// <summary>
/// Рабочий стол
/// </summary>
public partial class Default : TranslateblePage
{
protected DataList dlMain;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindData();
}
protected void BindData()
{
List<Essence> Results = new List<Essence>();
List<Essence> AL = GetRightEssences();
foreach (Essence Item in AL)
if (Item.IsDesktop == true)
Results.Add(Item);
dlMain.DataSource = Results;
dlMain.DataBind();
}
/// <summary>
/// Возвращает доступные для пользователя сущности
/// </summary>
private static List<Essence> GetRightEssences()
{
int UserID = Auth.CurrentUserID;
List<Essence> AL = App.Storage.GetList<Essence>();
if (UserID == Auth.AdminID)
return AL;
List<Essence> Result = new List<Essence>();
foreach (Essence Item in AL)
if (Item.GetAccess(UserID) == true)
Result.Add(Item);
return Result;
}
/// <summary>
/// Возвращает иконку на рабочем столе
/// </summary>
public string GetIcon(object obj)
{
string Postfix = "Icons/{0}.png";
string File;
File = string.Format("~/" + App.FOLDER_CMS + "/" + Postfix, obj);
File = Server.MapPath(File);
if (System.IO.File.Exists(File) == true)
return string.Format(Postfix, obj);
else
return string.Format(Postfix, "noicon");
}
/// <summary>
/// Необходима для определения прав
/// </summary>
#region Свойство EssenceType
public override Type EssenceType
{
get { return null; }
}
#endregion
}
}
Исходный текст EditArticle.cs
using System;
using System.IO;
using System.Collections.Generic;
using System.Web.UI.WebControls;
using Cleopatra.Objects;
using Cleopatra.Services;
using Cleopatra.UI.CMS.Controls;
namespace Cleopatra.UI.CMS
{
/// <summary>
/// Страница редактирования Article
/// </summary>
public partial class EditArticle : TranslateblePage
{
protected BoxText tbTags;
protected BoxText tbName;
protected BoxHTML tbText;
protected Label lbKey;
protected CheckBox cbProtect;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindData();
}
private void BindData()
{
cbProtect.Visible = (Auth.CurrentUserID == Auth.AdminID);
int ID = FooID;
if (ID == -1)
return;
Article Node = App.Storage.GetItem<Article>(ID);
tbName.Value = Node.Name;
tbText.Value = Node.Text;
tbTags.Value = Node.Tags;
lbKey.Text = Node.Key;
cbProtect.Checked = Node.IsProtect;
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (this.IsValid == false)
return;
Article Node;
int ID = FooID;
if (ID == -1)
Node = new Article();
else
Node = App.Storage.GetItem<Article>(ID);
Node.Name = tbName.Value;
Node.Text = tbText.Value;
Node.Tags = tbTags.Value;
Node.IsProtect = cbProtect.Checked;
if (Node.ID == 0)
{
Node.Key = GetUnique(TextJet.Translit(Node.Name, 36).ToLower(), 0);
App.Storage.Create(Node);
Page NewPage = new Page();
NewPage.Content = Cleopatra.Services.ContentType.Article;
NewPage.Key = Node.Key;
NewPage.Name = Node.Name;
App.Storage.Create(NewPage);
// Добовляет доступ для всех пользователей
User2Page Up;
List<User> AL = App.Storage.GetList<User>();
foreach (User Item in AL)
{
Up = new User2Page();
if (Item.Name.Equals(Auth.GUEST_NAME, StringComparison.OrdinalIgnoreCase) == true)
Up.UserID = Auth.GuestID;
else
Up.UserID = Item.ID;
Up.PageID = NewPage.ID;
App.Storage.Create(Up);
}
}
else
App.Storage.Update(Node);
string RedirectURL = "Records.aspx?table=" + typeof(Article).Name;
Response.Redirect(RedirectURL);
}
/// <summary>
/// Возвращает уникальный URL для статьи, на уровне сайта
/// </summary>
/// <param name="value">Текущий уникальный URL</param>
/// <param name="postNum">Числовой постфикс</param>
/// <returns>Метод рекурсивный</returns>
private string GetUnique(string value, int postNum)
{
string NewName = value;
if (postNum > 0)
NewName += postNum.ToString();
// Проверка: нет ли уже статьи с таким Key
List<Article> Arts = App.Storage.GetList<Article>();
foreach (Article Item in Arts)
if (Item.Key == NewName)
return GetUnique(value, ++postNum);
// Проверка: нет ли уже подобного модуля
string Folder = Server.MapPath("~/") + App.FOLDER_MODULES;
foreach (string Item in Directory.GetFiles(Folder, "*.aspx"))
{
if (NewName == Path.GetFileNameWithoutExtension(Item).ToLower())
return GetUnique(value, ++postNum);
}
return NewName;
}
/// <summary>
/// Для прав доступа
/// </summary>
#region Свойство EssenceType
public override Type EssenceType
{
get { return typeof(Article); }
}
#endregion
}
}
Исходный текст EditBanner.cs
using System;
using System.Collections.Generic;
using System.Web.UI.WebControls;
using Cleopatra.Objects;
using Cleopatra.Services;
using Cleopatra.UI.CMS.Controls;
namespace Cleopatra.UI.CMS
{
/// <summary>
/// Страница редактирования Banner
/// </summary>
public partial class EditBanner : TranslateblePage
{
protected BoxText tbName;
protected BoxList ddlGroup;
protected BoxDate dtDateStart;
protected BoxDate dtDateStop;
protected TextBox tbText;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindData();
}
private void BindData()
{
ddlGroup.DataSource = App.Storage.GetList<BannerGroup>();
ddlGroup.DataBind();
int ID = FooID;
if (ID == -1)
{
dtDateStart.Value = DateTime.Now;
return;
}
Banner Node = App.Storage.GetItem<Banner>(ID);
tbName.Value = Node.Name;
ddlGroup.Value = Node.GroupID;
dtDateStart.Value = Node.DateStart;
dtDateStop.Value = Node.DateStop;
tbText.Text = Node.Text;
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (this.IsValid == false)
return;
Banner Node;
int ID = FooID;
if (ID == -1)
Node = new Banner();
else
Node = App.Storage.GetItem<Banner>(ID);
Node.Name = tbName.Value;
Node.GroupID = ddlGroup.Value;
Node.DateStart = dtDateStart.Value;
Node.DateStop = dtDateStop.Value;
Node.Text = tbText.Text.Trim();
if (Node.ID == 0)
App.Storage.Create(Node);
else
App.Storage.Update(Node);
string RedirectURL = "Records.aspx?table=" + typeof(Banner).Name;
Response.Redirect(RedirectURL);
}
/// <summary>
/// Для прав доступа
/// </summary>
#region Свойство EssenceType
public override Type EssenceType
{
get { return typeof(Banner); }
}
#endregion
}
}
Исходный текст EditEmbade.cs
using System;
using System.Collections.Generic;
using System.Web.UI.WebControls;
using Cleopatra.Objects;
using Cleopatra.Services;
using Cleopatra.UI.CMS.Controls;
namespace Cleopatra.UI.CMS
{
/// <summary>
/// Страница редактирования Embade
/// </summary>
public partial class EditEmbade : TranslateblePage
{
protected BoxText tbName;
protected BoxText tbURL;
protected BoxHTML tbText;
protected Label lbKey;
protected CheckBox cbProtect;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindData();
}
private void BindData()
{
cbProtect.Visible = (Auth.CurrentUserID == Auth.AdminID);
int ID = FooID;
if (ID == -1)
return;
Embade Node = App.Storage.GetItem<Embade>(ID);
tbName.Value = Node.Name;
lbKey.Text = Node.Key;
tbText.Value = Node.Text;
tbURL.Value = Node.URL;
cbProtect.Checked = Node.IsProtect;
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (this.IsValid == false)
return;
Embade Node;
int ID = FooID;
if (ID == -1)
Node = new Embade();
else
Node = App.Storage.GetItem<Embade>(ID);
Node.Name = tbName.Value;
Node.Text = tbText.Value;
Node.URL = tbURL.Value;
Node.IsProtect = cbProtect.Checked;
if (Node.ID == 0)
{
Node.Key = GetUnique(TextJet.Translit(Node.Name, 36).ToLower(), 0);
App.Storage.Create(Node);
}
else
App.Storage.Update(Node);
string RedirectURL = "Records.aspx?table=" + typeof(Embade).Name;
Response.Redirect(RedirectURL);
}
/// <summary>
/// Возвращает уникальный строковой ID, на уровне сайта
/// </summary>
/// <param name="value">Текущий уникальный строковой ID</param>
/// <param name="postNum">Числовой постфикс</param>
/// <returns>Метод рекурсивный</returns>
private string GetUnique(string value, int postNum)
{
string NewName = value;
if (postNum > 0)
NewName += postNum.ToString();
// Проверка: нет ли уже статьи с таким Key
List<Embade> Arts = App.Storage.GetList<Embade>();
foreach (Embade Item in Arts)
if (Item.Key == NewName)
return GetUnique(value, ++postNum);
return NewName;
}
#region Свойство EssenceType
public override Type EssenceType
{
get { return typeof(Embade); }
}
#endregion
}
}
Исходный текст EditFAQ.cs
using System;
using System.Collections.Generic;
using Cleopatra.Objects;
using Cleopatra.Services;
using Cleopatra.UI.CMS.Controls;
namespace Cleopatra.UI.CMS
{
/// <summary>
/// Страница редактирования FAQ
/// </summary>
public partial class EditFAQ : TranslateblePage
{
protected BoxText tbName;
protected BoxDate dtDate;
protected BoxHTML tbAnswer;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindData();
}
private void BindData()
{
int ID = FooID;
if (ID == -1)
return;
FAQ Node = App.Storage.GetItem<FAQ>(ID);
tbName.Value = Node.Name;
dtDate.Value = Node.Date;
tbAnswer.Value = Node.Answer;
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (this.IsValid == false)
return;
FAQ Node;
int ID = FooID;
if (ID == -1)
Node = new FAQ();
else
Node = App.Storage.GetItem<FAQ>(ID);
Node.Name = tbName.Value;
Node.Date = dtDate.Value;
Node.Answer = tbAnswer.Value;
if (Node.ID == 0)
App.Storage.Create(Node);
else
App.Storage.Update(Node);
string RedirectURL = "Records.aspx?table=" + typeof(FAQ).Name;
Response.Redirect(RedirectURL);
}
/// <summary>
/// Для прав доступа
/// </summary>
#region Свойство EssenceType
public override Type EssenceType
{
get { return typeof(FAQ); }
}
#endregion
}
}
Исходный текст EditIndex.cs
using System;
using System.Collections.Generic;
using Cleopatra.Objects;
using Cleopatra.Services;
using Cleopatra.UI.CMS.Controls;
namespace Cleopatra.UI.CMS
{
/// <summary>
/// Страница редактирования Index
/// </summary>
public partial class EditIndex : TranslateblePage
{
protected BoxText tbName;
protected BoxHTML tbText;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindData();
}
private void BindData()
{
int ID = FooID;
if (ID == -1)
return;
Index Node = App.Storage.GetItem<Index>(ID);
tbName.Value = Node.Name;
tbText.Value = Node.Text;
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (this.IsValid == false)
return;
Index Node;
int ID = FooID;
if (ID == -1)
Node = new Index();
else
Node = App.Storage.GetItem<Index>(ID);
Node.Name = tbName.Value;
Node.Text = tbText.Value;
if (Node.ID == 0)
App.Storage.Create(Node);
else
App.Storage.Update(Node);
string RedirectURL = "Records.aspx?table=" + typeof(Index).Name;
Response.Redirect(RedirectURL);
}
/// <summary>
/// Для прав доступа
/// </summary>
#region Свойство EssenceType
public override Type EssenceType
{
get { return typeof(Index); }
}
#endregion
}
}
Исходный текст EditMenuNode.cs
using System;
using System.Text;
using System.Collections.Generic;
using System.Web.UI.WebControls;
using System.Drawing;
using Cleopatra.Objects;
using Cleopatra.Services;
using Cleopatra.UI.CMS.Controls;
using System.Web.UI.HtmlControls;
namespace Cleopatra.UI.CMS
{
/// <summary>
/// Страница редактирования MenuNode
/// </summary>
public partial class EditMenuNode : TranslateblePage
{
protected BoxText tbName;
protected BoxText tbURL;
protected CheckBox cbProtect;
protected HtmlContainerControl dvTree;
protected HiddenField hNodes;
protected DropDownList ddlPages;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindData();
}
private void BindData()
{
cbProtect.Visible = (Auth.CurrentUserID == Auth.AdminID);
List<Cleopatra.Objects.Page> AL = App.Storage.GetList<Cleopatra.Objects.Page>();
ddlPages.DataSource = AL;
ddlPages.DataBind();
ListItem LiSelect = new ListItem(string.Empty, "#");
LiSelect.Attributes["style"] = "color: gray";
ddlPages.Items.Insert(0, LiSelect);
ListItem LiOther = new ListItem(Translate("Other").ToUpper());
ddlPages.Items.Add(LiOther);
int ID = FooID;
if (ID == -1)
return;
MenuNode Node = App.Storage.GetItem<MenuNode>(ID);
ddlPages.SelectedValue = Node.URL.Replace(".aspx", null);
tbName.Value = Node.Name;
tbURL.Value = Node.URL;
cbProtect.Checked = Node.IsProtect;
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (this.IsValid == false)
return;
MenuNode Node;
int ID = FooID;
if (ID == -1)
Node = new MenuNode();
else
Node = App.Storage.GetItem<MenuNode>(ID);
if (hNodes.Value != string.Empty)
{
Point[] Points = ParseTree(hNodes.Value);
for (int Num = 0; Num < Points.Length; Num++)
SaveTree(Points[Num], Num);
}
Node.Name = tbName.Value;
Node.URL = tbURL.Value.ToLower();
Node.IsProtect = cbProtect.Checked;
string RedirectURL;
if (Node.ID == 0)
{
Node.SortOrder = int.MaxValue;
App.Storage.Create(Node);
RedirectURL = this.Request.Url.LocalPath + "?ID=" + Node.ID.ToString();
}
else
{
App.Storage.Update(Node);
RedirectURL = "Records.aspx?table=" + typeof(MenuNode).Name;
}
Response.Redirect(RedirectURL);
}
private static Point[] ParseTree(string source)
{
string[] Arr = source.Split(',');
string[] Para;
List<Point> Points = new List<Point>(Arr.Length);
foreach (string Item in Arr)
{
Para = Item.Split('-');
Points.Add(new Point(int.Parse(Para[0]), int.Parse(Para[1])));
}
return Points.ToArray();
}
/// <summary>
/// Генерирует строку (HTML) дерево из структуры меню
/// </summary>
/// <param name="id">Текущий обробатывемый ID</param>
/// <remarks>Метод вызывается рекурсивно</remarks>
private static string InitTree(int id, int fooID)
{
List<MenuNode> AL = App.Storage.GetList<MenuNode>();
StringBuilder Sb = new StringBuilder();
Sb.Append("<ul>");
foreach (MenuNode Item in AL)
{
if (Item.ParentID == id)
{
if (fooID == Item.ID)
Sb.AppendFormat("<li id='{0}'><a href='#'><span class='current'>{1}</span></a>", Item.ID, Item.Name);
else
Sb.AppendFormat("<li id='{0}'><a href='#'>{1}</a>", Item.ID, Item.Name);
Sb.Append(InitTree(Item.ID, fooID));
Sb.Append("</li>");
}
}
Sb.Append("</ul>");
return Sb.ToString();
}
/// <summary>
/// Сохраняет элемент меню, переданный через point
/// </summary>
private static void SaveTree(Point point, int sortOrder)
{
MenuNode Node = App.Storage.GetItem<MenuNode>(point.X);
if (Node == null)
return;
if ((Node.ParentID != point.Y) || (Node.SortOrder != sortOrder))
{
Node.ParentID = point.Y;
Node.SortOrder = sortOrder;
App.Storage.Update(Node);
}
}
/// <summary>
/// Для прав доступа
/// </summary>
#region Свойство EssenceType
public override Type EssenceType
{
get { return typeof(MenuNode); }
}
#endregion
}
}
Вход в систему управления сайтом
Операции по изменению содержания сайта, выполняются в системе управления сайтом. Доступ в него, имеют пользователи, которым предоставлены соответствующие права. Чтобы попасть в этот раздел. В строке адреса сайта, после последнего символа “/” напишите “CMS”, например, http://www.mysite.com/CMS. Нажмите ввод, и Вы попадёте на страницу аутентификации (рисунок П.2.1).
Рисунок П.2.1 Форма аутентификации
Здесь необходимо ввести логин и пароль, а так же, Verification Code, указанный справа. Стоит обратить внимание на флажок “Remember me”. Если он установлен, то система вас “запомнит”, и при следующей попытке войти в систему управления, вам уже не надо будет повторно заполнять данную форму.
Если Вы ввели правильные аутентификационные данные, Вы попадёте на рабочий стол системы управления, откуда получите доступ к функционалу сайта.
Управление новостями.
Администратор сайта или другой пользователь, обладающий соответствующими правами, может добавлять/редактировать/удалять новости. Для этого необходимо зайти в систему управления. И выбрать элемент рабочего стала “Новости” (рисунок П.2.2).
Рисунок П.2.2 Рабочий стол
Рисунок П.2.3 Список новостей
Далее Вы попадёте в модуль «Новости» (рисунок П.2.3). В списке новостей, находятся все новости, представленные на сайте.
Для удаления новостей, отметьте флажком соответствующие новости, и нажмите кнопку “Удалить”, находящуюся внизу каталога. Можно изменять количество новостей, отображаемых на одной странице (по умолчанию 20), это очень удобно, если новостей достаточно много. Для этого воспользуйтесь
элементом управления, проиллюстрированном на рисунке П.2.4.
Так же отображаемые новости можно сортировать, по названию или дате публикации. Для этого кликните мышкой по заголовку соответствующего столбца.
Если Вам нужно создать новую новость, кликните мышкой по кнопке “Создать”, внизу под таблицей.
Для редактирования новости кликните по строке с заголовком соответствующей новости, и Вы попадёте на форму редактирования.
Рассмотрим редактируемые поля новости.
Заголовок новости обязательное текстовое поле, в котором указывается название новости.
Дата дата публикации новости. На сайте новости отображаются в соответствии с датой публикации. Самые последние новости отображаются на главной странице. А самые старые новости, находятся в архиве новостей, и их можно просмотреть, выбрав соответствующий год и месяц публикации новости.
Для изменения даты публикации новости, кликните на картинку “календаря”, расположенную справа от поля даты. Появиться интерактивный календарь (рисунок П.2.5), в котором мышкой можно выбрать необходимый год/месяц/число. Если это поле не заполнять. В качестве дня публикации, будет взят сегодняшний день.
Краткий текст текстовое поле, в котором указывается анонс новости. Здесь можно кратко (1-2 предложения) написать, о чём новость, чтобы заинтересовать пользователя, и у него возникло желание прочесть новость целиком. Если это поле оставить не заполненным, то в качестве текста будет взято начало содержания новости.
Текст содержание новости. Чтобы изменить содержание новости, необходимо кликнуть на кнопку “Редактировать”, находящуюся под текстовым полем. Появиться новое окно, с визуальным текстовым редактором, внешним видом похожим на редактор Microsoft Word, подробнее об этом визуальном редакторе будет рассказано, ниже. Визуальный редактор, позволяет применять стили оформления, вставлять изображения, изменять размеры шрифтов и т.д., что позволяет оформить содержание новости с учётом фантазии автора.
Изображение. За каждой новостью можно закрепить картинку, которая будет ассоциироваться с данной новостью. Для этого кликните, на кнопку “Обзор”, и в появившемся диалоговом окне, выберите картинку на вашем локальном компьютере. Картинка будет загружена на сервер, и её размеры изменены в соответствии с общим стандартом. Поэтому нету надобности заранее обрезать/уменьшать картинку, система сделает это сама. Необходимо учитывать, что картинка должна быть одного из перечисленных форматов: JPG, GIF, PNG. Иначе система проигнорирует вашу картинку.
Новости являются типовым модулем, поэтому функциональность (добавление, удаление, редактирование, сортировка, вывод на странице), описанная выше, применима и к другим модулям.
Управлениями статьями.
Статьи по своей структуре похожи на новости. Администрирование статей происходит похожим способом. В системе управления, на рабочем столе есть пункт “Статьи”, кликнув по которому мы попадаем в модуль «Статьи» (рисунок П.2.6).
Рисунок П.2.6 Список статей
Каждая статья отображается на сайте, на своей странице, адрес этой страницы указан во втором столбце, таблицы.
Статьи, так же как и новости, можно удалять или добавлять новые. Кликнув по строке с соответствующей статьёй, Вы попадёте на форму редактирования статьи.
Поля формы редактирования статьи, похожи на поля формы редактирования новости. Есть одно уникальное поле характерное только для статей, это поле “Ключевые слова”. В этом поле, через пробел, указываются тезисы статьи и основные термины. Это нужно для оптимизации поиска. Поисковые системы, такие как Google, Yandex и др. будут использовать указанные здесь слова в своём механизме поиска. Правильно составленные “ключевые слова” помогут в продвижении сайта, и смогут поднять выше ваш сайт в результатах поиска, в подобных поисковых системах.
В тексте статьи можно оставлять ссылки на другие статьи сайта (перекрестные ссылки). Для этого в качестве адреса статьи, указывается её ID. Посмотреть который можно внизу формы редактирования статьи (рис. 2.7).
Так же пункты меню сайта, могут ссылаться на ту или иную статью. Как добавить статью в меню, будет описано ниже.
Изменение структуры меню.
Меню является одним из важнейших способов навигации по сайту. Меню имеет иерархическую структуру. Т.е. в одни элементы меню, могут входить другие элементы меню, в которые, в свою очередь, могут входить третьи, и т.д. Элементы меню можно создавать, удалять, изменять, переносить из одной “ветки” в другую. Для этого в системе управления, на рабочем столе есть пункт “Меню”, кликнув по которому мы попадаем в модуль «Меню».
Модуль по своей структуре похож, на рассматриваемые ранее, модули новостей и статей.
Рассмотрим форму редактирования элемента меню. Стоит обратить внимание на панель “Предпросмотр”. На которой отображена вся структура меню, а текущий элемент, подсвечен синим цветом. Важной особенностью этой панели является то что, структуру меню можно менять, перетягивая мышкой (Drag&Drop), элементы из одной ветки в другую, как это показано на рисунке П.2.8. Каждый элемент меню, помимо названия, имеет адрес ссылки, куда будет вести этот пункт.
В качестве адреса можно указать любой Интернет адрес, в том числе и на внешний ресурс, для этого его надо написать в текстовом поле “URL”. Как правило, в качестве адресов пунктов меню используются внутренние разделы сайта, например статьи. Для того, чтобы связать элемент меню с внутреннем ресурсом, выберите его из списка и кликните мышкой по оранжевой стрелочке, направленной влево (рисунок 2.8). На некоторых сайтах, меню, в связи с особенностями дизайна, не выпадающее. По этому, на самом сайте, в меню отображается только верхний уровень, а все вложенные элементы будут проигнорированы!
Рисунок П.2.9 URL элемента меню
Структура меню так же используется как основа для карты сайта (Sitemap).
Управление баннерами на сайте.
Баннерный блок это область на сайте, специально выделенная для отображения нескольких рекламных баннеров. Баннерных блоков на сайте может быть несколько, но изменять их место расположения нельзя, так как баннерные блоки являются частью заранее разработанного дизайна. Но можно изменять содержание баннерного блока. В баннерном блоке заранее определено кол-во “свободных мест”. Но баннеров, относящихся к данному блоку, может быть и больше. В этом случае, в баннерном блоке будут отображены случайным образом выбранные баннеры.
Рассмотрим форму редактирования баннера.
Название обязательное текстовое поле (на сайте оно нигде не отображается) для внутренней идентификации.
Начало показа/конец показа здесь указывается период, который баннер будет активен (будет отображаться на сайте). До и после этого периода баннер на сайте увидеть будет нельзя. Изменение даты, аналогично изменению даты в модуле «Новости».
Блок здесь из списка необходимо выбрать баннерный блок, в котором будет отображаться данный баннер.
HTML код сюда вставляется “тело” баннера, это может быть картинка со ссылкой, Flash, или другой элемент. Как правило, сайт на который будет ссылаться баннер, предоставляет HTML код своего баннера. По этому администратору нет необходимости знать особенности HTML, для добавления баннеров.
Систему баннеров и баннерных блоков иногда удобно использовать и не только в рекламных целях, а например, в целях “декоративных” динамических ссылок на внутренние ресурсы сайта.
Файловый менеджер.
Иногда возникает необходимость загрузить на сервер определённые файлы: документы, презентации, картинки, видео. Для этих целей используется файловый менеджер.
Попасть в файловый менеджер, можно из системы управления на рабочем столе, кликнув мышкой по пункту “Файлы”.
В файловом менеджере реализованы базовые функции по работе с файлами сайта. Есть возможность удалять, загружать на сервер, скачивать файлы, создавать/удалять папки. К некоторым папкам доступ на запись может быть закрыт, т.е. их содержание можно просматривать и скачивать, но нельзя изменять, это сделано, чтобы обеспечить более высокий уровень безопасности сайта, и не дать возможность пользователю случайно удалить системные файлы, которые необходимы для нормальной работы сайта.
В корневой директории всегда будет присутствовать папка “UserInfo”, с полным доступом. Именно сюда необходимо загружать все новые пользовательские файлы. Загружаются они с помощью специального элемента управления, расположенного снизу, под таблицей. Для этого кликните, на кнопку “Обзор”, и в появившемся стандартном диалоговом окне выбора файла, выберите файл на вашем локальном компьютере, и нажмите “Добавить”. Можно загружать одновременно несколько файлов. Для этого необходимо кликнуть на “плюсик”, рядом с кнопкой “Browse”. И появиться новое поле для выбора файла (рисунок П.2.10).
Рисунок П.2.10 Файловый менеджер
Встраиваемые блоки.
Встраиваемые блоки своей функциональностью похожи на статьи и баннеры одновременно. Встраиваемый блок это изменяемый контент, который расположен в определённых частях сайта. Примером встраиваемого блока может быть контактная информация, с номерами телефонов, адресами, расположенная внизу или вверху сайта.
Места, в которых эти блоки расположены, изменять уже нельзя, но можно изменять их содержание.
Особенности использования визуального редактора.
При активном администрировании сайта, хотя бы раз придётся столкнуться с визуальным текстовым редактором. Он используется при создании статей, новостей, встраиваемых блоков, и т.д.
Для того чтобы воспользоваться редактором. Необходимо кликнуть мышкой по кнопке “Редактировать”, на форме, где находиться соответствующее текстовое поле.
Перед вами раскроется визуальный текстовый редактор (рисунок П.2.12), и пока Вы не закончите с ним работу, Вы не сможете вернуться в состояние редактирования статьи или новости. Если скорость соединения с сетью Интернет, небольшая, то необходимо подождать пока редактор загрузиться (от 1сек. до 1мин.)
Рисунок П.2.12 WYSIWYG редактор
Стоит обратить внимание на 2 важных момента, которые часто вызывают трудности. Как правило, текст не пишется непосредственно в данном визуальном редакторе, а вставляется из внешнего редактора, из заранее подготовленных документов, в большинстве случаев в Microsoft Word. Такой текст необходимо вставлять с помощью специальной кнопки “Вставить из Microsoft Word”. Иначе вставленный текст будет сильно отличаться от исходного. Это связанно с особенностей формата Word. В идеале, копируемый текст из Word, предназначен для вставки в офисные приложения Microsoft, или в другие программы, но уже с полной потеряй форматирования (как это происходит при вставке из Word в блокнот). Для того чтобы максимально сохранить исходное форматирование текста, при вставке из Word следует пользоваться описанной выше функциональностью.
Второй момент, на который необходимо обратить внимание это вставка картинок, этот процесс рассмотрим подробнее.
Для того чтобы вставить изображение, сразу установите курсор в позицию, куда она будет вставлена. Потом кликните на соответствующую кнопку, на панели инструментов (она выделена на рисунке П.2.12). Перед вами откроется диалоговое окно вставки картинки (рисунок П.2.13). В нём Вы можете выбрать необходимое вам изображение, двойным щёлчком мыши. Если это изображение ещё не загружено на сервер, Вы можете его загрузить в этом же окне, точно так же как это делается в файловом менеджере. Здесь же, можно указать выравнивание изображения, т.е. к какому краю оно будет прижато.
Следует отметить, что визуальный редактор не обладает такими возможностями как настольные офисные приложения. Это связано с ограниченностью возможностей приложений работающих через Web. Визуальный редактор, используемый в системе, является одним из самых передовых и многофункциональных визуальных редакторов в мире, работающих под Web, на данный момент. И при этом и он не лишён недостатков.
Рисунок П.2.13 Диалоговое окно вставки изображения
А также другие работы, которые могут Вас заинтересовать | |||
43104. | Расчёт электропривода системы Г-Д | 1.29 MB | |
Номер варианта Закон изменения момента сопротивления рабочей машины Мсм Нм Момент инерции рабочей машины Jм в долях от момента инерции двигателя кгм2 Тип двигателя и способ его питания 5 250060 40 Постоянного тока от тиристорного преобразователя Примечание: Характер момента сопротивления реактивный. Предварительная мощность двигателя Предварительная мощность двигателя рассчитывается по нагрузочной диаграмме и тахограмме рабочей машины. При этом можно использовать формулу: кВт где коэффициенты учитывающие... | |||
43105. | Разработка печатного узла | 2.69 MB | |
Монтаж на поверхность это крепление и монтаж компонентов специальной конструкции непосредственно на поверхность печатной платы. Взамен их для присоединения к плате используются металлизированные торцы корпусов компонентов или настолько миниатюрные выводы что они в незначительной мере увеличивают площадь платы для монтажа такого компонента. В общем виде проектирование конструкции печатного узла и технологии его изготовления в данной курсовой работе состоит из следующих глав: анализ технического задания; разработка конструкции узла;... | |||
43106. | Моделирование современной котельной установки | 328.5 KB | |
При выборе модели необходимо учитывать: модель должна наиболее полно отражать характер потоков вещества и энергии при одновременно достаточно простом математическом описании; параметры модели могут быть определены экспериментальным или другим способом; следует принимать во внимание что с изменением гидродинамического режима системы могут изменяться виды моделей; тип математической модели существенно влияет на вид уравнений используемых для построения математического описания. При составлении математической модели: устанавливаются... | |||
43107. | Электрический привод системы “генератор-двигатель” | 1.02 MB | |
Необходимый диапазон регулирования скорости вращения рабочей машины. Плавный пуск, торможение и реверс рабочей машины. Заданное быстродействие. Минимум потерь энергии в переходных процессах. Возможность изменения направления вращения механизма. Режим рекуперативного торможения... | |||
43110. | Проектирование привода для ленточного конвейера | 5.19 MB | |
Выбирается в зависимости от скорости скольжения где вращающий момент на колесе передаточное число тихоходной ступени частота вращения червячного колеса При скорости скольжения что соответствует 2ой группе â безоловянные бронзы и латуни при скорости скольжения для зубчатого венца червячного колеса выбираю материал ЛАЖМц66632 отливка центробежная Допускаемые контактные напряжения : где для червяков с твердостью на поверхности витков Допускаемые напряжения изгиба вычисляются для материала зубьев червячного колеса:... | |||
43111. | Контроль і управління якістю води у водоймах | 1.56 MB | |
Аналітичний огляд літератури очистки стічних вод міста Елементи механічної очистки стічних вод. Елементи біологічної очистки стічних вод. Математичний апарат для моделювання очистки стічних вод. Контроль і управління якістю води у водоймах. | |||
43112. | Определение момента инерции маховика | 2.43 MB | |
Кинетостатический расчет механизма силовой расчет. Определение сил инерции и моментов сил инерции звеньев механизма. Определение приведенного момента сил полезных сопротивлений. Построение графика приведенных моментов сил полезного сопротивления и движущих сил. | |||