document template on import user flag rules

This commit is contained in:
Gary Sharp committed 2023-04-16 09:50:19 +10:00
1 parent 1e24844e88
commit d75663a219
25 files changed
+2173 -265

No files matched your search

+7
View File
@@ -171,6 +171,10 @@
<Compile Include="Migrations\202102110443550_DBv21.Designer.cs"> <Compile Include="Migrations\202102110443550_DBv21.Designer.cs">
<DependentUpon>202102110443550_DBv21.cs</DependentUpon> <DependentUpon>202102110443550_DBv21.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Migrations\202304150715559_DBv22.cs" />
<Compile Include="Migrations\202304150715559_DBv22.Designer.cs">
<DependentUpon>202304150715559_DBv22.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\Configuration.cs" /> <Compile Include="Migrations\Configuration.cs" />
<Compile Include="Migrations\DiscoDataMigrator.cs" /> <Compile Include="Migrations\DiscoDataMigrator.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
@@ -249,6 +253,9 @@
<EmbeddedResource Include="Migrations\202102110443550_DBv21.resx"> <EmbeddedResource Include="Migrations\202102110443550_DBv21.resx">
<DependentUpon>202102110443550_DBv21.cs</DependentUpon> <DependentUpon>202102110443550_DBv21.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Migrations\202304150715559_DBv22.resx">
<DependentUpon>202304150715559_DBv22.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx"> <EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator> <Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput> <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+27
View File
@@ -0,0 +1,27 @@
// <auto-generated />
namespace Disco.Data.Migrations
{
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
public sealed partial class DBv22 : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(DBv22));
string IMigrationMetadata.Id
{
get { return "202304150715559_DBv22"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -0,0 +1,18 @@
namespace Disco.Data.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class DBv22 : DbMigration
{
public override void Up()
{
AddColumn("dbo.DocumentTemplates", "OnImportUserFlagRules", c => c.String());
}
public override void Down()
{
DropColumn("dbo.DocumentTemplates", "OnImportUserFlagRules");
}
}
}
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Target" xml:space="preserve">
<value>H4sIAAAAAAAEAO1923LcxpLg+0bsPzD4tDsRI+pmWXJIM0GTkk0eSuQhZfuRAXUXSYzRQA+Alsnza/uwn7S/sIV7XTLrhsKl2/0isVFZWZlZWZl1zfx//+f/vv/Px1V08J2kWZjEHw5fPHt+eEDiRbIM4/sPh5v87t/fHv7nf/zP//H+43L1ePB7A/eqgKM14+zD4UOer386OsoWD2QVZM9W4SJNsuQuf7ZIVkfBMjl6+fz5u6MXL44IRXFIcR0cvL/exHm4IuUP+vMkiRdknW+C6HOyJFFWf6clNyXWgy/BimTrYEE+HJ6G2SJ5dhrkwbNrsk6yME/Sp8OD4ygMKDE3JLo7PFi//um3jNzkaRLf36yDPAyir09rQsvvgigjNek/rV+bUv/8ZUH9URDHSU7RJbET94ctX5Szj1QC+VNBVsndh0MqhLvwfpOW+M9ywoHTCv8gT9wH+ukqTdYkzZ+uyV2N5GZBvxweHOkhKToR7v2R2EZbj0dfUE1/5CnVksODT+EjWV6Q+D5/aAX8OXhsvrylqvJbHFKdonXydENLv2yiKPgWkRb8SNlqSerIbf4eRBtbTumfimar32yr7486JVCqxmmy2KxInH8lq3UU5MRFM86W9t1d1LGSwKvecj8l2SIN19UYs2r75Q+9G3dR7zd9G/0URjlJPz6uU5Jl9mzbKp1MwGX8C4kJtTtkUiLOVuskzY/zPFg8FMo+A2KoE0k/RcH99SYi2ehU0JbznMSfknTVtP1zkkQkiB1G1fdwQbKLMP6TLH9Jk816dG4KWU5KwFn2a7hckthall+C7+F96ZUFjOfJt5vNt3JmcXhwTaISJnsI19U85Jlotm+5Cp/SZHWdRIB5Z+Fub5JNuiiMUmIA/DVI70nu6GU6RH78CwhGGylaGMUbveztEBhqrVr+YTo3+OK5PdeohnfWeGAtbxTXSMubIWHKRWX9ThJq02OKE2GDB0K5wMFkJhSwtjzQuv/ckA3SB00pRjVULpELAjnQWVoQhMqiTEGkWAzRKME4kIhKUUGbji4tTebTfV5vxp/tn8X5q5eA2aDr6hu63CbNfHF5VcxQ0rioS0ouzCYi5Spf0ZyJOx/KQpq0fZJkedPoKVmEqyA6PLhK6V/1Nsrbw4ObRVCgg8RoZ7dKYSlMVll+K9s40WbBcIjRQoAdhpp6htTf6ErzIwMD3WNUVr2xUyPSdRz90HscfQ7izV2wyDcpSa3ndr0br8bVFK1WHtKq5dd9Gz4ld8Emyq/oaHkIMnJabCM1Joz+/TVcOaCshpqbMbQg+o8gTYM4f6Kl38Olta74kt01WQdhOhoRPuazPZ0DbFw1nsSODRX1t5wHFGlmSxE3xoF4mJM5bcmTNAyiL5vVt0JnrHfcudp2O5O9l7/HWUZyp7Z7D7mLZBF43wQ2N2p+ZqgFJvrxLoyI3pWbIPs5yBcPXsg6TVZBGNtvbPQVL1Wp8D4my2I7cPzWL4Is/0Lyv5L0z4vkPol9eMHjKEr++i0ONvlDMeNaFLOwj3GatHML103bk5QUuHQ0GuEqCYr0yEyFWOLzM4dYJKtVWO7z+yGPxXhNgoyxIZVnEYuzvp5Yt0KzcGOwwwU9nR2NtRlSUFlD3LZuWSRUAEBcrgjltllXGjoFsWU5TipXjBDKw9iSydoxVdfzcFLfs8VY53Mwbr1fVK3QrDQTRh6yFo9MOAiGCBqGddOLU5IHYaRioIJACeeKEYJ5GDdCu51zFbEdFEqwBIIQLcM5bpPTL+Fd6caUezYdGEq6DINtkcuA3jZ1a3xVuTT+is/YuCvLPGwZNaZ3hzaNin9HOJcS10IPSZo7NT3dcVz/TbJ68+EyvQ/iMCvV+3i5LK5G9FoGFAv3De314ld7r8jnmbyZYMOMtvVtU3DF7YqVQ1cozKzRs0ILIkpq7pVFEzl/jO+StNonacR9ksTfi3GW2N9FgJHjbLoiLje5iiny8enxYpFs4t4Y2VlMsbiPjpersLcA6sUX7YiM2rFrEq6Ce0INd7k+KZzhDtycYSU3KSGMm242QW1vRfXfQGeIOKZL7iQNu33h8an5I0xJRE1x7eNHJKTHtqr1Sg+eIGHrwR5TpWrZ9/eeKPWfMZie8ZhNujbrdRROcD7XctEs+UaWYuFGhzzbKvD/cxPUatRrQ7ecIPrbuG6O234PonBJnWsYqbTIBqNbX3q4+xlnm9TP9mKJKogXZLKBUTPjpWNabqbqGTovrjdJRm74bz2xU0weRFtisAkrV8H2Y0VIZGaBgrvtfpbozDbkBNBbbjca5AoGVu05IzXctuu0zJhukqt7wu8Mr5PALs31zI5ojSZdX8niwf8JqelzJBL7nrUatfyZ+i+Hm1EeWi48Z5YHq3Xv2bKjO3PhwccJmg9LpzAcGttoylAzGiy46aroWGkgDflowXvZwpI0B9PX2ARb8zeRLTkNs3UUPDksgvvPkm82qYMZ69/uL+F3Ek/C8dVDEhOn21r9b8R/XNHVg3AsYdq4/a0e1FIUeq46Iu7Kb0XrIBRJEzix3Ha6Vp6Ca+agPAxIolAMkinCuM0sne8MqK88KIDN7g+AVyZ6HxOX2MRD4vaj5By6Eltn1rwp1olWhgP1AQABdQKC63UhthsP/hwZfH922JAWE7lGl1ADHo7Q7UNpeGh0jFgauiHX1x1ABgByF85jaTfXxNNc890vn/fLZ9ulivDg3G/oGxOl/TWIl5GDzvpqmBoTkpJ44RDtwBMFRVCvuboJy2k55C6wqbuXbRChAWj/AwHR0arc8VAuI8SoVQZ0y3VQ+qUQERo+JHgPu9n80sTFcVd4VG/EwGrNIqg60bT1/FCj4z8tYxjo6TamfVT0WxwYMmNnjwyfGHhbfcMboCbrdbuNhaFeHxjRL9xDdxr7dN2/S3P0CYMcDWmGTIOSjW8wLte0r5YTLlIqAvw8LHxckwXVupMoyfxcsKkwDSMd8/Z9cFLsuXVLmWa28zmIg3tSGKO63OXeyq8kWvYlr8M0nbA7GhwffPc/uqhIuCbB8ulTQldB+SaN/YiWxzm1kCsqfL2xZTFOx9kfQZjThqiMSze/YBWo/wRME8vsti2X4oQVn6X5CFtmO3PSBVKyCF2GkKUMktRrUqd8e4fE7eAOXbws4BWHO9B5iRsFvGdHe0oE4zuLLwX7SwCx7TLexaJkimA8mXwpSKYA4qZZrINCSYVAeXJlCJBkAMyNbNj4axjAKkGswLAKppAKruzxtl/LmAgOs8RDKZkRQB0squ44ngMpDIJANV8IxYQUIBxOqzVRnlgIgEKuDCKQB3Cg7yK5RymjZQBN9VeImqZomOCotaOD4qLWRWhI1KbcgbDPJA/aW/YYfRwQQKRUDlEqAzmS27zWUFHbwCDEssUYrRyMI6lfktiEWgYMIViAwGgWwXpdoWjmj6PvJW17FGvrabxu7lzOyS3CEgN+SYLpu8W4mxcCKGP7y/H70/396f7+dH/c0/3S7fef5AOWH1kGeDnW59EjqyeTQ30EbJAzfb4t1ZG+GlLDhN8DfXYxtHe4c3G4UwZeGinKv8IwmS/tgZECr/19WaUOO2KUZAA1kX4eVlWbCPvxO5fxO/nk0SVGmctQVe91AZovboP5GpgFXmRIskUYSd6GYbNvtmNjsWSr74D0MKaPl0tfl+cKTBOZh7LtemSPHn7jmqyS737Ow2tU0xyC141PJcabi+OPj+swJZkPSV6lYRnSjbs204y7rrCPCS9RqdOoNcYLTqLWluIp1DoQh43tvqcYgGkHTzmML6I2FkJLGAMJk9cCKInsoGxJZQaillgOFiaXAVESzMJ5cZy75DW/2G+Yenh0OOXK8WzhkLikL8NFoydJRLXUWtj9ZV1Gamo8Qb9wdp48gOilNt/+iyzys+UIkcb6nETZp/HE7FKvS12MA/ThJ1EaZVfqajb5c3YH81lPym0tqIe5/EWSZZfpaVDELvYxh/pYRJd2TaDk4T6tq+HtPxf9+hCm1EHRDyfBJiNtv7hGfxbxObiy/gIVifjjwfYN/xsPcY7zmGQZyYqfWR3ohViHeukvjJ836X0UpE9fH8hdTsf8Q7K8vKP2ILWViYd4O/XPIh/SDSFekkldJVG4IF+SIsR1f/Xlsd3k0xgEngr/UjpJKYprsi6SQySW3L3uzd01WdCpf3pNlpsF4W+gG9LwtjcNl/kDSanvIXRUljP0NA+tB6eHTBW0Oy/vmrjN/d8BBeHqU5Kubqg38/OwiEE40laNyzLf/jIgML3CbwyaXxIXxGVGL1BNQb0EredFruJj6tjeItyqmePHx2IpHkTel9hG08y68Yvk/t6PXW8wtpdVJuOpOJeMiEH2Ra+j3uZSLTJOwEusfQYGe8N2q8bGWdbajNJk9J1M1XlwqB6ePBRyvSb/vQk9BZXHcE9zoCBSY3TW5Ix4HjxeBeEgLBZ4p+GwmYddpks6PQ1CT4+aAbRz4M/RY7z0SoWvmaqEdBoJn8Xfk/Kp1YKEng5KBZRTHZiuA2pd00lmTU3j/mZNDcbpZk0NBQPNmlTe0fTVjxqH8jmQqio2DTOub30Wi7lQV0FgR7bG9VxE4H7Ai/lXV/a7+lbcN9VcmG/r2vKOuF5T1tHqSs6RWiaMY1V78W2yG4ESodiT0Nax5li5P6HiF3CSptyCVZW8AjVMOIWqOTzB9vto04Du3sviglM+mPYu3dVouOu7+J7yPuHW34rclYuJk+V2u4y70fnxcV2cVVILc02yTTT+/cjLuAkQOQ052kwENukHKnhtCoLiExiPFYN1yaLgO22CIb2er08CrYBTchWcCenD3akEGkOuVqohTbjwdtGyVeYdct77i5a7ftGy0NpJU5YWBMwgcyrs4Gfj2mfg1B3TC9n4d8M0Q9xcwMlWVwrnnmzIMcb6wImHZhCEfZ+EaMzMypowmXU2ISzmOVeMxDrnYTzkN9jNGETTxx3fhzAateXJX6HvQxjtQxiN4EKkfMuyG5FAEFciww2QLine truncated
</data>
</root>
+1
View File
@@ -69,6 +69,7 @@
<Compile Include="Services\Devices\Importing\IDeviceImportColumn.cs" /> <Compile Include="Services\Devices\Importing\IDeviceImportColumn.cs" />
<Compile Include="Services\Devices\Importing\IDeviceImportDataReader.cs" /> <Compile Include="Services\Devices\Importing\IDeviceImportDataReader.cs" />
<Compile Include="Services\Documents\DocumentTemplatePackage.cs" /> <Compile Include="Services\Documents\DocumentTemplatePackage.cs" />
<Compile Include="Services\Documents\OnImportUserFlagRule.cs" />
<Compile Include="Services\Jobs\LocationModes.cs" /> <Compile Include="Services\Jobs\LocationModes.cs" />
<Compile Include="ClientServices\EnrolmentInformation\Certificate.cs" /> <Compile Include="ClientServices\EnrolmentInformation\Certificate.cs" />
<Compile Include="ClientServices\Register.cs" /> <Compile Include="ClientServices\Register.cs" />
@@ -22,6 +22,7 @@ namespace Disco.Models.Repository
public string OnGenerateExpression { get; set; } public string OnGenerateExpression { get; set; }
[DataType(DataType.MultilineText)] [DataType(DataType.MultilineText)]
public string OnImportAttachmentExpression { get; set; } public string OnImportAttachmentExpression { get; set; }
public string OnImportUserFlagRules { get; set; }
// Feature Request 2012-05-10 by G#: https://disco.uservoice.com/forums/159707-feedback/suggestions/2811092-document-template-option-flatten-form-on-generate // Feature Request 2012-05-10 by G#: https://disco.uservoice.com/forums/159707-feedback/suggestions/2811092-document-template-option-flatten-form-on-generate
public bool FlattenForm { get; set; } public bool FlattenForm { get; set; }
@@ -0,0 +1,22 @@
using Disco.Models.Repository;
using Newtonsoft.Json;
using System;
using System.ComponentModel.DataAnnotations;
namespace Disco.Models.Services.Documents
{
public class OnImportUserFlagRule
{
public Guid Id { get; set; }
public int FlagId { get; set; }
[StringLength(50)]
public string UserId { get; set; }
public bool AddFlag { get; set; }
public string Comments { get; set; }
[JsonIgnore]
public User User { get; set; }
[JsonIgnore]
public UserFlag UserFlag { get; set; }
}
}
@@ -1,4 +1,5 @@
using System.Collections.Generic; using Disco.Models.Services.Documents;
using System.Collections.Generic;
namespace Disco.Models.UI.Config.DocumentTemplate namespace Disco.Models.UI.Config.DocumentTemplate
{ {
@@ -11,6 +12,9 @@ namespace Disco.Models.UI.Config.DocumentTemplate
string BulkGenerateDownloadId { get; } string BulkGenerateDownloadId { get; }
string BulkGenerateDownloadFilename { get; } string BulkGenerateDownloadFilename { get; }
List<Repository.UserFlag> UserFlags { get; set; }
List<OnImportUserFlagRule> OnImportUserFlagRules { get; }
List<Repository.JobType> JobTypes { get; set; } List<Repository.JobType> JobTypes { get; set; }
List<string> Scopes { get; } List<string> Scopes { get; }
@@ -251,7 +251,9 @@ namespace Disco.Services.Documents.AttachmentImport
return null; return null;
} }
if (Identifier.DocumentTemplate != null && !string.IsNullOrWhiteSpace(Identifier.DocumentTemplate.OnImportAttachmentExpression)) if (Identifier.DocumentTemplate != null)
{
if (!string.IsNullOrWhiteSpace(Identifier.DocumentTemplate.OnImportAttachmentExpression))
{ {
try try
{ {
@@ -264,6 +266,18 @@ namespace Disco.Services.Documents.AttachmentImport
} }
} }
if (Identifier.DocumentTemplate.OnImportUserFlagRules != null)
{
var rules = Identifier.DocumentTemplate.GetOnImportUserFlagRules();
foreach ( var rule in rules)
{
rule.Apply(Database, Identifier.Target);
}
}
}
return attachment; return attachment;
} }
} }
@@ -1,9 +1,12 @@
using Disco.Data.Repository; using Disco.Data.Repository;
using Disco.Models.Repository; using Disco.Models.Repository;
using Disco.Models.Services.Documents;
using Disco.Services.Authorization; using Disco.Services.Authorization;
using Disco.Services.Interop.ActiveDirectory; using Disco.Services.Interop.ActiveDirectory;
using Disco.Services.Users; using Disco.Services.Users;
using Newtonsoft.Json;
using System; using System;
using System.Collections.Generic;
using System.Data.Entity; using System.Data.Entity;
using System.Drawing; using System.Drawing;
using System.IO; using System.IO;
@@ -168,5 +171,148 @@ namespace Disco.Services
if (target == null) if (target == null)
throw new ArgumentException("Target not found", nameof(targetId)); throw new ArgumentException("Target not found", nameof(targetId));
} }
public static IEnumerable<OnImportUserFlagRule> GetOnImportUserFlagRuleDetails(this DocumentTemplate template, DiscoDataContext database)
{
foreach (var rule in GetOnImportUserFlagRules(template))
{
var detail = rule.AddDetails(database);
if (detail == null)
continue;
yield return detail;
}
}
public static IEnumerable<OnImportUserFlagRule> GetOnImportUserFlagRules(this DocumentTemplate template)
{
if (string.IsNullOrWhiteSpace(template.OnImportUserFlagRules))
return Enumerable.Empty<OnImportUserFlagRule>();
else
return JsonConvert.DeserializeObject<List<OnImportUserFlagRule>>(template.OnImportUserFlagRules);
}
public static OnImportUserFlagRule AddDetails(this OnImportUserFlagRule rule, DiscoDataContext database)
{
rule.User = database.Users.FirstOrDefault(u => u.UserId == rule.UserId);
rule.UserFlag = database.UserFlags.FirstOrDefault(f => f.Id == rule.FlagId);
if (rule.User == null || rule.UserFlag == null)
return null;
else
return rule;
}
public static OnImportUserFlagRule AddOnImportUserFlagRule(this DocumentTemplate template, DiscoDataContext database, OnImportUserFlagRule rule)
{
List<OnImportUserFlagRule> rules;
if (string.IsNullOrWhiteSpace(template.OnImportUserFlagRules))
rules = new List<OnImportUserFlagRule>();
else
rules = JsonConvert.DeserializeObject<List<OnImportUserFlagRule>>(template.OnImportUserFlagRules);
// validate user id
rule.User = database.Users.FirstOrDefault(u => u.UserId == rule.UserId);
if (rule.User == null)
throw new ArgumentException("Unknown rule user id", nameof(rule));
// validate user flag
rule.UserFlag = database.UserFlags.FirstOrDefault(f => f.Id == rule.FlagId);
if (rule.UserFlag == null)
throw new ArgumentException("Unknown rule user flag", nameof(rule));
// validate no existing matching rule
if (rules.Any(r => r.FlagId == rule.FlagId))
throw new ArgumentException("This document template already has a rule for this user flag", nameof(rule));
rule.Id = Guid.NewGuid();
if (string.IsNullOrWhiteSpace(rule.Comments))
rule.Comments = null;
rules.Add(rule);
template.OnImportUserFlagRules = JsonConvert.SerializeObject(rules);
database.SaveChanges();
return rule;
}
public static bool RemoveOnImportUserFlagRule(this DocumentTemplate template, DiscoDataContext database, Guid id)
{
if (string.IsNullOrWhiteSpace(template.OnImportUserFlagRules))
return false;
var rules = JsonConvert.DeserializeObject<List<OnImportUserFlagRule>>(template.OnImportUserFlagRules);
if (rules.RemoveAll(r => r.Id == id) == 0)
return false;
template.OnImportUserFlagRules = JsonConvert.SerializeObject(rules);
database.SaveChanges();
return true;
}
public static void Apply(this OnImportUserFlagRule rule, DiscoDataContext database, IAttachmentTarget target)
{
string userId;
if (target is User targetUser)
userId = targetUser.UserId;
else if (target is Device targetDevice && targetDevice.AssignedUserId != null)
userId = targetDevice.AssignedUserId;
else if (target is Job targetJob && targetJob.UserId != null)
userId = targetJob.UserId;
else
return;
if (userId == null)
return;
var user = database.Users.Include(u => u.UserFlagAssignments).FirstOrDefault(u => u.UserId == userId);
if (user == null)
return;
var techUser = database.Users.FirstOrDefault(u => u.UserId == rule.UserId);
if (techUser == null)
return;
// remove flag
if (!rule.AddFlag)
{
var flagAssignment = user.UserFlagAssignments.FirstOrDefault(a => a.RemovedDate == null && a.UserFlagId == rule.FlagId);
if (flagAssignment != null)
{
if (!string.IsNullOrWhiteSpace(rule.Comments))
{
if (!string.IsNullOrWhiteSpace(flagAssignment.Comments))
flagAssignment.Comments = string.Concat(flagAssignment.Comments, Environment.NewLine, rule.Comments);
else
flagAssignment.Comments = rule.Comments;
}
flagAssignment.OnRemoveUnsafe(database, techUser);
}
database.SaveChanges();
}
else
{
// already has flag?
if (rule.AddFlag && user.UserFlagAssignments.Any(a => a.RemovedDate == null && a.UserFlagId == rule.FlagId))
return;
// add flag
var userFlag = database.UserFlags.FirstOrDefault(f => f.Id == rule.FlagId);
if (userFlag == null)
return;
user.OnAddUserFlagUnsafe(database, userFlag, techUser, rule.Comments);
database.SaveChanges();
}
}
} }
} }
@@ -14,10 +14,11 @@ using Disco.Services.Web;
using Disco.Web.Areas.API.Models.DocumentTemplate; using Disco.Web.Areas.API.Models.DocumentTemplate;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity; using System.Data.Entity;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text.RegularExpressions; using System.Net;
using System.Web; using System.Web;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.UI.WebControls; using System.Web.UI.WebControls;
@@ -1209,6 +1210,68 @@ namespace Disco.Web.Areas.API.Controllers
} }
} }
[HttpPost, ValidateAntiForgeryToken]
[DiscoAuthorizeAll(Claims.Config.DocumentTemplate.Configure, Claims.Config.UserFlag.Configure)]
public virtual ActionResult RemoveOnImportUserFlagRule([Required] string id, Guid? ruleId = null)
{
try
{
var template = Database.DocumentTemplates.FirstOrDefault(t => t.Id == id);
if (template == null)
throw new ArgumentException("Unknown document template", nameof(id));
template.RemoveOnImportUserFlagRule(Database, ruleId.Value);
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
catch (Exception ex)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, ex.Message);
}
}
public virtual ActionResult AddOnImportUserFlagRule([Required] string id, bool? addFlag = null, int? userFlagId = null, string comments = null)
{
try
{
var template = Database.DocumentTemplates.FirstOrDefault(t => t.Id == id);
if (template == null)
throw new ArgumentException("Unknown document template", nameof(id));
var rule = new OnImportUserFlagRule()
{
AddFlag = addFlag.Value,
FlagId = userFlagId.Value,
UserId = Authorization.User.UserId,
Comments = comments,
};
rule = template.AddOnImportUserFlagRule(Database, rule);
var model = new AddOnImportUserFlagRuleModel()
{
Id = rule.Id,
FlagId = rule.FlagId,
UserId = rule.UserId,
AddFlag = rule.AddFlag,
Comments = rule.Comments,
UserDisplayName = rule.User.DisplayName,
UserIdFriendly = rule.User.FriendlyId(),
UserFlagName = rule.UserFlag.Name,
UserFlagIcon = rule.UserFlag.Icon,
UserFlagColour = rule.UserFlag.IconColour,
};
return Json(model);
}
catch (Exception ex)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, ex.Message);
}
}
#endregion #endregion
#region Handlers #region Handlers
@@ -0,0 +1,20 @@
using System;
namespace Disco.Web.Areas.API.Models.DocumentTemplate
{
public class AddOnImportUserFlagRuleModel
{
public Guid Id { get; set; }
public int FlagId { get; set; }
public string UserId { get; set; }
public bool AddFlag { get; set; }
public string Comments { get; set; }
public string UserDisplayName { get; set; }
public string UserIdFriendly { get; set; }
public string UserFlagIcon { get; set; }
public string UserFlagColour { get; set; }
public string UserFlagName { get; set; }
}
}
@@ -1,6 +1,8 @@
using Disco.Data.Repository; using Disco.Data.Repository;
using Disco.Models.Repository; using Disco.Models.Repository;
using Disco.Models.Services.Documents;
using Disco.Models.UI.Config.DocumentTemplate; using Disco.Models.UI.Config.DocumentTemplate;
using Disco.Services;
using Disco.Services.Documents.ManagedGroups; using Disco.Services.Documents.ManagedGroups;
using Disco.Services.Expressions; using Disco.Services.Expressions;
using System.Collections.Generic; using System.Collections.Generic;
@@ -18,6 +20,9 @@ namespace Disco.Web.Areas.Config.Models.DocumentTemplate
public List<Expression> TemplateExpressions { get; set; } public List<Expression> TemplateExpressions { get; set; }
public int TemplatePageCount { get { return TemplatePagesHaveAttachmentId?.Count() ?? 0; } } public int TemplatePageCount { get { return TemplatePagesHaveAttachmentId?.Count() ?? 0; } }
public List<Disco.Models.Repository.UserFlag> UserFlags { get; set; }
public List<OnImportUserFlagRule> OnImportUserFlagRules { get; set; }
public List<JobType> JobTypes { get; set; } public List<JobType> JobTypes { get; set; }
public List<string> Scopes public List<string> Scopes
@@ -53,6 +58,9 @@ namespace Disco.Web.Areas.Config.Models.DocumentTemplate
if (this.JobTypes == null) if (this.JobTypes == null)
JobTypes = Database.JobTypes.Include("JobSubTypes").ToList(); JobTypes = Database.JobTypes.Include("JobSubTypes").ToList();
UserFlags = Database.UserFlags.ToList();
OnImportUserFlagRules = DocumentTemplate.GetOnImportUserFlagRuleDetails(Database).ToList();
} }
} }
} }
@@ -13,7 +13,8 @@
Model.DocumentTemplate.FilterExpression == null && Model.DocumentTemplate.FilterExpression == null &&
Model.DocumentTemplate.OnGenerateExpression == null && Model.DocumentTemplate.OnGenerateExpression == null &&
Model.DocumentTemplate.OnImportAttachmentExpression == null && Model.DocumentTemplate.OnImportAttachmentExpression == null &&
Model.TemplateExpressions.All(e => e.All(p => !p.ParseError)); Model.TemplateExpressions.All(e => e.All(p => !p.ParseError) &&
!Model.OnImportUserFlagRules.Any());
#region Can Bulk Generate #region Can Bulk Generate
var canBulkGenerate = Authorization.Has(Claims.Config.DocumentTemplate.BulkGenerate); var canBulkGenerate = Authorization.Has(Claims.Config.DocumentTemplate.BulkGenerate);
@@ -677,6 +678,311 @@
</div> </div>
</td> </td>
</tr> </tr>
<tr>
<th>
On Import <br /> User Flag Rules:
</th>
<td>
@if (canConfig && Authorization.Has(Claims.Config.UserFlag.Configure))
{
<table id="DocumentTemplate_OnImportUserFlagRules" class="tableData">
<thead>
<tr>
<td>Action</td>
<td>User Flag</td>
<td>Created By</td>
<td>Comments</td>
<td>&nbsp;</td>
</tr>
</thead>
<tbody>
<tr class="@(Model.OnImportUserFlagRules.Any() ? "hidden" : null)">
<td colspan="5"><span class="smallMessage">&lt;None Specified&gt;</span></td>
</tr>
@foreach (var rule in Model.OnImportUserFlagRules)
{
<tr data-id="@rule.Id">
<td>@(rule.AddFlag ? "Assign" : "Remove")</td>
<td>
<i class="fa fa-@(rule.UserFlag.Icon) fa-lg d-@(rule.UserFlag.IconColour)"></i>
@if (Authorization.Has(Claims.Config.UserFlag.Configure))
{
<span>@Html.ActionLink(rule.UserFlag.Name, MVC.Config.UserFlag.Index(rule.UserFlag.Id))</span>
}
else
{
<span>@rule.UserFlag.Name</span>
}
</td>
<td>
@if (Authorization.Has(Claims.User.Show))
{
<span>@Html.ActionLink(string.Format("{0} ({1})", rule.User.DisplayName, rule.User.FriendlyId()), MVC.User.Show(rule.User.UserId))</span>
}
else
{
<span>@string.Format("{0} ({1})", rule.User.DisplayName, rule.User.FriendlyId())</span>
}
</td>
<td>
@if (string.IsNullOrWhiteSpace(rule.Comments))
{
<span>&nbsp;</span>
}
else
{
<span class="whitespace-pre-wrap">@rule.Comments</span>
}
</td>
<td>
<i class="fa fa-times-circle fa-lg ajaxRemove" title="Remove"></i>
<i class="ajaxLoading" title="Loading..."></i>
</td>
</tr>
}
</tbody>
</table>
using (Html.BeginForm(MVC.API.DocumentTemplate.RemoveOnImportUserFlagRule(Model.DocumentTemplate.Id), FormMethod.Post, new { id = "DocumentTemplate_OnImportUserFlagRules_Remove" }))
{
@Html.AntiForgeryToken()
@Html.Hidden("ruleId", "")
}
<a id="DocumentTemplate_OnImportUserFlagRules_AddButton" href="#" class="button small">Add User Flag Rule</a>
<div id="DocumentTemplate_OnImportUserFlagRules_AddDialog" class="hiddenDialog" title="On Import User Flag Rule: @(Model.DocumentTemplate.Id)">
<div class="brief">
@switch (Model.DocumentTemplate.Scope)
{
case "Device":
<div>
The user flag will be created/removed against the devices assigned user.
</div>
break;
case "Job":
<div>
The user flag will be created/removed against the jobs associated user.
</div>
break;
case "User":
<div>
The user flag will be created/removed against the user.
</div>
break;
}
</div>
@using (Html.BeginForm(MVC.API.DocumentTemplate.AddOnImportUserFlagRule(Model.DocumentTemplate.Id), FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="distribute-evenly">
<span>
<input id="DocumentTemplate_OnImportUserFlagRules_Add_Create" type="radio" name="addFlag" value="true" checked /><label for="DocumentTemplate_OnImportUserFlagRules_Add_Create">Assign User Flag</label>
</span>
<span>
<input id="DocumentTemplate_OnImportUserFlagRules_Add_Remove" type="radio" name="addFlag" value="false" /><label for="DocumentTemplate_OnImportUserFlagRules_Add_Remove">Remove User Flag</label>
</span>
</div>
<div class="dialog-item-picker">
@foreach (var flag in Model.UserFlags)
{
<div class="item">
<input id="DocumentTemplate_OnImportUserFlagRules_Add_Flag_@flag.Id" type="radio" name="userFlagId" value="@flag.Id" required />
<label for="DocumentTemplate_OnImportUserFlagRules_Add_Flag_@flag.Id"><i class="fa fa-@(flag.Icon) fa-fw fa-lg d-@(flag.IconColour)"></i>@flag.Name</label>
</div>
}
</div>
<div>
<div class="mt-1">
<label for="DocumentTemplate_OnImportUserFlagRules_Add_Comments">Comments</label> <small>(added to the assignment; optional)</small>
</div>
<textarea id="DocumentTemplate_OnImportUserFlagRules_Add_Comments" name="comments"></textarea>
</div>
}
</div>
<script id="DocumentTemplate_OnImportUserFlagRules_AddTemplate" type="text/template">
<tr>
<td class="rule-action"></td>
<td>
<i class="rule-flag fa fa-lg"></i>
<span class="rule-flag"></span>
</td>
<td>
<span class="rule-user"></span>
</td>
<td>
<span class="rule-comments whitespace-pre-wrap"></span>
</td>
<td>
<i class="fa fa-times-circle fa-lg ajaxRemove" title="Remove"></i>
<i class="ajaxLoading" title="Loading..." style="display: none;"></i>
</td>
</tr>
</script>
<script type="text/javascript">
$(function () {
const rulesTable = $('#DocumentTemplate_OnImportUserFlagRules');
rulesTable.on('click', '.ajaxRemove', e => {
const $remove = $(e.currentTarget);
const $target = $remove.closest('tr');
const id = $target.attr('data-id');
const $loader = $remove.next('.ajaxLoading');
$loader.show();
$remove.hide();
const $form = $('#DocumentTemplate_OnImportUserFlagRules_Remove');
$form.find('[name="ruleId"]').val(id);
const body = new FormData($form[0]);
fetch($form[0].action, {
body: body,
method: 'POST'
}).then(r => {
if (r.status === 200) {
$target.remove();
const rows = rulesTable.find('tbody').find('tr');
if (rows.length === 1) {
rows.first().removeClass('hidden');
} else {
rows.first().addClass('hidden');
}
} else {
alert(r.statusText);
$loader.hide();
$remove.show();
}
})
.catch(e => {
alert(e);
$loader.hide();
$remove.show();
});
});
let dialog = null;
$('#DocumentTemplate_OnImportUserFlagRules_AddButton').click(e => {
e.preventDefault();
if (!dialog) {
dialog = $('#DocumentTemplate_OnImportUserFlagRules_AddDialog').dialog({
resizable: false,
modal: true,
autoOpen: false,
width: 460,
buttons: {
"Add Rule": function () {
dialog.dialog("disable");
const form = dialog.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
const row = $($('#DocumentTemplate_OnImportUserFlagRules_AddTemplate').html());
row.attr('data-id', r.Id);
row.find('.rule-action').text(r.AddFlag ? 'Assign' : 'Remove');
row.find('i.rule-flag').addClass('fa-' + r.UserFlagIcon + ' d-' + r.UserFlagColour);
row.find('span.rule-flag').text(r.UserFlagName);
row.find('.rule-user').text(r.UserDisplayName + ' (' + r.UserIdFriendly + ')');
row.find('.rule-comments').text(r.Comments);
rulesTable.find('tbody').append(row);
rulesTable.find('tbody').find('tr').first().addClass('hidden');
dialog.dialog("close");
})
.catch(e => {
alert(e);
})
}
},
Close: function () {
$(this).dialog("close");
}
}
});
}
dialog.dialog('open');
return false;
});
});
</script>
}
else
{
if (!Model.OnImportUserFlagRules.Any())
{
<span class="smallMessage">&lt;None Specified&gt;</span>
}
else
{
<table class="tableData">
<thead>
<tr>
<td>Action</td>
<td>User Flag</td>
<td>Created By</td>
<td>Comments</td>
</tr>
</thead>
<tbody>
@foreach (var rule in Model.OnImportUserFlagRules)
{
<tr>
<td>@(rule.AddFlag ? "Assign" : "Remove")</td>
<td>
<i class="fa fa-@(rule.UserFlag.Icon) fa-lg d-@(rule.UserFlag.IconColour)"></i>
@if (Authorization.Has(Claims.Config.UserFlag.Configure))
{
<span>@Html.ActionLink(rule.UserFlag.Name, MVC.Config.UserFlag.Index(rule.UserFlag.Id))</span>
}
else
{
<span>@rule.UserFlag.Name</span>
}
</td>
<td>
@if (Authorization.Has(Claims.User.Show))
{
<span>@Html.ActionLink(string.Format("{0} ({1})", rule.User.DisplayName, rule.User.FriendlyId()), MVC.User.Show(rule.User.UserId))</span>
}
else
{
<span>@string.Format("{0} ({1})", rule.User.DisplayName, rule.User.FriendlyId())</span>
}
</td>
<td>
@if (string.IsNullOrWhiteSpace(rule.Comments))
{
<span>&nbsp;</span>
}
else
{
<span class="whitespace-pre-wrap">@rule.Comments</span>
}
</td>
</tr>
}
</tbody>
</table>
}
}
<div class="info-box">
<p class="fa-p">
<i class="fa fa-fw fa-info-circle"></i>
These rules will be applied each time a document is imported (as an attachment) where it is determined the document was based on this template.
When creating a user flag assignment, if an assignment already exists the rule will be skipped.
When removing user flag assignments, if no assignment is present the rule will be skipped.
</p>
</div>
</td>
</tr>
<tr> <tr>
<th> <th>
Linked Groups: Linked Groups:
@@ -715,8 +1021,8 @@
<h2>Template Expressions</h2> <h2>Template Expressions</h2>
@Html.Partial(MVC.Config.DocumentTemplate.Views._ExpressionsTable, Model.TemplateExpressions) @Html.Partial(MVC.Config.DocumentTemplate.Views._ExpressionsTable, Model.TemplateExpressions)
</div> </div>
</div> </div>
<div id="dialogConfirmDelete" title="Delete this Document Template?"> <div id="dialogConfirmDelete" title="Delete this Document Template?">
<p> <p>
<i class="fa fa-exclamation-triangle fa-lg warning"></i>This item will be permanently deleted and cannot be recovered.<br /> <i class="fa fa-exclamation-triangle fa-lg warning"></i>This item will be permanently deleted and cannot be recovered.<br />
<em> <em>
@@ -725,8 +1031,8 @@
</em><br /> </em><br />
Are you sure? Are you sure?
</p> </p>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
var button = $('#buttonDelete'); var button = $('#buttonDelete');
var buttonDialog = $("#dialogConfirmDelete"); var buttonDialog = $("#dialogConfirmDelete");
@@ -754,8 +1060,8 @@
}); });
}); });
</script> </script>
<div class="actionBar"> <div class="actionBar">
@if (hideAdvanced) @if (hideAdvanced)
{ {
<button id="Config_HideAdvanced_Show" class="button">Show Advanced Options</button> <button id="Config_HideAdvanced_Show" class="button">Show Advanced Options</button>
@@ -866,9 +1172,9 @@
{ {
@Html.ActionLinkButton("Delete", MVC.API.DocumentTemplate.Delete(Model.DocumentTemplate.Id, true), "buttonDelete") @Html.ActionLinkButton("Delete", MVC.API.DocumentTemplate.Delete(Model.DocumentTemplate.Id, true), "buttonDelete")
} }
</div> </div>
@if (!string.IsNullOrWhiteSpace(Model.BulkGenerateDownloadId)) @if (!string.IsNullOrWhiteSpace(Model.BulkGenerateDownloadId))
{ {
<div id="Config_DocumentTemplates_Show_DownloadBulk_Dialog" class="dialog" title="Download Bulk Documents"> <div id="Config_DocumentTemplates_Show_DownloadBulk_Dialog" class="dialog" title="Download Bulk Documents">
<a href="@Url.Action(MVC.API.DocumentTemplate.BulkGenerateDownload(Model.BulkGenerateDownloadId, Model.BulkGenerateDownloadFilename))" class="button"><i class="fa fa-download fa-lg"></i>Download Bulk Documents</a> <a href="@Url.Action(MVC.API.DocumentTemplate.BulkGenerateDownload(Model.BulkGenerateDownloadId, Model.BulkGenerateDownloadFilename))" class="button"><i class="fa fa-download fa-lg"></i>Download Bulk Documents</a>
</div> </div>
@@ -884,4 +1190,4 @@
}); });
}); });
</script> </script>
} }
File diff suppressed because it is too large. Load diff
@@ -5343,3 +5343,6 @@ ul.list-group li.selected:hover {
ul.list-group li:not(:first-child) { ul.list-group li:not(:first-child) {
border-top: 1px solid #ddd; border-top: 1px solid #ddd;
} }
.whitespace-pre-wrap {
white-space: pre-wrap;
}
+1 -1
View File
@@ -9,4 +9,4 @@ html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:1
* Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/ */
@font-face{font-family:'FontAwesome';src:url('/ClientSource/Style/FontAwesome/fontawesome-webfont.eot?v=4.2.0');src:url('/ClientSource/Style/FontAwesome/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal;}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%;}.fa-2x{font-size:2em;}.fa-3x{font-size:3em;}.fa-4x{font-size:4em;}.fa-5x{font-size:5em;}.fa-fw{width:1.28571429em;text-align:center;}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none;}.fa-ul>li{position:relative;}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center;}.fa-li.fa-lg{left:-1.85714286em;}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em;}.pull-right{float:right;}.pull-left{float:left;}.fa.pull-left{margin-right:.3em;}.fa.pull-right{margin-left:.3em;}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear;}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg);}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg);}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1);}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1);}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none;}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle;}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center;}.fa-stack-1x{line-height:inherit;}.fa-stack-2x{font-size:2em;}.fa-inverse{color:#fff;}.fa-glass:before{content:"";}.fa-music:before{content:"";}.fa-search:before{content:"";}.fa-envelope-o:before{content:"";}.fa-heart:before{content:"";}.fa-star:before{content:"";}.fa-star-o:before{content:"";}.fa-user:before{content:"";}.fa-film:before{content:"";}.fa-th-large:before{content:"";}.fa-th:before{content:"";}.fa-th-list:before{content:"";}.fa-check:before{content:"";}.fa-remove:before,.fa-close:before,.fa-times:before{content:"";}.fa-search-plus:before{content:"";}.fa-search-minus:before{content:"";}.fa-power-off:before{content:"";}.fa-signal:before{content:"";}.fa-gear:before,.fa-cog:before{content:"";}.fa-trash-o:before{content:"";}.fa-home:before{content:"";}.fa-file-o:before{content:"";}.fa-clock-o:before{content:"";}.fa-road:before{content:"";}.fa-download:before{content:"";}.fa-arrow-circle-o-down:before{content:"";}.fa-arrow-circle-o-up:before{content:"";}.fa-inbox:before{content:"";}.fa-play-circle-o:before{content:"";}.fa-rotate-right:before,.fa-repeat:before{content:"";}.fa-refresh:before{content:"";}.fa-list-alt:before{content:"";}.fa-lock:before{content:"";}.fa-flag:before{content:"";}.fa-headphones:before{content:"";}.fa-volume-off:before{content:"";}.fa-volume-down:before{content:"";}.fa-volume-up:before{content:"";}.fa-qrcode:before{content:"";}.fa-barcode:before{content:"";}.fa-tag:before{content:"";}.fa-tags:before{content:"";}.fa-book:before{content:"";}.fa-bookmark:before{content:"";}.fa-print:before{content:"";}.fa-camera:before{content:"";}.fa-font:before{content:"";}.fa-bold:before{content:"";}.fa-italic:before{content:"";}.fa-text-height:before{content:"";}.fa-text-width:before{content:"";}.fa-align-left:before{content:"";}.fa-align-center:before{content:"";}.fa-align-right:before{content:"";}.fa-align-justify:before{content:"";}.fa-list:before{content:"";}.fa-dedent:before,.fa-outdent:before{conLine truncated @font-face{font-family:'FontAwesome';src:url('/ClientSource/Style/FontAwesome/fontawesome-webfont.eot?v=4.2.0');src:url('/ClientSource/Style/FontAwesome/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal;}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%;}.fa-2x{font-size:2em;}.fa-3x{font-size:3em;}.fa-4x{font-size:4em;}.fa-5x{font-size:5em;}.fa-fw{width:1.28571429em;text-align:center;}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none;}.fa-ul>li{position:relative;}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center;}.fa-li.fa-lg{left:-1.85714286em;}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em;}.pull-right{float:right;}.pull-left{float:left;}.fa.pull-left{margin-right:.3em;}.fa.pull-right{margin-left:.3em;}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear;}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg);}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg);}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1);}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1);}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none;}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle;}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center;}.fa-stack-1x{line-height:inherit;}.fa-stack-2x{font-size:2em;}.fa-inverse{color:#fff;}.fa-glass:before{content:"";}.fa-music:before{content:"";}.fa-search:before{content:"";}.fa-envelope-o:before{content:"";}.fa-heart:before{content:"";}.fa-star:before{content:"";}.fa-star-o:before{content:"";}.fa-user:before{content:"";}.fa-film:before{content:"";}.fa-th-large:before{content:"";}.fa-th:before{content:"";}.fa-th-list:before{content:"";}.fa-check:before{content:"";}.fa-remove:before,.fa-close:before,.fa-times:before{content:"";}.fa-search-plus:before{content:"";}.fa-search-minus:before{content:"";}.fa-power-off:before{content:"";}.fa-signal:before{content:"";}.fa-gear:before,.fa-cog:before{content:"";}.fa-trash-o:before{content:"";}.fa-home:before{content:"";}.fa-file-o:before{content:"";}.fa-clock-o:before{content:"";}.fa-road:before{content:"";}.fa-download:before{content:"";}.fa-arrow-circle-o-down:before{content:"";}.fa-arrow-circle-o-up:before{content:"";}.fa-inbox:before{content:"";}.fa-play-circle-o:before{content:"";}.fa-rotate-right:before,.fa-repeat:before{content:"";}.fa-refresh:before{content:"";}.fa-list-alt:before{content:"";}.fa-lock:before{content:"";}.fa-flag:before{content:"";}.fa-headphones:before{content:"";}.fa-volume-off:before{content:"";}.fa-volume-down:before{content:"";}.fa-volume-up:before{content:"";}.fa-qrcode:before{content:"";}.fa-barcode:before{content:"";}.fa-tag:before{content:"";}.fa-tags:before{content:"";}.fa-book:before{content:"";}.fa-bookmark:before{content:"";}.fa-print:before{content:"";}.fa-camera:before{content:"";}.fa-font:before{content:"";}.fa-bold:before{content:"";}.fa-italic:before{content:"";}.fa-text-height:before{content:"";}.fa-text-width:before{content:"";}.fa-align-left:before{content:"";}.fa-align-center:before{content:"";}.fa-align-right:before{content:"";}.fa-align-justify:before{content:"";}.fa-list:before{content:"";}.fa-dedent:before,.fa-outdent:before{conLine truncated
+11
View File
@@ -670,6 +670,17 @@ div.logEventsViewport table.logEventsViewport > tbody > tr > td.message {
#Config_DocumentTemplates_JobSubTypes_Update_Dialog .checkboxBulkSelectContainer { #Config_DocumentTemplates_JobSubTypes_Update_Dialog .checkboxBulkSelectContainer {
font-size: 0.8em; font-size: 0.8em;
} }
#DocumentTemplate_OnImportUserFlagRules_AddDialog .distribute-evenly {
display: flex;
justify-content: space-around;
margin: 1em 0;
}
#DocumentTemplate_OnImportUserFlagRules_AddDialog textarea {
width: 99%;
}
#DocumentTemplate_OnImportUserFlagRules_AddDialog .mt-1 {
margin-top: 1em;
}
.dialog-bulk-generate .brief { .dialog-bulk-generate .brief {
margin: 0 0 8px 0; margin: 0 0 8px 0;
} }
+16
View File
@@ -733,6 +733,22 @@ div.logEventsViewport {
} }
} }
#DocumentTemplate_OnImportUserFlagRules_AddDialog {
.distribute-evenly {
display: flex;
justify-content: space-around;
margin: 1em 0;
}
textarea {
width: 99%;
}
.mt-1 {
margin-top: 1em;
}
}
.dialog-bulk-generate { .dialog-bulk-generate {
.brief { .brief {
margin: 0 0 8px 0; margin: 0 0 8px 0;
+1 -1
View File
@@ -1 +1 @@
.tableData{border:solid 1px #f4f4f4;border-collapse:collapse;}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}.tableData>tbody>tr:nth-child(odd)>td{background-color:hsl(0,0%,98.5%);}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}.tableData>tbody>tr:hover>td{background-color:hsl(0,0%,97.5%);}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4;}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse;}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff;}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8;}.tableDataContainer{background-color:#fff;}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse;}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0;}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right;}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa;}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right;}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right;}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer;}.subtleUntilHover{-moz-opacity:.3;opacity:.3;}.subtleUntilHover:hover{-moz-opacity:1;opacity:1;}#updateAvailableContainer{float:right;border:1px dashed #ddd;background-color:#fff;font-size:.6em;line-height:1em;padding:10px 10px 4px 70px;text-align:right;height:50px;}#updateAvailableContainer i{position:absolute;display:block;height:64px;width:64px;vertical-align:middle;margin-left:-70px;font-size:50px;color:#e51400;}#updateAvailableContainer a.button{font-size:12px;margin-top:8px;}.Config_HideAdvanced .Config_HideAdvanced_Item{display:none;}.Config_LinkedGroup_Instance{margin:4px 0 8px 4px;padding:4px 0 4px 6px;border-left:4px solid #ccc;background-color:#fff;}.Config_LinkedGroup_Instance div.code{margin-left:2px;}#Config_LinkedGroup_Dialog h3{margin-bottom:6px;}#Config_LinkedGroup_Dialog table.input{margin-top:12px;}#Config_LinkedGroup_Dialog table.input th{text-align:right;}#expressionEditor #expressionEditorExceptionContainer{display:none;border:1px dashed #ff9696;background-color:#ffd8d8;margin:10px 0;padding:10px;}#expressionEditor #expressionEditorContainer{border:1px solid #1e6dab;background-color:#f4f4f4;height:100px;}.expressionTree span.dynatree-node span.dynatree-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAGFklEQVRYw+WVe1BUVRzHvwE+QE0ZLF1Y3gTGSxIl4rk85KHFe0cUiIc8IjNx8gUmLJAFpbIKKJmmCSOi4q48zAe6LqAoioiIMlpOqYWxKCroWFNzO2eXXRdYCBqmf/rNfPece+6598738/ud3wJjHPV8WNwphoSO+L+F3HznWaTVbcGDsYQggkhjJPucWIhcGYYP5xnAKnkh0n1skcGxRobzLGx0MsYmR2MUO5qBMzEAiXhvxmLZU94tq/rJqzUV3q08zL+ei/lt+fC9sRt+N0vh334U/rdOYMEtMRnPqzL/4CxSu46jQFIJgSoI93FfZ7Tmi1FsVoSitWuwhv1Pe51ZcO0+g0BHNkqYH7BVrueXsPlhDYou7cYhrh2OOCzCdhQg7SWAcCYK4X/GIPyPBHBfJIP7fAWCe1chuGc9Qp5kIfhRDgIfbkHQo0IESnaCI74yKPNnkNZ5HPldxLxEiEuSw7i7fgl65BCo+Soc2zkaCHLzZSgLpeM2bBsWAscSM90McID5GTuy41BKzfdexOYn51Ao+R5lvwpR9bsAP65chr0z+TijqgLWw7dtI/zatsoy315GVA2/WyJp1uVyr7k6oOxT5ea7BGgk5u+pMt+N7pCRQtiP/VbUdA1qPLrxNLgFrR/T6wLsMlRscj+bpZAdn+tph5SeBvDi/HGYQjCfjObHtdj+8CRKOwQQ/XIIVyT78GhRFAQ6n6NJ9hKrZeGKF3IZdXDIefO/PQH2l7UQUD8FLnXaZG060Uy8c14PnAYjsJwa6Xb5me86KSv7LpL5riEyT8334FmSCOK8T7D6mrLZjhaEpacjFKzxoTAOWE2W1KhZUgFBj9ETRp+juozmFXQ9D3ksBYBIJgJOe32o+S4xPp1riKqGPdho+BrKKQQWxtXe3IMm8SbcFeWi8zMuJDPsIdLNxg3Z1y2TImUTRk1m/tiEoA78NlDwJOZd6gxg/r6/HAA1WZSCJ5IqCKVlL8BVah4Gvny5TuF0/kDzI6mADcgQfIEcfjOuLXmKZ/H0eTImilGfFI3Yo2SLuhSAV5MfNX9hH1Kpeeh4rHEwQnXjN/hWG69WMBfxk/F0dKpD84W1If4y0oJQ3Q779Xno6AMQG0vMvwKTwHUwWpgJQ/+vpIbJolzSa11XMdhuF5QBKEPoKsc9OioaHwXQVwE7satOlXma+RqhLPseC0gFsNVDYeCQRO/xkCkUQLjtJYTemFa0xcUjsTwa0S1kyzjoe7rRvW5u0Hcxw3d2s2BEr+cYw5VCaNqOFu1x6B0PtWJomyTLvzvRHxFTQ3FPdmUekaAq44MqwE1sTPTGQADKEPp1/T4AcgjUvCHIO0YYPGSVC1FRWI1qfg5y8w6hPGkpEk6kI6MuDnH9ADA8aFApHj54UB3qk0M9zUijM42yRgTDxiSdE6q/ZLYoWTnj0rmhTyH0vfaQD5RBn1MBPfeTJPu10HNpgFVK2EAAcgj9FpQA0JCaj68tQbyIPfD8C0sRFvcBQlnWCAHbdqnsCGyYRyAIjqKyoAKVW2MQ25yJzLoVSGkk82sc8ncO9nz3QQB4PDUsJz0soH0KFt+ZIVU0Yzo0AFPuR4OyLW16jaTpndaDH2l6nPNmcK63gHOjFWanRaoCMCiUAVDT1HwWkwiPYzUDIQxdBTzbLGQLDqCsiGZ9LdY1RCPmeglKLKUb9H1dZUmMipKKIUdZPldWFPPmsABId9eESbCiB8DQuxAGpAL0PA7A85yptAJoD6AVMFoAyuaXX8+Wzu2/ZkZ6FHKRa0ErIRZLmyMR2c4H31ZxU9+n/xE4SP7FSBNHkGgaQm6wwG03RsRNG8Qxs4cHYNsyCd6npsLrog6czr1Osq0Lb9LxXepMiMzhdcGSyBauDXNGBYBKlfkRVoA88pFvswQRt7OQZd/vRh8ARaa5zHjVFfBs7vAAqHldZwuwA21gnjAPs9e64C2eNxy+fBeOeSFw2hGu0EgBKJe/077Gf2t+2DAKfLtfBTCMpkJHGB3wGANkMJbIYWyGB0ANjVajCWp6rM3T0Ji2ifxUQV2rQqHxU4i0KomqoKHZN06sGhrAfxVjbX4M4m/gZza+uQwOHQAAAABJRU5ErkJggg==);background-position-y:0;}.expressionTree span.dynatree-node.object span.dynatree-icon{background-position-x:0;}.expressionTree span.dynatree-node.parameter span.dynatree-icon{background-position-x:-16px;}.expressionTree span.dynatree-node.function span.dynatree-icon{background-position-x:-32px;}.expressionTree span.dynatrLine truncated .tableData{border:solid 1px #f4f4f4;border-collapse:collapse;}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}.tableData>tbody>tr:nth-child(odd)>td{background-color:hsl(0,0%,98.5%);}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}.tableData>tbody>tr:hover>td{background-color:hsl(0,0%,97.5%);}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4;}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse;}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff;}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8;}.tableDataContainer{background-color:#fff;}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse;}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0;}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right;}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa;}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right;}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right;}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer;}.subtleUntilHover{-moz-opacity:.3;opacity:.3;}.subtleUntilHover:hover{-moz-opacity:1;opacity:1;}#updateAvailableContainer{float:right;border:1px dashed #ddd;background-color:#fff;font-size:.6em;line-height:1em;padding:10px 10px 4px 70px;text-align:right;height:50px;}#updateAvailableContainer i{position:absolute;display:block;height:64px;width:64px;vertical-align:middle;margin-left:-70px;font-size:50px;color:#e51400;}#updateAvailableContainer a.button{font-size:12px;margin-top:8px;}.Config_HideAdvanced .Config_HideAdvanced_Item{display:none;}.Config_LinkedGroup_Instance{margin:4px 0 8px 4px;padding:4px 0 4px 6px;border-left:4px solid #ccc;background-color:#fff;}.Config_LinkedGroup_Instance div.code{margin-left:2px;}#Config_LinkedGroup_Dialog h3{margin-bottom:6px;}#Config_LinkedGroup_Dialog table.input{margin-top:12px;}#Config_LinkedGroup_Dialog table.input th{text-align:right;}#expressionEditor #expressionEditorExceptionContainer{display:none;border:1px dashed #ff9696;background-color:#ffd8d8;margin:10px 0;padding:10px;}#expressionEditor #expressionEditorContainer{border:1px solid #1e6dab;background-color:#f4f4f4;height:100px;}.expressionTree span.dynatree-node span.dynatree-icon{background-image:url(data:image/png;base64,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);background-position-y:0;}.expressionTree span.dynatree-node.object span.dynatree-icon{background-position-x:0;}.expressionTree span.dynatree-node.parameter span.dynatree-icon{background-position-x:-16px;}.expressionTree span.dynatree-node.function span.dynatree-icon{background-position-x:-32px;}.expressionTree span.dynatrLine truncated
+3
View File
@@ -1576,3 +1576,6 @@ ul.list-group li.selected:hover {
ul.list-group li:not(:first-child) { ul.list-group li:not(:first-child) {
border-top: 1px solid #ddd; border-top: 1px solid #ddd;
} }
.whitespace-pre-wrap {
white-space: pre-wrap;
}
+4
View File
@@ -1676,3 +1676,7 @@ ul.list-group {
} }
} }
} }
.whitespace-pre-wrap {
white-space: pre-wrap;
}
+1 -1
View File
@@ -1 +1 @@
.tableData{border:solid 1px #f4f4f4;border-collapse:collapse;}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}.tableData>tbody>tr:nth-child(odd)>td{background-color:hsl(0,0%,98.5%);}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}.tableData>tbody>tr:hover>td{background-color:hsl(0,0%,97.5%);}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4;}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse;}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff;}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8;}.tableDataContainer{background-color:#fff;}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse;}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0;}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right;}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa;}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right;}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right;}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer;}.subtleUntilHover{-moz-opacity:.3;opacity:.3;}.subtleUntilHover:hover{-moz-opacity:1;opacity:1;}body{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;margin:0;padding:0;color:#333;}body.layout{background:url(data:image/png;base64,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) left top repeat-x #d1d1d1;background:linear-gradient(to bottom,#f2f2f2 0,#d1d1d1 370px) left top repeat-x #d1d1d1;min-height:370px;}.page{max-width:1232px;min-width:768px;margin-left:auto;margin-right:auto;}header,#header{position:relative;background-color:#333;margin:0;padding:0;height:34px;}header #heading,#header #heading{float:left;height:34px;}header #heading i,#header #heading i{display:block;height:Line truncated .tableData{border:solid 1px #f4f4f4;border-collapse:collapse;}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff;}.tableData>tbody>tr:nth-child(odd)>td{background-color:hsl(0,0%,98.5%);}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4;}.tableData>tbody>tr:hover>td{background-color:hsl(0,0%,97.5%);}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4;}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse;}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff;}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8;}.tableDataContainer{background-color:#fff;}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse;}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0;}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right;}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa;}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right;}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right;}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer;}.subtleUntilHover{-moz-opacity:.3;opacity:.3;}.subtleUntilHover:hover{-moz-opacity:1;opacity:1;}body{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;margin:0;padding:0;color:#333;}body.layout{background:url(data:image/png;base64,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) left top repeat-x #d1d1d1;background:linear-gradient(to bottom,#f2f2f2 0,#d1d1d1 370px) left top repeat-x #d1d1d1;min-height:370px;}.page{max-width:1232px;min-width:768px;margin-left:auto;margin-right:auto;}header,#header{position:relative;background-color:#333;margin:0;padding:0;height:34px;}header #heading,#header #heading{float:left;height:34px;}header #heading i,#header #heading i{display:block;height:Line truncated
+1
View File
@@ -214,6 +214,7 @@
<Compile Include="Areas\API\Controllers\JobQueueJobController.cs" /> <Compile Include="Areas\API\Controllers\JobQueueJobController.cs" />
<Compile Include="Areas\API\Controllers\PluginController.cs" /> <Compile Include="Areas\API\Controllers\PluginController.cs" />
<Compile Include="Areas\API\Controllers\SearchController.cs" /> <Compile Include="Areas\API\Controllers\SearchController.cs" />
<Compile Include="Areas\API\Models\DocumentTemplate\AddOnImportUserFlagRuleModel.cs" />
<Compile Include="Areas\API\Models\DocumentTemplate\BulkGenerateUserModel.cs" /> <Compile Include="Areas\API\Models\DocumentTemplate\BulkGenerateUserModel.cs" />
<Compile Include="Areas\API\Models\DocumentTemplate\DocumentHandlersModel.cs" /> <Compile Include="Areas\API\Models\DocumentTemplate\DocumentHandlersModel.cs" />
<Compile Include="Areas\API\Models\Job\DeviceHeldLocationModel.cs" /> <Compile Include="Areas\API\Models\Job\DeviceHeldLocationModel.cs" />
@@ -241,6 +241,18 @@ namespace Disco.Web.Areas.API.Controllers
} }
[NonAction] [NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult RemoveOnImportUserFlagRule()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.RemoveOnImportUserFlagRule);
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult AddOnImportUserFlagRule()
{
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.AddOnImportUserFlagRule);
}
[NonAction]
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public virtual System.Web.Mvc.ActionResult GenerateDocumentHandlerUi() public virtual System.Web.Mvc.ActionResult GenerateDocumentHandlerUi()
{ {
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GenerateDocumentHandlerUi); return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.GenerateDocumentHandlerUi);
@@ -298,6 +310,8 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string BulkGenerateAddUserDetail = "BulkGenerateAddUserDetail"; public readonly string BulkGenerateAddUserDetail = "BulkGenerateAddUserDetail";
public readonly string Generate = "Generate"; public readonly string Generate = "Generate";
public readonly string Delete = "Delete"; public readonly string Delete = "Delete";
public readonly string RemoveOnImportUserFlagRule = "RemoveOnImportUserFlagRule";
public readonly string AddOnImportUserFlagRule = "AddOnImportUserFlagRule";
public readonly string GenerateDocumentHandlerUi = "GenerateDocumentHandlerUi"; public readonly string GenerateDocumentHandlerUi = "GenerateDocumentHandlerUi";
public readonly string DocumentHandlers = "DocumentHandlers"; public readonly string DocumentHandlers = "DocumentHandlers";
} }
@@ -336,6 +350,8 @@ namespace Disco.Web.Areas.API.Controllers
public const string BulkGenerateAddUserDetail = "BulkGenerateAddUserDetail"; public const string BulkGenerateAddUserDetail = "BulkGenerateAddUserDetail";
public const string Generate = "Generate"; public const string Generate = "Generate";
public const string Delete = "Delete"; public const string Delete = "Delete";
public const string RemoveOnImportUserFlagRule = "RemoveOnImportUserFlagRule";
public const string AddOnImportUserFlagRule = "AddOnImportUserFlagRule";
public const string GenerateDocumentHandlerUi = "GenerateDocumentHandlerUi"; public const string GenerateDocumentHandlerUi = "GenerateDocumentHandlerUi";
public const string DocumentHandlers = "DocumentHandlers"; public const string DocumentHandlers = "DocumentHandlers";
} }
@@ -622,6 +638,26 @@ namespace Disco.Web.Areas.API.Controllers
public readonly string id = "id"; public readonly string id = "id";
public readonly string redirect = "redirect"; public readonly string redirect = "redirect";
} }
static readonly ActionParamsClass_RemoveOnImportUserFlagRule s_params_RemoveOnImportUserFlagRule = new ActionParamsClass_RemoveOnImportUserFlagRule();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_RemoveOnImportUserFlagRule RemoveOnImportUserFlagRuleParams { get { return s_params_RemoveOnImportUserFlagRule; } }
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_RemoveOnImportUserFlagRule
{
public readonly string id = "id";
public readonly string ruleId = "ruleId";
}
static readonly ActionParamsClass_AddOnImportUserFlagRule s_params_AddOnImportUserFlagRule = new ActionParamsClass_AddOnImportUserFlagRule();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_AddOnImportUserFlagRule AddOnImportUserFlagRuleParams { get { return s_params_AddOnImportUserFlagRule; } }
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class ActionParamsClass_AddOnImportUserFlagRule
{
public readonly string id = "id";
public readonly string addFlag = "addFlag";
public readonly string userFlagId = "userFlagId";
public readonly string comments = "comments";
}
static readonly ActionParamsClass_GenerateDocumentHandlerUi s_params_GenerateDocumentHandlerUi = new ActionParamsClass_GenerateDocumentHandlerUi(); static readonly ActionParamsClass_GenerateDocumentHandlerUi s_params_GenerateDocumentHandlerUi = new ActionParamsClass_GenerateDocumentHandlerUi();
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public ActionParamsClass_GenerateDocumentHandlerUi GenerateDocumentHandlerUiParams { get { return s_params_GenerateDocumentHandlerUi; } } public ActionParamsClass_GenerateDocumentHandlerUi GenerateDocumentHandlerUiParams { get { return s_params_GenerateDocumentHandlerUi; } }
@@ -1084,6 +1120,34 @@ namespace Disco.Web.Areas.API.Controllers
return callInfo; return callInfo;
} }
[NonAction]
partial void RemoveOnImportUserFlagRuleOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, System.Guid? ruleId);
[NonAction]
public override System.Web.Mvc.ActionResult RemoveOnImportUserFlagRule(string id, System.Guid? ruleId)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.RemoveOnImportUserFlagRule);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "ruleId", ruleId);
RemoveOnImportUserFlagRuleOverride(callInfo, id, ruleId);
return callInfo;
}
[NonAction]
partial void AddOnImportUserFlagRuleOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string id, bool? addFlag, int? userFlagId, string comments);
[NonAction]
public override System.Web.Mvc.ActionResult AddOnImportUserFlagRule(string id, bool? addFlag, int? userFlagId, string comments)
{
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.AddOnImportUserFlagRule);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "addFlag", addFlag);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "userFlagId", userFlagId);
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "comments", comments);
AddOnImportUserFlagRuleOverride(callInfo, id, addFlag, userFlagId, comments);
return callInfo;
}
[NonAction] [NonAction]
partial void GenerateDocumentHandlerUiOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string templateId, string targetId, string handlerId); partial void GenerateDocumentHandlerUiOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string templateId, string targetId, string handlerId);