summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--provisioning-controller.lua4
-rw-r--r--provisioning-editdeviceparams-html.lsp27
-rw-r--r--provisioning-model.lua64
-rw-r--r--provisioning.roles4
4 files changed, 89 insertions, 10 deletions
diff --git a/provisioning-controller.lua b/provisioning-controller.lua
index 81a8941..7c1dd2f 100644
--- a/provisioning-controller.lua
+++ b/provisioning-controller.lua
@@ -114,6 +114,10 @@ mymodule.overridedeviceparams = function( self )
return self.handle_form(self, self.model.get_all_device_params, self.model.set_all_device_params, self.clientdata, "Save", "Override Device Parameters", "Device Parameters Saved")
end
+mymodule.deletedeviceparamgroup = function( self )
+ return self.handle_form(self, self.model.get_delete_device_param_group, self.model.delete_device_param_group, self.clientdata, "Delete", "Delete Device Parameter Group", "Device Parameter Group Deleted")
+end
+
mymodule.viewdeviceparams = function( self )
return self.model.get_editable_device_params(self, self.clientdata)
end
diff --git a/provisioning-editdeviceparams-html.lsp b/provisioning-editdeviceparams-html.lsp
index c0d1de8..bd54c1f 100644
--- a/provisioning-editdeviceparams-html.lsp
+++ b/provisioning-editdeviceparams-html.lsp
@@ -74,15 +74,23 @@ end
currentnumber = 0;
}
- if ((currentsection == previoussection) && (currentnumber != previousnumber) && (0 == $(this).find(".defaultoverride").length) && (0 == $(this).find(".groupdefaultoverride").length) && ($(this).children().first().text().match(currentnumber))) {
- $(this).toggle();
- <% if page_info.action ~= "viewdeviceparams" then %>
- $('<a href="javascript:;" class="'+id+'"><img src="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>tango/16x16/actions/list-add.png"> Add '+$(this).children().first().text()+'</a>').insertAfter($(this)).click(showsection);
- if ($(this).prev("a").length == 1) {
- // If the previous sibling is also an Add link, hide this one
- $(this).next().toggle();
- }
+ if ((currentsection == previoussection) && (currentnumber != previousnumber) && ($(this).children().first().text().match(currentnumber))) {
+ // Found a section
+ <% if page_info.action ~= "viewdeviceparams" and viewlibrary.check_permission("deletedeviceparamgroup") then %>
+ // Add a delete button to previous section
+ $("<a href='<%= page_info.script..page_info.prefix..page_info.controller.."/deletedeviceparamgroup?device_id="..html.html_escape(form.value.device_id.value) %>&group="+previoussection+previousnumber+"&redir=<%= page_info.script..page_info.prefix..page_info.controller.."/"..page_info.action..html.url_encode("?device_id="..form.value.device_id.value)%>&submit=true' class='deletedeviceparamgroup'> Delete</a>").insertAfter($(this).prevAll("div").first().children().first());
<% end %>
+ if ((0 == $(this).find(".defaultoverride").length) && (0 == $(this).find(".groupdefaultoverride").length)) {
+ // Hide this section
+ $(this).toggle();
+ <% if page_info.action ~= "viewdeviceparams" then %>
+ $('<a href="javascript:;" class="'+id+'"><img src="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>tango/16x16/actions/list-add.png"> '+$(this).children().first().text()+'</a>').insertAfter($(this)).click(showsection);
+ if ($(this).prev("a").length == 1) {
+ // If the previous sibling is also an Add link, hide this one
+ $(this).next().toggle();
+ }
+ <% end %>
+ }
}
previoussection = currentsection;
@@ -95,9 +103,12 @@ end
$(".deletedevice").click(function(){ return confirm("Are you sure you want to delete this device?")});
$(".groupdefaultoverride").siblings().select("contains('Default:')").addClass("error");
hideunuseddivs();
+ $(".deletedeviceparamgroup").click(function(){ return confirm("Are you sure you want to delete this parameter group?")});
});
</script>
+<% htmlviewfunctions.displaycommandresults({"deletedeviceparamgroup"}, session) %>
+
<% if form and form.value and form.value.device_id and form.value.device_id.value ~= "" then %>
<% if viewlibrary.check_permission("editdevice") then %>
<a href='<%= page_info.script..page_info.prefix..page_info.controller.."/editdevice?device_id="..html.html_escape(form.value.device_id.value) %>'><img src='<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>/tango/16x16/categories/applications-system.png' title="Edit Class of Service"></img> <big>Edit Class of Service </big></a>
diff --git a/provisioning-model.lua b/provisioning-model.lua
index 6c60ace..8e7c8c8 100644
--- a/provisioning-model.lua
+++ b/provisioning-model.lua
@@ -1887,6 +1887,70 @@ mymodule.set_all_device_params = function(self, params)
return set_device_params(params, false)
end
+mymodule.get_delete_device_param_group = function(self, clientdata)
+ clientdata = clientdata or {}
+ local device_id = clientdata.device_id
+ local retval = {}
+ retval.device_id = cfe({value=device_id or "", label="Device ID", seq=0})
+ local errtxt = "Cannot find device"
+ if device_id and device_id ~= "" then
+ local values = get_device_values(device_id)
+ if not values.errtxt then
+ errtxt = nil
+ retval.group = cfe({type="select", value={}, label="Group", option={}, seq=1})
+ local reverseoption = {}
+ for name in pairs(values.value) do
+ if not reverseoption[name] and string.match(name, "%d$") then
+ reverseoption[name] = true
+ retval.group.option[#retval.group.option+1] = name
+ end
+ end
+ table.sort(retval.group.option)
+ end
+ end
+
+ return cfe({ type="group", value=retval, label="Provisioning Device Parameter Groups", errtxt=errtxt })
+end
+
+mymodule.delete_device_param_group = function(self, group)
+ local connected
+ local success = (not group.errtxt)
+ success = modelfunctions.validateselect(group.value.group) and success
+ if success then
+ local res, err = pcall(function()
+ connected = databaseconnect(true)
+ local params = get_device_params(group.value.device_id.value, false)
+ if params.errtxt or not params.value[group.value.group.value] then
+ group.errtxt = "Failed to delete parameter group"
+ group.value.device_id.errtxt = params.errtxt
+ else
+ local number = tonumber(string.match(group.value.group.value, "%d+$"))
+ local name = string.match(group.value.group.value, "(.*)"..number.."$");
+ local temp = params.value[group.value.group.value]
+ local i=number+1
+ while params.value[name..i] do
+ params.value[name..(i-1)] = params.value[name..i]
+ i = i+1
+ end
+ for n,v in pairs(temp.value) do
+ v.value = v.default
+ end
+ params.value[name..(i-1)] = temp
+ params = set_device_params(params)
+ group.errtxt = params.errtxt
+ end
+ if connected then databasedisconnect() end
+ end)
+ if not res and err then
+ handlesqlexception(connected, err)
+ group.errtxt = err
+ end
+ else
+ group.errtxt = "Failed to delete parameter group"
+ end
+ return group
+end
+
mymodule.fetch_device_values = function(self, search)
local connected
local res, err = pcall(function()
diff --git a/provisioning.roles b/provisioning.roles
index 999d62c..7376b66 100644
--- a/provisioning.roles
+++ b/provisioning.roles
@@ -1,4 +1,4 @@
USER=provisioning:searchdevices,provisioning:listdevices,provisioning:viewdeviceparams,provisioning:searchbyextension,provisioning:searchbymac,provisioning:listrequests,provisioning:bulkdumpdevices,provisioning:bulk,provisioning:viewactivitylog
-EDITOR=provisioning:editdevice,provisioning:createdevice,provisioning:duplicatedevice,provisioning:deletedevice,provisioning:editdeviceparams,provisioning:deleterequest,provisioning:createdevicefromrequest,provisioning:bulkcreatedevices
+EDITOR=provisioning:editdevice,provisioning:createdevice,provisioning:duplicatedevice,provisioning:deletedevice,provisioning:editdeviceparams,provisioning:deletedeviceparamgroup,provisioning:deleterequest,provisioning:createdevicefromrequest,provisioning:bulkcreatedevices
EXPERT=provisioning:listtemplates,provisioning:edittemplate,provisioning:createtemplate,provisioning:deletetemplate,provisioning:listclassgroups,provisioning:editclassgroup,provisioning:createclassgroup,provisioning:deleteclassgroup,provisioning:listclasses,provisioning:editclass,provisioning:createclass,provisioning:deleteclass,provisioning:listgroups,provisioning:editgroup,provisioning:creategroup,provisioning:deletegroup,provisioning:listparams,provisioning:editparam,provisioning:createparam,provisioning:deleteparam,provisioning:overridedeviceparams,provisioning:editoptions,provisioning:listfiles,provisioning:editfile,provisioning:getdevicevalues,provisioning:bulkdumprawdevices
-ADMIN=provisioning:listtemplates,provisioning:edittemplate,provisioning:createtemplate,provisioning:deletetemplate,provisioning:searchdevices,provisioning:listdevices,provisioning:editdevice,provisioning:createdevice,provisioning:duplicatedevice,provisioning:deletedevice,provisioning:listclassgroups,provisioning:editclassgroup,provisioning:createclassgroup,provisioning:deleteclassgroup,provisioning:listclasses,provisioning:editclass,provisioning:createclass,provisioning:deleteclass,provisioning:listgroups,provisioning:editgroup,provisioning:creategroup,provisioning:deletegroup,provisioning:listparams,provisioning:editparam,provisioning:createparam,provisioning:deleteparam,provisioning:editdeviceparams,provisioning:overridedeviceparams,provisioning:viewdeviceparams,provisioning:editoptions,provisioning:listfiles,provisioning:editfile,provisioning:searchbyextension,provisioning:searchbymac,provisioning:getdevicevalues,provisioning:dumpdatabase,provisioning:getclassvalues,provisioning:listrequests,provisioning:deleterequest,provisioning:createdevicefromrequest,provisioning:bulkcreatedevices,provisioning:bulkdumprawdevices,provisioning:bulk,provisioning:viewactivitylog
+ADMIN=provisioning:listtemplates,provisioning:edittemplate,provisioning:createtemplate,provisioning:deletetemplate,provisioning:searchdevices,provisioning:listdevices,provisioning:editdevice,provisioning:createdevice,provisioning:duplicatedevice,provisioning:deletedevice,provisioning:listclassgroups,provisioning:editclassgroup,provisioning:createclassgroup,provisioning:deleteclassgroup,provisioning:listclasses,provisioning:editclass,provisioning:createclass,provisioning:deleteclass,provisioning:listgroups,provisioning:editgroup,provisioning:creategroup,provisioning:deletegroup,provisioning:listparams,provisioning:editparam,provisioning:createparam,provisioning:deleteparam,provisioning:editdeviceparams,provisioning:deletedeviceparamgroup,provisioning:overridedeviceparams,provisioning:viewdeviceparams,provisioning:editoptions,provisioning:listfiles,provisioning:editfile,provisioning:searchbyextension,provisioning:searchbymac,provisioning:getdevicevalues,provisioning:dumpdatabase,provisioning:getclassvalues,provisioning:listrequests,provisioning:deleterequest,provisioning:createdevicefromrequest,provisioning:bulkcreatedevices,provisioning:bulkdumprawdevices,provisioning:bulk,provisioning:viewactivitylog