summaryrefslogtreecommitdiffstats
path: root/lbu-controller.lua
blob: d70dde75b5d7d5e70e948e628df00964761e115a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
module(..., package.seeall)

-- ################################################################################
-- PUBLIC FUNCTIONS

default_action = "status"

function basicstatus (self)
	return self.model.getstatus()
end

function status (self)
	return self.model.list()
end

function config (self)
	local config = self.model.getconfig()
	if self.clientdata.Save then
		config.errtxt = nil
		for name,value in pairs(config.value) do
			value.errtxt = nil
			if value.type == "boolean" then
				value.value = (self.clientdata[name]~=nil)
			else
				value.value = self.clientdata[name] or value.value
			end
		end
		config = self.model.setconfig(config)
		if not config.errtxt then
			config.descr = "Configuration Set"
		end
	end
	config.type = "form"
	config.option = "Save"
	config.label = "Edit Config"

	return config
end

function editincluded (self)
	local errtxt, descr
	local included = self.model.getincluded()
	if self.clientdata.Save then
		included.errtxt = nil
		included.value = self.clientdata.included
		included = self.model.setincluded(included)
		if included.errtxt then
			errtxt = "Failed to set included files"
		else
			descr = "Included files set"
			redirect_to_referrer(self)
		end
	end

	return cfe({ type="form", value={included=included}, option="Save", label="Edit included files", errtxt=errtxt, descr=descr })
end

function editexcluded (self)
	local errtxt, descr
	local excluded = self.model.getexcluded()
	if self.clientdata.Save then
		excluded.errtxt = nil
		excluded.value = self.clientdata.excluded
		excluded = self.model.setexcluded(excluded)
		if excluded.errtxt then
			errtxt = "Failed to set excluded files"
		else
			descr = "Excluded files set"
			redirect_to_referrer(self)
		end
	end

	return cfe({ type="form", value={excluded=excluded}, option="Save", label="Edit excluded files", errtxt=errtxt, descr=descr })
end

function commit(self)
	local comm = self.model.getcommit()
	if self.clientdata.Commit then
		comm.errtxt = nil
		for name,value in pairs(comm.value) do
			value.errtxt = nil
			value.value = (self.clientdata[name]~=nil)
		end
		comm = self.model.commit(comm)
		self.sessiondata.commitresult = cfe({ value=comm.descr or "", errtxt=comm.errtxt })
		redirect_to_referrer(self)
	end

	if self.sessiondata.commitresult then
		comm.descr = self.sessiondata.commitresult.value
		comm.errtxt = self.sessiondata.commitresult.errtxt
		self.sessiondata.commitresult = nil
	end

	comm.type = "form"
	comm.option = "Commit"
	comm.label = "Commit changes"

	return comm
end

function expert (self)
	local filedetails = self.model.get_filedetails()
	if self.clientdata.Save then
		filedetails.value.filecontent.errtxt = nil
		filedetails.value.filecontent.value = self.clientdata.filecontent
		filedetails.value.filecontent = self.model.set_filecontent(filedetails.value.filecontent)
		if filedetails.value.filecontent.errtxt then
			filedetails.errtxt = "Failed to save config"
		else
			filedetails = self.model.get_filedetails()
			filedetails.descr = "Saved config"
		end
	end

	filedetails.type = "form"
	filedetails.option = "Save"
	filedetails.label = "Edit config file"

	return filedetails
end

function listbackups(self)
	return self.model.getbackupfiles()
end
--[[
function deletebackup(self)
	self.model.deletebackupfile(self.clientdata.backup)
	redirect_to_referrer(self)
end
--]]
function selectbackup(self)
	self.model.selectbackupfile(self.clientdata.backup)
	redirect_to_referrer(self)
end