diff --git a/doc/FAQ.txt b/doc/FAQ.txt
index 3b5dbecea8d4cef8ab26fb4d7dd30b3c7ab41637..0bb580ca34dd745134e9826f16370e161439c757 100644 (file)
--- a/doc/FAQ.txt
+++ b/doc/FAQ.txt
+===========
Roundup FAQ
+===========
- '$Date: 2002-02-14 11:11:36 $'
+.. contents::
- NOTE: This is just a grabbag, most of this should go into documentation.
-Changing HTML layout
+Installation
+------------
+
+Living without a mailserver
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Remove the nosy reactor - delete the tracker file
+``detectors/nosyreactor.py`` from your tracker home.
+
+
+The cgi-bin is very slow!
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Yep, it sure is. It has to start up Python and load all of the support
+libraries for *every* request.
+
+The solution is to use the built in server (or possibly the mod_python
+or WSGI support).
+
+To make Roundup more seamless with your website, you may place the built
+in server behind apache and link it into your web tree (see below).
+
+
+How do I put Roundup behind Apache
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Note changes to the files in html take place immediatly without
- restart, even when running roundup-server.
+We have a project (foo) running on ``tracker.example:8080``.
+We want ``http://tracker.example/issues`` to use the roundup server, so we
+set that up on port 8080 on ``tracker.example`` with the ``config.ini`` line::
- Displaying whole messages not only the summary
+ [tracker]
+ ...
+ web = 'http://tracker.example/issues/'
- Modify instance/html/msg.index change::
+We have a "foo_issues" tracker and we run the server with::
- <td><display call="plain('summary')"></td>
+ roundup-server -p 8080 issues=/home/roundup/trackers/issues
- to::
+Then, on the Apache machine (eg. redhat 7.3 with apache 1.3), in
+``/etc/httpd/conf/httpd.conf`` uncomment::
- <td><pre><display call="plain('content')"></pre></td>
+ LoadModule proxy_module modules/libproxy.so
- displays the whole message not only the first line and 'pre'
- prevents the browser from reformatting.
+and::
- Getting the nosy list picker instead of textfield.
+ AddModule mod_proxy.c
- In classic template there is plenty of space below the text field.
- So one could modify instance/html/issue.item to use it.
+Then add::
- At the file top set 'border=1' to see cell boundaries, then
- replace::
+ # roundup stuff (added manually)
+ <IfModule mod_proxy.c>
+ # proxy through one tracker
+ ProxyPass /issues/ http://tracker.example:8080/issues/
+ # proxy through all tracker(*)
+ #ProxyPass /roundup/ http://tracker.example:8080/
+ </IfModule>
- <td class="form-text"><display call="field('nosy',size=20)"></td>
+Then restart Apache. Now Apache will proxy the request on to the
+roundup-server.
+
+Note that if you're proxying multiple trackers, you'll need to use the
+second ProxyPass rule described above. It will mean that your TRACKER_WEB
+will change to::
+
+ TRACKER_WEB = 'http://tracker.example/roundup/issues/'
+
+Once you're done, you can firewall off port 8080 from the rest of the world.
+
+Note that in some situations (eg. virtual hosting) you might need to use a
+more complex rewrite rule instead of the simpler ProxyPass above. The
+following should be useful as a starting template::
+
+ # roundup stuff (added manually)
+ <IfModule mod_proxy.c>
+
+ RewriteEngine on
+
+ # General Roundup
+ RewriteRule ^/roundup$ roundup/ [R]
+ RewriteRule ^/roundup/(.*)$ http://tracker.example:8080/$1 [P,L]
+
+ # Handle Foo Issues
+ RewriteRule ^/issues$ issues/ [R]
+ RewriteRule ^/issues/(.*)$ http://tracker.example:8080/issues/$1 [P,L]
- by::
+ </IfModule>
- <td rowspan=5 class="form-text"><display call="menu('nosy',height=10)"></td>
- and remove the last cell in the next four rows, either by deleting a cell
- or by reducing colspan.
+How do I run Roundup through SSL (HTTPS)?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Want to see the issue id (the number) on the issue item display
+The preferred way of using SSL is to proxy through apache and use its
+SSL service. See the previous question on how to proxy through apache.
- The number is really a central information and not an internal one.
+The standalone roundup-server now also has SSL support which is still
+considered experimental. For details refer to the documentation of
+roundup server, in particular to the generated configuration file
+generated with ::
- In file INSTANCE/html/issue.item displays the creator, so one could add
- the number to it.::
+ roundup-server --save-config
- <td class="form-text"><display call="reldate('creation', pretty=1)">
- (<display call="plain('creator')">)</td>
+that describes the needed option in detail. With the standalone server
+now XMLRPC over SSL works, too.
- to see::
- <td class="form-text"><display call="reldate('creation', pretty=1)">
- (issue<display call="plain('id')"> by <display call="plain('creator')">)</td>
+Roundup runs very slowly on my XP machine when accessed from the Internet
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Installation
+The issue is probably related to host name resolution for the client
+performing the request. You can turn off the resolution of the names
+when it's so slow like this. To do so, edit the module
+roundup/scripts/roundup_server.py around line 77 to add the following
+to the RoundupRequestHandler class::
- Living without a mailserver.
+ def address_string(self):
+ return self.client_address[0]
- Remove the nosy reactor, means delete the file 'INSTANCE/detectors/nosyreactor.py'.
- Rights issues (MISSING)
+Templates
+---------
- Different jobs run under different users.
+What is that stuff in the tracker html directory?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Standalone roundup-server is started by whome ?
+This is the template code that Roundup uses to display the various pages.
+This is based upon the template markup language in Zope called, oddly
+enough "Zope Page Templates". There's documentation in the Roundup
+customisation_ documentation. For more information have a look at:
- * Running cgi under apache.
+ http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/
- * roundup-mailgw called via .forward from MTA, or running a cron job
- fetching via pop.
+specifically chapter 10 "Using Zope Page Templates" and chapter 14 "Advanced
+Page Templates".
- see Troubleshooting.
-Troubleshooting
+But I just want a select/option list for ....
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Really easy... edit ``html/issue.item.html``. For ``nosy``, change the line
+(around line 69) from::
+
+ <span tal:replace="structure context/nosy/field" />
+
+to::
+
+ <span tal:replace="structure context/nosy/menu" />
+
+For ``assigned to``, this is already done around line 77::
+
+ <td tal:content="structure context/assignedto/menu">assignedto menu</td>
+
+
+
+Great! But now the select/option list is too big
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Thats a little harder (but only a little ;^)
+
+Again, edit ``html/issue.item``. For nosy, change line (around line 69) from::
+
+ <span tal:replace="structure context/nosy/field" />
+
+to::
+
+ <span tal:replace="structure python:context.nosy.menu(height=3)" />
+
+for more information, go and read about Zope Page Templates.
+
+
+Using Roundup
+-------------
+
+I got an error and I cant reload it!
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If you're using Netscape/Mozilla, try holding shift and pressing reload.
+If you're using IE then install Mozilla and try again ;^)
-
- AttributeError: '_roundup_instance_1' module has no attribute 'open'
- Sorry: in html it is not formatted correct.
+I keep getting logged out
+~~~~~~~~~~~~~~~~~~~~~~~~~
- For example submitting issues via roundup-mailgw breaks similar to this.::
+Make sure that the ``tracker`` -> ``web`` setting in your tracker's
+config.ini is set to the URL of the tracker.
- Command died with status 1:
- "/usr/local/bin/python /usr/local/bin/roundup-mailgw /home/roundup".
- Command output: Traceback (most recent call last):
- File "/usr/local/bin/roundup-mailgw", line 178, in ?
- sys.exit(main(sys.argv))
- File "/usr/local/bin/roundup-mailgw", line 153, in main
- db = instance.open('admin')
- AttributeError: '_roundup_instance_1' module has no attribute 'open'
+I'm getting infinite redirects in the browser
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Happens if the user which accesses the instance has no read right
- on 'INSTANCE/dbinit.py' or 'pyc'.
+A wrong value for the ``tracker`` -> ``web`` setting may also result in
+infinite redirects, see http://issues.roundup-tracker.org/issue2537286
- If the user has no rights on the 'INSTANCE/db' the mailgw finishes,
- but is, of course, unable to add the message. A notification to
- the roundup-admin is sent, with a longer trace ending in::
- File "/opt/python/lib/python2.2/dbhash.py", line 16, in open
- return bsddb.hashopen(file, flag, mode)
- error: (13, 'Keine Berechtigung')
+How is sorting performed, and why does it seem to fail sometimes?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Replace 'Keine Berechtigung' by 'Not permitted' or ...
+When we sort items in the hyperdb, we use one of a number of methods,
+depending on the properties being sorted on:
- An easy way to test whether it's a permissions problem, or some other mail
- server configuration problem is to cat an email-formatted text file
- directly to the roundup-mailgw script as the roundup user.::
+1. If it's a String, Number, Date or Interval property, we just sort the
+ scalar value of the property. Strings are sorted case-sensitively.
+2. If it's a Link property, we sort by either the linked item's "order"
+ property (if it has one) or the linked item's "id".
+3. Mulitlinks sort similar to #2, but we start with the first
+ Multilink list item, and if they're the same, we sort by the second item,
+ and so on.
- cat issue.txt | /usr/local/bin/roundup-mailgw /home/roundup
+Note that if an "order" property is defined on a Class that is used for
+sorting, all items of that Class *must* have a value against the "order"
+property, or sorting will result in random ordering.
- If that doesn't raise any errors, the problem is the permissions of the
- MTA.
+.. _`customisation`: customizing.html