Changeset 2608
- Timestamp:
- 09/01/07 05:18:58 (1 year ago)
- Files:
-
- tagsplugin/branches/0.11 (deleted)
- tagsplugin/trunk/tractags/web_ui.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
tagsplugin/trunk/tractags/web_ui.py
r2585 r2608 3 3 from StringIO import StringIO 4 4 from trac.core import * 5 from trac.perm import IPermissionRequestor 5 6 from trac.web.main import IRequestHandler 6 7 from trac.web.chrome import ITemplateProvider, INavigationContributor, add_stylesheet … … 19 20 20 21 class TagsUserInterface(Component): 21 implements(ITemplateStreamFilter, IWikiPageManipulator )22 implements(ITemplateStreamFilter, IWikiPageManipulator, IPermissionRequestor) 22 23 23 24 # Internal methods … … 66 67 return stream | Transformer('//div[@id="changeinfo1"]').append(insert) 67 68 69 # IPermissionRequestor methods 70 def get_permission_actions(self): 71 return ['TAGS_VIEW', 'TAGS_MODIFY'] 72 68 73 # ITemplateStreamFilter methods 69 74 def filter_stream(self, req, method, filename, stream, data): 70 if filename == 'wiki_view.html' :75 if filename == 'wiki_view.html' and 'TAGS_VIEW' in req.perm: 71 76 return self._wiki_view(req, stream) 72 elif filename == 'wiki_edit.html' :77 elif filename == 'wiki_edit.html' and 'TAGS_MODIFY' in req.perm: 73 78 return self._wiki_edit(req, stream) 74 79 return stream … … 79 84 80 85 def validate_wiki_page(self, req, page): 81 if req and req.path_info.startswith('/wiki') and 'save' in req.args: 86 if req and 'TAGS_MODIFY' in req.perm and req.path_info.startswith('/wiki') \ 87 and 'save' in req.args: 82 88 self._update_tags(req, page) 83 89 return [] 84 90 85 #class TagsWikiModule(WikiModule):86 # """ Replacement for the default Wiki module. Tag editing is much more87 # intuitive now, as it no longer requires the TagIt macro and JavaScript88 # magic. """89 #90 # def _do_save(self, req, db, page):91 # # This method is overridden so the user doesn't get "Page not modified"92 # # exceptions when updating tags but not wiki content.93 # from tractags.api import TagEngine94 # if 'tags' in req.args:95 # newtags = set([t.strip() for t in96 # _tag_split.split(req.args.get('tags')) if t.strip()])97 # wikitags = TagEngine(self.env).tagspace.wiki98 # oldtags = wikitags.get_tags([page.name])99 #100 # if oldtags != newtags:101 # wikitags.replace_tags(req, page.name, newtags)102 # # No changes, just redirect103 # if req.args.get('text') == page.text:104 # req.redirect(self.env.href.wiki(page.name))105 # return106 # return WikiModule._do_save(self, req, db, page)107 #108 # def process_request(self, req):109 # from tractags.api import TagEngine110 # from trac.web.chrome import add_stylesheet111 #112 # add_stylesheet(req, 'tags/css/tractags.css')113 #114 # pagename = req.args.get('page', 'WikiStart')115 # action = req.args.get('action', 'view')116 #117 # engine = TagEngine(self.env)118 # wikitags = engine.tagspace.wiki119 # tags = list(wikitags.get_tags([pagename]))120 # tags.sort()121 #122 # if action == 'edit':123 # req.hdf['tags'] = req.args.get('tags', ', '.join(tags))124 # elif action == 'view':125 # hdf_tags = []126 # for tag in tags:127 # href, title = engine.get_tag_link(tag)128 # hdf_tags.append({'name': tag,129 # 'href': href,130 # 'title': title})131 # req.hdf['tags'] = hdf_tags132 # result = WikiModule.process_request(self, req)133 # if result is None:134 # return None135 # if result[0] == 'wiki.cs':136 # return 'tagswiki.cs', None137 # return result138 91 139 92 class TagsModule(Component): … … 190 143 from pkg_resources import resource_filename 191 144 return [('tags', resource_filename(__name__, 'htdocs'))] 192 145 193 146 # INavigationContributor methods 194 147 def get_active_navigation_item(self, req): 195 return 'tags' 148 if 'TAGS_VIEW' in req.perm: 149 return 'tags' 196 150 197 151 def get_navigation_items(self, req): 198 152 from trac.web.chrome import Chrome 199 yield ('mainnav', 'tags', 200 Markup('<a href="%s" accesskey="T">Tags</a>', 201 self.env.href.tags())) 153 if 'TAGS_VIEW' in req.perm: 154 yield ('mainnav', 'tags', 155 Markup('<a href="%s" accesskey="T">Tags</a>', 156 req.href.tags())) 202 157 203 158 # IRequestHandler methods 204 159 def match_request(self, req): 205 return req.path_info.startswith('/tags')160 return 'TAGS_VIEW' in req.perm and req.path_info.startswith('/tags') 206 161 207 162 def process_request(self, req): … … 210 165 from trac.web.chrome import add_stylesheet 211 166 167 req.perm.require('TAGS_VIEW') 168 212 169 add_stylesheet(req, 'tags/css/tractags.css') 213 req.hdf['trac.href.tags'] = self.env.href.tags()170 req.hdf['trac.href.tags'] = req.href.tags() 214 171 215 172 def update_from_req(args):
