- 27.08.2008
- 8 001
- 610
Дорогие коллеги,
Хочу рассказать вам о небольшом эксперименте/опыте
Интеграция с ONLYOFFCE
Зачем это надо:
-скачивать документ на локал не всегда хочется, да и на моюбильных устройствах могут быть траблы, под документом я подразумеваю аттач типа: docx|xlsx|pptx... далее по списку
-установка приложения и прокачка по сети - тоже не вариант, бывает
Особенности:
-расскажу только про чтение, у редактирования могут быть особенности с размещением потока на домину
-должен быть развернут и настроен
-в свете текущего направления браузеров http (без s) вне закона, поэтому - домина тоже на https
-пример будет для xPage, хотя и для "классического" веб интерфейса домины все аналогично
используем базовый вариант API без редактирования, вариант для xlsx (важно - documentType):
если documentType будет ошибочный - можем получить сильно свопирующую систему (браузер начнет нещадно жрать память)! Возможно починят (JS), но не факт 
по остальным параметрам:
- fileType -- пес его знает нужен ли вовсе
- key - закономерность я уловил только отчасти, он не должен повторяться, если документы разные (кэширование, серверром). Как в случае изменения дока - не знаю, возможно нужно менять
- title - что в голову взбредет
- url - тот конечный урл, с кот. может быть скачан файл
- token - очень интересный момент, при установке docserver там будет дефолтный (т.е. не будет вовсе), но позволять к-л напрягать сервер попусту - это не вариант
придумываем слово (ключ) и записываем его в конфигурацию docserver, прописывается
результат - в переменную (коряво, могут подсмотреть враги, в отладчике, ашоделать)
В домине придется открывать док для публичного просмотра - $PublicAccess="1" и поле ридер с Anonymous (морочиться с аторизацией docserver на домине - не вариант), учитывая что док м.б. доступен по ID/индексу поиска - можно подумать на тему временной ссылки. Я сделал (в макете) влоб - по UNID
теперь шаблон xPages:
в примере url.getScheme() подразумевает что домина по https ! иначе будет странное поведение из-за смешивания https и http, попросту - не будет работать
ключ можно генерить из UNID + время (если аттач меняться не будет - время не нужно)
Хочу рассказать вам о небольшом эксперименте/опыте
Интеграция с ONLYOFFCE
Зачем это надо:
-скачивать документ на локал не всегда хочется, да и на моюбильных устройствах могут быть траблы, под документом я подразумеваю аттач типа: docx|xlsx|pptx... далее по списку
Ссылка скрыта от гостей
-установка приложения и прокачка по сети - тоже не вариант, бывает
Особенности:
-расскажу только про чтение, у редактирования могут быть особенности с размещением потока на домину
-должен быть развернут и настроен
Ссылка скрыта от гостей
отмечу, что необходим внешний доступ к этому серверу по https!-в свете текущего направления браузеров http (без s) вне закона, поэтому - домина тоже на https
-пример будет для xPage, хотя и для "классического" веб интерфейса домины все аналогично
используем базовый вариант API без редактирования, вариант для xlsx (важно - documentType):
JavaScript:
var docEditor = new DocsAPI.DocEditor(placeholder, {
"document": {
"fileType": "xlsx",
"key": key,
"title": title,
"url": url
},
"token": token,
"documentType": "spreadsheet"
});

по остальным параметрам:
- fileType -- пес его знает нужен ли вовсе
- key - закономерность я уловил только отчасти, он не должен повторяться, если документы разные (кэширование, серверром). Как в случае изменения дока - не знаю, возможно нужно менять
- title - что в голову взбредет
- url - тот конечный урл, с кот. может быть скачан файл
- token - очень интересный момент, при установке docserver там будет дефолтный (т.е. не будет вовсе), но позволять к-л напрягать сервер попусту - это не вариант

Ссылка скрыта от гостей
От прописанного ключа
Ссылка скрыта от гостей
token, в соответ. полерезультат - в переменную (коряво, могут подсмотреть враги, в отладчике, ашоделать)
В домине придется открывать док для публичного просмотра - $PublicAccess="1" и поле ридер с Anonymous (морочиться с аторизацией docserver на домине - не вариант), учитывая что док м.б. доступен по ID/индексу поиска - можно подумать на тему временной ссылки. Я сделал (в макете) влоб - по UNID
теперь шаблон xPages:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.resources>
<xp:script
src="https://docserver/web-apps/apps/api/documents/api.js"
clientSide="true">
</xp:script>
</xp:this.resources>
<xp:panel id="placeholder"></xp:panel>
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[var serverURI="#{javascript:var url = context.getUrl();return url.getScheme() + '://' + url.getHost();}";
var filePath="/path2DB/DBname.nsf/xsp/.ibmmodres/domino/OpenAttachment/templates/DBname.nsf/UNID/Body/fileNameWithEscapeNonASCII.docx";
//unid as key
var url=serverURI+"/path2DB/DBname.nsf/0/UNID/$FILE/fileNameWithEscapeNonASCII.docx";
var key="UNID+sid";
//filename as title
var title="Some Doc";
var placeholder="#{id:placeholder}";
//http://jwtbuilder.jamiekurtz.com/ create token from your secret key
var token="here we have token has been genarated previously";
var docEditor = new DocsAPI.DocEditor(placeholder, {
"document": {
"fileType": "docx",
"key": key,
"title": title,
"url": url
},
"token": token,
"documentType": "text"
});
]]></xp:this.value>
</xp:scriptBlock></xp:view>
ключ можно генерить из UNID + время (если аттач меняться не будет - время не нужно)
Последнее редактирование: