diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/Scripts/recipebuilderstep-data.js b/src/Orchard.Web/Modules/Orchard.Recipes/Scripts/recipebuilderstep-data.js index 6f713dc03..7d7000d46 100644 --- a/src/Orchard.Web/Modules/Orchard.Recipes/Scripts/recipebuilderstep-data.js +++ b/src/Orchard.Web/Modules/Orchard.Recipes/Scripts/recipebuilderstep-data.js @@ -1,63 +1,25 @@ (function($) { - $(function() { - $("table.items").each(function() { - var table = $(this); + $(function () { + $("table.items thead tr input[type='checkbox'].check-all-in-column").each(function () { + var master = $(this); + var columnIndex = master.closest("th").index() + 1; + var slaves = master.closest("table").find("tbody tr td:nth-child(" + columnIndex + ") input[type='checkbox']:not(:disabled)"); - table.on("click", ".check-schema, .check-data", function (e) { - updateState(); + var updateMaster = function () { + var allChecked = slaves.filter(":not(:checked)").length == 0; + master.prop("checked", allChecked); + } + + master.on("change", function () { + var isChecked = $(this).is(":checked"); + slaves.prop("checked", isChecked); }); - 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(); + slaves.on("change", function () { + updateMaster(); }); - 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); - }; + updateMaster(); }); }); })(jQuery); \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/BuilderSteps/Content.cshtml b/src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/BuilderSteps/Content.cshtml index 477cef4ac..fb90c82e7 100644 --- a/src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/BuilderSteps/Content.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Recipes/Views/EditorTemplates/BuilderSteps/Content.cshtml @@ -11,13 +11,11 @@