FeedWindow.js
资源名称:ext-3.0.0.zip [点击查看]
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:4k
源码类别:
中间件编程
开发平台:
JavaScript
- /*! * Ext JS Library 3.0.0 * Copyright(c) 2006-2009 Ext JS, LLC * licensing@extjs.com * http://www.extjs.com/license */ 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(
- '<tpl for="."><div class="x-combo-list-item">',
- '<em>{url}</em><strong>{text}</strong>',
- '<div class="x-clear"></div>',
- '</div></tpl>'),
- 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();
- }
- });