2014-12-19 7 views
1

우리는 "IT Hit WebDAV AJAX 라이브러리 재배포 라이센스"라이브러리를 사용하고 있습니다.클라이언트 오피스 문서가 닫힐 때 알아보기 ITHit WebDAV AJAX 라이브러리 플러그인

우리는이 워크 플로에 대한 successfuly이 라이브러리를 사용하고 있습니다 1) 클라이언트가 웹 페이지 2) 웹 페이지 플러그인이 MS와는 WebDAV 문서를 연결하는 WebDAV 서버 3)에서 문서를 발견 도중 버튼 클릭 클라이언트의 Office Word입니다. 4) 클라이언트가 문서 내용을 업데이트합니다. 5) 클라이언트가 변경 내용을 저장합니다. 이 변경 사항이 반영되어 webdav 저장소에 저장됩니다.

우리의 문제는 다음과 같습니다

6) 클라이언트가 클라이언트가 WebDAV를 문서 를 폐쇄했다는 MS 오피스 워드 응용 프로그램 7) wepage가 통지를 닫습니다 : 우리는이 워크 플로에이 다음과 같은 작업을 추가 할 필요가 8) 웹 페이지가 그 정보로 무엇인가 할 수 있습니다. ...

Google 논리에 필요한 많은 작업을 트리거하기 위해 라이브러리에서 콜백을 얻는 방법을 알지 못합니다.

우리는 열려있는 문서에이 코드를 사용 :

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

우리는 라이브러리와 함께이 일을 수있는 방법이나 대안을 주셔서 감사합니다.

답변

1

MS Office 응용 프로그램에서 IT Hit WebDAV Ajax 라이브러리로 직접 닫히는 문서에 대한 정보를 얻는 방법은 없습니다. 문서가 열리면 WebDAV Ajax 라이브러리는 문서를 제어하지 않고 문서를 여는 프로세스 만 시작합니다.

닫힌 문서에 대한 알림을 받으려면 웹 소켓을 사용하고 ILock에서 웹 페이지에 알림을 보내야합니다. Unlock 메소드 구현.

  1. VS 2013 년 MVC 5 ASP.NET 웹 응용 프로그램 만들기 프로젝트에 WebDAV를 추가 : 여기에 통지를, WebDAV를 가진 MVC (5) 프로젝트에 SigmalR를 추가 전송하고 소비하는 방법입니다 'Add WebDAV Server Implementation' wizard'을 사용하십시오. 서버 사이트에서 프로젝트에

  2. 추가 웹 소켓 :

    프로젝트에 Microsoft.AspNet.SignalR.Core 및 Microsoft.AspNet.SignalR.SystemWeb에 대한 참조를 추가합니다. Startup.cs에서

    통화 app.MapSignalR은() :

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

    허브에서 파생 된 클래스를 만듭니다. 당신은 비워 둘 수 있습니다 : ILock.Unlock 방법 구현에서

    public class MyHub1 : Hub 
    { 
    } 
    
  3. 는 웹 페이지에 알림을 보낼 수 있습니다.기본적으로 ILock를 구현하는 클래스를 DavHierarchyItem하는 방법을 잠금 해제 WebDAV 서버 구현 마법사를 추가합니다 추가, 다음 코드로이 방법을 확장 :
    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); 
    } 
    
  4. 는 클라이언트 측의 이벤트를 소비합니다.

    <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> 
    
:는 WebDAV 마법사에 의해 생성 된 MyCustomHandlerPage.aspx 페이지로 예를 들어, 웹 페이지에 다음과 같은 자바 스크립트 추가