Changeset 2653
- Timestamp:
- 09/23/07 03:45:21 (1 year ago)
- Files:
-
- guestbookplugin/0.10/guestbook/core.py (modified) (3 diffs)
- guestbookplugin/0.10/guestbook/htdocs/css/guestbook.css (modified) (2 diffs)
- guestbookplugin/0.10/guestbook/init.py (modified) (1 diff)
- guestbookplugin/0.10/guestbook/templates/guestbook.cs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
guestbookplugin/0.10/guestbook/core.py
r1651 r2653 1 from __future__ import generators 1 # -*- coding: utf8 -*- 2 2 3 # General includes4 3 import time 5 4 6 # Track includes7 5 from trac.core import * 8 6 from trac.db import * 7 from trac.wiki import wiki_to_html, wiki_to_oneliner 8 from trac.web.chrome import add_stylesheet, add_script 9 from trac.util import Markup, format_datetime 10 9 11 from trac.web import IRequestHandler 10 from trac.wiki import wiki_to_html, wiki_to_oneliner11 from trac.env import IEnvironmentSetupParticipant12 from trac.web.chrome import INavigationContributor, ITemplateProvider, \13 add_stylesheet14 12 from trac.perm import IPermissionRequestor 15 from trac.util import Markup, format_datetime 13 from trac.web.chrome import INavigationContributor, ITemplateProvider 14 15 # Determine SpamFilterPlugin presence. 16 try: 17 from tracspamfilter.api import FilterSystem 18 has_spam_filter = True 19 except: 20 has_spam_filter = False 16 21 17 22 """ … … 95 100 if req.args['action'] == 'newentry': 96 101 req.perm.assert_permission('GUESTBOOK_APPEND') 97 self._append_message(cursor, req.args['author'], 98 req.args['title'], req.args['text']) 102 103 # get form values 104 author = req.args['author'] 105 title = req.args['title'] 106 text = req.args['text'] 107 108 # check for spam 109 self.log.debug('has_spam_filter: %s' % (has_spam_filter,)) 110 if has_spam_filter: 111 FilterSystem(self.env).test(req, author, [(None, title), 112 (None, text)]) 113 114 self._append_message(cursor, author, title, text) 115 99 116 # process delete request 100 117 if req.args['action'] == 'delete': … … 103 120 104 121 # adding stylesheets 105 add_stylesheet(req, 'common/css/default.css')106 122 add_stylesheet(req, 'common/css/wiki.css') 107 123 add_stylesheet(req, 'guestbook/css/guestbook.css') 124 125 # adding scripts 126 add_script(req, 'common/js/trac.js') 127 add_script(req, 'common/js/wikitoolbar.js') 108 128 109 129 # passing variables to template guestbookplugin/0.10/guestbook/htdocs/css/guestbook.css
r431 r2653 1 /* Message list styles. */ 1 2 div.guestbook 2 3 { … … 5 6 } 6 7 7 .guestbook table.message8 div.guestbook div.message 8 9 { 10 width: 60%; 9 11 margin: auto; 10 12 margin-top: 1em; 11 border: solid 1px #aaa; 13 border: 1px solid #d7d7d7; 14 } 15 16 div.guestbook div.message div.title 17 { 18 font-weight: bold; 19 margin: 0em; 20 padding: 0.25em 1em 0.25em 1em; 21 background-color: #f7f7f7; 22 border-bottom: 1px solid #d7d7d7; 23 } 24 25 div.guestbook div.controls 26 { 27 float: right; 28 padding: 0.5em; 29 padding-right: 2.5em; 30 } 31 32 div.guestbook div.controls a 33 { 34 margin: 0.3em; 35 } 36 37 div.guestbook div.footer 38 { 39 font-weight: bold; 40 margin: 0em; 41 padding: 0.5em; 42 } 43 44 div.guestbook div.author, div.guestbook div.time 45 { 46 display: inline; 47 padding: 0em 0.5em; 48 } 49 50 51 /* Add message form styles. */ 52 div.guestbook div.message div.body 53 { 54 margin: 1em; 55 } 56 57 div.guestbook form 58 { 59 margin: 2em; 60 margin-left: auto; 61 margin-right: auto; 12 62 width: 60%; 13 63 } 14 64 15 .guestbook tr 65 div.guestbook form 16 66 { 17 border-collapse: collapse;67 overflow: auto; 18 68 } 19 20 .guestbook th21 {22 padding: 0.2em 0.5em 0.2em 0.5em;23 font-weight: bold;24 }25 26 .guestbook td27 {28 padding: 0.2em 0.5em 0.2em 0.5em;29 }30 31 .guestbook .header32 {33 background-color: #ddd;34 }35 36 .guestbook .row37 {38 39 }40 41 .guestbook .left42 {43 text-align: left;44 }45 46 .guestbook .right47 {48 text-align: right;49 }50 51 .guestbook .textfield52 {53 width: 60%;54 }guestbookplugin/0.10/guestbook/init.py
r1651 r2653 1 # -*- coding: utf8 -*- 2 1 3 from trac.core import * 2 4 from trac.db import * 5 3 6 from trac.env import IEnvironmentSetupParticipant 4 7 guestbookplugin/0.10/guestbook/templates/guestbook.cs
r432 r2653 2 2 <?cs include "macros.cs" ?> 3 3 4 <div class="guestbook"> 4 <div id="ctxtnav" class="nav"> 5 </div> 6 7 <div id="content" class="guestbook"> 5 8 <h1> 6 9 <?cs var:guestbook.title ?> 7 10 </h1> 8 11 <?cs each:message = guestbook.messages ?> 9 <table class="message"> 10 <tr class="header"> 11 <th class="left"> 12 <div class="message"> 13 <div class="header"> 14 <div class="title"> 15 <?cs var:message.title ?> 16 </div> 17 <div class="body"> 18 <?cs var:message.body ?> 19 </div> 20 </div> 21 <div class="controls"> 22 <?cs if:trac.acl.GUESTBOOK_DELETE ?> 23 <a href="<?cs var:trac.href.guestbook ?>?action=delete;id=<?cs var:message.id ?>">Delete</a> 24 <?cs /if ?> 25 </div> 26 <div class="footer"> 27 <div class="author"> 12 28 <?cs var:message.author ?> 13 </ th>14 < th class="right">29 </div> 30 <div class="time"> 15 31 <?cs var:message.time ?> 16 </th> 17 </tr> 18 <tr class="header"> 19 <?cs if:trac.acl.GUESTBOOK_DELETE ?> 20 <th class="left"> 21 <?cs var:message.title?> 22 </th> 23 <th class="right"> 24 <a href="<?cs var:trac.href.guestbook ?>?action=delete;id=<?cs var:message.id ?>"> 25 Delete 26 </a> 27 </th> 28 <?cs else ?> 29 <th class="left" colspan="2"> 30 <?cs var:message.title?> 31 </th> 32 <?cs /if ?> 33 </tr> 34 <tr class="row"> 35 <td class="left" colspan="2"> 36 <?cs var:message.body ?> 37 </td> 38 </tr> 39 </table> 32 </div> 33 </div> 34 </div> 40 35 <?cs /each ?> 41 36 … … 44 39 <fieldset> 45 40 <legend> 46 Add entry:<br >41 Add entry:<br/> 47 42 </legend> 48 43 <div class="field"> 49 <label> 50 Name:<br> 51 <input type="text" name="author" value=""/> 52 </label> 44 <label for="author">Author:</label><br/> 45 <input type="text" id="author" name="author" value=""/> 53 46 </div> 54 47 <div class="field"> 55 <label> 56 Title:<br> 57 <input class="textfield" type="text" name="title" value=""/> 58 </label> 48 <label for="title">Title:</label><br/> 49 <input type="text" id="title" name="title" value=""/> 59 50 </div> 60 51 <div class="field"> 61 <label> 62 Text:<br> 63 <textarea class="textfield" name="text" rows="20"> 52 <label for="text">Text:</label><br/> 53 <textarea class="wikitext" id="text" name="text" rows="10" cols="78"> 64 54 Enter your message here... 65 </textarea> 66 </label> 55 </textarea> 67 56 </div> 68 57 <input type="hidden" name="action" value="newentry"/>
