From 9c395cc46856187b8abc14b95f36c0985f0cc8f0 Mon Sep 17 00:00:00 2001 From: cvium Date: Thu, 10 Jan 2019 18:47:52 +0100 Subject: [PATCH 1/6] fix profile editing on user profile page --- src/scripts/myprofile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/myprofile.js b/src/scripts/myprofile.js index 0ac0473d2..cfb2cd67d 100644 --- a/src/scripts/myprofile.js +++ b/src/scripts/myprofile.js @@ -13,7 +13,7 @@ define(["scripts/userpasswordpage", "loading", "libraryMenu", "apphost", "emby-l tag: user.PrimaryImageTag, type: "Primary" }) : "css/images/logindefault.png", fldImage.classList.remove("hide"), fldImage.innerHTML = ""; - var showImageEditing = !1; + var showImageEditing = !0; Dashboard.getCurrentUser().then(function(loggedInUser) { showImageEditing && appHost.supports("fileinput") && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess) ? (page.querySelector(".newImageForm").classList.remove("hide"), user.PrimaryImageTag ? page.querySelector("#btnDeleteImage").classList.remove("hide") : page.querySelector("#btnDeleteImage").classList.add("hide")) : (page.querySelector(".newImageForm").classList.add("hide"), page.querySelector("#btnDeleteImage").classList.add("hide")) }), loading.hide() From e82a93c813e316c40eda21c4ff15ce1ab5aac588 Mon Sep 17 00:00:00 2001 From: cvium Date: Thu, 10 Jan 2019 18:53:37 +0100 Subject: [PATCH 2/6] deuglify myprofile.js --- src/scripts/myprofile.js | 161 ++++++++++++++++++++++++++------------- 1 file changed, 110 insertions(+), 51 deletions(-) diff --git a/src/scripts/myprofile.js b/src/scripts/myprofile.js index cfb2cd67d..87dcc17f2 100644 --- a/src/scripts/myprofile.js +++ b/src/scripts/myprofile.js @@ -1,95 +1,154 @@ -define(["scripts/userpasswordpage", "loading", "libraryMenu", "apphost", "emby-linkbutton"], function(Userpasswordpage, loading, libraryMenu, appHost) { +define(["scripts/userpasswordpage", "loading", "libraryMenu", "apphost", "emby-linkbutton"], function (Userpasswordpage, loading, libraryMenu, appHost) { "use strict"; function reloadUser(page) { var userId = getParameterByName("userId"); - loading.show(), ApiClient.getUser(userId).then(function(user) { + loading.show(); + ApiClient.getUser(userId).then(function (user) { page.querySelector(".username").innerHTML = user.Name; var uploadUserImage = page.querySelector("#uploadUserImage"); - uploadUserImage.value = "", uploadUserImage.dispatchEvent(new CustomEvent("change", {})), libraryMenu.setTitle(user.Name); - var imageUrl, fldImage = page.querySelector("#fldImage"); + uploadUserImage.value = ""; + uploadUserImage.dispatchEvent(new CustomEvent("change", {})); + libraryMenu.setTitle(user.Name); + var imageUrl; + var fldImage = page.querySelector("#fldImage"); imageUrl = user.PrimaryImageTag ? ApiClient.getUserImageUrl(user.Id, { height: 200, tag: user.PrimaryImageTag, type: "Primary" - }) : "css/images/logindefault.png", fldImage.classList.remove("hide"), fldImage.innerHTML = ""; - var showImageEditing = !0; - Dashboard.getCurrentUser().then(function(loggedInUser) { - showImageEditing && appHost.supports("fileinput") && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess) ? (page.querySelector(".newImageForm").classList.remove("hide"), user.PrimaryImageTag ? page.querySelector("#btnDeleteImage").classList.remove("hide") : page.querySelector("#btnDeleteImage").classList.add("hide")) : (page.querySelector(".newImageForm").classList.add("hide"), page.querySelector("#btnDeleteImage").classList.add("hide")) - }), loading.hide() - }) + }) : "css/images/logindefault.png"; + fldImage.classList.remove("hide"); + fldImage.innerHTML = ""; + var showImageEditing = true; + Dashboard.getCurrentUser().then(function (loggedInUser) { + if (showImageEditing && appHost.supports("fileinput") && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) { + page.querySelector(".newImageForm").classList.remove("hide"); + + if (user.PrimaryImageTag) { + page.querySelector("#btnDeleteImage").classList.remove("hide"); + } else { + page.querySelector("#btnDeleteImage").classList.add("hide"); + } + } else { + page.querySelector(".newImageForm").classList.add("hide"); + page.querySelector("#btnDeleteImage").classList.add("hide"); + } + }); + loading.hide(); + }); } function onFileReaderError(evt) { switch (loading.hide(), evt.target.error.code) { case evt.target.error.NOT_FOUND_ERR: - require(["toast"], function(toast) { - toast(Globalize.translate("FileNotFound")) + require(["toast"], function (toast) { + toast(Globalize.translate("FileNotFound")); }); + break; + case evt.target.error.NOT_READABLE_ERR: - require(["toast"], function(toast) { - toast(Globalize.translate("FileReadError")) + require(["toast"], function (toast) { + toast(Globalize.translate("FileReadError")); }); + break; + case evt.target.error.ABORT_ERR: break; + default: - require(["toast"], function(toast) { - toast(Globalize.translate("FileReadError")) - }) + require(["toast"], function (toast) { + toast(Globalize.translate("FileReadError")); + }); + } } function onFileReaderAbort(evt) { - loading.hide(), require(["toast"], function(toast) { - toast(Globalize.translate("FileReadCancelled")) - }) + loading.hide(); + + require(["toast"], function (toast) { + toast(Globalize.translate("FileReadCancelled")); + }); } function setFiles(page, files) { var file = files[0]; - if (!file || !file.type.match("image.*")) return page.querySelector("#userImageOutput").innerHTML = "", page.querySelector("#fldUpload").classList.add("hide"), void(currentFile = null); + + if (!file || !file.type.match("image.*")) { + page.querySelector("#userImageOutput").innerHTML = ""; + page.querySelector("#fldUpload").classList.add("hide"); + return void (currentFile = null); + } + currentFile = file; - var reader = new FileReader; - reader.onerror = onFileReaderError, reader.onloadstart = function() { - page.querySelector("#fldUpload").classList.add("hide") - }, reader.onabort = onFileReaderAbort, reader.onload = function(e) { - var html = [''].join(""); - page.querySelector("#userImageOutput").innerHTML = html, page.querySelector("#fldUpload").classList.remove("hide") - }, reader.readAsDataURL(file) + var reader = new FileReader(); + reader.onerror = onFileReaderError; + + reader.onloadstart = function () { + page.querySelector("#fldUpload").classList.add("hide"); + }; + + reader.onabort = onFileReaderAbort; + + reader.onload = function (e__q) { + var html = [''].join(""); + page.querySelector("#userImageOutput").innerHTML = html; + page.querySelector("#fldUpload").classList.remove("hide"); + }; + + reader.readAsDataURL(file); } - function onImageDragOver(e) { - return e.preventDefault(), e.originalEvent.dataTransfer.dropEffect = "Copy", !1 + function onImageDragOver(e__w) { + e__w.preventDefault(); + e__w.originalEvent.dataTransfer.dropEffect = "Copy"; + return false; } + var currentFile; - return function(view, params) { + return function (view, params) { reloadUser(view); new Userpasswordpage(view, params); - view.querySelector("#userImageDropZone").addEventListener("dragOver", onImageDragOver), view.querySelector("#btnDeleteImage").addEventListener("click", function() { - require(["confirm"], function(confirm) { - confirm(Globalize.translate("DeleteImageConfirmation"), Globalize.translate("DeleteImage")).then(function() { + view.querySelector("#userImageDropZone").addEventListener("dragOver", onImageDragOver); + view.querySelector("#btnDeleteImage").addEventListener("click", function () { + require(["confirm"], function (confirm) { + confirm(Globalize.translate("DeleteImageConfirmation"), Globalize.translate("DeleteImage")).then(function () { loading.show(); var userId = getParameterByName("userId"); - ApiClient.deleteUserImage(userId, "primary").then(function() { - loading.hide(), reloadUser(view) - }) - }) - }) - }), view.querySelector(".btnBrowse").addEventListener("click", function() { - view.querySelector("#uploadUserImage").click() - }), view.querySelector(".newImageForm").addEventListener("submit", function(e) { + ApiClient.deleteUserImage(userId, "primary").then(function () { + loading.hide(); + reloadUser(view); + }); + }); + }); + }); + view.querySelector(".btnBrowse").addEventListener("click", function () { + view.querySelector("#uploadUserImage").click(); + }); + view.querySelector(".newImageForm").addEventListener("submit", function (e__e) { var file = currentFile; - if (!file) return !1; - if ("image/png" != file.type && "image/jpeg" != file.type && "image/jpeg" != file.type) return !1; + + if (!file) { + return false; + } + + if ("image/png" != file.type && "image/jpeg" != file.type && "image/jpeg" != file.type) { + return false; + } + loading.show(); var userId = getParameterByName("userId"); - return ApiClient.uploadUserImage(userId, "Primary", file).then(function() { - loading.hide(), reloadUser(view) - }), e.preventDefault(), !1 - }), view.querySelector("#uploadUserImage").addEventListener("change", function(e) { - setFiles(view, e.target.files) - }) - } + ApiClient.uploadUserImage(userId, "Primary", file).then(function () { + loading.hide(); + reloadUser(view); + }); + e__e.preventDefault(); + return false; + }); + view.querySelector("#uploadUserImage").addEventListener("change", function (e__r) { + setFiles(view, e__r.target.files); + }); + }; }); From 670371de64c49d95bfc66094e59eedbd1ecf7f2a Mon Sep 17 00:00:00 2001 From: cvium Date: Thu, 10 Jan 2019 19:16:31 +0100 Subject: [PATCH 3/6] post-deuglification cleanup --- src/scripts/myprofile.js | 48 +++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/src/scripts/myprofile.js b/src/scripts/myprofile.js index 87dcc17f2..f9aeac13a 100644 --- a/src/scripts/myprofile.js +++ b/src/scripts/myprofile.js @@ -10,13 +10,15 @@ define(["scripts/userpasswordpage", "loading", "libraryMenu", "apphost", "emby-l uploadUserImage.value = ""; uploadUserImage.dispatchEvent(new CustomEvent("change", {})); libraryMenu.setTitle(user.Name); - var imageUrl; + var imageUrl = "css/images/logindefault.png"; + if (user.PrimaryImageTag) { + ApiClient.getUserImageUrl(user.Id, { + height: 200, + tag: user.PrimaryImageTag, + type: "Primary" + }); + } var fldImage = page.querySelector("#fldImage"); - imageUrl = user.PrimaryImageTag ? ApiClient.getUserImageUrl(user.Id, { - height: 200, - tag: user.PrimaryImageTag, - type: "Primary" - }) : "css/images/logindefault.png"; fldImage.classList.remove("hide"); fldImage.innerHTML = ""; var showImageEditing = true; @@ -39,29 +41,24 @@ define(["scripts/userpasswordpage", "loading", "libraryMenu", "apphost", "emby-l } function onFileReaderError(evt) { - switch (loading.hide(), evt.target.error.code) { + loading.hide(); + switch (evt.target.error.code) { case evt.target.error.NOT_FOUND_ERR: require(["toast"], function (toast) { toast(Globalize.translate("FileNotFound")); }); - break; - case evt.target.error.NOT_READABLE_ERR: require(["toast"], function (toast) { toast(Globalize.translate("FileReadError")); }); - break; - case evt.target.error.ABORT_ERR: break; - default: require(["toast"], function (toast) { toast(Globalize.translate("FileReadError")); }); - } } @@ -92,8 +89,8 @@ define(["scripts/userpasswordpage", "loading", "libraryMenu", "apphost", "emby-l reader.onabort = onFileReaderAbort; - reader.onload = function (e__q) { - var html = [''].join(""); + reader.onload = function (evt) { + var html = [''].join(""); page.querySelector("#userImageOutput").innerHTML = html; page.querySelector("#fldUpload").classList.remove("hide"); }; @@ -101,9 +98,9 @@ define(["scripts/userpasswordpage", "loading", "libraryMenu", "apphost", "emby-l reader.readAsDataURL(file); } - function onImageDragOver(e__w) { - e__w.preventDefault(); - e__w.originalEvent.dataTransfer.dropEffect = "Copy"; + function onImageDragOver(evt) { + evt.preventDefault(); + evt.originalEvent.dataTransfer.dropEffect = "Copy"; return false; } @@ -127,14 +124,9 @@ define(["scripts/userpasswordpage", "loading", "libraryMenu", "apphost", "emby-l view.querySelector(".btnBrowse").addEventListener("click", function () { view.querySelector("#uploadUserImage").click(); }); - view.querySelector(".newImageForm").addEventListener("submit", function (e__e) { + view.querySelector(".newImageForm").addEventListener("submit", function (evt) { var file = currentFile; - - if (!file) { - return false; - } - - if ("image/png" != file.type && "image/jpeg" != file.type && "image/jpeg" != file.type) { + if (!file || "image/png" != file.type && "image/jpeg" != file.type && "image/jpeg" != file.type) { return false; } @@ -144,11 +136,11 @@ define(["scripts/userpasswordpage", "loading", "libraryMenu", "apphost", "emby-l loading.hide(); reloadUser(view); }); - e__e.preventDefault(); + evt.preventDefault(); return false; }); - view.querySelector("#uploadUserImage").addEventListener("change", function (e__r) { - setFiles(view, e__r.target.files); + view.querySelector("#uploadUserImage").addEventListener("change", function (evt) { + setFiles(view, evt.target.files); }); }; }); From 76b9411d6c30a62c800c27f2e49404f58a7636cb Mon Sep 17 00:00:00 2001 From: cvium Date: Thu, 10 Jan 2019 19:21:23 +0100 Subject: [PATCH 4/6] remove always-true showImageEditing variable --- src/scripts/myprofile.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/scripts/myprofile.js b/src/scripts/myprofile.js index f9aeac13a..88073c171 100644 --- a/src/scripts/myprofile.js +++ b/src/scripts/myprofile.js @@ -21,9 +21,8 @@ define(["scripts/userpasswordpage", "loading", "libraryMenu", "apphost", "emby-l var fldImage = page.querySelector("#fldImage"); fldImage.classList.remove("hide"); fldImage.innerHTML = ""; - var showImageEditing = true; Dashboard.getCurrentUser().then(function (loggedInUser) { - if (showImageEditing && appHost.supports("fileinput") && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) { + if (appHost.supports("fileinput") && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) { page.querySelector(".newImageForm").classList.remove("hide"); if (user.PrimaryImageTag) { From 039c5ffddaaedbc09bc280af7b97e962467aeed5 Mon Sep 17 00:00:00 2001 From: hawken Date: Thu, 10 Jan 2019 20:32:17 +0000 Subject: [PATCH 5/6] Fix 522 --- src/scripts/userpasswordpage.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/scripts/userpasswordpage.js b/src/scripts/userpasswordpage.js index 1743e114b..b8582e3cf 100644 --- a/src/scripts/userpasswordpage.js +++ b/src/scripts/userpasswordpage.js @@ -37,6 +37,11 @@ define(["loading", "libraryMenu", "emby-linkbutton"], function(loading, libraryM var userId = params.userId, currentPassword = view.querySelector("#txtCurrentPassword").value, newPassword = view.querySelector("#txtNewPassword").value; + if(view.querySelector("#fldCurrentPassword").classList.contains("hide")) { + // Firefox does not respect autocomplete=off, so clear it if the field is supposed to be hidden (and blank) + // This should only happen when user.HasConfiguredPassword is false, but this information is not passed on + currentPassword = ""; + } ApiClient.updateUserPassword(userId, currentPassword, newPassword).then(function() { loading.hide(), require(["toast"], function(toast) { toast(Globalize.translate("PasswordSaved")) @@ -93,4 +98,4 @@ define(["loading", "libraryMenu", "emby-linkbutton"], function(loading, libraryM loadUser(view, params) }) } -}); \ No newline at end of file +}); From 1e45473b54075fd517434a70c815d581e851ba25 Mon Sep 17 00:00:00 2001 From: cvium Date: Thu, 10 Jan 2019 22:26:00 +0100 Subject: [PATCH 6/6] added cvium to CONTRIBUTORS --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 80c172309..c4b557126 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -11,6 +11,7 @@ - [AnthonyLavado](https://github.com/anthonylavado) - [sparky8251](https://github.com/sparky8251) - [LeoVerto](https://github.com/LeoVerto) + - [cvium](https://github.com/cvium) # Emby Contributors