Changeset 1072
- Timestamp:
- 07/30/06 14:57:36 (2 years ago)
- Files:
-
- discussionplugin/0.9/tracdiscussion/api.py (modified) (15 diffs)
- discussionplugin/0.9/tracdiscussion/htdocs/css/admin.css (modified) (1 diff)
- discussionplugin/0.9/tracdiscussion/templates/admin-forum-list.cs (modified) (6 diffs)
- discussionplugin/0.9/tracdiscussion/templates/admin-group-list.cs (modified) (3 diffs)
- discussionplugin/0.9/tracdiscussion/templates/message-list.cs (modified) (6 diffs)
- discussionplugin/0.9/tracdiscussion/templates/topic-add.cs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
discussionplugin/0.9/tracdiscussion/api.py
r1071 r1072 21 21 group, forum, topic, message = self._get_items() 22 22 modes = self._get_modes(group, forum, topic, message) 23 self.log.debug('modes: %s' % modes) 23 24 24 25 # Determine moderator rights. … … 38 39 39 40 # Fill up HDF structure and return template 40 self.log.debug('modes: %s' % modes)41 41 self.req.hdf['discussion.authname'] = self.req.authname 42 42 self.req.hdf['discussion.is_moderator'] = is_moderator 43 self.req.hdf['discussion.group'] = group 44 self.req.hdf['discussion.forum'] = forum 45 self.req.hdf['discussion.topic'] = topic 46 self.req.hdf['discussion.message'] = message 43 if group: 44 group['name'] = wiki_to_oneliner(group['name'], self.env) 45 group['description'] = wiki_to_oneliner(group['description'], self.env) 46 self.req.hdf['discussion.group'] = group 47 if forum: 48 forum['name'] = wiki_to_oneliner(forum['name'], self.env) 49 forum['description'] = wiki_to_oneliner(forum['description'], self.env) 50 forum['subject'] = wiki_to_oneliner(forum['subject'], self.env) 51 forum['time'] = format_datetime(forum['time']) 52 self.req.hdf['discussion.forum'] = forum 53 if topic: 54 topic['subject'] = wiki_to_oneliner(topic['subject'], self.env) 55 topic['author'] = wiki_to_oneliner(topic['author'], self.env) 56 topic['body'] = wiki_to_html(topic['body'], self.env, self.req) 57 topic['time'] = format_datetime(topic['time']) 58 self.req.hdf['discussion.topic'] = topic 59 if message: 60 message['author'] = wiki_to_oneliner(message['author'], self.env) 61 message['body'] = wiki_to_html(message['body'], self.env, self.req) 62 message['time'] = format_datetime(message['time']) 63 self.req.hdf['discussion.message'] = message 47 64 self.req.hdf['discussion.mode'] = modes[-1] 65 self.req.hdf['discussion.time'] = format_datetime(time.time()) 48 66 self.db.commit() 49 67 return modes[-1] + '.cs', None … … 134 152 return ['message-list'] 135 153 elif action == 'quote': 136 return [' message-quote', 'message-list']154 return ['topic-quote', 'message-list'] 137 155 elif action == 'post-add': 138 156 if preview: … … 149 167 return ['message-list'] 150 168 elif action == 'quote': 151 return [' message-quote', 'message-list']169 return ['topic-quote', 'message-list'] 152 170 elif action == 'post-add': 153 171 if preview: … … 223 241 def _do_action(self, modes, group, forum, topic, message, is_moderator): 224 242 for mode in modes: 243 self.log.debug('doing %s mode action' % (mode,)) 244 self.log.debug(forum) 225 245 if mode == 'group-list': 226 246 self.req.perm.assert_permission('DISCUSSION_VIEW') … … 228 248 elif mode == 'admin-group-list': 229 249 self.req.perm.assert_permission('DISCUSSION_ADMIN') 250 if group: 251 self.req.hdf['discussion.name'] = group['name'] 252 self.req.hdf['discussion.description'] = group['description'] 230 253 self.req.hdf['discussion.groups'] = self.get_groups() 231 254 elif mode == 'group-add': … … 258 281 elif mode == 'admin-forum-list': 259 282 self.req.perm.assert_permission('DISCUSSION_ADMIN') 283 if forum: 284 self.req.hdf['discussion.name'] = forum['name'] 285 self.req.hdf['discussion.subject'] = forum['subject'] 286 self.req.hdf['discussion.description'] = forum['description'] 287 self.req.hdf['discussion.moderators'] = forum['moderators'] 288 self.req.hdf['discussion.group'] = forum['group'] 260 289 self.req.hdf['discussion.users'] = self.get_users() 261 290 self.req.hdf['discussion.groups'] = self.get_groups() … … 267 296 elif mode == 'forum-post-add': 268 297 self.req.perm.assert_permission('DISCUSSION_ADMIN') 269 name = Markup(self.req.args.get('name')) 270 author = self.req.authname 271 subject = Markup(self.req.args.get('subject')) 272 description = Markup(self.req.args.get('description')) 273 moderators = self.req.args.get('moderators') 274 group = self.req.args.get('group') 275 if not moderators: 276 moderators = [] 277 if not isinstance(moderators, list): 278 moderators = [moderators] 279 self.add_forum(name, author, subject, description, moderators, 280 group) 298 # Get form values 299 new_name = Markup(self.req.args.get('name')) 300 new_author = self.req.authname 301 new_subject = Markup(self.req.args.get('subject')) 302 new_description = Markup(self.req.args.get('description')) 303 new_moderators = self.req.args.get('moderators') 304 new_group = self.req.args.get('group') 305 if not new_moderators: 306 new_moderators = [] 307 if not isinstance(new_moderators, list): 308 new_moderators = [new_moderators] 309 # Perform new forum add. 310 self.add_forum(new_name, new_author, new_subject, 311 new_description, new_moderators, new_group) 281 312 elif mode == 'forum-post-edit': 282 313 self.req.perm.assert_permission('DISCUSSION_ADMIN') 283 forum = self.req.args.get('forum') 284 name = Markup(self.req.args.get('name')) 285 subject = Markup(self.req.args.get('subject')) 286 description = Markup(self.req.args.get('description')) 287 moderators = self.req.args.get('moderators') 288 group = self.req.args.get('group') 289 if not moderators: 290 moderators = [] 291 if not isinstance(moderators, list): 292 moderators = [moderators] 293 self.edit_forum(forum, name, subject, description, moderators, 294 group) 314 # Get form values. 315 new_forum = self.req.args.get('forum') 316 new_name = Markup(self.req.args.get('name')) 317 new_subject = Markup(self.req.args.get('subject')) 318 new_description = Markup(self.req.args.get('description')) 319 new_moderators = self.req.args.get('moderators') 320 new_group = self.req.args.get('group') 321 if not new_moderators: 322 new_moderators = [] 323 if not isinstance(new_moderators, list): 324 new_moderators = [new_moderators] 325 # Perform forum edit. 326 self.edit_forum(new_forum, new_name, new_subject, 327 new_description, new_moderators, new_group) 295 328 elif mode == 'forum-delete': 296 329 self.req.perm.assert_permission('DISCUSSION_ADMIN') … … 309 342 elif mode == 'topic-add': 310 343 self.req.perm.assert_permission('DISCUSSION_APPEND') 344 subject = Markup(self.req.args.get('subject')) 311 345 author = Markup(self.req.args.get('author')) 312 346 body = Markup(self.req.args.get('body')) 347 if subject: 348 self.req.hdf['discussion.subject'] = wiki_to_oneliner( 349 subject, self.env) 313 350 if author: 314 351 self.req.hdf['discussion.author'] = wiki_to_oneliner(author, … … 317 354 self.req.hdf['discussion.body'] = wiki_to_html(body, 318 355 self.env, self.req) 319 self.req.hdf['discussion.time'] = format_datetime(time.time()) 356 elif mode == 'topic-quote': 357 self.req.perm.assert_permission('DISCUSSION_APPEND') 358 lines = topic['body'].splitlines() 359 for I in xrange(len(lines)): 360 lines[I] = '> %s' % (lines[I]) 361 self.req.hdf['args.body'] = '\n'.join(lines) 320 362 elif mode == 'topic-post-add': 321 363 self.req.perm.assert_permission('DISCUSSION_APPEND') … … 350 392 self.req.hdf['discussion.body'] = wiki_to_html(body, 351 393 self.env, self.req) 352 self.req.hdf['discussion.time'] = format_datetime(time.time())353 394 self.req.hdf['discussion.messages'] = self.get_messages(topic['id']) 354 395 elif mode == 'message-quote': … … 394 435 for row in self.cursor: 395 436 row = dict(zip(columns, row)) 396 row['author'] = wiki_to_oneliner(row['author'], self.env)397 row['body'] = wiki_to_html(row['body'], self.env, self.req)398 row['time'] = format_datetime(row['time'])399 437 return row 400 438 return None … … 408 446 for row in self.cursor: 409 447 row = dict(zip(columns, row)) 410 row['author'] = wiki_to_oneliner(row['author'], self.env)411 row['body'] = wiki_to_html(row['body'], self.env, self.req)412 row['time'] = format_datetime(row['time'])413 448 return row 414 449 return None … … 424 459 row = dict(zip(columns, row)) 425 460 row['moderators'] = row['moderators'].split(' ') 426 row['description'] = wiki_to_oneliner(row['description'], self.env)427 461 return row 428 462 return None … … 435 469 for row in self.cursor: 436 470 row = dict(zip(columns, row)) 437 row['name'] = wiki_to_oneliner(row['name'], self.env)438 row['description'] = wiki_to_oneliner(row['description'], self.env)439 471 return row 440 472 return {'id' : 0, 'name': 'None', 'description': 'No Group'} discussionplugin/0.9/tracdiscussion/htdocs/css/admin.css
r1016 r1072 21 21 } 22 22 23 .listing td. moderators, .listing td.group23 .listing td.id, .listing td.moderators, .listing td.group 24 24 { 25 25 text-align: center; 26 26 } 27 28 .listing td.id 29 { 30 width: 1%; 31 } discussionplugin/0.9/tracdiscussion/templates/admin-forum-list.cs
r1071 r1072 9 9 <div class="field"> 10 10 <label for="name">Name:</label><br/> 11 <input type="text" id="name" name="name" value="<?cs var:discussion. forum.name ?>"/><br/>11 <input type="text" id="name" name="name" value="<?cs var:discussion.name ?>"/><br/> 12 12 </div> 13 13 <div class="field"> 14 14 <label for="subject">Subject:</label><br/> 15 <input type="text" id="subject" name="subject" value="<?cs var:discussion. forum.subject ?>"/><br/>15 <input type="text" id="subject" name="subject" value="<?cs var:discussion.subject ?>"/><br/> 16 16 </div> 17 17 <div class="field"> 18 18 <label for="description">Description:</label><br/> 19 <input type="text" id="description" name="description" value="<?cs var:discussion. forum.description ?>"/><br/>19 <input type="text" id="description" name="description" value="<?cs var:discussion.description ?>"/><br/> 20 20 </div> 21 21 <div class="field"> … … 25 25 <?cs each:user = discussion.users ?> 26 26 <?cs set:selected = 0 ?> 27 <?cs each:moderator = discussion. forum.moderators ?>27 <?cs each:moderator = discussion.moderators ?> 28 28 <?cs if:moderator == user ?> 29 29 <?cs set:selected = 1 ?> … … 38 38 </select><br/> 39 39 <?cs else ?> 40 <input type="text" id="moderators" name="moderators" value="<?cs var:discussion. forum.moderators ?>"/><br/>40 <input type="text" id="moderators" name="moderators" value="<?cs var:discussion.moderators ?>"/><br/> 41 41 <?cs /if ?> 42 42 </div> … … 46 46 <select id="group" name="group"> 47 47 <?cs each:group = discussion.groups ?> 48 <?cs if:group.id == discussion. forum.group ?>48 <?cs if:group.id == discussion.group ?> 49 49 <option value="<?cs var:group.id ?>" selected="selected"><?cs var:group.name ?></option> 50 50 <?cs else ?> … … 121 121 <tr> 122 122 <th class="sel"> </th> 123 <th class="id">ID</th> 123 124 <th class="name">Name</th> 124 125 <th class="subject">Subject</th> … … 135 136 <td class="sel"> 136 137 <input type="checkbox" name="selection" value="<?cs var:forum.id ?>"/> 138 </td> 139 <td class="id"> 140 <a href="<?cs var:discussion.href ?>/forum/<?cs var:forum.id ?>"> 141 <div class="id"><?cs var:forum.id ?></div> 142 </a> 137 143 </td> 138 144 <td class="name"> discussionplugin/0.9/tracdiscussion/templates/admin-group-list.cs
r1071 r1072 9 9 <div class="field"> 10 10 <label for="name">Name:</label><br/> 11 <input type="text" name="name" value="<?cs var:discussion. group.name ?>"/><br/>11 <input type="text" name="name" value="<?cs var:discussion.name ?>"/><br/> 12 12 </div> 13 13 <div class="field"> 14 14 <label for="description">Description:</label><br/> 15 <input type="text" name="description" value="<?cs var:discussion. group.description ?>"/><br/>15 <input type="text" name="description" value="<?cs var:discussion.description ?>"/><br/> 16 16 </div> 17 17 <div class="buttons"> … … 51 51 <tr> 52 52 <th class="sel"> </th> 53 <th class="id">ID</th> 53 54 <th class="name">Name</th> 54 55 <th class="description">Description</th> … … 61 62 <td class="sel"> 62 63 <input type="checkbox" name="selection" value="<?cs var:group.id ?>"/> 64 </td> 65 <td class="id"> 66 <a href="<?cs var:discussion.href ?>/group/<?cs var:group.id ?>"> 67 <div class="id"><?cs var:group.id ?></div> 68 </a> 63 69 </td> 64 70 <td class="name"> discussionplugin/0.9/tracdiscussion/templates/message-list.cs
r1071 r1072 23 23 Reply: 24 24 </legend> 25 <?cs if:discussion.component == 'wiki' ?> 26 <form method="get" action="<?cs var:discussion.href ?>#preview"> 27 <?cs else ?> 28 <form method="get" action="<?cs var:discussion.href ?>/<?cs var:discussion.forum.id ?>/<?cs var:discussion.topic.id ?>#preview"> 29 <?cs /if ?> 25 <form method="get" action="<?cs var:discussion.href ?>#preview"> 30 26 <div class="field"> 31 27 <label for="author">Author:</label><br/> … … 43 39 <input type="submit" name="preview" value="Preview"/> 44 40 <input type="submit" name="submit" value="Reply"/> 45 <?cs if:discussion.component == 'wiki' ?> 46 <input type="button" name="cancel" value="Cancel" onclick="location.href = '<?cs var:discussion.href ?>#<?cs var:args.message ?>'"/> 47 <?cs else ?> 48 <input type="button" name="cancel" value="Cancel" onclick="location.href = '<?cs var:discussion.href ?>/<?cs var:discussion.forum.id ?>/<?cs var:discussion.topic.id ?>#<?cs var:args.message ?>'"/> 49 <?cs /if ?> 41 <input type="button" name="cancel" value="Cancel" onclick="location.href = '<?cs var:discussion.href ?>#<?cs var:args.message ?>'"/> 50 42 </div> 51 43 <?cs if:args.message ?> … … 70 62 <div class="controls"> 71 63 <?cs if:trac.acl.DISCUSSION_APPEND ?> 72 <?cs if:discussion.component == 'wiki' ?> 73 <a href="<?cs var:discussion.href ?>?discussion_action=add;message=<?cs var:message.id ?>#reply">Reply</a> 74 <a href="<?cs var:discussion.href ?>?discussion_action=quote;message=<?cs var:message.id ?>#reply">Quote</a> 75 <?cs else ?> 76 <a href="<?cs var:discussion.href ?>/<?cs var:discussion.forum.id ?>/<?cs var:discussion.topic.id ?>?discussion_action=add;message=<?cs var:message.id ?>#reply">Reply</a> 77 <a href="<?cs var:discussion.href ?>/<?cs var:discussion.forum.id ?>/<?cs var:discussion.topic.id ?>?discussion_action=quote;message=<?cs var:message.id ?>#reply">Quote</a> 78 <?cs /if ?> 64 <a href="<?cs var:discussion.href ?>?discussion_action=add;message=<?cs var:message.id ?>#reply">Reply</a> 65 <a href="<?cs var:discussion.href ?>?discussion_action=quote;message=<?cs var:message.id ?>#reply">Quote</a> 79 66 <?cs /if ?> 80 67 <?cs if:trac.acl.DISCUSSION_MODERATE && discussion.is_moderator ?> 81 <?cs if:discussion.component == 'wiki' ?> 82 <a href="<?cs var:discussion.href ?>?discussion_action=delete;message=<?cs var:message.id ?>" onclick="return confirm('Do you realy want to delete this reply and all its descendants?')"/>Delete</a> 83 <?cs else ?> 84 <a href="<?cs var:discussion.href ?>/<?cs var:discussion.forum.id ?>/<?cs var:discussion.topic.id ?>?discussion_action=delete;message=<?cs var:message.id ?>" onclick="return confirm('Do you realy want to delete this reply and all its descendants?')"/>Delete</a> 85 <?cs /if ?> 68 <a href="<?cs var:discussion.href ?>?discussion_action=delete;message=<?cs var:message.id ?>" onclick="return confirm('Do you realy want to delete this reply and all its descendants?')"/>Delete</a> 86 69 <?cs /if ?> 87 70 </div> … … 109 92 <?cs /def ?> 110 93 94 <?cs if:discussion.component != 'wiki' ?> 95 <?cs set:discussion.href = discussion.href + '/' + discussion.forum.id + '/' + discussion.forum.id ?> 96 <?cs /if ?> 111 97 112 98 <?cs if:discussion.no_navigation ?> … … 131 117 <div class="controls"> 132 118 <?cs if:trac.acl.DISCUSSION_APPEND ?> 133 <?cs if:discussion.component == 'wiki' ?> 134 <a href="<?cs var:discussion.href ?>?discussion_action=add;#reply">Reply</a> 135 <a href="<?cs var:discussion.href ?>?discussion_action=quote;#reply">Quote</a> 136 <?cs else ?> 137 <a href="<?cs var:discussion.href ?>/<?cs var:discussion.forum.id ?>/<?cs var:discussion.topic.id ?>?discussion_action=add;#reply">Reply</a> 138 <a href="<?cs var:discussion.href ?>/<?cs var:discussion.forum.id ?>/<?cs var:discussion.topic.id ?>?discussion_action=quote;#reply">Quote</a> 139 <?cs /if ?> 119 <a href="<?cs var:discussion.href ?>?discussion_action=add;#reply">Reply</a> 120 <a href="<?cs var:discussion.href ?>?discussion_action=quote;#reply">Quote</a> 140 121 <?cs /if ?> 141 122 </div> … … 172 153 <?cs if:trac.acl.DISCUSSION_MODERATE && discussion.is_moderator ?> 173 154 <div class="buttons"> 174 <?cs if:discussion.component == 'wiki' ?> 175 <form method="get" action="<?cs var:discussion.href ?>"> 176 <?cs else ?> 177 <form method="get" action="<?cs var:discussion.href ?>/<?cs var:discussion.forum.id ?>/<?cs var:discussion.topic.id ?>"> 178 <?cs /if ?> 155 <form method="get" action="<?cs var:discussion.href ?>"> 179 156 <input type="submit" name="deletetopic" value="Delete Topic" onclick="return confirm('Do you realy want to delete this topic?')"/> 180 157 <input type="hidden" name="discussion_action" value="delete"/> discussionplugin/0.9/tracdiscussion/templates/topic-add.cs
r1066 r1072 8 8 <div class="header"> 9 9 <div class="subject"> 10 <?cs var: args.subject ?>10 <?cs var:discussion.subject ?> 11 11 </div> 12 12 <div class="body">
