diff options
author | Mika Havela <mika.havela@gmail.com> | 2008-04-09 13:21:08 +0000 |
---|---|---|
committer | Mika Havela <mika.havela@gmail.com> | 2008-04-09 13:21:08 +0000 |
commit | 10d4d3ab01a7ab59b8c07c8acb75c1b3ffd9c754 (patch) | |
tree | 95b1dada20bfa24eb983fe7df6ee3ccc3e5e81cf | |
parent | b4bb80d491873de680d6b5bee58afeb2e0333edb (diff) | |
download | acf-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.lsp | 84 | ||||
-rw-r--r-- | interfaces-controller.lua | 40 | ||||
-rw-r--r-- | interfaces-delete-html.lsp | 5 | ||||
-rw-r--r-- | interfaces-read-html.lsp | 28 | ||||
-rw-r--r-- | interfaces-update-html.lsp | 43 | ||||
-rw-r--r-- | interfaces.menu | 5 |
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 |