2017-11-05 07:38:50 +08:00
|
|
|
"use strict";
|
|
|
|
|
2017-11-05 02:31:53 +08:00
|
|
|
const settings = (function() {
|
|
|
|
const dialogEl = $("#settings-dialog");
|
|
|
|
const tabsEl = $("#settings-tabs");
|
2017-09-13 11:04:17 +08:00
|
|
|
|
2017-11-05 02:31:53 +08:00
|
|
|
const settingModules = [];
|
|
|
|
|
|
|
|
function addModule(module) {
|
|
|
|
settingModules.push(module);
|
|
|
|
}
|
2017-09-11 11:10:32 +08:00
|
|
|
|
2017-11-05 02:31:53 +08:00
|
|
|
async function showDialog() {
|
2017-11-05 05:03:15 +08:00
|
|
|
glob.activeDialog = dialogEl;
|
|
|
|
|
2017-11-05 02:31:53 +08:00
|
|
|
const settings = await $.ajax({
|
|
|
|
url: baseApiUrl + 'settings',
|
|
|
|
type: 'GET',
|
2017-11-09 11:33:08 +08:00
|
|
|
error: () => showError("Error getting settings.")
|
2017-11-05 02:31:53 +08:00
|
|
|
});
|
2017-09-11 11:10:32 +08:00
|
|
|
|
2017-11-05 02:31:53 +08:00
|
|
|
dialogEl.dialog({
|
|
|
|
modal: true,
|
2017-11-14 12:35:23 +08:00
|
|
|
width: 800
|
2017-11-05 02:31:53 +08:00
|
|
|
});
|
2017-09-13 10:23:57 +08:00
|
|
|
|
2017-11-05 02:31:53 +08:00
|
|
|
tabsEl.tabs();
|
2017-09-13 10:23:57 +08:00
|
|
|
|
2017-11-05 09:02:56 +08:00
|
|
|
for (const module of settingModules) {
|
2017-11-21 13:25:53 +08:00
|
|
|
if (module.settingsLoaded) {
|
|
|
|
module.settingsLoaded(settings);
|
|
|
|
}
|
2017-11-05 02:31:53 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function saveSettings(settingName, settingValue) {
|
|
|
|
return $.ajax({
|
|
|
|
url: baseApiUrl + 'settings',
|
|
|
|
type: 'POST',
|
|
|
|
data: JSON.stringify({
|
|
|
|
name: settingName,
|
|
|
|
value: settingValue
|
|
|
|
}),
|
|
|
|
contentType: "application/json",
|
|
|
|
success: () => {
|
2017-11-09 11:33:08 +08:00
|
|
|
showMessage("Settings change have been saved.");
|
2017-11-05 02:31:53 +08:00
|
|
|
},
|
|
|
|
error: () => alert("Error occurred during saving settings change.")
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
showDialog,
|
|
|
|
saveSettings,
|
|
|
|
addModule
|
|
|
|
};
|
|
|
|
})();
|
|
|
|
|
|
|
|
settings.addModule((function() {
|
|
|
|
const formEl = $("#change-password-form");
|
|
|
|
const oldPasswordEl = $("#old-password");
|
|
|
|
const newPassword1El = $("#new-password1");
|
|
|
|
const newPassword2El = $("#new-password2");
|
|
|
|
|
|
|
|
function settingsLoaded(settings) {
|
2017-09-13 10:23:57 +08:00
|
|
|
}
|
|
|
|
|
2017-11-05 02:31:53 +08:00
|
|
|
formEl.submit(() => {
|
|
|
|
const oldPassword = oldPasswordEl.val();
|
|
|
|
const newPassword1 = newPassword1El.val();
|
|
|
|
const newPassword2 = newPassword2El.val();
|
|
|
|
|
|
|
|
oldPasswordEl.val('');
|
|
|
|
newPassword1El.val('');
|
|
|
|
newPassword2El.val('');
|
|
|
|
|
|
|
|
if (newPassword1 !== newPassword2) {
|
|
|
|
alert("New passwords are not the same.");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$.ajax({
|
|
|
|
url: baseApiUrl + 'password/change',
|
|
|
|
type: 'POST',
|
|
|
|
data: JSON.stringify({
|
|
|
|
'current_password': oldPassword,
|
|
|
|
'new_password': newPassword1
|
|
|
|
}),
|
|
|
|
contentType: "application/json",
|
|
|
|
success: result => {
|
|
|
|
if (result.success) {
|
2017-11-07 08:48:02 +08:00
|
|
|
alert("Password has been changed. Trilium will be reloaded after you press OK.");
|
|
|
|
|
2017-11-15 12:01:23 +08:00
|
|
|
// password changed so current protected session is invalid and needs to be cleared
|
2017-11-15 11:36:36 +08:00
|
|
|
protected_session.resetProtectedSession();
|
2017-11-05 02:31:53 +08:00
|
|
|
}
|
|
|
|
else {
|
2017-11-09 11:33:08 +08:00
|
|
|
showError(result.message);
|
2017-11-05 02:31:53 +08:00
|
|
|
}
|
|
|
|
},
|
2017-11-09 11:33:08 +08:00
|
|
|
error: () => showError("Error occurred during changing password.")
|
2017-11-05 02:31:53 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
return false;
|
2017-09-13 10:23:57 +08:00
|
|
|
});
|
2017-09-11 11:10:32 +08:00
|
|
|
|
2017-11-05 02:31:53 +08:00
|
|
|
return {
|
|
|
|
settingsLoaded
|
|
|
|
};
|
|
|
|
})());
|
|
|
|
|
|
|
|
settings.addModule((function() {
|
2017-11-15 11:44:45 +08:00
|
|
|
const formEl = $("#protected-session-timeout-form");
|
|
|
|
const protectedSessionTimeoutEl = $("#protected-session-timeout-in-seconds");
|
|
|
|
const settingName = 'protected_session_timeout';
|
2017-09-13 11:04:17 +08:00
|
|
|
|
2017-11-05 02:31:53 +08:00
|
|
|
function settingsLoaded(settings) {
|
2017-11-15 11:44:45 +08:00
|
|
|
protectedSessionTimeoutEl.val(settings[settingName]);
|
2017-11-05 02:31:53 +08:00
|
|
|
}
|
2017-09-13 11:04:17 +08:00
|
|
|
|
2017-11-05 02:31:53 +08:00
|
|
|
formEl.submit(() => {
|
2017-11-15 11:44:45 +08:00
|
|
|
const protectedSessionTimeout = protectedSessionTimeoutEl.val();
|
2017-09-23 22:59:36 +08:00
|
|
|
|
2017-11-15 11:44:45 +08:00
|
|
|
settings.saveSettings(settingName, protectedSessionTimeout).then(() => {
|
|
|
|
protected_session.setProtectedSessionTimeout(protectedSessionTimeout);
|
2017-11-05 02:31:53 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
return false;
|
2017-09-13 11:04:17 +08:00
|
|
|
});
|
|
|
|
|
2017-11-05 02:31:53 +08:00
|
|
|
return {
|
|
|
|
settingsLoaded
|
|
|
|
};
|
|
|
|
})());
|
|
|
|
|
|
|
|
settings.addModule((function () {
|
|
|
|
const formEl = $("#history-snapshot-time-interval-form");
|
|
|
|
const timeIntervalEl = $("#history-snapshot-time-interval-in-seconds");
|
|
|
|
const settingName = 'history_snapshot_time_interval';
|
|
|
|
|
|
|
|
function settingsLoaded(settings) {
|
|
|
|
timeIntervalEl.val(settings[settingName]);
|
|
|
|
}
|
|
|
|
|
|
|
|
formEl.submit(() => {
|
|
|
|
settings.saveSettings(settingName, timeIntervalEl.val());
|
|
|
|
|
|
|
|
return false;
|
2017-09-25 08:50:14 +08:00
|
|
|
});
|
|
|
|
|
2017-11-14 12:35:23 +08:00
|
|
|
return {
|
|
|
|
settingsLoaded
|
|
|
|
};
|
|
|
|
})());
|
|
|
|
|
2017-11-21 13:25:53 +08:00
|
|
|
settings.addModule((async function () {
|
2017-11-17 09:03:44 +08:00
|
|
|
const appVersionEl = $("#app-version");
|
|
|
|
const dbVersionEl = $("#db-version");
|
2017-11-14 12:35:23 +08:00
|
|
|
const buildDateEl = $("#build-date");
|
|
|
|
const buildRevisionEl = $("#build-revision");
|
|
|
|
|
2017-11-21 13:25:53 +08:00
|
|
|
const appInfo = await $.get(baseApiUrl + 'app-info');
|
2017-11-14 12:35:23 +08:00
|
|
|
|
2017-11-21 13:25:53 +08:00
|
|
|
appVersionEl.html(appInfo.app_version);
|
|
|
|
dbVersionEl.html(appInfo.db_version);
|
|
|
|
buildDateEl.html(appInfo.build_date);
|
|
|
|
buildRevisionEl.html(appInfo.build_revision);
|
|
|
|
buildRevisionEl.attr('href', 'https://github.com/zadam/trilium/commit/' + appInfo.build_revision);
|
|
|
|
|
|
|
|
return {};
|
2017-11-05 02:31:53 +08:00
|
|
|
})());
|