Skip to content

Commit 3cdb4f5

Browse files
committed
HTML просмотр изменений в релизах в форме проверки обнволений
1 parent 1e8753c commit 3cdb4f5

File tree

5 files changed

+285
-21
lines changed

5 files changed

+285
-21
lines changed

src/Инструменты/src/CommonTemplates/УИ_showdown/Template.bin

Lines changed: 3 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="0c96dda5-60ee-42cd-903c-ffe6b0786f79">
3+
<name>УИ_showdown</name>
4+
<synonym>
5+
<key>ru</key>
6+
<value>Showdown</value>
7+
</synonym>
8+
<templateType>BinaryData</templateType>
9+
</mdclass:CommonTemplate>

src/Инструменты/src/Configuration/Configuration.mdo

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
<commonTemplates>CommonTemplate.УИ_MonacoEditorWindows</commonTemplates>
9191
<commonTemplates>CommonTemplate.УИ_ШаблонОбработки</commonTemplates>
9292
<commonTemplates>CommonTemplate.УИ_ctool1cd</commonTemplates>
93+
<commonTemplates>CommonTemplate.УИ_showdown</commonTemplates>
9394
<commonModules>CommonModule.ДополнительныеОтчетыИОбработки</commonModules>
9495
<commonModules>CommonModule.ПодключаемыеКомандыПереопределяемый</commonModules>
9596
<commonModules>CommonModule.УИ_</commonModules>

src/Инструменты/src/DataProcessors/УИ_ТехПоддержка/Forms/ОбновлениеИнструментов/Form.form

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -185,18 +185,19 @@
185185
</extInfo>
186186
</items>
187187
<items xsi:type="form:FormField">
188-
<name>ОписаниеИзменений</name>
188+
<name>ПолеИзменений</name>
189189
<id>11</id>
190190
<visible>true</visible>
191191
<enabled>true</enabled>
192192
<userVisible>
193193
<common>true</common>
194194
</userVisible>
195195
<dataPath xsi:type="form:DataPath">
196-
<segments>ОписаниеИзменений</segments>
196+
<segments>ПолеИзменений</segments>
197197
</dataPath>
198+
<titleLocation>None</titleLocation>
198199
<extendedTooltip>
199-
<name>ПолеРасширеннаяПодсказка1</name>
200+
<name>ПолеИзмененийРасширеннаяПодсказка</name>
200201
<id>13</id>
201202
<visible>true</visible>
202203
<enabled>true</enabled>
@@ -211,7 +212,7 @@
211212
</extInfo>
212213
</extendedTooltip>
213214
<contextMenu>
214-
<name>ПолеКонтекстноеМеню1</name>
215+
<name>ПолеИзмененийКонтекстноеМеню</name>
215216
<id>12</id>
216217
<visible>true</visible>
217218
<enabled>true</enabled>
@@ -220,13 +221,21 @@
220221
</userVisible>
221222
<autoFill>true</autoFill>
222223
</contextMenu>
223-
<type>TextDocumentField</type>
224+
<type>HTMLDocumentField</type>
224225
<readOnly>true</readOnly>
225226
<editMode>Enter</editMode>
226227
<showInHeader>true</showInHeader>
227228
<headerHorizontalAlign>Left</headerHorizontalAlign>
228229
<showInFooter>true</showInFooter>
229-
<extInfo xsi:type="form:TextDocFieldExtInfo">
230+
<extInfo xsi:type="form:HtmlFieldExtInfo">
231+
<handlers>
232+
<event>DocumentComplete</event>
233+
<name>ПолеИзмененийДокументСформирован</name>
234+
</handlers>
235+
<handlers>
236+
<event>OnClick</event>
237+
<name>ПолеИзмененийПриНажатии</name>
238+
</handlers>
230239
<width>50</width>
231240
<autoMaxWidth>true</autoMaxWidth>
232241
<height>10</height>
@@ -413,6 +422,24 @@
413422
<common>true</common>
414423
</edit>
415424
</attributes>
425+
<attributes>
426+
<name>ПолеИзменений</name>
427+
<title>
428+
<key>ru</key>
429+
<value>Поле изменений</value>
430+
</title>
431+
<id>9</id>
432+
<valueType>
433+
<types>String</types>
434+
<stringQualifiers/>
435+
</valueType>
436+
<view>
437+
<common>true</common>
438+
</view>
439+
<edit>
440+
<common>true</common>
441+
</edit>
442+
</attributes>
416443
<formCommands>
417444
<name>Обновить</name>
418445
<title>

src/Инструменты/src/DataProcessors/УИ_ТехПоддержка/Forms/ОбновлениеИнструментов/Module.bsl

Lines changed: 239 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,53 @@
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+
View = Элемент.Документ.defaultView;
28+
View.addText("preview", ОписаниеИзменений);
29+
View.markdownConvert();
30+
КонецПроцедуры
31+
32+
33+
&НаКлиенте
34+
Процедура ПолеИзмененийПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
35+
СтандартнаяОбработка = Ложь;
36+
37+
Если ЗначениеЗаполнено(ДанныеСобытия.href) Тогда
38+
УИ_ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку(ДанныеСобытия.href);
39+
КонецЕсли;
40+
КонецПроцедуры
41+
#КонецОбласти
42+
43+
#Область ОбработчикиСобытийЭлементовТаблицыФормы //<ИмяТаблицыФормы>
44+
45+
// Код процедур и функций
46+
47+
#КонецОбласти
48+
49+
#Область ОбработчикиКомандФормы
50+
151
&НаКлиенте
252
Процедура Обновить(Команда)
353
Если ОбновлениеЧерезСкачиваниеФайлаПоставки Тогда
@@ -7,6 +57,182 @@
757
КонецЕсли;
858
КонецПроцедуры
959

60+
61+
#КонецОбласти
62+
63+
#Область СлужебныеПроцедурыИФункции
64+
65+
&НаСервере
66+
Процедура УстановитьТекстПоляИзменений()
67+
БиблиотекаShowdown= ПолучитьОбщийМакет("УИ_showdown");
68+
АдресБиблиотеки = ПоместитьВоВременноеХранилище(БиблиотекаShowdown, УникальныйИдентификатор);
69+
70+
СтильCSS=
71+
"
72+
|h2, .wiki h1 {font-size: 20px;}
73+
|h3, .wiki h2 {font-size: 16px;}
74+
|h4, .wiki h3 {font-size: 13px;}
75+
|
76+
|
77+
|/***** Wiki *****/
78+
|div.wiki table {
79+
| border-collapse: collapse;
80+
| margin-bottom: 1em;
81+
|}
82+
|
83+
|div.wiki table, div.wiki td, div.wiki th {
84+
| border: 1px solid #bbb;
85+
| padding: 4px;
86+
|}
87+
|
88+
|div.wiki th{
89+
| background-color: #EEEEEE;
90+
|}
91+
|
92+
|div.wiki .wiki-class-noborder, div.wiki .wiki-class-noborder td, div.wiki .wiki-class-noborder th {border:0;}
93+
|
94+
|div.wiki .external {
95+
| background-position: 0% 60%;
96+
| background-repeat: no-repeat;
97+
| padding-left: 12px;
98+
|}
99+
|
100+
|div.wiki a {word-wrap: break-word;}
101+
|div.wiki a.new {color: #b73535;}
102+
|
103+
|div.wiki ul, div.wiki ol {margin-bottom:1em;}
104+
|div.wiki li>ul, div.wiki li>ol {margin-bottom: 0;}
105+
|
106+
|div.wiki pre {
107+
| margin: 1em 1em 1em 1.6em;
108+
| padding: 8px;
109+
// | background-color: #fafafa;
110+
| border: 1px solid #e2e2e2;
111+
| border-radius: 3px;
112+
| width:auto;
113+
| overflow-x: auto;
114+
| overflow-y: hidden;
115+
|}
116+
|
117+
|div.wiki ul.toc {
118+
| background-color: #ffffdd;
119+
| border: 1px solid #e4e4e4;
120+
| padding: 4px;
121+
| line-height: 1.2em;
122+
| margin-bottom: 12px;
123+
| margin-right: 12px;
124+
| margin-left: 0;
125+
| display: table
126+
|}
127+
|* html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
128+
|
129+
|div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
130+
|div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
131+
|div.wiki ul.toc ul { margin: 0; padding: 0; }
132+
|div.wiki ul.toc li {list-style-type:none; margin: 0; font-size:12px;}
133+
|div.wiki ul.toc>li:first-child {margin-bottom: .5em; color: #777;}
134+
|div.wiki ul.toc li li {margin-left: 1.5em; font-size:10px;}
135+
|div.wiki ul.toc a {
136+
| font-size: 0.9em;
137+
| font-weight: normal;
138+
| text-decoration: none;
139+
| color: #606060;
140+
|}
141+
|div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
142+
|
143+
|a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
144+
|a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
145+
|h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
146+
|
147+
|div.wiki img {vertical-align:middle; max-width:100%;}
148+
|blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 0;}
149+
|blockquote blockquote { margin-left: 0;}
150+
|
151+
|";
152+
153+
ПолеИзменений=
154+
"<html>
155+
|<head>
156+
| <meta charset=""UTF-8"">
157+
| <style>
158+
| html {
159+
| word-break: break-all;
160+
| }
161+
| " + СтильCSS + "
162+
| </style>
163+
|
164+
|</head>
165+
|
166+
|<body>
167+
| <div id=""wiki-container""></div>
168+
| <button id=""interactionButton"" style=""display: none"">Кнопка взаимодействия</button>
169+
| <script src="""+АдресБиблиотеки+""" type=""text/javascript"" charset=""utf-8""></script>
170+
| <script>
171+
|
172+
| var markdownTexts={};
173+
| var converter = new showdown.Converter();
174+
| converter.setFlavor('github');
175+
|
176+
| function clearTexts(){
177+
| markdownTexts={};
178+
| }
179+
|
180+
| function addText(key, text){
181+
| markdownTexts[key]=text;
182+
| }
183+
| function deleteText(key){
184+
| delete markdownTexts[key];
185+
| }
186+
| function convertOneText(key,text){
187+
|
188+
| var newdiv = document.createElement('div');
189+
| newdiv.className = 'wiki';
190+
| newdiv.id = key;
191+
|
192+
| newdiv.innerHTML = converter.makeHtml(text);
193+
|
194+
| return newdiv;
195+
| }
196+
|
197+
| function mdToHtml(text){
198+
| return converter.makeHtml(text);
199+
| }
200+
| function htmlToMd(text){
201+
| return converter.makeMarkdown(text);
202+
| }
203+
| function markdownConvert(){
204+
| var container=document.getElementById('wiki-container');
205+
| container.innerHTML='';
206+
|
207+
| for (var key in markdownTexts) {
208+
| if (markdownTexts.hasOwnProperty(key)) {
209+
| var markText = markdownTexts[key];
210+
|
211+
| var newdiv=convertOneText(key,markText);
212+
|
213+
| container.appendChild(newdiv);
214+
| }
215+
| }
216+
| var elems= document.getElementsByTagName('code');
217+
|
218+
| for(var i = 0; i < elems.length; i++) {
219+
| hljs.highlightBlock(elems[i]);
220+
| }
221+
|
222+
| }
223+
|
224+
| </script>
225+
226+
|</body>
227+
|
228+
|
229+
|</html>
230+
|";
231+
232+
КонецПроцедуры
233+
234+
235+
10236
&НаКлиенте
11237
Процедура ОбновитьЧерезСкачиваниеФайла()
12238
ИмяФайла=УИ_ОбщегоНазначенияКлиентСервер.ИмяФайлаСкачивания();
@@ -146,13 +372,18 @@
146372
МассивРелизов = УИ_КоннекторHTTP.GetJson(АдресЗапроса);
147373

148374
МаксимальныйРелиз = "0.0.0";
149-
СоответствиеОписанияРелизов = Новый Соответствие;
375+
// СоответствиеОписанияРелизов = Новый Соответствие;
376+
377+
ОписаниеИзменений = "";
150378

151379
Для Каждого ТекРелиз Из МассивРелизов Цикл
152380
ВерсияТекРелиза = СтрЗаменить(ТекРелиз["tag_name"], "v", "");
153381

154382
Если УИ_ОбщегоНазначенияКлиентСервер.СравнитьВерсииБезНомераСборки(ВерсияТекРелиза, ТекущаяВерсия) > 0 Тогда
155-
СоответствиеОписанияРелизов.Вставить(ВерсияТекРелиза, ТекРелиз);
383+
// СоответствиеОписанияРелизов.Вставить(ВерсияТекРелиза, ТекРелиз);
384+
385+
ОписаниеИзменений = ОписаниеИзменений + "# ["+ВерсияТекРелиза+"]("+ТекРелиз["html_url"]+")" + Символы.ПС;
386+
ОписаниеИзменений = ОписаниеИзменений + ТекРелиз["body"] + Символы.ПС;
156387
КонецЕсли;
157388

158389
Если УИ_ОбщегоНазначенияКлиентСервер.СравнитьВерсииБезНомераСборки(ВерсияТекРелиза, МаксимальныйРелиз) <= 0 Тогда
@@ -175,15 +406,11 @@
175406
Прервать;
176407
КонецЦикла;
177408
КонецЕсли;
178-
КонецЦикла;
179409

180-
АктуальнаяВерсия = МаксимальныйРелиз;
181410

182-
ОписаниеИзменений = "";
183-
Для Каждого РелизОписания Из СоответствиеОписанияРелизов Цикл
184-
ОписаниеИзменений = ОписаниеИзменений + РелизОписания.Ключ + Символы.ПС;
185-
ОписаниеИзменений = ОписаниеИзменений + РелизОписания.Значение["body"] + Символы.ПС;
186411
КонецЦикла;
412+
413+
АктуальнаяВерсия = МаксимальныйРелиз;
187414
КонецПроцедуры
188415

189416
&НаСервере
@@ -193,16 +420,13 @@
193420
КонецЕсли;
194421

195422
Элементы.ФормаОбновить.Видимость = НеобходимостьОбновления;
196-
Элементы.ОписаниеИзменений.Видимость = НеобходимостьОбновления;
423+
Элементы.ПолеИзменений.Видимость = НеобходимостьОбновления;
197424

198425
Если ОбновлениеЧерезСкачиваниеФайлаПоставки Тогда
199426
Элементы.ФормаОбновить.Заголовок="Скачать";
200427
КонецЕсли;
201428
КонецПроцедуры
202429

203-
&НаСервере
204-
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
205-
ЗаполнитьТекущуюВерсию();
206-
ЗаполнитьАктуальнуюВерсиюИОписаниеИзменений();
207-
УстановитьНеобходимостьОбновления();
208-
КонецПроцедуры
430+
431+
#КонецОбласти
432+

0 commit comments

Comments
 (0)