├── README.md ├── build.xml └── src ├── chrome.manifest ├── chrome ├── content │ ├── commonfunc.js │ ├── discover_feeds.js │ ├── discover_feeds.xul │ ├── feedloader.js │ ├── feedsummary.html │ ├── feedsummary.js │ ├── opml.js │ ├── opml.xul │ ├── overlay.js │ ├── overlay.xul │ ├── popupex.xml │ ├── settings.js │ ├── settings.xul │ ├── sidebar.js │ └── sidebar.xul ├── locale │ ├── ca-AD │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── cs-CZ │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── da-DK │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── de-AT │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── de-CH │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── de-DE │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── el-GR │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── en-US │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── es-AR │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── es-ES │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── fi-FI │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── fr-FR │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── hu-HU │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── it-IT │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── ja-JP │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── ko-KR │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── nl-NL │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── pl-PL │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── pt-BR │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── ru-RU │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── sl-SI │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── sr-YU │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── sr-YU@Latn │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── sv-SE │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── tr-TR │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ ├── zh-CN │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties │ └── zh-TW │ │ ├── opml.dtd │ │ ├── sage.dtd │ │ └── sage.properties └── skin │ └── classic │ ├── enclosure.png │ ├── feedsummary-content.css │ ├── feedsummary.css │ ├── icon │ ├── error.gif │ ├── no-updated.png │ ├── search-submit.gif │ ├── unknown.png │ └── updated.png │ ├── sage-browser-mac.css │ ├── sage-button-mac.css │ ├── sage-button.css │ ├── sage-mac.css │ ├── sage.css │ ├── sage_leaf_16.png │ ├── sage_leaf_24.png │ ├── sage_leaf_32.png │ ├── sage_leaf_new_16.png │ ├── sage_leaf_new_24.png │ ├── toolbar-small.png │ └── toolbar.png ├── components ├── sageDateFormatter.js ├── sageDateParser.js ├── sageFeed.js ├── sageFeedItem.js ├── sageFeedItemEnclosure.js ├── sageFeedParserFactory.js ├── sageIDateFormatter.idl ├── sageIDateParser.idl ├── sageIFeed.idl ├── sageIFeedItem.idl ├── sageIFeedItemEnclosure.idl ├── sageIFeedParser.idl ├── sageIFeedParserFactory.idl ├── sageIFeedParserListener.idl ├── sageILogger.idl ├── sageLogger.js ├── sageMozillaFeedParser.js └── sageProtocolHandler.js ├── defaults └── preferences │ └── sage.js ├── install.rdf └── modules ├── SageMetrics.jsm └── SageUpdateChecker.jsm /README.md: -------------------------------------------------------------------------------- 1 | Sage 2 | ==== 3 | 4 | Sage is a lightweight [RSS][rss] and [Atom][atom] feed reader [extension][extensions] for [Mozilla Firefox][firefox]. It's got a lot of what you need and not much of what you don't. 5 | 6 | If you'd just like to start using Sage, [head to the website][sage] to get started. 7 | 8 | Developing Sage 9 | --------------- 10 | 11 | ### Dependencies 12 | 13 | * [Python][python] 14 | * [Gecko SDK][gecko] 15 | * [Ant][ant] 16 | 17 | ### Building 18 | 19 | $ git clone git@github.com:petea/sage.git 20 | $ cd sage 21 | $ curl [Gecko SDK download URL] | tar -x 22 | $ ant 23 | 24 | If all goes well, you'll find the [XPI][xpi] file under the sage/build folder. 25 | 26 | ### Installing 27 | 28 | With the XPI built, you can install it by opening it from Firefox or [copying it][install] to your Firefox profile directory. Either way, you'll need to restart Firefox. 29 | 30 | [rss]: http://en.wikipedia.org/wiki/RSS 31 | [atom]: http://en.wikipedia.org/wiki/Atom_(standard) 32 | [extensions]: https://developer.mozilla.org/en/Extensions 33 | [firefox]: http://www.mozilla.com/firefox/ 34 | [sage]: http://sagerss.com 35 | [python]: http://www.python.org 36 | [gecko]: https://developer.mozilla.org/en/Gecko_SDK 37 | [ant]: http://ant.apache.org 38 | [xpi]: https://developer.mozilla.org/en/XPI 39 | [install]: https://developer.mozilla.org/en/Installing_extensions -------------------------------------------------------------------------------- /build.xml: -------------------------------------------------------------------------------- 1 | 2 | 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 | -------------------------------------------------------------------------------- /src/chrome/content/feedsummary.html: -------------------------------------------------------------------------------- 1 | 38 | 39 | 41 | 42 | 43 | 44 | Sage 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /src/chrome/content/overlay.xul: -------------------------------------------------------------------------------- 1 | 2 | 39 | 40 | 41 | 42 | 43 | 44 |