From 5fc92c915fb7eb8c632ed2e07d11ad419a175c83 Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 6 May 2019 17:26:18 -0700 Subject: [PATCH 1/7] deminify all library related pages --- .../libraryoptionseditor.js | 492 +++++++++++++----- .../libraryoptionseditor.template.html | 5 + .../medialibraryeditor/medialibraryeditor.js | 155 ++++-- src/controllers/medialibrarypage.js | 192 ++++--- 4 files changed, 600 insertions(+), 244 deletions(-) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 2a12cb3bc..055691adb 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -3,146 +3,258 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct function populateLanguages(parent) { return ApiClient.getCultures().then(function(languages) { - populateLanguagesIntoSelect(parent.querySelector("#selectLanguage"), languages), populateLanguagesIntoList(parent.querySelector(".subtitleDownloadLanguages"), languages) - }) + populateLanguagesIntoSelect(parent.querySelector("#selectLanguage"), languages); + populateLanguagesIntoList(parent.querySelector(".subtitleDownloadLanguages"), languages); + }); } function populateLanguagesIntoSelect(select, languages) { var html = ""; html += ""; - for (var i = 0, length = languages.length; i < length; i++) { + for (var i = 0; i < languages.length; i++) { var culture = languages[i]; - html += "" + html += ""; } - select.innerHTML = html + select.innerHTML = html; } function populateLanguagesIntoList(element, languages) { - for (var html = "", i = 0, length = languages.length; i < length; i++) { + var html = ""; + for (var i = 0; i < languages.length; i++) { var culture = languages[i]; - html += '" + html += '"; } - element.innerHTML = html + element.innerHTML = html; } function populateCountries(select) { return ApiClient.getCountries().then(function(allCountries) { var html = ""; html += ""; - for (var i = 0, length = allCountries.length; i < length; i++) { + for (var i = 0; i < allCountries.length; i++) { var culture = allCountries[i]; - html += "" + html += ""; } - select.innerHTML = html + select.innerHTML = html; }) } function populateRefreshInterval(select) { var html = ""; - html += "", html += [30, 60, 90].map(function(val) { - return "" - }).join(""), select.innerHTML = html + html += ""; + html += [30, 60, 90].map(function(val) { + return ""; + }).join(""); + select.innerHTML = html; } function renderMetadataReaders(page, plugins) { - var html = "", - elem = page.querySelector(".metadataReaders"); + var html = ""; + var elem = page.querySelector(".metadataReaders"); + if (plugins.length < 1) return elem.innerHTML = "", elem.classList.add("hide"), !1; - html += '

' + globalize.translate("LabelMetadataReaders") + "

", html += '
'; - for (var i = 0, length = plugins.length; i < length; i++) { + html += '

' + globalize.translate("LabelMetadataReaders") + "

"; + html += '
'; + for (var i = 0; i < plugins.length; i++) { var plugin = plugins[i]; - html += '
', html += 'live_tv', html += '
', html += '

', html += plugin.Name, html += "

", html += "
", i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
" + html += '
'; + html += 'live_tv'; + html += '
'; + html += '

'; + html += plugin.Name; + html += "

"; + html += "
"; + if (i > 0) { + html += ''; + } else if (plugins.length > 1) { + html += ''; + } + html += "
"; } - return html += "
", html += '
' + globalize.translate("LabelMetadataReadersHelp") + "
", plugins.length < 2 ? elem.classList.add("hide") : elem.classList.remove("hide"), elem.innerHTML = html, !0 + html += "
"; + html += '
' + globalize.translate("LabelMetadataReadersHelp") + "
"; + if (plugins.length < 2) { + elem.classList.add("hide"); + } else { + elem.classList.remove("hide"); + } + elem.innerHTML = html; + return true; } function renderMetadataSavers(page, metadataSavers) { - var html = "", - elem = page.querySelector(".metadataSavers"); - if (!metadataSavers.length) return elem.innerHTML = "", elem.classList.add("hide"), !1; - html += '

' + globalize.translate("LabelMetadataSavers") + "

", html += '
'; - for (var i = 0, length = metadataSavers.length; i < length; i++) { + var html = ""; + var elem = page.querySelector(".metadataSavers"); + if (!metadataSavers.length) return elem.innerHTML = "", elem.classList.add("hide"), false; + html += '

' + globalize.translate("LabelMetadataSavers") + "

"; + html += '
'; + for (var i = 0; i < metadataSavers.length; i++) { var plugin = metadataSavers[i]; - html += '" + html += '"; } - return html += "
", html += '
' + globalize.translate("LabelMetadataSaversHelp") + "
", elem.innerHTML = html, elem.classList.remove("hide"), !0 + html += "
"; + html += '
' + globalize.translate("LabelMetadataSaversHelp") + "
"; + elem.innerHTML = html; + elem.classList.remove("hide"); + return true; } function getMetadataFetchersForTypeHtml(availableTypeOptions, libraryOptionsForType) { - var html = "", - plugins = availableTypeOptions.MetadataFetchers; - if (plugins = getOrderedPlugins(plugins, libraryOptionsForType.MetadataFetcherOrder || []), !plugins.length) return html; - html += '
', html += '

' + globalize.translate("LabelTypeMetadataDownloaders", availableTypeOptions.Type) + "

", html += '
'; - for (var i = 0, length = plugins.length; i < length; i++) { + var html = ""; + var plugins = availableTypeOptions.MetadataFetchers; + + plugins = getOrderedPlugins(plugins, libraryOptionsForType.MetadataFetcherOrder || []); + if (!plugins.length) return html; + + html += '
'; + html += '

' + globalize.translate("LabelTypeMetadataDownloaders", availableTypeOptions.Type) + "

"; + html += '
'; + for (var i = 0; i < plugins.length; i++) { var plugin = plugins[i]; html += '
'; - var isChecked = libraryOptionsForType.MetadataFetchers ? -1 !== libraryOptionsForType.MetadataFetchers.indexOf(plugin.Name) : plugin.DefaultEnabled, - checkedHtml = isChecked ? ' checked="checked"' : ""; - html += '", html += '
', html += '

', html += plugin.Name, html += "

", html += "
", i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
" + var isChecked = libraryOptionsForType.MetadataFetchers ? -1 !== libraryOptionsForType.MetadataFetchers.indexOf(plugin.Name) : plugin.DefaultEnabled; + var checkedHtml = isChecked ? ' checked="checked"' : ""; + html += '"; + html += '
'; + html += '

'; + html += plugin.Name; + html += "

"; + html += "
"; + i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
" } - return html += "
", html += '
' + globalize.translate("LabelMetadataDownloadersHelp") + "
", html += "
" + html += "
"; + html += '
' + globalize.translate("LabelMetadataDownloadersHelp") + "
"; + html += ""; + return html; } function getTypeOptions(allOptions, type) { - for (var allTypeOptions = allOptions.TypeOptions || [], i = 0, length = allTypeOptions.length; i < length; i++) { + var allTypeOptions = allOptions.TypeOptions || []; + for (var i = 0; i < allTypeOptions.length; i++) { var typeOptions = allTypeOptions[i]; - if (typeOptions.Type === type) return typeOptions + if (typeOptions.Type === type) return typeOptions; } - return null + return null; } function renderMetadataFetchers(page, availableOptions, libraryOptions) { - for (var html = "", elem = page.querySelector(".metadataFetchers"), i = 0, length = availableOptions.TypeOptions.length; i < length; i++) { + var html = ""; + var elem = page.querySelector(".metadataFetchers"); + for (var i = 0; i < availableOptions.TypeOptions.length; i++) { var availableTypeOptions = availableOptions.TypeOptions[i]; - html += getMetadataFetchersForTypeHtml(availableTypeOptions, getTypeOptions(libraryOptions, availableTypeOptions.Type) || {}) + html += getMetadataFetchersForTypeHtml(availableTypeOptions, getTypeOptions(libraryOptions, availableTypeOptions.Type) || {}); } - return elem.innerHTML = html, html ? (elem.classList.remove("hide"), page.querySelector(".fldAutoRefreshInterval").classList.remove("hide"), page.querySelector(".fldMetadataLanguage").classList.remove("hide"), page.querySelector(".fldMetadataCountry").classList.remove("hide")) : (elem.classList.add("hide"), page.querySelector(".fldAutoRefreshInterval").classList.add("hide"), page.querySelector(".fldMetadataLanguage").classList.add("hide"), page.querySelector(".fldMetadataCountry").classList.add("hide")), !0 + elem.innerHTML = html; + if (html) { + elem.classList.remove("hide"); + page.querySelector(".fldAutoRefreshInterval").classList.remove("hide"); + page.querySelector(".fldMetadataLanguage").classList.remove("hide"); + page.querySelector(".fldMetadataCountry").classList.remove("hide"); + } else { + elem.classList.add("hide"); + page.querySelector(".fldAutoRefreshInterval").classList.add("hide"); + page.querySelector(".fldMetadataLanguage").classList.add("hide"); + page.querySelector(".fldMetadataCountry").classList.add("hide"); + } + return true; } function renderSubtitleFetchers(page, availableOptions, libraryOptions) { - try { - var html = "", - elem = page.querySelector(".subtitleFetchers"), - html = "", - plugins = availableOptions.SubtitleFetchers; - if (plugins = getOrderedPlugins(plugins, libraryOptions.SubtitleFetcherOrder || []), !plugins.length) return html; - html += '

' + globalize.translate("LabelSubtitleDownloaders") + "

", html += '
'; - for (var i = 0, length = plugins.length; i < length; i++) { - var plugin = plugins[i]; - html += '
'; - var isChecked = libraryOptions.DisabledSubtitleFetchers ? -1 === libraryOptions.DisabledSubtitleFetchers.indexOf(plugin.Name) : plugin.DefaultEnabled, - checkedHtml = isChecked ? ' checked="checked"' : ""; - html += '", html += '
', html += '

', html += plugin.Name, html += "

", "Open Subtitles" === plugin.Name && (html += '
', html += globalize.translate("OpenSubtitleInstructions"), html += "
"), html += "
", i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
" + var html = ""; + var elem = page.querySelector(".subtitleFetchers"); + + var plugins = availableOptions.SubtitleFetchers; + plugins = getOrderedPlugins(plugins, libraryOptions.SubtitleFetcherOrder || []); + if (!plugins.length) return html; + + html += '

' + globalize.translate("LabelSubtitleDownloaders") + "

"; + html += '
'; + for (var i = 0; i < plugins.length; i++) { + var plugin = plugins[i]; + html += '
'; + var isChecked = libraryOptions.DisabledSubtitleFetchers ? -1 === libraryOptions.DisabledSubtitleFetchers.indexOf(plugin.Name) : plugin.DefaultEnabled; + var checkedHtml = isChecked ? ' checked="checked"' : ""; + html += '"; + html += '
'; + html += '

'; + html += plugin.Name; + html += "

"; + if (plugin.Name === "Open Subtitles") { + html += '
'; + html += globalize.translate("OpenSubtitleInstructions"); + html += "
"; } - html += "
", html += '
' + globalize.translate("SubtitleDownloadersHelp") + "
", elem.innerHTML = html - } catch (err) { - alert(err) + html += "
"; + if (i > 0) { + html += ''; + } else if (plugins.length > 1) { + html += ''; + } + html += "
"; } + html += "
"; + html += '
' + globalize.translate("SubtitleDownloadersHelp") + "
"; + elem.innerHTML = html; } function getImageFetchersForTypeHtml(availableTypeOptions, libraryOptionsForType) { - var html = "", - plugins = availableTypeOptions.ImageFetchers; - if (plugins = getOrderedPlugins(plugins, libraryOptionsForType.ImageFetcherOrder || []), !plugins.length) return html; - html += '
', html += '
', html += '

' + globalize.translate("HeaderTypeImageFetchers", availableTypeOptions.Type) + "

"; + var html = ""; + var plugins = availableTypeOptions.ImageFetchers; + + plugins = getOrderedPlugins(plugins, libraryOptionsForType.ImageFetcherOrder || []); + if (!plugins.length) return html; + + html += '
'; + html += '
'; + html += '

' + globalize.translate("HeaderTypeImageFetchers", availableTypeOptions.Type) + "

"; var supportedImageTypes = availableTypeOptions.SupportedImageTypes || []; - (supportedImageTypes.length > 1 || 1 === supportedImageTypes.length && "Primary" !== supportedImageTypes[0]) && (html += '"), html += "
", html += '
'; - for (var i = 0, length = plugins.length; i < length; i++) { + if (supportedImageTypes.length > 1 || 1 === supportedImageTypes.length && "Primary" !== supportedImageTypes[0]) { + html += '"; + } + html += "
"; + html += '
'; + for (var i = 0; i < plugins.length; i++) { var plugin = plugins[i]; html += '
'; - var isChecked = libraryOptionsForType.ImageFetchers ? -1 !== libraryOptionsForType.ImageFetchers.indexOf(plugin.Name) : plugin.DefaultEnabled, - checkedHtml = isChecked ? ' checked="checked"' : ""; - html += '", html += '
', html += '

', html += plugin.Name, html += "

", html += "
", i > 0 ? html += '' : plugins.length > 1 && (html += ''), html += "
" + var isChecked = libraryOptionsForType.ImageFetchers ? -1 !== libraryOptionsForType.ImageFetchers.indexOf(plugin.Name) : plugin.DefaultEnabled; + var checkedHtml = isChecked ? ' checked="checked"' : ""; + html += '"; + html += '
'; + html += '

'; + html += plugin.Name; + html += "

"; + html += "
"; + if (i > 0) { + html += ''; + } else if (plugins.length > 1) { + html += ''; + } + html += "
"; } - return html += "
", html += '
' + globalize.translate("LabelImageFetchersHelp") + "
", html += "
" + html += "
"; + html += '
' + globalize.translate("LabelImageFetchersHelp") + "
"; + html += ""; + return html; } function renderImageFetchers(page, availableOptions, libraryOptions) { - for (var html = "", elem = page.querySelector(".imageFetchers"), i = 0, length = availableOptions.TypeOptions.length; i < length; i++) { + var html = ""; + var elem = page.querySelector(".imageFetchers"); + for (var i = 0; i < availableOptions.TypeOptions.length; i++) { var availableTypeOptions = availableOptions.TypeOptions[i]; - html += getImageFetchersForTypeHtml(availableTypeOptions, getTypeOptions(libraryOptions, availableTypeOptions.Type) || {}) + html += getImageFetchersForTypeHtml(availableTypeOptions, getTypeOptions(libraryOptions, availableTypeOptions.Type) || {}); } - return elem.innerHTML = html, html ? (elem.classList.remove("hide"), page.querySelector(".chkDownloadImagesInAdvanceContainer").classList.remove("hide"), page.querySelector(".chkSaveLocalContainer").classList.remove("hide")) : (elem.classList.add("hide"), page.querySelector(".chkDownloadImagesInAdvanceContainer").classList.add("hide"), page.querySelector(".chkSaveLocalContainer").classList.add("hide")), !0 + elem.innerHTML = html; + if (html) { + elem.classList.remove("hide"); + page.querySelector(".chkDownloadImagesInAdvanceContainer").classList.remove("hide"); + page.querySelector(".chkSaveLocalContainer").classList.remove("hide"); + } else { + elem.classList.add("hide"); + page.querySelector(".chkDownloadImagesInAdvanceContainer").classList.add("hide"); + page.querySelector(".chkSaveLocalContainer").classList.add("hide"); + } + return true; } function populateMetadataSettings(parent, contentType, isNewLibrary) { @@ -151,15 +263,30 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct LibraryContentType: contentType, IsNewLibrary: isNewLibrary })).then(function(availableOptions) { - currentAvailableOptions = availableOptions, parent.availableOptions = availableOptions, renderMetadataSavers(parent, availableOptions.MetadataSavers), renderMetadataReaders(parent, availableOptions.MetadataReaders), renderMetadataFetchers(parent, availableOptions, {}), renderSubtitleFetchers(parent, availableOptions, {}), renderImageFetchers(parent, availableOptions, {}), availableOptions.SubtitleFetchers.length ? parent.querySelector(".subtitleDownloadSettings").classList.remove("hide") : parent.querySelector(".subtitleDownloadSettings").classList.add("hide") + currentAvailableOptions = availableOptions; + parent.availableOptions = availableOptions; + renderMetadataSavers(parent, availableOptions.MetadataSavers); + renderMetadataReaders(parent, availableOptions.MetadataReaders); + renderMetadataFetchers(parent, availableOptions, {}); + renderSubtitleFetchers(parent, availableOptions, {}); + renderImageFetchers(parent, availableOptions, {}); + availableOptions.SubtitleFetchers.length ? parent.querySelector(".subtitleDownloadSettings").classList.remove("hide") : parent.querySelector(".subtitleDownloadSettings").classList.add("hide") }).catch(function() { - return Promise.resolve() + return Promise.resolve(); }) } function adjustSortableListElement(elem) { var btnSortable = elem.querySelector(".btnSortable"); - elem.previousSibling ? (btnSortable.classList.add("btnSortableMoveUp"), btnSortable.classList.remove("btnSortableMoveDown"), btnSortable.querySelector("i").innerHTML = "keyboard_arrow_up") : (btnSortable.classList.remove("btnSortableMoveUp"), btnSortable.classList.add("btnSortableMoveDown"), btnSortable.querySelector("i").innerHTML = "keyboard_arrow_down") + if (elem.previousSibling) { + btnSortable.classList.add("btnSortableMoveUp"); + btnSortable.classList.remove("btnSortableMoveDown"); + btnSortable.querySelector("i").innerHTML = "keyboard_arrow_up"; + } else { + btnSortable.classList.remove("btnSortableMoveUp"); + btnSortable.classList.add("btnSortableMoveDown"); + btnSortable.querySelector("i").innerHTML = "keyboard_arrow_down"; + } } function showImageOptionsForType(type) { @@ -176,16 +303,16 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct function onImageFetchersContainerClick(e) { var btnImageOptionsForType = dom.parentWithClass(e.target, "btnImageOptionsForType"); if (btnImageOptionsForType) { - return void showImageOptionsForType(dom.parentWithClass(btnImageOptionsForType, "imageFetcher").getAttribute("data-type")) + return void showImageOptionsForType(dom.parentWithClass(btnImageOptionsForType, "imageFetcher").getAttribute("data-type")); } - onSortableContainerClick.call(this, e) + onSortableContainerClick.call(this, e); } function onSortableContainerClick(e) { var btnSortable = dom.parentWithClass(e.target, "btnSortable"); if (btnSortable) { - var li = dom.parentWithClass(btnSortable, "sortableOption"), - list = dom.parentWithClass(li, "paperList"); + var li = dom.parentWithClass(btnSortable, "sortableOption"); + var list = dom.parentWithClass(li, "paperList"); if (btnSortable.classList.contains("btnSortableMoveDown")) { var next = li.nextSibling; next && (li.parentNode.removeChild(li), next.parentNode.insertBefore(li, next.nextSibling)) @@ -198,35 +325,78 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct } function bindEvents(parent) { - parent.querySelector(".metadataReaders").addEventListener("click", onSortableContainerClick), parent.querySelector(".subtitleFetchers").addEventListener("click", onSortableContainerClick), parent.querySelector(".metadataFetchers").addEventListener("click", onSortableContainerClick), parent.querySelector(".imageFetchers").addEventListener("click", onImageFetchersContainerClick) + parent.querySelector(".metadataReaders").addEventListener("click", onSortableContainerClick); + parent.querySelector(".subtitleFetchers").addEventListener("click", onSortableContainerClick); + parent.querySelector(".metadataFetchers").addEventListener("click", onSortableContainerClick); + parent.querySelector(".imageFetchers").addEventListener("click", onImageFetchersContainerClick); } function embed(parent, contentType, libraryOptions) { currentLibraryOptions = { TypeOptions: [] - }, currentAvailableOptions = null; - var isNewLibrary = null == libraryOptions; - return isNewLibrary && parent.classList.add("newlibrary"), new Promise(function(resolve, reject) { + }; + currentAvailableOptions = null; + var isNewLibrary = null === libraryOptions; + isNewLibrary && parent.classList.add("newlibrary"); + return new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest; - xhr.open("GET", "components/libraryoptionseditor/libraryoptionseditor.template.html", !0), xhr.onload = function(e) { + xhr.open("GET", "components/libraryoptionseditor/libraryoptionseditor.template.html", true); + xhr.onload = function(e) { var template = this.response; - parent.innerHTML = globalize.translateDocument(template), populateRefreshInterval(parent.querySelector("#selectAutoRefreshInterval")); + parent.innerHTML = globalize.translateDocument(template); + populateRefreshInterval(parent.querySelector("#selectAutoRefreshInterval")); var promises = [populateLanguages(parent), populateCountries(parent.querySelector("#selectCountry"))]; Promise.all(promises).then(function() { return setContentType(parent, contentType).then(function() { - libraryOptions && setLibraryOptions(parent, libraryOptions), bindEvents(parent), resolve() - }) - }) - }, xhr.send() - }) + libraryOptions && setLibraryOptions(parent, libraryOptions); + bindEvents(parent); + resolve(); + }); + }); + }; + xhr.send(); + }); } function setAdvancedVisible(parent, visible) { - for (var elems = parent.querySelectorAll(".advanced"), i = 0, length = elems.length; i < length; i++) visible ? elems[i].classList.remove("advancedHide") : elems[i].classList.add("advancedHide") + var elems = parent.querySelectorAll(".advanced"); + for (var i = 0; i < elems.length; i++) { + visible ? elems[i].classList.remove("advancedHide") : elems[i].classList.add("advancedHide"); + } } function setContentType(parent, contentType) { - return "homevideos" === contentType || "photos" === contentType ? parent.querySelector(".chkEnablePhotosContainer").classList.remove("hide") : parent.querySelector(".chkEnablePhotosContainer").classList.add("hide"), "tvshows" !== contentType && "movies" !== contentType && "homevideos" !== contentType && "musicvideos" !== contentType && "mixed" !== contentType && contentType ? parent.querySelector(".chapterSettingsSection").classList.add("hide") : parent.querySelector(".chapterSettingsSection").classList.remove("hide"), "tvshows" === contentType ? (parent.querySelector(".chkImportMissingEpisodesContainer").classList.remove("hide"), parent.querySelector(".chkAutomaticallyGroupSeriesContainer").classList.remove("hide"), parent.querySelector(".fldSeasonZeroDisplayName").classList.remove("hide"), parent.querySelector("#txtSeasonZeroName").setAttribute("required", "required")) : (parent.querySelector(".chkImportMissingEpisodesContainer").classList.add("hide"), parent.querySelector(".chkAutomaticallyGroupSeriesContainer").classList.add("hide"), parent.querySelector(".fldSeasonZeroDisplayName").classList.add("hide"), parent.querySelector("#txtSeasonZeroName").removeAttribute("required")), "books" === contentType || "boxsets" === contentType || "playlists" === contentType || "music" === contentType ? parent.querySelector(".chkEnableEmbeddedTitlesContainer").classList.add("hide") : parent.querySelector(".chkEnableEmbeddedTitlesContainer").classList.remove("hide"), populateMetadataSettings(parent, contentType) + if (contentType === "homevideos" || contentType === "photos") { + parent.querySelector(".chkEnablePhotosContainer").classList.remove("hide"); + } else { + parent.querySelector(".chkEnablePhotosContainer").classList.add("hide"); + } + + if (contentType !== "tvshows" && contentType !== "movies" && contentType !== "homevideos" && contentType !== "musicvideos" && contentType !== "mixed") { + parent.querySelector(".chapterSettingsSection").classList.add("hide"); + } else { + parent.querySelector(".chapterSettingsSection").classList.remove("hide"); + } + + if (contentType === "tvshows") { + parent.querySelector(".chkImportMissingEpisodesContainer").classList.remove("hide"); + parent.querySelector(".chkAutomaticallyGroupSeriesContainer").classList.remove("hide"); + parent.querySelector(".fldSeasonZeroDisplayName").classList.remove("hide"); + parent.querySelector("#txtSeasonZeroName").setAttribute("required", "required"); + } else { + parent.querySelector(".chkImportMissingEpisodesContainer").classList.add("hide"); + parent.querySelector(".chkAutomaticallyGroupSeriesContainer").classList.add("hide"); + parent.querySelector(".fldSeasonZeroDisplayName").classList.add("hide"); + parent.querySelector("#txtSeasonZeroName").removeAttribute("required"); + } + + if (contentType === "books" || contentType === "boxsets" || contentType === "playlists" || contentType === "music") { + parent.querySelector(".chkEnableEmbeddedTitlesContainer").classList.add("hide"); + } else { + parent.querySelector(".chkEnableEmbeddedTitlesContainer").classList.remove("hide"); + } + + return populateMetadataSettings(parent, contentType); } function setSubtitleFetchersIntoOptions(parent, options) { @@ -234,64 +404,87 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct return !elem.checked }), function(elem) { return elem.getAttribute("data-pluginname") - }), options.SubtitleFetcherOrder = Array.prototype.map.call(parent.querySelectorAll(".subtitleFetcherItem"), function(elem) { + }); + + options.SubtitleFetcherOrder = Array.prototype.map.call(parent.querySelectorAll(".subtitleFetcherItem"), function(elem) { return elem.getAttribute("data-pluginname") - }) + }); } function setMetadataFetchersIntoOptions(parent, options) { - for (var sections = parent.querySelectorAll(".metadataFetcher"), i = 0, length = sections.length; i < length; i++) { - var section = sections[i], - type = section.getAttribute("data-type"), - typeOptions = getTypeOptions(options, type); - typeOptions || (typeOptions = { - Type: type - }, options.TypeOptions.push(typeOptions)), typeOptions.MetadataFetchers = Array.prototype.map.call(Array.prototype.filter.call(section.querySelectorAll(".chkMetadataFetcher"), function(elem) { - return elem.checked + var sections = parent.querySelectorAll(".metadataFetcher"); + for (var i = 0; i < sections.length; i++) { + var section = sections[i]; + var type = section.getAttribute("data-type"); + var typeOptions = getTypeOptions(options, type); + if (!typeOptions) { + typeOptions = { + Type: type + }; + options.TypeOptions.push(typeOptions); + } + typeOptions.MetadataFetchers = Array.prototype.map.call(Array.prototype.filter.call(section.querySelectorAll(".chkMetadataFetcher"), function(elem) { + return elem.checked; }), function(elem) { - return elem.getAttribute("data-pluginname") - }), typeOptions.MetadataFetcherOrder = Array.prototype.map.call(section.querySelectorAll(".metadataFetcherItem"), function(elem) { - return elem.getAttribute("data-pluginname") - }) + return elem.getAttribute("data-pluginname"); + }); + + typeOptions.MetadataFetcherOrder = Array.prototype.map.call(section.querySelectorAll(".metadataFetcherItem"), function(elem) { + return elem.getAttribute("data-pluginname"); + }); } } function setImageFetchersIntoOptions(parent, options) { - for (var sections = parent.querySelectorAll(".imageFetcher"), i = 0, length = sections.length; i < length; i++) { - var section = sections[i], - type = section.getAttribute("data-type"), - typeOptions = getTypeOptions(options, type); - typeOptions || (typeOptions = { - Type: type - }, options.TypeOptions.push(typeOptions)), typeOptions.ImageFetchers = Array.prototype.map.call(Array.prototype.filter.call(section.querySelectorAll(".chkImageFetcher"), function(elem) { + var sections = parent.querySelectorAll(".imageFetcher"); + for (var i = 0; i < sections.length; i++) { + var section = sections[i]; + var type = section.getAttribute("data-type"); + var typeOptions = getTypeOptions(options, type); + if (!typeOptions) { + typeOptions = { + Type: type + }; + options.TypeOptions.push(typeOptions); + } + + typeOptions.ImageFetchers = Array.prototype.map.call(Array.prototype.filter.call(section.querySelectorAll(".chkImageFetcher"), function(elem) { return elem.checked }), function(elem) { return elem.getAttribute("data-pluginname") - }), typeOptions.ImageFetcherOrder = Array.prototype.map.call(section.querySelectorAll(".imageFetcherItem"), function(elem) { + }); + + typeOptions.ImageFetcherOrder = Array.prototype.map.call(section.querySelectorAll(".imageFetcherItem"), function(elem) { return elem.getAttribute("data-pluginname") - }) + }); } } function setImageOptionsIntoOptions(parent, options) { - for (var originalTypeOptions = (currentLibraryOptions || {}).TypeOptions || [], i = 0, length = originalTypeOptions.length; i < length; i++) { - var originalTypeOption = originalTypeOptions[i], - typeOptions = getTypeOptions(options, originalTypeOption.Type); - typeOptions || (typeOptions = { - Type: type - }, options.TypeOptions.push(typeOptions)), originalTypeOption.ImageOptions && (typeOptions.ImageOptions = originalTypeOption.ImageOptions) + var originalTypeOptions = (currentLibraryOptions || {}).TypeOptions || []; + for (var i = 0; i < originalTypeOptions.length; i++) { + var originalTypeOption = originalTypeOptions[i]; + var typeOptions = getTypeOptions(options, originalTypeOption.Type); + + if (!typeOptions) { + typeOptions = { + Type: type + }; + options.TypeOptions.push(typeOptions); + } + originalTypeOption.ImageOptions && (typeOptions.ImageOptions = originalTypeOption.ImageOptions); } } function getLibraryOptions(parent) { var options = { - EnableArchiveMediaFiles: !1, + EnableArchiveMediaFiles: false, EnablePhotos: parent.querySelector(".chkEnablePhotos").checked, EnableRealtimeMonitor: parent.querySelector(".chkEnableRealtimeMonitor").checked, ExtractChapterImagesDuringLibraryScan: parent.querySelector(".chkExtractChaptersDuringLibraryScan").checked, EnableChapterImageExtraction: parent.querySelector(".chkExtractChapterImages").checked, DownloadImagesInAdvance: parent.querySelector("#chkDownloadImagesInAdvance").checked, - EnableInternetProviders: !0, + EnableInternetProviders: true, ImportMissingEpisodes: parent.querySelector("#chkImportMissingEpisodes").checked, SaveLocalMetadata: parent.querySelector("#chkSaveLocal").checked, EnableAutomaticSeriesGrouping: parent.querySelector(".chkAutomaticallyGroupSeries").checked, @@ -311,29 +504,66 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct }), TypeOptions: [] }; - return options.LocalMetadataReaderOrder = Array.prototype.map.call(parent.querySelectorAll(".localReaderOption"), function(elem) { + + options.LocalMetadataReaderOrder = Array.prototype.map.call(parent.querySelectorAll(".localReaderOption"), function(elem) { return elem.getAttribute("data-pluginname") - }), options.SubtitleDownloadLanguages = Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll(".chkSubtitleLanguage"), function(elem) { + }); + options.SubtitleDownloadLanguages = Array.prototype.map.call(Array.prototype.filter.call(parent.querySelectorAll(".chkSubtitleLanguage"), function(elem) { return elem.checked }), function(elem) { return elem.getAttribute("data-lang") - }), setSubtitleFetchersIntoOptions(parent, options), setMetadataFetchersIntoOptions(parent, options), setImageFetchersIntoOptions(parent, options), setImageOptionsIntoOptions(parent, options), options + }); + setSubtitleFetchersIntoOptions(parent, options); + setMetadataFetchersIntoOptions(parent, options); + setImageFetchersIntoOptions(parent, options); + setImageOptionsIntoOptions(parent, options); + + return options; } function getOrderedPlugins(plugins, configuredOrder) { - return plugins = plugins.slice(0), plugins.sort(function(a, b) { + plugins = plugins.slice(0); + plugins.sort(function(a, b) { return a = configuredOrder.indexOf(a.Name), b = configuredOrder.indexOf(b.Name), a < b ? -1 : a > b ? 1 : 0 - }), plugins + }); + return plugins; } function setLibraryOptions(parent, options) { - currentLibraryOptions = options, currentAvailableOptions = parent.availableOptions, parent.querySelector("#selectLanguage").value = options.PreferredMetadataLanguage || "", parent.querySelector("#selectCountry").value = options.MetadataCountryCode || "", parent.querySelector("#selectAutoRefreshInterval").value = options.AutomaticRefreshIntervalDays || "0", parent.querySelector("#txtSeasonZeroName").value = options.SeasonZeroDisplayName || "Specials", parent.querySelector(".chkEnablePhotos").checked = options.EnablePhotos, parent.querySelector(".chkEnableRealtimeMonitor").checked = options.EnableRealtimeMonitor, parent.querySelector(".chkExtractChaptersDuringLibraryScan").checked = options.ExtractChapterImagesDuringLibraryScan, parent.querySelector(".chkExtractChapterImages").checked = options.EnableChapterImageExtraction, parent.querySelector("#chkDownloadImagesInAdvance").checked = options.DownloadImagesInAdvance, parent.querySelector("#chkSaveLocal").checked = options.SaveLocalMetadata, parent.querySelector("#chkImportMissingEpisodes").checked = options.ImportMissingEpisodes, parent.querySelector(".chkAutomaticallyGroupSeries").checked = options.EnableAutomaticSeriesGrouping, parent.querySelector("#chkEnableEmbeddedTitles").checked = options.EnableEmbeddedTitles, parent.querySelector("#chkSkipIfGraphicalSubsPresent").checked = options.SkipSubtitlesIfEmbeddedSubtitlesPresent, parent.querySelector("#chkSaveSubtitlesLocally").checked = options.SaveSubtitlesWithMedia, parent.querySelector("#chkSkipIfAudioTrackPresent").checked = options.SkipSubtitlesIfAudioTrackMatches, parent.querySelector("#chkRequirePerfectMatch").checked = options.RequirePerfectSubtitleMatch, Array.prototype.forEach.call(parent.querySelectorAll(".chkMetadataSaver"), function(elem) { + currentLibraryOptions = options; + currentAvailableOptions = parent.availableOptions; + parent.querySelector("#selectLanguage").value = options.PreferredMetadataLanguage || ""; + parent.querySelector("#selectCountry").value = options.MetadataCountryCode || ""; + parent.querySelector("#selectAutoRefreshInterval").value = options.AutomaticRefreshIntervalDays || "0"; + parent.querySelector("#txtSeasonZeroName").value = options.SeasonZeroDisplayName || "Specials"; + parent.querySelector(".chkEnablePhotos").checked = options.EnablePhotos; + parent.querySelector(".chkEnableRealtimeMonitor").checked = options.EnableRealtimeMonitor; + parent.querySelector(".chkExtractChaptersDuringLibraryScan").checked = options.ExtractChapterImagesDuringLibraryScan; + parent.querySelector(".chkExtractChapterImages").checked = options.EnableChapterImageExtraction; + parent.querySelector("#chkDownloadImagesInAdvance").checked = options.DownloadImagesInAdvance; + parent.querySelector("#chkSaveLocal").checked = options.SaveLocalMetadata; + parent.querySelector("#chkImportMissingEpisodes").checked = options.ImportMissingEpisodes; + parent.querySelector(".chkAutomaticallyGroupSeries").checked = options.EnableAutomaticSeriesGrouping; + parent.querySelector("#chkEnableEmbeddedTitles").checked = options.EnableEmbeddedTitles; + parent.querySelector("#chkSkipIfGraphicalSubsPresent").checked = options.SkipSubtitlesIfEmbeddedSubtitlesPresent; + parent.querySelector("#chkSaveSubtitlesLocally").checked = options.SaveSubtitlesWithMedia; + parent.querySelector("#chkSkipIfAudioTrackPresent").checked = options.SkipSubtitlesIfAudioTrackMatches; + parent.querySelector("#chkRequirePerfectMatch").checked = options.RequirePerfectSubtitleMatch; + Array.prototype.forEach.call(parent.querySelectorAll(".chkMetadataSaver"), function(elem) { elem.checked = options.MetadataSavers ? -1 !== options.MetadataSavers.indexOf(elem.getAttribute("data-pluginname")) : "true" === elem.getAttribute("data-defaultenabled") - }), Array.prototype.forEach.call(parent.querySelectorAll(".chkSubtitleLanguage"), function(elem) { + }); + Array.prototype.forEach.call(parent.querySelectorAll(".chkSubtitleLanguage"), function(elem) { elem.checked = !!options.SubtitleDownloadLanguages && -1 !== options.SubtitleDownloadLanguages.indexOf(elem.getAttribute("data-lang")) - }), renderMetadataReaders(parent, getOrderedPlugins(parent.availableOptions.MetadataReaders, options.LocalMetadataReaderOrder || [])), renderMetadataFetchers(parent, parent.availableOptions, options), renderImageFetchers(parent, parent.availableOptions, options), renderSubtitleFetchers(parent, parent.availableOptions, options) + }); + renderMetadataReaders(parent, getOrderedPlugins(parent.availableOptions.MetadataReaders, options.LocalMetadataReaderOrder || [])); + renderMetadataFetchers(parent, parent.availableOptions, options); + renderImageFetchers(parent, parent.availableOptions, options); + renderSubtitleFetchers(parent, parent.availableOptions, options); } - var currentLibraryOptions, currentAvailableOptions; + + var currentLibraryOptions; + var currentAvailableOptions; + return { embed: embed, setContentType: setContentType, diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.template.html b/src/components/libraryoptionseditor/libraryoptionseditor.template.html index 8a53ee556..ebfdacaa1 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.template.html +++ b/src/components/libraryoptionseditor/libraryoptionseditor.template.html @@ -39,16 +39,21 @@
+
+
${MessageEnablingOptionLongerScans}
+
+
+
"; html += '
'; - if (virtualFolder.showMenu === true) { + + // always show menu unless explicitly hidden + if (virtualFolder.showMenu !== false) { html += '
'; html += ''; html += "
"; From e833225ab370743d162ef06eac2a32de0d5fddc9 Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 6 May 2019 19:47:02 -0700 Subject: [PATCH 3/7] minor code cleanup --- .../medialibrarycreator.js | 108 ++++++++++-------- .../medialibrarycreator.template.html | 10 +- .../medialibraryeditor.template.html | 2 +- src/controllers/medialibrarypage.js | 11 +- 4 files changed, 74 insertions(+), 57 deletions(-) diff --git a/src/components/medialibrarycreator/medialibrarycreator.js b/src/components/medialibrarycreator/medialibrarycreator.js index d02f0940c..80f95dc85 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.js +++ b/src/components/medialibrarycreator/medialibrarycreator.js @@ -14,30 +14,31 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed type: "error" }) }); - } else { - isCreating = true; - loading.show(); - - var form = this, - dlg = $(form).parents(".dialog")[0], - name = $("#txtValue", form).val(), - type = $("#selectCollectionType", form).val(); - if (type == "mixed") type = null; - var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions")); - libraryOptions.PathInfos = pathInfos; - ApiClient.addVirtualFolder(name, type, currentOptions.refresh, libraryOptions).then(function() { - hasChanges = true; - isCreating = false; - loading.hide(); - dialogHelper.close(dlg); - }, function() { - require(["toast"], function(toast) { - toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder")) - }) - isCreating = false; - loading.hide(); - }); + return false; } + + isCreating = true; + loading.show(); + + var form = this; + var dlg = $(form).parents(".dialog")[0]; + var name = $("#txtValue", form).val(); + var type = $("#selectCollectionType", form).val(); + if (type == "mixed") type = null; + var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions")); + libraryOptions.PathInfos = pathInfos; + ApiClient.addVirtualFolder(name, type, currentOptions.refresh, libraryOptions).then(function() { + hasChanges = true; + isCreating = false; + loading.hide(); + dialogHelper.close(dlg); + }, function() { + require(["toast"], function(toast) { + toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder")) + }) + isCreating = false; + loading.hide(); + }); return false; } @@ -49,13 +50,14 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed function initEditor(page, collectionTypeOptions) { $("#selectCollectionType", page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val("").on("change", function() { - var value = this.value, - dlg = $(this).parents(".dialog")[0]; + var value = this.value; + var dlg = $(this).parents(".dialog")[0]; libraryoptionseditor.setContentType(dlg.querySelector(".libraryOptions"), value == "mixed" ? "" : value); - if (value) + if (value) { dlg.querySelector(".libraryOptions").classList.remove("hide"); - else + } else { dlg.querySelector(".libraryOptions").classList.add("hide"); + } if (value != "mixed") { var index = this.selectedIndex; @@ -73,7 +75,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed function onToggleAdvancedChange() { var dlg = dom.parentWithClass(this, "dlg-librarycreator"); - libraryoptionseditor.setAdvancedVisible(dlg.querySelector(".libraryOptions"), this.checked) + libraryoptionseditor.setAdvancedVisible(dlg.querySelector(".libraryOptions"), this.checked); } function onAddButtonClick() { @@ -83,7 +85,8 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed picker.show({ enableNetworkSharePath: true, callback: function(path, networkSharePath) { - path && addMediaLocation(page, path, networkSharePath), picker.close() + path && addMediaLocation(page, path, networkSharePath); + picker.close(); } }) }) @@ -95,31 +98,36 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed } function renderPaths(page) { - var foldersHtml = pathInfos.map(getFolderHtml).join(""), - folderList = page.querySelector(".folderList"); - folderList.innerHTML = foldersHtml, foldersHtml ? folderList.classList.remove("hide") : folderList.classList.add("hide") + var foldersHtml = pathInfos.map(getFolderHtml).join(""); + var folderList = page.querySelector(".folderList"); + folderList.innerHTML = foldersHtml; + foldersHtml ? folderList.classList.remove("hide") : folderList.classList.add("hide"); } function addMediaLocation(page, path, networkSharePath) { var pathLower = path.toLowerCase(); - if (0 == pathInfos.filter(function(p) { - return p.Path.toLowerCase() == pathLower - }).length) { + var path = pathInfos.filter(function(p) { + return p.Path.toLowerCase() == pathLower; + }); + if (path.length === 0) { var pathInfo = { Path: path }; - networkSharePath && (pathInfo.NetworkPath = networkSharePath), pathInfos.push(pathInfo), renderPaths(page) + networkSharePath && (pathInfo.NetworkPath = networkSharePath); + pathInfos.push(pathInfo); + renderPaths(page); } } function onRemoveClick(e) { - var button = dom.parentWithClass(e.target, "btnRemovePath"), - index = parseInt(button.getAttribute("data-index")), - location = pathInfos[index].Path, - locationLower = location.toLowerCase(); + var button = dom.parentWithClass(e.target, "btnRemovePath"); + var index = parseInt(button.getAttribute("data-index")); + var location = pathInfos[index].Path; + var locationLower = location.toLowerCase(); pathInfos = pathInfos.filter(function(p) { - return p.Path.toLowerCase() != locationLower - }), renderPaths(dom.parentWithClass(button, "dlg-librarycreator")) + return p.Path.toLowerCase() != locationLower; + }); + renderPaths(dom.parentWithClass(button, "dlg-librarycreator")); } function onDialogClosed() { @@ -131,14 +139,17 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed function initLibraryOptions(dlg) { libraryoptionseditor.embed(dlg.querySelector(".libraryOptions")).then(function() { - $("#selectCollectionType", dlg).trigger("change"), onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced")) + $("#selectCollectionType", dlg).trigger("change"); + onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced")); }) } function editor() { this.show = function(options) { return new Promise(function(resolve, reject) { - currentOptions = options, currentResolve = resolve, hasChanges = false; + currentOptions = options; + currentResolve = resolve; + hasChanges = false; var xhr = new XMLHttpRequest; xhr.open("GET", "components/medialibrarycreator/medialibrarycreator.template.html", true); xhr.onload = function(e) { @@ -168,6 +179,13 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed }) } } - var currentResolve, hasChanges, currentOptions, pathInfos = [], isCreating = false; + + var pathInfos = []; + var currentResolve; + var currentOptions; + + var hasChanges; + var isCreating = false; + return editor }); diff --git a/src/components/medialibrarycreator/medialibrarycreator.template.html b/src/components/medialibrarycreator/medialibrarycreator.template.html index eee1aee51..c133bfd3f 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.template.html +++ b/src/components/medialibrarycreator/medialibrarycreator.template.html @@ -1,14 +1,11 @@
-

- ${ButtonAddMediaLibrary} -

+

${ButtonAddMediaLibrary}

-
+
+

${HeadersFolders}

+
-
-
diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index c8b1f8b47..362f89519 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -157,12 +157,13 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl Name: globalize.translate("ButtonAddMediaLibrary"), icon: "add_circle", Locations: [], - showType: !1, - showLocations: !1, - showMenu: !1, - showNameWithIcon: !0 + showType: false, + showLocations: false, + showMenu: false, + showNameWithIcon: true }); - for (var i = 0, length = virtualFolders.length; i < length; i++) { + + for (var i = 0; i < virtualFolders.length; i++) { var virtualFolder = virtualFolders[i]; html += getVirtualFolderHtml(page, virtualFolder, i) } From b41ae5f483ebad4247fd00e2207faa7e9e047233 Mon Sep 17 00:00:00 2001 From: dkanada Date: Mon, 6 May 2019 21:26:48 -0700 Subject: [PATCH 4/7] remove unused call to hide loading indicator --- .../medialibrarycreator/medialibrarycreator.js | 18 ++++++++++-------- .../medialibraryeditor/medialibraryeditor.js | 3 ++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/components/medialibrarycreator/medialibrarycreator.js b/src/components/medialibrarycreator/medialibrarycreator.js index 80f95dc85..af2c58506 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.js +++ b/src/components/medialibrarycreator/medialibrarycreator.js @@ -34,8 +34,8 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed dialogHelper.close(dlg); }, function() { require(["toast"], function(toast) { - toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder")) - }) + toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder")); + }); isCreating = false; loading.hide(); }); @@ -70,7 +70,12 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed $(".collectionTypeFieldDescription", dlg).html(folderOption.message || "") } } - }), page.querySelector(".btnAddFolder").addEventListener("click", onAddButtonClick), page.querySelector("form").addEventListener("submit", onSubmit), page.querySelector(".folderList").addEventListener("click", onRemoveClick), page.querySelector(".chkAdvanced").addEventListener("change", onToggleAdvancedChange) + }); + + page.querySelector(".btnAddFolder").addEventListener("click", onAddButtonClick); + page.querySelector("form").addEventListener("submit", onSubmit); + page.querySelector(".folderList").addEventListener("click", onRemoveClick); + page.querySelector(".chkAdvanced").addEventListener("change", onToggleAdvancedChange); } function onToggleAdvancedChange() { @@ -131,9 +136,6 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed } function onDialogClosed() { - // I can't see any corresponding call to loading.show, - // so I think this is not supposed to be here. - loading.hide(); currentResolve(hasChanges); } @@ -176,7 +178,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed initLibraryOptions(dlg); }; xhr.send(); - }) + }); } } @@ -184,7 +186,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed var currentResolve; var currentOptions; - var hasChanges; + var hasChanges = false; var isCreating = false; return editor diff --git a/src/components/medialibraryeditor/medialibraryeditor.js b/src/components/medialibraryeditor/medialibraryeditor.js index 62a8e28b2..f3a08d4fb 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.js +++ b/src/components/medialibraryeditor/medialibraryeditor.js @@ -193,8 +193,9 @@ define(["loading", "dialogHelper", "dom", "components/libraryoptionseditor/libra } var currentDeferred; - var hasChanges; var currentOptions; + var hasChanges = false; + return editor; }); \ No newline at end of file From a5bad54c5143728fe363f4e85ad6ceed00dd4dc1 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 7 May 2019 12:58:16 -0700 Subject: [PATCH 5/7] remove nested form from library create dialog --- .../medialibrarycreator.js | 18 +++----- .../medialibrarycreator.template.html | 46 +++++++++---------- 2 files changed, 30 insertions(+), 34 deletions(-) diff --git a/src/components/medialibrarycreator/medialibrarycreator.js b/src/components/medialibrarycreator/medialibrarycreator.js index af2c58506..54c13a4eb 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.js +++ b/src/components/medialibrarycreator/medialibrarycreator.js @@ -1,10 +1,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionseditor/libraryoptionseditor", "emby-toggle", "emby-input", "emby-select", "paper-icon-button-light", "listViewStyle", "formDialogStyle", "emby-button", "flexStyles"], function(loading, dialogHelper, dom, $, libraryoptionseditor) { "use strict"; - function onSubmit(e) { - e.preventDefault(); - e.stopPropagation(); - + function onAddLibrary() { if (isCreating) return false; if (pathInfos.length == 0) { @@ -20,10 +17,9 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed isCreating = true; loading.show(); - var form = this; - var dlg = $(form).parents(".dialog")[0]; - var name = $("#txtValue", form).val(); - var type = $("#selectCollectionType", form).val(); + var dlg = dom.parentWithClass(this, "dlg-librarycreator"); + var name = $("#txtValue", dlg).val(); + var type = $("#selectCollectionType", dlg).val(); if (type == "mixed") type = null; var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions")); libraryOptions.PathInfos = pathInfos; @@ -73,7 +69,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed }); page.querySelector(".btnAddFolder").addEventListener("click", onAddButtonClick); - page.querySelector("form").addEventListener("submit", onSubmit); + page.querySelector(".btnSubmit").addEventListener("click", onAddLibrary); page.querySelector(".folderList").addEventListener("click", onRemoveClick); page.querySelector(".chkAdvanced").addEventListener("change", onToggleAdvancedChange); } @@ -111,10 +107,10 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed function addMediaLocation(page, path, networkSharePath) { var pathLower = path.toLowerCase(); - var path = pathInfos.filter(function(p) { + var pathFilter = pathInfos.filter(function(p) { return p.Path.toLowerCase() == pathLower; }); - if (path.length === 0) { + if (!pathFilter.length) { var pathInfo = { Path: path }; diff --git a/src/components/medialibrarycreator/medialibrarycreator.template.html b/src/components/medialibrarycreator/medialibrarycreator.template.html index c133bfd3f..76b37a8f5 100644 --- a/src/components/medialibrarycreator/medialibrarycreator.template.html +++ b/src/components/medialibrarycreator/medialibrarycreator.template.html @@ -5,39 +5,39 @@
- -
- -
+
+ +
-
- -
-
+
+ +
+
-
- -
+
+ +
+

${HeadersFolders}

-
+
+
-
- -
- -
- +
+
+ +
+
\ No newline at end of file From aa14b34035aa00939377bb9890096e7fae588dbb Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 7 May 2019 13:17:40 -0700 Subject: [PATCH 6/7] add submit button to library edit dialog --- .../medialibraryeditor/medialibraryeditor.js | 34 +++++++++++++------ .../medialibraryeditor.template.html | 6 ++++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/components/medialibraryeditor/medialibraryeditor.js b/src/components/medialibraryeditor/medialibraryeditor.js index f3a08d4fb..ef3a3d5b1 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.js +++ b/src/components/medialibraryeditor/medialibraryeditor.js @@ -1,6 +1,28 @@ define(["loading", "dialogHelper", "dom", "components/libraryoptionseditor/libraryoptionseditor", "emby-button", "listViewStyle", "paper-icon-button-light", "formDialogStyle", "emby-toggle", "flexStyles"], function(loading, dialogHelper, dom, libraryoptionseditor) { "use strict"; + function onEditLibrary() { + if (isCreating) return false; + + isCreating = true; + loading.show(); + + var dlg = dom.parentWithClass(this, "dlg-libraryeditor"); + var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions")); + libraryOptions = Object.assign(currentOptions.library.LibraryOptions || {}, libraryOptions); + + ApiClient.updateVirtualFolderOptions(currentOptions.library.ItemId, libraryOptions).then(function() { + hasChanges = true; + isCreating = false; + loading.hide(); + dialogHelper.close(dlg); + }, function() { + isCreating = false; + loading.hide(); + }); + return false; + } + function addMediaLocation(page, path, networkSharePath) { var virtualFolder = currentOptions.library; var refreshAfterChange = currentOptions.refresh; @@ -138,21 +160,13 @@ define(["loading", "dialogHelper", "dom", "components/libraryoptionseditor/libra dlg.querySelector(".btnAddFolder").addEventListener("click", onAddButtonClick); dlg.querySelector(".folderList").addEventListener("click", onListItemClick); dlg.querySelector(".chkAdvanced").addEventListener("change", onToggleAdvancedChange); + dlg.querySelector(".btnSubmit").addEventListener("click", onEditLibrary); libraryoptionseditor.embed(dlg.querySelector(".libraryOptions"), options.library.CollectionType, options.library.LibraryOptions).then(function() { onToggleAdvancedChange.call(dlg.querySelector(".chkAdvanced")); }); } - function onDialogClosing() { - var dlg = this; - var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions")); - libraryOptions = Object.assign(currentOptions.library.LibraryOptions || {}, libraryOptions); - ApiClient.updateVirtualFolderOptions(currentOptions.library.ItemId, libraryOptions); - } - function onDialogClosed() { - loading.hide(); - hasChanges = true; currentDeferred.resolveWith(null, [hasChanges]); } @@ -179,7 +193,6 @@ define(["loading", "dialogHelper", "dom", "components/libraryoptionseditor/libra dlg.innerHTML = Globalize.translateDocument(template); dlg.querySelector(".formDialogHeaderTitle").innerHTML = options.library.Name; initEditor(dlg, options); - dlg.addEventListener("closing", onDialogClosing); dlg.addEventListener("close", onDialogClosed); dialogHelper.open(dlg); dlg.querySelector(".btnCancel").addEventListener("click", function() { @@ -196,6 +209,7 @@ define(["loading", "dialogHelper", "dom", "components/libraryoptionseditor/libra var currentOptions; var hasChanges = false; + var isCreating = false; return editor; }); \ No newline at end of file diff --git a/src/components/medialibraryeditor/medialibraryeditor.template.html b/src/components/medialibraryeditor/medialibraryeditor.template.html index 78b7c6cbd..40238bf06 100644 --- a/src/components/medialibraryeditor/medialibraryeditor.template.html +++ b/src/components/medialibraryeditor/medialibraryeditor.template.html @@ -29,3 +29,9 @@
+ +
+ +
\ No newline at end of file From aac1c52a2ff3944e685bfa0eb0c1676ff793ef2d Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 7 May 2019 13:23:22 -0700 Subject: [PATCH 7/7] remove useless dialog --- src/controllers/medialibrarypage.js | 17 ----------------- src/library.html | 4 +--- src/strings/ar.json | 3 --- src/strings/bg-bg.json | 3 --- src/strings/cs.json | 3 --- src/strings/da.json | 3 --- src/strings/de.json | 3 --- src/strings/el.json | 3 --- src/strings/en-us.json | 3 --- src/strings/es-ar.json | 1 - src/strings/es-mx.json | 3 --- src/strings/es.json | 3 --- src/strings/fr-ca.json | 1 - src/strings/fr.json | 3 --- src/strings/hr.json | 3 --- src/strings/hu.json | 3 --- src/strings/it.json | 3 --- src/strings/kk.json | 3 --- src/strings/ko.json | 2 -- src/strings/ms.json | 1 - src/strings/nb.json | 3 --- src/strings/nl.json | 3 --- src/strings/pl.json | 3 --- src/strings/pt-br.json | 3 --- src/strings/ru.json | 3 --- src/strings/sk.json | 2 -- src/strings/sv.json | 3 --- src/strings/zh-cn.json | 3 --- src/strings/zh-tw.json | 3 --- 29 files changed, 1 insertion(+), 93 deletions(-) diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index 362f89519..a6e86f0ef 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -1,15 +1,6 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "globalize", "dom", "indicators", "cardStyle", "emby-itemrefreshindicator"], function($, appHost, taskButton, loading, libraryMenu, globalize, dom, indicators) { "use strict"; - function changeCollectionType(page, virtualFolder) { - require(["alert"], function(alert) { - alert({ - title: globalize.translate("HeaderChangeFolderType"), - text: globalize.translate("HeaderChangeFolderTypeHelp") - }) - }) - } - function addVirtualFolder(page) { require(["medialibrarycreator"], function(medialibrarycreator) { (new medialibrarycreator).show({ @@ -81,11 +72,6 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl var index = parseInt(card.getAttribute("data-index")); var virtualFolder = virtualFolders[index]; var menuItems = []; - menuItems.push({ - name: globalize.translate("ButtonChangeContentType"), - id: "changetype", - ironIcon: "videocam" - }); menuItems.push({ name: globalize.translate("ButtonEditImages"), id: "editimages", @@ -117,9 +103,6 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl positionTo: elem, callback: function(resultId) { switch (resultId) { - case "changetype": - changeCollectionType(page, virtualFolder); - break; case "edit": editVirtualFolder(page, virtualFolder); break; diff --git a/src/library.html b/src/library.html index 6db2e3933..294ff4677 100644 --- a/src/library.html +++ b/src/library.html @@ -1,16 +1,14 @@
-
- - ${Help}
+
diff --git a/src/strings/ar.json b/src/strings/ar.json index 05830f2ab..f51ebb4fd 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -25,7 +25,6 @@ "ButtonAudioTracks": "المقاطع الصوتية", "ButtonBack": "خلف", "ButtonCancel": "الغاء", - "ButtonChangeContentType": "غيّر نوع المحتوى", "ButtonChangeServer": "غير الخادم", "ButtonConnect": "اتصل", "ButtonDelete": "حذف", @@ -161,8 +160,6 @@ "HeaderBranding": "وسومات البرنامج", "HeaderCastAndCrew": "الممثلين وطاقم العمل", "HeaderCastCrew": "الممثلين والطاقم", - "HeaderChangeFolderType": "غيّر نوع المحتوى", - "HeaderChangeFolderTypeHelp": "لتغيير نوع المحتوى، الرجاء إزالة المكتبة وبناءها مرة أخرى بنوع جديد.", "HeaderChannelAccess": "صلاحيات القنوات", "HeaderChannels": "القنوات", "HeaderCodecProfile": "عريضة الكودك", diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index a0058506a..80290c8c8 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -34,7 +34,6 @@ "ButtonAudioTracks": "Звукови пътеки", "ButtonBack": "Назад", "ButtonCancel": "Отмяна", - "ButtonChangeContentType": "Промяна на типа съдържание", "ButtonDelete": "Изтриване", "ButtonDeleteImage": "Изтриване на изобр.", "ButtonDownload": "Изтегляне", @@ -169,8 +168,6 @@ "HeaderBooks": "Книги", "HeaderCastAndCrew": "Артисти и изпълнители", "HeaderCastCrew": "Артисти и изпълнители", - "HeaderChangeFolderType": "Промяна на типа съдържание", - "HeaderChangeFolderTypeHelp": "За да промените вида на съдържанието, моля, премахнете и създайте наново библиотеката с правилния тип.", "HeaderChannels": "Канали", "HeaderCodecProfile": "Профил на кодека", "HeaderContainerProfile": "Профил на контейнера", diff --git a/src/strings/cs.json b/src/strings/cs.json index 836585143..8b996086e 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -48,7 +48,6 @@ "ButtonAudioTracks": "Audio stopy", "ButtonBack": "Zpět", "ButtonCancel": "Zrušit", - "ButtonChangeContentType": "Změnit typ obsahu", "ButtonChangeServer": "Změna serveru", "ButtonConnect": "Připojit", "ButtonDelete": "Odstranit", @@ -263,8 +262,6 @@ "HeaderCancelSeries": "Ukončit Seriál", "HeaderCastAndCrew": "Herci a obsazení", "HeaderCastCrew": "Herci a obsazení", - "HeaderChangeFolderType": "Změna typu obsahu", - "HeaderChangeFolderTypeHelp": "Chcete-li změnit typ, vyjměte a znovu prohledejte knihovny s nově přiřazeným typem.", "HeaderChannelAccess": "Přístup ke kanálu", "HeaderChannels": "Kanály", "HeaderCodecProfile": "Profil kodeků", diff --git a/src/strings/da.json b/src/strings/da.json index 02f0aa5bb..d847eec1e 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -45,7 +45,6 @@ "ButtonAudioTracks": "Lysspor", "ButtonBack": "Tilbage", "ButtonCancel": "Annuller", - "ButtonChangeContentType": "Skift indholdstype", "ButtonChangeServer": "Skift server", "ButtonConnect": "Forbind", "ButtonDelete": "Slet", @@ -213,8 +212,6 @@ "HeaderCancelSeries": "Annuller Serie", "HeaderCastAndCrew": "Medvirkende", "HeaderCastCrew": "Medvirkende", - "HeaderChangeFolderType": "Ændre indholdstype", - "HeaderChangeFolderTypeHelp": "For at ændre type, skal du venligst fjerne og genopbygge biblioteket med den nye type.", "HeaderChannelAccess": "Adgang til kanaler", "HeaderChannels": "Kanaler", "HeaderChapterImages": "Kapitel Billeder", diff --git a/src/strings/de.json b/src/strings/de.json index 7366986e3..687640e8f 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -74,7 +74,6 @@ "ButtonAudioTracks": "Audiospuren", "ButtonBack": "Zurück", "ButtonCancel": "Abbrechen", - "ButtonChangeContentType": "Ändere Inhalte-Typ", "ButtonChangeServer": "Wechsel Server", "ButtonConnect": "Verbinde", "ButtonDelete": "Löschen", @@ -296,8 +295,6 @@ "HeaderCancelSeries": "Serie abbrechen", "HeaderCastAndCrew": "Besetzung & Mitwirkende", "HeaderCastCrew": "Besetzung & Crew", - "HeaderChangeFolderType": "Ändere Inhalte Typ", - "HeaderChangeFolderTypeHelp": "Um den Typ zu ändern, bitte entferne die Bibliothek und erstelle sie mit dem neuen Medientyp erneut.", "HeaderChannelAccess": "Channelzugriff", "HeaderChannels": "Kanäle", "HeaderChapterImages": "Kapitel Bilder", diff --git a/src/strings/el.json b/src/strings/el.json index 47a8ffee0..00fa6a90a 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -58,7 +58,6 @@ "ButtonAudioTracks": "Ηχητικά κομμάτια", "ButtonBack": "Πίσω", "ButtonCancel": "Ακύρωση ", - "ButtonChangeContentType": "Αλλαγή τύπου περιεχομένου", "ButtonChangeServer": "Αλλαγή Διακομιστή", "ButtonConnect": "Σύνδεση", "ButtonDelete": "Διαγραφή", @@ -273,8 +272,6 @@ "HeaderCancelSeries": "Ακύρωση Σειράς", "HeaderCastAndCrew": "Ηθοποιοί και Συνεργείο", "HeaderCastCrew": "Ηθοποιοί και συνεργείο", - "HeaderChangeFolderType": "Αλλαγή τύπου περιεχομένου", - "HeaderChangeFolderTypeHelp": "Για να αλλάξετε τον τύπο, καταργήστε και δημιουργήστε ξανά τη βιβλιοθήκη με το νέο τύπο.", "HeaderChannels": "Κανάλια", "HeaderCodecProfileHelp": "Τα προφίλ κωδικοποιητή υποδεικνύουν τους περιορισμούς μιας συσκευής κατά την αναπαραγωγή συγκεκριμένων κωδικοποιητών. Εάν ισχύει περιορισμός, τότε τα μέσα θα κωδικοποιηθούν, ακόμα και αν ο κωδικοποιητής έχει ρυθμιστεί για άμεση αναπαραγωγή.", "HeaderConfigureRemoteAccess": "Ρύθμιση απομακρυσμένης πρόσβασης", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index a9d0dbb92..cb8b73562 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -69,7 +69,6 @@ "ButtonAudioTracks": "Audio Tracks", "ButtonBack": "Back", "ButtonCancel": "Cancel", - "ButtonChangeContentType": "Change content type", "ButtonChangeServer": "Change Server", "ButtonConnect": "Connect", "ButtonDelete": "Delete", @@ -314,8 +313,6 @@ "HeaderCancelSeries": "Cancel Series", "HeaderCastAndCrew": "Cast & Crew", "HeaderCastCrew": "Cast & Crew", - "HeaderChangeFolderType": "Change Content Type", - "HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the library with the new type.", "HeaderChannelAccess": "Channel Access", "HeaderChannels": "Channels", "HeaderChapterImages": "Chapter Images", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 88509e9d5..329c98d18 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -123,7 +123,6 @@ "ButtonBack": "Atrás", "ButtonCancel": "Cancelar", "ButtonCancelSeries": "Cancelar serie", - "ButtonChangeContentType": "Cambiar tipo de contenido", "ButtonChangeServer": "Cambiar servidor", "ButtonClear": "Limpiar", "ButtonClose": "Cerrar", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 270a8a1ae..05e6eb91d 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -69,7 +69,6 @@ "ButtonAudioTracks": "Pistas de Audio", "ButtonBack": "Atrás", "ButtonCancel": "Cancelar", - "ButtonChangeContentType": "Cambiar tipo de contenido", "ButtonChangeServer": "Cambiar Servidor", "ButtonConnect": "Conectar", "ButtonDelete": "Eliminar", @@ -304,8 +303,6 @@ "HeaderCancelSeries": "Cancelar Serie", "HeaderCastAndCrew": "Reparto & Personal:", "HeaderCastCrew": "Reparto y Personal", - "HeaderChangeFolderType": "Cambiar Tipo de Contenido", - "HeaderChangeFolderTypeHelp": "Para cambiar el tipo, por favor elimine y reconstruya la biblioteca con el nuevo tipo.", "HeaderChannelAccess": "Acceso a los Canales", "HeaderChannels": "Canales", "HeaderChapterImages": "Imagenes de Capitulo", diff --git a/src/strings/es.json b/src/strings/es.json index 8bf35ad45..1eacb4fb5 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -54,7 +54,6 @@ "ButtonAudioTracks": "Pistas de audio", "ButtonBack": "Atrás", "ButtonCancel": "Cancelar", - "ButtonChangeContentType": "Cambiar el tipo de contenido", "ButtonChangeServer": "Cambiar servidor", "ButtonConnect": "Conectar", "ButtonDelete": "Borrar", @@ -251,8 +250,6 @@ "HeaderCancelSeries": "Cancelar Series", "HeaderCastAndCrew": "Reparto y equipo", "HeaderCastCrew": "Reparto y equipo técnico", - "HeaderChangeFolderType": "Cambiar tipo de contenido", - "HeaderChangeFolderTypeHelp": "Para cambiar el tipo de contenido por favor elimina y reconstruye la biblioteca con el nuevo tipo.", "HeaderChannelAccess": "Acceso a los canales", "HeaderChannels": "Canales", "HeaderChapterImages": "Imágenes de capítulos", diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index b862d6dcb..07c3b3eb3 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -155,7 +155,6 @@ "ButtonAudioTracks": "Pistes Audio", "ButtonBack": "Retour arrière", "ButtonCancelSeries": "Annuler séries", - "ButtonChangeContentType": "Changer le type de contenu", "ButtonChangeServer": "Changer de serveur", "ButtonClear": "Effacer", "ButtonClose": "Fermer", diff --git a/src/strings/fr.json b/src/strings/fr.json index d9cd86457..b1c4f8b37 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -65,7 +65,6 @@ "ButtonAudioTracks": "Pistes Audio", "ButtonBack": "Retour arrière", "ButtonCancel": "Annuler", - "ButtonChangeContentType": "Changer le type de contenu", "ButtonChangeServer": "Changer de serveur", "ButtonConnect": "Connexion", "ButtonDelete": "Supprimer", @@ -300,8 +299,6 @@ "HeaderCancelSeries": "Annuler la série", "HeaderCastAndCrew": "Distribution & équipe", "HeaderCastCrew": "Distribution & équipe", - "HeaderChangeFolderType": "Modifier le type de contenu", - "HeaderChangeFolderTypeHelp": "Pour modifier le type, veuillez supprimer et recréer la médiathèque avec le nouveau type.", "HeaderChannelAccess": "Accès aux chaînes", "HeaderChannels": "Chaînes", "HeaderChapterImages": "Images des chapitres", diff --git a/src/strings/hr.json b/src/strings/hr.json index d702f58fb..d55a5d0c4 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -30,7 +30,6 @@ "ButtonAudioTracks": "Audio pjesme", "ButtonBack": "Nazad", "ButtonCancel": "Odustani", - "ButtonChangeContentType": "Promijeni tip sadržaja", "ButtonChangeServer": "Promijeni Server", "ButtonConnect": "Spoji", "ButtonDelete": "Izbriši", @@ -188,8 +187,6 @@ "HeaderCancelSeries": "Otkaži serije", "HeaderCastAndCrew": "Glumci i ekipa", "HeaderCastCrew": "Glumci i ekipa", - "HeaderChangeFolderType": "Promijeni tip sadržaja", - "HeaderChangeFolderTypeHelp": "Za promjenu tipa, uklonite i ponovno izgraditi biblioteku s novim tipom.", "HeaderChannelAccess": "Pristup kanalima", "HeaderChannels": "Kanali", "HeaderCodecProfile": "Profil kodeka", diff --git a/src/strings/hu.json b/src/strings/hu.json index 7c708bef1..fe7da6644 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -26,7 +26,6 @@ "ButtonArrowUp": "Fel", "ButtonAudioTracks": "Audió Sávok", "ButtonCancel": "Mégsem", - "ButtonChangeContentType": "Tartalom típusának megváltoztatása", "ButtonChangeServer": "Szerver váltás", "ButtonConnect": "Kapcsolódás", "ButtonDelete": "Törlés", @@ -139,8 +138,6 @@ "HeaderAutomaticUpdates": "Automatikus frissitések", "HeaderCastAndCrew": "Szereplők és Stáb", "HeaderCastCrew": "Szereplők és Stáb", - "HeaderChangeFolderType": "Tartalom típusának megváltoztatása", - "HeaderChangeFolderTypeHelp": "A típus megváltoztatásához távolítsd el és építsd fel újra a könyvtárat az új típussal.", "HeaderChannels": "Csatornák", "HeaderConnectToServer": "Kapcsolódás a Szerverhez", "HeaderContinueWatching": "Folyamatban lévő filmek", diff --git a/src/strings/it.json b/src/strings/it.json index 1bcfd9a2f..923d0004d 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -59,7 +59,6 @@ "ButtonAudioTracks": "Tracce Audio", "ButtonBack": "Indietro", "ButtonCancel": "Annulla", - "ButtonChangeContentType": "Cambia tipo del contenuto", "ButtonChangeServer": "Cambia Server", "ButtonConnect": "Connetti", "ButtonDelete": "Elimina", @@ -287,8 +286,6 @@ "HeaderBranding": "Personalizza", "HeaderCancelRecording": "Annulla la Registrazione", "HeaderCancelSeries": "Annulla Serie TV", - "HeaderChangeFolderType": "Cambia il tipo di contenuto", - "HeaderChangeFolderTypeHelp": "Per modificare il tipo, rimuovere e ricostruire la raccolta con il nuovo tipo.", "HeaderChannelAccess": "Accesso canali", "HeaderChannels": "Canali", "HeaderChapterImages": "Immagini Capitolo", diff --git a/src/strings/kk.json b/src/strings/kk.json index 442003e86..f85c3e174 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -70,7 +70,6 @@ "ButtonAudioTracks": "Dybys jolshyqtaryna", "ButtonBack": "Artqa", "ButtonCancel": "Boldyrmaý", - "ButtonChangeContentType": "Mazmun túrin ózgertý", "ButtonChangeServer": "Serverdi aýystyrý", "ButtonConnect": "Qosylý", "ButtonDelete": "Joıý", @@ -321,8 +320,6 @@ "HeaderCancelSeries": "Telehıkaıany boldyrmaý", "HeaderCastAndCrew": "Somdaýshylar men túsirýshiler", "HeaderCastCrew": "Somdaýshylar men túsirýshiler", - "HeaderChangeFolderType": "Mazmun túrin ózgertý", - "HeaderChangeFolderTypeHelp": "Túrdi ózgertý úshin, tasyǵyshhanany alastańyz da, jańa túr arqyly qaıta quryńyz.", "HeaderChannelAccess": "Arnaǵa qatynaý", "HeaderChannels": "Arnalar", "HeaderChapterImages": "Sahna sýretteri", diff --git a/src/strings/ko.json b/src/strings/ko.json index d2a6bde38..afa748c8a 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -24,7 +24,6 @@ "ButtonArrowUp": "위", "ButtonBack": "뒤로", "ButtonCancel": "취소", - "ButtonChangeContentType": "콘텐트 종류 변경", "ButtonChangeServer": "서버 변경", "ButtonConnect": "접속", "ButtonDelete": "삭제", @@ -142,7 +141,6 @@ "HeaderBooks": "책", "HeaderBranding": "브랜딩", "HeaderCastCrew": "배역 및 제작진", - "HeaderChangeFolderType": "콘텐트 종류 변경", "HeaderChannelAccess": "채널 접속", "HeaderChannels": "채널", "HeaderCodecProfile": "코덱 프로파일", diff --git a/src/strings/ms.json b/src/strings/ms.json index 8359ae43d..6d6d05b58 100644 --- a/src/strings/ms.json +++ b/src/strings/ms.json @@ -71,7 +71,6 @@ "ButtonAudioTracks": "Trek Audio", "ButtonBack": "Kembali", "ButtonCancel": "Batalkan", - "ButtonChangeContentType": "Tukar pilihan isi kandungan", "ButtonChangeServer": "Tukar pelayan", "ButtonConnect": "Sambung" } diff --git a/src/strings/nb.json b/src/strings/nb.json index b3acccdac..c60a65254 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -47,7 +47,6 @@ "ButtonAudioTracks": "Lydspor", "ButtonBack": "Tilbake", "ButtonCancel": "Avbryt", - "ButtonChangeContentType": "Velg innholdtype", "ButtonChangeServer": "Endre server", "ButtonConnect": "Koble til", "ButtonDelete": "Slett", @@ -223,8 +222,6 @@ "HeaderCancelSeries": "Avbryt serie", "HeaderCastAndCrew": "Skuespillere & Crew", "HeaderCastCrew": "Mannskap", - "HeaderChangeFolderType": "Endre innholdstype", - "HeaderChangeFolderTypeHelp": "For å endre type, må du fjerne og gjenoppbygge biblioteket med den nye typen.", "HeaderChannelAccess": "Kanal tilgang", "HeaderChannels": "Kanaler", "HeaderCodecProfile": "Kodek Profil", diff --git a/src/strings/nl.json b/src/strings/nl.json index 0ffcffb28..5d1ddd2f8 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -63,7 +63,6 @@ "ButtonAudioTracks": "Audio track", "ButtonBack": "Terug", "ButtonCancel": "Annuleren", - "ButtonChangeContentType": "Verander content type", "ButtonChangeServer": "Wijzig server", "ButtonConnect": "Verbind", "ButtonDelete": "Verwijderen", @@ -290,8 +289,6 @@ "HeaderBranding": "Huisstijl", "HeaderCancelRecording": "Opname Annuleren", "HeaderCancelSeries": "Annuleren Series", - "HeaderChangeFolderType": "Verander Content Type", - "HeaderChangeFolderTypeHelp": "Als u het type wilt wijzigen, verwijder het dan en maak dan een nieuwe bibliotheek met het nieuwe type.", "HeaderChannelAccess": "Kanaal toegang", "HeaderChannels": "Kanalen", "HeaderChapterImages": "Hoofdstukafbeeldingen", diff --git a/src/strings/pl.json b/src/strings/pl.json index e5c419a9d..a761d5cb9 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -68,7 +68,6 @@ "ButtonAudioTracks": "Ścieżki dźwiękowe", "ButtonBack": "Wstecz", "ButtonCancel": "Anuluj", - "ButtonChangeContentType": "Zmień typ zawartości", "ButtonChangeServer": "Zmień Serwer", "ButtonConnect": "Połacz", "ButtonDelete": "Usuń", @@ -309,8 +308,6 @@ "HeaderCancelSeries": "Anuluj nagrywanie serialu", "HeaderCastAndCrew": "Obsada i ekipa", "HeaderCastCrew": "Obsada i ekipa", - "HeaderChangeFolderType": "Zmień typ zawartości", - "HeaderChangeFolderTypeHelp": "W celu zmiany typu, usuń bibliotekę, a następnie dodaj ją określając nowy typ.", "HeaderChannelAccess": "Dostęp do Kanałów", "HeaderChannels": "Kanały", "HeaderChapterImages": "Obrazy rozdziałów", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 8f52a71d0..1f9b518ba 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -64,7 +64,6 @@ "ButtonAudioTracks": "Faixas de Áudio", "ButtonBack": "Voltar", "ButtonCancel": "Cancelar", - "ButtonChangeContentType": "Alterar o tipo de conteúdo", "ButtonChangeServer": "Alterar Servidor", "ButtonConnect": "Conectar", "ButtonDelete": "Excluir", @@ -296,8 +295,6 @@ "HeaderCancelSeries": "Cancelar Série", "HeaderCastAndCrew": "Elenco & Equipe", "HeaderCastCrew": "Elenco & Equipe", - "HeaderChangeFolderType": "Alterar Tipo do Conteúdo", - "HeaderChangeFolderTypeHelp": "Para alterar o tipo, por favor remova e reconstrua a biblioteca com o novo tipo.", "HeaderChannelAccess": "Acesso ao Canal", "HeaderChannels": "Canais", "HeaderChapterImages": "Imagens do Capítulo", diff --git a/src/strings/ru.json b/src/strings/ru.json index 067b8af30..d59bbe3bd 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -68,7 +68,6 @@ "ButtonAudioTracks": "Аудиодорожки", "ButtonBack": "Назад", "ButtonCancel": "Отменить", - "ButtonChangeContentType": "Сменить тип содержания", "ButtonChangeServer": "Сменить сервер", "ButtonConnect": "Подсоединиться", "ButtonDelete": "Удалить", @@ -311,8 +310,6 @@ "HeaderCancelSeries": "Отмена сериала", "HeaderCastAndCrew": "Снимались и снимали", "HeaderCastCrew": "Снимались и снимали", - "HeaderChangeFolderType": "Изменение типа содержания", - "HeaderChangeFolderTypeHelp": "Для изменения типа, надо изъять медиатеку и заново построить её с новым типом.", "HeaderChannelAccess": "Доступ ко каналам", "HeaderChannels": "Каналы", "HeaderChapterImages": "Рисунки сцен", diff --git a/src/strings/sk.json b/src/strings/sk.json index 171838815..47005b9df 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -40,7 +40,6 @@ "ButtonAudioTracks": "Audio stopy", "ButtonBack": "Späť", "ButtonCancel": "Zrušiť", - "ButtonChangeContentType": "Zmeniť typ obsahu", "ButtonChangeServer": "Zmeniť server", "ButtonConnect": "Pripojiť", "ButtonDelete": "Zmazať", @@ -192,7 +191,6 @@ "HeaderAutomaticUpdates": "Automatické aktualizácie", "HeaderBooks": "Knihy", "HeaderCastAndCrew": "Obsadenie", - "HeaderChangeFolderType": "Zmeniť typ obsahu", "HeaderChannels": "Kanály", "HeaderChapterImages": "Obrázky kapitol", "HeaderConfigureRemoteAccess": "Nastaviť vzdialený prístup", diff --git a/src/strings/sv.json b/src/strings/sv.json index 27294f081..bad793046 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -60,7 +60,6 @@ "ButtonAudioTracks": "Ljudspår", "ButtonBack": "Föregående", "ButtonCancel": "Avbryt", - "ButtonChangeContentType": "Ändra innehållstyp", "ButtonChangeServer": "Byt server", "ButtonConnect": "Anslut", "ButtonDelete": "Ta bort", @@ -278,8 +277,6 @@ "HeaderCancelSeries": "Avbryt serie", "HeaderCastAndCrew": "Medverkande", "HeaderCastCrew": "Rollista & besättning", - "HeaderChangeFolderType": "Ändra innehållstyp", - "HeaderChangeFolderTypeHelp": "För att ändra typ, ta bort och bygg om biblioteket med den nya typen.", "HeaderChannelAccess": "Kanalåtkomst", "HeaderChannels": "Kanaler", "HeaderChapterImages": "Kapitelbilder", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index f51e138e5..07b391c71 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -62,7 +62,6 @@ "ButtonAudioTracks": "音轨", "ButtonBack": "返回", "ButtonCancel": "取消", - "ButtonChangeContentType": "更改内容类型", "ButtonChangeServer": "更改服务器", "ButtonConnect": "连接", "ButtonDelete": "删除", @@ -281,8 +280,6 @@ "HeaderBranding": "品牌", "HeaderCastAndCrew": "演员表", "HeaderCastCrew": "演职人员", - "HeaderChangeFolderType": "更改内容类型", - "HeaderChangeFolderTypeHelp": "为了改变类型,请移除这个媒体库并以你需要的新类型重新建立一个媒体库。", "HeaderChannelAccess": "频道访问", "HeaderChannels": "频道", "HeaderChapterImages": "章节图片", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index d1ddadc23..8a9b16275 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -368,7 +368,6 @@ "BoxRear": "盒子(背面)", "BurnSubtitlesHelp": "根據字幕格式決定服務器在轉換視頻時是否燒錄字幕。避免燒錄字幕會提高服務器性能。選擇“自動”以燒錄基於圖像的字幕格式(如 VOBSUB, PGS, SUB/IDX 等)和一些複雜的 ASS/SSA 字幕", "ButtonArrowDown": "下", - "ButtonChangeContentType": "更改內容類型", "ButtonConnect": "連結", "ButtonDown": "下", "ButtonDownload": "下載", @@ -599,8 +598,6 @@ "HeaderCancelSeries": "取消系列", "HeaderCancelSyncJob": "取消同步", "HeaderCastAndCrew": "演員與工作人員", - "HeaderChangeFolderType": "更改內容類型", - "HeaderChangeFolderTypeHelp": "以更改類型,請移除這個媒體庫並以你需要的新類型重新建立一個媒體庫。", "HeaderChannelAccess": "節目存取", "HeaderChapterImages": "章節圖片", "HeaderChapters": "章節",