diff --git a/cfg.sample.py b/cfg.sample.py index 2c8a8adf1..799984a86 100644 --- a/cfg.sample.py +++ b/cfg.sample.py @@ -10,7 +10,7 @@ access_log_file = os.path.join(data_dir, "access.log") users_dir = os.path.join(data_dir, "users") product_name = "Plinth" -box_name = "Freedom Plug" +box_name = "FreedomBox" port = 8000 diff --git a/menu.py b/menu.py index 3e682e4b5..79f220537 100644 --- a/menu.py +++ b/menu.py @@ -5,11 +5,15 @@ import cfg class Menu(): """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. + 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 - item is selected + item is selected. order is the numerical rank of this item within the menu. Lower order items appear closest to the top/left of the menu. @@ -20,14 +24,15 @@ class Menu(): """ self.label = label - self.order = order + self.icon = icon self.url = url + self.order = order self.items = [] def sort_items(self): """Sort the items in self.items by order.""" 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 that menu item to this menu, and returns the item. @@ -36,7 +41,7 @@ class Menu(): if basehref and url.startswith("/"): 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.sort_items() return item @@ -61,7 +66,7 @@ class Menu(): so = [] 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(): i['active']=True if item.items and render_subs: @@ -74,7 +79,7 @@ class Menu(): if render_subs is True, we render submenus too""" - return ('') + + ';\n // -->\n ') diff --git a/modules/installed/apps/apps.py b/modules/installed/apps/apps.py index fa22178e3..058c22141 100644 --- a/modules/installed/apps/apps.py +++ b/modules/installed/apps/apps.py @@ -7,8 +7,8 @@ class Apps(PagePlugin): def __init__(self, *args, **kwargs): PagePlugin.__init__(self, *args, **kwargs) self.register_page("apps") - self.menu = cfg.main_menu.add_item("Apps", "/apps", 80) - self.menu.add_item("Photo Gallery", "/apps/photos", 35) + self.menu = cfg.main_menu.add_item("Apps", "icon-download-alt", "/apps", 80) + self.menu.add_item("Photo Gallery", "icon-picture", "/apps/photos", 35) @cherrypy.expose def index(self): diff --git a/modules/installed/help/help.py b/modules/installed/help/help.py index f10b04d3e..049f600d4 100644 --- a/modules/installed/help/help.py +++ b/modules/installed/help/help.py @@ -8,12 +8,12 @@ class Help(PagePlugin): def __init__(self, *args, **kwargs): PagePlugin.__init__(self, *args, **kwargs) self.register_page("help") - self.menu = cfg.main_menu.add_item(_("Documentation"), "/help", 101) - self.menu.add_item(_("Where to Get Help"), "/help/index", 5) - self.menu.add_item(_("Developer's Manual"), "/help/view/plinth", 10) - self.menu.add_item(_("FAQ"), "/help/view/faq", 20) - self.menu.add_item(_("%s Wiki" % cfg.box_name), "http://wiki.debian.org/FreedomBox", 30) - self.menu.add_item(_("About"), "/help/about", 100) + self.menu = cfg.main_menu.add_item(_("Documentation"), "icon-book", "/help", 101) + self.menu.add_item(_("Where to Get Help"), "icon-search", "/help/index", 5) + self.menu.add_item(_("Developer's Manual"), "icon-info-sign", "/help/view/plinth", 10) + self.menu.add_item(_("FAQ"), "icon-question-sign", "/help/view/faq", 20) + self.menu.add_item(_("%s Wiki" % cfg.box_name), "icon-pencil", "http://wiki.debian.org/FreedomBox", 30) + self.menu.add_item(_("About"), "icon-star", "/help/about", 100) @cherrypy.expose def index(self): @@ -48,7 +48,7 @@ class Help(PagePlugin): @cherrypy.expose def about(self): return self.fill_template(title=_("About the %s" % cfg.box_name), main=""" - +

We live in a world where our use of the network is mediated by those who often do not have our best interests at heart. By building software that does not rely on diff --git a/modules/installed/privacy/privacy.py b/modules/installed/privacy/privacy.py index a0eeffab2..12517e370 100644 --- a/modules/installed/privacy/privacy.py +++ b/modules/installed/privacy/privacy.py @@ -9,11 +9,11 @@ class Privacy(PagePlugin): def __init__(self, *args, **kwargs): PagePlugin.__init__(self, *args, **kwargs) self.register_page("privacy") - self.menu = cfg.main_menu.add_item("Privacy", "/privacy", 12) - self.menu.add_item("General Config", "/privacy/config", 10) - self.menu.add_item("Ad Blocking", "/privacy/adblock", 20) - self.menu.add_item("TOR", "/privacy/TOR", 30) - self.menu.add_item("HTTPS Everywhere", "/privacy/https_everywhere", 30) + self.menu = cfg.main_menu.add_item("Privacy", "icon-eye-open", "/privacy", 12) + self.menu.add_item("General Config", "icon-asterisk", "/privacy/config", 10) + self.menu.add_item("Ad Blocking", "icon-ban-circle", "/privacy/adblock", 20) + self.menu.add_item("TOR", "icon-eye-close", "/privacy/TOR", 30) + self.menu.add_item("HTTPS Everywhere", "icon-lock", "/privacy/https_everywhere", 30) @cherrypy.expose def index(self): diff --git a/modules/installed/router/router.py b/modules/installed/router/router.py index 91b586650..6c21fea76 100644 --- a/modules/installed/router/router.py +++ b/modules/installed/router/router.py @@ -11,11 +11,11 @@ class router(PagePlugin): order = 9 # order of running init in PagePlugins def __init__(self, *args, **kwargs): self.register_page("router") - self.menu = cfg.main_menu.add_item("Router", "/router", 10) - self.menu.add_item("Wireless", "/router/wireless", 12) - self.menu.add_item("Firewall", "/router/firewall", 18) - self.menu.add_item("Hotspot and Mesh", "/router/hotspot") - self.menu.add_item("Info", "/router/info", 100) + self.menu = cfg.main_menu.add_item("Router", "icon-retweet", "/router", 10) + self.menu.add_item("Wireless", "icon-signal", "/router/wireless", 12) + self.menu.add_item("Firewall", "icon-fire", "/router/firewall", 18) + self.menu.add_item("Hotspot and Mesh", "icon-map-marker", "/router/hotspot") + self.menu.add_item("Info", "icon-list-alt", "/router/info", 100) @cherrypy.expose def index(self): @@ -45,9 +45,9 @@ class router(PagePlugin): class setup(PagePlugin): def __init__(self, *args, **kwargs): self.register_page("router.setup") - self.menu = cfg.html_root.router.menu.add_item("General Setup", "/router/setup", 10) - self.menu.add_item("Dynamic DNS", "/router/setup/ddns", 20) - self.menu.add_item("MAC Address Clone", "/router/setup/mac_address", 30) + self.menu = cfg.html_root.router.menu.add_item("General Setup", "icon-cog", "/router/setup", 10) + self.menu.add_item("Dynamic DNS", "icon-flag", "/router/setup/ddns", 20) + self.menu.add_item("MAC Address Clone", "icon-barcode", "/router/setup/mac_address", 30) @cherrypy.expose @require() diff --git a/modules/installed/santiago/santiago.py b/modules/installed/santiago/santiago.py index 38e651206..7cf11e538 100644 --- a/modules/installed/santiago/santiago.py +++ b/modules/installed/santiago/santiago.py @@ -114,7 +114,7 @@ class Santiago(PagePlugin): class santiago(PagePlugin): def __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") @cherrypy.expose diff --git a/modules/installed/services/services.py b/modules/installed/services/services.py index 5ad7feb40..5a7427c2c 100644 --- a/modules/installed/services/services.py +++ b/modules/installed/services/services.py @@ -8,8 +8,8 @@ class Services(PagePlugin): def __init__(self, *args, **kwargs): PagePlugin.__init__(self, *args, **kwargs) self.register_page("services") - self.menu = cfg.main_menu.add_item("Services", "/services", 90) - self.menu.add_item("Open ID", "/services/openid", 35) + self.menu = cfg.main_menu.add_item("Services", "icon-list", "/services", 90) + self.menu.add_item("Open ID", "icon-user", "/services/openid", 35) @cherrypy.expose def index(self): diff --git a/modules/installed/sharing/file_explorer.py b/modules/installed/sharing/file_explorer.py index 1e7ce6f38..ed23b5053 100644 --- a/modules/installed/sharing/file_explorer.py +++ b/modules/installed/sharing/file_explorer.py @@ -7,7 +7,7 @@ class FileExplorer(PagePlugin): def __init__(self, *args, **kwargs): PagePlugin.__init__(self, *args, **kwargs) 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 @require() diff --git a/modules/installed/sharing/sharing.py b/modules/installed/sharing/sharing.py index 866b9bc44..7617c577a 100644 --- a/modules/installed/sharing/sharing.py +++ b/modules/installed/sharing/sharing.py @@ -10,8 +10,8 @@ class Sharing(PagePlugin): def __init__(self, *args, **kwargs): PagePlugin.__init__(self, *args, **kwargs) self.register_page("sharing") - self.menu = cfg.main_menu.add_item("Sharing", "/sharing", 35) - self.menu.add_item("File Server", "/sharing/files", 10) + self.menu = cfg.main_menu.add_item("Sharing", "icon-share-alt", "/sharing", 35) + self.menu.add_item("File Server", "icon-inbox", "/sharing/files", 10) @cherrypy.expose def index(self): @@ -37,7 +37,7 @@ class PrinterSharing(PagePlugin): def __init__(self, *args, **kwargs): PagePlugin.__init__(self, *args, **kwargs) 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 @require() diff --git a/modules/installed/system/system.py b/modules/installed/system/system.py index 6f5e32a88..68a7a50ff 100644 --- a/modules/installed/system/system.py +++ b/modules/installed/system/system.py @@ -18,10 +18,10 @@ class Sys(PagePlugin): def __init__(self, *args, **kwargs): PagePlugin.__init__(self, *args, **kwargs) self.register_page("sys") - self.menu = cfg.main_menu.add_item(_("System"), "/sys", 100) - self.menu.add_item(_("Configure"), "/sys/config", 10) - self.menu.add_item(_("Package Manager"), "/sys/packages", 20) - self.menu.add_item(_("Users and Groups"), "/sys/users", 15) + self.menu = cfg.main_menu.add_item(_("System"), "icon-cog", "/sys", 100) + self.menu.add_item(_("Configure"), "icon-cog", "/sys/config", 10) + self.menu.add_item(_("Package Manager"), "icon-gift", "/sys/packages", 20) + self.menu.add_item(_("Users and Groups"), "icon-user", "/sys/users", 15) @cherrypy.expose def index(self): diff --git a/plinth.py b/plinth.py index b912dc09e..2eff29f40 100755 --- a/plinth.py +++ b/plinth.py @@ -40,7 +40,7 @@ def error_page_500(status, message, traceback, version): cfg.log.error("500 Internal Server Error. Trackback is above.") more="""

This is an internal error and not something you caused or can fix. Please report the error on the bug tracker so + href="https://github.com/seandiggity/Plinth/issues">bug tracker so we can fix it.

""" return error_page(status, message, "

%s

%s
" % (more, "\n".join(traceback.split("\n")))) diff --git a/templates/base.tmpl b/templates/base.tmpl index b6a2c236a..5a37f537b 100644 --- a/templates/base.tmpl +++ b/templates/base.tmpl @@ -45,14 +45,22 @@ - - $css - + + + + + $css + @@ -112,7 +117,7 @@ - FreedomBoxFreedomBox + FreedomBoxFreedomBox Dashboard @@ -130,7 +135,7 @@
-
+
+
#block sidebar_right_block @@ -191,22 +197,22 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - diff --git a/templates/err.tmpl b/templates/err.tmpl index dcb62432d..74dc12cc4 100644 --- a/templates/err.tmpl +++ b/templates/err.tmpl @@ -1,7 +1,7 @@ #extends templates.two_col #def title_block -Error: $title +Error: $title

#end def diff --git a/themes/default/img/freedombox-logo-250px.png b/themes/default/img/freedombox-logo-250px.png new file mode 100644 index 000000000..b55d3c795 Binary files /dev/null and b/themes/default/img/freedombox-logo-250px.png differ diff --git a/themes/default/js/menu.js b/themes/default/js/menu.js index eb6b5bb49..8617d42ed 100644 --- a/themes/default/js/menu.js +++ b/themes/default/js/menu.js @@ -11,12 +11,16 @@ function main_menu(items) { } // Line break labels - label = i["label"]; + /*label = i["label"]; if (label.search(" ") != -1) { label = label.replace(" ", "
"); } else { label = " 
" + label; - } + }*/ + + // Add icon before labels + icon = ''; + label = icon + i["label"]; output = output +'' + label + ""; } @@ -32,11 +36,20 @@ function render_items(items) { // Handle active page if (i["active"]) { active = ' class="active"'; + + // Add icon before labels + icon = ''; + label = icon + i["label"]; } else { active = ''; + + // Add icon before labels + icon = ''; + label = icon + i["label"]; } - output = output +'' + i['label'] + ""; + output = output +'' + label + ""; + if (i['subs']) { output += render_items(i['subs']); } diff --git a/themes/default/js/plugins.js b/themes/default/js/plugins.js index b79bf7375..07c4f2d62 100644 --- a/themes/default/js/plugins.js +++ b/themes/default/js/plugins.js @@ -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. +// 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() { + +}); + +*/ diff --git a/themes/default/screenshot.png b/themes/default/screenshot.png index 42c9c5274..5e4c621cd 100644 Binary files a/themes/default/screenshot.png and b/themes/default/screenshot.png differ diff --git a/util.py b/util.py index 98fb18a3d..a2fb61dc6 100644 --- a/util.py +++ b/util.py @@ -79,11 +79,11 @@ def page_template(template='base', **kwargs): kwargs['current_url'] = cherrypy.url() kwargs['username'] = cherrypy.session.get(cfg.session_key) - if not kwargs['nav']: kwargs['nav'] = """ """ + """ return str(template(searchList=[kwargs]))