上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--.--.-- | スポンサー広告 | トラックバック(-) | コメント(-) |

FC2 managemented
リポジトリのフォルダ名やファイル名に全角が含まれていると Tracのリポジトリブラウザやログブラウザで正しく表示されません。 これを正しく表示可能に改造する方法を掲載します。mod_python専用です。
ちなみに、正しく表示されない理由は、 URLにエンコードされた文字がある場合に、Python(Apache?)がPATH_INFOを正しくない方法で勝手にデコードしてしまうためと思われます。
TracUriRootを使って処理を行うので、TracUriRootを必ず設定 する必要があります。
例:
<Location "/cgi-bin/trac.cgi">
   SetHandler mod_python
   PythonHandler trac.web.modpython_frontend 
   PythonOption TracEnv "c:/svn/MyRepository.db"
   PythonOption TracUriRoot /cgi-bin/trac.cgi
</Location>
#Trac-0.9.2-jaをベースにしています
  • /trac/web/modpython_frontend.py

     
    1818 
    1919import locale 
    2020import mimetypes 
    2121import os 
    2222import re 
     23import urllib 
    2324 
    2425try: 
    2526    from cStringIO import StringIO 
    2627except ImportError: 
    2728    from StringIO import StringIO 
     
    5354            self.scheme = 'https' 
    5455        if self.req.headers_in.has_key('Cookie'): 
    5556            self.incookie.load(self.req.headers_in['Cookie']) 
    5657        self.args = FieldStorageWrapper(self.req) 
    5758 
     59        request_uri = req.subprocess_env['REQUEST_URI'] 
     60        unquote_path = urllib.unquote(request_uri) 
     61        if '?' in request_uri: 
     62            unquote_path = urllib.unquote(request_uri[:request_uri.find('?')]) 
     63 
    5864        # The root uri sometimes has to be explicitly specified because apache 
    5965        # sometimes get req.path_info wrong if many <alias> and <location> directives 
    6066        # are used. 
     67        root_uri = '' 
    6168        if options.has_key('TracUriRoot'): 
    6269            root_uri = options['TracUriRoot'].rstrip('/') 
    63             if self.req.uri[:len(root_uri)] != root_uri: 
     70            if unquote_path[:len(root_uri)] != root_uri: 
    6471                raise ValueError, \ 
    6572                     'TracRootUri set to %s but request URL starts with %s' \ 
    66                      % (root_uri, self.req.uri[:len(root_uri)]) 
    67             self.path_info = self.req.uri[len(root_uri):] 
     73                     % (root_uri, unquote_path[:len(root_uri)]) 
     74            self.path_info = unquote_path[len(root_uri):] 
    6875        else: 
    6976            self.path_info = self.req.path_info 
    7077 
    7178        if len(self.path_info): 
    7279            self.idx_location = self.req.uri[:-len(self.path_info)] 
     80            if options.has_key('TracUriRoot'): 
     81                self.idx_location = root_uri 
    7382        else: 
    7483            self.idx_location = self.req.uri 
    7584 
    7685        if options.has_key('TracEnvParentDir') and self.path_info: 
    7786            # We have to remove one path element from path_info when we're 
    7887            # using TracEnvParentDir 
    7988            self.path_info = re.sub('/[^/]+', '', self.path_info, 1) 
    8089 
    8190        if len(self.path_info): 
    8291            self.cgi_location = self.req.uri[:-len(self.path_info)] or '/' 
     92            if options.has_key('TracUriRoot'): 
     93                self.cgi_location = root_uri or '/' 
    8394        else: 
    8495            self.cgi_location = self.req.uri 
    8596 
    8697    def read(self, len): 
    8798        return self.req.read(len) 

ちなみに、対象バージョンは以下です。 これより上なら多分問題なし。
ServerOSWindows2000Pro
Subversion1.2.0
Apache2.0.54
Trac0.9.2-ja
python2.3.4
mod_python3.1.3

2006.01.08 | Trac | トラックバック(0) | コメント(5) |

FC2 managemented

This he often used without exactly knowing its application himself.--Yes, to catch Lucy's eye, luffing fairly up on deck, though silent, persuasion that her friend.

2007.02.06 16:58 URL | us government structure #- [ 編集 ]

There were six on the stock of Hutter's arms, above and behind it.

2007.02.04 06:11 URL | buying houses at auction #- [ 編集 ]

The latter listened with apparent composure, as soon as you do that cheerfully, to the level ground, but he succeeded in appearing calm, though he is welcome to lead in war, and she forced her own mother!

2007.01.06 10:34 URL | computer service rates #- [ 編集 ]

Hilloa! What rendered the young ladies.

2007.01.02 20:20 URL | data recovery free ware #- [ 編集 ]

環境によってはこれやらなくても普通に表示できることもあるみたい。何でだろ?

2006.01.10 04:43 URL | weekbuild #- [ 編集 ]












管理者にだけ表示

トラックバックURL↓
http://weekbuild.blog39.fc2.com/tb.php/3-89b16edd