view about-mozilla.js @ 22:98b8ae7e21a6

Removed twitter feed b/c most of the messages weren't even about ubiquity.
author Atul Varma <varmaa@toolness.com>
date Mon, 02 Mar 2009 19:59:40 -0800
parents a531adbda6f7
children 9dcdc0e81838
line wrap: on
line source

function processBlogFeed(feed, content) {
  jQuery.each(
    feed.entries,
    function(i) {
      var item = $('<div class="blog-item">' +
                   '<span class="title"></span> ' +
                   '<span class="author"></span></div>');
      $('.title', item).html(this.title);
      $('.title', item).wrap('<a href="' + this.link + '"></a>');
      if (this.author)
        $('.author', item).html('by ' + this.author);
      $(item).attr("published", this.publishedDate);
      content.append(item);
    });
}

var FEEDS = [
  {name: "Blogs",
   url: "http://ubiquity.mozilla.com/planet/?feed=rss2",
   processFeed: processBlogFeed,
   entries: 10},
  {name: "Bugs",
   url: "https://ubiquity.mozilla.com/trac/timeline?ticket=on&milestone=on&wiki=on&max=50&daysback=90&format=rss",
   processFeed: processBlogFeed,
   entries: 10},
  {name: "Code",
   url: "https://ubiquity.mozilla.com/hg/ubiquity-firefox/rss-log",
   processFeed: processBlogFeed,
   entries: 15},
  {name: "Discussions",
   url: "http://groups.google.com/group/ubiquity-firefox/feed/rss_v2_0_msgs.xml",
   processFeed: processBlogFeed,
   entries: 30},
  {name: "Support",
   url: "http://getsatisfaction.com/mozilla/products/mozilla_ubiquity.rss?sort=recently_created",
   processFeed: processBlogFeed,
   entries: 10}
];

function doneLoadingFeeds() {
  function fixHeights(daysAgo) {
    var tallestHeight = 0;
    var elements = $(".days-ago-" + i);
    elements.each(
      function(i) {
        var height = $(this).height();
        if (height > tallestHeight)
          tallestHeight = height;
      });
    elements.height(tallestHeight);
  }

  $("#issue").fadeIn();
  for (var i = 0; i < 10; i++)
    fixHeights(i);
  var entries = $("#issue .entry");
  $(document.body).width(entries.outerWidth() * entries.length);
}

function showFeed(feedInfo, cb) {
  var entry = $('<div class="entry"></div>');
  var headline = $('<div class="headline"></div>');
  headline.text(feedInfo.name);
  entry.append(headline);
  $("#body").append(entry);

  var feed = new google.feeds.Feed(feedInfo.url);
  feed.setNumEntries(feedInfo.entries);
  feed.load(
    function(result) {
      var rawContent = $('<div class="content"></div>');
      var content = $('<div class="content"></div>');

      for (var i = 0; i < 10; i++)
        content.append('<div class="days-ago-' + i + '"></div>');

      feedInfo.processFeed(result.feed, rawContent);

      var now = new Date();
      $(".blog-item", rawContent).each(
        function(i) {
          var pub = new Date($(this).attr("published"));
          var msAgo = now - pub;
          var hoursAgo = msAgo / (1000 * 60 * 60);
          var daysAgo = Math.floor(hoursAgo / 12);
          if (daysAgo < 0)
            daysAgo = 0;
          if (daysAgo > 9)
            daysAgo = 9;
          var div = $(".days-ago-" + daysAgo, content);
          div.append(this);
        }
      );

      entry.append(content);
      cb();
    });
}

google.load("feeds", "1");
google.setOnLoadCallback(
  function() {
    var feedsLeftToLoad = FEEDS.length;
    jQuery.each(
      FEEDS,
      function(i) {
        showFeed(this,
                 function() {
                   feedsLeftToLoad--;
                   if (!feedsLeftToLoad) {
                     doneLoadingFeeds();
                   }
                 });
      }
    );
  });