Moved examples out of source directory
Added a first draft design Cleaned up Makefile Prepared for module development
This commit is contained in:
parent
b827bb905a
commit
93a98dd13b
16 changed files with 213 additions and 40 deletions
17
Makefile
17
Makefile
|
@ -12,16 +12,25 @@ DIRECTORIES = dist/ffluci/model dist/ffluci/controller/public dist/ffluci/contro
|
|||
INFILES = $(CFILES:%=src/%)
|
||||
OUTFILE = ffluci/init.lua
|
||||
|
||||
.PHONY: all dist-compile dist-source examples-compile examples-source dist examples compile source clean
|
||||
|
||||
all: compile
|
||||
|
||||
dist-compile: compile examples
|
||||
dist-source: source examples
|
||||
dist-compile: compile dist
|
||||
dist-source: source dist
|
||||
|
||||
examples:
|
||||
examples-compile: compile examples
|
||||
examples-source: source examples
|
||||
|
||||
|
||||
dist:
|
||||
cp src/ffluci/controller/public/* dist/ffluci/controller/public/
|
||||
cp src/ffluci/controller/admin/* dist/ffluci/controller/admin/
|
||||
cp src/ffluci/i18n/* dist/ffluci/i18n/
|
||||
cp src/ffluci/view/* dist/ffluci/view/ -R
|
||||
|
||||
examples:
|
||||
cp examples/* dist/ -R
|
||||
|
||||
compile:
|
||||
mkdir -p $(DIRECTORIES)
|
||||
|
@ -34,7 +43,5 @@ source:
|
|||
for i in $(CFILES); do cp src/$$i dist/$$i; done
|
||||
for i in $(FILES); do cp src/$$i dist/$$i; done
|
||||
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm dist -rf
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
#!/usr/bin/haserl --shell=luac
|
||||
print("Status: 302 Found")
|
||||
print("Location: /cgi-bin/ffluci\n")
|
||||
print("Location: ffluci\n")
|
||||
|
|
138
contrib/media/cascade.css
Normal file
138
contrib/media/cascade.css
Normal file
|
@ -0,0 +1,138 @@
|
|||
body {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
background-color: #aaaaaa;
|
||||
}
|
||||
|
||||
#header {
|
||||
padding: 0.2em;
|
||||
height: 4.5em;
|
||||
background-color: #262626;
|
||||
}
|
||||
|
||||
#columns {
|
||||
border-left: 10.1em solid #262626;
|
||||
border-right: 10.1em solid #262626;
|
||||
display: block;
|
||||
background-color: white;
|
||||
padding: 0.1em;
|
||||
}
|
||||
|
||||
#columnswrapper {
|
||||
display: block;
|
||||
margin-left: -10em;
|
||||
margin-right: -10em;
|
||||
}
|
||||
|
||||
#content {
|
||||
margin-left: 10em;
|
||||
margin-right: 10em;
|
||||
display: block;
|
||||
position: relative;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.headerlogo {
|
||||
height: 4em;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.headerlogo img {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.headertitle {
|
||||
font-size: 2.4em;
|
||||
color: gray;
|
||||
letter-spacing: 0.5em;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
.separator {
|
||||
padding-left: 0.25em;
|
||||
font-weight: bold;
|
||||
font-size: 0.8em;
|
||||
line-height: 1.4em;
|
||||
}
|
||||
|
||||
.whitetext {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.yellowtext {
|
||||
color: #ffcb05;
|
||||
}
|
||||
|
||||
.magentatext {
|
||||
color: #dc0065;
|
||||
}
|
||||
|
||||
.inheritcolor {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.smalltext {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.yellow {
|
||||
background-color: #ffcb05;
|
||||
}
|
||||
|
||||
.magenta {
|
||||
background-color: #dc0065;
|
||||
}
|
||||
|
||||
.nodeco {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.redhover:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
position: relative;
|
||||
padding: 0.25em;
|
||||
color: gray;
|
||||
width: 9em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.separator a, .sidebar a {
|
||||
color: inherit;
|
||||
text-decoration: inherit;
|
||||
}
|
||||
|
||||
.separator a:hover, .sidebar a:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.sidebar div {
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.sidebar ul {
|
||||
font-size: 0.8em;
|
||||
color: white;
|
||||
list-style-type: none;
|
||||
padding-left: 1em;
|
||||
margin-top: 0%;
|
||||
}
|
||||
|
||||
.left {
|
||||
float: left;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.right {
|
||||
float: right;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.clear {
|
||||
clear: both;
|
||||
}
|
BIN
contrib/media/logo.png
Normal file
BIN
contrib/media/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
|
@ -34,7 +34,9 @@ endef
|
|||
define Package/ffluci/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/lua
|
||||
$(INSTALL_DIR) $(1)/www/cgi-bin
|
||||
$(INSTALL_DIR) $(1)/www/ffluci
|
||||
$(CP) $(PKG_BUILD_DIR)/dist/* $(1)/usr/lib/lua/ -R
|
||||
$(CP) $(PKG_BUILD_DIR)/contrib/media $(1)/www/ffluci/ -R
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/ffluci $(1)/www/cgi-bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/index.cgi $(1)/www/cgi-bin
|
||||
$(CP) -a ./ipkg/ffluci.postinst $(1)/CONTROL/postinst
|
||||
|
|
|
@ -39,7 +39,7 @@ viewdir = ffluci.fs.dirname(ffluci.util.__file__()) .. "view/"
|
|||
-- memory: Always compile, do not save compiled files, ignore precompiled
|
||||
-- always: Same as "memory" but also saves compiled files
|
||||
-- smart: Compile on demand, save compiled files, update precompiled
|
||||
compiler_mode = "smart"
|
||||
compiler_mode = "memory"
|
||||
|
||||
|
||||
-- This applies to compiler modes "always" and "smart"
|
||||
|
@ -186,4 +186,4 @@ function render(name, scope)
|
|||
|
||||
-- Now finally render the thing
|
||||
return view()
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div></div>
|
||||
|
||||
<div class="separator magenta bold">FFLuCI 0.1 - Freifunk Lua Configuration Interface</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,9 +1,56 @@
|
|||
<% require("ffluci.http").htmlheader() %>
|
||||
<html>
|
||||
<%
|
||||
local req = require("ffluci.dispatcher").request
|
||||
local menu = require("ffluci.menu").get()[req.category]
|
||||
require("ffluci.i18n").loadc("default")
|
||||
require("ffluci.http").htmlheader()
|
||||
%><?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>FFLuCI Examples</title>
|
||||
<link rel="stylesheet" type="text/css" href="<%=media%>/cascade.css" />
|
||||
<title>FFLuCI</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>FFLuCI</h1>
|
||||
<%+menu%>
|
||||
<div id="content">
|
||||
<div id="header">
|
||||
<div class="headerlogo left"><img src="<%=media%>/logo.png" alt="Freifunk" /></div>
|
||||
<div class="whitetext smalltext right">
|
||||
OpenWRT Kamikaze<br />
|
||||
Freifunk Firmware 2.0-dev<br />
|
||||
Load average: 1.00 2.00 3.00<br />
|
||||
1.2.3.4 - host1
|
||||
</div>
|
||||
<div>
|
||||
<span class="headertitle">Freifunk Kamikaze</span><br />
|
||||
<span class="whitetext bold"><%:batmanedition Fledermausedition%></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="separator yellow bold">
|
||||
<%:path Pfad%>: <a href="<%=controller .. "/" .. req.category%>"><%=req.category%></a>
|
||||
» <a href="<%=controller .. "/" .. req.category .. "/" .. req.module %>"><%=req.module%></a>
|
||||
» <a href="<%=controller .. "/" .. req.category .. "/" .. req.module .. "/" .. req.action %>"><%=req.action%></a>
|
||||
</div>
|
||||
|
||||
<div id="columns"><div id="columnswrapper">
|
||||
<div class="sidebar left">
|
||||
<% for k,v in pairs(menu) do %>
|
||||
<div<% if v[".contr"] == req.module then %> class="yellowtext"<% end %>><a href="<%=controller.."/"..req.category.."/"..v[".contr"]%>"><%=translate(v[".contr"], v[".descr"])%></a><%
|
||||
if v[".contr"] == req.module then %>
|
||||
<ul><% for key,val in ipairs(v) do %>
|
||||
<li<% if val.action == req.action then %> class="yellowtext"<% end %>><a href="<%=controller.."/"..req.category.."/"..req.module.."/"..val.action%>"><%=translate(val.action, val.descr)%></a></li>
|
||||
<% end %></ul>
|
||||
<% end %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="sidebar right">
|
||||
<div><%:webif Weboberfläche%>
|
||||
<ul>
|
||||
<li<% if "public" == req.category then %> class="yellowtext"<% end %>><a href="<%=controller%>/public"><%:public Public%></a></li>
|
||||
<li<% if "admin" == req.category then %> class="yellowtext"<% end %>><a href="<%=controller%>/admin"><%:admin Admin%></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<% if "admin" == req.category then %>
|
||||
<div>Konfiguration<ul><li>x Änderungen</li><li>Anwenden</li><li>Zurücksetzen</li></ul></div>
|
||||
<% end %>
|
||||
</div>
|
||||
<div id="content">
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
<%
|
||||
local req = require("ffluci.dispatcher").request
|
||||
local menu = require("ffluci.menu").get()[req.category]
|
||||
local menu_module = nil
|
||||
require("ffluci.i18n").loadc("default")
|
||||
%>
|
||||
<div id="menu" style="font-size: 0.8em; padding-bottom: 20px">
|
||||
<div id="menu_categories">
|
||||
<span style="<% if "public" == req.category then write("font-weight: bold") end %>"><a href="<%=controller%>/public"><%:public Public%></a></span>
|
||||
<span style="<% if "admin" == req.category then write("font-weight: bold") end %>"><a href="<%=controller%>/admin"><%:admin Admin%></a></span>
|
||||
</div>
|
||||
<div id="menu_modules">
|
||||
<% for k,v in pairs(menu) do
|
||||
if v[".contr"] == req.module then menu_module = v end %>
|
||||
<span style="<% if v[".contr"] == req.module then write("font-weight: bold") end %>"><a href="<%=controller.."/"..req.category.."/"..v[".contr"]%>"><%=translate(v[".contr"], v[".descr"])%></a></span>
|
||||
<% end %>
|
||||
</div>
|
||||
<% if menu_module then %>
|
||||
<div id="menu_actions">
|
||||
<% for k,v in ipairs(menu_module) do %>
|
||||
<span style="<% if v.action == req.action then write("font-weight: bold") end %>"><a href="<%=controller.."/"..req.category.."/"..req.module.."/"..v.action%>"><%=translate(v.action, v.descr)%></a></span>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
Loading…
Reference in a new issue