summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMika Havela <mika.havela@gmail.com>2008-04-09 13:21:08 +0000
committerMika Havela <mika.havela@gmail.com>2008-04-09 13:21:08 +0000
commit10d4d3ab01a7ab59b8c07c8acb75c1b3ffd9c754 (patch)
tree95b1dada20bfa24eb983fe7df6ee3ccc3e5e81cf
parentb4bb80d491873de680d6b5bee58afeb2e0333edb (diff)
downloadacf-alpine-baselayout-10d4d3ab01a7ab59b8c07c8acb75c1b3ffd9c754.tar.bz2
acf-alpine-baselayout-10d4d3ab01a7ab59b8c07c8acb75c1b3ffd9c754.tar.xz
Created a 'edit' page to edit interfaces.
Fixed so you can delete interfaces (I probably broke this earlier, not knowing it). Added a new tab to create new interface. git-svn-id: svn://svn.alpinelinux.org/acf/alpine-baselayout/trunk@965 ab2d0c66-481e-0410-8bed-d214d4d58bed
-rw-r--r--interfaces-config-html.lsp84
-rw-r--r--interfaces-controller.lua40
-rw-r--r--interfaces-delete-html.lsp5
-rw-r--r--interfaces-read-html.lsp28
-rw-r--r--interfaces-update-html.lsp43
-rw-r--r--interfaces.menu5
6 files changed, 101 insertions, 104 deletions
diff --git a/interfaces-config-html.lsp b/interfaces-config-html.lsp
index e3a13e9..f0cc8ef 100644
--- a/interfaces-config-html.lsp
+++ b/interfaces-config-html.lsp
@@ -1,45 +1,39 @@
-<? local view = ... ?>
-
-<h1>Interfaces file</h1>
-
-<h2>New interface</h2>
-<dl>
-<dt>Create new interface</dt>
-<dd>[<a href="create?iface=">Create</a>]</dd>
-</dl>
-
-<h2>Existing interface(s)</h2>
-
-<? for i=0,table.maxn(view.iface) do
- local iface=""
- if i > 0 then do
- j = view.iface[i]
- iface = j.name.value ?>
-<h3><?= j.name.value ?></h3>
-<dl>
-<dt>Method</dt>
-<dd><?= j.method.value ?></dd>
-<? if ( j.method.value == "dhcp" ) then ?>
- <dt>Hostname</dt>
- <dd><?= j.address.value ?></dd>
-<? elseif ( j.address.value ~= "" ) then?>
- <dt>Address</dt>
- <dd><?= j.address.value ?>/<?= j.netmask.value ?></dd>
-<? end ?>
-<? if (j.comment.value ~= "") then ?>
- <dt>Comments</dt>
- <dd><?= j.comment.value ?></dd>
-<? end ?>
-
-<? local val = {value="update", type="submit", option="", errtxt=""}?>
-
-<dt>Modify this interface</dt>
-<dd>[<a href="<?= view.actions.link .. "update?iface=" .. j.name.value ?>">update</a>]
-[<a href="<?= view.actions.link .. "delete?iface=" .. j.name.value ?>">delete</a>]</dd>
-</dl>
-<? end ?>
-<? end ?>
-<? end ?>
-
-
-
+<? local form = ...
+require("viewfunctions")
+?>
+<?
+--[[ DEBUG INFORMATION
+io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>")
+io.write(html.cfe_unpack(form))
+io.write("</span>")
+--]]
+?>
+
+<H1>INTERFACES</H1>
+<H2>Edit interfaces</H2>
+<DL>
+<?
+local myform = form.iface
+for k,v in pairs(myform) do
+ local myform=v
+ if (myform.name.value ~= "") then
+ io.write("<DT><IMG SRC='/static/tango/16x16/devices/network-wired.png' width='16' height='16'> " .. (myform.name.value or '') .. "</DT><DD>")
+ io.write("<TABLE STYLE='margin-bottom:10px'>")
+ local tags = { "edit", "method", "address", "netmask", "gateway", "provider", "hostname", "pre-up", "up", "down", "post-down", "comment", }
+ for k1,v1 in pairs(tags) do
+ if (myform[v1]['value'] ~= "") then
+ io.write("<TR><TD WIDTH='120px' STYLE='font-weight:bold;'>" .. myform[v1]['label'] .. "</TD>")
+ if (myform[v1]['type'] == "link") then
+ io.write("<TD>[ <A HREF='update?iface=" .. myform.name.value .. "'>" .. string.gsub(myform[v1]['value'], "\n", "<BR>") .. "</A> ]</TD></TR>")
+ else
+ io.write("<TD>" .. string.gsub(myform[v1]['value'], "\n", "<BR>") .. "</TD></TR>")
+ end
+ end
+ end
+ io.write("</TABLE>")
+ end
+
+end
+io.write("</DD>")
+?>
+</DL>
diff --git a/interfaces-controller.lua b/interfaces-controller.lua
index 1a33bc2..90f0fe7 100644
--- a/interfaces-controller.lua
+++ b/interfaces-controller.lua
@@ -6,7 +6,7 @@ module (..., package.seeall)
-- We use the self.conf table because it already has prefix,controller,etc
-- The redir code is defined in the application error handler (acf-controller)
local list_redir = function (self)
- self.conf.action = "read"
+ self.conf.action = "config"
self.conf.type = "redir"
error (self.conf)
end
@@ -51,6 +51,18 @@ read = function (self )
return ( { actions = actions, iface = iface, status=status } )
end
+config = function (self )
+ local config = read(self)
+ for k,v in pairs(config.iface) do
+ v['edit']=cfe(
+ {name="edit",
+ label="Edit this record",
+ value="Edit",
+ type="link",
+ })
+ end
+ return ( config )
+end
-- Accepts form info
-- Returns a cfe object (the form)
@@ -82,11 +94,24 @@ update = function(self)
end
end
+ -- If the "cmddelete" button was used, then attempt to delete the interface
+ if self.clientdata.cmddelete then
+ self.conf.action = "delete?iface=" .. tostring(self.clientdata.name)
+ self.conf.type = "redir"
+ error (self.conf)
+ end
+
+ -- Hide the 'name' field
+ data.name.type="hidden"
+
-- If we reach this point in the function, then we are providing a form
-- for the user to edit (either first time in, or validation failed)
-- Add a command button
- data.cmd = cfe({type="action", value="save", label="action"})
+ data.cmd = cfe({type="action", value="Save", name="cmd", label="Save/Apply above settings"})
+
+ -- Add a delete button
+ data.cmddelete = cfe({type="action", value="Delete", name="cmddelete", label="Delete this record"})
return ( cfe ({type="form",
option={ script=ENV["SCRIPT_NAME"],
@@ -94,7 +119,9 @@ update = function(self)
controller = self.conf.controller,
action = "update",
extra = "?iface=" .. data.name.value },
- value = data} ) )
+ value = data,
+ clientdata=clientdata,
+ } ) )
end
@@ -121,7 +148,7 @@ delete = function(self)
-- Otherwise, return a form
local me = {}
- me.iface = cfe({value = self.clientdata.iface })
+ me.iface = cfe({name="iface", type="hidden", value = (self.clientdata.iface or "") })
me.action1 = cfe({name="cmd", type="action", value="delete", label="action"})
me.action2 = cfe({name="cmd", type="action", value="cancel", label="action"})
@@ -131,7 +158,10 @@ delete = function(self)
controller = self.conf.controller,
action = "delete",
extra = "?iface=" .. (self.clientdata.iface or "") },
- value = me} ) )
+ value = me,
+ clientdata=clientdata,
+ iface=iface,
+ } ) )
end
diff --git a/interfaces-delete-html.lsp b/interfaces-delete-html.lsp
index cb11de4..86bc224 100644
--- a/interfaces-delete-html.lsp
+++ b/interfaces-delete-html.lsp
@@ -1,4 +1,5 @@
<? local form = ... ?>
+
<h1>Delete Interface <?= form.value.iface.value ?></h1>
<form action="<?= form.option.script .. "/" .. form.option.prefix ..
@@ -9,6 +10,10 @@
<? local myform = form.value ?>
<p>Are you you sure you want to delete <?= myform.iface.value ?></p>
<center>
+<?
+-- We need to put in a form that holds the interfaces name (it should be hidden).
+io.write(html.form[myform.iface.type](myform.iface))
+?>
<?= html.form[myform.action1.type](myform.action1) ?>
<?= html.form[myform.action2.type](myform.action2) ?>
</center>
diff --git a/interfaces-read-html.lsp b/interfaces-read-html.lsp
index 2ddd5c5..1884e3d 100644
--- a/interfaces-read-html.lsp
+++ b/interfaces-read-html.lsp
@@ -1,4 +1,6 @@
-<? local form = ... ?>
+<? local form = ...
+require("viewfunctions")
+?>
<?
--[[ DEBUG INFORMATION
io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>")
@@ -7,30 +9,6 @@ io.write("</span>")
--]]
?>
-<?
-function displayinfo(myform,tags,viewonly)
- for k,v in pairs(tags) do
- if (myform[v]) and (myform[v]["value"]) then
- local val = myform[v]
- io.write("\t<DT")
- if (#val.errtxt > 0) then
- val.class = "error"
- io.write(" class='error'")
- end
- io.write(">" .. val.label .. "</DT>\n")
- if (viewonly) then
- io.write("\t\t<DD>" .. val.value .. "\n")
- else
- io.write("\t\t<DD>" .. html.form[val.type](val) .. "\n")
- end
- if (val.descr) and (#val.descr > 0) then io.write("\t\t<P CLASS='descr'>" .. string.gsub(val.descr, "\n", "<BR>") .. "</P>\n") end
- if (#val.errtxt > 0) then io.write("\t\t<P CLASS='error'>" .. string.gsub(val.errtxt, "\n", "<BR>") .. "</P>\n") end
- io.write("\t\t</DD>\n")
- end
- end
-end
-?>
-
<H1>SYSTEM INFO</H1>
<DL>
<?
diff --git a/interfaces-update-html.lsp b/interfaces-update-html.lsp
index 228e8e0..5c33872 100644
--- a/interfaces-update-html.lsp
+++ b/interfaces-update-html.lsp
@@ -1,4 +1,6 @@
-<? local form = ... ?>
+<? local form = ...
+require("viewfunctions")
+?>
<?
--[[ DEBUG INFORMATION
io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>")
@@ -7,38 +9,13 @@ io.write("</span>")
--]]
?>
-<?
-function displayinfo(myform,tags,viewonly)
- io.write("<DL>")
- for k,v in pairs(tags) do
- if (myform[v]) and (myform[v]["value"]) then
- local val = myform[v]
- io.write("\t<DT")
- if (#val.errtxt > 0) then
- val.class = "error"
- io.write(" class='error'")
- end
- io.write(">" .. val.label .. "</DT>\n")
- if (viewonly) then
- io.write("\t\t<DD>" .. val.value .. "\n")
- else
- io.write("\t\t<DD>" .. html.form[val.type](val) .. "\n")
- end
- if (val.descr) and (#val.descr > 0) then io.write("\t\t<P CLASS='descr'>" .. string.gsub(val.descr, "\n", "<BR>") .. "</P>\n") end
- if (#val.errtxt > 0) then io.write("\t\t<P CLASS='error'>" .. string.gsub(val.errtxt, "\n", "<BR>") .. "</P>\n") end
- io.write("\t\t</DD>\n")
- end
- end
- io.write("</DL>")
-end
-?>
-
<h1>Update Interface <?= form.value.name.value ?></h1>
<form action="<?= form.option.script .. "/" .. form.option.prefix ..
form.option.controller .. "/" .. form.option.action ..
form.option.extra ?>" method="POST">
+<DL>
<?
-- We redefine the list of tags from the model (iface_tags) because
@@ -50,7 +27,19 @@ local tags = { "comment", "method", "address", "netmask", "gateway",
"hostname", "provider", "pre-up", "up", "down", "post-down", "cmd" }
local myform = form.value
displayinfo(myform,tags)
+-- Add the 'name' filed (but don't show it because it's {type='hidden'}
+io.write(html.form[myform.name.type](myform.name))
+?>
+</DL>
+<H2>Other actions</H2>
+<DL>
+<?
+local tags = { "cmddelete", }
+local myform = form.value
+displayinfo(myform,tags)
?>
+</DL>
+
</form>
diff --git a/interfaces.menu b/interfaces.menu
index 9562ce2..8ef863f 100644
--- a/interfaces.menu
+++ b/interfaces.menu
@@ -1,4 +1,5 @@
# Prefix and controller are already known at this point
# Cat Group Tab Action
-System Interfaces Define read
-System Interfaces Update update
+System Interfaces Status read
+System Interfaces Edit_interfaces config
+System Interfaces Create_New_interface create