Changeset 554
- Timestamp:
- 09/14/07 16:39:53 (1 year ago)
- Files:
-
- pagoda/trunk/Pagoda/pagoda/models/__init__.py (modified) (1 diff)
- pagoda/trunk/Pagoda/pagoda/models/node.py (modified) (2 diffs)
- pagoda/trunk/Pagoda/pagoda/models/revision_mapper.py (modified) (2 diffs)
- pagoda/trunk/Pagoda/pagoda/plugins/page/models.py (modified) (1 diff)
- pagoda/trunk/Pagoda/pagoda/plugins/textcontainer/models.py (modified) (3 diffs)
- pagoda/trunk/Pagoda/pagoda/templates/admin/control_panel.html (modified) (1 diff)
- pagoda/trunk/Pagoda/pagoda/widgets/admin/panels.py (modified) (1 diff)
- pagoda/trunk/Pagoda/pagoda/widgets/admin/static/css/site_tree.css (modified) (2 diffs)
- pagoda/trunk/Pagoda/pagoda/widgets/admin/static/css/tree.css (modified) (3 diffs)
- pagoda/trunk/Pagoda/pagoda/widgets/admin/static/javascript/site_tree.js (modified) (1 diff)
- pagoda/trunk/Pagoda/pagoda/widgets/admin/static/javascript/tree_menu.js (modified) (1 diff)
- pagoda/trunk/TestProject/testproject/model.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
pagoda/trunk/Pagoda/pagoda/models/__init__.py
r490 r554 6 6 from pagoda.models.revision import * 7 7 from pagoda.models.template import * 8 from pagoda.models.revision_mapper import * 8 9 from pagoda.models.node import * 9 from pagoda.models. revision_mapper import *10 from pagoda.models.container import * pagoda/trunk/Pagoda/pagoda/models/node.py
r552 r554 4 4 from pagoda.models import Revision, Content, Template 5 5 from pagoda.models.revision_mapper import * 6 from pagoda.models.util import follow_foreign_key7 6 from pagoda import workflow 8 7 … … 37 36 38 37 node_selectable = RevisionSelectable() 39 node_selectable.add_table( 40 node_generic_table, 'node_generic_revision_id' 41 ) 42 node_selectable.add_table( 43 node_localized_table, 'node_localized_revision_id', True 44 ) 45 38 node_selectable.add_generic_table(node_generic_table) 39 node_selectable.add_localized_table(node_localized_table) 46 40 node_table = node_selectable.get_selectable('node') 47 41 pagoda/trunk/Pagoda/pagoda/models/revision_mapper.py
r552 r554 78 78 return revisions 79 79 80 def add_table(self, table, id_label=None, localized=False,80 def add_table(self, table, localized=False, id_label=None, 81 81 join_alias=None): 82 82 if id_label is None: … … 93 93 self.id_labels[table] = id_label 94 94 self.subselects[table] = subselect 95 96 def add_generic_table(self, table, id_label=None, join_alias=None): 97 return self.add_table(table, False, id_label, join_alias) 98 99 def add_localized_table(self, table, id_label=None, join_alias=None): 100 return self.add_table(table, True, id_label, join_alias) 95 101 96 102 def get_selectable(self, alias): pagoda/trunk/Pagoda/pagoda/plugins/page/models.py
r551 r554 15 15 16 16 page_selectable = RevisionSelectable() 17 page_selectable.add_ table(node_generic_table, 'node_generic_revision_id')18 page_selectable.add_ table(node_localized_table, 'node_localized_revision_id')19 page_selectable.add_ table(page_generic_table, 'page_generic_revision_id')17 page_selectable.add_generic_table(node_generic_table) 18 page_selectable.add_localized_table(node_localized_table) 19 page_selectable.add_generic_table(page_generic_table) 20 20 page_table = page_selectable.get_selectable('page') 21 21 22 22 class Page(Node): 23 pagoda_content_type = 'page' 23 # pagoda_content_type = 'page' 24 pass 24 25 25 26 assign_mapper(session.context, Page, page_table, pagoda/trunk/Pagoda/pagoda/plugins/textcontainer/models.py
r542 r554 1 1 from sqlalchemy import * 2 from sqlalchemy.ext.assignmapper import assign_mapper 2 3 from turbogears.database import metadata, session 3 from pagoda.models import Revision 4 from pagoda.models import Revision, Container, container_generic_table 4 5 from pagoda.models.revision_mapper import * 5 6 … … 11 12 primary_key=True 12 13 ), 13 Column('container_name', Unicode(75), nullable=False), 14 Column('editor_name', String(75), nullable=True) 14 Column('text_type', String(75), nullable=True) 15 15 ) 16 16 … … 24 24 25 25 textcontainer_selectable = RevisionSelectable() 26 textcontainer_selectable.add_table( 27 textcontainer_generic_table, 'generic_revision_id' 28 ) 29 textcontainer_selectable.add_table( 30 textcontainer_localized_table, 'localized_revision_id', 'content_locale' 31 ) 32 26 textcontainer_selectable.add_generic_table(container_generic_table) 27 textcontainer_selectable.add_generic_table(textcontainer_generic_table) 28 textcontainer_selectable.add_localized_table(textcontainer_localized_table) 33 29 textcontainer_table = textcontainer_selectable.get_selectable('textcontainer') 34 30 35 class TextContainer( Revision):31 class TextContainer(Container): 36 32 pass 37 33 38 revision_mapper(session.context, TextContainer, textcontainer_table) 34 assign_mapper(session.context, TextContainer, textcontainer_table, 35 select_table=textcontainer_table, 36 inherits=Container.mapper, 37 concrete=True, 38 extension=RevisionMapperExtension(), 39 polymorphic_on=textcontainer_table.c.content_type, 40 polymorphic_identity='textcontainer' 41 ) pagoda/trunk/Pagoda/pagoda/templates/admin/control_panel.html
r528 r554 24 24 <div class="description"> 25 25 <p>${pagoda._("The publication schedule shows pages awaiting publication and pages scheduled for release or expiration.")}</p> 26 </div> 27 </li> 28 <li class="section" id="templates-section"> 29 <h2><a href="${tg.url('/templates/')}">${pagoda._("Templates")}</a></h2> 30 <div class="description"> 31 <p>${pagoda._("Templates define what your site looks like and how content is positioned on each page.")}</p> 26 32 </div> 27 33 </li> pagoda/trunk/Pagoda/pagoda/widgets/admin/panels.py
r511 r554 51 51 'id': content.content_id, 52 52 'cls': children and 'folder' or 'file', 53 'leaf': not children 53 'leaf': not children, 54 'pagoda': { 55 'content_id': content.content_id, 56 'revision_id': content.revision_id, 57 'is_deleted': content.is_deleted, 58 'url': content.url, 59 60 } 54 61 } 55 62 if descend > 0: pagoda/trunk/Pagoda/pagoda/widgets/admin/static/css/site_tree.css
r525 r554 14 14 /* Buttons in site menu have icons associated with them */ 15 15 .site_tree-menu button { 16 cursor: pointer; 17 color: #fff; 16 18 } 17 19 … … 24 26 background-image: url('../images/page_add.png'); 25 27 } 28 26 29 .site_tree-menu button.edit .x-menu-item-icon { 27 30 background-image: url('../images/page_edit.png'); 28 31 } 32 29 33 .site_tree-menu button.duplicate .x-menu-item-icon { 30 34 background-image: url('../images/page_copy.png'); 31 35 } 36 32 37 .site_tree-menu button.delete .x-menu-item-icon { 33 38 background-image: url('../images/page_delete.png'); 34 39 } 40 35 41 .site_tree-menu button.close { 36 42 padding: 0; 37 43 border: 0; 38 44 } 45 39 46 .site_tree-menu button.close .x-menu-item-icon { 40 47 vertical-align: middle; pagoda/trunk/Pagoda/pagoda/widgets/admin/static/css/tree.css
r539 r554 36 36 /* Style the menu */ 37 37 div.tree-menu { 38 background: #3465a4 url('../images/tab-active.png') repeat-x left top;39 color: # eee;38 background: #3465a4 url('../images/tab-active.png') repeat-x left bottom; 39 color: #fff; 40 40 } 41 41 … … 68 68 } 69 69 70 /* Nice hover-color for Tree Menu buttons */71 .tree-menu button:hover {72 color: #fff;73 cursor: pointer;74 }75 76 .tree-menu button:hover .x-menu-item-icon {77 opacity: 1.0;78 }79 80 70 /* Tree Menu should be horizontal (not vertical, which is the default) */ 81 71 .tree-menu li { … … 99 89 border: 0; 100 90 padding: 3px 0; 101 color: # adf;91 color: #def; 102 92 } 103 93 104 94 .tree-menu .x-menu-item-icon { 105 95 margin-right: 0.5em; 106 opacity: 0.75;107 96 } pagoda/trunk/Pagoda/pagoda/widgets/admin/static/javascript/site_tree.js
r550 r554 53 53 text: "Edit", 54 54 icon: Ext.BLANK_IMAGE_URL, 55 itemCls: 'edit' 55 itemCls: 'edit', 56 handler: function() { 57 var selection = this.parentMenu.tree.getSelectionModel(); 58 var nodes = selection.getSelectedNodes(); 59 } 56 60 }), 57 61 new Ext.menu.ButtonItem({ 58 62 text: "Add", 59 63 icon: Ext.BLANK_IMAGE_URL, 60 itemCls: 'add' 64 itemCls: 'add', 65 handler: function() { 66 var selection = this.parentMenu.tree.getSelectionModel(); 67 var nodes = selection.getSelectedNodes(); 68 } 61 69 }), 62 70 new Ext.menu.ButtonItem({ 63 71 text: "Duplicate", 64 72 icon: Ext.BLANK_IMAGE_URL, 65 itemCls: 'duplicate' 73 itemCls: 'duplicate', 74 handler: function() { 75 var selection = this.parentMenu.tree.getSelectionModel(); 76 var nodes = selection.getSelectedNodes(); 77 } 66 78 }), 67 79 new Ext.menu.ButtonItem({ 68 80 text: "Delete", 69 81 icon: Ext.BLANK_IMAGE_URL, 70 itemCls: 'delete' 82 itemCls: 'delete', 83 handler: function() { 84 var selection = this.parentMenu.tree.getSelectionModel(); 85 var nodes = selection.getSelectedNodes(); 86 } 71 87 }), 72 88 new Ext.menu.ButtonItem({ 73 89 text: "", 74 90 icon: Ext.BLANK_IMAGE_URL, 75 itemCls: 'close' 91 itemCls: 'close', 92 handler: function() { 93 var selection = this.parentMenu.tree.getSelectionModel(); 94 var nodes = selection.getSelectedNodes(); 95 } 76 96 }) 77 97 ] pagoda/trunk/Pagoda/pagoda/widgets/admin/static/javascript/tree_menu.js
r524 r554 16 16 17 17 }; 18 18 19 Ext.extend(Ext.menu.TreeMenu, Ext.menu.Menu, { 19 20 // Override `show` to position the menu underneath (in z-index terms) pagoda/trunk/TestProject/testproject/model.py
r551 r554 5 5 from pagoda.plugins.page import Page 6 6 from pagoda.models.identity import * 7 #from pagoda.plugins.textcontainer import TextContainer7 from pagoda.plugins.textcontainer import TextContainer 8 8 from pagoda import workflow 9 9 … … 33 33 home_page = Page( 34 34 url=None, parent_id=None, content_locale='en_US', 35 title="Home", nav_show=True, revision_author_id=brian.user_id,35 node_title="Home", nav_show=True, revision_author_id=brian.user_id, 36 36 content_type='page', revision_status=workflow.APPROVED 37 37 ) 38 38 39 39 session.flush() 40 40 41 41 pagoda_page = Page( 42 42 url='pagoda', parent_id=home_page.content_id, content_locale='en_US', 43 title="Welcome", nav_show=True, revision_author_id=brian.user_id,43 node_title="Welcome", nav_show=True, revision_author_id=brian.user_id, 44 44 content_type='page', revision_status=workflow.APPROVED 45 45 ) … … 49 49 tests_page = Page( 50 50 url='tests', parent_id=pagoda_page.content_id, content_locale='en_US', 51 title="Unit tests", nav_show=True, revision_author_id=brian.user_id,51 node_title="Unit tests", nav_show=True, revision_author_id=brian.user_id, 52 52 content_type='page', revision_status=workflow.APPROVED 53 53 ) … … 55 55 templates_page = Page( 56 56 url='templates', parent_id=pagoda_page.content_id, content_locale='en_US', 57 title="Genshi templates", nav_show=True,57 node_title="Genshi templates", nav_show=True, 58 58 revision_author_id=brian.user_id, content_type='page', 59 59 revision_status=workflow.PENDING, … … 63 63 ets_page = Page( 64 64 url='eatthesandwich', parent_id=home_page.content_id, 65 content_locale='en_US', title="Eat it", nav_show=True,65 content_locale='en_US', node_title="Eat it", nav_show=True, 66 66 revision_author_id=brian.user_id, content_type='page', 67 67 revision_status=workflow.APPROVED, … … 71 71 session.flush() 72 72 73 #pagoda_intro_text = TextContainer(74 #container_name='intro',75 # content_id=pagoda_page.content_id,76 # content_type=pagoda_page.content_type,77 # content_locale=pagoda_page.content_locale,78 #text="""79 #<p><strong>Welcome!</strong> Please enjoy our Pagoda softwares.</p>80 #"""81 #)82 #83 #pagoda_body_text = TextContainer(84 #container_name='body',85 # content_id=pagoda_page.content_id,86 # content_type=pagoda_page.content_type,87 # content_locale=pagoda_page.content_locale,88 #text="""89 #<p>Pagoda is not ready yet. <Please check back in two weeks,90 #when it is <em>done</em>.</\p>91 #"""92 #)93 #94 #session.flush()95 #96 #pagoda_intro_revised = TextContainer(97 #container_name='intro',98 # content_id=pagoda_page.content_id,99 # content_type=pagoda_page.content_type,100 # content_locale=pagoda_page.content_locale,101 #text="""102 #<p>We made several typos. Please ignore the old revision.</p>103 #"""104 #)105 #106 #session.flush()107 #108 #pagoda_page_revised = Page(109 #content_id=pagoda_page.content_id,110 #url='pagoda', parent_id=home_page.content_id, content_locale='en_US',111 #nav_show=True, revision_author_id=brian.user_id,112 #content_type='page', revision_status=workflow.PENDING,113 #title="Welcome! (Now typo free.)"114 #)115 #116 #session.flush()117 #118 #pagoda_body_revised = TextContainer(119 #container_name='body',120 # content_id=pagoda_page.content_id,121 # content_type=pagoda_page.content_type,122 # content_locale=pagoda_page.content_locale,123 #text="""124 #<p>We made several typos. Please ignore the old revision!</p>125 #"""126 #)127 #128 #session.flush()73 pagoda_intro_text = TextContainer( 74 container_name='intro', 75 document_id=pagoda_page.content_id, 76 content_locale=pagoda_page.content_locale, 77 text_type='html', 78 text=""" 79 <p><strong>Welcome!</strong> Please enjoy our Pagoda softwares.</p> 80 """ 81 ) 82 83 pagoda_body_text = TextContainer( 84 container_name='body', 85 document_id=pagoda_page.content_id, 86 content_locale=pagoda_page.content_locale, 87 text_type='html', 88 text=""" 89 <p>Pagoda is not ready yet. <Please check back in two weeks, 90 when it is <em>done</em>.</\p> 91 """ 92 ) 93 94 session.flush() 95 96 pagoda_intro_revised = TextContainer( 97 container_name='intro', 98 document_id=pagoda_page.content_id, 99 content_locale=pagoda_page.content_locale, 100 text_type='html', 101 text=""" 102 <p>We made several typos. Please ignore the old revision.</p> 103 """ 104 ) 105 106 session.flush() 107 108 pagoda_page_revised = Page( 109 content_id=pagoda_page.content_id, 110 url='pagoda', parent_id=home_page.content_id, content_locale='en_US', 111 nav_show=True, revision_author_id=brian.user_id, 112 content_type='page', revision_status=workflow.PENDING, 113 node_title="Welcome! (Now typo free.)" 114 ) 115 116 session.flush() 117 118 pagoda_body_revised = TextContainer( 119 container_name='body', 120 document_id=pagoda_page.content_id, 121 content_locale=pagoda_page.content_locale, 122 text_type='html', 123 text=""" 124 <p>We made several typos. Please ignore the old revision!</p> 125 """ 126 ) 127 128 session.flush()
