From 3ca953565696222b1ae245bd59819e0d9b90a458 Mon Sep 17 00:00:00 2001 From: opi Date: Mon, 12 Jun 2017 16:57:52 +0200 Subject: [PATCH] [enh] Manage appslists. #875 (#158) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [enh] Manage appslist. #875 * [enh] Link to appslist page in the custom app installation form. * [fix] Wrong url. * [fix] Always use appslists plural form for translation strings consistency. * [enh] Add one-click button to install community list. * [enh] Add explicit warning message about community list status. * [enh] Add more fear. * [fix] Back to warning alert about community appslist. * [enh] Handle case with no appslists. * [fix] Remove duplicate id attributes. * [fix] Full width block. * [fix] Add missing 'remove' string. --- src/js/yunohost/controllers/apps.js | 86 ++++++++++++++++++++++++++++- src/js/yunohost/main.js | 4 ++ src/locales/en.json | 17 +++++- src/views/app/app_appslists_info.ms | 49 ++++++++++++++++ src/views/app/app_appslists_list.ms | 80 +++++++++++++++++++++++++++ src/views/app/app_list_install.ms | 14 ++++- 6 files changed, 244 insertions(+), 6 deletions(-) create mode 100644 src/views/app/app_appslists_info.ms create mode 100644 src/views/app/app_appslists_list.ms diff --git a/src/js/yunohost/controllers/apps.js b/src/js/yunohost/controllers/apps.js index da642162..717ea785 100644 --- a/src/js/yunohost/controllers/apps.js +++ b/src/js/yunohost/controllers/apps.js @@ -40,14 +40,96 @@ }); }); + // List available apps lists + app.get('#/apps/lists', function (c) { + c.api('/appslists', function(data) { + list = []; + var has_community_list = false; + $.each(data, function(listname, listinfo) { + list.push({ + 'name': listname, + 'url': listinfo['url'], + 'lastUpdate': listinfo['lastUpdate'] + }); + + // Check for community list + if (listname == 'community' || listinfo['url'] == 'https://app.yunohost.org/community.json') { + has_community_list = true; + } + }); + + c.view('app/app_appslists_list', { + appslists: list, + has_community_list: has_community_list + }); + }, 'GET'); + }); + + // Add a new apps list + app.post('#/apps/lists', function (c) { + list = { + 'name' : c.params['appslist_name'], + 'url' : c.params['appslist_url'] + } + + c.api('/appslists', function(data) { + store.clear('slide'); + c.redirect('#/apps/lists/' + list.name); + }, 'PUT', list); + }); + + // Show appslist info and operations + app.get('#/apps/lists/:appslist', function (c) { + c.api('/appslists', function(data) { + if (typeof data[c.params['appslist']] !== 'undefined') { + list = { + 'name' : c.params['appslist'], + 'url': data[c.params['appslist']]['url'], + 'lastUpdate': data[c.params['appslist']]['lastUpdate'], + 'removable' : (c.params['appslist'] !== 'yunohost') ? true : false // Do not remove default apps list + }; + c.view('app/app_appslists_info', {appslist: list}); + } + else { + c.flash('warning', y18n.t('appslists_unknown_list', [c.params['appslist']])); + store.clear('slide'); + c.redirect('#/apps/lists'); + } + }, 'GET'); + }); + // Refresh available apps list - app.get('#/apps/refresh', function (c) { - c.api('/appslists', function(data) { // http://api.yunohost.org/#!/app/app_fetchlist_put_5 + app.get('#/apps/lists/refresh', function (c) { + c.api('/appslists', function(data) { // c.redirect(store.get('path')); c.redirect('#/apps/install'); }, 'PUT'); }); + // Refresh specific apps list + app.get('#/apps/lists/:appslist/refresh', function (c) { + c.api('/appslists', function(data) { + c.redirect('#/apps/lists'); + }, 'PUT', {'name' : c.params['appslist']}); + }); + + // Remove apps list + app.get('#/apps/lists/:appslist/remove', function (c) { + c.confirm( + y18n.t('appslist'), + y18n.t('appslists_confirm_remove', [c.params['app']]), + function() { + c.api('/appslists', function() { + c.redirect('#/apps/lists'); + }, 'DELETE', {'name' : c.params['appslist']}); + }, + function() { + store.clear('slide'); + c.redirect('#/apps/lists/'+ c.params['appslist']); + } + ); + }); + // Get app information app.get('#/apps/:app', function (c) { c.api('/apps/'+c.params['app']+'?raw', function(data) { // http://api.yunohost.org/#!/app/app_info_get_9 diff --git a/src/js/yunohost/main.js b/src/js/yunohost/main.js index 8882d9a6..595c218b 100644 --- a/src/js/yunohost/main.js +++ b/src/js/yunohost/main.js @@ -25,6 +25,10 @@ Handlebars.registerHelper('humanTime', function(time) { return Math.round(time) + 's'; }); + Handlebars.registerHelper('timestampToDate', function(timestamp) { + var date = new Date(timestamp * 1000); + return date.toLocaleString(); + }); Handlebars.registerHelper('bitRate', function(bytes, time) { var sizes = ['b', 'Kb', 'Mb', 'Gb', 'Tb']; if (time === 0) return 'n/a'; diff --git a/src/locales/en.json b/src/locales/en.json index 2a3ad6d7..c2c98fbc 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1,6 +1,7 @@ { "action": "Action", "add": "Add", + "remove": "Remove", "administration_password": "Administration password", "allowed_users": "Allowed users", "api_not_responding": "API is not responding", @@ -328,6 +329,20 @@ "regenerate_selfsigned_cert_message" : "If you want, you can regenerate the self-signed certificate.", "regenerate_selfsigned_cert" : "Regenerate self-signed certificate", "revert_to_selfsigned_cert_message" : "If you really want to, you can reinstall a self-signed certificate. (Not recommended)", - "revert_to_selfsigned_cert" : "Revert to a self-signed certificate" + "revert_to_selfsigned_cert" : "Revert to a self-signed certificate", + "appslists" : "Applications lists", + "appslists_no_lists" : "No applications lists", + "appslists_custom" : "Custom applications list", + "appslists_manage" : "Manage applications lists", + "appslists_confirm_remove" : "Are you sure you want to remove this applications list?", + "appslists_info_refresh_desc" : "Refresh applications status from this list.", + "appslists_info_remove_desc" : "Applications from this list will not be available anymore.", + "appslists_last_update" : "Last update", + "appslists_unknown_list" : "Unknown apps list: %s", + "appslists_community_list" : "Community applications list", + "name" : "Name", + "install_community_appslists_info" : "Community applications list allows you to install community maintained applications.
See the full list on yunohost.org/apps_in_progress.", + "install_community_appslists_warning" : "Note that these applications packages are not official and not maintained by the YunoHost team.
Installing these applications is at your own risk and could break your system.", + "install_custom_app_appslists_info" : "Note that you can use alternative applications lists to install some other apps maintained by the YunoHost community." } diff --git a/src/views/app/app_appslists_info.ms b/src/views/app/app_appslists_info.ms new file mode 100644 index 00000000..f8186774 --- /dev/null +++ b/src/views/app/app_appslists_info.ms @@ -0,0 +1,49 @@ +
+ {{t 'home'}} + {{t 'applications'}} + {{t 'appslists'}} + {{appslist.name}} +
+ +
+ +
+
+

{{t 'infos'}}

+
+
+
+
{{t 'name'}}
+
{{appslist.name}}
+
{{t 'url'}}
+
{{appslist.url}}
+
{{t 'appslists_last_update'}}
+
{{timestampToDate appslist.lastUpdate}}
+
+
+
+ +
+
+

+ {{t 'operations'}} +

+
+
+
+

{{t 'appslists_info_refresh_desc'}}

+ + {{t 'refresh_app_list'}} + +
+ {{#appslist.removable}} +
+
+

{{t 'appslists_info_remove_desc'}}

+ + {{t 'remove'}} + +
+ {{/appslist.removable}} +
+
diff --git a/src/views/app/app_appslists_list.ms b/src/views/app/app_appslists_list.ms new file mode 100644 index 00000000..3a677f9a --- /dev/null +++ b/src/views/app/app_appslists_list.ms @@ -0,0 +1,80 @@ +
+ {{t 'home'}} + {{t 'applications'}} + {{t 'appslists'}} +
+ +
+ +
+
+

{{t 'appslists'}}

+
+ +
+ {{#appslists}} + + +

+ {{name}} +

+
+ {{/appslists}} + {{^appslists}} +

+ + {{t 'appslists_no_lists'}} +

+ {{/appslists}} +
+
+ +{{^has_community_list}} +
+
+

{{t 'appslists_community_list'}}

+
+
+
+ + +
+
+

{{t 'install_community_appslists_info'}}

+

+ {{t 'install_community_appslists_warning'}} +

+ +
+
+
+
+
+{{/has_community_list}} + +
+
+

{{t 'appslists_custom'}}

+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
diff --git a/src/views/app/app_list_install.ms b/src/views/app/app_list_install.ms index 0b3480d1..1ff9b887 100644 --- a/src/views/app/app_list_install.ms +++ b/src/views/app/app_list_install.ms @@ -5,7 +5,10 @@
- + + {{t 'appslists_manage'}} + + {{t 'refresh_app_list'}}
@@ -29,8 +32,6 @@ {{/apps}} - -

{{t 'custom_app_install'}}

@@ -40,6 +41,13 @@ {{t 'confirm_install_custom_app'}}

+
+

+ {{t 'install_custom_app_appslists_info'}}

+

+ {{t 'appslists_manage'}} +

+