From ffde0e3cef894eab6eb78a8a585ba4996927b7f7 Mon Sep 17 00:00:00 2001 From: Thibaud WOJTOWICZ Date: Sat, 14 Aug 2021 18:04:21 +0200 Subject: [PATCH 1/8] ask.fr text in french --- .../packaging_apps_arguments_format.md | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md index 010748c81..2fdee863d 100644 --- a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md +++ b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md @@ -24,9 +24,9 @@ The general format for an argument looks like this in toml: [maybe.some.stuff.before.the_name] type = "one_of_the_available_type" ask.en = "the question in english" -ask.fr = "the question in french" +ask.fr = "la question en français" help.en = "some help text in english" # optional -help.fr = "some help text in french" # optional +help.fr = "un peu d aide en français" # optional example = "an example value" # optional default = "some stuff" # optional, not available for all types optional = true # optional, will skip if not answered @@ -40,11 +40,11 @@ And in json: "type": "one_of_the_available_type", // "sting" is not specified "ask": { "en": "the question in english", - "fr": "the question in french" + "fr": "la question en français" }, "help": { "en": "some help text in english", - "fr": "some help text in french" + "fr": "un peu d aide en français" }, "example": "an example value", // optional "default", "some stuff", // optional, not available for all types @@ -64,7 +64,7 @@ Example in toml: [maybe.some.stuff.before.the_name] type = "string" # optional ask.en = "the question in english" -ask.fr = "the question in french" +ask.fr = "la question en français" example = "an example value" # optional default = "some stuff" # optional ``` @@ -77,7 +77,7 @@ And in json: "type": "string", // optional "ask": { "en": "the question in english", - "fr": "the question in french" + "fr": "la question en français" }, "default": "some stuff", // optional "example": "an example value" @@ -108,7 +108,7 @@ And in json: "type": "string", "ask": { "en": "the question in english", - "fr": "the question in french" + "fr": "la question en français" }, "example": "an example value", "choices": ["fr", "en"], @@ -126,7 +126,7 @@ Example in toml: [maybe.some.stuff.before.the_name] type = "domain" ask.en = "the question in english" -ask.fr = "the question in french" +ask.fr = "la question en français" ``` And in json: @@ -137,7 +137,7 @@ And in json: "type": "domain", "ask": { "en": "the question in english", - "fr": "the question in french" + "fr": "la question en français" } }, ``` @@ -153,7 +153,7 @@ Example in toml: [maybe.some.stuff.before.the_name] type = "path" ask.en = "the question in english" -ask.fr = "the question in french" +ask.fr = "la question en français" default = "/my_app" ``` @@ -165,7 +165,7 @@ And in json: "type": "path", "ask": { "en": "the question in english", - "fr": "the question in french" + "fr": "la question en français" }, "default": "/my_app" }, @@ -183,7 +183,7 @@ Example in toml: [maybe.some.stuff.before.the_name] type = "user" ask.en = "the question in english" -ask.fr = "the question in french" +ask.fr = "la question en français" ``` And in json: @@ -194,7 +194,7 @@ And in json: "type": "user", "ask": { "en": "the question in english", - "fr": "the question in french" + "fr": "la question en français" } }, ``` @@ -213,7 +213,7 @@ Example in toml: [maybe.some.stuff.before.the_name] type = "password" ask.en = "the question in english" -ask.fr = "the question in french" +ask.fr = "la question en français" ``` And in json: @@ -224,7 +224,7 @@ And in json: "type": "password", "ask": { "en": "the question in english", - "fr": "the question in french" + "fr": "la question en français" } }, ``` @@ -239,7 +239,7 @@ Example in toml: [maybe.some.stuff.before.the_name] type = "boolean" ask.en = "the question in english" -ask.fr = "the question in french" +ask.fr = "la question en français" default = true ``` @@ -251,7 +251,7 @@ And in json: "type": "boolean", "ask": { "en": "the question in english", - "fr": "the question in french" + "fr": "la question en français" }, "default": true }, @@ -267,7 +267,7 @@ Example in toml: [maybe.some.stuff.before.the_name] type = "number" ask.en = "the question in english" -ask.fr = "the question in french" +ask.fr = "la question en français" default = 0 ``` @@ -279,7 +279,7 @@ And in json: "type": "number", "ask": { "en": "the question in english", - "fr": "the question in french" + "fr": "la question en français" }, "default": 0 }, @@ -296,7 +296,7 @@ Example in toml: [maybe.some.stuff.before.the_name] type = "app" ask.en = "the question in english" -ask.fr = "the question in french" +ask.fr = "la question en français" ``` And in json: @@ -307,7 +307,7 @@ And in json: "type": "app", "ask": { "en": "the question in english", - "fr": "the question in french" + "fr": "la question en français" } }, ``` @@ -321,7 +321,7 @@ that will be simply displayed. This is useful to provide more context. [maybe.some.stuff.before.the_name] type = "display_text" ask.en = "the text in english" -ask.fr = "the text in french" +ask.fr = "le text en français" ``` And in json: @@ -332,7 +332,7 @@ And in json: "type": "display_text", "ask": { "en": "the text in english", - "fr": "the text in french" + "fr": "le text en français" } }, ``` From d2e4691425cf7884adbd2127fe3a887050849e46 Mon Sep 17 00:00:00 2001 From: Thibaud WOJTOWICZ Date: Sat, 14 Aug 2021 18:25:18 +0200 Subject: [PATCH 2/8] add ui-tabs --- .../packaging_apps_arguments_format.md | 111 +++++++++++------- 1 file changed, 67 insertions(+), 44 deletions(-) diff --git a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md index 2fdee863d..bdcfd91d2 100644 --- a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md +++ b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md @@ -18,8 +18,9 @@ usable (for now: installation arguments in `manifest.json/toml`, ## YunoHost arguments general format -The general format for an argument looks like this in toml: - +The general format for an argument looks like this: +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] ```toml [maybe.some.stuff.before.the_name] type = "one_of_the_available_type" @@ -31,9 +32,8 @@ example = "an example value" # optional default = "some stuff" # optional, not available for all types optional = true # optional, will skip if not answered ``` - -And in json: - +[/ui-tab] +[ui-tab title="in json"] ```javascript { "name": "the_name", @@ -51,6 +51,8 @@ And in json: "optional": true // optional, will skip if not answered }, ``` +[/ui-tab] +[/ui-tabs] ## All avaiable types @@ -59,7 +61,8 @@ And in json: This one is the simpliest one and is the default type if you don't specify one. Example in toml: - +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] ```toml [maybe.some.stuff.before.the_name] type = "string" # optional @@ -68,9 +71,8 @@ ask.fr = "la question en français" example = "an example value" # optional default = "some stuff" # optional ``` - -And in json: - +[/ui-tab] +[ui-tab title="in json"] ```javascript { "name": "the_name", @@ -83,13 +85,14 @@ And in json: "example": "an example value" }, ``` +[/ui-tab] +[/ui-tabs] ### string with choices Like string except the user needs to chose in a list of specifics strings. - -Example in toml: - +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] ```toml [maybe.some.stuff.before.the_name] type = "string" @@ -99,9 +102,8 @@ example = "an example value" # optional choices = ["fr", "en"] default = "en" # optional ``` - -And in json: - +[/ui-tab] +[ui-tab title="in json"] ```javascript { "name": "the_name", @@ -115,22 +117,22 @@ And in json: "default": "en" // optional }, ``` +[/ui-tab] +[/ui-tabs] ### domain This type will ask the user to chose one of the domains of their YunoHost instance. - -Example in toml: - +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] ```toml [maybe.some.stuff.before.the_name] type = "domain" ask.en = "the question in english" ask.fr = "la question en français" ``` - -And in json: - +[/ui-tab] +[ui-tab title="in json"] ```javascript { "name": "the_name", @@ -141,14 +143,16 @@ And in json: } }, ``` +[/ui-tab] +[/ui-tabs] ### Path This type will ask the user to chose an URL path (generally to happen it to a domain) like "/path/to/my/app" -Example in toml: - +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] ```toml [maybe.some.stuff.before.the_name] type = "path" @@ -156,9 +160,8 @@ ask.en = "the question in english" ask.fr = "la question en français" default = "/my_app" ``` - -And in json: - +[/ui-tab] +[ui-tab title="in json"] ```javascript { "name": "the_name", @@ -170,6 +173,8 @@ And in json: "default": "/my_app" }, ``` +[/ui-tab] +[/ui-tabs] ### User @@ -178,6 +183,8 @@ YunoHost installation. Generally this is used to select who is going to be the admin or who is going to have access to this application. Example in toml: +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] ```toml [maybe.some.stuff.before.the_name] @@ -185,9 +192,8 @@ type = "user" ask.en = "the question in english" ask.fr = "la question en français" ``` - -And in json: - +[/ui-tab] +[ui-tab title="in json"] ```javascript { "name": "the_name", @@ -198,6 +204,8 @@ And in json: } }, ``` +[/ui-tab] +[/ui-tabs] ### Password @@ -208,6 +216,8 @@ In CLI it will behave like any password query and won't print any character on type (not "\*\*\*...") for security reasons. Example in toml: +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] ```toml [maybe.some.stuff.before.the_name] @@ -215,9 +225,8 @@ type = "password" ask.en = "the question in english" ask.fr = "la question en français" ``` - -And in json: - +[/ui-tab] +[ui-tab title="in json"] ```javascript { "name": "the_name", @@ -228,12 +237,16 @@ And in json: } }, ``` +[/ui-tab] +[/ui-tabs] ### Boolean This type will ask the user to answer true or false to a question. Example in toml: +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] ```toml [maybe.some.stuff.before.the_name] @@ -242,9 +255,8 @@ ask.en = "the question in english" ask.fr = "la question en français" default = true ``` - -And in json: - +[/ui-tab] +[ui-tab title="in json"] ```javascript { "name": "the_name", @@ -256,12 +268,16 @@ And in json: "default": true }, ``` +[/ui-tab] +[/ui-tabs] ### Number Like string except the user needs to enter a number Example in toml: +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] ```toml [maybe.some.stuff.before.the_name] @@ -270,9 +286,8 @@ ask.en = "the question in english" ask.fr = "la question en français" default = 0 ``` - -And in json: - +[/ui-tab] +[ui-tab title="in json"] ```javascript { "name": "the_name", @@ -284,6 +299,8 @@ And in json: "default": 0 }, ``` +[/ui-tab] +[/ui-tabs] ### App @@ -291,6 +308,8 @@ This type will ask the user to select an application in the list of installed application on their YunoHost. Example in toml: +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] ```toml [maybe.some.stuff.before.the_name] @@ -298,9 +317,8 @@ type = "app" ask.en = "the question in english" ask.fr = "la question en français" ``` - -And in json: - +[/ui-tab] +[ui-tab title="in json"] ```javascript { "name": "the_name", @@ -311,21 +329,24 @@ And in json: } }, ``` +[/ui-tab] +[/ui-tabs] ### display_text This is a special type that allows the application packager to write some text that will be simply displayed. This is useful to provide more context. +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] ```toml [maybe.some.stuff.before.the_name] type = "display_text" ask.en = "the text in english" ask.fr = "le text en français" ``` - -And in json: - +[/ui-tab] +[ui-tab title="in json"] ```javascript { "name": "the_name", @@ -336,3 +357,5 @@ And in json: } }, ``` +[/ui-tab] +[/ui-tabs] From 020e1c11f27c0995eec2b191bf6e14a995d1b1b5 Mon Sep 17 00:00:00 2001 From: Thibaud WOJTOWICZ Date: Sat, 14 Aug 2021 18:28:57 +0200 Subject: [PATCH 3/8] title 3lvl with upper case --- .../packaging_apps_arguments_format.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md index bdcfd91d2..4becbcc52 100644 --- a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md +++ b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md @@ -56,7 +56,7 @@ optional = true # optional, will skip if not answered ## All avaiable types -### string +### String This one is the simpliest one and is the default type if you don't specify one. @@ -88,7 +88,7 @@ default = "some stuff" # optional [/ui-tab] [/ui-tabs] -### string with choices +### String with choices Like string except the user needs to chose in a list of specifics strings. [ui-tabs position="top-left" active="0" theme="lite"] @@ -120,7 +120,7 @@ default = "en" # optional [/ui-tab] [/ui-tabs] -### domain +### Domain This type will ask the user to chose one of the domains of their YunoHost instance. [ui-tabs position="top-left" active="0" theme="lite"] @@ -332,7 +332,7 @@ ask.fr = "la question en français" [/ui-tab] [/ui-tabs] -### display_text +### Display text This is a special type that allows the application packager to write some text that will be simply displayed. This is useful to provide more context. From a6ca9ad5be4256a97052f652c7e2aeca135739cb Mon Sep 17 00:00:00 2001 From: Thibaud WOJTOWICZ Date: Sat, 14 Aug 2021 21:26:18 +0200 Subject: [PATCH 4/8] add new tags --- .../packaging_apps_arguments_format.md | 158 +++++++++++++++++- 1 file changed, 157 insertions(+), 1 deletion(-) diff --git a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md index 4becbcc52..4a1aebc49 100644 --- a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md +++ b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md @@ -60,7 +60,6 @@ optional = true # optional, will skip if not answered This one is the simpliest one and is the default type if you don't specify one. -Example in toml: [ui-tabs position="top-left" active="0" theme="lite"] [ui-tab title="in toml"] ```toml @@ -359,3 +358,160 @@ ask.fr = "le text en français" ``` [/ui-tab] [/ui-tabs] + +### Range +This type will ask the user to specify a numeric value between two terminals. +Te precise value, however, is not considered important. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "email" +ask.en = "Put a range" +ask.fr = "Indiquer " +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "email", + "ask": { + "en": "the email address", + "fr": "l adresse courriel" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Email +This type will ask the user to input a email address. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "email" +ask.en = "the email address" +ask.fr = "l adresse courriel" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "email", + "ask": { + "en": "the email address", + "fr": "l adresse courriel" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Url +This type will ask the user to input a url. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "email" +ask.en = "the url" +ask.fr = "l url" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "url", + "ask": { + "en": "the url", + "fr": "l url" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Date +This type will ask the user to input a date. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "date" +ask.en = "the date" +ask.fr = "la date " +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "date", + "ask": { + "en": "the date", + "fr": "la date" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Time +This type will ask the user to input a Time (hours and minutes). + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "time" +ask.en = "time" +ask.fr = "l horaire" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "date", + "ask": { + "en": "time", + "fr": "l horaire" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### File +This type will ask the user to input a file. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = file"" +ask.en = "the file" +ask.fr = "le fichier" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "file", + "ask": { + "en": "the file", + "fr": "le fichier" + } +}, +``` +[/ui-tab] +[/ui-tabs] From 40124f04cc3b6e37616c32666a79fe3801e104a7 Mon Sep 17 00:00:00 2001 From: Thibaud WOJTOWICZ Date: Sat, 14 Aug 2021 23:17:32 +0200 Subject: [PATCH 5/8] packaging_apps_arguments_format.fr.md --- .../packaging_apps_arguments_format.fr.md | 516 ++++++++++++++++++ 1 file changed, 516 insertions(+) create mode 100644 pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.fr.md diff --git a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.fr.md b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.fr.md new file mode 100644 index 000000000..b96785990 --- /dev/null +++ b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.fr.md @@ -0,0 +1,516 @@ +--- +title: YunoHost Arguments Format +template: docs +taxonomy: + category: docs +routes: + default: '/packaging_apps_arguments_format' +--- + +Dans le développement d'applications YunoHost, il y a plusieurs endroits où vous pouvez écrire des questions pour votre +utilisateur comme dans `manifest.json/toml`, `config_panel.json/toml` ou `actions.json/toml`. + +Cette page documente ce format et tous les types de questions disponibles que vous pouvez poser à votre utilisateur. +Sauf indication contraire, ce format s'applique partout où il est utilisable ( à l'heure actuelle : +les arguments d'installation dans `manifest.json/toml`, `config_panel.json/toml` et `actions.json/toml`) + +Pour aider à la comprehension, les titres sont en français.i Cependant dans le code toml ou javascript, +le type doit être en anglais (comme dans les exemples). + +## Format général des arguments Yunohost + +The general format for an argument looks like this: +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "one_of_the_available_type" +ask.en = "the question in english" +ask.fr = "la question en français" +help.en = "some help text in english" # optional +help.fr = "un peu d aide en français" # optional +example = "an example value" # optional +default = "some stuff" # optional, not available for all types +optional = true # optional, will skip if not answered +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "one_of_the_available_type", // "sting" is not specified + "ask": { + "en": "the question in english", + "fr": "la question en français" + }, + "help": { + "en": "some help text in english", + "fr": "un peu d aide en français" + }, + "example": "an example value", // optional + "default", "some stuff", // optional, not available for all types + "optional": true // optional, will skip if not answered +}, +``` +[/ui-tab] +[/ui-tabs] + +## Tous les types disponibles + +### Chaîne de caractères + +C'est le type le plus simple et le type par défaut si vous n'en spécifiez pas. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "string" # optional +ask.en = "the question in english" +ask.fr = "la question en français" +example = "an example value" # optional +default = "some stuff" # optional +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "string", // optional + "ask": { + "en": "the question in english", + "fr": "la question en français" + }, + "default": "some stuff", // optional + "example": "an example value" +}, +``` +[/ui-tab] +[/ui-tabs] + +### Chaîne de caractères avec choix + +Comme la chaine de caractères, sauf que l'utilisateur doit choisir dans une liste de chaîne de caractères spécifiques. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "string" +ask.en = "the question in english" +ask.fr = "la question en français" +example = "an example value" # optional +choices = ["fr", "en"] +default = "en" # optional +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "string", + "ask": { + "en": "the question in english", + "fr": "la question en français" + }, + "example": "an example value", + "choices": ["fr", "en"], + "default": "en" // optional +}, +``` +[/ui-tab] +[/ui-tabs] + +### Domaine + +Ce type demandera à l'utilisateur de choisir l'un des domaines de son instance YunoHost. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "domain" +ask.en = "the question in english" +ask.fr = "la question en français" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "domain", + "ask": { + "en": "the question in english", + "fr": "la question en français" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Chemin (en: Path) + +Ce type demandera à l'utilisateur de choisir le chemin de l'url (généralement pour arriver à un domaine) +comme "chemin/vers/mon/application" + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "path" +ask.en = "the question in english" +ask.fr = "la question en français" +default = "/my_app" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "path", + "ask": { + "en": "the question in english", + "fr": "la question en français" + }, + "default": "/my_app"cd + +}, +``` +[/ui-tab] +[/ui-tabs] + +### Utilisateur + +Ce type demandera à l'utilisateur de selectionner un utilisateur dans la liste des utilisateurs +de son instance Yunohost. Généralement, cela est utilisé pour sélectionner celui qui va être l'administrateur +ou qui va avoir accès à cette application. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "user" +ask.en = "the question in english" +ask.fr = "la question en français" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "user", + "ask": { + "en": "the question in english", + "fr": "la question en français" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Mot de passe + +Ce type demande à l'utilisateur de saisir un mot de passe. +Celui-ci est généralement utilisé pour saisir le mot de passe permettant +de créer un compte sur l'application. + +En ligne de command, il s comporte comme n'importe quelle demande de mot de passe +et n'affichera aucun caractère (pas de "\*\*\*...") pour des questions de sécurité. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "password" +ask.en = "the password" +ask.fr = "le mot de passe" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "password", + "ask": { + "en": "the password", + "fr": "le mot de passe" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Booléen +Ce type demande à l'utilisateur de répondre à question par Vrais ou Faux + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "boolean" +ask.en = "the question in english" +ask.fr = "la question en français" +default = true +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "boolean", + "ask": { + "en": "the question in english", + "fr": "la question en français" + }, + "default": true +}, +``` +[/ui-tab] +[/ui-tabs] + +### Nombre + +Comme le type string mais uniquement pour les nombres. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "number" +ask.en = "the question in english" +ask.fr = "la question en français" +default = 0 +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "number", + "ask": { + "en": "the question in english", + "fr": "la question en français" + }, + "default": 0 +}, +``` +[/ui-tab] +[/ui-tabs] + +### Application + +Ce type demande à l'utilisateur de selectionner une application dans la liste +des apllications installées sur l'instance Yunohost. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "app" +ask.en = "the question in english" +ask.fr = "la question en français" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "app", + "ask": { + "en": "the question in english", + "fr": "la question en français" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Information + +C'est un type spécial qui permet au packageur de l'application à écrire un text +qui est simplement affiché. C'est utile pour spécifier un peu le context. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "display_text" +ask.en = "the text in english" +ask.fr = "le text en français" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "display_text", + "ask": { + "en": "the text in english", + "fr": "le text en français" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Plage de valeurs + +Ce type demande à l'utilisateur de choisir une valeur numérique entre de bornes. +Une valeur précise n'est cependant pas concidérée comme importante. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "email" +ask.en = "Put a range" +ask.fr = "Indiquer " +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "email", + "ask": { + "en": "the email address", + "fr": "l adresse courriel" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Adresse courriel (email) + +Ce type demande à l'utilisateur de renseigner une adresse courriel. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "email" +ask.en = "the email address" +ask.fr = "l adresse courriel" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "email", + "ask": { + "en": "the email address", + "fr": "l adresse courriel" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Url + +Ce type demande à l'utilisateur de renseigner une url. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "email" +ask.en = "the url" +ask.fr = "l url" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "url", + "ask": { + "en": "the url", + "fr": "l url" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Date +Ce type demande à l'utilisateur de renseigner une date. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "date" +ask.en = "the date" +ask.fr = "la date " +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "date", + "ask": { + "en": "the date", + "fr": "la date" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Temps | Horaire + +Ce type demande à l'utilisateur de renseigner un horaire. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "time" +ask.en = "time" +ask.fr = "l horaire" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "date", + "ask": { + "en": "time", + "fr": "l horaire" + } +}, +``` +[/ui-tab] +[/ui-tabs] + +### Fichier + +Ce type demande à l'utilisateur d'ajouter un fichier. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = file"" +ask.en = "the file" +ask.fr = "le fichier" +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "file", + "ask": { + "en": "the file", + "fr": "le fichier" + } +}, +``` +[/ui-tab] +[/ui-tabs] From b007af915b2e35f89e7fdfe7b2c7d16bbeed5e92 Mon Sep 17 00:00:00 2001 From: Thibaud WOJTOWICZ Date: Sat, 14 Aug 2021 23:23:08 +0200 Subject: [PATCH 6/8] number is just after string type --- .../packaging_apps_arguments_format.fr.md | 62 +++++++++---------- .../packaging_apps_arguments_format.md | 62 +++++++++---------- 2 files changed, 62 insertions(+), 62 deletions(-) diff --git a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.fr.md b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.fr.md index b96785990..236acd021 100644 --- a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.fr.md +++ b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.fr.md @@ -113,9 +113,38 @@ default = "en" # optional "en": "the question in english", "fr": "la question en français" }, - "example": "an example value", + "example": "Un exemple de valeur", "choices": ["fr", "en"], - "default": "en" // optional + "default": "en" // optionel +}, +``` +[/ui-tab] +[/ui-tabs] + +### Nombre + +Comme le type chaîne de caractères (en anglais: `string`) mais uniquement pour les nombres. + +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] +```toml +[maybe.some.stuff.before.the_name] +type = "number" +ask.en = "the question in english" +ask.fr = "la question en français" +default = 0 +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "number", + "ask": { + "en": "the question in english", + "fr": "la question en français" + }, + "default": 0 }, ``` [/ui-tab] @@ -268,35 +297,6 @@ default = true [/ui-tab] [/ui-tabs] -### Nombre - -Comme le type string mais uniquement pour les nombres. - -[ui-tabs position="top-left" active="0" theme="lite"] -[ui-tab title="in toml"] -```toml -[maybe.some.stuff.before.the_name] -type = "number" -ask.en = "the question in english" -ask.fr = "la question en français" -default = 0 -``` -[/ui-tab] -[ui-tab title="in json"] -```javascript -{ - "name": "the_name", - "type": "number", - "ask": { - "en": "the question in english", - "fr": "la question en français" - }, - "default": 0 -}, -``` -[/ui-tab] -[/ui-tabs] - ### Application Ce type demande à l'utilisateur de selectionner une application dans la liste diff --git a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md index 4a1aebc49..f3dbfb27c 100644 --- a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md +++ b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.md @@ -118,6 +118,37 @@ default = "en" # optional ``` [/ui-tab] [/ui-tabs] +### Number + +Like string except the user needs to enter a number + +Example in toml: +[ui-tabs position="top-left" active="0" theme="lite"] +[ui-tab title="in toml"] + +```toml +[maybe.some.stuff.before.the_name] +type = "number" +ask.en = "the question in english" +ask.fr = "la question en français" +default = 0 +``` +[/ui-tab] +[ui-tab title="in json"] +```javascript +{ + "name": "the_name", + "type": "number", + "ask": { + "en": "the question in english", + "fr": "la question en français" + }, + "default": 0 +}, +``` +[/ui-tab] +[/ui-tabs] + ### Domain @@ -270,37 +301,6 @@ default = true [/ui-tab] [/ui-tabs] -### Number - -Like string except the user needs to enter a number - -Example in toml: -[ui-tabs position="top-left" active="0" theme="lite"] -[ui-tab title="in toml"] - -```toml -[maybe.some.stuff.before.the_name] -type = "number" -ask.en = "the question in english" -ask.fr = "la question en français" -default = 0 -``` -[/ui-tab] -[ui-tab title="in json"] -```javascript -{ - "name": "the_name", - "type": "number", - "ask": { - "en": "the question in english", - "fr": "la question en français" - }, - "default": 0 -}, -``` -[/ui-tab] -[/ui-tabs] - ### App This type will ask the user to select an application in the list of installed From c19df59bc01a656f1239c30050fd99c8ee65ed63 Mon Sep 17 00:00:00 2001 From: Thibaud WOJTOWICZ Date: Sat, 14 Aug 2021 23:33:34 +0200 Subject: [PATCH 7/8] bon tire --- .../01.arguments_format/packaging_apps_arguments_format.fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.fr.md b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.fr.md index 236acd021..2495769fe 100644 --- a/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.fr.md +++ b/pages/04.contribute/04.packaging_apps/07.arguments/01.arguments_format/packaging_apps_arguments_format.fr.md @@ -1,5 +1,5 @@ --- -title: YunoHost Arguments Format +title: Format des arguments Yunohost template: docs taxonomy: category: docs From 3188adec97568d36207b128eaa6f910badf7fcd9 Mon Sep 17 00:00:00 2001 From: Thibaud WOJTOWICZ Date: Sun, 15 Aug 2021 00:09:16 +0200 Subject: [PATCH 8/8] add packaging_apps_permissions.fr.md --- .../packaging_apps_permissions.fr.md | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 pages/04.contribute/04.packaging_apps/08.groups_permissions/packaging_apps_permissions.fr.md diff --git a/pages/04.contribute/04.packaging_apps/08.groups_permissions/packaging_apps_permissions.fr.md b/pages/04.contribute/04.packaging_apps/08.groups_permissions/packaging_apps_permissions.fr.md new file mode 100644 index 000000000..aed08b543 --- /dev/null +++ b/pages/04.contribute/04.packaging_apps/08.groups_permissions/packaging_apps_permissions.fr.md @@ -0,0 +1,85 @@ +--- +title: User groups and permissions +template: docs +taxonomy: + category: docs +routes: + default: '/packaging_apps_permissions' +--- + +Lors de l'installation d'une nouvelle application par défaut tout les utilisateurs présent sur l'instance Yunohosti y ont accès. +Autrement dit, la permission `app.main` et attribuer à tout les utilisateurs. + +```shell +ynh_permission_update --permission "main" --add visitors +``` + +Si vous souhaitez créer une autorisation personnalisée pour votre application (par ex. pour restreindre l’accès à une interface d’administration), vous pouvez utiliser les helpers suivants : + +```shell +ynh_permission_create --permission "admin" --url "/admin" --allowed "$admin_user" --label "Label for your permission" +``` + +Vous n’avez pas besoin de prendre soin de supprimer les permissions ou de les sauvegarder/restaurer puisque cela est géré par le noyau de YunoHost. + +### Migration depuis l'ancien système de permission + +Lors de la migration ou réparation d'une application utilisant toujours l'ancien système d'autorisation, il faut comprendre que les accès doivent désormais être gérés par les fonctionnalités du noyau, en dehors des scripts de application ! + +Les scripts de l'application doivent uniquement : +- le cas échéant, dans le script d'installation, initialisez la permission principale de l'application comme publique (`groupe "visitors"`) ou privée (`groupe "all_users"`) ou uniquement accessible à des groupes/utilisateurs spécifiques ; +- le cas échéant, créez et initialisez toute autre autorisation spécifique (par exemple pour une interface d'administration) dans le script d'installation (et *peut-être* dans certaines migrations se produisant dans le script de mise à niveau). + +Les scripts d'applications ne doivent absolument ** PAS ** modifier les accès aux applications déjà existantes (y compris les paramètres « non protégés »/« skiped_uris ») dans tous les autres cas, car * cela réinitialiserait toute règle d'accès définie par l'administrateur * ! + +Lors de la migration depuis l'ancienne autorisation, vous devez : +- supprimer toute gestion des paramètres de type `$is_public` ou `$admin_user`, à l'exception de toute question dans le manifeste destinée à *initialiser* l'application avec les autorisations publiques/privées ou spécifiques ; +- supprimer les anciennes autorisations héritées. Découvrez comment il est recommandé de procéder dans l'application example_ynh (en particulier [cet extrait de code](https://github.com/YunoHost/example_ynh/pull/111/files#diff-57aeb84da86cb7420dfedd8e49bc644fb799d5413d01927a0417bde753e8922f)) + + +Cela devrait se résumer à : +```bash +if ynh_legacy_permissions_exists; then + ynh_legacy_permissions_delete_all + + ynh_app_setting_delete --app=$app --key=is_public + + # Create the permission using the new framework (if your app has relevant additional permissions) + ynh_permission_create --permission="admin" --url="/admin" --allowed=$admin +fi +``` +- supprimer tout appel à `yunohost app addaccess` et actions similaires sont désormais obsolètes et dépréciées. +- si votre application utilise LDAP et prend en charge les filtres, utilisez le filtre +`'(&(objectClass=posixAccount)(permission=cn=YOUR_APP.main,ou=permission,dc=yunohost,dc=org))'` +pour autoriser les utilisateurs qui ont ces permissions. ( Une complete documentation du fonctionnement de LDAP est disponible [ici](https://moulinette.readthedocs.io/en/latest/ldap.html) si vous voulez comprendre comment cela fonctionne avec YunoHost. + +#### Fonctionnalités supplémentaires de 4.1 + +- Personnalisation de l'étiquette : c'est le nom affiché aux utilisateurs finaux dans le portail utilisateur. Vous pouvez fournir une étiquette par défaut (par exemple, app.admin peut être étiqueté « interface d'administration »). L'étiquette peut être modifiée ultérieurement par l'administrateur après l'installation. +- Activation/désactivation de la vignette : elle permet choisir si une application est affichée ou non dans le portail utilisateur (si l'utilisateur a l'autorisation correspondante). L'option correspondante s'appelle `show_tile` qui peut être `True` ou `False`. Une seule application peut avoir plusieurs vignettes dans le SSO. L'URL de chaque vignettes correspond au paramètre 'url' de l'autorisation. +- Prise en charge d'URL multiples : une autorisation peut être associée à des URL supplémentaires. Cela donne la possibilité de protéger de nombreuses URL avec la même permission - en particulier pour les cas d'utilisation délicats (par exemple plusieurs parties de l'interface d'administration réparties sur différents sous-pages). +- Autorisation de protection : en tant qu'empaqueteur, vous pouvez choisir de « protéger » une autorisation si vous pensez qu'il n'est pas pertinent +pour l'administrateur d'ajouter/supprimer cette autorisation au groupe de visiteurs. C'est par exemple le cas pour l'autorisation API de Nextcloud, qui dans la grande majorité des cas devrait être conservée publiquement car le client mobile ne passera pas par le SSO. Notez que lors de l'utilisation de l'assistant `ynh_permission_update`, il est toujours possible d'ajouter/supprimer le groupe `visitor` de cette permission. +- Désactivation de l'en-tête d'authentification : certains mécanismes d'authentification d'application n'apprécient pas que SSOwat injecte l'en-tête d'autorisation (qui est un mécanisme essentiel pour le mécanisme de connexion unique). Vous pouvez maintenant choisir de désactiver l'injection de l'en-tête d'authentification de SSOwat pour résoudre ce problème (au lieu du hack précédent consistant à utiliser `skiped_uris`) + + +##### Correspondance entre le ancien et le nouvau système de permission + +| | with auth header | no auth header | +| :---------- | :--------------- | :------------- | +| **public** | unprotected_uris | skipped_uris | +| **private** | protected_uris | N/A | + + +| | with auth header | no auth header | +| :---------- | :------------------------------------------ | :------------------------------------------- | +| **public** | auth_header=True, visitor group allowed | auth_header=False, visitor group allowed | +| **private** | auth_header=True, visitor group not allowed | auth_header=False, visitor group not allowed | + + +Toutes ces fonctionnalitées sont managable via les helper suivant: +- `ynh_permission_create` +- `ynh_permission_url` +- `ynh_permission_update` + +Si vous avez des question, merci de contacter l'équipe app.