Архитектура
Термин "
Преимущество технологии
Однако технология
Абстрагирование пользовательских элементов управления от страницы может реализовываться при помощи нескольких стратегий. Каждая из них неизменно включает определенный уровень
Одна из популярных техник, используемая в скриптовых языках, заключается в применении
Несмотря на то, что элементы управления ASP.NET представляют собой мощную концепцию, они появились сравнительно недавно и используются только на платформе Microsoft. Некоторые инструментальные средства, такие как MS
Поэтому при разработке технологии
Файл
Заполнители представляют собой фрагменты текста вида [, включенные в HTML-разметку. Чтобы устранить задержку в быстродействии, связанную с обработкой заполнителей в процессе выполнения, механизм загрузки
В терминах расположения элементов, DNN использует подход, предполагающий возможность произвольного расположения элементов на странице. Для добавления модулей с контентом дизайнер может определить произвольное количество панелей содержимого, которые могут быть связаны со сведениями о размещении модулей, хранящимися в БД. Этот подход гарантирует максимальную гибкость.
Шаблоны оформления могут быть применены на уровне узла, портала или страницы. Они также могут применяться на уровне модулей. В этом случае они называются контейнерами. Все файлы _default используется для обозначения дерева каталогов узла. Каждый портал имеет собственное дерево каталогов, имя которого соответствует его идентификатору ID в БД. Эта структура централизует требование прав доступа на запись, которое применяется к единственному каталогу в структуре сайта (рис. 14.1).
(рис 14.1) Организация каталогов порталовКаталоги Skins и Containers могут содержать неограниченное количество подкаталогов, каждый из которых представляет собой набор файлов, необходимый для визуализации
DNN использует единственную ASPX-страницу default.aspx для визуализации всех элементов управления и содержимого. Этот подход обеспечивает следующие преимущества:
Страница default.aspx содержит очень ограниченную логику - она включает код для управления элементом страницы <head> и содержит заполнитель для
Когда пользователь первый раз обращается к приложению DNN, оно анализирует URL и заголовок запроса, чтобы определить, какой Skins, в которой хранятся сведения обо всех шаблонах оформления и контейнерах. Снижение быстродействия из-за обращения к БД компенсируется кэшированием объектов данных на уровне ядра системы управления контентом.
После того, как , который хранится в каталоге admin\Skins. Этот файл осуществляет всю обработку
Пакет
*.htm, *.html - файлы определения .ascx ;*.ascx - пользовательские элементы управления, определяющие *.css - каскадные таблицы стилей, связанные с шаблонами оформления;*.gif, *.jpg, *.png, *.jpeg - вспомогательные файлы графики;*.* - другие Требуемые файлы упаковываются в zip -архив.
Рекомендуется размещать файлы
\Skins\SkinName\...
где SkinName - название создаваемого zip -архивы для последующего распространения
\Skins\SkinName\containers - каталог для размещения файлов контейнера.
\Skins\SkinName\skins - каталог для размещения файлов
Пример размещения файлов
(рис 14.2) Структура каталогов для шаблона оформления DNN
Шаблоны оформления DNN могут быть созданы двумя способами - HTML или ASCX (при помощи пользовательских элементов управления). Вариант HTML больше подходит для web-дизайнеров, не знакомых с технологией ASP.NET. Для ASP.NET-разработчиков, использующих Visual Studio, оптимальным является использование способа ASCX. Основное различие будет состоять в расширении получающегося файла и использовании
Возможно создание двух
Произвольная форма
После создания графического прототипа он разрезается на части, которые помещаются в ячейки HTML-таблицы. Получаемая HTML-разметка должна быть правильно сформирована. Это означает, что все HTML-тэги, являющиеся контейнерами, должны иметь соответствующий закрывающийся тэг. Все атрибуты тэгов не должны иметь пробелов вокруг знака " = ". Значения атрибутов должны указываться в двойных кавычках. В обычной ситуации профессиональный
При создании <td>, <div>, <, и <p>. Должна присутствовать, по меньшей мере, одна панель контента, которая должна называться " Content ". Панели контента могут располагаться в любом месте страницы. Панели контента являются свертываемыми - если во время выполнения в них не было добавлено ни одного модуля, то они становятся невидимыми. Для их добавления используется [CONTENTPANE].
Объекты [MENU:1] и [MENU:2]. В том случае, если требуется только один экземпляр объекта, то он задается без цифр: [MENU].
Объекты <dnn:Login runat="server" id="dnnLogin" Text="Signin" / ). При создании для шаблона и container.xml для контейнеров, которая применяется для всех шаблонов и контейнеров в пакете. Имеется возможность переопределения глобальной спецификации атрибутов в файле skinfilename.xml. Следующий xml-фрагмент представляет собой пример спецификации атрибутов:
<Objects>
<Object>
<Token>[LOGIN]</Token>
<Settings>
<Setting>
<Name>Text</Name>
<Value>Signin</Value>
</Setting>
</Settings>
</Object>
</Objects>
Должно существовать однозначное соответствие объявлений объектов [MENU] ) со спецификацией атрибутов в xml-файле. Это же справедливо для именованных экземпляров. Например, если необходимо включить в [MENU:1] и [MENU:2], и в xml-файле задать различные определения для их атрибутов.
При создании нескольких панелей контента необходимо указывать значение атрибута ID:
<Objects>
<Object>
<Token>[CONTENTPANE:1]</Token>
<Settings>
<Setting>
<Name>ID</Name>
<Value>LeftPane</Value>
</Setting>
</Settings>
</Object>
</Objects>
Таблица стилей в шаблонах оформления
DNN использует внешний способ задания таблицы стилей (CSS). Это значит, что DNN может иметь множественные ссылки на таблицы стилей на одной странице. Каждая ссылка задается в порядке приоритета, поэтому реализуется иерархическое переопределение. Иерархия следующая (каждая ссылка переопределяет предыдущую):
PortalModuleControl.StyleSheet ;default.css ;skin .css или skinfilename.css ;container.css или containerfilename.css ;portal .css ;Пакет (или container.css для контейнеров), которая применяется ко всем файлам шаблонов в пакете. Глобальная таблица стилей может переопределяться путем задания таблицы стилей для конкретного шаблона в пакете. Соответствующая таблица стилей имеет название, совпадающее с названием конкретного skinfilename.css.
Таблица стилей "по умолчанию" ( /Portals/_default/default.css ) содержит набор CSS-классов, которые портал использует для формирования пользовательского интерфейса.
Для того чтобы JPEG с расширением .jpg и иметь то же имя файла, что и , то экранная копия должна называться ).
Все файлы, относящиеся к ZIP -архив , а файлы контейнера - в архив container.zip. Далее оба архива упаковываются в общий архив с требуемым названием. Это позволит установить
Контейнеры являются определениями Actions. Этот элемент управления необходим для реализации функциональности модуля. Общие функции этого элемента заключаются в возможности редактировать настройки модуля и управления размещением модуля на панелях контента. Могут также реализовываться Actions. Элемент управления по умолчанию - SolPartActions отвечает за всплывающее меню, которое появляется при наведении мыши на иконку в левом верхнем углу модуля. Этот элемент управления предназначен для современных браузеров. Для устаревших браузеров используется элемент управления DropDownActions, реализованный в виде раскрывающегося списка.
Несмотря на то, что шаблоны оформления и контейнеры создаются, упаковываются и распространяются независимо, дизайнер обычно создает их комбинацию, которая предназначена для ContainerType, ContainerName и ContainerSrc для идентификации контейнера, который будет использоваться для всех модулей, добавляемых на панель. В том случае, если указанный контейнер отсутствует, используется контейнер по умолчанию.
Пример определения контейнера для панели:
<Objects>
<Object>
<Token>[CONTENTPANE:1]</Token>
<Settings>
<Setting>
<Name>ID</Name>
<Value>LeftPane</Value>
</Setting>
<Setting>
<Name>ContainerType</Name>
<Value>G</Value>
</Setting>
<Setting>
<Name>ContainerName</Name>
<Value>DNN</Value>
</Setting>
<Setting>
<Name>ContainerSrc</Name>
<Value>standard.ascx</Value>
</Setting>
</Settings>
</Object>
</Objects>
Поскольку шаблоны оформления основываются на ASCX-файлах, которые, будучи добавленными на ASPX-страницу, становятся исполняемыми, существует определенный риск, связанный с возможностью включения в них host.
Объекты
| Элемент управления | Описание | |
|---|---|---|
[ |
< dnn: runat="server" id="dnnBanner"> |
Отображает случайный рекламный |
[BREADCRUMB] |
< dnn: Breadcrumb runat="server" id="dnnBreadcrumb"> |
Отображает путь к выбранной странице в виде Название страницы 1 > Название страницы 2 > Название страницы 3 |
[CONTENTPANE] |
<div runat= " server " id= " ContentPane " > |
Добавляет заполнитель для контента модуля . |
[ |
< dnn: runat="server" id="dnnCopyright"> |
Отображение информации о правах |
[CURRENTDATE] |
< dnn: CurrentDate runat="server" id="dnnCurrentDate"> |
Отображает текущую дату . |
[DOTNETNUKE] |
< dnn: DotNetNuke runat="server" id="dnnDotnetNuke"> |
Отображение информации о правах DNN. |
[HELP] |
< dnn: Help runat="server" id="dnnHelp"> |
Отображает ссылку с просьбой о помощи . При ее выборе у клиента открывается DNN. |
[ |
< dnn: runat="server" id="dnnHostName"> |
Отображает заголовок узла, связанный с . |
[LANGUAGE] |
<dnn: Language runat="server" id="dnnLanguage" / > |
Отображает раскрывающийся список, позволяющий выбрать используемый язык . |
[LINKS] |
< dnn: Links runat="server" id="dnnLinks"> |
Отображает плоское меню ссылок, связанное с текущей страницей и родительским узлом . Полезно для |
[LOGIN] |
< dnn: Login runat="server" id="dnnLogin"> |
Элемент управления с двумя состояниями . Отображает . |
[ |
< dnn: runat="server" id="dnnLogo"> |
Отображает |
[ |
< dnn: runat="server" id="dnnPrivacy"> |
Выводит ссылку на страницу о собственнике портала . |
[SEARCH] |
< dnn: Search runat="server" id="dnnSearch"> |
Отображает строку поиска по порталу . |
[SIGNIN] |
< dnn: Signin runat="server" id="dnnSignin"> |
Отображает элемент управления, предназначенный для ввода имени пользователя и пароля . |
[SOLPARTMENU] |
< dnn: SolPartMenu runat="server" id="dnnSolPartMenu"> |
Отображает иерархическое навигационное меню . |
[ |
< dnn: runat="server" id="dnnTerms"> |
Выводит ссылку на соглашение об использовании портала . |
[TREEVIEWMENU] |
< dnn: TreeViewMenu runat="server" id="dnnTreeViewMenu"> |
Отображает иерархическое навигационное меню с использованием элемента управления . |
[USER] |
< dnn: User runat="server" id="dnnUser"> |
Элемент управления с двумя состояниями . Отображает . |
Атрибуты , приведены в табл.7.2
| Атрибут | Значение по умолчанию | Описание | |
|---|---|---|---|
[ |
|
0 |
Ширина границы вокруг |
[BREADCRUMB] |
|
breadcrumb.gif |
Разделитель между ссылками в меню . Может включать ссылки на пользовательские изображения, текст или HTML (например, <![CDATA[nbsp;<img
src="file.gif">nbsp;]]> ) |
CssClass |
SelectedTab |
||
RootLevel |
1 |
Корневой уровень отображения ссылок в меню . Возможные значения: . | |
[CONTENTPANE] |
ID |
ContentPane |
Идентификатор панели контента, которая будет отображаться в пользовательском интерфейсе и храниться в БД . |
[ |
CssClass |
SelectedTab |
|
[CURRENTDATE] |
CssClass |
SelectedTab |
|
DateFormat |
MMMM dd, yyyy |
Формат текущей даты . | |
[DOTNETNUKE] |
CssClass |
Normal |
|
[HELP] |
CssClass |
OtherTabs |
|
[ |
CssClass |
OtherTabs |
Host ( By xxxxxxxxx ) |
[LANGUAGE] |
CssClass |
||
[LINKS] |
CssClass |
CommandButton |
|
|
nbsp;nbsp; |
Разделитель между ссылками . Может включать ссылки на пользовательские изображения, текст или HTML (например, <![CDATA[nbsp;<img src="file.gif">nbsp;]]> ) |
|
Alignment |
|
Стиль меню " Ссылки " (" или " ) |
|
Level |
Same |
Определяет отображаемый уровень меню (" Same" - тот же, " - дочерний, " - родительский, " Root" - корневой) |
|
[LOGIN] |
Text |
Login |
Текст ссылки " Вход ". |
CssClass |
OtherTabs |
" Вход ". |
|
LogoffText |
|
Текст ссылки " Выход ". |
|
[ |
|
0 |
Ширина границы вокруг |
[ |
Text |
|
Текст ссылки о собственнике портала . |
CssClass |
OtherTabs |
||
[SEARCH] |
Submit |
Submit |
HTML -разметка для активации поиска (например, "Найти " или <img src= " mybutton.gif"> |
CssClass |
" Поиск ". |
||
[SOLPARTMENU] |
separatecss |
true |
Использовать CSS, определенный в таблице стилей ( . |
backcolor |
#333333 |
Цвет фона . | |
forecolor |
white |
Цвет элемента меню . | |
highlightcolor |
white |
Цвет левой и |
|
iconbackgroundcolor |
#333333 |
Цвет фона в области отображения иконки . | |
selectedbordercolor |
Цвет границы, окружающий выбранный элемент меню . | ||
selectedcolor |
#CCCCCC |
Цвет фона выбранного элемента меню . | |
selectedforecolor |
white |
Цвет выбранного элемента меню . | |
display |
|
Способ отображения элементов меню ( . | |
menubarheight |
16 |
Высота прямоугольника меню в пикселях . | |
menuborderwidth |
1 |
Ширина границы меню в пикселях . | |
menuitemheight |
21 |
Высота элемента меню в пикселях . | |
forcedownlevel |
false |
Полное отображение вложенных пунктов меню . | |
moveable |
false |
Возможность перемещения меню . | |
iconwidth |
0 |
Ширина колонки с иконкой в пикселях . | |
menueffectsshadowcolor |
dimgray |
Цвет тени . | |
menueffectsmouseouthidedelay |
500 |
Количество миллисекунд анимации эффекта сворачивания меню ( . | |
mouseouthidedelay |
1 |
Количество миллисекунд ожидания, после которого меню сворачивается при уводе мыши с него ( . | |
menueffectsmouseoverdisplay |
|
Настройка визуального эффекта при наведении мыши на элемент меню ( . | |
menueffectsmouseoverexpand |
true |
Задает необходимость разворачивания меню при наведении на него мыши . | |
fontnames |
Arial |
Шрифт | |
fontsize |
12 |
Размер шрифта | |
fontbold |
false |
Жирность шрифта | |
menueffectsshadowstrength |
3 |
Ширина эффекта . | |
menueffectsmenutransition |
None |
Способ исчезания тени (Значения: . | |
menueffectsmenutransitionlength |
0.3 |
Количество миллисекунд, требуемое на преобразование . | |
menueffectsshadowdirection |
Lower Right |
Направление, в котором будет исчезать тень (Значения: . | |
menucontainercssclass |
MainMenu _ MenuContainer |
CSS-класс для контейнера меню . | |
menubarcssclass |
MainMenu _ MenuBar |
CSS-класс для прямоугольника меню . | |
menuitemcssclass |
MainMenu _ MenuItem |
CSS-класс для элемента меню . | |
menuiconcssclass |
MainMenu _ MenuIcon |
CSS-класс для иконки меню . | |
menuitemselcssclass |
MainMenu _ MenuItemSel |
CSS-класс для элемента меню, на который наведена мышь . | |
menubreakcssclass |
MainMenu _ MenuBreak |
CSS-класс для разрыва в меню . | |
submenucssclass |
MainMenu _ |
CSS-класс для подменю . | |
menuarrowcssclass |
MainMenu _ MenuArrow |
CSS-класс для стрелки в меню . | |
| … остальные атрибуты элемента . | |||
[ |
Text |
of Use |
Текст ссылки соглашения об использовании . |
CssClass |
OtherTabs |
CSS-класс для ссылки соглашения об использовании . | |
[USER] |
Text |
|
Текст ссылки " Регистрация " |
CssClass |
OtherTabs |
CSS-класс для ссылки " Регистрация ". |
|
Описание объектов контейнеров приведены в табл. 14.3
| Элемент управления | Описание | |
|---|---|---|
[ACTIONBUTTON] |
<dnn: ActionButton runat="server" id="dnnActionButton"> |
Кнопка, используемая в модуле для вызова определенных действий . |
[CONTENTPANE] |
<div runat="server" id="ContentPane"> |
Вставляет заполнитель для контента модулей . |
[DROPDOWNACTIONS] |
< dnn: DropDownActions runat="server" id="dnnDropDownActions"> |
Раскрывающийся список для выбора определенных действий в модуле . |
[ |
< dnn: runat="server" id="dnnIcon"> |
Отображает иконку, связанную с модулем . |
[LINKACTIONS] |
< dnn: LinkActions runat="server" id="dnnLinkActions"> |
Список ссылок на действия в модуле . |
[SOLPARTACTIONS] |
< dnn: SolPartActions runat="server" id="dnnSolPartActions"> |
Всплывающее меню действий с модулем . |
[TITLE] |
< dnn: Title runat="server" id="dnnTitle"> |
Отображает заголовок модуля . |
[ |
< dnn: runat="server" id="dnnVisibility"> |
Отображает иконку, означающую, свернут модуль или развернут . |
| Атрибут | Значение по умолчанию | Описание | |
|---|---|---|---|
[ACTIONBUTTON] |
CommandName |
Тип предпринимаемого с модулем действия ( AddContent | EditContent | ContentOptions | SyndicateModule | ImportModule | ExportModule | OnlineHelp | ModuleHelp | HelpText | PrintModule | ModuleSettings | DeleteModule | ClearCache | MoveTop | MoveUp | MoveDown | MoveBottom | MovePane | MoveRoot ) |
|
CssClass |
CommandButton |
CSS-класс для кнопки | |
DisplayLink |
True |
Необходимость отображения локализованного текста команды ( True | False ) |
|
DisplayIcon |
False |
Необходимость отображения иконок для команд ( . | |
IconFile |
Файл, используемый в качестве иконки . | ||
[CONTENTPANE] |
ID |
ContentPane |
Ключевой идентификатор панели конента . |
[ |
|
0 |
Ширина границы вокруг иконки . |
[TITLE] |
CssClass |
Head |
CSS-класс для заголовка . |
В данной лабораторной работе будет разработан
(рис 14.3) Шаблон оформленияПриведенный
<table style="BORDER-COLLAPSE: collapse" cellpadding="0" width="100%" height="100%" border="0">
<tr>
<td valign="top">
<table style="BORDER-COLLAPSE: collapse" cellpadding="0" width="100%" border="0">
<tr>
<td background="tile_top.gif" valign="top" style="height: 10px">
<img src="top_left.gif" height="10" width="10" border="0">
</td>
<td background="tile_top.gif" valign="top" align="right" colspan="2" style="height: 10px">
<img src="top_right.gif" height="10" width="10" border="0">
</td>
</tr>
<tr>
<td valign="bottom" width="100%" colSpan="2">
<table style="BORDER-COLLAPSE: collapse" cellpadding="0" width="100%" border="0">
<tr>
<td vAlign="top" width="100%">
<p dir="ltr">
<img src="header_logo1.jpg" height="35" width="130" border="0">
</p>
</td>
<td valign="top" nowrap width="181">
<img src="header_metalbar_top.jpg" height="35" width="181" border="0">
</td>
</tr>
<tr>
<td colspan="2">
<img src="header_logo2.jpg" height="13" width="243" border="0">
</td>
</tr>
</table>
</td>
<td>
<table style="BORDER-COLLAPSE: collapse" cellPadding="0" width="100%" border="0">
<tr>
<td valign="top" align="right" bgColor="#ffffff" colSpan="3">
<img src="login_line_right.gif" height="10" width="60" border="0">
</td>
</tr>
<tr>
<td rowSpan="3">
<img src="login_lefttop.gif" height="38" width="27" border="0">
</td>
<td background="tile_login_top.gif" height="7">
<img src="spacer.gif" height="7" width="7" border="0">
</td>
<td rowSpan="3">
<img src="login_righttop.gif" height="38" width="61" border="0">
</td>
</tr>
<tr>
<td noWrap bgColor="#000000" height="25">
<p>
<font color="#FFFFFF">
[USER]nbsp;nbsp;
<span class="OtherTabs">|</span>
nbsp;nbsp;
[LOGIN]
</font>
</p>
</td>
</tr>
<tr>
<td background="tile_login_bottom.gif" height="6">
<img src="spacer.gif" height="6" width="6" border="0">
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign="top">
<table style="BORDER-COLLAPSE: collapse" cellPadding="0" bgColor="#ae2726" border="0">
<tr>
<td background="tile_main.jpg" vAlign="top" width="100%">
<img src="header_logo3.jpg" height="74" width="620" border="0">
</td>
<td align="right">
<img src="header_right.jpg" height="74" width="61" border="0">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign="top">
<table style="BORDER-COLLAPSE: collapse" cellPadding="0" width="100%" bgColor="#000000" border="0">
<tr>
<td vAlign="top" noWrap width="369">
<img src="menu_left.jpg" height="40" width="369" border="0">
</td>
<td background="tile_menu.jpg" nowrap width="100%">
<font color="#FFFFFF">
[SOLPARTMENU]
</font>
</td>
<td vAlign="top" noWrap width="61">
<img src="menu_right.jpg" height="40" width="61" border="0">
</td>
</tr>
<tr>
<td vAlign="top" noWrap width="369">
<img src="breadcrumbs_left.jpg" height="33" width="369" border="0">
</td>
<td width="100%" nowrap bgColor="#000000">
<font color="#FFFFFF">
[BREADCRUMB]
</font>
</td>
<td vAlign="top" noWrap width="61">
<img src="breadcrumbs_right.jpg" height="33" width="61" border="0">
</td>
</tr>
<tr>
<td vAlign="top" noWrap bgColor="#FFFFFF" width="369">
nbsp;nbsp;
<a href="/default.aspx?tabid=125">
<img src="download.gif" height="32" width="191" border="0" alt="Download the Code!">
</a>
</td>
<td width="100%" nowrap bgColor="#FFFFFF">
nbsp;
</td>
<td vAlign="top" noWrap bgColor="#FFFFFF" width="61">
nbsp;
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="100%" valign="top">
<table style="BORDER-COLLAPSE: collapse" cellPadding="0" width="100%" border="0">
<tr>
<td vAlign="top" align="middle" colspan="3">
[CONTENTPANE:3]
</td>
</tr>
<tr>
<td vAlign="top" align="middle">
[CONTENTPANE:1]
</td>
<td vAlign="top" align="middle">
[CONTENTPANE]
</td>
<td vAlign="top" align="middle">
[CONTENTPANE:2]
</td>
</tr>
<tr>
<td vAlign="top" align="middle" colspan="3">
[CONTENTPANE:4]
</td>
</tr>
</table> <br/>
</td>
</tr>
<tr>
<td vAlign="bottom">
<table style="BORDER-COLLAPSE: collapse" cellPadding="0" width="100%" border="0">
<tr>
<td align="middle" bgColor="#000000" colSpan="3" height="25">
<font color="#FFFFFF">
[LINKS]
</font>
</td>
</tr>
<tr>
<td background="tile_footer.jpg" align="middle" colSpan="3" height="25">
<font color="#FFFFFF">[HOSTNAME]nbsp;nbsp;
<span class="OtherTabs">|</span>
nbsp;nbsp;[TERMS]nbsp;nbsp;
<span class="OtherTabs">|</span>
nbsp;nbsp;[PRIVACY]
</font>
</td>
</tr>
<tr>
<td background="tile_body_bottom.jpg" vAlign="top" align="left">
<img src="body_corner_left_bottom.jpg" height="26" width="20" border="0">
</td>
<td background="tile_body_bottom.jpg" align="middle">
<font color="#000000">[DOTNETNUKE]</font>
</td>
<td background="tile_body_bottom.jpg" vAlign="top" align="right">
<img src="body_corner_right_bottom.jpg" height="26" width="20" border="0">
</td>
</tr>
</table>
</td>
</tr>
</table>
Соответствующий файл атрибутов ( ):
<Objects>
<Object>
<Token>[LINKS]</Token>
<Settings>
<Setting>
<Name>Separator</Name>
<Value><![CDATA[nbsp;nbsp;|nbsp;nbsp;]]></Value>
</Setting>
</Settings>
</Object>
<Object>
<Token>[CONTENTPANE:1]</Token>
<Settings>
<Setting>
<Name>ID</Name>
<Value>LeftPane</Value>
</Setting>
</Settings>
</Object>
<Object>
<Token>[CONTENTPANE:2]</Token>
<Settings>
<Setting>
<Name>ID</Name>
<Value>RightPane</Value>
</Setting>
</Settings>
</Object>
<Object>
<Token>[CONTENTPANE:3]</Token>
<Settings>
<Setting>
<Name>ID</Name>
<Value>TopPane</Value>
</Setting>
</Settings>
</Object>
<Object>
<Token>[CONTENTPANE:4]</Token>
<Settings>
<Setting>
<Name>ID</Name>
<Value>BottomPane</Value>
</Setting>
</Settings>
</Object>
</Objects>
Созданный HTML-файл, использованные в нем графические файлы, а также файл следует упаковать в архив .
Далее следует создать контейнер,
(рис 14.4) КонтейнерВ качестве примера можно использовать следующую HTML-разметку:
<table style="BORDER-COLLAPSE: collapse" cellPadding="0" width="100%" border="0">
<tr>
<tr vAlign="top" noWrap align="middle" colSpan="9">
<img src="spacer.gif" height="15" width="1" border="0">
</td>
</tr>
<tr>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
<td vAlign="top" noWrap width="20" colspan="2">
<img src="body_corner_left.jpg" height="42" width="20" border="0">
</td>
<td background="tile_body_top.jpg" align="middle" noWrap>
[SOLPARTACTIONS]
</td>
<td background="tile_body_top.jpg" align="middle" width="100%" nowrap>
[TITLE]
</td>
<td background="tile_body_top.jpg" align="middle" noWrap>
[VISIBILITY]
</td>
<td vAlign="top" noWrap align="right" width="20" colspan="2">
<img src="body_corner_right.jpg" height="42" width="20" border="0">
</td>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
</tr>
<tr>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
<td vAlign="top" noWrap width="1" bgColor="#c0c0c0">
<img src="spacer.gif" height="1" width="1" border="0">
</td>
<td vAlign="top" noWrap width="19">
nbsp;
</td>
<td colspan="3" align="middle">
<br/>[CONTENTPANE]
</td>
<td vAlign="top" noWrap width="19">
nbsp;
</td>
<td vAlign="top" noWrap width="1" bgColor="#c0c0c0">
<img src="spacer.gif" height="1" width="1" border="0">
</td>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
</tr>
<tr>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
<td vAlign="top" noWrap width="1" bgColor="#c0c0c0">
<img src="spacer.gif" height="1" width="1" border="0">
</td>
<td colspan="5">
nbsp;
</td>
<td vAlign="top" noWrap width="1" bgColor="#c0c0c0">
<img src="spacer.gif" height="1" width="1" border="0">
</td>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
</tr>
<tr>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
<td vAlign="top" noWrap width="20" colspan="2">
<img src="body_corner_left_bottom.jpg" height="26" width="20" border="0">
</td>
<td background="tile_body_bottom.jpg" colspan="3" align="right">
[PRINTMODULE]
</td>
<td vAlign="top" noWrap align="right" width="20" colspan="2">
<img src="body_corner_right_bottom.jpg" height="26" width="20" border="0">
</td>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif"height="1" width="10" border="0">
</td>
</tr>
</table>
После создания контейнера соответствующий HTML-код и графику следует упаковать в архив container.zip.
Архитектура
Термин "
Преимущество технологии
Однако технология
Абстрагирование пользовательских элементов управления от страницы может реализовываться при помощи нескольких стратегий. Каждая из них неизменно включает определенный уровень
Одна из популярных техник, используемая в скриптовых языках, заключается в применении
Несмотря на то, что элементы управления ASP.NET представляют собой мощную концепцию, они появились сравнительно недавно и используются только на платформе Microsoft. Некоторые инструментальные средства, такие как MS
Поэтому при разработке технологии
Файл
Заполнители представляют собой фрагменты текста вида [, включенные в HTML-разметку. Чтобы устранить задержку в быстродействии, связанную с обработкой заполнителей в процессе выполнения, механизм загрузки
В терминах расположения элементов, DNN использует подход, предполагающий возможность произвольного расположения элементов на странице. Для добавления модулей с контентом дизайнер может определить произвольное количество панелей содержимого, которые могут быть связаны со сведениями о размещении модулей, хранящимися в БД. Этот подход гарантирует максимальную гибкость.
Шаблоны оформления могут быть применены на уровне узла, портала или страницы. Они также могут применяться на уровне модулей. В этом случае они называются контейнерами. Все файлы _default используется для обозначения дерева каталогов узла. Каждый портал имеет собственное дерево каталогов, имя которого соответствует его идентификатору ID в БД. Эта структура централизует требование прав доступа на запись, которое применяется к единственному каталогу в структуре сайта (рис. 14.1).
(рис 14.1) Организация каталогов порталовКаталоги Skins и Containers могут содержать неограниченное количество подкаталогов, каждый из которых представляет собой набор файлов, необходимый для визуализации
DNN использует единственную ASPX-страницу default.aspx для визуализации всех элементов управления и содержимого. Этот подход обеспечивает следующие преимущества:
Страница default.aspx содержит очень ограниченную логику - она включает код для управления элементом страницы <head> и содержит заполнитель для
Когда пользователь первый раз обращается к приложению DNN, оно анализирует URL и заголовок запроса, чтобы определить, какой Skins, в которой хранятся сведения обо всех шаблонах оформления и контейнерах. Снижение быстродействия из-за обращения к БД компенсируется кэшированием объектов данных на уровне ядра системы управления контентом.
После того, как , который хранится в каталоге admin\Skins. Этот файл осуществляет всю обработку
Пакет
*.htm, *.html - файлы определения .ascx ;*.ascx - пользовательские элементы управления, определяющие *.css - каскадные таблицы стилей, связанные с шаблонами оформления;*.gif, *.jpg, *.png, *.jpeg - вспомогательные файлы графики;*.* - другие Требуемые файлы упаковываются в zip -архив.
Рекомендуется размещать файлы
\Skins\SkinName\...
где SkinName - название создаваемого zip -архивы для последующего распространения
\Skins\SkinName\containers - каталог для размещения файлов контейнера.
\Skins\SkinName\skins - каталог для размещения файлов
Пример размещения файлов
(рис 14.2) Структура каталогов для шаблона оформления DNN
Шаблоны оформления DNN могут быть созданы двумя способами - HTML или ASCX (при помощи пользовательских элементов управления). Вариант HTML больше подходит для web-дизайнеров, не знакомых с технологией ASP.NET. Для ASP.NET-разработчиков, использующих Visual Studio, оптимальным является использование способа ASCX. Основное различие будет состоять в расширении получающегося файла и использовании
Возможно создание двух
Произвольная форма
После создания графического прототипа он разрезается на части, которые помещаются в ячейки HTML-таблицы. Получаемая HTML-разметка должна быть правильно сформирована. Это означает, что все HTML-тэги, являющиеся контейнерами, должны иметь соответствующий закрывающийся тэг. Все атрибуты тэгов не должны иметь пробелов вокруг знака " = ". Значения атрибутов должны указываться в двойных кавычках. В обычной ситуации профессиональный
При создании <td>, <div>, <, и <p>. Должна присутствовать, по меньшей мере, одна панель контента, которая должна называться " Content ". Панели контента могут располагаться в любом месте страницы. Панели контента являются свертываемыми - если во время выполнения в них не было добавлено ни одного модуля, то они становятся невидимыми. Для их добавления используется [CONTENTPANE].
Объекты [MENU:1] и [MENU:2]. В том случае, если требуется только один экземпляр объекта, то он задается без цифр: [MENU].
Объекты <dnn:Login runat="server" id="dnnLogin" Text="Signin" / ). При создании для шаблона и container.xml для контейнеров, которая применяется для всех шаблонов и контейнеров в пакете. Имеется возможность переопределения глобальной спецификации атрибутов в файле skinfilename.xml. Следующий xml-фрагмент представляет собой пример спецификации атрибутов:
<Objects>
<Object>
<Token>[LOGIN]</Token>
<Settings>
<Setting>
<Name>Text</Name>
<Value>Signin</Value>
</Setting>
</Settings>
</Object>
</Objects>
Должно существовать однозначное соответствие объявлений объектов [MENU] ) со спецификацией атрибутов в xml-файле. Это же справедливо для именованных экземпляров. Например, если необходимо включить в [MENU:1] и [MENU:2], и в xml-файле задать различные определения для их атрибутов.
При создании нескольких панелей контента необходимо указывать значение атрибута ID:
<Objects>
<Object>
<Token>[CONTENTPANE:1]</Token>
<Settings>
<Setting>
<Name>ID</Name>
<Value>LeftPane</Value>
</Setting>
</Settings>
</Object>
</Objects>
Таблица стилей в шаблонах оформления
DNN использует внешний способ задания таблицы стилей (CSS). Это значит, что DNN может иметь множественные ссылки на таблицы стилей на одной странице. Каждая ссылка задается в порядке приоритета, поэтому реализуется иерархическое переопределение. Иерархия следующая (каждая ссылка переопределяет предыдущую):
PortalModuleControl.StyleSheet ;default.css ;skin .css или skinfilename.css ;container.css или containerfilename.css ;portal .css ;Пакет (или container.css для контейнеров), которая применяется ко всем файлам шаблонов в пакете. Глобальная таблица стилей может переопределяться путем задания таблицы стилей для конкретного шаблона в пакете. Соответствующая таблица стилей имеет название, совпадающее с названием конкретного skinfilename.css.
Таблица стилей "по умолчанию" ( /Portals/_default/default.css ) содержит набор CSS-классов, которые портал использует для формирования пользовательского интерфейса.
Для того чтобы JPEG с расширением .jpg и иметь то же имя файла, что и , то экранная копия должна называться ).
Все файлы, относящиеся к ZIP -архив , а файлы контейнера - в архив container.zip. Далее оба архива упаковываются в общий архив с требуемым названием. Это позволит установить
Контейнеры являются определениями Actions. Этот элемент управления необходим для реализации функциональности модуля. Общие функции этого элемента заключаются в возможности редактировать настройки модуля и управления размещением модуля на панелях контента. Могут также реализовываться Actions. Элемент управления по умолчанию - SolPartActions отвечает за всплывающее меню, которое появляется при наведении мыши на иконку в левом верхнем углу модуля. Этот элемент управления предназначен для современных браузеров. Для устаревших браузеров используется элемент управления DropDownActions, реализованный в виде раскрывающегося списка.
Несмотря на то, что шаблоны оформления и контейнеры создаются, упаковываются и распространяются независимо, дизайнер обычно создает их комбинацию, которая предназначена для ContainerType, ContainerName и ContainerSrc для идентификации контейнера, который будет использоваться для всех модулей, добавляемых на панель. В том случае, если указанный контейнер отсутствует, используется контейнер по умолчанию.
Пример определения контейнера для панели:
<Objects>
<Object>
<Token>[CONTENTPANE:1]</Token>
<Settings>
<Setting>
<Name>ID</Name>
<Value>LeftPane</Value>
</Setting>
<Setting>
<Name>ContainerType</Name>
<Value>G</Value>
</Setting>
<Setting>
<Name>ContainerName</Name>
<Value>DNN</Value>
</Setting>
<Setting>
<Name>ContainerSrc</Name>
<Value>standard.ascx</Value>
</Setting>
</Settings>
</Object>
</Objects>
Поскольку шаблоны оформления основываются на ASCX-файлах, которые, будучи добавленными на ASPX-страницу, становятся исполняемыми, существует определенный риск, связанный с возможностью включения в них host.
Объекты
| Элемент управления | Описание | |
|---|---|---|
[ |
< dnn: runat="server" id="dnnBanner"> |
Отображает случайный рекламный |
[BREADCRUMB] |
< dnn: Breadcrumb runat="server" id="dnnBreadcrumb"> |
Отображает путь к выбранной странице в виде Название страницы 1 > Название страницы 2 > Название страницы 3 |
[CONTENTPANE] |
<div runat= " server " id= " ContentPane " > |
Добавляет заполнитель для контента модуля . |
[ |
< dnn: runat="server" id="dnnCopyright"> |
Отображение информации о правах |
[CURRENTDATE] |
< dnn: CurrentDate runat="server" id="dnnCurrentDate"> |
Отображает текущую дату . |
[DOTNETNUKE] |
< dnn: DotNetNuke runat="server" id="dnnDotnetNuke"> |
Отображение информации о правах DNN. |
[HELP] |
< dnn: Help runat="server" id="dnnHelp"> |
Отображает ссылку с просьбой о помощи . При ее выборе у клиента открывается DNN. |
[ |
< dnn: runat="server" id="dnnHostName"> |
Отображает заголовок узла, связанный с . |
[LANGUAGE] |
<dnn: Language runat="server" id="dnnLanguage" / > |
Отображает раскрывающийся список, позволяющий выбрать используемый язык . |
[LINKS] |
< dnn: Links runat="server" id="dnnLinks"> |
Отображает плоское меню ссылок, связанное с текущей страницей и родительским узлом . Полезно для |
[LOGIN] |
< dnn: Login runat="server" id="dnnLogin"> |
Элемент управления с двумя состояниями . Отображает . |
[ |
< dnn: runat="server" id="dnnLogo"> |
Отображает |
[ |
< dnn: runat="server" id="dnnPrivacy"> |
Выводит ссылку на страницу о собственнике портала . |
[SEARCH] |
< dnn: Search runat="server" id="dnnSearch"> |
Отображает строку поиска по порталу . |
[SIGNIN] |
< dnn: Signin runat="server" id="dnnSignin"> |
Отображает элемент управления, предназначенный для ввода имени пользователя и пароля . |
[SOLPARTMENU] |
< dnn: SolPartMenu runat="server" id="dnnSolPartMenu"> |
Отображает иерархическое навигационное меню . |
[ |
< dnn: runat="server" id="dnnTerms"> |
Выводит ссылку на соглашение об использовании портала . |
[TREEVIEWMENU] |
< dnn: TreeViewMenu runat="server" id="dnnTreeViewMenu"> |
Отображает иерархическое навигационное меню с использованием элемента управления . |
[USER] |
< dnn: User runat="server" id="dnnUser"> |
Элемент управления с двумя состояниями . Отображает . |
Атрибуты , приведены в табл.7.2
| Атрибут | Значение по умолчанию | Описание | |
|---|---|---|---|
[ |
|
0 |
Ширина границы вокруг |
[BREADCRUMB] |
|
breadcrumb.gif |
Разделитель между ссылками в меню . Может включать ссылки на пользовательские изображения, текст или HTML (например, <![CDATA[nbsp;<img
src="file.gif">nbsp;]]> ) |
CssClass |
SelectedTab |
||
RootLevel |
1 |
Корневой уровень отображения ссылок в меню . Возможные значения: . | |
[CONTENTPANE] |
ID |
ContentPane |
Идентификатор панели контента, которая будет отображаться в пользовательском интерфейсе и храниться в БД . |
[ |
CssClass |
SelectedTab |
|
[CURRENTDATE] |
CssClass |
SelectedTab |
|
DateFormat |
MMMM dd, yyyy |
Формат текущей даты . | |
[DOTNETNUKE] |
CssClass |
Normal |
|
[HELP] |
CssClass |
OtherTabs |
|
[ |
CssClass |
OtherTabs |
Host ( By xxxxxxxxx ) |
[LANGUAGE] |
CssClass |
||
[LINKS] |
CssClass |
CommandButton |
|
|
nbsp;nbsp; |
Разделитель между ссылками . Может включать ссылки на пользовательские изображения, текст или HTML (например, <![CDATA[nbsp;<img src="file.gif">nbsp;]]> ) |
|
Alignment |
|
Стиль меню " Ссылки " (" или " ) |
|
Level |
Same |
Определяет отображаемый уровень меню (" Same" - тот же, " - дочерний, " - родительский, " Root" - корневой) |
|
[LOGIN] |
Text |
Login |
Текст ссылки " Вход ". |
CssClass |
OtherTabs |
" Вход ". |
|
LogoffText |
|
Текст ссылки " Выход ". |
|
[ |
|
0 |
Ширина границы вокруг |
[ |
Text |
|
Текст ссылки о собственнике портала . |
CssClass |
OtherTabs |
||
[SEARCH] |
Submit |
Submit |
HTML -разметка для активации поиска (например, "Найти " или <img src= " mybutton.gif"> |
CssClass |
" Поиск ". |
||
[SOLPARTMENU] |
separatecss |
true |
Использовать CSS, определенный в таблице стилей ( . |
backcolor |
#333333 |
Цвет фона . | |
forecolor |
white |
Цвет элемента меню . | |
highlightcolor |
white |
Цвет левой и |
|
iconbackgroundcolor |
#333333 |
Цвет фона в области отображения иконки . | |
selectedbordercolor |
Цвет границы, окружающий выбранный элемент меню . | ||
selectedcolor |
#CCCCCC |
Цвет фона выбранного элемента меню . | |
selectedforecolor |
white |
Цвет выбранного элемента меню . | |
display |
|
Способ отображения элементов меню ( . | |
menubarheight |
16 |
Высота прямоугольника меню в пикселях . | |
menuborderwidth |
1 |
Ширина границы меню в пикселях . | |
menuitemheight |
21 |
Высота элемента меню в пикселях . | |
forcedownlevel |
false |
Полное отображение вложенных пунктов меню . | |
moveable |
false |
Возможность перемещения меню . | |
iconwidth |
0 |
Ширина колонки с иконкой в пикселях . | |
menueffectsshadowcolor |
dimgray |
Цвет тени . | |
menueffectsmouseouthidedelay |
500 |
Количество миллисекунд анимации эффекта сворачивания меню ( . | |
mouseouthidedelay |
1 |
Количество миллисекунд ожидания, после которого меню сворачивается при уводе мыши с него ( . | |
menueffectsmouseoverdisplay |
|
Настройка визуального эффекта при наведении мыши на элемент меню ( . | |
menueffectsmouseoverexpand |
true |
Задает необходимость разворачивания меню при наведении на него мыши . | |
fontnames |
Arial |
Шрифт | |
fontsize |
12 |
Размер шрифта | |
fontbold |
false |
Жирность шрифта | |
menueffectsshadowstrength |
3 |
Ширина эффекта . | |
menueffectsmenutransition |
None |
Способ исчезания тени (Значения: . | |
menueffectsmenutransitionlength |
0.3 |
Количество миллисекунд, требуемое на преобразование . | |
menueffectsshadowdirection |
Lower Right |
Направление, в котором будет исчезать тень (Значения: . | |
menucontainercssclass |
MainMenu _ MenuContainer |
CSS-класс для контейнера меню . | |
menubarcssclass |
MainMenu _ MenuBar |
CSS-класс для прямоугольника меню . | |
menuitemcssclass |
MainMenu _ MenuItem |
CSS-класс для элемента меню . | |
menuiconcssclass |
MainMenu _ MenuIcon |
CSS-класс для иконки меню . | |
menuitemselcssclass |
MainMenu _ MenuItemSel |
CSS-класс для элемента меню, на который наведена мышь . | |
menubreakcssclass |
MainMenu _ MenuBreak |
CSS-класс для разрыва в меню . | |
submenucssclass |
MainMenu _ |
CSS-класс для подменю . | |
menuarrowcssclass |
MainMenu _ MenuArrow |
CSS-класс для стрелки в меню . | |
| … остальные атрибуты элемента . | |||
[ |
Text |
of Use |
Текст ссылки соглашения об использовании . |
CssClass |
OtherTabs |
CSS-класс для ссылки соглашения об использовании . | |
[USER] |
Text |
|
Текст ссылки " Регистрация " |
CssClass |
OtherTabs |
CSS-класс для ссылки " Регистрация ". |
|
Описание объектов контейнеров приведены в табл. 14.3
| Элемент управления | Описание | |
|---|---|---|
[ACTIONBUTTON] |
<dnn: ActionButton runat="server" id="dnnActionButton"> |
Кнопка, используемая в модуле для вызова определенных действий . |
[CONTENTPANE] |
<div runat="server" id="ContentPane"> |
Вставляет заполнитель для контента модулей . |
[DROPDOWNACTIONS] |
< dnn: DropDownActions runat="server" id="dnnDropDownActions"> |
Раскрывающийся список для выбора определенных действий в модуле . |
[ |
< dnn: runat="server" id="dnnIcon"> |
Отображает иконку, связанную с модулем . |
[LINKACTIONS] |
< dnn: LinkActions runat="server" id="dnnLinkActions"> |
Список ссылок на действия в модуле . |
[SOLPARTACTIONS] |
< dnn: SolPartActions runat="server" id="dnnSolPartActions"> |
Всплывающее меню действий с модулем . |
[TITLE] |
< dnn: Title runat="server" id="dnnTitle"> |
Отображает заголовок модуля . |
[ |
< dnn: runat="server" id="dnnVisibility"> |
Отображает иконку, означающую, свернут модуль или развернут . |
| Атрибут | Значение по умолчанию | Описание | |
|---|---|---|---|
[ACTIONBUTTON] |
CommandName |
Тип предпринимаемого с модулем действия ( AddContent | EditContent | ContentOptions | SyndicateModule | ImportModule | ExportModule | OnlineHelp | ModuleHelp | HelpText | PrintModule | ModuleSettings | DeleteModule | ClearCache | MoveTop | MoveUp | MoveDown | MoveBottom | MovePane | MoveRoot ) |
|
CssClass |
CommandButton |
CSS-класс для кнопки | |
DisplayLink |
True |
Необходимость отображения локализованного текста команды ( True | False ) |
|
DisplayIcon |
False |
Необходимость отображения иконок для команд ( . | |
IconFile |
Файл, используемый в качестве иконки . | ||
[CONTENTPANE] |
ID |
ContentPane |
Ключевой идентификатор панели конента . |
[ |
|
0 |
Ширина границы вокруг иконки . |
[TITLE] |
CssClass |
Head |
CSS-класс для заголовка . |
В данной лабораторной работе будет разработан
(рис 14.3) Шаблон оформленияПриведенный
<table style="BORDER-COLLAPSE: collapse" cellpadding="0" width="100%" height="100%" border="0">
<tr>
<td valign="top">
<table style="BORDER-COLLAPSE: collapse" cellpadding="0" width="100%" border="0">
<tr>
<td background="tile_top.gif" valign="top" style="height: 10px">
<img src="top_left.gif" height="10" width="10" border="0">
</td>
<td background="tile_top.gif" valign="top" align="right" colspan="2" style="height: 10px">
<img src="top_right.gif" height="10" width="10" border="0">
</td>
</tr>
<tr>
<td valign="bottom" width="100%" colSpan="2">
<table style="BORDER-COLLAPSE: collapse" cellpadding="0" width="100%" border="0">
<tr>
<td vAlign="top" width="100%">
<p dir="ltr">
<img src="header_logo1.jpg" height="35" width="130" border="0">
</p>
</td>
<td valign="top" nowrap width="181">
<img src="header_metalbar_top.jpg" height="35" width="181" border="0">
</td>
</tr>
<tr>
<td colspan="2">
<img src="header_logo2.jpg" height="13" width="243" border="0">
</td>
</tr>
</table>
</td>
<td>
<table style="BORDER-COLLAPSE: collapse" cellPadding="0" width="100%" border="0">
<tr>
<td valign="top" align="right" bgColor="#ffffff" colSpan="3">
<img src="login_line_right.gif" height="10" width="60" border="0">
</td>
</tr>
<tr>
<td rowSpan="3">
<img src="login_lefttop.gif" height="38" width="27" border="0">
</td>
<td background="tile_login_top.gif" height="7">
<img src="spacer.gif" height="7" width="7" border="0">
</td>
<td rowSpan="3">
<img src="login_righttop.gif" height="38" width="61" border="0">
</td>
</tr>
<tr>
<td noWrap bgColor="#000000" height="25">
<p>
<font color="#FFFFFF">
[USER]nbsp;nbsp;
<span class="OtherTabs">|</span>
nbsp;nbsp;
[LOGIN]
</font>
</p>
</td>
</tr>
<tr>
<td background="tile_login_bottom.gif" height="6">
<img src="spacer.gif" height="6" width="6" border="0">
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign="top">
<table style="BORDER-COLLAPSE: collapse" cellPadding="0" bgColor="#ae2726" border="0">
<tr>
<td background="tile_main.jpg" vAlign="top" width="100%">
<img src="header_logo3.jpg" height="74" width="620" border="0">
</td>
<td align="right">
<img src="header_right.jpg" height="74" width="61" border="0">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign="top">
<table style="BORDER-COLLAPSE: collapse" cellPadding="0" width="100%" bgColor="#000000" border="0">
<tr>
<td vAlign="top" noWrap width="369">
<img src="menu_left.jpg" height="40" width="369" border="0">
</td>
<td background="tile_menu.jpg" nowrap width="100%">
<font color="#FFFFFF">
[SOLPARTMENU]
</font>
</td>
<td vAlign="top" noWrap width="61">
<img src="menu_right.jpg" height="40" width="61" border="0">
</td>
</tr>
<tr>
<td vAlign="top" noWrap width="369">
<img src="breadcrumbs_left.jpg" height="33" width="369" border="0">
</td>
<td width="100%" nowrap bgColor="#000000">
<font color="#FFFFFF">
[BREADCRUMB]
</font>
</td>
<td vAlign="top" noWrap width="61">
<img src="breadcrumbs_right.jpg" height="33" width="61" border="0">
</td>
</tr>
<tr>
<td vAlign="top" noWrap bgColor="#FFFFFF" width="369">
nbsp;nbsp;
<a href="/default.aspx?tabid=125">
<img src="download.gif" height="32" width="191" border="0" alt="Download the Code!">
</a>
</td>
<td width="100%" nowrap bgColor="#FFFFFF">
nbsp;
</td>
<td vAlign="top" noWrap bgColor="#FFFFFF" width="61">
nbsp;
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="100%" valign="top">
<table style="BORDER-COLLAPSE: collapse" cellPadding="0" width="100%" border="0">
<tr>
<td vAlign="top" align="middle" colspan="3">
[CONTENTPANE:3]
</td>
</tr>
<tr>
<td vAlign="top" align="middle">
[CONTENTPANE:1]
</td>
<td vAlign="top" align="middle">
[CONTENTPANE]
</td>
<td vAlign="top" align="middle">
[CONTENTPANE:2]
</td>
</tr>
<tr>
<td vAlign="top" align="middle" colspan="3">
[CONTENTPANE:4]
</td>
</tr>
</table> <br/>
</td>
</tr>
<tr>
<td vAlign="bottom">
<table style="BORDER-COLLAPSE: collapse" cellPadding="0" width="100%" border="0">
<tr>
<td align="middle" bgColor="#000000" colSpan="3" height="25">
<font color="#FFFFFF">
[LINKS]
</font>
</td>
</tr>
<tr>
<td background="tile_footer.jpg" align="middle" colSpan="3" height="25">
<font color="#FFFFFF">[HOSTNAME]nbsp;nbsp;
<span class="OtherTabs">|</span>
nbsp;nbsp;[TERMS]nbsp;nbsp;
<span class="OtherTabs">|</span>
nbsp;nbsp;[PRIVACY]
</font>
</td>
</tr>
<tr>
<td background="tile_body_bottom.jpg" vAlign="top" align="left">
<img src="body_corner_left_bottom.jpg" height="26" width="20" border="0">
</td>
<td background="tile_body_bottom.jpg" align="middle">
<font color="#000000">[DOTNETNUKE]</font>
</td>
<td background="tile_body_bottom.jpg" vAlign="top" align="right">
<img src="body_corner_right_bottom.jpg" height="26" width="20" border="0">
</td>
</tr>
</table>
</td>
</tr>
</table>
Соответствующий файл атрибутов ( ):
<Objects>
<Object>
<Token>[LINKS]</Token>
<Settings>
<Setting>
<Name>Separator</Name>
<Value><![CDATA[nbsp;nbsp;|nbsp;nbsp;]]></Value>
</Setting>
</Settings>
</Object>
<Object>
<Token>[CONTENTPANE:1]</Token>
<Settings>
<Setting>
<Name>ID</Name>
<Value>LeftPane</Value>
</Setting>
</Settings>
</Object>
<Object>
<Token>[CONTENTPANE:2]</Token>
<Settings>
<Setting>
<Name>ID</Name>
<Value>RightPane</Value>
</Setting>
</Settings>
</Object>
<Object>
<Token>[CONTENTPANE:3]</Token>
<Settings>
<Setting>
<Name>ID</Name>
<Value>TopPane</Value>
</Setting>
</Settings>
</Object>
<Object>
<Token>[CONTENTPANE:4]</Token>
<Settings>
<Setting>
<Name>ID</Name>
<Value>BottomPane</Value>
</Setting>
</Settings>
</Object>
</Objects>
Созданный HTML-файл, использованные в нем графические файлы, а также файл следует упаковать в архив .
Далее следует создать контейнер,
(рис 14.4) КонтейнерВ качестве примера можно использовать следующую HTML-разметку:
<table style="BORDER-COLLAPSE: collapse" cellPadding="0" width="100%" border="0">
<tr>
<tr vAlign="top" noWrap align="middle" colSpan="9">
<img src="spacer.gif" height="15" width="1" border="0">
</td>
</tr>
<tr>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
<td vAlign="top" noWrap width="20" colspan="2">
<img src="body_corner_left.jpg" height="42" width="20" border="0">
</td>
<td background="tile_body_top.jpg" align="middle" noWrap>
[SOLPARTACTIONS]
</td>
<td background="tile_body_top.jpg" align="middle" width="100%" nowrap>
[TITLE]
</td>
<td background="tile_body_top.jpg" align="middle" noWrap>
[VISIBILITY]
</td>
<td vAlign="top" noWrap align="right" width="20" colspan="2">
<img src="body_corner_right.jpg" height="42" width="20" border="0">
</td>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
</tr>
<tr>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
<td vAlign="top" noWrap width="1" bgColor="#c0c0c0">
<img src="spacer.gif" height="1" width="1" border="0">
</td>
<td vAlign="top" noWrap width="19">
nbsp;
</td>
<td colspan="3" align="middle">
<br/>[CONTENTPANE]
</td>
<td vAlign="top" noWrap width="19">
nbsp;
</td>
<td vAlign="top" noWrap width="1" bgColor="#c0c0c0">
<img src="spacer.gif" height="1" width="1" border="0">
</td>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
</tr>
<tr>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
<td vAlign="top" noWrap width="1" bgColor="#c0c0c0">
<img src="spacer.gif" height="1" width="1" border="0">
</td>
<td colspan="5">
nbsp;
</td>
<td vAlign="top" noWrap width="1" bgColor="#c0c0c0">
<img src="spacer.gif" height="1" width="1" border="0">
</td>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
</tr>
<tr>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif" height="1" width="10" border="0">
</td>
<td vAlign="top" noWrap width="20" colspan="2">
<img src="body_corner_left_bottom.jpg" height="26" width="20" border="0">
</td>
<td background="tile_body_bottom.jpg" colspan="3" align="right">
[PRINTMODULE]
</td>
<td vAlign="top" noWrap align="right" width="20" colspan="2">
<img src="body_corner_right_bottom.jpg" height="26" width="20" border="0">
</td>
<td vAlign="top" noWrap width="10">
<img src="spacer.gif"height="1" width="10" border="0">
</td>
</tr>
</table>
После создания контейнера соответствующий HTML-код и графику следует упаковать в архив container.zip.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.