Make naming convention consistent using enums

Signed-off-by: Joseph Nuthalapati <njoseph@thoughtworks.com>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
Joseph Nuthalapati 2017-11-16 18:02:26 +05:30 committed by James Valleroy
parent aaf5d6dbe1
commit bf33a1a492
No known key found for this signature in database
GPG Key ID: 77C0C75E7B650808
20 changed files with 385 additions and 441 deletions

View File

@ -19,32 +19,31 @@ from django.utils.translation import ugettext_lazy as _
from plinth.utils import format_lazy
from . import get_configured_domain_name
from plinth.templatetags.plinth_extras import Mobile_OS, Store
clients = [
{
'name': _('dandelion*'),
'description': _('It is an unofficial webview based client for the '
'community-run, distributed social network diaspora*'),
'platforms': [
{
'type': 'store',
'os': 'Android',
'os_version': '>4.2.0',
'store_name': 'fdroid_store',
'url': 'https://f-droid.org/repository/browse/?fdid=com'
'.github.dfa.diaspora_android ',
'fully_qualified_name': 'com.github.dfa.diaspora_android'
}
]
},
{
'name': _('diaspora*'),
'platforms': [
{
'type': 'web',
'url': format_lazy('https://diaspora.{host}',
host=get_configured_domain_name())
}
]
}
]
clients = [{
'name':
_('dandelion*'),
'description':
_('It is an unofficial webview based client for the '
'community-run, distributed social network diaspora*'),
'platforms': [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'os_version': '>4.2.0',
'store_name': Store.F_DROID.value,
'url': 'https://f-droid.org/repository/browse/?fdid=com'
'.github.dfa.diaspora_android ',
'fully_qualified_name': 'com.github.dfa.diaspora_android'
}]
}, {
'name':
_('diaspora*'),
'platforms': [{
'type':
'web',
'url':
format_lazy('https://diaspora.{host}',
host=get_configured_domain_name())
}]
}]

View File

@ -18,115 +18,101 @@
from django.utils.translation import ugettext_lazy as _
from plinth.modules.jsxc import manifest as jsxc_manifest
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
clients = [
{
'name': _('yaxim'),
'platforms': [
{
'type': 'store',
'os': 'Android',
'store_name': 'google_play_store',
'fully_qualified_name': 'org.yaxim.androidclient',
'url': 'https://play.google.com/store/apps/details?id=org'
'.yaxim.androidclient '
}]
},
{
'name': _('Bruno'),
'description': _('Bruno is a themed version of the open source '
'yaxim app.'),
'platforms': [
{
'type': 'store',
'os': 'Android',
'store_name': 'google_play_store',
'fully_qualified_name': 'org.yaxim.bruno',
'url': 'https://play.google.com/store/apps/details?id'
'=org.yaxim.bruno '
}
]
},
{
'name': _('Chat secure - Encrypted Messenger'),
'description': _('ChatSecure is a free and open source '
'messaging app that features OTR encryption '
'over XMPP. You can connect to an existing '
'Google account, create new accounts on '
'public XMPP servers (including via Tor), '
'or even connect to your own server for '
'extra security.'),
'platforms': [
{
'type': 'store',
'os': 'iOS',
'store_name': 'apple_store',
'url': 'https://itunes.apple.com/us/app/chatsecure'
'/id464200063 '
}
]
},
{
'name': _('Conversations'),
'platforms': [
{
'type': 'store',
'os': 'Android',
'store_name': 'google_play_store',
'url': 'https://play.google.com/store/apps/details?id'
'=eu.siacs.conversations ',
'fully_qualified_name': 'eu.siacs.conversations'
}
]
},
{
'name': _('Dino'),
'platforms': [
{
'type': 'download',
'os': 'Debian',
'url': 'https://download.opensuse.org/repositories/network'
':/messaging:/xmpp:/dino/Debian_9.0/amd64/dino_0.0'
'~git178.9d8e1e8_amd64.deb',
}
]
},
{
'name': _('Gajim'),
'platforms': [
{
'type': 'apt',
'os': 'Debian',
'package_name': 'gajim'
},
{
'type': 'download',
'os': 'Windows',
'url': 'https://gajim.org/downloads/0.16/gajim-0.16.8-2.exe'
}
]
},
{
'name': _('OneTeam'),
'platforms': [
{
'type': 'download',
'os': 'Windows',
'url': 'https://download.process-one.net/oneteam/release'
'-installers/OneTeam.msi'
},
{
'type': 'download',
'os': 'macOS',
'url': 'https://download.process-one.net/oneteam/release'
'-installers/OneTeam.dmg '
},
{
'type': 'download',
'os': 'Linux',
'url': 'https://download.process-one.net/oneteam/release'
'-installers/oneteam.tar.bz2 '
}
]
}
].append(jsxc_manifest.clients)
clients = [{
'name':
_('yaxim'),
'platforms': [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'fully_qualified_name': 'org.yaxim.androidclient',
'url': 'https://play.google.com/store/apps/details?id=org'
'.yaxim.androidclient '
}]
}, {
'name':
_('Bruno'),
'description':
_('Bruno is a themed version of the open source '
'yaxim app.'),
'platforms': [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'fully_qualified_name': 'org.yaxim.bruno',
'url': 'https://play.google.com/store/apps/details?id'
'=org.yaxim.bruno '
}]
}, {
'name':
_('Chat secure - Encrypted Messenger'),
'description':
_('ChatSecure is a free and open source '
'messaging app that features OTR encryption '
'over XMPP. You can connect to an existing '
'Google account, create new accounts on '
'public XMPP servers (including via Tor), '
'or even connect to your own server for '
'extra security.'),
'platforms': [{
'type': 'store',
'os': 'iOS',
'store_name': 'apple_store',
'url': 'https://itunes.apple.com/us/app/chatsecure'
'/id464200063 '
}]
}, {
'name':
_('Conversations'),
'platforms': [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'url': 'https://play.google.com/store/apps/details?id'
'=eu.siacs.conversations ',
'fully_qualified_name': 'eu.siacs.conversations'
}]
}, {
'name':
_('Dino'),
'platforms': [{
'type': 'download',
'os': 'Debian',
'url': 'https://download.opensuse.org/repositories/network'
':/messaging:/xmpp:/dino/Debian_9.0/amd64/dino_0.0'
'~git178.9d8e1e8_amd64.deb',
}]
}, {
'name':
_('Gajim'),
'platforms': [{
'type': 'apt',
'os': 'Debian',
'package_name': 'gajim'
}, {
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'url': 'https://gajim.org/downloads/0.16/gajim-0.16.8-2.exe'
}]
}, {
'name':
_('OneTeam'),
'platforms': [{
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'url': 'https://download.process-one.net/oneteam/release'
'-installers/OneTeam.msi'
}, {
'type': 'download',
'os': Desktop_OS.MAC_OS.value,
'url': 'https://download.process-one.net/oneteam/release'
'-installers/OneTeam.dmg '
}, {
'type': 'download',
'os': 'Linux',
'url': 'https://download.process-one.net/oneteam/release'
'-installers/oneteam.tar.bz2 '
}]
}].append(jsxc_manifest.clients)

View File

@ -50,6 +50,9 @@
{% block configuration %}
{% include "clients.html" with clients=clients %}
<h3>{% trans "Configuration" %}</h3>
<form class="form" method="post">

View File

@ -14,7 +14,6 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
"""
Views for the Ejabberd module
"""
@ -44,6 +43,7 @@ class EjabberdServiceView(ServiceView):
"""Add service to the context data."""
context = super().get_context_data(*args, **kwargs)
context['domainname'] = ejabberd.get_domainname()
context['clients'] = ejabberd.clients
return context
def form_valid(self, form):

View File

@ -17,12 +17,10 @@
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('ikiwiki'),
'platforms': [{
'type': 'web',
'relative_url': '/ikiwiki'
}]
}
]
clients = [{
'name': _('ikiwiki'),
'platforms': [{
'type': 'web',
'url': '/ikiwiki'
}]
}]

View File

@ -17,27 +17,27 @@
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS
from plinth.utils import format_lazy
from plinth import cfg
clients = [
{
'name': _('Gobby'),
'description': _('Gobby is a collaborative text editor'),
'usage': format_lazy(_('start Gobby and select "Connect to Server" and '
'enter your {box_name}\'s domain name.'),
box_name=_(cfg.box_name)),
'platforms': [
{
'type': 'download',
'os': 'Windows',
'url': 'http://releases.0x539.de/gobby/gobby-stable.exe'
},
{
'type': 'apt',
'os': 'Debian',
'package_name': 'gobby-infinote'
}
]
}
]
clients = [{
'name':
_('Gobby'),
'description':
_('Gobby is a collaborative text editor'),
'usage':
format_lazy(
_('start Gobby and select "Connect to Server" and '
'enter your {box_name}\'s domain name.'),
box_name=_(cfg.box_name)),
'platforms': [{
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'url': 'http://releases.0x539.de/gobby/gobby-stable.exe'
}, {
'type': 'apt',
'os': 'Debian',
'package_name': 'gobby'
}]
}]

View File

@ -16,46 +16,47 @@
#
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
clients = [
{
'name': _('Riot'),
'platforms': [
{
'type': 'store',
'os': 'Android',
'store_name': 'google_play_store',
'fully_qualified_name': 'im.vector.alpha',
'url': 'https://play.google.com/store/apps/details?id=im'
'.vector.alpha '
},
{
'type': 'store',
'os': 'Android',
'os_version': '>=6.0',
'store_name': 'fdroid_store',
'fully_qualified_name': 'im.vector.alpha',
'url': 'https://f-droid.org/packages/im.vector.alpha/'
},
{
'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/desktop.html'
},
{
'type': 'download',
'os': 'Windows',
'os_version': '>=7',
'url': 'https://riot.im/desktop.html'
},
]
}]
clients = [{
'name':
_('Riot'),
'platforms': [
{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'fully_qualified_name': 'im.vector.alpha',
'url': 'https://play.google.com/store/apps/details?id=im'
'.vector.alpha '
},
{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'os_version': '>=6.0',
'store_name': Store.F_DROID.value,
'fully_qualified_name': 'im.vector.alpha',
'url': 'https://f-droid.org/packages/im.vector.alpha/'
},
{
'type': 'web',
'url': 'https://riot.im/app/#/home'
},
{
'type': 'download',
'os': Desktop_OS.GNU_LINUX.value,
'url': 'https://riot.im/desktop.html'
},
{
'type': 'download',
'os': Desktop_OS.MAC_OS.value,
'url': 'https://riot.im/desktop.html'
},
{
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'os_version': '>=7',
'url': 'https://riot.im/desktop.html'
},
]
}]

View File

@ -16,28 +16,29 @@
#
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
clients = [{
'name':
_('Minetest'),
'platforms': [{
'type': 'download',
'os': 'Windows',
'os': Desktop_OS.WINDOWS.value,
'arch': 'amd64',
'os_version': 'XP, Vista, >=7',
'url': 'https://github.com/minetest/minetest/releases'
'/download/0.4.16/minetest-0.4.16-win64.zip '
}, {
'type': 'store',
'os': 'Android',
'store_name': 'google_play_store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'fully_qualified_name': 'net.minetest.minetest',
'url': 'https://play.google.com/store/apps/details?id=net'
'.minetest.minetest '
}, {
'type': 'store',
'os': 'Android',
'store_name': 'fdroid_store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.F_DROID.value,
'fully_qualified_name': 'net.minetest.minetest',
'url': 'https://f-droid.org/packages/net.minetest.minetest/ '
}, {

View File

@ -16,25 +16,20 @@
#
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
clients = [{
'name':
_('Mumble'),
'platforms': [{
'type': 'download',
'os': 'Windows',
'arch': 'i386',
'url': 'https://github.com/mumble-voip/mumble/releases'
'/download/1.2.19/mumble-1.2.19.msi '
}, {
'type': 'download',
'os': 'Windows(64-bit)',
'os': Desktop_OS.WINDOWS.value,
'arch': 'amd64',
'url': 'https://dl.mumble.info/mumble-1.3.0~2569~gd196a4b'
'~snapshot.winx64.msi '
}, {
'type': 'download',
'os': 'macOS',
'os': Desktop_OS.MAC_OS.value,
'url': 'https://github.com/mumble-voip/mumble/releases'
'/download/1.2.19/Mumble-1.2.19.dmg '
}, {
@ -53,15 +48,15 @@ clients = [{
_('Plumble'),
'platforms': [{
'type': 'store',
'os': 'Android',
'store_name': 'google_play_store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'url': 'https://play.google.com/store/apps/details?id=com'
'.morlunk.mumbleclient.free ',
'fully_qualified_name': 'com.morlunk.mumbleclient'
}, {
'type': 'store',
'os': 'Android',
'store_name': 'fdroid_store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.F_DROID.value,
'url': 'https://play.google.com/store/apps/details?id=com'
'.morlunk.mumbleclient.free ',
'fully_qualified_name': 'com.morlunk.mumbleclient'

View File

@ -16,35 +16,30 @@
#
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
clients = [
{
'name': _('Quassel'),
'platforms': [
{
'type': 'download',
'os': 'macOS',
'url': 'http://quassel-irc.org/pub/QuasselClient_MacOSX'
'-x86_64_0.12.4.dmg '
},
{
'type': 'apt',
'os': 'Debian',
'package_name': 'quassel-client'
}
]
},
{
'name': _('Quassseldroid'),
'platforms': [
{
'type': 'store',
'os': 'Android',
'store_name': 'google_play_store',
'url': 'https://play.google.com/store/apps/details?id=com'
'.iskrembilen.quasseldroid',
'fully_qualified_name': 'com.iskrembilen.quasseldroid'
}
]
}
]
clients = [{
'name':
_('Quassel'),
'platforms': [{
'type': 'download',
'os': Desktop_OS.MAC_OS.value,
'url': 'http://quassel-irc.org/pub/QuasselClient_MacOSX'
'-x86_64_0.12.4.dmg'
}, {
'type': 'apt',
'os': 'Debian',
'package_name': 'quassel-client'
}]
}, {
'name':
_('Quassseldroid'),
'platforms': [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'url': 'https://play.google.com/store/apps/details?id=com'
'.iskrembilen.quasseldroid',
'fully_qualified_name': 'com.iskrembilen.quasseldroid'
}]
}]

View File

@ -16,51 +16,48 @@
#
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Mobile_OS, Store
clients = [
{
'name': _('DAVDroid'),
'usage': _('Enter the URL of the Radicale server (e.g. '
'http://localhost:5232) and your user name. DAVdroid will '
'show all existing calendars and address books and you can '
'create new.'),
'platforms': [
{
'type': 'store',
'os': 'Android',
'store_name': 'google_play_store',
'url': 'https://play.google.com/store/apps/details?id=at'
'.bitfire.davdroid',
'fully_qualified_name': 'at.bitfire.davdroid'
}
]
},
{
'name': _('GNOME Calendar'),
'platforms': [
{
'type': 'apt',
'os': 'Debian',
'package-name': 'gnome-calendar'
}
]
},
{
'name': _('Evolution'),
'description': _('Evolution is a personal information management '
'application that provides integrated mail, '
'calendaring and address book functionality.'),
'usage': _('In Evolution add a new calendar and address book '
'respectively with WebDAV. Enter the URL of the Radicale '
'server (e.g. http://localhost:5232) and your user name. '
'Clicking on the search button will list the existing '
'calendars and address books.'),
'platforms': [
{
'type': 'apt',
'os': 'Debian',
'package-name': 'gnome-calendar'
}
]
}
]
clients = [{
'name':
_('DAVDroid'),
'usage':
_('Enter the URL of the Radicale server (e.g. '
'http://localhost:5232) and your user name. DAVdroid will '
'show all existing calendars and address books and you can '
'create new.'),
'platforms': [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'url': 'https://play.google.com/store/apps/details?id=at'
'.bitfire.davdroid',
'fully_qualified_name': 'at.bitfire.davdroid'
}]
}, {
'name':
_('GNOME Calendar'),
'platforms': [{
'type': 'apt',
'os': 'Debian',
'package-name': 'gnome-calendar'
}]
}, {
'name':
_('Evolution'),
'description':
_('Evolution is a personal information management '
'application that provides integrated mail, '
'calendaring and address book functionality.'),
'usage':
_('In Evolution add a new calendar and address book '
'respectively with WebDAV. Enter the URL of the Radicale '
'server (e.g. http://localhost:5232) and your user name. '
'Clicking on the search button will list the existing '
'calendars and address books.'),
'platforms': [{
'type': 'apt',
'os': 'Debian',
'package-name': 'gnome-calendar'
}]
}]

View File

@ -16,6 +16,7 @@
#
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
clients = [{
'name':
@ -31,8 +32,8 @@ clients = [{
'and simulcasting.'),
'platforms': [{
'type': 'store',
'os': 'Android',
'store_name': 'google_play_store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'fully_qualified_name': 'org.jitsi.meet',
'url': 'https://play.google.com/store/apps/details?id=org'
'.jitsi.meet '
@ -43,7 +44,7 @@ clients = [{
'url': 'https://itunes.apple.com/in/app/jitsi-meet/id1165103905'
}, {
'type': 'download',
'os': 'GNU/Linux',
'os': Desktop_OS.GNU_LINUX.value,
'url': 'https://download.jitsi.org/jitsi/debian/'
}, {
'type': 'package',
@ -51,12 +52,12 @@ clients = [{
'name': 'jitsi'
}, {
'type': 'download',
'os': 'macOS',
'os': Desktop_OS.MAC_OS.value,
'url': 'https://download.jitsi.org/jitsi/macosx/jitsi-latest'
'.dmg '
}, {
'type': 'download',
'os': 'Windows',
'os': Desktop_OS.WINDOWS.value,
'url': 'https://download.jitsi.org/jitsi/windows/jitsi-latest'
'-x86.exe '
}]
@ -65,8 +66,8 @@ clients = [{
_('CSipSimple'),
'platforms': [{
'type': 'store',
'os': 'Android',
'store_name': 'google_play_store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'fully_qualified_name': 'com.csipsimple',
'url': 'https://play.google.com/store/apps/details?id=com'
'.csipsimple '

View File

@ -17,14 +17,10 @@
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('reStore'),
'platforms': [
{
'type': 'web',
'relative_url': '/restore'
}
]
}
]
clients = [{
'name': _('reStore'),
'platforms': [{
'type': 'web',
'url': '/restore'
}]
}]

View File

@ -17,14 +17,10 @@
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('Roundcube'),
'platforms': [
{
'type': 'web',
'relative_url': '/roundcube'
}
]
}
]
clients = [{
'name': _('Roundcube'),
'platforms': [{
'type': 'web',
'url': '/roundcube'
}]
}]

View File

@ -17,14 +17,10 @@
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('Shaarli'),
'platforms': [
{
'type': 'web',
'relative_url': '/shaarli'
}
]
}
]
clients = [{
'name': _('Shaarli'),
'platforms': [{
'type': 'web',
'url': '/shaarli'
}]
}]

View File

@ -83,6 +83,6 @@ clients = [{
.format(metadata['syncthing']['android-package-id'])
}, {
'type': 'web',
'relative_url': '/syncthing'
'url': '/syncthing'
}]
}]

View File

@ -16,59 +16,47 @@
#
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Desktop_OS, Mobile_OS, Store
version = '7.0.6'
clients = [
{
'name': _('Tor Browser'),
'platforms': [
{
'type': 'download',
'os': 'Windows',
'os_version': 'Windows XP, Vista, >=7',
'url': 'https://www.torproject.org/dist/torbrowser/{v}'
'/torbrowser-install-{v}_en-US.exe '.format(v=version)
},
{
'type': 'download',
'os': 'Linux(64-bit)',
'url': 'https://www.torproject.org/dist/torbrowser/{v}/tor'
'-browser-linux64-{v} _en-US.tar.xz'.format(v=version)
},
{
'type': 'download',
'os': 'Linux(32-bit)',
'url': 'https://www.torproject.org/dist/torbrowser/{v}/tor'
'-browser-linux32-{v}_en-US.tar.xz'.format(v=version)
},
{
'type': 'download',
'os': 'macOS',
'url': 'https://www.torproject.org/dist/torbrowser/{v}'
'/TorBrowser-{v}-osx64_en-US.dmg'.format(v=version)
}
]
},
{
'name': _('Orbot: Proxy with Tor'),
'platforms': [
{
'type': 'store',
'os': 'Android',
'store_name': 'google_play_store',
'url': 'https://play.google.com/store/apps/details?id=org'
'.torproject.android',
'fully_qualified_name': 'org.torproject.android'
},
{
'type': 'store',
'os': 'Android',
'store_name': 'fdroid_store',
'url': 'https://play.google.com/store/apps/details?id=org'
'.torproject.android',
'fully_qualified_name': 'org.torproject.android'
}
]
}
]
clients = [{
'name':
_('Tor Browser'),
'platforms': [{
'type': 'download',
'os': Desktop_OS.WINDOWS.value,
'os_version': 'Windows XP, Vista, >=7',
'url': 'https://www.torproject.org/dist/torbrowser/{v}'
'/torbrowser-install-{v}_en-US.exe '.format(v=version)
}, {
'type': 'download',
'os': Desktop_OS.GNU_LINUX.value,
'url': 'https://www.torproject.org/dist/torbrowser/{v}/tor'
'-browser-linux64-{v} _en-US.tar.xz'.format(v=version)
}, {
'type': 'download',
'os': Desktop_OS.MAC_OS.value,
'arch': 'amd64',
'url': 'https://www.torproject.org/dist/torbrowser/{v}'
'/TorBrowser-{v}-osx64_en-US.dmg'.format(v=version)
}]
}, {
'name':
_('Orbot: Proxy with Tor'),
'platforms': [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'url': 'https://play.google.com/store/apps/details?id=org'
'.torproject.android',
'fully_qualified_name': 'org.torproject.android'
}, {
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.F_DROID.value,
'url': 'https://play.google.com/store/apps/details?id=org'
'.torproject.android',
'fully_qualified_name': 'org.torproject.android'
}]
}]

View File

@ -17,14 +17,10 @@
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('Transmission'),
'platforms': [
{
'type': 'web',
'relative_url': '/transmission'
}
]
}
]
clients = [{
'name': _('Transmission'),
'platforms': [{
'type': 'web',
'url': '/transmission'
}]
}]

View File

@ -16,30 +16,26 @@
#
from django.utils.translation import ugettext_lazy as _
from plinth.templatetags.plinth_extras import Mobile_OS, Store
clients = [
{
'name': _('TT-RSS Reader'),
'platforms': [
{
'type': 'store',
'os': 'Android',
'store_name': 'google_play-store',
'url': 'https://play.google.com/store/apps/details?id=org'
'.ttrssreader',
'fully_qualified_name': 'org.ttrssreader'
},
{
'type': 'store',
'os': 'Android',
'store_name': 'fdroid_store',
'url': 'https://f-droid.org/packages/org.ttrssreader/',
'fully_qualified_name': 'org.ttrssreader'
},
{
'type': 'web',
'relative_url': '/tt-rss'
}
]
}
]
clients = [{
'name':
_('TT-RSS Reader'),
'platforms': [{
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.GOOGLE_PLAY.value,
'url': 'https://play.google.com/store/apps/details?id=org'
'.ttrssreader',
'fully_qualified_name': 'org.ttrssreader'
}, {
'type': 'store',
'os': Mobile_OS.ANDROID.value,
'store_name': Store.F_DROID.value,
'url': 'https://f-droid.org/packages/org.ttrssreader/',
'fully_qualified_name': 'org.ttrssreader'
}, {
'type': 'web',
'url': '/tt-rss'
}]
}]

View File

@ -29,7 +29,7 @@
</button>
</p>
<table id="clients" class="table table-bordered table-hover collapse">
<table id="clients" class="table table-hover collapse">
{% if clients|has_web_clients %}
{% for client in clients %}
{% if client|has_web_clients %}
@ -39,7 +39,7 @@
<th> Web </th>
<td> {{ client.name }} </td>
<td>
<a href="{{ platform.relative_url }}">
<a href="{{ platform.url }}">
<button type="button" class="btn btn-success">Launch</button>
</a>
</td>
@ -89,7 +89,7 @@
<div class="col-md-2 col-xs-4">
<a href="{{ platform.url }}">
{% with 'theme/icons/'|add:platform.store_name|add:'.png' as icon %}
<img class="os-icon" src="{% static icon %}" />
<img class="store-icon" src="{% static icon %}" />
{% endwith %}
</a>
</div>