亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? feed-viewer.js

?? 著重用css實現(xiàn)頁面顯示功能,實現(xiàn)簡單數(shù)據(jù)庫連接,是很好的入門教程
?? JS
字號:
/*
 * Ext JS Library 1.1.1
 * Copyright(c) 2006-2007, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://www.extjs.com/license
 */

var Viewer = function(){
    // a bunch of private variables accessible by member function
    var layout, statusPanel, south, preview, previewBody, feedPanel;
    var grid, ds, sm;
    var addFeed, currentItem, tpl;
    var suggested, feeds;
    var sfeeds, myfeeds;
    var seed = 0;
    
    // feed clicks bubble up to this universal handler
    var feedClicked = function(e){
        // find the "a" element that was clicked
        var a = e.getTarget('a');
        if(a){
            e.preventDefault();
            Viewer.loadFeed(a.href);
            Viewer.changeActiveFeed(a.id.substr(5));
        }  
    };
    
    return {
        init : function(){
            // initialize state manager, we will use cookies
            Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
            
            // initialize the add feed overlay and buttons
            addFeed = Ext.get('add-feed');
            var addBtn = Ext.get('add-btn');
            addBtn.on('click', this.validateFeed, this);
            var closeBtn = Ext.get('add-feed-close');
            closeBtn.on('click', addFeed.hide, addFeed, true);
            
            // create Elements for the feed and suggested lists
            feeds = Ext.get('feeds'); suggested = Ext.get('suggested');
            
            // delegate clicks on the lists
            feeds.on('click', feedClicked);
            suggested.on('click', feedClicked);
            
            //create feed template
            tpl = new Ext.DomHelper.Template('<a id="feed-{id}" href="{url}"><span class="body">{name}<br><span class="desc">{desc}</span></span></a>');
            
            // collection of feeds added by the user
            myfeeds = {};
            
            // some default feeds
            sfeeds = {
                'ajaxian':{id:'ajaxian', name: 'Ajaxian', desc: 'Cleaning up the web with Ajax.', url:'http://feeds.feedburner.com/ajaxian'},
                'yui':{id:'yui', name: 'YUI Blog', desc: 'News and Articles about Designing and Developing with Yahoo! Libraries.', url:'http://feeds.yuiblog.com/YahooUserInterfaceBlog'},
                'sports':{id:'sports', name: 'Yahoo! Sports', desc: 'Latest news and information for the world of sports.', url:'http://sports.yahoo.com/top/rss.xml'}
            };
            
            // go through the suggested feeds and add them to the list
            for(var id in sfeeds) {
            	var f = sfeeds[id];
            	tpl.append(suggested.dom, f);
            }
            
            // create the main layout
            layout = new Ext.BorderLayout(document.body, {
                north: {
                    split:false,
                    initialSize: 25,
                    titlebar: false
                },
                west: {
                    split:true,
                    initialSize: 200,
                    minSize: 175,
                    maxSize: 400,
                    titlebar: true,
                    collapsible: true,
                    animate: true,
                    autoScroll:false,
                    useShim:true,
                    cmargins: {top:0,bottom:2,right:2,left:2}
                },
                east: {
                    split:true,
                    initialSize: 200,
                    minSize: 175,
                    maxSize: 400,
                    titlebar: true,
                    collapsible: true,
                    animate: true,
                    autoScroll:false,
                    useShim:true,
                    collapsed:true,
                    cmargins: {top:0,bottom:2,right:2,left:2}
                },
                south: {
                    split:false,
                    initialSize: 22,
                    titlebar: false,
                    collapsible: false,
                    animate: false
                },
                center: {
                    titlebar: false,
                    autoScroll:false,
                    tabPosition: 'top',
                    closeOnTab: true,
                    alwaysShowTabs: true,
                    resizeTabs: true
                }
            });
            // tell the layout not to perform layouts until we're done adding everything
            layout.beginUpdate();
            layout.add('north', new Ext.ContentPanel('header'));
            
            // initialize the statusbar
            statusPanel = new Ext.ContentPanel('status');
            south = layout.getRegion('south');
            south.add(statusPanel);
            
            // create the add feed toolbar
            var feedtb = new Ext.Toolbar('myfeeds-tb');
            // They can also be referenced by id in or components
            feedtb.add( {
              id:'add-feed-btn',
              icon: 'images/add-feed.gif', // icons can also be specified inline
              cls: 'x-btn-text-icon',
              text: 'Add feed',
              handler: this.showAddFeed.createDelegate(this),
              tooltip: '<b>Add Feed</b><br/>Button with tooltip'
          });            
            
            layout.add('west', new Ext.ContentPanel('feeds', {title: 'My Feeds', fitToFrame:true, toolbar: feedtb, resizeEl:'myfeeds-body'}));
            layout.add('east', new Ext.ContentPanel('suggested', {title: 'Suggested Feeds', fitToFrame:true}));
            
            // the inner layout houses the grid panel and the preview panel
            var innerLayout = new Ext.BorderLayout('main', {
                south: {
                    split:true,
                    initialSize: 250,
                    minSize: 100,
                    maxSize: 400,
                    autoScroll:false,
                    collapsible:true,
                    titlebar: true,
                    animate: true,
                    cmargins: {top:2,bottom:0,right:0,left:0}
                },
                center: {
                    autoScroll:false,
                    titlebar:false
                }
            });
            // add the nested layout
            feedPanel = new Ext.NestedLayoutPanel(innerLayout, 'View Feed');
            layout.add('center', feedPanel);
            
            innerLayout.beginUpdate();
            
            var lv = innerLayout.add('center', new Ext.ContentPanel('feed-grid', {title: 'Feed Articles', fitToFrame:true}));
            this.createView(lv.getEl());
            
            // create the preview panel and toolbar
            previewBody = Ext.get('preview-body');
            var tb = new Ext.Toolbar('preview-tb');
            
            tb.addButton({text: 'View in New Tab',icon: 'images/new_tab.gif',cls: 'x-btn-text-icon', handler: this.showInTab.createDelegate(this)});
            tb.addSeparator();
            tb.addButton({text: 'View in New Window',icon: 'images/new_window.gif',cls: 'x-btn-text-icon', handler: this.showInWindow.createDelegate(this)});
            
            preview = new Ext.ContentPanel('preview', {title: "Preview", fitToFrame:true, toolbar: tb, resizeEl:'preview-body'});
            innerLayout.add('south', preview);
            
            // restore innerLayout state
            innerLayout.restoreState();
            innerLayout.endUpdate(true);
            
            // restore any state information
            layout.restoreState();
            layout.endUpdate();
            
            this.loadFeed('http://feeds.feedburner.com/ajaxian');
            this.changeActiveFeed('ajaxian');
        },
        
        createView : function(el){
            function reformatDate(feedDate){
                var d = new Date(Date.parse(feedDate));
                return d ? d.dateFormat('D M j, Y, g:i a') : '';
            }
            
            var reader = new Ext.data.XmlReader({record: 'item'},
                ['title', {name:'pubDate', type:'date'}, 'link', 'description']
            );

            ds = new Ext.data.Store({
                proxy: new Ext.data.HttpProxy({
                    url: 'feed-proxy.php'
                }),
                reader : reader
            });
            
            ds.on('load', this.onLoad, this);
            
            var tpl = new Ext.Template(
                  '<div class="feed-item">' +
                  '<div class="item-title">{title}</div>' +
                  '<div class="item-date">{date}</div>' +
                  '{desc}</div>'
            );
            
            var view = new Ext.View(el, tpl, {store: ds, singleSelect:true, selectedClass:'selected-article'});
            view.prepareData = function(data){
                return {
                    title: data.title,
                    date: reformatDate(data.pubDate),
                    desc: data.description.replace(/<\/?[^>]+>/gi, '').ellipse(350)
                
                };
            };
            view.on('click', this.showPost, this);
            view.on('dblclick', this.showFullPost, this);
        },
        
        onLoad : function(){
            if(ds.getCount() < 1){
        		preview.setContent('');
        	}
            statusPanel.getEl().addClass('done');
            statusPanel.setContent('Done.');
        },
        
        loadFeed : function(feed){
        	statusPanel.setContent('Loading feed ' + feed + '...');
        	statusPanel.getEl().removeClass('done');
            //ds.load({'feed': feed});
            //cgsktca
            ds.load({params:{'feed': feed}});
        },
        
        showPost : function(view, dataIndex){            
            var node = ds.getAt(dataIndex);
            var title = node.data.title;
            var link = node.data.link;
            var desc = node.data.description;
              		
    		    currentItem = {
    		        index: dataIndex, link: link
    		    };
    		    preview.setTitle(title.ellipse(80));
    		    previewBody.update(desc);
        },
        
        showFullPost : function(view, rowIndex){
          var node = ds.getAt(rowIndex);
    		  var link = node.data.link;
    		  var title = node.data.title;
    		  
    		  if(!title){
    		      title = 'View Post';
    		  }
    		  var iframe = Ext.DomHelper.append(document.body, 
    		              {tag: 'iframe', frameBorder: 0, src: link});
    		  var panel = new Ext.ContentPanel(iframe, 
    		              {title: title, fitToFrame:true, closable:true});
    		  layout.add('center', panel);     	
        },
        
        showInTab : function(){
            if(currentItem){
                this.showFullPost(grid, currentItem.index);
            }
        },
        
        showInWindow : function(){
            if(currentItem){
                window.open(currentItem.link, 'win');
            }
        },
        
        changeActiveFeed : function(feedId){
            suggested.select('a').removeClass('selected');
            feeds.select('a').removeClass('selected');
            Ext.fly('feed-'+feedId).addClass('selected');
            var feed = sfeeds[feedId] || myfeeds[feedId];
            feedPanel.setTitle('View Feed (' + feed.name.ellipse(16) + ')');
        },
        
        showAddFeed : function(btn){
            Ext.get('feed-url').dom.value = '';
            Ext.get('add-title').radioClass('active-msg');
            var el = Ext.get('myfeeds-tb');

            addFeed.alignTo('myfeeds-tb', 'tl', [3,3]);
            addFeed.show();
        },        
        
        validateFeed : function(){
            var url = Ext.get('feed-url').dom.value;
            Ext.get('loading-feed').radioClass('active-msg');
            var success = function(o){
                try{
                    var xml = o.responseXML;
                    var channel = xml.getElementsByTagName('channel')[0];
                    var titleEl = channel.getElementsByTagName('title')[0];
                    var descEl = channel.getElementsByTagName('description')[0];
                    var name = titleEl.firstChild.nodeValue;
                    var desc = (descEl.firstChild ? descEl.firstChild.nodeValue : '');
                    var id = ++seed;
                    myfeeds[id] = {id:id, name:name, desc:desc, url:url};
                    tpl.append('myfeeds-body', myfeeds[id]);
                    
                    addFeed.hide();  
                   
                      
                    ds.loadData(xml); 
                    this.changeActiveFeed(id);
                                       
                }catch(e){
                    Ext.get('invalid-feed').radioClass('active-msg');                   
                }                     
            }.createDelegate(this);
            var failure = function(o){
                Ext.get('invalid-feed').radioClass('active-msg');
            };
            Ext.lib.Ajax.request('POST', 'feed-proxy.php', {success:success, failure:failure}, 'feed='+encodeURIComponent(url));
        }
    };
}();
Ext.onReady(Viewer.init, Viewer);

String.prototype.ellipse = function(maxLength){
    if(this.length > maxLength){
        return this.substr(0, maxLength-3) + '...';
    }
    return this;
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷激情一区二区三区| 日本不卡一二三区黄网| 久久久www成人免费无遮挡大片| 中文字幕欧美激情一区| 国产精品一区二区在线看| 日韩精品专区在线| 老司机精品视频在线| 日韩欧美成人激情| 理论电影国产精品| 精品国产自在久精品国产| 久久精品国产精品亚洲综合| 欧美成人r级一区二区三区| 免费高清视频精品| 久久综合久久综合久久| 国产一区二区精品久久99| 久久综合999| 国产成人精品综合在线观看 | 国产大陆精品国产| 久久久久久免费网| 国产精品资源在线| 欧美国产亚洲另类动漫| 99精品在线免费| 亚洲精品国产精品乱码不99| 欧美日韩日本视频| 人妖欧美一区二区| 久久蜜桃一区二区| 成人激情免费网站| 亚洲久本草在线中文字幕| 欧美色视频在线| 日本欧洲一区二区| 亚洲精品一区二区三区精华液| 国产精品中文字幕日韩精品| 国产精品动漫网站| 91福利资源站| 日本不卡在线视频| 久久久不卡网国产精品一区| 99re热视频精品| 亚洲福利一区二区三区| 日韩午夜电影av| 国产成人精品综合在线观看| 最新日韩av在线| 欧美挠脚心视频网站| 国产尤物一区二区在线| 亚洲视频 欧洲视频| 欧美日韩亚洲综合| 国产自产高清不卡| 亚洲人成影院在线观看| 欧美日韩国产成人在线免费| 国产一区激情在线| 亚洲精品乱码久久久久久黑人| 91麻豆精品国产| 国产风韵犹存在线视精品| 亚洲免费色视频| 日韩一区二区免费视频| 粉嫩一区二区三区性色av| 一区二区不卡在线视频 午夜欧美不卡在 | 久久精品99国产精品日本| 久久精品一区二区| 在线亚洲人成电影网站色www| 秋霞成人午夜伦在线观看| 欧美韩国日本综合| 欧美日韩aaa| 国产成人av影院| 亚洲高清免费观看| 国产拍欧美日韩视频二区| 欧美羞羞免费网站| 国产美女在线观看一区| 亚洲最大色网站| 久久久久久久久久看片| 欧美午夜一区二区三区免费大片| 国产一区二区三区四| 亚洲国产精品人人做人人爽| 国产片一区二区| 欧美一区永久视频免费观看| 波多野结衣精品在线| 奇米精品一区二区三区在线观看一| 国产精品国产成人国产三级| 日韩美一区二区三区| 色av一区二区| 国产高清不卡二三区| 图片区日韩欧美亚洲| 亚洲视频一区二区免费在线观看| 亚洲精品一线二线三线无人区| 欧美在线999| 成人一区在线观看| 久久国产三级精品| 午夜精品久久久久久久久| 亚洲色图制服诱惑 | 一区二区三区在线视频免费观看| 337p日本欧洲亚洲大胆色噜噜| 欧美综合天天夜夜久久| 国产成人av福利| 美女网站一区二区| 五月激情综合网| 一区二区三区欧美激情| 国产精品美女久久久久高潮| 精品国产91亚洲一区二区三区婷婷| 欧美色窝79yyyycom| 92国产精品观看| 国产精品一区二区黑丝| 久久精品国产99国产| 午夜电影网亚洲视频| 一区二区在线观看免费 | 久久精品亚洲麻豆av一区二区| 91精品福利在线一区二区三区 | 中文字幕亚洲不卡| 精品国精品自拍自在线| 91精品福利在线一区二区三区| 精品视频999| 97精品久久久久中文字幕| 东方欧美亚洲色图在线| 激情五月婷婷综合网| 久久99国产精品免费| 美脚の诱脚舐め脚责91 | 88在线观看91蜜桃国自产| 欧美在线制服丝袜| 91蝌蚪porny| 成人av集中营| www.欧美色图| www.亚洲人| 91网页版在线| 91在线视频观看| 91麻豆swag| 欧美最猛性xxxxx直播| 色狠狠av一区二区三区| 色婷婷综合激情| 91久久国产最好的精华液| 日本韩国欧美一区| 色综合视频在线观看| 一本大道综合伊人精品热热 | 色综合久久久久综合体| 99精品在线观看视频| 99re这里都是精品| 91久久香蕉国产日韩欧美9色| 在线欧美小视频| 在线欧美一区二区| 欧美日韩国产色站一区二区三区| 欧美久久久久免费| 717成人午夜免费福利电影| 91精品国产综合久久精品图片| 日韩一级完整毛片| 精品国产电影一区二区| 欧美精品一区二区三区蜜桃视频| 久久免费精品国产久精品久久久久| 久久久久久久精| 国产精品福利一区二区三区| 自拍偷自拍亚洲精品播放| 夜夜精品浪潮av一区二区三区| 亚洲妇熟xx妇色黄| 免费亚洲电影在线| 国产激情精品久久久第一区二区| av中文一区二区三区| 日本高清不卡一区| 这里只有精品免费| 精品毛片乱码1区2区3区| 久久精品人人做| 亚洲啪啪综合av一区二区三区| 亚洲午夜一区二区| 免费成人你懂的| 成人精品视频一区二区三区尤物| 91浏览器打开| 日韩久久免费av| 国产精品色婷婷| 亚洲午夜免费电影| 国产一区二区视频在线播放| 91亚洲国产成人精品一区二三| 欧美午夜理伦三级在线观看| 日韩午夜中文字幕| 国产情人综合久久777777| 亚洲精品乱码久久久久久久久| 日韩电影在线观看电影| 国产乱码精品一区二区三区忘忧草 | 毛片一区二区三区| 丁香一区二区三区| 欧美视频一区在线| 久久婷婷色综合| 亚洲精品高清在线| 精品一区二区免费看| 99久久夜色精品国产网站| 91精品国产乱码久久蜜臀| 国产日韩欧美精品电影三级在线 | 一二三四社区欧美黄| 麻豆91精品视频| 99免费精品视频| 日韩免费看的电影| 综合色中文字幕| 老司机一区二区| 91捆绑美女网站| 久久综合视频网| 亚洲国产视频网站| 懂色av一区二区三区免费看| 欧美午夜免费电影| 中文字幕不卡的av| 男男gaygay亚洲| 91福利社在线观看| 久久综合久久鬼色| 天堂va蜜桃一区二区三区 | 欧美色涩在线第一页| 久久久久久久久久美女| 亚洲1区2区3区视频|