Actualización

This commit is contained in:
Xes
2025-04-10 12:36:07 +02:00
parent 1da7c3f3b9
commit 4aff98e77b
3147 changed files with 320647 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
<h4>
{{ meeting.typeName }} {{ meeting.meetingId }}
</h4>
<a class="btn btn-primary" href="meeting.php?meetingId={{ meeting.meetingId }}&{{ url_extra }}">
{{ 'Edit'|get_lang }}
</a>
<table class="table">
<thead>
<tr>
<th>{{ 'Type'|get_lang }}</th>
<th>{{ 'Action'|get_plugin_lang('ZoomPlugin') }}</th>
{# <th>{{ 'User'|get_lang }}</th>#}
<th>{{ 'Date'|get_lang }}</th>
<th>{{ 'Details'|get_lang }} </th>
</tr>
</thead>
<tbody>
{% for activity in meeting.activities %}
<tr>
<td>
{{ activity.type }}
</td>
<td>
{{ activity.name }}
</td>
<td>
{{ activity.createdAt | api_convert_and_format_date(3)}}
</td>
{# <td>#}
{# {% if _u.is_admin %}#}
{# <a href="{{ _p.web_main }}admin/user_information.php?user_id={{ activity.user.id }}" >#}
{# {{ activity.user.firstname }} {{ activity.user.lastname }} ({{ activity.user.username }})#}
{# </a>#}
{# {% else %}#}
{# {{ activity.user.firstname }} {{ activity.user.lastname }} ({{ activity.user.username }})#}
{# {% endif %}#}
{# </td>#}
<td>
{% if activity.eventDecoded.registrant %}
{{ 'User' | get_lang }} :
{{ activity.eventDecoded.registrant.first_name }} -
{{ activity.eventDecoded.registrant.last_name }} -
{{ activity.eventDecoded.registrant.email }} -
{{ activity.eventDecoded.registrant.status }}
{% endif %}
{% if activity.eventDecoded.participant %}
{{ 'User' | get_lang }} :
{{ activity.eventDecoded.participant.user_name }}
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>

View File

@@ -0,0 +1,324 @@
<div id="loading" style="margin-left:150px;position:absolute;display:none">
{{ "Loading"|get_lang }} &hellip;
</div>
<div id="calendar"></div>
<div class="modal fade" tabindex="-1" role="dialog" id="simple-dialog-form">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="{{ 'Close'|get_lang }}">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title">{{ 'Details'|get_lang }}</h4>
</div>
<div class="modal-body">
<form class="form-horizontal">
<div class="form-group">
<label class="col-sm-4 control-label">{{ 'Type' }}</label>
<div class="col-sm-8">
<p id="simple_type"></p>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">{{ "Date"|get_lang }}</label>
<div class="col-sm-8">
<p>
<span id="simple_start_date"></span>
<span id="simple_end_date"></span>
</p>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">{{ "Title"|get_lang }}</label>
<div class="col-sm-8">
<p id="simple_title"></p>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">{{ "Description"|get_lang }}</label>
<div class="col-sm-8">
<p id="simple_content"></p>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">{{ "AccountEmail"|get_plugin_lang('ZoomPlugin') }}</label>
<div class="col-sm-8">
<p id="simple_account"></p>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{ 'Close'|get_lang }}</button>
</div>
</div>
</div>
</div>
<script>
$(function () {
var cookieData = Cookies.getJSON('agenda_cookies');
var defaultView = (cookieData && cookieData.view) || '{{ default_view }}';
var defaultStartDate = (cookieData && cookieData.start) || moment.now();
var CustomListViewGrid = ListViewGrid.extend({
fgSegHtml: function (seg) {
var view = this.view;
var classes = ['fc-list-item'].concat(this.getSegCustomClasses(seg));
var bgColor = this.getSegBackgroundColor(seg);
var event = seg.event;
var url = event.url;
var timeHtml;
if (view.isMultiDayEvent(event)) { // if the event appears to span more than one day
if (seg.isStart || seg.isEnd) { // outer segment that probably lasts part of the day
timeHtml = htmlEscape(this.getEventTimeText(seg));
} else { // inner segment that lasts the whole day
timeHtml = view.getAllDayHtml();
}
} else {
// Display the normal time text for the *event's* times
timeHtml = htmlEscape(this.getEventTimeText(event));
}
if (url) {
classes.push('fc-has-url');
}
return '<tr class="' + classes.join(' ') + '">' +
(this.displayEventTime
? '<td class="fc-list-item-time ' + view.widgetContentClass + '">' + (timeHtml || '') + '</td>'
: ''
) +
'<td class="fc-list-item-marker ' + view.widgetContentClass + '">' +
'<span class="fc-event-dot"' +
(bgColor ? ' style="background-color:' + bgColor + '"' : '') +
'></span>' +
'</td>' +
'<td class="fc-list-item-title ' + view.widgetContentClass + '">' +
'<a' + (url ? ' href="' + htmlEscape(url) + '"' : '') + '>' +
htmlEscape(seg.event.title || '') + (seg.event.description || '') +
'</a>' +
'</td>' +
'</tr>';
},
// render the event segments in the view
renderSegList: function (allSegs) {
var segsByDay = this.groupSegsByDay(allSegs); // sparse array
var dayIndex;
var daySegs;
var i;
var tableEl = $('<table class="fc-list-table"><tbody/></table>');
var tbodyEl = tableEl.find('tbody');
var eventList = [];
for (dayIndex = 0; dayIndex < segsByDay.length; dayIndex++) {
daySegs = segsByDay[dayIndex];
if (daySegs) { // sparse array, so might be undefined
this.sortEventSegs(daySegs);
for (i = 0; i < daySegs.length; i++) {
var event = daySegs[i].event;
if (jQuery.inArray(event.id, eventList) !== -1) {
continue;
}
eventList.push(event.id);
// append a day header
tbodyEl.append(this.dayHeaderHtml(
this.view.start.clone().add(dayIndex, 'days'),
event
));
tbodyEl.append(daySegs[i].el); // append event row
}
}
}
this.el.empty().append(tableEl);
},
// generates the HTML for the day headers that live amongst the event rows
dayHeaderHtml: function (dayDate, event) {
var view = this.view;
var mainFormat = 'LL';
var altFormat = 'dddd';
var checkIfSame = true;
if (event.end) {
checkIfSame = event.end.format(mainFormat) === dayDate.format(mainFormat);
}
return '<tr class="fc-list-heading" data-date="' + dayDate.format('YYYY-MM-DD') + '">' +
'<td class="' + view.widgetHeaderClass + '" colspan="3">' +
(
mainFormat
? view.buildGotoAnchorHtml(
dayDate,
{ 'class': 'fc-list-heading-main' },
htmlEscape(dayDate.format(mainFormat)) // inner HTML
)
: ''
) +
(
(checkIfSame === false && mainFormat)
? view.buildGotoAnchorHtml(
dayDate,
{ 'class': 'fc-list-heading-main' },
'&nbsp;-&nbsp; ' + htmlEscape(event.end.format(mainFormat)) // inner HTML
)
: ''
) +
(
altFormat
? view.buildGotoAnchorHtml(
dayDate,
{ 'class': 'fc-list-heading-alt' },
htmlEscape(dayDate.format(altFormat)) // inner HTML
)
: ''
) +
'</td>' +
'</tr>'
}
})
var FC = $.fullCalendar; // a reference to FullCalendar's root namespace
var View = ListView; // the class that all views must inherit from
var CustomView; // our subclass
CustomView = View.extend({ // make a subclass of View
initialize: function () {
this.grid = new CustomListViewGrid(this);
this.scroller = new Scroller({
overflowX: 'hidden',
overflowY: 'auto'
});
}
})
FC.views.CustomView = CustomView; // register our class with the view system
var height = '';
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
height = 'auto';
}
$('#calendar').fullCalendar({
height: height,
header: {
left: 'today,prev,next',
center: 'title',
right: 'month,agendaWeek,agendaDay,CustomView'
},
views: {
CustomView: { // name of view
type: 'list',
buttonText: '{{ 'AgendaList'|get_lang | escape('js') }}',
duration: { month: 1 },
defaults: {
'listDayAltFormat': 'dddd' // day-of-week is nice-to-have
}
},
month: {
'displayEventEnd': true
}
},
locale: '{{ region_value }}',
defaultView: defaultView,
defaultDate: defaultStartDate,
firstHour: 8,
firstDay: 1,
{% if fullcalendar_settings %}
{{ fullcalendar_settings }}
{% endif %}
selectable: false,
selectHelper: true,
viewRender: function (view, element) {
var data = {
'view': view.name,
'start': view.intervalStart.format('YYYY-MM-DD')
};
Cookies.set('agenda_cookies', data, 1); // Expires 1 day
},
eventRender: function (event, element) {
{% if on_hover_info.description %}
if (event.description) {
element.qtip({
content: event.description,
position: {
at: 'top center',
my: 'bottom center',
viewport: $(window)
}
});
}
{% endif %}
},
eventClick: function (calEvent, jsEvent, view) {
var start = calEvent.start;
var end = calEvent.end;
var diffDays = moment(end).diff(start, 'days');
var endDateMinusOne = '';
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
// If event is not editable then just return the qtip
{% if on_hover_info.description %}
if (calEvent.description) {
$(this).qtip({
overwrite: false,
show: { ready: true },
content: calEvent.description,
position: {
at: 'top center',
my: 'bottom center',
viewport: $(window)
}
});
}
{% endif %}
return;
}
var clone = end.clone();
endDateMinusOne = clone.subtract(1, 'days').format('{{ js_format_date }}');
var startDateToString = start.format("{{ js_format_date }}");
// Simple form
$('#simple_start_date').text(startDateToString);
if (diffDays > 1) {
$('#simple_end_date').text(' - ' + endDateMinusOne);
} else if (diffDays == 0) {
var start_date_value = start.format('ll');
var startTime = start.format('LT');
var endTime = end.format('LT');
$('#simple_start_date').html('');
$('#simple_end_date').html(start_date_value + ' (' + startTime + ' - ' + endTime + ') ');
} else {
$('#simple_end_date').text('');
}
$('#simple_type').text(calEvent.typeName);
$('#simple_title').text(calEvent.title);
$('#simple_content').empty().text(calEvent.description);
if (calEvent.accountEmail) {
$('#simple_account').text(calEvent.accountEmail).parents('.form-group').show();
} else {
$('#simple_account').empty().parents('.form-group').hide();
}
$('#simple-dialog-form').modal('show');
},
editable: false,
events: "{{ web_agenda_ajax_url }}&a=get_events",
axisFormat: 'H(:mm)', // pm-am format -> h(:mm)a
timeFormat: 'H:mm', // pm-am format -> h:mm
loading: function (bool) {
if (bool) {
$('#loading').show();
} else {
$('#loading').hide();
}
}
})
})
</script>

196
plugin/zoom/view/join.tpl Normal file
View File

@@ -0,0 +1,196 @@
{% include 'zoom/view/meeting_details.tpl' %}
{% if is_conference_manager and meeting.isSignAttendance %}
<p class="text-info">
<span class="fa fa-list-alt"></span>
{{ 'ConferenceWithAttendance'|get_plugin_lang('ZoomPlugin') }}
</p>
{% endif %}
<hr>
{% set btn_start = '' %}
{% if start_url %}
{% set btn_start %}
<a href="{{ start_url }}" class="btn btn-primary">
{{ 'EnterMeeting'|get_plugin_lang('ZoomPlugin') }}
</a>
{% endset %}
{% endif %}
{% if not is_conference_manager %}
{% if meeting.isSignAttendance %}
<div class="row">
<div class="col-md-offset-3 col-md-6">
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">
<span class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></span>
{{ 'Attendance'|get_lang }}
</h3>
</div>
<div class="panel-body">
<p>{{ meeting.reasonToSignAttendance }}</p>
{% if signature %}
<div class="thumbnail">
<img src="{{ signature.file }}"
alt="{{ 'SignatureDone'|get_plugin_lang('ZoomPlugin') }}">
<div class="caption text-center">
{{ signature.registeredAt|api_convert_and_format_date(constant('DATE_TIME_FORMAT_LONG')) }}
</div>
</div>
{% else %}
{% set btn_start = '' %}
{% if 'started' == meeting.meetingInfoGet.status %}
<button class="btn btn-info" id="btn-sign" data-toggle="modal"
data-target="#signature-modal">
<i class="fa fa-pencil fa-fw" aria-hidden="true"></i>
{{ 'Sign'|get_plugin_lang('ZoomPlugin') }}
</button>
<div class="modal fade" tabindex="-1" role="dialog" id="signature-modal"
data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title">{{ 'SignAttendance'|get_plugin_lang('ZoomPlugin') }}</h4>
</div>
<div class="modal-body">
<div id="signature-modal--signature-area" class="well">
<canvas></canvas>
</div>
</div>
<div class="modal-footer">
<span id="signature-modal--loader" aria-hidden="true"
class="fa fa-refresh fa-spin"
aria-label="{{ 'Loading'|get_lang }}" style="display: none;">
</span>
<span id="signature-modal--save-controls">
<button id="signature-modal--btn-save" class="btn btn-primary">
<em class="fa fa-save" aria-hidden="true"></em>
{{ 'Save'|get_lang }}
</button>
<button id="signature-modal--btn-clean" class="btn btn-default">
<em class="fa fa-eraser" aria-hidden="true"></em>
{{ 'Clean'|get_lang }}
</button>
</span>
<div id="signature-modal--close-controls" style="display: none;">
<span id="signature-modal--results"></span>
<button class="btn btn-default"
data-dismiss="modal">{{ 'Close'|get_lang }}</button>
</div>
</div>
</div>
</div>
</div>
<script>
$(function () {
var $signatureArea = $('#signature-modal--signature-area')
var $loader = $('#signature-modal--loader')
var $saveControls = $('#signature-modal--save-controls')
var $btnSave = $('#signature-modal--btn-save')
var $btnClean = $('#signature-modal--btn-clean')
var $closeControls = $('#signature-modal--close-controls')
var $txtResults = $('#signature-modal--results')
var imageFormat = 'image/png'
var canvas = document.querySelector('#signature-modal--signature-area canvas')
var signaturePad = new SignaturePad(canvas)
$('#signature-modal')
.on('shown.bs.modal', function (e) {
var parentWidth = $signatureArea.width()
var parentHeight = $signatureArea.height()
canvas.setAttribute('width', parentWidth + 'px')
canvas.setAttribute('height', parentHeight + 'px')
signaturePad = new SignaturePad(canvas)
})
.on('hide.bs.modal', function (e) {
$loader.hide()
$saveControls.show()
$closeControls.hide()
$signatureArea.show()
$btnSave.prop('disabled', false)
$btnClean.prop('disabled', false)
})
$btnClean.on('click', function () {
signaturePad.clear()
})
$btnSave.on('click', function () {
if (signaturePad.isEmpty()) {
alert('{{ 'ProvideASignatureFirst'|get_plugin_lang('ZoomPlugin')|e('js') }}')
return false
}
var dataURL = signaturePad.toDataURL(imageFormat)
$.ajax({
beforeSend: function () {
$loader.show()
$btnSave.prop('disabled', true)
$btnClean.prop('disabled', true)
},
type: 'POST',
url: 'meeting.ajax.php?{{ _p.web_cid_query }}',
data: {
a: 'sign_attempt',
meetingId: {{ meeting.meetingId }},
file: dataURL
},
success: function (data) {
$btnSave.prop('disabled', false)
$btnClean.prop('disabled', false)
$loader.hide()
$saveControls.hide()
$signatureArea.hide()
signaturePad.clear()
if ('1' === data) {
$txtResults.html('{{ 'Saved'|get_lang }}')
window.location.reload()
} else {
$txtResults.html('{{ 'Error'|get_lang }}')
}
$closeControls.show()
},
})
})
})
</script>
{% endif %}
{% endif %}
</div>
</div>
</div>
</div>
{% endif %}
{% endif %}
{{ btn_start }}
{% if details_url %}
<a href="{{ details_url }}" class="btn btn-default">
{{ 'Details'|get_lang }}
</a>
{% endif %}
{% if btn_announcement %}
{{ btn_announcement }}
{% endif %}

View File

@@ -0,0 +1,136 @@
<h4>
{{ meeting.typeName }} {{ meeting.meetingId }}
{% if meeting.meetingInfoGet.status %}
({{ meeting.meetingInfoGet.status }})
{% endif %}
</h4>
<div class="btn-group" role="group">
{% if meeting.meetingInfoGet.status != 'finished' %}
<a class="btn btn-primary" href="join_meeting.php?meetingId={{ meeting.meetingId }}&{{ url_extra }}">
{{ 'ViewMeeting'|get_plugin_lang('ZoomPlugin') }}
</a>
{% endif %}
{% if isConferenceManager %}
{% if meeting.status == 'waiting' %}
<a class="btn btn-primary" href="{{ meeting.meetingInfoGet.start_url }}" target="_blank">
{{ 'StartMeeting'|get_plugin_lang('ZoomPlugin') }}
</a>
{% endif %}
<a class="btn btn-default" href="activity.php?meetingId={{ meeting.meetingId }}&{{ url_extra }}">
{{ 'Activity'|get_plugin_lang('ZoomPlugin') }}
</a>
<a href="attendance.php?meetingId={{ meeting.meetingId ~ '&' ~ url_extra }}" class="btn btn-info">
{{ 'Attendance'|get_lang }}
</a>
{% endif %}
</div>
{% if isConferenceManager %}
<br />
<br />
<div class="panel panel-default conference">
<div class="panel-body">
<div class="share">
{{ 'JoinURLToSendToParticipants'| get_plugin_lang('ZoomPlugin') }}
</div>
<div class="form-inline">
<div class="form-group">
<input id="share_button_flash" type="text"
style="width:460px"
class="form-control" readonly
value="{{ _p.web }}plugin/zoom/join_meeting.php?meetingId={{ meeting.meetingId }}&{{ url_extra }}"
>
<button onclick="copyTextToClipBoard('share_button_flash');" class="btn btn-default">
<span class="fa fa-copy"></span> {{ 'CopyTextToClipboard' | get_lang }}
</button>
</div>
</div>
</div>
</div>
{% endif %}
{% if currentUserJoinURL %}
{#<p>#}
{# <a href="{{ currentUserJoinURL }}" target="_blank">#}
{# {{ 'JoinMeeting'|get_plugin_lang('ZoomPlugin') }}#}
{# </a>#}
{#</p>#}
{% endif %}
{% if isConferenceManager %}
{{ editMeetingForm }}
{{ deleteMeetingForm }}
{% if registerParticipantForm %}
<hr>
{{ registerParticipantForm }}
{% endif %}
{% if registerPresenterForm %}
{{ registerPresenterForm }}
{% endif %}
{{ fileForm }}
<div class="row">
<div class="col-m6">
{% if presenters %}
<h3>{{ 'Presenters'|get_plugin_lang('ZoomPlugin') }}</h3>
<table class="table">
{% for presenter in presenters %}
<tr>
<td>
{{ presenter.fullName }}
</td>
</tr>
{% endfor %}
</table>
{% endif %}
</div>
<div class="col-m6">
{# {% if registrants and meeting.meetingInfoGet.settings.approval_type != 2 %}#}
{% if registrants.count > 0 %}
<script>
function copyJoinURL(event, url) {
event.target.textContent = '{{ 'CopyingJoinURL'|get_plugin_lang('ZoomPlugin')|escape }}';
navigator.clipboard.writeText(url).then(
function() {
event.target.textContent = '{{ 'JoinURLCopied'|get_plugin_lang('ZoomPlugin')|escape }}';
}, function() {
event.target.textContent = '{{ 'CouldNotCopyJoinURL'|get_plugin_lang('ZoomPlugin')|escape }}' + ' ' + url;
}
);
}
</script>
<h3>{{ 'Users' | get_lang }}</h3>
<br />
<table class="table">
{% for registrant in registrants %}
<tr>
<td>
{{ registrant.fullName }}
</td>
<td>
{# {% if registrant.joinUrl %}#}
{# <a class="btn btn-primary" onclick="copyJoinURL(event, '{{ registrant.joinUrl }}')">#}
{# {{ 'CopyJoinAsURL'|get_plugin_lang('ZoomPlugin') }}#}
{# </a>#}
{# {% else %}#}
{# <a class="btn btn-primary disabled" >#}
{# {{ 'JoinURLNotAvailable'|get_plugin_lang('ZoomPlugin') }}#}
{# </a>#}
{# {% endif %}#}
</td>
</tr>
{% endfor %}
</table>
{% endif %}
</div>
</div>
{% else %}
{% include 'zoom/view/meeting_details.tpl' %}
{% endif %}

View File

@@ -0,0 +1,23 @@
<h2 class="page-header">
{{ meeting.topic}}
<small>{{ meeting.typeName }}</small>
</h2>
<dl class="meeting_properties dl-horizontal">
{% if meeting.requiresDateAndDuration %}
<dt>{{ 'StartTime'|get_lang }}</dt>
<dd>{{ meeting.formattedStartTime }}</dd>
<dt>{{ 'Duration'|get_lang }}</dt>
<dd>{{ meeting.formattedDuration }}</dd>
{% endif %}
{% if meeting.accountEmail %}
<dt>{{ 'AccountEmail'|get_lang }}</dt>
<dd>{{ meeting.accountEmail }}</dd>
{% endif %}
</dl>
{% if meeting.agenda %}
<p class="lead">{{ meeting.agenda|nl2br }}</p>
{% endif %}

View File

@@ -0,0 +1,64 @@
{% import "default/document/recycle.tpl" as macro %}
{{ schedule_form }}
{{ search_form }}
{% if meetings %}
<h4>{{ 'MeetingsFound'|get_plugin_lang('ZoomPlugin') }}: </h4>
<table class="table table-hover table-striped">
<thead>
<tr>
<th>{{ 'Type'|get_lang }}</th>
<th>{{ 'Topic'|get_plugin_lang('ZoomPlugin') }}</th>
<th>{{ 'StartTime'|get_lang }}</th>
<th>{{ 'ForEveryone'|get_plugin_lang('ZoomPlugin') }}</th>
{# <th>{{ 'Course'|get_lang }}</th>#}
{# <th>{{ 'Session'|get_lang }}</th>#}
{% if allow_recording %}
<th>{{ 'Recordings'|get_plugin_lang('ZoomPlugin') }}</th>
{% endif %}
<th></th>
</tr>
</thead>
<tbody>
{% for meeting in meetings %}
<tr>
<td>{{ meeting.typeName }}</td>
<td>{{ meeting.topic }}</td>
<td>{{ meeting.formattedStartTime }}</td>
<td>{{ meeting.user ? 'No'|get_lang : 'Yes'|get_lang }}</td>
{# <td>{{ meeting.course ? meeting.course : '-' }}</td>#}
{# <td>{{ meeting.session ? meeting.session : '-' }}</td>#}
<td>
{% if allow_recording and meeting.recordings.count > 0 %}
{% for recording in meeting.recordings %}
<dl>
<dt>
{{ recording.formattedStartTime }} ({{ recording.formattedDuration }}) {{ 'Password' | get_lang }}: {{ recording.recordingMeeting.password }}
</dt>
<dd>
<ul>
{% for file in recording.recordingMeeting.recording_files %}
<li>
<a href="{{ file.play_url }}" target="_blank">
{{ file.recording_type }}.{{ file.file_type }}
({{ macro.bytesToSize(file.file_size) }})
</a>
</li>
{% endfor %}
</ul>
</dd>
</dl>
{% endfor %}
{% endif %}
</td>
<td>
<a class="btn btn-primary" href="meeting.php?meetingId={{ meeting.meetingId }}">
{{ 'Details'|get_lang }}
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}

View File

@@ -0,0 +1,60 @@
{% if instant_meeting_form %}
{{ instant_meeting_form }}
{% endif %}
{% if group_form %}
{{ group_form }}
{% endif %}
{% if meetings.count %}
<div class="page-header">
<h2>{{ 'ScheduledMeetings'|get_lang }}</h2>
</div>
<table class="table">
<tr>
<th>{{ 'Type'|get_lang }}</th>
<th>{{ 'Topic'|get_plugin_lang('ZoomPlugin') }}</th>
<th>{{ 'Agenda'|get_plugin_lang('ZoomPlugin') }}</th>
<th>{{ 'StartTime'|get_lang }}</th>
<th>{{ 'Duration'|get_lang }}</th>
<th>{{ 'Actions'|get_lang }}</th>
</tr>
{% for meeting in meetings %}
<tr>
<td>{{ meeting.typeName }}</td>
<td>
{{ meeting.meetingInfoGet.topic }}
{{ meeting.webinarSchema.topic }}
</td>
<td>
{{ meeting.meetingInfoGet.agenda|nl2br }}
{{ meeting.webinarSchema.agenda|nl2br }}
</td>
<td>{{ meeting.formattedStartTime }}</td>
<td>{{ meeting.formattedDuration }}</td>
<td>
<a class="btn btn-primary" href="join_meeting.php?meetingId={{ meeting.meetingId }}&{{ _p.web_cid_query }}">
{{ 'Join'|get_plugin_lang('ZoomPlugin') }}
</a>
{% if is_manager %}
<a class="btn btn-default" href="meeting.php?meetingId={{ meeting.meetingId }}&{{ _p.web_cid_query }}">
{{ 'Details'|get_plugin_lang('ZoomPlugin') }}
</a>
<a class="btn btn-danger"
href="start.php?action=delete&meetingId={{ meeting.meetingId }}&{{ _p.web_cid_query }}"
onclick="javascript:if(!confirm('{{ 'AreYouSureToDelete' | get_lang }}')) return false;"
>
{{ 'Delete'|get_lang }}
</a>
{% endif %}
</td>
</tr>
{% endfor %}
</table>
{% endif %}
{% if schedule_meeting_form %}
{{ schedule_meeting_form }}
{% endif %}

View File

@@ -0,0 +1,3 @@
{% include 'zoom/view/meeting_details.tpl' %}
{{ frm_register_unregister }}