From 18469ad4627b27436938cca9ef07e7cada96ddd2 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 14 Jul 2015 18:04:04 +0100 Subject: [PATCH] Implemented Data export step matrix behavior. --- .../Modules/Orchard.ImportExport/Module.txt | 1 + .../Orchard.ImportExport.csproj | 6 ++ .../Orchard.ImportExport/Scripts/Web.config | 16 +++++ .../Scripts/exportstep-data.js | 63 +++++++++++++++++++ .../EditorTemplates/ExportSteps/Data.cshtml | 56 +++++++++-------- 5 files changed, 115 insertions(+), 27 deletions(-) create mode 100644 src/Orchard.Web/Modules/Orchard.ImportExport/Scripts/Web.config create mode 100644 src/Orchard.Web/Modules/Orchard.ImportExport/Scripts/exportstep-data.js diff --git a/src/Orchard.Web/Modules/Orchard.ImportExport/Module.txt b/src/Orchard.Web/Modules/Orchard.ImportExport/Module.txt index 45c2e1f5f..a1519f332 100644 --- a/src/Orchard.Web/Modules/Orchard.ImportExport/Module.txt +++ b/src/Orchard.Web/Modules/Orchard.ImportExport/Module.txt @@ -8,3 +8,4 @@ OrchardVersion: 1.9 Description: Provides content item data import and export capability. FeatureDescription: Imports and exports content item data Category: Content +Dependencies: Orchard.jQuery \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.ImportExport/Orchard.ImportExport.csproj b/src/Orchard.Web/Modules/Orchard.ImportExport/Orchard.ImportExport.csproj index bfceba40b..c6f5ff76a 100644 --- a/src/Orchard.Web/Modules/Orchard.ImportExport/Orchard.ImportExport.csproj +++ b/src/Orchard.Web/Modules/Orchard.ImportExport/Orchard.ImportExport.csproj @@ -108,6 +108,7 @@ + @@ -136,6 +137,11 @@ + + + Designer + + 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) diff --git a/src/Orchard.Web/Modules/Orchard.ImportExport/Scripts/Web.config b/src/Orchard.Web/Modules/Orchard.ImportExport/Scripts/Web.config new file mode 100644 index 000000000..11135c337 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ImportExport/Scripts/Web.config @@ -0,0 +1,16 @@ + + + + + + + + + + + + + diff --git a/src/Orchard.Web/Modules/Orchard.ImportExport/Scripts/exportstep-data.js b/src/Orchard.Web/Modules/Orchard.ImportExport/Scripts/exportstep-data.js new file mode 100644 index 000000000..6f713dc03 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.ImportExport/Scripts/exportstep-data.js @@ -0,0 +1,63 @@ +(function($) { + $(function() { + $("table.items").each(function() { + var table = $(this); + + table.on("click", ".check-schema, .check-data", function (e) { + updateState(); + }); + + table.on("click", ".check-both", function (e) { + var sender = $(this); + var isChecked = sender.is(":checked"); + var row = sender.closest("tr"); + + row.find(".check-schema, .check-data").prop("checked", isChecked); + updateState(); + }); + + table.on("click", ".check-all-schema", function (e) { + var sender = $(this); + var isChecked = sender.is(":checked"); + + table.find(".check-schema").prop("checked", isChecked); + updateState(); + }); + + table.on("click", ".check-all-data", function (e) { + var sender = $(this); + var isChecked = sender.is(":checked"); + + table.find(".check-data").prop("checked", isChecked); + updateState(); + }); + + table.on("click", ".check-all-both", function (e) { + var sender = $(this); + var isChecked = sender.is(":checked"); + + table.find(".check-schema").prop("checked", isChecked); + table.find(".check-data").prop("checked", isChecked); + updateState(); + }); + + var updateState = function () { + table.find("tbody tr").each(function() { + var tr = $(this); + var checkSchema = tr.find(".check-schema").is(":checked"); + var checkData = tr.find(".check-data").is(":checked"); + + tr.find(".check-both").prop("checked", checkSchema && checkData); + }); + + var allBothChecked = table.find(".check-both").not(":checked").length === 0; + var allSchemaChecked = table.find(".check-schema").not(":checked").length === 0; + var allDataChecked = table.find(".check-data").not(":checked").length === 0; + + table.find(".check-all-both").prop("checked", allBothChecked); + table.find(".check-all-schema").prop("checked", allSchemaChecked); + table.find(".check-all-data").prop("checked", allDataChecked); + }; + }); + }); +})(jQuery); \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.ImportExport/Views/EditorTemplates/ExportSteps/Data.cshtml b/src/Orchard.Web/Modules/Orchard.ImportExport/Views/EditorTemplates/ExportSteps/Data.cshtml index 6169bb736..4ae158162 100644 --- a/src/Orchard.Web/Modules/Orchard.ImportExport/Views/EditorTemplates/ExportSteps/Data.cshtml +++ b/src/Orchard.Web/Modules/Orchard.ImportExport/Views/EditorTemplates/ExportSteps/Data.cshtml @@ -1,39 +1,41 @@ @model Orchard.ImportExport.ViewModels.DataExportStepViewModel @{ Style.Include("exportstep-data.css"); + Script.Require("jQuery"); + Script.Include("exportstep-data.js"); }
- - - - - - - - - - - - + + + + + + + + + + + + - @{ var contentTypeIndex = 0;} - @foreach (var contentType in Model.ContentTypes) { - - - - - - - contentTypeIndex++; - } + @{ var contentTypeIndex = 0;} + @foreach (var contentType in Model.ContentTypes) { + + + + + + + contentTypeIndex++; + }
@T("Content Type")@T("Schema")@T("Data")@T("Both")
 
@T("Content Type")@T("Schema")@T("Data")@T("Both")
 
@contentType.DisplayName - - - - -
@contentType.DisplayName + + + + +
@Html.Hint(T("Choose the types to include in the export file"))