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:
@@ -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.",
|
||||||
|
|||||||
@@ -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 qu’il s’agit d’une 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 qu’il s’agit d’une 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.": "Assurez‐vous que l’adresse est correcte et que la page n’a pas été déplacée.",
|
"Please make sure the address is correct and that the page hasn't been moved.": "Assurez‐vous que l’adresse est correcte et que la page n’a 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.",
|
||||||
|
|||||||
@@ -7,123 +7,132 @@
|
|||||||
]"
|
]"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<section v-if="settingsToWrite">
|
<div v-if="settingsToWrite">
|
||||||
<form @submit.prevent="updateSettings">
|
<form @submit.prevent="updateSettings">
|
||||||
<o-field :label="t('Instance Name')" label-for="instance-name">
|
<section class="mt-4 mb-4 p-4 border rounded shadow-sm bg-white">
|
||||||
<o-input
|
<h2>{{ t("Informations") }}</h2>
|
||||||
v-model="settingsToWrite.instanceName"
|
<o-field :label="t('Instance Name')" label-for="instance-name">
|
||||||
id="instance-name"
|
<o-input
|
||||||
expanded
|
v-model="settingsToWrite.instanceName"
|
||||||
/>
|
id="instance-name"
|
||||||
</o-field>
|
expanded
|
||||||
<div class="field flex flex-col">
|
/>
|
||||||
<label class="" for="instance-description">{{
|
</o-field>
|
||||||
t("Instance Short Description")
|
<div class="field flex flex-col">
|
||||||
}}</label>
|
<label for="instance-description">{{
|
||||||
<small>
|
t("Instance Short Description")
|
||||||
{{
|
}}</label>
|
||||||
t(
|
<small>
|
||||||
"Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph."
|
{{
|
||||||
)
|
t(
|
||||||
}}
|
"Displayed on homepage and meta tags. Describe what Mobilizon is and what makes this instance special in a single paragraph."
|
||||||
</small>
|
)
|
||||||
<o-input
|
}}
|
||||||
type="textarea"
|
</small>
|
||||||
v-model="settingsToWrite.instanceDescription"
|
<o-input
|
||||||
rows="2"
|
type="textarea"
|
||||||
id="instance-description"
|
v-model="settingsToWrite.instanceDescription"
|
||||||
/>
|
rows="2"
|
||||||
</div>
|
id="instance-description"
|
||||||
<div class="field flex flex-col">
|
/>
|
||||||
<label class="" for="instance-slogan">{{
|
</div>
|
||||||
t("Instance Slogan")
|
<div class="field flex flex-col">
|
||||||
}}</label>
|
<label for="instance-long-description">{{
|
||||||
<small>
|
t("Instance Long Description")
|
||||||
{{
|
}}</label>
|
||||||
t(
|
<small>
|
||||||
'A short tagline for your instance homepage. Defaults to "Gather ⋅ Organize ⋅ Mobilize"'
|
{{
|
||||||
)
|
t(
|
||||||
}}
|
"A place to explain who you are and the things that set your instance apart. You can use HTML tags."
|
||||||
</small>
|
)
|
||||||
<o-input
|
}}
|
||||||
v-model="settingsToWrite.instanceSlogan"
|
</small>
|
||||||
:placeholder="t('Gather ⋅ Organize ⋅ Mobilize')"
|
<o-input
|
||||||
id="instance-slogan"
|
type="textarea"
|
||||||
/>
|
v-model="settingsToWrite.instanceLongDescription"
|
||||||
</div>
|
rows="4"
|
||||||
<div class="field flex flex-col">
|
id="instance-long-description"
|
||||||
<label class="" for="instance-contact">{{ t("Contact") }}</label>
|
/>
|
||||||
<small>
|
</div>
|
||||||
{{ t("Can be an email or a link, or just plain text.") }}
|
<div class="field flex flex-col">
|
||||||
</small>
|
<label for="instance-slogan">{{ t("Instance Slogan") }}</label>
|
||||||
<o-input v-model="settingsToWrite.contact" id="instance-contact" />
|
<small>
|
||||||
</div>
|
{{
|
||||||
<label class="field flex flex-col">
|
t(
|
||||||
<p>{{ t("Logo") }}</p>
|
'A short tagline for your instance homepage. Defaults to "Gather ⋅ Organize ⋅ Mobilize"'
|
||||||
<small>
|
)
|
||||||
{{
|
}}
|
||||||
t(
|
</small>
|
||||||
"Logo of the instance. Defaults to the upstream Mobilizon logo."
|
<o-input
|
||||||
)
|
v-model="settingsToWrite.instanceSlogan"
|
||||||
}}
|
:placeholder="t('Gather ⋅ Organize ⋅ Mobilize')"
|
||||||
</small>
|
id="instance-slogan"
|
||||||
<picture-upload
|
/>
|
||||||
v-model:modelValue="instanceLogoFile"
|
</div>
|
||||||
:defaultImage="settingsToWrite.instanceLogo"
|
<div class="field flex flex-col">
|
||||||
:textFallback="t('Logo')"
|
<label for="instance-contact">{{ t("Contact") }}</label>
|
||||||
:maxSize="maxSize"
|
<small>
|
||||||
/>
|
{{ t("Can be an email or a link, or just plain text.") }}
|
||||||
</label>
|
</small>
|
||||||
<label class="field flex flex-col">
|
<o-input v-model="settingsToWrite.contact" id="instance-contact" />
|
||||||
<p>{{ t("Favicon") }}</p>
|
</div>
|
||||||
<small>
|
</section>
|
||||||
{{
|
|
||||||
t(
|
<section class="mt-4 mb-4 p-4 border rounded shadow-sm bg-white">
|
||||||
"Browser tab icon and PWA icon of the instance. Defaults to the upstream Mobilizon icon."
|
<h2>{{ t("Pictures") }}</h2>
|
||||||
)
|
|
||||||
}}
|
<label class="field flex flex-col">
|
||||||
</small>
|
<p>{{ t("Logo") }}</p>
|
||||||
<picture-upload
|
<small>
|
||||||
v-model:modelValue="instanceFaviconFile"
|
{{
|
||||||
:defaultImage="settingsToWrite.instanceFavicon"
|
t(
|
||||||
:textFallback="t('Favicon')"
|
"Logo of the instance. Defaults to the upstream Mobilizon logo."
|
||||||
:maxSize="maxSize"
|
)
|
||||||
/>
|
}}
|
||||||
</label>
|
</small>
|
||||||
<label class="field flex flex-col">
|
<picture-upload
|
||||||
<p>{{ t("Default Picture") }}</p>
|
v-model:modelValue="instanceLogoFile"
|
||||||
<small>
|
:defaultImage="settingsToWrite.instanceLogo"
|
||||||
{{ t("Default picture when an event or group doesn't have one.") }}
|
:textFallback="t('Logo')"
|
||||||
</small>
|
:maxSize="maxSize"
|
||||||
<picture-upload
|
/>
|
||||||
v-model:modelValue="defaultPictureFile"
|
</label>
|
||||||
:defaultImage="settingsToWrite.defaultPicture"
|
<label class="field flex flex-col">
|
||||||
:textFallback="t('Default Picture')"
|
<p>{{ t("Favicon") }}</p>
|
||||||
:maxSize="maxSize"
|
<small>
|
||||||
/>
|
{{
|
||||||
</label>
|
t(
|
||||||
<!-- piece of code to manage instance colors
|
"Browser tab icon and PWA icon of the instance. Defaults to the upstream Mobilizon icon."
|
||||||
<div class="field flex flex-col">
|
)
|
||||||
<label class="" for="primary-color">{{ t("Primary Color") }}</label>
|
}}
|
||||||
<o-input
|
</small>
|
||||||
type="color"
|
<picture-upload
|
||||||
v-model="settingsToWrite.primaryColor"
|
v-model:modelValue="instanceFaviconFile"
|
||||||
id="primary-color"
|
:defaultImage="settingsToWrite.instanceFavicon"
|
||||||
/>
|
:textFallback="t('Favicon')"
|
||||||
</div>
|
:maxSize="maxSize"
|
||||||
<div class="field flex flex-col">
|
/>
|
||||||
<label class="" for="secondary-color">{{
|
</label>
|
||||||
t("Secondary Color")
|
<label class="field flex flex-col">
|
||||||
}}</label>
|
<p>{{ t("Default Picture") }}</p>
|
||||||
<o-input
|
<small>
|
||||||
type="color"
|
{{
|
||||||
v-model="settingsToWrite.secondaryColor"
|
t("Default picture when an event or group doesn't have one.")
|
||||||
id="secondary-color"
|
}}
|
||||||
/>
|
</small>
|
||||||
</div>
|
<picture-upload
|
||||||
-->
|
v-model:modelValue="defaultPictureFile"
|
||||||
<o-field :label="t('Allow registrations')">
|
:defaultImage="settingsToWrite.defaultPicture"
|
||||||
<fieldset>
|
:textFallback="t('Default Picture')"
|
||||||
|
:maxSize="maxSize"
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="mt-4 mb-4 p-4 border rounded shadow-sm bg-white">
|
||||||
|
<h2>{{ t("Options") }}</h2>
|
||||||
|
<o-field :label="t('Allow registrations')">
|
||||||
|
<fieldset>
|
||||||
<o-field>
|
<o-field>
|
||||||
<o-radio
|
<o-radio
|
||||||
v-model="registrationsMode"
|
v-model="registrationsMode"
|
||||||
@@ -153,311 +162,307 @@
|
|||||||
>
|
>
|
||||||
</o-field>
|
</o-field>
|
||||||
</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>
|
||||||
{{ t("Main languages you/your moderators speak") }}
|
{{ t("Main languages you/your moderators speak") }}
|
||||||
</small>
|
</small>
|
||||||
<o-taginput
|
<o-taginput
|
||||||
v-model="instanceLanguages"
|
v-model="instanceLanguages"
|
||||||
:data="filteredLanguages"
|
:data="filteredLanguages"
|
||||||
allow-autocomplete
|
allow-autocomplete
|
||||||
:open-on-focus="true"
|
:open-on-focus="true"
|
||||||
field="name"
|
field="name"
|
||||||
icon="label"
|
icon="label"
|
||||||
:placeholder="t('Select languages')"
|
:placeholder="t('Select languages')"
|
||||||
@input="getFilteredLanguages"
|
@input="getFilteredLanguages"
|
||||||
id="instance-languages"
|
id="instance-languages"
|
||||||
|
>
|
||||||
|
<template #empty>{{ t("No languages found") }}</template>
|
||||||
|
</o-taginput>
|
||||||
|
</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">
|
||||||
|
<label for="instance-rules">{{ t("Instance Rules") }}</label>
|
||||||
|
<small>
|
||||||
|
{{
|
||||||
|
t(
|
||||||
|
"A place for your code of conduct, rules or guidelines. You can use HTML tags."
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
</small>
|
||||||
|
<o-input
|
||||||
|
type="textarea"
|
||||||
|
v-model="settingsToWrite.instanceRules"
|
||||||
|
id="instance-rules"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<o-field :label="t('Instance Terms Source')">
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<fieldset>
|
||||||
|
<legend>
|
||||||
|
{{ t("Choose the source of the instance's Terms") }}
|
||||||
|
</legend>
|
||||||
|
<o-field>
|
||||||
|
<o-radio
|
||||||
|
v-model="settingsToWrite.instanceTermsType"
|
||||||
|
name="instanceTermsType"
|
||||||
|
:native-value="InstanceTermsType.DEFAULT"
|
||||||
|
>{{ t("Default Mobilizon terms") }}</o-radio
|
||||||
|
>
|
||||||
|
</o-field>
|
||||||
|
<o-field>
|
||||||
|
<o-radio
|
||||||
|
v-model="settingsToWrite.instanceTermsType"
|
||||||
|
name="instanceTermsType"
|
||||||
|
:native-value="InstanceTermsType.URL"
|
||||||
|
>{{ t("Custom URL") }}</o-radio
|
||||||
|
>
|
||||||
|
</o-field>
|
||||||
|
<o-field>
|
||||||
|
<o-radio
|
||||||
|
v-model="settingsToWrite.instanceTermsType"
|
||||||
|
name="instanceTermsType"
|
||||||
|
:native-value="InstanceTermsType.CUSTOM"
|
||||||
|
>{{ t("Custom text") }}</o-radio
|
||||||
|
>
|
||||||
|
</o-field>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<o-notification
|
||||||
|
class="bg-slate-700"
|
||||||
|
v-if="
|
||||||
|
settingsToWrite.instanceTermsType ===
|
||||||
|
InstanceTermsType.DEFAULT
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<b>{{ t("Default") }}</b>
|
||||||
|
<i18n-t
|
||||||
|
tag="p"
|
||||||
|
class="prose dark:prose-invert"
|
||||||
|
keypath="The {default_terms} will be used. They will be translated in the user's language."
|
||||||
|
>
|
||||||
|
<template #default_terms>
|
||||||
|
<a
|
||||||
|
href="https://mobilizon.org/terms.html"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener"
|
||||||
|
>{{ t("default Mobilizon terms") }}</a
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</i18n-t>
|
||||||
|
<b>{{
|
||||||
|
t(
|
||||||
|
"NOTE! The default terms have not been checked over by a lawyer and thus are unlikely to provide full legal protection for all situations for an instance admin using them. They are also not specific to all countries and jurisdictions. If you are unsure, please check with a lawyer."
|
||||||
|
)
|
||||||
|
}}</b>
|
||||||
|
</o-notification>
|
||||||
|
<div
|
||||||
|
class="notification"
|
||||||
|
v-if="
|
||||||
|
settingsToWrite.instanceTermsType === InstanceTermsType.URL
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<b>{{ t("URL") }}</b>
|
||||||
|
<p class="prose dark:prose-invert">
|
||||||
|
{{ t("Set an URL to a page with your own terms.") }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="notification"
|
||||||
|
v-if="
|
||||||
|
settingsToWrite.instanceTermsType ===
|
||||||
|
InstanceTermsType.CUSTOM
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<b>{{ t("Custom") }}</b>
|
||||||
|
<i18n-t
|
||||||
|
tag="p"
|
||||||
|
class="prose dark:prose-invert"
|
||||||
|
keypath="Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template."
|
||||||
|
>
|
||||||
|
<template #mobilizon_terms>
|
||||||
|
<a
|
||||||
|
href="https://mobilizon.org/terms.html"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener"
|
||||||
|
>
|
||||||
|
{{ t("default Mobilizon terms") }}</a
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</i18n-t>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</o-field>
|
||||||
|
|
||||||
|
<o-field
|
||||||
|
:label="t('Instance Terms URL')"
|
||||||
|
label-for="instanceTermsUrl"
|
||||||
|
v-if="settingsToWrite.instanceTermsType === InstanceTermsType.URL"
|
||||||
>
|
>
|
||||||
<template #empty>{{ t("No languages found") }}</template>
|
<o-input
|
||||||
</o-taginput>
|
type="URL"
|
||||||
</div>
|
v-model="settingsToWrite.instanceTermsUrl"
|
||||||
<div class="field flex flex-col">
|
id="instanceTermsUrl"
|
||||||
<label class="" for="instance-long-description">{{
|
/>
|
||||||
t("Instance Long Description")
|
</o-field>
|
||||||
}}</label>
|
<o-field
|
||||||
<small>
|
:label="t('Instance Terms')"
|
||||||
{{
|
label-for="instanceTerms"
|
||||||
t(
|
v-if="
|
||||||
"A place to explain who you are and the things that set your instance apart. You can use HTML tags."
|
settingsToWrite.instanceTermsType === InstanceTermsType.CUSTOM
|
||||||
)
|
"
|
||||||
}}
|
>
|
||||||
</small>
|
<o-input
|
||||||
<o-input
|
type="textarea"
|
||||||
type="textarea"
|
v-model="settingsToWrite.instanceTerms"
|
||||||
v-model="settingsToWrite.instanceLongDescription"
|
id="instanceTerms"
|
||||||
rows="4"
|
/>
|
||||||
id="instance-long-description"
|
</o-field>
|
||||||
/>
|
<o-field :label="t('Instance Privacy Policy Source')">
|
||||||
</div>
|
<div>
|
||||||
<div class="field flex flex-col">
|
<div>
|
||||||
<label class="" for="instance-rules">{{ t("Instance Rules") }}</label>
|
<fieldset>
|
||||||
<small>
|
<legend>
|
||||||
{{
|
{{
|
||||||
t(
|
t("Choose the source of the instance's Privacy Policy")
|
||||||
"A place for your code of conduct, rules or guidelines. You can use HTML tags."
|
}}
|
||||||
)
|
</legend>
|
||||||
}}
|
<o-field>
|
||||||
</small>
|
<o-radio
|
||||||
<o-input
|
v-model="settingsToWrite.instancePrivacyPolicyType"
|
||||||
type="textarea"
|
name="instancePrivacyType"
|
||||||
v-model="settingsToWrite.instanceRules"
|
:native-value="InstancePrivacyType.DEFAULT"
|
||||||
id="instance-rules"
|
>{{ t("Default Mobilizon privacy policy") }}</o-radio
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<o-field :label="t('Instance Terms Source')">
|
|
||||||
<div class="">
|
|
||||||
<div class="">
|
|
||||||
<fieldset>
|
|
||||||
<legend>
|
|
||||||
{{ t("Choose the source of the instance's Terms") }}
|
|
||||||
</legend>
|
|
||||||
<o-field>
|
|
||||||
<o-radio
|
|
||||||
v-model="settingsToWrite.instanceTermsType"
|
|
||||||
name="instanceTermsType"
|
|
||||||
:native-value="InstanceTermsType.DEFAULT"
|
|
||||||
>{{ t("Default Mobilizon terms") }}</o-radio
|
|
||||||
>
|
|
||||||
</o-field>
|
|
||||||
<o-field>
|
|
||||||
<o-radio
|
|
||||||
v-model="settingsToWrite.instanceTermsType"
|
|
||||||
name="instanceTermsType"
|
|
||||||
:native-value="InstanceTermsType.URL"
|
|
||||||
>{{ t("Custom URL") }}</o-radio
|
|
||||||
>
|
|
||||||
</o-field>
|
|
||||||
<o-field>
|
|
||||||
<o-radio
|
|
||||||
v-model="settingsToWrite.instanceTermsType"
|
|
||||||
name="instanceTermsType"
|
|
||||||
:native-value="InstanceTermsType.CUSTOM"
|
|
||||||
>{{ t("Custom text") }}</o-radio
|
|
||||||
>
|
|
||||||
</o-field>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
<div class="">
|
|
||||||
<o-notification
|
|
||||||
class="bg-slate-700"
|
|
||||||
v-if="
|
|
||||||
settingsToWrite.instanceTermsType ===
|
|
||||||
InstanceTermsType.DEFAULT
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<b>{{ t("Default") }}</b>
|
|
||||||
<i18n-t
|
|
||||||
tag="p"
|
|
||||||
class="prose dark:prose-invert"
|
|
||||||
keypath="The {default_terms} will be used. They will be translated in the user's language."
|
|
||||||
>
|
|
||||||
<template #default_terms>
|
|
||||||
<a
|
|
||||||
href="https://mobilizon.org/terms.html"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
>{{ t("default Mobilizon terms") }}</a
|
|
||||||
>
|
>
|
||||||
</template>
|
</o-field>
|
||||||
</i18n-t>
|
<o-field>
|
||||||
<b>{{
|
<o-radio
|
||||||
t(
|
v-model="settingsToWrite.instancePrivacyPolicyType"
|
||||||
"NOTE! The default terms have not been checked over by a lawyer and thus are unlikely to provide full legal protection for all situations for an instance admin using them. They are also not specific to all countries and jurisdictions. If you are unsure, please check with a lawyer."
|
name="instancePrivacyType"
|
||||||
)
|
:native-value="InstancePrivacyType.URL"
|
||||||
}}</b>
|
>{{ t("Custom URL") }}</o-radio
|
||||||
</o-notification>
|
>
|
||||||
<div
|
</o-field>
|
||||||
class="notification"
|
<o-field>
|
||||||
v-if="
|
<o-radio
|
||||||
settingsToWrite.instanceTermsType === InstanceTermsType.URL
|
v-model="settingsToWrite.instancePrivacyPolicyType"
|
||||||
"
|
name="instancePrivacyType"
|
||||||
>
|
:native-value="InstancePrivacyType.CUSTOM"
|
||||||
<b>{{ t("URL") }}</b>
|
>{{ t("Custom text") }}</o-radio
|
||||||
<p class="prose dark:prose-invert">
|
>
|
||||||
{{ t("Set an URL to a page with your own terms.") }}
|
</o-field>
|
||||||
</p>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div>
|
||||||
class="notification"
|
<div
|
||||||
v-if="
|
class="notification"
|
||||||
settingsToWrite.instanceTermsType === InstanceTermsType.CUSTOM
|
v-if="
|
||||||
"
|
settingsToWrite.instancePrivacyPolicyType ===
|
||||||
>
|
InstancePrivacyType.DEFAULT
|
||||||
<b>{{ t("Custom") }}</b>
|
"
|
||||||
<i18n-t
|
|
||||||
tag="p"
|
|
||||||
class="prose dark:prose-invert"
|
|
||||||
keypath="Enter your own terms. HTML tags allowed. The {mobilizon_terms} are provided as template."
|
|
||||||
>
|
>
|
||||||
<template #mobilizon_terms>
|
<b>{{ t("Default") }}</b>
|
||||||
<a
|
<i18n-t
|
||||||
href="https://mobilizon.org/terms.html"
|
tag="p"
|
||||||
target="_blank"
|
class="prose dark:prose-invert"
|
||||||
rel="noopener"
|
keypath="The {default_privacy_policy} will be used. They will be translated in the user's language."
|
||||||
>
|
>
|
||||||
{{ t("default Mobilizon terms") }}</a
|
<template #default_privacy_policy>
|
||||||
>
|
<a
|
||||||
</template>
|
href="https://mobilizon.org/privacy.html"
|
||||||
</i18n-t>
|
target="_blank"
|
||||||
|
rel="noopener"
|
||||||
|
>{{ t("default Mobilizon privacy policy") }}</a
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</i18n-t>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="notification"
|
||||||
|
v-if="
|
||||||
|
settingsToWrite.instancePrivacyPolicyType ===
|
||||||
|
InstancePrivacyType.URL
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<b>{{ t("URL") }}</b>
|
||||||
|
<p class="prose dark:prose-invert">
|
||||||
|
{{
|
||||||
|
t("Set an URL to a page with your own privacy policy.")
|
||||||
|
}}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="notification"
|
||||||
|
v-if="
|
||||||
|
settingsToWrite.instancePrivacyPolicyType ===
|
||||||
|
InstancePrivacyType.CUSTOM
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<b>{{ t("Custom") }}</b>
|
||||||
|
<i18n-t
|
||||||
|
tag="p"
|
||||||
|
class="prose dark:prose-invert"
|
||||||
|
keypath="Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template."
|
||||||
|
>
|
||||||
|
<template #mobilizon_privacy_policy>
|
||||||
|
<a
|
||||||
|
href="https://mobilizon.org/privacy.html"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener"
|
||||||
|
>
|
||||||
|
{{ t("default Mobilizon privacy policy") }}</a
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</i18n-t>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</o-field>
|
||||||
</o-field>
|
<o-field
|
||||||
<o-field
|
:label="t('Instance Privacy Policy URL')"
|
||||||
:label="t('Instance Terms URL')"
|
label-for="instancePrivacyPolicyUrl"
|
||||||
label-for="instanceTermsUrl"
|
v-if="
|
||||||
v-if="settingsToWrite.instanceTermsType === InstanceTermsType.URL"
|
settingsToWrite.instancePrivacyPolicyType ===
|
||||||
>
|
InstancePrivacyType.URL
|
||||||
<o-input
|
"
|
||||||
type="URL"
|
>
|
||||||
v-model="settingsToWrite.instanceTermsUrl"
|
<o-input
|
||||||
id="instanceTermsUrl"
|
type="URL"
|
||||||
/>
|
v-model="settingsToWrite.instancePrivacyPolicyUrl"
|
||||||
</o-field>
|
id="instancePrivacyPolicyUrl"
|
||||||
<o-field
|
/>
|
||||||
:label="t('Instance Terms')"
|
</o-field>
|
||||||
label-for="instanceTerms"
|
<o-field
|
||||||
v-if="settingsToWrite.instanceTermsType === InstanceTermsType.CUSTOM"
|
:label="t('Instance Privacy Policy')"
|
||||||
>
|
label-for="instancePrivacyPolicy"
|
||||||
<o-input
|
v-if="
|
||||||
type="textarea"
|
settingsToWrite.instancePrivacyPolicyType ===
|
||||||
v-model="settingsToWrite.instanceTerms"
|
InstancePrivacyType.CUSTOM
|
||||||
id="instanceTerms"
|
"
|
||||||
/>
|
>
|
||||||
</o-field>
|
<o-input
|
||||||
<o-field :label="t('Instance Privacy Policy Source')">
|
type="textarea"
|
||||||
<div class="">
|
v-model="settingsToWrite.instancePrivacyPolicy"
|
||||||
<div class="">
|
id="instancePrivacyPolicy"
|
||||||
<fieldset>
|
/>
|
||||||
<legend>
|
</o-field>
|
||||||
{{ t("Choose the source of the instance's Privacy Policy") }}
|
</section>
|
||||||
</legend>
|
|
||||||
<o-field>
|
|
||||||
<o-radio
|
|
||||||
v-model="settingsToWrite.instancePrivacyPolicyType"
|
|
||||||
name="instancePrivacyType"
|
|
||||||
:native-value="InstancePrivacyType.DEFAULT"
|
|
||||||
>{{ t("Default Mobilizon privacy policy") }}</o-radio
|
|
||||||
>
|
|
||||||
</o-field>
|
|
||||||
<o-field>
|
|
||||||
<o-radio
|
|
||||||
v-model="settingsToWrite.instancePrivacyPolicyType"
|
|
||||||
name="instancePrivacyType"
|
|
||||||
:native-value="InstancePrivacyType.URL"
|
|
||||||
>{{ t("Custom URL") }}</o-radio
|
|
||||||
>
|
|
||||||
</o-field>
|
|
||||||
<o-field>
|
|
||||||
<o-radio
|
|
||||||
v-model="settingsToWrite.instancePrivacyPolicyType"
|
|
||||||
name="instancePrivacyType"
|
|
||||||
:native-value="InstancePrivacyType.CUSTOM"
|
|
||||||
>{{ t("Custom text") }}</o-radio
|
|
||||||
>
|
|
||||||
</o-field>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
<div class="">
|
|
||||||
<div
|
|
||||||
class="notification"
|
|
||||||
v-if="
|
|
||||||
settingsToWrite.instancePrivacyPolicyType ===
|
|
||||||
InstancePrivacyType.DEFAULT
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<b>{{ t("Default") }}</b>
|
|
||||||
<i18n-t
|
|
||||||
tag="p"
|
|
||||||
class="prose dark:prose-invert"
|
|
||||||
keypath="The {default_privacy_policy} will be used. They will be translated in the user's language."
|
|
||||||
>
|
|
||||||
<template #default_privacy_policy>
|
|
||||||
<a
|
|
||||||
href="https://mobilizon.org/privacy.html"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
>{{ t("default Mobilizon privacy policy") }}</a
|
|
||||||
>
|
|
||||||
</template>
|
|
||||||
</i18n-t>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="notification"
|
|
||||||
v-if="
|
|
||||||
settingsToWrite.instancePrivacyPolicyType ===
|
|
||||||
InstancePrivacyType.URL
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<b>{{ t("URL") }}</b>
|
|
||||||
<p class="prose dark:prose-invert">
|
|
||||||
{{ t("Set an URL to a page with your own privacy policy.") }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="notification"
|
|
||||||
v-if="
|
|
||||||
settingsToWrite.instancePrivacyPolicyType ===
|
|
||||||
InstancePrivacyType.CUSTOM
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<b>{{ t("Custom") }}</b>
|
|
||||||
<i18n-t
|
|
||||||
tag="p"
|
|
||||||
class="prose dark:prose-invert"
|
|
||||||
keypath="Enter your own privacy policy. HTML tags allowed. The {mobilizon_privacy_policy} is provided as template."
|
|
||||||
>
|
|
||||||
<template #mobilizon_privacy_policy>
|
|
||||||
<a
|
|
||||||
href="https://mobilizon.org/privacy.html"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
>
|
|
||||||
{{ t("default Mobilizon privacy policy") }}</a
|
|
||||||
>
|
|
||||||
</template>
|
|
||||||
</i18n-t>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</o-field>
|
|
||||||
<o-field
|
|
||||||
:label="t('Instance Privacy Policy URL')"
|
|
||||||
label-for="instancePrivacyPolicyUrl"
|
|
||||||
v-if="
|
|
||||||
settingsToWrite.instancePrivacyPolicyType ===
|
|
||||||
InstancePrivacyType.URL
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<o-input
|
|
||||||
type="URL"
|
|
||||||
v-model="settingsToWrite.instancePrivacyPolicyUrl"
|
|
||||||
id="instancePrivacyPolicyUrl"
|
|
||||||
/>
|
|
||||||
</o-field>
|
|
||||||
<o-field
|
|
||||||
:label="t('Instance Privacy Policy')"
|
|
||||||
label-for="instancePrivacyPolicy"
|
|
||||||
v-if="
|
|
||||||
settingsToWrite.instancePrivacyPolicyType ===
|
|
||||||
InstancePrivacyType.CUSTOM
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<o-input
|
|
||||||
type="textarea"
|
|
||||||
v-model="settingsToWrite.instancePrivacyPolicy"
|
|
||||||
id="instancePrivacyPolicy"
|
|
||||||
/>
|
|
||||||
</o-field>
|
|
||||||
<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>
|
||||||
|
|||||||
Reference in New Issue
Block a user