Как использовать функциональность Alfresco «Edit Online» из приложения Spring MVC - PullRequest
3 голосов
/ 23 августа 2011

В настоящее время я изучаю функциональность Sharepoint от Alfresco. Я установил Alfresco 3.4 и выполнил Web Quick Start Installation .

Затем я загрузил текстовый документ в Alfresco и могу перейти к нему в браузере. Мой URL-адрес http://localhost:8080/share/page/site/webqs/document-details?nodeRef=workspace://SpacesStore/f7f5881e-320e-4d73-85e4-b62752fef1b8

В Internet Explorer в разделе «Действия с документами» есть кнопка «Редактировать онлайн». К сожалению, эта кнопка недоступна в Firefox или Google Chrome. HTML-код кнопки не очень мне помогает, так как я вижу URL:

<div class="onActionEditOnline">
  <a rel="edit,online-edit" href="" class="action-link" title="Edit Online">
    <span>Edit Online</span>
  </a>
</div>

Во время исследования вещей на сайте под открытым небом люди рекомендовали учиться Spring Surf , поскольку приложение Alfresco / share было написано с его использованием. В учебнике Spring Surf используется Roo , в свою очередь, есть надстройка Spring Surf, которую я не смог запустить, о чем сообщил кто-то еще здесь .

Вернуться к самой кнопке «Редактировать онлайн»; когда я нажимаю на него, на моем клиентском компьютере в Word открывается документ Word, я могу его редактировать. и нажмите кнопку «Сохранить в Word», используя протокол Sharepoint, документ правильно сохраняется на Alfresco.

Мой вопрос: как я могу получить доступ к этой функции «Редактировать онлайн» из моего собственного приложения Spring MVC? мне бы хотелось чтобы эта кнопка «Редактировать онлайн» была видна на одном из моих JSP, но я не знаю, как взаимодействовать с Alfresco. имеет кто-нибудь делал это? Любая помощь приветствуется!

1 Ответ

7 голосов
/ 30 августа 2011

Интеграция Sharepoint в Alfresco использует встроенный сервер Jetty, на котором работает сервер Sharepoint.Если вы посмотрите на URL-адрес «Редактировать онлайн», он покажет номер порта, отличный от номера всех веб-страниц Alfresco (по умолчанию 7070).

Я никогда не проводил глубокое исследование по этому вопросу, но с Sharepointпредставляет собой расширение HTTP, похожее на WebDAV, возможно, с использованием некоторых специальных заголовков или встроенного плагина / функции браузера, для того чтобы создать на вашем сайте функцию «Редактировать онлайн», вам просто нужно предложить те же URL-адреса, которые Alfresco создает для онлайн-редактирования, иубедитесь, что пользователь работает с IE.Это перенаправит пользователя на VTI-сервер , таким образом, почти полностью исключив SpringMVC из картинки (вам просто нужно сгенерировать правильные URL).


РЕДАКТИРОВАТЬ: как alfresco генерирует VTIURL-адреса

Взгляните на actions.js , который фактически генерирует URL-адреса, лежащие в основе ссылок редактирования онлайн в Share.Метод _launchOnlineEditor - это то, что обрабатывает клики по тем пустым ссылкам, которые вы видели, и он также предоставляет логику, которая создает URL:

        // Ensure we have the record's onlineEditUrl populated
        if (!Alfresco.util.isValueSet(record.onlineEditUrl))
        {
           var onlineEditUrl = this.doclistMetadata.custom.vtiServer.host + ":" +
                 this.doclistMetadata.custom.vtiServer.port + "/" +
                 $combine("alfresco", loc.site.name, loc.container.name, loc.path, loc.file);

           if (!(/^(http|https):\/\//).test(onlineEditUrl))
           {
              // VTI server now supports HTTPS directly http://issues.alfresco.com/jira/browse/DOC-227
              onlineEditUrl = window.location.protocol + "//" + onlineEditUrl;
           }
           record.onlineEditUrl = onlineEditUrl;
        }

, если у нас было, например:

loc.site.name == mySite
loc.container.name == documentLibrary
loc.path == /images
loc.file == logo.png

со значениями по умолчанию для сервера VTI он выдаст следующий URL:

http://localhost:7070/alfresco/mySite/documentLibrary/images/logo.png

Если вы также продолжите читать этот метод, то окажется, что я был совершенно не прав: не только простая магия MS ассоциирует приложения Officeна определенные URL-адреса, а точнее элемент управления ActiveX создается в вашем браузере, что приводит к правильному вызову:

var controlProgID = "SharePoint.OpenDocuments",
//...
activeXControl = new ActiveXObject(controlProgID + ".3");
return activeXControl.EditDocument3(window, record.onlineEditUrl, true, appProgID);

Это должно завершить картину того, как создавать ссылки Sharepoint из вашего пользовательскогоприложения, указывающие на правильное местоположение в хранилище Alfresco.

...