1
0
mirror of https://github.com/BlizD/Tasks.git synced 2025-01-14 03:20:16 +02:00

#31 Открытие задачи по ссылке

This commit is contained in:
Anton Ivanov 2017-04-22 09:47:20 +03:00
parent acb35f177d
commit c1c2be0bde
3 changed files with 297 additions and 92 deletions

View File

@ -255,22 +255,35 @@
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаСодержаниеФорматированноеРасширеннаяПодсказка" id="197"/>
<ChildItems>
<CommandBar name="КоманднаяПанельРедактирования" id="76">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Командная панель редактирования</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Командная панель редактирования</v8:content>
</v8:item>
</ToolTip>
<CommandSource>Item.Содержание</CommandSource>
<ExtendedTooltip name="КоманднаяПанельРедактированияExtendedTooltip" id="77"/>
</CommandBar>
<UsualGroup name="Группа13" id="475">
<Group>Horizontal</Group>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="Группа13РасширеннаяПодсказка" id="476"/>
<ChildItems>
<Button name="СодержаниеКомандаОткрытьЗадачу" id="473">
<Type>UsualButton</Type>
<CommandName>Form.Command.КомандаОткрытьЗадачу</CommandName>
<ExtendedTooltip name="СодержаниеКомандаОткрытьЗадачуРасширеннаяПодсказка" id="474"/>
</Button>
<CommandBar name="КоманднаяПанельРедактирования" id="76">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Командная панель редактирования</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Командная панель редактирования</v8:content>
</v8:item>
</ToolTip>
<CommandSource>Item.Содержание</CommandSource>
<ExtendedTooltip name="КоманднаяПанельРедактированияExtendedTooltip" id="77"/>
</CommandBar>
</ChildItems>
</UsualGroup>
<FormattedDocumentField name="Содержание" id="73">
<DataPath>ФорматированныйТекст</DataPath>
<Title>
@ -279,6 +292,7 @@
<v8:content>Содержание</v8:content>
</v8:item>
</Title>
<TitleLocation>None</TitleLocation>
<AutoMaxHeight>false</AutoMaxHeight>
<ContextMenu name="СодержаниеКонтекстноеМеню" id="74"/>
<ExtendedTooltip name="СодержаниеРасширеннаяПодсказка" id="75"/>
@ -310,69 +324,81 @@
</ToolTip>
<ExtendedTooltip name="ГруппаСтраницаТекстРасширеннаяПодсказка" id="443"/>
<ChildItems>
<CommandBar name="ГруппаКоманднаяПанельMarkdown" id="449">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа командная панель markdown</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа командная панель markdown</v8:content>
</v8:item>
</ToolTip>
<ExtendedTooltip name="ГруппаКоманднаяПанельMarkdownРасширеннаяПодсказка" id="450"/>
<UsualGroup name="Группа14" id="481">
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="Группа14РасширеннаяПодсказка" id="482"/>
<ChildItems>
<Button name="КомандаMDЖирный" id="455">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDЖирный</CommandName>
<ExtendedTooltip name="КомандаMDЖирныйРасширеннаяПодсказка" id="456"/>
<Button name="КомандаОткрытьЗадачу" id="477">
<Type>UsualButton</Type>
<CommandName>Form.Command.КомандаОткрытьЗадачу</CommandName>
<ExtendedTooltip name="КомандаОткрытьЗадачуРасширеннаяПодсказка" id="478"/>
</Button>
<Button name="КомандаMDКурсив" id="457">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDКурсив</CommandName>
<ExtendedTooltip name="КомандаMDКурсивРасширеннаяПодсказка" id="458"/>
</Button>
<Button name="КомандаMDЗачеркнутый" id="465">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDЗачеркнутый</CommandName>
<ExtendedTooltip name="КомандаMDЗачеркнутыйРасширеннаяПодсказка" id="466"/>
</Button>
<Button name="КомандаMDМаркерыСписок" id="461">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDМаркерыСписок</CommandName>
<ExtendedTooltip name="КомандаMDМаркерыСписокРасширеннаяПодсказка" id="462"/>
</Button>
<Button name="КомандаMDНумерованныйСписок" id="459">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDНумерованныйСписок</CommandName>
<ExtendedTooltip name="КомандаMDНумерованныйСписокРасширеннаяПодсказка" id="460"/>
</Button>
<Button name="КомандаMDДобавитьЗаголовки" id="453">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDДобавитьЗаголовки</CommandName>
<CommandBar name="ГруппаКоманднаяПанельMarkdown" id="449">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Нн</v8:content>
<v8:content>Группа командная панель markdown</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="КомандаMDДобавитьЗаголовкиРасширеннаяПодсказка" id="454"/>
</Button>
<Button name="КомандаMDЦитата" id="463">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDЦитата</CommandName>
<ExtendedTooltip name="КомандаMDЦитатаРасширеннаяПодсказка" id="464"/>
</Button>
<Button name="КомандаMDДобавитьТаблицу" id="451">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDДобавитьТаблицу</CommandName>
<ExtendedTooltip name="КомандаMDДобавитьТаблицуРасширеннаяПодсказка" id="452"/>
</Button>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Группа командная панель markdown</v8:content>
</v8:item>
</ToolTip>
<ExtendedTooltip name="ГруппаКоманднаяПанельMarkdownРасширеннаяПодсказка" id="450"/>
<ChildItems>
<Button name="КомандаMDЖирный" id="455">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDЖирный</CommandName>
<ExtendedTooltip name="КомандаMDЖирныйРасширеннаяПодсказка" id="456"/>
</Button>
<Button name="КомандаMDКурсив" id="457">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDКурсив</CommandName>
<ExtendedTooltip name="КомандаMDКурсивРасширеннаяПодсказка" id="458"/>
</Button>
<Button name="КомандаMDЗачеркнутый" id="465">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDЗачеркнутый</CommandName>
<ExtendedTooltip name="КомандаMDЗачеркнутыйРасширеннаяПодсказка" id="466"/>
</Button>
<Button name="КомандаMDМаркерыСписок" id="461">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDМаркерыСписок</CommandName>
<ExtendedTooltip name="КомандаMDМаркерыСписокРасширеннаяПодсказка" id="462"/>
</Button>
<Button name="КомандаMDНумерованныйСписок" id="459">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDНумерованныйСписок</CommandName>
<ExtendedTooltip name="КомандаMDНумерованныйСписокРасширеннаяПодсказка" id="460"/>
</Button>
<Button name="КомандаMDДобавитьЗаголовки" id="453">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDДобавитьЗаголовки</CommandName>
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Нн</v8:content>
</v8:item>
</Title>
<ExtendedTooltip name="КомандаMDДобавитьЗаголовкиРасширеннаяПодсказка" id="454"/>
</Button>
<Button name="КомандаMDЦитата" id="463">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDЦитата</CommandName>
<ExtendedTooltip name="КомандаMDЦитатаРасширеннаяПодсказка" id="464"/>
</Button>
<Button name="КомандаMDДобавитьТаблицу" id="451">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.КомандаMDДобавитьТаблицу</CommandName>
<ExtendedTooltip name="КомандаMDДобавитьТаблицуРасширеннаяПодсказка" id="452"/>
</Button>
</ChildItems>
</CommandBar>
</ChildItems>
</CommandBar>
</UsualGroup>
<InputField name="ТекстСодержания" id="198">
<DataPath>Объект.ТекстСодержания</DataPath>
<Title>
@ -381,6 +407,7 @@
<v8:content>Содержание</v8:content>
</v8:item>
</Title>
<TitleLocation>None</TitleLocation>
<AutoMaxWidth>false</AutoMaxWidth>
<AutoMaxHeight>false</AutoMaxHeight>
<MultiLine>true</MultiLine>
@ -2265,5 +2292,33 @@
<Representation>Picture</Representation>
<ModifiesSavedData>true</ModifiesSavedData>
</Command>
<Command name="КомандаОткрытьЗадачу" id="13">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Открыть задачу</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Открыть задачи из выделенного текста</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>To open a task from selected text</v8:content>
</v8:item>
<v8:item>
<v8:lang>ro</v8:lang>
<v8:content>To open a task from selected text</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.ShowData</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>КомандаОткрытьЗадачу</Action>
<Representation>Picture</Representation>
</Command>
</Commands>
</Form>

View File

@ -60,8 +60,8 @@
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Если Объект.ОформлениеТекста = ПредопределенноеЗначение("Перечисление.узОформлениеТекста.ФорматированныйТекст") Тогда
ФорматированныйТекст = ТекущийОбъект.Содержание.Получить();
Если Объект.ОформлениеТекста = ПредопределенноеЗначение("Перечисление.узОформлениеТекста.ФорматированныйТекст") Тогда
ЗагрузитьИзСодержанияВФорматированныйТекст(ТекущийОбъект);
Конецесли;
ЦветЗадачиНаФорме = ТекущийОбъект.ЦветЗадачи.Получить();
@ -71,6 +71,84 @@
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьИзСодержанияВФорматированныйТекст(ТекущийОбъект)
СохраненноеСодержание = ТекущийОбъект.Содержание.Получить();
//#Если Тромбон тогда
// СохраненноеСодержание = Новый ФорматированныйДокумент;
//#Конецесли
//ТекстHTML = "";
//Вложения = Новый Структура;
//СохраненноеСодержание.ПолучитьHTML(ТекстHTML, Вложения);
//
//РезультатФункции = ПроставитьНавигационныеСсылкиДляЗадачУказанныхВСодержании(ТекстHTML);
//Если РезультатФункции.ЗаменитьТекстHTML Тогда
// СохраненноеСодержание.УстановитьHTML(РезультатФункции.НовыйТекстHTML,Вложения);
//Конецесли;
ФорматированныйТекст = СохраненноеСодержание;
КонецПроцедуры
&НаСервере
Функция ПроставитьНавигационныеСсылкиДляЗадачУказанныхВСодержании(ТекстHTML)
ЗаменитьТекстHTML = Ложь;
пНовыйТекстHTML = Неопределено;
РезультатФункции = Новый Структура();
РезультатФункции.Вставить("ЗаменитьТекстHTML",ЗаменитьТекстHTML);
РезультатФункции.Вставить("НовыйТекстHTML",пНовыйТекстHTML);
ЧислоУказанныхЗадач = СтрЧислоВхождений(ТекстHTML, "#");
Если ЧислоУказанныхЗадач = 0 Тогда
Возврат РезультатФункции;
Конецесли;
ТЗДляЗамены = Новый ТаблицаЗначений();
ТЗДляЗамены.Колонки.Добавить("ПодстрокаПоиска");
ТЗДляЗамены.Колонки.Добавить("ПодстрокаЗамены");
пНовыйТекстHTML = ТекстHTML;
Для НомерВхождения = 1 По ЧислоУказанныхЗадач Цикл
ПозРешетка = СтрНайти(пНовыйТекстHTML, "#",,,НомерВхождения);
ТекстНомерЗадачи = "#";
НомерЗадачи = "";
НомерСимвола = ПозРешетка + 1;
Символ = Сред(пНовыйТекстHTML,НомерСимвола,1);
Пока 48<= КодСимвола(Символ)
И КодСимвола(Символ) <= 57 Цикл
НомерЗадачи = НомерЗадачи + Символ;
НомерСимвола = НомерСимвола + 1;
Символ = Сред(пНовыйТекстHTML,НомерСимвола,1);
Конеццикла;
ТекстНомерЗадачи = "#"+НомерЗадачи;
НомерЗадачи = Число(НомерЗадачи);
СсылкаНаЗадачу = Справочники.узЗадачи.НайтиПоКоду(НомерЗадачи);
Если НЕ ЗначениеЗаполнено(СсылкаНаЗадачу) Тогда
Продолжить;
Конецесли;
ЗаменитьТекстHTML = Истина;
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(СсылкаНаЗадачу);
ТекстСсылка = "<a href="+НавигационнаяСсылка+" style='text-decoration: underline'>"+ТекстНомерЗадачи+"</a>";
СтрокаТЗДляЗамены = ТЗДляЗамены.Добавить();
СтрокаТЗДляЗамены.ПодстрокаПоиска = ТекстНомерЗадачи;
СтрокаТЗДляЗамены.ПодстрокаЗамены = ТекстСсылка;
КонецЦикла;
Для каждого СтрокаТЗДляЗамены из ТЗДляЗамены цикл
пНовыйТекстHTML = СтрЗаменить(пНовыйТекстHTML, СтрокаТЗДляЗамены.ПодстрокаПоиска, СтрокаТЗДляЗамены.ПодстрокаЗамены);
Конеццикла;
РезультатФункции.Вставить("ЗаменитьТекстHTML",ЗаменитьТекстHTML);
РезультатФункции.Вставить("НовыйТекстHTML",пНовыйТекстHTML);
Возврат РезультатФункции;
КонецФункции
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
@ -551,9 +629,79 @@
Объект.ПоказыватьВОтчетахИКанбанДоске = Истина;
КонецПроцедуры
&НаКлиенте
Процедура КомандаОткрытьЗадачу(Команда)
Если Элементы.ГруппаСтраницыОформлениеСодержания.ТекущаяСтраница = Элементы.ГруппаСтраницаФорматированныйТекст Тогда
ТекстВыделенный = СокрЛП(Элементы.Содержание.ВыделенныйТекст);
Если НЕ ЗначениеЗаполнено(ТекстВыделенный) Тогда
ТекстВыделенный = ПолучитьСодержаниеТекстИзФорматированногоТекста();
Конецесли;
ИначеЕсли Элементы.ГруппаСтраницыОформлениеСодержания.ТекущаяСтраница = Элементы.ГруппаСтраницаТекст Тогда
ТекстВыделенный = СокрЛП(Элементы.ТекстСодержания.ВыделенныйТекст);
Если НЕ ЗначениеЗаполнено(ТекстВыделенный) Тогда
ТекстВыделенный = Объект.ТекстСодержания;
Конецесли;
//ИначеЕсли Элементы.ГруппаСтраницыОформлениеСодержания.ТекущаяСтраница = Элементы.ГруппаСтраницаПросмотр Тогда
// ТекстВыделенный = Объект.ТекстСодержания;
//Иначе
// ВызватьИсключение "Ошибка! нет алгоритма для выбранной страницы "+Элементы.ГруппаСтраницыОформлениеСодержания.ТекущаяСтраница;
Конецесли;
МассивЗадач = ПолучитьМассивЗадачПоВыбранномуТексту(ТекстВыделенный);
Если МассивЗадач.Количество() = 0 Тогда
узОбщийМодульСервер.узСообщить("В выделенном тексте нет задач",75);
Возврат;
Конецесли;
Для каждого СсылкаНаЗадачу из МассивЗадач цикл
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("Ключ",СсылкаНаЗадачу);
ОткрытьФорму("Справочник.узЗадачи.Форма.ФормаЭлемента",ПараметрыФормы);
Конеццикла;
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства
&НаСервереБезКонтекста
Функция ПолучитьМассивЗадачПоВыбранномуТексту(ТекстВыделенный)
МассивЗадач = Новый Массив();
ЧислоУказанныхЗадач = СтрЧислоВхождений(ТекстВыделенный, "#");
Если ЧислоУказанныхЗадач = 0 Тогда
Возврат МассивЗадач;
Конецесли;
Для НомерВхождения = 1 По ЧислоУказанныхЗадач Цикл
ПозРешетка = СтрНайти(ТекстВыделенный, "#",,,НомерВхождения);
ТекстНомерЗадачи = "#";
НомерЗадачи = "";
НомерСимвола = ПозРешетка + 1;
Символ = Сред(ТекстВыделенный,НомерСимвола,1);
Пока 48<= КодСимвола(Символ)
И КодСимвола(Символ) <= 57 Цикл
НомерЗадачи = НомерЗадачи + Символ;
НомерСимвола = НомерСимвола + 1;
Символ = Сред(ТекстВыделенный,НомерСимвола,1);
Конеццикла;
НомерЗадачи = Число(НомерЗадачи);
СсылкаНаЗадачу = Справочники.узЗадачи.НайтиПоКоду(НомерЗадачи);
Если НЕ ЗначениеЗаполнено(СсылкаНаЗадачу) Тогда
Продолжить;
Конецесли;
МассивЗадач.Добавить(СсылкаНаЗадачу);
КонецЦикла;
Возврат МассивЗадач;
КонецФункции
#КонецОбласти
#Область Учет_времени
@ -805,23 +953,7 @@
КонецПроцедуры
#КонецОбласти
//&НаКлиенте
//Процедура ЦветЗадачиНаФормеПриИзменении(Элемент)
//
// Объект.ИзмененЦветПоУмолчанию = ПолучитьИзмененЦветПоУмолчаниюНаКлиенте();
//
//КонецПроцедуры
//&НаКлиенте
//Функция ПолучитьИзмененЦветПоУмолчаниюНаКлиенте()
// ИзмененЦветПоУмолчанию = Ложь;
//
// ЦветПоУмолчанию = Новый Цвет(0,0,0);
// Если ЦветЗадачиНаФорме <> ЦветПоУмолчанию Тогда
// ИзмененЦветПоУмолчанию = Истина;
// Конецесли;
//
// Возврат ИзмененЦветПоУмолчанию;
//КонецФункции

View File

@ -4726,17 +4726,35 @@
</c>
<c>
<c>
<f>8</f>
<f>9</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Справочник.узЗадачи.ФормаЭлемента</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>8</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>В выделенном тексте нет задач</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>8</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>The selected text no task</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>