mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-05-13 10:30:16 +00:00
fixes to boostrap, new icons, mobile view works
This commit is contained in:
parent
2f5c98dd6f
commit
5685d3f387
@ -10,7 +10,7 @@ access_log_file = os.path.join(data_dir, "access.log")
|
|||||||
users_dir = os.path.join(data_dir, "users")
|
users_dir = os.path.join(data_dir, "users")
|
||||||
|
|
||||||
product_name = "Plinth"
|
product_name = "Plinth"
|
||||||
box_name = "Freedom Plug"
|
box_name = "FreedomBox"
|
||||||
|
|
||||||
port = 8000
|
port = 8000
|
||||||
|
|
||||||
|
|||||||
21
menu.py
21
menu.py
@ -5,11 +5,15 @@ import cfg
|
|||||||
|
|
||||||
class Menu():
|
class Menu():
|
||||||
"""One menu item."""
|
"""One menu item."""
|
||||||
def __init__(self, label="", url="#", order=50):
|
def __init__(self, label="", icon="", url="#", order=50):
|
||||||
"""label is the text that is displayed on the menu.
|
"""label is the text that is displayed on the menu.
|
||||||
|
|
||||||
|
icon is the icon to be displayed next to the label.
|
||||||
|
Choose from the Glyphicon set:
|
||||||
|
http://twitter.github.com/bootstrap/base-css.html#icons
|
||||||
|
|
||||||
url is the url location that will be activated when the menu
|
url is the url location that will be activated when the menu
|
||||||
item is selected
|
item is selected.
|
||||||
|
|
||||||
order is the numerical rank of this item within the menu.
|
order is the numerical rank of this item within the menu.
|
||||||
Lower order items appear closest to the top/left of the menu.
|
Lower order items appear closest to the top/left of the menu.
|
||||||
@ -20,14 +24,15 @@ class Menu():
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
self.label = label
|
self.label = label
|
||||||
self.order = order
|
self.icon = icon
|
||||||
self.url = url
|
self.url = url
|
||||||
|
self.order = order
|
||||||
self.items = []
|
self.items = []
|
||||||
|
|
||||||
def sort_items(self):
|
def sort_items(self):
|
||||||
"""Sort the items in self.items by order."""
|
"""Sort the items in self.items by order."""
|
||||||
self.items = sorted(self.items, key=lambda x: x.order, reverse=False)
|
self.items = sorted(self.items, key=lambda x: x.order, reverse=False)
|
||||||
def add_item(self, label, url, order=50, basehref=True):
|
def add_item(self, label, icon, url, order=50, basehref=True):
|
||||||
"""This method creates a menu item with the parameters, adds
|
"""This method creates a menu item with the parameters, adds
|
||||||
that menu item to this menu, and returns the item.
|
that menu item to this menu, and returns the item.
|
||||||
|
|
||||||
@ -36,7 +41,7 @@ class Menu():
|
|||||||
if basehref and url.startswith("/"):
|
if basehref and url.startswith("/"):
|
||||||
url = cfg.base_href + url
|
url = cfg.base_href + url
|
||||||
|
|
||||||
item = Menu(label=label, url=url, order=order)
|
item = Menu(label=label, icon=icon, url=url, order=order)
|
||||||
self.items.append(item)
|
self.items.append(item)
|
||||||
self.sort_items()
|
self.sort_items()
|
||||||
return item
|
return item
|
||||||
@ -61,7 +66,7 @@ class Menu():
|
|||||||
|
|
||||||
so = []
|
so = []
|
||||||
for item in self.items:
|
for item in self.items:
|
||||||
i = { 'label':item.label, 'url':item.url}
|
i = { 'label':item.label, 'icon':item.icon, 'url':item.url}
|
||||||
if item.active_p():
|
if item.active_p():
|
||||||
i['active']=True
|
i['active']=True
|
||||||
if item.items and render_subs:
|
if item.items and render_subs:
|
||||||
@ -74,7 +79,7 @@ class Menu():
|
|||||||
|
|
||||||
if render_subs is True, we render submenus too"""
|
if render_subs is True, we render submenus too"""
|
||||||
|
|
||||||
return ('<SCRIPT LANGUAGE="JavaScript">\n <!--\n var %s_items=' % name
|
return ('<script type="text/javascript">\n <!--\n var %s_items=' % name
|
||||||
#+ json.dumps(self.serializable(render_subs=render_subs), separators=(',',':')) # compact
|
#+ json.dumps(self.serializable(render_subs=render_subs), separators=(',',':')) # compact
|
||||||
+ "\n"+ json.dumps(self.serializable(render_subs=render_subs), sort_keys=True, indent=4) # pretty print
|
+ "\n"+ json.dumps(self.serializable(render_subs=render_subs), sort_keys=True, indent=4) # pretty print
|
||||||
+ ';\n // -->\n </SCRIPT>')
|
+ ';\n // -->\n </script>')
|
||||||
|
|||||||
@ -7,8 +7,8 @@ class Apps(PagePlugin):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
PagePlugin.__init__(self, *args, **kwargs)
|
PagePlugin.__init__(self, *args, **kwargs)
|
||||||
self.register_page("apps")
|
self.register_page("apps")
|
||||||
self.menu = cfg.main_menu.add_item("Apps", "/apps", 80)
|
self.menu = cfg.main_menu.add_item("Apps", "icon-download-alt", "/apps", 80)
|
||||||
self.menu.add_item("Photo Gallery", "/apps/photos", 35)
|
self.menu.add_item("Photo Gallery", "icon-picture", "/apps/photos", 35)
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
def index(self):
|
def index(self):
|
||||||
|
|||||||
@ -8,12 +8,12 @@ class Help(PagePlugin):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
PagePlugin.__init__(self, *args, **kwargs)
|
PagePlugin.__init__(self, *args, **kwargs)
|
||||||
self.register_page("help")
|
self.register_page("help")
|
||||||
self.menu = cfg.main_menu.add_item(_("Documentation"), "/help", 101)
|
self.menu = cfg.main_menu.add_item(_("Documentation"), "icon-book", "/help", 101)
|
||||||
self.menu.add_item(_("Where to Get Help"), "/help/index", 5)
|
self.menu.add_item(_("Where to Get Help"), "icon-search", "/help/index", 5)
|
||||||
self.menu.add_item(_("Developer's Manual"), "/help/view/plinth", 10)
|
self.menu.add_item(_("Developer's Manual"), "icon-info-sign", "/help/view/plinth", 10)
|
||||||
self.menu.add_item(_("FAQ"), "/help/view/faq", 20)
|
self.menu.add_item(_("FAQ"), "icon-question-sign", "/help/view/faq", 20)
|
||||||
self.menu.add_item(_("%s Wiki" % cfg.box_name), "http://wiki.debian.org/FreedomBox", 30)
|
self.menu.add_item(_("%s Wiki" % cfg.box_name), "icon-pencil", "http://wiki.debian.org/FreedomBox", 30)
|
||||||
self.menu.add_item(_("About"), "/help/about", 100)
|
self.menu.add_item(_("About"), "icon-star", "/help/about", 100)
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
def index(self):
|
def index(self):
|
||||||
@ -48,7 +48,7 @@ class Help(PagePlugin):
|
|||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
def about(self):
|
def about(self):
|
||||||
return self.fill_template(title=_("About the %s" % cfg.box_name), main="""
|
return self.fill_template(title=_("About the %s" % cfg.box_name), main="""
|
||||||
<img src="/static/theme/img/freedombox-logo-200px.png" style="float:right;padding:25px;" />
|
<img src="/static/theme/img/freedombox-logo-250px.png" class="main-graphic" />
|
||||||
<p>We live in a world where our use of the network is
|
<p>We live in a world where our use of the network is
|
||||||
mediated by those who often do not have our best
|
mediated by those who often do not have our best
|
||||||
interests at heart. By building software that does not rely on
|
interests at heart. By building software that does not rely on
|
||||||
|
|||||||
@ -9,11 +9,11 @@ class Privacy(PagePlugin):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
PagePlugin.__init__(self, *args, **kwargs)
|
PagePlugin.__init__(self, *args, **kwargs)
|
||||||
self.register_page("privacy")
|
self.register_page("privacy")
|
||||||
self.menu = cfg.main_menu.add_item("Privacy", "/privacy", 12)
|
self.menu = cfg.main_menu.add_item("Privacy", "icon-eye-open", "/privacy", 12)
|
||||||
self.menu.add_item("General Config", "/privacy/config", 10)
|
self.menu.add_item("General Config", "icon-asterisk", "/privacy/config", 10)
|
||||||
self.menu.add_item("Ad Blocking", "/privacy/adblock", 20)
|
self.menu.add_item("Ad Blocking", "icon-ban-circle", "/privacy/adblock", 20)
|
||||||
self.menu.add_item("TOR", "/privacy/TOR", 30)
|
self.menu.add_item("TOR", "icon-eye-close", "/privacy/TOR", 30)
|
||||||
self.menu.add_item("HTTPS Everywhere", "/privacy/https_everywhere", 30)
|
self.menu.add_item("HTTPS Everywhere", "icon-lock", "/privacy/https_everywhere", 30)
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
def index(self):
|
def index(self):
|
||||||
|
|||||||
@ -11,11 +11,11 @@ class router(PagePlugin):
|
|||||||
order = 9 # order of running init in PagePlugins
|
order = 9 # order of running init in PagePlugins
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.register_page("router")
|
self.register_page("router")
|
||||||
self.menu = cfg.main_menu.add_item("Router", "/router", 10)
|
self.menu = cfg.main_menu.add_item("Router", "icon-retweet", "/router", 10)
|
||||||
self.menu.add_item("Wireless", "/router/wireless", 12)
|
self.menu.add_item("Wireless", "icon-signal", "/router/wireless", 12)
|
||||||
self.menu.add_item("Firewall", "/router/firewall", 18)
|
self.menu.add_item("Firewall", "icon-fire", "/router/firewall", 18)
|
||||||
self.menu.add_item("Hotspot and Mesh", "/router/hotspot")
|
self.menu.add_item("Hotspot and Mesh", "icon-map-marker", "/router/hotspot")
|
||||||
self.menu.add_item("Info", "/router/info", 100)
|
self.menu.add_item("Info", "icon-list-alt", "/router/info", 100)
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
def index(self):
|
def index(self):
|
||||||
@ -45,9 +45,9 @@ class router(PagePlugin):
|
|||||||
class setup(PagePlugin):
|
class setup(PagePlugin):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.register_page("router.setup")
|
self.register_page("router.setup")
|
||||||
self.menu = cfg.html_root.router.menu.add_item("General Setup", "/router/setup", 10)
|
self.menu = cfg.html_root.router.menu.add_item("General Setup", "icon-cog", "/router/setup", 10)
|
||||||
self.menu.add_item("Dynamic DNS", "/router/setup/ddns", 20)
|
self.menu.add_item("Dynamic DNS", "icon-flag", "/router/setup/ddns", 20)
|
||||||
self.menu.add_item("MAC Address Clone", "/router/setup/mac_address", 30)
|
self.menu.add_item("MAC Address Clone", "icon-barcode", "/router/setup/mac_address", 30)
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
@require()
|
@require()
|
||||||
|
|||||||
@ -114,7 +114,7 @@ class Santiago(PagePlugin):
|
|||||||
class santiago(PagePlugin):
|
class santiago(PagePlugin):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
PagePlugin.__init__(self, *args, **kwargs)
|
PagePlugin.__init__(self, *args, **kwargs)
|
||||||
self.menu = cfg.html_root.privacy.menu.add_item("Santiago", "/privacy/santiago", 10)
|
self.menu = cfg.html_root.privacy.menu.add_item("Santiago", "icon-leaf", "/privacy/santiago", 10)
|
||||||
self.register_page("privacy.santiago")
|
self.register_page("privacy.santiago")
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
|
|||||||
@ -8,8 +8,8 @@ class Services(PagePlugin):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
PagePlugin.__init__(self, *args, **kwargs)
|
PagePlugin.__init__(self, *args, **kwargs)
|
||||||
self.register_page("services")
|
self.register_page("services")
|
||||||
self.menu = cfg.main_menu.add_item("Services", "/services", 90)
|
self.menu = cfg.main_menu.add_item("Services", "icon-list", "/services", 90)
|
||||||
self.menu.add_item("Open ID", "/services/openid", 35)
|
self.menu.add_item("Open ID", "icon-user", "/services/openid", 35)
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
def index(self):
|
def index(self):
|
||||||
|
|||||||
@ -7,7 +7,7 @@ class FileExplorer(PagePlugin):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
PagePlugin.__init__(self, *args, **kwargs)
|
PagePlugin.__init__(self, *args, **kwargs)
|
||||||
self.register_page("sharing.explorer")
|
self.register_page("sharing.explorer")
|
||||||
cfg.html_root.sharing.menu.add_item("File Explorer", "/sharing/explorer", 30)
|
cfg.html_root.sharing.menu.add_item("File Explorer", "icon-folder-open", "/sharing/explorer", 30)
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
@require()
|
@require()
|
||||||
|
|||||||
@ -10,8 +10,8 @@ class Sharing(PagePlugin):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
PagePlugin.__init__(self, *args, **kwargs)
|
PagePlugin.__init__(self, *args, **kwargs)
|
||||||
self.register_page("sharing")
|
self.register_page("sharing")
|
||||||
self.menu = cfg.main_menu.add_item("Sharing", "/sharing", 35)
|
self.menu = cfg.main_menu.add_item("Sharing", "icon-share-alt", "/sharing", 35)
|
||||||
self.menu.add_item("File Server", "/sharing/files", 10)
|
self.menu.add_item("File Server", "icon-inbox", "/sharing/files", 10)
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
def index(self):
|
def index(self):
|
||||||
@ -37,7 +37,7 @@ class PrinterSharing(PagePlugin):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
PagePlugin.__init__(self, *args, **kwargs)
|
PagePlugin.__init__(self, *args, **kwargs)
|
||||||
self.register_page("sharing.printer")
|
self.register_page("sharing.printer")
|
||||||
cfg.html_root.sharing.menu.add_item("Printer Sharing", "/sharing/printer", 35)
|
cfg.html_root.sharing.menu.add_item("Printer Sharing", "icon-print", "/sharing/printer", 35)
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
@require()
|
@require()
|
||||||
|
|||||||
@ -18,10 +18,10 @@ class Sys(PagePlugin):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
PagePlugin.__init__(self, *args, **kwargs)
|
PagePlugin.__init__(self, *args, **kwargs)
|
||||||
self.register_page("sys")
|
self.register_page("sys")
|
||||||
self.menu = cfg.main_menu.add_item(_("System"), "/sys", 100)
|
self.menu = cfg.main_menu.add_item(_("System"), "icon-cog", "/sys", 100)
|
||||||
self.menu.add_item(_("Configure"), "/sys/config", 10)
|
self.menu.add_item(_("Configure"), "icon-cog", "/sys/config", 10)
|
||||||
self.menu.add_item(_("Package Manager"), "/sys/packages", 20)
|
self.menu.add_item(_("Package Manager"), "icon-gift", "/sys/packages", 20)
|
||||||
self.menu.add_item(_("Users and Groups"), "/sys/users", 15)
|
self.menu.add_item(_("Users and Groups"), "icon-user", "/sys/users", 15)
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
def index(self):
|
def index(self):
|
||||||
|
|||||||
@ -40,7 +40,7 @@ def error_page_500(status, message, traceback, version):
|
|||||||
cfg.log.error("500 Internal Server Error. Trackback is above.")
|
cfg.log.error("500 Internal Server Error. Trackback is above.")
|
||||||
more="""<p>This is an internal error and not something you caused
|
more="""<p>This is an internal error and not something you caused
|
||||||
or can fix. Please report the error on the <a
|
or can fix. Please report the error on the <a
|
||||||
href="https://github.com/jvasile/Plinth/issues">bug tracker</a> so
|
href="https://github.com/seandiggity/Plinth/issues">bug tracker</a> so
|
||||||
we can fix it.</p>"""
|
we can fix it.</p>"""
|
||||||
return error_page(status, message, "<p>%s</p><pre>%s</pre>" % (more, "\n".join(traceback.split("\n"))))
|
return error_page(status, message, "<p>%s</p><pre>%s</pre>" % (more, "\n".join(traceback.split("\n"))))
|
||||||
|
|
||||||
|
|||||||
@ -45,14 +45,22 @@
|
|||||||
<link rel="apple-touch-icon" sizes="72x72" href="$basehref/static/theme/img/apple-touch-icon-72px-precomposed.png" />
|
<link rel="apple-touch-icon" sizes="72x72" href="$basehref/static/theme/img/apple-touch-icon-72px-precomposed.png" />
|
||||||
<link rel="apple-touch-icon" sizes="114x114" href="$basehref/static/theme/img/apple-touch-icon-114px-precomposed.png" />
|
<link rel="apple-touch-icon" sizes="114x114" href="$basehref/static/theme/img/apple-touch-icon-114px-precomposed.png" />
|
||||||
|
|
||||||
<!-- CSS from previous template, not sure what to keep yet -->
|
<!-- Bootstrap base CSS -->
|
||||||
$css
|
|
||||||
<!-- Bootstrap CSS -->
|
|
||||||
<link rel="stylesheet" href="$basehref/static/theme/css/bootstrap.css" />
|
<link rel="stylesheet" href="$basehref/static/theme/css/bootstrap.css" />
|
||||||
|
<style type="text/css">
|
||||||
|
/* custom styles, load before bootstrap responsive styles */
|
||||||
|
body {
|
||||||
|
padding-top:60px;
|
||||||
|
padding-bottom:40px;
|
||||||
|
}
|
||||||
|
.sidebar-nav {
|
||||||
|
padding: 9px 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<!-- Bootstrap responsive CSS -->
|
||||||
<link rel="stylesheet" href="$basehref/static/theme/css/bootstrap-responsive.css" />
|
<link rel="stylesheet" href="$basehref/static/theme/css/bootstrap-responsive.css" />
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
<style type="text/css">
|
/* custom styles, load after all bootstrap styles */
|
||||||
/* custom styles */
|
|
||||||
.super-hero {
|
.super-hero {
|
||||||
margin-top:25px;
|
margin-top:25px;
|
||||||
}
|
}
|
||||||
@ -63,31 +71,28 @@
|
|||||||
.brand {
|
.brand {
|
||||||
padding-top:8px;
|
padding-top:8px;
|
||||||
}
|
}
|
||||||
.icon-top {
|
|
||||||
margin:0 5px 0 8px;
|
|
||||||
}
|
|
||||||
.icon-top-right {
|
|
||||||
margin:0 5px 0 10px;
|
|
||||||
}
|
|
||||||
.white {
|
.white {
|
||||||
color:#fff;
|
color:#fff;
|
||||||
}
|
}
|
||||||
.nav-top-right {
|
.error-large {
|
||||||
color:#999;
|
font-size:1.2em;
|
||||||
|
padding:10px;
|
||||||
}
|
}
|
||||||
.nav-top-right a:link {
|
.main-graphic {
|
||||||
color:#999;
|
float:right;
|
||||||
text-decoration:none;
|
padding:25px;
|
||||||
}
|
}
|
||||||
.nav-top-right a:hover {
|
.nav-icon {
|
||||||
color:#fff;
|
margin-right:8px;
|
||||||
text-decoration:none;
|
|
||||||
}
|
}
|
||||||
.nav-top-right a:active {
|
.sidenav-icon {
|
||||||
color:#fff;
|
margin-right:8px;
|
||||||
text-decoration:none;
|
padding-right:5px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
<!-- CSS from previous Plinth template, not sure what to keep yet -->
|
||||||
|
$css
|
||||||
|
<!-- End Plinth CSS -->
|
||||||
<!-- JS from previous Plinth template, not sure what to keep yet -->
|
<!-- JS from previous Plinth template, not sure what to keep yet -->
|
||||||
<script type="text/javascript" src="$basehref/static/theme/js/menu.js"></script>
|
<script type="text/javascript" src="$basehref/static/theme/js/menu.js"></script>
|
||||||
<script type="text/javascript" src="$basehref/static/theme/js/plinth.js"></script>
|
<script type="text/javascript" src="$basehref/static/theme/js/plinth.js"></script>
|
||||||
@ -112,7 +117,7 @@
|
|||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
</a>
|
</a>
|
||||||
<a href="$basehref/" class="logo-top"><img src="$basehref/static/theme/img/freedombox-logo-32px.png" alt="FreedomBox" /></a><a class="brand" href="$basehref/">FreedomBox</a>
|
<a href="$basehref/" class="logo-top"><img src="$basehref/static/theme/img/freedombox-logo-32px.png" alt="FreedomBox" /></a><a class="brand" href="$basehref/">FreedomBox Dashboard</a>
|
||||||
<div class="nav-collapse">
|
<div class="nav-collapse">
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
<!--
|
<!--
|
||||||
@ -120,9 +125,9 @@
|
|||||||
// -->
|
// -->
|
||||||
</script>
|
</script>
|
||||||
#if $username
|
#if $username
|
||||||
<p class="navbar-text pull-right"><i class="icon-user icon-white icon-top-right"></i>Logged in as <a href="$username">$username</a>. <a href="$basehref/auth/logout" title="Log out">Log out</a>.</p>
|
<p class="navbar-text pull-right"><i class="icon-user icon-white nav-icon"></i>Logged in as <a href="$username">$username</a>. <a href="$basehref/auth/logout" title="Log out">Log out</a>.</p>
|
||||||
#else
|
#else
|
||||||
<p class="navbar-text pull-right">Not logged in. <i class="icon-user icon-white icon-top-right"></i><a href="$basehref/auth/login" title="Log in">Log in</a>.</p>
|
<p class="navbar-text pull-right">Not logged in. <i class="icon-user icon-white nav-icon"></i><a href="$basehref/auth/login" title="Log in">Log in</a>.</p>
|
||||||
#end if
|
#end if
|
||||||
</div><!--/.nav-collapse -->
|
</div><!--/.nav-collapse -->
|
||||||
</div>
|
</div>
|
||||||
@ -130,7 +135,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row-fluid super-hero">
|
<div class="row-fluid">
|
||||||
<div class="span3">
|
<div class="span3">
|
||||||
<div class="well sidebar-nav">
|
<div class="well sidebar-nav">
|
||||||
#block nav_block
|
#block nav_block
|
||||||
@ -152,6 +157,7 @@
|
|||||||
$main
|
$main
|
||||||
#end block main_block
|
#end block main_block
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span8 alert alert-info">
|
<div class="span8 alert alert-info">
|
||||||
#block sidebar_right_block
|
#block sidebar_right_block
|
||||||
@ -191,22 +197,22 @@
|
|||||||
<script type="text/javascript" src="$basehref/static/theme/js/libs/modernizr-2.5.3-respond-1.1.0.min.js"></script>
|
<script type="text/javascript" src="$basehref/static/theme/js/libs/modernizr-2.5.3-respond-1.1.0.min.js"></script>
|
||||||
<!-- Local copy of jQuery -->
|
<!-- Local copy of jQuery -->
|
||||||
<script type="text/javascript" src="$basehref/static/theme/js/libs/jquery-1.7.1.min.js"></script>
|
<script type="text/javascript" src="$basehref/static/theme/js/libs/jquery-1.7.1.min.js"></script>
|
||||||
<!-- Bootstrap JS, commented out until we know what we need -->
|
<!-- Bootstrap JS, most files commented out until we know what we need -->
|
||||||
<!--<script type="text/javascript" src="js/bootstrap/bootstrap-transition.js"></script>-->
|
<!--<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/bootstrap.js"></script>-->
|
||||||
<!--<script type="text/javascript" src="js/bootstrap/bootstrap-alert.js"></script>-->
|
<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/bootstrap-min.js"></script>
|
||||||
<!--<script type="text/javascript" src="js/bootstrap/bootstrap-modal.js"></script>-->
|
<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/button.js"></script>
|
||||||
<!--<script type="text/javascript" src="js/bootstrap/bootstrap-dropdown.js"></script>-->
|
<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/dropdown.js"></script>
|
||||||
<!--<script type="text/javascript" src="js/bootstrap/bootstrap-scrollspy.js"></script>-->
|
<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/collapse.js"></script>
|
||||||
<!--<script type="text/javascript" src="js/bootstrap/bootstrap-tab.js"></script>-->
|
<!--<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/transition.js"></script>-->
|
||||||
<!--<script type="text/javascript" src="js/bootstrap/bootstrap-tooltip.js"></script>-->
|
<!--<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/alert.js"></script>-->
|
||||||
<!--<script type="text/javascript" src="js/bootstrap/bootstrap-popover.js"></script>-->
|
<!--<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/modal.js"></script>-->
|
||||||
<!--<script type="text/javascript" src="js/bootstrap/bootstrap-button.js"></script>-->
|
<!--<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/scrollspy.js"></script>-->
|
||||||
<!--<script type="text/javascript" src="js/bootstrap/bootstrap-collapse.js"></script>-->
|
<!--<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/tab.js"></script>-->
|
||||||
<!--<script type="text/javascript" src="js/bootstrap/bootstrap-carousel.js"></script>-->
|
<!--<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/tooltip.js"></script>-->
|
||||||
<!--<script type="text/javascript" src="js/bootstrap/bootstrap-typeahead.js"></script>-->
|
<!--<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/popover.js"></script>-->
|
||||||
|
<!--<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/carousel.js"></script>-->
|
||||||
|
<!--<script type="text/javascript" src="$basehref/static/theme/js/libs/bootstrap/typeahead.js"></script>-->
|
||||||
<!-- JS plugins -->
|
<!-- JS plugins -->
|
||||||
<script type="text/javascript" src="$basehref/static/theme/js/plugins.js"></script>
|
<script type="text/javascript" src="$basehref/static/theme/js/plugins.js"></script>
|
||||||
<!-- Additional JS -->
|
|
||||||
<script type="text/javascript" src="$basehref/static/theme/js/functions.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
#extends templates.two_col
|
#extends templates.two_col
|
||||||
|
|
||||||
#def title_block
|
#def title_block
|
||||||
<span class="label label-important">Error: $title</span>
|
<span class="label label-important error-large">Error: $title</span>
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
#end def
|
#end def
|
||||||
|
|||||||
BIN
themes/default/img/freedombox-logo-250px.png
Normal file
BIN
themes/default/img/freedombox-logo-250px.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
@ -11,12 +11,16 @@ function main_menu(items) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Line break labels
|
// Line break labels
|
||||||
label = i["label"];
|
/*label = i["label"];
|
||||||
if (label.search(" ") != -1) {
|
if (label.search(" ") != -1) {
|
||||||
label = label.replace(" ", "<br />");
|
label = label.replace(" ", "<br />");
|
||||||
} else {
|
} else {
|
||||||
label = " <br />" + label;
|
label = " <br />" + label;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
// Add icon before labels
|
||||||
|
icon = '<i class="' + i["icon"] + ' icon-white nav-icon"></i>';
|
||||||
|
label = icon + i["label"];
|
||||||
|
|
||||||
output = output +'<li' + active + '><a href="' + i["url"] + '"' + active + '>' + label + "</a></li>";
|
output = output +'<li' + active + '><a href="' + i["url"] + '"' + active + '>' + label + "</a></li>";
|
||||||
}
|
}
|
||||||
@ -32,11 +36,20 @@ function render_items(items) {
|
|||||||
// Handle active page
|
// Handle active page
|
||||||
if (i["active"]) {
|
if (i["active"]) {
|
||||||
active = ' class="active"';
|
active = ' class="active"';
|
||||||
|
|
||||||
|
// Add icon before labels
|
||||||
|
icon = '<i class="' + i["icon"] + ' icon-white sidenav-icon"></i>';
|
||||||
|
label = icon + i["label"];
|
||||||
} else {
|
} else {
|
||||||
active = '';
|
active = '';
|
||||||
|
|
||||||
|
// Add icon before labels
|
||||||
|
icon = '<i class="' + i["icon"] + ' sidenav-icon"></i>';
|
||||||
|
label = icon + i["label"];
|
||||||
}
|
}
|
||||||
|
|
||||||
output = output +'<li' + active + '><a href="' + i["url"] + '"' + active + '>' + i['label'] + "</a></li>";
|
output = output +'<li' + active + '><a href="' + i["url"] + '"' + active + '>' + label + "</a></li>";
|
||||||
|
|
||||||
if (i['subs']) {
|
if (i['subs']) {
|
||||||
output += render_items(i['subs']);
|
output += render_items(i['subs']);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,3 +9,26 @@ window.log = function f(){ log.history = log.history || []; log.history.push(arg
|
|||||||
|
|
||||||
// place any jQuery/helper plugins in here, instead of separate, slower script files.
|
// place any jQuery/helper plugins in here, instead of separate, slower script files.
|
||||||
|
|
||||||
|
// remap jQuery to $
|
||||||
|
(function($){})(window.jQuery);
|
||||||
|
|
||||||
|
|
||||||
|
/* trigger when page is ready */
|
||||||
|
$(document).ready(function (){
|
||||||
|
|
||||||
|
// your functions go here
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/* optional triggers
|
||||||
|
|
||||||
|
$(window).load(function() {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$(window).resize(function() {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
*/
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 116 KiB |
4
util.py
4
util.py
@ -79,11 +79,11 @@ def page_template(template='base', **kwargs):
|
|||||||
kwargs['current_url'] = cherrypy.url()
|
kwargs['current_url'] = cherrypy.url()
|
||||||
kwargs['username'] = cherrypy.session.get(cfg.session_key)
|
kwargs['username'] = cherrypy.session.get(cfg.session_key)
|
||||||
|
|
||||||
if not kwargs['nav']: kwargs['nav'] = """ <SCRIPT LANGUAGE="JavaScript">
|
if not kwargs['nav']: kwargs['nav'] = """ <script type="text/javascript">
|
||||||
<!--
|
<!--
|
||||||
side_menu(sub_menu_items);
|
side_menu(sub_menu_items);
|
||||||
// -->
|
// -->
|
||||||
</SCRIPT>"""
|
</script>"""
|
||||||
|
|
||||||
return str(template(searchList=[kwargs]))
|
return str(template(searchList=[kwargs]))
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user