diff --git a/app/src/i18n/locales/en.json b/app/src/i18n/locales/en.json
index 66e0799c..b5ce994b 100644
--- a/app/src/i18n/locales/en.json
+++ b/app/src/i18n/locales/en.json
@@ -20,6 +20,7 @@
"app_install_custom_no_manifest": "No manifest.json file",
"app_make_default": "Make default",
"app_no_actions": "This application doesn't have any actions",
+ "app_not_found": "Unable to find an app matching your criteria.",
"app_show_categories": "Show categories",
"app_state_inprogress": "not yet working",
"app_state_inprogress_explanation": "This maintainer of this app declared that this application is not ready yet for production use. BE CAREFUL!",
@@ -64,8 +65,9 @@
"confirm_firewall_close": "Are you sure you want to close port {port} (protocol: {protocol}, connection: {connection})",
"confirm_install_custom_app": "WARNING! Installing 3rd party applications may compromise the integrity and security of your system. You should probably NOT install it unless you know what you are doing. Are you willing to take that risk?",
"confirm_install_domain_root": "You will not be able to install any other app on %s. Continue?",
- "confirm_install_app_warning": "Warning: this application may work but is not well-integrated in YunoHost. Some features such as single sign-on and backup/restore might not be available.",
- "confirm_install_app_danger": "WARNING! This application is still experimental (if not explicitly not working) and it is likely to break your system! You should probably NOT install it unless you know what you are doing. Are you willing to take that risk?",
+ "confirm_app_install": "Are you sure you want to install this application?",
+ "confirm_install_app_lowquality": "Warning: this application may work but is not well-integrated in YunoHost. Some features such as single sign-on and backup/restore might not be available.",
+ "confirm_install_app_inprogress": "WARNING! This application is still experimental (if not explicitly not working) and it is likely to break your system! You should probably NOT install it unless you know what you are doing. Are you willing to take that risk?",
"confirm_migrations_skip": "Skipping migrations is not recommended. Are you sure you want to do that?",
"confirm_postinstall": "You are about to launch the post-installation process on the domain {domain}. It may take a few minutes, *do not interrupt the operation*.",
"confirm_restore": "Are you sure you want to restore {name}?",
@@ -135,7 +137,8 @@
"username_syntax": "Invalid username: Must be lower-case alphanumeric and underscore characters only",
"domain_syntax": "Invalid domain name: Must be lower-case alphanumeric, dot and dash characters only",
"dynDomain_syntax": "Invalid domain name: Must be lower-case alphanumeric and dash characters only",
- "firewall_port_already": "Port {port} is already {state} (protocol: {protocol}; connection: {connection})"
+ "firewall_port_already": "Port {port} is already {state} (protocol: {protocol}; connection: {connection})",
+ "not_github_link": "Url must be a valid Github link to a repository"
},
"form_input_example": "Example: %s",
"from_to": "from {0} to {1}",
@@ -179,7 +182,7 @@
"inactive": "Inactive",
"infos": "Info",
"install": "Install",
- "install_name": "Install %s",
+ "install_name": "Install {id}",
"install_time": "Install time",
"installation_complete": "Installation complete",
"installed": "Installed",
diff --git a/app/src/router/routes.js b/app/src/router/routes.js
index 47f23ed6..2b643a45 100644
--- a/app/src/router/routes.js
+++ b/app/src/router/routes.js
@@ -178,13 +178,13 @@ const routes = [
}
},
{
- name: 'app-catalog-home',
+ name: 'app-catalog',
path: '/apps/catalog',
component: () => import(/* webpackChunkName: "views/apps-catalog" */ '@/views/app/AppCatalog'),
meta: {
breadcrumb: [
{ name: 'app-list', trad: 'applications' },
- { name: 'app-catalog-home', trad: 'catalog' }
+ { name: 'app-catalog', trad: 'catalog' }
]
}
},
diff --git a/app/src/scss/_variables.scss b/app/src/scss/_variables.scss
index 25ec649d..561d6a3b 100644
--- a/app/src/scss/_variables.scss
+++ b/app/src/scss/_variables.scss
@@ -18,6 +18,11 @@
$alert-padding-x: 1rem;
+$color-purple: #9932cc;
+
+$theme-colors: (
+ "best": $color-purple
+);
/*
diff --git a/app/src/views/app/AppCatalog.vue b/app/src/views/app/AppCatalog.vue
index 38006886..822e8c48 100644
--- a/app/src/views/app/AppCatalog.vue
+++ b/app/src/views/app/AppCatalog.vue
@@ -20,10 +20,10 @@
-
+
@@ -43,7 +43,7 @@
-
+
@@ -77,7 +77,7 @@
{{ $t('readme') }}
-
+
{{ $t('install') }}
@@ -86,20 +86,81 @@
+
+
+
+ {{ $t('app_not_found') }}
+
+
+
+
+
+ {{ $t('custom_app_install') }}
+
+
+
+
+ {{ $t('confirm_install_custom_app') }}
+
+
+
+
+
+ {{ $t('custom_app_url_only_github') }}
+
+
+
+
+
+
+ {{ $t('install') }}
+
+
+
+
+
+
+ {{ $t('confirm_install_app_' + selectedApp.state) }}
+
+
+
+
+ {{ $t('confirm_install_custom_app') }}
+
@@ -222,28 +328,35 @@ select {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
-
-.card {
- margin-top: 2rem;
- flex-basis: 100%;
- min-height: 12rem;
- @include media-breakpoint-up(md) {
- flex-basis: 50%;
- max-width: calc(50% - 30px);
- }
- @include media-breakpoint-up(lg) {
- flex-basis: 33%;
- max-width: calc(33.3% - 30px);
+.card-deck {
+ .card {
+ margin-top: 2rem;
+ flex-basis: 100%;
+ @include media-breakpoint-up(md) {
+ flex-basis: 50%;
+ max-width: calc(50% - 30px);
+ }
+ @include media-breakpoint-up(lg) {
+ flex-basis: 33%;
+ max-width: calc(33.3% - 30px);
+ }
}
-}
-.category-card {
- min-height: 10rem;
- border: 0;
+ .app-card {
+ min-height: 12rem;
+ }
- .btn {
- width: 100%;
- height: 100%;
+ .category-card {
+ @include media-breakpoint-up(sm) {
+ min-height: 10rem;
+ }
+ border: 0;
+
+ .btn {
+ padding: 1rem;
+ width: 100%;
+ height: 100%;
+ }
}
}
diff --git a/app/src/views/app/AppList.vue b/app/src/views/app/AppList.vue
index 94f5fd85..15e2d84a 100644
--- a/app/src/views/app/AppList.vue
+++ b/app/src/views/app/AppList.vue
@@ -12,7 +12,7 @@
/>
-
+
{{ $t('install') }}