Commit 28114b1a3ae531de4a427bcd1c07f26993aad962
1 parent
85fd085c
Exists in
master
and in
3 other branches
Criando a tela de configuração do servidor Jitsi
Showing
8 changed files
with
166 additions
and
8 deletions
Show diff stats
amadeus/templates/base.html
@@ -176,6 +176,7 @@ | @@ -176,6 +176,7 @@ | ||
176 | <li><a href="{% url 'mailsender:update' %}">{% trans 'Mail Sender' %}</a></li> | 176 | <li><a href="{% url 'mailsender:update' %}">{% trans 'Mail Sender' %}</a></li> |
177 | <li><a href="{% url 'security:update' %}">{% trans 'Security' %}</a></li> | 177 | <li><a href="{% url 'security:update' %}">{% trans 'Security' %}</a></li> |
178 | <li><a href="{% url 'themes:manage' %}">{% trans 'Theme' %}</a></li> | 178 | <li><a href="{% url 'themes:manage' %}">{% trans 'Theme' %}</a></li> |
179 | + <li><a href="{% url 'webconferences:settings' %}">{% trans 'Conference Settings' %}</a></li> | ||
179 | </ul> | 180 | </ul> |
180 | </div> | 181 | </div> |
181 | </div> | 182 | </div> |
webconference/forms.py
@@ -6,7 +6,7 @@ import datetime | @@ -6,7 +6,7 @@ import datetime | ||
6 | 6 | ||
7 | from subjects.models import Tag | 7 | from subjects.models import Tag |
8 | 8 | ||
9 | -from .models import Webconference | 9 | +from .models import Webconference, ConferenceSettings |
10 | 10 | ||
11 | class WebconferenceForm(forms.ModelForm): | 11 | class WebconferenceForm(forms.ModelForm): |
12 | subject = None | 12 | subject = None |
@@ -104,3 +104,19 @@ class WebconferenceForm(forms.ModelForm): | @@ -104,3 +104,19 @@ class WebconferenceForm(forms.ModelForm): | ||
104 | self.instance.tags.add(new_tag) | 104 | self.instance.tags.add(new_tag) |
105 | 105 | ||
106 | return self.instance | 106 | return self.instance |
107 | + | ||
108 | + | ||
109 | + | ||
110 | +class SettingsForm(forms.ModelForm): | ||
111 | + | ||
112 | + class Meta: | ||
113 | + model = ConferenceSettings | ||
114 | + fields = ['domain'] | ||
115 | + | ||
116 | + labels = { | ||
117 | + 'domain': _('Domain'), | ||
118 | + } | ||
119 | + | ||
120 | + help_texts = { | ||
121 | + 'domain': _('The domain of the jitsi server, e.g. meet.jit.si'), | ||
122 | + } |
@@ -0,0 +1,26 @@ | @@ -0,0 +1,26 @@ | ||
1 | +# -*- coding: utf-8 -*- | ||
2 | +# Generated by Django 1.10.4 on 2017-03-22 19:31 | ||
3 | +from __future__ import unicode_literals | ||
4 | + | ||
5 | +from django.db import migrations, models | ||
6 | + | ||
7 | + | ||
8 | +class Migration(migrations.Migration): | ||
9 | + | ||
10 | + dependencies = [ | ||
11 | + ('webconference', '0001_initial'), | ||
12 | + ] | ||
13 | + | ||
14 | + operations = [ | ||
15 | + migrations.CreateModel( | ||
16 | + name='ConferenceSettings', | ||
17 | + fields=[ | ||
18 | + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | ||
19 | + ('domain', models.CharField(max_length=100, verbose_name='Domain')), | ||
20 | + ], | ||
21 | + options={ | ||
22 | + 'verbose_name': 'Conference Setting', | ||
23 | + 'verbose_name_plural': 'Conferences Setting', | ||
24 | + }, | ||
25 | + ), | ||
26 | + ] |
webconference/models.py
@@ -30,3 +30,13 @@ class Webconference(Resource): | @@ -30,3 +30,13 @@ class Webconference(Resource): | ||
30 | 30 | ||
31 | def delete_message(self): | 31 | def delete_message(self): |
32 | return _('Are you sure you want delete the web conference') | 32 | return _('Are you sure you want delete the web conference') |
33 | + | ||
34 | +class ConferenceSettings(models.Model): | ||
35 | + domain = models.CharField(_("Domain"), max_length = 100, blank=False, null = False) | ||
36 | + | ||
37 | + class Meta: | ||
38 | + verbose_name = _("Conference Setting") | ||
39 | + verbose_name_plural = _("Conferences Setting") | ||
40 | + | ||
41 | + def __str__(self): | ||
42 | + return self.domain |
@@ -0,0 +1,51 @@ | @@ -0,0 +1,51 @@ | ||
1 | +{% extends 'base.html' %} | ||
2 | + | ||
3 | +{% load static i18n %} | ||
4 | +{% load widget_tweaks %} | ||
5 | +{% load django_bootstrap_breadcrumbs %} | ||
6 | + | ||
7 | +{% block breadcrumbs %} | ||
8 | + {{ block.super }} | ||
9 | + {% trans 'Settings: Conference' as bread %} | ||
10 | + {% breadcrumb bread 'webconferences:settings' %} | ||
11 | +{% endblock %} | ||
12 | + | ||
13 | +{% block content %} | ||
14 | + <div class="card"> | ||
15 | + <div class="card-content"> | ||
16 | + <div class="card-body"> | ||
17 | + <form method="post" action="" enctype="multipart/form-data"> | ||
18 | + {% csrf_token %} | ||
19 | + {% for field in form %} | ||
20 | + <div class="form-group{% if form.has_error %} has-error {% endif %}"> | ||
21 | + <label for="{{ field.auto_id }}">{{ field.label }} <span>*</span></label> | ||
22 | + {% render_field field class='form-control' %} | ||
23 | + | ||
24 | + <span id="helpBlock" class="help-block">{{ field.help_text }}</span> | ||
25 | + | ||
26 | + {% if field.errors %} | ||
27 | + <div class="alert alert-danger alert-dismissible" role="alert"> | ||
28 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
29 | + <span aria-hidden="true">×</span> | ||
30 | + </button> | ||
31 | + <ul> | ||
32 | + {% for error in field.errors %} | ||
33 | + <li>{{ error }}</li> | ||
34 | + {% endfor %} | ||
35 | + </ul> | ||
36 | + </div> | ||
37 | + {% endif %} | ||
38 | + </div> | ||
39 | + {% endfor %} | ||
40 | + <div class="col-md-12 col-lg-12 col-sm-12 col-xs-12"> | ||
41 | + <div class="text-center"> | ||
42 | + <input type="submit" value="{% trans 'Save' %}" class="btn btn-raised btn-success" /> | ||
43 | + </div> | ||
44 | + </div> | ||
45 | + </form> | ||
46 | + </div> | ||
47 | + </div> | ||
48 | + </div> | ||
49 | + <br clear="all" /> | ||
50 | + <br clear="all" /> | ||
51 | +{% endblock %} |
webconference/templates/webconference/jitsi.html
@@ -27,15 +27,13 @@ | @@ -27,15 +27,13 @@ | ||
27 | 27 | ||
28 | <script> | 28 | <script> |
29 | // code to start jitsi api | 29 | // code to start jitsi api |
30 | - var domain = "meet.jit.si"; // domain that jitsi will itself connect | 30 | + var domain = "{{domain}}"; // domain that jitsi will itself connect |
31 | var room = "{{name_room}}"; // name of the room to be created | 31 | var room = "{{name_room}}"; // name of the room to be created |
32 | var width = $("body").width(); // width of the window to be created | 32 | var width = $("body").width(); // width of the window to be created |
33 | var height = $("body").height(); // height of the window to be created | 33 | var height = $("body").height(); // height of the window to be created |
34 | var html = document.getElementById("jitsi"); | 34 | var html = document.getElementById("jitsi"); |
35 | - var configOverwrite = {disableSimulcast: false}; | ||
36 | - var interfaceConfigOverwrite = {filmStripOnly: false}; | ||
37 | - var jwt = "Amadeus_Token"; | ||
38 | - var api = new JitsiMeetExternalAPI(domain, room, width, height,html,configOverwrite, interfaceConfigOverwrite, false, jwt); | 35 | + var api = new JitsiMeetExternalAPI(domain, room, width, height,html); |
36 | + // window.onload = initpage; | ||
39 | window.onload = initpage; | 37 | window.onload = initpage; |
40 | function initpage(){ | 38 | function initpage(){ |
41 | api.executeCommand('displayName', '{{user}}'); | 39 | api.executeCommand('displayName', '{{user}}'); |
@@ -59,6 +57,28 @@ | @@ -59,6 +57,28 @@ | ||
59 | }); | 57 | }); |
60 | }); | 58 | }); |
61 | } | 59 | } |
60 | + // callfunction(); | ||
61 | + var callCount = 1; | ||
62 | + var repeater = setInterval(function () { | ||
63 | + console.log(callCount); | ||
64 | + if (callCount < 10) { | ||
65 | + | ||
66 | + var doc = document.getElementById('jitsiConferenceFrame0').document; | ||
67 | + // var iframe = document.getElementById('jitsiConferenceFrame0'); | ||
68 | + // var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document; | ||
69 | + | ||
70 | + // var ls = doc.getElementById('toolbar_button_link'); | ||
71 | + console.log(doc); | ||
72 | + // $("#jitsiConferenceFrame0").contents().find("#toolbar_button_link").remove(); | ||
73 | + // $("a#toolbar_button_link.button.icon-link").remove(); | ||
74 | + // console.log($("#toolbar_contact_list").remove()); | ||
75 | + // $("#toolbar_button_link").remove(); //utilizandos para retirar o botão de compartilhar do jitsi | ||
76 | + callCount += 1; | ||
77 | + console.log("aqui"); | ||
78 | + } else { | ||
79 | + clearInterval(repeater); | ||
80 | + } | ||
81 | + }, 1000); | ||
62 | 82 | ||
63 | // api.executeCommands({displayName: ['Jailson']}); | 83 | // api.executeCommands({displayName: ['Jailson']}); |
64 | </script> | 84 | </script> |
webconference/urls.py
@@ -12,4 +12,5 @@ urlpatterns = [ | @@ -12,4 +12,5 @@ urlpatterns = [ | ||
12 | url(r'^view/(?P<slug>[\w_-]+)/$', views.InsideView.as_view(), name = 'view'), | 12 | url(r'^view/(?P<slug>[\w_-]+)/$', views.InsideView.as_view(), name = 'view'), |
13 | url(r'^conference/(?P<slug>[\w_-]+)/$',views.Conference.as_view(), name = 'conference'), | 13 | url(r'^conference/(?P<slug>[\w_-]+)/$',views.Conference.as_view(), name = 'conference'), |
14 | url(r'^saiu/$',views.saiu, name = 'saiu'), | 14 | url(r'^saiu/$',views.saiu, name = 'saiu'), |
15 | + url(r'^settings/$', views.ConferenceSettings.as_view(), name = 'settings'), | ||
15 | ] | 16 | ] |
webconference/views.py
@@ -15,9 +15,10 @@ from log.mixins import LogMixin | @@ -15,9 +15,10 @@ from log.mixins import LogMixin | ||
15 | from topics.models import Topic | 15 | from topics.models import Topic |
16 | 16 | ||
17 | from pendencies.forms import PendenciesForm | 17 | from pendencies.forms import PendenciesForm |
18 | +from braces import views as braces_mixins | ||
18 | 19 | ||
19 | -from .forms import WebconferenceForm | ||
20 | -from .models import Webconference | 20 | +from .forms import WebconferenceForm, SettingsForm |
21 | +from .models import Webconference, ConferenceSettings as Settings | ||
21 | 22 | ||
22 | class NewWindowView(LoginRequiredMixin, | 23 | class NewWindowView(LoginRequiredMixin, |
23 | # '''LogMixin,''' | 24 | # '''LogMixin,''' |
@@ -78,6 +79,11 @@ class Conference(LoginRequiredMixin,generic.TemplateView): | @@ -78,6 +79,11 @@ class Conference(LoginRequiredMixin,generic.TemplateView): | ||
78 | context = super(Conference, self).get_context_data(**kwargs) | 79 | context = super(Conference, self).get_context_data(**kwargs) |
79 | context['name_room'] = kwargs.get('slug') | 80 | context['name_room'] = kwargs.get('slug') |
80 | context['user_image'] = 'http://localhost:8000'+str(self.request.user.image.url) | 81 | context['user_image'] = 'http://localhost:8000'+str(self.request.user.image.url) |
82 | + try: | ||
83 | + context['domain'] = Settings.objects.last().domain | ||
84 | + except AttributeError: | ||
85 | + context['domain'] = 'meet.jit.si' | ||
86 | + | ||
81 | return context | 87 | return context |
82 | 88 | ||
83 | def saiu(request): | 89 | def saiu(request): |
@@ -428,3 +434,30 @@ generic.DeleteView): | @@ -428,3 +434,30 @@ generic.DeleteView): | ||
428 | # super(DeleteView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) | 434 | # super(DeleteView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) |
429 | 435 | ||
430 | return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) | 436 | return reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) |
437 | + | ||
438 | +class ConferenceSettings(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequiredMixin, generic.UpdateView): | ||
439 | + login_url = reverse_lazy("users:login") | ||
440 | + redirect_field_name = 'next' | ||
441 | + | ||
442 | + template_name = 'webconference/config.html' | ||
443 | + model = Settings | ||
444 | + form_class = SettingsForm | ||
445 | + success_url = reverse_lazy("subjects:home") | ||
446 | + | ||
447 | + def get_object(self, queryset = None): | ||
448 | + return Settings.objects.last() | ||
449 | + | ||
450 | + def form_valid(self, form): | ||
451 | + form.save() | ||
452 | + | ||
453 | + messages.success(self.request, _("Conference settings updated successfully!")) | ||
454 | + | ||
455 | + return super(ConferenceSettings, self).form_valid(form) | ||
456 | + | ||
457 | + def get_context_data(self, **kwargs): | ||
458 | + context = super(ConferenceSettings, self).get_context_data(**kwargs) | ||
459 | + | ||
460 | + context['title'] = _('Conference Settings') | ||
461 | + # context['settings_menu_active'] = "settings_menu_active" | ||
462 | + | ||
463 | + return context |