send overlay message data to own view

This commit is contained in:
Oskar Hahn 2012-08-15 18:00:22 +02:00
parent 705fb972b1
commit 423f04d0be
4 changed files with 43 additions and 25 deletions

View File

@ -165,7 +165,6 @@ def get_all_widgets(request, session=False):
continue continue
for widget in modul_widgets: for widget in modul_widgets:
print widget, session_widgets.get(widget, True)
if (widget.permission_required is None or if (widget.permission_required is None or
request.user.has_perm(widget.permission_required)): request.user.has_perm(widget.permission_required)):
if not session or session_widgets.get(widget.get_name(), True): if not session or session_widgets.get(widget.get_name(), True):

View File

@ -2,7 +2,7 @@
{% load i18n %} {% load i18n %}
{% load tags %} {% load tags %}
<form id="overlay_message" action="" method="post" style="display:inline">{% csrf_token %} <form id="overlay_message" action="{% url projector_overlay_message %}" method="post" style="display:inline">{% csrf_token %}
<input id="overlay_message_text" name='message_text' type='text' style='width: 40%' value="{% get_config 'projector_message' %}"> <input id="overlay_message_text" name='message_text' type='text' style='width: 40%' value="{% get_config 'projector_message' %}">
<button type="submit" class="button" name='message'> <button type="submit" class="button" name='message'>
<span class="icon ok">{% trans 'Apply' %}</span> <span class="icon ok">{% trans 'Apply' %}</span>

View File

@ -14,7 +14,8 @@ from django.conf.urls.defaults import patterns, url
from openslides.projector.views import (DashboardView, ActivateView, from openslides.projector.views import (DashboardView, ActivateView,
CustomSlideCreateView, CustomSlideUpdateView, CustomSlideDeleteView, CustomSlideCreateView, CustomSlideUpdateView, CustomSlideDeleteView,
CountdownEdit, ProjectorEdit, Projector, ActivateOverlay, SelectWidgetsView) CountdownEdit, ProjectorEdit, Projector, ActivateOverlay, SelectWidgetsView,
OverlayMessageView)
urlpatterns = patterns('', urlpatterns = patterns('',
@ -61,6 +62,11 @@ urlpatterns = patterns('',
name='projector_select_widgets', name='projector_select_widgets',
), ),
url(r'^overlay_message/$',
OverlayMessageView.as_view(),
name='projector_overlay_message',
),
url(r'^new/$', url(r'^new/$',
CustomSlideCreateView.as_view(), CustomSlideCreateView.as_view(),
name='customslide_new', name='customslide_new',

View File

@ -15,6 +15,7 @@ from time import time
from django.conf import settings from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.core.context_processors import csrf
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.db import transaction from django.db import transaction
from django.db.models import Q from django.db.models import Q
@ -46,21 +47,6 @@ class DashboardView(TemplateView, AjaxMixin):
template_name = 'projector/dashboard.html' template_name = 'projector/dashboard.html'
permission_required = 'projector.can_see_dashboard' permission_required = 'projector.can_see_dashboard'
def post(self, request, *args, **kwargs):
# TODO: Try to put this code in the widget
if 'message' in request.POST:
projector_message_set(request.POST['message_text'])
elif 'message-clean' in request.POST:
projector_message_delete()
if request.is_ajax():
return self.ajax_get(request, *args, **kwargs)
return self.get(request, *args, **kwargs)
def get_ajax_context(self, **kwargs):
return {
'overlay_message': config['projector_message'],
}
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(DashboardView, self).get_context_data(**kwargs) context = super(DashboardView, self).get_context_data(**kwargs)
@ -279,6 +265,28 @@ class CountdownEdit(RedirectView):
} }
class OverlayMessageView(RedirectView):
"""
Sets or clears the overlay message
"""
url = 'dashboard'
allow_ajax = True
permission_required = 'projector.can_manage_projector'
def pre_post_redirect(self, request, *args, **kwargs):
if 'message' in request.POST:
projector_message_set(request.POST['message_text'])
elif 'message-clean' in request.POST:
projector_message_delete()
def get_ajax_context(self, **kwargs):
return {
'overlay_message': config['projector_message'],
}
class ActivateOverlay(RedirectView): class ActivateOverlay(RedirectView):
""" """
Activate or deactivate an overlay. Activate or deactivate an overlay.
@ -384,25 +392,30 @@ def get_widgets(request):
active=False) active=False)
projector_overlay.save() projector_overlay.save()
overlays.append(projector_overlay) overlays.append(projector_overlay)
context = {
'overlays':overlays,
'countdown_time': config['countdown_time'],
'countdown_state' : config['countdown_state']}
context.update(csrf(request))
widgets.append(Widget( widgets.append(Widget(
name='overlays', name='overlays',
display_name=_('Manage Overlays'), display_name=_('Manage Overlays'),
template='projector/overlay_widget.html', template='projector/overlay_widget.html',
permission_required='projector.can_manage_projector', permission_required='projector.can_manage_projector',
default_column=2, default_column=2,
context={ context=context))
'overlays':overlays,
'countdown_time': config['countdown_time'],
'countdown_state' : config['countdown_state']}))
# Custom slide widget # Custom slide widget
context = {
'slides': ProjectorSlide.objects.all(),
'welcomepage_is_active': not bool(config["presentation"])}
widgets.append(Widget( widgets.append(Widget(
name='custom_slide', name='custom_slide',
display_name=_('Custom Slide'), display_name=_('Custom Slide'),
template='projector/custom_slide_widget.html', template='projector/custom_slide_widget.html',
context={ context=context,
'slides': ProjectorSlide.objects.all(),
'welcomepage_is_active': not bool(config["presentation"])},
permission_required='projector.can_manage_projector', permission_required='projector.can_manage_projector',
default_column=2)) default_column=2))