From d403782b77be6d69f4e8a3c239f06b845bbf8a9d Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 27 Oct 2017 14:09:11 +0530 Subject: [PATCH] Add client information for Matrix Synapse and Syncthing - Add logos for desktop operating systems Signed-off-by: Joseph Nuthalapati Reviewed-by: James Valleroy --- LICENSES | 3 + data/etc/plinth/modules-enabled/api | 1 + plinth/modules/api/urls.py | 9 +- plinth/modules/api/views.py | 65 ++++++++------ plinth/modules/matrixsynapse/__init__.py | 15 ---- plinth/modules/matrixsynapse/manifest.py | 29 +++--- plinth/modules/syncthing/__init__.py | 12 --- plinth/modules/syncthing/manifest.py | 22 ++--- plinth/modules/transmission/__init__.py | 11 +++ plinth/templates/clients.html | 83 +++++++++++------- static/themes/default/css/plinth.css | 10 ++- static/themes/default/img/apple.png | Bin 0 -> 34733 bytes static/themes/default/img/debian.png | Bin 0 -> 4060 bytes .../default/img/{f-Droid.png => f-droid.png} | Bin static/themes/default/img/windows.png | Bin 0 -> 8544 bytes 15 files changed, 134 insertions(+), 126 deletions(-) create mode 100644 data/etc/plinth/modules-enabled/api create mode 100644 static/themes/default/img/apple.png create mode 100644 static/themes/default/img/debian.png rename static/themes/default/img/{f-Droid.png => f-droid.png} (100%) create mode 100644 static/themes/default/img/windows.png diff --git a/LICENSES b/LICENSES index dc86c91c7..9888fd05b 100644 --- a/LICENSES +++ b/LICENSES @@ -65,3 +65,6 @@ otherwise. - static/themes/default/icons/ttrss.png :: [[https://tt-rss.org/gitlab/fox/tt-rss][GPL]] - static/themes/default/img/f-droid.png :: [[https://commons.wikimedia.org/wiki/File%3AGet_it_on_F-Droid_(material_design).svg][GPLv3]] - static/themes/default/img/google-play.png :: [[https://upload.wikimedia.org/wikipedia/commons/c/cd/Get_it_on_Google_play.svg][Public Domain]] +- static/themes/default/img/debian.png :: [[https://commons.wikimedia.org/wiki/File:Debian_logo-black.png][GPL3+/CC-BY-SA]] +- static/themes/default/img/apple.png :: [[https://thenounproject.com/icon/1203053/download/color/000000/png][CC BY 3.0 US]] +- static/themes/default/img/windows.png :: [[https://thenounproject.com/icon/1206946/download/color/000000/png][CC BY 3.0 US]] diff --git a/data/etc/plinth/modules-enabled/api b/data/etc/plinth/modules-enabled/api new file mode 100644 index 000000000..9bf760b6d --- /dev/null +++ b/data/etc/plinth/modules-enabled/api @@ -0,0 +1 @@ +plinth.modules.api \ No newline at end of file diff --git a/plinth/modules/api/urls.py b/plinth/modules/api/urls.py index d1bfbb0f8..f070276d3 100644 --- a/plinth/modules/api/urls.py +++ b/plinth/modules/api/urls.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ URLs for the plinth api for android app. """ @@ -22,9 +21,9 @@ URLs for the plinth api for android app. from django.conf.urls import url from stronghold.decorators import public -from plinth.modules.api.views import get_apps, get_access_info +from plinth.modules.api.views import get_access_info, get_services urlpatterns = [ - url(r'^api/(?P[0-9]+)/services/?$', public(get_apps)), - url(r'^api/(?P[0-9]+)/access-info/?$', public(get_access_info)) -] \ No newline at end of file + url(r'^api/(?P[0-9]+)/services/?$', public(get_services)), + url(r'^api/(?P[0-9]+)/access-info/?$', public(get_access_info)), +] diff --git a/plinth/modules/api/views.py b/plinth/modules/api/views.py index 007dcd0ae..58166c5e1 100644 --- a/plinth/modules/api/views.py +++ b/plinth/modules/api/views.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # - """ Plinth module for api for android app. """ @@ -28,32 +27,42 @@ from plinth import module_loader import json -def get_apps(request, **kwargs): - shortcuts = frontpage.get_shortcuts() - - response = {'services': list(map(get_app_data, shortcuts)) } - return HttpResponse(json.dumps(response, cls=DjangoJSONEncoder), - content_type="application/json") - - -def get_app_data(item): - item_id = item['id'].split('_')[0] - shortcut_module = module_loader.loaded_modules[item_id] - - def get_icon_url(icon): - return 'static/theme/icons/{}.svg'.format(icon) if icon else None - - return {key: value for key, value in dict(name=shortcut_module.name, - short_description=getattr(shortcut_module, - 'short_description', None), - icon_url=get_icon_url(getattr(shortcut_module, 'icon', None)), - description=getattr(shortcut_module, 'description', None), - usage=getattr(shortcut_module, 'usage', None), - manual_url=getattr(shortcut_module, 'manual_url', None), - clients=getattr(shortcut_module, 'clients', None)).items() if value } - - def get_access_info(request, **kwargs): - response = {domain_type: get_domain(domain_type) for domain_type in - get_domain_types()} + response = { + domain_type: get_domain(domain_type) + for domain_type in get_domain_types() + } return HttpResponse(json.dumps(response), content_type="application/json") + + +def get_services(request, **kwargs): + services = [shortcut['id'].split('_')[0] + for shortcut in frontpage.get_shortcuts()] + response = {'services': list(map(_get_service_data, services))} + return HttpResponse( + json.dumps(response, cls=DjangoJSONEncoder), + content_type="application/json") + + +def _get_service_data(service): + module = module_loader.loaded_modules[service] + + def _getattr(attr, not_found=None): + """A closure to get the enclosed module's attributes""" + return getattr(module, attr, not_found) + + return { + key: value + for key, value in dict( + name=module.name, + short_description=_getattr('short_description'), + icon_url=_get_icon_url(_getattr('icon')), + description=_getattr('description'), + usage=_getattr('usage'), + manual_url=_getattr('manual_url'), + clients=_getattr('clients')).items() + } + + +def _get_icon_url(icon): + return 'static/theme/icons/{}.svg'.format(icon) if icon else None diff --git a/plinth/modules/matrixsynapse/__init__.py b/plinth/modules/matrixsynapse/__init__.py index f4e96fdaf..163936e1d 100644 --- a/plinth/modules/matrixsynapse/__init__.py +++ b/plinth/modules/matrixsynapse/__init__.py @@ -30,7 +30,6 @@ from plinth import action_utils from plinth import actions from plinth import frontpage from plinth import service as service_module -from plinth.client import desktop_client, web_client, mobile_client from plinth.menu import main_menu from .manifest import clients @@ -59,20 +58,6 @@ description = [ 'client is recommended.') ] -web_clients = [web_client(name='Riot', url='https://riot.im/app/#/home')] - -desktop_clients = [desktop_client(name='Riot', - url='https://riot.im/desktop.html'), - desktop_client(name='WeeChat CLI', - url='https://weechat.org/')] - -mobile_clients = [mobile_client(name='Riot', - fully_qualified_name='im.vector.alpha', - play_store_url='https://play.google.com/store/apps/' - 'details?id=im.vector.alpha', - fdroid_url='https://f-droid.org/packages/' - 'im.vector.alpha/')] - service = None logger = logging.getLogger(__name__) diff --git a/plinth/modules/matrixsynapse/manifest.py b/plinth/modules/matrixsynapse/manifest.py index 5964826ea..1edac0cd6 100644 --- a/plinth/modules/matrixsynapse/manifest.py +++ b/plinth/modules/matrixsynapse/manifest.py @@ -24,7 +24,7 @@ clients = [ { 'type': 'store', 'os': 'Android', - 'store_type': 'google_play_store', + 'store_name': 'google_play_store', 'fully_qualified_name': 'im.vector.alpha', 'url': 'https://play.google.com/store/apps/details?id=im' '.vector.alpha ' @@ -33,7 +33,7 @@ clients = [ 'type': 'store', 'os': 'Android', 'os_version': '>=6.0', - 'store_type': 'fdroid_store', + 'store_name': 'fdroid_store', 'fully_qualified_name': 'im.vector.alpha', 'url': 'https://f-droid.org/packages/im.vector.alpha/' }, @@ -41,30 +41,21 @@ clients = [ 'type': 'web', 'url': 'https://riot.im/app/#/home' }, + { + 'type': 'download', + 'os': 'Debian', + 'url': 'https://riot.im/desktop.html' + }, { 'type': 'download', 'os': 'macOS', - 'url': 'https://riot.im/download/desktop/install/macos' - '/Riot-0.12.4.dmg' + 'url': 'https://riot.im/desktop.html' }, { 'type': 'download', - 'os': 'Windows(32 bit)', + 'os': 'Windows', 'os_version': '>=7', - 'url': 'https://riot.im/download/desktop/install/win32/ia32/' - 'Riot%20Setup%200.12.4-ia32.exe' + 'url': 'https://riot.im/desktop.html' }, - { - 'type': 'download', - 'os': 'Windows(64 bit)', - 'os_version': '>=7', - 'url': 'https://riot.im/download/desktop/install/win32/x64/Riot' - '%20Setup%200.12.4.exe' - }, - { - 'type': 'download', - 'os': 'Debian/Ubuntu', - 'url': 'https://riot.im/packages/debian/' - } ] }] diff --git a/plinth/modules/syncthing/__init__.py b/plinth/modules/syncthing/__init__.py index a905e6ab6..da667460e 100644 --- a/plinth/modules/syncthing/__init__.py +++ b/plinth/modules/syncthing/__init__.py @@ -28,7 +28,6 @@ from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu from plinth.utils import format_lazy -from plinth.client import desktop_client, mobile_client, web_client from .manifest import clients @@ -62,17 +61,6 @@ description = [ clients = clients -web_clients = [web_client(name='Syncthing', url='/syncthing')] - -desktop_clients = [desktop_client(name='Syncthing', - url='https://syncthing.net/')] - -mobile_clients = [mobile_client( - name='Syncthing', fully_qualified_name='com.nutomic.syncthingandroid', - fdroid_url='https://f-droid.org/packages/com.nutomic.syncthingandroid/', - play_store_url='https://play.google.com/store/apps/details?id=com.nutomic' - '.syncthingandroid')] - service = None diff --git a/plinth/modules/syncthing/manifest.py b/plinth/modules/syncthing/manifest.py index c85537dc5..15ba3d943 100644 --- a/plinth/modules/syncthing/manifest.py +++ b/plinth/modules/syncthing/manifest.py @@ -21,31 +21,25 @@ clients = [ { 'name': _('Syncthing'), 'platforms': [ - { - 'type': 'apt', - 'os': 'Debian/Ubuntu', - 'usage': _('For more usage information refer to

{% trans "Web Clients" %}:

-{% endif %} -{% if module.desktop_clients %}
+ {% load static %}

{% trans "Desktop Clients" %}:

-{% endif %} -{% if module.mobile_clients %}
{% load static %}

{% trans "Mobile Clients" %}:

    - {% for client in module.mobile_clients %} -
  • {{ client.name }}
  • -
    - {% if client.fdroid_url %} -
    - - - + {% for client in module.clients %} +
  • {{ client.name }}
  • +
    + {% for platform in client.platforms %} + {% if platform.type == 'store' and platform.os == 'Android' %} + {% if platform.store_name == 'fdroid_store' %} +
    + + + +
    + {% endif %} + {% if platform.store_name == 'google_play_store' %} +
    + + + +
    + {% endif %} + {% endif %} + {% endfor %}
    - {% endif %} - {% if client.play_store_url %} -
    - - - -
    - {% endif %} -
    {% endfor %}
-{% endif %} \ No newline at end of file +{% endif %} diff --git a/static/themes/default/css/plinth.css b/static/themes/default/css/plinth.css index 3bc8ea4dc..5b3c49958 100644 --- a/static/themes/default/css/plinth.css +++ b/static/themes/default/css/plinth.css @@ -136,9 +136,15 @@ footer license-info p{ } .store-icon { - display:block; + display: block; width: 100%; - height: auto + height: auto; +} + +.os-icon { + display: block; + width: 100%; + height: auto; } .shortcut-label { diff --git a/static/themes/default/img/apple.png b/static/themes/default/img/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..6f2bdb6e2e55b640f636c77dd66fb15feb786ee1 GIT binary patch literal 34733 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

F`mxAdPwR?;GF!_lmLRO%nVL?mzM~ JZ!hEg{{uI}9ew}+ literal 0 HcmV?d00001 diff --git a/static/themes/default/img/debian.png b/static/themes/default/img/debian.png new file mode 100644 index 0000000000000000000000000000000000000000..78db4dbfc6c8a73e8812c811b2c24428a630557c GIT binary patch literal 4060 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 literal 0 HcmV?d00001