SASGIS - SAS.Планета
View Issue Details
0003430SAS.Планета[All Projects] Хотелкаpublic03-04-2019 10:4514-04-2019 19:26
centron 
zed 
normalfeaturehave not tried
resolvedfixed 
W10x64
181221 
190707190707 
0003430: Назначить внешнее приложение для просмотра прикрепленных фотографий
Весьма удобно прикреплять фотографии (jpeg) местности в формате 360 градусов.
Но просмотр непосредственно в SASPlanet в исходном разрешении и именно в формате 360 невозможен. Хотелось бы иметь возможность назначить внешнее приложение для просмотра хранящихся на ПК и подгруженных в программу фотографий (не только 360, но и обычных) в исходном разрешении.
No tags attached.
related to 0002620confirmed  Перенести все внутренние ссылки sas:// в один домен 
related to 0001038resolved zed Ссылки с описания меток на файлы жесткого диска 
Issue History
03-04-2019 10:45centronNew Issue
03-04-2019 11:05vdemidovNote Added: 0018600
03-04-2019 11:05vdemidovStatusnew => feedback
03-04-2019 11:30zedNote Added: 0018601
04-04-2019 03:06centronNote Added: 0018602
04-04-2019 03:06centronStatusfeedback => new
04-04-2019 06:52zedNote Added: 0018603
04-04-2019 11:25vdemidovNote Added: 0018604
04-04-2019 12:52zedNote Added: 0018605
04-04-2019 13:09vdemidovNote Added: 0018606
04-04-2019 14:42zedNote Added: 0018612
05-04-2019 01:15centronNote Added: 0018613
05-04-2019 09:34zedRelationship addedrelated to 0001038
05-04-2019 12:22vdemidovNote Added: 0018614
05-04-2019 12:23vdemidovNote Added: 0018615
05-04-2019 12:24vdemidovNote Added: 0018616
05-04-2019 12:24vdemidovNote Added: 0018617
05-04-2019 12:25vdemidovNote Added: 0018618
05-04-2019 12:26vdemidovNote Added: 0018619
05-04-2019 12:26vdemidovNote Added: 0018620
05-04-2019 12:27vdemidovNote Added: 0018621
05-04-2019 12:28vdemidovNote Added: 0018622
05-04-2019 12:29vdemidovNote Added: 0018623
05-04-2019 12:30vdemidovNote Added: 0018624
05-04-2019 12:30vdemidovNote Added: 0018625
05-04-2019 12:57zedNote Added: 0018626
05-04-2019 13:14vdemidovNote Added: 0018627
05-04-2019 13:15vdemidovNote Edited: 0018627bug_revision_view_page.php?bugnote_id=18627#r7383
05-04-2019 13:27zedNote Added: 0018628
05-04-2019 13:41zedNote Edited: 0018628bug_revision_view_page.php?bugnote_id=18628#r7385
05-04-2019 13:42zedNote Edited: 0018614bug_revision_view_page.php?bugnote_id=18614#r7387
06-04-2019 20:22zedNote Added: 0018629
08-04-2019 07:59vdemidovNote Added: 0018630
08-04-2019 08:00vdemidovRelationship addedrelated to 0002620
08-04-2019 08:28zedNote Added: 0018631
08-04-2019 08:39vdemidovNote Added: 0018632
08-04-2019 08:46vdemidovNote Added: 0018633
08-04-2019 10:15zedNote Added: 0018634
08-04-2019 10:20zedNote Added: 0018635
08-04-2019 10:30vdemidovNote Added: 0018636
08-04-2019 10:46zedNote Added: 0018637
08-04-2019 10:57vdemidovNote Added: 0018639
08-04-2019 11:09vdemidovNote Added: 0018641
08-04-2019 11:42zedNote Added: 0018646
08-04-2019 12:51vdemidovNote Added: 0018649
08-04-2019 12:54zedNote Added: 0018650
08-04-2019 13:04vdemidovNote Added: 0018651
08-04-2019 13:08zedNote Added: 0018652
08-04-2019 13:10vdemidovNote Added: 0018653
08-04-2019 14:30vdemidovStatusnew => confirmed
08-04-2019 14:30vdemidovProduct Version => 181221
08-04-2019 14:30vdemidovTarget Version => 190707
08-04-2019 18:35vdemidovNote Added: 0018654
08-04-2019 18:38vdemidovNote Added: 0018655
08-04-2019 20:28zedNote Added: 0018658
10-04-2019 03:18centronNote Added: 0018659
10-04-2019 05:17vdemidovNote Added: 0018660
10-04-2019 09:33zedNote Added: 0018661
10-04-2019 14:37vdemidovNote Added: 0018662
10-04-2019 14:50zedNote Added: 0018663
12-04-2019 12:21zedNote Added: 0018664
12-04-2019 12:27zedNote Edited: 0018664bug_revision_view_page.php?bugnote_id=18664#r7396
12-04-2019 12:29zedNote Edited: 0018664bug_revision_view_page.php?bugnote_id=18664#r7397
12-04-2019 16:01vdemidovNote Added: 0018665
12-04-2019 17:17zedNote Added: 0018666
13-04-2019 08:29zedStatusconfirmed => resolved
13-04-2019 08:29zedFixed in Version => 190707
13-04-2019 08:29zedResolutionopen => fixed
13-04-2019 08:29zedAssigned To => zed
14-04-2019 19:26vdemidovNote Added: 0018667

Notes
(0018600)
vdemidov   
03-04-2019 11:05   
А можно чуток подробностей для тех кто совсем не в теме? В каком формате с каким расширением хранятся фотографии в формате 360 градусов? Какие десктопные приложения поддерживают просмотр таких фоток?
(0018601)
zed   
03-04-2019 11:30   
Надо чтобы при клике по метке на карте открывалась фотография или чтобы вначале открывалось описание (как сейчас) и там была возможность открыть снимок во внешней программе?
(0018602)
centron   
04-04-2019 03:06   
Подробнее:
Фото 360 гр. - это тот же jpeg. Наиболее простое, удобное и бесплатное ПО для просмотра фото/видео 360 гр. - это, на мой взгляд, GoPro VR Player.
http://www.kolor.com/gopro-vr-player/download/
Или VLC media player, но он пока годится только для видео.

Касаемо принципа открытия, то, думаю, лучше подойдет второй вариант как более универсальный. Т.е. сначала открывается миниатюра (600х300, например), а дальше пользователь уже принимает решение об использовании внешнего приложения, т.к. для многих фотографий (обычных, не_360) бывает вполне достаточно и миниатюры.

Пример фото 360 (сюда не прикрепляю, т.к. рамер фото 10-13 Мб):
https://yadi.sk/d/XSXm7qDeh7chhQ
(0018603)
zed   
04-04-2019 06:52   
Сложность данной хотелки заключается в том, что описание метки является html страничкой, которая открывается во встроенном браузере (InternetExplorer), а из браузера не так-то просто взять и открыть что-то по ссылке во внешнем приложении. Тем более, что открыть надо не в дефолтном приложении (т.е. не в том, которое открывается при двойном клике по файлу в windows-проводнике), а в заданном.

На сколько я понимаю, это можно реализовать модификацией реестра с регистрацией своего протокола (см. пример здесь: https://stackoverflow.com/a/55139489/), но мне видится, что в этом случае может всплыть множество граблей. Например, как быть если запущено 2 копии SAS из разных папок с разными настройками. Для каждой копии регистрировать свой протокол? Но ведь описание метки и ссылка будут генерироваться в момент импорта фото, а значит протокол должен быть заранее задан.
(0018604)
vdemidov   
04-04-2019 11:25   
Может проще в компоненте воспользоваться событием OnBeforeNavigate2 и для своего протокола, если это конкретный файл, то просто его открывать?
(0018605)
zed   
04-04-2019 12:52   
Да, действительно, так можно сделать.
(0018606)
vdemidov   
04-04-2019 13:09   
Заодно решится проблема открытия ссылок на всякие pdf, ppt, xls из меток.
Почему-то я до этого раньше не догадался. Видимо, из-за того, что все время прикидывал как бы заменить этот компонент на открытие в обычном браузере.
(0018612)
zed   
04-04-2019 14:42   
Сделал частично - вновь-импортированные фото теперь можно будет открывать во внешней дефолтной программе, просто кликнув по нему.
(0018613)
centron   
05-04-2019 01:15   
В принципе, можно ограничиться (насколько это реализуемо) открытием папки хранения файла. Далее пользователь сам разберется что и чем открывать.
(0018614)
vdemidov   
05-04-2019 12:22   
(edited on: 05-04-2019 13:42)
Переношу обсуждение с bitbucket, что бы оно сохранилось, да и обсуждать здесь мне больше нравится:

(0018615)
vdemidov   
05-04-2019 12:23   
Viktor Demidov
Мне сильно не нравится. А еще я за то, что бы действие задавать не доменом, а параметром. Например, так sas://MediaData/img.jpg?OpenPhoto

Просто добавить к любому пути. Как просто пути к файлу, так и к нашему протоколу. Зато если заменить встроенный браузер на веб сервер и обычный браузер, то все продолжит работать нормально. Максимум потеряется возможность задавать конкретные программы, но ссылки работать будут.

А еще можно будет дать возможность пользователю задавать свои команды и программы их обрабатывающие.

Плюс я бы добавил список безопасных расширений в настройки, которые будут просто открываться без всяких команд по системным ассоциациям.
(0018616)
vdemidov   
05-04-2019 12:24   
zed
А не возникнет ли коллизий с параметром в будущем? По домену мы чётко можем опознать, что это наше, а параметр может быть и не наш.

В общем, определись, как делать, переделаю.
(0018617)
vdemidov   
05-04-2019 12:24   
Viktor Demidov
Хороший вопрос. Таки придется проверять протокол и открывать только локальные ссылки. Хотя проверка наличия файла, которая уже есть вполне должна спасти.
(0018618)
vdemidov   
05-04-2019 12:25   
zed
Давай так:

sas://App/ - открыть в программе по дефолту

sas://Explorer/ - открыть папку/файл в проводнике

sas://Browser/ - открыть ссылку во внешнем браузере

sas://UserXXX/ - зарезервированные домены, для действий определяемых юзером. В конфиге будет секция [UserDomain], где ключ будет любая строка, а значение - путь к программе, например Photo=c:\MyApp.exe и тогда домен будет sas://UserPhoto/

Если в пути нужно задать поддомен, то делать это так: sas://App/MediaData/
(0018619)
vdemidov   
05-04-2019 12:26   
Viktor Demidov
Ну не знаю. Вариант UserXXX хорош, но мне все равно больше нравится вариант с суффиксом “?UserXXX” или даже “#UserXXX“

Ну не место для операции в домене.
(0018620)
vdemidov   
05-04-2019 12:26   
Viktor Demidov
Чуть освежил свои знания об url и теперь точно убежден, что лучше всего задействовать именно фрагменты, то есть “#UserXXX“
Эта часть урла адресована именно браузеру. А что бы не схлопотать случайного совпадения, можно добавить “sas.” перед конкретной константой. Как мы в ContentType договорились делать. Тогда будут такие команды:
“#sas.App“ - открыть файл в программе по-умолчанию. (На всякий случай нужно проверять наличие файла и, скорее всего, его расширение по белому списку в конфигу, что бы было тяжелее запустить какой-нибудь вирус или вредоносное действие вместе с zmp)

“#sas.explorer“ - Открыть папку в проводнике

“#sas.browser“ - Открыть в дефолтном браузере

“#sas.user.XXX“ - Команда пользователя.



Еще не ясно что делать с той затычкой, которая сейчас открывает локальные картинки прямо в форме встроенного браузера, но не в нем самом :)
(0018621)
vdemidov   
05-04-2019 12:27   
zed
# - допустимый символ для имени файла, так что вообще не вариант.

Ещё учти, что для ручной правки удобнее и понятнее делать как я описал, а не дописывать в конец через ?
(0018622)
vdemidov   
05-04-2019 12:28   
Viktor Demidov
Насчет # может быть.

Ну, не знаю, чем твой вариант для локальных файлов удобнее и понятнее? Чем “sas://App/C:\Temp\aaa.jpg” лучше чем “C:\Temp\aaa.jpg?sas.App”
(0018623)
vdemidov   
05-04-2019 12:29   
zed
Во-первых, нагляднее - префикс sas:// - даёт понять, что это что-то специфическое. Во-вторых, прослеживается некое единообразие c sas://MediaData/ к которому мы уже приучили пользователей. Если бы речь шла исключительно о машинном представлении, я бы согласился и с `#`, но коль скоро это видит и должен руками писать пользователь, мне это кажется не очень удачным решением.
(0018624)
vdemidov   
05-04-2019 12:30   
zed
Вот смотри, я хочу в описании метки вставить ссылку http://www.sasgis.org/mantis/view.php?id=3430 и чтобы она открылась во внешнем браузере. По моей схеме, я должен написать sas://Browser/http://www.sasgis.org/mantis/view.php?id=3430, а по твоей http://www.sasgis.org/mantis/view.php?id=3430?sas.browser Ну и что это получается? Ни одна запись не является валидным урлом, но вторую запись сложнее распарсить программно (без коллизий) и глазами труднее воспринимать.
(0018625)
vdemidov   
05-04-2019 12:30   
Viktor Demidov
Твой пример очень хороший. И дает аргумент почему # достаточно хороший разделитель - в обычном браузере, если пользователь скопирует туда урл, ни твой вариант, ни мой с знаком вопроса, нормально не откроется, а вот мой вариант с решеткой - на ура.
(0018626)
zed   
05-04-2019 12:57   
Пример урла с решёткой: https://habr.com/en/post/446822/#comment_19986240#sas.browser - если скопировать урл в браузер, то страница хоть и откроется, но на указанный комментарий страница не перейдёт. Т.е. считай, так же сломано.

И что ты ответишь про наглядность и удобство ручного редактирования?

В качестве крайней меры могу предложить ввести поддержку обоих вариантов, и с доменом, и с решёткой. Я буду рекомендовать всем использовать свой вариант, а ты свой.
(0018627)
vdemidov   
05-04-2019 13:14   
(edited on: 05-04-2019 13:15)
Сломано, но в гораздо меньшей степени.

А удобство редактирования ИМХО одинаковое.

Два варианта это стопудово избыточно. С ними будет важнее, какой из вариантов будет вставляться автоматически, например, в импорте или окне редактирования меток.

Давай на форуме или где-то еще спросим - пусть пользователи рассудят или может что-то свое предложат.

(0018628)
zed   
05-04-2019 13:27   
(edited on: 05-04-2019 13:41)
Если сломано, то уже не важно, в какой степени. Представь, что в теме тысяча комментариев и я хочу сослаться на 801-й.

И появляется два варианта описаний и с sas://MediaData/ и с #sas.app, что не есть хорошо. Мне также не понятно, почему ты обращаешь внимание на валидность урла, если это наш внутренний протокол и наружу он в ближайшие сотню лет не выйдет. Но даже если и выйдет (но повторяю - этого не случится), то чем sas://MediaData/ лучше sas://Browser/? Ведь придётся таки поддерживать протокол sas://.

Спрашивать пользователей тут, по-моему, последнее дело - мало кто поймёт нюансы вариантов. Но если вдруг решишь спросить и результат окажется в мою пользу, то Ок, доверимся опросу :)

(0018629)
zed   
06-04-2019 20:22   
Пример валидного урла: http://anonym.to/?https://google.com/

т.е. если следовать феншую, нам нужно писать вот так:

sas://App/?sas://MediaData/image.jpg
sas://Browser/?https://google.com/
(0018630)
vdemidov   
08-04-2019 07:59   
Извини за перерыв - очень занят был на выходных.

Основная причина, почему я не хочу действие запихивать в домен - относительные пути. Представь ты хочешь положить в zmp doc-файлик, или еще что-то такое и сослаться на него в информации о карте. Что бы по клику он открывался в ворде. Сейчас такое делать бессмысленно, так как оно не открывется нормально, но с сабжем это уже реально и вполне обыденный юзкейс. Если делать как предлагаю я, то достаточно написать href="./xxxxxx.doc#sas.app" и все, ссылка будет работать. О разворачивании в полный путь позаботится браузер. А вот при твоем подходе такую ссылку сделать уже целая морока. Нужно знать структуру пити к инофрмации о Zmp, нужно брать GUID карты. И при малейшем изменении его править.
С этим еще связан запланированный рефакторинг: 0002620
(0018631)
zed   
08-04-2019 08:28   
> О разворачивании в полный путь позаботится браузер.

Как он это сделает?
(0018632)
vdemidov   
08-04-2019 08:39   
Так и сделает. Информация о карте отображается по адресу примерно такому:
sas://ZmpInfo/{36cfd00c-ad02-4d3a-bd3e-acf4075115fe}/info.html
Когда браузер видит относительную ссылку ./xxxxxx.doc#sas.app
он от текущего пути откусывает sas://ZmpInfo/{36cfd00c-ad02-4d3a-bd3e-acf4075115fe}/ и добавляет xxxxxx.doc#sas.app
И уже полный путь sas://ZmpInfo/{36cfd00c-ad02-4d3a-bd3e-acf4075115fe}/xxxxxx.doc#sas.app
придет в событие BeforeNavigate
(0018633)
vdemidov   
08-04-2019 08:46   
Даже без ./ можно. Сейчас так в информацию о карте вставляют картинки с легендой.

Например
sas.plus.maps\_osm_ito\Schools.zmp\info.txt

<img src=017.png>


А представь ты хочешь дать возможность открывать картинку в своем просмотрщике. Как ты будешь ссылку здесь писать с твоим подходом?
А с моим просто дописать href="017.png#sas.app"
(0018634)
zed   
08-04-2019 10:15   
Я бы написал sas://App/?017.png. Затем, в браузере сохранял бы текущий урл %url% и при получении такого линка, заменял бы его на sas://App/?%url%017.png - т.е. этот момент решается руками очень легко и полный путь восстанавливается на раз.

Гораздо труднее, будет вот из этого sas://ZmpInfo/{36cfd00c-ad02-4d3a-bd3e-acf4075115fe}/xxxxxx.doc получить полный путь к файлу (с учётом, что файл ещё может быть в zip архиве) и запустить его на выполнение.
(0018635)
zed   
08-04-2019 10:20   
Даже по-моему sas://App/?sas://MediaData/image.jpg можно будет сократить до sas://App/?image.jpg и пустой url трактовать как sas://MediaData/.
(0018636)
vdemidov   
08-04-2019 10:30   
> Я бы написал sas://App/?017.png. Затем, в браузере сохранял бы текущий урл %url% и при получении такого линка, заменял бы его на sas://App/?%url%017.png - т.е. этот момент решается руками очень легко и полный путь восстанавливается на раз.
То есть тебе придется самому разворачивать все относительные пути. Та ну нафиг.

> Гораздо труднее, будет вот из этого sas://ZmpInfo/{36cfd00c-ad02-4d3a-bd3e-acf4075115fe}/xxxxxx.doc получить полный путь к файлу (с учётом, что файл ещё может быть в zip архиве) и запустить его на выполнение.
Для случая с архивом, всегда можно сохранить во временный файл в temp перед запуском.

> Даже по-моему sas://App/?sas://MediaData/image.jpg можно будет сократить до sas://App/?image.jpg и пустой url трактовать как sas://MediaData/

Я против трактовать все относительные пути как пути к MediaData

ИМХО ты уперся в свою идея совсем не по делу и сейчас придумываешь костыли
(0018637)
zed   
08-04-2019 10:46   
Относительный путь разворачивается максимум в 10 строчек кода. В чём проблема?

>Я против трактовать все относительные пути как пути к MediaData

Не все относительные пути, а только те, у которых пустой родительский урл. Но это как вариант, я не настаиваю.

По-моему, ты не можешь нормально аргументировать, почему мой вариант плохой. Он просто тебе не нравится и точка.
(0018639)
vdemidov   
08-04-2019 10:57   
Он мне не нравится, потому что ломает все относительные пути. Точка. Категорически не нравится.
(0018641)
vdemidov   
08-04-2019 11:09   
>Относительный путь разворачивается максимум в 10 строчек кода. В чём проблема?

Ты уверен? Вот куча примеров, которые бы нужно поддерживать.

Within a representation with a well defined base URI of

http://a/b/c/d;p?q
a relative reference is resolved to its target URI as follows:[22]

"g:h" -> "g:h"
"g" -> "http://a/b/c/g"
"./g" -> "http://a/b/c/g"
"g/" -> "http://a/b/c/g/"
"/g" -> "http://a/g"
"//g" -> "http://g"
"?y" -> "http://a/b/c/d;p?y"
"g?y" -> "http://a/b/c/g?y"
"#s" -> "http://a/b/c/d;p?q#s"
"g#s" -> "http://a/b/c/g#s"
"g?y#s" -> "http://a/b/c/g?y#s"
";x" -> "http://a/b/c/;x"
"g;x" -> "http://a/b/c/g;x"
"g;x?y#s" -> "http://a/b/c/g;x?y#s"
"" -> "http://a/b/c/d;p?q"
"." -> "http://a/b/c/"
"./" -> "http://a/b/c/"
".." -> "http://a/b/"
"../" -> "http://a/b/"
"../g" -> "http://a/b/g"
"../.." -> "http://a/"
"../../" -> "http://a/"
"../../g" -> "http://a/g"
(0018646)
zed   
08-04-2019 11:42   
Это на первый взгляд список длинный, но там есть много не актуального для нас (вроде ?y и #s) да и специфических случаев не так много. Т.е. это не критическое препятствие.

Ладно, раз ты так категорически настроен совать мне палки в колёса, переделаю на вариант с решёткой.
(0018649)
vdemidov   
08-04-2019 12:51   
>Т.е. это не критическое препятствие.
Конечно. Я даже подозреваю, что в предоставляемых ИЕ функциях есть готовая, но зачем писать, отлаживать и поддерживать код, без которого можно обойтись практически безболезненно.

> Ладно, раз ты так категорически настроен совать мне палки в колёса, переделаю на вариант с решёткой.
Спасибо большое.
(0018650)
zed   
08-04-2019 12:54   
Мда, переделал. Да вот только браузер понимает, что ссылка href=c:/image.jpg это не ссылка, а файл! И событие OnBeforeNavigate2 для него попросту не срабатывает.

И что дальше?
(0018651)
vdemidov   
08-04-2019 13:04   
Потому что правильно писать file://c:/image.jpg
Ну, или если мы разрешаем открывать любой файл то можно sas://c:/image.jpg
(0018652)
zed   
08-04-2019 13:08   
> Потому что правильно писать file://c:/image.jpg
Нет, это абсолютно не влияет.
(0018653)
vdemidov   
08-04-2019 13:10   
Можно попробовать //c:/image.jpg или ///c:/image.jpg
Вообще со ссылками на локальные файлы и доступом к ним из нелокальной странички там куча ограничений даже в ИЕ. Иначе это была бы дыра в безопасности и любой сайт мог твои файлы воровать.
(0018654)
vdemidov   
08-04-2019 18:35   
Осталась проблема: вот такая ссылка не открывается //MediaData/123.avi#sas.app

Нужно менять слеши на правильные.
(0018655)
vdemidov   
08-04-2019 18:38   
А, нет. Там просто слеш после пути не добавляется. Пофикшу сейчас.
(0018658)
zed   
08-04-2019 20:28   
centron
Начиная с сегодняшней ночной версии при импорте фото с GPS будет добавляться ссылка для открытиях их в приложении по умолчанию. Назначение своей программы пока невозможно, но вы можете сделать чтобы открывалась папка с фото в проводнике. Для этого вам надо заменить строку #sas.app на #sas.explorer в описании метки.

Открытие происходит при клике по фото.
(0018659)
centron   
10-04-2019 03:18   
Спасибо, с открытием по клику на иконке из превью все прекрасно работает.

Единственное - если выбрать пункт контекстного меню "Информация о метке", оттуда уже не работает.

Не удается открыть эту страницу
Убедитесь, что веб-адрес sas://E:\СЕТЕВАЯ\EZK-260\Пересечения\227+873.73 р. Ока\IMG_20190128_152640_1188242125.JPG правильный
(0018660)
vdemidov   
10-04-2019 05:17   
Таки да. Забыли про еще один браузер в программе.
(0018661)
zed   
10-04-2019 09:33   
Там ещё и InvisibleBrowser есть и хорошо бы их как-то объединить, чтобы по сто раз одно и то же не писать. Может сделать базовый класс TInternalEmbeddedWB с реализацией OnBeforeNavigate2 и OnAuthenticate?
(0018662)
vdemidov   
10-04-2019 14:37   
Ну, совсем объединить не выйдет. В основном браузере же есть режим открытия картинок прямо в нем, хотя не понятно работает ли оно или сломано :)
А вообще, как хочешь.
(0018663)
zed   
10-04-2019 14:50   
Функцию с картинками я скорее всего удалю, т.к. она по-видимому осталась после выпиливания тобой фичи аттачментов (0000152) и более никак не используется.
(0018664)
zed   
12-04-2019 12:21   
(edited on: 12-04-2019 12:29)
Сделал возможность определять произвольное приложение в конфиге и запускать через него. Для этого в SASPlanet.ini надо написать такое:

[UrlHandler_UserApps]
MyApp=c:\notepad.exe
MyOtherApp=c:\word.exe
и т.д.

и оформить ссылку
<a href="sas://c:\doc\text.txt#sas.user.myapp">Открыть в Блокноте</a>

Так же, можно разрешить открывать во внешних приложения только файлы с определённым расширением:

[UrlHandler]
AllowedExt=png;gif

Чтобы разрешить все расширения, достаточно оставить этот параметр пустым.

(0018665)
vdemidov   
12-04-2019 16:01   
>Так же, можно разрешить открывать во внешних приложения только файлы с определённым расширением
Это очень полезная для безопасности, а то лично мне слегка страшно оставлять возможность выполнить любой файл программой по-умолчанию. Нужно сделать что бы по-умолчанию там был списочек из картиночных, видео и офисных форматов.

>Чтобы разрешить все расширения, достаточно оставить этот параметр пустым.
Главное, что бы отсутствие записи в конфиге воспринималось как набор дефолтных значений, а не как пустой список и разрешение делать что хочешь.
(0018666)
zed   
12-04-2019 17:17   
Для безопасности оно весьма сомнительно. Можно сделать pdf или jpeg запуск которого приведёт к заражению системы.
(0018667)
vdemidov   
14-04-2019 19:26   
> Для безопасности оно весьма сомнительно. Можно сделать pdf или jpeg запуск которого приведёт к заражению системы.
Не скажи. pdf или jpeg приведет к заражению, только если программа просмотрщик имеет уязвимость и на нее конкретно рассчитывают. Даже офисные форматы в последние годы довели до некоторой безопасности, вроде открытия по-умолчанию в режиме безопасного просмотра.