Changeset 1072

Show
Ignore:
Timestamp:
07/30/06 14:57:36 (2 years ago)
Author:
Blackhex
Message:

DiscussionPlugin:

  • Fixed bug when quoting to topic.
  • ID display in admin.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • discussionplugin/0.9/tracdiscussion/api.py

    r1071 r1072  
    2121        group, forum, topic, message = self._get_items() 
    2222        modes = self._get_modes(group, forum, topic, message) 
     23        self.log.debug('modes: %s' % modes) 
    2324 
    2425        # Determine moderator rights. 
     
    3839 
    3940        # Fill up HDF structure and return template 
    40         self.log.debug('modes: %s' % modes) 
    4141        self.req.hdf['discussion.authname'] = self.req.authname 
    4242        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 
    4764        self.req.hdf['discussion.mode'] = modes[-1] 
     65        self.req.hdf['discussion.time'] = format_datetime(time.time()) 
    4866        self.db.commit() 
    4967        return modes[-1] + '.cs', None 
     
    134152                    return ['message-list'] 
    135153                elif action == 'quote': 
    136                     return ['message-quote', 'message-list'] 
     154                    return ['topic-quote', 'message-list'] 
    137155                elif action == 'post-add': 
    138156                    if preview: 
     
    149167                    return ['message-list'] 
    150168                elif action == 'quote': 
    151                     return ['message-quote', 'message-list'] 
     169                    return ['topic-quote', 'message-list'] 
    152170                elif action == 'post-add': 
    153171                    if preview: 
     
    223241    def _do_action(self, modes, group, forum, topic, message, is_moderator): 
    224242        for mode in modes: 
     243            self.log.debug('doing %s mode action' % (mode,)) 
     244            self.log.debug(forum) 
    225245            if mode == 'group-list': 
    226246                self.req.perm.assert_permission('DISCUSSION_VIEW') 
     
    228248            elif mode == 'admin-group-list': 
    229249                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'] 
    230253                self.req.hdf['discussion.groups'] = self.get_groups() 
    231254            elif mode == 'group-add': 
     
    258281            elif mode == 'admin-forum-list': 
    259282                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'] 
    260289                self.req.hdf['discussion.users'] = self.get_users() 
    261290                self.req.hdf['discussion.groups'] = self.get_groups() 
     
    267296            elif mode == 'forum-post-add': 
    268297                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) 
    281312            elif mode == 'forum-post-edit': 
    282313                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) 
    295328            elif mode == 'forum-delete': 
    296329                self.req.perm.assert_permission('DISCUSSION_ADMIN') 
     
    309342            elif mode == 'topic-add': 
    310343                self.req.perm.assert_permission('DISCUSSION_APPEND') 
     344                subject = Markup(self.req.args.get('subject')) 
    311345                author = Markup(self.req.args.get('author')) 
    312346                body = Markup(self.req.args.get('body')) 
     347                if subject: 
     348                    self.req.hdf['discussion.subject'] = wiki_to_oneliner( 
     349                      subject, self.env) 
    313350                if author: 
    314351                    self.req.hdf['discussion.author'] = wiki_to_oneliner(author, 
     
    317354                    self.req.hdf['discussion.body'] = wiki_to_html(body, 
    318355                      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) 
    320362            elif mode == 'topic-post-add': 
    321363                self.req.perm.assert_permission('DISCUSSION_APPEND') 
     
    350392                    self.req.hdf['discussion.body'] = wiki_to_html(body, 
    351393                      self.env, self.req) 
    352                 self.req.hdf['discussion.time'] = format_datetime(time.time()) 
    353394                self.req.hdf['discussion.messages'] = self.get_messages(topic['id']) 
    354395            elif mode == 'message-quote': 
     
    394435        for row in self.cursor: 
    395436            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']) 
    399437            return row 
    400438        return None 
     
    408446        for row in self.cursor: 
    409447            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']) 
    413448            return row 
    414449        return None 
     
    424459            row = dict(zip(columns, row)) 
    425460            row['moderators'] = row['moderators'].split(' ') 
    426             row['description'] = wiki_to_oneliner(row['description'], self.env) 
    427461            return row 
    428462        return None 
     
    435469        for row in self.cursor: 
    436470            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) 
    439471            return row 
    440472        return {'id' : 0, 'name': 'None', 'description': 'No Group'} 
  • discussionplugin/0.9/tracdiscussion/htdocs/css/admin.css

    r1016 r1072  
    2121} 
    2222 
    23 .listing td.moderators, .listing td.group 
     23.listing td.id, .listing td.moderators, .listing td.group 
    2424{ 
    2525  text-align: center; 
    2626} 
     27 
     28.listing td.id 
     29{ 
     30  width: 1%; 
     31} 
  • discussionplugin/0.9/tracdiscussion/templates/admin-forum-list.cs

    r1071 r1072  
    99      <div class="field"> 
    1010        <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/> 
    1212      </div> 
    1313      <div class="field"> 
    1414        <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/> 
    1616      </div> 
    1717      <div class="field"> 
    1818        <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/> 
    2020      </div> 
    2121      <div class="field"> 
     
    2525            <?cs each:user = discussion.users ?> 
    2626              <?cs set:selected = 0 ?> 
    27               <?cs each:moderator = discussion.forum.moderators ?> 
     27              <?cs each:moderator = discussion.moderators ?> 
    2828                <?cs if:moderator == user ?> 
    2929                  <?cs set:selected = 1 ?> 
     
    3838          </select><br/> 
    3939        <?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/> 
    4141        <?cs /if ?> 
    4242      </div> 
     
    4646          <select id="group" name="group"> 
    4747            <?cs each:group = discussion.groups ?> 
    48               <?cs if:group.id == discussion.forum.group ?> 
     48              <?cs if:group.id == discussion.group ?> 
    4949                <option value="<?cs var:group.id ?>" selected="selected"><?cs var:group.name ?></option> 
    5050              <?cs else ?> 
     
    121121        <tr> 
    122122          <th class="sel">&nbsp;</th> 
     123          <th class="id">ID</th> 
    123124          <th class="name">Name</th> 
    124125          <th class="subject">Subject</th> 
     
    135136            <td class="sel"> 
    136137              <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> 
    137143            </td> 
    138144            <td class="name"> 
  • discussionplugin/0.9/tracdiscussion/templates/admin-group-list.cs

    r1071 r1072  
    99      <div class="field"> 
    1010        <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/> 
    1212      </div> 
    1313      <div class="field"> 
    1414        <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/> 
    1616      </div> 
    1717      <div class="buttons"> 
     
    5151        <tr> 
    5252          <th class="sel">&nbsp;</th> 
     53          <th class="id">ID</th> 
    5354          <th class="name">Name</th> 
    5455          <th class="description">Description</th> 
     
    6162              <td class="sel"> 
    6263                <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> 
    6369              </td> 
    6470              <td class="name"> 
  • discussionplugin/0.9/tracdiscussion/templates/message-list.cs

    r1071 r1072  
    2323         Reply: 
    2424      </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"> 
    3026        <div class="field"> 
    3127          <label for="author">Author:</label><br/> 
     
    4339          <input type="submit" name="preview" value="Preview"/> 
    4440          <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 ?>'"/> 
    5042        </div> 
    5143        <?cs if:args.message ?> 
     
    7062      <div class="controls"> 
    7163        <?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> 
    7966        <?cs /if ?> 
    8067        <?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> 
    8669        <?cs /if ?> 
    8770      </div> 
     
    10992<?cs /def ?> 
    11093 
     94<?cs if:discussion.component != 'wiki' ?> 
     95  <?cs set:discussion.href = discussion.href + '/' + discussion.forum.id + '/' + discussion.forum.id ?> 
     96<?cs /if ?> 
    11197 
    11298<?cs if:discussion.no_navigation ?> 
     
    131117        <div class="controls"> 
    132118          <?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> 
    140121          <?cs /if ?> 
    141122        </div> 
     
    172153<?cs if:trac.acl.DISCUSSION_MODERATE && discussion.is_moderator ?> 
    173154  <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 ?>"> 
    179156      <input type="submit" name="deletetopic" value="Delete Topic" onclick="return confirm('Do you realy want to delete this topic?')"/> 
    180157      <input type="hidden" name="discussion_action" value="delete"/> 
  • discussionplugin/0.9/tracdiscussion/templates/topic-add.cs

    r1066 r1072  
    88      <div class="header"> 
    99        <div class="subject"> 
    10           <?cs var:args.subject ?> 
     10          <?cs var:discussion.subject ?> 
    1111        </div> 
    1212        <div class="body">