Code

0bb580ca34dd745134e9826f16370e161439c757
[roundup.git] / doc / FAQ.txt
1 ===========
2 Roundup FAQ
3 ===========
5 .. contents::
8 Installation
9 ------------
11 Living without a mailserver
12 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
14 Remove the nosy reactor - delete the tracker file
15 ``detectors/nosyreactor.py`` from your tracker home.
18 The cgi-bin is very slow!
19 ~~~~~~~~~~~~~~~~~~~~~~~~~
21 Yep, it sure is. It has to start up Python and load all of the support
22 libraries for *every* request.
24 The solution is to use the built in server (or possibly the mod_python
25 or WSGI support).
27 To make Roundup more seamless with your website, you may place the built
28 in server behind apache and link it into your web tree (see below).
31 How do I put Roundup behind Apache
32 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
34 We have a project (foo) running on ``tracker.example:8080``.
35 We want ``http://tracker.example/issues`` to use the roundup server, so we 
36 set that up on port 8080 on ``tracker.example`` with the ``config.ini`` line::
38   [tracker]
39   ...
40   web = 'http://tracker.example/issues/'
42 We have a "foo_issues" tracker and we run the server with::
44   roundup-server -p 8080 issues=/home/roundup/trackers/issues 
46 Then, on the Apache machine (eg. redhat 7.3 with apache 1.3), in
47 ``/etc/httpd/conf/httpd.conf`` uncomment::
49   LoadModule proxy_module       modules/libproxy.so
51 and::
53   AddModule mod_proxy.c
55 Then add::
57   # roundup stuff (added manually)
58   <IfModule mod_proxy.c>
59   # proxy through one tracker
60   ProxyPass /issues/ http://tracker.example:8080/issues/
61   # proxy through all tracker(*)
62   #ProxyPass /roundup/ http://tracker.example:8080/
63   </IfModule>
65 Then restart Apache. Now Apache will proxy the request on to the
66 roundup-server.
68 Note that if you're proxying multiple trackers, you'll need to use the
69 second ProxyPass rule described above. It will mean that your TRACKER_WEB
70 will change to::
72   TRACKER_WEB = 'http://tracker.example/roundup/issues/'
74 Once you're done, you can firewall off port 8080 from the rest of the world.
76 Note that in some situations (eg. virtual hosting) you might need to use a
77 more complex rewrite rule instead of the simpler ProxyPass above. The
78 following should be useful as a starting template::
80   # roundup stuff (added manually)
81   <IfModule mod_proxy.c>
83   RewriteEngine on
84   
85   # General Roundup
86   RewriteRule ^/roundup$  roundup/    [R]
87   RewriteRule ^/roundup/(.*)$ http://tracker.example:8080/$1   [P,L]
88   
89   # Handle Foo Issues
90   RewriteRule ^/issues$  issues/    [R]
91   RewriteRule ^/issues/(.*)$ http://tracker.example:8080/issues/$1 [P,L]
92   
93   </IfModule>
96 How do I run Roundup through SSL (HTTPS)?
97 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
99 The preferred way of using SSL is to proxy through apache and use its
100 SSL service. See the previous question on how to proxy through apache.
102 The standalone roundup-server now also has SSL support which is still
103 considered experimental. For details refer to the documentation of
104 roundup server, in particular to the generated configuration file
105 generated with ::
107     roundup-server --save-config
109 that describes the needed option in detail. With the standalone server
110 now XMLRPC over SSL works, too.
113 Roundup runs very slowly on my XP machine when accessed from the Internet
114 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116 The issue is probably related to host name resolution for the client
117 performing the request. You can turn off the resolution of the names
118 when it's so slow like this. To do so, edit the module
119 roundup/scripts/roundup_server.py around line 77 to add the following
120 to the RoundupRequestHandler class::
122      def address_string(self):
123          return self.client_address[0]
126 Templates
127 ---------
129 What is that stuff in the tracker html directory?
130 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
132 This is the template code that Roundup uses to display the various pages.
133 This is based upon the template markup language in Zope called, oddly
134 enough "Zope Page Templates". There's documentation in the Roundup
135 customisation_ documentation. For more information have a look at:
137    http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/ 
139 specifically chapter 10 "Using Zope Page Templates" and chapter 14 "Advanced
140 Page Templates".
143 But I just want a select/option list for ....
144 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
146 Really easy... edit ``html/issue.item.html``. For ``nosy``, change the line
147 (around line 69) from::
149   <span tal:replace="structure context/nosy/field" />
151 to::
153   <span tal:replace="structure context/nosy/menu" />
155 For ``assigned to``, this is already done around line 77::
157   <td tal:content="structure context/assignedto/menu">assignedto menu</td>
161 Great! But now the select/option list is too big
162 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
164 Thats a little harder (but only a little ;^)
166 Again, edit ``html/issue.item``. For nosy, change line (around line 69) from::
168   <span tal:replace="structure context/nosy/field" />
170 to::
172   <span tal:replace="structure python:context.nosy.menu(height=3)" />
174 for more information, go and read about Zope Page Templates.
177 Using Roundup
178 -------------
180 I got an error and I cant reload it!
181 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
183 If you're using Netscape/Mozilla, try holding shift and pressing reload.
184 If you're using IE then install Mozilla and try again ;^)
187 I keep getting logged out
188 ~~~~~~~~~~~~~~~~~~~~~~~~~
190 Make sure that the ``tracker`` -> ``web`` setting in your tracker's
191 config.ini is set to the URL of the tracker.
193 I'm getting infinite redirects in the browser
194 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
196 A wrong value for the ``tracker`` -> ``web`` setting may also result in
197 infinite redirects, see http://issues.roundup-tracker.org/issue2537286
200 How is sorting performed, and why does it seem to fail sometimes?
201 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
203 When we sort items in the hyperdb, we use one of a number of methods,
204 depending on the properties being sorted on:
206 1. If it's a String, Number, Date or Interval property, we just sort the
207    scalar value of the property. Strings are sorted case-sensitively.
208 2. If it's a Link property, we sort by either the linked item's "order"
209    property (if it has one) or the linked item's "id".
210 3. Mulitlinks sort similar to #2, but we start with the first
211    Multilink list item, and if they're the same, we sort by the second item,
212    and so on.
214 Note that if an "order" property is defined on a Class that is used for
215 sorting, all items of that Class *must* have a value against the "order"
216 property, or sorting will result in random ordering.
218 .. _`customisation`: customizing.html