2014-12-19 2 views
1

, мы используем библиотеку «Лицензия на распространение библиотек ITA».Чтобы узнать, когда закрыт клиентский документ Office ITHit WebDAV Плагин библиотеки AJAX

Мы использовали успешно эту библиотеку для этого процесса: 1) клиент нажимает на кнопку собственной веб-странице 2) на веб-странице находит документ на Webdav сервере 3) плагин соединяет документ Webdav с Ms Office Word клиента. 4) клиент обновляет содержимое документа 5) клиент сохраняет свои изменения. Эти изменения отражаются и сохраняются в хранилище webdav.

Наша проблема: Нам нужно добавить эти следующие задачи в этом рабочем процессе:

6) клиент закрывает приложение MS Office Word 7) wepage уведомляется о том, что клиент закрыл Webdav документ 8) веб-страница что-то делает с этой информацией ....

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

Мы используем этот код для открытия документа:

function editWordVersion(document_url){ 
    oNs= ITHit.WebDAV.Client.DocManager; 
    oNs.EditDocument(document_url); 
} 

Мы Цените любой способ или альтернативу делать это с вашей библиотекой.

ответ

1

Невозможно получить информацию о закрытии документа непосредственно из приложения MS Office в IT Hit WebDAV Ajax. После открытия документа библиотека AJax WebDAV не имеет никакого контроля над документом, она просто инициирует процесс открытия документа.

Чтобы получить уведомление о закрытии документа, вам необходимо использовать веб-порты и отправить уведомление на веб-страницы из вашего ILock. Unlock способ осуществление. Вот как добавить SigmalR в проект MVC 5 с WebDAV, отправлять и потреблять уведомление:

  1. Создание MVC 5 Веб-приложение ASP.NET в VS 2013.

  2. Добавить WebDAV в свой проект используя 'Add WebDAV Server Implementation' wizard.

  3. Добавить веб-сокеты для вашего проекта на сайте сервера:

    Добавить ссылку на Microsoft.AspNet.SignalR.Core и Microsoft.AspNet.SignalR.SystemWeb в вашем проекте.

    Вызов app.MapSignalR() в Startup.cs:

    public void Configuration(IAppBuilder app) { 
    
        app.MapSignalR(); 
    
        ConfigureAuth(app); 
    } 
    

    Создать класс, производный от концентратора. Вы можете оставить его пустым:

    public class MyHub1 : Hub 
    { 
    } 
    
  4. В реализации метода ILock.Unlock отправить уведомление на веб-страницу.По умолчанию мастера добавления осуществления WebDAV сервера добавляет Разблокировку метода DavHierarchyItem класса, который реализует ILock распространить этот метод со следующим кодом:

    public void Unlock(string lockToken) 
    { 
        // your unlock implementation goes here 
        ... 
    
        // get the document url (optional) 
        string documentUrl = System.Web.HttpContext.Current.Response.ApplyAppPathModifier(
         context.Request.ApplicationPath.TrimEnd('/') + '/' + this.Path); 
    
        // send SignalR message to all web browsers 
        var signalCntx = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<MyHub1>(); 
        signalCntx.Clients.All.documentModified(context.Request.HttpMethod, documentUrl); 
    } 
    
  5. Потребляйте событие на стороне клиента. Добавьте следующий JavaScript на веб-странице, например, MyCustomHandlerPage.aspx страницы, генерируемой мастером WebDAV:

    <script src="/Scripts/jquery-1.10.2.js"></script> 
    <script src="/Scripts/jquery.signalR-2.1.2.min.js"></script> 
    
    <!--Reference the autogenerated SignalR hub script. --> 
    <script src="/signalr/hubs"></script> 
    
    <!--SignalR script to update the chat page and send messages.--> 
    <script> 
    $(function() { 
        // Reference the auto-generated proxy for the hub. 
        var chat = $.connection.myHub1; 
    
        // This function is called when the document is unlocked. 
        chat.client.documentModified = function (httpMethod, docPath) { 
         window.location.reload(); 
        }; 
    
        // Start the connection. 
        $.connection.hub.start().done(function() { 
    
        }); 
    }); 
    </script>