Changeset 293

Show
Ignore:
Timestamp:
01/08/06 18:51:11 (3 years ago)
Author:
eblot
Message:

TracFrenchTranslation:

Updated to trunk:2744 (Trac 0.9.3)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • tracfrenchtranslation/0.9

    • Property svn:ignore changed from
      *.pyc
      to
      MANIFEST
      dist
      build
      .hg
      .hgignore
  • tracfrenchtranslation/0.9/ChangeLog

    r161 r293  
     1Trac 0.9.3  (Jan 8, 2006) 
     2http://svn.edgewall.com/repos/trac/tags/trac-0.9.3 
     3 
     4 * Fixed XSS vulnerabilities. 
     5 * Timeline RSS feed validity issue resolved. 
     6 * "trac-admin initenv" now handles empty repositories. 
     7 * Textile unicode support. 
     8 * Fixed bugs: #1158, #2290, #2337, #2416, #2440, #2468, #2473, #2484, 
     9   #2490, #2493, #2512, #2517, #2519, #2527, #2548, #2558, #2558 
     10 
    111Trac 0.9.2  (Dec 5, 2005) 
    212http://svn.edgewall.com/repos/trac/tags/trac-0.9.2 
  • tracfrenchtranslation/0.9/COPYING

    r160 r293  
    1 Copyright (C) 2003-2005 Edgewall Software 
     1Copyright (C) 2003-2006 Edgewall Software 
    22All rights reserved. 
    33 
  • tracfrenchtranslation/0.9/templates/attachment.cs

    r274 r293  
    2222   <div class="field"> 
    2323    <label>Description (optionnelle) du fichier:<br /> 
    24     <input type="text" name="description" size="60" /></label 
     24    <input type="text" name="description" size="60" /></label> 
    2525   </div> 
    2626   <br /> 
    2727   <div class="options"> 
    28     <label><input type="checkbox" name="replace" checked="checked" /> 
     28    <label><input type="checkbox" name="replace" /> 
    2929    Remplacer une piÚce jointe existante portant le même nom</label> 
    3030   </div> 
  • tracfrenchtranslation/0.9/templates/settings.cs

    r160 r293  
    3232   <h3>Session</h3> 
    3333   <div> 
    34     <label for="newsid">Session Key:</label> 
     34    <label for="newsid">Clef de session:</label> 
    3535    <input type="text" id="newsid" name="newsid" class="textwidget" size="30" 
    3636           value="<?cs var:settings.session_id ?>" /> 
  • tracfrenchtranslation/0.9/trac/About.py

    r161 r293  
    11# -*- coding: utf-8 -*- 
    22# 
    3 # Copyright (C) 2004-2005 Edgewall Software 
     3# Copyright (C) 2004-2006 Edgewall Software 
    44# Copyright (C) 2004-2005 Jonas Borgström <jonas@edgewall.com> 
    55# Copyright (C) 2004-2005 Daniel Lundin <daniel@edgewall.com> 
    6 # Copyright (C) 2005 Christopher Lenz <cmlenz@gmx.de> 
     6# Copyright (C) 2005-2006 Christopher Lenz <cmlenz@gmx.de> 
    77# All rights reserved. 
    88# 
     
    2323from trac.perm import IPermissionRequestor 
    2424from trac.web import IRequestHandler 
     25from trac.util import Markup 
    2526from trac.web.chrome import add_stylesheet, INavigationContributor 
    2627 
     
    4243  /if ?><?cs 
    4344  if:about.plugins_href ?> 
    44    <li class="last"><a href="<?cs var:about.plugins_href ?>">Plugins</a></li><?cs 
    45   /if ?> 
     45   <li class="last"><a href="<?cs var:about.plugins_href ?>">Extensions</a></li> 
     46  <?cs /if ?> 
    4647 </ul> 
    4748</div> 
     
    6869 
    6970 <?cs elif:about.page == "plugins" ?> 
    70   <h1>Plugins</h1> 
     71  <h1>Extensions</h1> 
    7172  <dl id="plugins"><?cs 
    7273   each:plugin = about.plugins ?> 
     
    111112<h1>A propos de Trac <?cs var:trac.version ?></h1> 
    112113<p> 
    113 Trac est un systÚme de gestion de projet logiciel et de suivi de défauts via le Web, 
    114 qui met l'accent sur la facilité d'utilisation et évite les chichis.<br /> 
    115 Il propose une interface pour le systÚme de contrÃŽle de source Subversion, un Wiki intégré,  
    116 et la création aisée de rapports. 
     114Trac est un systÚme de gestion de projet logiciel et de suivi de défauts via le 
     115Web, qui met l'accent sur la facilité d'utilisation et évite les chichis.<br /> 
     116Il propose une interface pour le systÚme de contrÃŽle de source Subversion, un  
     117Wiki intégré, et la création facile de rapports. 
    117118</p> 
    118119  <p>Trac est distribué sous une licence BSD modifiée.<br /> 
     
    121122  <p>Merci de consulter le projet open source Trac:  
    122123  <a href="http://projects.edgewall.com/trac/">http://projects.edgewall.com/trac/</a></p> 
    123   <p>Trac est un produit de <a href="http://www.edgewall.com/">Edgewall Software</a>, fournisseur de solutions professionnelles 
    124   et de services de développement logiciel sous Linux.</p> 
    125 <p>Copyright &copy; 2003-2005 <a href="http://www.edgewall.com/">Edgewall Software</a></p> 
     124  <p>Trac est un produit de <a href="http://www.edgewall.com/">Edgewall  
     125     Software</a>, fournisseur de solutions professionnelles et de services de  
     126     développement logiciel sous Linux.</p> 
     127  <p>Copyright &copy; 2003-2006 <a href="http://www.edgewall.com/">Edgewall  
     128     Software</a></p> 
    126129  <a href="http://www.edgewall.com/"> 
    127130   <img style="display: block; margin: 30px" src="<?cs var:chrome.href ?>/common/edgewall.png" 
     
    138141 
    139142    def get_navigation_items(self, req): 
    140         yield 'metanav', 'about', '<a href="%s" accesskey="9">A propos de Trac</a>' \ 
    141               % self.env.href.about() 
     143        yield ('metanav', 'about', 
     144               Markup('<a href="%s">A propos de Trac</a>',  
     145                      self.env.href.about())) 
    142146 
    143147    # IPermissionRequestor methods 
  • tracfrenchtranslation/0.9/trac/attachment.py

    r216 r293  
    198198        'filename': attachment.filename, 
    199199        'description': wiki_to_oneliner(attachment.description, env, db), 
    200         'author': util.escape(attachment.author)
     200        'author': attachment.author
    201201        'ipnr': attachment.ipnr, 
    202202        'size': util.pretty_size(attachment.size), 
     
    386386        req.perm.assert_permission(perm_map[attachment.parent_type]) 
    387387 
    388         fmt = req.args.get('format') 
    389  
    390388        req.check_modified(attachment.time) 
    391389 
     
    409407        try: 
    410408            mimeview = Mimeview(self.env) 
    411  
    412409            data = fd.read(mimeview.max_preview_size()) 
    413              
    414             mime_type = fmt == 'txt' and 'text/plain' or \ 
    415                        get_mimetype(attachment.filename, data) or \ 
    416                        'application/octet-stream' 
    417  
     410 
     411            mime_type = get_mimetype(attachment.filename, data) or \ 
     412                        'application/octet-stream' 
    418413            self.log.debug("Rendering preview of file %s with mime-type %s" 
    419414                           % (attachment.filename, mime_type)) 
    420              
     415 
    421416            raw_href = attachment.href(format='raw') 
    422417            add_link(req, 'alternate', raw_href, 'Format Original', mime_type) 
    423             req.hdf['attachment.raw_href'] = util.escape(raw_href) 
    424              
    425             if fmt in ('raw', 'txt'): 
    426                 # Send raw file 
     418            req.hdf['attachment.raw_href'] = raw_href 
     419 
     420            format = req.args.get('format') 
     421            render_unsafe = self.config.getbool('attachment', 
     422                                                'render_unsafe_content') 
     423            binary = not detect_unicode(data) and is_binary(data) 
     424 
     425            if format in ('raw', 'txt'): # Send raw file 
     426                if not render_unsafe and not binary: 
     427                    # Force browser to download HTML/SVG/etc pages that may 
     428                    # contain malicious code enabling XSS attacks 
     429                    req.send_header('Content-Disposition', 'attachment;' + 
     430                                    'filename=' + attachment.filename) 
    427431                charset = mimeview.get_charset(data, mime_type) 
     432                if render_unsafe and not binary and format == 'txt': 
     433                    mime_type = 'text/plain' 
    428434                req.send_file(attachment.path, 
    429435                              mime_type + ';charset=' + charset) 
    430                 return 
    431              
    432             if not is_binary(data): 
     436 
     437            if render_unsafe and not binary: 
    433438                plaintext_href = attachment.href(format='txt') 
    434439                add_link(req, 'alternate', plaintext_href, 'Text Standard', 
  • tracfrenchtranslation/0.9/trac/config.py

    r216 r293  
    4848 
    4949    def getbool(self, section, name, default=None): 
     50        """Return the specified option as boolean value. 
     51         
     52        If the value of the option is one of "yes", "true",  "on", or "1", this 
     53        method wll return `True`, otherwise `False`. 
     54         
     55        (since Trac 0.9.3) 
     56        """ 
    5057        if isinstance(default, basestring): 
    5158            default = default.lower() 
  • tracfrenchtranslation/0.9/trac/core.py

    r161 r293  
    1 # -*- coding: utf-8 -*- 
     1# -*- coding: utf-8 -*- 
    22# 
    33# Copyright (C) 2003-2005 Edgewall Software 
    4 # Copyright (C) 2003-2004 Jonas Borgström <jonas@edgewall.com> 
     4# Copyright (C) 2003-2004 Jonas Borgström <jonas@edgewall.com> 
    55# Copyright (C) 2004-2005 Christopher Lenz <cmlenz@gmx.de> 
    66# All rights reserved. 
     
    1414# history and logs, available at http://projects.edgewall.com/trac/. 
    1515# 
    16 # Author: Jonas Borgström <jonas@edgewall.com> 
     16# Author: Jonas Borgström <jonas@edgewall.com> 
    1717#         Christopher Lenz <cmlenz@gmx.de> 
    1818 
     
    171171                return None 
    172172            if cls not in ComponentMeta._components: 
    173                 raise TracError, 'Composant "%s" non enregistré' % cls.__name__ 
     173                raise TracError, 'Composant "%s" non enregistré' % cls.__name__ 
    174174            try: 
    175175                component = cls(self) 
  • tracfrenchtranslation/0.9/trac/db_default.py

    r274 r293  
    417417  ('header_logo', 'height', '73'), 
    418418  ('attachment', 'max_size', '262144'), 
     419  ('attachment', 'render_unsafe_content', 'false'), 
    419420  ('mimeviewer', 'enscript_path', 'enscript'), 
    420421  ('mimeviewer', 'php_path', 'php'), 
  • tracfrenchtranslation/0.9/trac/__init__.py

    r216 r293  
    1111__docformat__ = 'epytext en' 
    1212 
    13 __version__ = '1.0dev-vc-refactoring
     13__version__ = '1.0dev
    1414__url__ = 'http://trac.edgewall.com/' 
    15 __copyright__ = '(C) 2003-2005 Edgewall Software' 
     15__copyright__ = '(C) 2003-2006 Edgewall Software' 
    1616__license__ = 'BSD' 
    1717__license_long__ = """ 
    18  Copyright (C) 2003-2005 Edgewall Software 
     18 Copyright (C) 2003-2006 Edgewall Software 
    1919 All rights reserved. 
    2020  
  • tracfrenchtranslation/0.9/trac/mimeview/api.py

    r216 r293  
    2525 
    2626from trac.core import * 
    27 from trac.util import escape, to_utf8 
     27from trac.util import escape, to_utf8, Markup 
     28 
    2829 
    2930__all__ = ['get_mimetype', 'is_binary', 'detect_unicode', 'Mimeview'] 
     
    6364    'make':'text/x-makefile', 'mk':'text/x-makefile', 
    6465    'Makefile':'text/x-makefile', 
     66    'makefile':'text/x-makefile', 'GNUMakefile':'text/x-makefile', 
    6567    'mail':'text/x-mail', 
    6668    'pas':'text/x-pascal', 
     
    241243                    continue 
    242244                elif isinstance(result, (str, unicode)): 
    243                     return result 
     245                    return Markup(result) 
    244246                elif annotations: 
    245                     return self._annotate(result, annotations
     247                    return Markup(self._annotate(result, annotations)
    246248                else: 
    247249                    buf = StringIO() 
     
    250252                        buf.write(line + '\n') 
    251253                    buf.write('</pre></div>') 
    252                     return buf.getvalue(
     254                    return Markup(buf.getvalue()
    253255            except Exception, e: 
    254256                self.log.warning('HTML preview using %s failed (%s)' 
     
    276278            return (match.group('tag') or '') + '&nbsp;' 
    277279 
     280        num = -1 
    278281        for num, line in enumerate(_html_splitlines(lines)): 
    279282            cells = [] 
     
    283286            buf.write('<tr>' + '\n'.join(cells) + '</tr>') 
    284287        else: 
    285             if num == 0: 
     288            if num < 0: 
    286289                return '' 
    287290        buf.write('</tbody></table>') 
  • tracfrenchtranslation/0.9/trac/mimeview/patch.py

    r160 r293  
    1818from trac.core import * 
    1919from trac.mimeview.api import IHTMLPreviewRenderer 
    20 from trac.util import escape 
     20from trac.util import escape, Markup 
    2121from trac.web.chrome import add_stylesheet 
    2222 
     
    146146 
    147147            # First character is the command 
    148             command,line = line[0],line[1:] 
     148            command, line = line[0], line[1:] 
    149149 
    150150            # Make a new block? 
     
    187187                        line = escape(line).replace('\0', '<del>') \ 
    188188                                           .replace('\1', '</del>') 
    189                         f[i] = space_re.sub(htmlify, line
     189                        f[i] = Markup(space_re.sub(htmlify, line)
    190190                    for i in xrange(len(t)): 
    191191                        line = t[i].expandtabs(tabwidth) 
    192192                        line = escape(line).replace('\0', '<ins>') \ 
    193193                                           .replace('\1', '</ins>') 
    194                         t[i] = space_re.sub(htmlify, line
     194                        t[i] = Markup(space_re.sub(htmlify, line)
    195195        return output 
  • tracfrenchtranslation/0.9/trac/mimeview/rst.py

    r160 r293  
    8484            raise TracError, 'La librairiee Docutils est introuvable' 
    8585        if StrictVersion(__version__) < StrictVersion('0.3.3'): 
    86             raise TracError, 'Une version >= %s des Docutils est requise, mais la version %s a été detectée' \ 
     86            raise TracError, 'Une version >= %s des Docutils est requise, ' \ 
     87                             'mais la version %s a été detectée' \ 
    8788                             % ('0.3.3', __version__) 
    8889 
  • tracfrenchtranslation/0.9/trac/mimeview/txtl.py

    r160 r293  
    11# -*- coding: utf-8 -*- 
    22# 
    3 # Copyright (C) 2004 Edgewall Software 
     3# Copyright (C) 2004-2006 Edgewall Software 
    44# Copyright (C) 2004 Daniel Lundin 
    55# All rights reserved. 
     
    2424 
    2525class TextileRenderer(Component): 
    26     """ 
    27     Renders plain text in Textile format as HTML. 
    28     """ 
     26    """Renders plain text in Textile format as HTML.""" 
    2927    implements(IHTMLPreviewRenderer) 
    3028 
     
    3634    def render(self, req, mimetype, content, filename=None, rev=None): 
    3735        import textile 
    38         return textile.textile(content
     36        return textile.textile(content, encoding='utf-8'
  • tracfrenchtranslation/0.9/trac/Notify.py

    r216 r293  
    1515# Author: Daniel Lundin <daniel@edgewall.com> 
    1616 
    17 from trac.__init__ import __version__ 
     17from trac import __version__ 
    1818from trac.core import TracError 
    1919from trac.util import CRLF, wrap 
     
    169169                                          subsequent_indent=' ', linesep=CRLF) 
    170170        self.ticket['link'] = self.env.abs_href.ticket(ticket.id) 
    171         self.hdf['email.ticket_props'] = self.format_props(
    172         self.hdf['email.ticket_body_hdr'] = self.format_hdr(
    173         self.hdf['ticket'] = self.ticket.values 
     171        self.hdf.set_unescaped('email.ticket_props', self.format_props()
     172        self.hdf.set_unescaped('email.ticket_body_hdr', self.format_hdr()
     173        self.hdf.set_unescaped('ticket', self.ticket.values) 
    174174        self.hdf['ticket.new'] = self.newticket 
    175175        subject = self.format_subj() 
    176176        if not self.newticket: 
    177177            subject = 'Re: ' + subject 
    178         self.hdf['email.subject'] = subject 
     178        self.hdf.set_unescaped('email.subject', subject) 
    179179        changes = '' 
    180180        if not self.newticket and modtime:  # Ticket change 
    181181            changelog = ticket.get_changelog(modtime) 
    182182            for date, author, field, old, new in changelog: 
    183                 self.hdf['ticket.change.author'] = author 
     183                self.hdf.set_unescaped('ticket.change.author', author) 
    184184                pfx = 'ticket.change.%s' % field 
    185185                newv = '' 
     
    193193                    cdescr += 'Old description:' + 2*CRLF + old_descr + 2*CRLF 
    194194                    cdescr += 'New description:' + 2*CRLF + new_descr + CRLF 
    195                     self.hdf['email.changes_descr'] = cdescr 
     195                    self.hdf.set_unescaped('email.changes_descr', cdescr) 
    196196                else: 
    197197                    newv = new 
     
    201201                    changes += '  * %s:  %s%s' % (field, chg, CRLF) 
    202202                if newv: 
    203                     self.hdf['%s.oldvalue' % pfx] = old 
    204                     self.hdf['%s.newvalue' % pfx] = newv 
     203                    self.hdf.set_unescaped('%s.oldvalue' % pfx, old) 
     204                    self.hdf.set_unescaped('%s.newvalue' % pfx, newv) 
    205205                if field == 'cc': 
    206206                    self.prev_cc += old and self.parse_cc(old) or [] 
    207                 self.hdf['%s.author' % pfx] = author 
     207                self.hdf.set_unescaped('%s.author' % pfx, author) 
    208208            if changes: 
    209                 self.hdf['email.changes_body'] = changes 
     209                self.hdf.set_unescaped('email.changes_body', changes) 
    210210        NotifyEmail.notify(self, ticket.id, subject) 
    211211 
  • tracfrenchtranslation/0.9/trac/scripts/admin.py

    r216 r293  
    11# -*- coding: iso-8859-1 -*- 
    22#  
    3 # Copyright (C) 2003-2005 Edgewall Software 
     3# Copyright (C) 2003-2006 Edgewall Software 
    44# All rights reserved. 
    55# 
     
    1313# 
    1414 
    15 __copyright__ = 'Copyright (c) 2003-2005 Edgewall Software' 
     15__copyright__ = 'Copyright (c) 2003-2006 Edgewall Software' 
    1616 
    1717import cmd 
     
    565565        else: 
    566566            project_name, db_str, repository_type, repository_dir, \ 
    567                           templates_dir = arg[:4
     567                          templates_dir = arg[:5
    568568 
    569569        if not os.access(os.path.join(templates_dir, 'header.cs'), os.F_OK): 
  • tracfrenchtranslation/0.9/trac/scripts/tests/admin-tests.txt

    r216 r293  
    11===== test_help_ok ===== 
    2 trac-admin - The Trac Administration Console 1.0dev-vc-refactoring 
     2trac-admin - The Trac Administration Console 1.0dev 
    33 
    44Usage: trac-admin </path/to/projenv> [command [subcommand] [option ...]] 
  • tracfrenchtranslation/0.9/trac/Search.py

    r216 r293  
    2020from trac.core import * 
    2121from trac.perm import IPermissionRequestor 
    22 from trac.util import TracError, escape, format_datetime 
     22from trac.util import TracError, escape, format_datetime, Markup 
    2323from trac.web import IRequestHandler 
    2424from trac.web.chrome import add_link, add_stylesheet, INavigationContributor 
     
    107107        if not req.perm.has_permission('SEARCH_VIEW'): 
    108108            return 
    109         yield 'mainnav', 'search', '<a href="%s" accesskey="4">Rechercher</a>' \ 
    110               % (self.env.href.search()) 
     109        yield ('mainnav', 'search', 
     110               Markup('<a href="%s" accesskey="4">Rechercher</a>', 
     111                      self.env.href.search())) 
    111112 
    112113    # IPermissionRequestor methods 
     
    177178                                                 q=query, page=page - 1) 
    178179                add_link(req, 'prev', prev_href, 'Page précédente') 
    179             req.hdf['search.page_href'] = escape( 
    180                 self.env.href.search(zip(filters, ['on'] * len(filters)), 
    181                                      q=query)) 
     180            req.hdf['search.page_href'] = self.env.href.search(zip(filters, ['on'] * len(filters)), q=query) 
    182181            req.hdf['search.result'] = [ 
    183                 { 'href': escape(result[0])
     182                { 'href': result[0]
    184183                  'title': result[1], 
    185184                  'date': format_datetime(result[2]), 
    186                   'author': escape(result[3])
     185                  'author': result[3]
    187186                  'excerpt': result[4] 
    188187                } for result in results] 
  • tracfrenchtranslation/0.9/trac/Settings.py

    r160 r293  
    1616 
    1717from trac.core import * 
    18 from trac.util import escape 
     18from trac.util import Markup 
    1919from trac.web import IRequestHandler 
    2020from trac.web.chrome import INavigationContributor 
     21 
    2122 
    2223class SettingsModule(Component): 
     
    3233 
    3334    def get_navigation_items(self, req): 
    34         yield 'metanav', 'settings', '<a href="%s">ParamÚtres</a>' \ 
    35               % escape(self.env.href.settings()) 
     35        yield ('metanav', 'settings', 
     36              Markup('<a href="%s">Réglages</a>', self.env.href.settings())) 
    3637 
    3738    # IRequestHandler methods 
  • tracfrenchtranslation/0.9/trac/test.py

    r160 r293  
    11#!/usr/bin/env python 
    2 # -*- coding: iso8859-1 -*- 
     2# -*- coding: iso-8859-1 -*- 
    33# 
    44# Copyright (C) 2003-2005 Edgewall Software 
  • tracfrenchtranslation/0.9/trac/tests/config.py

    r216 r293  
    1 # -*- coding: iso8859-1 -*- 
     1# -*- coding: iso-8859-1 -*- 
    22# 
    33# Copyright (C) 2005 Edgewall Software 
  • tracfrenchtranslation/0.9/trac/tests/core.py

    r160 r293  
    1 # -*- coding: iso8859-1 -*- 
     1# -*- coding: iso-8859-1 -*- 
    22# 
    33# Copyright (C) 2005 Edgewall Software 
  • tracfrenchtranslation/0.9/trac/tests/__init__.py

    r160 r293  
    11import unittest 
    22 
    3 from trac.tests import attachment, config, core, env, perm 
     3from trac.tests import attachment, config, core, env, perm, util 
    44 
    55def suite(): 
     
    1010    suite.addTest(env.suite()) 
    1111    suite.addTest(perm.suite()) 
     12    suite.addTest(util.suite()) 
    1213    return suite 
    1314 
  • tracfrenchtranslation/0.9/trac/ticket/api.py

    r216 r293  
    11# -*- coding: utf-8 -*- 
    22# 
    3 # Copyright (C) 2003-2005 Edgewall Software 
     3# Copyright (C) 2003-2006 Edgewall Software 
    44# Copyright (C) 2003-2005 Jonas Borgström <jonas@edgewall.com> 
    55# All rights reserved. 
     
    141141 
    142142    def get_wiki_syntax(self): 
    143         yield (r"!?#\d+", 
     143        yield (r"!?(?<!&)#\d+", # #123 but not &#123; (HTML entity) 
    144144               lambda x, y, z: self._format_link(x, 'ticket', y[1:], y)) 
    145145 
     
    179179        for summary,desc,author,keywords,tid,date in cursor: 
    180180            yield (self.env.href.ticket(tid), 
    181                    '#%d: %s' % (tid, util.escape(util.shorten_line(summary))), 
     181                   '#%d: %s' % (tid, util.shorten_line(summary)), 
    182182                   date, author, 
    183                    util.escape(shorten_result(desc, query.split()))) 
     183                   shorten_result(desc, query.split())) 
    184184             
  • tracfrenchtranslation/0.9/trac/ticket/query.py

    r216 r293  
    2222from trac.ticket import Ticket, TicketSystem 
    2323from trac.util import escape, unescape, format_datetime, http_date, \ 
    24                       shorten_line, CRLF 
     24                      shorten_line, CRLF, Markup 
    2525from trac.web import IRequestHandler 
    2626from trac.web.chrome import add_link, add_stylesheet, INavigationContributor 
     
    340340        if req.perm.has_permission('TICKET_VIEW') and \ 
    341341           not self.env.is_component_enabled(ReportModule): 
    342             yield 'mainnav', 'tickets', '<a href="%s">Voir les tickets</a>' \ 
    343                   % escape(self.env.href.query()) 
     342            yield 'mainnav', 'tickets', \ 
     343                  Markup('<a href="%s">Voir les tickets</a>', \ 
     344                  self.env.href.query()) 
    344345 
    345346    # IRequestHandler methods 
     
    502503                                   **query.constraints) 
    503504        req.hdf['query.order'] = query.order 
    504         req.hdf['query.href'] = escape(href) 
     505        req.hdf['query.href'] = href 
    505506        if query.desc: 
    506507            req.hdf['query.desc'] = True 
     
    552553            for field, value in ticket.items(): 
    553554                if field == 'time': 
    554                     ticket[field] = escape(format_datetime(value)
     555                    ticket[field] = format_datetime(value
    555556                elif field == 'description': 
    556557                    ticket[field] = wiki_to_html(value or '', self.env, req, db) 
    557558                else: 
    558                     ticket[field] = escape(value) 
     559                    ticket[field] = value 
    559560 
    560561        req.hdf['query.results'] = tickets 
     
    592593                result['reporter'] = '' 
    593594            if result['description']: 
    594                 result['description'] = escape(wiki_to_html(result['description'] or '', 
    595                                                             self.env, req, db, 
    596                                                             absurls=1)) 
     595                # str() cancels out the Markup() returned by wiki_to_html 
     596                result['description'] = str(wiki_to_html(result['description'] or '', 
     597                                                         self.env, req, db, 
     598                                                         absurls=1)) 
    597599            if result['time']: 
    598600                result['time'] = http_date(result['time']) 
  • tracfrenchtranslation/0.9/trac/ticket/report.py

    r160 r293  
    7272        if not req.perm.has_permission('REPORT_VIEW'): 
    7373            return 
    74         yield 'mainnav', 'tickets', '<a href="%s">Voir les tickets</a>' \ 
    75               % util.escape(self.env.href.report()) 
     74        yield ('mainnav', 'tickets', 
     75               util.Markup('<a href="%s">Voir les tickets</a>', 
     76                           self.env.href.report())) 
    7677 
    7778    # IPermissionRequestor methods   
     
    196197            'id': id, 
    197198            'mode': 'delete', 
    198             'title': util.escape(row[0])
     199            'title': util.row[0]
    199200            'href': self.env.href.report(id) 
    200201        } 
     
    231232        req.hdf['report.id'] = id 
    232233        req.hdf['report.mode'] = 'edit' 
    233         req.hdf['report.title'] = util.escape(title) 
    234         req.hdf['report.sql'] = util.escape(sql) 
    235         req.hdf['report.description'] = util.escape(description) 
     234        req.hdf['report.title'] = title 
     235        req.hdf['report.sql'] = sql 
     236        req.hdf['report.description'] = description 
    236237 
    237238    def _render_view(self, req, db, id): 
     
    346347                    value['parsed'] = wiki_to_html(cell, self.env, req, db) 
    347348                elif column == 'reporter' and cell.find('@') != -1: 
    348                     value['rss'] = util.escape(cell) 
     349                    value['rss'] = cell 
    349350                elif column == 'report': 
    350351                    value['report_href'] = self.env.href.report(cell) 
     
    355356                    value['gmt'] = util.http_date(cell) 
    356357                prefix = 'report.items.%d.%s' % (row_idx, str(column)) 
    357                 req.hdf[prefix] = util.escape(str(cell)
     358                req.hdf[prefix] = str(cell
    358359                for key in value.keys(): 
    359360                    req.hdf[prefix + '.' + key] = value[key] 
     
    489490                    nodename = 'report.items.%s.%s' % (item.name(), col) 
    490491                    value = req.hdf.get(nodename, '') 
    491                     req.hdf[nodename] = util.escape(value) 
     492                    req.hdf[nodename] = value 
    492493                item = item.next() 
    493494 
  • tracfrenchtranslation/0.9/trac/ticket/roadmap.py

    r160 r293  
    2222from trac.perm import IPermissionRequestor 
    2323from trac.util import escape, format_date, format_datetime, parse_date, \ 
    24                       pretty_timedelta, shorten_line, unescape, CRLF 
     24                      pretty_timedelta, shorten_line, unescape, CRLF, Markup 
    2525from trac.ticket import Milestone, Ticket, TicketSystem 
    2626from trac.Timeline import ITimelineEventProvider 
     
    2828from trac.web.chrome import add_link, add_stylesheet, INavigationContributor 
    2929from trac.wiki import wiki_to_html, wiki_to_oneliner, IWikiSyntaxProvider 
     30 
    3031 
    3132def get_tickets_for_milestone(env, db, milestone, field='component'): 
     
    8788    if milestone.exists: 
    8889</