From f88ced97064a3a6d88580e59b5d26d7a1079883b Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Sat, 10 Oct 2020 14:55:38 -0400 Subject: [PATCH] app: Add donation links in dropdown menu Signed-off-by: James Valleroy [sunil: Undo a minor isort refactor in searx] [sunil: Change the menu label to 'Donate'] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- plinth/app.py | 6 +++- plinth/modules/backups/__init__.py | 9 +++--- plinth/modules/deluge/__init__.py | 11 +++---- plinth/modules/i2p/__init__.py | 10 +++---- plinth/modules/ikiwiki/__init__.py | 3 +- plinth/modules/letsencrypt/__init__.py | 3 +- plinth/modules/minetest/__init__.py | 10 +++---- plinth/modules/mumble/__init__.py | 10 +++---- plinth/modules/pagekite/__init__.py | 12 ++++---- plinth/modules/privoxy/__init__.py | 9 +++--- plinth/modules/samba/__init__.py | 10 +++---- plinth/modules/searx/__init__.py | 10 +++---- plinth/modules/syncthing/__init__.py | 3 +- plinth/modules/tor/__init__.py | 3 +- plinth/modules/transmission/__init__.py | 12 ++++---- plinth/modules/wireguard/__init__.py | 11 +++---- plinth/templates/toolbar.html | 40 ++++++++++++++++--------- 17 files changed, 98 insertions(+), 74 deletions(-) diff --git a/plinth/app.py b/plinth/app.py index 8636d2ec3..0acfff62e 100644 --- a/plinth/app.py +++ b/plinth/app.py @@ -264,7 +264,7 @@ class Info(FollowerComponent): def __init__(self, app_id, version, is_essential=False, depends=None, name=None, icon=None, icon_filename=None, short_description=None, description=None, manual_page=None, - clients=None): + clients=None, donation_url=None): """Store the basic properties of an app as a component. Each app must contain at least one component of this type to provide @@ -331,6 +331,9 @@ class Info(FollowerComponent): compatible clients on desktop, web and mobile. This is a list of dictionaries who structure is documented in plinth.clients. + 'donation_url' is a link to a webpage that describes how to + donate to the upstream project. + """ self.component_id = app_id + '-info' self.app_id = app_id @@ -344,3 +347,4 @@ class Info(FollowerComponent): self.description = description self.manual_page = manual_page self.clients = clients + self.donation_url = donation_url diff --git a/plinth/modules/backups/__init__.py b/plinth/modules/backups/__init__.py index ed7991451..ea2fc511a 100644 --- a/plinth/modules/backups/__init__.py +++ b/plinth/modules/backups/__init__.py @@ -45,10 +45,11 @@ class BackupsApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - depends=depends, name=_('Backups'), - icon='fa-files-o', description=_description, - manual_page='Backups') + info = app_module.Info( + app_id=self.app_id, version=version, depends=depends, + name=_('Backups'), icon='fa-files-o', description=_description, + manual_page='Backups', + donation_url='https://www.borgbackup.org/support/fund.html') self.add(info) menu_item = menu.Menu('menu-backups', info.name, None, info.icon, diff --git a/plinth/modules/deluge/__init__.py b/plinth/modules/deluge/__init__.py index bb6137161..71dfa3c28 100644 --- a/plinth/modules/deluge/__init__.py +++ b/plinth/modules/deluge/__init__.py @@ -46,11 +46,12 @@ class DelugeApp(app_module.App): 'bit-torrent': _('Download files using BitTorrent applications') } - info = app_module.Info(app_id=self.app_id, version=version, - name=_('Deluge'), icon_filename='deluge', - short_description=_('BitTorrent Web Client'), - description=_description, manual_page='Deluge', - clients=clients) + info = app_module.Info( + app_id=self.app_id, version=version, name=_('Deluge'), + icon_filename='deluge', + short_description=_('BitTorrent Web Client'), + description=_description, manual_page='Deluge', clients=clients, + donation_url='https://www.patreon.com/deluge_cas') self.add(info) menu_item = menu.Menu('menu-deluge', info.name, info.short_description, diff --git a/plinth/modules/i2p/__init__.py b/plinth/modules/i2p/__init__.py index 2b2c045c7..3746fa307 100644 --- a/plinth/modules/i2p/__init__.py +++ b/plinth/modules/i2p/__init__.py @@ -55,11 +55,11 @@ class I2PApp(app_module.App): groups = {'i2p': _('Manage I2P application')} - info = app_module.Info(app_id=self.app_id, version=version, - name=_('I2P'), icon_filename='i2p', - short_description=_('Anonymity Network'), - description=_description, manual_page='I2P', - clients=clients) + info = app_module.Info( + app_id=self.app_id, version=version, name=_('I2P'), + icon_filename='i2p', short_description=_('Anonymity Network'), + description=_description, manual_page='I2P', clients=clients, + donation_url='https://geti2p.net/en/get-involved/donate') self.add(info) menu_item = menu.Menu('menu-i2p', info.name, info.short_description, diff --git a/plinth/modules/ikiwiki/__init__.py b/plinth/modules/ikiwiki/__init__.py index 1d5cfacf8..f0986b428 100644 --- a/plinth/modules/ikiwiki/__init__.py +++ b/plinth/modules/ikiwiki/__init__.py @@ -52,7 +52,8 @@ class IkiwikiApp(app_module.App): name=_('ikiwiki'), icon_filename='ikiwiki', short_description=_('Wiki and Blog'), description=_description, manual_page='Ikiwiki', - clients=clients) + clients=clients, + donation_url='https://ikiwiki.info/tipjar/') self.add(info) menu_item = menu.Menu('menu-ikiwiki', info.name, diff --git a/plinth/modules/letsencrypt/__init__.py b/plinth/modules/letsencrypt/__init__.py index d0ae503b8..5f0507339 100644 --- a/plinth/modules/letsencrypt/__init__.py +++ b/plinth/modules/letsencrypt/__init__.py @@ -65,7 +65,8 @@ class LetsEncryptApp(app_module.App): name=_('Let\'s Encrypt'), icon='fa-lock', short_description=_('Certificates'), description=_description, - manual_page='LetsEncrypt') + manual_page='LetsEncrypt', + donation_url='https://letsencrypt.org/donate/') self.add(info) menu_item = menu.Menu('menu-letsencrypt', info.name, diff --git a/plinth/modules/minetest/__init__.py b/plinth/modules/minetest/__init__.py index 0012e5edd..bada85c28 100644 --- a/plinth/modules/minetest/__init__.py +++ b/plinth/modules/minetest/__init__.py @@ -56,11 +56,11 @@ class MinetestApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - name=_('Minetest'), icon_filename='minetest', - short_description=_('Block Sandbox'), - description=_description, - manual_page='Minetest', clients=clients) + info = app_module.Info( + app_id=self.app_id, version=version, name=_('Minetest'), + icon_filename='minetest', short_description=_('Block Sandbox'), + description=_description, manual_page='Minetest', clients=clients, + donation_url='https://www.minetest.net/get-involved/#donate') self.add(info) menu_item = menu.Menu('menu-minetest', info.name, diff --git a/plinth/modules/mumble/__init__.py b/plinth/modules/mumble/__init__.py index 61fabdaba..14e59fb3b 100644 --- a/plinth/modules/mumble/__init__.py +++ b/plinth/modules/mumble/__init__.py @@ -46,11 +46,11 @@ class MumbleApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - name=_('Mumble'), icon_filename='mumble', - short_description=_('Voice Chat'), - description=_description, manual_page='Mumble', - clients=clients) + info = app_module.Info( + app_id=self.app_id, version=version, name=_('Mumble'), + icon_filename='mumble', short_description=_('Voice Chat'), + description=_description, manual_page='Mumble', clients=clients, + donation_url='https://wiki.mumble.info/wiki/Donate') self.add(info) menu_item = menu.Menu('menu-mumble', info.name, info.short_description, diff --git a/plinth/modules/pagekite/__init__.py b/plinth/modules/pagekite/__init__.py index 3a305ed76..98f22e733 100644 --- a/plinth/modules/pagekite/__init__.py +++ b/plinth/modules/pagekite/__init__.py @@ -60,12 +60,12 @@ class PagekiteApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - depends=depends, name=_('PageKite'), - icon='fa-flag', - short_description=_('Public Visibility'), - description=_description, - manual_page='PageKite') + info = app_module.Info( + app_id=self.app_id, version=version, depends=depends, + name=_('PageKite'), icon='fa-flag', + short_description=_('Public Visibility'), description=_description, + manual_page='PageKite', + donation_url='https://pagekite.net/support/faq/#donate') self.add(info) menu_item = menu.Menu('menu-pagekite', info.name, diff --git a/plinth/modules/privoxy/__init__.py b/plinth/modules/privoxy/__init__.py index 047f5f3f3..8114a711b 100644 --- a/plinth/modules/privoxy/__init__.py +++ b/plinth/modules/privoxy/__init__.py @@ -51,10 +51,11 @@ class PrivoxyApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - name=_('Privoxy'), icon_filename='privoxy', - short_description=_('Web Proxy'), - description=_description, manual_page='Privoxy') + info = app_module.Info( + app_id=self.app_id, version=version, name=_('Privoxy'), + icon_filename='privoxy', short_description=_('Web Proxy'), + description=_description, manual_page='Privoxy', + donation_url='https://www.privoxy.org/faq/general.html#DONATE') self.add(info) menu_item = menu.Menu('menu-privoxy', info.name, diff --git a/plinth/modules/samba/__init__.py b/plinth/modules/samba/__init__.py index bc59a274e..9f1fe5e48 100644 --- a/plinth/modules/samba/__init__.py +++ b/plinth/modules/samba/__init__.py @@ -58,11 +58,11 @@ class SambaApp(app_module.App): groups = {'freedombox-share': _('Access to the private shares')} - info = app_module.Info(app_id=self.app_id, version=version, - name=_('Samba'), icon_filename='samba', - short_description=_('Network File Storage'), - manual_page='Samba', description=_description, - clients=clients) + info = app_module.Info( + app_id=self.app_id, version=version, name=_('Samba'), + icon_filename='samba', short_description=_('Network File Storage'), + manual_page='Samba', description=_description, clients=clients, + donation_url='https://www.samba.org/samba/donations.html') self.add(info) menu_item = menu.Menu('menu-samba', info.name, info.short_description, diff --git a/plinth/modules/searx/__init__.py b/plinth/modules/searx/__init__.py index a1beef45b..40066b941 100644 --- a/plinth/modules/searx/__init__.py +++ b/plinth/modules/searx/__init__.py @@ -44,11 +44,11 @@ class SearxApp(app_module.App): groups = {'web-search': _('Search the web')} - info = app_module.Info(app_id=self.app_id, version=version, - name=_('Searx'), icon_filename='searx', - short_description=_('Web Search'), - description=_description, manual_page='Searx', - clients=clients) + info = app_module.Info( + app_id=self.app_id, version=version, name=_('Searx'), + icon_filename='searx', short_description=_('Web Search'), + description=_description, manual_page='Searx', clients=clients, + donation_url='https://searx.me/static/donate.html') self.add(info) menu_item = menu.Menu('menu-searx', info.name, info.short_description, diff --git a/plinth/modules/syncthing/__init__.py b/plinth/modules/syncthing/__init__.py index c8fdaf2b0..2ce8f4c67 100644 --- a/plinth/modules/syncthing/__init__.py +++ b/plinth/modules/syncthing/__init__.py @@ -59,7 +59,8 @@ class SyncthingApp(app_module.App): name=_('Syncthing'), icon_filename='syncthing', short_description=_('File Synchronization'), description=_description, - manual_page='Syncthing', clients=clients) + manual_page='Syncthing', clients=clients, + donation_url='https://syncthing.net/donations/') self.add(info) menu_item = menu.Menu('menu-syncthing', info.name, diff --git a/plinth/modules/tor/__init__.py b/plinth/modules/tor/__init__.py index b8ae723f5..2fbbdc7d1 100644 --- a/plinth/modules/tor/__init__.py +++ b/plinth/modules/tor/__init__.py @@ -55,7 +55,8 @@ class TorApp(app_module.App): name=_('Tor'), icon_filename='tor', short_description=_('Anonymity Network'), description=_description, manual_page='Tor', - clients=clients) + clients=clients, + donation_url='https://donate.torproject.org/') self.add(info) menu_item = menu.Menu('menu-tor', info.name, info.short_description, diff --git a/plinth/modules/transmission/__init__.py b/plinth/modules/transmission/__init__.py index 055b52bd9..fb6c1385e 100644 --- a/plinth/modules/transmission/__init__.py +++ b/plinth/modules/transmission/__init__.py @@ -47,12 +47,12 @@ class TransmissionApp(app_module.App): groups = { 'bit-torrent': _('Download files using BitTorrent applications') } - info = app_module.Info(app_id=self.app_id, version=version, - name=_('Transmission'), - icon_filename='transmission', - short_description=_('BitTorrent Web Client'), - description=_description, - manual_page='Transmission', clients=clients) + info = app_module.Info( + app_id=self.app_id, version=version, name=_('Transmission'), + icon_filename='transmission', + short_description=_('BitTorrent Web Client'), + description=_description, manual_page='Transmission', + clients=clients, donation_url='https://transmissionbt.com/donate/') self.add(info) menu_item = menu.Menu('menu-transmission', info.name, diff --git a/plinth/modules/wireguard/__init__.py b/plinth/modules/wireguard/__init__.py index 210bd216f..214703ff5 100644 --- a/plinth/modules/wireguard/__init__.py +++ b/plinth/modules/wireguard/__init__.py @@ -46,11 +46,12 @@ class WireguardApp(app_module.App): def __init__(self): """Create components for the app.""" super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - name=_('WireGuard'), icon_filename='wireguard', - short_description=_('Virtual Private Network'), - description=_description, - manual_page='WireGuard', clients=clients) + info = app_module.Info( + app_id=self.app_id, version=version, name=_('WireGuard'), + icon_filename='wireguard', + short_description=_('Virtual Private Network'), + description=_description, manual_page='WireGuard', clients=clients, + donation_url='https://www.wireguard.com/donations/') self.add(info) menu_item = menu.Menu('menu-wireguard', info.name, diff --git a/plinth/templates/toolbar.html b/plinth/templates/toolbar.html index b082e1885..db9cc93b4 100644 --- a/plinth/templates/toolbar.html +++ b/plinth/templates/toolbar.html @@ -9,24 +9,36 @@