-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontrols.ru.json
More file actions
75 lines (75 loc) · 17.1 KB
/
controls.ru.json
File metadata and controls
75 lines (75 loc) · 17.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
[
{ "Key": "PageTitle", "Value": "Пользовательские элементы" },
{ "Key": "HeaderTitle", "Value": "Пользовательские элементы" },
{ "Key": "HeaderDescription", "Value": "Может показаться, что пользовательские элементы управления являются обычными включаемыми файлами, но это не так. В пользовательских элементах можно размещать другие элементы. Пользовательские элементы могут иметь свойства и обработчики событий. Объекты пользовательских элементов можно легко описать в разметке." },
{ "Key": "IntroductionText1", "Value": "Пользовательские элементы могут играть роль простых вставок (include), либо состоять из класса и разметки <strong>HTML</strong>." },
{ "Key": "IntroductionText2", "Value": "В пользовательских элементах нельзя использовать директивы, и они не могут иметь собственных файлов локализации." },
{ "Key": "IntroductionText3", "Value": "Пользовательские элементы могут содержать любой код, включая код <strong>PHP</strong>." },
{ "Key": "IntroductionText4", "Value": "Каждый размещенный на странице экземпляр пользовательского элемента управления может иметь свои, уникальные, значения свойств." },
{ "Key": "IntroductionText5", "Value": "Свойства пользовательских элементов могут ссылаться на другие классы и легко описываются в коде <strong>HTML</strong>." },
{ "Key": "IntroductionText6", "Value": "Пользовательские элементы могут размещаться в шаблонах и страницах контента, без каких-либо ограничений." },
{ "Key": "RegistrationAndPlacement", "Value": "Регистрация и размещение элементов" },
{ "Key": "UserControlsAsIncludeFiles", "Value": "Пользовательские элементы, как замена включаемым файлам" },
{ "Key": "ObjectModel", "Value": "Объектная модель" },
{ "Key": "RegistrationAndPlacementText1", "Value": "Перед размещением элементов на странице, их нужно зарегистрировать. Это реализуется при помощи директивы <a href=\"/pages.php${Lang}#directive-register\">#Register</a>." },
{ "Key": "RegistrationAndPlacementText2", "Value": "Регистрировать следует только те элементы, которые потребуются на конкретной странице." },
{ "Key": "RegistrationAndPlacementText3", "Value": "В следующем примере показана регистрация на странице элемента <code>Message</code>." },
{ "Key": "RegistrationAndPlacementText4", "Value": "В параметре <code>Src</code> указывается путь к основному файлу элемента. Параметры <code>TagPrefix</code> и <code>TagName</code> содержат имя для размещения элемента на странице." },
{ "Key": "RegistrationAndPlacementText5", "Value": "В следующем примере показано размещение нескольких экземпляров зарегистрированного элемента <code>Message</code>." },
{ "Key": "ExampleMessage1", "Value": "Привет, мир! Это сообщение #1!" },
{ "Key": "ExampleMessage2", "Value": "Это сообщение #2!" },
{ "Key": "ExampleMessage3", "Value": "Таких сообщений может быть сколько угодно!" },
{ "Key": "RegistrationAndPlacementText6", "Value": "Как правило, <code>TagPrefix</code> имеет значение <strong>php</strong>, а <code>TagName</code> соответствует имени элемента, но это не является обязательным требованием." },
{ "Key": "RegistrationAndPlacementText7", "Value": "В следующем примере показано использование нестандартных значений <code>TagPrefix</code> и <code>TagName</code>." },
{ "Key": "RegistrationAndPlacementText8", "Value": "На одной странице можно размещать неограниченное число элементов с различными значениями свойств." },
{ "Key": "UserControlsAsIncludeFilesText1", "Value": "Пользовательские элементы могут быть заменой обычным включаемым файлам (<strong>include</strong>)." },
{ "Key": "UserControlsAsIncludeFilesText2", "Value": "В следующем примере показан простой элемент управления." },
{ "Key": "SimpleExampleText1", "Value": "Это простой элемент управления, по сути просто вставка (include)." },
{ "Key": "SimpleExampleText2", "Value": "Элемент может содержать любой код и теги." },
{ "Key": "UserControlsAsIncludeFilesText3", "Value": "Но несмотря на то, что элемент управления не имеет явного класса, класс для него все равно создается. Это позволяет использовать свойства и передавать в экземпляр элемента любые текстовые значения для этих свойств." },
{ "Key": "UserControlsAsIncludeFilesText4", "Value": "В следующем примере показан исходный код элемента <code>Panel</code>, который состоит лишь из разметки с блоками серверного кода и не имеет явного класса. Элемент ожидает два анонимных свойства <code>Title</code> и <code>Content</code>. Значения для этих свойств можно передать при размещении элемента на странице и они будут обработаны, как явно определенные свойства." },
{ "Key": "ObjectModelText1", "Value": "Как и в случае со страницами контента, при объектной модели, в основном файле элемента управления размещается класс, а в файле с расширением <strong>.html.php</strong> - разметка." },
{ "Key": "ObjectModelText2", "Value": "В следующем примере показан пользовательский элемент <code>Message</code>, который используется на данном сайте. Класс элемента описан в файле <strong>Message.php</strong>, а разметка - в файле <strong>Message.html.php</strong>." },
{ "Key": "ObjectModelText3", "Value": "Любому публичном свойству класса элемента управления можно установить значение при помощи кода <strong>HTML</strong>, либо программно в обработчике <a href=\"/pages.php${Lang}#load\">события загрузки страницы</a>." },
{ "Key": "ObjectModelText4", "Value": "При программной работе, доступ к определенному элементу осуществляется по идентификатору элемента. По умолчанию, каждому элементу назначается идентификатор автоматически и это может быть не очень удобно. Идентификатор элементу управления можно указать вручную, для это используется свойство <code>ID</code>." },
{ "Key": "ObjectModelText5", "Value": "Учитывайте, что уникальность идентификаторов в текущей реализации движка не проверяется!" },
{ "Key": "ObjectModelText6", "Value": "В следующем примере показано явное определение идентификаторов у двух экземпляров элемента <code>Message</code>." },
{ "Key": "Example2Message1", "Value": "Сообщение #1" },
{ "Key": "Example2Message2", "Value": "Другое сообщение" },
{ "Key": "ObjectModelText7", "Value": "В обработчике <a href=\"/pages.php${Lang}#load\">события загрузки страницы</a>, при необходимости, можно программно указать текст для этих элементов." },
{ "Key": "Example3Message1", "Value": "Текст этого сообщения установлен программно." },
{ "Key": "Example3Message2", "Value": "И для этого сообщения, текст тоже установлен программно." },
{ "Key": "ObjectModelText8", "Value": "Свойства элементов управления могут содержать ссылки на другие элементы или представлять коллекции. И всё это можно описать в разметке!" },
{ "Key": "ObjectModelText9", "Value": "Например, на этом сайте используется пользовательский элемент управления <code>TabControl</code>, который состоит из: файла разметки <strong>TabControl.html.php</strong>, класса <code>TabControl</code> и класса <code>TabItem</code>. Класс <code>TabItem</code> представляет вкладку <code>TabControl</code> и на уровне <code>TabControl</code> представлен в виде массива <code>Items</code>." },
{ "Key": "ObjectModelText10", "Value": "Поскольку свойство <code>Items</code> является коллекцией, т.е. может иметь вложенные элементы, то в коде <strong>HTML</strong> оно должно быть представлено в виде тега <code>Items</code> с вложенными экземплярами <code>TabItem</code>." },
{ "Key": "ObjectModelText11", "Value": "В следующем примере показан вариант размещения экземпляра <code>TabControl</code> на странице." },
{ "Key": "LocalizationText1", "Value": "Пользовательские элементы управления не имеют собственных файлов локализации и используют глобальные ресурсы (<strong>global.json</strong>), либо ресурсы страницы, на которой размещаются. Таким образом, один и тот же ключ ресурса локализации в пользовательских элементах управления может иметь разное значение на разных страницах сайта." },
{ "Key": "ClassControlText1", "Value": "Класс <code>\\Nemiro\\UI\\Control</code> (далее <code>Control</code>) представляет пользовательский элемент управления." },
{ "Key": "ClassControlText2", "Value": "От класса <code>Control</code> должны наследоваться (<code>extends</code>) классы всех пользовательских элементов управления." },
{ "Key": "ClassControlText3", "Value": "Если у пользовательского элемента нет класса, то использует экземпляр класса <code>Control</code> по умолчанию, с ограниченными возможностями." },
{ "Key": "ClassControlText4", "Value": "В следующем фрагменте кода показан вариант наследования класса пользовательского элемента <code>Menu</code> от базового класса <code>Control</code>." },
{ "Key": "PropertiesControlText1", "Value": "Класс <code>Control</code> имеет следующие публичные свойства." },
{ "Key": "ControlDefaultValues", "Value": "Коллекция значений по умолчанию.<br />Используется для технических нужд." },
{ "Key": "ControlSource", "Value": "Путь к основному файлу элемента управления." },
{ "Key": "ControlTagPrefix", "Value": "Префикс имени элемента управления." },
{ "Key": "ControlTagName", "Value": "Имя элемента управления." },
{ "Key": "ControlName", "Value": "Имя элемента управления с учетом префикса." },
{ "Key": "ControlParent", "Value": "Ссылка на родителя." },
{ "Key": "ControlBody", "Value": "Тело элемента управления. Используется для вывода на страницу.<br />Значение может быть переопределено в обработчике события <a href=\"#loadComplete\">LoadComplete</a>." },
{ "Key": "PropertiesControlText2", "Value": "Помимо этого, существует виртуальное свойство <code>Content</code>, которое может быть определено в классах-потомках." },
{ "Key": "PropertiesControlText3", "Value": "Свойство <code>Content</code> используется в качестве значения контента элемента, когда элемент в разметке содержит закрывающий тег." },
{ "Key": "PropertiesControlText4", "Value": "В следующем примере показан вариант явного и неявного указания значения свойству <code>Content</code>." },
{ "Key": "PropertiesControlText5", "Value": "Этот текст неявным образом будет помещен в свойство Content." },
{ "Key": "PropertiesControlText6", "Value": "Этот текст явным образом помещен в свойство Content." },
{ "Key": "EventsControlText1", "Value": "У пользовательских элементов управления существует всего два события: <code>Load</code> и <code>LoadComplete</code>." },
{ "Key": "EventsControlText2", "Value": "Оба события происходят после события <a href=\"/pages.php${Lang}#load\">Load</a> и до возникновения события <a href=\"/pages.php${Lang}#loadСomplete\">LoadComplete</a> страницы." },
{ "Key": "EventLoadText1", "Value": "Событие <code>Load</code> происходит перед формированием данных пользовательского элемента управления для вывода." },
{ "Key": "EventLoadText2", "Value": "В обработчике этого события, теоретически, можно изменить <code>Source</code>, но лучше этого не делать." },
{ "Key": "EventLoadText3", "Value": "Обработчик <code>Load</code> может быть полезен для динамического изменения значений пользовательских свойств элемента управления." },
{ "Key": "EventLoadText4", "Value": "В следующем примере показано изменение значения свойства <code>Content</code> в упрощенной реализации элемента <code>Message</code>." },
{ "Key": "ExampleEventsMessageText1", "Value": "Текст сообщения" },
{ "Key": "ExampleEventsMessageText2", "Value": "Сообщение" },
{ "Key": "EventLoadCompleteText1", "Value": "Событие <code>LoadComplete</code> происходит после формирования данных." },
{ "Key": "EventLoadCompleteText2", "Value": "В обработчике этого события можно изменить значение свойства <code>Body</code>, которое содержит данные элемента для вывода на страницу." },
{ "Key": "EventLoadCompleteText3", "Value": "В следующем примере показано переопределение значения свойства <code>Body</code> в упрощенной реализации элемента <code>Message</code>." }
]