define(["jQuery", "loading", "libraryMenu", "globalize", "connectionManager", "emby-button"], function ($, loading, libraryMenu, globalize, connectionManager) { "use strict"; function populateHistory(packageInfo, page) { var html = ""; var length = Math.min(packageInfo.versions.length, 10); for (var i = 0; i < length; i++) { var version = packageInfo.versions[i]; html += '

' + version.version + "

"; html += '
' + version.changelog + "
"; } $("#revisionHistory", page).html(html); } function populateVersions(packageInfo, page, installedPlugin) { var html = ""; for (var i = 0; i < packageInfo.versions.length; i++) { var version = packageInfo.versions[i]; html += '"; } var selectmenu = $("#selectVersion", page).html(html); if (!installedPlugin) { $("#pCurrentVersion", page).hide().html(""); } var packageVersion = packageInfo.versions[0]; if (packageVersion) { selectmenu.val(packageVersion.version); } } function renderPackage(pkg, installedPlugins, page) { var installedPlugin = installedPlugins.filter(function (ip) { return ip.Name == pkg.name; })[0]; populateVersions(pkg, page, installedPlugin); populateHistory(pkg, page); $(".pluginName", page).html(pkg.name); $("#btnInstallDiv", page).removeClass("hide"); $("#pSelectVersion", page).removeClass("hide"); if (pkg.overview) { $("#overview", page).show().html(pkg.overview); } else { $("#overview", page).hide(); } $("#description", page).html(pkg.description); $("#developer", page).html(pkg.owner); if (installedPlugin) { var currentVersionText = globalize.translate("MessageYouHaveVersionInstalled", "" + installedPlugin.Version + ""); $("#pCurrentVersion", page).show().html(currentVersionText); } else { $("#pCurrentVersion", page).hide().html(""); } loading.hide(); } function alertText(options) { require(["alert"], function (alert) { alert(options); }); } function performInstallation(page, packageName, guid, updateClass, version) { var developer = $("#developer", page).html().toLowerCase(); var alertCallback = function () { loading.show(); page.querySelector("#btnInstall").disabled = true; ApiClient.installPlugin(packageName, guid, updateClass, version).then(function () { loading.hide(); alertText(globalize.translate("PluginInstalledMessage")); }); }; if (developer !== 'jellyfin') { loading.hide(); var msg = globalize.translate("MessagePluginInstallDisclaimer"); msg += "
"; msg += "
"; msg += globalize.translate("PleaseConfirmPluginInstallation"); require(["confirm"], function (confirm) { confirm(msg, globalize.translate("HeaderConfirmPluginInstallation")).then(function () { alertCallback(); }, function () { console.debug('plugin not installed'); }); }); } else { alertCallback(); } } return function (view, params) { $(".addPluginForm", view).on("submit", function () { loading.show(); var page = $(this).parents("#addPluginPage")[0]; var name = params.name; var guid = params.guid; ApiClient.getInstalledPlugins().then(function (plugins) { var installedPlugin = plugins.filter(function (plugin) { return plugin.Name == name; })[0]; var vals = $("#selectVersion", page).val().split("|"); var version = vals[0]; if (installedPlugin) { if (installedPlugin.Version === version) { loading.hide(); Dashboard.alert({ message: globalize.translate("MessageAlreadyInstalled"), title: globalize.translate("HeaderPluginInstallation") }); } } else { performInstallation(page, name, guid, vals[1], version); } }); return false; }); view.addEventListener("viewshow", function () { var page = this; loading.show(); var name = params.name; var guid = params.guid; var promise1 = ApiClient.getPackageInfo(name, guid); var promise2 = ApiClient.getInstalledPlugins(); Promise.all([promise1, promise2]).then(function (responses) { renderPackage(responses[0], responses[1], page); }); }); }; });