mirror of
https://github.com/hrfee/jfa-go.git
synced 2024-12-22 17:10:10 +00:00
accounts: make ombi/jellyseerr appliction optional on "modify settings"
Checkboxes added when applying from a profile.
This commit is contained in:
parent
785395dd20
commit
2a6937228c
@ -1374,12 +1374,12 @@ func (app *appContext) ApplySettings(gc *gin.Context) {
|
|||||||
displayprefs = profile.Displayprefs
|
displayprefs = profile.Displayprefs
|
||||||
}
|
}
|
||||||
policy = profile.Policy
|
policy = profile.Policy
|
||||||
if app.config.Section("ombi").Key("enabled").MustBool(false) {
|
if req.Ombi && app.config.Section("ombi").Key("enabled").MustBool(false) {
|
||||||
if profile.Ombi != nil && len(profile.Ombi) != 0 {
|
if profile.Ombi != nil && len(profile.Ombi) != 0 {
|
||||||
ombi = profile.Ombi
|
ombi = profile.Ombi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if app.config.Section("jellyseerr").Key("enabled").MustBool(false) {
|
if req.Jellyseerr && app.config.Section("jellyseerr").Key("enabled").MustBool(false) {
|
||||||
if profile.Jellyseerr.Enabled {
|
if profile.Jellyseerr.Enabled {
|
||||||
jellyseerr = profile.Jellyseerr
|
jellyseerr = profile.Jellyseerr
|
||||||
}
|
}
|
||||||
|
@ -84,30 +84,40 @@
|
|||||||
<form class="card relative mx-auto my-[10%] w-11/12 sm:w-4/5 lg:w-1/3" id="form-modify-user" href="">
|
<form class="card relative mx-auto my-[10%] w-11/12 sm:w-4/5 lg:w-1/3" id="form-modify-user" href="">
|
||||||
<span class="heading"><span id="header-modify-user"></span> <span class="modal-close">×</span></span>
|
<span class="heading"><span id="header-modify-user"></span> <span class="modal-close">×</span></span>
|
||||||
<p class="content my-4">{{ .strings.modifySettingsDescription }}</p>
|
<p class="content my-4">{{ .strings.modifySettingsDescription }}</p>
|
||||||
<div class="flex flex-row mb-4">
|
<div class="flex flex-col gap-4 my-2">
|
||||||
<label class="grow mr-2">
|
<div class="flex flex-row gap-2">
|
||||||
<input type="radio" name="modify-user-source" class="unfocused" id="radio-use-profile" checked>
|
<label class="grow">
|
||||||
<span class="button ~neutral @high supra full-width center">{{ .strings.profile }}</span>
|
<input type="radio" name="modify-user-source" class="unfocused" id="radio-use-profile" checked>
|
||||||
|
<span class="button ~neutral @high supra full-width center">{{ .strings.profile }}</span>
|
||||||
|
</label>
|
||||||
|
<label class="grow">
|
||||||
|
<input type="radio" name="modify-user-source" class="unfocused" id="radio-use-user">
|
||||||
|
<span class="button ~neutral @low supra full-width center">{{ .strings.user }}</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="select ~neutral @low">
|
||||||
|
<select id="modify-user-profiles"></select>
|
||||||
|
</div>
|
||||||
|
<div class="select ~neutral @low unfocused">
|
||||||
|
<select id="modify-user-users"></select>
|
||||||
|
</div>
|
||||||
|
<label class="switch">
|
||||||
|
<input type="checkbox" id="modify-user-homescreen" checked>
|
||||||
|
<span>{{ .strings.applyHomescreenLayout }}</span>
|
||||||
</label>
|
</label>
|
||||||
<label class="grow ml-2">
|
<label class="switch">
|
||||||
<input type="radio" name="modify-user-source" class="unfocused" id="radio-use-user">
|
<input type="checkbox" id="modify-user-ombi" checked>
|
||||||
<span class="button ~neutral @low supra full-width center">{{ .strings.user }}</span>
|
<span>{{ .strings.applyOmbi }}</span>
|
||||||
|
</label>
|
||||||
|
<label class="switch">
|
||||||
|
<input type="checkbox" id="modify-user-jellyseerr" checked>
|
||||||
|
<span>{{ .strings.applyJellyseerr }}</span>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="submit" class="unfocused">
|
||||||
|
<span class="button ~urge @low full-width center supra submit">{{ .strings.apply }}</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="select ~neutral @low mb-4">
|
|
||||||
<select id="modify-user-profiles"></select>
|
|
||||||
</div>
|
|
||||||
<div class="select ~neutral @low mb-4 unfocused">
|
|
||||||
<select id="modify-user-users"></select>
|
|
||||||
</div>
|
|
||||||
<label class="switch mb-4">
|
|
||||||
<input type="checkbox" id="modify-user-homescreen" checked>
|
|
||||||
<span>{{ .strings.applyHomescreenLayout }}</span>
|
|
||||||
</label>
|
|
||||||
<label>
|
|
||||||
<input type="submit" class="unfocused">
|
|
||||||
<span class="button ~urge @low full-width center supra submit">{{ .strings.apply }}</span>
|
|
||||||
</label>
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{{ if .referralsEnabled }}
|
{{ if .referralsEnabled }}
|
||||||
|
@ -81,6 +81,8 @@
|
|||||||
"useInviteExpiry": "Set expiry from profile/invite",
|
"useInviteExpiry": "Set expiry from profile/invite",
|
||||||
"useInviteExpiryNote": "By default, invites expire after 90 days but can be renewed by the user. Enable for the referral to be disabled after the time set.",
|
"useInviteExpiryNote": "By default, invites expire after 90 days but can be renewed by the user. Enable for the referral to be disabled after the time set.",
|
||||||
"applyHomescreenLayout": "Apply homescreen layout",
|
"applyHomescreenLayout": "Apply homescreen layout",
|
||||||
|
"applyOmbi": "Apply Ombi profile (if available)",
|
||||||
|
"applyJellyseerr": "Apply Jellyseerr profile (if available)",
|
||||||
"sendDeleteNotificationEmail": "Send notification message",
|
"sendDeleteNotificationEmail": "Send notification message",
|
||||||
"sendDeleteNotifiationExample": "Your account has been deleted.",
|
"sendDeleteNotifiationExample": "Your account has been deleted.",
|
||||||
"settingsRestart": "Restart",
|
"settingsRestart": "Restart",
|
||||||
|
@ -179,6 +179,8 @@ type userSettingsDTO struct {
|
|||||||
ApplyTo []string `json:"apply_to"` // Users to apply settings to
|
ApplyTo []string `json:"apply_to"` // Users to apply settings to
|
||||||
ID string `json:"id"` // ID of user (if from = "user")
|
ID string `json:"id"` // ID of user (if from = "user")
|
||||||
Homescreen bool `json:"homescreen"` // Whether to apply homescreen layout or not
|
Homescreen bool `json:"homescreen"` // Whether to apply homescreen layout or not
|
||||||
|
Ombi bool `json:"ombi"` // Whether to apply ombi profile or not
|
||||||
|
Jellyseerr bool `json:"jellyseerr"` // Whether to apply jellyseerr profile or not
|
||||||
}
|
}
|
||||||
|
|
||||||
type announcementDTO struct {
|
type announcementDTO struct {
|
||||||
|
@ -187,6 +187,7 @@ login.onLogin = () => {
|
|||||||
console.log("Logged in.");
|
console.log("Logged in.");
|
||||||
window.updater = new Updater();
|
window.updater = new Updater();
|
||||||
// FIXME: Decide whether to autoload activity or not
|
// FIXME: Decide whether to autoload activity or not
|
||||||
|
window.invites.reload()
|
||||||
setInterval(() => { window.invites.reload(); accounts.reload(); }, 30*1000);
|
setInterval(() => { window.invites.reload(); accounts.reload(); }, 30*1000);
|
||||||
const currentTab = window.tabs.current;
|
const currentTab = window.tabs.current;
|
||||||
switch (currentTab) {
|
switch (currentTab) {
|
||||||
|
@ -795,6 +795,10 @@ export class accountsList {
|
|||||||
private _searchBox = document.getElementById("accounts-search") as HTMLInputElement;
|
private _searchBox = document.getElementById("accounts-search") as HTMLInputElement;
|
||||||
private _search: Search;
|
private _search: Search;
|
||||||
|
|
||||||
|
private _applyHomesreen = document.getElementById("modify-user-homescreen") as HTMLInputElement;
|
||||||
|
private _applyOmbi = document.getElementById("modify-user-ombi") as HTMLInputElement;
|
||||||
|
private _applyJellyseerr = document.getElementById("modify-user-jellyseerr") as HTMLInputElement;
|
||||||
|
|
||||||
private _selectAll = document.getElementById("accounts-select-all") as HTMLInputElement;
|
private _selectAll = document.getElementById("accounts-select-all") as HTMLInputElement;
|
||||||
private _users: { [id: string]: user };
|
private _users: { [id: string]: user };
|
||||||
private _ordering: string[] = [];
|
private _ordering: string[] = [];
|
||||||
@ -1459,6 +1463,7 @@ export class accountsList {
|
|||||||
const modalHeader = document.getElementById("header-modify-user");
|
const modalHeader = document.getElementById("header-modify-user");
|
||||||
modalHeader.textContent = window.lang.quantity("modifySettingsFor", this._collectUsers().length)
|
modalHeader.textContent = window.lang.quantity("modifySettingsFor", this._collectUsers().length)
|
||||||
let list = this._collectUsers();
|
let list = this._collectUsers();
|
||||||
|
|
||||||
(() => {
|
(() => {
|
||||||
let innerHTML = "";
|
let innerHTML = "";
|
||||||
for (const profile of window.availableProfiles) {
|
for (const profile of window.availableProfiles) {
|
||||||
@ -1477,6 +1482,7 @@ export class accountsList {
|
|||||||
|
|
||||||
const form = document.getElementById("form-modify-user") as HTMLFormElement;
|
const form = document.getElementById("form-modify-user") as HTMLFormElement;
|
||||||
const button = form.querySelector("span.submit") as HTMLSpanElement;
|
const button = form.querySelector("span.submit") as HTMLSpanElement;
|
||||||
|
|
||||||
this._modifySettingsProfile.checked = true;
|
this._modifySettingsProfile.checked = true;
|
||||||
this._modifySettingsUser.checked = false;
|
this._modifySettingsUser.checked = false;
|
||||||
form.onsubmit = (event: Event) => {
|
form.onsubmit = (event: Event) => {
|
||||||
@ -1484,7 +1490,9 @@ export class accountsList {
|
|||||||
toggleLoader(button);
|
toggleLoader(button);
|
||||||
let send = {
|
let send = {
|
||||||
"apply_to": list,
|
"apply_to": list,
|
||||||
"homescreen": (document.getElementById("modify-user-homescreen") as HTMLInputElement).checked
|
"homescreen": this._applyHomesreen.checked,
|
||||||
|
"ombi": this._applyOmbi.checked,
|
||||||
|
"jellyseerr": this._applyJellyseerr.checked
|
||||||
};
|
};
|
||||||
if (this._modifySettingsProfile.checked && !this._modifySettingsUser.checked) {
|
if (this._modifySettingsProfile.checked && !this._modifySettingsUser.checked) {
|
||||||
send["from"] = "profile";
|
send["from"] = "profile";
|
||||||
@ -1821,6 +1829,16 @@ export class accountsList {
|
|||||||
};
|
};
|
||||||
this._modifySettings.onclick = this.modifyUsers;
|
this._modifySettings.onclick = this.modifyUsers;
|
||||||
this._modifySettings.classList.add("unfocused");
|
this._modifySettings.classList.add("unfocused");
|
||||||
|
|
||||||
|
if (window.ombiEnabled)
|
||||||
|
this._applyOmbi.parentElement.classList.remove("unfocused");
|
||||||
|
else
|
||||||
|
this._applyOmbi.parentElement.classList.add("unfocused");
|
||||||
|
if (window.jellyseerrEnabled)
|
||||||
|
this._applyJellyseerr.parentElement.classList.remove("unfocused");
|
||||||
|
else
|
||||||
|
this._applyJellyseerr.parentElement.classList.add("unfocused");
|
||||||
|
|
||||||
const checkSource = () => {
|
const checkSource = () => {
|
||||||
const profileSpan = this._modifySettingsProfile.nextElementSibling as HTMLSpanElement;
|
const profileSpan = this._modifySettingsProfile.nextElementSibling as HTMLSpanElement;
|
||||||
const userSpan = this._modifySettingsUser.nextElementSibling as HTMLSpanElement;
|
const userSpan = this._modifySettingsUser.nextElementSibling as HTMLSpanElement;
|
||||||
@ -1831,6 +1849,8 @@ export class accountsList {
|
|||||||
profileSpan.classList.remove("@low");
|
profileSpan.classList.remove("@low");
|
||||||
userSpan.classList.remove("@high");
|
userSpan.classList.remove("@high");
|
||||||
userSpan.classList.add("@low");
|
userSpan.classList.add("@low");
|
||||||
|
this._applyOmbi.parentElement.classList.remove("unfocused");
|
||||||
|
this._applyJellyseerr.parentElement.classList.remove("unfocused");
|
||||||
} else {
|
} else {
|
||||||
this._userSelect.parentElement.classList.remove("unfocused");
|
this._userSelect.parentElement.classList.remove("unfocused");
|
||||||
this._profileSelect.parentElement.classList.add("unfocused");
|
this._profileSelect.parentElement.classList.add("unfocused");
|
||||||
@ -1838,6 +1858,8 @@ export class accountsList {
|
|||||||
userSpan.classList.remove("@low");
|
userSpan.classList.remove("@low");
|
||||||
profileSpan.classList.remove("@high");
|
profileSpan.classList.remove("@high");
|
||||||
profileSpan.classList.add("@low");
|
profileSpan.classList.add("@low");
|
||||||
|
this._applyOmbi.parentElement.classList.add("unfocused");
|
||||||
|
this._applyJellyseerr.parentElement.classList.add("unfocused");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
this._modifySettingsProfile.onchange = checkSource;
|
this._modifySettingsProfile.onchange = checkSource;
|
||||||
|
Loading…
Reference in New Issue
Block a user