app/soc/content/js/blog-081117.js
changeset 501 be89bf307478
parent 426 114fe0f840c8
child 1307 091a21cf3627
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/content/js/blog-081117.js	Mon Nov 17 22:12:34 2008 +0000
@@ -0,0 +1,77 @@
+/* Copyright 2008 the Melange authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function BlogPreview(container) {
+  this.container_ = container;
+}
+
+BlogPreview.prototype.show = function(url, entries_num, title, title_link) {
+  var feed = new google.feeds.Feed(url);
+  var preview = this;
+  feed.setNumEntries(entries_num)
+  feed.load(function(result) {
+    preview.render_(result, title, title_link);
+  });
+}
+
+BlogPreview.prototype.render_ = function(result, title, title_link) {
+  if (!result.feed || !result.feed.entries) return;
+  while (this.container_.firstChild) {
+    this.container_.removeChild(this.container_.firstChild);
+  }
+
+  var blog = this.createDiv_(this.container_, "blog");
+  var header = this.createElement_("h2", blog, "");
+  if (!title) {
+    title = result.feed.title;
+  }
+  if (!title_link) {
+    title_link = result.feed.link;
+  }
+  this.createLink_(header, title_link, title);
+
+  for (var i = 0; i < result.feed.entries.length; i++) {
+    var entry = result.feed.entries[i];
+    var div = this.createDiv_(blog, "entry");
+    var linkDiv = this.createDiv_(div, "title");
+    this.createLink_(linkDiv, entry.link, entry.title);
+    if (entry.author) {
+      this.createDiv_(div, "author", "Posted by " + entry.author);
+    }
+    this.createDiv_(div, "snippet", entry.contentSnippet);
+  }
+}
+
+BlogPreview.prototype.createDiv_ = function(parent, className, opt_text) {
+  return this.createElement_("div", parent, className, opt_text);
+}
+
+BlogPreview.prototype.createLink_ = function(parent, href, text) {
+  var link = this.createElement_("a", parent, "", text);
+  link.href = href;
+  return link;
+}
+
+BlogPreview.prototype.createElement_ = function(tagName, parent, className,
+                                                opt_text) {
+  var div = document.createElement(tagName);
+  div.className = className;
+  parent.appendChild(div);
+  if (opt_text) {
+    div.appendChild(document.createTextNode(opt_text));
+  }
+  return div;
+}
+