Skip to content

Commit 47748ec

Browse files
committed
Add confirmMessage to settings.Button
Make confirmMessage templatable
1 parent 5b8dcdd commit 47748ec

File tree

3 files changed

+38
-22
lines changed

3 files changed

+38
-22
lines changed

Build/CommonAssemblyInfo.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@
1515
//
1616
// You can specify all the values or you can default the Revision and Build Numbers
1717
// by using the '*' as shown below:
18-
[assembly: AssemblyVersion("1.3.0")]
19-
[assembly: AssemblyFileVersion("1.3.0")]
18+
[assembly: AssemblyVersion("1.4.0")]
19+
[assembly: AssemblyFileVersion("1.4.0")]

Griddly.Mvc/GriddlySettings.cs

+6-4
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ public GriddlySettings Add(GriddlyFilter filter)
223223
});
224224
}*/
225225

226-
public GriddlySettings Button(Func<object, object> argumentTemplate, string caption, string icon = null, GriddlyButtonAction action = GriddlyButtonAction.Navigate, bool? enableOnSelection = null, string className = null, string target = null, string[] rowIds = null, object htmlAttributes = null, bool appendRowIdsToUrl = false)
226+
public GriddlySettings Button(Func<object, object> argumentTemplate, string caption, string icon = null, GriddlyButtonAction action = GriddlyButtonAction.Navigate, bool? enableOnSelection = null, string className = null, string target = null, string[] rowIds = null, object htmlAttributes = null, bool appendRowIdsToUrl = false, string confirmMessage = null)
227227
{
228228
if (enableOnSelection == null)
229229
enableOnSelection = (action == GriddlyButtonAction.Ajax || action == GriddlyButtonAction.AjaxBulk || action == GriddlyButtonAction.Post);
@@ -237,7 +237,8 @@ public GriddlySettings Button(Func<object, object> argumentTemplate, string capt
237237
EnableOnSelection = enableOnSelection.Value,
238238
Target = target,
239239
RowIds = rowIds,
240-
AppendRowIdsToUrl = appendRowIdsToUrl
240+
AppendRowIdsToUrl = appendRowIdsToUrl,
241+
ConfirmMessage = confirmMessage
241242
};
242243

243244
if (htmlAttributes != null)
@@ -246,7 +247,7 @@ public GriddlySettings Button(Func<object, object> argumentTemplate, string capt
246247
return Add(button);
247248
}
248249

249-
public GriddlySettings Button(string argument, string caption, string icon = null, GriddlyButtonAction action = GriddlyButtonAction.Navigate, bool? enableOnSelection = null, string className = null, string target = null, string[] rowIds = null, object htmlAttributes = null, bool appendRowIdsToUrl = false)
250+
public GriddlySettings Button(string argument, string caption, string icon = null, GriddlyButtonAction action = GriddlyButtonAction.Navigate, bool? enableOnSelection = null, string className = null, string target = null, string[] rowIds = null, object htmlAttributes = null, bool appendRowIdsToUrl = false, string confirmMessage = null)
250251
{
251252
if (enableOnSelection == null)
252253
enableOnSelection = (action == GriddlyButtonAction.Ajax || action == GriddlyButtonAction.AjaxBulk || action == GriddlyButtonAction.Post);
@@ -260,7 +261,8 @@ public GriddlySettings Button(string argument, string caption, string icon = nul
260261
EnableOnSelection = enableOnSelection.Value,
261262
Target = target,
262263
RowIds = rowIds,
263-
AppendRowIdsToUrl = appendRowIdsToUrl
264+
AppendRowIdsToUrl = appendRowIdsToUrl,
265+
ConfirmMessage = confirmMessage
264266
};
265267

266268
if (htmlAttributes != null)

Griddly/Scripts/griddly.js

+30-16
Original file line numberDiff line numberDiff line change
@@ -1156,7 +1156,33 @@
11561156
var clearSelectionOnAction = button.data("clear-selection-on-action");
11571157
var rowIds = button.data("rowids");
11581158

1159-
if ((typeof confirmMessage === "undefined" || confirm(confirmMessage)))
1159+
var selection = {};
1160+
1161+
if (griddly.length)
1162+
{
1163+
selection = griddly.griddly("getSelected", rowIds);
1164+
1165+
if (selection.value)
1166+
{
1167+
selection.ids = selection.value;
1168+
delete selection.value;
1169+
}
1170+
}
1171+
1172+
var selectedCount = Object.keys(selection).length ? selection[Object.keys(selection)[0]].length : 0;
1173+
var templatedConfirmMessage;
1174+
1175+
if (typeof confirmMessage !== "undefined")
1176+
{
1177+
templatedConfirmMessage = confirmMessage.replace("${count}", selectedCount);
1178+
1179+
if (selectedCount == 1)
1180+
templatedConfirmMessage = templatedConfirmMessage.replace(/\${plural:.*?}/, "").replace(/\${singular:(.*)?}/, "$1");
1181+
else
1182+
templatedConfirmMessage = templatedConfirmMessage.replace(/\${singular:.*?}/, "").replace(/\${plural:(.*)?}/, "$1");;
1183+
}
1184+
1185+
if ((typeof confirmMessage === "undefined" || confirm(templatedConfirmMessage)))
11601186
{
11611187
if (button.triggerHandler("beforeExecute") !== false)
11621188
{
@@ -1165,18 +1191,6 @@
11651191
if (!url)
11661192
url = button.attr("href");
11671193

1168-
var selection = {};
1169-
if (griddly.length)
1170-
{
1171-
selection = griddly.griddly("getSelected", rowIds);
1172-
1173-
if (selection.value)
1174-
{
1175-
selection.ids = selection.value;
1176-
delete selection.value;
1177-
}
1178-
}
1179-
11801194
if (clearSelectionOnAction && griddly.length)
11811195
{
11821196
griddly.griddly("clearSelected");
@@ -1185,13 +1199,13 @@
11851199
switch (toggle)
11861200
{
11871201
case "ajaxbulk":
1188-
if (Object.keys(selection).length && selection[Object.keys(selection)[0]].length == 0 && enableOnSelection)
1202+
if (selectedCount == 0 && enableOnSelection)
11891203
return;
11901204

11911205
return this.ajaxBulk(url, selection, button, griddly);
11921206

11931207
case "post":
1194-
if (Object.keys(selection).length && selection[Object.keys(selection)[0]].length == 0 && enableOnSelection)
1208+
if (selectedCount == 0 && enableOnSelection)
11951209
return;
11961210

11971211
return this.post(url, selection, button, griddly);
@@ -1203,7 +1217,7 @@
12031217
return this.postCriteria(url, griddly.griddly("buildRequest"));
12041218

12051219
case "ajax":
1206-
if (Object.keys(selection).length && selection[Object.keys(selection)[0]].length == 0 && enableOnSelection)
1220+
if (selectedCount == 0 && enableOnSelection)
12071221
return;
12081222

12091223
return this.ajax(url, selection, button, griddly);

0 commit comments

Comments
 (0)