feeds.js
Go to the documentation of this file.
1 # -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 # ***** BEGIN LICENSE BLOCK *****
3 # Version: MPL 1.1/GPL 2.0/LGPL 2.1
4 #
5 # The contents of this file are subject to the Mozilla Public License Version
6 # 1.1 (the "License"); you may not use this file except in compliance with
7 # the License. You may obtain a copy of the License at
8 # http://www.mozilla.org/MPL/
9 #
10 # Software distributed under the License is distributed on an "AS IS" basis,
11 # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 # for the specific language governing rights and limitations under the
13 # License.
14 #
15 # The Original Code is the feed tab for Page Info.
16 #
17 # The Initial Developer of the Original Code is
18 # Florian QUEZE <f.qu@queze.net>
19 # Portions created by the Initial Developer are Copyright (C) 2006
20 # the Initial Developer. All Rights Reserved.
21 #
22 # Contributor(s):
23 # Ehsan Akhgari <ehsan.akhgari@gmail.com>
24 #
25 # Alternatively, the contents of this file may be used under the terms of
26 # either the GNU General Public License Version 2 or later (the "GPL"), or
27 # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28 # in which case the provisions of the GPL or the LGPL are applicable instead
29 # of those above. If you wish to allow use of your version of this file only
30 # under the terms of either the GPL or the LGPL, and not to allow others to
31 # use your version of this file under the terms of the MPL, indicate your
32 # decision by deleting the provisions above and replace them with the notice
33 # and other provisions required by the GPL or the LGPL. If you do not delete
34 # the provisions above, a recipient may use your version of this file under
35 # the terms of any one of the MPL, the GPL or the LGPL.
36 #
37 # ***** END LICENSE BLOCK *****
38 
39 function initFeedTab()
40 {
41  const feedTypes = {
42  "application/rss+xml": gBundle.getString("feedRss"),
43  "application/atom+xml": gBundle.getString("feedAtom"),
44  "text/xml": gBundle.getString("feedXML"),
45  "application/xml": gBundle.getString("feedXML"),
46  "application/rdf+xml": gBundle.getString("feedXML")
47  };
48 
49  // get the feeds
50  var linkNodes = gDocument.getElementsByTagName("link");
51  var length = linkNodes.length;
52  for (var i = 0; i < length; i++) {
53  var link = linkNodes[i];
54  if (!link.href)
55  continue;
56 
57  var rel = link.rel && link.rel.toLowerCase();
58  var rels = {};
59  if (rel) {
60  for each (let relVal in rel.split(/\s+/))
61  rels[relVal] = true;
62  }
63 
64  if (rels.feed || (link.type && rels.alternate && !rels.stylesheet)) {
65  var type = isValidFeed(link, gDocument.nodePrincipal, rels.feed);
66  if (type) {
67  type = feedTypes[type] || feedTypes["application/rss+xml"];
68  addRow(link.title, type, link.href);
69  }
70  }
71  }
72 
73  var feedListbox = document.getElementById("feedListbox");
74  document.getElementById("feedTab").hidden = feedListbox.getRowCount() == 0;
75 }
76 
77 function onSubscribeFeed()
78 {
79  var listbox = document.getElementById("feedListbox");
80  openUILink(listbox.selectedItem.getAttribute("feedURL"),
81  null, false, true, false, null);
82 }
83 
84 function addRow(name, type, url)
85 {
86  var item = document.createElement("richlistitem");
87  item.setAttribute("feed", "true");
88  item.setAttribute("name", name);
89  item.setAttribute("type", type);
90  item.setAttribute("feedURL", url);
91  document.getElementById("feedListbox").appendChild(item);
92 }
var gDocument
Definition: pageInfo.js:150
function addRow(name, type, url)
Definition: feeds.js:84
function openUILink(url, e, ignoreButton, ignoreAlt, allowKeywordFixup, postData, referrerUrl)
function onSubscribeFeed()
Definition: feeds.js:77
function isValidFeed(aLink, aPrincipal, aIsFeed)
function initFeedTab()
Definition: feeds.js:39
return null
Definition: FeedWriter.js:1143
function url(spec)
var gBundle
Definition: pageInfo.js:185
_getSelectedPageStyle s i