1
0
mirror of https://github.com/hrfee/jfa-go.git synced 2024-10-18 17:10:11 +00:00

Compare commits

..

No commits in common. "87ef71b415788498096198dcfab678dd853a97d9" and "af61549bf155cf0a3b156426f1df3b8decfbd1d6" have entirely different histories.

15 changed files with 28 additions and 109 deletions

13
api.go
View File

@ -1805,27 +1805,22 @@ func (app *appContext) Logout(gc *gin.Context) {
func (app *appContext) GetLanguages(gc *gin.Context) { func (app *appContext) GetLanguages(gc *gin.Context) {
page := gc.Param("page") page := gc.Param("page")
resp := langDTO{} resp := langDTO{}
switch page { if page == "form" {
case "form":
for key, lang := range app.storage.lang.Form { for key, lang := range app.storage.lang.Form {
resp[key] = lang.Meta.Name resp[key] = lang.Meta.Name
} }
case "admin": } else if page == "admin" {
for key, lang := range app.storage.lang.Admin { for key, lang := range app.storage.lang.Admin {
resp[key] = lang.Meta.Name resp[key] = lang.Meta.Name
} }
case "setup": } else if page == "setup" {
for key, lang := range app.storage.lang.Setup { for key, lang := range app.storage.lang.Setup {
resp[key] = lang.Meta.Name resp[key] = lang.Meta.Name
} }
case "email": } else if page == "email" {
for key, lang := range app.storage.lang.Email { for key, lang := range app.storage.lang.Email {
resp[key] = lang.Meta.Name resp[key] = lang.Meta.Name
} }
case "pwr":
for key, lang := range app.storage.lang.PasswordReset {
resp[key] = lang.Meta.Name
}
} }
if len(resp) == 0 { if len(resp) == 0 {
respond(500, "Couldn't get languages", gc) respond(500, "Couldn't get languages", gc)

View File

@ -658,7 +658,6 @@ func (emailer *Emailer) welcomeValues(username string, expiry time.Time, app *ap
"jellyfinURLString": emailer.lang.WelcomeEmail.get("jellyfinURL"), "jellyfinURLString": emailer.lang.WelcomeEmail.get("jellyfinURL"),
"usernameString": emailer.lang.Strings.get("username"), "usernameString": emailer.lang.Strings.get("username"),
"message": "", "message": "",
"yourAccountWillExpire": "",
} }
if noSub { if noSub {
empty := []string{"jellyfinURL", "username", "yourAccountWillExpire"} empty := []string{"jellyfinURL", "username", "yourAccountWillExpire"}

View File

@ -45,19 +45,6 @@
<p><i class="icon ri-github-fill"></i><a href="https://github.com/hrfee/jfa-go">jfa-go</a></p> <p><i class="icon ri-github-fill"></i><a href="https://github.com/hrfee/jfa-go">jfa-go</a></p>
<p>{{ .strings.version }} <span class="code monospace">{{ .version }}</span></p> <p>{{ .strings.version }} <span class="code monospace">{{ .version }}</span></p>
<p>{{ .strings.commitNoun }} <span class="code monospace">{{ .commit }}</span></p> <p>{{ .strings.commitNoun }} <span class="code monospace">{{ .commit }}</span></p>
<div class="dropdown" tabindex="0">
<span class="button ~info dropdown-button">
<i class="ri-hand-heart-line mr-half"></i>
{{ .strings.donate }}
<span class="ml-1 chev"></span>
</span>
<div class="dropdown-display">
<div class="card ~neutral !low">
<a href="https://github.com/sponsors/hrfee" target="_blank" class="button input ~neutral field mb-half lang-link">GitHub</a>
<a href="https://ko-fi.com/hrfee" target="_blank" class="button input ~neutral field mb-half lang-link">Ko-fi</a>
</div>
</div>
</div>
<p><a href="https://github.com/hrfee/jfa-go/blob/main/LICENSE">Available under the MIT License.</a></p> <p><a href="https://github.com/hrfee/jfa-go/blob/main/LICENSE">Available under the MIT License.</a></p>
<pre class="monospace">{{ .license }}</pre> <pre class="monospace">{{ .license }}</pre>
</div> </div>

View File

@ -376,18 +376,7 @@
<input type="text" class="input ~neutral !normal mt-half" id="password_resets-watch_directory" placeholder="/config/jellyfin"> <input type="text" class="input ~neutral !normal mt-half" id="password_resets-watch_directory" placeholder="/config/jellyfin">
<p class="support mb-1">{{ .lang.PasswordResets.pathToJellyfinNotice }}</p> <p class="support mb-1">{{ .lang.PasswordResets.pathToJellyfinNotice }}</p>
</label> </label>
<label class="switch"> <label class="label">
<input type="checkbox" id="password_resets-link_reset"><span>{{ .lang.PasswordResets.resetLinks }}</span>
<p class="support mb-1">{{ .lang.PasswordResets.resetLinksNotice }}</p>
</label>
<label class="row label">
<p class="mt-half">{{ .lang.PasswordResets.resetLinksLanguage }}</p>
<div class="select ~neutral !normal mt-half mb-1">
<select id="password_resets-language">
</select>
</div>
</label>
<label class="row label">
<span class="mt-half">{{ .lang.Strings.emailSubject }}</span> <span class="mt-half">{{ .lang.Strings.emailSubject }}</span>
<input type="text" class="input ~neutral !normal mt-half mb-1" id="password_resets-subject" placeholder="{{ .emailLang.PasswordReset.title }}"> <input type="text" class="input ~neutral !normal mt-half mb-1" id="password_resets-subject" placeholder="{{ .emailLang.PasswordReset.title }}">
</label> </label>

View File

@ -53,7 +53,6 @@
"preview": "Preview", "preview": "Preview",
"reset": "Reset", "reset": "Reset",
"edit": "Edit", "edit": "Edit",
"donate": "Donate",
"extendExpiry": "Extend expiry", "extendExpiry": "Extend expiry",
"customizeEmails": "Customize Emails", "customizeEmails": "Customize Emails",
"customizeEmailsDescription": "If you don't want to use jfa-go's email templates, you can create your own using Markdown.", "customizeEmailsDescription": "If you don't want to use jfa-go's email templates, you can create your own using Markdown.",

View File

@ -1,6 +1,6 @@
{ {
"meta": { "meta": {
"name": "Español(ES)" "name": "Español (ES)"
}, },
"strings": { "strings": {
"invites": "Invitaciones", "invites": "Invitaciones",
@ -13,7 +13,7 @@
"inviteNumberOfUses": "Números de usos", "inviteNumberOfUses": "Números de usos",
"inviteDuration": "Duración de invitación", "inviteDuration": "Duración de invitación",
"warning": "Advertencia", "warning": "Advertencia",
"inviteInfiniteUsesWarning": "Las invitaciones con usos infinitos pueden usarse abusivamente", "inviteInfiniteUsesWarning": "Las invitaciones con usos infinitos pueden usarse abusivamente.",
"inviteSendToEmail": "Enviar a", "inviteSendToEmail": "Enviar a",
"login": "Acceso", "login": "Acceso",
"logout": "Cerrar sesión", "logout": "Cerrar sesión",

View File

@ -76,21 +76,7 @@
"preview": "Aperçu", "preview": "Aperçu",
"reset": "Réinitialiser", "reset": "Réinitialiser",
"edit": "Éditer", "edit": "Éditer",
"customizeEmails": "Personnaliser les e-mails", "customizeEmails": "Personnaliser les e-mails"
"inviteDuration": "Durée de l'invitation",
"enabled": "Activé",
"disabled": "Désactivé",
"reEnable": "Ré-activé",
"disable": "Désactivé",
"admin": "Administrateur",
"expiry": "Expiration",
"advancedSettings": "Paramètres avancés",
"userExpiry": "Expiration de l'utilisateur",
"updates": "Mises à jour",
"update": "Mise à jour",
"download": "Téléchargement",
"search": "Recherche",
"conditionals": "Conditions"
}, },
"notifications": { "notifications": {
"changedEmailAddress": "Adresse e-mail modifiée de {n}.", "changedEmailAddress": "Adresse e-mail modifiée de {n}.",
@ -122,8 +108,7 @@
"errorSendWelcomeEmail": "Echec lors de l'envoi du mail de bienvenue (vérifier la console/les journaux)", "errorSendWelcomeEmail": "Echec lors de l'envoi du mail de bienvenue (vérifier la console/les journaux)",
"sentAnnouncement": "Annonce envoyée.", "sentAnnouncement": "Annonce envoyée.",
"saveEmail": "Email enregistré.", "saveEmail": "Email enregistré.",
"errorSaveEmail": "Échec de l'enregistrement de l'e-mail.", "errorSaveEmail": "Échec de l'enregistrement de l'e-mail."
"updateApplied": "Mise à jour appliquée, veuillez redémarrer."
}, },
"quantityStrings": { "quantityStrings": {
"modifySettingsFor": { "modifySettingsFor": {

View File

@ -1,6 +1,6 @@
{ {
"meta": { "meta": {
"name": "Español(ES)" "name": "Español (ES)"
}, },
"strings": { "strings": {
"username": "Nombre de usuario", "username": "Nombre de usuario",

View File

@ -1,6 +1,6 @@
{ {
"meta": { "meta": {
"name": "Español(ES)" "name": "Español (ES)"
}, },
"strings": { "strings": {
"ifItWasNotYou": "Si no fue usted, ignore este correo electrónico.", "ifItWasNotYou": "Si no fue usted, ignore este correo electrónico.",

View File

@ -28,8 +28,7 @@
"ifItWasYou": "Si c'était bien toi, renseigne le code PIN en dessous.", "ifItWasYou": "Si c'était bien toi, renseigne le code PIN en dessous.",
"codeExpiry": "Ce code expirera le {date}, à {time} UTC, soit dans {expiresInMinutes}.", "codeExpiry": "Ce code expirera le {date}, à {time} UTC, soit dans {expiresInMinutes}.",
"pin": "PIN", "pin": "PIN",
"name": "Réinitialisation du mot de passe", "name": "Réinitialisation du mot de passe"
"ifItWasYouLink": "Si c'était bien toi, clique sur le lien en dessous."
}, },
"userDeleted": { "userDeleted": {
"title": "Ton compte a été désactivé - Jellyfin", "title": "Ton compte a été désactivé - Jellyfin",
@ -41,7 +40,7 @@
"hello": "Salut", "hello": "Salut",
"youHaveBeenInvited": "Tu as été invité à rejoindre Jellyfin.", "youHaveBeenInvited": "Tu as été invité à rejoindre Jellyfin.",
"toJoin": "Pour continuer, suis le lien en dessous.", "toJoin": "Pour continuer, suis le lien en dessous.",
"inviteExpiry": "L'invitation expirera le {date}, à {time}, soit dans {expiresInMinutes}, alors fais vite.", "inviteExpiry": "L'invitation expirera le {date}, à {time}, soit dans {expiresInMinutes}, alors fais vite !",
"linkButton": "Lien", "linkButton": "Lien",
"name": "Courriel d'invitation" "name": "Courriel d'invitation"
}, },
@ -50,29 +49,12 @@
"title": "Bienvenue sur Jellyfin", "title": "Bienvenue sur Jellyfin",
"welcome": "Bienvenue sur Jellyfin !", "welcome": "Bienvenue sur Jellyfin !",
"jellyfinURL": "URL", "jellyfinURL": "URL",
"name": "Courriel de bienvenue", "name": "Courriel de bienvenue"
"yourAccountWillExpire": "Ton compte expirera le {date}."
}, },
"emailConfirmation": { "emailConfirmation": {
"title": "Confirmez votre adresse e-mail - Jellyfin", "title": "Confirmez votre adresse e-mail - Jellyfin",
"clickBelow": "Clique sur le lien ci-dessous pour confirmer ton adresse e-mail et commencer à utiliser Jellyfin.", "clickBelow": "Clique sur le lien ci-dessous pour confirmer ton adresse e-mail et commencer à utiliser Jellyfin.",
"confirmEmail": "Confirmer l'adresse e-mail", "confirmEmail": "Confirmer l'adresse e-mail",
"name": "Email de confirmation" "name": "Email de confirmation"
},
"userExpired": {
"contactTheAdmin": "Contacte l'administrateur pour plus d'informations.",
"name": "Utilisateur expiré",
"title": "Ton compte a expiré - Jellyfin",
"yourAccountHasExpired": "Ton compte a expiré."
},
"userDisabled": {
"name": "Utilisateur désactivé",
"title": "Ton compte a été désactivé - Jellyfin",
"yourAccountWasDisabled": "Ton compte a été désactivé."
},
"userEnabled": {
"name": "Utilisateur activé",
"title": "Ton compte a été ré-activé - Jellyfin",
"yourAccountWasEnabled": "Ton compte a été ré-activé."
} }
} }

View File

@ -1,12 +0,0 @@
{
"meta": {
"name": "Español (ES)"
},
"strings": {
"passwordReset": "Cambiar contraseña",
"resetFailed": "Error al cambiar contraseña",
"tryAgain": "Por favor intente nuevamente.",
"youCanLogin": "Ahora puedes logearte con el codigo como contraseña.",
"changeYourPassword": "Recuerda cambiar tu contraseña luego de iniciar sesión."
}
}

View File

@ -76,7 +76,7 @@
}, },
"ombi": { "ombi": {
"title": "Ombi", "title": "Ombi",
"description": "By connecting to Ombi, both a Jellyfin and Ombi account will be created when a user joins through jfa-go. After setup is finished, go to Settings to set a default profile for new ombi users.", "description": "By connecting to Ombi, both a Jellyfin and Ombi account will be created when a user joins through jfa-go. After setup if finished, go to Settings to set a default profile for new ombi users.",
"apiKeyNotice": "Find this in the first tab of Ombi settings." "apiKeyNotice": "Find this in the first tab of Ombi settings."
}, },
"email": { "email": {
@ -108,10 +108,7 @@
"title": "Password Resets", "title": "Password Resets",
"description": "When a user tries to reset their password, Jellyfin creates a file named 'passwordreset-*.json' which contains a PIN. jfa-go reads the file and sends the PIN to the user.", "description": "When a user tries to reset their password, Jellyfin creates a file named 'passwordreset-*.json' which contains a PIN. jfa-go reads the file and sends the PIN to the user.",
"pathToJellyfin": "Path to Jellyfin configuration directory", "pathToJellyfin": "Path to Jellyfin configuration directory",
"pathToJellyfinNotice": "If you don't know where this is, try resetting your password in Jellyfin. A popup with '<path to jellyfin>/passwordreset-*.json' will appear.", "pathToJellyfinNotice": "If you don't know where this is, try resetting your password in Jellyfin. A popup with '<path to jellyfin>/passwordreset-*.json' will appear."
"resetLinks": "Send a link instead of a PIN",
"resetLinksNotice": "If Ombi integration is enabled, use this to sync Jellyfin password resets with Ombi.",
"resetLinksLanguage": "Default reset link language"
}, },
"passwordValidation": { "passwordValidation": {
"title": "Password Validation", "title": "Password Validation",

View File

@ -1,6 +1,6 @@
{ {
"meta": { "meta": {
"name": "Español(ES)" "name": "Español (ES)"
}, },
"strings": { "strings": {
"pageTitle": "Configuración - jfa-go", "pageTitle": "Configuración - jfa-go",
@ -30,7 +30,7 @@
}, },
"language": { "language": {
"title": "Lenguaje", "title": "Lenguaje",
"description": "Las traducciones de la comunidad están disponibles para la mayor parte de jfa-go. Puede elegir los idiomas predeterminados a continuación, pero los usuarios aún pueden cambiarlo si lo desean. Si quieres ayudar a traducir, regístrate en {n} para empezar a contribuir!", "description": "Las traducciones de la comunidad están disponibles para la mayor parte de jfa-go. Puede elegir los idiomas predeterminados a continuación, pero los usuarios aún pueden cambiarlo si lo desean. Si quieres ayudar a traducir, regístrate en {n} para empezar a contribuir.",
"defaultAdminLang": "Idioma de administrador predeterminado", "defaultAdminLang": "Idioma de administrador predeterminado",
"defaultFormLang": "Idioma de creación de cuenta predeterminado", "defaultFormLang": "Idioma de creación de cuenta predeterminado",
"defaultEmailLang": "Idioma de correo electrónico predeterminado" "defaultEmailLang": "Idioma de correo electrónico predeterminado"
@ -75,7 +75,7 @@
"testConnection": "Probar conexión" "testConnection": "Probar conexión"
}, },
"ombi": { "ombi": {
"title": "Ombi.", "title": "Ombi",
"description": "Al conectarse a Ombi, se creará una cuenta de Jellyfin y Ombi cuando un usuario se una a través de jfa-go. Una vez finalizada la configuración, vaya a Configuración para establecer un perfil predeterminado para los nuevos usuarios de ombi.", "description": "Al conectarse a Ombi, se creará una cuenta de Jellyfin y Ombi cuando un usuario se una a través de jfa-go. Una vez finalizada la configuración, vaya a Configuración para establecer un perfil predeterminado para los nuevos usuarios de ombi.",
"apiKeyNotice": "Encuentra esto en la primera pestaña de la configuración de Ombi." "apiKeyNotice": "Encuentra esto en la primera pestaña de la configuración de Ombi."
}, },

View File

@ -62,7 +62,7 @@
<mj-text mj-class="text" font-size="16px" font-family="Noto Sans, Helvetica, Arial, sans-serif"> <mj-text mj-class="text" font-size="16px" font-family="Noto Sans, Helvetica, Arial, sans-serif">
<h3>{{ .welcome }}</h3> <h3>{{ .welcome }}</h3>
<p>{{ .youCanLoginWith }}:</p> <p>{{ .youCanLoginWith }}:</p>
{{ .jellyfinURLString }}: <a href="{{ .jellyfinURL }}">{{ .jellyfinURL }}</a> {{ .jellyfinURLString }}: <a href="{{ .jellyfinURLVal }}">{{ .jellyfinURL }}</a>
<p>{{ .usernameString }}: <i>{{ .username }}</i></p> <p>{{ .usernameString }}: <i>{{ .username }}</i></p>
<p>{{ .yourAccountWillExpire }}</p> <p>{{ .yourAccountWillExpire }}</p>
</mj-text> </mj-text>

View File

@ -187,8 +187,8 @@ class Select {
} }
class LangSelect extends Select { class LangSelect extends Select {
constructor(page: string, el: HTMLElement, depends?: string, dependsTrue?: boolean, section?: string, setting?: string) { constructor(page: string, el: HTMLElement) {
super(el, depends, dependsTrue, section, setting); super(el);
_get("/lang/" + page, null, (req: XMLHttpRequest) => { _get("/lang/" + page, null, (req: XMLHttpRequest) => {
if (req.readyState == 4 && req.status == 200) { if (req.readyState == 4 && req.status == 200) {
for (let code in req.response) { for (let code in req.response) {
@ -256,9 +256,7 @@ const settings = {
"password_resets": { "password_resets": {
"enabled": new Checkbox(get("password_resets-enabled"), "", false, "password_resets", "enabled"), "enabled": new Checkbox(get("password_resets-enabled"), "", false, "password_resets", "enabled"),
"watch_directory": new Input(get("password_resets-watch_directory"), "", "", "enabled", true, "password_resets"), "watch_directory": new Input(get("password_resets-watch_directory"), "", "", "enabled", true, "password_resets"),
"subject": new Input(get("password_resets-subject"), "", "", "enabled", true, "password_resets"), "subject": new Input(get("password_resets-subject"), "", "", "enabled", true, "password_resets")
"link_reset": new Checkbox(get("password_resets-link_reset"), "enabled", true, "password_resets", "link_reset"),
"language": new LangSelect("pwr", get("password_resets-language"), "link_reset", true, "password_resets", "language")
}, },
"notifications": { "notifications": {
"enabled": new Checkbox(get("notifications-enabled")) "enabled": new Checkbox(get("notifications-enabled"))