X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/d41dc04ad17d1d9125fb2cf72db2b4782dbe3a8c..05ce1c11e98b33f14ddee184493bd5a60dc947e2:/examples/forum/forum.js diff --git a/examples/forum/forum.js b/examples/forum/forum.js index 7947c781..d985a885 100644 --- a/examples/forum/forum.js +++ b/examples/forum/forum.js @@ -1,400 +1,406 @@ -/* - * Ext JS Library 2.2.1 - * Copyright(c) 2006-2009, Ext JS, LLC. - * licensing@extjs.com - * - * http://extjs.com/license - */ - -var Forum = {}; - -////////////////////////////////////////////////////////////////////////////////////////////// -// The data store for topics -Forum.TopicStore = function(){ - Forum.TopicStore.superclass.constructor.call(this, { - remoteSort: true, - - proxy: new Ext.data.ScriptTagProxy({ - url: 'http://extjs.com/forum/topics-browse-remote.php' - }), - - reader: new Ext.data.JsonReader({ - root: 'topics', - totalProperty: 'totalCount', - id: 'threadid' - }, [ - 'title', 'forumtitle', 'forumid', 'author', - {name: 'replycount', type: 'int'}, - {name: 'lastpost', mapping: 'lastpost', type: 'date', dateFormat: 'timestamp'}, - 'lastposter', 'excerpt' - ]) - }); - - this.setDefaultSort('lastpost', 'desc'); -}; -Ext.extend(Forum.TopicStore, Ext.data.Store, { - loadForum : function(forumId){ - this.baseParams = { - forumId: forumId - }; - this.load({ - params: { - start:0, - limit:25 - } - }); - } -}); - -////////////////////////////////////////////////////////////////////////////////////////////// - -// some renderers -Forum.Renderers = { - topic : function(value, p, record){ - return String.format( - '
'+record.data.excerpt+'
'; - return 'x-grid3-row-expanded'; - } - return 'x-grid3-row-collapsed'; - } - }, - - bbar: new Ext.PagingToolbar({ - pageSize: 25, - store: ds, - displayInfo: true, - displayMsg: 'Displaying results {0} - {1} of {2}', - emptyMsg: "No results to display" - }) - }); - - Forum.SearchView.superclass.constructor.call(this, { - layout:'border', - title:'Search: '+Ext.util.Format.htmlEncode('"'+search+'"'), - items:[ this.grid, this.preview ] - }); - - this.store.baseParams = { - query: search - }; - - this.store.load({params:{start:0, limit: 25}}); -}; - -Ext.extend(Forum.SearchView, Ext.Panel); - - - -Ext.onReady(function(){ - - Ext.QuickTips.init(); - - var ds = new Forum.TopicStore(); - - var cm = new Ext.grid.ColumnModel([{ - id: 'topic', - header: "Topic", - dataIndex: 'title', - width: 420, - renderer: Forum.Renderers.topic - },{ - header: "Author", - dataIndex: 'author', - width: 100, - hidden: true - },{ - header: "Replies", - dataIndex: 'replycount', - width: 70, - align: 'right' - },{ - id: 'last', - header: "Last Post", - dataIndex: 'lastpost', - width: 150, - renderer: Forum.Renderers.lastPost - }]); - - cm.defaultSortable = true; - - var viewport = new Ext.Viewport({ - layout:'border', - items:[ - new Ext.BoxComponent({ // raw - region:'north', - el: 'header', - height:32 - }), - new Ext.tree.TreePanel({ - id:'forum-tree', - region:'west', - title:'Forums', - split:true, - width: 225, - minSize: 175, - maxSize: 400, - collapsible: true, - margins:'0 0 5 5', - loader: new Forum.TreeLoader(), - rootVisible:false, - lines:false, - autoScroll:true, - root: new Ext.tree.AsyncTreeNode({ - text: 'Forums', - expanded:true - }) - }), - new Ext.TabPanel({ - id:'main-tabs', - activeTab:0, - region:'center', - margins:'0 5 5 0', - resizeTabs:true, - tabWidth:150, - items: { - id:'main-view', - layout:'border', - title:'Loading...', - items:[ - new Ext.grid.GridPanel({ - region:'center', - id:'topic-grid', - store: ds, - cm: cm, - sm:new Ext.grid.RowSelectionModel({singleSelect:true}), - trackMouseOver:false, - loadMask: {msg:'Loading Topics...'}, - viewConfig: { - forceFit:true, - enableRowBody:true, - showPreview:true, - getRowClass : function(record, rowIndex, p, ds){ - if(this.showPreview){ - p.body = ''+record.data.excerpt+'
'; - return 'x-grid3-row-expanded'; - } - return 'x-grid3-row-collapsed'; - } - }, - tbar:[ - { - text:'New Topic', - iconCls: 'new-topic', - handler:function(){alert('Not implemented.');} - }, - '-', - { - pressed: true, - enableToggle:true, - text:'Preview Pane', - tooltip: {title:'Preview Pane',text:'Show or hide the Preview Pane'}, - iconCls: 'preview', - toggleHandler: togglePreview - }, - ' ', - { - pressed: true, - enableToggle:true, - text:'Summary', - tooltip: {title:'Post Summary',text:'View a short summary of each post in the list'}, - iconCls: 'summary', - toggleHandler: toggleDetails - } - ], - bbar: new Ext.PagingToolbar({ - pageSize: 25, - store: ds, - displayInfo: true, - displayMsg: 'Displaying topics {0} - {1} of {2}', - emptyMsg: "No topics to display" - }) - }), { - id:'preview', - region:'south', - height:250, - title:'View Topic', - split:true - } - ] - } - }) - ] - }); - - var tree = Ext.getCmp('forum-tree'); - tree.on('append', function(tree, p, node){ - if(node.id == 5){ - node.select.defer(100, node); - } - }); - var sm = tree.getSelectionModel(); - sm.on('beforeselect', function(sm, node){ - return node.isLeaf(); - }); - sm.on('selectionchange', function(sm, node){ - ds.loadForum(node.id); - Ext.getCmp('main-view').setTitle(node.text); - }); - - - var searchStore = new Ext.data.Store({ - proxy: new Ext.data.ScriptTagProxy({ - url: 'http://extjs.com/forum/topics-remote.php' - }), - reader: new Ext.data.JsonReader({ - root: 'topics', - totalProperty: 'totalCount', - id: 'post_id' - }, [ - {name: 'title', mapping: 'topic_title'}, - {name: 'topicId', mapping: 'topic_id'}, - {name: 'author', mapping: 'author'}, - {name: 'lastPost', mapping: 'post_time', type: 'date', dateFormat: 'timestamp'}, - {name: 'excerpt', mapping: 'post_text'} - ]) - }); - - // Custom rendering Template - var resultTpl = new Ext.Template( - ''+record.data.excerpt+'
'; + return 'x-grid3-row-expanded'; + } + return 'x-grid3-row-collapsed'; + } + }, + + bbar: new Ext.PagingToolbar({ + pageSize: 25, + store: ds, + displayInfo: true, + displayMsg: 'Displaying results {0} - {1} of {2}', + emptyMsg: "No results to display" + }) + }); + + Forum.SearchView.superclass.constructor.call(this, { + layout:'border', + title:'Search: '+Ext.util.Format.htmlEncode('"'+search+'"'), + items:[ this.grid, this.preview ] + }); + + this.store.baseParams = { + query: search + }; + + this.store.load({params:{start:0, limit: 25}}); +}; + +Ext.extend(Forum.SearchView, Ext.Panel); + + + +Ext.onReady(function(){ + + Ext.QuickTips.init(); + + var ds = new Forum.TopicStore(); + + var cm = new Ext.grid.ColumnModel([{ + id: 'topic', + header: "Topic", + dataIndex: 'title', + width: 420, + renderer: Forum.Renderers.topic + },{ + header: "Author", + dataIndex: 'author', + width: 100, + hidden: true + },{ + header: "Replies", + dataIndex: 'replycount', + width: 70, + align: 'right' + },{ + id: 'last', + header: "Last Post", + dataIndex: 'lastpost', + width: 150, + renderer: Forum.Renderers.lastPost + }]); + + cm.defaultSortable = true; + + var viewport = new Ext.Viewport({ + layout:'border', + items:[ + new Ext.BoxComponent({ // raw + region:'north', + el: 'header', + height:32 + }), + new Ext.tree.TreePanel({ + id:'forum-tree', + region:'west', + title:'Forums', + split:true, + width: 325, + minSize: 175, + maxSize: 400, + collapsible: true, + margins:'0 0 5 5', + loader: new Forum.TreeLoader(), + rootVisible:false, + lines:false, + autoScroll:true, + root: new Ext.tree.AsyncTreeNode({ + text: 'Forums', + expanded:true + }) + }), + new Ext.TabPanel({ + id:'main-tabs', + activeTab:0, + region:'center', + margins:'0 5 5 0', + resizeTabs:true, + tabWidth:150, + items: { + id:'main-view', + layout:'border', + title:'Loading...', + items:[ + new Ext.grid.GridPanel({ + region:'center', + id:'topic-grid', + store: ds, + cm: cm, + sm:new Ext.grid.RowSelectionModel({ + singleSelect:true, + listeners: { + selectionchange: function(sel){ + var rec = sel.getSelected(); + if(rec){ + Ext.getCmp('preview').body.update('' + rec.get('title') + ''+record.data.excerpt+'
'; + return 'x-grid3-row-expanded'; + } + return 'x-grid3-row-collapsed'; + } + }, + tbar:[ + { + text:'New Topic', + iconCls: 'new-topic', + handler:function(){alert('Not implemented.');} + }, + '-', + { + pressed: true, + enableToggle:true, + text:'Preview Pane', + tooltip: {title:'Preview Pane',text:'Show or hide the Preview Pane'}, + iconCls: 'preview', + toggleHandler: togglePreview + }, + ' ', + { + pressed: true, + enableToggle:true, + text:'Summary', + tooltip: {title:'Post Summary',text:'View a short summary of each post in the list'}, + iconCls: 'summary', + toggleHandler: toggleDetails + } + ], + bbar: new Ext.PagingToolbar({ + pageSize: 25, + store: ds, + displayInfo: true, + displayMsg: 'Displaying topics {0} - {1} of {2}', + emptyMsg: "No topics to display" + }) + }), { + id:'preview', + region:'south', + height:250, + title:'View Topic', + split:true, + bodyStyle: 'padding: 10px; font-family: Arial; font-size: 12px;' + } + ] + } + }) + ] + }); + + var tree = Ext.getCmp('forum-tree'); + tree.on('append', function(tree, p, node){ + if(node.id == 40){ + node.select.defer(100, node); + } + }); + var sm = tree.getSelectionModel(); + sm.on('beforeselect', function(sm, node){ + return node.isLeaf(); + }); + sm.on('selectionchange', function(sm, node){ + ds.loadForum(node.id); + Ext.getCmp('main-view').setTitle(node.text); + }); + + + var searchStore = new Ext.data.Store({ + proxy: new Ext.data.ScriptTagProxy({ + url: 'http://extjs.com/forum/topics-browse-remote.php' + }), + reader: new Ext.data.JsonReader({ + root: 'topics', + totalProperty: 'totalCount', + id: 'threadid' + }, [ + 'title', 'author', + {name: 'lastpost', type: 'date', dateFormat: 'timestamp'} + ]) + }); + + // Custom rendering Template + var resultTpl = new Ext.XTemplate( + '