aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.WebDashboard/Html/scripts/PluginsPage.js
blob: c8ffe02d8f36616ecb5b8143ac97a55a75e63bef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var PluginsPage = {

    onPageShow: function () {
        PluginsPage.reloadList();
    },

    reloadList: function () {

        Dashboard.showLoadingMsg();

        var promise1 = ApiClient.getInstalledPlugins();

        var promise2 = $.getJSON("configurationpages?pageType=PluginConfiguration");

        $.when(promise1, promise2).done(function(response1, response2) {

            PluginsPage.populateList(response1[0], response2[0]);

        });
    },

    populateList: function (plugins, pluginConfigurationPages) {

        var page = $($.mobile.activePage);

        plugins = plugins.sort(function (plugin1, plugin2) {

            return (plugin1.Name) > (plugin2.Name) ? 1 : -1;

        });

        var html = "";

        for (var i = 0, length = plugins.length; i < length; i++) {

            var plugin = plugins[i];
            
            var configPage = $.grep(pluginConfigurationPages, function (pluginConfigurationPage) {
                return pluginConfigurationPage.PluginId == plugin.Id;
            })[0];

            html += "<li>";

            var href = configPage ? Dashboard.getConfigurationPageUrl(configPage.Name) : "#";

            html += "<a href='" + href + "'>";

            html += "<h3>" + plugin.Name + "</h3>";

            html += "<p><strong>" + plugin.Version + "</strong></p>";

            html += "</a>";

            html += "<a data-id='" + plugin.Id + "' data-pluginname='" + plugin.Name + "' onclick='PluginsPage.deletePlugin(this);' href='#'>Delete</a>";

            html += "</li>";
        }

        $('#ulInstalledPlugins', page).html(html).listview('refresh');

        Dashboard.hideLoadingMsg();
    },

    deletePlugin: function (link) {

        var name = link.getAttribute('data-pluginname');
        var uniqueid = link.getAttribute('data-id');

        var msg = "Are you sure you wish to uninstall " + name + "?";

        Dashboard.confirm(msg, "Uninstall Plugin", function (result) {

            if (result) {
                Dashboard.showLoadingMsg();

                ApiClient.uninstallPlugin(uniqueid).done(function () {

                    PluginsPage.reloadList();
                });
            }
        });

    }
};

$(document).on('pageshow', "#pluginsPage", PluginsPage.onPageShow);