Feature: Document Template Packages
Document Templates can be grouped into a package and generated on-demand in the same was as individual document templates. Packages can be generated in bulk.
This commit is contained in:
@@ -72,7 +72,12 @@ namespace Disco.Web.Areas.Config
|
||||
context.MapRoute(
|
||||
"Config_DocumentTemplate_Create",
|
||||
"Config/DocumentTemplate/Create",
|
||||
new { controller = "DocumentTemplate", action = "Create", id = UrlParameter.Optional }
|
||||
new { controller = "DocumentTemplate", action = "Create" }
|
||||
);
|
||||
context.MapRoute(
|
||||
"Config_DocumentTemplate_CreatePackage",
|
||||
"Config/DocumentTemplate/CreatePackage",
|
||||
new { controller = "DocumentTemplate", action = "CreatePackage" }
|
||||
);
|
||||
context.MapRoute(
|
||||
"Config_DocumentTemplate_ImportStatus",
|
||||
@@ -89,6 +94,11 @@ namespace Disco.Web.Areas.Config
|
||||
"Config/DocumentTemplate/ExpressionBrowser",
|
||||
new { controller = "DocumentTemplate", action = "ExpressionBrowser", id = UrlParameter.Optional }
|
||||
);
|
||||
context.MapRoute(
|
||||
"Config_DocumentTemplate_ShowPackage",
|
||||
"Config/DocumentTemplate/Package/{id}",
|
||||
new { controller = "DocumentTemplate", action = "ShowPackage" }
|
||||
);
|
||||
context.MapRoute(
|
||||
"Config_DocumentTemplate",
|
||||
"Config/DocumentTemplate/{id}",
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
using Disco.BI.Extensions;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Models.UI.Config.DocumentTemplate;
|
||||
using Disco.Services;
|
||||
using Disco.Services.Authorization;
|
||||
using Disco.Services.Documents;
|
||||
using Disco.Services.Documents.ManagedGroups;
|
||||
using Disco.Services.Expressions;
|
||||
using Disco.Services.Plugins.Features.UIExtension;
|
||||
@@ -20,7 +22,8 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
{
|
||||
if (string.IsNullOrEmpty(id))
|
||||
{
|
||||
var m = new Models.DocumentTemplate.IndexModel() {
|
||||
var m = new Models.DocumentTemplate.IndexModel()
|
||||
{
|
||||
DocumentTemplates = Database.DocumentTemplates
|
||||
.Select(dt => new
|
||||
{
|
||||
@@ -30,7 +33,8 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
Database.JobAttachments.Count(a => a.DocumentTemplateId == dt.Id) +
|
||||
Database.UserAttachments.Count(a => a.DocumentTemplateId == dt.Id)
|
||||
})
|
||||
.ToDictionary(i => i.documentTemplate, i => i.storedInstances)
|
||||
.ToDictionary(i => i.documentTemplate, i => i.storedInstances),
|
||||
Packages = DocumentTemplatePackages.GetPackages()
|
||||
};
|
||||
|
||||
// UI Extensions
|
||||
@@ -40,10 +44,15 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
// Normal Document Template
|
||||
var m = new Models.DocumentTemplate.ShowModel()
|
||||
{
|
||||
DocumentTemplate = Database.DocumentTemplates.Include("JobSubTypes").FirstOrDefault(at => at.Id == id)
|
||||
};
|
||||
if (m.DocumentTemplate == null)
|
||||
throw new ArgumentException("Invalid Document Template Id", nameof(id));
|
||||
|
||||
m.TemplatePagesHaveAttachmentId = m.DocumentTemplate.PdfPageHasAttachmentId(Database);
|
||||
m.TemplateExpressions = m.DocumentTemplate.ExtractPdfExpressions(Database);
|
||||
m.UpdateModel(Database);
|
||||
|
||||
@@ -61,6 +70,32 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
public virtual ActionResult ShowPackage(string id)
|
||||
{
|
||||
// Document Template Package
|
||||
var m = new Models.DocumentTemplate.ShowPackageModel()
|
||||
{
|
||||
Package = DocumentTemplatePackages.GetPackage(id)
|
||||
};
|
||||
if (m.Package == null)
|
||||
throw new ArgumentException("Invalid Document Template Package Id", nameof(id));
|
||||
|
||||
if (m.Package.Scope == AttachmentTypes.Job)
|
||||
{
|
||||
m.JobTypes = Database.JobTypes.Include("JobSubTypes").ToList();
|
||||
m.JobSubTypesSelected = m.Package.GetJobSubTypes(m.JobTypes.SelectMany(jt => jt.JobSubTypes));
|
||||
}
|
||||
var packageScopeString = m.Package.Scope.ToString();
|
||||
|
||||
m.DocumentTemplates = Database.DocumentTemplates.Where(dt => dt.Scope == packageScopeString).ToList();
|
||||
m.DocumentTemplatesSelected = m.Package.GetDocumentTemplates(m.DocumentTemplates);
|
||||
|
||||
// UI Extensions
|
||||
UIExtensions.ExecuteExtensions<ConfigDocumentTemplateShowPackageModel>(this.ControllerContext, m);
|
||||
|
||||
return View(MVC.Config.DocumentTemplate.Views.ShowPackage, m);
|
||||
}
|
||||
|
||||
[DiscoAuthorize(Claims.Config.DocumentTemplate.ShowStatus)]
|
||||
public virtual ActionResult ImportStatus()
|
||||
{
|
||||
@@ -130,7 +165,7 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
ModelState.AddModelError("Name", "A Document Template with this Name already exists.");
|
||||
ModelState.AddModelError("Id", "A Document Template with this Id already exists.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,6 +175,42 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
return View(model);
|
||||
}
|
||||
|
||||
[DiscoAuthorizeAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure)]
|
||||
public virtual ActionResult CreatePackage()
|
||||
{
|
||||
var m = new Models.DocumentTemplate.CreatePackageModel();
|
||||
|
||||
// UI Extensions
|
||||
UIExtensions.ExecuteExtensions<ConfigDocumentTemplateCreatePackageModel>(this.ControllerContext, m);
|
||||
|
||||
return View(m);
|
||||
}
|
||||
|
||||
[DiscoAuthorizeAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure), HttpPost]
|
||||
public virtual ActionResult CreatePackage(Models.DocumentTemplate.CreatePackageModel model)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
// Check for Existing
|
||||
var existing = DocumentTemplatePackages.GetPackage(model.Package.Id);
|
||||
if (existing == null)
|
||||
{
|
||||
DocumentTemplatePackages.CreatePackage(model.Package);
|
||||
|
||||
return RedirectToAction(MVC.Config.DocumentTemplate.ShowPackage(model.Package.Id));
|
||||
}
|
||||
else
|
||||
{
|
||||
ModelState.AddModelError("Id", "A Document Template Package with this Id already exists.");
|
||||
}
|
||||
}
|
||||
|
||||
// UI Extensions
|
||||
UIExtensions.ExecuteExtensions<ConfigDocumentTemplateCreatePackageModel>(this.ControllerContext, model);
|
||||
|
||||
return View(model);
|
||||
}
|
||||
|
||||
[DiscoAuthorize(Claims.Config.Show)]
|
||||
public virtual ActionResult ExpressionBrowser(string type, bool StaticDeclaredMembersOnly = false)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
using Disco.Models.Services.Documents;
|
||||
using Disco.Models.UI.Config.DocumentTemplate;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Disco.Web.Areas.Config.Models.DocumentTemplate
|
||||
{
|
||||
public class CreatePackageModel : ConfigDocumentTemplateCreatePackageModel
|
||||
{
|
||||
public DocumentTemplatePackage Package { get; set; }
|
||||
|
||||
public List<string> Scopes
|
||||
{
|
||||
get
|
||||
{
|
||||
return Disco.Models.Repository.DocumentTemplate.DocumentTemplateScopes.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using Disco.Models.UI.Config.DocumentTemplate;
|
||||
using Disco.Models.Services.Documents;
|
||||
using Disco.Models.UI.Config.DocumentTemplate;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Disco.Web.Areas.Config.Models.DocumentTemplate
|
||||
@@ -6,5 +7,7 @@ namespace Disco.Web.Areas.Config.Models.DocumentTemplate
|
||||
public class IndexModel : ConfigDocumentTemplateIndexModel
|
||||
{
|
||||
public Dictionary<Disco.Models.Repository.DocumentTemplate, int> DocumentTemplates { get; set; }
|
||||
|
||||
public List<DocumentTemplatePackage> Packages { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,9 @@ namespace Disco.Web.Areas.Config.Models.DocumentTemplate
|
||||
|
||||
public int StoredInstanceCount { get; set; }
|
||||
|
||||
public List<bool> TemplatePagesHaveAttachmentId { get; set; }
|
||||
public List<Expression> TemplateExpressions { get; set; }
|
||||
public int TemplatePageCount { get { return TemplatePagesHaveAttachmentId?.Count() ?? 0; } }
|
||||
|
||||
public List<JobType> JobTypes { get; set; }
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Models.Services.Documents;
|
||||
using Disco.Models.UI.Config.DocumentTemplate;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Disco.Web.Areas.Config.Models.DocumentTemplate
|
||||
{
|
||||
public class ShowPackageModel : ConfigDocumentTemplateShowPackageModel
|
||||
{
|
||||
public DocumentTemplatePackage Package { get; set; }
|
||||
public List<JobSubType> JobSubTypesSelected { get; set; }
|
||||
public List<Disco.Models.Repository.DocumentTemplate> DocumentTemplates { get; set; }
|
||||
public List<Disco.Models.Repository.DocumentTemplate> DocumentTemplatesSelected { get; set; }
|
||||
public List<JobType> JobTypes { get; set; }
|
||||
public List<string> Scopes
|
||||
{
|
||||
get
|
||||
{
|
||||
return Disco.Models.Repository.DocumentTemplate.DocumentTemplateScopes.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
@model Disco.Web.Areas.Config.Models.DocumentTemplate.CreatePackageModel
|
||||
@{
|
||||
Authorization.RequireAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), "Create Package");
|
||||
}
|
||||
@using (Html.BeginForm(MVC.Config.DocumentTemplate.CreatePackage()))
|
||||
{
|
||||
<div class="form" style="width: 650px">
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Id:
|
||||
</th>
|
||||
<td>@Html.TextBoxFor(model => model.Package.Id)<br />@Html.ValidationMessageFor(model => model.Package.Id)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Description:
|
||||
</th>
|
||||
<td>@Html.TextBoxFor(model => model.Package.Description)<br />@Html.ValidationMessageFor(model => model.Package.Description)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Scope:
|
||||
</th>
|
||||
<td>
|
||||
@Html.DropDownListFor(model => model.Package.Scope, Model.Scopes.ToSelectListItems(null))
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p class="actions">
|
||||
<input type="submit" class="button" value="Create" />
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Config.Views.DocumentTemplate
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Services;
|
||||
using Disco.Services.Authorization;
|
||||
using Disco.Services.Web;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/CreatePackage.cshtml")]
|
||||
public partial class CreatePackage : Disco.Services.Web.WebViewPage<Disco.Web.Areas.Config.Models.DocumentTemplate.CreatePackageModel>
|
||||
{
|
||||
public CreatePackage()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 2 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml"
|
||||
|
||||
Authorization.RequireAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), "Create Package");
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n");
|
||||
|
||||
|
||||
#line 7 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml"
|
||||
using (Html.BeginForm(MVC.Config.DocumentTemplate.CreatePackage()))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <div");
|
||||
|
||||
WriteLiteral(" class=\"form\"");
|
||||
|
||||
WriteLiteral(" style=\"width: 650px\"");
|
||||
|
||||
WriteLiteral(">\r\n <table>\r\n <tr>\r\n <th>\r\n I" +
|
||||
"d:\r\n </th>\r\n <td>");
|
||||
|
||||
|
||||
#line 15 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml"
|
||||
Write(Html.TextBoxFor(model => model.Package.Id));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("<br />");
|
||||
|
||||
|
||||
#line 15 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml"
|
||||
Write(Html.ValidationMessageFor(model => model.Package.Id));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" +
|
||||
">\r\n Description:\r\n </th>\r\n <td>" +
|
||||
"");
|
||||
|
||||
|
||||
#line 22 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml"
|
||||
Write(Html.TextBoxFor(model => model.Package.Description));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("<br />");
|
||||
|
||||
|
||||
#line 22 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml"
|
||||
Write(Html.ValidationMessageFor(model => model.Package.Description));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" +
|
||||
">\r\n Scope:\r\n </th>\r\n <td>\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 30 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml"
|
||||
Write(Html.DropDownListFor(model => model.Package.Scope, Model.Scopes.ToSelectListItems(null)));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n </tr>\r\n </table>\r\n <p");
|
||||
|
||||
WriteLiteral(" class=\"actions\"");
|
||||
|
||||
WriteLiteral(">\r\n <input");
|
||||
|
||||
WriteLiteral(" type=\"submit\"");
|
||||
|
||||
WriteLiteral(" class=\"button\"");
|
||||
|
||||
WriteLiteral(" value=\"Create\"");
|
||||
|
||||
WriteLiteral(" />\r\n </p>\r\n </div>\r\n");
|
||||
|
||||
|
||||
#line 38 "..\..\Areas\Config\Views\DocumentTemplate\CreatePackage.cshtml"
|
||||
}
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
@@ -3,8 +3,9 @@
|
||||
Authorization.Require(Claims.Config.DocumentTemplate.Show);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates");
|
||||
var showTags = Model.DocumentTemplates.Keys.Any(i => i.DevicesLinkedGroup != null || i.UsersLinkedGroup != null ||
|
||||
i.FilterExpression != null || i.OnGenerateExpression != null || i.OnImportAttachmentExpression != null);
|
||||
var showTags = Model.DocumentTemplates.Keys.Any(i => i.IsHidden || i.DevicesLinkedGroup != null || i.UsersLinkedGroup != null ||
|
||||
i.FilterExpression != null || i.OnGenerateExpression != null || i.OnImportAttachmentExpression != null) ||
|
||||
Model.Packages.Any(i => i.IsHidden || i.FilterExpression != null || i.OnGenerateExpression != null);
|
||||
}
|
||||
@if (Model.DocumentTemplates.Count == 0)
|
||||
{
|
||||
@@ -14,18 +15,19 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Model.DocumentTemplates.Keys.Any(dt => dt.IsHidden))
|
||||
if (Model.DocumentTemplates.Keys.Any(dt => dt.IsHidden) || Model.Packages.Any(p => p.IsHidden))
|
||||
{
|
||||
<a id="Config_DocumentTemplates_ShowHidden" href="#" class="button small">Show Hidden (@(Model.DocumentTemplates.Keys.Count(dt => dt.IsHidden)))</a>
|
||||
<script>
|
||||
$(function () {
|
||||
$('#Config_DocumentTemplates_ShowHidden').click(function () {
|
||||
$(this).remove();
|
||||
$('#Config_DocumentTemplates_List').find('tr.hidden').show();
|
||||
return false;
|
||||
}).detach().appendTo('#layout_PageHeading');
|
||||
})
|
||||
</script>
|
||||
<a id="Config_DocumentTemplates_ShowHidden" href="#" class="button small">Show Hidden (@(Model.DocumentTemplates.Keys.Count(dt => dt.IsHidden) + Model.Packages.Count(p => p.IsHidden)))</a>
|
||||
<script>
|
||||
$(function () {
|
||||
$('#Config_DocumentTemplates_ShowHidden').click(function () {
|
||||
$(this).remove();
|
||||
$('#Config_DocumentTemplates_List').find('tr.hidden').show();
|
||||
$('#Config_DocumentTemplatePackages_List').find('tr.hidden').show();
|
||||
return false;
|
||||
}).detach().appendTo('#layout_PageHeading');
|
||||
})
|
||||
</script>
|
||||
}
|
||||
<table id="Config_DocumentTemplates_List" class="tableData">
|
||||
<tr>
|
||||
@@ -67,6 +69,43 @@ else
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
if (Model.Packages.Count > 0)
|
||||
{
|
||||
<h1 class="Config_DocumentTemplates">Document Template Packages</h1>
|
||||
<table id="Config_DocumentTemplatePackages_List" class="tableData">
|
||||
<tr>
|
||||
<th>Id</th>
|
||||
<th>Description</th>
|
||||
<th>Scope</th>
|
||||
<th>Document Templates</th>
|
||||
@if (showTags)
|
||||
{
|
||||
<th> </th>
|
||||
}
|
||||
</tr>
|
||||
@foreach (var package in Model.Packages.OrderBy(p => p.Id))
|
||||
{
|
||||
<tr class="@(package.IsHidden ? "hidden" : null)">
|
||||
<td>@Html.ActionLink(package.Id.ToString(), MVC.Config.DocumentTemplate.ShowPackage(package.Id))</td>
|
||||
<td>@Html.DisplayFor(modelItem => package.Description)</td>
|
||||
<td>@Html.DisplayFor(modelItem => package.Scope)</td>
|
||||
@if (showTags)
|
||||
{
|
||||
<td>
|
||||
@if (package.FilterExpression != null || package.OnGenerateExpression != null)
|
||||
{
|
||||
<i class="fa fa-bolt fa-lg alert" title="Has Expressions"></i>
|
||||
}
|
||||
@if (package.IsHidden)
|
||||
{
|
||||
<i class="fa fa-minus-square fa-lg error" title="Is Hidden"></i>
|
||||
}
|
||||
</td>
|
||||
}
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
}
|
||||
}
|
||||
<div class="actionBar">
|
||||
@if (Authorization.Has(Claims.Config.DocumentTemplate.UndetectedPages))
|
||||
@@ -81,6 +120,10 @@ else
|
||||
{
|
||||
@Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser())
|
||||
}
|
||||
@if (Model.DocumentTemplates.Count > 2 && Authorization.HasAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure))
|
||||
{
|
||||
@Html.ActionLinkButton("Create Package", MVC.Config.DocumentTemplate.CreatePackage())
|
||||
}
|
||||
@if (Authorization.HasAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure))
|
||||
{
|
||||
@Html.ActionLinkButton("Create Document Template", MVC.Config.DocumentTemplate.Create())
|
||||
|
||||
@@ -49,8 +49,9 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate
|
||||
Authorization.Require(Claims.Config.DocumentTemplate.Show);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates");
|
||||
var showTags = Model.DocumentTemplates.Keys.Any(i => i.DevicesLinkedGroup != null || i.UsersLinkedGroup != null ||
|
||||
i.FilterExpression != null || i.OnGenerateExpression != null || i.OnImportAttachmentExpression != null);
|
||||
var showTags = Model.DocumentTemplates.Keys.Any(i => i.IsHidden || i.DevicesLinkedGroup != null || i.UsersLinkedGroup != null ||
|
||||
i.FilterExpression != null || i.OnGenerateExpression != null || i.OnImportAttachmentExpression != null) ||
|
||||
Model.Packages.Any(i => i.IsHidden || i.FilterExpression != null || i.OnGenerateExpression != null);
|
||||
|
||||
|
||||
#line default
|
||||
@@ -58,7 +59,7 @@ namespace Disco.Web.Areas.Config.Views.DocumentTemplate
|
||||
WriteLiteral("\r\n");
|
||||
|
||||
|
||||
#line 9 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 10 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (Model.DocumentTemplates.Count == 0)
|
||||
{
|
||||
|
||||
@@ -74,11 +75,11 @@ WriteLiteral(" style=\"width: 450px; padding: 100px 0;\"");
|
||||
WriteLiteral(">\r\n <h2>No document templates are configured</h2>\r\n </div>\r\n");
|
||||
|
||||
|
||||
#line 14 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 15 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Model.DocumentTemplates.Keys.Any(dt => dt.IsHidden))
|
||||
if (Model.DocumentTemplates.Keys.Any(dt => dt.IsHidden) || Model.Packages.Any(p => p.IsHidden))
|
||||
{
|
||||
|
||||
|
||||
@@ -95,27 +96,28 @@ WriteLiteral(" class=\"button small\"");
|
||||
WriteLiteral(">Show Hidden (");
|
||||
|
||||
|
||||
#line 19 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Model.DocumentTemplates.Keys.Count(dt => dt.IsHidden));
|
||||
#line 20 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Model.DocumentTemplates.Keys.Count(dt => dt.IsHidden) + Model.Packages.Count(p => p.IsHidden));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(")</a>\r\n");
|
||||
|
||||
WriteLiteral(@" <script>
|
||||
$(function () {
|
||||
$('#Config_DocumentTemplates_ShowHidden').click(function () {
|
||||
$(this).remove();
|
||||
$('#Config_DocumentTemplates_List').find('tr.hidden').show();
|
||||
return false;
|
||||
}).detach().appendTo('#layout_PageHeading');
|
||||
})
|
||||
</script>
|
||||
WriteLiteral(@" <script>
|
||||
$(function () {
|
||||
$('#Config_DocumentTemplates_ShowHidden').click(function () {
|
||||
$(this).remove();
|
||||
$('#Config_DocumentTemplates_List').find('tr.hidden').show();
|
||||
$('#Config_DocumentTemplatePackages_List').find('tr.hidden').show();
|
||||
return false;
|
||||
}).detach().appendTo('#layout_PageHeading');
|
||||
})
|
||||
</script>
|
||||
");
|
||||
|
||||
|
||||
#line 29 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 31 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
@@ -131,13 +133,13 @@ WriteLiteral(">\r\n <tr>\r\n <th>Id</th>\r\n <th>De
|
||||
" <th>Scope</th>\r\n <th>Stored Instances</th>\r\n");
|
||||
|
||||
|
||||
#line 36 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 38 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 36 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 38 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (showTags)
|
||||
{
|
||||
|
||||
@@ -147,7 +149,7 @@ WriteLiteral(">\r\n <tr>\r\n <th>Id</th>\r\n <th>De
|
||||
WriteLiteral(" <th> </th>\r\n");
|
||||
|
||||
|
||||
#line 39 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 41 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
@@ -156,13 +158,13 @@ WriteLiteral(" <th> </th>\r\n");
|
||||
WriteLiteral(" </tr>\r\n");
|
||||
|
||||
|
||||
#line 41 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 43 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 41 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 43 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
foreach (var pair in Model.DocumentTemplates)
|
||||
{
|
||||
var item = pair.Key;
|
||||
@@ -173,20 +175,20 @@ WriteLiteral(" </tr>\r\n");
|
||||
#line hidden
|
||||
WriteLiteral(" <tr");
|
||||
|
||||
WriteAttribute("class", Tuple.Create(" class=\"", 1798), Tuple.Create("\"", 1840)
|
||||
WriteAttribute("class", Tuple.Create(" class=\"", 2057), Tuple.Create("\"", 2099)
|
||||
|
||||
#line 45 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 1806), Tuple.Create<System.Object, System.Int32>(item.IsHidden ? "hidden" : null
|
||||
#line 47 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 2065), Tuple.Create<System.Object, System.Int32>(item.IsHidden ? "hidden" : null
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 1806), false)
|
||||
, 2065), false)
|
||||
);
|
||||
|
||||
WriteLiteral(">\r\n <td>");
|
||||
|
||||
|
||||
#line 46 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 48 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Html.ActionLink(item.Id.ToString(), MVC.Config.DocumentTemplate.Index(item.Id)));
|
||||
|
||||
|
||||
@@ -195,7 +197,7 @@ WriteLiteral(">\r\n <td>");
|
||||
WriteLiteral("</td>\r\n <td>");
|
||||
|
||||
|
||||
#line 47 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 49 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Html.DisplayFor(modelItem => item.Description));
|
||||
|
||||
|
||||
@@ -204,7 +206,7 @@ WriteLiteral("</td>\r\n <td>");
|
||||
WriteLiteral("</td>\r\n <td>");
|
||||
|
||||
|
||||
#line 48 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 50 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Html.DisplayFor(modelItem => item.Scope));
|
||||
|
||||
|
||||
@@ -213,7 +215,7 @@ WriteLiteral("</td>\r\n <td>");
|
||||
WriteLiteral("</td>\r\n <td>");
|
||||
|
||||
|
||||
#line 49 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 51 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(storedCount.ToString("N0"));
|
||||
|
||||
|
||||
@@ -222,13 +224,13 @@ WriteLiteral("</td>\r\n <td>");
|
||||
WriteLiteral("</td>\r\n");
|
||||
|
||||
|
||||
#line 50 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 52 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 50 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 52 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (showTags)
|
||||
{
|
||||
|
||||
@@ -238,13 +240,13 @@ WriteLiteral("</td>\r\n");
|
||||
WriteLiteral(" <td>\r\n");
|
||||
|
||||
|
||||
#line 53 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 55 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 53 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 55 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (item.DevicesLinkedGroup != null || item.UsersLinkedGroup != null)
|
||||
{
|
||||
|
||||
@@ -260,7 +262,7 @@ WriteLiteral(" title=\"Is Linked\"");
|
||||
WriteLiteral("></i>\r\n");
|
||||
|
||||
|
||||
#line 56 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 58 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
@@ -269,7 +271,7 @@ WriteLiteral("></i>\r\n");
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 57 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 59 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (item.FilterExpression != null || item.OnGenerateExpression != null || item.OnImportAttachmentExpression != null)
|
||||
{
|
||||
|
||||
@@ -285,7 +287,7 @@ WriteLiteral(" title=\"Has Expressions\"");
|
||||
WriteLiteral("></i>\r\n");
|
||||
|
||||
|
||||
#line 60 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 62 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
@@ -294,7 +296,7 @@ WriteLiteral("></i>\r\n");
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 61 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 63 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (item.IsHidden)
|
||||
{
|
||||
|
||||
@@ -310,7 +312,7 @@ WriteLiteral(" title=\"Is Hidden\"");
|
||||
WriteLiteral("></i>\r\n");
|
||||
|
||||
|
||||
#line 64 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 66 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
@@ -319,7 +321,7 @@ WriteLiteral("></i>\r\n");
|
||||
WriteLiteral(" </td>\r\n");
|
||||
|
||||
|
||||
#line 66 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 68 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
@@ -328,7 +330,7 @@ WriteLiteral(" </td>\r\n");
|
||||
WriteLiteral(" </tr>\r\n");
|
||||
|
||||
|
||||
#line 68 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 70 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
@@ -337,7 +339,202 @@ WriteLiteral(" </tr>\r\n");
|
||||
WriteLiteral(" </table>\r\n");
|
||||
|
||||
|
||||
#line 70 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 72 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (Model.Packages.Count > 0)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <h1");
|
||||
|
||||
WriteLiteral(" class=\"Config_DocumentTemplates\"");
|
||||
|
||||
WriteLiteral(">Document Template Packages</h1>\r\n");
|
||||
|
||||
WriteLiteral(" <table");
|
||||
|
||||
WriteLiteral(" id=\"Config_DocumentTemplatePackages_List\"");
|
||||
|
||||
WriteLiteral(" class=\"tableData\"");
|
||||
|
||||
WriteLiteral(">\r\n <tr>\r\n <th>Id</th>\r\n <th>Description" +
|
||||
"</th>\r\n <th>Scope</th>\r\n <th>Document Templates</t" +
|
||||
"h>\r\n");
|
||||
|
||||
|
||||
#line 81 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 81 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (showTags)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <th> </th>\r\n");
|
||||
|
||||
|
||||
#line 84 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </tr>\r\n");
|
||||
|
||||
|
||||
#line 86 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 86 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
foreach (var package in Model.Packages.OrderBy(p => p.Id))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <tr");
|
||||
|
||||
WriteAttribute("class", Tuple.Create(" class=\"", 3889), Tuple.Create("\"", 3934)
|
||||
|
||||
#line 88 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 3897), Tuple.Create<System.Object, System.Int32>(package.IsHidden ? "hidden" : null
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 3897), false)
|
||||
);
|
||||
|
||||
WriteLiteral(">\r\n <td>");
|
||||
|
||||
|
||||
#line 89 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Html.ActionLink(package.Id.ToString(), MVC.Config.DocumentTemplate.ShowPackage(package.Id)));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</td>\r\n <td>");
|
||||
|
||||
|
||||
#line 90 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Html.DisplayFor(modelItem => package.Description));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</td>\r\n <td>");
|
||||
|
||||
|
||||
#line 91 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Html.DisplayFor(modelItem => package.Scope));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</td>\r\n");
|
||||
|
||||
|
||||
#line 92 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 92 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (showTags)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <td>\r\n");
|
||||
|
||||
|
||||
#line 95 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 95 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (package.FilterExpression != null || package.OnGenerateExpression != null)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <i");
|
||||
|
||||
WriteLiteral(" class=\"fa fa-bolt fa-lg alert\"");
|
||||
|
||||
WriteLiteral(" title=\"Has Expressions\"");
|
||||
|
||||
WriteLiteral("></i>\r\n");
|
||||
|
||||
|
||||
#line 98 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 99 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (package.IsHidden)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <i");
|
||||
|
||||
WriteLiteral(" class=\"fa fa-minus-square fa-lg error\"");
|
||||
|
||||
WriteLiteral(" title=\"Is Hidden\"");
|
||||
|
||||
WriteLiteral("></i>\r\n");
|
||||
|
||||
|
||||
#line 102 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </td>\r\n");
|
||||
|
||||
|
||||
#line 104 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </tr>\r\n");
|
||||
|
||||
|
||||
#line 106 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </table>\r\n");
|
||||
|
||||
|
||||
#line 108 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -350,13 +547,13 @@ WriteLiteral(" class=\"actionBar\"");
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 72 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 111 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 72 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 111 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (Authorization.Has(Claims.Config.DocumentTemplate.UndetectedPages))
|
||||
{
|
||||
|
||||
@@ -364,14 +561,14 @@ WriteLiteral(">\r\n");
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 74 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 113 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Html.ActionLinkButton("Undetected Pages", MVC.Config.DocumentTemplate.UndetectedPages()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 74 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 113 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
}
|
||||
|
||||
@@ -381,7 +578,7 @@ WriteLiteral(">\r\n");
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 76 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 115 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (Authorization.Has(Claims.Config.DocumentTemplate.ShowStatus))
|
||||
{
|
||||
|
||||
@@ -389,14 +586,14 @@ WriteLiteral(" ");
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 78 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 117 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Html.ActionLinkButton("Import Status", MVC.Config.DocumentTemplate.ImportStatus()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 78 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 117 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
}
|
||||
|
||||
@@ -406,7 +603,7 @@ WriteLiteral(" ");
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 80 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 119 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (Authorization.Has(Claims.Config.Show))
|
||||
{
|
||||
|
||||
@@ -414,14 +611,14 @@ WriteLiteral(" ");
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 82 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 121 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 82 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 121 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
}
|
||||
|
||||
@@ -431,7 +628,32 @@ WriteLiteral(" ");
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 84 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 123 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (Model.DocumentTemplates.Count > 2 && Authorization.HasAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 125 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Html.ActionLinkButton("Create Package", MVC.Config.DocumentTemplate.CreatePackage()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 125 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 127 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
if (Authorization.HasAll(Claims.Config.DocumentTemplate.Create, Claims.Config.DocumentTemplate.Configure))
|
||||
{
|
||||
|
||||
@@ -439,14 +661,14 @@ WriteLiteral(" ");
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 86 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 129 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
Write(Html.ActionLinkButton("Create Document Template", MVC.Config.DocumentTemplate.Create()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 86 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
#line 129 "..\..\Areas\Config\Views\DocumentTemplate\Index.cshtml"
|
||||
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,767 @@
|
||||
@model Disco.Web.Areas.Config.Models.DocumentTemplate.ShowPackageModel
|
||||
@using Disco.Services.Interop.ActiveDirectory;
|
||||
@{
|
||||
Authorization.Require(Claims.Config.DocumentTemplate.Show);
|
||||
|
||||
var canConfig = Authorization.Has(Claims.Config.DocumentTemplate.Configure);
|
||||
|
||||
var hideAdvanced =
|
||||
Model.Package.FilterExpression == null &&
|
||||
Model.Package.OnGenerateExpression == null;
|
||||
|
||||
#region Can Bulk Generate
|
||||
var canBulkGenerate = Authorization.Has(Claims.Config.DocumentTemplate.BulkGenerate);
|
||||
if (canBulkGenerate)
|
||||
{
|
||||
switch (Model.Package.Scope)
|
||||
{
|
||||
case AttachmentTypes.Device:
|
||||
canBulkGenerate = Authorization.Has(Claims.Device.Actions.GenerateDocuments);
|
||||
break;
|
||||
case AttachmentTypes.Job:
|
||||
canBulkGenerate = Authorization.Has(Claims.Job.Actions.GenerateDocuments);
|
||||
break;
|
||||
case AttachmentTypes.User:
|
||||
canBulkGenerate = Authorization.Has(Claims.User.Actions.GenerateDocuments);
|
||||
break;
|
||||
default:
|
||||
throw new InvalidOperationException("Invalid Package Scope");
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), "Package: " + Model.Package.Description);
|
||||
|
||||
if (canConfig)
|
||||
{
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers");
|
||||
}
|
||||
}
|
||||
<div id="Config_DocumentTemplatePackages_Show" class="@(hideAdvanced ? " Config_HideAdvanced" : null)">
|
||||
<div class="form" style="width: 650px; margin: 10px auto 20px;">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>
|
||||
Id:
|
||||
</th>
|
||||
<td>
|
||||
<code>@Html.DisplayFor(model => model.Package.Id)</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Description:
|
||||
</th>
|
||||
<td>
|
||||
@if (canConfig)
|
||||
{
|
||||
@Html.TextBoxFor(model => model.Package.Description)
|
||||
@AjaxHelpers.AjaxSave()
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
document.DiscoFunctions.PropertyChangeHelper(
|
||||
$('#Package_Description'),
|
||||
'Description',
|
||||
'@Url.Action(MVC.API.DocumentTemplatePackage.UpdateDescription(Model.Package.Id))',
|
||||
'Description'
|
||||
);
|
||||
});
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(Model.Package.Description))
|
||||
{
|
||||
<span class="smallMessage"><None Specified></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
@Model.Package.Description
|
||||
}
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
|
||||
</th>
|
||||
<td>
|
||||
<div>
|
||||
@if (canConfig)
|
||||
{
|
||||
<input id="Package_IsHidden" type="checkbox" @(Model.Package.IsHidden ? new MvcHtmlString("checked=\"checked\" ") : null) />
|
||||
<label for="Package_IsHidden">Hidden</label>
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
document.DiscoFunctions.PropertyChangeHelper(
|
||||
$('#Package_IsHidden'),
|
||||
null,
|
||||
'@Url.Action(MVC.API.DocumentTemplatePackage.UpdateIsHidden(Model.Package.Id))',
|
||||
'IsHidden'
|
||||
);
|
||||
});
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
<input id="Package_IsHidden" type="checkbox" @(Model.Package.IsHidden ? new MvcHtmlString("checked=\"checked\" ") : null) disabled="disabled" />
|
||||
<label for="Package_IsHidden">Hidden</label>
|
||||
}
|
||||
</div>
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-info-circle"></i>If selected the package will not appear in the list of documents to generate.
|
||||
</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
|
||||
</th>
|
||||
<td>
|
||||
<div>
|
||||
@if (canConfig)
|
||||
{
|
||||
<input id="Package_InsertBlankPages" type="checkbox" @(Model.Package.InsertBlankPages ? new MvcHtmlString("checked=\"checked\" ") : null) />
|
||||
<label for="Package_InsertBlankPages">Insert Blank Pages</label>
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
document.DiscoFunctions.PropertyChangeHelper(
|
||||
$('#Package_InsertBlankPages'),
|
||||
null,
|
||||
'@Url.Action(MVC.API.DocumentTemplatePackage.UpdateInsertBlankPages(Model.Package.Id))',
|
||||
'InsertBlankPages'
|
||||
);
|
||||
});
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
<input id="Package_InsertBlankPages" type="checkbox" @(Model.Package.InsertBlankPages ? new MvcHtmlString("checked=\"checked\" ") : null) disabled="disabled" />
|
||||
<label for="Package_InsertBlankPages">Hidden</label>
|
||||
}
|
||||
</div>
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-info-circle"></i>If selected blank pages will be inserted to ensure each of the individual documents within the package appear on separate pages when using duplex printing.
|
||||
</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Scope:
|
||||
</th>
|
||||
<td>
|
||||
<h4>@Model.Package.Scope Scope</h4>
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-info-circle"></i>This package is generated from @(Model.Package.Scope)s. Any expressions within the Document Template PDF will be evaluated within the <a href="@(Url.Action(MVC.Config.DocumentTemplate.ExpressionBrowser()))#@(Model.Package.Scope)Scope">@(Model.Package.Scope) Scope</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<button id="Config_DocumentTemplatePackages_Scope_Button" class="button small">Change Scope</button>
|
||||
</div>
|
||||
@if (canConfig)
|
||||
{
|
||||
<div id="Config_DocumentTemplatePackages_Scope_Dialog" title="Change Document Template Package Scope" class="dialog">
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplatePackage.UpdateScope(Model.Package.Id, redirect: true)))
|
||||
{
|
||||
<div class="input">
|
||||
<label for="Config_DocumentTemplatePackages_Scope_Scope">Scope: </label>
|
||||
<select id="Config_DocumentTemplatePackages_Scope_Scope" name="Scope">
|
||||
@foreach (var scope in Model.Scopes)
|
||||
{
|
||||
<option value="@scope" selected="@(scope == Model.Package.Scope.ToString() ? " selected" : null)">@scope</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
}
|
||||
@if (Model.Package.DocumentTemplateIds != null && Model.Package.DocumentTemplateIds.Count > 0)
|
||||
{
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-info-circle"></i>If changed, all Document Templates will be unassociated with this Package.
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
var dialog;
|
||||
|
||||
function showDialog() {
|
||||
if (dialog == null) {
|
||||
dialog = $('#Config_DocumentTemplatePackages_Scope_Dialog').dialog({
|
||||
width: 400,
|
||||
resizable: false,
|
||||
modal: true,
|
||||
autoOpen: false,
|
||||
buttons: {
|
||||
'Save Changes': function () {
|
||||
dialog.dialog('option', 'buttons', null);
|
||||
dialog.dialog('disable');
|
||||
$('#Config_DocumentTemplatePackages_Scope_Scope').closest('form').submit();
|
||||
},
|
||||
'Cancel': function () {
|
||||
dialog.dialog('close');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
dialog.dialog('open');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$('#Config_DocumentTemplatePackages_Scope_Button').click(showDialog);
|
||||
});
|
||||
</script>
|
||||
}
|
||||
@if (Model.Package.Scope == AttachmentTypes.Job)
|
||||
{
|
||||
<hr />
|
||||
<h4>Job Type Filters:</h4>
|
||||
<div id="Config_DocumentTemplatePackages_JobSubTypes">
|
||||
<div>
|
||||
@if (Model.Package.JobSubTypes != null && Model.Package.JobSubTypes.Count > 0)
|
||||
{
|
||||
<ul>
|
||||
@foreach (var jobType in Model.JobSubTypesSelected.GroupBy(jst => jst.JobType).OrderBy(jtg => jtg.Key.Description))
|
||||
{
|
||||
<li>
|
||||
@jobType.Key.Description
|
||||
<ul>
|
||||
@if (jobType.Count() == Model.JobTypes.FirstOrDefault(jt => jt.Id == jobType.Key.Id).JobSubTypes.Count)
|
||||
{
|
||||
<li><span class="smallMessage">[All Sub Types]</span></li>
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var jobSubType in jobType)
|
||||
{
|
||||
<li>@jobSubType.Description</li>
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="smallMessage"><No Filter></span>
|
||||
}
|
||||
</div>
|
||||
@if (canConfig)
|
||||
{
|
||||
<a id="Config_DocumentTemplatePackages_JobSubTypes_Update" href="#" class="button small">Update</a>
|
||||
<div id="Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog" class="dialog" title="Job Type Filter">
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplatePackage.UpdateJobSubTypes(Model.Package.Id, null, true)))
|
||||
{
|
||||
var selectedTypes = Model.JobSubTypesSelected.Select(jst => jst.JobType).Distinct().ToList();
|
||||
foreach (var jt in Model.JobTypes)
|
||||
{
|
||||
<div class="jobTypes">
|
||||
<h4>
|
||||
<input id="Types_@(jt.Id)" class="jobType" type="checkbox" value="@(jt.Id)" @(selectedTypes.Contains(jt) ? "checked=\" checked\"" : null) /><label for="Types_@(jt.Id)">@jt.Description</label>
|
||||
</h4>
|
||||
<div id="SubTypes_@(jt.Id)" class="jobSubTypes">
|
||||
@CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id), "div")
|
||||
@CommonHelpers.CheckBoxList("JobSubTypes", jt.JobSubTypes.OrderBy(jst => jst.Description).ToSelectListItems(Model.Package.JobSubTypes), 2)
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
<script>
|
||||
(function () {
|
||||
var dialog;
|
||||
|
||||
function showDialog() {
|
||||
if (!dialog) {
|
||||
dialog = $('#Config_DocumentTemplatePackages_JobSubTypes_Update_Dialog').dialog({
|
||||
resizable: false,
|
||||
modal: true,
|
||||
autoOpen: false,
|
||||
width: 750,
|
||||
height: 580,
|
||||
buttons: {
|
||||
"Save Changes": saveChanges,
|
||||
Cancel: cancel
|
||||
}
|
||||
});
|
||||
|
||||
dialog.find('.jobSubTypes').hide();
|
||||
dialog.on('change', 'input.jobType', function () {
|
||||
var $this = $(this);
|
||||
if ($this.is(':checked'))
|
||||
$('#SubTypes_' + $this.val()).slideDown('fast');
|
||||
else
|
||||
$('#SubTypes_' + $this.val()).slideUp('fast');
|
||||
}).find('input.jobType:checked').each(function () {
|
||||
$('#SubTypes_' + $(this).val()).show();
|
||||
});
|
||||
}
|
||||
|
||||
dialog.dialog('open');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function cancel() {
|
||||
dialog.dialog("disable");
|
||||
dialog.dialog("option", "buttons", null);
|
||||
|
||||
// Refresh Page
|
||||
window.location.reload(true);
|
||||
}
|
||||
|
||||
function saveChanges() {
|
||||
var form = dialog.find('form');
|
||||
|
||||
$('input.jobType:unchecked').each(function () {
|
||||
$('#SubTypes_' + $(this).val()).find('input').prop('checked', false);
|
||||
});
|
||||
|
||||
form.submit();
|
||||
|
||||
dialog.dialog("disable");
|
||||
dialog.dialog("option", "buttons", null);
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$('#Config_DocumentTemplatePackages_JobSubTypes_Update').click(showDialog);
|
||||
});
|
||||
|
||||
})();
|
||||
</script>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Document Templates:</th>
|
||||
<td>
|
||||
@if (Model.DocumentTemplatesSelected.Count == 0)
|
||||
{
|
||||
<div class="info-box error">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-exclamation-triangle"></i>The package has no associated Document Templates and cannot be generated.
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<button id="Config_DocumentTemplatePackages_Templates_Button" class="button small alert">Choose Document Templates</button>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<ol id="Config_DocumentTemplatePackage_List" class="none">
|
||||
@foreach (var template in Model.DocumentTemplatesSelected)
|
||||
{
|
||||
<li>
|
||||
<span class="description">@template.Description</span>
|
||||
<span class="id">@Html.ActionLink(template.Id, MVC.Config.DocumentTemplate.Index(template.Id))</span>
|
||||
</li>
|
||||
}
|
||||
</ol>
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-info-circle"></i>The package will be generated with the above Document Templates in the order they appear.
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<button id="Config_DocumentTemplatePackages_Templates_Button" class="button small">Change Document Templates</button>
|
||||
</div>
|
||||
}
|
||||
@if (canConfig)
|
||||
{
|
||||
<div id="Config_DocumentTemplatePackages_Templates_Dialog" title="Change Document Templates" class="dialog">
|
||||
<div>
|
||||
<h3>Package Templates</h3>
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplatePackage.UpdateDocumentTemplates(Model.Package.Id, redirect: true)))
|
||||
{
|
||||
<ol class="templates_connected none">
|
||||
@foreach (var template in Model.DocumentTemplatesSelected)
|
||||
{
|
||||
<li>
|
||||
<input type="hidden" name="DocumentTemplates" value="@template.Id" />
|
||||
<span class="id">@template.Id</span>
|
||||
<span class="description">@template.Description</span>
|
||||
</li>
|
||||
}
|
||||
</ol>
|
||||
}
|
||||
<div>
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-info-circle"></i>Include Document Templates by drag them from the list of Available Templates. Reorder Document Templates by dragging them within the list.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h3>Available Templates</h3>
|
||||
<ul class="templates_connected none">
|
||||
@foreach (var template in Model.DocumentTemplates.Where(t => !t.IsHidden).Except(Model.DocumentTemplatesSelected))
|
||||
{
|
||||
<li>
|
||||
<input type="hidden" name="DocumentTemplates" value="@template.Id" />
|
||||
<span class="id">@template.Id</span>
|
||||
<span class="description">@template.Description</span>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
var dialog;
|
||||
|
||||
function showDialog() {
|
||||
if (dialog == null) {
|
||||
dialog = $('#Config_DocumentTemplatePackages_Templates_Dialog').dialog({
|
||||
width: 800,
|
||||
resizable: false,
|
||||
modal: true,
|
||||
autoOpen: false,
|
||||
buttons: {
|
||||
'Save Changes': function () {
|
||||
var $form = dialog.find('form');
|
||||
if ($form.find('input').length > 0) {
|
||||
dialog.dialog('option', 'buttons', null);
|
||||
dialog.dialog('disable');
|
||||
$form.submit();
|
||||
} else {
|
||||
alert('The package templates must include at least one document template');
|
||||
}
|
||||
},
|
||||
'Cancel': function () {
|
||||
dialog.dialog('close');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
dialog.find('.templates_connected')
|
||||
.sortable({
|
||||
connectWith: '.templates_connected'
|
||||
})
|
||||
}
|
||||
|
||||
dialog.dialog('open');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$('#Config_DocumentTemplatePackages_Templates_Button').click(showDialog);
|
||||
});
|
||||
</script>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="form Config_HideAdvanced_Item" style="width: 650px;">
|
||||
<h2>Advanced Options</h2>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>
|
||||
Filter Expression:
|
||||
</th>
|
||||
<td>
|
||||
@if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression))
|
||||
{
|
||||
@Html.EditorFor(model => Model.Package.FilterExpression)
|
||||
@AjaxHelpers.AjaxRemove()
|
||||
@AjaxHelpers.AjaxSave()
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
var field = $('#Package_FilterExpression');
|
||||
var fieldRemove = field.next('.ajaxRemove');
|
||||
var fieldOriginalWidth, fieldOriginalHeight;
|
||||
|
||||
document.DiscoFunctions.PropertyChangeHelper(
|
||||
field,
|
||||
'None',
|
||||
'@Url.Action(MVC.API.DocumentTemplatePackage.UpdateFilterExpression(Model.Package.Id))',
|
||||
'FilterExpression'
|
||||
);
|
||||
|
||||
field.focus(function () {
|
||||
fieldOriginalWidth = field.width();
|
||||
fieldOriginalHeight = field.height();
|
||||
field.css('overflow', 'visible').animate({ width: field.parent().width() - 42, height: 75 }, 200);
|
||||
}).blur(function () {
|
||||
field.css('overflow', 'hidden').animate({ width: fieldOriginalWidth, height: fieldOriginalHeight }, 200);
|
||||
}).change(function () {
|
||||
if (!!field.val()) {
|
||||
fieldRemove.show();
|
||||
} else {
|
||||
fieldRemove.hide();
|
||||
}
|
||||
}).attr('placeholder', 'None').attr('spellcheck', 'false');
|
||||
|
||||
fieldRemove.click(function () {
|
||||
field.val('').change();
|
||||
});
|
||||
|
||||
if (!!field.val()) {
|
||||
fieldRemove.show();
|
||||
} else {
|
||||
fieldRemove.hide();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(Model.Package.FilterExpression))
|
||||
{
|
||||
<span class="smallMessage"><None Specified></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="code">
|
||||
@Model.Package.FilterExpression
|
||||
</div>
|
||||
}
|
||||
}
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-fw fa-info-circle"></i>This expression will be evaluated to determine if this package is shown in the <em>Generate Document</em> drop-down list. If the template is hidden (see above) this expression is ignored.
|
||||
</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
On Generated Expression:
|
||||
</th>
|
||||
<td>
|
||||
@if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression))
|
||||
{
|
||||
@Html.EditorFor(model => Model.Package.OnGenerateExpression)
|
||||
@AjaxHelpers.AjaxRemove()
|
||||
@AjaxHelpers.AjaxSave()
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
var field = $('#Package_OnGenerateExpression');
|
||||
var fieldRemove = field.next('.ajaxRemove');
|
||||
var fieldOriginalWidth, fieldOriginalHeight;
|
||||
|
||||
document.DiscoFunctions.PropertyChangeHelper(
|
||||
field,
|
||||
'None',
|
||||
'@Url.Action(MVC.API.DocumentTemplatePackage.UpdateOnGenerateExpression(Model.Package.Id))',
|
||||
'OnGenerateExpression'
|
||||
);
|
||||
|
||||
field.focus(function () {
|
||||
fieldOriginalWidth = field.width();
|
||||
fieldOriginalHeight = field.height();
|
||||
field.css('overflow', 'visible').animate({ width: field.parent().width() - 42, height: 75 }, 200);
|
||||
}).blur(function () {
|
||||
field.css('overflow', 'hidden').animate({ width: fieldOriginalWidth, height: fieldOriginalHeight }, 200);
|
||||
}).change(function () {
|
||||
if (!!field.val()) {
|
||||
fieldRemove.show();
|
||||
} else {
|
||||
fieldRemove.hide();
|
||||
}
|
||||
}).attr('placeholder', 'None').attr('spellcheck', 'false');
|
||||
|
||||
fieldRemove.click(function () {
|
||||
field.val('').change();
|
||||
});
|
||||
|
||||
if (!!field.val()) {
|
||||
fieldRemove.show();
|
||||
} else {
|
||||
fieldRemove.hide();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(Model.Package.OnGenerateExpression))
|
||||
{
|
||||
<span class="smallMessage"><None Specified></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="code">
|
||||
@Model.Package.OnGenerateExpression
|
||||
</div>
|
||||
}
|
||||
}
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-fw fa-info-circle"></i>This expression will be evaluated each time the package is generated.
|
||||
</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div id="dialogConfirmDelete" title="Delete this Document Template?">
|
||||
<p>
|
||||
<i class="fa fa-exclamation-triangle fa-lg warning"></i>This item will be permanently deleted.<br />
|
||||
Are you sure?
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
var button = $('#buttonDelete');
|
||||
var buttonDialog = $("#dialogConfirmDelete");
|
||||
var buttonLink = button.attr('href');
|
||||
button.attr('href', '#');
|
||||
button.click(function () {
|
||||
buttonDialog.dialog('open');
|
||||
return false;
|
||||
});
|
||||
buttonDialog.dialog({
|
||||
resizable: false,
|
||||
modal: true,
|
||||
autoOpen: false,
|
||||
buttons: {
|
||||
"Delete": function () {
|
||||
$this = $(this);
|
||||
$this.dialog('disable');
|
||||
$this.dialog("option", "buttons", null);
|
||||
window.location.href = buttonLink;
|
||||
},
|
||||
Cancel: function () {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
<div class="actionBar">
|
||||
@if (hideAdvanced)
|
||||
{
|
||||
<button id="Config_HideAdvanced_Show" class="button">Show Advanced Options</button>
|
||||
<script>
|
||||
$(function () {
|
||||
$('#Config_HideAdvanced_Show').click(function () {
|
||||
$('#Config_DocumentTemplatePackages_Show').removeClass('Config_HideAdvanced');
|
||||
$(this).remove();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
}
|
||||
@if (canBulkGenerate)
|
||||
{
|
||||
<a id="buttonBulkGenerate" href="#" class="button">Bulk Generate</a>
|
||||
<div id="dialogBulkGenerate" class="hiddenDialog" title="Bulk Generate: @(Model.Package.Id)">
|
||||
<div class="brief">
|
||||
@switch (Model.Package.Scope)
|
||||
{
|
||||
case AttachmentTypes.Device:
|
||||
<div>
|
||||
Enter multiple <span class="scopeDescBulkGenerate">Device Serial Numbers</span> separated by <code><new line></code>, commas (<code>,</code>) or semicolons (<code>;</code>).
|
||||
</div>
|
||||
<div class="examples clearfix">
|
||||
<h4>Examples:</h4>
|
||||
<div class="example1 code">
|
||||
01234567<br />
|
||||
ABCD9876<br />
|
||||
8VQ6G2R
|
||||
</div>
|
||||
<div class="example2 code">01234567,ABCD9876,8VQ6G2R</div>
|
||||
<div class="example3 code">01234567;ABCD9876;8VQ6G2R</div>
|
||||
</div>
|
||||
break;
|
||||
case AttachmentTypes.Job:
|
||||
<div>
|
||||
Enter multiple <span class="scopeDescBulkGenerate">Job Ids</span> separated by <code><new line></code>, commas (<code>,</code>) or semicolons (<code>;</code>).
|
||||
</div>
|
||||
<div class="examples clearfix">
|
||||
<h4>Examples:</h4>
|
||||
<div class="example1 code">
|
||||
86<br />
|
||||
99<br />
|
||||
44
|
||||
</div>
|
||||
<div class="example2 code">86,99,44</div>
|
||||
<div class="example3 code">86;99;44</div>
|
||||
</div>
|
||||
break;
|
||||
case AttachmentTypes.User:
|
||||
<div>
|
||||
Enter multiple <span class="scopeDescBulkGenerate">User Ids</span> separated by <code><new line></code>, commas (<code>,</code>) or semicolons (<code>;</code>).
|
||||
</div>
|
||||
<div class="examples clearfix">
|
||||
<h4>Examples:</h4>
|
||||
<div class="example1 code">
|
||||
user6<br />
|
||||
smi0099<br />@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith
|
||||
</div>
|
||||
<div class="example2 code">user6,smi0099,@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith</div>
|
||||
<div class="example3 code">user6;smi0099;@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith</div>
|
||||
</div>
|
||||
break;
|
||||
}
|
||||
</div>
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplatePackage.BulkGenerate(Model.Package.Id), FormMethod.Post))
|
||||
{
|
||||
<div class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="DataIds"></div>
|
||||
<textarea id="inputBulkGenerateDataIds" name="DataIds" data-val="true" data-val-required="Identifiers are required"></textarea>
|
||||
<div style="margin-top: 6px;">
|
||||
<input id="inputBulkGenerateInsertBlankPage" type="checkbox" name="InsertBlankPage" value="True" /><label for="inputBulkGenerateInsertBlankPage">Insert Blank Pages for Double-Sided Printing</label>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function () {
|
||||
var dialog;
|
||||
|
||||
$('#buttonBulkGenerate').click(function () {
|
||||
if (!dialog) {
|
||||
dialog = $('#dialogBulkGenerate').dialog({
|
||||
resizable: false,
|
||||
modal: true,
|
||||
autoOpen: false,
|
||||
width: 460,
|
||||
buttons: {
|
||||
"Bulk Generate": function () {
|
||||
dialog.find('form').submit();
|
||||
dialog.dialog("disable");
|
||||
},
|
||||
Close: function () {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$.validator.unobtrusive.reparse('#inputBulkGenerateDataIds');
|
||||
}
|
||||
|
||||
dialog.dialog('open');
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
}
|
||||
@if (Authorization.Has(Claims.Config.DocumentTemplate.Delete))
|
||||
{
|
||||
@Html.ActionLinkButton("Delete", MVC.API.DocumentTemplatePackage.Delete(Model.Package.Id, true), "buttonDelete")
|
||||
}
|
||||
</div>
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user