summaryrefslogtreecommitdiff
path: root/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source
diff options
context:
space:
mode:
Diffstat (limited to 'webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source')
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/Application.js410
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/ArticleView.js85
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/index.html15
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/css/reader.css54
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/ajaxian.xml789
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/febo-feeds.opml.xml29
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-blog.xml278
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-news.xml284
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/safari.xml223
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/zimbra-atom.xml699
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/images/locale.pngbin0 -> 811 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/proxy/proxy.php60
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/C.po93
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/de.po95
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/en.po93
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/es.po94
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/it.po94
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/ru.po94
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/sv.po93
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/tr.po95
20 files changed, 3677 insertions, 0 deletions
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/Application.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/Application.js
new file mode 100755
index 0000000000..aa76800f31
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/Application.js
@@ -0,0 +1,410 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL: http://www.gnu.org/licenses/lgpl.html
+ EPL: http://www.eclipse.org/org/documents/epl-v10.php
+ See the LICENSE file in the project's top-level directory for details.
+
+ Authors:
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#resource(feeds:feeds)
+#resource(css:css)
+#resource(proxy:proxy)
+#resource(images:images)
+#embed(feedreader.proxy/*)
+#embed(feedreader.feeds/*)
+#embed(feedreader.css/*)
+#embed(feedreader.images/*)
+#embed(qx.icontheme/16/actions/dialog-ok.png)
+#embed(qx.icontheme/16/actions/dialog-cancel.png)
+#embed(qx.icontheme/16/actions/help-about.png)
+#embed(qx.icontheme/16/actions/view-refresh.png)
+
+************************************************************************ */
+
+/**
+ * qooxdoo news reader Application class.
+ */
+qx.OO.defineClass("feedreader.Application", qx.component.AbstractApplication,
+function () {
+ qx.component.AbstractApplication.call(this);
+
+ qx.manager.object.ImageManager.getInstance().setIconTheme(qx.theme.icon.VistaInspirate.getInstance());
+ //this.fetchFeedDesc();
+ this.setFeeds([]);
+});
+
+qx.OO.addProperty({name: "feeds"});
+qx.OO.addProperty({name: "selectedFeed"});
+
+qx.Settings.setDefault("resourceUri", "./resource");
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS
+---------------------------------------------------------------------------
+*/
+
+if (qx.core.Client.getInstance().getRunsLocally())
+{
+ qx.Class._feedDesc = [
+ {
+ url: "feedreader/feeds/qooxdoo-news.xml",
+ name: "qooxdoo-blog"
+ },
+ {
+ url: "feedreader/feeds/qooxdoo-blog.xml",
+ name: "qooxdoo-news"
+ },
+ {
+ url: "feedreader/feeds/ajaxian.xml",
+ name: "ajaxian"
+ },
+ {
+ url: "feedreader/feeds/safari.xml",
+ name: "Surfin' Safari"
+ }
+ ];
+}
+else
+{
+ qx.Class._feedDesc = [
+ {
+ url: "feedreader/proxy/proxy.php?proxy=" + encodeURIComponent("http://feeds.feedburner.com/qooxdoo/blog/content"),
+ name: "qooxdoo-blog"
+ },
+ {
+ url: "feedreader/proxy/proxy.php?proxy=" + encodeURIComponent("http://feeds.feedburner.com/qooxdoo/news/content"),
+ name: "qooxdoo-news"
+ },
+ {
+ url: "feedreader/proxy/proxy.php?proxy=" + encodeURIComponent("http://feeds.feedburner.com/ajaxian"),
+ name: "ajaxian"
+ },
+ {
+ url: "feedreader/proxy/proxy.php?proxy=" + encodeURIComponent("http://webkit.org/blog/?feed=rss2"),
+ name: "Surfin' Safari"
+ }
+ ];
+}
+
+qx.Proto.initialize = function(e)
+{
+ // Define alias for custom resource path
+ qx.manager.object.AliasManager.getInstance().add("feedreader", qx.Settings.getValueOfClass("feedreader.Application", "resourceUri"));
+
+ // Include CSS file
+ qx.html.StyleSheet.includeFile(qx.manager.object.AliasManager.getInstance().resolvePath("feedreader/css/reader.css"));
+};
+
+qx.Proto.main = function(e)
+{
+ // create main layout
+ var dockLayout = new qx.ui.layout.DockLayout();
+ dockLayout.set({
+ height: "100%",
+ width: "100%"
+ });
+
+ // create header
+ var header = new qx.ui.embed.HtmlEmbed("<h1><span>qooxdoo</span> reader</h1>");
+ header.setCssClassName("header");
+ header.setHeight(50);
+ dockLayout.addTop(header);
+
+ // define commands
+ var reload_cmd = new qx.client.Command("Control+R");
+ reload_cmd.addEventListener("execute", function(e) {
+ this.fetchFeeds();
+ this.debug(this.tr("reloading ...").toString());
+ }, this);
+
+ var about_cmd = new qx.client.Command("F1");
+ about_cmd.addEventListener("execute", function(e) {
+ alert(this.tr("qooxdoo feed reader."));
+ }, this);
+
+ // create toolbar
+ var toolBar = new qx.ui.toolbar.ToolBar();
+ toolBar.add(new qx.ui.toolbar.Button(this.trn("Add feed", "Add feeds", 2), "icon/16/actions/dialog-ok.png"));
+ toolBar.add(new qx.ui.toolbar.Button(this.tr("Remove feed"), "icon/16/actions/dialog-cancel.png"));
+ toolBar.add(new qx.ui.toolbar.Separator());
+
+ var reload_btn = new qx.ui.toolbar.Button(this.tr("Reload"), "icon/16/actions/view-refresh.png");
+ reload_btn.setCommand(reload_cmd);
+ reload_btn.setToolTip(new qx.ui.popup.ToolTip(this.tr("(%1) Reload the feeds.", reload_cmd.toString())));
+ toolBar.add(reload_btn);
+
+ toolBar.add(new qx.ui.basic.HorizontalSpacer());
+
+ // poulate languages menu and add it to the toolbar
+ var locales = {
+ en: this.tr("English"),
+ de: this.tr("German"),
+ en: this.tr("English"),
+ tr: this.tr("Turkish"),
+ it: this.tr("Italian"),
+ es: this.tr("Spanish"),
+ sv: this.tr("Swedish"),
+ ru: this.tr("Russian")
+ }
+ var availableLocales = qx.locale.Manager.getInstance().getAvailableLocales();
+ var locale = qx.locale.Manager.getInstance().getLocale();
+ var lang_menu = new qx.ui.menu.Menu();
+ var radioManager = new qx.manager.selection.RadioManager("lang");
+ for (var lang in locales) {
+ if (availableLocales.indexOf(lang) == -1) {
+ continue;
+ }
+ var menuButton = new qx.ui.menu.RadioButton(locales[lang], null, locale == lang);
+ menuButton.setUserData("locale", lang);
+ lang_menu.add(menuButton);
+ radioManager.add(menuButton);
+ }
+ radioManager.addEventListener("changeSelected", function(e) {
+ var lang = e.getData().getUserData("locale");
+ this.debug("lang:" + lang);
+ qx.locale.Manager.getInstance().setLocale(lang);
+ });
+ lang_menu.addToDocument();
+ toolBar.add(new qx.ui.toolbar.MenuButton("", lang_menu, "feedreader/images/locale.png"));
+
+ var about_btn = new qx.ui.toolbar.Button(this.tr("Help"), "icon/16/actions/help-about.png");
+ about_btn.setCommand(about_cmd);
+ about_btn.setToolTip(new qx.ui.popup.ToolTip("(" + about_cmd.toString() + ")"));
+ toolBar.add(about_btn);
+
+ dockLayout.addTop(toolBar);
+
+ // add tree
+ var tree = new qx.ui.tree.Tree(this.tr("News feeds"));
+ tree.set({height:"100%", width:"100%"});
+ tree.setOverflow("auto");
+ tree.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ tree.setBackgroundColor("#EEEEEE");
+
+ var feedDesc = feedreader.Application._feedDesc;
+ for (var i=0; i<feedDesc.length; i++) {
+ var folder = new qx.ui.tree.TreeFolder(feedDesc[i].name);
+ tree.getManager().addEventListener("changeSelection", function(e) {
+ if (e.getData()[0] .getParentFolder()) {
+ this.displayFeed(e.getData()[0].getLabel());
+ }
+ }, this);
+ tree.add(folder);
+ }
+
+ // create table model
+ this._tableModel = new qx.ui.table.SimpleTableModel();
+ this._tableModel.setColumnIds(["title", "author", "date"]);
+ this._tableModel.setColumnNamesById({
+ title: this.tr("Subject"),
+ author: this.tr("Sender"),
+ date: this.tr("Date")
+ });
+
+ // add table
+ var table = new qx.ui.table.Table(this._tableModel);
+ table.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ table.set({height:"100%", width:"100%"});
+ table.setStatusBarVisible(false);
+ table.getDataRowRenderer().setHighlightFocusRow(false);
+ table.getTableColumnModel().setColumnWidth(0, 350);
+ table.getTableColumnModel().setColumnWidth(1, 200);
+ table.getTableColumnModel().setColumnWidth(2, 200);
+ table.getSelectionModel().addEventListener("changeSelection", function(e) {
+ var selectedEntry = table.getSelectionModel().getAnchorSelectionIndex();
+ var item = this.getFeeds()[this.getSelectedFeed()].items[selectedEntry];
+ this.displayArticle(item);
+ }, this);
+
+ // hide row focus
+ var theme = qx.manager.object.AppearanceManager.getInstance().getAppearanceTheme();
+ theme.registerAppearance("table-focus-indicator", {
+ state : function(vTheme, vStates) {
+ return {
+ border: null
+ }
+ }
+ });
+ this._table = table;
+
+ // add blog entry
+ this._blogEntry = new feedreader.ArticleView();
+ this._blogEntry.set({height:"100%", width:"100%"});
+ this._blogEntry.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+
+ // create splitpane for the right hand content area
+ var contentSplitPane = new qx.ui.splitpane.VerticalSplitPane("1*", "2*");
+ contentSplitPane.set({height:"100%", width:"100%"});
+ contentSplitPane.setLiveResize(true);
+ contentSplitPane.addTop(table);
+ contentSplitPane.addBottom(this._blogEntry);
+
+ // create vertival splitter
+ var mainSplitPane = new qx.ui.splitpane.HorizontalSplitPane(200, "1*");
+ mainSplitPane.setLiveResize(true);
+ mainSplitPane.addLeft(tree);
+ mainSplitPane.addRight(contentSplitPane);
+
+ dockLayout.add(mainSplitPane);
+
+ dockLayout.addToDocument();
+
+ // load and display feed data
+ this.setSelectedFeed(feedDesc[0].name);
+ this.fetchFeeds();
+};
+
+
+qx.Proto.fetchFeedDesc = function() {
+ var req = new qx.io.remote.Request(qx.manager.object.AliasManager.getInstance().resolvePath("feedreader/feeds/febo-feeds.opml.xml"), "GET", qx.util.Mime.XML);
+ feedreader.Application._feedDesc = [];
+ req.addEventListener("completed", function(e) {
+ var xml = e.getData().getContent();
+ var eItems = xml.getElementsByTagName("outline");
+ for(var i=0; i<eItems.length; i++) {
+ var eDesc = eItems[i];
+ feedreader.Application._feedDesc.push({
+ name: eDesc.getAttribute("title"),
+ url: qx.manager.object.AliasManager.getInstance().resolvePath("feedreader/proxy/proxy.php") + "?proxy=" + encodeURIComponent(eDesc.getAttribute("xmlUrl"))
+ });
+ }
+ }, this);
+ req.setAsynchronous(false);
+ req.send();
+};
+
+
+qx.Proto.fetchFeeds = function() {
+ qx.io.remote.RequestQueue.getInstance().setMaxConcurrentRequests(2);
+ var feedDesc = feedreader.Application._feedDesc;
+ var that = this;
+ var getCallback = function(feedName) {
+ return function(e) {
+ that.debug("loading " + feedName + " complete!");
+ that.parseXmlFeed(feedName, e.getData().getContent());
+ }
+ }
+ for (var i=0; i<feedDesc.length; i++) {
+ var req = new qx.io.remote.Request(qx.manager.object.AliasManager.getInstance().resolvePath(feedDesc[i].url), "GET", qx.util.Mime.XML);
+ req.addEventListener("completed", getCallback(feedDesc[i].name));
+ req.send();
+ }
+};
+
+
+qx.Proto.parseXmlFeed = function(feedName, xml) {
+ var items = [];
+ if (xml.documentElement.tagName == "rss") {
+ items = this.parseRSSFeed(xml);
+ } else if (xml.documentElement.tagName == "feed") {
+ items = this.parseAtomFeed(xml);
+ }
+ this.getFeeds()[feedName] = {
+ selected: 0,
+ items: items
+ };
+ if (feedName == this.getSelectedFeed()) {
+ this.displayFeed(feedName);
+ }
+};
+
+
+qx.Proto.parseAtomFeed = function(xml) {
+ var eItems = xml.getElementsByTagName("entry");
+ var empty = xml.createElement("empty");
+ var items = [];
+ for (var i=0; i<eItems.length; i++) {
+ var eItem = eItems[i];
+ var item = {}
+ item.title = qx.dom.Element.getTextContent(eItem.getElementsByTagName("title")[0]);
+ if (eItem.getElementsByTagName("author").length > 0) {
+ item.author = qx.dom.Element.getTextContent(eItem.getElementsByTagName("author")[0].getElementsByTagName("name")[0]);
+ } else {
+ item.author = ""
+ }
+ item.date = qx.dom.Element.getTextContent(
+ eItem.getElementsByTagName("created")[0] ||
+ eItem.getElementsByTagName("published")[0] ||
+ eItem.getElementsByTagName("updated")[0] ||
+ empty
+ );
+ item.content = qx.dom.Element.getTextContent(eItem.getElementsByTagName("content")[0] || empty);
+ item.link = eItem.getElementsByTagName("link")[0].getAttribute("href");
+ items.push(item);
+ }
+ return items;
+}
+
+
+qx.Proto.parseRSSFeed = function(xml) {
+ var eItems = xml.getElementsByTagName("item");
+ var empty = xml.createElement("empty");
+ var items = [];
+ for (var i=0; i<eItems.length; i++) {
+ var eItem = eItems[i];
+ var item = {}
+ item.title = qx.dom.Element.getTextContent(eItem.getElementsByTagName("title")[0]);
+ item.author = qx.dom.Element.getTextContent(qx.xml.Element.getElementsByTagNameNS(eItem, qx.xml.Namespace.DC, "creator")[0] || empty);
+ item.date = qx.dom.Element.getTextContent(eItem.getElementsByTagName("pubDate")[0]);
+ item.content = qx.dom.Element.getTextContent(qx.xml.Element.getElementsByTagNameNS(eItem, qx.xml.Namespace.RSS1, "encoded")[0] || empty);
+ item.link = qx.dom.Element.getTextContent(eItem.getElementsByTagName("link")[0]);
+ items.push(item);
+ }
+ return items;
+};
+
+
+qx.Proto.displayFeed = function(feedName) {
+ if (this.getSelectedFeed() != feedName) {
+ this.getFeeds()[this.getSelectedFeed()].selected = this._table.getSelectionModel().getAnchorSelectionIndex();
+ }
+
+ this.setSelectedFeed(feedName);
+
+ if (this.getFeeds()[feedName]) {
+ var items = this.getFeeds()[feedName].items;
+ var selection = this.getFeeds()[feedName].selected;
+
+ this._tableModel.setDataAsMapArray(items);
+ this._table.getSelectionModel().setSelectionInterval(selection, selection);
+ this._table.setFocusedCell(0, selection, true);
+ this.displayArticle(items[selection]);
+ }
+};
+
+
+qx.Proto.displayArticle = function(item) {
+ this._blogEntry.setArticle(item);
+};
+
+
+qx.Proto.finalize = function(e)
+{
+};
+
+qx.Proto.close = function(e)
+{
+ // prompt user
+ // e.returnValue = "[qooxdoo application: Do you really want to close the application?]";
+};
+
+qx.Proto.terminate = function(e)
+{
+ // alert("terminated");
+};
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/ArticleView.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/ArticleView.js
new file mode 100644
index 0000000000..0e7e6509c6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/ArticleView.js
@@ -0,0 +1,85 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL: http://www.gnu.org/licenses/lgpl.html
+ EPL: http://www.eclipse.org/org/documents/epl-v10.php
+ See the LICENSE file in the project's top-level directory for details.
+
+ Authors:
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+************************************************************************ */
+
+qx.OO.defineClass("feedreader.ArticleView", qx.ui.basic.Terminator,
+function(article) {
+ qx.ui.basic.Terminator.call(this);
+ this.setCssClassName("blogEntry");
+ this.setArticle(article);
+});
+
+qx.OO.addProperty({ name: "article"});
+
+
+qx.Proto._modifyArticle = function(propValue, propOldValue, propData) {
+ if (this._isCreated) {
+ this._applyElementData();
+ }
+
+ return true;
+};
+
+
+qx.Proto._applyElementData = function() {
+ var element = this.getElement();
+ element.innerHTML = this.getHtml();
+
+ var links = element.getElementsByTagName("a");
+ for (var i=0; i<links.length; i++) {
+ links[i].target = "_blank";
+ };
+};
+
+
+qx.Proto.getHtml = function() {
+ var item = this.getArticle();
+ if (!item) {
+ return "";
+ }
+
+ var html = new qx.util.StringBuilder();
+
+ html.add("<div id='_blogEntry'>");
+
+ html.add("<h1 class='blog'>");
+ html.add(item.title);
+ html.add("</h1>");
+
+ html.add("<div class='date'>");
+ html.add(item.date);
+ html.add("</div>");
+
+ html.add("<div class='description'>");
+ html.add(item.content);
+ html.add("</div>");
+
+ html.add("<a target='_blank' href='");
+ html.add(item.link);
+ html.add("'>");
+ html.add(this.tr("read more ..."));
+ html.add("</a>");
+
+ html.add("</div>");
+
+ return html;
+} \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/index.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/index.html
new file mode 100755
index 0000000000..4f5bf3d13a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/index.html
@@ -0,0 +1,15 @@
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Feed Reader</title>
+ <script type="text/javascript" src="script/feedreader.js"></script>
+ </head>
+ <body>
+ <script type="text/javascript">
+ if (!qx.IS_SOURCE) {
+ qx.log.Logger.ROOT_LOGGER.setMinLevel(qx.log.Logger.LEVEL_ERROR);
+ }
+ qx.core.Init.getInstance().setApplication(feedreader.Application);
+ </script>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/css/reader.css b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/css/reader.css
new file mode 100644
index 0000000000..e59f36b63e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/css/reader.css
@@ -0,0 +1,54 @@
+.header {
+ margin: 0px;
+ padding: 0px;
+ background-color: #134275;
+}
+
+.header h1 {
+ font-family: "Trebuchet MS", "Lucida Grande", Verdana, sans-serif;
+ font-size: 18px;
+ font-weight: bold;
+ color: #DEFF83;
+ padding: 12px 20px;
+ margin: 0px;
+}
+
+.blogEntry {
+ font-family: Verdana, "Lucida Grande", "Bitstream Vera Sans", Tahoma, "Lucida Sans Unicode", Arial, sans-serif;
+ font-size: 11px;
+ line-height: 150%;
+ padding: 5px;
+ background: #FBFFEF;
+}
+
+.blogEntry h1.blog {
+ font-family: "Trebuchet MS", "Lucida Grande", Verdana, sans-serif;
+ color: #134275;
+ line-height: 120%;
+}
+
+.blogEntry {
+ overflow: auto;
+}
+
+.blogEntry div.date {
+ font-weight: bold;
+ color: #1D65B3;
+ padding: 5px;
+}
+
+.blogEntry a:link,
+.blogEntry a:visited{
+ color: #134275;
+}
+
+.blogEntry a:hover,
+.blogEntry a:active{
+ color: #134275;
+ text-decoration: underline;
+}
+
+.blogEntry .description {
+ margin-top: 10px;
+ margin-bottom: 10px;
+} \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/ajaxian.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/ajaxian.xml
new file mode 100644
index 0000000000..68a2581df6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/ajaxian.xml
@@ -0,0 +1,789 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/1.5.2" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
+
+<channel>
+ <title>Ajaxian</title>
+ <link>http://ajaxian.com</link>
+ <description>Cleaning up the web with Ajax</description>
+ <pubDate>Tue, 28 Nov 2006 14:55:53 +0000</pubDate>
+ <generator>http://wordpress.org/?v=1.5.2</generator>
+ <language>en</language>
+
+ <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://ajaxian.com/index.xml" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
+ <title>Tasks added to Google Calendar by Milkers</title>
+ <link>http://ajaxian.com/archives/tasks-added-to-google-calendar-by-milkers</link>
+ <comments>http://ajaxian.com/archives/tasks-added-to-google-calendar-by-milkers#comments</comments>
+ <pubDate>Tue, 28 Nov 2006 14:55:53 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Showcase</category>
+ <category>Calendar</category>
+ <guid>http://ajaxian.com/archives/tasks-added-to-google-calendar-by-milkers</guid>
+ <description><![CDATA[ The Remember the Milk folks have added task management to Google Calendar (something many wish Google had added themselves).
+ We know that many of you are managing your tasks with Remember The Milk and your events with Google Calendar, and we thought it would be very cool if we could bring the two together. This new [...]]]></description>
+ <content:encoded><![CDATA[ <p>The Remember the Milk folks have added <a href="http://blog.rememberthemilk.com/2006/11/add-your-tasks-to-google-calendar.html">task management</a> to Google Calendar (something many wish Google had added themselves).</p>
+ <p>We know that many of you are managing your tasks with Remember The Milk and your events with Google Calendar, and we thought it would be very cool if we could bring the two together. This new feature adds a small task icon to the top of each day in Google Calendar &#8212; click on the icon to:</p>
+ <ul>
+ <li>Review your tasks for the day</li>
+ <li>Add new tasks and edit existing ones</li>
+ <li>Easily complete and postpone tasks</li>
+ <li>Review your overdue tasks</li>
+ <li>Optionally show tasks with no due date</li>
+ <li>See where your tasks are located on a map (Google Maps integration)</li>
+ </ul>
+ <p>This is really interesting. An outside group was able to add an important feature that we can not all use in a Google app itself.</p>
+ <p><a href="http://blog.rememberthemilk.com/2006/11/add-your-tasks-to-google-calendar.html"><img src="http://tech.cybernetnews.com/wp-content/uploads/2006/11/RememberMilkGC1.jpg" border="0" /></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=fbhz2iq1"><img src="http://feeds.feedburner.com/~f/ajaxian?i=fbhz2iq1" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=yMSQUquM"><img src="http://feeds.feedburner.com/~f/ajaxian?i=yMSQUquM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=eoFosWuU"><img src="http://feeds.feedburner.com/~f/ajaxian?i=eoFosWuU" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=pYIIcHPu"><img src="http://feeds.feedburner.com/~f/ajaxian?i=pYIIcHPu" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/tasks-added-to-google-calendar-by-milkers/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>YUI Resizable Component</title>
+ <link>http://ajaxian.com/archives/yui-resizable-component</link>
+ <comments>http://ajaxian.com/archives/yui-resizable-component#comments</comments>
+ <pubDate>Tue, 28 Nov 2006 13:38:06 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Examples</category>
+ <category>Yahoo!</category>
+ <guid>http://ajaxian.com/archives/yui-resizable-component</guid>
+ <description><![CDATA[ Jack Slocum keeps 'em coming with his detailed post on a reusable component for resizing elements.
+ Jack's YAHOO.ext.Resizable component does what it says on the tin, and he shows you:
+
+ Basic Resizable div
+ Wrapped elements (e.g. text area inside)
+ Preserve Ration (e.g. image resizing)
+ Transparent Handles
+ Customizable Handles
+ Snapping to increments
+ Animated Transitions
+
+
+
+
+var animated = new YAHOO.ext.Resizable&#40;'animated', &#123;
+&#160; &#160; width: 200,
+&#160; &#160; height: [...]]]></description>
+ <content:encoded><![CDATA[ <p>Jack Slocum keeps 'em coming with his detailed post on <a href="http://www.jackslocum.com/blog/2006/11/24/resizable-reloaded/">a reusable component for resizing elements</a>.</p>
+ <p>Jack's YAHOO.ext.Resizable component does what it says on the tin, and he shows you:</p>
+ <ul>
+ <li>Basic Resizable div</li>
+ <li>Wrapped elements (e.g. text area inside)</li>
+ <li>Preserve Ration (e.g. image resizing)</li>
+ <li>Transparent Handles</li>
+ <li>Customizable Handles</li>
+ <li>Snapping to increments</li>
+ <li>Animated Transitions</li>
+ </ul>
+ <div class="syntax_hilite">
+<div id="javascript-2">
+ <div class="javascript">
+<span style="color: #003366; font-weight: bold;">var</span> animated = <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #006600;">ext</span>.<span style="color: #006600;">Resizable</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'animated'</span>, <span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; &nbsp; width: <span style="color:#800000;">200</span>,<br />
+&nbsp; &nbsp; height: <span style="color:#800000;">100</span>,<br />
+&nbsp; &nbsp; minWidth:<span style="color:#800000;">100</span>,<br />
+&nbsp; &nbsp; minHeight:<span style="color:#800000;">50</span>,<br />
+&nbsp; &nbsp; animate:<span style="color: #003366; font-weight: bold;">true</span>,<br />
+&nbsp; &nbsp; easing: YAHOO.<span style="color: #006600;">util</span>.<span style="color: #006600;">Easing</span>.<span style="color: #006600;">backIn</span>,<br />
+&nbsp; &nbsp; duration:.<span style="color:#800000;">6</span><br />
+<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+&nbsp;</div>
+ </div>
+</div>
+ <p><a href="http://www.jackslocum.com/blog/2006/11/24/resizable-reloaded/"><img src="http://ajaxian.com/wp-content/images/yuiresizable.png" alt="YUI Resizable" border="0" width="208" height="108"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=JsRk5j9d"><img src="http://feeds.feedburner.com/~f/ajaxian?i=JsRk5j9d" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=8EjVkg8A"><img src="http://feeds.feedburner.com/~f/ajaxian?i=8EjVkg8A" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=h5DmJGoc"><img src="http://feeds.feedburner.com/~f/ajaxian?i=h5DmJGoc" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=dGR1OTXo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=dGR1OTXo" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/yui-resizable-component/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Mootools Primer</title>
+ <link>http://ajaxian.com/archives/mootools-primer</link>
+ <comments>http://ajaxian.com/archives/mootools-primer#comments</comments>
+ <pubDate>Mon, 27 Nov 2006 15:58:12 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Examples</category>
+ <guid>http://ajaxian.com/archives/mootools-primer</guid>
+ <description><![CDATA[ Aaron Newton has posted a Mootools Primer / Tutorial that includes "a how-to tutorial on the Mootools library. Most of the code examples will allow you execute them by clicking on the "execute this code" link above the example. Clicking this will echo out the code and the result in the Firebug debugging plugin for [...]]]></description>
+ <content:encoded><![CDATA[ <p>Aaron Newton has posted a <a href="http://clientside.cnet.com/examples/mootools-primer/">Mootools Primer / Tutorial</a> that includes "a how-to tutorial on the Mootools library. Most of the code examples will allow you execute them by clicking on the "execute this code" link above the example. Clicking this will echo out the code and the result in the Firebug debugging plugin for Firefox. You'll need that plugin installed to see any results of most of the code examples."</p>
+ <p>Currently the tabbed widget shows documentation for the core Moo.js, extensions of JavaScript objects and helpers, Addon libraries, and plugins.</p>
+ <p>It behaves a little weird for me with FF2 + Firebug 1.beta, but I can get to the meat of the matter.</p>
+ <p><a href="http://clientside.cnet.com/examples/mootools-primer/"><img src="http://ajaxian.com/wp-content/images/mootoolsprimer.png" alt="Mootools Primer" border="0" width="590" height="324"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=vfTLBHWH"><img src="http://feeds.feedburner.com/~f/ajaxian?i=vfTLBHWH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=RmZz7WHX"><img src="http://feeds.feedburner.com/~f/ajaxian?i=RmZz7WHX" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=nEOsta0N"><img src="http://feeds.feedburner.com/~f/ajaxian?i=nEOsta0N" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=zmZsFXoa"><img src="http://feeds.feedburner.com/~f/ajaxian?i=zmZsFXoa" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/mootools-primer/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Google Docs and Spreadsheets Team: Web native matters</title>
+ <link>http://ajaxian.com/archives/google-docs-and-spreadsheets-team-web-native-matters</link>
+ <comments>http://ajaxian.com/archives/google-docs-and-spreadsheets-team-web-native-matters#comments</comments>
+ <pubDate>Mon, 27 Nov 2006 15:25:50 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Editorial</category>
+ <guid>http://ajaxian.com/archives/google-docs-and-spreadsheets-team-web-native-matters</guid>
+ <description><![CDATA[ Richard MacManus linked to a Gizbuzz interview of Jen Mazzon and Sam Schillace of the Google Docs and Spreadsheets team (both ex-Writely).
+ Nothing ground-breaking, but it is interesting to hear about their thoughts on Ajax:
+
+ Browser compatibility issues - like the early graphic Web
+ Next was a question about browser compatibility issues and how that affects D&#038;S - [...]]]></description>
+ <content:encoded><![CDATA[ <p>Richard MacManus <a href="http://www.readwriteweb.com/archives/google_docs_and_spreadsheets_interview.php">linked to</a> a <a href="http://gizbuzz.co.uk/2006/podcast-episode-3-google-docs-and-spreadsheets/">Gizbuzz interview of Jen Mazzon and Sam Schillace</a> of the Google Docs and Spreadsheets team (both ex-Writely).</p>
+ <p>Nothing ground-breaking, but it is interesting to hear about their thoughts on Ajax:</p>
+ <blockquote>
+ <h3>Browser compatibility issues - like the early graphic Web</h3>
+ <p>Next was a question about browser compatibility issues and how that affects D&#038;S - and indeed the future of rich web applications. Sam responded that "it is definitely an issue [...] these apps are all cutting edge - it kind of reminds me of the early days of the graphical web, when you couldn't count on the browsers to render tables correctly [...]".</p>
+ <p>But he thinks it's "just growing pains" and it'll take about a year to sort those issues out.</p>
+ <p>Also on the question of whether Ajax is better than Flash and Laszlo etc, Sam thinks that Ajax is currently more web native.</p>
+ <h3>It's about being Web native, not cloning desktop apps</h3>
+ <p>Later in the interview, Jen stresses that they're "not trying to clone desktop apps". They want to be familiar to people, "but we're trying to do something that's actually more native to the Internet, more usable on the Internet."</p>
+ <p>Sam says they've had a lot of feedback that people like the fact they're not trying to copy desktop apps. He said "copying the existing stuff just feels irrelevant to us - we're not trying to copy, we're trying to re-invent."</p>
+ <p>Both Jen and Sam re-affirmed that collaboration and sharing is their main focus with D&#038;S, as well as being web native - rather than trying to compete on features with desktop apps.
+</p></blockquote>
+ <p>If you were asked "why is Ajax a better fit for some apps than Flash?" what would you say? Do you agree? Does the open web matter? What if Adobe fully opened up their format?
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=NCLw33w0"><img src="http://feeds.feedburner.com/~f/ajaxian?i=NCLw33w0" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=gjXowiT4"><img src="http://feeds.feedburner.com/~f/ajaxian?i=gjXowiT4" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=HeKJhsYv"><img src="http://feeds.feedburner.com/~f/ajaxian?i=HeKJhsYv" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=CWr8mgGL"><img src="http://feeds.feedburner.com/~f/ajaxian?i=CWr8mgGL" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/google-docs-and-spreadsheets-team-web-native-matters/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Review of ‘Pro Ajax and Java Frameworks’</title>
+ <link>http://ajaxian.com/archives/review-of-pro-ajax-and-java-frameworks</link>
+ <comments>http://ajaxian.com/archives/review-of-pro-ajax-and-java-frameworks#comments</comments>
+ <pubDate>Mon, 27 Nov 2006 14:14:42 +0000</pubDate>
+ <dc:creator>Dietrich Kappe</dc:creator>
+
+ <category>Front Page</category>
+ <category>Book Reviews</category>
+ <guid>http://ajaxian.com/archives/review-of-pro-ajax-and-java-frameworks</guid>
+ <description><![CDATA[
+ This is a review of Pro Ajax and Java Frameworks by Nathaniel T. Schutta and Ryan Asleson. This book seeks to give the experienced developer of Java web applications the knowledge necessary to add Ajax to their webapps. This is another Ajax book that goes broad rather than deep. Instead of investigating one or two [...]]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://ajaxian.com/wp-content/images/bcm.gif"><img src="http://ajaxian.com/wp-content/images/bcm_tn.jpg" style="DISPLAY: inline; FLOAT: left; WIDTH: 125px; HEIGHT: 164px" title="bcm.gif" height="164" width="125" alt="bcm.gif" border="0" id="bcm.gif"/></a></p>
+ <p>This is a review of <em>Pro Ajax and Java Frameworks</em> by Nathaniel T. Schutta and Ryan Asleson. This book seeks to give the experienced developer of Java web applications the knowledge necessary to add Ajax to their webapps. This is another Ajax book that goes broad rather than deep. Instead of investigating one or two frameworks, it delves into more than a half dozen, both Javascript and Java.</p>
+ <p>Quick summary: Chapters 2, 3 and 5 are the strongest in the book with useful information on tools, Javascript libraries and enhancing Struts applications with Ajax. The other chapters are not as strong and spend too much time covering old ground.</p>
+ <p>The book is divided into two parts. Part 1 is an introduction to a variety of Javascript and Java Ajax libraries and frameworks. Part 2 shows how to integrate those libraries and frameworks into existing Java web frameworks such as Struts and JSF. One place that this book differs from other Ajax books is that it doesn't have a chapter introducing the reader to the browser technologies that comprise Ajax. It doesn't dwell on the basics of Javascript, DOM and CSS. It expects you to have already read the Apress books on those topics. Instead, chapter 1 covers what I would call best practices and patterns -- autocomplete, partial page update, draggable DOM.</p>
+ <p>Read more of the review <a href="http://blogs.pathf.com/agileajax/2006/11/review_of_pro_a.html">here</a>.</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=5FIDIG43"><img src="http://feeds.feedburner.com/~f/ajaxian?i=5FIDIG43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=5aOiDdHp"><img src="http://feeds.feedburner.com/~f/ajaxian?i=5aOiDdHp" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=hunPILOJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=hunPILOJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=GTSOXqVS"><img src="http://feeds.feedburner.com/~f/ajaxian?i=GTSOXqVS" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/review-of-pro-ajax-and-java-frameworks/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Minus(MO)R a.k.a. Let me write JavaScript but help me!</title>
+ <link>http://ajaxian.com/archives/minusmor-aka-let-me-write-javascript-but-help-me</link>
+ <comments>http://ajaxian.com/archives/minusmor-aka-let-me-write-javascript-but-help-me#comments</comments>
+ <pubDate>Mon, 27 Nov 2006 14:03:41 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Library</category>
+ <category>Rails</category>
+ <guid>http://ajaxian.com/archives/minusmor-aka-let-me-write-javascript-but-help-me</guid>
+ <description><![CDATA[ Dan Webb has created two Rails plugins to make RJS even better. He has realised that although for some cases RJS is a great thing, you often do want to just use JavaScript, and it looks really ugly to do this:
+
+
+
+page &#38;lt;&#38;lt;'if (someClientSideVariable) {'
+page['a'].replace_html :partial =&#38;gt; 'thing'
+page &#38;lt;&#38;lt;'} else {'
+page['b'].replace_html :partial =&#38;gt; 'thong'
+page &#38;lt;&#38;lt;'}'
+
+
+
+ He first [...]]]></description>
+ <content:encoded><![CDATA[ <p>Dan Webb has created two Rails plugins to make RJS even better. He has realised that although for some cases RJS is a great thing, you often do want to just use JavaScript, and it looks really ugly to do this:</p>
+ <div class="syntax_hilite">
+<div id="ruby-5">
+ <div>
+page &amp;lt;&amp;lt;'if (someClientSideVariable) {'<br />
+page['a'].replace_html :partial =&amp;gt; 'thing'<br />
+page &amp;lt;&amp;lt;'} else {'<br />
+page['b'].replace_html :partial =&amp;gt; 'thong'<br />
+page &amp;lt;&amp;lt;'}'
+</div>
+ </div>
+</div>
+ <p>He first came out with <a href="http://svn.danwebb.net/external/rails/plugins/minus_r/trunk/">MinusR</a> which takes of your rjs files and lets you code in JS, but still call out to the ruby style. For example:</p>
+ <div class="syntax_hilite">
+<div id="javascript-6">
+ <div class="javascript">
+<span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>someClientSideVariable<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">update</span><span style="color:#006600; font-weight:bold;">&#40;</span>&amp;lt;%=js render<span style="color:#006600; font-weight:bold;">&#40;</span>:partial =&gt; <span style="color: #3366CC;">'thing'</span><span style="color:#006600; font-weight:bold;">&#41;</span> %&amp;gt;<span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+<span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'b'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">update</span><span style="color:#006600; font-weight:bold;">&#40;</span>&amp;lt;%=js render<span style="color:#006600; font-weight:bold;">&#40;</span>:partial =&gt; <span style="color: #3366CC;">'thong'</span><span style="color:#006600; font-weight:bold;">&#41;</span> %&amp;gt;<span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+<span style="color:#006600; font-weight:bold;">&#125;</span><br />
+&nbsp;</div>
+ </div>
+</div>
+ <blockquote><p>
+MinusR gives you the js helper that calls to_json on any value passed to it so you can drop nicely escaped and formatted data into your script as before. Everyone’s a winner. Well, not quite, I could be going out on a limb here but I really think this is the better way. Go on, give it a go. A bit of javaScript won’t hurt you….
+</p></blockquote>
+ <p>Then a bunch of people wanted this to be doable, but in a separate file, so Dan created <a href="http://www.danwebb.net/2006/11/24/minusmor-released">MinusMOR</a>, which let's you do the same thing in .ejs files.</p>
+ <p>It is great to be able to choice your poison, even on a case by case basis, and decide whether JS or Ruby is the ruler.
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=KzOPpBLk"><img src="http://feeds.feedburner.com/~f/ajaxian?i=KzOPpBLk" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=tyZWuMpT"><img src="http://feeds.feedburner.com/~f/ajaxian?i=tyZWuMpT" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=cYtOaSvj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=cYtOaSvj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=e2UryVSj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=e2UryVSj" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/minusmor-aka-let-me-write-javascript-but-help-me/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Zamzar: Online file conversion</title>
+ <link>http://ajaxian.com/archives/zamzar-online-file-conversion</link>
+ <comments>http://ajaxian.com/archives/zamzar-online-file-conversion#comments</comments>
+ <pubDate>Mon, 27 Nov 2006 13:23:12 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Showcase</category>
+ <guid>http://ajaxian.com/archives/zamzar-online-file-conversion</guid>
+ <description><![CDATA[ Zamzar is a simple, single page ajax application that lets you upload a file and convert it to something else. E.g.
+
+ Make your PDF documents editable by converting them to MS Word
+ Convert your ITunes (aac) files to mp3
+ Upload up to 5 files at a time to convert simultaneously
+ Take advantage of over 150 different conversion types
+
+
+
+]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://www.zamzar.com/">Zamzar</a> is a simple, single page ajax application that lets you upload a file and convert it to something else. E.g.</p>
+ <ul>
+ <li>Make your PDF documents editable by converting them to MS Word</li>
+ <li>Convert your ITunes (aac) files to mp3</li>
+ <li>Upload up to 5 files at a time to convert simultaneously</li>
+ <li>Take advantage of over 150 different conversion types</li>
+ </ul>
+ <p><a href="http://www.zamzar.com/"><img src="http://ajaxian.com/wp-content/images/zamzar.png" alt="ZamZar" border="0" width="778" height="549"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=2bVY3cIM"><img src="http://feeds.feedburner.com/~f/ajaxian?i=2bVY3cIM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=YNCLGcXg"><img src="http://feeds.feedburner.com/~f/ajaxian?i=YNCLGcXg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=qgnycv1k"><img src="http://feeds.feedburner.com/~f/ajaxian?i=qgnycv1k" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=wnoUHPGJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=wnoUHPGJ" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/zamzar-online-file-conversion/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>CSS Evolution</title>
+ <link>http://ajaxian.com/archives/css-evolution</link>
+ <comments>http://ajaxian.com/archives/css-evolution#comments</comments>
+ <pubDate>Sat, 25 Nov 2006 17:12:26 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Fun</category>
+ <category>CSS</category>
+ <guid>http://ajaxian.com/archives/css-evolution</guid>
+ <description><![CDATA[
+ Evolution of the web in real-time. I hope you are having a good weekend (a Thanksgiving one for the US folk).
+
+]]></description>
+ <content:encoded><![CDATA[ <p><img src="http://mboffin.com/stuff/designline-openair.gif" width="512" height="384" border="0" /></p>
+ <p>Evolution of the web in real-time. I hope you are having a good weekend (a Thanksgiving one for the US folk).
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=0Oe2jHNg"><img src="http://feeds.feedburner.com/~f/ajaxian?i=0Oe2jHNg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=dnGk0cRj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=dnGk0cRj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Tt4f4R3d"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Tt4f4R3d" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=G46q0PCO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=G46q0PCO" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/css-evolution/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Poly9’s Polyvalent Javascript URL Parser</title>
+ <link>http://ajaxian.com/archives/poly9s-polyvalent-javascript-url-parser</link>
+ <comments>http://ajaxian.com/archives/poly9s-polyvalent-javascript-url-parser#comments</comments>
+ <pubDate>Sat, 25 Nov 2006 15:00:34 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Library</category>
+ <guid>http://ajaxian.com/archives/poly9s-polyvalent-javascript-url-parser</guid>
+ <description><![CDATA[ Denis Laprise and the Poly9 Group needed a robust URL parser in JavaScript, so they created the Polyvalent Javascript URL Parser.
+
+
+
+var p = new Poly9.URLParser&#40;'http://user:password@poly9.com/pathname?arguments=1#fragment'&#41;;
+p.getHost&#40;&#41; == 'poly9.com';
+p.getProtocol&#40;&#41; == 'http';
+p.getPathname&#40;&#41; == '/pathname';
+p.getQuerystring&#40;&#41; == 'arguments=1';
+p.getFragment&#40;&#41; == 'fragment';
+p.getUsername&#40;&#41; == 'user';
+p.getPassword&#40;&#41; == 'password';
+ p.setURL&#40;'another.url.com'&#41;;
+p.getHost&#40;&#41; == 'another.url.com';
+p.getProtocol&#40;&#41; == '';
+ p.setURL&#40;'dsdsad'&#41;; // throws an exception
+&#160;
+
+
+ This smells like a Java group writing JavaScript to [...]]]></description>
+ <content:encoded><![CDATA[ <p>Denis Laprise and the Poly9 Group needed a robust URL parser in JavaScript, so they <a href="https://code.poly9.com/trac/wiki/URLParser">created the Polyvalent Javascript URL Parser</a>.</p>
+ <div class="syntax_hilite">
+<div id="javascript-8">
+ <div class="javascript">
+<span style="color: #003366; font-weight: bold;">var</span> p = <span style="color: #003366; font-weight: bold;">new</span> Poly9.<span style="color: #006600;">URLParser</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'http://user:password@poly9.com/pathname?arguments=1#fragment'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+p.<span style="color: #006600;">getHost</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'poly9.com'</span>;<br />
+p.<span style="color: #006600;">getProtocol</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'http'</span>;<br />
+p.<span style="color: #006600;">getPathname</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'/pathname'</span>;<br />
+p.<span style="color: #006600;">getQuerystring</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'arguments=1'</span>;<br />
+p.<span style="color: #006600;">getFragment</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'fragment'</span>;<br />
+p.<span style="color: #006600;">getUsername</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'user'</span>;<br />
+p.<span style="color: #006600;">getPassword</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'password'</span>;</p>
+ <p>p.<span style="color: #006600;">setURL</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'another.url.com'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+p.<span style="color: #006600;">getHost</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'another.url.com'</span>;<br />
+p.<span style="color: #006600;">getProtocol</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">''</span>;</p>
+ <p>p.<span style="color: #006600;">setURL</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'dsdsad'</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// throws an exception</span><br />
+&nbsp;</div>
+ </div>
+</div>
+ <p>This smells like a Java group writing JavaScript to me with the camelCase and thus p.getUsername() instead of p.username.</p>
+ <p>You can check out <a href="https://code.poly9.com/trac/browser/urlparser/urlparser.js?format=txt">the implementation</a> and the <a href="https://code.poly9.com/files/urlparser-0.1.zip">test suite (zip)</a>.
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=ZVMtMQRn"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ZVMtMQRn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=TTsAAACX"><img src="http://feeds.feedburner.com/~f/ajaxian?i=TTsAAACX" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=LDXEbvr2"><img src="http://feeds.feedburner.com/~f/ajaxian?i=LDXEbvr2" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Uk6myWFs"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Uk6myWFs" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/poly9s-polyvalent-javascript-url-parser/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>DOMContentLoaded.Next</title>
+ <link>http://ajaxian.com/archives/domcontentloadednext</link>
+ <comments>http://ajaxian.com/archives/domcontentloadednext#comments</comments>
+ <pubDate>Sat, 25 Nov 2006 14:29:00 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Tip</category>
+ <guid>http://ajaxian.com/archives/domcontentloadednext</guid>
+ <description><![CDATA[ Andrea Giammarchi has taken the work of Dean Edwards, Mark Wubben, and Paul Sowden to create his DOMContentLoaded Final Solution.
+ The work comes with a test page for http and https, and is documented in this function:
+
+
+
+function onContent&#40;callback&#41;&#123; // (C) webreflection.blogspot.com
+&#160; &#160; // [please note that this code doesn't work]
+ &#160;// private scope variable
+ &#160;var IEStringToWrite =&#160; // [...]]]></description>
+ <content:encoded><![CDATA[ <p>Andrea Giammarchi has taken the work of <a href="http://dean.edwards.name/weblog/2005/09/busted/">Dean</a> <a href="http://dean.edwards.name/weblog/2006/06/again/">Edwards</a>, <a href="http://novemberborn.net/colophon">Mark Wubben</a>, and <a href="http://delete.me.uk/">Paul Sowden</a> to create <a href="http://www.3site.eu/jstests/onContent/final.html">his DOMContentLoaded Final Solution</a>.</p>
+ <p>The work comes with a test page for <a href="http://www.3site.eu/jstests/onContent/final.html">http</a> and <a href="https://server3.phpsoft.it:8111/antrea/">https</a>, and is documented in this function:</p>
+ <div class="syntax_hilite">
+<div id="javascript-10">
+ <div class="javascript">
+<span style="color: #003366; font-weight: bold;">function</span> onContent<span style="color:#006600; font-weight:bold;">&#40;</span>callback<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color: #009900; font-style: italic;">// (C) webreflection.blogspot.com</span><br />
+&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// [please note that this code doesn't work]</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// private scope variable</span></p>
+ <p>&nbsp;<span style="color: #003366; font-weight: bold;">var</span> IEStringToWrite =&nbsp; <span style="color: #009900; font-style: italic;">// this is IE dedicated string</span></p>
+ <p>&nbsp; <span style="color: #3366CC;">"&lt;script defer src='//:' onreadystatechange='<br />
+&nbsp; (function(element){<br />
+&nbsp; &nbsp;<br />
+&nbsp; &nbsp;// if readystate is complete<br />
+&nbsp; &nbsp;if(element.readyState === "</span>complete<span style="color: #3366CC;">")</p>
+ <p>&nbsp; &nbsp; // call the global variable<br />
+&nbsp; &nbsp; window.__onContent__();<br />
+&nbsp; })(this);<br />
+&nbsp; '&gt;&lt;/script&gt;"</span>;</p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// the above string is necessary to use onreadystatechange property</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// with an undefined page. In this way IE tell us the readyState</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// of the current document</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// to call callback function IE need a global scope variable</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// this variable could call one or more callback</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// then if it's already created we need to call the old callback</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// then this new callback</span><br />
+&nbsp;window.__onContent__ = <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>oldCallback<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; <br />
+&nbsp; <span style="color: #009900; font-style: italic;">// returns a function that will delete __onContent__</span><br />
+&nbsp; <span style="color: #009900; font-style: italic;">// to remove multiple callbacks with different </span><br />
+&nbsp; <span style="color: #009900; font-style: italic;">// events and different ways for each browser</span></p>
+ <p>&nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></p>
+ <p>&nbsp; &nbsp;<span style="color: #009900; font-style: italic;">// clear __onContent__ as generic function</span><br />
+&nbsp; &nbsp;window.__onContent__ = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
+&nbsp; &nbsp;<br />
+&nbsp; &nbsp;<br />
+&nbsp; &nbsp;<span style="color: #009900; font-style: italic;">// checks if oldCallback isn't null or undefined</span><br />
+&nbsp; &nbsp;<span style="color: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span>oldCallback<span style="color:#006600; font-weight:bold;">&#41;</span><br />
+&nbsp; &nbsp; oldCallback<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// call them to preserve the right order</span></p>
+ <p>&nbsp; &nbsp;callback<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp; <span style="color: #009900; font-style: italic;">// call this scope callback function </span><br />
+&nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// (sent calling onContent)</span><br />
+&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
+&nbsp; <br />
+&nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#40;</span>window.__onContent__<span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// undefined if is the first time we use __onContent__</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// __onContent__ is my function to use as callback</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// I need to add this function as event</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// Opera 9 and FireFox both support DOMContentLoaded as well as </span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// addEventListener document method</span><br />
+&nbsp;<span style="color: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span>document.<span style="color: #006600;">addEventListener</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
+&nbsp; document.<span style="color: #006600;">addEventListener</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"DOMContentLoaded"</span>, __onContent__, <span style="color: #003366; font-weight: bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// if some browser supports addEventListener but doesn't support DOMContentLoaded </span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// event I don't need to care about that because this event will never be fired</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// at the same time if Safari or KDE one day will support DOMContentLoaded </span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// I prefere use this dedicated in-core</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// event instead of next trick that's quite horrible but works with Safari, </span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// KDE as Opera 8.5 and lower too</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// that's why I don't use an else if but an if ... because the first time </span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// event will be fired __onContent__ </span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// became an empty function ... then calling them twice is not a problem</span></p>
+ <p>&nbsp;<span style="color: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span><br />
+&nbsp; <span style="color: #009900; font-style: italic;">// Safari and KDE</span><br />
+&nbsp; <span style="color: #0066FF;">/WebKit|Khtml/i</span>.<span style="color: #006600;">test</span><span style="color:#006600; font-weight:bold;">&#40;</span>navigator.<span style="color: #006600;">userAgent</span><span style="color:#006600; font-weight:bold;">&#41;</span> ||</p>
+ <p>&nbsp; <span style="color: #009900; font-style: italic;">// Opera less than 9</span><br />
+&nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span>window.<span style="color: #006600;">opera</span> &amp;&amp; parseInt<span style="color:#006600; font-weight:bold;">&#40;</span>window.<span style="color: #006600;">opera</span>.<span style="color: #006600;">version</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>&amp;lt;<span style="color:#800000;">9</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
+&nbsp;<span style="color:#006600; font-weight:bold;">&#41;</span><br />
+&nbsp; <span style="color: #009900; font-style: italic;">// runtime anonymous function</span><br />
+&nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></p>
+ <p>&nbsp; &nbsp;<span style="color: #009900; font-style: italic;">// checks if document.readyState is loaded or complete</span><br />
+&nbsp; &nbsp;<span style="color: #0066FF;">/loaded|complete/</span>.<span style="color: #006600;">test</span><span style="color:#006600; font-weight:bold;">&#40;</span>document.<span style="color: #006600;">readyState</span><span style="color:#006600; font-weight:bold;">&#41;</span> ?</p>
+ <p>&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// then call __onContent__ , stopping internal loop</span><br />
+&nbsp; &nbsp; window.__onContent__<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> :</p>
+ <p>&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// or loops itself with the faster timeout</span><br />
+&nbsp; &nbsp; setTimeout<span style="color:#006600; font-weight:bold;">&#40;</span>arguments.<span style="color: #006600;">callee</span>, <span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <br />
+&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// at this point I've setted the DOMContentLoaded event for every browser</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// but not for Inernet Explorer.</span><br />
+&nbsp;<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #0066FF;">/MSIE/i</span>.<span style="color: #006600;">test</span><span style="color:#006600; font-weight:bold;">&#40;</span>navigator.<span style="color: #006600;">userAgent</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span></p>
+ <p>&nbsp; <span style="color: #009900; font-style: italic;">// I can write dedicated string</span><br />
+&nbsp; document.<span style="color: #006600;">write</span><span style="color:#006600; font-weight:bold;">&#40;</span>IEStringToWrite<span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+<span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
+&nbsp;</div>
+ </div>
+</div>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=luo1Gwyw"><img src="http://feeds.feedburner.com/~f/ajaxian?i=luo1Gwyw" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=aQvBKJJ3"><img src="http://feeds.feedburner.com/~f/ajaxian?i=aQvBKJJ3" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=TJtOXhwL"><img src="http://feeds.feedburner.com/~f/ajaxian?i=TJtOXhwL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=LNNtLH7H"><img src="http://feeds.feedburner.com/~f/ajaxian?i=LNNtLH7H" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/domcontentloadednext/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Using the Eclipse AJAX Toolkit Framework (ATF) Webinar</title>
+ <link>http://ajaxian.com/archives/using-the-eclipse-ajax-toolkit-framework-atf-webinar</link>
+ <comments>http://ajaxian.com/archives/using-the-eclipse-ajax-toolkit-framework-atf-webinar#comments</comments>
+ <pubDate>Sat, 25 Nov 2006 04:04:00 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Presentation</category>
+ <guid>http://ajaxian.com/archives/using-the-eclipse-ajax-toolkit-framework-atf-webinar</guid>
+ <description><![CDATA[ We don't normally post webinars, but thought "what the hell it's Friday".
+ On November 30, the Eclipse foundation will be hosting a 1 hour webinar titled Using the Eclipse Ajax Toolkit Framework (ATF).
+ Eclipse ATF provides exemplary tools for creating and debugging Ajax applications. These tools include enhanced JavaScript editing features such as edit-time syntax checking, [...]]]></description>
+ <content:encoded><![CDATA[ <p>We don't normally post webinars, but thought "what the hell it's Friday".</p>
+ <p>On November 30, the Eclipse foundation will be hosting a 1 hour webinar titled <a href="http://www.eclipse.org/community/webinars2006.php">Using the Eclipse Ajax Toolkit Framework (ATF)</a>.</p>
+ <p>Eclipse ATF provides exemplary tools for creating and debugging Ajax applications. These tools include enhanced JavaScript editing features such as edit-time syntax checking, an embedded DOM browser, CSS Tools, JavaScript debugger, a JavaScript console, and an embedded Mozilla web browser. This webinar will demonstrate how to use ATF to create, debug, and deploy an Ajax application on both Apache and J2EE servers.</p>
+ <p>Register by emailing <a href="mailto:webinar-atf@eclipse.org">webinar-atf@eclipse.org</a></p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=Qh1EpBSt"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Qh1EpBSt" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=SHKUMbcJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=SHKUMbcJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=xZxME2vY"><img src="http://feeds.feedburner.com/~f/ajaxian?i=xZxME2vY" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ZLlrYLtO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ZLlrYLtO" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/using-the-eclipse-ajax-toolkit-framework-atf-webinar/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Another trick to allow Array subclasses</title>
+ <link>http://ajaxian.com/archives/another-trick-to-allow-array-subclasses</link>
+ <comments>http://ajaxian.com/archives/another-trick-to-allow-array-subclasses#comments</comments>
+ <pubDate>Fri, 24 Nov 2006 15:59:15 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Tip</category>
+ <guid>http://ajaxian.com/archives/another-trick-to-allow-array-subclasses</guid>
+ <description><![CDATA[ Dean Edwards talked about his hack that got us the ability to subclass the Array object in JavaScript.
+ Hedger Wang has a new hack that uses window.createPopup instead of an iframe to for IE to fix some issues.
+ If you take a view source to see what is in there, you get the gem:
+
+
+
+;&#40;function&#40;&#41;&#123;
+&#160; &#160; &#160; &#160; [...]]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://dean.edwards.name/weblog/2006/11/hooray/">Dean Edwards</a> talked about his hack that got us the ability to subclass the Array object in JavaScript.</p>
+ <p><a href="http://www.hedgerwow.com/360/dhtml/js-array2.html">Hedger Wang has a new hack</a> that uses <a href="http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/createpopup.asp">window.createPopup</a> instead of an iframe to for IE to fix some issues.</p>
+ <p>If you take a view source to see what is in there, you get the gem:</p>
+ <div class="syntax_hilite">
+<div id="javascript-12">
+ <div class="javascript">
+;<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; <br />
+&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span>!window.<span style="color: #006600;">createPopup</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #000066; font-weight: bold;">return</span><span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; <br />
+&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> fs = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; <br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066FF;">/==/</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> Array2 = parent.<span style="color: #006600;">Array2</span> ;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> p1 = Array.<span style="color: #006600;">prototype</span> ;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> p2 = Array2.<span style="color: #006600;">prototype</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">for</span><span style="color:#006600; font-weight:bold;">&#40;</span>i <span style="color: #000066; font-weight: bold;">in</span> p2 <span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; p1<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span> = p2<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parent.<span style="color: #006600;">Array2</span> = Array;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parent.<span style="color: #006600;">document</span>.<span style="color: #006600;">title</span> = <span style="color: #3366CC;">'Array2 is ready'</span>;<span style="color: #009900; font-style: italic;">/*debug msg*/</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066FF;">/==/</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; <br />
+&nbsp; &nbsp; &nbsp; &nbsp; document.<span style="color: #006600;">title</span> = <span style="color: #3366CC;">'Prepare Array2'</span>;<span style="color: #009900; font-style: italic;">/*debug msg*/</span></p>
+ <p>&nbsp; &nbsp; &nbsp; &nbsp; fs = <span style="color:#006600; font-weight:bold;">&#40;</span>fs + <span style="color: #3366CC;">''</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'/==/'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; window.<span style="color: #006600;">createPopup</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">document</span>.<span style="color: #006600;">body</span>.<span style="color: #006600;">innerHTML</span> = <span style="color: #3366CC;">'&lt;img src=&quot;null&quot; onerror=&quot;'</span> +&nbsp; fs + <span style="color: #3366CC;">'&quot; /&gt;'</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; <br />
+<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</p>
+ <p><span style="color: #003366; font-weight: bold;">var</span> Array2 = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; Array2.<span style="color: #006600;">prototype</span> = <span style="color: #003366; font-weight: bold;">new</span> Array;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; Array2.<span style="color: #006600;">prototype</span>.<span style="color: #006600;">bar</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">alert</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"this.bar() --&gt; This.Length="</span> + <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">length</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
+&nbsp;</div>
+ </div>
+</div>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=SCY03YAX"><img src="http://feeds.feedburner.com/~f/ajaxian?i=SCY03YAX" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=sBDwsM9P"><img src="http://feeds.feedburner.com/~f/ajaxian?i=sBDwsM9P" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=dlKtpJWr"><img src="http://feeds.feedburner.com/~f/ajaxian?i=dlKtpJWr" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=HXHKOiMI"><img src="http://feeds.feedburner.com/~f/ajaxian?i=HXHKOiMI" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/another-trick-to-allow-array-subclasses/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Dropboks: File Storage on One Page</title>
+ <link>http://ajaxian.com/archives/dropboks-file-storage-on-one-page</link>
+ <comments>http://ajaxian.com/archives/dropboks-file-storage-on-one-page#comments</comments>
+ <pubDate>Fri, 24 Nov 2006 15:51:41 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Prototype</category>
+ <category>Showcase</category>
+ <guid>http://ajaxian.com/archives/dropboks-file-storage-on-one-page</guid>
+ <description><![CDATA[ Dropboks is a single page application build on Prototype and friends, that allows you to simply upload files for safe keeping.
+ The application is ad free, and survives on user donations. They do a good job at letting you use it pre-signup, and giving good info via tooltips.
+
+
+]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://www.dropboks.com/">Dropboks</a> is a single page application build on Prototype and friends, that allows you to simply upload files for safe keeping.</p>
+ <p>The application is ad free, and survives on user donations. They do a good job at letting you use it pre-signup, and giving good info via tooltips.</p>
+ <p><a href="http://www.dropboks.com/"><img src="http://ajaxian.com/wp-content/images/dropboks.png" alt="Dropboks" border="0" width="491" height="447"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=7bnp189c"><img src="http://feeds.feedburner.com/~f/ajaxian?i=7bnp189c" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=IvtaWoMQ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=IvtaWoMQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=b96Y4b2A"><img src="http://feeds.feedburner.com/~f/ajaxian?i=b96Y4b2A" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ZVgVpc8A"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ZVgVpc8A" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/dropboks-file-storage-on-one-page/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Spelling Cow: JS Spell Checker</title>
+ <link>http://ajaxian.com/archives/spelling-cow-js-spell-checker</link>
+ <comments>http://ajaxian.com/archives/spelling-cow-js-spell-checker#comments</comments>
+ <pubDate>Fri, 24 Nov 2006 15:46:11 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <guid>http://ajaxian.com/archives/spelling-cow-js-spell-checker</guid>
+ <description><![CDATA[ Spelling Cow allows you add a script tag, and spell check is enabled on your website. There are also some variables you can tweak too if advanced features are needed.
+ This means that you can add spell checking to your applications, but as the latest browsers have added inline spell check, is there use to it?
+
+
+]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://www.spellingcow.com/">Spelling Cow</a> allows you add a script tag, and spell check is enabled on your website. There are also some variables you can tweak too if advanced features are needed.</p>
+ <p>This means that you can add spell checking to your applications, but as the latest browsers have added inline spell check, is there use to it?</p>
+ <p><a href="http://www.spellingcow.com/"><img src="http://ajaxian.com/wp-content/images/spellingcow.png" alt="Spelling Cow" border="0" width="438" height="213"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=dBmR5JBn"><img src="http://feeds.feedburner.com/~f/ajaxian?i=dBmR5JBn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=GL67PTiz"><img src="http://feeds.feedburner.com/~f/ajaxian?i=GL67PTiz" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=PM8SsmlP"><img src="http://feeds.feedburner.com/~f/ajaxian?i=PM8SsmlP" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=038oiFok"><img src="http://feeds.feedburner.com/~f/ajaxian?i=038oiFok" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/spelling-cow-js-spell-checker/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>CSS Tab Designer</title>
+ <link>http://ajaxian.com/archives/css-tab-designer</link>
+ <comments>http://ajaxian.com/archives/css-tab-designer#comments</comments>
+ <pubDate>Fri, 24 Nov 2006 15:40:05 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>CSS</category>
+ <guid>http://ajaxian.com/archives/css-tab-designer</guid>
+ <description><![CDATA[ Now we are getting niche. A tool that lets you design CSS tabs:
+ With the CSS Tab Designer, you can:
+
+ Quickly design your list visually.
+ Choose from a variety of styles/colors (60+ different designs/colors supported).
+ Generate strict xhtml compliant code.
+
+
+
+]]></description>
+ <content:encoded><![CDATA[ <p>Now we are getting niche. A tool that lets you <a href="http://www.highdots.com/css-tab-designer/">design CSS tabs</a>:</p>
+ <p>With the CSS Tab Designer, you can: </p>
+ <ul>
+ <li>Quickly design your list visually.</li>
+ <li>Choose from a variety of styles/colors (60+ different designs/colors supported).</li>
+ <li>Generate strict xhtml compliant code.</li>
+ </ul>
+ <p><a href="http://www.highdots.com/css-tab-designer/"><img src="http://www.highdots.com/static/css-list/images/vertical-tabs.png" border="0" /></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=J8dJMlWf"><img src="http://feeds.feedburner.com/~f/ajaxian?i=J8dJMlWf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=3ahtUcPZ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=3ahtUcPZ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=rLuj7mAO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=rLuj7mAO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=S5YYTws3"><img src="http://feeds.feedburner.com/~f/ajaxian?i=S5YYTws3" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/css-tab-designer/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Open-jACOB Draw2D</title>
+ <link>http://ajaxian.com/archives/open-jacob-draw2d</link>
+ <comments>http://ajaxian.com/archives/open-jacob-draw2d#comments</comments>
+ <pubDate>Thu, 23 Nov 2006 16:44:35 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Library</category>
+ <category>Showcase</category>
+ <guid>http://ajaxian.com/archives/open-jacob-draw2d</guid>
+ <description><![CDATA[ Open-jACOB Draw2D is a JavaScript library that allows you to create drawings and diagrams.
+ The User interface allows interactive drawing by using your standard browser.
+No additional software; no third party plug ins. Just run it and use it.
+ Open-jACOB Draw2D is the graph component of the Open-jACOB online
+Workflow editor. The purpose of this experiment is to see [...]]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://www.openjacob.org/draw2d.html">Open-jACOB Draw2D</a> is a JavaScript library that allows you to create drawings and diagrams.</p>
+ <p>The User interface allows interactive drawing by using your standard browser.<br />
+No additional software; no third party plug ins. Just run it and use it.</p>
+ <p>Open-jACOB Draw2D is the graph component of the Open-jACOB online<br />
+Workflow editor. The purpose of this experiment is to see if a Visio-type workflow<br />
+editor tool could be developed in a web browser - It is possible.</p>
+ <p>Check out an <a href="http://www.openjacob.org/draw2d/simple_interactive/index.html">interactive demo</a>.</p>
+ <p><a href="http://www.openjacob.org/draw2d.html"><img src="http://www.openjacob.org/images/draw2d/screen1.png" border="0" width="414" height="215" /></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=Yd5t6AMQ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Yd5t6AMQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=2P9Evaik"><img src="http://feeds.feedburner.com/~f/ajaxian?i=2P9Evaik" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=GexsRwE8"><img src="http://feeds.feedburner.com/~f/ajaxian?i=GexsRwE8" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=IySCRpjz"><img src="http://feeds.feedburner.com/~f/ajaxian?i=IySCRpjz" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/open-jacob-draw2d/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Google Pages Adds Nice Image Editing</title>
+ <link>http://ajaxian.com/archives/google-pages-adds-nice-image-editing</link>
+ <comments>http://ajaxian.com/archives/google-pages-adds-nice-image-editing#comments</comments>
+ <pubDate>Thu, 23 Nov 2006 16:15:04 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Showcase</category>
+ <category>Google</category>
+ <category>UI</category>
+ <guid>http://ajaxian.com/archives/google-pages-adds-nice-image-editing</guid>
+ <description><![CDATA[ When I heard about JotSpot heading to the Googleplex I was excited to know that Abe Fettig (Jot) would be teaming up with the brains at Google Pages, and I can't wait to see what happens in the world of WYSIWYG editing tools.
+ Google Pages just released a few features, and one of them is an [...]]]></description>
+ <content:encoded><![CDATA[ <p>When I heard about JotSpot heading to the Googleplex I was excited to know that Abe Fettig (Jot) would be teaming up with the brains at Google Pages, and I can't wait to see what happens in the world of WYSIWYG editing tools.</p>
+ <p><a href="http://pages.google.com/">Google Pages</a> just released a few features, and one of them is an improved process for working with images.</p>
+ <p>Firstly, the way you get photos up is simple and clean, but when when you have an image, you can click on it and you are shown a bunch of tools that allow you to manipulate the image inline, right there on the page.</p>
+ <p><a href="http://pages.google.com/"><img src="http://ajaxian.com/wp-content/images/googlepagesimageedit.png" alt="Google Pages Image Editing" border="0" width="428" height="418"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=ixQAR1Dv"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ixQAR1Dv" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=i8aOiI8S"><img src="http://feeds.feedburner.com/~f/ajaxian?i=i8aOiI8S" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=P5vv2xOQ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=P5vv2xOQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=L0n3Kku6"><img src="http://feeds.feedburner.com/~f/ajaxian?i=L0n3Kku6" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/google-pages-adds-nice-image-editing/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>qooxdoo 0.6.2 Released</title>
+ <link>http://ajaxian.com/archives/qooxdoo-062-released</link>
+ <comments>http://ajaxian.com/archives/qooxdoo-062-released#comments</comments>
+ <pubDate>Thu, 23 Nov 2006 15:39:07 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Library</category>
+ <guid>http://ajaxian.com/archives/qooxdoo-062-released</guid>
+ <description><![CDATA[ qooxdoo has a new release that adds support for Webkit.
+
+As mentioned above and already announced in our developer blog, qooxdoo now includes support for WebKit. We expect to fully support the next major version Safari 3.0 which will be based on the current development of WebKit. There is only limited support for Safari in its [...]]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://news.qooxdoo.org/qooxdoo-062-released">qooxdoo has a new release that adds support for Webkit</a>.</p>
+ <blockquote><p>
+As mentioned above and already announced in our developer blog, qooxdoo now includes support for WebKit. We expect to fully support the next major version Safari 3.0 which will be based on the current development of WebKit. There is only limited support for Safari in its current version 2.0.4, though. Reason is, that Safari 2.0 still has many bugs that can hardly be worked around. Luckily, many of those bugs are already fixed in the nightly builds of WebKit. Besides the various bugs, Safari 2.0's JavaScript engine and its execution speed is not competitive with respect to the latest versions of the other major browsers (Firefox 2.0, IE7, Opera 9). Good news is, that the current builds of WebKit are tremendeously faster than Safari 2.0, approximately by a factor of 7-8 for a typical qooxdoo demo.
+</p></blockquote>
+ <p>Check out the <a href="http://qooxdoo.org/about/release_notes">release notes</a> for full details on changes in this release.</p>
+ <p>Some of them are:</p>
+ <ul>
+ <li>Made qooxdoo completely XHTML compatible. Replaced all uppercase tag names with their lowercase variant. </li>
+ <li>Improved NativeWindow to support the querying of the load state. Added events for “load” and “close”.</li>
+ <li>Modified XmlHttpRequest and related APIs to <a href="http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx">respect the latest suggestions from Microsoft.</a></li>
+ <li>Added IframeManager to manage visible iframes in order to protect the application events of the “surrounding” document from getting interrupted while switching document context (particularly drag &#038; drop over embedded iframes)</li>
+ <li>Added Resizer widget to allow of customization regarding the dimensions of any widget by the user.</li>
+ </ul>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=tfn0qIAh"><img src="http://feeds.feedburner.com/~f/ajaxian?i=tfn0qIAh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=QJRQS3cR"><img src="http://feeds.feedburner.com/~f/ajaxian?i=QJRQS3cR" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=HSSmg2P1"><img src="http://feeds.feedburner.com/~f/ajaxian?i=HSSmg2P1" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=uSZsJs68"><img src="http://feeds.feedburner.com/~f/ajaxian?i=uSZsJs68" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/qooxdoo-062-released/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Lollygag: Latest non-Atlas .NET Framework</title>
+ <link>http://ajaxian.com/archives/lollygag-latest-non-atlas-net-framework</link>
+ <comments>http://ajaxian.com/archives/lollygag-latest-non-atlas-net-framework#comments</comments>
+ <pubDate>Thu, 23 Nov 2006 14:00:50 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Library</category>
+ <category>Toolkit</category>
+ <category>.NET</category>
+ <guid>http://ajaxian.com/archives/lollygag-latest-non-atlas-net-framework</guid>
+ <description><![CDATA[ The Lollygag framework is a new Ajax framework for .NET.
+ As Steve the author put it:
+
+We attended the first Ajax Experience conference in San Francisco and we got super excited about the potential for building Ajax applications. Since we have a Microsoft .NET background, we planned to start building Ajax applications using Microsoft’s Atlas framework. However, [...]]]></description>
+ <content:encoded><![CDATA[ <p>The <a href="http://lollygagframework.com/">Lollygag framework</a> is a new Ajax framework for .NET.</p>
+ <p>As Steve the author put it:</p>
+ <blockquote><p>
+We attended the first Ajax Experience conference in San Francisco and we got super excited about the potential for building Ajax applications. Since we have a Microsoft .NET background, we planned to start building Ajax applications using Microsoft’s Atlas framework. However, we quickly encountered several serious issues with Atlas. Doing simple things in Atlas, such as database access and form validation, turned out to be really difficult. We were also disappointed to discover that Microsoft has no plans to support its client-side Atlas framework in the immediate future.</p>
+ <p>We built the Lollygag framework in order to build true Ajax applications in the .NET environment. We wanted to build single page Web applications that never perform postbacks. All updates are performed through Ajax calls to the web server.
+</p></blockquote>
+ <p><b>Features</b></p>
+ <ul>
+ <li>Powerful Widget Framework: The Lollygag framework includes a rich set of client-side widgets that you can use to display database data, perform form validation, and create rich animations. You declare widgets in a page in exactly the same way as you declare HTML tags.</li>
+ <li>Autocomplete Support: When you declare Lollygag widgets in a page, you get full autocomplete support while you type. To get autocomplete support, you must use an XML aware development environment such as Microsoft Visual Studio .NET.</li>
+ <li>Declarative Database Access: Accessing database data with the Lollygag framework is easy. You can bind client-side widgets directly to data exposed by a database or you can bind widgets to data exposed by a business object.</li>
+ <li>Secure Form Validation: When taking advantage of the Lollygag framework, you specify how a form field is validated only once. The validation is automatically applied on both the server and the client. Unlike other frameworks that only provide validation on the client, the Lollygag framework prevents malicious users from bypassing client-side validation and submitting data directly to the server.</li>
+ <li>Rich Animation Framework: Lollygag includes an entire animation framework. You can take advantage of animations to create different effects such as fades and wipes.</li>
+ <li>Cross-Browser Support: The full Lollygag framework works on the latest versions of Internet Explorer, Firefox, Safari, and Opera.</li>
+ <li>Automatic JavaScript Compression: The Lollygag framework compresses all JavaScript sent to the browser automatically. Any custom JavaScript code that you write as a developer is also compressed automatically.</li>
+ <li>Powered by .NET: The server-side portion of Lollygag is built on the Microsoft .NET 2.0 Framework. You can build server-side business objects using standard .NET languages such as C# and VB.NET. Lollygag client-side widgets can consume data exposed through server-side objects.</li>
+ </ul>
+ <p><b>Hello World</b></p>
+ <div class="syntax_hilite">
+<div id="xml-14">
+ <div class="xml">
+<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;</span>?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">"1.0"</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">"utf-8"</span> ?<span style="font-weight: bold; color: black;">&gt;</span></span><br />
+<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;</span>?xml-stylesheet <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/xsl"</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"/lollygagSite/lollygagframework/0_1/lollygag.xsl"</span>?<span style="font-weight: bold; color: black;">&gt;</span></span><br />
+<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;lolly</span> :application <span style="color: #000066;">title</span>=<span style="color: #ff0000;">"Hello World"</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">"http://www.w3.org/1999/xhtml"</span> xmlns:<span style="color: #000066;">lolly</span>=<span style="color: #ff0000;">"http://lollygagframework.com/core"</span><span style="font-weight: bold; color: black;">&gt;</span></span><br />
+&nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;lolly</span> :button <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"btnSumit"</span> <span style="color: #000066;">label</span>=<span style="color: #ff0000;">"Click Here!"</span> <span style="color: #000066;">onClick</span>=<span style="color: #ff0000;">"alert('Hello!')"</span> <span style="font-weight: bold; color: black;">/&gt;</span></span><br />
+<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/lolly<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
+&nbsp;</div>
+ </div>
+</div>
+ <p><b>Resources</b></p>
+ <p>How does it compare to Atlas? <a href="http://lollygagframework.com/Articles/LollygagVersusAtlas/Default.htm">Read their thoughts on the matter</a>.</p>
+ <p><a href="http://lollygagframework.com/Demos/default.htm">Demos</a></p>
+ <p><a href="http://lollygagframework.com/SampleApplications/Forums/forums.xml">Sample Application</a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=2QC8qukU"><img src="http://feeds.feedburner.com/~f/ajaxian?i=2QC8qukU" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=lsoztS0a"><img src="http://feeds.feedburner.com/~f/ajaxian?i=lsoztS0a" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=WuuxjGjM"><img src="http://feeds.feedburner.com/~f/ajaxian?i=WuuxjGjM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=M7Gaypk4"><img src="http://feeds.feedburner.com/~f/ajaxian?i=M7Gaypk4" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/lollygag-latest-non-atlas-net-framework/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Google Book Search gets an Ajax upgrade</title>
+ <link>http://ajaxian.com/archives/google-book-search-gets-an-ajax-upgrade</link>
+ <comments>http://ajaxian.com/archives/google-book-search-gets-an-ajax-upgrade#comments</comments>
+ <pubDate>Thu, 23 Nov 2006 00:03:44 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Showcase</category>
+ <category>Google</category>
+ <guid>http://ajaxian.com/archives/google-book-search-gets-an-ajax-upgrade</guid>
+ <description><![CDATA[ Nathan Naze and his team at Google have upgraded Google Books:
+
+
+Zoom in on text and images. Here's a cool full-page sketch of a ship from an 1898 book on steam navigation. Looking for something less dated? Perhaps this colorful page of a room from a book on interior design. Want a better look? You can [...]]]></description>
+ <content:encoded><![CDATA[ <p>Nathan Naze and his team at Google have upgraded <a href="http://books.google.com/">Google Books</a>:</p>
+ <blockquote>
+ <ul>
+<li><strong>Zoom in on text and images.</strong> Here's <a href="http://books.google.com/books?vid=HARVARD:32044020180790&#038;id=7X-I9105PAkC&#038;pg=PA109#PRA2-PA109,M1">a cool full-page sketch of a ship</a> from an 1898 book on <a href="http://books.google.com/books?vid=HARVARD:32044020180790&amp;id=7X-I9105PAkC">steam navigation</a>. Looking for something less dated? Perhaps this <a href="http://books.google.com/books?vid=ISBN1564969584&#038;id=F68COamQRH0C&#038;pg=PA25&#038;lpg=PA25&#038;sig=8k-utjCZ5wwUmWMPlMLIaDjJ4Ig#PPA25,M1">colorful page of a room</a> from <a href="http://books.google.com/books?vid=ISBN1564969584&#038;id=F68COamQRH0C">a book on interior design</a>. Want a better look? You can now zoom in and out &#8212; just click on the <img src="http://photos1.blogger.com/blogger/2855/3883/1600/plus.gif" style="padding: 0px; border: 0px" alt="zoom in" border="0" height="14" width="14"/> and <img alt="zoom out" src="http://photos1.blogger.com/blogger/2855/3883/1600/minus.gif" style="padding: 0px; border: 0px" border="0" height="14" width="14"/> buttons. Play with it until you find a size you like.</li>
+
+<li><strong>One book, one web page.</strong> No more reloads! In one-page mode (just click the <img alt="one page" src="http://photos1.blogger.com/blogger/2855/3883/1600/onepage.gif" style="padding: 0px; border: 0px" border="0" height="14" width="9"/> button), pages appear one below the other, like a scroll of paper. For <a href="http://books.google.com/googlebooks/screenshots.html#fullview">full-view</a> books, there's also a two-page mode (<img alt="two page button" src="http://photos1.blogger.com/blogger/2855/3883/1600/twopage2.gif" style="padding: 0px; border: 0px" border="0" height="14" width="19"/>) in which pages appear side by side, just like in a physical book (perfect for <a href="http://books.google.com/books?vid=ISBN9064503125&#038;id=NkST-eA7uicC&#038;pg=RA12-PA110&#038;lpg=RA12-PA110&#038;sig=oP4PLDRpPGpbo6jBg1qpzOoksjc#PPA51,M2">two-page images</a>). In both modes, you'll be able to use <img src="http://books.google.com/googlebooks/page_nav_previous.gif" style="padding: 0px; border: 0px" alt="previous page button" border="0" height="19" width="19"/> and <img src="http://books.google.com/googlebooks/page_nav_next.gif" style="padding: 0px; border: 0px" alt="next page button" border="0" height="19" width="19"/> to turn pages.</li>
+
+<li><strong>Scroll, scroll, scroll your book&#8230;</strong> using the scrollbar or your mouse wheel, or by dragging (in most browsers, you'll see a <img src="http://photos1.blogger.com/blogger/2855/3883/1600/hand2.gif" style="padding: 0px; border: 0px" border="0" height="16" width="17" alt="hand"/>). You can also use the keyboard (try the spacebar, page up, page down, and the arrow keys). Or you can click on a link in the table of contents or your search results to jump right to that page (like <a href="http://books.google.com/books?vid=OCLC01581436&amp;id=EM6nHWWQ3TIC&amp;pg=PP10">this photo</a> from the 1906 book <a href="http://books.google.com/books?vid=OCLC01581436&amp;id=EM6nHWWQ3TIC"><em>Geronimo's Story of His Life</em></a>).</li>
+
+<li><strong>This page was made for reading.</strong> We've tried to tidy up the clutter to leave as much room as possible for what's important &#8212; the book. We've put all the information about the book in a scrollable side menu. Still not enough room? You can put the screen in fullscreen mode with <img src="http://books.google.com/googlebooks/images/fullscreen.gif" style="padding: 0px; border: 0px" alt="fullscreen button" border="0" height="15" width="17"/>, so you can use the whole window for browsing. Try it with a nice illustrated book of <a href="http://books.google.com/books?vid=NYPL:33433068198005&#038;id=MPDMpD2w_2gC&#038;pg=PA65#PPP18,M2">Celtic fairy tales</a> or, for some lighter reading, <a href="http://books.google.com/books?vid=ISBN3540212663&amp;id=5FZBS0JH9lkC&amp;pg=PP1&amp;lpg=PP1&amp;ots=uNqKSoMhkt&amp;&amp;sig=MjS0J55JV4LYrKN7z_RvUf-sEx4#PPA49,M1">electromagnetic wave theory</a>.</li>
+ </ul>
+ </blockquote>
+ <p>There are keystrokes here too, such as hitting space to scroll down (moving down smoothly). It is nice to see more and more unification to Google apps these days. When you use Reader it feels like Mail, etc.</p>
+ <p>One question is, where are the GWT apps? :)</p>
+ <p><a href="http://books.google.com/"><img src="http://ajaxian.com/wp-content/images/googlebooksearch.png" alt="Google Book Search" border="0" width="580" height="391"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=kpBF2m8t"><img src="http://feeds.feedburner.com/~f/ajaxian?i=kpBF2m8t" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=KWMuT6ZN"><img src="http://feeds.feedburner.com/~f/ajaxian?i=KWMuT6ZN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=5HzTTFHS"><img src="http://feeds.feedburner.com/~f/ajaxian?i=5HzTTFHS" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=eLs8y2a1"><img src="http://feeds.feedburner.com/~f/ajaxian?i=eLs8y2a1" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/google-book-search-gets-an-ajax-upgrade/feed/</wfw:commentRSS>
+ </item>
+ </channel>
+</rss>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/febo-feeds.opml.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/febo-feeds.opml.xml
new file mode 100644
index 0000000000..633e184282
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/febo-feeds.opml.xml
@@ -0,0 +1,29 @@
+<opml version="1.0">
+ <head>
+ <title>Thunderbird OPML-Export</title>
+ <dateCreated>Fri, 08 Dec 2006 12:00:29 GMT</dateCreated>
+ </head>
+ <body>
+ <outline title="AJAX Matters Blog" text="AJAX Matters Blog" type="rss" version="RSS" xmlUrl="http://www.ajaxmatters.com/blog/feed/atom/" htmlUrl="http://www.ajaxmatters.com/blog"/>
+ <outline title="Ajaxian" text="Ajaxian" type="rss" version="RSS" xmlUrl="http://feeds.feedburner.com/ajaxian" htmlUrl="http://ajaxian.com"/>
+ <outline title="Coding In Paradise" text="Coding In Paradise" type="rss" version="RSS" xmlUrl="http://www.codinginparadise.org/weblog/atom.xml" htmlUrl="http://codinginparadise.org/weblog/"/>
+ <outline title="dojo.foo" text="dojo.foo" type="rss" version="RSS" xmlUrl="http://blog.dojotoolkit.org/feed" htmlUrl="http://blog.dojotoolkit.org"/>
+ <outline title="Firebug" text="Firebug" type="rss" version="RSS" xmlUrl="http://www.getfirebug.com/blog/?feed=rss2" htmlUrl="http://www.getfirebug.com/blog"/>
+ <outline title="from __future__ import *" text="from __future__ import *" type="rss" version="RSS" xmlUrl="http://bob.pythonmac.org/feed/atom/" htmlUrl="http://bob.pythonmac.org"/>
+ <outline title="Google Web Toolkit Blog" text="Google Web Toolkit Blog" type="rss" version="RSS" xmlUrl="http://googlewebtoolkit.blogspot.com/atom.xml" htmlUrl="http://googlewebtoolkit.blogspot.com"/>
+ <outline title="Jack Slocum's Blog" text="Jack Slocum's Blog" type="rss" version="RSS" xmlUrl="http://www.jackslocum.com/blog/feed/" htmlUrl="http://www.jackslocum.com/blog"/>
+ <outline title="JSR 168, WSRP, Portlets &amp; Enterprise Portal" text="JSR 168, WSRP, Portlets &amp; Enterprise Portal" type="rss" version="RSS" xmlUrl="http://portlets.blogspot.com/atom.xml" htmlUrl="http://portlets.blogspot.com"/>
+ <outline title="Monologue" text="Monologue" type="rss" version="RSS" xmlUrl="http://www.go-mono.com/monologue/index.rss" htmlUrl="http://www.go-mono.com/monologue/"/>
+ <outline title="OSNews" text="OSNews" type="rss" version="RSS" xmlUrl="http://osnews.com/files/recent.rdf" htmlUrl="http://www.osnews.com/"/>
+ <outline title="qooxdoo" text="qooxdoo" type="rss" version="RSS" xmlUrl="http://feeds.feedburner.com/qooxdoo/blog/content" htmlUrl="http://blog.qooxdoo.org"/>
+ <outline title="qooxdoo" text="qooxdoo" type="rss" version="RSS" xmlUrl="http://feeds.feedburner.com/qooxdoo/news/content" htmlUrl="http://news.qooxdoo.org"/>
+ <outline title="subbu.org" text="subbu.org" type="rss" version="RSS" xmlUrl="http://feeds.feedburner.com/SubbuDotOrg" htmlUrl="http://www.subbu.org/"/>
+ <outline title="Surfin' Safari" text="Surfin' Safari" type="rss" version="RSS" xmlUrl="http://webkit.org/blog/?feed=rss2" htmlUrl="http://webkit.org/blog"/>
+ <outline title="Thomas Much's Weblog" text="Thomas Much's Weblog" type="rss" version="RSS" xmlUrl="http://www.snailshell.de/blog/rss.xml" htmlUrl="http://www.snailshell.de/blog/index.html"/>
+ <outline title="UXmatters" text="UXmatters" type="rss" version="RSS" xmlUrl="http://www.uxmatters.com/atom.xml" htmlUrl="http://dev.uxmatters.com/"/>
+ <outline title="WebKit" text="WebKit" type="rss" version="RSS" xmlUrl="http://cia.navi.cx/stats/project/WebKit/.rss" htmlUrl="http://webkit.org"/>
+ <outline title="webmagics" text="webmagics" type="rss" version="RSS" xmlUrl="http://feeds.feedburner.com/webmagics" htmlUrl="http://journal.webmagics.net/"/>
+ <outline title="Yahoo! User Interface Blog" text="Yahoo! User Interface Blog" type="rss" version="RSS" xmlUrl="http://feeds.yuiblog.com/YahooUserInterfaceBlog" htmlUrl="http://yuiblog.com/blog"/>
+ <outline title="Zimbra - Blog" text="Zimbra - Blog" type="rss" version="RSS" xmlUrl="http://www.zimbra.com/blog/atom.xml" htmlUrl="http://www.zimbra.com/blog/"/>
+ </body>
+</opml> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-blog.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-blog.xml
new file mode 100644
index 0000000000..241d450954
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-blog.xml
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/2.0.5" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
+
+<channel>
+ <title>qooxdoo Blog</title>
+ <link>http://blog.qooxdoo.org</link>
+ <description>The blog of the qooxdoo developers</description>
+ <pubDate>Sun, 26 Nov 2006 15:53:14 +0000</pubDate>
+ <generator>http://wordpress.org/?v=2.0.5</generator>
+ <language>en</language>
+ <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/qooxdoo/blog/content" type="application/rss+xml" /><feedburner:emailServiceId>384287</feedburner:emailServiceId><item>
+ <title>Safari support for qooxdoo coming</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/48836959/safari-support-for-qooxdoo-coming</link>
+ <comments>http://blog.qooxdoo.org/safari-support-for-qooxdoo-coming#comments</comments>
+ <pubDate>Mon, 13 Nov 2006 14:46:19 +0000</pubDate>
+ <dc:creator>Fabian Jakobs</dc:creator>
+
+ <category>Announcements</category>
+
+ <category>Safari</category>
+
+ <category>Technical</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/safari-support-for-qooxdoo-coming</guid>
+ <description><![CDATA[Safari support for qooxdoo is coming along nicely. qooxdoo support for the nightly build of WebKit is near to complete. Most demos and examples are working, including the API viewer . The screenshot shows the &#8220;At a Glance&#8221; example running in WebKit. Safari 2.0.4 shipped with the current OS X 10.4 is usable but still [...]]]></description>
+ <content:encoded><![CDATA[<p>Safari support for qooxdoo is coming along nicely. qooxdoo support for the nightly build of <a href="http://nightly.webkit.org" title="WebKit">WebKit</a> is near to complete. Most demos and examples are working, including the <a href="http://api.qooxdoo.org/">API viewer</a> . The screenshot shows the &ldquo;<a href="http://demo.qooxdoo.org/html/at-a-glance/index.html">At a Glance</a>&rdquo; example running in WebKit. Safari 2.0.4 shipped with the current OS X 10.4 is usable but still has some rendering issues.</p>
+<div><a href="http://blog.qooxdoo.org/wp-content/uploads/2006/11/webkit-at_a_glance.jpg" title="WebKit - &quot;At a Glance&quot; example"><img src="http://blog.qooxdoo.org/wp-content/uploads/2006/11/webkit-at_a_glance.thumbnail.jpg" alt="WebKit - &quot;At a Glance&quot; example" /></a> <a href="http://blog.qooxdoo.org/wp-content/uploads/2006/11/webkit-api_viewer.jpg" title="WebKit - API viewer"><img src="http://blog.qooxdoo.org/wp-content/uploads/2006/11/webkit-api_viewer.thumbnail.jpg" alt="WebKit - API viewer" /></a></div>
+<p>For the next qooxdoo release we plan to fully support WebKit, which hopefully builds the basis for the next major release of Safari shipped with the upcoming OS X 10.5. We decided to target WebKit because of its improved standard support and its dramatically faster JavaScript engine. Some qooxdoo examples are up to seven times faster using WebKit compared to Safari 2. Even if we would fully support Safari 2, it will never be a good platform for big JavaScript applications.</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=rgDIT7iC"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=rgDIT7iC" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=jZaVEgHu"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=jZaVEgHu" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=Kni66m1x"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=Kni66m1x" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=OdCjYPt3"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=OdCjYPt3" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=zlqmlozO"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=zlqmlozO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=3F9MjAuf"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=3F9MjAuf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=LPVxsJLI"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=LPVxsJLI" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=wCgbZ6gf"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=wCgbZ6gf" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/safari-support-for-qooxdoo-coming/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/safari-support-for-qooxdoo-coming</feedburner:origLink></item>
+ <item>
+ <title>Tamarin Follow-ups</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/46350978/tamarin-follow-ups</link>
+ <comments>http://blog.qooxdoo.org/tamarin-follow-ups#comments</comments>
+ <pubDate>Tue, 07 Nov 2006 21:53:17 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Firefox</category>
+
+ <category>Performance</category>
+
+ <category>Adobe</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/tamarin-follow-ups</guid>
+ <description><![CDATA[
+I have just found some more interesting stuff regarding our Tamarin post today:&#160;
+
+Inside Tamarin - Adobe&#8217;s Open Source Flash VM
+JD on EP
+Adobe press release
+Mozilla press release
+Digg frontpage
+
+
+
+]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>I have just found some more interesting stuff regarding our Tamarin post today:&nbsp;</p>
+<ul>
+<li><a href="http://www.satine.org/archives/2006/11/06/inside-tamarin-adobes-open-source-flash-vm/">Inside Tamarin - Adobe&rsquo;s Open Source Flash VM</a></li>
+<li><a href="http://weblogs.macromedia.com/jd/archives/2006/11/tamarin_project.cfm">JD on EP</a> </li>
+<li><a href="http://www.mozilla.com/en-US/press/mozilla-2006-11-07.html">Adobe press release</a></li>
+<li><a href="http://www.mozilla.com/en-US/press/mozilla-2006-11-07.html">Mozilla press release</a> </li>
+<li><a href="http://digg.com/tech_news/Adobe_and_Mozilla_Foundation_to_Open_Source_Flash_Player_Scripting_Engine">Digg frontpage</a></li>
+</ul>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=q9EAMSac"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=q9EAMSac" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=wzDEJbB5"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=wzDEJbB5" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=yiNGdYRa"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=yiNGdYRa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=OhkFuOKM"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=OhkFuOKM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=B6t2zevO"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=B6t2zevO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=Q0RQVLHL"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=Q0RQVLHL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=FPcP7kjS"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=FPcP7kjS" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=ysJCQQQ4"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=ysJCQQQ4" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/tamarin-follow-ups/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/tamarin-follow-ups</feedburner:origLink></item>
+ <item>
+ <title>Project Tamarin to boost JavaScript</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/46219737/project-tamarin-to-boost-javascript</link>
+ <comments>http://blog.qooxdoo.org/project-tamarin-to-boost-javascript#comments</comments>
+ <pubDate>Tue, 07 Nov 2006 12:55:22 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Firefox</category>
+
+ <category>Performance</category>
+
+ <category>Adobe</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/project-tamarin-to-boost-javascript</guid>
+ <description><![CDATA[
+Good news, everyone!&#160;
+Recently we have been puzzled by some statements of Brendan Eich, the creator of the JavaScript programming language.
+In Brendan&#39;s blog he wrote &#34;For Mozilla 2, we will have a JIT-oriented JavaScript VM (details soon) that supports the forthcoming ECMAScript Edition 4 (&#34;JS2&#34;) language&#34; (October 13, 2006). [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>Good news, everyone!&nbsp;</p>
+<p>Recently we have been puzzled by some statements of Brendan Eich, the creator of the JavaScript programming language.</p>
+<p>In Brendan&#39;s blog he wrote &quot;For Mozilla 2, we will have a JIT-oriented JavaScript VM (details soon) that supports the forthcoming ECMAScript Edition 4 (&quot;JS2&quot;) language&quot; (<a href="http://weblogs.mozillazine.org/roadmap/archives/2006/10/mozilla_2.html">October 13, 2006</a>). Well, could hardly wait for any details. Another statement that made us curious was at The Ajax Experience this fall. In his slides about JavaScript 2.0 he mentioned&nbsp; &quot;Open source optimizing VMs coming soon. Look for an announcement in a few weeks&quot; (<a href="http://ajaxian.com/downloads/presentations/eich-ajax-experience-boston/">October 25, 2006</a>). Interestingly, this mysterious announcement was in a section he called &quot;JavaScript Fun Facts&quot;.</p>
+<p>Well done Brendan, you are our Master of Suspense! Finally, as a revelation today came <a href="http://blog.qooxdoo.org/adobe-improves-javascript-performance">the announcement that is going to boost JavaScript</a>. Congratulations to Adobe for their decision of contributing the ActionScript Virtual Machine (AVM) as open source to the Mozilla project. And a warm open-source welcome to all the developers of the AVM! The code has <a href="http://weblogs.mozillazine.org/roadmap/archives/2006/11/project_tamarin.html">just been committed</a> into the Mozilla repository.</p>
+<p>This is great news for qooxdoo being a client-side JavaScript framework. Performance has always been one of our major concerns, and we think we have pushed the limit for JavaScript based web applications, e.g. for qooxdoo&#39;s powerful browser-independent layout engine. Can&#39;t wait to tweak the last bit of performance out of any new Mozilla browser backed by the new JavaScript VM. This is going to change the future of browser-based applications. Cheers!</p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=USVMighM"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=USVMighM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=w54mM05O"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=w54mM05O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=l0FOLc3Z"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=l0FOLc3Z" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=UjEK9OXh"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=UjEK9OXh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=hSi2ujP0"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=hSi2ujP0" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=huRmnKOf"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=huRmnKOf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=aLB65Efe"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=aLB65Efe" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=RfSxRPZF"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=RfSxRPZF" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/project-tamarin-to-boost-javascript/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/project-tamarin-to-boost-javascript</feedburner:origLink></item>
+ <item>
+ <title>Adobe improves JavaScript performance</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/46178140/adobe-improves-javascript-performance</link>
+ <comments>http://blog.qooxdoo.org/adobe-improves-javascript-performance#comments</comments>
+ <pubDate>Tue, 07 Nov 2006 12:01:29 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Firefox</category>
+
+ <category>Flash</category>
+
+ <category>Adobe</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/adobe-improves-javascript-performance</guid>
+ <description><![CDATA[
+In my opinion there was never a reason why JavaScript should be slower than other typical script languages e.g. Python, Perl, Ruby, &#8230; With the newest committment from Abobe to Mozilla we could reach a new level of performance in web applications.&#160;
+As news.com reports &#34;Adobe will provide the [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>In my opinion there was never a reason why JavaScript should be slower than other typical script languages e.g. Python, Perl, Ruby, &#8230; With the newest committment from Abobe to Mozilla we could reach a new level of performance in web applications.&nbsp;</p>
+<p>As news.com reports &quot;Adobe will provide the same software, called the ActionScript Virtual Machine, which it uses to run script code in the <a href="http://news.com.com/Adobe+updates+Flash+Player%2C+Flex+tool/2100-1012_3-6088705.html?tag=nl" title="Adobe updates Flash Player, Flex tool -- Tuesday, Jun 27, 2006">Adobe Flash Player 9</a>. This virtual machine is expected to be built into future versions of the Firefox browser by the first half of 2008, said <a href="http://www.hecker.org/info/bio?tag=nl">Frank Hecker</a>, the executive director of the <a href="http://www.mozilla.org/foundation/?tag=nl">Mozilla Foundation</a>.&quot; </p>
+<p>Via <a href="http://news.com.com/2100-7344_3-6133052.html">news.com</a></p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=bVlh8s4Z"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=bVlh8s4Z" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=T4rDBMyi"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=T4rDBMyi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=IjP7zAmO"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=IjP7zAmO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=JuQT2l0H"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=JuQT2l0H" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=SDqAETvO"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=SDqAETvO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=HCWVQRJl"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=HCWVQRJl" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=bHmzAB8O"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=bHmzAB8O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=iApj6TU3"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=iApj6TU3" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/adobe-improves-javascript-performance/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/adobe-improves-javascript-performance</feedburner:origLink></item>
+ <item>
+ <title>Keep yourself up-to-date</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/37261107/keep-yourself-up-to-date</link>
+ <comments>http://blog.qooxdoo.org/keep-yourself-up-to-date#comments</comments>
+ <pubDate>Sat, 14 Oct 2006 21:41:08 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Development</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/keep-yourself-up-to-date</guid>
+ <description><![CDATA[ There is a new feed available on our homepage. You can now easily follow the development in our SVN repository. Hope you like this. Especially interesting for users who want to be up-to-date. Also a nice alternative to our qooxdoo-commit mailing list.
+
+]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>There is a <a href="http://feeds.feedburner.com/qooxdoo/svn/commits">new feed</a> available on <a href="http://qooxdoo.org">our homepage</a>. You can now easily follow the development in our SVN repository. Hope you like this. Especially interesting for users who want to be up-to-date. Also a nice alternative to our <a href="http://lists.sourceforge.net/mailman/listinfo/qooxdoo-commit">qooxdoo-commit mailing list</a>. </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=ufmev5Dk"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=ufmev5Dk" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=4EgKz1gp"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=4EgKz1gp" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=SKoJto7H"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=SKoJto7H" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=WTdFl3yy"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=WTdFl3yy" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=ZPm4BqBx"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=ZPm4BqBx" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=7dz9P0xU"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=7dz9P0xU" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=qABtQjRx"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=qABtQjRx" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=3FQ8FBbL"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=3FQ8FBbL" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/keep-yourself-up-to-date/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/keep-yourself-up-to-date</feedburner:origLink></item>
+ <item>
+ <title>Only five days to IE7</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/36678532/5-days-to-ie7</link>
+ <comments>http://blog.qooxdoo.org/5-days-to-ie7#comments</comments>
+ <pubDate>Fri, 13 Oct 2006 08:42:36 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Internet Explorer</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/5-days-to-ie7</guid>
+ <description><![CDATA[ Following a report of Microsoft Higher Education - Mid-Atlantic it seems that IE7 will be released on the 18th this month. In just 5 days. The most changes are only interesting for typical web developers (e.g. CSS fixes) while the latest improvements to the JavaScript engine [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>Following <a href="http://blogs.msdn.com/hied_mid-atlantic/archive/2006/10/10/Internet-Explorer-7-is-coming-this-month-_2E002E002E00_-Are-you-ready_3F00_.aspx">a report</a> of <a href="http://blogs.msdn.com/hied_mid-atlantic/default.aspx">Microsoft Higher Education - Mid-Atlantic</a> it seems that <a href="http://blogs.msdn.com/hied_mid-atlantic/archive/2006/10/10/Internet-Explorer-7-is-coming-this-month-_2E002E002E00_-Are-you-ready_3F00_.aspx">IE7 will be released on the 18th this month</a>. In just 5 days. The most changes are only interesting for typical web developers (e.g. CSS fixes) while the <a href="http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance">latest improvements to the JavaScript engine</a> are also an interesting point for us and other big JavaScript frameworks. I hope we will see a market share of 50 percent after the first six months. </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=6KCHC8Qt"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=6KCHC8Qt" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=znn30SWW"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=znn30SWW" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=iDMgk0h2"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=iDMgk0h2" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=tH88lPZg"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=tH88lPZg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=0u2q8HcY"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=0u2q8HcY" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=C8h6ZyP0"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=C8h6ZyP0" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=p7GgwlgK"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=p7GgwlgK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=8AEwoRbb"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=8AEwoRbb" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/5-days-to-ie7/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/5-days-to-ie7</feedburner:origLink></item>
+ <item>
+ <title>IE7 CSS changes</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/32468983/ie7-css-changes</link>
+ <comments>http://blog.qooxdoo.org/ie7-css-changes#comments</comments>
+ <pubDate>Wed, 04 Oct 2006 20:04:27 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Bookmark</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/ie7-css-changes</guid>
+ <description><![CDATA[ An interesting read for all web developers: Cascading Style Sheet Compatibility in Internet Explorer 7.
+
+]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> An interesting read for all web developers: <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/IETechCol/cols/dnexpie/ie7_css_compat.asp?frame=true">Cascading Style Sheet Compatibility in Internet Explorer 7.</a><br /> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=l0NmonZB"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=l0NmonZB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=R0iSOfdT"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=R0iSOfdT" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=oEqiKUKM"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=oEqiKUKM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=1VRsHJUp"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=1VRsHJUp" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=6TsnDDrP"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=6TsnDDrP" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=3JFLZ0Cf"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=3JFLZ0Cf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=QuSZgCNp"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=QuSZgCNp" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=Y8oWww1z"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=Y8oWww1z" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/ie7-css-changes/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/ie7-css-changes</feedburner:origLink></item>
+ <item>
+ <title>Support for compression of local variables added</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/32241766/support-for-compression-of-local-variables-added</link>
+ <comments>http://blog.qooxdoo.org/support-for-compression-of-local-variables-added#comments</comments>
+ <pubDate>Wed, 04 Oct 2006 11:06:46 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Development</category>
+
+ <category>Technical</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/support-for-compression-of-local-variables-added</guid>
+ <description><![CDATA[
+A few hours ago I&#39;ve committed a change which adds a variable name optimizer into the qooxdoo trunk. This optimizer replaces the names of local variables with shorter ones. The result is a size reduction of the compiled JavaScript file by 10%. This new behavior is enabled per [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>A few hours ago I&#39;ve committed a change which adds a variable name optimizer into the qooxdoo trunk. This optimizer replaces the names of local variables with shorter ones. The result is a size reduction of the compiled JavaScript file by 10%. This new behavior is enabled per default for all the included Makefiles. So after an SVN update you can build your (again) better optimized version of qooxdoo.</p>
+<p>This can also been seen as a next step in bringing support for obfuscation another step forward. I have also updated the <a href="http://demo.qooxdoo.org">online demos</a> and the <a href="http://api.qooxdoo.org">API viewer</a> to use this new feature. I would like to invite you to give me feedback as soon as possible. Maybe you also find some bugs. If so, please report them immediately. Thank you.</p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=tppbJ4bc"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=tppbJ4bc" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=dbe1sxCT"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=dbe1sxCT" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=kuoqNS00"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=kuoqNS00" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=HlJ6f0Ls"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=HlJ6f0Ls" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=xbjmDWoL"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=xbjmDWoL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=V2cWssXw"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=V2cWssXw" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=C10aMNYQ"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=C10aMNYQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=F2ic6JR6"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=F2ic6JR6" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/support-for-compression-of-local-variables-added/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/support-for-compression-of-local-variables-added</feedburner:origLink></item>
+ <item>
+ <title>AJAX framework survey</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/26565493/ajax-framework-poll</link>
+ <comments>http://blog.qooxdoo.org/ajax-framework-poll#comments</comments>
+ <pubDate>Sun, 24 Sep 2006 09:04:41 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Discussion</category>
+
+ <category>Survey</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/ajax-framework-poll</guid>
+ <description><![CDATA[
+The guys at ajaxian.com have reported about a current survey regarding the popularity of common AJAX frameworks. It is quite clear why prototype is the winner. It&#39;s well-known, small and easily embedable into existing pages. However I think it is interesting that Mochikit is less widely used, because [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>The guys at <a href="http://ajaxian.com">ajaxian.com</a> have reported about a current <a href="http://ajaxian.com/archives/ajaxiancom-2006-survey-results">survey regarding the popularity of common AJAX frameworks</a>. It is quite clear why prototype is the winner. It&#39;s well-known, small and easily embedable into existing pages. However I think it is interesting that Mochikit is less widely used, because the targets of these libraries are comparable in my opinion. And Mochikit does not depends on extensions of native objects (especially Object.prototype) which makes it the better choice.</p>
+<p>I should mention that in my opinion the whole survey is quite problematic because of their comparison of different levels of so named &quot;AJAX frameworks&quot;. For a next survey I would suggest to divide the list into these groups:</p>
+<p>AJAX wrappers &amp; DOM utilities:</p>
+<ul>
+<li>Prototype &amp; Scriptaclous &amp; Rico</li>
+<li>Moo.fx</li>
+<li>jQuery </li>
+<li>Yahoo UI</li>
+<li>Mochikit</li>
+<li>XAJAX</li>
+<li>DWR (includes backend code, too) </li>
+</ul>
+<p>Framework &amp; Toolkits:</p>
+<ul>
+<li>Dojo</li>
+<li>Atlas</li>
+<li>GWT</li>
+<li>qooxdoo (seems to be missing <img src='http://blog.qooxdoo.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )&nbsp;</li>
+</ul>
+<p>I&#39;ve grouped together Scriptaclous and Rico because they both depend on Prototype which means they are more or less an extension of this library and not a real separate solution.</p>
+<p>What do you think?&nbsp;</p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=zVG9wfIU"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=zVG9wfIU" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=FyUymhC2"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=FyUymhC2" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=SCV0WhJ4"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=SCV0WhJ4" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=BYHTg0aH"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=BYHTg0aH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=sYMapwTd"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=sYMapwTd" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=r7Dt6YTk"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=r7Dt6YTk" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=fWqhBoBV"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=fWqhBoBV" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=bOeZDScE"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=bOeZDScE" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/ajax-framework-poll/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/ajax-framework-poll</feedburner:origLink></item>
+ <item>
+ <title>Dramatically improved IE7 JavaScript performance</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/21793941/dramatically-improved-ie7-javascript-performance</link>
+ <comments>http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance#comments</comments>
+ <pubDate>Wed, 13 Sep 2006 11:35:53 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Internet Explorer</category>
+
+ <category>Technical</category>
+
+ <category>Performance</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance</guid>
+ <description><![CDATA[
+Really good news. My vocabulary may to be too limited to tell you how great the latest changes in IE7 RC1 are. Microsoft announced that they have &#34;recently made some great fixes to our engine to improve the garbage collection routine and to reduce unbounded memory growth.&#34; and [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>Really good news. My vocabulary may to be too limited to tell you how great the latest changes in <a href="http://www.microsoft.com/windows/ie/default.mspx">IE7 RC1</a> are. <a href="http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx">Microsoft announced</a> that they have &quot;recently made some great fixes to our engine to improve the garbage collection routine and to reduce unbounded memory growth.&quot; and that one &quot;should see noticeable improvements on AJAX sites in the Release Candidate we shipped last week&quot;. Yes indeed, we do see tremendeous improvements. <img src='http://blog.qooxdoo.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
+<p>In fact <a href="http://qooxdoo.org/demo">many demos</a> of <a href="http://qooxdoo.org">qooxdoo</a> run much faster now in IE7 compared to IE6. And they are even faster than in <a href="http://www.mozilla.com/firefox/">Firefox</a> 1.5 in many cases. This is a huge jump in performance. Microsoft did not tell about their exact modifications, of course. Anyway, they have fixed <em>the</em> major problem of large JavaScript-based web applications. This problem, despite having a catchy name, was mentioned many times before like <a href="http://demo.qooxdoo.org/html/performance/GlobalObject_2.html">here</a>, <a href="http://alex.dojotoolkit.org/?p=536">here</a> and <a href="http://groups.google.com/group/microsoft.public.inetsdk.programming.scripting.jscript/browse_thread/thread/d758f148f03cd2ed/cc6143cd1b0d1e38?lnk=st&amp;q=jscript+slow+performance+ie+firefox&amp;rnum=2#cc6143cd1b0d1e3">there</a>: If you have many objects created, which are simply accessible in the current scope, all methods and features of JavaScript slow down dramatically. Yeah, right, the entire execution speed drops significantly. No other browser besides IE shows such a strange behavior. It is quite interesting that IE6 really gets slower the larger the total number of (accessible) objects. Sure, it is logical that more instanciated objects need more memory, but it is not logical that at the same time this will dramatically reduce the performance of any code (that is not even accessing this data).</p>
+<p>With the release candidate RC1 of their new browser version IE7, it seems that they have finally fixed this issue. You can test it yourself in <a href="http://demo.qooxdoo.org/html/performance/GlobalObject_2.html">this test case</a>, which has been available in <a href="http://qooxdoo.org">qooxdoo</a> for several months to analyze and measure the IE performance problems. Please look at status bar of your browser (maybe you need to enable the status bar in the IE7 security settings). It will display the execution time of each loop while a large number of objects exists. On my machine the IE6 needs ~1400ms, while IE7 needs ~30ms, which is roughly the time Firefox 1.5 needs. Definitely incredible! Bright future for modern web applications. <img src='http://blog.qooxdoo.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=27qjvIjz"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=27qjvIjz" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=0pcpSBXq"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=0pcpSBXq" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=Z4mzepLM"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=Z4mzepLM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=Cko7rv3A"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=Cko7rv3A" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=F2xJwTjG"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=F2xJwTjG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=xrRqiV8e"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=xrRqiV8e" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=nLBUMGef"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=nLBUMGef" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=hUPfCg1N"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=hUPfCg1N" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance</feedburner:origLink></item>
+ </channel>
+</rss><!-- Dynamic Page Served (once) in 0.666 seconds --><!-- Cached page served by WP-Cache -->
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-news.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-news.xml
new file mode 100644
index 0000000000..3b17a19c73
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-news.xml
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/2.0.5" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
+
+<channel>
+ <title>qooxdoo News</title>
+ <link>http://news.qooxdoo.org</link>
+ <description>The qooxdoo news section</description>
+ <pubDate>Sun, 26 Nov 2006 15:52:09 +0000</pubDate>
+ <generator>http://wordpress.org/?v=2.0.5</generator>
+ <language>en</language>
+ <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/qooxdoo/news/content" type="application/rss+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">390072</feedburner:emailServiceId><item>
+ <title>qooxdoo 0.6.2 released</title>
+ <link>http://news.qooxdoo.org/qooxdoo-062-released</link>
+ <comments>http://news.qooxdoo.org/qooxdoo-062-released#comments</comments>
+ <pubDate>Wed, 22 Nov 2006 14:13:38 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Announcements</category>
+
+ <category>Release</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/qooxdoo-062-released</guid>
+ <description><![CDATA[Good news, everyone!
+Despite of the minor change in version number, this release is again a major step in strengthening qooxdoo&#39;s position of being one of the most comprehensive and innovative AJAX frameworks. It now even includes support for WebKit and future versions of Safari!
+It came as quite a surprise how many fixes, changes and additions [...]]]></description>
+ <content:encoded><![CDATA[<p>Good news, everyone!</p>
+<p>Despite of the minor change in version number, this release is again a major step in strengthening qooxdoo&#39;s position of being one of the most comprehensive and innovative AJAX frameworks. It now even includes support for WebKit and future versions of Safari!</p>
+<p>It came as quite a surprise how many fixes, changes and additions we were actually able to include in this fine little package. During the eight weeks after release 0.6.1, many people have made contributions. Thanks to all qooxdoo users, contributors, patch monsters and supporters for helping to make the framework more mature and feature-complete!</p>
+<p>Targeted as a maintenance release it includes many bugfixes and only minor changes in functionality or API. We recommend to upgrade any applications based on qooxdoo 0.6.1. Of course, there is migration support available, even if it is hardly needed this time.</p>
+<p>As mentioned above and already announced in our <a href="http://blog.qooxdoo.org/safari-support-for-qooxdoo-coming">developer blog</a>, qooxdoo now includes support for WebKit. We expect to fully support the next major version Safari 3.0 which will be based on the current development of WebKit. There is only limited support for Safari in its current version 2.0.4, though. Reason is, that Safari 2.0 still has many bugs that can hardly be worked around. Luckily, many of those bugs are already fixed in the <a href="http://nightly.webkit.org/">nightly builds of WebKit</a>. Besides the various bugs, Safari 2.0&#39;s JavaScript engine and its execution speed is not competitive with respect to the latest versions of the other major browsers (Firefox 2.0, IE7, Opera 9). Good news is, that the current builds of WebKit are tremendeously faster than Safari 2.0, approximately by a factor of 7-8 for a typical qooxdoo demo.</p>
+<p>We think it is worth to either use WebKit for now or wait for Safari 3.0 due in early 2007. There is probably not much sense in devoting more time and effort for Safari 2.0 specific problems. There are still some known issues concerning WebKit support (particularly for widgets that use scrollbars). It would be great if Mac users could give qooxdoo 0.6.2 a try and report any problem in bugzilla. Please use the most recent nightly build of WebKit and include its version information in any bug report.</p>
+<p>For more detailed information about qooxdoo 0.6.2 please consult the corresponding <a href="http://qooxdoo.org/about/release_notes">release notes</a>.</p>
+<p>Enjoy!</p>
+<ul>
+<li><a href="http://qooxdoo.org/download">Download qooxdoo</a></li>
+<li><a href="http://freshmeat.net/rate/53996/">Rate qooxdoo</a> </li>
+</ul>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=rUMX2pdG"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=rUMX2pdG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=QSWyYmHE"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=QSWyYmHE" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=46nCAceV"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=46nCAceV" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=C67hJdDt"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=C67hJdDt" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=Xl7ySFg7"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=Xl7ySFg7" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=CERoEiZ0"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=CERoEiZ0" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=L5wV176y"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=L5wV176y" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=LcQsQi8c"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=LcQsQi8c" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/qooxdoo-062-released/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>IE7 released, finally</title>
+ <link>http://news.qooxdoo.org/ie7-released-finally</link>
+ <comments>http://news.qooxdoo.org/ie7-released-finally#comments</comments>
+ <pubDate>Thu, 19 Oct 2006 12:26:18 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Announcements</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/ie7-released-finally</guid>
+ <description><![CDATA[
+Good news to every developer of modern web applications. After more than 5 years (IE6 was released in August 2001) we all hope to see IE7 fix some of the most severe problems and bugs of IE6. All qooxdoo-based applications are expected to benefit from IE7, particularly due [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>Good news to every developer of modern web applications. After more than 5 years (IE6 was released in August 2001) we all hope to see <a href="http://www.microsoft.com/ie">IE7</a> fix some of the most severe problems and bugs of IE6. All qooxdoo-based applications are expected to benefit from IE7, particularly due to the <a href="http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance">dramatic JavaScript performance improvements</a> that we reported earlier.</p>
+<p>qooxdoo fully supports IE7. It would be great if qooxdoo users and developers could continue to test and double-check their applications for IE7 compatibility. Please <a href="http://bugzilla.qooxdoo.org/enter_bug.cgi?product=frontend&amp;op_sys=Windows&amp;rep_platform=IE%207">report any IE7 issues in bugzilla</a> as soon as possible.</p>
+<p>Enjoy &#8230; and good luck!&nbsp;</p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=s9WxPv0V"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=s9WxPv0V" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=SjIKFZaP"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=SjIKFZaP" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=bCMFN18x"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=bCMFN18x" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=mLQg7sg8"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=mLQg7sg8" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=vKYNENWZ"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=vKYNENWZ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=UVocqnql"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=UVocqnql" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=FurwESp0"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=FurwESp0" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=Xz06SbFC"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=Xz06SbFC" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/ie7-released-finally/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>qooxdoo 0.6.1 released</title>
+ <link>http://news.qooxdoo.org/qooxdoo-061-released</link>
+ <comments>http://news.qooxdoo.org/qooxdoo-061-released#comments</comments>
+ <pubDate>Wed, 20 Sep 2006 18:49:16 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Announcements</category>
+
+ <category>Release</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/qooxdoo-061-released</guid>
+ <description><![CDATA[
+After only two weeks since the ground-breaking release of qooxdoo 0.6 quite a lot of progress has been made. We have received many contributions and bugfixes from the community. These patches as well as our own&#160; modifications have been integrated into the code base in the ongoing [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>After only two weeks since the ground-breaking release of <a href="http://news.qooxdoo.org/qooxdoo-06-released">qooxdoo 0.6</a> quite a lot of progress has been made. We have received many contributions and bugfixes from the community. These patches as well as our own&nbsp; modifications have been integrated into the code base in the ongoing effort to raise qooxdoo&#39;s stability.</p>
+<p>As has been previously announced, we try to release often, now that some of the most challenging reconstructions like namespaces have been mastered. While API changes for this minor release are negligible, <a href="http://qooxdoo.org/documentation/user_manual/migration_support">migration scripts</a> are available to upgrade existing applications, of course. </p>
+<p>Preliminary browser support for Safari has been introduced. It would be great if Safari users could help in identifying, analyzing and fixing the various layout problems. It is still not recommended to use qooxdoo applications in Safari-based production environments.</p>
+<p>Besides bugfixes and stability improvements there are some interesting additions as well. Tabs may optionally include close buttons, the tree widget TreeFullControl now supports multiple root nodes. Iframes containing external documents now have built-in blocking support to not interrupt user actions like drag &amp; drop.</p>
+<p>Application development is even faster than before: the easy-to-use make shell commands that generate optimized and <a href="http://qooxdoo.org/documentation/user_manual/custom_builds">tailor-made custom applications</a> run much faster. Users get a jump-start for their application development by using the <a href="http://qooxdoo.org/documentation/user_manual/skeleton">skeletons</a> included in the qooxdoo SDK.</p>
+<p>We would like to thank all people involved in qooxdoo development for their help and contribution. Every user&#39;s <a href="http://qooxdoo.org/community/mailing_lists">feedback</a> is important to continuously improve qooxdoo as one of the most amazing JavaScript frameworks around. Enjoy!</p>
+<ul>
+<li><a href="http://qooxdoo.org/about/release_notes">Release Notes</a></li>
+<li><a href="http://qooxdoo.org/download">Downloads of SDK or pre-build package</a></li>
+</ul>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=Zk55ooUa"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=Zk55ooUa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=BLxW0cEj"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=BLxW0cEj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=iaVRLUq8"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=iaVRLUq8" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=OFRBiERh"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=OFRBiERh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=qAiaGiVy"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=qAiaGiVy" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=kmVzh0Er"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=kmVzh0Er" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=bgbKIHHd"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=bgbKIHHd" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=wAtcF7sW"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=wAtcF7sW" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/qooxdoo-061-released/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>qooxdoo 0.6 released</title>
+ <link>http://news.qooxdoo.org/qooxdoo-06-released</link>
+ <comments>http://news.qooxdoo.org/qooxdoo-06-released#comments</comments>
+ <pubDate>Thu, 07 Sep 2006 17:49:13 +0000</pubDate>
+ <dc:creator>Sebastian</dc:creator>
+
+ <category>Announcements</category>
+
+ <category>Release</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/qooxdoo-06-released</guid>
+ <description><![CDATA[
+Here comes the most advanced qooxdoo version ever! qooxdoo 0.6 introduces namespaces as the most noticeable change. This step has been combined with a long thought-out and at the end well-structured directory layout.
+Integrated is one of the most advanced build systems. This new system allows you to generate [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>Here comes the most advanced qooxdoo version ever! qooxdoo 0.6 introduces namespaces as the most noticeable change. This step has been combined with a long thought-out and at the end well-structured directory layout.</p>
+<p>Integrated is one of the most advanced build systems. This new system allows you to generate tailor-made user applications linked against the qooxdoo framework. You can even include your own project classes and optimize them along with qooxdoo. Using this new build system you can generate blazingly fast and highly optimized qooxdoo builds.</p>
+<p>A new ground-breaking qooxdoo-based API viewer was added to make software development with qooxdoo easier than ever before. Supposed to become every qooxdoo users&#39; number one resource, it shows all available packages, classes, properties and methods. All related information is connected by hyperlinks which gives you a highly convenient way to access the relevant information.</p>
+<p>Of course there are also new widgets. A new advanced table widget has been introduced which is a virtual list view component that allows to handle many thousands of entries. Its features also make it possible to dynamically load the data from a remote server (using RPC for example). A splitpane - one of the long-awaited widgets - is now included. Full-blown logging capabilities featuring various appenders are available as well.</p>
+<p>There are a lot more changes and enhancements. For details please take a look at <a href="http://qooxdoo.org/about/release_notes">the release notes</a>. Migration support simplifies the switch from the last qooxdoo release 0.5.3. <a href="http://qooxdoo.org/download">qooxdoo 0.6</a> is the perfect framework to build highly-interactive web applications. Why don&#39;t you start now? <a href="http://qooxdoo.org/download">Just download qooxdoo today!</a></p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=onwQzIon"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=onwQzIon" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=jYfYN2gj"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=jYfYN2gj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=0psukVw3"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=0psukVw3" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=eXdvErgL"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=eXdvErgL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=KM4zclIk"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=KM4zclIk" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=hfgM1jFS"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=hfgM1jFS" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=LGUxEmi5"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=LGUxEmi5" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=qz5zRqV5"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=qz5zRqV5" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/qooxdoo-06-released/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>Introduce new tree compiler</title>
+ <link>http://news.qooxdoo.org/introduce-new-tree-compiler</link>
+ <comments>http://news.qooxdoo.org/introduce-new-tree-compiler#comments</comments>
+ <pubDate>Thu, 31 Aug 2006 16:02:27 +0000</pubDate>
+ <dc:creator>Sebastian</dc:creator>
+
+ <category>Announcements</category>
+
+ <category>Development</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/introduce-new-tree-compiler</guid>
+ <description><![CDATA[
+Another step forward to highly optimized applications based on qooxdoo: I would like to introduce the tree &#34;compiler&#34;. The tree compiler is able to &#34;compile&#34; a syntax tree (generated by treegenerator.py which uses the tokenizer.py) back to optimized JavaScript code. Its feature set is comparable to the old [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>Another step forward to highly optimized applications based on qooxdoo: I would like to introduce the tree &quot;compiler&quot;. The tree compiler is able to &quot;compile&quot; a syntax tree (generated by treegenerator.py which uses the tokenizer.py) back to optimized JavaScript code. Its feature set is comparable to the old compiler, which was directly based on the result of the tokenizer.py script. It completely removes comments, whitespaces and other optional stuff from the original JavaScript code. </p>
+<p>This tree compiler is an important step, because it will allow us to do the following awesome things in the future:</p>
+<ul>
+<li>Remove complete methods (debug statements, &#8230;)</li>
+<li>Remove cross-browser constructions and generate a version for each browser/engine.</li>
+<li>Compress variable names</li>
+<li>Lay out strings and reduce usage of simple constants (like &quot;auto&quot;, &quot;100%&quot;, &#8230;) for considerable IE performance improvements</li>
+<li>Obfuscate the whole application (variable, function and class names)</li>
+</ul>
+<p>etc.</p>
+<p>Now the interesting part: The tree compiler is the default from now on. It is already available in SVN and will be in the final release of qooxdoo 0.6. The tree compiler was tested against qooxdoo and another big internal project so we think it&#39;s quite stable already. It may not be free of bugs however, but I&#39;m happy to fix bugs as fast as you can report them <img src='http://news.qooxdoo.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
+<p>If you have problems with this new compiler, you can use the old one using the &quot;&#8211;use-token-compiler&quot; argument (generator.py). Each Makefile which is included in qooxdoo, has a new variable (OLDCOMPILER) in the first lines of the file which lets you select the compiler (simply set it to &quot;true&quot;).</p>
+<p>I hope you enjoy this new era of JavaScript optimization. Kudos to Til - without the treegenerator.py developed by him, qooxdoo would maybe not have seen such a tree-based optimizer.</p>
+<p>You can immediately test the new compiler. Its results can also been seen online in <a href="http://qooxdoo.org/demo">the online demos</a> and <a href="http://api.qooxdoo.org">the API viewer</a>.</p>
+<p>For all SDK/source version users: Please make sure to delete the directory &quot;.cache&quot;. A simple &quot;make distclean&quot; will do this for you.</p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=IY1PzpQT"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=IY1PzpQT" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=bQM4qh6n"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=bQM4qh6n" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=xNREhjUN"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=xNREhjUN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=WRp5C951"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=WRp5C951" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=1jl7qoQY"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=1jl7qoQY" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=PSL1b5Rt"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=PSL1b5Rt" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=mGL5WaXu"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=mGL5WaXu" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=e3rRUVoh"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=e3rRUVoh" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/introduce-new-tree-compiler/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>qooxdoo 0.6 (Release Candidate 1) available</title>
+ <link>http://news.qooxdoo.org/qooxdoo-06-release-candidate-1-available</link>
+ <comments>http://news.qooxdoo.org/qooxdoo-06-release-candidate-1-available#comments</comments>
+ <pubDate>Sat, 19 Aug 2006 02:31:26 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Release</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/qooxdoo-06-release-candidate-1-available</guid>
+ <description><![CDATA[
+Many aspects of qooxdoo have been improved to make it an even more professional and complete JavaScript framework.
+A lot of issues, that have been brought up and discussed on the mailing list before, have been addressed. Some of the most noticable additions include a qooxdoo-based viewer for the [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>Many aspects of qooxdoo have been improved to make it an even more professional and complete JavaScript framework.</p>
+<p>A lot of issues, that have been brought up and discussed on the mailing list before, have been addressed. Some of the most <a href="http://qooxdoo.org/documentation/improvements_for_qooxdoo_0.6">noticable additions</a> include a qooxdoo-based viewer for the auto-generated API documentation, a more powerful virtual list view and a smart build process that makes optimizing, compressing, linking and deployment of custom applications a snap.</p>
+<p>A Release Candidate 1 is now available for <a href="http://qooxdoo.org/download">easy download</a>. That way people can immediately start to get themselves familiar with the most important improvements. </p>
+<p>We would like to thank all users, contributors and fellow developers for their ongoing help and support. Keep up the good work!</p>
+<p><a href="http://demo.qooxdoo.org">Try online demos</a></p>
+<p><a href="http://digg.com/software/qooxdoo_0_6_Release_Candidate_1_available">Digg this</a>&nbsp;</p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=jvtn1dh2"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=jvtn1dh2" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=9WhvLamK"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=9WhvLamK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=FpMP6QAZ"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=FpMP6QAZ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=HjpVjKW8"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=HjpVjKW8" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=vPJyRCRJ"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=vPJyRCRJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=5pCaV3g8"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=5pCaV3g8" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=R1Pi8XSF"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=R1Pi8XSF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=s9FAqx6S"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=s9FAqx6S" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/qooxdoo-06-release-candidate-1-available/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>Branch “namespaces” discontinued</title>
+ <link>http://news.qooxdoo.org/branch-namespaces-discontinued</link>
+ <comments>http://news.qooxdoo.org/branch-namespaces-discontinued#comments</comments>
+ <pubDate>Wed, 16 Aug 2006 21:38:12 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Announcements</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/use-trunk-instead-of-namespaces-branch</guid>
+ <description><![CDATA[
+IMPORTANT: Until recently the major development work towards the next release 0.6 has been done in a development branch named &#34;namespaces&#34;. This branch is now discontinued. Its content has been transfered into the SVN trunk.
+Future development of qooxdoo will concentrate on changes made in the trunk. Anyone interested [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>IMPORTANT: Until recently the major development work towards the next release 0.6 has been done in a development branch named &quot;namespaces&quot;. This branch is now discontinued. Its content has been transfered into the SVN trunk.</p>
+<p>Future development of qooxdoo will concentrate on changes made in the trunk. Anyone interested in an up-to-date version of the framework should simply <a href="http://qooxdoo.org/documentation/user/checkout_from_svn">checkout the latest revision of the SVN trunk</a> . Clearly, these snapshots are not expected to be stable enough for production use. They are not even supposed to be functional at all. It may happen that the trunk is broken for not only hours (delibaretely) but even days (rather by accident). Think of the trunk as a permanent work-in-progress that after potentially unstable phases finally leads to the next official release.</p>
+<p>The content of the previous SVN trunk has been moved to a branch named &quot;legacy_0_5_x&quot;. This branch may see some changes, particularly bugfixes and backports of modifications made in the trunk. Please do not expect many substantial improvements in this 0.5 line of qooxdoo, though. There may be a release 0.5.4 sometime, but this clearly depends on user contribution for this now &quot;old&quot; line of qooxdoo.</p>
+<p>Please note, that the existing documentation has still to be updated to reflect the switch from the &quot;namespaces&quot; branch to the trunk. Information formerly specific to the &quot;namespaces&quot; branch should now be valid for the trunk.</p>
+<p>We are getting closer to qooxdoo 0.6&nbsp; <img src='http://news.qooxdoo.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=c2oS4gbi"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=c2oS4gbi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=Didl6LAR"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=Didl6LAR" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=DiHnHveW"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=DiHnHveW" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=AUWodtyY"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=AUWodtyY" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=Aw6D7Zyp"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=Aw6D7Zyp" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=kUraOsvP"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=kUraOsvP" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=7H4Jc2VJ"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=7H4Jc2VJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=bWYU5yHV"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=bWYU5yHV" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/branch-namespaces-discontinued/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>Planned Improvements for qooxdoo 0.6</title>
+ <link>http://news.qooxdoo.org/planned-improvements-for-qooxdoo-06</link>
+ <comments>http://news.qooxdoo.org/planned-improvements-for-qooxdoo-06#comments</comments>
+ <pubDate>Thu, 10 Aug 2006 09:05:40 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Announcements</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/planned-improvements-for-qooxdoo-06</guid>
+ <description><![CDATA[
+There is an extended update of an older post with respect to new features and modifications that are currently being implemented.
+All interested qooxdoo users are welcome to bring themselves up-to-date and are invited to get involved in qooxdoo development. It takes not more than checking-out qooxdoo from [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>There is an <a href="http://qooxdoo.org/documentation/improvements_for_qooxdoo_0.6">extended update</a> of an older post with respect to new features and modifications that are currently being implemented.</p>
+<p>All interested qooxdoo users are welcome to bring themselves up-to-date and are invited to get involved in qooxdoo development. It takes not more than checking-out qooxdoo from a subversion repository and doing a &quot;make&quot; on your shell afterwards. </p>
+<p>A couple of significant differences that are being addressed are:</p>
+<ul>
+<li>Namespaces</li>
+<li>Documentation</li>
+<li>Building and Deployment</li>
+<li>Table</li>
+<li>Remote Procedure Calls&nbsp;</li>
+</ul>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=5v7NltR5"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=5v7NltR5" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=28Nxb6gr"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=28Nxb6gr" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=au1dDM3I"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=au1dDM3I" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=Qh1RG75B"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=Qh1RG75B" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=is6ZeKJd"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=is6ZeKJd" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=IEWlxTSe"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=IEWlxTSe" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=MZTcg2Kn"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=MZTcg2Kn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=0hWzprwr"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=0hWzprwr" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/planned-improvements-for-qooxdoo-06/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>qooxdoo 0.5.3 released</title>
+ <link>http://news.qooxdoo.org/qooxdoo-053-released</link>
+ <comments>http://news.qooxdoo.org/qooxdoo-053-released#comments</comments>
+ <pubDate>Wed, 12 Jul 2006 09:09:27 +0000</pubDate>
+ <dc:creator>Sebastian</dc:creator>
+
+ <category>Announcements</category>
+
+ <category>Release</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/announcements/qooxdoo-053-released</guid>
+ <description><![CDATA[This is just a small release with some bugfixes for the users of any previous 0.5.x release. Also take a look at the release notes. Download the new version here at sourceforge.
+
+]]></description>
+ <content:encoded><![CDATA[<p>This is just a small release with some bugfixes for the users of any previous 0.5.x release. Also take a look at the <a href="http://qooxdoo.org/documentation/user/release_notes">release notes</a>. Download the new version <a href="http://sourceforge.net/project/showfiles.php?group_id=129854&#038;package_id=151847">here at sourceforge</a>.
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=ou9mifFX"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=ou9mifFX" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=8ZEMUWxe"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=8ZEMUWxe" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=JSsN4MH7"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=JSsN4MH7" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=MIoFJanB"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=MIoFJanB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=ObKHscCV"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=ObKHscCV" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=UbVce4qb"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=UbVce4qb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=zAeLNyw2"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=zAeLNyw2" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=k50Tl2Qd"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=k50Tl2Qd" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/qooxdoo-053-released/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>Bugzilla mailing list</title>
+ <link>http://news.qooxdoo.org/bugzilla-mailing-list</link>
+ <comments>http://news.qooxdoo.org/bugzilla-mailing-list#comments</comments>
+ <pubDate>Mon, 19 Jun 2006 09:24:26 +0000</pubDate>
+ <dc:creator>Sebastian</dc:creator>
+
+ <category>Bugs</category>
+
+ <category>Mailing lists</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/uncategorized/bugzilla-mailing-list</guid>
+ <description><![CDATA[I&#8217;ve just registered and configured a new mailing list, which is used to monitor the bug activity. Bugs in qooxdoo are also used to manage feature additions and enhancement wishes.
+You can register yourself to always stay up-to-date with the further development of qooxdoo.
+
+]]></description>
+ <content:encoded><![CDATA[<p>I&#8217;ve just registered and configured a new <a href="http://lists.sourceforge.net/lists/listinfo/qooxdoo-bugs">mailing list</a>, which is used to monitor the bug activity. Bugs in <a href="http://qooxdoo.org">qooxdoo</a> are also used to manage feature additions and enhancement wishes.</p>
+<p>You can <a href="http://lists.sourceforge.net/lists/listinfo/qooxdoo-bugs">register yourself</a> to always stay up-to-date with the further development of qooxdoo.
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=K0Py8qhO"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=K0Py8qhO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=jS2WTLmd"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=jS2WTLmd" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=bEAB9eQG"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=bEAB9eQG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=RnriB89x"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=RnriB89x" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=XRTQ94fT"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=XRTQ94fT" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=TzV4EYJn"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=TzV4EYJn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=e6upeVfr"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=e6upeVfr" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=kU4viCW8"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=kU4viCW8" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/bugzilla-mailing-list/feed/</wfw:commentRss>
+ </item>
+ </channel>
+</rss><!-- Dynamic Page Served (once) in 0.658 seconds -->
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/safari.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/safari.xml
new file mode 100644
index 0000000000..9fc3180811
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/safari.xml
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- generator="wordpress/1.5.1.2" -->
+<rss version="2.0"
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+>
+
+<channel>
+ <title>Surfin' Safari</title>
+ <link>http://webkit.org/blog</link>
+ <description>All about WebKit development</description>
+ <pubDate>Sat, 18 Nov 2006 22:18:02 +0000</pubDate>
+ <generator>http://wordpress.org/?v=1.5.1.2</generator>
+ <language>en</language>
+
+ <item>
+ <title>Rob Buis is a WebKit Reviewer</title>
+ <link>http://webkit.org/blog/?p=82</link>
+ <comments>http://webkit.org/blog/?p=82#comments</comments>
+ <pubDate>Sat, 18 Nov 2006 22:17:52 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=82</guid>
+ <description><![CDATA[ Rob Buis is now a qualified WebKit reviewer. Rob was one of the main driving forces behind ksvg2 and kcanvas, along with Nikolas Zimmerman. The code from these libraries has been integrated into WebKit to provide fully integrated HTML/SVG support. Since then, Rob has submitted many WebKit patches for SVG and in many other areas, [...]]]></description>
+ <content:encoded><![CDATA[ <p>Rob Buis is now a qualified WebKit reviewer. Rob was one of the main driving forces behind ksvg2 and kcanvas, along with Nikolas Zimmerman. The code from these libraries has been integrated into WebKit to provide fully integrated HTML/SVG support. Since then, Rob has submitted many WebKit patches for SVG and in many other areas, including DOM, CSS, graphics support and general refactoring.</p>
+ <p>Please join me in congratulating Rob.
+</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=82</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Google Web Toolkit 1.2 Uses WebKit</title>
+ <link>http://webkit.org/blog/?p=81</link>
+ <comments>http://webkit.org/blog/?p=81#comments</comments>
+ <pubDate>Sat, 18 Nov 2006 08:59:10 +0000</pubDate>
+ <dc:creator>aroben</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=81</guid>
+ <description><![CDATA[ Google has just released version 1.2 of the Google Web Toolkit (GWT) with full Mac OS X support provided by WebKit. GWT allows web developers to create shiny AJAX web applications entirely in Java, which GWT compiles to JavaScript. While Mac users were able to use the GWT compiler in previous versions, they couldn&#8217;t use [...]]]></description>
+ <content:encoded><![CDATA[ <p>Google has just <a href="http://googlewebtoolkit.blogspot.com/2006/11/its-official-gwt-12-released.html" title="It's official: GWT 1.2 released">released version 1.2</a> of the <a href="http://code.google.com/webtoolkit/" title="Google Web Toolkit">Google Web Toolkit</a> (GWT) with full Mac OS X support provided by WebKit. GWT allows web developers to create shiny AJAX web applications entirely in Java, which GWT compiles to JavaScript. While Mac users were able to use the GWT compiler in previous versions, they couldn&#8217;t use GWT&#8217;s hosted browser to debug their web apps. WebKit has made it possible for Google to bring these development tools to the Mac, and, as a surprise Mac-only bonus, web developers using GWT get to use the <a href="http://webkit.org/blog/?p=41" title="Introducing the Web Inspector">Web Inspector</a>, too!
+</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=81</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Zack Rusin is a WebKit Reviewer for the Qt Port</title>
+ <link>http://webkit.org/blog/?p=79</link>
+ <comments>http://webkit.org/blog/?p=79#comments</comments>
+ <pubDate>Thu, 16 Nov 2006 02:32:07 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=79</guid>
+ <description><![CDATA[ Zack Rusin is now a qualified reviewer for Qt platform code in WebKit. Although he has not yet submitted many patches to WebKit as such, he has a long history working with KHTML and did much of the Unity porting work originally. As such, he is likely one of the best reviewers for Qt platform [...]]]></description>
+ <content:encoded><![CDATA[ <p>Zack Rusin is now a qualified reviewer for Qt platform code in WebKit. Although he has not yet submitted many patches to WebKit as such, he has a long history working with KHTML and did much of the Unity porting work originally. As such, he is likely one of the best reviewers for Qt platform code. Congrats, Zack, and thank you.
+</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=79</wfw:commentRSS>
+ </item>
+ <item>
+ <title>The Safari Team&#8217;s Favorite Websites</title>
+ <link>http://webkit.org/blog/?p=77</link>
+ <comments>http://webkit.org/blog/?p=77#comments</comments>
+ <pubDate>Tue, 07 Nov 2006 03:00:46 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=77</guid>
+ <description><![CDATA[ Usually this blog has serious content about WebKit. But one of the great things about the web is that it&#8217;s actually lots of fun.
+To give you a bit of the flavor of the Safari/WebKit Team&#8217;s personality, here are a few of our favorite websites.
+Please post some of your favorite websites in the comments.
+ Apple Stuff
+
+ Daring Fireball [...]]]></description>
+ <content:encoded><![CDATA[ <p>Usually this blog has serious content about WebKit. But one of the great things about the web is that it&#8217;s actually lots of fun.<br />
+To give you a bit of the flavor of the Safari/WebKit Team&#8217;s personality, here are a few of our favorite websites.<br />
+Please post some of <em>your</em> favorite websites in the comments.</p>
+ <h4>Apple Stuff</h4>
+ <ul>
+ <li><a href="http://daringfireball.net/">Daring Fireball &lt;http://daringfireball.net/&gt;</a></li>
+ <li><a href="http://crazyapplerumors.com/">Crazy Apple Rumors &lt;http://crazyapplerumors.com/&gt;</a></li>
+ </ul>
+ <h4>News &#038; Information</h4>
+ <ul>
+ <li><a href="http://digg.com/">Digg &lt;http://digg.com/&gt;</a></li>
+ <li><a href="http://wikipedia.org/">Wikipedia &lt;http://wikipedia.org/&gt;</a></li>
+ <li><a href="http://valleywag.com/">Valleywag &lt;http://www.valleywag.com/&gt;</a></li>
+ <li><a href="http://slate.com/">Slate &lt;http://slate.com/&gt;</a></li>
+ </ul>
+ <h4>Media &#038; Celebrities</h4>
+ <ul>
+ <li><a href="http://televisionwithoutpity.com/">Television Without Pity &lt;http://televisionwithoutpity.com/&gt;</a></li>
+ <li><a href="http://aintitcool.com/">Ain&#8217;t it Cool News &lt;http://aintitcool.com/&gt;</a></li>
+ <li><a href="http://imdb.com/">The Internet Movie Database &lt;http://imdb.com/&gt;</a></li>
+ <li><a href="http://thesuperficial.com/">The Superficial &lt;http://thesuperficial.com/&gt;</a></li>
+ <li><a href="http://www.apple.com/trailers/">Apple Movie Trailers &lt;http://www.apple.com/trailers/&gt;</a></li>
+ </ul>
+ <h4>Amusement</h4>
+ <ul>
+ <li><a href="http://cuteoverload.com/">Cute Overload! &lt;http://cuteoverload.com/&gt;</a></li>
+ <li><a href="http://www.theonion.com/">The Onion &lt;http://www.theonion.com/&gt;</a></li>
+ <li><a href="http://youtube.com/">YouTube &lt;http://youtube.com/&gt;</a></li>
+ <li><a href="http://xfm.co.uk/article.asp?id=3673">Ricky Gervais Podcast &lt;http://xfm.co.uk/article.asp?id=3673&gt;</a></li>
+ <li><a href="http://homestarrunner.com/">Homestar Runner &lt;http://homestarrunner.com/&gt;</a></li>
+ <li><a href="http://spamusement.com/">Spamusement &lt;http://spamusement.com/&gt;</a></li>
+ </ul>
+ <h4>Communication</h4>
+ <ul>
+ <li><a href="http://www.facebook.com/">The Facebook &lt;http://www.facebook.com/&gt;</a></li>
+ <li><a href="http://mail.google.com/">GMail &lt;http://mail.google.com/&gt;</a></li>
+ </ul>
+ <h4>Shameless Nerdery</h4>
+ <ul>
+ <li><a href="http://xkcd.com/">xkcd &lt;http://xkcd.com/&gt;</a></li>
+ <li><a href="http://worldofwarcraft.com/">World of Warcraft Community Site &lt;http://worldofwarcraft.com/&gt;</a></li>
+ <li><a href="http://build.webkit.org/">WebKit Buildbot &lt;http://build.webkit.org/&gt;</a> - but only when it&#8217;s green </li>
+ </ul>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=77</wfw:commentRSS>
+ </item>
+ <item>
+ <title>ADC Article about Apple Nightly Builds</title>
+ <link>http://webkit.org/blog/?p=78</link>
+ <comments>http://webkit.org/blog/?p=78#comments</comments>
+ <pubDate>Sat, 04 Nov 2006 02:33:23 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=78</guid>
+ <description><![CDATA[ Apple Developer Connection has posted an article on using nightly builds. Most of this content won&#8217;t be news to people who are already using nightlies. But it might be of interest to web developers and application developers who have not tried nightlies yet. There is also some interesting info about canvas changes.
+
+]]></description>
+ <content:encoded><![CDATA[ <p>Apple Developer Connection has posted an article on <a href="http://developer.apple.com/opensource/internet/nightlywebkit.html">using nightly builds</a>. Most of this content won&#8217;t be news to people who are already using <a href="http://nightly.webkit.org">nightlies</a>. But it might be of interest to web developers and application developers who have not tried nightlies yet. There is also some interesting info about canvas changes.
+</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=78</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Sam Weinig is a WebKit Reviewer</title>
+ <link>http://webkit.org/blog/?p=76</link>
+ <comments>http://webkit.org/blog/?p=76#comments</comments>
+ <pubDate>Wed, 01 Nov 2006 01:00:05 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=76</guid>
+ <description><![CDATA[ Sam Weinig is now a qualified WebKit reviewer. Sam has done a lot of coding in different areas of WebKit, including large refactoring changes and coding style cleanup, as well as large projects like autogenerating the Objective-C DOM bindings. At this point, he probably knows the coding style guidelines better than most of the existing [...]]]></description>
+ <content:encoded><![CDATA[ <p>Sam Weinig is now a qualified WebKit reviewer. Sam has done a lot of coding in different areas of WebKit, including large refactoring changes and coding style cleanup, as well as large projects like autogenerating the Objective-C DOM bindings. At this point, he probably knows the coding style guidelines better than most of the existing reviewers. And now you get to bug him to review your patches.</p>
+ <p>Please join me in congratulating Sam.</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=76</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Optimizing Page Load Time (and a little about the Debug menu)</title>
+ <link>http://webkit.org/blog/?p=75</link>
+ <comments>http://webkit.org/blog/?p=75#comments</comments>
+ <pubDate>Tue, 31 Oct 2006 06:28:04 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=75</guid>
+ <description><![CDATA[ We don&#8217;t usually just repost content from other blogs here. But a lot of web developers seem to read this site, and those of us who work on WebKit are totally into loading web pages as fast as possible. With that in mind, here&#8217;s a great article on Optimizing Page Load Time. I recommend reading [...]]]></description>
+ <content:encoded><![CDATA[ <p>We don&#8217;t usually just repost content from other blogs here. But a lot of web developers seem to read this site, and those of us who work on WebKit are totally into loading web pages as fast as possible. With that in mind, here&#8217;s a great article on <a href="http://www.die.net/musings/page_load_time/">Optimizing Page Load Time</a>. I recommend reading and applying much of the advice here. However, I&#8217;ll note that we have experimented with using HTTP pipelining for Safari in the past, too many major servers gave garbage results in the face of it. While we may periodically re-evaluate this, we are not holding back on it out of spite or anything.</p>
+ <p>Another tip you might find handy as a web developer is the &#8220;Show Page Load Test Window&#8221; option in the Safari Debug menu. You can turn on the Debug menu by typing <code>defaults write com.apple.Safari IncludeDebugMenu YES</code> at a shell prompt, and then restarting Safari. This menu includes a number of rough debugging tools that we created mainly for browser testing, but you may find some of them handy for web development. The page load test in particular is interesting because it measures page load time in a more precise way than either onload timing or just using a stopwatch. If you change the &#8220;Suite&#8221; pop-up menu to &#8220;URL&#8221;, you can type the URL of your choice and get a fairly precise time for loading it. If you empty the cache first, you can get an uncached time.</p>
+ <p>I recommend trying this a couple of times as you test your site. We&#8217;ve found that it&#8217;s a lot easier to improve performance when you have a precise way to measure it.</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=75</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Adobe Apollo Uses WebKit</title>
+ <link>http://webkit.org/blog/?p=74</link>
+ <comments>http://webkit.org/blog/?p=74#comments</comments>
+ <pubDate>Mon, 30 Oct 2006 10:11:55 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=74</guid>
+ <description><![CDATA[ A few months ago, Adobe announced Apollo, a tool that lets you build desktop applications based on Flash and web technologies like HTML and JavaScript. A bunch of blog posts have features whizzy screenshots. This is pretty cool stuff, you can use all your web development skills to make slick looking desktop apps.
+ Even more exciting, [...]]]></description>
+ <content:encoded><![CDATA[ <p>A few months ago, Adobe announced <a href="http://labs.adobe.com/wiki/index.php/Apollo">Apollo</a>, a tool that lets you build desktop applications based on Flash and web technologies like HTML and JavaScript. A bunch of blog posts have features <a href="http://blog.digitalbackcountry.com/?p=75">whizzy screenshots</a>. This is pretty cool stuff, you can use all your web development skills to make slick looking desktop apps.</p>
+ <p>Even more exciting, Adobe has announced that Apollo <a href="http://casario.blogs.com/mmworld/2006/10/apollo_will_use.html">will use WebKit</a> as its HTML layout engine. Welcome to the world of WebKit, Adobe.</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=74</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Color Spaces</title>
+ <link>http://webkit.org/blog/?p=73</link>
+ <comments>http://webkit.org/blog/?p=73#comments</comments>
+ <pubDate>Sun, 22 Oct 2006 11:37:48 +0000</pubDate>
+ <dc:creator>hyatt</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=73</guid>
+ <description><![CDATA[ I was pointed to this article about color spaces in Web browsers. The ultimate point of the article, that it would be good for a Web browser to be &#8220;Color Smart&#8221;, i.e., to support not only embedded color profiles in images but also to correct unprofiled images to sRGB is a sound one. [...]]]></description>
+ <content:encoded><![CDATA[ <p>I was pointed to this article about <a href="http://regex.info/blog/photo-tech/color-spaces-page3">color spaces in Web browsers</a>. The ultimate point of the article, that it would be good for a Web browser to be &#8220;Color Smart&#8221;, i.e., to support not only embedded color profiles in images but also to correct unprofiled images to sRGB is a sound one. However, the author takes a few potshots at Web browsers on the Mac, and I thought I&#8217;d respond to make it clear what the technical hurdles are with this problem.</p>
+ <p>First of all, if you correct unprofiled images to sRGB, you have to correct all drawing to sRGB. This includes everything drawn by CSS (borders, backgrounds, text). This is not difficult to do under the hood, although it is difficult to do it with no performance regression in our benchmarks at all. In fact we even tried this during the Tiger development cycle (just correcting everything drawn to sRGB), but it slowed us down.</p>
+ <p>The big hurdle that we ran into, though, was with the drawing we did not control, namely the Flash plug-in. The problem is that designers specify colors in Flash and colors in CSS in the Web page, and they expect those colors to match. Because Flash&#8217;s drawing isn&#8217;t correcting to sRGB, if we did it in Safari, there would be color mismatches all over the place. These mismatches look far worse than if we just don&#8217;t correct at all.</p>
+ <p>(This mismatch with plug-ins is presumably the reason that this feature was not enabled by default in Mac IE.)</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=73</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Safari Market Share Continues to Increase</title>
+ <link>http://webkit.org/blog/?p=71</link>
+ <comments>http://webkit.org/blog/?p=71#comments</comments>
+ <pubDate>Tue, 10 Oct 2006 20:23:16 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=71</guid>
+ <description><![CDATA[ According to recent reports, Safari market share is still increasing. According to one survey, it&#8217;s up to 3.56%. The total including other WebKit-based browsers could be even higher, it&#8217;s hard to tell from the somewhat thin stats. It&#8217;s cool to see WebKit getting more and more users in any case.
+
+]]></description>
+ <content:encoded><![CDATA[ <p>According to recent reports, <a href="http://www.macnewsworld.com/rsstory/53528.html">Safari market share is still increasing.</a> According to one survey, it&#8217;s up to 3.56%. The total including other WebKit-based browsers could be even higher, it&#8217;s hard to tell from the somewhat thin stats. It&#8217;s cool to see WebKit getting more and more users in any case.
+</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=71</wfw:commentRSS>
+ </item>
+ </channel>
+</rss>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/zimbra-atom.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/zimbra-atom.xml
new file mode 100644
index 0000000000..2a09b9118d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/zimbra-atom.xml
@@ -0,0 +1,699 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
+<title>Zimbra - Blog</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/" />
+<modified>2006-11-15T04:46:36Z</modified>
+<tagline>All things Zimbra</tagline>
+<id>tag:www.zimbra.com,2006:/blog//1</id>
+<generator url="http://www.movabletype.org/" version="3.2">Movable Type</generator>
+<copyright>Copyright (c) 2006, Kevin</copyright>
+<entry>
+<title>What&apos;s new in ZCS 4.5 Beta 1</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/11/whats_new_in_zc.html" />
+<modified>2006-11-15T04:46:36Z</modified>
+<issued>2006-11-15T04:12:42Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.129</id>
+<created>2006-11-15T04:12:42Z</created>
+<summary type="text/plain">We posted the first beta of Zimbra 4.5 this past Friday. Major new features of 4.5 include complex password enforcement, identities, personal distro lists&apos;s, server performance improvements, backup/restore in the admin console, a search builder in the admin console, user-set...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>We <a href="http://www.zimbra.com/forums/showthread.php?t=5380">posted</a> the first beta of Zimbra 4.5 this past Friday.</p>
+
+<p>Major new features of 4.5 include complex password enforcement, identities, personal distro lists's, server performance improvements, backup/restore in the admin console, a search builder in the admin console, user-set default fonts for HTML compose, an upgrade to use MySQL 5.0, and a Lotus Domino migration wizard. More details can be found in the <a href="http://www.zimbra.com/pdf/Zimbra%20OS%204.5%20Beta%201%20Release%20Notes.pdf">beta release notes</a>.</p>]]>
+
+</content>
+</entry>
+<entry>
+<title>How much data does Zimbra Mobile use?</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/11/how_much_data_does_zimbra_mobile_use.html" />
+<modified>2006-11-15T04:11:35Z</modified>
+<issued>2006-11-15T03:49:42Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.128</id>
+<created>2006-11-15T03:49:42Z</created>
+<summary type="text/plain">Lots of people have asked how much data Zimbra Mobile uses over the wire. Just got my Cingular bill so thought I&apos;d post a screen shot to help explain. ...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Lots of people have asked how much data <a href="http://www.zimbra.com/products/zimbra_mobile.html">Zimbra Mobile</a> uses over the wire. Just got my Cingular bill so thought I'd post a screen shot to help explain. </p>]]>
+<![CDATA[<p>This is just a snapshot of one day Nov 7th and the total is for the previous 30days. My Nokia E61 is configured to sync every 15min from 8am -> 8pm 7days a week and then every 4hrs overnight (8pm->8am) On avg each check for mail, calendar, and contacts consumes ~20KB which turns out to be about 1.3MB per day or ~40MB per month. Cingular has a $19.99 Media Max plan that gives you unlimited data and 200 txt msgs so it works out pretty well.</p>
+
+<p><img alt="Zimbra Mobile Data Usage" src="http://www.zimbra.com/blog/archives/images/Picture%209.png" width="671" height="796" /><br />
+</p>]]>
+</content>
+</entry>
+<entry>
+<title>Taking Zimbra Offline</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/11/taking_zimbra_offline.html" />
+<modified>2006-11-09T19:43:13Z</modified>
+<issued>2006-11-09T17:32:10Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.127</id>
+<created>2006-11-09T17:32:10Z</created>
+<summary type="text/plain">Zimbra users have been asking for how they can take the Zimbra AJAX UI offline. Today at Web 2.0 we demo&apos;d this for the first time. ...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Zimbra users have been asking for how they can take the Zimbra AJAX UI offline. Today at Web 2.0 we demo'd this for the first time. </p>]]>
+<![CDATA[<p> The design goal is to have the same user experience with Zimbra both online and offline. Technically the Zimbra Offline client is the same AJAX client UI but now connecting to a local sync'd cache of the data and more importantly the ability to search, tag, organize, etc without network access. The two way sync of mail, calendar, contacts, and documents will allow Zimbra user's to take their collaboration data together with the Zimbra AJAX experience with them on the road or in places without a network connection and when they come back online - all of the changes made while offline (like composing, deleting, moving, creating messages, contacts, events or folders) are sync'd back to the cloud. Just like traditional offline mail clients - messages pending to be sent are stored in an Outbox where you can edit and view them until re-connected. You'll notice in the screenshots that both POP accounts and RSS feed folders are sync'd when in offline mode just as when online. RSS folders have been part of Zimbra for a while. POP aggregation will be part of our next major release and IMAP will be added shortly after that. Mail identities allows you to respond with the FROM and REPLY-TO addresses that the mail come with - responding to mail POP'd from gmail; Zimbra will automatically set the FROM address to your @gmail.com account. This feature is also useful for people who would like to respond as support@company.com when responding on behalf of a support team mail list for example. Mail identities will also be part of Zimbra's next major release. Watch this space for more on the architecture of the offline sync cache - meanwhile below are some screenshots. The beta version of the offline client for email and contacts will be available in Q4. </p>
+
+<p><img alt="Zimbra Outbox" src="http://www.zimbra.com/blog/archives/images/Picture%201.png" width="356" height="244" /><br/></p>
+
+<p><img alt="Zimbra Offline Compose" src="http://www.zimbra.com/blog/archives/images/Picture%202.png" width="713" height="450" /><br/></p>
+
+<p><img alt="Zimbra Offline POP accounts" src="http://www.zimbra.com/blog/archives/images/Picture%203.png" width="511" height="462" /><br/></p>
+
+<p><img alt="Zimbra Offline Sync" src="http://www.zimbra.com/blog/archives/images/Picture%204.png" width="427" height="252" /><br/></p>
+
+<p><img alt="Zimbra Mail Identities" src="http://www.zimbra.com/blog/archives/images/Picture%205.png" width="666" height="482" /></p>
+
+<p></p>
+
+<p></p>]]>
+</content>
+</entry>
+<entry>
+<title>Busy week @ Zimbra</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/11/busy_week_zimbra.html" />
+<modified>2006-11-07T00:08:50Z</modified>
+<issued>2006-11-06T23:53:34Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.126</id>
+<created>2006-11-06T23:53:34Z</created>
+<summary type="text/plain">Several events going on this week. Satish, John and Greg will be at VMWorld where Satish will take part in tomorrow&apos;s keynote. Later this week at ISPCon I&apos;ll be on a panel - What the Web 2.0?. Last but not...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Several events going on this week. Satish, John and Greg will be at <a href="http://www.vmware.com/vmworld/">VMWorld</a> where Satish will take part in <a href="https://www.vmware.com/vmworld/agenda_keynotes.html">tomorrow's keynote</a>. Later this week at <a href="http://www.ispcon.com/">ISPCon</a> I'll be on a panel - <a href="http://www.ispcon.com/conference/sessionsbyday.php#E6">What the Web 2.0?</a>. Last but not least <a href="http://www.web2con.com/cs/web2006/view/e_spkr/2441">Satish</a> will be back on the main stage at <a href="http://www.web2con.com/">Web 2.0</a>. For those who missed it last year; <a href="http://blogsearch.google.com/blogsearch?hl=en&q=zimbra+web+2.0&ie=UTF-8&as_maxm=11&as_miny=2005&as_maxy=2005&as_minm=10&as_mind=1&as_maxd=1&as_drrb=b&ctz=480&c1cr=10%2F1%2F2005&c2cr=11%2F1%2F2005&btnD=Go">Zimbra launched at Web 2.0</a>.</p>]]>
+
+</content>
+</entry>
+<entry>
+<title>The Ajax Experience, Oct 23-25, Boston, MA</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/10/the_ajax_experi.html" />
+<modified>2006-11-02T20:10:26Z</modified>
+<issued>2006-10-29T19:08:04Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.125</id>
+<created>2006-10-29T19:08:04Z</created>
+<summary type="text/plain">Below are random thoughts on three days in Boston at The Ajax Experience. I gave a talk titled Ajax in the Enterprise....</summary>
+<author>
+<name>Conrad</name>
+<email>cdamon@zimbra.com</email></author>
+<dc:subject>Conrad Damon</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Below are random thoughts on three days in Boston at <br />
+<a href="http://www.theajaxexperience.com">The Ajax Experience</a>. I gave a talk titled <a href="http://www.theajaxexperience.com/s/show/59/slides/Conrad_Damon/Ajax_in_the_Enterprise.pdf">Ajax in the Enterprise</a>.</p>]]>
+<![CDATA[<p>... AOL was giving away T-shirts by the hundreds, in solid, bright colors with <br />
+words like "Geek" or "2.0" on them. Some conferencegoers walked away with <br />
+several, which wasn't discouraged - there seemed to be an endless supply. Every <br />
+time I walked by the booth I wanted ("want" isn't the right word, it's more the <br />
+primal lust for free stuff) to grab a shirt or two, when the last thing in the <br />
+world I need is more T-shirts. Eight years ago when I moved I gave 99 shirts, <br />
+most of them unworn, to the Salvation Army. These were garish and ugly, and <br />
+trying in AOL's typically disingenuous way to plug into geek culture. Plus, <br />
+there's the associated guilt of all those unopened CDs taking up landfill space. <br />
+Hence the little cartoon angel on my right shoulder. Of course, the little <br />
+cartoon devil on my left shoulder made himself heard: "Dude, it's FREE! Don't be <br />
+such a Herb! If you don't take one, someone else will get it. You've earned it. <br />
+And dude: it's FREE!" So it went, and every walk past the AOL booth became an <br />
+exercise in self-denial of something I didn't actually want at all, and the <br />
+thimbleful of pride I felt on passing by empty-handed made me feel like some sort of <br />
+lame modern-day ascetic.</p>
+
+<p>... speaking of AOL (I don't mean to pick on AOL, even the newly warm and fuzzy <br />
+AOL, but they make it really easy), one of their minions gave a keynote during <br />
+which he screened a movie where they went up to people on the street or in the <br />
+grocery store and asked them what they thought "Ajax" was. And OH MY GAWD (the <br />
+voice here should be Dr Cox from Scrubs), they thought it was a cleanser! What a <br />
+bunch of losers!</p>
+
+<p>Crikey.</p>
+
+<p>... really regret my get-out-of-Dodge trip planning, which made me miss Brendan <br />
+Eich's closing keynote on Javascript 2.</p>
+
+<p>... "stack" is the new "solution".</p>
+
+<p>... <a href="http://www.openqa.org/selenium/">Selenium</a>, a product for doing functional client <br />
+testing in an Ajax environment, got a lot of buzz. Our QA team is looking into it. They've had to <br />
+pound on Mercury's QTP pretty hard to get it to work with our client, and I'm hoping <br />
+Selenium will be way more straightforward.</p>
+
+<p>... the booths from some of the sponsors such as Google, Sun, and Ask were more<br />
+focused on recruiting than on demos, always a sign of a technology on its way up.</p>
+
+<p>... after the experts' panel on Monday night, I headed to the hotel bar and met <br />
+up with the Netflix crew. As a longtime Netflix member, I couldn't resist rattling on <br />
+about what I liked and disliked about their site and service. Not only did they <br />
+listen - brave souls - they bought me beer. The more beer I had in me, the more <br />
+clever and insightful I became, and I think they caught on to that.</p>
+
+<p>The Netflix UI makes for a great case study in how going from HTML to Ajax <br />
+can improve the user experience.</p>
+
+<p>... there is a bewildering array of Ajax toolkits out there, and at least two of <br />
+the presentations were overviews of frameworks. The space has exploded, and <br />
+sooner rather than later, it will contract. Documentation, often overlooked, <br />
+will be key to adoption. It's hard to bet against <br />
+<a href="http://www.dojotoolkit.org/">Dojo</a>, with its breadth, careful design, and technical impressiveness. <br />
+I heard good things about <a href="http://jquery.com/">jQuery</a>, and <a href="http://developer.yahoo.com/yui/">YUI</a> looks clean. For all-Java shops there's <br />
+<a href="http://code.google.com/webtoolkit/">GWT</a>, and possibly <a ref="http://getahead.ltd.uk/dwr">DWR</a>.</p>
+
+<p>... My ad hoc plan of attack, and reviews, in order of attendance:</p>
+
+<p>Leveraging Ajax for Enterprise Application Development - mostly good <br />
+content, somewhat awkwardly delivered. Best part was practical tips for shops <br />
+coming up to speed on Ajax.</p>
+
+<p>Javascript Exposed: There's a Real Programming Language in There (Pt 1), by <br />
+Glenn Vanderburg - had intended to go to Mahemoff's talk on design patterns, but <br />
+he didn't make it to the conference. Glenn's an engaging presenter, which eased <br />
+the fact that it was mostly a tutorial of what you'd find in the O'Reilly book. <br />
+Glenn did a good job of focusing on important bits of the language that are <br />
+often glossed, and I really liked his lists of what he believes the language <br />
+designers got right and wrong.</p>
+
+<p>Ruining the User Experience, by Aaron Gustafson - the scope of this presentation <br />
+was smaller than I had hoped. From the summary, I thought it would cover UI <br />
+idioms that have been made possible by Ajax but which don't improve the user <br />
+experience, but it was almost all about what to do when Javascript is<br />
+disabled.</p>
+
+<p>Frameworks Guide, by Nathaniel Schutta - came to this one as a refugee from a <br />
+TIBCO-centric talk on building desktop-like apps in Ajax. It was good to get an <br />
+overview, delivered capably and neutrally, since having developed our own <br />
+toolkit I'm not familiar with others.</p>
+
+<p>Intro to Dojo / Dojo in Depth, by Alex Russell - Dojo looks pretty awesome, and <br />
+Alex is super-smart. Dojo obviously goes beyond Ajax, and even within Ajax it <br />
+offers much more than widgets and neat effects. Their event system, the new <br />
+SVG/VML support, and XhrIframeRequest were highlights. I'll be looking soon into <br />
+using its package system to leverage deferred loading of ZCS components.</p>
+
+<p>IE7: From Ajax to RSS and More: How to Take Full Advantage, by Chris Wilson - <br />
+acutally: quite: interesting. IE7 will make app developers very happy, and app <br />
+maintainers very unhappy. It's really frightening to think of the untold numbers <br />
+of websites out there that rely on the many ways in which IE6 is broken (insert <br />
+truism about reaping what you sow). As much grief as they deservedly get, MS <br />
+appears to be committing to standards as far as its browser goes (thank you, <br />
+market forces). Best news for me is that they fixed the garbage collector, so <br />
+memory no longer leaks at the drop of a hat. They also fixed the SELECT <br />
+element's behavior with regard to z-index, the gzip caching problem, and untold <br />
+CSS bugs.</p>
+
+<p>JSON: The X in Ajax, by Douglas Crockford - the case for JSON is a strong one, <br />
+as XML is often overkill for shuttling data around. I love its simplicity and <br />
+compactness. Of particular interest: JSONRequest and a proposed MODULE tag to <br />
+address cross-domain security issues. Near the end there was an odd moment when <br />
+John Resig (jQuery) posed a reasonable-sounding question about whether JSON <br />
+performance scales well across large datasets when compared with XML, and the <br />
+immediate response was "Next question." Not sure what to conclude from that.</p>
+
+<p>Designing for Ajax, by Bill Scott - bailed on a performance talk that turned out <br />
+to be Gomez-centric and came here. Great presentation. Bill used Yahoo as well <br />
+as other sites to point out good and bad Ajax-enabled interaction patterns. <br />
+Makes me want to check out the Yahoo design patterns library.</p>
+
+<p>Case Study: Building Great UI, the Netflix Way, by Sean Kane - everyone loves <br />
+Hypnotoad, I mean Netflix. What was interesting here (aside from the obvious <br />
+fascination with the service) was how extensively they test in UI labs with <br />
+regular folks before rolling out changes, often trying out several possible <br />
+versions of a UI feature. It would be nice if we could eventually get real-world <br />
+data like that.</p>]]>
+</content>
+</entry>
+<entry>
+<title>Firefox 2 vs IE 7</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/10/firefox_2_vs_ie_1.html" />
+<modified>2006-10-25T23:56:26Z</modified>
+<issued>2006-10-25T21:33:29Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.124</id>
+<created>2006-10-25T21:33:29Z</created>
+<summary type="text/plain">Last week I posted an entry comparing IE 7 with Firefox 1.5 and the venerable IE 6. Lot&apos;s of folks have since asked for Firefox 2 to be added to the mix. The reason we didn&apos;t initially include Firefox 2...</summary>
+<author>
+<name>Ross</name>
+<email>ross@zimbra.com</email></author>
+<dc:subject>Ross Dargahi</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Last week I posted an <a href='http://www.zimbra.com/blog/archives/2006/10/ie_7_a_better_b.html'>entry</a> comparing IE 7 with Firefox 1.5 and the venerable IE 6. Lot's of folks have since asked for Firefox 2 to be added to the mix. The reason we didn't initially include Firefox 2 is because it was not at the time officially released and so we felt it unfair for it to be included. </p>]]>
+<![CDATA[<p>The graph below shows the cumulative time it took for IE 7 and Firefox 2 to execute the Zimbra Web Client (ZWC) peformance tests at various dates leading up to the final release of each browser. As can be seen, both IE and Firefox showed improvement in their final release, and so we think leaving Firefox 2 out of last week's tests was indeed the fair thing to do. </p>
+
+<p><a target='_new' href="http://www.zimbra.com/blog/archives/images/trend.jpg"><br />
+<img alt="trend.jpg" src="http://www.zimbra.com/blog/archives/images/trend.jpg" width="344" height="169" /></a></p>
+
+<p>So now that Firefox 2 has been officially released, how does if fare against IE 7? </p>
+
+<p>We ran each browser over a common set of Zimbra Web Client (ZWC) operations such as logging in, viewing messages, navigating around various folders, changing options, viewing contacts, and performing various calendar operations. As the graph below shows, Firefox 2 beat out IE 7 in just about every operation - sometimes by significant margins. </p>
+
+<p><a target="_new" href="http://www.zimbra.com/blog/archives/images/FF2vsIE7.jpg"><br />
+<img alt="FF2vsIE7.jpg" src="http://www.zimbra.com/blog/archives/images/FF2vsIE7.jpg" width="638" height="144" /></a></p>
+
+<p>We also tested Firefox 2 vs Firefox 1.5. As seen below, Firefox 2 has not made substantial performance improvements over Firefox 1.5, and has certainly not shown the same order of gain as IE 7 has over IE6.</p>
+
+<p><a target="_new" href="http://www.zimbra.com/blog/archives/images/FF2vsFF15.jpg" ><br />
+<img alt="FF2vsFF15.jpg" src="http://www.zimbra.com/blog/archives/images/FF2vsFF15.jpg" width="603" height="157" /></a></p>
+
+<p>I think the net result is that for highly JavaScript intensive AJAX applications such as the ZWC, Firefox is still the winner by quite a wide margin. Of course your mileage will vary depending on the type and footprint of your client.</p>
+
+<p>I would like to end by saying that we are able to present this data thanks to lots of hard work by Raja Rao of the Zimbra QA department who has spent many long hours building our AJAX client testing framework, and executing the performance tests against the various browsers.</p>]]>
+</content>
+</entry>
+<entry>
+<title>IE 7 vs IE 6</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/10/ie_7_a_better_b.html" />
+<modified>2006-10-19T18:12:50Z</modified>
+<issued>2006-10-19T18:13:00Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.123</id>
+<created>2006-10-19T18:13:00Z</created>
+<summary type="text/plain">Back in April I wrote an entry complaining about IE&apos;s performance as a Web 2.0 platform: &quot;From a Web 2.0 application developers perspective (developers who use a lot of JavaScript and DOM manipulation), IE 6 is plagued by a number...</summary>
+<author>
+<name>Ross</name>
+<email>ross@zimbra.com</email></author>
+<dc:subject>Ross Dargahi</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Back in April I wrote an <a href="http://www.zimbra.com/blog/archives/2006/04/post.html">entry</a> complaining about IE's performance as a Web 2.0 platform:</p>
+
+<p><i>"From a Web 2.0 application developers perspective (developers who use a lot of JavaScript and DOM manipulation), IE 6 is plagued by a number of well known problems such as its ability to readily leak memory. Regrettably, Microsoft's next release of Internet Explorer, IE 7, does little to resolve these issues."</i></p>
+
+<p>I am happy to say that I was wrong. </p>]]>
+<![CDATA[<p>Microsoft's IE team has clearly been hard at work on improving their browser's memory management and JavaScript performance. IE 7 has made some significant leaps forward based on some initial in house testing here at Zimbra. We are in general observing about a 2x performance improvement with IE 7 vs IE 6 when using the Zimbra Web Client (ZWC).</p>
+
+<p>As is well documented, IE 6 is notoriously bad at leaking memory, particularly due to circular references that include COM objects. The good news is that our tests indicate that this problem has been solved in IE 7. While in our test profile, it appears to consume more memory than Firefox, IE 7 seems to have solved the horrendous memory leaks exhibited in IE 6.</p>
+
+<p>We also looked at the performance of Firefox, IE 6, and IE 7 over a set of common ZWC operations such as logging in, viewing messages, navigating around various folders, viewing contacts, and performing various calendar operations. The graph below shows the relative performance of each browser against the other:</p>
+
+<p><a href="http://www.zimbra.com/blog/archives/images/browserperf.jpg" target="_new"><img alt="browserperf.jpg" src="http://www.zimbra.com/blog/archives/images/browserperf.jpg" width="499" height="130" /></a></p>
+
+<p>Again we see that across just about every operation, IE 7 performs better than IE 6; however, for the most part Firefox still beats out IE 7. When we looked at the sum total time it takes for all operations to be performed (admittedly a coarse grained metric), we noticed that IE 7 was about twice as fast as IE 6; however, Firefox was more than twice as fast as IE 7 and about four times faster than IE 6.</p>
+
+<p>In conclusion, IE 7 has made some quite significant improvements over IE 6, both in terms of performance and memory management; however, there is still room to improve - particularly against Firefox, a challenge I hope the IE team will be taking up.</p>]]>
+</content>
+</entry>
+<entry>
+<title>Zimbra Collaboration Suite 4.0.3 Released</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/10/zimbra_403_released.html" />
+<modified>2006-10-17T23:09:27Z</modified>
+<issued>2006-10-17T23:09:23Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.122</id>
+<created>2006-10-17T23:09:23Z</created>
+<summary type="text/plain">ZCS 4.0.3 includes fixes for 55 bugs and enhancements. It has significant improvements in calendar behavior and fixes a bug in Trash folder viewing that was troubling many folks. It also includes upgrade speed improvements. This allows the upgrade to...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>ZCS 4.0.3 includes fixes for 55 bugs and enhancements. It has significant improvements in calendar behavior and fixes a bug in Trash folder viewing that was troubling many folks. It also includes upgrade speed improvements. This allows the upgrade to take much better advantage of installs that have multiple disks available to MySQL.</p>
+
+<p><a title="Zimbra - Forums - Zimbra Collaboration Suite 4.0.3 Released" href="http://www.zimbra.com/forums/showthread.php?p=27503">Zimbra - Forums - Zimbra Collaboration Suite 4.0.3 Released</a></p>
+
+<p></p>]]>
+
+</content>
+</entry>
+<entry>
+<title>Thoughts on Office 2.0 (Reprise)</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/10/preliminary_tho.html" />
+<modified>2006-10-21T20:01:05Z</modified>
+<issued>2006-10-17T11:43:14Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.121</id>
+<created>2006-10-17T11:43:14Z</created>
+<summary type="text/plain">(FYI: I&apos;ve made some enhancements/corrections based on Zimbra&apos;s participation at the Office 2.0 Conference; pointer below. May or may not be worth a quick reread.) Yes, the &quot;2.0&quot; hype is getting out of hand. However, just as with Web 2.0,...</summary>
+<author>
+<name>Scott</name>
+<url>www.zimbra.com</url><email>scott.dietzen@zimbra.com</email></author>
+<dc:subject>Scott Dietzen</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>(FYI: I've made some enhancements/corrections based on Zimbra's participation at the Office 2.0 Conference; pointer below. May or may not be worth a quick reread.)</p>
+
+<p>Yes, the "2.0" hype is getting out of hand. However, just as with <a href="http://www.zimbra.com/blog/archives/2006/06/defining_web_20.html">Web 2.0</a>, the technology evolution we are participating in is sufficent to at least justify the discussion. So while I am still dubious about the Office 2.0 moniker, there is no doubt that the Web authoring, sharing, and collaboration technologies under the Web 2.0 umbrella are allowing us to do many of the things we used to do within proprietary Office 1.0 desktop applications, and to do so from any browser on the net. So before you dismiss Office 2.0 as yet another buzz word <em>du jour</em>, please consider some (modest) over-generalizations: </p>]]>
+<![CDATA[<p><strong>Office 1.0 Users: </strong>Power users (information workers/professionals) <br />
+<strong>Office 2.0 Users: </strong>"All hands" (most everyone who browses) </p>
+
+<p><strong>1.0 Model:</strong> Client-centric (desktop applications) <br />
+<strong>2.0 Model:</strong> Network-centric (web applications)</p>
+
+<p><strong>1.0 Sharing (in the small):</strong> Pass by value <em>(Email)</em>, pass by reference <em>(Public folders)</em><br />
+<strong>2.0 Sharing (in the large):</strong> Adds the ability to use the Internet to pass by value <em>(Email, VoIP, IM, ...) </em> and (effectively) by reference <em>(XHTML pages/hyperlinks, Wiki, Blogs, iCalendar/CalDAV, iTasks, WebDAV, ...)</em>, all with access control</p>
+
+<p><strong>1.0 Navigation (sans meta-data):</strong> <em>Folders </em><br />
+<strong>2.0 Navigation (with meta-data):</strong> <em>Hyperlinks, indexing & search, tagging, mash-ups …</em></p>
+
+<p><strong>1.0 Editing:</strong> <em>Via proprietary desktop applications; WYSIWYG with change tracking</em><br />
+<strong>2.0 Editing:</strong> <em>From any browser; WYSIWYG (via Ajax authoring) with versioning and history</em></p>
+
+<p><strong>1.0 Data types:</strong> Proprietary<br />
+<strong>2.0 Data types:</strong> Open <em>(XHMTL, ODF, microformats, XML such as via Service-Oriented Architecture/SOA, REST, SOAP, etc.)</em></p>
+
+<p><strong>1.0 Content:</strong> Relatively static, with intra-desktop dynamic components<br />
+<strong>2.0 Content:</strong> More dynamic <em>(including web application-generated content, SOA mash-ups, …)</em></p>
+
+<p><strong>1.0 Multi-document:</strong> <em>Object Linking & Embedding (OLE), Bonobo, …</em> <br />
+<strong>2.0 Multi-document:</strong> <em>Hyperlinks, <a href="http://www.zimbra.com/blog/archives/2006/04/zimbra_ale-ajax_linking_and_embedding.html">Ajax Linking & Embedding (ALE)</a>, mash-ups, ...</em></p>
+
+<p>(No doubt the above takes a rather expansive view of Office 2.0, but then again Office 1.0 arguably covered most all computer-assisted authoring of content. Please also note: The above content would have proved substantially more compelling in an HTML table authored, say, with a WYSIWYG Ajax editor, like that included within the Zimbra Documents applications.)</p>
+
+<p>All this is not to say that Office 2.0 can or should supercede Office 1.0---Zimbra spreadsheets, for example, will not support pivot tables any time soon. I believe our goal should <strong>not</strong> be to reproduce Office 1.0 functionality on a Web 2.0 platform, but rather to realize an easier to use (<em>a.k.a.</em> less complex) collaborative authoring and sharing model that scales with the Internet. Office 2.0 users should be able to (1) author content from anywhere; (2) appropriately reuse and adapt (mash up) content (both static and dynamic) already published on the Internet; and (3) securely collaborate with others in whatever <em>ad hoc</em> fashion best meets their needs. The fun with "Office 2.0" is that thanks to the maturing of the underlying <a href="http://www.zimbra.com/blog/archives/2006/06/defining_web_20.html">Web 2.0 technologies</a> and near universal success of the Internet, this vision is close to realization.</p>
+
+<p>One thing I'm not yet happy with is that the above description does not draw a very compelling line between Web 2.0 and Office 2.0. Some technologies are more obvious: for example, Ajax, RSS, and SOA/XML fit under Web 2.0, while Ajax authoring and ALE arguably fit more naturally under Office 2.0. Given the emphesis on collaboration and authoring inherent in the Web 2.0 definition, I think these two potential categories are going to be tough to keep separate. After all, both Office 1.0 and Web 2.0 are about authoring rich content---the difference is that the former is focused on the desktop and "sharing in the small", while the latter is targeting the network and "sharing in the large". Office 2.0 then may merely mean leveraging Web 2.0 technologies to do many/most (?) of the things we used to do in Office 1.0. </p>
+
+<p>(Some of this thinking came out our <a href="http://www.eu.socialtext.net/office20/index.cgi?apis_and_feeds_for_office_2_0">our panel session</a> at the <a href="http://www.office20con.com/conference.html">Office 2.0 Conference</a> in San Francisco, and our <a href="http://wanderingstan.com/2006-08-21/web_2_0_kongress_in_germany">Web 2.0 Kongress</a> session in Germany the day before. Just doing our bit to keep the airlines in the black :-).)</p>]]>
+</content>
+</entry>
+<entry>
+<title>Zimbra Collaboration Suite 4.0 Webinar</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/10/zimbra_40_webinar.html" />
+<modified>2006-10-05T02:35:45Z</modified>
+<issued>2006-10-01T23:07:51Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.120</id>
+<created>2006-10-01T23:07:51Z</created>
+<summary type="text/plain">Zimbra Collaboration Suite 4.0 Webinar When: Thurs, October 5th at 10am PST. Length: 60 minutes. Subject: Modern Collaboration with Zimbra Collaboration Suite (ZCS) 4.0 Overview: Fueled by demand for better productivity, the web is exploding as the primary communication medium...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p><a href="http://www.zimbra.com/about/webinars.html">Zimbra Collaboration Suite 4.0 Webinar</a><br />
+When:</p>
+
+<p>Thurs, October 5th at 10am PST. Length: 60 minutes.</p>
+
+<p>Subject: Modern Collaboration with Zimbra Collaboration Suite (ZCS) 4.0</p>
+
+<p>Overview:<br />
+Fueled by demand for better productivity, the web is exploding as the primary communication medium for the modern organization.</p>
+
+<p>ZCS leads the way, providing powerful next-generation messaging and collaboration.</p>
+
+<p>Join our CTO Scott Dietzen for this free live webinar to see:</p>
+
+<p> * How ZCS 4.0 is the right solution for today's collaboration demands<br />
+ * Discuss and demo features such as Zimbra Documents, Admin UI, Zimlets, Mobile device sync, Active Directory integration and more…<br />
+ * Why ZCS 4.0 enables organizations to realize the true benefits of an innovative and cost-effective collaboration solution.<br />
+ * Plus live Q & A</p>
+
+<p>Sign up:</p>
+
+<p>Please <a href="http://breeze58226024.breezecentral.com/e78552532/event/registration.html">register</a>; space is limited!</p>]]>
+
+</content>
+</entry>
+<entry>
+<title>Zimbra 4.0.2 released, Ubuntu preview release</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/09/zimbra_ubuntu_preview_release.html" />
+<modified>2006-09-26T06:11:30Z</modified>
+<issued>2006-09-26T05:48:24Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.119</id>
+<created>2006-09-26T05:48:24Z</created>
+<summary type="text/plain">We released Zimbra 4.0.2 today and there were a few extras that came along for the ride. First off the Fedora Core 5 build is now GA. We also added a new developer/preview release on Ubuntu. This has been a...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>We released Zimbra 4.0.2 today and there were a few extras that came along for the ride. First off the Fedora Core 5 build is now GA. We also added a new <a href="http://www.zimbra.com/community/downloads.html">developer/preview release</a> on <a href="http://www.ubuntu.com/">Ubuntu</a>. This has been a popular <a href="http://www.zimbra.com/forums/showthread.php?t=1644">hack</a> in our forums for sometime.</p>
+
+<p>Here's a sample of some of the other changes/fixes in 4.0.2:</p>
+
+<p>- perf improvements for IMAP (new MySQL indexes)<br />
+- > 2GB support in the Zimbra Outlook Connector<br />
+- i18n and some l10n for the Zimbra Outlook Connector<br />
+- disabling AS/AV causes mail deferral<br />
+- cursor fails to appear in Firefox<br />
+- mailbox quota page does not contain any entries<br />
+- several all day event and timezone bugs fixed</p>]]>
+
+</content>
+</entry>
+<entry>
+<title>Look Ma, No Mouse: Keyboard Navigation and Shortcuts in the Zimbra Collaboration Suite and The Kabuki Ajax Toolkit</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/09/look_ma_no_mous.html" />
+<modified>2006-09-13T07:28:26Z</modified>
+<issued>2006-09-13T07:25:00Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.118</id>
+<created>2006-09-13T07:25:00Z</created>
+<summary type="text/plain">Keyboard shortcuts and navigation are indispensable time savers for an application&apos;s frequent and power users. Who among us has not quickly learned the keyboard shortcuts for performing common tasks within an application that we use regularly? Unfortunately, one of the...</summary>
+<author>
+<name>Ross</name>
+<email>ross@zimbra.com</email></author>
+<dc:subject>Ross Dargahi</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Keyboard shortcuts and navigation are indispensable time savers for an application's frequent and power users. Who among us has not quickly learned the keyboard shortcuts for performing common tasks within an application that we use regularly? </p>
+
+<p>Unfortunately, one of the more common complaints against web-based applications is that they are, in many instances, lacking when it comes to supporting keyboard shortcuts and navigation. Frankly, the lack of keyboard support (both shortcuts and navigation) is something that has annoyed me about the Zimbra Collaboration Suite (ZCS), and it is something that I have been wanting to add to both Kabuki (the Zimbra Ajax Toolkit) and the ZCS; however, I didn't want to just stuff in some basic keyboard shortcuts and call it a day. Instead, I wanted to have a go at implementing the same level of keyboard support that most traditional UI toolkits and desktop applications support. This actually turned out to involve quite a bit of work - for example, since only input elements may have focus (in most browsers) we needed to simulate and track focus for toolkit components which frequently have no native input element associated with them - but at the end of the day, I think it was worth the effort.</p>]]>
+<![CDATA[<p>So the good news is that Kabuki now provides a pretty rich keyboard model that in many ways approximates the level of support found in more traditional UI toolkits. Specifically, this includes support for a canonical focus model, customizable key bindings in UI widgets (not all of them just yet), as well as full support for tab group hierarchies for navigating native and toolkit visual components in an orderly fashion via the tab and arrow keys. Conrad (one of Zimbra's lead Ajax architects), took this work to the next level by implementing keyboard navigation and shortcuts throughout the ZCS and by improving the framework itself. As a result the ZCS now has significant keyboard support in version 4.0, about 80% coverage at the moment, and we are working towards making that even higher. Future work also includes normalized mappings among browsers (very high on our list), I18N support, and supporting custom user-defined bindings.</p>
+
+<p>The bottom line is that the ZCS now supports some pretty spiffy keyboard actions (over 100 of them) including:<br />
+<ul><li>Navigating among the various ZCS apps<br />
+<li>Navigation and selection within a list of items<br />
+<li>Composing and sending an email message<br />
+<li>Creating calendar appointments<br />
+<li>Switching among calendar views<br />
+<li>Creating new tags, folders, calendars, etc<br />
+<li>Popping up the Zimbra Assistant<br />
+<li>Changing views<br />
+<li>Popping up, interacting with, and dismissing context menus<br />
+</ul></p>
+
+<p>You can find a more complete list of supported keyboard events on the <a href="http://wiki.zimbra.com/index.php?title=Zimbra_Web_Client_Keyboard_Shortcuts ">Zimbra Wiki</a></p>
+
+<p>Now onto some of the more technical details on Zimbra's keyboard support. </p>
+
+<p>The keyboard management infrastructure is implemented in the DHTML Widget Toolkit (DWT), which is the Kabuki Ajax toolkit's UI framework. DWT consists of a component model, numerous widgets, an event model, drag and drop infrastructure, and now a keyboard shortcut and navigation model. DWT is loosely modeled after SWT. There are several elements that compose DWT's keyboard management framework:</p>
+
+<h4>Key Maps</h4><p>
+A key map is a set of key bindings. A key binding maps a key sequence to an action. For example, I may decide that "Ctrl+U" marks an email message as unread, or I may decide that a multi-key sequence such as "Ctrl+N" followed by the letter "M" will create a new mail message (Note that by default, there is a 750ms timeout between keys for a multiple-key sequence, though this is configurable via the DwtKeyboardMgr class described later).
+
+<p>DwtKeyMap is the base class for key maps and provides bindings for DWT widgets. Below is a snippet from DwtKeyMap's constructor showing the key bindings for some of the widgets. Note how key sequences bind to the symbolic constants representing keyboard actions:</p>
+
+<pre>
+function DwtKeyMap() {
+ [snip...]
+ this._map["DwtDialog"] = {
+ "Enter": DwtKeyMap.ENTER,
+ "Esc": DwtKeyMap.CANCEL
+ };
+ this._map["DwtButton"] = {
+ "Enter": DwtKeyMap.SELECT_CURRENT,
+ "ArrowDown": DwtKeyMap.SELECT_SUBMENU
+ };
+ this._map["DwtListView"] = {
+ "Space": DwtKeyMap.SELECT_CURRENT,
+ "Ctrl+Space": DwtKeyMap.ADD_SELECT_CURRENT,
+ "Ctrl+`": DwtKeyMap.ADD_SELECT_CURRENT, // Mac FF
+ "ArrowDown": DwtKeyMap.SELECT_NEXT,
+ "Shift+ArrowDown": DwtKeyMap.ADD_SELECT_NEXT,
+ "Ctrl+ArrowDown": DwtKeyMap.NEXT,
+ "ArrowUp": DwtKeyMap.SELECT_PREV,
+ "Shift+ArrowUp": DwtKeyMap.ADD_SELECT_PREV,
+ "Ctrl+ArrowUp": DwtKeyMap.PREV,
+ "Ctrl+A": DwtKeyMap.SELECT_ALL,
+ "Home": DwtKeyMap.SELECT_FIRST,
+ "End": DwtKeyMap.SELECT_LAST,
+ "Enter": DwtKeyMap.DBLCLICK,
+ "Comma": DwtKeyMap.ACTION,
+ "Shift+Comma": DwtKeyMap.ACTION,
+ "Ctrl+Enter": DwtKeyMap.ACTION,
+ "Ctrl+M": DwtKeyMap.ACTION // Mac FF
+ };
+ this._map["DwtMenu"] = {
+ "Esc": DwtKeyMap.CANCEL,
+ "Enter": DwtKeyMap.SELECT_CURRENT,
+ "ArrowDown": DwtKeyMap.SELECT_NEXT,
+ "ArrowUp": DwtKeyMap.SELECT_PREV,
+ "ArrowLeft": DwtKeyMap.SELECT_PARENTMENU,
+ "ArrowRight": DwtKeyMap.SELECT_SUBMENU
+ };
+ [snip...]
+};
+</pre>
+
+<p>Applications may inherit from the above class and add their own maps or override existing ones (for example when subclassing widgets). Note that component and application authors don't need to worry about key sequences, rather they just need to implement the actions that their components support. The keyboard management framework takes care of handling the mapping from key sequences to actions. Once a key sequence has been mapped to an action, the action is passed to the handleKeyAction() method defined by the component (See the sections of DwtKeyboardMgr and DwtControl below for more details). </p>
+
+<p>Decoupling key bindings and actions makes it easy to change the key binding for a given action, or to allow multiple key bindings for that action. Key maps may inherit (including multiply) from other key maps. This allows for extensions as well as application-wide (or default) key maps.</p>
+
+<p>The sample code below shows a portion of the ZCS's key map. Notice how the ZmMailListController inherits from the Global key map.</p>
+
+<pre>
+function ZmKeyMap() {
+ this._map["Global"] = {
+ "`": ZmKeyMap.ASSISTANT,
+ "Shift+`": ZmKeyMap.ASSISTANT,
+ [snip...]
+ }
+ this._map["ZmMailListController"] = {
+ "INHERIT": "Global",
+ "R": ZmKeyMap.REPLY,
+ "A": ZmKeyMap.REPLY_ALL,
+ "R,S": ZmKeyMap.REPLY,
+ "R,A": ZmKeyMap.REPLY_ALL,
+ [snip...]
+ }
+ [snip...]
+}
+</pre>
+
+<p>Key map entries may consist of:</p>
+
+<ul><li>Single keys e.g. "Enter" or "M"
+<li>Single keys plus one or more modifiers e.g. "Ctrl+M" or "Ctrl+Shift+M"
+<li>Multiple key sequences e.g "M,U" or "M,U,A"
+<li>Multiple key sequences plus modifiers e.g. "Shift+M, U" or "Shift+M, Shift+U, A"
+</ul>
+
+<p>We are currently working on a serialization/deserialization interface so that key maps may be serialized to and deserialized from a textual representation. This will help in with localizations and custom/user defined keymaps, and will do away with the need for the hash tables shown above.</p>
+
+<h4>Tab Groups</h4><p>
+
+<p>Tab groups permit the definition of a hierarchical keyboard navigation model. A tab group is a tree structure where the intermediate nodes in the tree are other tab groups and the leaf nodes are focusable components i.e. DWT widgets and/or focusable native HTML elements such as input fields. Tab groups represent the order in which components that the user sees on the screen are traversed via the keyboard. The tab group hierarchy (or tree) is traversed "in order" by the user pressing the tab key, or in reverse order when the user typically presses the shift key plus the tab key.</p>
+
+<p>There is a special tab group called the root tab group. A root tab group has no parent and represents the keyboard navigation order for the components in a given application view. There can be multiple root tab groups within an application, e.g. an email message list view tag group, a calendar new appointment tab group, or a dialog tab group; however, only one root tab group may be active at any given time.</p>
+
+<p>As will be described in the section on DwtKeyboardMgr, tab groups may be "pushed to" and "popped from" the tab group stack. For example, when a dialog is popped up, its corresponding tab group is pushed onto the tab group stack and becomes the active tab group while that dialog is activated. When the dialog is popped down, its tab group is also popped off the tab group stack bringing the underlying tab group (i.e. the one for the active view) back into play, so that the component that had focus prior to the dialog being activated will once again have focus.</p>
+
+<p>Tab groups are implemented by the DwtTabGroup class. That class provides the API for manipulating tab groups. Here are some of the member methods:</p>
+
+<ul><li>addMember(index) - Adds a member to the tab group at index position, or at end if index is omitted
+<li>addMemberBefore(member) - Adds a member to the tab group positioned before another member
+<li>addMemberAfter(member) - Adds a member to the tab group positioned after another member
+<li>blockDefaultHandling(block) - Blocks the default handler from being invoked for this tab group
+<li>contains(member) - Checks to see if an item is a member of this tab group
+<li>removeMember(member) - Removes a member
+<li>replaceMember(old, new) - Replaces a member with another one
+<li>newParent(newParent) - Sets a new parent for this tab group
+<li>getFocusMember() - Gets the current focus member
+<li>setFocusMember(member) - Sets the current focus member
+<li>getNextFocusMember() - Gets the next focus member
+<li>getPrevFocusMember() - Gets the previous focus member
+<li>resetFocusMember() - Resets the focus member to the first available member
+</ul>
+
+<h4>DwtKeyboardMgr</h4><p>
+
+<p>DwtKeyboardMgr is the engine that drives the keyboard management framework. It is responsible for intercepting key events generated by the browser, mapping them to actions (via the registered keymaps), and then dispatching the action to the correct component. In addition, DwtKeyboardMgr is responsible for enforcing the tab order specified by the currently active tab group. Finally, this class also has the machinery that handles multi-key keymap entires by utilizing a timeout mechanism for resolving such sequences.</p>
+
+<p>When dispatching actions, DwtKeyboardMgr will first try and resolve a key sequence with the component that has focus (be it a DWT widget or a native component such as an HTML input element). If the component does not have an action binding for a key sequence (an entry in its key map for the current key sequence), then DwtKeyboardMgr checks to see if a default handler has been pushed on its default handler stack (via the pushDefaultHandler method). If one has been pushed, then DwtKeyboardMgr will query it for the name of the keymap that should be used to resolve the key sequence to an action code. If an action code exists in the key map for the key sequence, then DwtKeyboardMgr will dispatch it to the default handler.</p>
+
+<p>A default handler is analogous to the root tab group. It provides a context for key bindings that are not tied to a specific widget. In a way, the default handler can be thought of as providing a global context. For example, if a button has focus when the character Esc is typed, DwtKeyboardMgr will first give the button a chance to handle the event. If the button does not handle Esc (which is the case), then DwtKeyboardMgr hands the event to the current default handler. So far, there are only two default handlers used within ZCS: an application-level default handler and a dialog-level default handler.</p>
+
+<p>A default handler must implement the following interface:</p>
+
+<ul><li>getKeymapNameToUse() - This method is called by DwtKeyboardMgr to get the name of the key map that should be used for resolving a key sequence. Of course this is application-specific and may change as the user navigates an application. For example, in the case of the ZCS, a different key map may in play for the calendar application as opposed to the email application.
+<li>handleKeyAction(action) - Where the action formal parameter is the action constant bound to the key sequence in the key map. This method is where the real work gets done. Its implementation will perform the work necessary to complete the action. It will return true if it handled the action, or false if it did not.
+</ul>
+
+<p>As previously mentioned, DwtKeyboardMgr is also responsible for enforcing the component tab ordering specified by the currently active root tab group - i.e. the one that is on top of the tab group stack. The way this works is that upon intercepting the tab key, DwtKeyboardMgr will call the DwtTabGroup's getNextFocusMember() method. This method returns the next focusable component in the tab group hierarchy (be it a DWT widget or a native HTML input field). DwtKeyboardMgr will then call the blur() method on the previously focused component, followed by calling the focus() method on the component returned by getNextFocusMember(). Note that I intentionally paralleled the native HTML input element focus() and blur() methods within DWT so there is a canonical way of managing the focus state of any UI component (native or DWT). The combination of DwtKeyboardMgr and DwtTabGroup handles all corner cases such as skipping over components that are not enabled (i.e. grayed out), as well as dealing with scenarios such as the currently focused component becoming disabled.</p>
+
+<p>The following lists some of the more commonly used methods provided by DwtKeyboardMgr:</p>
+
+<ul><li>enable(enable) - Enables or disables keyboard event handling
+<li>isEnabled() - Returns true if keyboard event handling is enabled, else returns false
+<li>grabFocus(element) - Causes element to grab focus - where element is a DWT widget or an HTML input element
+<li>pushDefaultHandler(hdlr) - Pushes a default handler onto the handler stack
+<li>popDefaultHandler()- Pops the default handler off the top of the handler stack
+<li>pushTabGroup(tabGroup) - Pushes a tab group onto the tab group stack and makes it the active tab group
+<li>popTabGroup() - Pops the tab group that is on top of the tab group stack
+<li>registerKeyMap(keyMap) - Registers a key map
+<li>setKeyTimeout(timeout) - Sets the maximum time to allow between key presses for a multi-key key sequence
+<li>setTabGroup(tabGroup) - Replaces the current tab group with the one provided
+</ul>
+
+<h4>DwtControl</h4><p>
+
+<p>DwtControl is the base DWT class from which all widgets ultimately inherit behaviour. DwtControl has a number of responsibilities including hooking into the drag and drop system, basic mouse event handling, and integration with the keyboard shortcut and navigation model.</p>
+
+<p>DwtControl exports public focus() and blur() methods that parallel the native HTML input elements so that there is a canonical set of methods for setting and blurring focus across native and DWT elements. DwtControl also declares four methods that widget authors must implement in order to support keyboard management:</p>
+
+<ul><li>_focus() - This method is called when a control receives focus. Its implementation should provide visual feedback that the control has gained focus (e.g. by drawing a border around the component)
+<li>_blur() - This method is called when a control loses focus. Its implementation should provide the visual feedback that the control has lost focus (e.g. by hiding the border around a control)
+<li>handleKeyAction(actionCode) - This method is responsible for implementing supported actions. The keyboard framework passes in the actionCode associated with a key sequence in the control's keymap. This method returns true if the control handled the actionCode, else it returns false
+</ul>
+
+<h4>Using The Keyboard Framework in an Application</h4><p>
+
+<p>An application programmer wanting to use the keyboard management frameworks typically needs to perform the following steps:</p>
+
+<ol><li>Create a key map class for the application that inherits from DwtKeyMap. Define any application and/or custom widget key maps in this class.
+<li>Implement one or more default handlers for the application should they be required. Recall that the default handler is called when a visual component does not have a action code binding for a key sequence. Depending on the complexity of the application, multiple handlers may be pushed and popped as the user interacts with the application.
+<li>Create any tab group(s) that may be required. Note that tab groups may be created and manipulated during the application lifecycle.
+<li>Instantiate DwtKeyboardMgr.
+<li>Register the application's key map with DwtKeyboardMgr via the registerKeyMap() method.
+<li>Push the currently applicable default handler via DwtKeyboardMgr's pushDefaultHdlr() method.
+<li>Push or set the current tab group via the pushTabGroup() or setTabGroup() method.
+</ol>]]>
+</content>
+</entry>
+<entry>
+<title>Securing Ajax</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/09/securing_ajax.html" />
+<modified>2006-09-11T15:22:42Z</modified>
+<issued>2006-09-09T18:45:46Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.117</id>
+<created>2006-09-09T18:45:46Z</created>
+<summary type="text/plain">To continue the Zimbra blog series on Ajax (recent entries include Ajax innovation is about the server, Ajax optimization techniques (presented at OSCON), OpenAjax update, and Ajax&apos;s impact on scaling), we wanted to offer some general thoughts on securing Ajax...</summary>
+<author>
+<name>Scott</name>
+<url>www.zimbra.com</url><email>scott.dietzen@zimbra.com</email></author>
+<dc:subject>Scott Dietzen</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>To continue the Zimbra blog series on Ajax (recent entries include <a href="http://www.zimbra.com/blog/archives/2006/08/ajax_innovation.html">Ajax innovation is about the server</a>, <a href="http://www.zimbra.com/blog/archives/2006/07/oscon_ajax_slid.html">Ajax optimization techniques (presented at OSCON)</a>, <a href="http://www.zimbra.com/blog/archives/2006/05/openajax_update.html">OpenAjax update</a>, and <a href="http://www.zimbra.com/blog/archives/2006/04/ajax_impact_on.html">Ajax's impact on scaling</a>), we wanted to offer some general thoughts on securing Ajax applications gleaned, of course, from our Zimbra experience. </p>]]>
+<![CDATA[<p><strong>Ajax security advantages. </strong> Less often discussed than Ajax security <em>concerns</em> are inherent security <em>advantages</em> of Ajax clients:<br />
+• Dynamic Ajax client download – Ajax client code is downloaded on demand from the trusted server after a particular user logs-in, automatically ensuring client and server versions are in-sync (for public computers, a shift re-load is better in that it overwrites any Ajax code from that website leftover in the browser cache). <br />
+• No persistent client caching – An exposure with traditional web clients is that they cache HTML pages that can include user/application data on the client disk during normal operation. This can be a security vulnerability for access from public kiosks or other shared computers. Ajax applications like the Zimbra client cache no user data on disk. <br />
+• Server-side control of intranet and Internet mash-ups – Zimlets and other Ajax mash-ups are precluded from accessing arbitrary services on the Internet (unless they open a new iFrame, which can be determined at server deployment time), and must instead (like Java applets) make all invocations back to the originating server (in our case, the Zimbra server). This means the Ajax server can act as a secure, proxy gateway for accessing intranet applications, and can govern which external web services (if any) are accessible for mash-up within the Ajax client. </p>
+
+<p><strong>Ajax security considerations. </strong> Subject to the additional precautions enumerated below, Ajax applications can be made as highly-secure as the web technologies upon which the Ajax model is based. </p>
+
+<p>The most obvious security issue for Ajax applications is that the associated source code is inherently downloaded to the browser for interpretation. This is a concern for any application logic that contains intellectual property that the author does not want to share with the world: while obviscation and minimization (white space removal, shortening identifier) can certainly render JavaScript much harder to read (and debug), developers should consider Ajax applications to be like HTML in that others will be able to examine the fruits of your labor. The only real alternative is to either (1) limit log-in to the application to trusted users/partners (in this way only licensed/authorized users get to download the Ajax application logic); or else (2) keep closely-held algorithms on the server-side, and simply invoke them via web services from the Ajax client. All this is not an issue for the Zimbra Ajax Client, since it is, after all, open source. </p>
+
+<p>Zimbra provides the following additional guarantees to further secure Zimbra deployments over even public networks, techniques that we beileve are broadly relevant for securing Ajax applications:<br />
+• Use SSL/TLS (i.e., HTTPS) – In addition to protecting the privacy/integrity XML/JSON HTTP communications to/from the Ajax client, SSL/TLS encryption limits access to the Ajax source code itself to only those that have legitimate log-ins (as per above), since no-one snooping on the network can see the app. logic. Moreover, SSL/TLS protects the Ajax application (JavaScript, CSS, etc.) from potential security attacks while it is in route to the user's browser. <br />
+• No server-side interpretation of JavaScript or other client-submitted code – Zimbra receives vanilla XML requests from the browser client that are validated and then processed by Zimbra server-side Java code. No JavaScript flows from client to server, and there is no server-side interpretation of any application data (e.g., message bodies). In fact, there is no JavaScript execution on the server period. This ensures that there is no way for even a hostile Ajax client with an authentication credentials to inject malicious code for execution on the server-side. <br />
+• Limited or no client-side interpretation of JavaScript within user data – The Zimbra Ajax client is, of course, an Email application that runs within the confines of the web browser. There is an additional risk, then, to displaying the contents of rich HTML messages that themselves contain JavaScript, in that JavaScript within the message might somehow be able to make malicious calls to the Zimbra server (it is generally precluded from making invocations to other sites). Zimbra blocks any “risky” HTML, first on the server and then again (for extra protection) on the client. When a rich HTML message contains any suspect JavaScript, simply better to err on the side of caution. For most Ajax applications, simply maintaining a strict separation of code from data (and never interpretting JavaScript that is included within user data) protects against such attacks.<br />
+• Benign URLs – All Zimbra’s GET-based REST and URL-based APIs are read-only and do not modify data. This ensures that a user (with pre-validated security credentials) cannot be fooled into clicking on a malicious link (that someone sends he or she in an email or posts on his/her external website) that would have harmful side-effects on that user's data. Again, this is broadly relevant for Ajax applications that potentially display clickable URLs in application data. <br />
+• Mash-ups/Zimlet validation – Zimbra's mash-up architecture does provide the opportunity to introduce server-side Java code (most Zimlets run only on the client side), but the introduction of Zimlets requires server administration privileges. Zimbra recommends only deploying Zimlets that have been certified by Zimbra or else which have been vetted by your security architects internally. The key is to ensure that only trustworthy mash-ups can be deployed with your Ajax application, mash-ups that do not expose additional attack points for malicious users. </p>
+
+<p>The end result is that while an attacker with appropriate security credentials (such as a user's password) could certainly damage that user's server-side data, there is no way for them to compromise other user's data or the server in general. (And, of course, that user could have any damged mailbox state restored to the point before the attack by a Zimbra administrator.) </p>
+
+<p>Stronger network security can be afforded by additional technologies (such as VPNs, Smartcards, etc.), but that's our recipe in general for leveraging the benefits of Ajax without giving up the security your customers, partners, and business depend on. More detail on the Zimbra-specific approach can be found in the newly updated Zimbra Architecture Overivew (linked within our <a href="http://www.zimbra.com/community/documentation.html">Community</a> and <a href="http://www.zimbra.com/products/documentation.html">Product</a> Documentation). </p>
+
+<p>As always, thanks for listening (particularly to my verbose posts).</p>]]>
+</content>
+</entry>
+<entry>
+<title>Some thoughts on Mobility and Web 2.0</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/08/some_thoughts_o.html" />
+<modified>2006-08-29T22:45:39Z</modified>
+<issued>2006-08-29T19:50:57Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.116</id>
+<created>2006-08-29T19:50:57Z</created>
+<summary type="text/plain">I had the pleasure of joining Motorola, SugarCRM, and Funambol on a panel at LinuxWorld regarding the future of mobility. The depressing bit was that we panelists admitted that we could have made almost identical points three years ago: (1)...</summary>
+<author>
+<name>Scott</name>
+<url>www.zimbra.com</url><email>scott.dietzen@zimbra.com</email></author>
+<dc:subject>Scott Dietzen</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>I had the pleasure of joining Motorola, SugarCRM, and <a href="http://www.funambol.com/blog/capo/">Funambol</a> on a panel at LinuxWorld regarding the future of mobility. The depressing bit was that we panelists admitted that we could have made almost identical points three years ago: (1) the Web (1.0 more than 2.0) is coming soon to mobile devices, but the experience isn't entirely there yet; and (2) the challenge to extending applications for mobile devices continues to be exacerbated by innovation in device profiles (more on that below). However, the good news is (1) that a "smart phone" profile is converging---a profile that is likely the right target for non-consumer mobile applications; and (2) that "over the air" sync to the native Personal Information Management (PIM) software on mobile devices has gotten dramatically easier/cheaper, and provides exciting new opportunities for mobile application extension.</p>]]>
+<![CDATA[<p>As an old Web hand, I'm no doubt biased, but I think the Web is a generally the right model for business application extension to mobile devices, simply because the Web does not require any <em>a priori</em> installation of client-side software. After all, if the Web is already the dominant model for B2C and B2B applications on PCs, then it is arguably an even better architectural fit for lower horsepower (CPU, memory) mobile devices. <a href="http://www.zimbra.com/blog/archives/2006/06/defining_web_20.html">Web 2.0/Ajax clients</a> seem like a natural fit too---Ajax is a zero client install and its client/server interaction model is actually a better fit for higher latency networks like those of the wireless carriers. The challenge is that rich Ajax applications (ones with mouse-overs, drag 'n drop, etc.) consume enough laptop CPU that they are still out of the computational reach of most smart phones/PDAs, let alone basic telephones. </p>
+
+<p>The alternative application model to the Web (I include WML/HTTP under the Web architecture) is of course more traditional fat client applications---such as those programmed for J2ME, Windows Mobile, Symbian, Palm, or mobile Linux. Fat client app's are ideal for PIM (email, SMS, calendaring, contacts, tasks), games, and other code that handset manufactures or the carriers are willing to preinstall, but a tougher sell for non-expert business and consumer end-user installation. </p>
+
+<p>However, there is yet another approach that we proposed. It is particularly relevant for applications that can be surfaced via PIM software, such as your customer contacts from your CRM system, your travel itinerary from your procurement application, an urgent notification (via SMS), or even an email request to visit a particular URL. Such items can be submitted to a server like the Zimbra Collaboration Suite (ZCS), and then delivered to the mobile device via "over the air" sync. <a href="http://www.zimbra.com/products/zimbra_mobile.html">Zimbra Mobile</a>, for example, can sync contacts, appointments, and messages to Nokia, Motorola, Samsung, Treo, and Blackberry smart phones, and both intranet and Internet applications can securely export to Zimbra over open/standard protocols. Putting the two together allows Web-enabled applications to deliver PIM-oriented data all the way to the mobile device. </p>
+
+<p>So for applications that can be naturally surfaced via the native mobile PIM, there are now easier/cheaper options for mobile extension. For those business applications that have no such easy fit with PIM, I'm afraid you must still weigh the classic Web versus fat client architectural trade-off. In either case, I think that choosing the smart phone/PDA as the target profile makes more sense because of their relative consistency (screen size, scroll-to-click, J2ME vs. Windows Mobile platform), at least when compared with targeting the continuing stream of ever more compact, ever more personalized mobile phones. </p>]]>
+</content>
+</entry>
+<entry>
+<title>Open source and IP ownership</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/08/open_source_and_2.html" />
+<modified>2006-08-16T15:29:47Z</modified>
+<issued>2006-08-15T16:58:03Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.114</id>
+<created>2006-08-15T16:58:03Z</created>
+<summary type="text/plain">I got myself in a small bit of trouble recently talking about open source IP ownership when I should have been talking about the cool new collaboration and mobile features in the 4.0 release of the Zimbra Collaboration Suite. (Nothing...</summary>
+<author>
+<name>Scott</name>
+<url>www.zimbra.com</url><email>scott.dietzen@zimbra.com</email></author>
+<dc:subject>Scott Dietzen</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>I got myself in a small bit of trouble recently talking about open source IP ownership when I should have been talking about the cool new collaboration and mobile features in the <a href="http://www.zimbra.com/products/countdown.html">4.0 release of the Zimbra Collaboration Suite</a>. (Nothing like a developer coming by your cube and saying "You said what?") While I didn't do such a good job at the time, the underlying point is an important one, so I'm going to give it another shot ...</p>]]>
+<![CDATA[<p>It is increasingly common practice in open source communities to insist upon a single organization owning the IP rights for a particular project. For example, the Apache and Free Software Foundations do this as well as private firms like Zimbra. The primary goal of IP ownership is to better guarantee "squeaky clean" IP (that is, that all contributed code is unencumbered by any hidden IP rights) for the benefit of the community as well as for customers. This also ensures that open source licensing upgrade decisions can be made for future releases of the open source license itself---without an organizational owner, projects can effectively get locked to a particular version of a license because there is no easy way to get all of the IP owners together to make a decision about upgrading. </p>
+
+<p>The grief came in particular from my drawing parallels between Zimbra---a for-profit company---with more altruistic non-profit organizations like Apache and FSF regarding IP ownership. No doubt there are clear differences between for-profits and non-profits that the prospective community members have every right to consider, but I think in terms of IP ownership there is more in common than different. </p>
+
+<p>For a potential community member, the most important thing is the long-term guarantee of their freedoms: (1) Open source rights (granted under the open source software license) to use the product in perpetuity for free, to produce and redistribute any derivative works thereof for free, and so on; and (2) rights to do whatever they may see fit in perpetuity for any of their own contributions that they made in good faith to the project. (The good contribution agreements grant contributors back all of their rights <strong>except </strong> those that could interfere with the community, such as the right to withdraw their contribution in the future, the right to charge the community patent royalties down the road, etc. For example, Zimbra's Contributor Agreement can be found <a href="http://www.zimbra.com/community/contribute.html">here</a>. For another take, check out <a href="http://dojotoolkit.org/foundation/">Dojo</a>, one of our <a href="http://www.zimbra.com/partners/open_ajax_partners.html">Open Ajax Alliance</a> partners. ) This practice seems to me to strike the right balance between preserving individual freedoms without sacrificing the freedoms of the community as a whole. </p>
+
+<p>Both non-profit and for-profit open source organizations equally guarantee these freedoms to their communities, the difference being that the for-profit ones (like Zimbra) also strive to sell <strong>optional </strong>value-added services on the side, much of the proceeds of which then funds the further development of the open source software. </p>]]>
+</content>
+</entry>
+</feed> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/images/locale.png b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/images/locale.png
new file mode 100644
index 0000000000..0dfece4d3f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/images/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/proxy/proxy.php b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/proxy/proxy.php
new file mode 100644
index 0000000000..71853e9b86
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/proxy/proxy.php
@@ -0,0 +1,60 @@
+<?php
+
+$ALLOWED_URL_PREFIXES = array(
+ "http://feeds.feedburner.com",
+ "http://blog.dojotoolkit.org/feed",
+ "http://www.jackslocum.com/blog/feed/",
+ "http://portlets.blogspot.com",
+ "http://www.go-mono.com/monologue/index.rss",
+ "http://feeds.yuiblog.com/YahooUserInterfaceBlog",
+);
+
+$ALLOWED_URL_SUFFIXES = array(
+ ".rdf",
+ ".rss",
+ "atom.xml",
+ "rss2",
+ "rss.xml",
+ "feed/atom/",
+);
+
+$proxy_url = isset($_GET['proxy']) ? $_GET['proxy'] : false;
+
+if (!$proxy_url) {
+ header("HTTP/1.0 400 Bad Request");
+ echo "proxy.php failed because proxy parameter is missing";
+ exit();
+}
+
+$is_url_valid = false;
+foreach ($ALLOWED_URL_PREFIXES as $prefix) {
+ if (strpos($proxy_url, $prefix) === 0) {
+ $is_url_valid = true;
+ break;
+ }
+}
+
+foreach ($ALLOWED_URL_SUFFIXES as $suffix) {
+ if (strpos($proxy_url, $suffix) === strlen($proxy_url)-strlen($suffix)) {
+ $is_url_valid = true;
+ break;
+ }
+}
+
+if (!$is_url_valid) {
+ header("HTTP/1.0 400 Bad Request");
+ echo "Address is not allowed!";
+ exit();
+}
+
+$session = curl_init($proxy_url);
+
+curl_setopt($session, CURLOPT_HEADER, false);
+curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
+
+header("Content-Type: application/xml");
+echo(curl_exec($session));
+
+curl_close($session);
+
+?> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/C.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/C.po
new file mode 100644
index 0000000000..fc408105a1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/C.po
@@ -0,0 +1,93 @@
+# Default translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:52+0100\n"
+"PO-Revision-Date: 2006-12-19 16:54+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/feedreader/Application.js:133
+msgid "reloading ..."
+msgstr ""
+
+#: source/class/feedreader/Application.js:138
+msgid "qooxdoo feed reader."
+msgstr ""
+
+#: source/class/feedreader/Application.js:143
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: source/class/feedreader/Application.js:144
+msgid "Remove feed"
+msgstr ""
+
+#: source/class/feedreader/Application.js:147
+msgid "Reload"
+msgstr ""
+
+#: source/class/feedreader/Application.js:149
+msgid "(%1) Reload the feeds."
+msgstr ""
+
+#: source/class/feedreader/Application.js:156
+#: source/class/feedreader/Application.js:158
+msgid "English"
+msgstr ""
+
+#: source/class/feedreader/Application.js:157
+msgid "German"
+msgstr ""
+
+#: source/class/feedreader/Application.js:159
+msgid "Turkish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:160
+msgid "Italian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:161
+msgid "Spanish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:162
+msgid "Swedish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:163
+msgid "Russian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:186
+msgid "Help"
+msgstr ""
+
+#: source/class/feedreader/Application.js:194
+msgid "News feeds"
+msgstr ""
+
+#: source/class/feedreader/Application.js:215
+msgid "Subject"
+msgstr ""
+
+#: source/class/feedreader/Application.js:216
+msgid "Sender"
+msgstr ""
+
+#: source/class/feedreader/Application.js:217
+msgid "Date"
+msgstr ""
+
+#: source/class/feedreader/ArticleView.js:79
+msgid "read more ..."
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/de.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/de.po
new file mode 100644
index 0000000000..099f9855d4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/de.po
@@ -0,0 +1,95 @@
+# German translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:52+0100\n"
+"PO-Revision-Date: 2006-12-22 09:59+0100\n"
+"Last-Translator: Fabian Jakobs <fabian dot jakobs at 1und1 dot de>\n"
+"Language-Team: <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: source/class/feedreader/Application.js:133
+#, fuzzy
+msgid "reloading ..."
+msgstr "aktualisieren ..."
+
+#: source/class/feedreader/Application.js:138
+msgid "qooxdoo feed reader."
+msgstr "\"qooxdoo\" feed reader"
+
+#: source/class/feedreader/Application.js:143
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Feed hinzufügen"
+msgstr[1] "Feeds hinzufügen"
+
+#: source/class/feedreader/Application.js:144
+msgid "Remove feed"
+msgstr "Feed löschen"
+
+#: source/class/feedreader/Application.js:147
+msgid "Reload"
+msgstr "Aktualisieren"
+
+#: source/class/feedreader/Application.js:149
+msgid "(%1) Reload the feeds."
+msgstr "(%1) Feeds aktualisieren."
+
+#: source/class/feedreader/Application.js:156
+#: source/class/feedreader/Application.js:158
+msgid "English"
+msgstr "Englisch"
+
+#: source/class/feedreader/Application.js:157
+msgid "German"
+msgstr "Deutsch"
+
+#: source/class/feedreader/Application.js:159
+msgid "Turkish"
+msgstr "Türkisch"
+
+#: source/class/feedreader/Application.js:160
+msgid "Italian"
+msgstr "Italienisch"
+
+#: source/class/feedreader/Application.js:161
+msgid "Spanish"
+msgstr "Spanisch"
+
+#: source/class/feedreader/Application.js:162
+msgid "Swedish"
+msgstr "Schwedisch"
+
+#: source/class/feedreader/Application.js:163
+msgid "Russian"
+msgstr "Russisch"
+
+#: source/class/feedreader/Application.js:186
+msgid "Help"
+msgstr "Hilfe"
+
+#: source/class/feedreader/Application.js:194
+msgid "News feeds"
+msgstr "Nachrichtenkanäle"
+
+#: source/class/feedreader/Application.js:215
+msgid "Subject"
+msgstr "Betreff"
+
+#: source/class/feedreader/Application.js:216
+msgid "Sender"
+msgstr "Absender"
+
+#: source/class/feedreader/Application.js:217
+msgid "Date"
+msgstr "Datum"
+
+#: source/class/feedreader/ArticleView.js:79
+msgid "read more ..."
+msgstr "weitere Informationen ..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/en.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/en.po
new file mode 100644
index 0000000000..e24d30878b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/en.po
@@ -0,0 +1,93 @@
+# English translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:52+0100\n"
+"PO-Revision-Date: 2006-12-21 10:17+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/feedreader/Application.js:133
+msgid "reloading ..."
+msgstr "reloading ..."
+
+#: source/class/feedreader/Application.js:138
+msgid "qooxdoo feed reader."
+msgstr "qooxdoo feed reader."
+
+#: source/class/feedreader/Application.js:143
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Add feed"
+msgstr[1] "Add feeds"
+
+#: source/class/feedreader/Application.js:144
+msgid "Remove feed"
+msgstr "Remove feed"
+
+#: source/class/feedreader/Application.js:147
+msgid "Reload"
+msgstr "Reload"
+
+#: source/class/feedreader/Application.js:149
+msgid "(%1) Reload the feeds."
+msgstr "(%1) Reload the feeds."
+
+#: source/class/feedreader/Application.js:156
+#: source/class/feedreader/Application.js:158
+msgid "English"
+msgstr "English"
+
+#: source/class/feedreader/Application.js:157
+msgid "German"
+msgstr "German"
+
+#: source/class/feedreader/Application.js:159
+msgid "Turkish"
+msgstr "Turkish"
+
+#: source/class/feedreader/Application.js:160
+msgid "Italian"
+msgstr "Italian"
+
+#: source/class/feedreader/Application.js:161
+msgid "Spanish"
+msgstr "Spanish"
+
+#: source/class/feedreader/Application.js:162
+msgid "Swedish"
+msgstr "Swedish"
+
+#: source/class/feedreader/Application.js:163
+msgid "Russian"
+msgstr "Russian"
+
+#: source/class/feedreader/Application.js:186
+msgid "Help"
+msgstr "Help"
+
+#: source/class/feedreader/Application.js:194
+msgid "News feeds"
+msgstr "News feeds"
+
+#: source/class/feedreader/Application.js:215
+msgid "Subject"
+msgstr "Subject"
+
+#: source/class/feedreader/Application.js:216
+msgid "Sender"
+msgstr "Sender"
+
+#: source/class/feedreader/Application.js:217
+msgid "Date"
+msgstr "Date"
+
+#: source/class/feedreader/ArticleView.js:79
+msgid "read more ..."
+msgstr "read more ..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/es.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/es.po
new file mode 100644
index 0000000000..cb1e02ccb0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/es.po
@@ -0,0 +1,94 @@
+# Spanish translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:52+0100\n"
+"PO-Revision-Date: 2007-01-24 20:54+0100\n"
+"Last-Translator: Carsten Rammoser <carsten@rammoser.com>\n"
+"Language-Team: <camilo.aguilar@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
+"X-Poedit-Country: COLOMBIA\n"
+
+#: source/class/feedreader/Application.js:133
+msgid "reloading ..."
+msgstr "actualizando ..."
+
+#: source/class/feedreader/Application.js:138
+msgid "qooxdoo feed reader."
+msgstr "lector de feeds qooxdoo."
+
+#: source/class/feedreader/Application.js:143
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Agregar feed"
+msgstr[1] "Agregar feeds"
+
+#: source/class/feedreader/Application.js:144
+msgid "Remove feed"
+msgstr "Eliminar feed"
+
+#: source/class/feedreader/Application.js:147
+msgid "Reload"
+msgstr "Actualizar"
+
+#: source/class/feedreader/Application.js:149
+msgid "(%1) Reload the feeds."
+msgstr "(%1) Actualizar los feeds."
+
+#: source/class/feedreader/Application.js:156
+#: source/class/feedreader/Application.js:158
+msgid "English"
+msgstr "Inglés"
+
+#: source/class/feedreader/Application.js:157
+msgid "German"
+msgstr "Alemán"
+
+#: source/class/feedreader/Application.js:159
+msgid "Turkish"
+msgstr "Turco"
+
+#: source/class/feedreader/Application.js:160
+msgid "Italian"
+msgstr "Italiano"
+
+#: source/class/feedreader/Application.js:161
+msgid "Spanish"
+msgstr "Español"
+
+#: source/class/feedreader/Application.js:162
+msgid "Swedish"
+msgstr "Sueco"
+
+#: source/class/feedreader/Application.js:163
+msgid "Russian"
+msgstr "Ruso"
+
+#: source/class/feedreader/Application.js:186
+msgid "Help"
+msgstr "Ayuda"
+
+#: source/class/feedreader/Application.js:194
+msgid "News feeds"
+msgstr "Feeds de noticias"
+
+#: source/class/feedreader/Application.js:215
+msgid "Subject"
+msgstr "Asunto"
+
+#: source/class/feedreader/Application.js:216
+msgid "Sender"
+msgstr "Remitente"
+
+#: source/class/feedreader/Application.js:217
+msgid "Date"
+msgstr "Fecha"
+
+#: source/class/feedreader/ArticleView.js:79
+msgid "read more ..."
+msgstr "leer más ..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/it.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/it.po
new file mode 100644
index 0000000000..1431458283
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/it.po
@@ -0,0 +1,94 @@
+# Italian translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-23 17:57+0100\n"
+"PO-Revision-Date: 2006-12-21 22:55+0100\n"
+"Last-Translator: Alessandro Sala <alessandro.sala@mclink.net>\n"
+"Language-Team: Italiano <it@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: source/class/feedreader/Application.js:130
+msgid "reloading ..."
+msgstr "ricarico..."
+
+#: source/class/feedreader/Application.js:135
+msgid "qooxdoo feed reader."
+msgstr "lettore di feed di qooxdoo"
+
+#: source/class/feedreader/Application.js:140
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Aggiungi un feed"
+msgstr[1] "Aggiungi dei feed"
+
+#: source/class/feedreader/Application.js:141
+msgid "Remove feed"
+msgstr "Rimuovi un feed"
+
+#: source/class/feedreader/Application.js:144
+msgid "Reload"
+msgstr "Ricarica"
+
+#: source/class/feedreader/Application.js:146
+msgid "(%1) Reload the feeds."
+msgstr "(%1) Ricarica i feed"
+
+#: source/class/feedreader/Application.js:153
+#: source/class/feedreader/Application.js:155
+msgid "English"
+msgstr "Inglese"
+
+#: source/class/feedreader/Application.js:154
+msgid "German"
+msgstr "Tedesco"
+
+#: source/class/feedreader/Application.js:156
+msgid "Turkish"
+msgstr "Turco"
+
+#: source/class/feedreader/Application.js:157
+msgid "Italian"
+msgstr "Italiano"
+
+#: source/class/feedreader/Application.js:158
+msgid "Spanish"
+msgstr "Spagnolo"
+
+#: source/class/feedreader/Application.js:159
+msgid "Swedish"
+msgstr "Svedese"
+
+#: source/class/feedreader/Application.js:160
+msgid "Russian"
+msgstr "Russo"
+
+#: source/class/feedreader/Application.js:183
+msgid "Help"
+msgstr "Aiuto"
+
+#: source/class/feedreader/Application.js:191
+msgid "News feeds"
+msgstr "Feed di notizie"
+
+#: source/class/feedreader/Application.js:212
+msgid "Subject"
+msgstr "Oggetto"
+
+#: source/class/feedreader/Application.js:213
+msgid "Sender"
+msgstr "Mittente"
+
+#: source/class/feedreader/Application.js:214
+msgid "Date"
+msgstr "Data"
+
+#: source/class/feedreader/ArticleView.js:77
+msgid "read more ..."
+msgstr "continua..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/ru.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/ru.po
new file mode 100644
index 0000000000..b728919dbf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/ru.po
@@ -0,0 +1,94 @@
+# Russian translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-23 17:57+0100\n"
+"PO-Revision-Date: 2006-12-20 23:22+0200\n"
+"Last-Translator: <zindel@gammacenter.com>\n"
+"Language-Team: <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: source/class/feedreader/Application.js:130
+msgid "reloading ..."
+msgstr "загрузка..."
+
+#: source/class/feedreader/Application.js:135
+msgid "qooxdoo feed reader."
+msgstr "qooxdoo RSS reader"
+
+#: source/class/feedreader/Application.js:140
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Добавить канал"
+msgstr[1] "Добавить каналы"
+
+#: source/class/feedreader/Application.js:141
+msgid "Remove feed"
+msgstr "Удалить канал"
+
+#: source/class/feedreader/Application.js:144
+msgid "Reload"
+msgstr "Перечитать"
+
+#: source/class/feedreader/Application.js:146
+msgid "(%1) Reload the feeds."
+msgstr "{%1) Перечитать все каналы."
+
+#: source/class/feedreader/Application.js:153
+#: source/class/feedreader/Application.js:155
+msgid "English"
+msgstr "Английский"
+
+#: source/class/feedreader/Application.js:154
+msgid "German"
+msgstr "Немецкий"
+
+#: source/class/feedreader/Application.js:156
+msgid "Turkish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:157
+msgid "Italian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:158
+msgid "Spanish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:159
+msgid "Swedish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:160
+msgid "Russian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:183
+msgid "Help"
+msgstr "Помощь"
+
+#: source/class/feedreader/Application.js:191
+msgid "News feeds"
+msgstr "Новостные каналы"
+
+#: source/class/feedreader/Application.js:212
+msgid "Subject"
+msgstr "Тема"
+
+#: source/class/feedreader/Application.js:213
+msgid "Sender"
+msgstr "Отправитель"
+
+#: source/class/feedreader/Application.js:214
+msgid "Date"
+msgstr "Дата"
+
+#: source/class/feedreader/ArticleView.js:77
+msgid "read more ..."
+msgstr "далее..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/sv.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/sv.po
new file mode 100644
index 0000000000..f1a03b3b52
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/sv.po
@@ -0,0 +1,93 @@
+# Swedish translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-23 17:57+0100\n"
+"PO-Revision-Date: 2006-12-19 11:10+0100\n"
+"Last-Translator: Henric Johansson <henric.johansson@mindset.se>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: source/class/feedreader/Application.js:130
+msgid "reloading ..."
+msgstr "uppdaterar..."
+
+#: source/class/feedreader/Application.js:135
+msgid "qooxdoo feed reader."
+msgstr "qooxdoo feed läsare."
+
+#: source/class/feedreader/Application.js:140
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Lägg till feed"
+msgstr[1] "Lägg till feeds"
+
+#: source/class/feedreader/Application.js:141
+msgid "Remove feed"
+msgstr "Ta bort feed"
+
+#: source/class/feedreader/Application.js:144
+msgid "Reload"
+msgstr "Uppdatera"
+
+#: source/class/feedreader/Application.js:146
+msgid "(%1) Reload the feeds."
+msgstr "(%1) Uppdatera feedsen."
+
+#: source/class/feedreader/Application.js:153
+#: source/class/feedreader/Application.js:155
+msgid "English"
+msgstr "Engelska"
+
+#: source/class/feedreader/Application.js:154
+msgid "German"
+msgstr "Tyska"
+
+#: source/class/feedreader/Application.js:156
+msgid "Turkish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:157
+msgid "Italian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:158
+msgid "Spanish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:159
+msgid "Swedish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:160
+msgid "Russian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:183
+msgid "Help"
+msgstr "Hjälp"
+
+#: source/class/feedreader/Application.js:191
+msgid "News feeds"
+msgstr "Nyhetsfeed"
+
+#: source/class/feedreader/Application.js:212
+msgid "Subject"
+msgstr "Ämne"
+
+#: source/class/feedreader/Application.js:213
+msgid "Sender"
+msgstr "Avsändare"
+
+#: source/class/feedreader/Application.js:214
+msgid "Date"
+msgstr "Datum"
+
+#: source/class/feedreader/ArticleView.js:77
+msgid "read more ..."
+msgstr "läs mer..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/tr.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/tr.po
new file mode 100644
index 0000000000..f3ccc949b8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/tr.po
@@ -0,0 +1,95 @@
+# Turkish translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-23 17:57+0100\n"
+"PO-Revision-Date: 2006-12-18 21:51+0200\n"
+"Last-Translator: Fatih Tolga Ata <fatih@diyezon.com>\n"
+"Language-Team: <fatih@tullab.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Turkish\n"
+"X-Poedit-Country: Turkey\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: source/class/feedreader/Application.js:130
+msgid "reloading ..."
+msgstr "yenileniyor ..."
+
+#: source/class/feedreader/Application.js:135
+msgid "qooxdoo feed reader."
+msgstr "qooxdoo besleme okuyucu."
+
+#: source/class/feedreader/Application.js:140
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Besleme ekle"
+msgstr[1] "Beslemeler ekle"
+
+#: source/class/feedreader/Application.js:141
+msgid "Remove feed"
+msgstr "Besleme sil"
+
+#: source/class/feedreader/Application.js:144
+msgid "Reload"
+msgstr "Yenile"
+
+#: source/class/feedreader/Application.js:146
+msgid "(%1) Reload the feeds."
+msgstr "(%1) Beslemesini yenile."
+
+#: source/class/feedreader/Application.js:153
+#: source/class/feedreader/Application.js:155
+msgid "English"
+msgstr "İngilizce"
+
+#: source/class/feedreader/Application.js:154
+msgid "German"
+msgstr "Almanca"
+
+#: source/class/feedreader/Application.js:156
+msgid "Turkish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:157
+msgid "Italian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:158
+msgid "Spanish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:159
+msgid "Swedish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:160
+msgid "Russian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:183
+msgid "Help"
+msgstr "Yardım"
+
+#: source/class/feedreader/Application.js:191
+msgid "News feeds"
+msgstr "Haber beslemeleri"
+
+#: source/class/feedreader/Application.js:212
+msgid "Subject"
+msgstr "Konu"
+
+#: source/class/feedreader/Application.js:213
+msgid "Sender"
+msgstr "Gönderen"
+
+#: source/class/feedreader/Application.js:214
+msgid "Date"
+msgstr "Tarih"
+
+#: source/class/feedreader/ArticleView.js:77
+msgid "read more ..."
+msgstr "daha fazla ..."