Commit Graph

535 Commits

Author SHA1 Message Date
Oskar Hahn
0d1a8aa174 Merge pull request #1878 from emanuelschuetze/fix1783
Add checkbox 'show as agenda item'. (Fixes #1783)
2016-01-24 22:16:43 +01:00
Emanuel Schuetze
9ddc558085 Add checkbox 'show as agenda item'. (Fixes #1783)
Used for customslide, motion and assignment forms.
Changed default value of agenda.type to HIDDEN_ITEM (=2) in model.py.
2016-01-23 20:22:56 +01:00
Emanuel Schuetze
4d6aade16a Send option request for config page just once (Fixes #1813)
Add permission check in config template.
2016-01-23 01:02:05 +01:00
Emanuel Schuetze
94366f35ab Use os-perms instead of os-perms-lite. Removed os-perms-lite. (Fixes #1826) 2016-01-21 22:26:11 +01:00
Emanuel Schuetze
646bf52ea7 Show countdown in red if negative (projector and control panel).
Show 00:00 instead of --:--
2016-01-21 21:43:02 +01:00
Emanuel Schuetze
b291473c61 Set guest_enabled in rootScope to use it in login form after reload. (Fixes #1849)
- Justified login form elements (same width).
2016-01-21 21:14:55 +01:00
Emanuel Schuetze
42f9cfdf45 List views: show number of filtered AND total rows.
Improve css animation for ng-enter/ng-leave.
2016-01-21 20:43:04 +01:00
Emanuel Schuetze
76dc29cddf Use uib-alert instead of deprecated alert tag. 2016-01-18 21:09:28 +01:00
Emanuel Schuetze
851252dfe8 Format all JavaScript functions in same syntax.
Required for use minified js code in production mode.
2016-01-17 22:32:48 +01:00
Emanuel Schuetze
0e24d9b632 Modify motion/assignment/customslide in form dialog without updating list/detail view. 2016-01-17 21:19:32 +01:00
Oskar Hahn
440a38b387 Merge pull request #1843 from emanuelschuetze/motionsTemplate
Motion template fixes
2016-01-14 08:49:48 +01:00
Emanuel Schuetze
bc60b7e7ca Several template improvements
- Move Languages services from site.js to base.js
  Now the detected browser language is used as projector language.
- Use verboseName instead of agendaSupplement.
- Show submitters on projector (load Users on Controller).
- Improve list of speakers (slide and item detail).
2016-01-14 00:14:48 +01:00
Emanuel Schuetze
2f8c894104 Motion template fixes
- Fix missing workflows in Motion create form.
- redesign motion meta box
- use table format for motion voting results
2016-01-13 14:32:15 +01:00
Oskar Hahn
007a92a96b Merge pull request #1841 from emanuelschuetze/ProjectorRedesign
Redesign projector template (Fixes #1787)
2016-01-13 11:28:06 +01:00
Oskar Hahn
aa6a099840 Merge pull request #1809 from emanuelschuetze/CustomSlideAttachment
Custom slide attachment
2016-01-13 11:26:46 +01:00
Emanuel Schuetze
d0b9b2a492 Added reduced projector logo.
Added openslides blue color value to logo README.
2016-01-13 10:47:27 +01:00
Emanuel Schuetze
09b88fb4a6 Redesign projector template. 2016-01-13 10:28:49 +01:00
Emanuel Schuetze
93e2296bdc A lot of template fixes
- Reset password from current (unsaved) value of default_password.
- MotionForm, AssignmentForm and UserForm factory for open ngDialog.
  Fixes edit url redirect problem.
- Added back-to-detail-view-button to list of speakers view.
- Add translation context.
- Fixed (missing) translation strings.
- Fixed tags and category list views.
- motion detail: Use select box for changing state.
- motion slide updated
2016-01-13 10:22:24 +01:00
Emanuel Schuetze
f2375008d8 Added attachments for customslide views. (Fixes #1681) 2016-01-10 11:55:37 +01:00
Norman Jäckel
ca659351eb Merge pull request #1825 from emanuelschuetze/fixTemplates
Fixed permissions in list views.
2016-01-10 01:07:51 +01:00
Oskar Hahn
87d647ac4d Merge pull request #1824 from ostcar/fix_tornado
Fix tornado
2016-01-10 01:03:16 +01:00
Emanuel Schuetze
071b0a76be Fixed permissions in list views. 2016-01-10 01:02:13 +01:00
Norman Jäckel
7005ab7f64 Disabled autocomplete for chat box. 2016-01-10 00:46:23 +01:00
Oskar Hahn
4bc0b1d19c fix autoupdate and hide some groups in user edit form 2016-01-10 00:44:02 +01:00
Oskar Hahn
c30116f5c1 Merge pull request #1815 from emanuelschuetze/candidateElected
Mark candidate as elected. Updated assignment detail.
2016-01-09 22:37:39 +01:00
Emanuel Schuetze
2c46d3ae0a Mark candidate as elected. Updated assignment detail. 2016-01-09 22:35:04 +01:00
Oskar Hahn
3ae6482863 Fix autoupdate of config 2016-01-09 22:13:55 +01:00
Norman Jäckel
544efdb06e Merge pull request #1806 from ostcar/fix_autoupdate_after_reload
Fix autoupdate after auth
2016-01-09 18:55:24 +01:00
Oskar Hahn
5069649e14 Fix autoupdate after auth
Remove data after logout
2016-01-09 18:25:18 +01:00
Norman Jäckel
193d318bc9 Merge pull request #1803 from ostcar/os_filter
Add osFilter that filters for an explicit text
2016-01-09 17:07:31 +01:00
Emanuel Schuetze
4a9f265b68 Used is_hidden instead of item.typ. Improve hidden filter.
Fixed JS error in users and assignments.
2016-01-09 16:55:21 +01:00
Oskar Hahn
e3b6fd8d6d Add osFilter that filters for an explicit text 2016-01-09 16:45:47 +01:00
Norman Jäckel
68ec516e6f Merge pull request #1799 from emanuelschuetze/loginText
Show info text in login form (Fixes #1754)
2016-01-09 16:07:55 +01:00
Emanuel Schuetze
11470d3b57 Move welcome config values to general section.
Use textarea for welcome text.
2016-01-09 16:05:06 +01:00
Emanuel Schuetze
b035ee7d7c Improved legal notice page (Fixes #267) 2016-01-09 14:44:49 +01:00
Emanuel Schuetze
363c928517 Show info text in login form (Fixes #1754) 2016-01-09 14:22:32 +01:00
Emanuel Schuetze
54b1c8e350 Show agenda titles with correct numbering 2016-01-09 14:01:30 +01:00
Norman Jäckel
d7e39be708 Added config field for legal notes. 2016-01-09 13:01:18 +01:00
Emanuel Schuetze
5cab3bf3dc Added indentation of subitems on agenda slide (Fixes #1716) 2016-01-09 10:34:34 +01:00
Emanuel Schuetze
de77cfc38c Fixed zooming/scrolling on slides. 2016-01-08 21:31:58 +01:00
Norman Jäckel
d3e8c68a51 Merge pull request #1775 from emanuelschuetze/templateStuff
Fixed some template bugs (#1727)
2015-12-19 11:53:53 +01:00
Emanuel Schuetze
c275b08178 Fixed some template bugs (#1727)
- Fixed z-index of messages and countdowns.
- Sidebar: Live view open by default. Improve section style.
- Set default value for open_posts in assignments create form.
- Redefine default values in motions create form.
2015-12-12 00:30:05 +01:00
Emanuel Schuetze
041b01afe5 Login dialog behavior if guest mode enabled/disabled (Fixes #1750) 2015-12-11 21:18:45 +01:00
Emanuel Schuetze
5d29af5f52 Improved login form.
- Add redirect after aborting login. (Fixes #1762)
- Use new state paramater 'guest_enabled' for login form.
2015-12-11 13:45:53 +01:00
Norman Jäckel
24cb58dc12 Added guest enabled info to WhoAmI view. 2015-12-11 13:44:58 +01:00
Emanuel Schuetze
f050e04f0a Redirect to login dialog if user is not logged in (Fixes #1750) 2015-12-09 20:45:52 +01:00
Norman Jäckel
1b1e8f8ba2 Used our own repository for Open Sans font. 2015-12-06 23:55:30 +01:00
Emanuel Schuetze
5c6977c46d Template fixes 2015-12-06 17:26:10 +01:00
Oskar Hahn
37cd431aa9 Merge pull request #1737 from emanuelschuetze/motion-csv-import
Add motion csv import (Fixes #1675)
2015-12-05 23:53:08 +01:00
Emanuel Schuetze
d987a1138d Added motion csv import (Fixes #1675)
using pre-import checks and preview table.
2015-12-05 21:44:19 +01:00
Emanuel Schuetze
f5452082f0 Use transparent favicon.
- Added favicon to projector template.
2015-12-02 14:20:59 +01:00
Norman Jäckel
696bfb0883 Fixed comment. 2015-12-01 15:45:35 +01:00
Emanuel Schuetze
b81704a88f Fixed translations in agendaSupplement. 2015-12-01 13:45:54 +01:00
Emanuel Schuetze
e23121ed0f Updated language menu.
- improved header menu style
- define new Languages factory
- make it easier to define new languages
2015-12-01 12:06:15 +01:00
Emanuel Schuetze
bf940b177c Fixed gettext strings in JavaScript.
- Added browser lanugage detection.
- Use gettextCatalog.getString(..) instead of gettext(..) in JS code.
- updated pot file
2015-11-30 23:52:42 +01:00
Emanuel Schuetze
fa267b68c2 New template design
- Great thanks to Jörn Bensch (from triagonale.de) for new base
  template!
- A lot of adaptations in all templates for new design.
2015-11-30 20:36:33 +01:00
Emanuel Schuetze
2b5c9c09b2 Template improvements
- use modal dialogs for new/edit views of customslide/motions/assigments
- use hover actions in all list views
- Show assignment candidate names
- support yesnoabstain/vote assignment poll
- Generic solution for open edit dialog.
2015-11-29 22:26:59 +01:00
Oskar Hahn
9a7dea26e0 Angular: Eject assignment related users before a assignment is updated 2015-11-27 22:26:30 +01:00
Emanuel Schuetze
35a8042759 Assignments template improvements
- list view with quickview
- ngDialog for create/update view
- candidates
- polls
2015-11-27 00:19:37 +01:00
Emanuel Schuetze
968083e9e5 Improved related agenda items
- Added QuickEdit mode for related agenda items
- show/hide hidden agenda items
- Added ng-dialog for modal create/update dialogs of customslides
- use generic links for list of speakers, edit, delete, project
- Moved projector elements to sidebar of index template (In progress!
  It will be improved with new base template design).
- Fixed error if chat messages is empty.
- Moved ngSanitize to base.js to use ng-bind-html in projector slides.
2015-11-25 12:18:14 +01:00
Emanuel Schuetze
3c0fcfebac Reworked on chatbox in base template. 2015-11-22 22:46:18 +01:00
Norman Jäckel
b1dfd2a4e9 Added first chatbox draft on client side. 2015-11-22 22:45:59 +01:00
Norman Jäckel
1016af3c52 Updated English language files. 2015-11-20 23:23:01 +01:00
Emanuel Schuetze
e3f57a250c Use custom ckeditor options 2015-11-17 23:25:09 +01:00
Norman Jäckel
d299579f16 Added CKEditor to custom slide create and edit form. 2015-11-17 23:25:09 +01:00
Emanuel Schuetze
ed72a90306 Reworked all motions templates.
motion detail:
- added progres bar for motionpoll
- added support/unsupport function
- show log

motion list:
- added state filter
- added css animations for enter/leave

motion form:
- use angular-formly (instead of old ng-fab-forms with no angular 1.4.x support)

general:
- Workflow states use new field 'css_class' (instead of unused
  'icon'). Added migration file.
- added 'allowed_actions' to rest api for each motion (by Norman)
- updated all JavaScript dependencies (bower.json)
2015-11-11 10:50:49 +01:00
Oskar Hahn
c379544e97 Fixed motion states, handled workflow field. 2015-11-11 10:50:49 +01:00
Emanuel Schuetze
5b37a21c87 Motion detail updated for polls.
bower.json: updated ui-select
New QuickEdit feature in motion list.
2015-11-11 10:50:49 +01:00
Norman Jäckel
8154b0324b Added possibility to reset password. Work on user app in general. 2015-11-08 22:10:24 +01:00
Oskar Hahn
12a08b9732 New Agenda Item
Changed agenda item, so it can not be manualy created, but is always created
when a custom slide, motion or assignment is created.
2015-10-29 15:44:43 +01:00
Norman Jäckel
32b23df763 Split and cleaned up JS files. Added test. 2015-10-22 00:28:01 +02:00
Oskar Hahn
1f0ab173d3 Fix os-perms-lite to make it compatible to ng-show and ng-hide 2015-10-21 21:21:48 +02:00
Emanuel Schuetze
dda16af532 Added controls for projector elements
countdowns, messages, scale/scroll/edit current slide
Use global serverOffset.
Fixed #1645 (wrong time of projector clock).
Show countdown description on projector slide.
2015-10-08 19:21:25 +02:00
Oskar Hahn
264895b773 Configure js-data for projector elements to "replace" on inject.
fixes #1632
2015-09-17 12:04:45 +02:00
Norman Jäckel
187cb0c42f Fixed blue line for active projector elements. 2015-09-16 23:59:20 +02:00
Emanuel Schuetze
7f9c8b6a38 Agenda item list: new multiselect delete mode
Remove action column.
2015-09-14 20:35:24 +02:00
Norman Jäckel
8c48d67df0 Fixed projector. 2015-09-14 20:30:37 +02:00
Oskar Hahn
2c64a161ac fix projector 2015-09-06 10:24:15 +02:00
Oskar Hahn
d8e9ef5575 Merge pull request #1616 from ostcar/main_menu
Autogenerate the main menu.
2015-09-05 18:19:59 +02:00
Oskar Hahn
2da2177c49 Autogenerate the main menu. 2015-09-05 17:23:47 +02:00
Emanuel Schuetze
60002d9111 Added user profile view. 2015-09-05 17:22:37 +02:00
Oskar Hahn
fbc57cc23a Reload config after login
Fix errors by saving tags to motions
2015-09-05 11:26:41 +02:00
Oskar Hahn
6674ea85b7 Updated js-data to 2.0
Added js-data relation for the motion and agenda app

Added improved load function
2015-09-04 21:05:49 +02:00
Oskar Hahn
291f60ee9f Added a way to load angular apps dynamical 2015-07-01 20:10:40 +02:00
Emanuel Schuetze
bc74a2983c Fixed typo. Removed unused config.js. 2015-06-29 20:23:10 +02:00
Norman Jäckel
87cce491a0 Merge pull request #1583 from emanuelschuetze/agenda-slides
Use item-detail and item-list slides for agenda app.
2015-06-29 18:05:45 +02:00
Emanuel Schuetze
6f985ef483 Use item-detail and item-list slides for agenda app. 2015-06-29 16:45:46 +02:00
Oskar Hahn
3dead745c6 Let the config app accept values that can be converted to the right type.
Fixed config app
2015-06-29 15:41:36 +02:00
Oskar Hahn
e042c668d5 Moved config app into the core app 2015-06-29 15:15:33 +02:00
Oskar Hahn
c22791d6c9 Merge pull request #1573 from emanuelschuetze/slides
Agenda item slide template. Some template improvements.
2015-06-27 09:48:02 +02:00
Emanuel Schuetze
f75516c7bb Agenda slide templates. Some template improvements.
- User import
- show linebreaks for long text
- some style work
- item detail and agenda list slide
2015-06-25 14:19:43 +02:00
Emanuel Schuetze
6ea14cd2c6 Angular template for config app.
Added directive for config fields
2015-06-25 10:52:28 +02:00
Emanuel Schuetze
c2920407bb Template improvements
- Activate slides for users, customslides, motions, assignments.
- Add delete confirm message.
- Fixed required form fields.
- Added version template.
- Improved user import. Updated csv files.
2015-06-25 00:15:56 +02:00
Oskar Hahn
367404b20d Added projector methods to user model 2015-06-24 13:07:49 +02:00
Norman Jäckel
95b7b16992 Merge pull request #1555 from emanuelschuetze/speakers
List of speakers with angularjs
2015-06-22 21:37:39 +02:00
Emanuel Schuetze
8075b0adbb List of speakers with angularjs.
- Add/remove user to/from list
- Open/close list
2015-06-22 14:34:23 +02:00
Emanuel Schuetze
f006b99caf Added style to projector slide.
Added Customslide views.
2015-06-22 14:27:19 +02:00
Oskar Hahn
a4c00d5ee3 Angular Client
* Split angular app into a site- and a projector app
* Created client slide api and slides for customslide and user
* JS-function to activate a slide
2015-06-18 23:23:34 +02:00
Oskar Hahn
dc675e173b Removed old static files 2015-06-18 18:24:54 +02:00
Norman Jäckel
632ca2bd9a Renamed config variables. Fixed error in settings. 2015-06-17 12:07:09 +02:00
Emanuel Schuetze
8d638a908d Added new angularjs templates
for agenda, motions, assignments, users and mediafiles apps.

Users app:
- Show permissions in group form (Fixed #1500)
- Added experimental csv import for users.

Agenda:
- new agenda sort view.
- Added experimental angular-xeditable for item-list view.

General:
- Added core.tag templates.
- Added mediafiles templates.
- Remove old template and js files. Remove old views.
- Skip old tests.

Added external angular modules:
- angular-loading-bar (Fixed #1448)
- ui-tree (for sorting agenda tree)
- ng-fab-forms (for better form validation)
- ui-bootstrap (for modal window, dropdown, popover)
- ngBootbox (for confirm delete dialogs in agenda and users app)
2015-05-06 09:19:16 +02:00
Oskar Hahn
80ca3f2484 Use ui-router to handle django urls
See: #1453
2015-03-02 19:03:19 +01:00
Emanuel Schuetze
db3625ec91 Angular templates for users app. Use angular-gettext.
- Use new "Font Awesome" icons.
- Sorting columns.
- Filter table.
- New focusMe directive.
- Delete user
- Use ui-sref.
- Use angular-gettext for i18n.
- Added sample po files for DE and FR.
- group views
- use google coding style (2 spaces, optional end tags, etc)
2015-03-02 16:25:36 +01:00
Norman Jäckel
681d1115c9 Merge pull request #1499 from ostcar/autoupdate_delete
Autoupdate for delete views.
2015-03-01 16:52:37 +01:00
Oskar Hahn
86c189c964 Autoupdate for delete views
Fixes: #1495

Also fixed the (example) assignment angular code
2015-03-01 08:42:47 +01:00
Oskar Hahn
f8e18a8900 Altered ui-router definitions
1. Allow trailing slash in urls
2. Use integer ids for detail views as default
2015-03-01 07:15:44 +01:00
Oskar Hahn
1969416e64 Implemented auth via AngularJS
Also added the derective osPerms to check if the current user has permissions.
Removed old Django views and urls for user.
Created utils.views.APIView which should be used instead of the AjaxView.

Fixes: #1470
Fixes: #1454
2015-02-16 11:42:48 +01:00
Oskar Hahn
d31be54817 Update angular-data to js-data (angular-data 2.1)
Also reload all data after 5 minutes
2015-02-13 23:27:27 +01:00
Oskar Hahn
ac6f3de60d Used AngularUI Router for more generic URL routing. 2015-02-12 09:52:07 +01:00
Oskar Hahn
7171a71919 angular single page application 2015-02-05 23:06:09 +01:00
Emanuel Schuetze
18fe7e2d89 Update to bootstrap 3.3.1. 2015-01-21 12:23:32 +01:00
Norman Jäckel
f7cb518430 Used Bower and gulp to manage third party JavaScript and Cascading Style Sheets libraries.
Cleaned up settings. Updated development section in README.rst.

Removed jQuery, jquery.cookie and bootstrap from repository.
2015-01-17 00:12:04 +01:00
Oskar Hahn
bcb1ee1213 Tags for motions, agenda items and assignments 2015-01-03 17:00:48 +01:00
Emanuel Schuetze
648d5a6ad7 Fixed CKEditor stuff:
- Added missing insertpre plugin and allow <pre> tag with class
  attribute. Added font style to base.css.
- Removed unused link to old ckeditor.css (now managed by
  django-ckeditor).
2014-07-14 22:54:53 +02:00
Emanuel Schütze
bf8bb31cdb Merge pull request #1298 from emanuelschuetze/fix-995
Improved html templates for mobile devices (responsive).
2014-05-19 22:17:26 +02:00
Oskar Hahn
16a6ad4a9e Merge pull request #1278 from rolandgeider/ckeditor
Replace own CKeditor with dedicated app
2014-05-19 15:15:54 +02:00
Roland Geider
e9d52245cb Replace own CKeditor with dedicated app 2014-05-19 00:00:18 +02:00
Emanuel Schuetze
802fde42ce Improved html templates for mobile devices (responsive).
Fixed #995 (Use responsive navbar for main menu in backend template)
2014-05-18 22:19:02 +02:00
Emanuel Schuetze
6cb99d9128 Fixed #1104 (Enable copy/paste in dashboard widgets) 2014-05-18 20:42:29 +02:00
Norman Jäckel
ecf0e8b0d7 Cleaned up some widgets and the base.css. Removed icon definitions. 2014-05-15 17:23:46 +02:00
Oskar Hahn
921e4ab2bd Merge pull request #1268 from emanuelschuetze/translationstrings
Updated translation strings.
2014-05-05 16:15:44 +02:00
Emanuel Schütze
9c43523f06 Updated translation strings.
Improved shortcut countdown layout.
2014-05-04 20:49:05 +02:00
Andy Kittner
4af6fe1c9a Fix #1253 data table in motion overview displayed incorrectly 2014-05-04 16:40:50 +02:00
Oskar Hahn
b232ed0c96 Merge pull request #1221 from emanuelschuetze/fix-1197
Fixed #1197: Use big heading for custom slides without text.
2014-04-27 21:08:18 +02:00
Emanuel Schütze
3b3597aa1f Improved chatbox style. Updated jquery cookie and jquery ui.
- Fixed js error on dashboard page if no cookie is found.
- Use cookies only until end of session. For dashboard cookies use url /dashboard only.
- Updated permission numbering of builtin groups and added can_use_chat permission.
- Used minified version of jquery.cookie.
- Added TODO comment for django session way from pull request.
2014-04-27 20:58:22 +02:00
Norman Jäckel
42796f6118 Added global chatbox for managers. 2014-04-27 20:58:22 +02:00
Emanuel Schütze
d44f385ba8 Fixed #1197: Use big heading for custom slides without text.
Keep last projector scale/scroll values after activate new slide.
2014-04-27 20:55:06 +02:00
Oskar Hahn
3d092f6dcc countdown shortcuts 2014-04-27 19:48:57 +02:00
Norman Jäckel
78077e4ab1 Fix syntax and style errors and errors after deficient merge conflic
resolving after branch merging.
2014-04-08 21:02:09 +02:00
Norman Jäckel
e6dad6d087 Merge part of stable/1.5.x into master.
Conflicts:
	CHANGELOG
	extras/win32-portable/create_portable.txt
	extras/win32-portable/prepare_portable.py
	openslides/__init__.py
	openslides/core/templates/base.html
	requirements_production.txt
	tests/config/test_config.py
2014-04-08 20:33:07 +02:00
Emanuel Schütze
3d7ecab8e4 Merge commit '7addd69050a69b9d02aacba116939829497ca338' into MergeStablePart2
Conflicts:
	extras/win32-portable/create_portable.txt
	extras/win32-portable/prepare_portable.py
	openslides/assignment/views.py
	openslides/core/static/img/circle.png
	openslides/motion/pdf.py
	openslides/utils/pdf.py
2014-04-07 22:35:52 +02:00
Oskar Hahn
a6fa8457cc Merge remote-tracking branch 'openslides/stable/1.5.x'
Conflicts:
	extras/win32-portable/create_portable.txt
	extras/win32-portable/prepare_portable.py
	openslides/motion/templates/motion/motion_list.html
	openslides/projector/templates/projector.html
	requirements_production.txt
2014-03-12 19:29:22 +01:00
Emanuel Schuetze
d8d2ad002a Rename and clean up static direcories.
- rename static subdirs to css and js
- move global static dir to core/static, changed
- move global templates dir to core/templates
- check comments and code style of all our own CSS and JS files
- minor changes related to the changes of template and static files
2014-01-14 23:27:12 +01:00
Norman Jäckel
21ff62dd32 Changes in projector and core app and in utils.
Changed api for main menu entries.
Enhanced http error pages using a classed based views.
Moved dashboard and select widgets view from projector to core app.
Also some small clean ups.
2014-01-10 16:17:54 +01:00
Norman Jäckel
1fb1f17d15 New API for widgets using a metaclass.
It is now possible to define a default state and to submit extra stylefiles and javascript files when defining a widget in an app. This is done by a new metaclass in openslides.utils.dispatch. Also fixed some other tests.
2013-12-01 21:30:12 +01:00