summaryrefslogtreecommitdiffstats
path: root/hyperkitty/static/hyperkitty/js/hyperkitty-frontpage.js
blob: c38ed2f15e2afc91669c54cc7c1389e93bdab6ed (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
/*
 * Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
 *
 * This file is part of HyperKitty.
 *
 * HyperKitty is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free
 * Software Foundation, either version 3 of the License, or (at your option)
 * any later version.
 *
 * HyperKitty is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * HyperKitty.  If not, see <http://www.gnu.org/licenses/>.
 *
 * Author: Aurelien Bompard <abompard@fedoraproject.org>
 */


/*
 * List descriptions on the front page
 */
function update_list_properties(url) {
    // Don't try to update them all at once, there may be hundreds of lists
    var bulksize = 5;
    // If there is still an ajaxloader, then request the properties
    var lists = $(".all-lists .mailinglist img.ajaxloader")
                    .slice(0, bulksize).parents(".mailinglist");
    if (lists.length === 0) {
        return;
    }
    var listnames = $.makeArray(lists.find(".list-address").map(
                        function() { return $(this).text(); }));
    $.ajax({
        dataType: "json",
        url: url + "?name=" + listnames.join("&name="),
        success: function(data) {
            lists.each(function() {
                var name = $(this).find(".list-address").text();
                if (!data[name]) {
                    return;
                }
                if (data[name]["display_name"]) {
                    $(this).find(".list-name").text(data[name]["display_name"]);
                }
                if (data[name]["description"]) {
                    $(this).find(".list-description")
                           .text(data[name]["description"]);
                }
            });
        },
        error: function(jqXHR, textStatus, errorThrown) {
            //alert(jqXHR.responseText);
        },
        complete: function(jqXHR, textStatus) {
            // Request may have failed if mailman's REST server is unavailable,
            // keep going anyway.
            lists.find("img.ajaxloader").remove();
            // do it again, until all lists have been populated (or at least we
            // tried to)
            update_list_properties(url);
        }
    });
}