Merge lp:~flo-fuchs/postorius/testing into lp:postorius

Proposed by Florian Fuchs
Status: Merged
Merged at revision: 198
Proposed branch: lp:~flo-fuchs/postorius/testing
Merge into: lp:postorius
Diff against target: 24038 lines (+17385/-5858)
82 files modified
.bzrignore (+8/-3)
dev-requirements.txt (+4/-0)
setup.py (+20/-16)
src/postorius/__init__.py (+1/-1)
src/postorius/auth/decorators.py (+1/-1)
src/postorius/context_processors.py (+1/-1)
src/postorius/doc/_build/html/.buildinfo (+0/-4)
src/postorius/doc/_build/html/_sources/acknowledgements.txt (+0/-37)
src/postorius/doc/_build/html/_sources/development.txt (+0/-224)
src/postorius/doc/_build/html/_sources/index.txt (+0/-12)
src/postorius/doc/_build/html/_sources/license.txt (+0/-34)
src/postorius/doc/_build/html/_sources/news.txt (+0/-68)
src/postorius/doc/_build/html/_sources/setup.txt (+0/-177)
src/postorius/doc/_build/html/_sources/testing.txt (+0/-6)
src/postorius/doc/_build/html/_sources/using.txt (+0/-32)
src/postorius/doc/_build/html/_static/basic.css (+0/-540)
src/postorius/doc/_build/html/_static/default.css (+0/-256)
src/postorius/doc/_build/html/_static/doctools.js (+0/-247)
src/postorius/doc/_build/html/_static/jquery.js (+0/-154)
src/postorius/doc/_build/html/_static/pygments.css (+0/-62)
src/postorius/doc/_build/html/_static/searchtools.js (+0/-560)
src/postorius/doc/_build/html/_static/sidebar.js (+0/-151)
src/postorius/doc/_build/html/_static/underscore.js (+0/-23)
src/postorius/doc/_build/html/_static/websupport.js (+0/-808)
src/postorius/doc/_build/html/acknowledgements.html (+0/-158)
src/postorius/doc/_build/html/development.html (+0/-362)
src/postorius/doc/_build/html/genindex.html (+0/-123)
src/postorius/doc/_build/html/index.html (+0/-116)
src/postorius/doc/_build/html/license.html (+0/-139)
src/postorius/doc/_build/html/news.html (+0/-186)
src/postorius/doc/_build/html/objects.inv (+0/-10)
src/postorius/doc/_build/html/py-modindex.html (+0/-131)
src/postorius/doc/_build/html/search.html (+0/-105)
src/postorius/doc/_build/html/searchindex.js (+0/-1)
src/postorius/doc/_build/html/setup.html (+0/-252)
src/postorius/doc/_build/html/testing.html (+0/-155)
src/postorius/doc/_build/html/using.html (+0/-402)
src/postorius/doc/development.rst (+81/-152)
src/postorius/doc/index.rst (+8/-2)
src/postorius/doc/news.rst (+2/-2)
src/postorius/doc/settings.py (+1/-1)
src/postorius/doc/using.rst (+0/-32)
src/postorius/fieldset_forms.py (+1/-1)
src/postorius/forms.py (+1/-1)
src/postorius/management/commands/mmclient.py (+1/-1)
src/postorius/models.py (+1/-1)
src/postorius/templatetags/nav_helpers.py (+1/-1)
src/postorius/tests/__init__.py (+20/-8)
src/postorius/tests/fixtures/vcr_cassettes/list_members_access.yaml (+4283/-0)
src/postorius/tests/fixtures/vcr_cassettes/list_members_page.yaml (+1835/-0)
src/postorius/tests/fixtures/vcr_cassettes/test_list_creation.yaml (+1834/-0)
src/postorius/tests/fixtures/vcr_cassettes/test_list_index.yaml (+1375/-0)
src/postorius/tests/fixtures/vcr_cassettes/test_list_members_add_moderator.yaml (+1268/-0)
src/postorius/tests/fixtures/vcr_cassettes/test_list_members_add_owner.yaml (+1268/-0)
src/postorius/tests/fixtures/vcr_cassettes/test_list_members_add_owner_new_owner_added.yaml (+110/-0)
src/postorius/tests/fixtures/vcr_cassettes/test_list_members_new_moderator_added.yaml (+110/-0)
src/postorius/tests/fixtures/vcr_cassettes/test_list_metrics.yaml (+2482/-0)
src/postorius/tests/fixtures/vcr_cassettes/test_list_summary.yaml (+2142/-0)
src/postorius/tests/mailman_api_tests/__init__.py (+1/-32)
src/postorius/tests/mailman_api_tests/test_list_index.py (+28/-8)
src/postorius/tests/mailman_api_tests/test_list_members.py (+106/-28)
src/postorius/tests/mailman_api_tests/test_list_metrics.py (+61/-0)
src/postorius/tests/mailman_api_tests/test_list_new.py (+32/-10)
src/postorius/tests/mailman_api_tests/test_list_summary.py (+28/-7)
src/postorius/tests/test_auth_decorators.py (+1/-1)
src/postorius/tests/test_forms.py (+1/-1)
src/postorius/tests/test_utils.py (+1/-1)
src/postorius/tests/tests.py (+1/-1)
src/postorius/tests/utils.py (+1/-1)
src/postorius/urls.py (+1/-1)
src/postorius/utils.py (+1/-1)
src/postorius/views/__init__.py (+1/-1)
src/postorius/views/api.py (+1/-1)
src/postorius/views/generic.py (+1/-1)
src/postorius/views/list.py (+1/-1)
src/postorius/views/settings.py (+1/-1)
src/postorius/views/user.py (+1/-1)
src/postorius/views/views.py (+1/-1)
testing/__init__.py (+30/-0)
testing/test_mailman.cfg (+25/-0)
testing/test_settings.py (+162/-0)
tox.ini (+39/-0)
To merge this branch: bzr merge lp:~flo-fuchs/postorius/testing
Reviewer Review Type Date Requested Status
Mailman Coders Pending
Review via email: mp+249215@code.launchpad.net

This proposal supersedes a proposal from 2015-02-09.

Description of the change

This branch reworks certain parts of Postorius internal tests:

- vcrpy has been added to test those parts of Postorius that rely on a realistic
  HTTP response from Mailman's administrative API.

- A tox config to test different Python and Django versions
  (currently py27 and Django 1.5 - 1.7)

- The package contains a Django settings file for test purposes only, so it can
  be tested independently from the postorius_standalone branch.

- Better developer documentation re how to write new tests.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.bzrignore'
2--- .bzrignore 2012-03-23 14:40:25 +0000
3+++ .bzrignore 2015-02-10 16:33:20 +0000
4@@ -1,3 +1,8 @@
5-dev_setup/mmtest.db
6-dev_setup/settings_local.py
7-src/postorius.egg-info
8+.tox
9+.coverage
10+__pycache__
11+*.egg-info
12+build
13+dist
14+cover/
15+src/postorius/doc/_build/*
16
17=== added file 'dev-requirements.txt'
18--- dev-requirements.txt 1970-01-01 00:00:00 +0000
19+++ dev-requirements.txt 2015-02-10 16:33:20 +0000
20@@ -0,0 +1,4 @@
21+mock
22+django-nose
23+coverage==3.7.1
24+vcrpy
25
26=== modified file 'setup.py'
27--- setup.py 2015-01-19 15:03:09 +0000
28+++ setup.py 2015-02-10 16:33:20 +0000
29@@ -15,27 +15,31 @@
30 # You should have received a copy of the GNU Lesser General Public License
31 # along with Postorius. If not, see <http://www.gnu.org/licenses/>.
32
33-import ez_setup
34-ez_setup.use_setuptools()
35+try:
36+ import setuptools
37+except ImportError:
38+ import ez_setup
39+ ez_setup.use_setuptools()
40
41 from setuptools import setup, find_packages
42
43+
44 setup(
45- name = "postorius",
46- version = '1.0.0b1',
47- description = "A web user interface for GNU Mailman",
48+ name="postorius",
49+ version='1.0.0b1',
50+ description="A web user interface for GNU Mailman",
51 long_description=open('README.rst').read(),
52- maintainer = "The Mailman GSOC Coders",
53- license = 'GPLv3',
54- keywords = 'email mailman django',
55- url = "https://launchpad.net/postorius",
56- classifiers = [
57+ maintainer="The Mailman GSOC Coders",
58+ license='GPLv3',
59+ keywords='email mailman django',
60+ url="https://launchpad.net/postorius",
61+ classifiers=[
62 "Programming Language :: Python",
63 ],
64- packages = find_packages('src'),
65- package_dir = {'': 'src'},
66- include_package_data = True,
67- install_requires = ['django>=1.4',
68- 'django-social-auth>=0.7.8',
69- 'mailmanclient']
70+ packages=find_packages('src'),
71+ package_dir={'': 'src'},
72+ include_package_data=True,
73+ install_requires=['django>=1.5',
74+ 'django-social-auth>=0.7.8',
75+ 'mailmanclient']
76 )
77
78=== modified file 'src/postorius/__init__.py'
79--- src/postorius/__init__.py 2014-04-22 14:34:21 +0000
80+++ src/postorius/__init__.py 2015-02-10 16:33:20 +0000
81@@ -1,5 +1,5 @@
82 # -*- coding: utf-8 -*-
83-# Copyright (C) 1998-2014 by the Free Software Foundation, Inc.
84+# Copyright (C) 1998-2015 by the Free Software Foundation, Inc.
85 #
86 # This file is part of Postorius.
87 #
88
89=== modified file 'src/postorius/auth/decorators.py'
90--- src/postorius/auth/decorators.py 2015-01-18 19:21:23 +0000
91+++ src/postorius/auth/decorators.py 2015-02-10 16:33:20 +0000
92@@ -1,5 +1,5 @@
93 # -*- coding: utf-8 -*-
94-# Copyright (C) 1998-2014 by the Free Software Foundation, Inc.
95+# Copyright (C) 1998-2015 by the Free Software Foundation, Inc.
96 #
97 # This file is part of Postorius.
98 #
99
100=== modified file 'src/postorius/context_processors.py'
101--- src/postorius/context_processors.py 2014-03-15 21:36:39 +0000
102+++ src/postorius/context_processors.py 2015-02-10 16:33:20 +0000
103@@ -1,5 +1,5 @@
104 # -*- coding: utf-8 -*-
105-# Copyright (C) 2012-2014 by the Free Software Foundation, Inc.
106+# Copyright (C) 2012-2015 by the Free Software Foundation, Inc.
107 #
108 # This file is part of Postorius.
109 #
110
111=== removed directory 'src/postorius/doc/_build/doctrees'
112=== removed file 'src/postorius/doc/_build/doctrees/development.doctree'
113Binary files src/postorius/doc/_build/doctrees/development.doctree 2012-11-04 19:54:09 +0000 and src/postorius/doc/_build/doctrees/development.doctree 1970-01-01 00:00:00 +0000 differ
114=== removed file 'src/postorius/doc/_build/doctrees/environment.pickle'
115Binary files src/postorius/doc/_build/doctrees/environment.pickle 2012-11-04 19:54:09 +0000 and src/postorius/doc/_build/doctrees/environment.pickle 1970-01-01 00:00:00 +0000 differ
116=== removed file 'src/postorius/doc/_build/doctrees/index.doctree'
117Binary files src/postorius/doc/_build/doctrees/index.doctree 2012-08-21 19:58:00 +0000 and src/postorius/doc/_build/doctrees/index.doctree 1970-01-01 00:00:00 +0000 differ
118=== removed file 'src/postorius/doc/_build/doctrees/license.doctree'
119Binary files src/postorius/doc/_build/doctrees/license.doctree 2012-03-23 22:54:46 +0000 and src/postorius/doc/_build/doctrees/license.doctree 1970-01-01 00:00:00 +0000 differ
120=== removed file 'src/postorius/doc/_build/doctrees/news.doctree'
121Binary files src/postorius/doc/_build/doctrees/news.doctree 2012-11-04 19:54:09 +0000 and src/postorius/doc/_build/doctrees/news.doctree 1970-01-01 00:00:00 +0000 differ
122=== removed file 'src/postorius/doc/_build/doctrees/setup.doctree'
123Binary files src/postorius/doc/_build/doctrees/setup.doctree 2012-08-21 19:58:00 +0000 and src/postorius/doc/_build/doctrees/setup.doctree 1970-01-01 00:00:00 +0000 differ
124=== removed file 'src/postorius/doc/_build/doctrees/testing.doctree'
125Binary files src/postorius/doc/_build/doctrees/testing.doctree 2012-07-20 00:00:43 +0000 and src/postorius/doc/_build/doctrees/testing.doctree 1970-01-01 00:00:00 +0000 differ
126=== removed file 'src/postorius/doc/_build/doctrees/using.doctree'
127Binary files src/postorius/doc/_build/doctrees/using.doctree 2012-07-20 00:00:43 +0000 and src/postorius/doc/_build/doctrees/using.doctree 1970-01-01 00:00:00 +0000 differ
128=== removed directory 'src/postorius/doc/_build/html'
129=== removed file 'src/postorius/doc/_build/html/.buildinfo'
130--- src/postorius/doc/_build/html/.buildinfo 2012-05-29 06:28:56 +0000
131+++ src/postorius/doc/_build/html/.buildinfo 1970-01-01 00:00:00 +0000
132@@ -1,4 +0,0 @@
133-# Sphinx build info version 1
134-# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
135-config: b7c499bf02394c05c2168ae495bae526
136-tags: fbb0d17656682115ca4d033fb2f83ba1
137
138=== removed directory 'src/postorius/doc/_build/html/_sources'
139=== removed file 'src/postorius/doc/_build/html/_sources/acknowledgements.txt'
140--- src/postorius/doc/_build/html/_sources/acknowledgements.txt 2011-08-22 11:15:03 +0000
141+++ src/postorius/doc/_build/html/_sources/acknowledgements.txt 1970-01-01 00:00:00 +0000
142@@ -1,37 +0,0 @@
143-Acknowledgements
144-================
145-
146-Test Server
147------------
148-
149-We're proud to provide you a development server which is sponsered by XXX #Todo
150-Feel free to change anything you like, we can simply rest the DB from Time to Time.
151-
152-Missing Functionality
153----------------------
154-
155-* Delete Domain
156- * missing in REST
157- * implemented in mailman3 a8
158-
159-* Show a List of all subscribed users
160-
161-ACL
162----
163-
164-* Middleware
165-
166- We don't have the Middleware which is required to work with users and it's permissions yet. For this reason we had to tweak some functions to be a hardcoded Demo object.
167-
168- * Login Check
169- At the moment we're using a hardcoded List of allowed usernames and Passwords which are all stored in Plain within the AuthBackends Source File.
170- * has_perm Decorator
171- As we don't have a middleware to check for users and it's permissions we do only use one permission at the moment. The permission site domain_admin is hardcoded to user.username == "james@example.com"
172-
173-
174-
175-Ideas
176------
177-
178-* ContactPage
179-*
180
181=== removed file 'src/postorius/doc/_build/html/_sources/development.txt'
182--- src/postorius/doc/_build/html/_sources/development.txt 2012-11-04 19:54:09 +0000
183+++ src/postorius/doc/_build/html/_sources/development.txt 1970-01-01 00:00:00 +0000
184@@ -1,224 +0,0 @@
185-===========
186-Development
187-===========
188-
189-This is a short guide to help you get started with Postorius development.
190-
191-
192-Directory layout
193-================
194-
195-Postorius is a Django application, so if you have developed with Django before,
196-the file structure probably looks familiar. These are the basics:
197-
198-::
199-
200- __init__.py
201- auth/ # Custom authorization code (List owners and
202- # moderators)
203- context_processors.py # Some variables available in all templates
204- doc/ # Sphinx documentation
205- fieldset_forms.py # A custom form class to build html forms with
206- # fieldsets
207- forms.py # All kinds of classes to build and validate forms
208- management/ # Commands to use with Django's manage.py script
209- models.py # Code to connect to mailman.client and provide
210- # a Django-style model API for lists, mm-users and
211- # domains
212- static/ # Static files (CSS, JS, images)
213- templates/ # HTML Templates
214- tests/ # Postorius test files
215- urls.py # URL routes
216- utils.py # Some handy utilities
217- views/
218- views.py # View classes and functions for all views connected
219- # in urls.py
220- generic.py # Generic class-based views; Currently holds a
221- # class for views based on a single mailing list
222-
223-
224-Development Workflow
225-====================
226-
227-The source code is hosted on Launchpad_, which also means that we are using
228-Bazaar for version control.
229-
230-.. _Launchpad: https://launchpad.net
231-
232-Changes are usually not made directly in the project's trunk branch, but in
233-feature-related personal branches, which get reviewed and then merged into
234-the trunk.
235-
236-The ideal workflow would be like this:
237-
238-1. File a bug to suggest a new feature or report a bug (or just pick one of
239- the existing bugs).
240-2. Create a new branch with your code changes.
241-3. Make a "merge proposal" to get your code reviewed and merged.
242-
243-Launchpad has a nice tour_ which describes all this in detail.
244-
245-.. _tour: https://launchpad.net/+tour/index
246-
247-
248-
249-Writing View Code
250-=================
251-
252-When the work on Postorius was started, the standard way to write view code in
253-Django was to write a single function for each different view. Since then
254-Django has introduced so-called 'class-based views' which make it much easier
255-to reuse view functionality. While using simple functions is not discuraged, it
256-makes sense to check if using a class-based approach could make sense.
257-
258-Check Postorius' ``views/views.py`` and ``views/generic.py`` for examples!
259-
260-
261-Authentication/Authorization
262-============================
263-
264-Three of Django's default User roles are relvant for Postorius:
265-
266-- Superuser: Can do everything.
267-- AnonymousUser: Can view list index and info pages.
268-- Authenticated users: Can view list index and info pages. Can (un)subscribe
269- from lists.
270-
271-Apart from these default roles, there are two others relevant in Postorius:
272-
273-- List owners: Can change list settings, moderate messages and delete their
274- lists.
275-- List moderators: Can moderate messages.
276-
277-There are a number of decorators to protect views from unauthorized users.
278-
279-- ``@user_passes_test(lambda u: u.is_superuser)`` (redirects to login form)
280-- ``@login_required`` (redirects to login form)
281-- ``@list_owner_required`` (returns 403)
282-- ``@list_moderator_required`` (returns 403)
283-- ``@superuser_or_403`` (returns 403)
284-- ``@loggedin_or_403`` (returns 403)
285-- ``@basic_auth_login``
286-
287-Check out ``views/views.py`` or ``views/api.py`` for examples!
288-
289-The last one (basic_auth_login) checks the request header for HTTP Basic Auth
290-credentials and uses those to authenticate against Django's session-based
291-mechanism. It can be used in cases where a view is accessed from other clients
292-than the web browser.
293-
294-Please make sure to put it outside the other auth decorators.
295-
296-Good:
297-
298-::
299-
300- @basic_auth_login
301- @list_owner_required
302- def my_view_func(request):
303- ...
304-
305-Won't work, because list_owner_required will not recognize the user:
306-
307-::
308-
309- @list_owner_required
310- @basic_auth_login
311- def my_view_func(request):
312- ...
313-
314-
315-Accessing the Mailman API
316-=========================
317-
318-Postorius uses mailman.client to connect to Mailman's REST API. In order to
319-directly use the client, ``cd`` to your project folder and execute
320-``python manage.py mmclient``. This will open a python shell (IPython, if
321-that's available) and provide you with a client object connected to to your
322-local Mailman API server (it uses the credentials from your settings.py).
323-
324-A quick example:
325-
326-::
327-
328- $ python manage.py mmclient
329-
330- >>> client
331- <Client (user:pwd) http://localhost:8001/3.0/>
332-
333- >>> print client.system['mailman_version']
334- GNU Mailman 3.0.0b2+ (Here Again)
335-
336- >>> mailman_dev = client.get_list('mailman-developers@python.org')
337- >>> print mailman_dev settings
338- {u'owner_address': u'mailman-developers@python.org',
339- u'default_nonmember_action': u'hold', ...}
340-
341-For detailed information how to use mailman.client, check out its documentation_.
342-
343-.. _documentation: http://bazaar.launchpad.net/~mailman-coders/mailman.client/trunk/view/head:/src/mailmanclient/docs/using.txt
344-
345-
346-Testing
347-=======
348-
349-Currently only some of the Postorius code is covered by a test. We should change that!
350-
351-All test modules reside in the ``postorius/src/postorius/tests`` directory
352-and this is where you should put your own tests, too. To make the django test
353-runner find your tests, make sure to add them to the folder's ``__init__.py``:
354-
355-::
356-
357- from postorius.tests import test_utils
358- from postorius.tests.test_list_members import ListMembersViewTest
359- from postorius.tests.test_list_settings import ListSettingsViewTest
360- from postorius.tests.my_own_tests import MyOwnUnitTest
361-
362- __test__ = {
363- "Test Utils": test_utils,
364- "List Members": ListMembersViewTest,
365- "List Settings": ListSettingsViewTest,
366- "My Own Test": MyOwnUnitTest,
367- }
368-
369-
370-Running the tests
371------------------
372-
373-To run the tests go to your project folder and run ``python manage.py test
374-postorius`` from there.
375-
376-
377-Testing mailman.client results
378-------------------------------
379-
380-Most of Postorius' code involves some results from calls to the mailman.client
381-library. mailman.client is itself covered by tests, so Postorius' own tests
382-don't need to check if mailman.client returns correct results. Instead we can
383-just mock them! This has the big advantage that you can run the test suite
384-without having to worry about the state of the local Mailman database. It also
385-makes the tests run faster, because we spare ourselves the HTTP calls to the
386-local Mailman REST API.
387-
388-This approach has the obvious downside that the Postorius tests will not
389-recognize any changes to the Mailman API. So at some point there should be some
390-separate integration tests to test the whole chain. But let's not worry about
391-that for now.
392-
393-
394-Mocking mailman.client objects
395-------------------------------
396-
397-Postorius uses Michael Foord's ``mock`` library for mocking. There are some
398-shortcuts you can use to quickly create mock objects that behave a little bit
399-like objects retreived from mailman.client, like:
400-
401-- create_mock_domain
402-- create_mock_list
403-- create_mock_member
404-
405-These ``create_mock_*`` functions are very simple tools that return MagigMock objects with the properties passed to them in a dictionary. They also set some defaults for properties that you didn't pass to its ``create_mock_*`` function. For instance, a mock list created with ``create_mock_list()`` will always have ``members``, ``moderators`` and ``owners`` properties.
406-
407-
408-.. automodule:: postorius.tests.test_utils
409
410=== removed file 'src/postorius/doc/_build/html/_sources/index.txt'
411--- src/postorius/doc/_build/html/_sources/index.txt 2012-07-20 00:00:43 +0000
412+++ src/postorius/doc/_build/html/_sources/index.txt 1970-01-01 00:00:00 +0000
413@@ -1,12 +0,0 @@
414-Postorius - The New Mailman Web UI
415-==================================
416-
417-Contents:
418-
419-.. toctree::
420- :maxdepth: 1
421-
422- news.rst
423- setup.rst
424- development.rst
425-
426
427=== removed file 'src/postorius/doc/_build/html/_sources/license.txt'
428--- src/postorius/doc/_build/html/_sources/license.txt 2011-08-18 13:47:20 +0000
429+++ src/postorius/doc/_build/html/_sources/license.txt 1970-01-01 00:00:00 +0000
430@@ -1,34 +0,0 @@
431-Contributions:
432-==============
433-Mailman is licensed unter *GPL*
434------------------------------
435-Copyright (C) 1998-2010 by the Free Software Foundation, Inc.
436-
437-This file is part of GNU Mailman.
438-
439-GNU Mailman is free software: you can redistribute it and/or modify it under
440-the terms of the GNU General Public License as published by the Free
441-Software Foundation, either version 3 of the License, or (at your option)
442-any later version.
443-
444-GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
445-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
446-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
447-more details.
448-
449-You should have received a copy of the GNU General Public License along with
450-GNU Mailman. If not, see <http://www.gnu.org/licenses/>.
451-
452-RRZE Icon Set
453--------------
454-
455-**CreativeCommons Licence**
456-
457-The RRZE Icon Set is licenced under a Creative Commons Licence.
458-Please see the website for the current licence text.
459-
460-More information about the Project could be found here:
461-http://rrze-icon-set.berlios.de/licence.html
462-
463-Special thanks to:
464-* Franziska Sponsel (created additional Icons specially for our Project)
465
466=== removed file 'src/postorius/doc/_build/html/_sources/news.txt'
467--- src/postorius/doc/_build/html/_sources/news.txt 2012-11-04 19:54:09 +0000
468+++ src/postorius/doc/_build/html/_sources/news.txt 1970-01-01 00:00:00 +0000
469@@ -1,68 +0,0 @@
470-================
471-News / Changelog
472-================
473-
474-Copyright (C) 2012 by the Free Software Foundation, Inc.
475-
476-The Postorius Django app provides a web user interface to
477-access GNU Mailman.
478-
479-Postorius is free software: you can redistribute it and/or
480-modify it under the terms of the GNU Lesser General Public License as
481-published by the Free Software Foundation, version 3 of the License.
482-
483-Postorius is distributed in the hope that it will be useful,
484-but WITHOUT ANY WARRANTY; without even the implied warranty of
485-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
486-General Public License for more details.
487-
488-You should have received a copy of the GNU Lesser General Public License
489-along with Postorius. If not, see <http://www.gnu.org/licenses/>.
490-
491-
492-1.0 alpha 2
493-===========
494-(2012-XX-XX)
495-
496-* dev setup fix for Django 1.4 contributed by Rohan Jain
497-* missing csrf tokens in templates contributed by Richard Wackerbarth (LP: 996658)
498-* moderation: fixed typo in success message call
499-* installation documentation for Apache/mod_wsgi
500-* moved project files to separate branch
501-* show error message if connection to Mailman API fails
502-* added list members view
503-* added developer documentation
504-* added test helper utils
505-* all code now conform to PEP8
506-* themes: removed obsolete MAILMAN_THEME settings from templates, contexts, file structure; contributed by Richard Wackerbarth (LP: 1043258)
507-* added access control for list owners and moderators
508-* added a mailmanclient shell to use as a `manage.py` command (`python manage.py mmclient`)
509-* use "url from future" template tag in all templates. Contributed by Richard Wackerbarth.
510-* added "new user" form. Contributed by George Chatzisofroniou.
511-* added user subscription page
512-* added decorator to allow login via http basic auth (to allow non-browser clients to use API views)
513-* added api view for list index
514-* several changes regarding style and navigation structure
515-
516-
517-1.0 alpha 1 -- "Space Farm"
518-===========================
519-(2012-03-23)
520-
521-Many thanks go out to Anna Senarclens de Grancy and Benedict Stein for
522-developing the initial versions of this Django app during the Google Summer of
523-Code 2010 and 2011.
524-
525-* add/remove/edit mailing lists
526-* edit list settings
527-* show all mailing lists on server
528-* subscribe/unsubscribe/mass subscribe mailing lists
529-* add/remove domains
530-* show basic list info and metrics
531-* login using django user account or using BrowserID
532-* show basic user profile
533-* accept/discard/reject/defer messages
534-* Implementation of Django Messages contributed by Benedict Stein (LP: #920084)
535-* Dependency check in setup.py contributed by Daniel Mizyrycki
536-* Proper processing of acceptable aliases in list settings form contributed by
537- Daniel Mizyrycki
538
539=== removed file 'src/postorius/doc/_build/html/_sources/setup.txt'
540--- src/postorius/doc/_build/html/_sources/setup.txt 2012-07-20 00:00:43 +0000
541+++ src/postorius/doc/_build/html/_sources/setup.txt 1970-01-01 00:00:00 +0000
542@@ -1,177 +0,0 @@
543-============
544-Installation
545-============
546-
547-.. note::
548- This installation guide covers Postorius, the web user interface for
549- GNU Mailman 3. To install GNU Mailman follow the instructions in the documentation:
550- http://packages.python.org/mailman/
551-
552-
553-Install Dependencies
554-====================
555-
556-Django:
557-
558-::
559-
560- $ sudo pip install django
561-
562-mailman.client:
563-
564-::
565-
566- $ bzr branch lp:mailman.client
567- $ cd mailman.client
568- $ sudo python setup.py install
569-
570-
571-Install Postorius
572-=================
573-
574-
575-Latest release
576---------------
577-
578-If you just want to install the latest release of Postorius, install it from
579-PyPi:
580-
581-::
582-
583- $ sudo pip install postorius
584-
585-or:
586-
587-::
588-
589- $ sudo easy_install postorius
590-
591-
592-Latest dev version
593-------------------
594-
595-If you want to always be up to date with the latest development version, you
596-should install Postorius using bazaar:
597-
598-::
599-
600- $ bzr branch lp:postorius
601- $ cd postorius
602- $ sudo python setup.py develop
603- $ cd ..
604-
605-You can always pull in the latest changes from the development branch:
606-
607-::
608-
609- $ cd postorius
610- $ bzr pull
611- $ cd ..
612-
613-Make sure to keep mailman.client up to date as well:
614-
615-::
616-
617- $ cd mailman.client
618- $ bzr pull lp:mailman.client
619- $ cd ..
620-
621-
622-Setup your django project
623-=========================
624-
625-Since you have now installed the necessary packages to run Postorius, it's
626-time to setup your Django site.
627-
628-First, get the project directory from launchpad:
629-
630-::
631-
632- $ bzr branch lp:~mailman-coders/postorius/postorius_standalone
633-
634-Second, change the database setting in ``postorius_standalone/settings.py`` to
635-your preferred database. If you're OK with using sqlite, just change the path
636-in line 48 to the correct location.
637-
638-.. note::
639- Detailed information on how to use different database engines can be found
640- in the `Django documentation`_.
641-
642-.. _Django documentation: https://docs.djangoproject.com/en/1.4/ref/settings/#databases
643-
644-Third, prepare the database:
645-
646-::
647-
648- $ cd postorius_standalone
649- $ python manage.py syncdb
650- $ cd ..
651-
652-This will create the ``.db file`` (if you ar using SQLite) and will setup all the
653-necessary db tables. You will also be prompted to create a superuser which
654-will act as an admin account for Postorius.
655-
656-
657-.. seealso::
658- Robert Niederreiter has provided a `buildout for GNU Mailman 3 and
659- Postorius`_.
660-
661-.. _buildout for GNU Mailman 3 and Postorius:
662- https://github.com/bluedynamics/mailman.buildout
663-
664-
665-Running the development server
666-==============================
667-
668-The quickest way to run Postorius is to just start the development server:
669-
670-::
671-
672- $ cd postorius_standalone
673- $ python manage.py runserver
674-
675-
676-.. warning::
677- You should use the development server only locally. While it's possible to
678- make your site publicly available using the dev server, you should never
679- do that in a production environment.
680-
681-
682-Running Postorius on Apache with mod_wsgi
683-=========================================
684-
685-.. note::
686- This guide assumes that you know how to setup a VirtualHost with Apache.
687- If you are using SQLite, the ``.db`` file as well as its folder need to be
688- writable by the web server.
689-
690-These settings need to be added to your Apache VirtualHost:
691-
692-::
693-
694- Alias /static /path/to/postorius_standalone/static
695- <Directory "/path/to/postorius_standalone/static">
696- Order deny,allow
697- Allow from all
698- </Directory>
699-
700- WSGIScriptAlias / /path/to/postorius_standalone/srv/postorius.wsgi
701- <Directory "/path/to/postorius_standalone/srv">
702- Order deny,allow
703- Allow from all
704- </Directory>
705-
706-The first Alias serves the static files (CSS, JS, Images, etc.). The
707-WSGIScriptAlias serves the Django application. The paths need to be changed
708-depending on which location you downloaded ``postorius_standalone`` to.
709-
710-We're almost ready. But you need to collect the static files from Postorius
711-(which resides somewhere on your pythonpath) to be able to serve them from the
712-site directory. All you have to do is to change into the
713-``postorius_standalone`` directory and run:
714-
715-::
716-
717- $ python manage.py collectstatic
718-
719-After reloading the webserver Postorius should be running!
720
721=== removed file 'src/postorius/doc/_build/html/_sources/testing.txt'
722--- src/postorius/doc/_build/html/_sources/testing.txt 2012-07-20 00:00:43 +0000
723+++ src/postorius/doc/_build/html/_sources/testing.txt 1970-01-01 00:00:00 +0000
724@@ -1,6 +0,0 @@
725-=============
726-Writing tests
727-=============
728-
729-
730-.. automodule:: postorius.tests.test_utils
731
732=== removed file 'src/postorius/doc/_build/html/_sources/using.txt'
733--- src/postorius/doc/_build/html/_sources/using.txt 2012-07-16 21:56:47 +0000
734+++ src/postorius/doc/_build/html/_sources/using.txt 1970-01-01 00:00:00 +0000
735@@ -1,32 +0,0 @@
736-Using the Django App - Developers Resource (outdated)
737-=====================================================
738-
739-.. warning::
740- This user guide is outdated and needs to be updated.
741-
742-.. automodule:: tests.tests
743-
744-Running the tests explained above.
745-----------------------------------
746-We've added our own test-suite to the Django App which will be executed together with the Django Test. Last thing you should do is running these tests. If they fail you did something wrong, if they succeed you can enjoy the site.
747-
748-Run the following in the Site Directory
749-
750- .. code-block:: bash
751-
752- $ python manage.py test
753-
754-.. note::
755- Please be aware that we want to run a development instance of mailman you need to stop the stable one first and the tests will open it's own mailman temporily.
756-
757-Accessing the REST Client for Testing
758--------------------------------------
759-
760-If you want to access the Functions, which we use in the views, directly feel free to run the following block of code within a Shell which does have it's current Directory within the Django Site Directory.
761-
762- .. code-block:: python
763-
764- from settings import API_USER, API_PASS
765- from mailman.client import Client
766- c = Client('http://localhost:8001/3.0', API_USER, API_PASS)
767- #DEBUG: Python Session
768
769=== removed directory 'src/postorius/doc/_build/html/_static'
770=== removed file 'src/postorius/doc/_build/html/_static/ajax-loader.gif'
771Binary files src/postorius/doc/_build/html/_static/ajax-loader.gif 2012-05-29 06:28:56 +0000 and src/postorius/doc/_build/html/_static/ajax-loader.gif 1970-01-01 00:00:00 +0000 differ
772=== removed file 'src/postorius/doc/_build/html/_static/basic.css'
773--- src/postorius/doc/_build/html/_static/basic.css 2012-08-21 19:58:00 +0000
774+++ src/postorius/doc/_build/html/_static/basic.css 1970-01-01 00:00:00 +0000
775@@ -1,540 +0,0 @@
776-/*
777- * basic.css
778- * ~~~~~~~~~
779- *
780- * Sphinx stylesheet -- basic theme.
781- *
782- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
783- * :license: BSD, see LICENSE for details.
784- *
785- */
786-
787-/* -- main layout ----------------------------------------------------------- */
788-
789-div.clearer {
790- clear: both;
791-}
792-
793-/* -- relbar ---------------------------------------------------------------- */
794-
795-div.related {
796- width: 100%;
797- font-size: 90%;
798-}
799-
800-div.related h3 {
801- display: none;
802-}
803-
804-div.related ul {
805- margin: 0;
806- padding: 0 0 0 10px;
807- list-style: none;
808-}
809-
810-div.related li {
811- display: inline;
812-}
813-
814-div.related li.right {
815- float: right;
816- margin-right: 5px;
817-}
818-
819-/* -- sidebar --------------------------------------------------------------- */
820-
821-div.sphinxsidebarwrapper {
822- padding: 10px 5px 0 10px;
823-}
824-
825-div.sphinxsidebar {
826- float: left;
827- width: 230px;
828- margin-left: -100%;
829- font-size: 90%;
830-}
831-
832-div.sphinxsidebar ul {
833- list-style: none;
834-}
835-
836-div.sphinxsidebar ul ul,
837-div.sphinxsidebar ul.want-points {
838- margin-left: 20px;
839- list-style: square;
840-}
841-
842-div.sphinxsidebar ul ul {
843- margin-top: 0;
844- margin-bottom: 0;
845-}
846-
847-div.sphinxsidebar form {
848- margin-top: 10px;
849-}
850-
851-div.sphinxsidebar input {
852- border: 1px solid #98dbcc;
853- font-family: sans-serif;
854- font-size: 1em;
855-}
856-
857-div.sphinxsidebar input[type="text"] {
858- width: 170px;
859-}
860-
861-div.sphinxsidebar input[type="submit"] {
862- width: 30px;
863-}
864-
865-img {
866- border: 0;
867-}
868-
869-/* -- search page ----------------------------------------------------------- */
870-
871-ul.search {
872- margin: 10px 0 0 20px;
873- padding: 0;
874-}
875-
876-ul.search li {
877- padding: 5px 0 5px 20px;
878- background-image: url(file.png);
879- background-repeat: no-repeat;
880- background-position: 0 7px;
881-}
882-
883-ul.search li a {
884- font-weight: bold;
885-}
886-
887-ul.search li div.context {
888- color: #888;
889- margin: 2px 0 0 30px;
890- text-align: left;
891-}
892-
893-ul.keywordmatches li.goodmatch a {
894- font-weight: bold;
895-}
896-
897-/* -- index page ------------------------------------------------------------ */
898-
899-table.contentstable {
900- width: 90%;
901-}
902-
903-table.contentstable p.biglink {
904- line-height: 150%;
905-}
906-
907-a.biglink {
908- font-size: 1.3em;
909-}
910-
911-span.linkdescr {
912- font-style: italic;
913- padding-top: 5px;
914- font-size: 90%;
915-}
916-
917-/* -- general index --------------------------------------------------------- */
918-
919-table.indextable {
920- width: 100%;
921-}
922-
923-table.indextable td {
924- text-align: left;
925- vertical-align: top;
926-}
927-
928-table.indextable dl, table.indextable dd {
929- margin-top: 0;
930- margin-bottom: 0;
931-}
932-
933-table.indextable tr.pcap {
934- height: 10px;
935-}
936-
937-table.indextable tr.cap {
938- margin-top: 10px;
939- background-color: #f2f2f2;
940-}
941-
942-img.toggler {
943- margin-right: 3px;
944- margin-top: 3px;
945- cursor: pointer;
946-}
947-
948-div.modindex-jumpbox {
949- border-top: 1px solid #ddd;
950- border-bottom: 1px solid #ddd;
951- margin: 1em 0 1em 0;
952- padding: 0.4em;
953-}
954-
955-div.genindex-jumpbox {
956- border-top: 1px solid #ddd;
957- border-bottom: 1px solid #ddd;
958- margin: 1em 0 1em 0;
959- padding: 0.4em;
960-}
961-
962-/* -- general body styles --------------------------------------------------- */
963-
964-a.headerlink {
965- visibility: hidden;
966-}
967-
968-h1:hover > a.headerlink,
969-h2:hover > a.headerlink,
970-h3:hover > a.headerlink,
971-h4:hover > a.headerlink,
972-h5:hover > a.headerlink,
973-h6:hover > a.headerlink,
974-dt:hover > a.headerlink {
975- visibility: visible;
976-}
977-
978-div.body p.caption {
979- text-align: inherit;
980-}
981-
982-div.body td {
983- text-align: left;
984-}
985-
986-.field-list ul {
987- padding-left: 1em;
988-}
989-
990-.first {
991- margin-top: 0 !important;
992-}
993-
994-p.rubric {
995- margin-top: 30px;
996- font-weight: bold;
997-}
998-
999-img.align-left, .figure.align-left, object.align-left {
1000- clear: left;
1001- float: left;
1002- margin-right: 1em;
1003-}
1004-
1005-img.align-right, .figure.align-right, object.align-right {
1006- clear: right;
1007- float: right;
1008- margin-left: 1em;
1009-}
1010-
1011-img.align-center, .figure.align-center, object.align-center {
1012- display: block;
1013- margin-left: auto;
1014- margin-right: auto;
1015-}
1016-
1017-.align-left {
1018- text-align: left;
1019-}
1020-
1021-.align-center {
1022- text-align: center;
1023-}
1024-
1025-.align-right {
1026- text-align: right;
1027-}
1028-
1029-/* -- sidebars -------------------------------------------------------------- */
1030-
1031-div.sidebar {
1032- margin: 0 0 0.5em 1em;
1033- border: 1px solid #ddb;
1034- padding: 7px 7px 0 7px;
1035- background-color: #ffe;
1036- width: 40%;
1037- float: right;
1038-}
1039-
1040-p.sidebar-title {
1041- font-weight: bold;
1042-}
1043-
1044-/* -- topics ---------------------------------------------------------------- */
1045-
1046-div.topic {
1047- border: 1px solid #ccc;
1048- padding: 7px 7px 0 7px;
1049- margin: 10px 0 10px 0;
1050-}
1051-
1052-p.topic-title {
1053- font-size: 1.1em;
1054- font-weight: bold;
1055- margin-top: 10px;
1056-}
1057-
1058-/* -- admonitions ----------------------------------------------------------- */
1059-
1060-div.admonition {
1061- margin-top: 10px;
1062- margin-bottom: 10px;
1063- padding: 7px;
1064-}
1065-
1066-div.admonition dt {
1067- font-weight: bold;
1068-}
1069-
1070-div.admonition dl {
1071- margin-bottom: 0;
1072-}
1073-
1074-p.admonition-title {
1075- margin: 0px 10px 5px 0px;
1076- font-weight: bold;
1077-}
1078-
1079-div.body p.centered {
1080- text-align: center;
1081- margin-top: 25px;
1082-}
1083-
1084-/* -- tables ---------------------------------------------------------------- */
1085-
1086-table.docutils {
1087- border: 0;
1088- border-collapse: collapse;
1089-}
1090-
1091-table.docutils td, table.docutils th {
1092- padding: 1px 8px 1px 5px;
1093- border-top: 0;
1094- border-left: 0;
1095- border-right: 0;
1096- border-bottom: 1px solid #aaa;
1097-}
1098-
1099-table.field-list td, table.field-list th {
1100- border: 0 !important;
1101-}
1102-
1103-table.footnote td, table.footnote th {
1104- border: 0 !important;
1105-}
1106-
1107-th {
1108- text-align: left;
1109- padding-right: 5px;
1110-}
1111-
1112-table.citation {
1113- border-left: solid 1px gray;
1114- margin-left: 1px;
1115-}
1116-
1117-table.citation td {
1118- border-bottom: none;
1119-}
1120-
1121-/* -- other body styles ----------------------------------------------------- */
1122-
1123-ol.arabic {
1124- list-style: decimal;
1125-}
1126-
1127-ol.loweralpha {
1128- list-style: lower-alpha;
1129-}
1130-
1131-ol.upperalpha {
1132- list-style: upper-alpha;
1133-}
1134-
1135-ol.lowerroman {
1136- list-style: lower-roman;
1137-}
1138-
1139-ol.upperroman {
1140- list-style: upper-roman;
1141-}
1142-
1143-dl {
1144- margin-bottom: 15px;
1145-}
1146-
1147-dd p {
1148- margin-top: 0px;
1149-}
1150-
1151-dd ul, dd table {
1152- margin-bottom: 10px;
1153-}
1154-
1155-dd {
1156- margin-top: 3px;
1157- margin-bottom: 10px;
1158- margin-left: 30px;
1159-}
1160-
1161-dt:target, .highlighted {
1162- background-color: #fbe54e;
1163-}
1164-
1165-dl.glossary dt {
1166- font-weight: bold;
1167- font-size: 1.1em;
1168-}
1169-
1170-.field-list ul {
1171- margin: 0;
1172- padding-left: 1em;
1173-}
1174-
1175-.field-list p {
1176- margin: 0;
1177-}
1178-
1179-.refcount {
1180- color: #060;
1181-}
1182-
1183-.optional {
1184- font-size: 1.3em;
1185-}
1186-
1187-.versionmodified {
1188- font-style: italic;
1189-}
1190-
1191-.system-message {
1192- background-color: #fda;
1193- padding: 5px;
1194- border: 3px solid red;
1195-}
1196-
1197-.footnote:target {
1198- background-color: #ffa;
1199-}
1200-
1201-.line-block {
1202- display: block;
1203- margin-top: 1em;
1204- margin-bottom: 1em;
1205-}
1206-
1207-.line-block .line-block {
1208- margin-top: 0;
1209- margin-bottom: 0;
1210- margin-left: 1.5em;
1211-}
1212-
1213-.guilabel, .menuselection {
1214- font-family: sans-serif;
1215-}
1216-
1217-.accelerator {
1218- text-decoration: underline;
1219-}
1220-
1221-.classifier {
1222- font-style: oblique;
1223-}
1224-
1225-abbr, acronym {
1226- border-bottom: dotted 1px;
1227- cursor: help;
1228-}
1229-
1230-/* -- code displays --------------------------------------------------------- */
1231-
1232-pre {
1233- overflow: auto;
1234- overflow-y: hidden; /* fixes display issues on Chrome browsers */
1235-}
1236-
1237-td.linenos pre {
1238- padding: 5px 0px;
1239- border: 0;
1240- background-color: transparent;
1241- color: #aaa;
1242-}
1243-
1244-table.highlighttable {
1245- margin-left: 0.5em;
1246-}
1247-
1248-table.highlighttable td {
1249- padding: 0 0.5em 0 0.5em;
1250-}
1251-
1252-tt.descname {
1253- background-color: transparent;
1254- font-weight: bold;
1255- font-size: 1.2em;
1256-}
1257-
1258-tt.descclassname {
1259- background-color: transparent;
1260-}
1261-
1262-tt.xref, a tt {
1263- background-color: transparent;
1264- font-weight: bold;
1265-}
1266-
1267-h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
1268- background-color: transparent;
1269-}
1270-
1271-.viewcode-link {
1272- float: right;
1273-}
1274-
1275-.viewcode-back {
1276- float: right;
1277- font-family: sans-serif;
1278-}
1279-
1280-div.viewcode-block:target {
1281- margin: -1px -10px;
1282- padding: 0 10px;
1283-}
1284-
1285-/* -- math display ---------------------------------------------------------- */
1286-
1287-img.math {
1288- vertical-align: middle;
1289-}
1290-
1291-div.body div.math p {
1292- text-align: center;
1293-}
1294-
1295-span.eqno {
1296- float: right;
1297-}
1298-
1299-/* -- printout stylesheet --------------------------------------------------- */
1300-
1301-@media print {
1302- div.document,
1303- div.documentwrapper,
1304- div.bodywrapper {
1305- margin: 0 !important;
1306- width: 100%;
1307- }
1308-
1309- div.sphinxsidebar,
1310- div.related,
1311- div.footer,
1312- #top-link {
1313- display: none;
1314- }
1315-}
1316\ No newline at end of file
1317
1318=== removed file 'src/postorius/doc/_build/html/_static/comment-bright.png'
1319Binary files src/postorius/doc/_build/html/_static/comment-bright.png 2012-05-29 06:28:56 +0000 and src/postorius/doc/_build/html/_static/comment-bright.png 1970-01-01 00:00:00 +0000 differ
1320=== removed file 'src/postorius/doc/_build/html/_static/comment-close.png'
1321Binary files src/postorius/doc/_build/html/_static/comment-close.png 2012-05-29 06:28:56 +0000 and src/postorius/doc/_build/html/_static/comment-close.png 1970-01-01 00:00:00 +0000 differ
1322=== removed file 'src/postorius/doc/_build/html/_static/comment.png'
1323Binary files src/postorius/doc/_build/html/_static/comment.png 2012-05-29 06:28:56 +0000 and src/postorius/doc/_build/html/_static/comment.png 1970-01-01 00:00:00 +0000 differ
1324=== removed file 'src/postorius/doc/_build/html/_static/default.css'
1325--- src/postorius/doc/_build/html/_static/default.css 2012-03-23 22:54:46 +0000
1326+++ src/postorius/doc/_build/html/_static/default.css 1970-01-01 00:00:00 +0000
1327@@ -1,256 +0,0 @@
1328-/*
1329- * default.css_t
1330- * ~~~~~~~~~~~~~
1331- *
1332- * Sphinx stylesheet -- default theme.
1333- *
1334- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
1335- * :license: BSD, see LICENSE for details.
1336- *
1337- */
1338-
1339-@import url("basic.css");
1340-
1341-/* -- page layout ----------------------------------------------------------- */
1342-
1343-body {
1344- font-family: sans-serif;
1345- font-size: 100%;
1346- background-color: #11303d;
1347- color: #000;
1348- margin: 0;
1349- padding: 0;
1350-}
1351-
1352-div.document {
1353- background-color: #1c4e63;
1354-}
1355-
1356-div.documentwrapper {
1357- float: left;
1358- width: 100%;
1359-}
1360-
1361-div.bodywrapper {
1362- margin: 0 0 0 230px;
1363-}
1364-
1365-div.body {
1366- background-color: #ffffff;
1367- color: #000000;
1368- padding: 0 20px 30px 20px;
1369-}
1370-
1371-div.footer {
1372- color: #ffffff;
1373- width: 100%;
1374- padding: 9px 0 9px 0;
1375- text-align: center;
1376- font-size: 75%;
1377-}
1378-
1379-div.footer a {
1380- color: #ffffff;
1381- text-decoration: underline;
1382-}
1383-
1384-div.related {
1385- background-color: #133f52;
1386- line-height: 30px;
1387- color: #ffffff;
1388-}
1389-
1390-div.related a {
1391- color: #ffffff;
1392-}
1393-
1394-div.sphinxsidebar {
1395-}
1396-
1397-div.sphinxsidebar h3 {
1398- font-family: 'Trebuchet MS', sans-serif;
1399- color: #ffffff;
1400- font-size: 1.4em;
1401- font-weight: normal;
1402- margin: 0;
1403- padding: 0;
1404-}
1405-
1406-div.sphinxsidebar h3 a {
1407- color: #ffffff;
1408-}
1409-
1410-div.sphinxsidebar h4 {
1411- font-family: 'Trebuchet MS', sans-serif;
1412- color: #ffffff;
1413- font-size: 1.3em;
1414- font-weight: normal;
1415- margin: 5px 0 0 0;
1416- padding: 0;
1417-}
1418-
1419-div.sphinxsidebar p {
1420- color: #ffffff;
1421-}
1422-
1423-div.sphinxsidebar p.topless {
1424- margin: 5px 10px 10px 10px;
1425-}
1426-
1427-div.sphinxsidebar ul {
1428- margin: 10px;
1429- padding: 0;
1430- color: #ffffff;
1431-}
1432-
1433-div.sphinxsidebar a {
1434- color: #98dbcc;
1435-}
1436-
1437-div.sphinxsidebar input {
1438- border: 1px solid #98dbcc;
1439- font-family: sans-serif;
1440- font-size: 1em;
1441-}
1442-
1443-
1444-
1445-/* -- hyperlink styles ------------------------------------------------------ */
1446-
1447-a {
1448- color: #355f7c;
1449- text-decoration: none;
1450-}
1451-
1452-a:visited {
1453- color: #355f7c;
1454- text-decoration: none;
1455-}
1456-
1457-a:hover {
1458- text-decoration: underline;
1459-}
1460-
1461-
1462-
1463-/* -- body styles ----------------------------------------------------------- */
1464-
1465-div.body h1,
1466-div.body h2,
1467-div.body h3,
1468-div.body h4,
1469-div.body h5,
1470-div.body h6 {
1471- font-family: 'Trebuchet MS', sans-serif;
1472- background-color: #f2f2f2;
1473- font-weight: normal;
1474- color: #20435c;
1475- border-bottom: 1px solid #ccc;
1476- margin: 20px -20px 10px -20px;
1477- padding: 3px 0 3px 10px;
1478-}
1479-
1480-div.body h1 { margin-top: 0; font-size: 200%; }
1481-div.body h2 { font-size: 160%; }
1482-div.body h3 { font-size: 140%; }
1483-div.body h4 { font-size: 120%; }
1484-div.body h5 { font-size: 110%; }
1485-div.body h6 { font-size: 100%; }
1486-
1487-a.headerlink {
1488- color: #c60f0f;
1489- font-size: 0.8em;
1490- padding: 0 4px 0 4px;
1491- text-decoration: none;
1492-}
1493-
1494-a.headerlink:hover {
1495- background-color: #c60f0f;
1496- color: white;
1497-}
1498-
1499-div.body p, div.body dd, div.body li {
1500- text-align: justify;
1501- line-height: 130%;
1502-}
1503-
1504-div.admonition p.admonition-title + p {
1505- display: inline;
1506-}
1507-
1508-div.admonition p {
1509- margin-bottom: 5px;
1510-}
1511-
1512-div.admonition pre {
1513- margin-bottom: 5px;
1514-}
1515-
1516-div.admonition ul, div.admonition ol {
1517- margin-bottom: 5px;
1518-}
1519-
1520-div.note {
1521- background-color: #eee;
1522- border: 1px solid #ccc;
1523-}
1524-
1525-div.seealso {
1526- background-color: #ffc;
1527- border: 1px solid #ff6;
1528-}
1529-
1530-div.topic {
1531- background-color: #eee;
1532-}
1533-
1534-div.warning {
1535- background-color: #ffe4e4;
1536- border: 1px solid #f66;
1537-}
1538-
1539-p.admonition-title {
1540- display: inline;
1541-}
1542-
1543-p.admonition-title:after {
1544- content: ":";
1545-}
1546-
1547-pre {
1548- padding: 5px;
1549- background-color: #eeffcc;
1550- color: #333333;
1551- line-height: 120%;
1552- border: 1px solid #ac9;
1553- border-left: none;
1554- border-right: none;
1555-}
1556-
1557-tt {
1558- background-color: #ecf0f3;
1559- padding: 0 1px 0 1px;
1560- font-size: 0.95em;
1561-}
1562-
1563-th {
1564- background-color: #ede;
1565-}
1566-
1567-.warning tt {
1568- background: #efc2c2;
1569-}
1570-
1571-.note tt {
1572- background: #d6d6d6;
1573-}
1574-
1575-.viewcode-back {
1576- font-family: sans-serif;
1577-}
1578-
1579-div.viewcode-block:target {
1580- background-color: #f4debf;
1581- border-top: 1px solid #ac9;
1582- border-bottom: 1px solid #ac9;
1583-}
1584\ No newline at end of file
1585
1586=== removed file 'src/postorius/doc/_build/html/_static/doctools.js'
1587--- src/postorius/doc/_build/html/_static/doctools.js 2012-05-29 06:28:56 +0000
1588+++ src/postorius/doc/_build/html/_static/doctools.js 1970-01-01 00:00:00 +0000
1589@@ -1,247 +0,0 @@
1590-/*
1591- * doctools.js
1592- * ~~~~~~~~~~~
1593- *
1594- * Sphinx JavaScript utilities for all documentation.
1595- *
1596- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
1597- * :license: BSD, see LICENSE for details.
1598- *
1599- */
1600-
1601-/**
1602- * select a different prefix for underscore
1603- */
1604-$u = _.noConflict();
1605-
1606-/**
1607- * make the code below compatible with browsers without
1608- * an installed firebug like debugger
1609-if (!window.console || !console.firebug) {
1610- var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
1611- "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
1612- "profile", "profileEnd"];
1613- window.console = {};
1614- for (var i = 0; i < names.length; ++i)
1615- window.console[names[i]] = function() {};
1616-}
1617- */
1618-
1619-/**
1620- * small helper function to urldecode strings
1621- */
1622-jQuery.urldecode = function(x) {
1623- return decodeURIComponent(x).replace(/\+/g, ' ');
1624-}
1625-
1626-/**
1627- * small helper function to urlencode strings
1628- */
1629-jQuery.urlencode = encodeURIComponent;
1630-
1631-/**
1632- * This function returns the parsed url parameters of the
1633- * current request. Multiple values per key are supported,
1634- * it will always return arrays of strings for the value parts.
1635- */
1636-jQuery.getQueryParameters = function(s) {
1637- if (typeof s == 'undefined')
1638- s = document.location.search;
1639- var parts = s.substr(s.indexOf('?') + 1).split('&');
1640- var result = {};
1641- for (var i = 0; i < parts.length; i++) {
1642- var tmp = parts[i].split('=', 2);
1643- var key = jQuery.urldecode(tmp[0]);
1644- var value = jQuery.urldecode(tmp[1]);
1645- if (key in result)
1646- result[key].push(value);
1647- else
1648- result[key] = [value];
1649- }
1650- return result;
1651-};
1652-
1653-/**
1654- * small function to check if an array contains
1655- * a given item.
1656- */
1657-jQuery.contains = function(arr, item) {
1658- for (var i = 0; i < arr.length; i++) {
1659- if (arr[i] == item)
1660- return true;
1661- }
1662- return false;
1663-};
1664-
1665-/**
1666- * highlight a given string on a jquery object by wrapping it in
1667- * span elements with the given class name.
1668- */
1669-jQuery.fn.highlightText = function(text, className) {
1670- function highlight(node) {
1671- if (node.nodeType == 3) {
1672- var val = node.nodeValue;
1673- var pos = val.toLowerCase().indexOf(text);
1674- if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
1675- var span = document.createElement("span");
1676- span.className = className;
1677- span.appendChild(document.createTextNode(val.substr(pos, text.length)));
1678- node.parentNode.insertBefore(span, node.parentNode.insertBefore(
1679- document.createTextNode(val.substr(pos + text.length)),
1680- node.nextSibling));
1681- node.nodeValue = val.substr(0, pos);
1682- }
1683- }
1684- else if (!jQuery(node).is("button, select, textarea")) {
1685- jQuery.each(node.childNodes, function() {
1686- highlight(this);
1687- });
1688- }
1689- }
1690- return this.each(function() {
1691- highlight(this);
1692- });
1693-};
1694-
1695-/**
1696- * Small JavaScript module for the documentation.
1697- */
1698-var Documentation = {
1699-
1700- init : function() {
1701- this.fixFirefoxAnchorBug();
1702- this.highlightSearchWords();
1703- this.initIndexTable();
1704- },
1705-
1706- /**
1707- * i18n support
1708- */
1709- TRANSLATIONS : {},
1710- PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
1711- LOCALE : 'unknown',
1712-
1713- // gettext and ngettext don't access this so that the functions
1714- // can safely bound to a different name (_ = Documentation.gettext)
1715- gettext : function(string) {
1716- var translated = Documentation.TRANSLATIONS[string];
1717- if (typeof translated == 'undefined')
1718- return string;
1719- return (typeof translated == 'string') ? translated : translated[0];
1720- },
1721-
1722- ngettext : function(singular, plural, n) {
1723- var translated = Documentation.TRANSLATIONS[singular];
1724- if (typeof translated == 'undefined')
1725- return (n == 1) ? singular : plural;
1726- return translated[Documentation.PLURALEXPR(n)];
1727- },
1728-
1729- addTranslations : function(catalog) {
1730- for (var key in catalog.messages)
1731- this.TRANSLATIONS[key] = catalog.messages[key];
1732- this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
1733- this.LOCALE = catalog.locale;
1734- },
1735-
1736- /**
1737- * add context elements like header anchor links
1738- */
1739- addContextElements : function() {
1740- $('div[id] > :header:first').each(function() {
1741- $('<a class="headerlink">\u00B6</a>').
1742- attr('href', '#' + this.id).
1743- attr('title', _('Permalink to this headline')).
1744- appendTo(this);
1745- });
1746- $('dt[id]').each(function() {
1747- $('<a class="headerlink">\u00B6</a>').
1748- attr('href', '#' + this.id).
1749- attr('title', _('Permalink to this definition')).
1750- appendTo(this);
1751- });
1752- },
1753-
1754- /**
1755- * workaround a firefox stupidity
1756- */
1757- fixFirefoxAnchorBug : function() {
1758- if (document.location.hash && $.browser.mozilla)
1759- window.setTimeout(function() {
1760- document.location.href += '';
1761- }, 10);
1762- },
1763-
1764- /**
1765- * highlight the search words provided in the url in the text
1766- */
1767- highlightSearchWords : function() {
1768- var params = $.getQueryParameters();
1769- var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
1770- if (terms.length) {
1771- var body = $('div.body');
1772- window.setTimeout(function() {
1773- $.each(terms, function() {
1774- body.highlightText(this.toLowerCase(), 'highlighted');
1775- });
1776- }, 10);
1777- $('<p class="highlight-link"><a href="javascript:Documentation.' +
1778- 'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
1779- .appendTo($('#searchbox'));
1780- }
1781- },
1782-
1783- /**
1784- * init the domain index toggle buttons
1785- */
1786- initIndexTable : function() {
1787- var togglers = $('img.toggler').click(function() {
1788- var src = $(this).attr('src');
1789- var idnum = $(this).attr('id').substr(7);
1790- $('tr.cg-' + idnum).toggle();
1791- if (src.substr(-9) == 'minus.png')
1792- $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
1793- else
1794- $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
1795- }).css('display', '');
1796- if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
1797- togglers.click();
1798- }
1799- },
1800-
1801- /**
1802- * helper function to hide the search marks again
1803- */
1804- hideSearchWords : function() {
1805- $('#searchbox .highlight-link').fadeOut(300);
1806- $('span.highlighted').removeClass('highlighted');
1807- },
1808-
1809- /**
1810- * make the url absolute
1811- */
1812- makeURL : function(relativeURL) {
1813- return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
1814- },
1815-
1816- /**
1817- * get the current relative url
1818- */
1819- getCurrentURL : function() {
1820- var path = document.location.pathname;
1821- var parts = path.split(/\//);
1822- $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
1823- if (this == '..')
1824- parts.pop();
1825- });
1826- var url = parts.join('/');
1827- return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
1828- }
1829-};
1830-
1831-// quick alias for translations
1832-_ = Documentation.gettext;
1833-
1834-$(document).ready(function() {
1835- Documentation.init();
1836-});
1837
1838=== removed file 'src/postorius/doc/_build/html/_static/down-pressed.png'
1839Binary files src/postorius/doc/_build/html/_static/down-pressed.png 2012-05-29 06:28:56 +0000 and src/postorius/doc/_build/html/_static/down-pressed.png 1970-01-01 00:00:00 +0000 differ
1840=== removed file 'src/postorius/doc/_build/html/_static/down.png'
1841Binary files src/postorius/doc/_build/html/_static/down.png 2012-05-29 06:28:56 +0000 and src/postorius/doc/_build/html/_static/down.png 1970-01-01 00:00:00 +0000 differ
1842=== removed file 'src/postorius/doc/_build/html/_static/file.png'
1843Binary files src/postorius/doc/_build/html/_static/file.png 2011-08-17 16:19:11 +0000 and src/postorius/doc/_build/html/_static/file.png 1970-01-01 00:00:00 +0000 differ
1844=== removed file 'src/postorius/doc/_build/html/_static/jquery.js'
1845--- src/postorius/doc/_build/html/_static/jquery.js 2012-03-23 22:54:46 +0000
1846+++ src/postorius/doc/_build/html/_static/jquery.js 1970-01-01 00:00:00 +0000
1847@@ -1,154 +0,0 @@
1848-/*!
1849- * jQuery JavaScript Library v1.4.2
1850- * http://jquery.com/
1851- *
1852- * Copyright 2010, John Resig
1853- * Dual licensed under the MIT or GPL Version 2 licenses.
1854- * http://jquery.org/license
1855- *
1856- * Includes Sizzle.js
1857- * http://sizzlejs.com/
1858- * Copyright 2010, The Dojo Foundation
1859- * Released under the MIT, BSD, and GPL Licenses.
1860- *
1861- * Date: Sat Feb 13 22:33:48 2010 -0500
1862- */
1863-(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
1864-e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
1865-j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
1866-"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
1867-true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
1868-Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
1869-(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
1870-a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
1871-"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
1872-function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
1873-c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
1874-L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
1875-"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
1876-a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
1877-d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
1878-a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
1879-!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
1880-true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
1881-var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
1882-parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
1883-false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
1884-s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
1885-applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
1886-else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
1887-a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
1888-w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
1889-cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
1890-i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
1891-" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
1892-this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
1893-e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
1894-c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
1895-a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
1896-function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
1897-k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
1898-C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
1899-null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
1900-e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
1901-f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
1902-if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
1903-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
1904-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
1905-"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
1906-a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
1907-isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
1908-{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
1909-if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
1910-e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
1911-"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
1912-d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
1913-!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
1914-toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
1915-u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
1916-function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
1917-if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
1918-e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
1919-t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
1920-g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
1921-for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
1922-1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
1923-CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
1924-relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
1925-l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
1926-h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
1927-CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
1928-g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
1929-text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
1930-setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
1931-h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
1932-m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
1933-"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
1934-h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
1935-!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
1936-h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
1937-q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
1938-if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
1939-(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
1940-function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
1941-gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
1942-c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
1943-{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
1944-"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
1945-d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
1946-a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1947-1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
1948-a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
1949-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
1950-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
1951-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
1952-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
1953-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
1954-""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
1955-this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
1956-u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1957-1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
1958-return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
1959-""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
1960-c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
1961-c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
1962-function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
1963-Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
1964-"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
1965-a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
1966-a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
1967-"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
1968-serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
1969-function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
1970-global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
1971-e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
1972-"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
1973-false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
1974-false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
1975-c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
1976-d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
1977-g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1978-1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
1979-"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
1980-if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
1981-this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
1982-"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
1983-animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
1984-j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
1985-this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
1986-"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
1987-c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
1988-this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
1989-this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
1990-e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
1991-c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
1992-function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
1993-this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
1994-k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
1995-f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
1996-a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
1997-c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
1998-d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
1999-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
2000-"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
2001-e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
2002
2003=== removed file 'src/postorius/doc/_build/html/_static/minus.png'
2004Binary files src/postorius/doc/_build/html/_static/minus.png 2011-08-17 16:19:11 +0000 and src/postorius/doc/_build/html/_static/minus.png 1970-01-01 00:00:00 +0000 differ
2005=== removed file 'src/postorius/doc/_build/html/_static/plus.png'
2006Binary files src/postorius/doc/_build/html/_static/plus.png 2011-08-17 16:19:11 +0000 and src/postorius/doc/_build/html/_static/plus.png 1970-01-01 00:00:00 +0000 differ
2007=== removed file 'src/postorius/doc/_build/html/_static/pygments.css'
2008--- src/postorius/doc/_build/html/_static/pygments.css 2012-03-23 22:54:46 +0000
2009+++ src/postorius/doc/_build/html/_static/pygments.css 1970-01-01 00:00:00 +0000
2010@@ -1,62 +0,0 @@
2011-.highlight .hll { background-color: #ffffcc }
2012-.highlight { background: #eeffcc; }
2013-.highlight .c { color: #408090; font-style: italic } /* Comment */
2014-.highlight .err { border: 1px solid #FF0000 } /* Error */
2015-.highlight .k { color: #007020; font-weight: bold } /* Keyword */
2016-.highlight .o { color: #666666 } /* Operator */
2017-.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
2018-.highlight .cp { color: #007020 } /* Comment.Preproc */
2019-.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
2020-.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
2021-.highlight .gd { color: #A00000 } /* Generic.Deleted */
2022-.highlight .ge { font-style: italic } /* Generic.Emph */
2023-.highlight .gr { color: #FF0000 } /* Generic.Error */
2024-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
2025-.highlight .gi { color: #00A000 } /* Generic.Inserted */
2026-.highlight .go { color: #303030 } /* Generic.Output */
2027-.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
2028-.highlight .gs { font-weight: bold } /* Generic.Strong */
2029-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
2030-.highlight .gt { color: #0040D0 } /* Generic.Traceback */
2031-.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
2032-.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
2033-.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
2034-.highlight .kp { color: #007020 } /* Keyword.Pseudo */
2035-.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
2036-.highlight .kt { color: #902000 } /* Keyword.Type */
2037-.highlight .m { color: #208050 } /* Literal.Number */
2038-.highlight .s { color: #4070a0 } /* Literal.String */
2039-.highlight .na { color: #4070a0 } /* Name.Attribute */
2040-.highlight .nb { color: #007020 } /* Name.Builtin */
2041-.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
2042-.highlight .no { color: #60add5 } /* Name.Constant */
2043-.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
2044-.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
2045-.highlight .ne { color: #007020 } /* Name.Exception */
2046-.highlight .nf { color: #06287e } /* Name.Function */
2047-.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
2048-.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
2049-.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
2050-.highlight .nv { color: #bb60d5 } /* Name.Variable */
2051-.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
2052-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
2053-.highlight .mf { color: #208050 } /* Literal.Number.Float */
2054-.highlight .mh { color: #208050 } /* Literal.Number.Hex */
2055-.highlight .mi { color: #208050 } /* Literal.Number.Integer */
2056-.highlight .mo { color: #208050 } /* Literal.Number.Oct */
2057-.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
2058-.highlight .sc { color: #4070a0 } /* Literal.String.Char */
2059-.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
2060-.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
2061-.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
2062-.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
2063-.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
2064-.highlight .sx { color: #c65d09 } /* Literal.String.Other */
2065-.highlight .sr { color: #235388 } /* Literal.String.Regex */
2066-.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
2067-.highlight .ss { color: #517918 } /* Literal.String.Symbol */
2068-.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
2069-.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
2070-.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
2071-.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
2072-.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
2073\ No newline at end of file
2074
2075=== removed file 'src/postorius/doc/_build/html/_static/searchtools.js'
2076--- src/postorius/doc/_build/html/_static/searchtools.js 2012-05-29 06:28:56 +0000
2077+++ src/postorius/doc/_build/html/_static/searchtools.js 1970-01-01 00:00:00 +0000
2078@@ -1,560 +0,0 @@
2079-/*
2080- * searchtools.js_t
2081- * ~~~~~~~~~~~~~~~~
2082- *
2083- * Sphinx JavaScript utilties for the full-text search.
2084- *
2085- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
2086- * :license: BSD, see LICENSE for details.
2087- *
2088- */
2089-
2090-/**
2091- * helper function to return a node containing the
2092- * search summary for a given text. keywords is a list
2093- * of stemmed words, hlwords is the list of normal, unstemmed
2094- * words. the first one is used to find the occurance, the
2095- * latter for highlighting it.
2096- */
2097-
2098-jQuery.makeSearchSummary = function(text, keywords, hlwords) {
2099- var textLower = text.toLowerCase();
2100- var start = 0;
2101- $.each(keywords, function() {
2102- var i = textLower.indexOf(this.toLowerCase());
2103- if (i > -1)
2104- start = i;
2105- });
2106- start = Math.max(start - 120, 0);
2107- var excerpt = ((start > 0) ? '...' : '') +
2108- $.trim(text.substr(start, 240)) +
2109- ((start + 240 - text.length) ? '...' : '');
2110- var rv = $('<div class="context"></div>').text(excerpt);
2111- $.each(hlwords, function() {
2112- rv = rv.highlightText(this, 'highlighted');
2113- });
2114- return rv;
2115-}
2116-
2117-
2118-/**
2119- * Porter Stemmer
2120- */
2121-var Stemmer = function() {
2122-
2123- var step2list = {
2124- ational: 'ate',
2125- tional: 'tion',
2126- enci: 'ence',
2127- anci: 'ance',
2128- izer: 'ize',
2129- bli: 'ble',
2130- alli: 'al',
2131- entli: 'ent',
2132- eli: 'e',
2133- ousli: 'ous',
2134- ization: 'ize',
2135- ation: 'ate',
2136- ator: 'ate',
2137- alism: 'al',
2138- iveness: 'ive',
2139- fulness: 'ful',
2140- ousness: 'ous',
2141- aliti: 'al',
2142- iviti: 'ive',
2143- biliti: 'ble',
2144- logi: 'log'
2145- };
2146-
2147- var step3list = {
2148- icate: 'ic',
2149- ative: '',
2150- alize: 'al',
2151- iciti: 'ic',
2152- ical: 'ic',
2153- ful: '',
2154- ness: ''
2155- };
2156-
2157- var c = "[^aeiou]"; // consonant
2158- var v = "[aeiouy]"; // vowel
2159- var C = c + "[^aeiouy]*"; // consonant sequence
2160- var V = v + "[aeiou]*"; // vowel sequence
2161-
2162- var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
2163- var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
2164- var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
2165- var s_v = "^(" + C + ")?" + v; // vowel in stem
2166-
2167- this.stemWord = function (w) {
2168- var stem;
2169- var suffix;
2170- var firstch;
2171- var origword = w;
2172-
2173- if (w.length < 3)
2174- return w;
2175-
2176- var re;
2177- var re2;
2178- var re3;
2179- var re4;
2180-
2181- firstch = w.substr(0,1);
2182- if (firstch == "y")
2183- w = firstch.toUpperCase() + w.substr(1);
2184-
2185- // Step 1a
2186- re = /^(.+?)(ss|i)es$/;
2187- re2 = /^(.+?)([^s])s$/;
2188-
2189- if (re.test(w))
2190- w = w.replace(re,"$1$2");
2191- else if (re2.test(w))
2192- w = w.replace(re2,"$1$2");
2193-
2194- // Step 1b
2195- re = /^(.+?)eed$/;
2196- re2 = /^(.+?)(ed|ing)$/;
2197- if (re.test(w)) {
2198- var fp = re.exec(w);
2199- re = new RegExp(mgr0);
2200- if (re.test(fp[1])) {
2201- re = /.$/;
2202- w = w.replace(re,"");
2203- }
2204- }
2205- else if (re2.test(w)) {
2206- var fp = re2.exec(w);
2207- stem = fp[1];
2208- re2 = new RegExp(s_v);
2209- if (re2.test(stem)) {
2210- w = stem;
2211- re2 = /(at|bl|iz)$/;
2212- re3 = new RegExp("([^aeiouylsz])\\1$");
2213- re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
2214- if (re2.test(w))
2215- w = w + "e";
2216- else if (re3.test(w)) {
2217- re = /.$/;
2218- w = w.replace(re,"");
2219- }
2220- else if (re4.test(w))
2221- w = w + "e";
2222- }
2223- }
2224-
2225- // Step 1c
2226- re = /^(.+?)y$/;
2227- if (re.test(w)) {
2228- var fp = re.exec(w);
2229- stem = fp[1];
2230- re = new RegExp(s_v);
2231- if (re.test(stem))
2232- w = stem + "i";
2233- }
2234-
2235- // Step 2
2236- re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
2237- if (re.test(w)) {
2238- var fp = re.exec(w);
2239- stem = fp[1];
2240- suffix = fp[2];
2241- re = new RegExp(mgr0);
2242- if (re.test(stem))
2243- w = stem + step2list[suffix];
2244- }
2245-
2246- // Step 3
2247- re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
2248- if (re.test(w)) {
2249- var fp = re.exec(w);
2250- stem = fp[1];
2251- suffix = fp[2];
2252- re = new RegExp(mgr0);
2253- if (re.test(stem))
2254- w = stem + step3list[suffix];
2255- }
2256-
2257- // Step 4
2258- re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
2259- re2 = /^(.+?)(s|t)(ion)$/;
2260- if (re.test(w)) {
2261- var fp = re.exec(w);
2262- stem = fp[1];
2263- re = new RegExp(mgr1);
2264- if (re.test(stem))
2265- w = stem;
2266- }
2267- else if (re2.test(w)) {
2268- var fp = re2.exec(w);
2269- stem = fp[1] + fp[2];
2270- re2 = new RegExp(mgr1);
2271- if (re2.test(stem))
2272- w = stem;
2273- }
2274-
2275- // Step 5
2276- re = /^(.+?)e$/;
2277- if (re.test(w)) {
2278- var fp = re.exec(w);
2279- stem = fp[1];
2280- re = new RegExp(mgr1);
2281- re2 = new RegExp(meq1);
2282- re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
2283- if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
2284- w = stem;
2285- }
2286- re = /ll$/;
2287- re2 = new RegExp(mgr1);
2288- if (re.test(w) && re2.test(w)) {
2289- re = /.$/;
2290- w = w.replace(re,"");
2291- }
2292-
2293- // and turn initial Y back to y
2294- if (firstch == "y")
2295- w = firstch.toLowerCase() + w.substr(1);
2296- return w;
2297- }
2298-}
2299-
2300-
2301-/**
2302- * Search Module
2303- */
2304-var Search = {
2305-
2306- _index : null,
2307- _queued_query : null,
2308- _pulse_status : -1,
2309-
2310- init : function() {
2311- var params = $.getQueryParameters();
2312- if (params.q) {
2313- var query = params.q[0];
2314- $('input[name="q"]')[0].value = query;
2315- this.performSearch(query);
2316- }
2317- },
2318-
2319- loadIndex : function(url) {
2320- $.ajax({type: "GET", url: url, data: null, success: null,
2321- dataType: "script", cache: true});
2322- },
2323-
2324- setIndex : function(index) {
2325- var q;
2326- this._index = index;
2327- if ((q = this._queued_query) !== null) {
2328- this._queued_query = null;
2329- Search.query(q);
2330- }
2331- },
2332-
2333- hasIndex : function() {
2334- return this._index !== null;
2335- },
2336-
2337- deferQuery : function(query) {
2338- this._queued_query = query;
2339- },
2340-
2341- stopPulse : function() {
2342- this._pulse_status = 0;
2343- },
2344-
2345- startPulse : function() {
2346- if (this._pulse_status >= 0)
2347- return;
2348- function pulse() {
2349- Search._pulse_status = (Search._pulse_status + 1) % 4;
2350- var dotString = '';
2351- for (var i = 0; i < Search._pulse_status; i++)
2352- dotString += '.';
2353- Search.dots.text(dotString);
2354- if (Search._pulse_status > -1)
2355- window.setTimeout(pulse, 500);
2356- };
2357- pulse();
2358- },
2359-
2360- /**
2361- * perform a search for something
2362- */
2363- performSearch : function(query) {
2364- // create the required interface elements
2365- this.out = $('#search-results');
2366- this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
2367- this.dots = $('<span></span>').appendTo(this.title);
2368- this.status = $('<p style="display: none"></p>').appendTo(this.out);
2369- this.output = $('<ul class="search"/>').appendTo(this.out);
2370-
2371- $('#search-progress').text(_('Preparing search...'));
2372- this.startPulse();
2373-
2374- // index already loaded, the browser was quick!
2375- if (this.hasIndex())
2376- this.query(query);
2377- else
2378- this.deferQuery(query);
2379- },
2380-
2381- query : function(query) {
2382- var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
2383-
2384- // Stem the searchterms and add them to the correct list
2385- var stemmer = new Stemmer();
2386- var searchterms = [];
2387- var excluded = [];
2388- var hlterms = [];
2389- var tmp = query.split(/\s+/);
2390- var objectterms = [];
2391- for (var i = 0; i < tmp.length; i++) {
2392- if (tmp[i] != "") {
2393- objectterms.push(tmp[i].toLowerCase());
2394- }
2395-
2396- if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
2397- tmp[i] == "") {
2398- // skip this "word"
2399- continue;
2400- }
2401- // stem the word
2402- var word = stemmer.stemWord(tmp[i]).toLowerCase();
2403- // select the correct list
2404- if (word[0] == '-') {
2405- var toAppend = excluded;
2406- word = word.substr(1);
2407- }
2408- else {
2409- var toAppend = searchterms;
2410- hlterms.push(tmp[i].toLowerCase());
2411- }
2412- // only add if not already in the list
2413- if (!$.contains(toAppend, word))
2414- toAppend.push(word);
2415- };
2416- var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
2417-
2418- // console.debug('SEARCH: searching for:');
2419- // console.info('required: ', searchterms);
2420- // console.info('excluded: ', excluded);
2421-
2422- // prepare search
2423- var filenames = this._index.filenames;
2424- var titles = this._index.titles;
2425- var terms = this._index.terms;
2426- var fileMap = {};
2427- var files = null;
2428- // different result priorities
2429- var importantResults = [];
2430- var objectResults = [];
2431- var regularResults = [];
2432- var unimportantResults = [];
2433- $('#search-progress').empty();
2434-
2435- // lookup as object
2436- for (var i = 0; i < objectterms.length; i++) {
2437- var others = [].concat(objectterms.slice(0,i),
2438- objectterms.slice(i+1, objectterms.length))
2439- var results = this.performObjectSearch(objectterms[i], others);
2440- // Assume first word is most likely to be the object,
2441- // other words more likely to be in description.
2442- // Therefore put matches for earlier words first.
2443- // (Results are eventually used in reverse order).
2444- objectResults = results[0].concat(objectResults);
2445- importantResults = results[1].concat(importantResults);
2446- unimportantResults = results[2].concat(unimportantResults);
2447- }
2448-
2449- // perform the search on the required terms
2450- for (var i = 0; i < searchterms.length; i++) {
2451- var word = searchterms[i];
2452- // no match but word was a required one
2453- if ((files = terms[word]) == null)
2454- break;
2455- if (files.length == undefined) {
2456- files = [files];
2457- }
2458- // create the mapping
2459- for (var j = 0; j < files.length; j++) {
2460- var file = files[j];
2461- if (file in fileMap)
2462- fileMap[file].push(word);
2463- else
2464- fileMap[file] = [word];
2465- }
2466- }
2467-
2468- // now check if the files don't contain excluded terms
2469- for (var file in fileMap) {
2470- var valid = true;
2471-
2472- // check if all requirements are matched
2473- if (fileMap[file].length != searchterms.length)
2474- continue;
2475-
2476- // ensure that none of the excluded terms is in the
2477- // search result.
2478- for (var i = 0; i < excluded.length; i++) {
2479- if (terms[excluded[i]] == file ||
2480- $.contains(terms[excluded[i]] || [], file)) {
2481- valid = false;
2482- break;
2483- }
2484- }
2485-
2486- // if we have still a valid result we can add it
2487- // to the result list
2488- if (valid)
2489- regularResults.push([filenames[file], titles[file], '', null]);
2490- }
2491-
2492- // delete unused variables in order to not waste
2493- // memory until list is retrieved completely
2494- delete filenames, titles, terms;
2495-
2496- // now sort the regular results descending by title
2497- regularResults.sort(function(a, b) {
2498- var left = a[1].toLowerCase();
2499- var right = b[1].toLowerCase();
2500- return (left > right) ? -1 : ((left < right) ? 1 : 0);
2501- });
2502-
2503- // combine all results
2504- var results = unimportantResults.concat(regularResults)
2505- .concat(objectResults).concat(importantResults);
2506-
2507- // print the results
2508- var resultCount = results.length;
2509- function displayNextItem() {
2510- // results left, load the summary and display it
2511- if (results.length) {
2512- var item = results.pop();
2513- var listItem = $('<li style="display:none"></li>');
2514- if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
2515- // dirhtml builder
2516- var dirname = item[0] + '/';
2517- if (dirname.match(/\/index\/$/)) {
2518- dirname = dirname.substring(0, dirname.length-6);
2519- } else if (dirname == 'index/') {
2520- dirname = '';
2521- }
2522- listItem.append($('<a/>').attr('href',
2523- DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
2524- highlightstring + item[2]).html(item[1]));
2525- } else {
2526- // normal html builders
2527- listItem.append($('<a/>').attr('href',
2528- item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
2529- highlightstring + item[2]).html(item[1]));
2530- }
2531- if (item[3]) {
2532- listItem.append($('<span> (' + item[3] + ')</span>'));
2533- Search.output.append(listItem);
2534- listItem.slideDown(5, function() {
2535- displayNextItem();
2536- });
2537- } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
2538- $.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
2539- item[0] + '.txt', function(data) {
2540- if (data != '') {
2541- listItem.append($.makeSearchSummary(data, searchterms, hlterms));
2542- Search.output.append(listItem);
2543- }
2544- listItem.slideDown(5, function() {
2545- displayNextItem();
2546- });
2547- }, "text");
2548- } else {
2549- // no source available, just display title
2550- Search.output.append(listItem);
2551- listItem.slideDown(5, function() {
2552- displayNextItem();
2553- });
2554- }
2555- }
2556- // search finished, update title and status message
2557- else {
2558- Search.stopPulse();
2559- Search.title.text(_('Search Results'));
2560- if (!resultCount)
2561- Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
2562- else
2563- Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
2564- Search.status.fadeIn(500);
2565- }
2566- }
2567- displayNextItem();
2568- },
2569-
2570- performObjectSearch : function(object, otherterms) {
2571- var filenames = this._index.filenames;
2572- var objects = this._index.objects;
2573- var objnames = this._index.objnames;
2574- var titles = this._index.titles;
2575-
2576- var importantResults = [];
2577- var objectResults = [];
2578- var unimportantResults = [];
2579-
2580- for (var prefix in objects) {
2581- for (var name in objects[prefix]) {
2582- var fullname = (prefix ? prefix + '.' : '') + name;
2583- if (fullname.toLowerCase().indexOf(object) > -1) {
2584- var match = objects[prefix][name];
2585- var objname = objnames[match[1]][2];
2586- var title = titles[match[0]];
2587- // If more than one term searched for, we require other words to be
2588- // found in the name/title/description
2589- if (otherterms.length > 0) {
2590- var haystack = (prefix + ' ' + name + ' ' +
2591- objname + ' ' + title).toLowerCase();
2592- var allfound = true;
2593- for (var i = 0; i < otherterms.length; i++) {
2594- if (haystack.indexOf(otherterms[i]) == -1) {
2595- allfound = false;
2596- break;
2597- }
2598- }
2599- if (!allfound) {
2600- continue;
2601- }
2602- }
2603- var descr = objname + _(', in ') + title;
2604- anchor = match[3];
2605- if (anchor == '')
2606- anchor = fullname;
2607- else if (anchor == '-')
2608- anchor = objnames[match[1]][1] + '-' + fullname;
2609- result = [filenames[match[0]], fullname, '#'+anchor, descr];
2610- switch (match[2]) {
2611- case 1: objectResults.push(result); break;
2612- case 0: importantResults.push(result); break;
2613- case 2: unimportantResults.push(result); break;
2614- }
2615- }
2616- }
2617- }
2618-
2619- // sort results descending
2620- objectResults.sort(function(a, b) {
2621- return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
2622- });
2623-
2624- importantResults.sort(function(a, b) {
2625- return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
2626- });
2627-
2628- unimportantResults.sort(function(a, b) {
2629- return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
2630- });
2631-
2632- return [importantResults, objectResults, unimportantResults]
2633- }
2634-}
2635-
2636-$(document).ready(function() {
2637- Search.init();
2638-});
2639\ No newline at end of file
2640
2641=== removed file 'src/postorius/doc/_build/html/_static/sidebar.js'
2642--- src/postorius/doc/_build/html/_static/sidebar.js 2012-05-29 06:28:56 +0000
2643+++ src/postorius/doc/_build/html/_static/sidebar.js 1970-01-01 00:00:00 +0000
2644@@ -1,151 +0,0 @@
2645-/*
2646- * sidebar.js
2647- * ~~~~~~~~~~
2648- *
2649- * This script makes the Sphinx sidebar collapsible.
2650- *
2651- * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
2652- * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
2653- * used to collapse and expand the sidebar.
2654- *
2655- * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
2656- * and the width of the sidebar and the margin-left of the document
2657- * are decreased. When the sidebar is expanded the opposite happens.
2658- * This script saves a per-browser/per-session cookie used to
2659- * remember the position of the sidebar among the pages.
2660- * Once the browser is closed the cookie is deleted and the position
2661- * reset to the default (expanded).
2662- *
2663- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
2664- * :license: BSD, see LICENSE for details.
2665- *
2666- */
2667-
2668-$(function() {
2669- // global elements used by the functions.
2670- // the 'sidebarbutton' element is defined as global after its
2671- // creation, in the add_sidebar_button function
2672- var bodywrapper = $('.bodywrapper');
2673- var sidebar = $('.sphinxsidebar');
2674- var sidebarwrapper = $('.sphinxsidebarwrapper');
2675-
2676- // for some reason, the document has no sidebar; do not run into errors
2677- if (!sidebar.length) return;
2678-
2679- // original margin-left of the bodywrapper and width of the sidebar
2680- // with the sidebar expanded
2681- var bw_margin_expanded = bodywrapper.css('margin-left');
2682- var ssb_width_expanded = sidebar.width();
2683-
2684- // margin-left of the bodywrapper and width of the sidebar
2685- // with the sidebar collapsed
2686- var bw_margin_collapsed = '.8em';
2687- var ssb_width_collapsed = '.8em';
2688-
2689- // colors used by the current theme
2690- var dark_color = $('.related').css('background-color');
2691- var light_color = $('.document').css('background-color');
2692-
2693- function sidebar_is_collapsed() {
2694- return sidebarwrapper.is(':not(:visible)');
2695- }
2696-
2697- function toggle_sidebar() {
2698- if (sidebar_is_collapsed())
2699- expand_sidebar();
2700- else
2701- collapse_sidebar();
2702- }
2703-
2704- function collapse_sidebar() {
2705- sidebarwrapper.hide();
2706- sidebar.css('width', ssb_width_collapsed);
2707- bodywrapper.css('margin-left', bw_margin_collapsed);
2708- sidebarbutton.css({
2709- 'margin-left': '0',
2710- 'height': bodywrapper.height()
2711- });
2712- sidebarbutton.find('span').text('»');
2713- sidebarbutton.attr('title', _('Expand sidebar'));
2714- document.cookie = 'sidebar=collapsed';
2715- }
2716-
2717- function expand_sidebar() {
2718- bodywrapper.css('margin-left', bw_margin_expanded);
2719- sidebar.css('width', ssb_width_expanded);
2720- sidebarwrapper.show();
2721- sidebarbutton.css({
2722- 'margin-left': ssb_width_expanded-12,
2723- 'height': bodywrapper.height()
2724- });
2725- sidebarbutton.find('span').text('«');
2726- sidebarbutton.attr('title', _('Collapse sidebar'));
2727- document.cookie = 'sidebar=expanded';
2728- }
2729-
2730- function add_sidebar_button() {
2731- sidebarwrapper.css({
2732- 'float': 'left',
2733- 'margin-right': '0',
2734- 'width': ssb_width_expanded - 28
2735- });
2736- // create the button
2737- sidebar.append(
2738- '<div id="sidebarbutton"><span>&laquo;</span></div>'
2739- );
2740- var sidebarbutton = $('#sidebarbutton');
2741- light_color = sidebarbutton.css('background-color');
2742- // find the height of the viewport to center the '<<' in the page
2743- var viewport_height;
2744- if (window.innerHeight)
2745- viewport_height = window.innerHeight;
2746- else
2747- viewport_height = $(window).height();
2748- sidebarbutton.find('span').css({
2749- 'display': 'block',
2750- 'margin-top': (viewport_height - sidebar.position().top - 20) / 2
2751- });
2752-
2753- sidebarbutton.click(toggle_sidebar);
2754- sidebarbutton.attr('title', _('Collapse sidebar'));
2755- sidebarbutton.css({
2756- 'color': '#FFFFFF',
2757- 'border-left': '1px solid ' + dark_color,
2758- 'font-size': '1.2em',
2759- 'cursor': 'pointer',
2760- 'height': bodywrapper.height(),
2761- 'padding-top': '1px',
2762- 'margin-left': ssb_width_expanded - 12
2763- });
2764-
2765- sidebarbutton.hover(
2766- function () {
2767- $(this).css('background-color', dark_color);
2768- },
2769- function () {
2770- $(this).css('background-color', light_color);
2771- }
2772- );
2773- }
2774-
2775- function set_position_from_cookie() {
2776- if (!document.cookie)
2777- return;
2778- var items = document.cookie.split(';');
2779- for(var k=0; k<items.length; k++) {
2780- var key_val = items[k].split('=');
2781- var key = key_val[0];
2782- if (key == 'sidebar') {
2783- var value = key_val[1];
2784- if ((value == 'collapsed') && (!sidebar_is_collapsed()))
2785- collapse_sidebar();
2786- else if ((value == 'expanded') && (sidebar_is_collapsed()))
2787- expand_sidebar();
2788- }
2789- }
2790- }
2791-
2792- add_sidebar_button();
2793- var sidebarbutton = $('#sidebarbutton');
2794- set_position_from_cookie();
2795-});
2796
2797=== removed file 'src/postorius/doc/_build/html/_static/underscore.js'
2798--- src/postorius/doc/_build/html/_static/underscore.js 2012-05-29 06:28:56 +0000
2799+++ src/postorius/doc/_build/html/_static/underscore.js 1970-01-01 00:00:00 +0000
2800@@ -1,23 +0,0 @@
2801-// Underscore.js 0.5.5
2802-// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
2803-// Underscore is freely distributable under the terms of the MIT license.
2804-// Portions of Underscore are inspired by or borrowed from Prototype.js,
2805-// Oliver Steele's Functional, and John Resig's Micro-Templating.
2806-// For all details and documentation:
2807-// http://documentcloud.github.com/underscore/
2808-(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
2809-a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
2810-var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
2811-d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
2812-function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
2813-function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
2814-0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
2815-e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
2816-a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
2817-return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
2818-var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
2819-if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
2820-0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
2821-a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
2822-" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
2823-o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();
2824
2825=== removed file 'src/postorius/doc/_build/html/_static/up-pressed.png'
2826Binary files src/postorius/doc/_build/html/_static/up-pressed.png 2012-05-29 06:28:56 +0000 and src/postorius/doc/_build/html/_static/up-pressed.png 1970-01-01 00:00:00 +0000 differ
2827=== removed file 'src/postorius/doc/_build/html/_static/up.png'
2828Binary files src/postorius/doc/_build/html/_static/up.png 2012-05-29 06:28:56 +0000 and src/postorius/doc/_build/html/_static/up.png 1970-01-01 00:00:00 +0000 differ
2829=== removed file 'src/postorius/doc/_build/html/_static/websupport.js'
2830--- src/postorius/doc/_build/html/_static/websupport.js 2012-05-29 06:28:56 +0000
2831+++ src/postorius/doc/_build/html/_static/websupport.js 1970-01-01 00:00:00 +0000
2832@@ -1,808 +0,0 @@
2833-/*
2834- * websupport.js
2835- * ~~~~~~~~~~~~~
2836- *
2837- * sphinx.websupport utilties for all documentation.
2838- *
2839- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
2840- * :license: BSD, see LICENSE for details.
2841- *
2842- */
2843-
2844-(function($) {
2845- $.fn.autogrow = function() {
2846- return this.each(function() {
2847- var textarea = this;
2848-
2849- $.fn.autogrow.resize(textarea);
2850-
2851- $(textarea)
2852- .focus(function() {
2853- textarea.interval = setInterval(function() {
2854- $.fn.autogrow.resize(textarea);
2855- }, 500);
2856- })
2857- .blur(function() {
2858- clearInterval(textarea.interval);
2859- });
2860- });
2861- };
2862-
2863- $.fn.autogrow.resize = function(textarea) {
2864- var lineHeight = parseInt($(textarea).css('line-height'), 10);
2865- var lines = textarea.value.split('\n');
2866- var columns = textarea.cols;
2867- var lineCount = 0;
2868- $.each(lines, function() {
2869- lineCount += Math.ceil(this.length / columns) || 1;
2870- });
2871- var height = lineHeight * (lineCount + 1);
2872- $(textarea).css('height', height);
2873- };
2874-})(jQuery);
2875-
2876-(function($) {
2877- var comp, by;
2878-
2879- function init() {
2880- initEvents();
2881- initComparator();
2882- }
2883-
2884- function initEvents() {
2885- $('a.comment-close').live("click", function(event) {
2886- event.preventDefault();
2887- hide($(this).attr('id').substring(2));
2888- });
2889- $('a.vote').live("click", function(event) {
2890- event.preventDefault();
2891- handleVote($(this));
2892- });
2893- $('a.reply').live("click", function(event) {
2894- event.preventDefault();
2895- openReply($(this).attr('id').substring(2));
2896- });
2897- $('a.close-reply').live("click", function(event) {
2898- event.preventDefault();
2899- closeReply($(this).attr('id').substring(2));
2900- });
2901- $('a.sort-option').live("click", function(event) {
2902- event.preventDefault();
2903- handleReSort($(this));
2904- });
2905- $('a.show-proposal').live("click", function(event) {
2906- event.preventDefault();
2907- showProposal($(this).attr('id').substring(2));
2908- });
2909- $('a.hide-proposal').live("click", function(event) {
2910- event.preventDefault();
2911- hideProposal($(this).attr('id').substring(2));
2912- });
2913- $('a.show-propose-change').live("click", function(event) {
2914- event.preventDefault();
2915- showProposeChange($(this).attr('id').substring(2));
2916- });
2917- $('a.hide-propose-change').live("click", function(event) {
2918- event.preventDefault();
2919- hideProposeChange($(this).attr('id').substring(2));
2920- });
2921- $('a.accept-comment').live("click", function(event) {
2922- event.preventDefault();
2923- acceptComment($(this).attr('id').substring(2));
2924- });
2925- $('a.delete-comment').live("click", function(event) {
2926- event.preventDefault();
2927- deleteComment($(this).attr('id').substring(2));
2928- });
2929- $('a.comment-markup').live("click", function(event) {
2930- event.preventDefault();
2931- toggleCommentMarkupBox($(this).attr('id').substring(2));
2932- });
2933- }
2934-
2935- /**
2936- * Set comp, which is a comparator function used for sorting and
2937- * inserting comments into the list.
2938- */
2939- function setComparator() {
2940- // If the first three letters are "asc", sort in ascending order
2941- // and remove the prefix.
2942- if (by.substring(0,3) == 'asc') {
2943- var i = by.substring(3);
2944- comp = function(a, b) { return a[i] - b[i]; };
2945- } else {
2946- // Otherwise sort in descending order.
2947- comp = function(a, b) { return b[by] - a[by]; };
2948- }
2949-
2950- // Reset link styles and format the selected sort option.
2951- $('a.sel').attr('href', '#').removeClass('sel');
2952- $('a.by' + by).removeAttr('href').addClass('sel');
2953- }
2954-
2955- /**
2956- * Create a comp function. If the user has preferences stored in
2957- * the sortBy cookie, use those, otherwise use the default.
2958- */
2959- function initComparator() {
2960- by = 'rating'; // Default to sort by rating.
2961- // If the sortBy cookie is set, use that instead.
2962- if (document.cookie.length > 0) {
2963- var start = document.cookie.indexOf('sortBy=');
2964- if (start != -1) {
2965- start = start + 7;
2966- var end = document.cookie.indexOf(";", start);
2967- if (end == -1) {
2968- end = document.cookie.length;
2969- by = unescape(document.cookie.substring(start, end));
2970- }
2971- }
2972- }
2973- setComparator();
2974- }
2975-
2976- /**
2977- * Show a comment div.
2978- */
2979- function show(id) {
2980- $('#ao' + id).hide();
2981- $('#ah' + id).show();
2982- var context = $.extend({id: id}, opts);
2983- var popup = $(renderTemplate(popupTemplate, context)).hide();
2984- popup.find('textarea[name="proposal"]').hide();
2985- popup.find('a.by' + by).addClass('sel');
2986- var form = popup.find('#cf' + id);
2987- form.submit(function(event) {
2988- event.preventDefault();
2989- addComment(form);
2990- });
2991- $('#s' + id).after(popup);
2992- popup.slideDown('fast', function() {
2993- getComments(id);
2994- });
2995- }
2996-
2997- /**
2998- * Hide a comment div.
2999- */
3000- function hide(id) {
3001- $('#ah' + id).hide();
3002- $('#ao' + id).show();
3003- var div = $('#sc' + id);
3004- div.slideUp('fast', function() {
3005- div.remove();
3006- });
3007- }
3008-
3009- /**
3010- * Perform an ajax request to get comments for a node
3011- * and insert the comments into the comments tree.
3012- */
3013- function getComments(id) {
3014- $.ajax({
3015- type: 'GET',
3016- url: opts.getCommentsURL,
3017- data: {node: id},
3018- success: function(data, textStatus, request) {
3019- var ul = $('#cl' + id);
3020- var speed = 100;
3021- $('#cf' + id)
3022- .find('textarea[name="proposal"]')
3023- .data('source', data.source);
3024-
3025- if (data.comments.length === 0) {
3026- ul.html('<li>No comments yet.</li>');
3027- ul.data('empty', true);
3028- } else {
3029- // If there are comments, sort them and put them in the list.
3030- var comments = sortComments(data.comments);
3031- speed = data.comments.length * 100;
3032- appendComments(comments, ul);
3033- ul.data('empty', false);
3034- }
3035- $('#cn' + id).slideUp(speed + 200);
3036- ul.slideDown(speed);
3037- },
3038- error: function(request, textStatus, error) {
3039- showError('Oops, there was a problem retrieving the comments.');
3040- },
3041- dataType: 'json'
3042- });
3043- }
3044-
3045- /**
3046- * Add a comment via ajax and insert the comment into the comment tree.
3047- */
3048- function addComment(form) {
3049- var node_id = form.find('input[name="node"]').val();
3050- var parent_id = form.find('input[name="parent"]').val();
3051- var text = form.find('textarea[name="comment"]').val();
3052- var proposal = form.find('textarea[name="proposal"]').val();
3053-
3054- if (text == '') {
3055- showError('Please enter a comment.');
3056- return;
3057- }
3058-
3059- // Disable the form that is being submitted.
3060- form.find('textarea,input').attr('disabled', 'disabled');
3061-
3062- // Send the comment to the server.
3063- $.ajax({
3064- type: "POST",
3065- url: opts.addCommentURL,
3066- dataType: 'json',
3067- data: {
3068- node: node_id,
3069- parent: parent_id,
3070- text: text,
3071- proposal: proposal
3072- },
3073- success: function(data, textStatus, error) {
3074- // Reset the form.
3075- if (node_id) {
3076- hideProposeChange(node_id);
3077- }
3078- form.find('textarea')
3079- .val('')
3080- .add(form.find('input'))
3081- .removeAttr('disabled');
3082- var ul = $('#cl' + (node_id || parent_id));
3083- if (ul.data('empty')) {
3084- $(ul).empty();
3085- ul.data('empty', false);
3086- }
3087- insertComment(data.comment);
3088- var ao = $('#ao' + node_id);
3089- ao.find('img').attr({'src': opts.commentBrightImage});
3090- if (node_id) {
3091- // if this was a "root" comment, remove the commenting box
3092- // (the user can get it back by reopening the comment popup)
3093- $('#ca' + node_id).slideUp();
3094- }
3095- },
3096- error: function(request, textStatus, error) {
3097- form.find('textarea,input').removeAttr('disabled');
3098- showError('Oops, there was a problem adding the comment.');
3099- }
3100- });
3101- }
3102-
3103- /**
3104- * Recursively append comments to the main comment list and children
3105- * lists, creating the comment tree.
3106- */
3107- function appendComments(comments, ul) {
3108- $.each(comments, function() {
3109- var div = createCommentDiv(this);
3110- ul.append($(document.createElement('li')).html(div));
3111- appendComments(this.children, div.find('ul.comment-children'));
3112- // To avoid stagnating data, don't store the comments children in data.
3113- this.children = null;
3114- div.data('comment', this);
3115- });
3116- }
3117-
3118- /**
3119- * After adding a new comment, it must be inserted in the correct
3120- * location in the comment tree.
3121- */
3122- function insertComment(comment) {
3123- var div = createCommentDiv(comment);
3124-
3125- // To avoid stagnating data, don't store the comments children in data.
3126- comment.children = null;
3127- div.data('comment', comment);
3128-
3129- var ul = $('#cl' + (comment.node || comment.parent));
3130- var siblings = getChildren(ul);
3131-
3132- var li = $(document.createElement('li'));
3133- li.hide();
3134-
3135- // Determine where in the parents children list to insert this comment.
3136- for(i=0; i < siblings.length; i++) {
3137- if (comp(comment, siblings[i]) <= 0) {
3138- $('#cd' + siblings[i].id)
3139- .parent()
3140- .before(li.html(div));
3141- li.slideDown('fast');
3142- return;
3143- }
3144- }
3145-
3146- // If we get here, this comment rates lower than all the others,
3147- // or it is the only comment in the list.
3148- ul.append(li.html(div));
3149- li.slideDown('fast');
3150- }
3151-
3152- function acceptComment(id) {
3153- $.ajax({
3154- type: 'POST',
3155- url: opts.acceptCommentURL,
3156- data: {id: id},
3157- success: function(data, textStatus, request) {
3158- $('#cm' + id).fadeOut('fast');
3159- $('#cd' + id).removeClass('moderate');
3160- },
3161- error: function(request, textStatus, error) {
3162- showError('Oops, there was a problem accepting the comment.');
3163- }
3164- });
3165- }
3166-
3167- function deleteComment(id) {
3168- $.ajax({
3169- type: 'POST',
3170- url: opts.deleteCommentURL,
3171- data: {id: id},
3172- success: function(data, textStatus, request) {
3173- var div = $('#cd' + id);
3174- if (data == 'delete') {
3175- // Moderator mode: remove the comment and all children immediately
3176- div.slideUp('fast', function() {
3177- div.remove();
3178- });
3179- return;
3180- }
3181- // User mode: only mark the comment as deleted
3182- div
3183- .find('span.user-id:first')
3184- .text('[deleted]').end()
3185- .find('div.comment-text:first')
3186- .text('[deleted]').end()
3187- .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
3188- ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
3189- .remove();
3190- var comment = div.data('comment');
3191- comment.username = '[deleted]';
3192- comment.text = '[deleted]';
3193- div.data('comment', comment);
3194- },
3195- error: function(request, textStatus, error) {
3196- showError('Oops, there was a problem deleting the comment.');
3197- }
3198- });
3199- }
3200-
3201- function showProposal(id) {
3202- $('#sp' + id).hide();
3203- $('#hp' + id).show();
3204- $('#pr' + id).slideDown('fast');
3205- }
3206-
3207- function hideProposal(id) {
3208- $('#hp' + id).hide();
3209- $('#sp' + id).show();
3210- $('#pr' + id).slideUp('fast');
3211- }
3212-
3213- function showProposeChange(id) {
3214- $('#pc' + id).hide();
3215- $('#hc' + id).show();
3216- var textarea = $('#pt' + id);
3217- textarea.val(textarea.data('source'));
3218- $.fn.autogrow.resize(textarea[0]);
3219- textarea.slideDown('fast');
3220- }
3221-
3222- function hideProposeChange(id) {
3223- $('#hc' + id).hide();
3224- $('#pc' + id).show();
3225- var textarea = $('#pt' + id);
3226- textarea.val('').removeAttr('disabled');
3227- textarea.slideUp('fast');
3228- }
3229-
3230- function toggleCommentMarkupBox(id) {
3231- $('#mb' + id).toggle();
3232- }
3233-
3234- /** Handle when the user clicks on a sort by link. */
3235- function handleReSort(link) {
3236- var classes = link.attr('class').split(/\s+/);
3237- for (var i=0; i<classes.length; i++) {
3238- if (classes[i] != 'sort-option') {
3239- by = classes[i].substring(2);
3240- }
3241- }
3242- setComparator();
3243- // Save/update the sortBy cookie.
3244- var expiration = new Date();
3245- expiration.setDate(expiration.getDate() + 365);
3246- document.cookie= 'sortBy=' + escape(by) +
3247- ';expires=' + expiration.toUTCString();
3248- $('ul.comment-ul').each(function(index, ul) {
3249- var comments = getChildren($(ul), true);
3250- comments = sortComments(comments);
3251- appendComments(comments, $(ul).empty());
3252- });
3253- }
3254-
3255- /**
3256- * Function to process a vote when a user clicks an arrow.
3257- */
3258- function handleVote(link) {
3259- if (!opts.voting) {
3260- showError("You'll need to login to vote.");
3261- return;
3262- }
3263-
3264- var id = link.attr('id');
3265- if (!id) {
3266- // Didn't click on one of the voting arrows.
3267- return;
3268- }
3269- // If it is an unvote, the new vote value is 0,
3270- // Otherwise it's 1 for an upvote, or -1 for a downvote.
3271- var value = 0;
3272- if (id.charAt(1) != 'u') {
3273- value = id.charAt(0) == 'u' ? 1 : -1;
3274- }
3275- // The data to be sent to the server.
3276- var d = {
3277- comment_id: id.substring(2),
3278- value: value
3279- };
3280-
3281- // Swap the vote and unvote links.
3282- link.hide();
3283- $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
3284- .show();
3285-
3286- // The div the comment is displayed in.
3287- var div = $('div#cd' + d.comment_id);
3288- var data = div.data('comment');
3289-
3290- // If this is not an unvote, and the other vote arrow has
3291- // already been pressed, unpress it.
3292- if ((d.value !== 0) && (data.vote === d.value * -1)) {
3293- $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
3294- $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
3295- }
3296-
3297- // Update the comments rating in the local data.
3298- data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
3299- data.vote = d.value;
3300- div.data('comment', data);
3301-
3302- // Change the rating text.
3303- div.find('.rating:first')
3304- .text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
3305-
3306- // Send the vote information to the server.
3307- $.ajax({
3308- type: "POST",
3309- url: opts.processVoteURL,
3310- data: d,
3311- error: function(request, textStatus, error) {
3312- showError('Oops, there was a problem casting that vote.');
3313- }
3314- });
3315- }
3316-
3317- /**
3318- * Open a reply form used to reply to an existing comment.
3319- */
3320- function openReply(id) {
3321- // Swap out the reply link for the hide link
3322- $('#rl' + id).hide();
3323- $('#cr' + id).show();
3324-
3325- // Add the reply li to the children ul.
3326- var div = $(renderTemplate(replyTemplate, {id: id})).hide();
3327- $('#cl' + id)
3328- .prepend(div)
3329- // Setup the submit handler for the reply form.
3330- .find('#rf' + id)
3331- .submit(function(event) {
3332- event.preventDefault();
3333- addComment($('#rf' + id));
3334- closeReply(id);
3335- })
3336- .find('input[type=button]')
3337- .click(function() {
3338- closeReply(id);
3339- });
3340- div.slideDown('fast', function() {
3341- $('#rf' + id).find('textarea').focus();
3342- });
3343- }
3344-
3345- /**
3346- * Close the reply form opened with openReply.
3347- */
3348- function closeReply(id) {
3349- // Remove the reply div from the DOM.
3350- $('#rd' + id).slideUp('fast', function() {
3351- $(this).remove();
3352- });
3353-
3354- // Swap out the hide link for the reply link
3355- $('#cr' + id).hide();
3356- $('#rl' + id).show();
3357- }
3358-
3359- /**
3360- * Recursively sort a tree of comments using the comp comparator.
3361- */
3362- function sortComments(comments) {
3363- comments.sort(comp);
3364- $.each(comments, function() {
3365- this.children = sortComments(this.children);
3366- });
3367- return comments;
3368- }
3369-
3370- /**
3371- * Get the children comments from a ul. If recursive is true,
3372- * recursively include childrens' children.
3373- */
3374- function getChildren(ul, recursive) {
3375- var children = [];
3376- ul.children().children("[id^='cd']")
3377- .each(function() {
3378- var comment = $(this).data('comment');
3379- if (recursive)
3380- comment.children = getChildren($(this).find('#cl' + comment.id), true);
3381- children.push(comment);
3382- });
3383- return children;
3384- }
3385-
3386- /** Create a div to display a comment in. */
3387- function createCommentDiv(comment) {
3388- if (!comment.displayed && !opts.moderator) {
3389- return $('<div class="moderate">Thank you! Your comment will show up '
3390- + 'once it is has been approved by a moderator.</div>');
3391- }
3392- // Prettify the comment rating.
3393- comment.pretty_rating = comment.rating + ' point' +
3394- (comment.rating == 1 ? '' : 's');
3395- // Make a class (for displaying not yet moderated comments differently)
3396- comment.css_class = comment.displayed ? '' : ' moderate';
3397- // Create a div for this comment.
3398- var context = $.extend({}, opts, comment);
3399- var div = $(renderTemplate(commentTemplate, context));
3400-
3401- // If the user has voted on this comment, highlight the correct arrow.
3402- if (comment.vote) {
3403- var direction = (comment.vote == 1) ? 'u' : 'd';
3404- div.find('#' + direction + 'v' + comment.id).hide();
3405- div.find('#' + direction + 'u' + comment.id).show();
3406- }
3407-
3408- if (opts.moderator || comment.text != '[deleted]') {
3409- div.find('a.reply').show();
3410- if (comment.proposal_diff)
3411- div.find('#sp' + comment.id).show();
3412- if (opts.moderator && !comment.displayed)
3413- div.find('#cm' + comment.id).show();
3414- if (opts.moderator || (opts.username == comment.username))
3415- div.find('#dc' + comment.id).show();
3416- }
3417- return div;
3418- }
3419-
3420- /**
3421- * A simple template renderer. Placeholders such as <%id%> are replaced
3422- * by context['id'] with items being escaped. Placeholders such as <#id#>
3423- * are not escaped.
3424- */
3425- function renderTemplate(template, context) {
3426- var esc = $(document.createElement('div'));
3427-
3428- function handle(ph, escape) {
3429- var cur = context;
3430- $.each(ph.split('.'), function() {
3431- cur = cur[this];
3432- });
3433- return escape ? esc.text(cur || "").html() : cur;
3434- }
3435-
3436- return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
3437- return handle(arguments[2], arguments[1] == '%' ? true : false);
3438- });
3439- }
3440-
3441- /** Flash an error message briefly. */
3442- function showError(message) {
3443- $(document.createElement('div')).attr({'class': 'popup-error'})
3444- .append($(document.createElement('div'))
3445- .attr({'class': 'error-message'}).text(message))
3446- .appendTo('body')
3447- .fadeIn("slow")
3448- .delay(2000)
3449- .fadeOut("slow");
3450- }
3451-
3452- /** Add a link the user uses to open the comments popup. */
3453- $.fn.comment = function() {
3454- return this.each(function() {
3455- var id = $(this).attr('id').substring(1);
3456- var count = COMMENT_METADATA[id];
3457- var title = count + ' comment' + (count == 1 ? '' : 's');
3458- var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
3459- var addcls = count == 0 ? ' nocomment' : '';
3460- $(this)
3461- .append(
3462- $(document.createElement('a')).attr({
3463- href: '#',
3464- 'class': 'sphinx-comment-open' + addcls,
3465- id: 'ao' + id
3466- })
3467- .append($(document.createElement('img')).attr({
3468- src: image,
3469- alt: 'comment',
3470- title: title
3471- }))
3472- .click(function(event) {
3473- event.preventDefault();
3474- show($(this).attr('id').substring(2));
3475- })
3476- )
3477- .append(
3478- $(document.createElement('a')).attr({
3479- href: '#',
3480- 'class': 'sphinx-comment-close hidden',
3481- id: 'ah' + id
3482- })
3483- .append($(document.createElement('img')).attr({
3484- src: opts.closeCommentImage,
3485- alt: 'close',
3486- title: 'close'
3487- }))
3488- .click(function(event) {
3489- event.preventDefault();
3490- hide($(this).attr('id').substring(2));
3491- })
3492- );
3493- });
3494- };
3495-
3496- var opts = {
3497- processVoteURL: '/_process_vote',
3498- addCommentURL: '/_add_comment',
3499- getCommentsURL: '/_get_comments',
3500- acceptCommentURL: '/_accept_comment',
3501- deleteCommentURL: '/_delete_comment',
3502- commentImage: '/static/_static/comment.png',
3503- closeCommentImage: '/static/_static/comment-close.png',
3504- loadingImage: '/static/_static/ajax-loader.gif',
3505- commentBrightImage: '/static/_static/comment-bright.png',
3506- upArrow: '/static/_static/up.png',
3507- downArrow: '/static/_static/down.png',
3508- upArrowPressed: '/static/_static/up-pressed.png',
3509- downArrowPressed: '/static/_static/down-pressed.png',
3510- voting: false,
3511- moderator: false
3512- };
3513-
3514- if (typeof COMMENT_OPTIONS != "undefined") {
3515- opts = jQuery.extend(opts, COMMENT_OPTIONS);
3516- }
3517-
3518- var popupTemplate = '\
3519- <div class="sphinx-comments" id="sc<%id%>">\
3520- <p class="sort-options">\
3521- Sort by:\
3522- <a href="#" class="sort-option byrating">best rated</a>\
3523- <a href="#" class="sort-option byascage">newest</a>\
3524- <a href="#" class="sort-option byage">oldest</a>\
3525- </p>\
3526- <div class="comment-header">Comments</div>\
3527- <div class="comment-loading" id="cn<%id%>">\
3528- loading comments... <img src="<%loadingImage%>" alt="" /></div>\
3529- <ul id="cl<%id%>" class="comment-ul"></ul>\
3530- <div id="ca<%id%>">\
3531- <p class="add-a-comment">Add a comment\
3532- (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
3533- <div class="comment-markup-box" id="mb<%id%>">\
3534- reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
3535- <tt>``code``</tt>, \
3536- code blocks: <tt>::</tt> and an indented block after blank line</div>\
3537- <form method="post" id="cf<%id%>" class="comment-form" action="">\
3538- <textarea name="comment" cols="80"></textarea>\
3539- <p class="propose-button">\
3540- <a href="#" id="pc<%id%>" class="show-propose-change">\
3541- Propose a change &#9657;\
3542- </a>\
3543- <a href="#" id="hc<%id%>" class="hide-propose-change">\
3544- Propose a change &#9663;\
3545- </a>\
3546- </p>\
3547- <textarea name="proposal" id="pt<%id%>" cols="80"\
3548- spellcheck="false"></textarea>\
3549- <input type="submit" value="Add comment" />\
3550- <input type="hidden" name="node" value="<%id%>" />\
3551- <input type="hidden" name="parent" value="" />\
3552- </form>\
3553- </div>\
3554- </div>';
3555-
3556- var commentTemplate = '\
3557- <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
3558- <div class="vote">\
3559- <div class="arrow">\
3560- <a href="#" id="uv<%id%>" class="vote" title="vote up">\
3561- <img src="<%upArrow%>" />\
3562- </a>\
3563- <a href="#" id="uu<%id%>" class="un vote" title="vote up">\
3564- <img src="<%upArrowPressed%>" />\
3565- </a>\
3566- </div>\
3567- <div class="arrow">\
3568- <a href="#" id="dv<%id%>" class="vote" title="vote down">\
3569- <img src="<%downArrow%>" id="da<%id%>" />\
3570- </a>\
3571- <a href="#" id="du<%id%>" class="un vote" title="vote down">\
3572- <img src="<%downArrowPressed%>" />\
3573- </a>\
3574- </div>\
3575- </div>\
3576- <div class="comment-content">\
3577- <p class="tagline comment">\
3578- <span class="user-id"><%username%></span>\
3579- <span class="rating"><%pretty_rating%></span>\
3580- <span class="delta"><%time.delta%></span>\
3581- </p>\
3582- <div class="comment-text comment"><#text#></div>\
3583- <p class="comment-opts comment">\
3584- <a href="#" class="reply hidden" id="rl<%id%>">reply &#9657;</a>\
3585- <a href="#" class="close-reply" id="cr<%id%>">reply &#9663;</a>\
3586- <a href="#" id="sp<%id%>" class="show-proposal">proposal &#9657;</a>\
3587- <a href="#" id="hp<%id%>" class="hide-proposal">proposal &#9663;</a>\
3588- <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
3589- <span id="cm<%id%>" class="moderation hidden">\
3590- <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
3591- </span>\
3592- </p>\
3593- <pre class="proposal" id="pr<%id%>">\
3594-<#proposal_diff#>\
3595- </pre>\
3596- <ul class="comment-children" id="cl<%id%>"></ul>\
3597- </div>\
3598- <div class="clearleft"></div>\
3599- </div>\
3600- </div>';
3601-
3602- var replyTemplate = '\
3603- <li>\
3604- <div class="reply-div" id="rd<%id%>">\
3605- <form id="rf<%id%>">\
3606- <textarea name="comment" cols="80"></textarea>\
3607- <input type="submit" value="Add reply" />\
3608- <input type="button" value="Cancel" />\
3609- <input type="hidden" name="parent" value="<%id%>" />\
3610- <input type="hidden" name="node" value="" />\
3611- </form>\
3612- </div>\
3613- </li>';
3614-
3615- $(document).ready(function() {
3616- init();
3617- });
3618-})(jQuery);
3619-
3620-$(document).ready(function() {
3621- // add comment anchors for all paragraphs that are commentable
3622- $('.sphinx-has-comment').comment();
3623-
3624- // highlight search words in search results
3625- $("div.context").each(function() {
3626- var params = $.getQueryParameters();
3627- var terms = (params.q) ? params.q[0].split(/\s+/) : [];
3628- var result = $(this);
3629- $.each(terms, function() {
3630- result.highlightText(this.toLowerCase(), 'highlighted');
3631- });
3632- });
3633-
3634- // directly open comment window if requested
3635- var anchor = document.location.hash;
3636- if (anchor.substring(0, 9) == '#comment-') {
3637- $('#ao' + anchor.substring(9)).click();
3638- document.location.hash = '#s' + anchor.substring(9);
3639- }
3640-});
3641
3642=== removed file 'src/postorius/doc/_build/html/acknowledgements.html'
3643--- src/postorius/doc/_build/html/acknowledgements.html 2012-03-23 22:54:46 +0000
3644+++ src/postorius/doc/_build/html/acknowledgements.html 1970-01-01 00:00:00 +0000
3645@@ -1,158 +0,0 @@
3646-
3647-
3648-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3649- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3650-
3651-<html xmlns="http://www.w3.org/1999/xhtml">
3652- <head>
3653- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3654-
3655- <title>Acknowledgements &mdash; mailmanweb v0.1 documentation</title>
3656- <link rel="stylesheet" href="_static/default.css" type="text/css" />
3657- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
3658- <script type="text/javascript">
3659- var DOCUMENTATION_OPTIONS = {
3660- URL_ROOT: '',
3661- VERSION: '0.1',
3662- COLLAPSE_INDEX: false,
3663- FILE_SUFFIX: '.html',
3664- HAS_SOURCE: true
3665- };
3666- </script>
3667- <script type="text/javascript" src="_static/jquery.js"></script>
3668- <script type="text/javascript" src="_static/underscore.js"></script>
3669- <script type="text/javascript" src="_static/doctools.js"></script>
3670- <link rel="top" title="mailmanweb v0.1 documentation" href="index.html" />
3671- </head>
3672- <body>
3673- <div class="related">
3674- <h3>Navigation</h3>
3675- <ul>
3676- <li class="right" style="margin-right: 10px">
3677- <a href="genindex.html" title="General Index"
3678- accesskey="I">index</a></li>
3679- <li class="right" >
3680- <a href="py-modindex.html" title="Python Module Index"
3681- >modules</a> |</li>
3682- <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li>
3683- </ul>
3684- </div>
3685-
3686- <div class="document">
3687- <div class="documentwrapper">
3688- <div class="bodywrapper">
3689- <div class="body">
3690-
3691- <div class="section" id="acknowledgements">
3692-<h1>Acknowledgements<a class="headerlink" href="#acknowledgements" title="Permalink to this headline">¶</a></h1>
3693-<div class="section" id="test-server">
3694-<h2>Test Server<a class="headerlink" href="#test-server" title="Permalink to this headline">¶</a></h2>
3695-<p>We&#8217;re proud to provide you a development server which is sponsered by XXX #Todo
3696-Feel free to change anything you like, we can simply rest the DB from Time to Time.</p>
3697-</div>
3698-<div class="section" id="missing-functionality">
3699-<h2>Missing Functionality<a class="headerlink" href="#missing-functionality" title="Permalink to this headline">¶</a></h2>
3700-<ul>
3701-<li><dl class="first docutils">
3702-<dt>Delete Domain</dt>
3703-<dd><ul class="first last simple">
3704-<li>missing in REST</li>
3705-<li>implemented in mailman3 a8</li>
3706-</ul>
3707-</dd>
3708-</dl>
3709-</li>
3710-<li><p class="first">Show a List of all subscribed users</p>
3711-</li>
3712-</ul>
3713-</div>
3714-<div class="section" id="acl">
3715-<h2>ACL<a class="headerlink" href="#acl" title="Permalink to this headline">¶</a></h2>
3716-<ul>
3717-<li><p class="first">Middleware</p>
3718-<blockquote>
3719-<div><p>We don&#8217;t have the Middleware which is required to work with users and it&#8217;s permissions yet. For this reason we had to tweak some functions to be a hardcoded Demo object.</p>
3720-<ul>
3721-<li><dl class="first docutils">
3722-<dt>Login Check</dt>
3723-<dd><p class="first last">At the moment we&#8217;re using a hardcoded List of allowed usernames and Passwords which are all stored in Plain within the AuthBackends Source File.</p>
3724-</dd>
3725-</dl>
3726-</li>
3727-<li><dl class="first docutils">
3728-<dt>has_perm Decorator</dt>
3729-<dd><p class="first last">As we don&#8217;t have a middleware to check for users and it&#8217;s permissions we do only use one permission at the moment. The permission site domain_admin is hardcoded to user.username == &#8220;<a class="reference external" href="mailto:james&#37;&#52;&#48;example&#46;com">james<span>&#64;</span>example<span>&#46;</span>com</a>&#8220;</p>
3730-</dd>
3731-</dl>
3732-</li>
3733-</ul>
3734-</div></blockquote>
3735-</li>
3736-</ul>
3737-</div>
3738-<div class="section" id="ideas">
3739-<h2>Ideas<a class="headerlink" href="#ideas" title="Permalink to this headline">¶</a></h2>
3740-<ul class="simple">
3741-<li>ContactPage</li>
3742-<li></li>
3743-</ul>
3744-</div>
3745-</div>
3746-
3747-
3748- </div>
3749- </div>
3750- </div>
3751- <div class="sphinxsidebar">
3752- <div class="sphinxsidebarwrapper">
3753- <h3><a href="index.html">Table Of Contents</a></h3>
3754- <ul>
3755-<li><a class="reference internal" href="#">Acknowledgements</a><ul>
3756-<li><a class="reference internal" href="#test-server">Test Server</a></li>
3757-<li><a class="reference internal" href="#missing-functionality">Missing Functionality</a></li>
3758-<li><a class="reference internal" href="#acl">ACL</a></li>
3759-<li><a class="reference internal" href="#ideas">Ideas</a></li>
3760-</ul>
3761-</li>
3762-</ul>
3763-
3764- <h3>This Page</h3>
3765- <ul class="this-page-menu">
3766- <li><a href="_sources/acknowledgements.txt"
3767- rel="nofollow">Show Source</a></li>
3768- </ul>
3769-<div id="searchbox" style="display: none">
3770- <h3>Quick search</h3>
3771- <form class="search" action="search.html" method="get">
3772- <input type="text" name="q" size="18" />
3773- <input type="submit" value="Go" />
3774- <input type="hidden" name="check_keywords" value="yes" />
3775- <input type="hidden" name="area" value="default" />
3776- </form>
3777- <p class="searchtip" style="font-size: 90%">
3778- Enter search terms or a module, class or function name.
3779- </p>
3780-</div>
3781-<script type="text/javascript">$('#searchbox').show(0);</script>
3782- </div>
3783- </div>
3784- <div class="clearer"></div>
3785- </div>
3786- <div class="related">
3787- <h3>Navigation</h3>
3788- <ul>
3789- <li class="right" style="margin-right: 10px">
3790- <a href="genindex.html" title="General Index"
3791- >index</a></li>
3792- <li class="right" >
3793- <a href="py-modindex.html" title="Python Module Index"
3794- >modules</a> |</li>
3795- <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li>
3796- </ul>
3797- </div>
3798- <div class="footer">
3799- &copy; Copyright 2011, Benedict Stein.
3800- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
3801- </div>
3802- </body>
3803-</html>
3804\ No newline at end of file
3805
3806=== removed file 'src/postorius/doc/_build/html/development.html'
3807--- src/postorius/doc/_build/html/development.html 2012-11-04 19:54:09 +0000
3808+++ src/postorius/doc/_build/html/development.html 1970-01-01 00:00:00 +0000
3809@@ -1,362 +0,0 @@
3810-
3811-
3812-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3813- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3814-
3815-
3816-<html xmlns="http://www.w3.org/1999/xhtml">
3817- <head>
3818- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3819-
3820- <title>Development &mdash; Postorius 1.0a2 documentation</title>
3821-
3822- <link rel="stylesheet" href="_static/default.css" type="text/css" />
3823- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
3824-
3825- <script type="text/javascript">
3826- var DOCUMENTATION_OPTIONS = {
3827- URL_ROOT: '',
3828- VERSION: '1.0a2',
3829- COLLAPSE_INDEX: false,
3830- FILE_SUFFIX: '.html',
3831- HAS_SOURCE: true
3832- };
3833- </script>
3834- <script type="text/javascript" src="_static/jquery.js"></script>
3835- <script type="text/javascript" src="_static/underscore.js"></script>
3836- <script type="text/javascript" src="_static/doctools.js"></script>
3837- <link rel="top" title="Postorius 1.0a2 documentation" href="index.html" />
3838- <link rel="prev" title="Installation" href="setup.html" />
3839- </head>
3840- <body>
3841- <div class="related">
3842- <h3>Navigation</h3>
3843- <ul>
3844- <li class="right" style="margin-right: 10px">
3845- <a href="genindex.html" title="General Index"
3846- accesskey="I">index</a></li>
3847- <li class="right" >
3848- <a href="py-modindex.html" title="Python Module Index"
3849- >modules</a> |</li>
3850- <li class="right" >
3851- <a href="setup.html" title="Installation"
3852- accesskey="P">previous</a> |</li>
3853- <li><a href="index.html">Postorius 1.0a2 documentation</a> &raquo;</li>
3854- </ul>
3855- </div>
3856-
3857- <div class="document">
3858- <div class="documentwrapper">
3859- <div class="bodywrapper">
3860- <div class="body">
3861-
3862- <div class="section" id="development">
3863-<h1>Development<a class="headerlink" href="#development" title="Permalink to this headline">¶</a></h1>
3864-<p>This is a short guide to help you get started with Postorius development.</p>
3865-<div class="section" id="directory-layout">
3866-<h2>Directory layout<a class="headerlink" href="#directory-layout" title="Permalink to this headline">¶</a></h2>
3867-<p>Postorius is a Django application, so if you have developed with Django before,
3868-the file structure probably looks familiar. These are the basics:</p>
3869-<div class="highlight-python"><pre>__init__.py
3870-auth/ # Custom authorization code (List owners and
3871- # moderators)
3872-context_processors.py # Some variables available in all templates
3873-doc/ # Sphinx documentation
3874-fieldset_forms.py # A custom form class to build html forms with
3875- # fieldsets
3876-forms.py # All kinds of classes to build and validate forms
3877-management/ # Commands to use with Django's manage.py script
3878-models.py # Code to connect to mailman.client and provide
3879- # a Django-style model API for lists, mm-users and
3880- # domains
3881-static/ # Static files (CSS, JS, images)
3882-templates/ # HTML Templates
3883-tests/ # Postorius test files
3884-urls.py # URL routes
3885-utils.py # Some handy utilities
3886-views/
3887- views.py # View classes and functions for all views connected
3888- # in urls.py
3889- generic.py # Generic class-based views; Currently holds a
3890- # class for views based on a single mailing list</pre>
3891-</div>
3892-</div>
3893-<div class="section" id="development-workflow">
3894-<h2>Development Workflow<a class="headerlink" href="#development-workflow" title="Permalink to this headline">¶</a></h2>
3895-<p>The source code is hosted on <a class="reference external" href="https://launchpad.net">Launchpad</a>, which also means that we are using
3896-Bazaar for version control.</p>
3897-<p>Changes are usually not made directly in the project&#8217;s trunk branch, but in
3898-feature-related personal branches, which get reviewed and then merged into
3899-the trunk.</p>
3900-<p>The ideal workflow would be like this:</p>
3901-<ol class="arabic simple">
3902-<li>File a bug to suggest a new feature or report a bug (or just pick one of
3903-the existing bugs).</li>
3904-<li>Create a new branch with your code changes.</li>
3905-<li>Make a &#8220;merge proposal&#8221; to get your code reviewed and merged.</li>
3906-</ol>
3907-<p>Launchpad has a nice <a class="reference external" href="https://launchpad.net/+tour/index">tour</a> which describes all this in detail.</p>
3908-</div>
3909-<div class="section" id="writing-view-code">
3910-<h2>Writing View Code<a class="headerlink" href="#writing-view-code" title="Permalink to this headline">¶</a></h2>
3911-<p>When the work on Postorius was started, the standard way to write view code in
3912-Django was to write a single function for each different view. Since then
3913-Django has introduced so-called &#8216;class-based views&#8217; which make it much easier
3914-to reuse view functionality. While using simple functions is not discuraged, it
3915-makes sense to check if using a class-based approach could make sense.</p>
3916-<p>Check Postorius&#8217; <tt class="docutils literal"><span class="pre">views/views.py</span></tt> and <tt class="docutils literal"><span class="pre">views/generic.py</span></tt> for examples!</p>
3917-</div>
3918-<div class="section" id="authentication-authorization">
3919-<h2>Authentication/Authorization<a class="headerlink" href="#authentication-authorization" title="Permalink to this headline">¶</a></h2>
3920-<p>Three of Django&#8217;s default User roles are relvant for Postorius:</p>
3921-<ul class="simple">
3922-<li>Superuser: Can do everything.</li>
3923-<li>AnonymousUser: Can view list index and info pages.</li>
3924-<li>Authenticated users: Can view list index and info pages. Can (un)subscribe
3925-from lists.</li>
3926-</ul>
3927-<p>Apart from these default roles, there are two others relevant in Postorius:</p>
3928-<ul class="simple">
3929-<li>List owners: Can change list settings, moderate messages and delete their
3930-lists.</li>
3931-<li>List moderators: Can moderate messages.</li>
3932-</ul>
3933-<p>There are a number of decorators to protect views from unauthorized users.</p>
3934-<ul class="simple">
3935-<li><tt class="docutils literal"><span class="pre">&#64;user_passes_test(lambda</span> <span class="pre">u:</span> <span class="pre">u.is_superuser)</span></tt> (redirects to login form)</li>
3936-<li><tt class="docutils literal"><span class="pre">&#64;login_required</span></tt> (redirects to login form)</li>
3937-<li><tt class="docutils literal"><span class="pre">&#64;list_owner_required</span></tt> (returns 403)</li>
3938-<li><tt class="docutils literal"><span class="pre">&#64;list_moderator_required</span></tt> (returns 403)</li>
3939-<li><tt class="docutils literal"><span class="pre">&#64;superuser_or_403</span></tt> (returns 403)</li>
3940-<li><tt class="docutils literal"><span class="pre">&#64;loggedin_or_403</span></tt> (returns 403)</li>
3941-<li><tt class="docutils literal"><span class="pre">&#64;basic_auth_login</span></tt></li>
3942-</ul>
3943-<p>Check out <tt class="docutils literal"><span class="pre">views/views.py</span></tt> or <tt class="docutils literal"><span class="pre">views/api.py</span></tt> for examples!</p>
3944-<p>The last one (basic_auth_login) checks the request header for HTTP Basic Auth
3945-credentials and uses those to authenticate against Django&#8217;s session-based
3946-mechanism. It can be used in cases where a view is accessed from other clients
3947-than the web browser.</p>
3948-<p>Please make sure to put it outside the other auth decorators.</p>
3949-<p>Good:</p>
3950-<div class="highlight-python"><div class="highlight"><pre><span class="nd">@basic_auth_login</span>
3951-<span class="nd">@list_owner_required</span>
3952-<span class="k">def</span> <span class="nf">my_view_func</span><span class="p">(</span><span class="n">request</span><span class="p">):</span>
3953- <span class="o">...</span>
3954-</pre></div>
3955-</div>
3956-<p>Won&#8217;t work, because list_owner_required will not recognize the user:</p>
3957-<div class="highlight-python"><div class="highlight"><pre><span class="nd">@list_owner_required</span>
3958-<span class="nd">@basic_auth_login</span>
3959-<span class="k">def</span> <span class="nf">my_view_func</span><span class="p">(</span><span class="n">request</span><span class="p">):</span>
3960- <span class="o">...</span>
3961-</pre></div>
3962-</div>
3963-</div>
3964-<div class="section" id="accessing-the-mailman-api">
3965-<h2>Accessing the Mailman API<a class="headerlink" href="#accessing-the-mailman-api" title="Permalink to this headline">¶</a></h2>
3966-<p>Postorius uses mailman.client to connect to Mailman&#8217;s REST API. In order to
3967-directly use the client, <tt class="docutils literal"><span class="pre">cd</span></tt> to your project folder and execute
3968-<tt class="docutils literal"><span class="pre">python</span> <span class="pre">manage.py</span> <span class="pre">mmclient</span></tt>. This will open a python shell (IPython, if
3969-that&#8217;s available) and provide you with a client object connected to to your
3970-local Mailman API server (it uses the credentials from your settings.py).</p>
3971-<p>A quick example:</p>
3972-<div class="highlight-python"><pre>$ python manage.py mmclient
3973-
3974-&gt;&gt;&gt; client
3975-&lt;Client (user:pwd) http://localhost:8001/3.0/&gt;
3976-
3977-&gt;&gt;&gt; print client.system['mailman_version']
3978-GNU Mailman 3.0.0b2+ (Here Again)
3979-
3980-&gt;&gt;&gt; mailman_dev = client.get_list('mailman-developers@python.org')
3981-&gt;&gt;&gt; print mailman_dev settings
3982-{u'owner_address': u'mailman-developers@python.org',
3983- u'default_nonmember_action': u'hold', ...}</pre>
3984-</div>
3985-<p>For detailed information how to use mailman.client, check out its <a class="reference external" href="http://bazaar.launchpad.net/~mailman-coders/mailman.client/trunk/view/head:/src/mailmanclient/docs/using.txt">documentation</a>.</p>
3986-</div>
3987-<div class="section" id="testing">
3988-<h2>Testing<a class="headerlink" href="#testing" title="Permalink to this headline">¶</a></h2>
3989-<p>Currently only some of the Postorius code is covered by a test. We should change that!</p>
3990-<p>All test modules reside in the <tt class="docutils literal"><span class="pre">postorius/src/postorius/tests</span></tt> directory
3991-and this is where you should put your own tests, too. To make the django test
3992-runner find your tests, make sure to add them to the folder&#8217;s <tt class="docutils literal"><span class="pre">__init__.py</span></tt>:</p>
3993-<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">postorius.tests</span> <span class="kn">import</span> <span class="n">test_utils</span>
3994-<span class="kn">from</span> <span class="nn">postorius.tests.test_list_members</span> <span class="kn">import</span> <span class="n">ListMembersViewTest</span>
3995-<span class="kn">from</span> <span class="nn">postorius.tests.test_list_settings</span> <span class="kn">import</span> <span class="n">ListSettingsViewTest</span>
3996-<span class="kn">from</span> <span class="nn">postorius.tests.my_own_tests</span> <span class="kn">import</span> <span class="n">MyOwnUnitTest</span>
3997-
3998-<span class="n">__test__</span> <span class="o">=</span> <span class="p">{</span>
3999- <span class="s">&quot;Test Utils&quot;</span><span class="p">:</span> <span class="n">test_utils</span><span class="p">,</span>
4000- <span class="s">&quot;List Members&quot;</span><span class="p">:</span> <span class="n">ListMembersViewTest</span><span class="p">,</span>
4001- <span class="s">&quot;List Settings&quot;</span><span class="p">:</span> <span class="n">ListSettingsViewTest</span><span class="p">,</span>
4002- <span class="s">&quot;My Own Test&quot;</span><span class="p">:</span> <span class="n">MyOwnUnitTest</span><span class="p">,</span>
4003-<span class="p">}</span>
4004-</pre></div>
4005-</div>
4006-<div class="section" id="running-the-tests">
4007-<h3>Running the tests<a class="headerlink" href="#running-the-tests" title="Permalink to this headline">¶</a></h3>
4008-<p>To run the tests go to your project folder and run <tt class="docutils literal"><span class="pre">python</span> <span class="pre">manage.py</span> <span class="pre">test</span>
4009-<span class="pre">postorius</span></tt> from there.</p>
4010-</div>
4011-<div class="section" id="testing-mailman-client-results">
4012-<h3>Testing mailman.client results<a class="headerlink" href="#testing-mailman-client-results" title="Permalink to this headline">¶</a></h3>
4013-<p>Most of Postorius&#8217; code involves some results from calls to the mailman.client
4014-library. mailman.client is itself covered by tests, so Postorius&#8217; own tests
4015-don&#8217;t need to check if mailman.client returns correct results. Instead we can
4016-just mock them! This has the big advantage that you can run the test suite
4017-without having to worry about the state of the local Mailman database. It also
4018-makes the tests run faster, because we spare ourselves the HTTP calls to the
4019-local Mailman REST API.</p>
4020-<p>This approach has the obvious downside that the Postorius tests will not
4021-recognize any changes to the Mailman API. So at some point there should be some
4022-separate integration tests to test the whole chain. But let&#8217;s not worry about
4023-that for now.</p>
4024-</div>
4025-<div class="section" id="mocking-mailman-client-objects">
4026-<h3>Mocking mailman.client objects<a class="headerlink" href="#mocking-mailman-client-objects" title="Permalink to this headline">¶</a></h3>
4027-<p>Postorius uses Michael Foord&#8217;s <tt class="docutils literal"><span class="pre">mock</span></tt> library for mocking. There are some
4028-shortcuts you can use to quickly create mock objects that behave a little bit
4029-like objects retreived from mailman.client, like:</p>
4030-<ul class="simple">
4031-<li>create_mock_domain</li>
4032-<li>create_mock_list</li>
4033-<li>create_mock_member</li>
4034-</ul>
4035-<p>These <tt class="docutils literal"><span class="pre">create_mock_*</span></tt> functions are very simple tools that return MagigMock objects with the properties passed to them in a dictionary. They also set some defaults for properties that you didn&#8217;t pass to its <tt class="docutils literal"><span class="pre">create_mock_*</span></tt> function. For instance, a mock list created with <tt class="docutils literal"><span class="pre">create_mock_list()</span></tt> will always have <tt class="docutils literal"><span class="pre">members</span></tt>, <tt class="docutils literal"><span class="pre">moderators</span></tt> and <tt class="docutils literal"><span class="pre">owners</span></tt> properties.</p>
4036-<span class="target" id="module-postorius.tests.test_utils"></span><div class="section" id="domains">
4037-<h4>Domains<a class="headerlink" href="#domains" title="Permalink to this headline">¶</a></h4>
4038-<p><tt class="docutils literal"><span class="pre">postorius.tests.utils.create_mock_domain</span></tt> creates a mock domain object:</p>
4039-<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">properties</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">contact_address</span><span class="o">=</span><span class="s">&#39;postmaster@example.org&#39;</span><span class="p">,</span>
4040-<span class="gp">... </span> <span class="n">description</span><span class="o">=</span><span class="s">&#39;Example dot Org&#39;</span><span class="p">,</span>
4041-<span class="gp">... </span> <span class="n">mail_host</span><span class="o">=</span><span class="s">&#39;example.org&#39;</span><span class="p">,</span>
4042-<span class="gp">... </span> <span class="n">url_host</span><span class="o">=</span><span class="s">&#39;www.example.org&#39;</span><span class="p">)</span>
4043-<span class="gp">&gt;&gt;&gt; </span><span class="n">mock_domain</span> <span class="o">=</span> <span class="n">create_mock_domain</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span>
4044-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_domain</span>
4045-<span class="go">&lt;MagicMock name=&#39;Domain&#39; id=&#39;...&#39;&gt;</span>
4046-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_domain</span><span class="o">.</span><span class="n">contact_address</span>
4047-<span class="go">postmaster@example.org</span>
4048-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_domain</span><span class="o">.</span><span class="n">description</span>
4049-<span class="go">Example dot Org</span>
4050-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_domain</span><span class="o">.</span><span class="n">mail_host</span>
4051-<span class="go">example.org</span>
4052-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_domain</span><span class="o">.</span><span class="n">url_host</span>
4053-<span class="go">www.example.org</span>
4054-</pre></div>
4055-</div>
4056-</div>
4057-<div class="section" id="mailing-lists">
4058-<h4>Mailing Lists<a class="headerlink" href="#mailing-lists" title="Permalink to this headline">¶</a></h4>
4059-<p><tt class="docutils literal"><span class="pre">postorius.tests.utils.create_mock_list</span></tt> creates a mock list object:</p>
4060-<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">properties</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">fqdn_listname</span><span class="o">=</span><span class="s">&#39;testlist@example.org&#39;</span><span class="p">,</span>
4061-<span class="gp">... </span> <span class="n">mail_host</span><span class="o">=</span><span class="s">&#39;example.org&#39;</span><span class="p">,</span>
4062-<span class="gp">... </span> <span class="n">list_name</span><span class="o">=</span><span class="s">&#39;testlist&#39;</span><span class="p">,</span>
4063-<span class="gp">... </span> <span class="n">display_name</span><span class="o">=</span><span class="s">&#39;Test List&#39;</span><span class="p">)</span>
4064-<span class="gp">&gt;&gt;&gt; </span><span class="n">mock_list</span> <span class="o">=</span> <span class="n">create_mock_list</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span>
4065-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_list</span>
4066-<span class="go">&lt;MagicMock name=&#39;List&#39; id=&#39;...&#39;&gt;</span>
4067-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_list</span><span class="o">.</span><span class="n">fqdn_listname</span>
4068-<span class="go">testlist@example.org</span>
4069-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_list</span><span class="o">.</span><span class="n">mail_host</span>
4070-<span class="go">example.org</span>
4071-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_list</span><span class="o">.</span><span class="n">list_name</span>
4072-<span class="go">testlist</span>
4073-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_list</span><span class="o">.</span><span class="n">display_name</span>
4074-<span class="go">Test List</span>
4075-</pre></div>
4076-</div>
4077-</div>
4078-<div class="section" id="memberships">
4079-<h4>Memberships<a class="headerlink" href="#memberships" title="Permalink to this headline">¶</a></h4>
4080-<p><tt class="docutils literal"><span class="pre">postorius.tests.utils.create_mock_list</span></tt> creates a mock list object:</p>
4081-<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">properties</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">fqdn_listname</span><span class="o">=</span><span class="s">&#39;testlist@example.org&#39;</span><span class="p">,</span>
4082-<span class="gp">... </span> <span class="n">address</span><span class="o">=</span><span class="s">&#39;les@example.org&#39;</span><span class="p">,)</span>
4083-<span class="gp">&gt;&gt;&gt; </span><span class="n">mock_member</span> <span class="o">=</span> <span class="n">create_mock_member</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span>
4084-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_member</span>
4085-<span class="go">&lt;MagicMock name=&#39;Member&#39; id=&#39;...&#39;&gt;</span>
4086-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_member</span><span class="o">.</span><span class="n">fqdn_listname</span>
4087-<span class="go">testlist@example.org</span>
4088-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mock_member</span><span class="o">.</span><span class="n">address</span>
4089-<span class="go">les@example.org</span>
4090-</pre></div>
4091-</div>
4092-</div>
4093-</div>
4094-</div>
4095-</div>
4096-
4097-
4098- </div>
4099- </div>
4100- </div>
4101- <div class="sphinxsidebar">
4102- <div class="sphinxsidebarwrapper">
4103- <h3><a href="index.html">Table Of Contents</a></h3>
4104- <ul>
4105-<li><a class="reference internal" href="#">Development</a><ul>
4106-<li><a class="reference internal" href="#directory-layout">Directory layout</a></li>
4107-<li><a class="reference internal" href="#development-workflow">Development Workflow</a></li>
4108-<li><a class="reference internal" href="#writing-view-code">Writing View Code</a></li>
4109-<li><a class="reference internal" href="#authentication-authorization">Authentication/Authorization</a></li>
4110-<li><a class="reference internal" href="#accessing-the-mailman-api">Accessing the Mailman API</a></li>
4111-<li><a class="reference internal" href="#testing">Testing</a><ul>
4112-<li><a class="reference internal" href="#running-the-tests">Running the tests</a></li>
4113-<li><a class="reference internal" href="#testing-mailman-client-results">Testing mailman.client results</a></li>
4114-<li><a class="reference internal" href="#mocking-mailman-client-objects">Mocking mailman.client objects</a><ul>
4115-<li><a class="reference internal" href="#domains">Domains</a></li>
4116-<li><a class="reference internal" href="#mailing-lists">Mailing Lists</a></li>
4117-<li><a class="reference internal" href="#memberships">Memberships</a></li>
4118-</ul>
4119-</li>
4120-</ul>
4121-</li>
4122-</ul>
4123-</li>
4124-</ul>
4125-
4126- <h4>Previous topic</h4>
4127- <p class="topless"><a href="setup.html"
4128- title="previous chapter">Installation</a></p>
4129- <h3>This Page</h3>
4130- <ul class="this-page-menu">
4131- <li><a href="_sources/development.txt"
4132- rel="nofollow">Show Source</a></li>
4133- </ul>
4134-<div id="searchbox" style="display: none">
4135- <h3>Quick search</h3>
4136- <form class="search" action="search.html" method="get">
4137- <input type="text" name="q" />
4138- <input type="submit" value="Go" />
4139- <input type="hidden" name="check_keywords" value="yes" />
4140- <input type="hidden" name="area" value="default" />
4141- </form>
4142- <p class="searchtip" style="font-size: 90%">
4143- Enter search terms or a module, class or function name.
4144- </p>
4145-</div>
4146-<script type="text/javascript">$('#searchbox').show(0);</script>
4147- </div>
4148- </div>
4149- <div class="clearer"></div>
4150- </div>
4151- <div class="related">
4152- <h3>Navigation</h3>
4153- <ul>
4154- <li class="right" style="margin-right: 10px">
4155- <a href="genindex.html" title="General Index"
4156- >index</a></li>
4157- <li class="right" >
4158- <a href="py-modindex.html" title="Python Module Index"
4159- >modules</a> |</li>
4160- <li class="right" >
4161- <a href="setup.html" title="Installation"
4162- >previous</a> |</li>
4163- <li><a href="index.html">Postorius 1.0a2 documentation</a> &raquo;</li>
4164- </ul>
4165- </div>
4166- <div class="footer">
4167- &copy; Copyright 2012, The Free Software Foundation.
4168- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.2.
4169- </div>
4170- </body>
4171-</html>
4172\ No newline at end of file
4173
4174=== removed file 'src/postorius/doc/_build/html/genindex.html'
4175--- src/postorius/doc/_build/html/genindex.html 2012-10-05 15:45:38 +0000
4176+++ src/postorius/doc/_build/html/genindex.html 1970-01-01 00:00:00 +0000
4177@@ -1,123 +0,0 @@
4178-
4179-
4180-
4181-
4182-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4183- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4184-
4185-
4186-<html xmlns="http://www.w3.org/1999/xhtml">
4187- <head>
4188- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4189-
4190- <title>Index &mdash; Postorius 1.0a2 documentation</title>
4191-
4192- <link rel="stylesheet" href="_static/default.css" type="text/css" />
4193- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
4194-
4195- <script type="text/javascript">
4196- var DOCUMENTATION_OPTIONS = {
4197- URL_ROOT: '',
4198- VERSION: '1.0a2',
4199- COLLAPSE_INDEX: false,
4200- FILE_SUFFIX: '.html',
4201- HAS_SOURCE: true
4202- };
4203- </script>
4204- <script type="text/javascript" src="_static/jquery.js"></script>
4205- <script type="text/javascript" src="_static/underscore.js"></script>
4206- <script type="text/javascript" src="_static/doctools.js"></script>
4207- <link rel="top" title="Postorius 1.0a2 documentation" href="index.html" />
4208- </head>
4209- <body>
4210- <div class="related">
4211- <h3>Navigation</h3>
4212- <ul>
4213- <li class="right" style="margin-right: 10px">
4214- <a href="#" title="General Index"
4215- accesskey="I">index</a></li>
4216- <li class="right" >
4217- <a href="py-modindex.html" title="Python Module Index"
4218- >modules</a> |</li>
4219- <li><a href="index.html">Postorius 1.0a2 documentation</a> &raquo;</li>
4220- </ul>
4221- </div>
4222-
4223- <div class="document">
4224- <div class="documentwrapper">
4225- <div class="bodywrapper">
4226- <div class="body">
4227-
4228-
4229-<h1 id="index">Index</h1>
4230-
4231-<div class="genindex-jumpbox">
4232- <a href="#P"><strong>P</strong></a>
4233- | <a href="#T"><strong>T</strong></a>
4234-
4235-</div>
4236-<h2 id="P">P</h2>
4237-<table style="width: 100%" class="indextable genindextable"><tr>
4238- <td style="width: 33%" valign="top"><dl>
4239-
4240- <dt><a href="development.html#module-postorius.tests.test_utils">postorius.tests.test_utils (module)</a>
4241- </dt>
4242-
4243- </dl></td>
4244-</tr></table>
4245-
4246-<h2 id="T">T</h2>
4247-<table style="width: 100%" class="indextable genindextable"><tr>
4248- <td style="width: 33%" valign="top"><dl>
4249-
4250- <dt><a href="using.html#module-tests.tests">tests.tests (module)</a>
4251- </dt>
4252-
4253- </dl></td>
4254-</tr></table>
4255-
4256-
4257-
4258- </div>
4259- </div>
4260- </div>
4261- <div class="sphinxsidebar">
4262- <div class="sphinxsidebarwrapper">
4263-
4264-
4265-
4266-<div id="searchbox" style="display: none">
4267- <h3>Quick search</h3>
4268- <form class="search" action="search.html" method="get">
4269- <input type="text" name="q" />
4270- <input type="submit" value="Go" />
4271- <input type="hidden" name="check_keywords" value="yes" />
4272- <input type="hidden" name="area" value="default" />
4273- </form>
4274- <p class="searchtip" style="font-size: 90%">
4275- Enter search terms or a module, class or function name.
4276- </p>
4277-</div>
4278-<script type="text/javascript">$('#searchbox').show(0);</script>
4279- </div>
4280- </div>
4281- <div class="clearer"></div>
4282- </div>
4283- <div class="related">
4284- <h3>Navigation</h3>
4285- <ul>
4286- <li class="right" style="margin-right: 10px">
4287- <a href="#" title="General Index"
4288- >index</a></li>
4289- <li class="right" >
4290- <a href="py-modindex.html" title="Python Module Index"
4291- >modules</a> |</li>
4292- <li><a href="index.html">Postorius 1.0a2 documentation</a> &raquo;</li>
4293- </ul>
4294- </div>
4295- <div class="footer">
4296- &copy; Copyright 2012, The Free Software Foundation.
4297- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.2.
4298- </div>
4299- </body>
4300-</html>
4301\ No newline at end of file
4302
4303=== removed file 'src/postorius/doc/_build/html/index.html'
4304--- src/postorius/doc/_build/html/index.html 2012-08-21 19:58:00 +0000
4305+++ src/postorius/doc/_build/html/index.html 1970-01-01 00:00:00 +0000
4306@@ -1,116 +0,0 @@
4307-
4308-
4309-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4310- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4311-
4312-
4313-<html xmlns="http://www.w3.org/1999/xhtml">
4314- <head>
4315- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4316-
4317- <title>Postorius - The New Mailman Web UI &mdash; Postorius 1.0a2 documentation</title>
4318-
4319- <link rel="stylesheet" href="_static/default.css" type="text/css" />
4320- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
4321-
4322- <script type="text/javascript">
4323- var DOCUMENTATION_OPTIONS = {
4324- URL_ROOT: '',
4325- VERSION: '1.0a2',
4326- COLLAPSE_INDEX: false,
4327- FILE_SUFFIX: '.html',
4328- HAS_SOURCE: true
4329- };
4330- </script>
4331- <script type="text/javascript" src="_static/jquery.js"></script>
4332- <script type="text/javascript" src="_static/underscore.js"></script>
4333- <script type="text/javascript" src="_static/doctools.js"></script>
4334- <link rel="top" title="Postorius 1.0a2 documentation" href="#" />
4335- <link rel="next" title="News / Changelog" href="news.html" />
4336- </head>
4337- <body>
4338- <div class="related">
4339- <h3>Navigation</h3>
4340- <ul>
4341- <li class="right" style="margin-right: 10px">
4342- <a href="genindex.html" title="General Index"
4343- accesskey="I">index</a></li>
4344- <li class="right" >
4345- <a href="py-modindex.html" title="Python Module Index"
4346- >modules</a> |</li>
4347- <li class="right" >
4348- <a href="news.html" title="News / Changelog"
4349- accesskey="N">next</a> |</li>
4350- <li><a href="#">Postorius 1.0a2 documentation</a> &raquo;</li>
4351- </ul>
4352- </div>
4353-
4354- <div class="document">
4355- <div class="documentwrapper">
4356- <div class="bodywrapper">
4357- <div class="body">
4358-
4359- <div class="section" id="postorius-the-new-mailman-web-ui">
4360-<h1>Postorius - The New Mailman Web UI<a class="headerlink" href="#postorius-the-new-mailman-web-ui" title="Permalink to this headline">¶</a></h1>
4361-<p>Contents:</p>
4362-<div class="toctree-wrapper compound">
4363-<ul>
4364-<li class="toctree-l1"><a class="reference internal" href="news.html">News / Changelog</a></li>
4365-<li class="toctree-l1"><a class="reference internal" href="setup.html">Installation</a></li>
4366-<li class="toctree-l1"><a class="reference internal" href="development.html">Development</a></li>
4367-</ul>
4368-</div>
4369-</div>
4370-
4371-
4372- </div>
4373- </div>
4374- </div>
4375- <div class="sphinxsidebar">
4376- <div class="sphinxsidebarwrapper">
4377- <h4>Next topic</h4>
4378- <p class="topless"><a href="news.html"
4379- title="next chapter">News / Changelog</a></p>
4380- <h3>This Page</h3>
4381- <ul class="this-page-menu">
4382- <li><a href="_sources/index.txt"
4383- rel="nofollow">Show Source</a></li>
4384- </ul>
4385-<div id="searchbox" style="display: none">
4386- <h3>Quick search</h3>
4387- <form class="search" action="search.html" method="get">
4388- <input type="text" name="q" />
4389- <input type="submit" value="Go" />
4390- <input type="hidden" name="check_keywords" value="yes" />
4391- <input type="hidden" name="area" value="default" />
4392- </form>
4393- <p class="searchtip" style="font-size: 90%">
4394- Enter search terms or a module, class or function name.
4395- </p>
4396-</div>
4397-<script type="text/javascript">$('#searchbox').show(0);</script>
4398- </div>
4399- </div>
4400- <div class="clearer"></div>
4401- </div>
4402- <div class="related">
4403- <h3>Navigation</h3>
4404- <ul>
4405- <li class="right" style="margin-right: 10px">
4406- <a href="genindex.html" title="General Index"
4407- >index</a></li>
4408- <li class="right" >
4409- <a href="py-modindex.html" title="Python Module Index"
4410- >modules</a> |</li>
4411- <li class="right" >
4412- <a href="news.html" title="News / Changelog"
4413- >next</a> |</li>
4414- <li><a href="#">Postorius 1.0a2 documentation</a> &raquo;</li>
4415- </ul>
4416- </div>
4417- <div class="footer">
4418- &copy; Copyright 2012, The Free Software Foundation.
4419- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.2.
4420- </div>
4421- </body>
4422-</html>
4423\ No newline at end of file
4424
4425=== removed file 'src/postorius/doc/_build/html/license.html'
4426--- src/postorius/doc/_build/html/license.html 2012-03-23 22:54:46 +0000
4427+++ src/postorius/doc/_build/html/license.html 1970-01-01 00:00:00 +0000
4428@@ -1,139 +0,0 @@
4429-
4430-
4431-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4432- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4433-
4434-<html xmlns="http://www.w3.org/1999/xhtml">
4435- <head>
4436- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4437-
4438- <title>Contributions: &mdash; mailmanweb v0.1 documentation</title>
4439- <link rel="stylesheet" href="_static/default.css" type="text/css" />
4440- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
4441- <script type="text/javascript">
4442- var DOCUMENTATION_OPTIONS = {
4443- URL_ROOT: '',
4444- VERSION: '0.1',
4445- COLLAPSE_INDEX: false,
4446- FILE_SUFFIX: '.html',
4447- HAS_SOURCE: true
4448- };
4449- </script>
4450- <script type="text/javascript" src="_static/jquery.js"></script>
4451- <script type="text/javascript" src="_static/underscore.js"></script>
4452- <script type="text/javascript" src="_static/doctools.js"></script>
4453- <link rel="top" title="mailmanweb v0.1 documentation" href="index.html" />
4454- <link rel="prev" title="Acknowledgements" href="acknowledgements.html" />
4455- </head>
4456- <body>
4457- <div class="related">
4458- <h3>Navigation</h3>
4459- <ul>
4460- <li class="right" style="margin-right: 10px">
4461- <a href="genindex.html" title="General Index"
4462- accesskey="I">index</a></li>
4463- <li class="right" >
4464- <a href="py-modindex.html" title="Python Module Index"
4465- >modules</a> |</li>
4466- <li class="right" >
4467- <a href="acknowledgements.html" title="Acknowledgements"
4468- accesskey="P">previous</a> |</li>
4469- <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li>
4470- </ul>
4471- </div>
4472-
4473- <div class="document">
4474- <div class="documentwrapper">
4475- <div class="bodywrapper">
4476- <div class="body">
4477-
4478- <div class="section" id="contributions">
4479-<h1>Contributions:<a class="headerlink" href="#contributions" title="Permalink to this headline">¶</a></h1>
4480-<div class="section" id="mailman-is-licensed-unter-gpl">
4481-<h2>Mailman is licensed unter <em>GPL</em><a class="headerlink" href="#mailman-is-licensed-unter-gpl" title="Permalink to this headline">¶</a></h2>
4482-<p>Copyright (C) 1998-2010 by the Free Software Foundation, Inc.</p>
4483-<p>This file is part of GNU Mailman.</p>
4484-<p>GNU Mailman is free software: you can redistribute it and/or modify it under
4485-the terms of the GNU General Public License as published by the Free
4486-Software Foundation, either version 3 of the License, or (at your option)
4487-any later version.</p>
4488-<p>GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
4489-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4490-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
4491-more details.</p>
4492-<p>You should have received a copy of the GNU General Public License along with
4493-GNU Mailman. If not, see &lt;<a class="reference external" href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>&gt;.</p>
4494-</div>
4495-<div class="section" id="rrze-icon-set">
4496-<h2>RRZE Icon Set<a class="headerlink" href="#rrze-icon-set" title="Permalink to this headline">¶</a></h2>
4497-<p><strong>CreativeCommons Licence</strong></p>
4498-<p>The RRZE Icon Set is licenced under a Creative Commons Licence.
4499-Please see the website for the current licence text.</p>
4500-<p>More information about the Project could be found here:
4501-<a class="reference external" href="http://rrze-icon-set.berlios.de/licence.html">http://rrze-icon-set.berlios.de/licence.html</a></p>
4502-<p>Special thanks to:
4503-* Franziska Sponsel (created additional Icons specially for our Project)</p>
4504-</div>
4505-</div>
4506-
4507-
4508- </div>
4509- </div>
4510- </div>
4511- <div class="sphinxsidebar">
4512- <div class="sphinxsidebarwrapper">
4513- <h3><a href="index.html">Table Of Contents</a></h3>
4514- <ul>
4515-<li><a class="reference internal" href="#">Contributions:</a><ul>
4516-<li><a class="reference internal" href="#mailman-is-licensed-unter-gpl">Mailman is licensed unter <em>GPL</em></a></li>
4517-<li><a class="reference internal" href="#rrze-icon-set">RRZE Icon Set</a></li>
4518-</ul>
4519-</li>
4520-</ul>
4521-
4522- <h4>Previous topic</h4>
4523- <p class="topless"><a href="acknowledgements.html"
4524- title="previous chapter">Acknowledgements</a></p>
4525- <h3>This Page</h3>
4526- <ul class="this-page-menu">
4527- <li><a href="_sources/license.txt"
4528- rel="nofollow">Show Source</a></li>
4529- </ul>
4530-<div id="searchbox" style="display: none">
4531- <h3>Quick search</h3>
4532- <form class="search" action="search.html" method="get">
4533- <input type="text" name="q" size="18" />
4534- <input type="submit" value="Go" />
4535- <input type="hidden" name="check_keywords" value="yes" />
4536- <input type="hidden" name="area" value="default" />
4537- </form>
4538- <p class="searchtip" style="font-size: 90%">
4539- Enter search terms or a module, class or function name.
4540- </p>
4541-</div>
4542-<script type="text/javascript">$('#searchbox').show(0);</script>
4543- </div>
4544- </div>
4545- <div class="clearer"></div>
4546- </div>
4547- <div class="related">
4548- <h3>Navigation</h3>
4549- <ul>
4550- <li class="right" style="margin-right: 10px">
4551- <a href="genindex.html" title="General Index"
4552- >index</a></li>
4553- <li class="right" >
4554- <a href="py-modindex.html" title="Python Module Index"
4555- >modules</a> |</li>
4556- <li class="right" >
4557- <a href="acknowledgements.html" title="Acknowledgements"
4558- >previous</a> |</li>
4559- <li><a href="index.html">mailmanweb v0.1 documentation</a> &raquo;</li>
4560- </ul>
4561- </div>
4562- <div class="footer">
4563- &copy; Copyright 2011, Benedict Stein.
4564- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
4565- </div>
4566- </body>
4567-</html>
4568\ No newline at end of file
4569
4570=== removed file 'src/postorius/doc/_build/html/news.html'
4571--- src/postorius/doc/_build/html/news.html 2012-11-04 19:54:09 +0000
4572+++ src/postorius/doc/_build/html/news.html 1970-01-01 00:00:00 +0000
4573@@ -1,186 +0,0 @@
4574-
4575-
4576-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4577- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4578-
4579-
4580-<html xmlns="http://www.w3.org/1999/xhtml">
4581- <head>
4582- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4583-
4584- <title>News / Changelog &mdash; Postorius 1.0a2 documentation</title>
4585-
4586- <link rel="stylesheet" href="_static/default.css" type="text/css" />
4587- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
4588-
4589- <script type="text/javascript">
4590- var DOCUMENTATION_OPTIONS = {
4591- URL_ROOT: '',
4592- VERSION: '1.0a2',
4593- COLLAPSE_INDEX: false,
4594- FILE_SUFFIX: '.html',
4595- HAS_SOURCE: true
4596- };
4597- </script>
4598- <script type="text/javascript" src="_static/jquery.js"></script>
4599- <script type="text/javascript" src="_static/underscore.js"></script>
4600- <script type="text/javascript" src="_static/doctools.js"></script>
4601- <link rel="top" title="Postorius 1.0a2 documentation" href="index.html" />
4602- <link rel="next" title="Installation" href="setup.html" />
4603- <link rel="prev" title="Postorius - The New Mailman Web UI" href="index.html" />
4604- </head>
4605- <body>
4606- <div class="related">
4607- <h3>Navigation</h3>
4608- <ul>
4609- <li class="right" style="margin-right: 10px">
4610- <a href="genindex.html" title="General Index"
4611- accesskey="I">index</a></li>
4612- <li class="right" >
4613- <a href="py-modindex.html" title="Python Module Index"
4614- >modules</a> |</li>
4615- <li class="right" >
4616- <a href="setup.html" title="Installation"
4617- accesskey="N">next</a> |</li>
4618- <li class="right" >
4619- <a href="index.html" title="Postorius - The New Mailman Web UI"
4620- accesskey="P">previous</a> |</li>
4621- <li><a href="index.html">Postorius 1.0a2 documentation</a> &raquo;</li>
4622- </ul>
4623- </div>
4624-
4625- <div class="document">
4626- <div class="documentwrapper">
4627- <div class="bodywrapper">
4628- <div class="body">
4629-
4630- <div class="section" id="news-changelog">
4631-<h1>News / Changelog<a class="headerlink" href="#news-changelog" title="Permalink to this headline">¶</a></h1>
4632-<p>Copyright (C) 2012 by the Free Software Foundation, Inc.</p>
4633-<p>The Postorius Django app provides a web user interface to
4634-access GNU Mailman.</p>
4635-<p>Postorius is free software: you can redistribute it and/or
4636-modify it under the terms of the GNU Lesser General Public License as
4637-published by the Free Software Foundation, version 3 of the License.</p>
4638-<p>Postorius is distributed in the hope that it will be useful,
4639-but WITHOUT ANY WARRANTY; without even the implied warranty of
4640-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
4641-General Public License for more details.</p>
4642-<p>You should have received a copy of the GNU Lesser General Public License
4643-along with Postorius. If not, see &lt;<a class="reference external" href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>&gt;.</p>
4644-<div class="section" id="alpha-2">
4645-<h2>1.0 alpha 2<a class="headerlink" href="#alpha-2" title="Permalink to this headline">¶</a></h2>
4646-<p>(2012-XX-XX)</p>
4647-<ul class="simple">
4648-<li>dev setup fix for Django 1.4 contributed by Rohan Jain</li>
4649-<li>missing csrf tokens in templates contributed by Richard Wackerbarth (LP: 996658)</li>
4650-<li>moderation: fixed typo in success message call</li>
4651-<li>installation documentation for Apache/mod_wsgi</li>
4652-<li>moved project files to separate branch</li>
4653-<li>show error message if connection to Mailman API fails</li>
4654-<li>added list members view</li>
4655-<li>added developer documentation</li>
4656-<li>added test helper utils</li>
4657-<li>all code now conform to PEP8</li>
4658-<li>themes: removed obsolete MAILMAN_THEME settings from templates, contexts, file structure; contributed by Richard Wackerbarth (LP: 1043258)</li>
4659-<li>added access control for list owners and moderators</li>
4660-<li>added a mailmanclient shell to use as a <cite>manage.py</cite> command (<cite>python manage.py mmclient</cite>)</li>
4661-<li>use &#8220;url from future&#8221; template tag in all templates. Contributed by Richard Wackerbarth.</li>
4662-<li>added &#8220;new user&#8221; form. Contributed by George Chatzisofroniou.</li>
4663-<li>added user subscription page</li>
4664-<li>added decorator to allow login via http basic auth (to allow non-browser clients to use API views)</li>
4665-<li>added api view for list index</li>
4666-<li>several changes regarding style and navigation structure</li>
4667-</ul>
4668-</div>
4669-<div class="section" id="alpha-1-space-farm">
4670-<h2>1.0 alpha 1 &#8211; &#8220;Space Farm&#8221;<a class="headerlink" href="#alpha-1-space-farm" title="Permalink to this headline">¶</a></h2>
4671-<p>(2012-03-23)</p>
4672-<p>Many thanks go out to Anna Senarclens de Grancy and Benedict Stein for
4673-developing the initial versions of this Django app during the Google Summer of
4674-Code 2010 and 2011.</p>
4675-<ul class="simple">
4676-<li>add/remove/edit mailing lists</li>
4677-<li>edit list settings</li>
4678-<li>show all mailing lists on server</li>
4679-<li>subscribe/unsubscribe/mass subscribe mailing lists</li>
4680-<li>add/remove domains</li>
4681-<li>show basic list info and metrics</li>
4682-<li>login using django user account or using BrowserID</li>
4683-<li>show basic user profile</li>
4684-<li>accept/discard/reject/defer messages</li>
4685-<li>Implementation of Django Messages contributed by Benedict Stein (LP: #920084)</li>
4686-<li>Dependency check in setup.py contributed by Daniel Mizyrycki</li>
4687-<li>Proper processing of acceptable aliases in list settings form contributed by
4688-Daniel Mizyrycki</li>
4689-</ul>
4690-</div>
4691-</div>
4692-
4693-
4694- </div>
4695- </div>
4696- </div>
4697- <div class="sphinxsidebar">
4698- <div class="sphinxsidebarwrapper">
4699- <h3><a href="index.html">Table Of Contents</a></h3>
4700- <ul>
4701-<li><a class="reference internal" href="#">News / Changelog</a><ul>
4702-<li><a class="reference internal" href="#alpha-2">1.0 alpha 2</a></li>
4703-<li><a class="reference internal" href="#alpha-1-space-farm">1.0 alpha 1 &#8211; &#8220;Space Farm&#8221;</a></li>
4704-</ul>
4705-</li>
4706-</ul>
4707-
4708- <h4>Previous topic</h4>
4709- <p class="topless"><a href="index.html"
4710- title="previous chapter">Postorius - The New Mailman Web UI</a></p>
4711- <h4>Next topic</h4>
4712- <p class="topless"><a href="setup.html"
4713- title="next chapter">Installation</a></p>
4714- <h3>This Page</h3>
4715- <ul class="this-page-menu">
4716- <li><a href="_sources/news.txt"
4717- rel="nofollow">Show Source</a></li>
4718- </ul>
4719-<div id="searchbox" style="display: none">
4720- <h3>Quick search</h3>
4721- <form class="search" action="search.html" method="get">
4722- <input type="text" name="q" />
4723- <input type="submit" value="Go" />
4724- <input type="hidden" name="check_keywords" value="yes" />
4725- <input type="hidden" name="area" value="default" />
4726- </form>
4727- <p class="searchtip" style="font-size: 90%">
4728- Enter search terms or a module, class or function name.
4729- </p>
4730-</div>
4731-<script type="text/javascript">$('#searchbox').show(0);</script>
4732- </div>
4733- </div>
4734- <div class="clearer"></div>
4735- </div>
4736- <div class="related">
4737- <h3>Navigation</h3>
4738- <ul>
4739- <li class="right" style="margin-right: 10px">
4740- <a href="genindex.html" title="General Index"
4741- >index</a></li>
4742- <li class="right" >
4743- <a href="py-modindex.html" title="Python Module Index"
4744- >modules</a> |</li>
4745- <li class="right" >
4746- <a href="setup.html" title="Installation"
4747- >next</a> |</li>
4748- <li class="right" >
4749- <a href="index.html" title="Postorius - The New Mailman Web UI"
4750- >previous</a> |</li>
4751- <li><a href="index.html">Postorius 1.0a2 documentation</a> &raquo;</li>
4752- </ul>
4753- </div>
4754- <div class="footer">
4755- &copy; Copyright 2012, The Free Software Foundation.
4756- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.2.
4757- </div>
4758- </body>
4759-</html>
4760\ No newline at end of file
4761
4762=== removed file 'src/postorius/doc/_build/html/objects.inv'
4763--- src/postorius/doc/_build/html/objects.inv 2012-10-05 15:45:38 +0000
4764+++ src/postorius/doc/_build/html/objects.inv 1970-01-01 00:00:00 +0000
4765@@ -1,10 +0,0 @@
4766-# Sphinx inventory version 2
4767-# Project: Postorius
4768-# Version: 1.0a2
4769-# The remainder of this file is compressed using zlib.
4770-xÚ�ŽM
4771-Â0F÷9Å€nS̶7p!
4772@¢Ò@þh&¢·×v"XÚ…›Y|óÞ|’qÑà
4773-™Þëz�
4774-òK†¶è
4775-~§dªG8N‘°7¤oÚ
4776F
4777êñ>,AÎvaà¬-
4778-ÂB¥›çç…>pçjqÑ2ϙ܃9J£«Í˜çµ’óKÙà}Ê#­Nlªß¿›Ôºirßél}Ñ
4779\ No newline at end of file
4780
4781=== removed file 'src/postorius/doc/_build/html/py-modindex.html'
4782--- src/postorius/doc/_build/html/py-modindex.html 2012-10-05 15:45:38 +0000
4783+++ src/postorius/doc/_build/html/py-modindex.html 1970-01-01 00:00:00 +0000
4784@@ -1,131 +0,0 @@
4785-
4786-
4787-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4788- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4789-
4790-
4791-<html xmlns="http://www.w3.org/1999/xhtml">
4792- <head>
4793- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4794-
4795- <title>Python Module Index &mdash; Postorius 1.0a2 documentation</title>
4796-
4797- <link rel="stylesheet" href="_static/default.css" type="text/css" />
4798- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
4799-
4800- <script type="text/javascript">
4801- var DOCUMENTATION_OPTIONS = {
4802- URL_ROOT: '',
4803- VERSION: '1.0a2',
4804- COLLAPSE_INDEX: false,
4805- FILE_SUFFIX: '.html',
4806- HAS_SOURCE: true
4807- };
4808- </script>
4809- <script type="text/javascript" src="_static/jquery.js"></script>
4810- <script type="text/javascript" src="_static/underscore.js"></script>
4811- <script type="text/javascript" src="_static/doctools.js"></script>
4812- <link rel="top" title="Postorius 1.0a2 documentation" href="index.html" />
4813-
4814-
4815-
4816- </head>
4817- <body>
4818- <div class="related">
4819- <h3>Navigation</h3>
4820- <ul>
4821- <li class="right" style="margin-right: 10px">
4822- <a href="genindex.html" title="General Index"
4823- accesskey="I">index</a></li>
4824- <li class="right" >
4825- <a href="#" title="Python Module Index"
4826- >modules</a> |</li>
4827- <li><a href="index.html">Postorius 1.0a2 documentation</a> &raquo;</li>
4828- </ul>
4829- </div>
4830-
4831- <div class="document">
4832- <div class="documentwrapper">
4833- <div class="bodywrapper">
4834- <div class="body">
4835-
4836-
4837- <h1>Python Module Index</h1>
4838-
4839- <div class="modindex-jumpbox">
4840- <a href="#cap-p"><strong>p</strong></a> |
4841- <a href="#cap-t"><strong>t</strong></a>
4842- </div>
4843-
4844- <table class="indextable modindextable" cellspacing="0" cellpadding="2">
4845- <tr class="pcap"><td></td><td>&nbsp;</td><td></td></tr>
4846- <tr class="cap" id="cap-p"><td></td><td>
4847- <strong>p</strong></td><td></td></tr>
4848- <tr>
4849- <td><img src="_static/minus.png" class="toggler"
4850- id="toggle-1" style="display: none" alt="-" /></td>
4851- <td>
4852- <tt class="xref">postorius</tt></td><td>
4853- <em></em></td></tr>
4854- <tr class="cg-1">
4855- <td></td>
4856- <td>&nbsp;&nbsp;&nbsp;
4857- <a href="development.html#module-postorius.tests.test_utils"><tt class="xref">postorius.tests.test_utils</tt></a></td><td>
4858- <em></em></td></tr>
4859- <tr class="pcap"><td></td><td>&nbsp;</td><td></td></tr>
4860- <tr class="cap" id="cap-t"><td></td><td>
4861- <strong>t</strong></td><td></td></tr>
4862- <tr>
4863- <td><img src="_static/minus.png" class="toggler"
4864- id="toggle-2" style="display: none" alt="-" /></td>
4865- <td>
4866- <tt class="xref">tests</tt></td><td>
4867- <em></em></td></tr>
4868- <tr class="cg-2">
4869- <td></td>
4870- <td>&nbsp;&nbsp;&nbsp;
4871- <a href="using.html#module-tests.tests"><tt class="xref">tests.tests</tt></a></td><td>
4872- <em></em></td></tr>
4873- </table>
4874-
4875-
4876- </div>
4877- </div>
4878- </div>
4879- <div class="sphinxsidebar">
4880- <div class="sphinxsidebarwrapper">
4881-<div id="searchbox" style="display: none">
4882- <h3>Quick search</h3>
4883- <form class="search" action="search.html" method="get">
4884- <input type="text" name="q" />
4885- <input type="submit" value="Go" />
4886- <input type="hidden" name="check_keywords" value="yes" />
4887- <input type="hidden" name="area" value="default" />
4888- </form>
4889- <p class="searchtip" style="font-size: 90%">
4890- Enter search terms or a module, class or function name.
4891- </p>
4892-</div>
4893-<script type="text/javascript">$('#searchbox').show(0);</script>
4894- </div>
4895- </div>
4896- <div class="clearer"></div>
4897- </div>
4898- <div class="related">
4899- <h3>Navigation</h3>
4900- <ul>
4901- <li class="right" style="margin-right: 10px">
4902- <a href="genindex.html" title="General Index"
4903- >index</a></li>
4904- <li class="right" >
4905- <a href="#" title="Python Module Index"
4906- >modules</a> |</li>
4907- <li><a href="index.html">Postorius 1.0a2 documentation</a> &raquo;</li>
4908- </ul>
4909- </div>
4910- <div class="footer">
4911- &copy; Copyright 2012, The Free Software Foundation.
4912- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.2.
4913- </div>
4914- </body>
4915-</html>
4916\ No newline at end of file
4917
4918=== removed file 'src/postorius/doc/_build/html/search.html'
4919--- src/postorius/doc/_build/html/search.html 2012-08-21 19:58:00 +0000
4920+++ src/postorius/doc/_build/html/search.html 1970-01-01 00:00:00 +0000
4921@@ -1,105 +0,0 @@
4922-
4923-
4924-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4925- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4926-
4927-
4928-<html xmlns="http://www.w3.org/1999/xhtml">
4929- <head>
4930- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4931-
4932- <title>Search &mdash; Postorius 1.0a2 documentation</title>
4933-
4934- <link rel="stylesheet" href="_static/default.css" type="text/css" />
4935- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
4936-
4937- <script type="text/javascript">
4938- var DOCUMENTATION_OPTIONS = {
4939- URL_ROOT: '',
4940- VERSION: '1.0a2',
4941- COLLAPSE_INDEX: false,
4942- FILE_SUFFIX: '.html',
4943- HAS_SOURCE: true
4944- };
4945- </script>
4946- <script type="text/javascript" src="_static/jquery.js"></script>
4947- <script type="text/javascript" src="_static/underscore.js"></script>
4948- <script type="text/javascript" src="_static/doctools.js"></script>
4949- <script type="text/javascript" src="_static/searchtools.js"></script>
4950- <link rel="top" title="Postorius 1.0a2 documentation" href="index.html" />
4951- <script type="text/javascript">
4952- jQuery(function() { Search.loadIndex("searchindex.js"); });
4953- </script>
4954-
4955-
4956- </head>
4957- <body>
4958- <div class="related">
4959- <h3>Navigation</h3>
4960- <ul>
4961- <li class="right" style="margin-right: 10px">
4962- <a href="genindex.html" title="General Index"
4963- accesskey="I">index</a></li>
4964- <li class="right" >
4965- <a href="py-modindex.html" title="Python Module Index"
4966- >modules</a> |</li>
4967- <li><a href="index.html">Postorius 1.0a2 documentation</a> &raquo;</li>
4968- </ul>
4969- </div>
4970-
4971- <div class="document">
4972- <div class="documentwrapper">
4973- <div class="bodywrapper">
4974- <div class="body">
4975-
4976- <h1 id="search-documentation">Search</h1>
4977- <div id="fallback" class="admonition warning">
4978- <script type="text/javascript">$('#fallback').hide();</script>
4979- <p>
4980- Please activate JavaScript to enable the search
4981- functionality.
4982- </p>
4983- </div>
4984- <p>
4985- From here you can search these documents. Enter your search
4986- words into the box below and click "search". Note that the search
4987- function will automatically search for all of the words. Pages
4988- containing fewer words won't appear in the result list.
4989- </p>
4990- <form action="" method="get">
4991- <input type="text" name="q" value="" />
4992- <input type="submit" value="search" />
4993- <span id="search-progress" style="padding-left: 10px"></span>
4994- </form>
4995-
4996- <div id="search-results">
4997-
4998- </div>
4999-
5000- </div>
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches