diff --git a/web/documentserver-example/csharp-mvc/Content/images/file_docxf.svg b/web/documentserver-example/csharp-mvc/Content/images/file_docxf.svg new file mode 100644 index 00000000..984761e6 --- /dev/null +++ b/web/documentserver-example/csharp-mvc/Content/images/file_docxf.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/web/documentserver-example/csharp-mvc/Content/images/mobile-fill-forms.svg b/web/documentserver-example/csharp-mvc/Content/images/mobile-fill-forms.svg new file mode 100644 index 00000000..31db5ea7 --- /dev/null +++ b/web/documentserver-example/csharp-mvc/Content/images/mobile-fill-forms.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/web/documentserver-example/csharp-mvc/Content/stylesheet.css b/web/documentserver-example/csharp-mvc/Content/stylesheet.css index 903f2d19..a4a47cf8 100644 --- a/web/documentserver-example/csharp-mvc/Content/stylesheet.css +++ b/web/documentserver-example/csharp-mvc/Content/stylesheet.css @@ -158,6 +158,10 @@ label .checkbox { background-image: url("images/file_pptx.svg"); } +.try-editor.form { + background-image: url("images/file_docxf.svg"); +} + .create-sample { color: #666666; line-height: 24px; diff --git a/web/documentserver-example/csharp-mvc/Helpers/DocManagerHelper.cs b/web/documentserver-example/csharp-mvc/Helpers/DocManagerHelper.cs index aa01fdaf..0ed34cba 100644 --- a/web/documentserver-example/csharp-mvc/Helpers/DocManagerHelper.cs +++ b/web/documentserver-example/csharp-mvc/Helpers/DocManagerHelper.cs @@ -44,7 +44,7 @@ namespace OnlineEditorsExampleMVC.Helpers // get all the supported file extensions public static List FileExts { - get { return ViewedExts.Concat(EditedExts).Concat(ConvertExts).ToList(); } + get { return ViewedExts.Concat(EditedExts).Concat(ConvertExts).Concat(FillFormExts).ToList(); } } // get file extensions that can be viewed @@ -53,6 +53,11 @@ namespace OnlineEditorsExampleMVC.Helpers get { return (WebConfigurationManager.AppSettings["files.docservice.viewed-docs"] ?? "").Split(new char[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); } } + public static List FillFormExts + { + get { return (WebConfigurationManager.AppSettings["files.docservice.fillform-docs"] ?? "").Split(new char[] { '|', ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); } + } + // get file extensions that can be edited public static List EditedExts { diff --git a/web/documentserver-example/csharp-mvc/Models/FileModel.cs b/web/documentserver-example/csharp-mvc/Models/FileModel.cs index c25baecb..ebd26b1f 100644 --- a/web/documentserver-example/csharp-mvc/Models/FileModel.cs +++ b/web/documentserver-example/csharp-mvc/Models/FileModel.cs @@ -80,11 +80,16 @@ namespace OnlineEditorsExampleMVC.Models var editorsMode = Mode ?? "edit"; // get editor mode var canEdit = DocManagerHelper.EditedExts.Contains(ext); // check if the file with such an extension can be edited - var mode = canEdit && editorsMode != "view" ? "edit" : "view"; // set the mode parameter: change it to view if the document can't be edited - var submitForm = canEdit && (editorsMode.Equals("edit") || editorsMode.Equals("fillForms")); // check if the Submit form button is displayed or not var id = request.Cookies.GetOrDefault("uid", null); var user = Users.getUser(id); // get the user + + if ((!canEdit && editorsMode.Equals("edit") || editorsMode.Equals("fillForms")) && DocManagerHelper.FillFormExts.Contains(ext)) { + editorsMode = "fillForms"; + canEdit = true; + } + var submitForm = editorsMode.Equals("fillForms") && id.Equals("uid-1") && false; // check if the Submit form button is displayed or not + var mode = canEdit && editorsMode != "view" ? "edit" : "view"; // set the mode parameter: change it to view if the document can't be edited // favorite icon state bool? favorite = user.favorite; diff --git a/web/documentserver-example/csharp-mvc/Models/FileUtility.cs b/web/documentserver-example/csharp-mvc/Models/FileUtility.cs index adec7d08..e240ae0b 100644 --- a/web/documentserver-example/csharp-mvc/Models/FileUtility.cs +++ b/web/documentserver-example/csharp-mvc/Models/FileUtility.cs @@ -49,7 +49,7 @@ namespace OnlineEditorsExampleMVC.Models ".dot", ".dotx", ".dotm", ".odt", ".fodt", ".ott", ".rtf", ".txt", ".html", ".htm", ".mht", ".xml", - ".pdf", ".djvu", ".fb2", ".epub", ".xps", ".oxps" + ".pdf", ".djvu", ".fb2", ".epub", ".xps", ".oxps", ".oform" }; // spreadsheet extensions diff --git a/web/documentserver-example/csharp-mvc/OnlineEditorsExampleMVC.csproj b/web/documentserver-example/csharp-mvc/OnlineEditorsExampleMVC.csproj index 017d7e5b..cc4955f8 100644 --- a/web/documentserver-example/csharp-mvc/OnlineEditorsExampleMVC.csproj +++ b/web/documentserver-example/csharp-mvc/OnlineEditorsExampleMVC.csproj @@ -131,6 +131,7 @@ + @@ -143,6 +144,7 @@ + diff --git a/web/documentserver-example/csharp-mvc/Scripts/jscript.js b/web/documentserver-example/csharp-mvc/Scripts/jscript.js index e810a914..b4889c08 100644 --- a/web/documentserver-example/csharp-mvc/Scripts/jscript.js +++ b/web/documentserver-example/csharp-mvc/Scripts/jscript.js @@ -168,7 +168,7 @@ if (typeof jQuery != "undefined") { var posExt = fileName.lastIndexOf('.'); posExt = 0 <= posExt ? fileName.substring(posExt).trim().toLowerCase() : ''; - if (EditedExtList.indexOf(posExt) != -1) { + if (EditedExtList.indexOf(posExt) != -1 || FillExtList.indexOf(posExt) != -1) { jq("#beginEdit").removeClass("disable"); } }; diff --git a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx index 14d4d78b..c266e8a9 100644 --- a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx +++ b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx @@ -47,9 +47,11 @@ var docEditor; - var innerAlert = function (message) { + var innerAlert = function (message, inEditor) { if (console && console.log) console.log(message); + if (inEditor && docEditor) + docEditor.showMessage(message); }; // the application is loaded into the browser @@ -134,6 +136,23 @@ <% Model.GetMailMergeConfig(out dataMailMergeRecipients); %> docEditor.setMailMergeRecipients(<%= dataMailMergeRecipients%>); // insert recipient data for mail merge into the file }; + + var onRequestSaveAs = function (event) { // the user is trying to save file by clicking Save Copy as... button + var title = event.data.title; + var url = event.data.url; + var data = { + title: title, + url: url + }; + let xhr = new XMLHttpRequest(); + xhr.open("POST", "webeditor.ashx?type=saveas"); + xhr.setRequestHeader( 'Content-Type', 'application/json'); + xhr.send(JSON.stringify(data)); + xhr.onload = function () { + innerAlert(xhr.responseText); + innerAlert(JSON.parse(xhr.responseText).file, true); + } + }; var config = <%= Model.GetDocConfig(Request, Url) %>; @@ -185,12 +204,15 @@ }; // the user is mentioned in a comment config.events['onRequestSendNotify'] = function (event) { - var actionLink = JSON.stringify(event.data.actionLink); - console.log("onRequestSendNotify:"); - console.log(event.data); - console.log("Link to comment: " + replaceActionLink(location.href, actionLink)); + event.data.actionLink = replaceActionLink(location.href, event.data.actionLink); + var data = JSON.stringify(event.data); + innerAlert("onRequestSendNotify: " + data); }; <% } %> + + if (config.editorConfig.createUrl) { + config.events.onRequestSaveAs = onRequestSaveAs; + }; var сonnectEditor = function () { docEditor = new DocsAPI.DocEditor("iframeEditor", config); diff --git a/web/documentserver-example/csharp-mvc/Views/Home/Index.aspx b/web/documentserver-example/csharp-mvc/Views/Home/Index.aspx index bb207b79..b6e33437 100644 --- a/web/documentserver-example/csharp-mvc/Views/Home/Index.aspx +++ b/web/documentserver-example/csharp-mvc/Views/Home/Index.aspx @@ -65,6 +65,9 @@
  • Presentation
  • +
  • + Master form +