X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/ee06f37b0f6f6d94cd05a6ffae556660f7c4a2bc..c930e9176a5a85509c5b0230e2bff5c22a591432:/docs/source/FeedWindow.html?ds=sidebyside diff --git a/docs/source/FeedWindow.html b/docs/source/FeedWindow.html new file mode 100644 index 00000000..8b50be57 --- /dev/null +++ b/docs/source/FeedWindow.html @@ -0,0 +1,131 @@ + + + The source code + + + + +
FeedWindow = function() {
+    this.feedUrl = new Ext.form.ComboBox({
+        id: 'feed-url',
+        fieldLabel: 'Enter the URL of the feed to add',
+        emptyText: 'http://example.com/blog/feed',
+        width: 450,
+        validationEvent: false,
+        validateOnBlur: false,
+        msgTarget: 'under',
+        triggerAction: 'all',
+        displayField: 'url',
+        mode: 'local',
+
+        listeners:{
+            valid: this.syncShadow,
+            invalid: this.syncShadow,
+            scope: this
+        },
+        tpl: new Ext.XTemplate(
+                '
', + '{url}{text}', + '
', + '
'), + store: new Ext.data.ArrayStore({ + fields: ['url', 'text'], + data : this.defaultFeeds + }) + }); + + this.form = new Ext.FormPanel({ + labelAlign:'top', + items:this.feedUrl, + border: false, + bodyStyle:'background:transparent;padding:10px;' + }); + + FeedWindow.superclass.constructor.call(this, { + title: 'Add Feed', + iconCls: 'feed-icon', + id: 'add-feed-win', + autoHeight: true, + width: 500, + resizable: false, + plain:true, + modal: true, + y: 100, + autoScroll: true, + closeAction: 'hide', + + buttons:[{ + text: 'Add Feed!', + handler: this.onAdd, + scope: this + },{ + text: 'Cancel', + handler: this.hide.createDelegate(this, []) + }], + + items: this.form + }); + + this.addEvents({add:true}); +} + +Ext.extend(FeedWindow, Ext.Window, { + defaultFeeds : [ + ['http://www.divergingpath.com/rss.cfm?mode=full', 'Aaron Conran\'s Blog'], + ['http://feeds.yuiblog.com/YahooUserInterfaceBlog', 'Yahoo! UI Blog'], + ['http://feeds.feedburner.com/jquery/', 'jQuery Blog'], + ['http://sports.yahoo.com/nba/rss.xml', 'NBA News'], + ['http://feeds.dzone.com/dzone/frontpage', 'DZone.com'] + ], + + show : function(){ + if(this.rendered){ + this.feedUrl.setValue(''); + } + FeedWindow.superclass.show.apply(this, arguments); + }, + + onAdd: function() { + this.el.mask('Validating Feed...', 'x-mask-loading'); + var url = this.feedUrl.getValue(); + Ext.Ajax.request({ + url: 'feed-proxy.php', + params: {feed: url}, + success: this.validateFeed, + failure: this.markInvalid, + scope: this, + feedUrl: url + }); + }, + + markInvalid : function(){ + this.feedUrl.markInvalid('The URL specified is not a valid RSS2 feed.'); + this.el.unmask(); + }, + + validateFeed : function(response, options){ + var dq = Ext.DomQuery; + var url = options.feedUrl; + + try{ + var xml = response.responseXML; + var channel = xml.getElementsByTagName('channel')[0]; + if(channel){ + var text = dq.selectValue('title', channel, url); + var description = dq.selectValue('description', channel, 'No description available.'); + this.el.unmask(); + this.hide(); + + return this.fireEvent('validfeed', { + url: url, + text: text, + description: description + }); + } + }catch(e){ + } + this.markInvalid(); + } +});
+ + \ No newline at end of file