Changeset 4344
- Timestamp:
- 09/26/08 06:53:22 (3 months ago)
- Files:
-
- screenshotsplugin/0.11/setup.py (modified) (1 diff)
- screenshotsplugin/0.11/tracscreenshots/api.py (modified) (6 diffs)
- screenshotsplugin/0.11/tracscreenshots/core.py (modified) (18 diffs)
- screenshotsplugin/0.11/tracscreenshots/db/db4.py (added)
- screenshotsplugin/0.11/tracscreenshots/htdocs/css/screenshots.css (modified) (1 diff)
- screenshotsplugin/0.11/tracscreenshots/htdocs/js/screenshots.js (modified) (2 diffs)
- screenshotsplugin/0.11/tracscreenshots/init.py (modified) (2 diffs)
- screenshotsplugin/0.11/tracscreenshots/templates/screenshot-add.html (modified) (1 diff)
- screenshotsplugin/0.11/tracscreenshots/templates/screenshot.html (modified) (2 diffs)
- screenshotsplugin/0.11/tracscreenshots/templates/screenshots.html (modified) (5 diffs)
- screenshotsplugin/0.11/tracscreenshots/wiki.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
screenshotsplugin/0.11/setup.py
r3141 r4344 6 6 setup( 7 7 name = 'TracScreenshots', 8 version = '0. 6',8 version = '0.7', 9 9 packages = ['tracscreenshots', 'tracscreenshots.db'], 10 10 package_data = {'tracscreenshots' : ['templates/*.html', 'htdocs/css/*.css', screenshotsplugin/0.11/tracscreenshots/api.py
r4314 r4344 40 40 41 41 class ScreenshotsApi(Component): 42 43 default_priority = 0 42 44 43 45 # Get list functions … … 67 69 # Get screenshots from database. 68 70 return self._get_items(context, 'screenshot', ('id', 'name', 69 'description', 'time', 'author', 'tags', 'file', 'width', 'height')) 71 'description', 'time', 'author', 'tags', 'file', 'width', 'height', 72 'priority')) 70 73 71 74 def get_screenshots_complete(self, context): … … 78 81 return screenshots 79 82 80 def get_filtered_screenshots(self, context, components, versions): 83 def get_filtered_screenshots(self, context, components, versions, relation 84 = 'or', orders = ('id', 'name', 'time')): 81 85 has_none_version = True 82 86 has_none_component = True 83 87 columns = ('id', 'name', 'description', 'time', 'author', 'tags', 84 'file', 'width', 'height' )88 'file', 'width', 'height', 'priority') 85 89 versions_str = (', '.join(['%s'] * len(versions))) or 'NULL' 86 90 components_str = (', '.join(['%s'] * len(components))) or 'NULL' 91 orders_str = ', '.join(['%s %s' % (field, direction.upper()) for \ 92 field, direction in orders]) 87 93 sql = 'SELECT DISTINCT ' + ', '.join(columns) + ' FROM screenshot s ' \ 88 94 'LEFT JOIN (SELECT screenshot, version FROM screenshot_version) v ' \ 89 95 'ON s.id = v.screenshot LEFT JOIN (SELECT screenshot, component ' \ 90 96 'FROM screenshot_component) c ON s.id = c.screenshot WHERE ' \ 91 'v.version IN (' + versions_str + ')' + (('none' in versions) and \ 92 ' OR v.version IS NULL' or '') + ' OR c.component IN (' + \ 93 components_str + ')' + (('none' in components) and \ 94 ' OR c.component IS NULL' or '') 97 '(v.version IN (' + versions_str + ')' + (('none' in versions) and \ 98 ' OR v.version IS NULL) ' or ') ') + ((relation == 'and') and 'AND' or \ 99 'OR') + ' (c.component IN (' + components_str + ')' + (('none' in 100 components) and ' OR c.component IS NULL) ' or ') ') + 'ORDER BY ' + \ 101 orders_str 95 102 self.log.debug(versions + components) 96 103 self.log.debug(sql % tuple(versions + components)) … … 143 150 # Get screenshot from database. 144 151 screenshot = self._get_item(context, 'screenshot', ('id', 'name', 145 'description', 'time', 'author', 'tags', 'file', 'width', 'height' ),146 ' id = %s', (id,))152 'description', 'time', 'author', 'tags', 'file', 'width', 'height', 153 'priority'), 'id = %s', (id,)) 147 154 148 155 if screenshot: … … 161 168 # Get screenshot from database. 162 169 screenshot = self._get_item(context, 'screenshot', ('id', 'name', 163 'description', 'time', 'author', 'tags', 'file', 'width', 'height' ),164 ' time = %s', (time,))170 'description', 'time', 'author', 'tags', 'file', 'width', 'height', 171 'priority'), 'time = %s', (time,)) 165 172 166 173 if screenshot: … … 265 272 self.log.debug(sql % (id,)) 266 273 context.cursor.execute(sql, (id,)) 274 275 # Other methods. 276 277 def set_version(self, context, version): 278 # Check if version item exists. 279 sql = "SELECT value FROM system WHERE name = 'screenshots_version'" 280 self.log.debug(sql) 281 context.cursor.execute(sql) 282 in_db = False 283 for row in context.cursor: 284 in_db = True 285 break 286 287 # Insert of update version. 288 if in_db: 289 sql = "UPDATE system SET value = %s WHERE name = 'screenshots_" \ 290 "version'" 291 else: 292 sql = "INSERT INTO system (name, value) VALUES ('screenshots_" \ 293 "version', %s)" 294 self.log.debug(sql % (version,)) 295 context.cursor.execute(sql, (version,)) screenshotsplugin/0.11/tracscreenshots/core.py
r4314 r4344 59 59 default_versions = ListOption('screenshots', 'default_versions', 'none', 60 60 doc = 'List of versions enabled by default.') 61 default_filter_relation = Option('screenshots', 'default_filter_relation', 62 'or', doc = 'Logical relation between component and version part of' 63 ' screenshots filter.') 64 default_orders = ListOption('screenshots', 'default_orders', 65 'id', doc = 'List of names of database fields that are used to' 66 ' sort screenshots.') 67 default_order_directions = ListOption('screenshots', 68 'default_order_directions', 'asc', doc = 'List of ordering ' 69 'directions for fields specified in default_orders configuration ' 70 'options.') 61 71 62 72 # IPermissionRequestor methods. … … 65 75 view = 'SCREENSHOTS_VIEW' 66 76 filter = ('SCREENSHOTS_FILTER', ['SCREENSHOTS_VIEW']) 67 admin = ('SCREENSHOTS_ADMIN', ['SCREENSHOTS_FILTER', 68 'SCREENSHOTS_VIEW']) 69 return [view, filter, admin] 77 order = ('SCREENSHOTS_ORDER', ['SCREENSHOTS_VIEW']) 78 admin = ('SCREENSHOTS_ADMIN', ['SCREENSHOTS_ORDER', 79 'SCREENSHOTS_FILTER', 'SCREENSHOTS_VIEW']) 80 return [view, filter, order, admin] 70 81 71 82 # ITemplateProvider methods. … … 154 165 elif action == 'filter': 155 166 return ['filter', 'view'] 167 elif action == 'order': 168 return ['order', 'view'] 156 169 else: 157 170 return ['view'] … … 265 278 'file' : filename, 266 279 'width' : image.size[0], 267 'height' : image.size[1]} 280 'height' : image.size[1], 281 'priority' : int(context.req.args.get('priority') 282 or '0')} 268 283 269 284 # Add new screenshot. … … 294 309 screenshot['versions'] = versions 295 310 296 self.log.debug( screenshot)311 self.log.debug('screenshot: %s' % (screenshot,)) 297 312 298 313 # Prepare file paths … … 327 342 ' specified in path config option in [screenshots]' \ 328 343 ' section of trac.ini existing? Original message was: %s' \ 329 % ( error,))344 % (to_unicode(error),)) 330 345 331 346 # Notify change listeners. … … 345 360 self.data['screenshot'] = api.get_screenshot(context, 346 361 screenshot_id) 347 self.log.debug(self.data['screenshot'])348 362 349 363 elif action == 'post-edit': … … 379 393 'components') or [], 380 394 'versions' : context.req.args.get('versions') or \ 381 []} 395 [], 396 'priority' : int(context.req.args.get('priority') 397 or '0')} 382 398 383 399 # Update dimensions and filename if image file is updated. … … 395 411 screenshot['versions'] = [screenshot['versions']] 396 412 397 self.log.debug( screenshot)413 self.log.debug('screenshot: %s' % (screenshot)) 398 414 399 415 # Edit screenshot. … … 420 436 except Exception, error: 421 437 raise TracError('Error deleting screenshot. Original' \ 422 ' message was: %s' % ( error,))438 ' message was: %s' % (to_unicode(error),)) 423 439 424 440 # Store uploaded image. … … 436 452 ' specified in path config option in [screenshots]' \ 437 453 ' section of trac.ini existing? Original message was: %s' \ 438 % ( error,))454 % (to_unicode(error),)) 439 455 440 456 # Notify change listeners. … … 477 493 except Exception, error: 478 494 raise TracError('Error deleting screenshot. Original' \ 479 ' message was: %s' % ( error,))495 ' message was: %s' % (to_unicode(error),)) 480 496 481 497 # Notify change listeners. … … 487 503 488 504 elif action == 'filter': 505 context.req.perm.assert_permission('SCREENSHOTS_FILTER') 506 489 507 # Update enabled components from request. 490 508 components = context.req.args.get('components') or [] 491 509 if not isinstance(components, list): 492 510 components = [components] 493 context.req.session['enabled_components'] = str(components)511 self._set_enabled_components(context.req, components) 494 512 495 513 # Update enabled versions from request. … … 497 515 if not isinstance(versions, list): 498 516 versions = [versions] 499 context.req.session['enabled_versions'] = str(versions) 517 self._set_enabled_versions(context.req, versions) 518 519 # Update filter relation from request. 520 relation = context.req.args.get('filter_relation') or 'or' 521 self._set_filter_relation(context.req, relation) 522 523 elif action == 'order': 524 context.req.perm.assert_permission('SCREENSHOTS_ORDER') 525 526 # Get three order fields from request and store them to session. 527 orders = [] 528 I = 0 529 while context.req.args.has_key('order_%s' % (I,)): 530 orders.append((context.req.args.get('order_%s' % (I,)) or 'id', 531 context.req.args.get('order_direction_%s' % (I,)) or 'asc')) 532 I += 1 533 self._set_orders(context.req, orders) 500 534 501 535 elif action == 'view': … … 516 550 context.cursor) 517 551 518 # Get enabled components and versions from request or session. 552 # Get enabled components, versions and filter relation from 553 # request or session. 519 554 enabled_components = self._get_enabled_components(context.req) 520 555 enabled_versions = self._get_enabled_versions(context.req) 556 relation = self._get_filter_relation(context.req) 521 557 if 'all' in enabled_components: 522 558 enabled_components = [component['name'] for component in … … 526 562 versions] 527 563 528 self.log.debug(enabled_components) 564 self.log.debug('enabled_components: %s' % (enabled_components,)) 565 self.log.debug('enabled_versions: %s' % (enabled_versions,)) 566 self.log.debug('filter_relation: %s' % (relation,)) 567 568 #Â Get order fields of screenshots. 569 orders = self._get_orders(context.req) 529 570 530 571 # Filter screenshots. 531 572 screenshots = api.get_filtered_screenshots(context, 532 enabled_components, enabled_versions )573 enabled_components, enabled_versions, relation, orders) 533 574 534 575 # Convert enabled components and versions to dictionary. … … 546 587 self.data['enabled_versions'] = enabled_versions 547 588 self.data['enabled_components'] = enabled_components 589 self.data['filter_relation'] = relation 590 self.data['orders'] = orders 548 591 549 592 # Get screenshots content template and data. … … 596 639 if req.perm.has_permission('SCREENSHOTS_FILTER'): 597 640 #Â Return existing filter from session or create default. 598 if req.session.has_key('enabled_components'): 599 components = eval(req.session.get('enabled_components')) 641 if req.session.has_key('screenshots_enabled_components'): 642 components = eval(req.session.get('screenshots_enabled_' 643 'components')) 600 644 else: 601 645 components = self.default_components 602 req.session[' enabled_components'] = str(components)646 req.session['screenshots_enabled_components'] = str(components) 603 647 else: 604 648 # Users without SCREENSHOTS_FILTER permission uses 605 649 # 'default_components' configuration option. 606 650 components = self.default_components 607 self.log.debug('enabled_components: %s' % (components,))608 651 return components 652 653 def _set_enabled_components(self, req, components): 654 req.session['screenshots_enabled_components'] = str(components) 609 655 610 656 def _get_enabled_versions(self, req): 611 657 if req.perm.has_permission('SCREENSHOTS_FILTER'): 612 658 #Â Return existing filter from session or create default. 613 if req.session.has_key(' enabled_versions'):614 versions = eval(req.session.get(' enabled_versions'))659 if req.session.has_key('screenshots_enabled_versions'): 660 versions = eval(req.session.get('screenshots_enabled_versions')) 615 661 else: 616 662 versions = self.default_versions 617 req.session[' enabled_versions'] = str(versions)663 req.session['screenshots_enabled_versions'] = str(versions) 618 664 else: 619 665 # Users without SCREENSHOTS_FILTER permission uses 620 666 # 'default_versions' configuration option. 621 667 versions = self.default_versions 622 self.log.debug('enabled_versions: %s' % (versions,))623 668 return versions 669 670 def _set_enabled_versions(self, req, versions): 671 req.session['screenshots_enabled_versions'] = str(versions) 672 673 def _get_filter_relation(self, req): 674 if req.perm.has_permission('SCREENSHOTS_FILTER'): 675 #Â Return existing filter relation from session or create default. 676 if req.session.has_key('screenshots_filter_relation'): 677 relation = req.session.get('screenshots_filter_relation') 678 else: 679 relation = self.default_filter_relation 680 req.session['screenshots_filter_relation'] = relation 681 else: 682 # Users without SCREENSHOTS_FILTER permission uses 683 # 'default_filter_relation' configuration option. 684 relation = self.default_filter_relation 685 return relation 686 687 def _set_filter_relation(self, req, relation): 688 req.session['screenshots_filter_relation'] = relation 689 690 def _get_orders(self, req): 691 if req.perm.has_permission('SCREENSHOTS_ORDER'): 692 #Â Get ordering fields from session or default ones. 693 if req.session.has_key('screenshots_orders'): 694 orders = eval(req.session.get('screenshots_orders')) 695 else: 696 orders = tuple(self.default_orders) 697 directions = tuple(self.default_order_directions) 698 orders = [(orders[I], directions[I]) for I in \ 699 xrange(len(orders))] 700 req.session['screenshots_orders'] = str(orders) 701 else: 702 # Users without SCREENSHOTS_ORDER permission uses 703 # 'default_orders' configuration option. 704 orders = tuple(self.default_orders) 705 directions = tuple(self.default_order_directions) 706 orders = [(orders[I], directions[I]) for I in xrange(len(orders))] 707 return tuple(orders) 708 709 def _set_orders(self, req, orders): 710 req.session['screenshots_orders'] = str(orders) screenshotsplugin/0.11/tracscreenshots/htdocs/css/screenshots.css
r3313 r4344 22 22 } 23 23 24 div.order fieldset.order 25 { 26 float: left; 27 padding: 1em; 28 margin: 0.5em; 29 } 30 31 div.order hr 32 { 33 padding: 0em; 34 margin: 0.5em 0em; 35 } 36 37 div.order div.buttons 38 { 39 clear: both; 40 } 41 24 42 /* Wiki [[Screenshot()]] macro styles. */ 25 span.thumbnail > a > img43 span.thumbnail 26 44 { 27 display: inline; 28 border-color: #b00; 29 border-style: solid; 45 display: block; 30 46 margin: 0em; 31 47 padding: 0em; 32 48 } 33 49 34 span.thumbnail > a50 span.thumbnail span.aux 35 51 { 36 display: inline-block; 37 border: 0px none; 38 margin: 0.2em; 52 display: block; 53 padding: 1em; 54 margin-top: 0em; 55 margin-bottom: 0em; 56 margin-left: auto; 57 margin-right: auto; 58 } 59 60 span.thumbnail a 61 { 62 display: block; 63 } 64 65 span.thumbnail a img 66 { 67 display: block; 68 border-color: #b00; 69 border-style: solid; 70 } 71 72 span.thumbnail span.description 73 { 74 display: block; 75 margin-top: 0.5em; 76 } 77 78 span.thumbnail-left, span.thumbnail-righ 79 { 80 display: block; 81 margin: 0em; 39 82 padding: 0em; 40 83 } 41 84 42 span.thumbnail > span.description85 span.thumbnail-left span.aux, span.thumbnail-righ span.aux 43 86 { 44 display: inline-block; 87 display: block; 88 margin: 0em; 89 margin-top: 0.5em; 90 padding: 0em; 91 } 92 93 span.thumbnail-left a, span.thumbnail-right a, 94 { 95 display: block; 96 } 97 98 span.thumbnail-left a img, span.thumbnail-right a img 99 { 100 display: block; 101 border-color: #b00; 102 border-style: solid; 103 } 104 105 span.thumbnail-left span.description, span.thumbnail-right span.description 106 { 107 display: block; 108 margin-top: 0.5em; 45 109 } 46 110 47 111 span.thumbnail, span.thumbnail-left, span.thumbnail-right 48 112 { 49 display: inline-block; 50 margin: 1em; 51 margin-top: 0.5em; 113 margin: 16px; 114 margin-top: 0em; 52 115 padding: 0em; 53 116 font-size: 75%; 54 117 text-align: center; 55 vertical-align: middle;56 118 } 57 119 screenshotsplugin/0.11/tracscreenshots/htdocs/js/screenshots.js
r2659 r4344 1 function check _all(name, check)1 function checkAll(name, check) 2 2 { 3 3 var checkboxes = document.getElementsByName(name); … … 7 7 } 8 8 } 9 10 function checkNumber(evt) 11 { 12 var keycode; 13 14 if (evt) 15 ; 16 else if (window.event) 17 evt = window.event; 18 else if (event) 19 evt = event; 20 else 21 return true; 22 23 if (evt.charCode) 24 keycode = evt.charCode; 25 else if (evt.keyCode) 26 keycode = evt.keyCode; 27 else if (evt.which) 28 keycode = evt.which; 29 else 30 keycode = 0; 31 32 return ((keycode >= 48 && keycode <= 57) || (keycode == 8) || 33 (keycode == 46) ||Â (keycode >= 33 && keycode <= 40)); 34 } screenshotsplugin/0.11/tracscreenshots/init.py
r3140 r4344 6 6 7 7 # Last screenshots database shcema version 8 last_db_version = 38 last_db_version = 4 9 9 10 10 class ScreenshotsInit(Component): … … 30 30 # Get current database schema version 31 31 db_version = self._get_db_version(cursor) 32 33 32 34 33 # Is this clean installation? screenshotsplugin/0.11/tracscreenshots/templates/screenshot-add.html
r4314 r4344 55 55 </select><br/> 56 56 </div> 57 <div class="field"> 58 <label for="priority">Priority (number 0..x):</label><br/> 59 <input type="text" onkeypress="return checkNumber(event)" name="priority" value="${(req.args.action == 'edit') and screenshots.screenshot.priority or '0'}"/> 60 </div> 57 61 <div class="buttons"> 58 62 <input type="submit" name="submit" value="Submit"/> screenshotsplugin/0.11/tracscreenshots/templates/screenshot.html
r3141 r4344 20 20 <td class="components"> 21 21 <strong>Components:</strong> 22 < ?cs each:component = screenshots.screenshot.components ?>23 <?cs var:component ?>24 < ?cs /each ?>22 <py:for each="component in screenshots.screenshot.components"> 23 $component 24 </py:for> 25 25 </td> 26 26 </tr> … … 28 28 <td class="versions"> 29 29 <strong>Versions:</strong> 30 < ?cs each:version = screenshots.screenshot.versions ?>31 <?cs var:version ?>32 < ?cs /each ?>30 <py:for each="version in screenshots.screenshot.versions"> 31 $version 32 </py:for> 33 33 </td> 34 34 </tr> 35 35 <tr> 36 36 <td class="message"> 37 <?cs var:screenshots.screenshot.description ?>37 ${screenshots.screenshot.description} 38 38 </td> 39 39 </tr> screenshotsplugin/0.11/tracscreenshots/templates/screenshots.html
r4277 r4344 1 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 2 <?python3 test = {'Å': 1}4 ?>5 2 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:py="http://genshi.edgewall.org/"> 6 3 <xi:include href="layout.html"/> … … 17 14 <xi:include href="${screenshots.content_template}"/> 18 15 19 <div py:if="'SCREENSHOTS_ADMIN' in perm" class="buttons screenshot_buttons">16 <div py:if="'SCREENSHOTS_ADMIN' in perm" class="buttons screenshot_buttons"> 20 17 <form method="post" action="${href.screenshots()}"> 21 18 <div> … … 43 40 </div> 44 41 42 <div py:if="'SCREENSHOTS_ORDER' in perm" class="order"> 43 <form method="post" action="${href.screenshots()}"> 44 <fieldset> 45 <legend> 46 Order: 47 </legend> 48 49 <fieldset py:for="index, order in enumerate(screenshots.orders)" class="order"> 50 <legend> 51 ${index + 1}. field: 52 </legend> 53 54 <div> 55 <py:choose> 56 <input py:when="order[0] == 'id'" type="radio" name="order_$index" value="id" checked="checked">ID</input> 57 <input py:otherwise="" type="radio" name="order_$index" value="id">ID</input><br/> 58 </py:choose> 59 <py:choose> 60 <input py:when="order[0] == 'name'" type="radio" name="order_$index" value="name" checked="checked">Name</input> 61 <input py:otherwise="" type="radio" name="order_$index" value="name">Name</input><br/> 62 </py:choose> 63 <py:choose> 64 <input py:when="order[0] == 'author'" type="radio" name="order_$index" value="author" checked="checked">Author</input> 65 <input py:otherwise="" type="radio" name="order_$index" value="author">Author</input><br/> 66 </py:choose> 67 <py:choose> 68 <input py:when="order[0] == 'time'" type="radio" name="order_$index" value="time" checked="checked">Time</input> 69 <input py:otherwise="" type="radio" name="order_$index" value="time">Time</input><br/> 70 </py:choose> 71 <py:choose> 72 <input py:when="order[0] == 'description'" type="radio" name="order_$index" value="description" checked="checked">Description</input> 73 <input py:otherwise="" type="radio" name="order_$index" value="description">Description</input><br/> 74 </py:choose> 75 <py:choose> 76 <input py:when="order[0] == 'priority'" type="radio" name="order_$index" value="priority" checked="checked">Priority</input> 77 <input py:otherwise="" type="radio" name="order_$index" value="priority">Priority</input><br/> 78 </py:choose> 79 80 <hr/> 81 <py:choose> 82 <input py:when="order[1] == 'asc'" type="radio" name="order_direction_$index" value="asc" checked="checked">Ascending</input> 83 <input py:otherwise="" type="radio" name="order_direction_$index" value="asc">Ascending</input> 84 </py:choose> 85 <py:choose> 86 <input py:when="order[1] == 'desc'" type="radio" name="order_direction_$index" value="desc" checked="checked">Descending</input> 87 <input py:otherwise="" type="radio" name="order_direction_$index" value="desc">Descending</input> 88 </py:choose> 89 </div> 90 </fieldset> 91 92 <div class="buttons"> 93 <input type="submit" name="filter" value="Apply Order"/> 94 <input type="hidden" name="action" value="order"/> 95 </div> 96 97 </fieldset> 98 </form> 99 </div> 100 45 101 <div py:if="'SCREENSHOTS_FILTER' in perm" class="filter"> 46 102 <form method="post" action="${href.screenshots()}"> … … 64 120 </input> 65 121 </py:choose> 66 <input type="button" name="all" value="All" onclick="check _all('components', true)"/>67 <input type="button" name="none" value="None" onclick="check _all('components', false)"/>122 <input type="button" name="all" value="All" onclick="checkAll('components', true)"/> 123 <input type="button" name="none" value="None" onclick="checkAll('components', false)"/> 68 124 </div> 69 125 </fieldset> 126 127 <div> 128 <py:choose> 129 <py:when test="screenshots.filter_relation == 'and'"> 130 <input type="radio" name="filter_relation" value="and" checked="checked">AND</input> 131 <input type="radio" name="filter_relation" value="or">OR</input> 132 </py:when> 133 <py:otherwise> 134 <input type="radio" name="filter_relation" value="and">AND</input> 135 <input type="radio" name="filter_relation" value="or" checked="checked">OR</input> 136 </py:otherwise> 137 </py:choose> 138 </div> 70 139 71 140 <fieldset> … … 83 152 </input> 84 153 </py:choose> 85 <input type="button" name="all" value="All" onclick="check _all('versions', true)"/>86 <input type="button" name="none" value="None" onclick="check _all('versions', false)"/>154 <input type="button" name="all" value="All" onclick="checkAll('versions', true)"/> 155 <input type="button" name="none" value="None" onclick="checkAll('versions', false)"/> 87 156 </div> 88 157 </fieldset> screenshotsplugin/0.11/tracscreenshots/wiki.py
r4304 r4344 169 169 170 170 # Make copy of attributes for image tag. 171 img_attributes = {'align' : 'center', 172 'style' : 'border-width: %spx;' % ( 171 img_attributes = {'style' : 'border-width: %spx;' % ( 173 172 attributes['border'],)} 174 173 for attribute in attributes.keys(): … … 187 186 screenshot['id'], format = attributes['format']), title = 188 187 screenshot['description']) 188 width_and_border = int(attributes['width']) + 2 * \ 189 int(attributes['border']) 189 190 description = html.span(attributes['description'], class_ = 190 'description') 191 'description', style = "width: %spx;" % (width_and_border,)) 192 auxilary = html.span(link, description, class_ = 'aux', 193 style = "width: %spx;" % (width_and_border,)) 191 194 thumbnail_class = 'thumbnail' + ((attributes['align'] == 'left') 192 195 and '-left' or (attributes['align'] == 'right') and '-right' 193 196 or '') 194 thumbnail = html.span(link, ' ', description, class_ = 195 thumbnail_class, style = "width: %spx;" % ( 196 int(attributes['width']) + 2 * int(attributes['border'],))) 197 thumbnail = html.span(auxilary, class_ = thumbnail_class) 197 198 return thumbnail 198 199 else:
