Changeset 1375

Show
Ignore:
Timestamp:
10/12/06 08:15:29 (2 years ago)
Author:
Blackhex
Message:

DiscussionPlugin:

  • Changed some SQL queries for bug #790.
  • Change from #797.
Files:

Legend:

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

    r1252 r1375  
    291291                desc = req.args.get('desc') 
    292292 
    293                 # Prepare ORDER BY statement 
    294                 order_by = 'ORDER BY ' + order 
    295                 if desc: 
    296                     order_by = order_by + ' DESC' 
    297                 else: 
    298                     order_by = order_by + ' ASC' 
    299  
    300293                # Display groups. 
    301294                req.hdf['discussion.order'] = order 
     
    305298                    req.hdf['discussion.description'] = \ 
    306299                      group['description'] 
    307                 req.hdf['discussion.groups'] = self.get_groups(req, cursor, order_by
     300                req.hdf['discussion.groups'] = self.get_groups(req, cursor, order, desc
    308301 
    309302            elif mode == 'group-add': 
     
    353346                order = req.args.get('order') or 'id' 
    354347                desc = req.args.get('desc') 
    355  
    356                 # Prepare ORDER BY statement 
    357                 order_by = 'ORDER BY ' + order 
    358                 if desc: 
    359                     order_by = order_by + ' DESC' 
    360                 else: 
    361                     order_by = order_by + ' ASC' 
    362348 
    363349                # Display forums. 
     
    366352                req.hdf['discussion.groups'] = self.get_groups(req, cursor) 
    367353                req.hdf['discussion.forums'] = self.get_forums(req, cursor, 
    368                   order_by
     354                  order, desc
    369355 
    370356            elif mode == 'admin-forum-list': 
     
    374360                order = req.args.get('order') or 'id' 
    375361                desc = req.args.get('desc') 
    376  
    377                 # Prepare ORDER BY statement 
    378                 order_by = 'ORDER BY ' + order 
    379                 if desc: 
    380                     order_by = order_by + ' DESC' 
    381                 else: 
    382                     order_by = order_by + ' ASC' 
    383362 
    384363                # Display forums. 
     
    395374                req.hdf['discussion.users'] = self.get_users() 
    396375                req.hdf['discussion.groups'] = self.get_groups(req, cursor) 
    397                 req.hdf['discussion.forums'] = self.get_forums(req, cursor, order_by) 
     376                req.hdf['discussion.forums'] = self.get_forums(req, cursor, 
     377                  order, desc) 
    398378 
    399379            elif mode == 'forum-add': 
     
    468448                desc = req.args.get('desc') 
    469449 
    470                 # Prepare ORDER BY statement 
    471                 order_by = 'ORDER BY ' + order 
    472                 if desc: 
    473                     order_by = order_by + ' DESC' 
    474                 else: 
    475                     order_by = order_by + ' ASC' 
    476  
    477450                # Display topics. 
    478451                req.hdf['discussion.order'] = order 
    479452                req.hdf['discussion.desc'] = desc 
    480453                req.hdf['discussion.topics'] = self.get_topics(req, cursor, 
    481                   forum['id'], order_by
     454                  forum['id'], order, desc
    482455 
    483456            elif mode == 'topic-add': 
     
    517490                new_body = Markup(req.args.get('body')) 
    518491 
    519                 # Add topic. 
     492                #Add topic. 
    520493                self.add_topic(cursor, forum['id'], new_subject, new_author, 
    521494                  new_body) 
     
    635608                new_body = Markup(req.args.get('body')) 
    636609 
    637                 # Add message. 
     610                #Add message. 
    638611                if message: 
    639612                    self.add_message(cursor, forum['id'], topic['id'], 
     
    791764    # Get list functions 
    792765 
    793     def get_groups(self, req, cursor, order_by = 'ORDER BY id ASC'): 
     766    def get_groups(self, req, cursor, order_by = 'id', desc = False): 
    794767        # Get count of forums without group 
    795768        sql = "SELECT COUNT(id) FROM forum WHERE forum_group = 0" 
     
    803776 
    804777        # Get forum groups 
     778        if order_by != 'forum': 
     779            order_by = 'g.' + order_by 
    805780        columns = ('id', 'name', 'description', 'forums') 
    806         sql = "SELECT id, name, description, (SELECT COUNT(id) FROM forum f" \ 
    807           " WHERE f.forum_group = forum_group.id) FROM forum_group " + order_by 
     781        sql = "SELECT g.id, g.name, g.description, (SELECT COUNT(f.id) AS" \ 
     782          " forums FROM forum f WHERE f.forum_group = g.id) FROM forum_group" \ 
     783          " g ORDER BY " + order_by + (" ASC", " DESC")[bool(desc)] 
    808784        self.log.debug(sql) 
    809785        cursor.execute(sql) 
     
    815791        return groups 
    816792 
    817     def get_forums(self, req, cursor, order_by = 'ORDER BY subject ASC'): 
     793    def get_forums(self, req, cursor, order_by = 'subject', desc = False): 
     794        if not order_by in ('topics', 'replies', 'lastreply', 'lasttopic'): 
     795            order_by = 'f.' + order_by 
    818796        columns = ('id', 'name', 'author', 'time', 'moderators', 'group', 
    819797          'subject', 'description', 'topics', 'replies', 'lastreply', 
    820798          'lasttopic') 
    821         sql = "SELECT id, name, author, time, moderators, forum_group," \ 
    822           " subject, description, (SELECT COUNT(id) FROM topic t WHERE" \ 
    823           " t.forum = forum.id) AS topics, (SELECT COUNT(id) FROM message m" \ 
    824           " WHERE m.forum = forum.id) AS replies, (SELECT MAX(time) FROM" \ 
    825           " message m WHERE m.forum = forum.id) AS lasttopic, (SELECT" \ 
    826           " MAX(time) FROM topic t WHERE t.forum = forum.id) AS lastreply" \ 
    827           " FROM forum " + order_by 
     799        sql = "SELECT f.id, f.name, f.author, f.time, f.moderators," \ 
     800          " f.forum_group, f.subject, f.description, (SELECT COUNT(t.id)" \ 
     801          " FROM topic t WHERE t.forum = f.id) AS topics, (SELECT COUNT(m.id)" \ 
     802          " FROM message m WHERE m.forum = f.id) AS replies, (SELECT" \ 
     803          " MAX(time) FROM message m WHERE m.forum = f.id) AS lasttopic," \ 
     804          " (SELECT MAX(time) FROM topic t WHERE t.forum = f.id) AS lastreply" \ 
     805          " FROM forum f ORDER BY " + order_by + (" ASC", " DESC")[bool(desc)] 
    828806        self.log.debug(sql) 
    829807        cursor.execute(sql) 
     
    845823        return forums 
    846824 
    847     def get_topics(self, req, cursor, forum, order_by = 'ORDER BY time ASC'): 
     825    def get_topics(self, req, cursor, forum, order_by = 'time', desc = False): 
     826        if not order_by in ('replies', 'lastreply',): 
     827            order_by = 't.' + order_by 
    848828        columns = ('id', 'forum', 'time', 'subject', 'body', 'author', 
    849829          'replies', 'lastreply') 
    850         sql = "SELECT id, forum, time, subject, body, author, (SELECT" \ 
    851           " COUNT(id) FROM message m WHERE m.topic = topic.id) AS replies," \ 
    852           " (SELECT MAX(time) FROM message m WHERE m.topic = topic.id) AS" \ 
    853           " lastreply FROM topic WHERE forum = %s " + order_by 
     830        sql = "SELECT t.id, t.forum, t.time, t.subject, t.body, t.author," \ 
     831          " (SELECT COUNT(m.id) FROM message m WHERE m.topic = t.id) AS" \ 
     832          " replies, (SELECT MAX(m.time) FROM message m WHERE m.topic = t.id)" \ 
     833          " AS lastreply FROM topic t WHERE t.forum = %s ORDER BY " + order_by \ 
     834          + (" ASC", " DESC")[bool(desc)] 
    854835        self.log.debug(sql % (forum,)) 
    855836        cursor.execute(sql, (forum,)) 
     
    867848        return topics 
    868849 
    869     def get_messages(self, req, cursor, topic, time, order_by = 'ORDER BY time ASC'): 
     850    def get_messages(self, req, cursor, topic, time, order_by = 'time', desc = False): 
     851        order_by = 'm.' + order_by 
    870852        columns = ('id', 'replyto', 'time', 'author', 'body') 
    871         sql = "SELECT id, replyto, time, author, body FROM message WHERE" \ 
    872           " topic = %s " + order_by 
     853        sql = "SELECT m.id, m.replyto, m.time, m.author, m.body FROM message m WHERE" \ 
     854          " m.topic = %s ORDER BY " + order_by + (" ASC", " DESC")[bool(desc)] 
    873855        self.log.debug(sql % (topic,)) 
    874856        cursor.execute(sql, (topic,)) 
  • discussionplugin/0.10/tracdiscussion/htdocs/css/discussion.css

    r1262 r1375  
    66 
    77/* Forum list */ 
    8 .forum-list tr > td 
     8.forum-list tr >td 
    99{ 
    1010  margin: 0em !important; 
     
    185185{ 
    186186  text-align: center; 
    187   margin-top: 2em; 
     187  margin: 1em; 
    188188} 
    189189 
  • discussionplugin/0.10/tracdiscussion/templates/message-list.cs

    r1262 r1375  
    7373      <div class="buttons"> 
    7474        <input type="submit" name="preview" value="Preview"/> 
    75         <input type="submit" name="submit" value="Edit"/> 
     75        <input type="submit" name="submit" value="Submit changes"/> 
    7676        <input type="button" name="cancel" value="Cancel" onclick="location.href = '<?cs var:discussion.href ?>#<?cs var:args.message ?>'"/> 
    7777      </div> 
     
    161161<?cs if:trac.acl.DISCUSSION_VIEW ?> 
    162162  <?cs if:!discussion.no_display && discussion.topic.id ?> 
    163     <?cs call:display_set_display() ?> 
    164163    <a name="-1"></a> 
    165164    <div class="topic <?cs if:discussion.topic.new ?>new<?cs /if ?>"> 
     
    203202    <?cs if:discussion.messages.0.id || args.discussion_action && ((args.discussion_action == 'add') || (args.discussion_action == 'quote') || (args.discussion_action == 'post-add')) ?> 
    204203      <div class="replies <?cs if:discussion.topic.new ?>new<?cs /if ?>"> 
     204        <?cs call:display_set_display() ?> 
    205205        <ul class="reply"> 
    206206          <?cs if:discussion.messages.0.id ?> 
     
    214214          <?cs /if ?> 
    215215        </ul> 
     216        <?cs call:display_set_display() ?> 
    216217      </div> 
    217218    <?cs /if ?> 
    218     <?cs call:display_set_display() ?> 
    219219  <?cs else?> 
    220220    <span>No discussion for this page created.</span>