Commit 28114b1a3ae531de4a427bcd1c07f26993aad962

Authored by Jailson Dias
1 parent 85fd085c

Criando a tela de configuração do servidor Jitsi

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 + }
webconference/migrations/0002_conferencesettings.py 0 → 100644
@@ -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
webconference/templates/webconference/config.html 0 → 100644
@@ -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">&times;</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