-
Notifications
You must be signed in to change notification settings - Fork 91
/
МенеджерПлагинов.os
185 lines (129 loc) · 7.04 KB
/
МенеджерПлагинов.os
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#Использовать fs
#Использовать json
#Использовать logos
#Использовать "./internal"
Перем ИндексПлагинов;
Перем КаталогПлагинов;
#Область Экспортные_методы
// Возвращает индекс плагинов
//
// Возвращаемое значение:
// Соответствие - набор плагинов
// * ключ - Строка - имя плагина
// * значение - Объект - ссылка на произвольный объект
//
Функция ПолучитьИндексПлагинов() Экспорт
Возврат ИндексПлагинов;
КонецФункции
// Выполняет загрузку плагинов из каталога
//
Процедура ЗагрузитьПлагины() Экспорт
ТекущийЗагрузчикПлагинов = Новый ЗагрузчикПлагинов(КаталогПлагинов);
ТекущийЗагрузчикПлагинов.ЗагрузитьПлагины();
ИндексПлагинов = ТекущийЗагрузчикПлагинов.ИндексПлагинов();
КонецПроцедуры
// Создает и возвращает новый МенеджерПодписок для текущего индекса плагинов
//
// Возвращаемое значение:
// Объект.МенеджерПодписок - ссылка на новый объект класса <МенеджерПодписок>
//
Функция НовыйМенеджерПодписок() Экспорт
Возврат Новый МенеджерПодписок(ИндексПлагинов);
КонецФункции
// Производит отключение массива плагинов
//
// Параметры:
// МассивПлагинов - Массив - Элементы типа Строка, имена плагинов
//
Процедура ОтключитьПлагины(МассивПлагинов) Экспорт
Для каждого ОтключаемыйПлагин Из МассивПлагинов Цикл
Плагин = ИндексПлагинов[ОтключаемыйПлагин];
Если Плагин = Неопределено Тогда
Продолжить;
КонецЕсли;
Плагин.Отключить();
КонецЦикла;
КонецПроцедуры
// Включает набор плагинов
//
// Параметры:
// МассивПлагинов - Массив, Соответствие - набор наименований плагинов
//
Процедура ВключитьПлагины(МассивПлагинов) Экспорт
Для каждого ВключаемыеПлагин Из МассивПлагинов Цикл
Если ТипЗнч(ВключаемыеПлагин) = Тип("Строка") Тогда
ВключитьПлагин(ВключаемыеПлагин);
Иначе
ВключитьПлагин(ВключаемыеПлагин.Ключ);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Включает плагин к использованию
//
// Параметры:
// ИмяПлагина - Строка - имя плагина для включения
//
Процедура ВключитьПлагин(Знач ИмяПлагина) Экспорт
Плагин = ИндексПлагинов[ИмяПлагина];
Если Плагин = Неопределено Тогда
Возврат;
КонецЕсли;
Плагин.Включить();
КонецПроцедуры
Процедура ВключитьВсеПлагины() Экспорт
Для каждого КлючЗначение Из ИндексПлагинов Цикл
Плагин = КлючЗначение.Значение;
Плагин.Включить();
КонецЦикла;
КонецПроцедуры
Процедура ОтключитьВсеПлагины() Экспорт
Для каждого КлючЗначение Из ИндексПлагинов Цикл
Плагин = КлючЗначение.Значение;
Плагин.Отключить();
КонецЦикла;
КонецПроцедуры
// Устанавливает каталог установки и чтения плагинов
//
// Параметры:
// ПутьККаталогу - Строка - полный путь к каталогу хранения плагинов
//
Процедура УстановитьКаталогПлагинов(Знач ПутьККаталогу) Экспорт
КаталогПлагинов = ПутьККаталогу;
КонецПроцедуры
// Производит установку пакета плагинов из файла
//
// Параметры:
// ПутьКФайлуПакета - Строка - полный путь к файлу пакета плагина
//
Процедура УстановитьФайлПлагин(Знач ПутьКФайлуПакета) Экспорт
Установщик = Новый УстановщикПлагинов();
Установщик.УстановитьКаталогПлагинов(КаталогПлагинов);
Установщик.УстановитьФайлПлагина(ПутьКФайлуПакета);
КонецПроцедуры
// Производит установку пакета плагинов по имени
//
// Параметры:
// ИмяПлагина - Строка - имя пакета плагинов на хабе
//
Процедура УстановитьПлагинПоИмени(Знач ИмяПлагина) Экспорт
Установщик = Новый УстановщикПлагинов();
Установщик.УстановитьКаталогПлагинов(КаталогПлагинов);
Установщик.УстановитьПлагинПоИмени(ИмяПлагина);
КонецПроцедуры
// Устанавливает режим отладки для индекса плагинов
//
Процедура УстановитьРежимОтладки() Экспорт
Для каждого КлючЗначение Из ИндексПлагинов Цикл
Плагин = КлючЗначение.Значение;
Плагин.ВключитьОтладку();
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область Вспомогательные_процедуры_и_функции
Процедура ПриСозданииОбъекта(Знач ЗначениеКаталогПлагинов = Неопределено)
ИндексПлагинов = Новый Соответствие;
Если ЗначениеЗаполнено(ЗначениеКаталогПлагинов) Тогда
КаталогПлагинов = ЗначениеКаталогПлагинов;
КонецЕсли;
КонецПроцедуры
#КонецОбласти