diff --git a/plinth/menu.py b/plinth/menu.py index a31b588e5..efbca2a09 100644 --- a/plinth/menu.py +++ b/plinth/menu.py @@ -56,9 +56,9 @@ class Menu(object): raise KeyError('Menu item not found') - 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 sorted_items(self): + """Return menu items in sorted order according to current locale.""" + return sorted(self.items, key=lambda x: (x.order, x.label)) def add_urlname(self, label, icon, urlname, order=50, url_args=None, url_kwargs=None): @@ -77,7 +77,6 @@ class Menu(object): """ item = Menu(label=label, icon=icon, url=url, order=order) self.items.append(item) - self.sort_items() return item def active_item(self, request): diff --git a/plinth/modules/apps/apps.py b/plinth/modules/apps/apps.py index 9d90af549..4450fb2be 100644 --- a/plinth/modules/apps/apps.py +++ b/plinth/modules/apps/apps.py @@ -24,7 +24,7 @@ from plinth import cfg def init(): """Initailize the apps module""" cfg.main_menu.add_urlname(_('Apps'), 'glyphicon-download-alt', - 'apps:index', 80) + 'apps:index') def index(request): diff --git a/plinth/modules/avahi/__init__.py b/plinth/modules/avahi/__init__.py index 1954106fc..a3b019521 100644 --- a/plinth/modules/avahi/__init__.py +++ b/plinth/modules/avahi/__init__.py @@ -55,7 +55,7 @@ service = None def init(): """Intialize the service discovery module.""" menu = cfg.main_menu.get('system:index') - menu.add_urlname(title, 'glyphicon-lamp', 'avahi:index', 950) + menu.add_urlname(title, 'glyphicon-lamp', 'avahi:index') global service # pylint: disable=W0603 service = service_module.Service( diff --git a/plinth/modules/config/config.py b/plinth/modules/config/config.py index 8f75bca2a..94d9b17f8 100644 --- a/plinth/modules/config/config.py +++ b/plinth/modules/config/config.py @@ -148,7 +148,7 @@ def init(): """Initialize the module""" menu = cfg.main_menu.get('system:index') menu.add_urlname(ugettext_lazy('Configure'), 'glyphicon-cog', - 'config:index', 10) + 'config:index') # Register domain with Name Services module. domainname = get_domainname() diff --git a/plinth/modules/datetime/__init__.py b/plinth/modules/datetime/__init__.py index a3d0eb585..363d00fd1 100644 --- a/plinth/modules/datetime/__init__.py +++ b/plinth/modules/datetime/__init__.py @@ -47,7 +47,7 @@ service = None def init(): """Intialize the date/time module.""" menu = cfg.main_menu.get('system:index') - menu.add_urlname(title, 'glyphicon-time', 'datetime:index', 900) + menu.add_urlname(title, 'glyphicon-time', 'datetime:index') global service service = service_module.Service( diff --git a/plinth/modules/deluge/__init__.py b/plinth/modules/deluge/__init__.py index a26533060..ff1c20c43 100644 --- a/plinth/modules/deluge/__init__.py +++ b/plinth/modules/deluge/__init__.py @@ -50,7 +50,7 @@ description = [ def init(): """Initialize the Deluge module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-magnet', 'deluge:index', 200) + menu.add_urlname(title, 'glyphicon-magnet', 'deluge:index') global service service = service_module.Service( diff --git a/plinth/modules/diagnostics/__init__.py b/plinth/modules/diagnostics/__init__.py index 3fe0023be..7970b6218 100644 --- a/plinth/modules/diagnostics/__init__.py +++ b/plinth/modules/diagnostics/__init__.py @@ -42,7 +42,7 @@ depends = ['system'] def init(): """Initialize the module""" menu = cfg.main_menu.get('system:index') - menu.add_urlname(title, 'glyphicon-screenshot', 'diagnostics:index', 30) + menu.add_urlname(title, 'glyphicon-screenshot', 'diagnostics:index') def diagnose(): diff --git a/plinth/modules/dynamicdns/__init__.py b/plinth/modules/dynamicdns/__init__.py index 8c8a11572..3a0b59c3e 100644 --- a/plinth/modules/dynamicdns/__init__.py +++ b/plinth/modules/dynamicdns/__init__.py @@ -52,7 +52,7 @@ description = [ def init(): """Initialize the module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-refresh', 'dynamicdns:index', 500) + menu.add_urlname(title, 'glyphicon-refresh', 'dynamicdns:index') def setup(helper, old_version=None): diff --git a/plinth/modules/firewall/__init__.py b/plinth/modules/firewall/__init__.py index 96cb449a1..acdc18ee2 100644 --- a/plinth/modules/firewall/__init__.py +++ b/plinth/modules/firewall/__init__.py @@ -50,7 +50,7 @@ LOGGER = logging.getLogger(__name__) def init(): """Initailze firewall module""" menu = cfg.main_menu.get('system:index') - menu.add_urlname(title, 'glyphicon-fire', 'firewall:index', 50) + menu.add_urlname(title, 'glyphicon-fire', 'firewall:index') service_enabled.connect(on_service_enabled) diff --git a/plinth/modules/help/help.py b/plinth/modules/help/help.py index 1db714089..98f711925 100644 --- a/plinth/modules/help/help.py +++ b/plinth/modules/help/help.py @@ -31,7 +31,7 @@ from plinth import cfg, __version__ def init(): """Initialize the Help module""" menu = cfg.main_menu.add_urlname(ugettext_lazy('Documentation'), - 'glyphicon-book', 'help:index', 101) + 'glyphicon-book', 'help:index') menu.add_urlname(ugettext_lazy('Where to Get Help'), 'glyphicon-search', 'help:index_explicit', 5) menu.add_urlname(ugettext_lazy('Manual'), 'glyphicon-info-sign', diff --git a/plinth/modules/ikiwiki/__init__.py b/plinth/modules/ikiwiki/__init__.py index 2fc83a577..62319e650 100644 --- a/plinth/modules/ikiwiki/__init__.py +++ b/plinth/modules/ikiwiki/__init__.py @@ -44,7 +44,7 @@ description = [ def init(): """Initialize the ikiwiki module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-edit', 'ikiwiki:index', 1100) + menu.add_urlname(title, 'glyphicon-edit', 'ikiwiki:index') global service service = service_module.Service( diff --git a/plinth/modules/letsencrypt/__init__.py b/plinth/modules/letsencrypt/__init__.py index bfd630c16..0bc71ac82 100644 --- a/plinth/modules/letsencrypt/__init__.py +++ b/plinth/modules/letsencrypt/__init__.py @@ -59,7 +59,7 @@ def init(): """Intialize the module.""" menu = cfg.main_menu.get('system:index') menu.add_urlname(_('Certificates (Let\'s Encrypt)'), - 'glyphicon-lock', 'letsencrypt:index', 20) + 'glyphicon-lock', 'letsencrypt:index') def setup(helper, old_version=None): diff --git a/plinth/modules/minetest/__init__.py b/plinth/modules/minetest/__init__.py index 9c90416e2..1a7e1a66b 100644 --- a/plinth/modules/minetest/__init__.py +++ b/plinth/modules/minetest/__init__.py @@ -51,7 +51,7 @@ description = [ def init(): """Initialize the module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-th-large', 'minetest:index', 325) + menu.add_urlname(title, 'glyphicon-th-large', 'minetest:index') global service service = service_module.Service( diff --git a/plinth/modules/monkeysphere/__init__.py b/plinth/modules/monkeysphere/__init__.py index b3ccb5eb6..40d63c81d 100644 --- a/plinth/modules/monkeysphere/__init__.py +++ b/plinth/modules/monkeysphere/__init__.py @@ -54,7 +54,7 @@ def init(): """Initialize the monkeysphere module.""" menu = cfg.main_menu.get('system:index') menu.add_urlname(_('Monkeysphere'), 'glyphicon-certificate', - 'monkeysphere:index', 970) + 'monkeysphere:index') def setup(helper, old_version=None): diff --git a/plinth/modules/mumble/__init__.py b/plinth/modules/mumble/__init__.py index a54bd72bd..3b3a43528 100644 --- a/plinth/modules/mumble/__init__.py +++ b/plinth/modules/mumble/__init__.py @@ -50,7 +50,7 @@ description = [ def init(): """Intialize the Mumble module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-headphones', 'mumble:index', 900) + menu.add_urlname(title, 'glyphicon-headphones', 'mumble:index') global service service = service_module.Service( diff --git a/plinth/modules/names/__init__.py b/plinth/modules/names/__init__.py index d2c5e9565..e5f7d1f7d 100644 --- a/plinth/modules/names/__init__.py +++ b/plinth/modules/names/__init__.py @@ -48,7 +48,7 @@ logger = logging.getLogger(__name__) def init(): """Initialize the names module.""" menu = cfg.main_menu.get('system:index') - menu.add_urlname(title, 'glyphicon-tag', 'names:index', 19) + menu.add_urlname(title, 'glyphicon-tag', 'names:index') domain_added.connect(on_domain_added) domain_removed.connect(on_domain_removed) diff --git a/plinth/modules/networks/__init__.py b/plinth/modules/networks/__init__.py index d72425a19..edcf47087 100644 --- a/plinth/modules/networks/__init__.py +++ b/plinth/modules/networks/__init__.py @@ -42,7 +42,7 @@ logger = Logger(__name__) def init(): """Initialize the Networks module.""" menu = cfg.main_menu.get('system:index') - menu.add_urlname(title, 'glyphicon-signal', 'networks:index', 18) + menu.add_urlname(title, 'glyphicon-signal', 'networks:index') def setup(helper, old_version=None): diff --git a/plinth/modules/openvpn/__init__.py b/plinth/modules/openvpn/__init__.py index fc1a16f6d..3c87263ec 100644 --- a/plinth/modules/openvpn/__init__.py +++ b/plinth/modules/openvpn/__init__.py @@ -53,7 +53,7 @@ description = [ def init(): """Intialize the OpenVPN module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-lock', 'openvpn:index', 850) + menu.add_urlname(title, 'glyphicon-lock', 'openvpn:index') global service service = service_module.Service( diff --git a/plinth/modules/owncloud/__init__.py b/plinth/modules/owncloud/__init__.py index 2a6ac6eb3..1c3b9483f 100644 --- a/plinth/modules/owncloud/__init__.py +++ b/plinth/modules/owncloud/__init__.py @@ -60,7 +60,7 @@ def init(): return menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-picture', 'owncloud:index', 700) + menu.add_urlname(title, 'glyphicon-picture', 'owncloud:index') global service service = service_module.Service( diff --git a/plinth/modules/pagekite/__init__.py b/plinth/modules/pagekite/__init__.py index c08ce4f44..145a9da90 100644 --- a/plinth/modules/pagekite/__init__.py +++ b/plinth/modules/pagekite/__init__.py @@ -34,7 +34,7 @@ title = _('Public Visibility (PageKite)') def init(): """Intialize the PageKite module""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-flag', 'pagekite:index', 800) + menu.add_urlname(title, 'glyphicon-flag', 'pagekite:index') # Register kite name with Name Services module. utils.update_names_module(initial_registration=True) diff --git a/plinth/modules/power/__init__.py b/plinth/modules/power/__init__.py index 9cf5d0aef..82dd14937 100644 --- a/plinth/modules/power/__init__.py +++ b/plinth/modules/power/__init__.py @@ -39,4 +39,4 @@ description = [ def init(): """Initialize the power module.""" menu = cfg.main_menu.get('system:index') - menu.add_urlname(title, 'glyphicon-off', 'power:index', 1000) + menu.add_urlname(title, 'glyphicon-off', 'power:index') diff --git a/plinth/modules/privoxy/__init__.py b/plinth/modules/privoxy/__init__.py index 8108c4306..ae7a545b8 100644 --- a/plinth/modules/privoxy/__init__.py +++ b/plinth/modules/privoxy/__init__.py @@ -60,7 +60,7 @@ managed_services = ['privoxy'] def init(): """Intialize the module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-cloud-upload', 'privoxy:index', 1000) + menu.add_urlname(title, 'glyphicon-cloud-upload', 'privoxy:index') global service service = service_module.Service( diff --git a/plinth/modules/quassel/__init__.py b/plinth/modules/quassel/__init__.py index a9f737dfe..dfb8c1afe 100644 --- a/plinth/modules/quassel/__init__.py +++ b/plinth/modules/quassel/__init__.py @@ -58,7 +58,7 @@ description = [ def init(): """Initialize the quassel module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-retweet', 'quassel:index', 730) + menu.add_urlname(title, 'glyphicon-retweet', 'quassel:index') global service service = service_module.Service( diff --git a/plinth/modules/radicale/__init__.py b/plinth/modules/radicale/__init__.py index 5e0c1a301..a682dea8d 100644 --- a/plinth/modules/radicale/__init__.py +++ b/plinth/modules/radicale/__init__.py @@ -53,7 +53,7 @@ description = [ def init(): """Initialize the radicale module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-calendar', 'radicale:index', 375) + menu.add_urlname(title, 'glyphicon-calendar', 'radicale:index') global service service = service_module.Service( diff --git a/plinth/modules/repro/__init__.py b/plinth/modules/repro/__init__.py index 85a25b99f..99d8936ba 100644 --- a/plinth/modules/repro/__init__.py +++ b/plinth/modules/repro/__init__.py @@ -62,7 +62,7 @@ managed_services = ['repro'] def init(): """Initialize the repro module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-phone-alt', 'repro:index', 825) + menu.add_urlname(title, 'glyphicon-phone-alt', 'repro:index') global service service = service_module.Service( diff --git a/plinth/modules/restore/__init__.py b/plinth/modules/restore/__init__.py index 0ce855940..a8a8a1408 100644 --- a/plinth/modules/restore/__init__.py +++ b/plinth/modules/restore/__init__.py @@ -53,7 +53,7 @@ managed_services = ['node-restore'] def init(): """Initialize the reStore module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-hdd', 'restore:index', 750) + menu.add_urlname(title, 'glyphicon-hdd', 'restore:index') global service service = service_module.Service( diff --git a/plinth/modules/roundcube/__init__.py b/plinth/modules/roundcube/__init__.py index 6df6c03fb..30ab0a72c 100644 --- a/plinth/modules/roundcube/__init__.py +++ b/plinth/modules/roundcube/__init__.py @@ -61,7 +61,7 @@ service = None def init(): """Intialize the module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-envelope', 'roundcube:index', 600) + menu.add_urlname(title, 'glyphicon-envelope', 'roundcube:index') global service service = service_module.Service( diff --git a/plinth/modules/shaarli/__init__.py b/plinth/modules/shaarli/__init__.py index 6e696bfe8..84d60f89c 100644 --- a/plinth/modules/shaarli/__init__.py +++ b/plinth/modules/shaarli/__init__.py @@ -48,7 +48,7 @@ service = None def init(): """Initialize the module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-bookmark', 'shaarli:index', 350) + menu.add_urlname(title, 'glyphicon-bookmark', 'shaarli:index') global service service = service_module.Service( diff --git a/plinth/modules/system/__init__.py b/plinth/modules/system/__init__.py index da66fe783..9a5d9479a 100644 --- a/plinth/modules/system/__init__.py +++ b/plinth/modules/system/__init__.py @@ -44,4 +44,4 @@ description = [ def init(): """Initialize the system module""" - cfg.main_menu.add_urlname(title, 'glyphicon-cog', 'system:index', 100) + cfg.main_menu.add_urlname(title, 'glyphicon-cog', 'system:index') diff --git a/plinth/modules/tor/__init__.py b/plinth/modules/tor/__init__.py index 08d2e13a2..e94b6deaa 100644 --- a/plinth/modules/tor/__init__.py +++ b/plinth/modules/tor/__init__.py @@ -54,7 +54,7 @@ bridge_service = None def init(): """Initialize the module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-eye-close', 'tor:index', 100) + menu.add_urlname(title, 'glyphicon-eye-close', 'tor:index') global socks_service socks_service = service_module.Service( diff --git a/plinth/modules/transmission/__init__.py b/plinth/modules/transmission/__init__.py index 92f8ecf0b..8ec19d19d 100644 --- a/plinth/modules/transmission/__init__.py +++ b/plinth/modules/transmission/__init__.py @@ -51,7 +51,7 @@ TRANSMISSION_CONFIG = '/etc/transmission-daemon/settings.json' def init(): """Intialize the Transmission module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-save', 'transmission:index', 300) + menu.add_urlname(title, 'glyphicon-save', 'transmission:index') global service service = service_module.Service( diff --git a/plinth/modules/ttrss/__init__.py b/plinth/modules/ttrss/__init__.py index a0f5b992c..92db1ce5f 100644 --- a/plinth/modules/ttrss/__init__.py +++ b/plinth/modules/ttrss/__init__.py @@ -50,7 +50,7 @@ managed_services = ['tt-rss'] def init(): """Intialize the module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-envelope', 'ttrss:index', 780) + menu.add_urlname(title, 'glyphicon-envelope', 'ttrss:index') global service service = service_module.Service( diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py index afecac836..c9e6ba601 100644 --- a/plinth/modules/upgrades/__init__.py +++ b/plinth/modules/upgrades/__init__.py @@ -46,7 +46,7 @@ service = None def init(): """Initialize the module.""" menu = cfg.main_menu.get('system:index') - menu.add_urlname(title, 'glyphicon-refresh', 'upgrades:index', 21) + menu.add_urlname(title, 'glyphicon-refresh', 'upgrades:index') global service service = service_module.Service( 'auto-upgrades', title, is_external=False, is_enabled=is_enabled, diff --git a/plinth/modules/users/__init__.py b/plinth/modules/users/__init__.py index 36dede523..8d4bf759a 100644 --- a/plinth/modules/users/__init__.py +++ b/plinth/modules/users/__init__.py @@ -38,7 +38,7 @@ title = _('Users and Groups') def init(): """Intialize the user module.""" menu = cfg.main_menu.get('system:index') - menu.add_urlname(title, 'glyphicon-user', 'users:index', 15) + menu.add_urlname(title, 'glyphicon-user', 'users:index') def setup(helper, old_version=None): diff --git a/plinth/modules/xmpp/__init__.py b/plinth/modules/xmpp/__init__.py index 2503a9a6f..793410ad7 100644 --- a/plinth/modules/xmpp/__init__.py +++ b/plinth/modules/xmpp/__init__.py @@ -58,7 +58,7 @@ managed_services = ['ejabberd'] def init(): """Initialize the XMPP module""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(title, 'glyphicon-comment', 'xmpp:index', 400) + menu.add_urlname(title, 'glyphicon-comment', 'xmpp:index') global service service = service_module.Service( diff --git a/plinth/templates/submenu.html b/plinth/templates/submenu.html index 67bc37742..edf7368cc 100644 --- a/plinth/templates/submenu.html +++ b/plinth/templates/submenu.html @@ -20,17 +20,16 @@ {% load i18n %}