52c307522241b8a4dd1e6b5fe107d58be6a0b1ca
[stapibas.git] / www / js / show-links.js
1 /**
2  * Load it with:
3  * s=document.createElement('script');s.src='http://stapibas.bogo/js/show-links.js';document.body.appendChild(s);
4  */
5 var stapibasUrl = 'http://stapibas.bogo/';
6 var pageUrl = window.location.href;
7 //var pageUrl = 'http://cweiske.de/tagebuch/bdrem.htm';
8
9 function loadScript(url, callback)
10 {
11     var script = document.createElement('script');
12     script.type = 'text/javascript';
13     script.src = url;
14     script.onreadystatechange = callback;
15     script.onload = callback;
16     document.getElementsByTagName('head')[0].appendChild(script);
17 }
18 function loadData()
19 {
20     jQuery('head').append(
21         '<link rel="stylesheet" type="text/css" href="'
22         + stapibasUrl + 'css/show-links.css" />'
23         + '<link rel="stylesheet" type="text/css" href="'
24         + stapibasUrl + 'css/jquery-0.6.1.smallipop.min.css" />'
25     );
26     jQuery.ajax(
27         stapibasUrl + 'api/links.php?url='
28         + encodeURIComponent(pageUrl.replace(/www.bogo/, 'cweiske.de'))
29     ).done(function(data) {showData(data);})
30         .fail(function(data) {showError(data);});
31 }
32 function showData(data)
33 {
34     var items = jQuery('.e-content a');
35     if (items.length == 0) {
36         items = jQuery('a');
37     }
38
39     //collect stats
40     var stats = {
41         links: 0
42     };
43     $.each(data.links, function(key, link) {
44         stats.links++;
45         if (!stats[link.status]) {
46             stats[link.status] = 1;
47         } else {
48             stats[link.status]++;
49         }
50     });
51     var statlist = '';
52     $.each(stats, function(status, count) {
53         statlist = statlist + '<li>' + count + ' ' + status + '</li>';
54     });
55     $('body').prepend(
56         '<div class="stapibas-stats">'
57             + '<b>Linkback stats</b>: '
58             + '<ul>' + statlist + '</ul>'
59             + '</div>'
60     );
61
62     //add link info
63     items.each(function(key, elem) {
64         if (!data.links[elem.href.replace(/www.bogo/, 'cweiske.de')]) {
65             return;
66         }
67         var link = data.links[elem.href.replace(/www.bogo/, 'cweiske.de')];
68         $(elem).addClass('stapibas-link')
69             .addClass('stapibas-status-' + link.status);
70         $(elem).smallipop(
71             {
72                 theme: 'white'
73             },
74             '<h2>Linkback information</h2>'
75                 + '<dl>'
76                 + '<dt>Status</dt><dd>' + link.status + '</dd>'
77                 + '<dt>Pinged</dt><dd>' + link.pinged + '</dd>'
78                 + '<dt>Updated</dt><dd>' + link.updated + '</dd>'
79                 + '<dt>Tries</dt><dd>' + link.tries + '</dd>'
80                 + '<dt>Error code</dt><dd>' + link.error.code + '</dd>'
81                 + '<dt>Error message</dt><dd>' + link.error.message + '</dd>'
82                 + '</dl>'
83         );
84     });
85 }
86 function showError(data)
87 {
88     $('body').prepend(
89         '<div class="stapibas-stats stapibas-stats-error">'
90             + 'Error loading linkback data: '
91             + data.status + ' <b>' + data.statusText + '</b>'
92             + '</div>'
93     );
94 }
95
96 loadScript(
97     stapibasUrl + 'js/jquery-2.1.0.js',
98     function() {
99         loadScript(stapibasUrl + 'js/jquery-0.6.1.smallipop.js', loadData);
100     }
101 );