Changeset 1016
- Timestamp:
- 07/12/06 09:08:36 (2 years ago)
- Files:
-
- discussionplugin/0.9/tracdiscussion/admin.py (modified) (8 diffs)
- discussionplugin/0.9/tracdiscussion/api.py (modified) (5 diffs)
- discussionplugin/0.9/tracdiscussion/core.py (modified) (2 diffs)
- discussionplugin/0.9/tracdiscussion/htdocs/css/admin.css (modified) (1 diff)
- discussionplugin/0.9/tracdiscussion/htdocs/css/discussion.css (modified) (1 diff)
- discussionplugin/0.9/tracdiscussion/templates/forum-add.cs (modified) (1 diff)
- discussionplugin/0.9/tracdiscussion/templates/forum-admin.cs (modified) (3 diffs)
- discussionplugin/0.9/tracdiscussion/templates/forum-list.cs (modified) (1 diff)
- discussionplugin/0.9/tracdiscussion/templates/group-admin.cs (modified) (1 diff)
- discussionplugin/0.9/tracdiscussion/templates/topic-list.cs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
discussionplugin/0.9/tracdiscussion/admin.py
r1009 r1016 34 34 # Get action 35 35 action = req.args.get('discussion_action') 36 submit = req.args.has_key('submit'); 37 cancel = req.args.has_key('cancel'); 36 38 37 39 # Determine mode … … 39 41 if action == 'post-add': 40 42 mode = 'group-post-add' 43 elif action == 'post-edit': 44 if submit: 45 mode = 'group-post-edit' 46 else: 47 mode = 'group-admin' 41 48 elif action == 'delete': 42 49 mode = 'group-delete' … … 46 53 if action == 'post-add': 47 54 mode = 'forum-post-add' 55 elif action == 'post-edit': 56 if submit: 57 mode = 'forum-post-edit' 58 else: 59 mode = 'forum-admin' 48 60 elif action == 'delete': 49 61 mode = 'forum-delete' 50 elif action == 'change-group':51 mode = 'forum-change-group'52 62 else: 53 63 mode = 'forum-admin' … … 55 65 # Perform mode action 56 66 if mode == 'group-admin': 67 # Get selected group 68 if path_info: 69 req.hdf['discussion.group'] = get_group(cursor, self.env, req, 70 self.log, path_info) 71 57 72 # Display group list 58 73 req.hdf['discussion.groups'] = get_groups(cursor, self.env, req, … … 65 80 # Add new group 66 81 add_group(cursor, self.log, name, description) 82 83 # Display group list 84 req.hdf['discussion.groups'] = get_groups(cursor, self.env, req, 85 self.log) 86 mode = 'group-admin' 87 elif mode == 'group-post-edit': 88 # Get form values 89 group = req.args.get('group') 90 name = req.args.get('name') 91 description = req.args.get('description') 92 93 # Add new group 94 edit_group(cursor, self.log, group, name, description) 67 95 68 96 # Display group list … … 86 114 mode = 'group-admin' 87 115 elif mode == 'forum-admin': 116 # Get selected group 117 if path_info: 118 req.hdf['discussion.forum'] = get_forum(cursor, self.env, req, 119 self.log, path_info) 120 88 121 # Display forum list 89 122 req.hdf['discussion.forums'] = get_forums(cursor, self.env, req, … … 115 148 self.log) 116 149 mode = 'forum-admin' 150 elif mode == 'forum-post-edit': 151 # Get form values 152 forum = req.args.get('forum') 153 name = req.args.get('name') 154 subject = req.args.get('subject') 155 description = req.args.get('description') 156 moderators = req.args.get('moderators') 157 group = req.args.get('group') 158 159 if not moderators: 160 moderators = [] 161 if not isinstance(moderators, list): 162 moderators = [moderators] 163 164 # Add new forum 165 edit_forum(cursor, self.log, forum, name, subject, description, moderators, group) 166 167 # Display forum list 168 req.hdf['discussion.forums'] = get_forums(cursor, self.env, req, 169 self.log) 170 req.hdf['discussion.groups'] = get_groups(cursor, self.env, req, 171 self.log) 172 mode = 'forum-admin' 117 173 elif mode == 'forum-delete': 118 174 # Get form values … … 132 188 self.log) 133 189 mode = 'forum-admin' 134 elif mode == 'forum-change-group':135 # Get form values136 forum = req.args.get('forum')137 group = req.args.get('group')138 139 # Set new group140 set_group(cursor, self.log, forum, group)141 142 # Display forum list143 req.hdf['discussion.forums'] = get_forums(cursor, self.env, req,144 self.log)145 req.hdf['discussion.groups'] = get_groups(cursor, self.env, req,146 self.log)147 mode = 'forum-admin'148 190 149 191 # Fill template values and return mode template discussionplugin/0.9/tracdiscussion/api.py
r1009 r1016 48 48 49 49 def get_forum(cursor, env, req, log, id): 50 columns = ('name', 'moderators', 'id', 'time', 'subject', 'description') 51 sql = "SELECT name, moderators, id, time, subject, description FROM" \ 52 " forum WHERE id = %s" 50 columns = ('name', 'moderators', 'id', 'time', 'subject', 'description', 51 'group') 52 sql = "SELECT name, moderators, id, time, subject, description, forum_group" \ 53 " FROM forum WHERE id = %s" 53 54 log.debug(sql) 54 55 cursor.execute(sql, (id,)) … … 56 57 row = dict(zip(columns, row)) 57 58 row['moderators'] = row['moderators'].split(' ') 59 row['description'] = wiki_to_oneliner(row['description'], env) 60 return row 61 return None 62 63 def get_group(cursor, env, req, log, id): 64 columns = ('id', 'name', 'description') 65 sql = "SELECT id, name, description FROM forum_group WHERE id = %s" 66 log.debug(sql) 67 cursor.execute(sql, (id,)) 68 for row in cursor: 69 row = dict(zip(columns, row)) 70 row['name'] = wiki_to_oneliner(row['name'], env) 58 71 row['description'] = wiki_to_oneliner(row['description'], env) 59 72 return row … … 77 90 cursor.execute(sql, (forum, topic)) 78 91 92 # Edit all functons 93 def edit_group(cursor, log, group, name, description): 94 sql = "UPDATE forum_group SET name = %s, description = %s WHERE id = %s" 95 log.debug(sql) 96 cursor.execute(sql, (name, description, group)) 97 98 def edit_forum(cursor, log, forum, name, subject, description, moderators, group): 99 moderators = ' '.join(moderators) 100 if not group: 101 group = '0' 102 sql = "UPDATE forum SET name = %s, subject = %s, description = %s," \ 103 " moderators = %s, forum_group = %s WHERE id = %s" 104 log.debug(sql) 105 cursor.execute(sql, (name, subject, description, moderators, group, forum)) 106 107 # Get list functions 108 79 109 def get_groups(cursor, env, req, log): 80 110 # Get count of forums without group … … 99 129 row['description'] = wiki_to_oneliner(row['description'], env) 100 130 groups.append(row) 101 log.debug(groups)102 131 return groups 103 132 … … 187 216 users = [] 188 217 for user in env.get_known_users(): 189 log.debug(user)190 218 users.append(user[0]) 191 219 return users discussionplugin/0.9/tracdiscussion/core.py
r1009 r1016 160 160 req.hdf['discussion.forums'] = get_forums(cursor, self.env, req, 161 161 self.log) 162 self.log.debug(req.hdf.get('discussion.forums'))163 162 elif mode == 'forum-add': 164 163 req.perm.assert_permission('DISCUSSION_MODIFY') … … 262 261 # Get form values 263 262 new_forum = req.args.get('new_forum') 264 self.log.debug(new_forum)265 263 266 264 # Set new forum discussionplugin/0.9/tracdiscussion/htdocs/css/admin.css
r836 r1016 1 /* Forum group list.*/2 . group-list1 /* General styles */ 2 .listing 3 3 { 4 overflow: auto;4 text-align: left; 5 5 } 6 6 7 .group-list td.forums 7 .listing tr > td 8 { 9 margin: 0em !important; 10 padding: 0em !important; 11 height: 100%; 12 } 13 14 .listing tr > td > a 15 { 16 display: block; 17 height: 100%; 18 padding: 0.2em; 19 margin: 0em !important; 20 border: none; 21 } 22 23 .listing td.moderators, .listing td.group 8 24 { 9 25 text-align: center; 10 26 } 11 12 /* Forum list */13 .forum-list14 {15 overflow: auto;16 }17 18 .forum-list td.moderators19 {20 text-align: center;21 }discussionplugin/0.9/tracdiscussion/htdocs/css/discussion.css
r846 r1016 18 18 height: 100%; 19 19 padding: 0.5em; 20 margin: 0em ;20 margin: 0em !important; 21 21 border: none; 22 22 } discussionplugin/0.9/tracdiscussion/templates/forum-add.cs
r1006 r1016 41 41 </div> 42 42 <?cs else ?> 43 <input type="hidden" name="group" value=" "/>43 <input type="hidden" name="group" value="0"/> 44 44 <?cs /if ?> 45 45 <div class="buttons"> discussionplugin/0.9/tracdiscussion/templates/forum-admin.cs
r1006 r1016 1 <script type="text/javascript">2 function submit_group_change(forum)3 {4 var forum_list_form = document.getElementById('forum-list-form');5 var group_select = document.getElementById('group-select-' + forum);6 forum_list_form.discussion_action.value = 'change-group';7 forum_list_form.group.value = group_select.value;8 forum_list_form.forum.value = forum;9 forum_list_form.submit();10 }11 </script>12 13 1 <h2>Forums</h2> 14 2 15 <form class="addnew" method="post"> 16 <fieldset> 17 <legend> 18 Add Forum: 19 </legend> 20 <div class="field"> 21 <label for="name">Name:</label><br/> 22 <input type="text" name="name" value=""/><br/> 23 </div> 24 <div class="field"> 25 <label for="subject">Subject:</label><br/> 26 <input type="text" name="subject" value=""/><br/> 27 </div> 28 <div class="field"> 29 <label for="description">Description:</label><br/> 30 <input type="text" name="description" value=""/><br/> 31 </div> 32 <div class="field"> 33 <label for="moderators">Moderators:</label><br/> 34 <?cs if:discussion.users.0 ?> 35 <select name="moderators" multiple="on"> 36 <?cs each:user = discussion.users ?> 37 <option value="<?cs var:user ?>"><?cs var:user ?></option> 38 <?cs /each ?> 39 </select><br/> 3 <?cs if:discussion.forum.id ?> 4 <form id="edit-forum-form" class="addnew" method="post" action="<?cs var:discussion.href ?>"> 5 <fieldset> 6 <legend> 7 Edit Forum: 8 </legend> 9 <div class="field"> 10 <label for="name">Name:</label><br/> 11 <input type="text" name="name" value="<?cs var:discussion.forum.name ?>"/><br/> 12 </div> 13 <div class="field"> 14 <label for="subject">Subject:</label><br/> 15 <input type="text" name="subject" value="<?cs var:discussion.forum.subject ?>"/><br/> 16 </div> 17 <div class="field"> 18 <label for="description">Description:</label><br/> 19 <input type="text" name="description" value="<?cs var:discussion.forum.description ?>"/><br/> 20 </div> 21 <div class="field"> 22 <label for="moderators">Moderators:</label><br/> 23 <?cs if:discussion.users.0 ?> 24 <select name="moderators" multiple="on"> 25 <?cs each:user = discussion.users ?> 26 <?cs set:selected = 0 ?> 27 <?cs each:moderator = discussion.forum.moderators ?> 28 <?cs if:moderator == user ?> 29 <?cs set:selected = 1 ?> 30 <?cs /if ?> 31 <?cs /each ?> 32 <?cs if:selected ?> 33 <option value="<?cs var:user ?>" selected="selected"><?cs var:user ?></option> 34 <?cs else ?> 35 <option value="<?cs var:user ?>"><?cs var:user ?></option> 36 <?cs /if ?> 37 <?cs /each ?> 38 </select><br/> 39 <?cs else ?> 40 <input type="text" name="moderators" value="<?cs var:discussion.forum.moderators ?>"/><br/> 41 <?cs /if ?> 42 </div> 43 <?cs if:discussion.groups.1.id ?> 44 <div class="group"> 45 <label for="group">Forum Group:</label><br/> 46 <select name="group"> 47 <?cs each:group = discussion.groups ?> 48 <?cs if:group.id == discussion.forum.group ?> 49 <option value="<?cs var:group.id ?>" selected="selected"><?cs var:group.name ?></option> 50 <?cs else ?> 51 <option value="<?cs var:group.id ?>"><?cs var:group.name ?></option> 52 <?cs /if ?> 53 <?cs /each ?> 54 </select><br/> 55 </div> 40 56 <?cs else ?> 41 <input type=" text" name="moderators" value=""/><br/>57 <input type="hidden" name="group" value=""/> 42 58 <?cs /if ?> 43 </div> 44 <?cs if:discussion.groups.1.id ?> 45 <div class="group"> 46 <label for="group">Forum Group:</label><br/> 47 <select name="group"> 48 <?cs each:group = discussion.groups ?> 49 <option value="<?cs var:group.id ?>"><?cs var:group.name ?></option> 50 <?cs /each ?> 51 </select><br/> 59 <div class="buttons"> 60 <input type="submit" name="submit" value="Edit"/> 61 <input type="submit" name="cancel" value="Cancel"/> 62 <input type="hidden" name="forum" value="<?cs var:discussion.forum.id ?>"/> 63 <input type="hidden" name="discussion_action" value="post-edit"/> 52 64 </div> 53 <?cs else ?> 54 <input type="hidden" name="group" value=""/> 55 <?cs /if ?> 56 <div class="buttons"> 57 <input type="submit" name="submit" value="Add"/> 58 <input type="hidden" name="discussion_action" value="post-add"/> 59 </div> 60 </fieldset> 61 </form> 65 </fieldset> 66 </form> 67 <?cs else?> 68 <form id="new-forum-form" class="addnew" method="post" action="<?cs var:discussion.href ?>"> 69 <fieldset> 70 <legend> 71 Add Forum: 72 </legend> 73 <div class="field"> 74 <label for="name">Name:</label><br/> 75 <input type="text" name="name" value=""/><br/> 76 </div> 77 <div class="field"> 78 <label for="subject">Subject:</label><br/> 79 <input type="text" name="subject" value=""/><br/> 80 </div> 81 <div class="field"> 82 <label for="description">Description:</label><br/> 83 <input type="text" name="description" value=""/><br/> 84 </div> 85 <div class="field"> 86 <label for="moderators">Moderators:</label><br/> 87 <?cs if:discussion.users.0 ?> 88 <select name="moderators" multiple="on"> 89 <?cs each:user = discussion.users ?> 90 <option value="<?cs var:user ?>"><?cs var:user ?></option> 91 <?cs /each ?> 92 </select><br/> 93 <?cs else ?> 94 <input type="text" name="moderators" value=""/><br/> 95 <?cs /if ?> 96 </div> 97 <?cs if:discussion.groups.1.id ?> 98 <div class="group"> 99 <label for="group">Forum Group:</label><br/> 100 <select name="group"> 101 <?cs each:group = discussion.groups ?> 102 <option value="<?cs var:group.id ?>"><?cs var:group.name ?></option> 103 <?cs /each ?> 104 </select><br/> 105 </div> 106 <?cs else ?> 107 <input type="hidden" name="group" value=""/> 108 <?cs /if ?> 109 <div class="buttons"> 110 <input type="submit" name="submit" value="Add"/> 111 <input type="hidden" name="discussion_action" value="post-add"/> 112 </div> 113 </fieldset> 114 </form> 115 <?cs /if ?> 62 116 63 117 <?cs if:discussion.forums.0.id ?> 64 <form id="forum-list-form" class="forum-list" method="post">65 <table class="listing">118 <form method="post" action="<?cs var:discussion.href ?>"> 119 <table id="forum-list" class="listing"> 66 120 <thead> 67 121 <tr> 68 <th class="sel ection"> </th>122 <th class="sel"> </th> 69 123 <th class="name">Name</th> 70 124 <th class="subject">Subject</th> … … 76 130 </tr> 77 131 </thead> 78 < /tbody>132 <tbody> 79 133 <?cs each:forum = discussion.forums ?> 80 134 <tr class="<?cs if:name(forum) % #2 ?>even<?cs else ?>odd<?cs /if ?>"> 81 <td class="sel ection">135 <td class="sel"> 82 136 <input type="checkbox" name="selection" value="<?cs var:forum.id ?>"/> 83 137 </td> 84 138 <td class="name"> 85 <div class="name"><?cs var:forum.name ?></div> 139 <a href="<?cs var:discussion.href ?>/<?cs var:forum.id ?>"> 140 <div class="name"><?cs alt:forum.name ?> <?cs /alt ?></div> 141 </a> 86 142 </td> 87 143 <td class="subject"> 88 <div class="subject"><?cs var:forum.subject ?></div> 144 <a href="<?cs var:discussion.href ?>/<?cs var:forum.id ?>"> 145 <div class="subject"><?cs alt:forum.subject ?> <?cs /alt ?></div> 146 </a> 89 147 </td> 90 148 <td class="description"> 91 <div class="description"><?cs var:forum.description ?></div> 149 <a href="<?cs var:discussion.href ?>/<?cs var:forum.id ?>"> 150 <div class="description"><?cs alt:forum.description ?> <?cs /alt ?></div> 151 </a> 92 152 </td> 93 153 <td class="moderators"> 94 <div class="moderators"><?cs var:forum.moderators ?></div> 154 <a href="<?cs var:discussion.href ?>/<?cs var:forum.id ?>"> 155 <div class="moderators"><?cs alt:forum.moderators ?> <?cs /alt ?></div> 156 </a> 95 157 </td> 96 158 <?cs if:discussion.groups.1.id ?> 97 159 <td class="group"> 98 <div class="group"> 99 <select id="group-select-<?cs var:forum.id ?>" name="group-<?cs var:forum.id ?>" onChange="submit_group_change(<?cs var:forum.id ?>)"> 100 <?cs each:group = discussion.groups ?> 101 <?cs if:group.id == forum.group ?> 102 <option value="<?cs var:group.id ?>" selected="selected"><?cs var:group.name ?></option> 103 <?cs else ?> 104 <option value="<?cs var:group.id ?>"><?cs var:group.name ?></option> 105 <?cs /if ?> 106 <?cs /each ?> 107 </select> 108 </div> 160 <a href="<?cs var:discussion.href ?>/<?cs var:forum.id ?>"> 161 <?cs each:group = discussion.groups ?> 162 <?cs if:group.id == forum.group ?> 163 <div class="group"><?cs var:group.name ?></div> 164 <?cs /if ?> 165 <?cs /each ?> 166 </a> 109 167 </td> 110 168 <?cs /if ?> … … 116 174 <input type="submit" name="remove" value="Remove selected items" /> 117 175 <input type="hidden" name="discussion_action" value="delete"/> 118 <input type="hidden" name="group" value=""/>119 <input type="hidden" name="forum" value=""/>120 176 </div> 121 177 </form> discussionplugin/0.9/tracdiscussion/templates/forum-list.cs
r1006 r1016 28 28 <td class="title"> 29 29 <a href="<?cs var:discussion.href ?>/<?cs var:forum.id ?>"> 30 <div class="subject"><?cs var:forum.subject ?></div>31 <div class="description"><?cs var:forum.description?></div>30 <div class="subject"><?cs alt:forum.subject ?> <?cs /alt ?></div> 31 <div class="description"><?cs alt:forum.description ?> <?cs /alt ?></div> 32 32 </a> 33 33 </td> 34 34 <td class="moderators"> 35 35 <a href="<?cs var:discussion.href ?>/<?cs var:forum.id ?>"> 36 <div class="moderators"><?cs var:forum.moderators?></div>36 <div class="moderators"><?cs alt:forum.moderators ?> <?cs /alt ?></div> 37 37 </a> 38 38 </td> 39 39 <td class="lasttopic"> 40 40 <a href="<?cs var:discussion.href ?>/<?cs var:forum.id ?>"> 41 <div class="lasttopic"><?cs var:forum.lasttopic?></div>41 <div class="lasttopic"><?cs alt:forum.lasttopic ?> <?cs /alt ?></div> 42 42 </a> 43 43 </td> 44 44 <td class="lastreply"> 45 45 <a href="<?cs var:discussion.href ?>/<?cs var:forum.id ?>"> 46 <div class="lastreply"><?cs var:forum.lastreply?></div>46 <div class="lastreply"><?cs alt:forum.lastreply ?> <?cs /alt ?></div> 47 47 </a> 48 48 </td> 49 49 <td class="founded"> 50 50 <a href="<?cs var:discussion.href ?>/<?cs var:forum.id ?>"> 51 <div class="founded"><?cs var:forum.time?></div>51 <div class="founded"><?cs alt:forum.time ?> <?cs /alt ?></div> 52 52 </a> 53 53 </td> discussionplugin/0.9/tracdiscussion/templates/group-admin.cs
r1006 r1016 1 1 <h2>Forum Groups</h2> 2 2 3 <form class="addnew" method="post"> 4 <fieldset> 5 <legend> 6 Add Forum Group: 7 </legend> 8 <div class="field"> 9 <label for="name">Name:</label><br/> 10 <input type="text" name="name" value=""/><br/> 11 </div> 12 <div class="field"> 13 <label for="description">Description:</label><br/> 14 <input type="text" name="description" value=""/><br/> 15 </div> 16 <div class="buttons"> 17 <input type="submit" name="submit" value="Add"/> 18 <input type="hidden" name="discussion_action" value="post-add"/> 19 </div> 20 </fieldset> 21 </form> 3 <?cs if:discussion.group.id ?> 4 <form id="edit-group-form" class="addnew" method="post" action="<?cs var:discussion.href ?>"> 5 <fieldset> 6 <legend> 7 Edit Forum Group: 8 </legend> 9 <div class="field"> 10 <label for="name">Name:</label><br/> 11 <input type="text" name="name" value="<?cs var:discussion.group.name ?>"/><br/> 12 </div> 13 <div class="field"> 14 <label for="description">Description:</label><br/> 15 <input type="text" name="description" value="<?cs var:discussion.group.description ?>"/><br/> 16 </div> 17 <div class="buttons"> 18 <input type="submit" name="submit" value="Edit"/> 19 <input type="submit" name="cancel" value="Cancel"/> 20 <input type="hidden" name="group" value="<?cs var:discussion.group.id ?>"/> 21 <input type="hidden" name="discussion_action" value="post-edit"/> 22 </div> 23 </fieldset> 24 </form> 25 <?cs else?> 26 <form id="new-group-form" class="addnew" method="post" action="<?cs var:discussion.href ?>"> 27 <fieldset> 28 <legend> 29 Add Forum Group: 30 </legend> 31 <div class="field"> 32 <label for="name">Name:</label><br/> 33 <input type="text" name="name" value=""/><br/> 34 </div> 35 <div class="field"> 36 <label for="description">Description:</label><br/> 37 <input type="text" name="description" value=""/><br/> 38 </div> 39 <div class="buttons"> 40 <input type="submit" name="submit" value="Add"/> 41 <input type="hidden" name="discussion_action" value="post-add"/> 42 </div> 43 </fieldset> 44 </form> 45 <?cs /if ?> 22 46 23 47 <?cs if:discussion.groups.1.id ?> 24 <form class="forum-list" method="post">25 <table class="listing">48 <form method="post" action="<?cs var:discussion.href ?>"> 49 <table id="group-list" class="listing"> 26 50 <thead> 27 51 <tr> 28 <th class="sel ection"> </th>52 <th class="sel"> </th> 29 53 <th class="name">Name</th> 30 54 <th class="description">Description</th> 31 55 </tr> 32 56 </thead> 33 < /tbody>57 <tbody> 34 58 <?cs each:group = discussion.groups ?> 35 59 <?cs if:group.id ?> 36 60 <tr class="<?cs if:name(group) % #2 ?>even<?cs else ?>odd<?cs /if ?>"> 37 <td class="sel ection">61 <td class="sel"> 38 62 <input type="checkbox" name="selection" value="<?cs var:group.id ?>"/> 39 63 </td> 40 64 <td class="name"> 41 <div class="name"><?cs var:group.name ?></div> 65 <a href="<?cs var:discussion.href ?>/<?cs var:group.id ?>"> 66 <div class="name"><?cs alt:group.name ?> <?cs /alt ?></div> 67 </a> 42 68 </td> 43 69 <td class="description"> 44 <div class="description" ><?cs var:group.description ?></div> 70 <a href="<?cs var:discussion.href ?>/<?cs var:group.id ?>"> 71 <div class="description" ><?cs alt:group.description ?> <?cs /alt ?></div> 72 </a> 45 73 </td> 46 74 </tr> discussionplugin/0.9/tracdiscussion/templates/topic-list.cs
r909 r1016 18 18 <td class="subject"> 19 19 <a href="<?cs var:discussion.href ?>/<?cs var:topic.id ?>"> 20 <div class="subject"><?cs var:topic.subject ?></div>20 <div class="subject"><?cs alt:topic.subject ?> <?cs /alt ?></div> 21 21 </a> 22 22 </td> 23 23 <td class="author"> 24 24 <a href="<?cs var:discussion.href ?>/<?cs var:topic.id ?>"> 25 <div class="author" ><?cs var:topic.author?></div>25 <div class="author" ><?cs alt:topic.author ?> <?cs /alt ?></div> 26 26 </a> 27 27 </td> 28 28 <td class="lastreply"> 29 29 <a href="<?cs var:discussion.href ?>/<?cs var:topic.id ?>"> 30 <div class="lastreply"><?cs var:topic.lastreply?></div>30 <div class="lastreply"><?cs alt:topic.lastreply ?> <?cs /alt ?></div> 31 31 </a> 32 32 </td> 33 33 <td class="founded"> 34 34 <a href="<?cs var:discussion.href ?>/<?cs var:topic.id ?>"> 35 <div class="founded" ><?cs var:topic.time?></div>35 <div class="founded" ><?cs alt:topic.time ?> <?cs /alt ?></div> 36 36 </a> 37 37 </td>
