refactor: Improve admin settings design

Adding sections permit to be more clear and will help if we add a new "External links" section (#1764)
This commit is contained in:
Massedil
2025-07-03 22:02:50 +02:00
parent 407f5b881e
commit 56facb204a
3 changed files with 430 additions and 412 deletions

View File

@@ -584,6 +584,7 @@
"Increase": "Increase", "Increase": "Increase",
"Increasing creation date": "Increasing creation date", "Increasing creation date": "Increasing creation date",
"Increasing number of members": "Increasing number of members", "Increasing number of members": "Increasing number of members",
"Informations":"Informations",
"Instance": "Instance", "Instance": "Instance",
"Instance Long Description": "Instance Long Description", "Instance Long Description": "Instance Long Description",
"Instance Name": "Instance Name", "Instance Name": "Instance Name",
@@ -849,6 +850,8 @@
"Open user menu": "Open user menu", "Open user menu": "Open user menu",
"Opened reports": "Opened reports", "Opened reports": "Opened reports",
"Or": "Or", "Or": "Or",
"Open": "Open",
"Options":"Options",
"Ordered list": "Ordered list", "Ordered list": "Ordered list",
"Organized": "Organized", "Organized": "Organized",
"Organized by": "Organized by", "Organized by": "Organized by",
@@ -896,6 +899,9 @@
"Pick a profile or a group": "Pick a profile or a group", "Pick a profile or a group": "Pick a profile or a group",
"Pick an identity": "Pick an identity", "Pick an identity": "Pick an identity",
"Pick an instance": "Pick an instance", "Pick an instance": "Pick an instance",
"Pick a profile or a group": "Pick a profile or a group",
"Pick": "Pick",
"Pictures": "Pictures",
"Please add as many details as possible to help identify the problem.": "Please add as many details as possible to help identify the problem.", "Please add as many details as possible to help identify the problem.": "Please add as many details as possible to help identify the problem.",
"Please check your spam folder if you didn't receive the email.": "Please check your spam folder if you didn't receive the email.", "Please check your spam folder if you didn't receive the email.": "Please check your spam folder if you didn't receive the email.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Please contact this instance's Mobilizon admin if you think this is a mistake.", "Please contact this instance's Mobilizon admin if you think this is a mistake.": "Please contact this instance's Mobilizon admin if you think this is a mistake.",
@@ -903,6 +909,7 @@
"Please enter your password to confirm this action.": "Please enter your password to confirm this action.", "Please enter your password to confirm this action.": "Please enter your password to confirm this action.",
"Please make sure the address is correct and that the page hasn't been moved.": "Please make sure the address is correct and that the page hasn't been moved.", "Please make sure the address is correct and that the page hasn't been moved.": "Please make sure the address is correct and that the page hasn't been moved.",
"Please read the {fullRules} published by {instance}'s administrators.": "Please read the {fullRules} published by {instance}'s administrators.", "Please read the {fullRules} published by {instance}'s administrators.": "Please read the {fullRules} published by {instance}'s administrators.",
"Policies" : "Policies",
"Popular groups close to you": "Popular groups close to you", "Popular groups close to you": "Popular groups close to you",
"Popular groups nearby {position}": "Popular groups nearby {position}", "Popular groups nearby {position}": "Popular groups nearby {position}",
"Post": "Post", "Post": "Post",
@@ -1037,6 +1044,7 @@
"SSL/TLS": "SSL/TLS", "SSL/TLS": "SSL/TLS",
"Save": "Save", "Save": "Save",
"Save draft": "Save draft", "Save draft": "Save draft",
"Save instance settings":"Save instance settings",
"Schedule": "Schedule", "Schedule": "Schedule",
"Search": "Search", "Search": "Search",
"Search events, groups, etc.": "Search events, groups, etc.", "Search events, groups, etc.": "Search events, groups, etc.",

View File

@@ -570,6 +570,7 @@
"Increase": "Augmenter", "Increase": "Augmenter",
"Increasing creation date": "Date de création croissante", "Increasing creation date": "Date de création croissante",
"Increasing number of members": "Nombre croissant de membres", "Increasing number of members": "Nombre croissant de membres",
"Informations":"Informations",
"Instances following you": "Instances vous suivant", "Instances following you": "Instances vous suivant",
"Instances you follow": "Instances que vous suivez", "Instances you follow": "Instances que vous suivez",
"Instances": "Instances", "Instances": "Instances",
@@ -857,6 +858,7 @@
"Open main menu": "Ouvrir le menu principal", "Open main menu": "Ouvrir le menu principal",
"Open user menu": "Ouvrir le menu utilisateur", "Open user menu": "Ouvrir le menu utilisateur",
"Open": "Ouvert", "Open": "Ouvert",
"Options":"Options",
"Ordered list": "Liste ordonnée", "Ordered list": "Liste ordonnée",
"Organized by {name}": "Organisé par {name}", "Organized by {name}": "Organisé par {name}",
"Organized by": "Organisé par", "Organized by": "Organisé par",
@@ -905,6 +907,7 @@
"Pick an instance": "Choisir une instance", "Pick an instance": "Choisir une instance",
"Pick a profile or a group": "Choisir un profil ou groupe", "Pick a profile or a group": "Choisir un profil ou groupe",
"Pick": "Choisir", "Pick": "Choisir",
"Pictures": "Images",
"Please add as many details as possible to help identify the problem.": "Merci d'ajouter un maximum de détails afin d'aider à identifier le problème.", "Please add as many details as possible to help identify the problem.": "Merci d'ajouter un maximum de détails afin d'aider à identifier le problème.",
"Please check your spam folder if you didn't receive the email.": "Merci de vérifier votre dossier des indésirables si vous n'avez pas reçu l'e-mail.", "Please check your spam folder if you didn't receive the email.": "Merci de vérifier votre dossier des indésirables si vous n'avez pas reçu l'e-mail.",
"Please contact this instance's Mobilizon admin if you think this is a mistake.": "Veuillez contacter l'administrateur·rice de cette instance Mobilizon si vous pensez quil sagit dune erreur.", "Please contact this instance's Mobilizon admin if you think this is a mistake.": "Veuillez contacter l'administrateur·rice de cette instance Mobilizon si vous pensez quil sagit dune erreur.",
@@ -912,6 +915,7 @@
"Please enter your password to confirm this action.": "Merci d'entrer votre mot de passe pour confirmer cette action.", "Please enter your password to confirm this action.": "Merci d'entrer votre mot de passe pour confirmer cette action.",
"Please make sure the address is correct and that the page hasn't been moved.": "Assurezvous que ladresse est correcte et que la page na pas été déplacée.", "Please make sure the address is correct and that the page hasn't been moved.": "Assurezvous que ladresse est correcte et que la page na pas été déplacée.",
"Please read the {fullRules} published by {instance}'s administrators.": "Merci de lire les {fullRules} publiées par les administrateur·rice·s de {instance}.", "Please read the {fullRules} published by {instance}'s administrators.": "Merci de lire les {fullRules} publiées par les administrateur·rice·s de {instance}.",
"Policies": "Règles",
"Popular groups close to you": "Groupes populaires proches de vous", "Popular groups close to you": "Groupes populaires proches de vous",
"Popular groups nearby {position}": "Groupes populaires près de {position}", "Popular groups nearby {position}": "Groupes populaires près de {position}",
"Postal Code": "Code postal", "Postal Code": "Code postal",
@@ -1047,6 +1051,7 @@
"Rules": "Règles", "Rules": "Règles",
"Save draft": "Enregistrer le brouillon", "Save draft": "Enregistrer le brouillon",
"Save": "Enregistrer", "Save": "Enregistrer",
"Save instance settings":"Sauvegarder les paramètres de l'instance",
"Schedule": "Programme", "Schedule": "Programme",
"Searching…": "Recherche en cours…", "Searching…": "Recherche en cours…",
"Search events, groups, etc.": "Rechercher des événements, des groupes, etc.", "Search events, groups, etc.": "Rechercher des événements, des groupes, etc.",

View File

@@ -7,8 +7,10 @@
]" ]"
/> />
<section v-if="settingsToWrite"> <div v-if="settingsToWrite">
<form @submit.prevent="updateSettings"> <form @submit.prevent="updateSettings">
<section class="mt-4 mb-4 p-4 border rounded shadow-sm bg-white">
<h2>{{ t("Informations") }}</h2>
<o-field :label="t('Instance Name')" label-for="instance-name"> <o-field :label="t('Instance Name')" label-for="instance-name">
<o-input <o-input
v-model="settingsToWrite.instanceName" v-model="settingsToWrite.instanceName"
@@ -17,7 +19,7 @@
/> />
</o-field> </o-field>
<div class="field flex flex-col"> <div class="field flex flex-col">
<label class="" for="instance-description">{{ <label for="instance-description">{{
t("Instance Short Description") t("Instance Short Description")
}}</label> }}</label>
<small> <small>
@@ -35,9 +37,25 @@
/> />
</div> </div>
<div class="field flex flex-col"> <div class="field flex flex-col">
<label class="" for="instance-slogan">{{ <label for="instance-long-description">{{
t("Instance Slogan") t("Instance Long Description")
}}</label> }}</label>
<small>
{{
t(
"A place to explain who you are and the things that set your instance apart. You can use HTML tags."
)
}}
</small>
<o-input
type="textarea"
v-model="settingsToWrite.instanceLongDescription"
rows="4"
id="instance-long-description"
/>
</div>
<div class="field flex flex-col">
<label for="instance-slogan">{{ t("Instance Slogan") }}</label>
<small> <small>
{{ {{
t( t(
@@ -52,12 +70,17 @@
/> />
</div> </div>
<div class="field flex flex-col"> <div class="field flex flex-col">
<label class="" for="instance-contact">{{ t("Contact") }}</label> <label for="instance-contact">{{ t("Contact") }}</label>
<small> <small>
{{ t("Can be an email or a link, or just plain text.") }} {{ t("Can be an email or a link, or just plain text.") }}
</small> </small>
<o-input v-model="settingsToWrite.contact" id="instance-contact" /> <o-input v-model="settingsToWrite.contact" id="instance-contact" />
</div> </div>
</section>
<section class="mt-4 mb-4 p-4 border rounded shadow-sm bg-white">
<h2>{{ t("Pictures") }}</h2>
<label class="field flex flex-col"> <label class="field flex flex-col">
<p>{{ t("Logo") }}</p> <p>{{ t("Logo") }}</p>
<small> <small>
@@ -93,7 +116,9 @@
<label class="field flex flex-col"> <label class="field flex flex-col">
<p>{{ t("Default Picture") }}</p> <p>{{ t("Default Picture") }}</p>
<small> <small>
{{ t("Default picture when an event or group doesn't have one.") }} {{
t("Default picture when an event or group doesn't have one.")
}}
</small> </small>
<picture-upload <picture-upload
v-model:modelValue="defaultPictureFile" v-model:modelValue="defaultPictureFile"
@@ -102,26 +127,10 @@
:maxSize="maxSize" :maxSize="maxSize"
/> />
</label> </label>
<!-- piece of code to manage instance colors </section>
<div class="field flex flex-col">
<label class="" for="primary-color">{{ t("Primary Color") }}</label> <section class="mt-4 mb-4 p-4 border rounded shadow-sm bg-white">
<o-input <h2>{{ t("Options") }}</h2>
type="color"
v-model="settingsToWrite.primaryColor"
id="primary-color"
/>
</div>
<div class="field flex flex-col">
<label class="" for="secondary-color">{{
t("Secondary Color")
}}</label>
<o-input
type="color"
v-model="settingsToWrite.secondaryColor"
id="secondary-color"
/>
</div>
-->
<o-field :label="t('Allow registrations')"> <o-field :label="t('Allow registrations')">
<fieldset> <fieldset>
<o-field> <o-field>
@@ -155,7 +164,7 @@
</fieldset> </fieldset>
</o-field> </o-field>
<div class="field flex flex-col"> <div class="field flex flex-col">
<label class="" for="instance-languages">{{ <label for="instance-languages">{{
t("Instance languages") t("Instance languages")
}}</label> }}</label>
<small> <small>
@@ -175,26 +184,12 @@
<template #empty>{{ t("No languages found") }}</template> <template #empty>{{ t("No languages found") }}</template>
</o-taginput> </o-taginput>
</div> </div>
</section>
<section class="mt-4 mb-4 p-4 border rounded shadow-sm bg-white">
<h2>{{ t("Policies") }}</h2>
<div class="field flex flex-col"> <div class="field flex flex-col">
<label class="" for="instance-long-description">{{ <label for="instance-rules">{{ t("Instance Rules") }}</label>
t("Instance Long Description")
}}</label>
<small>
{{
t(
"A place to explain who you are and the things that set your instance apart. You can use HTML tags."
)
}}
</small>
<o-input
type="textarea"
v-model="settingsToWrite.instanceLongDescription"
rows="4"
id="instance-long-description"
/>
</div>
<div class="field flex flex-col">
<label class="" for="instance-rules">{{ t("Instance Rules") }}</label>
<small> <small>
{{ {{
t( t(
@@ -209,8 +204,8 @@
/> />
</div> </div>
<o-field :label="t('Instance Terms Source')"> <o-field :label="t('Instance Terms Source')">
<div class=""> <div>
<div class=""> <div>
<fieldset> <fieldset>
<legend> <legend>
{{ t("Choose the source of the instance's Terms") }} {{ t("Choose the source of the instance's Terms") }}
@@ -241,7 +236,7 @@
</o-field> </o-field>
</fieldset> </fieldset>
</div> </div>
<div class=""> <div>
<o-notification <o-notification
class="bg-slate-700" class="bg-slate-700"
v-if=" v-if="
@@ -284,7 +279,8 @@
<div <div
class="notification" class="notification"
v-if=" v-if="
settingsToWrite.instanceTermsType === InstanceTermsType.CUSTOM settingsToWrite.instanceTermsType ===
InstanceTermsType.CUSTOM
" "
> >
<b>{{ t("Custom") }}</b> <b>{{ t("Custom") }}</b>
@@ -307,6 +303,7 @@
</div> </div>
</div> </div>
</o-field> </o-field>
<o-field <o-field
:label="t('Instance Terms URL')" :label="t('Instance Terms URL')"
label-for="instanceTermsUrl" label-for="instanceTermsUrl"
@@ -321,7 +318,9 @@
<o-field <o-field
:label="t('Instance Terms')" :label="t('Instance Terms')"
label-for="instanceTerms" label-for="instanceTerms"
v-if="settingsToWrite.instanceTermsType === InstanceTermsType.CUSTOM" v-if="
settingsToWrite.instanceTermsType === InstanceTermsType.CUSTOM
"
> >
<o-input <o-input
type="textarea" type="textarea"
@@ -330,11 +329,13 @@
/> />
</o-field> </o-field>
<o-field :label="t('Instance Privacy Policy Source')"> <o-field :label="t('Instance Privacy Policy Source')">
<div class=""> <div>
<div class=""> <div>
<fieldset> <fieldset>
<legend> <legend>
{{ t("Choose the source of the instance's Privacy Policy") }} {{
t("Choose the source of the instance's Privacy Policy")
}}
</legend> </legend>
<o-field> <o-field>
<o-radio <o-radio
@@ -362,7 +363,7 @@
</o-field> </o-field>
</fieldset> </fieldset>
</div> </div>
<div class=""> <div>
<div <div
class="notification" class="notification"
v-if=" v-if="
@@ -395,7 +396,9 @@
> >
<b>{{ t("URL") }}</b> <b>{{ t("URL") }}</b>
<p class="prose dark:prose-invert"> <p class="prose dark:prose-invert">
{{ t("Set an URL to a page with your own privacy policy.") }} {{
t("Set an URL to a page with your own privacy policy.")
}}
</p> </p>
</div> </div>
<div <div
@@ -453,11 +456,13 @@
id="instancePrivacyPolicy" id="instancePrivacyPolicy"
/> />
</o-field> </o-field>
</section>
<o-button native-type="submit" variant="primary">{{ <o-button native-type="submit" variant="primary">{{
t("Save") t("Save instance settings")
}}</o-button> }}</o-button>
</form> </form>
</section> </div>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>