Всем привет!
разбавлю последние серьезные темы данного раздела более простой и легкомысленной.
как на сайтовой странице вывести линк, при нажатии на который подгружался бы doc or pdf документ? Не открывался в новом окне, а предлагал подгрузиться.
как я понимаю это должен быть просто линк, ведущий, например, на документ лежащий в статик ресурсах.
или вместо статик ресурсов как-то можно использовать объект Документы - никогда с ним не работал, не знаю можно ли сделать документ доступным на сайте.
может у кого был опыт, если поделитесь, у меня меньше времени уйдет по поиск ответа методом "тыка".
спасибо
Это действие зависит от браузера. В хроме просто скачивает. В ФФ предлагает сохранить.
Можно в статик ресурс, нужно только выбрать Public в Cache Control
Если в документы, то нужно выбрать Externally Available Image
Wilder прав, действие зависит от браузера.
Но документ я бы советовал не в статик ресурсы класть, а в Documents. На них тоже легко ссылку сформировать, но преимущество в том что можно ссылки делать динамически, с помощью SOQL запроса к Document. И да, документы доступны для скачивания на сайте.
Ну ты не прав для статик ресурса, все ровно то же самое. Только чуть больше гемороя с созданием и удалением, зато можно архивы использовать.
Ну каждому свое.
По мне статик ресурсы для статик ресурсов, документы для документов.
Я просто посмотрю потом на тот процесс, когда вы будете заказчику объяснять как поменять (обновить) документ в статик ресурсах.
А со стороны клиента это абсолютно прозрачный процесс. Пишется контроллер для работы со статик ресурсом. Для клиента это обычный аттачмент. А где он лежит для него не важно особенно если организован удобный доступ к нему.
Вот тут я совсем ничего понял. Какой контроллер для работы со статик ресурсом? Какой аттачмент?
Мы об одном и том же говорим? Static resource это вроде metadata а на данные. Следовательно он будет тягаться со всеми ченжсетами по всем оргам. А как клиент будет с ним работь? Через Setup->Static Resource я так понимаю? Какие еще тут могут быть контроллеры и обычные аттачменты?
Wilder, мне кажется ты все сильно усложняешь.
Ок. Объясняю. Static Resource как и Documents можно получить в метадате это да. Attachment это чистая дата. Как с ними работать клиенту должно быть все равно. Например у меня в пакете есть Import/Export manager и все данные сохраняются в папке в документах. Но клиенту туда не нужно вообще ходить, потому что все происходит через UI. Поэтому я и сказал, что есть контроллер который это все делает.
Другая ситуация. Если нужно работать с зип архивами не из страницы, а из future или async jobs то приходиться использовать Static Resource, потому что салесфорс может чудесно работать с ZIP но только в Static Resource.
вывод такой:
для простых, прямолинейных проектов - документы для документов, стат ресурсы - для технических вещей, далеких от пользователей.
но wilder знает как и выжимает из возможностей СФ все до капли, что может быть важно и просто необходимо для приложений-Пакетов, со всех сторон обложенных лимитами.
продолжу раскрытие темы:
для выведение дока на сайт страницу я использовал <apex:outputLink>
но как сделать, чтобы один и тот же аттрибут value одинаково хорошо работал как внутри орга, так и на сайте?
идеальным вариантом кажется такой:
<apex:outputLink value="/servlet/servlet.FileDownload?file=00000000000000" >Title</apex:outputLink>
но дело в том, что в таком случае при клике на сайтовой ссылке к базовому УРЛ прибавляется сайтовый путь, и сервлет не работает:
baseURL/Home/servlet/servlet.FileDownload?file=00000000000000
пока пришлось захардкодить полный сайтовый путь в value, что очень плохо, так как реальный сайтовый урл будет другим, плюс эта ссылка внутри орга работает с\до тех пор пока активирован сайт.
спасибо
не совсем в тему, но где то рядом.
вот только что обратил внимание, что
для картинки урл в разметке пишем так:
<apex:image url="{!URLFOR($Resource.MyPic)}" />а для стиля пишем так:
background: url({!$Resource.MyPic}) repeat-x #663300;а вот в формуле к стат ресурсу можно обратиться без URLFOR():
<img src="{!If(Contains(Object__c.Field__c, 'some text'),$Resource.CheckBoxChecked,$Resource.CheckBoxUnchecked)}"/>да и просто в картинке оказывается тоже можно:
<apex:image url="{!$Resource.MyPic}" />