[zoom] - plugin fixes

This commit is contained in:
Nikita Khromov
2022-11-02 19:08:36 +05:00
parent 4a0be5e7b8
commit ba97638dfb
7 changed files with 241 additions and 135 deletions

View File

@ -15,5 +15,6 @@ Detailed instructions can be found in [ONLYOFFICE API documentation](https://api
## Configuration ## Configuration
1. Create a JWT application at https://marketplace.zoom.us/develop/create. Fill the all necessary fields and activate the app. 1. To use the meeting schedule create a JWT app at https://marketplace.zoom.us/develop/create. Fill the all necessary fields and activate the app.
2. Copy API Key, API Secret and JWT Token from your app credentials and paste it to specified fields in plugin, click Save. 2. To join to meetings create a Meeting SDK app at https://marketplace.zoom.us/develop/create. Fill the all necessary fields and activate the app.
2. Copy SDK Key, SDK Secret and JWT Token from your JWT and SDK apps credentials and paste it to specified fields in plugin, click Save.

View File

@ -276,15 +276,15 @@
<option value="America/Phoenix"> <option value="America/Phoenix">
(GMT-7:00) Arizona (GMT-7:00) Arizona
</option> </option>
<option value="America/Mazatlan">
(GMT-7:00) Mazatlan
</option>
<option value="America/Edmonton"> <option value="America/Edmonton">
(GMT-6:00) Edmonton (GMT-6:00) Edmonton
</option> </option>
<option value="America/Denver"> <option value="America/Denver">
(GMT-6:00) Mountain Time (US and Canada) (GMT-6:00) Mountain Time (US and Canada)
</option> </option>
<option value="America/Mazatlan">
(GMT-6:00) Mazatlan
</option>
<option value="America/Regina"> <option value="America/Regina">
(GMT-6:00) Saskatchewan (GMT-6:00) Saskatchewan
</option> </option>
@ -303,15 +303,15 @@
<option value="America/Tegucigalpa"> <option value="America/Tegucigalpa">
(GMT-6:00) Tegucigalpa (GMT-6:00) Tegucigalpa
</option> </option>
<option value="America/Mexico_City">
(GMT-6:00) Mexico City
</option>
<option value="America/Chicago"> <option value="America/Chicago">
(GMT-5:00) Central Time (US and Canada) (GMT-5:00) Central Time (US and Canada)
</option> </option>
<option value="America/Winnipeg"> <option value="America/Winnipeg">
(GMT-5:00) Winnipeg (GMT-5:00) Winnipeg
</option> </option>
<option value="America/Mexico_City">
(GMT-5:00) Mexico City
</option>
<option value="America/Panama"> <option value="America/Panama">
(GMT-5:00) Panama (GMT-5:00) Panama
</option> </option>
@ -337,7 +337,7 @@
(GMT-4:00) Caracas (GMT-4:00) Caracas
</option> </option>
<option value="America/Santiago"> <option value="America/Santiago">
(GMT-4:00) Santiago (GMT-3:00) Santiago
</option> </option>
<option value="America/Halifax"> <option value="America/Halifax">
(GMT-3:00) Halifax (GMT-3:00) Halifax
@ -357,12 +357,12 @@
<option value="Canada/Atlantic"> <option value="Canada/Atlantic">
(GMT-3:00) Atlantic Time (Canada) (GMT-3:00) Atlantic Time (Canada)
</option> </option>
<option value="America/Godthab">
(GMT-3:00) Greenland
</option>
<option value="America/St_Johns"> <option value="America/St_Johns">
(GMT-2:30) Newfoundland and Labrador (GMT-2:30) Newfoundland and Labrador
</option> </option>
<option value="America/Godthab">
(GMT-2:00) Greenland
</option>
<option value="Atlantic/Cape_Verde"> <option value="Atlantic/Cape_Verde">
(GMT-1:00) Cape Verde Islands (GMT-1:00) Cape Verde Islands
</option> </option>
@ -378,20 +378,20 @@
<option value="Atlantic/Reykjavik"> <option value="Atlantic/Reykjavik">
(GMT+0:00) Reykjavik (GMT+0:00) Reykjavik
</option> </option>
<option value="Africa/Casablanca">
(GMT+0:00) Casablanca
</option>
<option value="Africa/Nouakchott"> <option value="Africa/Nouakchott">
(GMT+0:00) Nouakchott (GMT+0:00) Nouakchott
</option> </option>
<option value="Europe/Dublin"> <option value="Europe/Dublin">
(GMT+1:00) Dublin (GMT+0:00) Dublin
</option> </option>
<option value="Europe/London"> <option value="Europe/London">
(GMT+1:00) London (GMT+0:00) London
</option> </option>
<option value="Europe/Lisbon"> <option value="Europe/Lisbon">
(GMT+1:00) Lisbon (GMT+0:00) Lisbon
</option>
<option value="Africa/Casablanca">
(GMT+1:00) Casablanca
</option> </option>
<option value="Africa/Bangui"> <option value="Africa/Bangui">
(GMT+1:00) West Central Africa (GMT+1:00) West Central Africa
@ -403,59 +403,59 @@
(GMT+1:00) Tunis (GMT+1:00) Tunis
</option> </option>
<option value="Europe/Belgrade"> <option value="Europe/Belgrade">
(GMT+2:00) Belgrade, Bratislava, Ljubljana (GMT+1:00) Belgrade, Bratislava, Ljubljana
</option> </option>
<option value="CET"> <option value="CET">
(GMT+2:00) Sarajevo, Skopje, Zagreb (GMT+1:00) Sarajevo, Skopje, Zagreb
</option> </option>
<option value="Europe/Oslo"> <option value="Europe/Oslo">
(GMT+2:00) Oslo (GMT+1:00) Oslo
</option> </option>
<option value="Europe/Copenhagen"> <option value="Europe/Copenhagen">
(GMT+2:00) Copenhagen (GMT+1:00) Copenhagen
</option> </option>
<option value="Europe/Brussels"> <option value="Europe/Brussels">
(GMT+2:00) Brussels (GMT+1:00) Brussels
</option> </option>
<option value="Europe/Berlin"> <option value="Europe/Berlin">
(GMT+2:00) Amsterdam, Berlin, Rome, Stockholm, Vienna (GMT+1:00) Amsterdam, Berlin, Rome, Stockholm, Vienna
</option> </option>
<option value="Europe/Amsterdam"> <option value="Europe/Amsterdam">
(GMT+2:00) Amsterdam (GMT+1:00) Amsterdam
</option> </option>
<option value="Europe/Rome"> <option value="Europe/Rome">
(GMT+2:00) Rome (GMT+1:00) Rome
</option> </option>
<option value="Europe/Stockholm"> <option value="Europe/Stockholm">
(GMT+2:00) Stockholm (GMT+1:00) Stockholm
</option> </option>
<option value="Europe/Vienna"> <option value="Europe/Vienna">
(GMT+2:00) Vienna (GMT+1:00) Vienna
</option> </option>
<option value="Europe/Luxembourg"> <option value="Europe/Luxembourg">
(GMT+2:00) Luxembourg (GMT+1:00) Luxembourg
</option> </option>
<option value="Europe/Paris"> <option value="Europe/Paris">
(GMT+2:00) Paris (GMT+1:00) Paris
</option> </option>
<option value="Europe/Zurich"> <option value="Europe/Zurich">
(GMT+2:00) GMT+2:00)Zurich (GMT+1:00) Zurich
</option> </option>
<option value="Europe/Madrid"> <option value="Europe/Madrid">
(GMT+2:00) Madrid (GMT+1:00) Madrid
</option>
<option value="Europe/Warsaw">
(GMT+1:00) Warsaw
</option>
<option value="Europe/Prague">
(GMT+1:00) Prague Bratislava
</option>
<option value="Europe/Budapest">
(GMT+1:00) Budapest
</option> </option>
<option value="Africa/Harare"> <option value="Africa/Harare">
(GMT+2:00) Harare, Pretoria (GMT+2:00) Harare, Pretoria
</option> </option>
<option value="Europe/Warsaw">
(GMT+2:00) Warsaw
</option>
<option value="Europe/Prague">
(GMT+2:00) Prague Bratislava
</option>
<option value="Europe/Budapest">
(GMT+2:00) Budapest
</option>
<option value="Africa/Tripoli"> <option value="Africa/Tripoli">
(GMT+2:00) Tripoli (GMT+2:00) Tripoli
</option> </option>
@ -468,42 +468,42 @@
<option value="Africa/Khartoum"> <option value="Africa/Khartoum">
(GMT+2:00) Khartoum (GMT+2:00) Khartoum
</option> </option>
<option value="Europe/Helsinki">
(GMT+2:00) Helsinki
</option>
<option value="Europe/Sofia">
(GMT+2:00) Sofia
</option>
<option value="Europe/Athens">
(GMT+2:00) Athens
</option>
<option value="Europe/Bucharest">
(GMT+2:00) Bucharest
</option>
<option value="Europe/Kiev">
(GMT+2:00) Kiev
</option>
<option value="Asia/Nicosia">
(GMT+2:00) Nicosia
</option>
<option value="Asia/Beirut">
(GMT+2:00) Beirut
</option>
<option value="Asia/Damascus">
(GMT+2:00) Damascus
</option>
<option value="Asia/Jerusalem">
(GMT+2:00) Jerusalem
</option>
<option value="Asia/Amman">
(GMT+2:00) Amman
</option>
<option value="Africa/Nairobi"> <option value="Africa/Nairobi">
(GMT+3:00) Nairobi (GMT+3:00) Nairobi
</option> </option>
<option value="Europe/Helsinki">
(GMT+3:00) Helsinki
</option>
<option value="Europe/Sofia">
(GMT+3:00) Sofia
</option>
<option value="Europe/Istanbul"> <option value="Europe/Istanbul">
(GMT+3:00) Istanbul (GMT+3:00) Istanbul
</option> </option>
<option value="Europe/Athens">
(GMT+3:00) Athens
</option>
<option value="Europe/Bucharest">
(GMT+3:00) Bucharest
</option>
<option value="Europe/Kiev">
(GMT+3:00) Kiev
</option>
<option value="Asia/Nicosia">
(GMT+3:00) Nicosia
</option>
<option value="Asia/Beirut">
(GMT+3:00) Beirut
</option>
<option value="Asia/Damascus">
(GMT+3:00) Damascus
</option>
<option value="Asia/Jerusalem">
(GMT+3:00) Jerusalem
</option>
<option value="Asia/Amman">
(GMT+3:00) Amman
</option>
<option value="Europe/Moscow"> <option value="Europe/Moscow">
(GMT+3:00) Moscow (GMT+3:00) Moscow
</option> </option>
@ -531,6 +531,9 @@
<option value="Africa/Mogadishu"> <option value="Africa/Mogadishu">
(GMT+3:00) Mogadishu (GMT+3:00) Mogadishu
</option> </option>
<option value="Asia/Tehran">
(GMT+3:30) Tehran
</option>
<option value="Asia/Dubai"> <option value="Asia/Dubai">
(GMT+4:00) Dubai (GMT+4:00) Dubai
</option> </option>
@ -540,9 +543,6 @@
<option value="Asia/Baku"> <option value="Asia/Baku">
(GMT+4:00) Baku, Tbilisi, Yerevan (GMT+4:00) Baku, Tbilisi, Yerevan
</option> </option>
<option value="Asia/Tehran">
(GMT+4:30) Tehran
</option>
<option value="Asia/Kabul"> <option value="Asia/Kabul">
(GMT+4:30) Kabul (GMT+4:30) Kabul
</option> </option>
@ -618,9 +618,7 @@
<option value="Australia/Darwin"> <option value="Australia/Darwin">
(GMT+9:30) Darwin (GMT+9:30) Darwin
</option> </option>
<option value="Australia/Adelaide">
(GMT+9:30) Adelaide
</option>
<option value="Asia/Vladivostok"> <option value="Asia/Vladivostok">
(GMT+10:00) Vladivostok (GMT+10:00) Vladivostok
</option> </option>
@ -630,11 +628,11 @@
<option value="Australia/Brisbane"> <option value="Australia/Brisbane">
(GMT+10:00) Brisbane (GMT+10:00) Brisbane
</option> </option>
<option value="Australia/Sydney"> <option value="Australia/Adelaide">
(GMT+10:00) Canberra, Melbourne, Sydney (GMT+10:30) Adelaide
</option> </option>
<option value="Australia/Hobart"> <option value="Australia/Sydney">
(GMT+10:00) Hobart (GMT+11:00) Canberra, Melbourne, Sydney
</option> </option>
<option value="Asia/Magadan"> <option value="Asia/Magadan">
(GMT+11:00) Magadan (GMT+11:00) Magadan
@ -642,6 +640,9 @@
<option value="SST"> <option value="SST">
(GMT+11:00) Solomon Islands (GMT+11:00) Solomon Islands
</option> </option>
<option value="Australia/Hobart">
(GMT+11:00) Hobart
</option>
<option value="Pacific/Noumea"> <option value="Pacific/Noumea">
(GMT+11:00) New Caledonia (GMT+11:00) New Caledonia
</option> </option>
@ -652,7 +653,7 @@
(GMT+12:00) Fiji Islands, Marshall Islands (GMT+12:00) Fiji Islands, Marshall Islands
</option> </option>
<option value="Pacific/Auckland"> <option value="Pacific/Auckland">
(GMT+12:00) Auckland, Wellington (GMT+13:00) Auckland, Wellington
</option> </option>
<option value="Pacific/Apia"> <option value="Pacific/Apia">
(GMT+13:00) Independent State of Samoa (GMT+13:00) Independent State of Samoa
@ -696,25 +697,25 @@
</div> </div>
</div> </div>
<div style="margin: 16px 0 16px 0;"> <div style="margin: 16px 0 16px 0;">
<div id="reconf"> <div>
<label class="reconf-label noselect" style="float: right; margin-right: 12px; cursor:pointer;">Reconfigure</label> <label id="reconf" class="reconf-label noselect" style="float: right; margin-right: 12px; cursor:pointer;">Reconfigure</label>
</div> </div>
<div id="switch"> <div>
<label class="switch-label noselect" style="margin-left: 12px; cursor:pointer;">Meeting mode</label> <label id="switch" class="switch-label noselect" style="margin-left: 12px; cursor:pointer;">Meeting mode</label>
</div> </div>
</div> </div>
</div> </div>
<div id="configState"> <div id="configState">
<div> <div>
<div style="margin:12px;"> <span class="i18n">To use Zoom plugin, register this editor as a JWT app.</span> <a target="_blank" href="https://github.com/ONLYOFFICE/plugin-zoom/tree/develop#configuration" class="link i18n">Learn more here.</a> </div> <div style="margin:12px;"> <span class="i18n">To use Zoom plugin, register this editor as a JWT app.</span> <a target="_blank" href="https://github.com/ONLYOFFICE/onlyoffice.github.io/tree/master/sdkjs-plugins/content/zoom#readme" class="link i18n">Learn more here.</a> </div>
<div style="margin:12px;"> In the form, enter any application name and description, accept Terms and Conditions and generate a secret. Enter Client ID, Secret ID, JWT token below and save it. </div> <div style="margin:12px;"> In the form, enter any application name and description, accept Terms and Conditions and generate a secret. Enter Client ID, Secret ID, JWT token below and save it. </div>
</div> </div>
<div style="display: flex; flex-direction: column; margin: 12px;"> <span>Email</span> <div style="display: flex; flex-direction: column; margin: 12px;"> <span>Email</span>
<input id="emailField" autocomplete="off" class="form-control" data-id="zoom-email-value" type="text" placeholder="Email" /> </div> <input id="emailField" autocomplete="off" class="form-control" data-id="zoom-email-value" type="text" placeholder="Email" /> </div>
<div style="display: flex; flex-direction: column; margin: 12px;"> <span>API Key</span> <div style="display: flex; flex-direction: column; margin: 12px;"> <span>SDK Key</span>
<input id="apiKeyField" autocomplete="off" class="form-control" data-id="zoom-client-key" type="text" placeholder="API Key" /> </div> <input id="apiKeyField" autocomplete="off" class="form-control" data-id="zoom-client-key" type="text" placeholder="SDK Key" /> </div>
<div style="display: flex; flex-direction: column; margin: 12px;"> <span>API Secret</span> <div style="display: flex; flex-direction: column; margin: 12px;"> <span>SDK Secret</span>
<input id="secretKeyField" autocomplete="off" class="form-control" data-id="zoom-secret-key" type="password" placeholder="API Secret" /> </div> <input id="secretKeyField" autocomplete="off" class="form-control" data-id="zoom-secret-key" type="password" placeholder="SDK Secret" /> </div>
<div style="display: flex; flex-direction: column; margin: 12px;"> <span>JWT Token</span> <div style="display: flex; flex-direction: column; margin: 12px;"> <span>JWT Token</span>
<input id="tokenKeyField" autocomplete="off" class="form-control" data-id="zoom-jwt-token" type="text" placeholder="JWT Token" /> </div> <input id="tokenKeyField" autocomplete="off" class="form-control" data-id="zoom-jwt-token" type="text" placeholder="JWT Token" /> </div>
<div id="saveConfigBtn" class="button wide control i18n"> <div id="saveConfigBtn" class="button wide control i18n">

View File

@ -93,6 +93,7 @@
.form-group { .form-group {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin-bottom: 12px !important;
} }
label { label {
font-size: 11px; font-size: 11px;
@ -274,9 +275,22 @@
rule += "*::-webkit-scrollbar-track { background : " + oTheme["background-normal"] + ";}\n"; rule += "*::-webkit-scrollbar-track { background : " + oTheme["background-normal"] + ";}\n";
rule += "*::-webkit-scrollbar-track:hover { background : " + oTheme["background-toolbar-additional"] + ";}\n"; rule += "*::-webkit-scrollbar-track:hover { background : " + oTheme["background-toolbar-additional"] + ";}\n";
rule += "*::-webkit-scrollbar-thumb { background-color : " + oTheme["background-toolbar"] + "; border-color : " + oTheme["border-regular-control"] + ";}\n"; rule += "*::-webkit-scrollbar-thumb { background-color : " + oTheme["background-toolbar"] + "!important; border-color : " + oTheme["border-regular-control"] + ";}\n";
rule += "*::-webkit-scrollbar-thumb:hover { background-color : " + oTheme["canvas-scroll-thumb-hover"] + ";}\n"; rule += "*::-webkit-scrollbar-thumb:hover { background-color : " + oTheme["canvas-scroll-thumb-hover"] + ";}\n";
rule += ".select2-search__field { height: 20px; }\n";
rule += "*::-webkit-scrollbar { width: 9px !important; }\n";
rule += "*::-webkit-scrollbar-thumb { border-radius: 2px; background: no-repeat;}\n";
rule += `::selection {\
background-color: ${oTheme["highlight-text-select"]};\
color: ${oTheme["text-inverse"]};\
}`;
rule += "input::placeholder {\
font-size: 11px !important;\
}";
$('#nav-tool').css('background-color', oTheme["background-toolbar"]); $('#nav-tool').css('background-color', oTheme["background-toolbar"]);
$("label").css('color', oTheme["text-normal"]); $("label").css('color', oTheme["text-normal"]);
$('.reconf-label, .switch-label, .label-settings').css('border-bottom', '1px dashed ' + oTheme["text-normal"]); $('.reconf-label, .switch-label, .label-settings').css('border-bottom', '1px dashed ' + oTheme["text-normal"]);
@ -289,12 +303,12 @@
}); });
</script> </script>
<script src="https://source.zoom.us/2.2.0/lib/vendor/react.min.js"></script> <script src="https://source.zoom.us/2.8.0/lib/vendor/react.min.js"></script>
<script src="https://source.zoom.us/2.2.0/lib/vendor/react-dom.min.js"></script> <script src="https://source.zoom.us/2.8.0/lib/vendor/react-dom.min.js"></script>
<script src="https://source.zoom.us/2.2.0/lib/vendor/redux.min.js"></script> <script src="https://source.zoom.us/2.8.0/lib/vendor/redux.min.js"></script>
<script src="https://source.zoom.us/2.2.0/lib/vendor/redux-thunk.min.js"></script> <script src="https://source.zoom.us/2.8.0/lib/vendor/redux-thunk.min.js"></script>
<script src="https://source.zoom.us/2.2.0/lib/vendor/lodash.min.js"></script> <script src="https://source.zoom.us/2.8.0/lib/vendor/lodash.min.js"></script>
<script src="https://source.zoom.us/zoom-meeting-2.2.0.min.js"></script> <script src="https://source.zoom.us/zoom-meeting-2.8.0.min.js"></script>
<script src="vendor/zoom-sdk/tool.js"></script> <script src="vendor/zoom-sdk/tool.js"></script>
<script src="vendor/zoom-sdk/meeting.js"></script> <script src="vendor/zoom-sdk/meeting.js"></script>
<script src="vendor/zoom-sdk/vconsole.min.js"></script> <script src="vendor/zoom-sdk/vconsole.min.js"></script>

View File

@ -20,12 +20,12 @@
} }
</style> </style>
<body> <body>
<script src="https://source.zoom.us/2.2.0/lib/vendor/react.min.js"></script> <script src="https://source.zoom.us/2.8.0/lib/vendor/react.min.js"></script>
<script src="https://source.zoom.us/2.2.0/lib/vendor/react-dom.min.js"></script> <script src="https://source.zoom.us/2.8.0/lib/vendor/react-dom.min.js"></script>
<script src="https://source.zoom.us/2.2.0/lib/vendor/redux.min.js"></script> <script src="https://source.zoom.us/2.8.0/lib/vendor/redux.min.js"></script>
<script src="https://source.zoom.us/2.2.0/lib/vendor/redux-thunk.min.js"></script> <script src="https://source.zoom.us/2.8.0/lib/vendor/redux-thunk.min.js"></script>
<script src="https://source.zoom.us/2.2.0/lib/vendor/lodash.min.js"></script> <script src="https://source.zoom.us/2.8.0/lib/vendor/lodash.min.js"></script>
<script src="https://source.zoom.us/zoom-meeting-2.2.0.min.js"></script> <script src="https://source.zoom.us/zoom-meeting-2.8.0.min.js"></script>
<script src="vendor/zoom-sdk/tool.js"></script> <script src="vendor/zoom-sdk/tool.js"></script>
<script src="vendor/zoom-sdk/vconsole.min.js"></script> <script src="vendor/zoom-sdk/vconsole.min.js"></script>
<script src="vendor/zoom-sdk/meeting.js"></script> <script src="vendor/zoom-sdk/meeting.js"></script>

View File

@ -130,6 +130,7 @@ var Ps;
} }
}; };
window.switchForms = function(elmToHide, elmToShow) { window.switchForms = function(elmToHide, elmToShow) {
$(elmToHide).toggleClass('display-none'); $(elmToHide).toggleClass('display-none');
$(elmToShow).toggleClass('display-none'); $(elmToShow).toggleClass('display-none');
@ -221,6 +222,12 @@ var Ps;
$('#configState').toggleClass('display-none'); $('#configState').toggleClass('display-none');
}); });
$('#switch').click(function() { $('#switch').click(function() {
if (apiKey == "" || secretKey == "") {
alert("SDK Key or Secret are empty. Check your credentials.");
$('#reconf').trigger("click");
return;
}
$('#create-meeting-container').toggleClass('display-none'); $('#create-meeting-container').toggleClass('display-none');
$('#iframe_join').toggleClass('display-none'); $('#iframe_join').toggleClass('display-none');
@ -336,6 +343,31 @@ var Ps;
localStorage.setItem($('#secretKeyField').attr("data-id"), secretKey); localStorage.setItem($('#secretKeyField').attr("data-id"), secretKey);
localStorage.setItem($('#tokenKeyField').attr("data-id"), tokenKey); localStorage.setItem($('#tokenKeyField').attr("data-id"), tokenKey);
if (email !== "") {
if (localStorage.getItem($('#timezone').attr('data-id')) === null) {
if (oResponse.timezone != "") {
localStorage.setItem($('#timezone').attr('data-id'), oResponse.timezone);
$('#timezone').val(oResponse.timezone);
$('#timezone').trigger('change');
}
}
}
else {
if (localStorage.getItem($('#timezone').attr('data-id')) === null) {
if (oResponse.users[0].timezone != "") {
localStorage.setItem($('#timezone').attr('data-id'), oResponse.users[0].timezone);
$('#timezone').val(oResponse.users[0].timezone);
$('#timezone').trigger('change');
}
if (oResponse.users[0].email) {
email = oResponse.users[0].email;
$('#emailField').val(email);
localStorage.setItem($('#emailField').attr("data-id"), email);
}
}
}
$('#configState').toggleClass('display-none'); $('#configState').toggleClass('display-none');
$('#create-meeting-container').toggleClass('display-none'); $('#create-meeting-container').toggleClass('display-none');
@ -422,6 +454,31 @@ var Ps;
return isEmpty; return isEmpty;
} }
function CheckValidDate(aDateFromPicker, hour, min, timezone) {
let [year, month, day] = [parseInt(aDateFromPicker[2]), parseInt(aDateFromPicker[0]) - 1, parseInt(aDateFromPicker[1])];
hour = parseInt(hour);
min = parseInt(min);
let timezoneOffset = parseInt(timezone[4] + String(parseInt(timezone.slice(5,7)) * 60 + parseInt(timezone.slice(8,10))));
let curDate = new Date(Date.now());
let scheduleDate = new Date();
scheduleDate.setUTCFullYear(year);
scheduleDate.setUTCMonth(month);
scheduleDate.setUTCDate(day);
scheduleDate.setUTCHours(hour);
scheduleDate.setUTCMinutes(min);
scheduleDate.setUTCMinutes(scheduleDate.getUTCMinutes() - timezoneOffset);
if (curDate.getTime() > scheduleDate.getTime()) {
return false;
}
return true;
}
function CreateMeeting(isNowMeeting) { function CreateMeeting(isNowMeeting) {
if ($('#duration-hour').val() === "0" && $('#duration-min').val() === "0") if ($('#duration-hour').val() === "0" && $('#duration-min').val() === "0")
{ {
@ -475,6 +532,12 @@ var Ps;
} }
sResultTime = sDate + 'T' + sTime + ':00'; sResultTime = sDate + 'T' + sTime + ':00';
if (CheckValidDate(arrSplittedDate, sTime.split(":")[0], sTime.split(":")[1], $('#timezone').find(":selected").text().trim()) == false) {
alert("Specify a start time and an end time that must be later than the current time.");
showLoader(elements, false);
return;
}
// calc duration in minutes // calc duration in minutes
var sResultDuration = String(Number(sDurationHour) * 60 + Number(sDurationMin)); var sResultDuration = String(Number(sDurationHour) * 60 + Number(sDurationMin));
@ -528,6 +591,13 @@ var Ps;
showLoader(elements, false); showLoader(elements, false);
}).error(function(e) { }).error(function(e) {
alert('Meeting was not created'); alert('Meeting was not created');
if (e.responseJSON && e.responseJSON.message) {
console.log(e.responseJSON.message);
if (e.responseJSON.message.search("Invalid access token.") != -1) {
alert("Invalid access (JWT) token.")
$('#reconf').trigger("click");
}
}
showLoader(elements, false); showLoader(elements, false);
}); });
} }

View File

@ -1,4 +1,4 @@
SIGNATURE_SERVER = "https://onlyofficezoom.herokuapp.com/"; SIGNATURE_SERVER = "https://onlyoffice-zoom-sdk-signature.herokuapp.com/";
window.addEventListener('DOMContentLoaded', function(event) { window.addEventListener('DOMContentLoaded', function(event) {
console.log('DOM fully loaded and parsed'); console.log('DOM fully loaded and parsed');
@ -28,7 +28,7 @@ function websdkready() {
// ZoomMtg.setZoomJSLib('http://localhost:9999/node_modules/@zoomus/websdk/dist/lib', '/av'); // Local version default, Angular Project change to use cdn version // ZoomMtg.setZoomJSLib('http://localhost:9999/node_modules/@zoomus/websdk/dist/lib', '/av'); // Local version default, Angular Project change to use cdn version
ZoomMtg.preLoadWasm(); // pre download wasm file to save time. ZoomMtg.preLoadWasm(); // pre download wasm file to save time.
var API_KEY, API_SECRET; var SDK_KEY, SDK_SECRET;
/** /**
* NEVER PUT YOUR ACTUAL API SECRET IN CLIENT SIDE CODE, THIS IS JUST FOR QUICK PROTOTYPING * NEVER PUT YOUR ACTUAL API SECRET IN CLIENT SIDE CODE, THIS IS JUST FOR QUICK PROTOTYPING
@ -83,8 +83,8 @@ function websdkready() {
// click join meeting button // click join meeting button
window.joinMeeting = function () { window.joinMeeting = function () {
API_KEY = localStorage.getItem('zoom-client-key') || ""; SDK_KEY = localStorage.getItem('zoom-client-key') || "";
API_SECRET = API_SECRET = localStorage.getItem('zoom-secret-key') || ""; SDK_SECRET = SDK_SECRET = localStorage.getItem('zoom-secret-key') || "";
var meetingConfig = testTool.getMeetingConfig(); var meetingConfig = testTool.getMeetingConfig();
if (!meetingConfig.mn || !meetingConfig.name) { if (!meetingConfig.mn || !meetingConfig.name) {
@ -106,14 +106,14 @@ function websdkready() {
data: { data: {
'meet_number': meetingConfig.mn, 'meet_number': meetingConfig.mn,
'role_id': meetingConfig.role, 'role_id': meetingConfig.role,
'api_key': API_KEY, 'sdk_key': SDK_KEY,
'api_secret': API_SECRET 'sdk_secret': SDK_SECRET
}, },
url: SIGNATURE_SERVER url: SIGNATURE_SERVER
}).success(function (oResponse) { }).success(function (oResponse) {
meetingConfig.signature = oResponse; meetingConfig.signature = oResponse;
meetingConfig.apiKey = API_KEY; meetingConfig.sdkKey = SDK_KEY;
var joinUrl = document.location.protocol + "//" + document.location.host + document.location.pathname.replace("index_zoom.html", "meeting.html?") + testTool.serialize(meetingConfig); var joinUrl = document.location.protocol + "//" + document.location.host + document.location.pathname.replace("index_zoom.html", "meeting.html?") + testTool.serialize(meetingConfig);
window.parent.openMeeting(joinUrl); window.parent.openMeeting(joinUrl);
}).error(function(oResponse) { }).error(function(oResponse) {
@ -132,26 +132,44 @@ function websdkready() {
// click copy jon link button // click copy jon link button
window.copyJoinLink = function (element) { window.copyJoinLink = function (element) {
var meetingConfig = testTool.getMeetingConfig(); SDK_KEY = localStorage.getItem('zoom-client-key') || "";
if (!meetingConfig.mn || !meetingConfig.name) { SDK_SECRET = SDK_SECRET = localStorage.getItem('zoom-secret-key') || "";
alert("Meeting number or username is empty");
return false;
}
var signature = ZoomMtg.generateSignature({
meetingNumber: meetingConfig.mn,
apiKey: API_KEY,
apiSecret: API_SECRET,
role: meetingConfig.role,
success: function (res) {
console.log(res.result);
meetingConfig.signature = res.result;
meetingConfig.apiKey = API_KEY;
var joinUrl = document.location.protocol + "//" + document.location.host + document.location.pathname.replace("index_zoom.html", "meeting.html?") + testTool.serialize(meetingConfig);
document.getElementById('copy_link_value').setAttribute('link', joinUrl);
copyToClipboard('copy_link_value');
},
});
};
var meetingConfig = testTool.getMeetingConfig();
if (!meetingConfig.mn || !meetingConfig.name) {
alert("Meeting number or username is empty");
return false;
}
localStorage.setItem($('#display_name').attr('data-id'), $('#display_name').val());
localStorage.setItem($('#display_name').attr('data-id'), $('#display_name').val())
if ($('#meeting_email').val().trim() !== "")
localStorage.setItem($('#meeting_email').attr('data-id'), $('#meeting_email').val());
localStorage.setItem($('#display_name').attr('data-id'), $('#display_name').val())
testTool.setCookie("meeting_number", meetingConfig.mn);
testTool.setCookie("meeting_pwd", meetingConfig.pwd);
$.ajax({
method: 'POST',
data: {
'meet_number': meetingConfig.mn,
'role_id': meetingConfig.role,
'sdk_key': SDK_KEY,
'sdk_secret': SDK_SECRET
},
url: SIGNATURE_SERVER
}).success(function (oResponse) {
meetingConfig.signature = oResponse;
meetingConfig.sdkKey = SDK_KEY;
var joinUrl = document.location.protocol + "//" + document.location.host + document.location.pathname.replace("index_zoom.html", "meeting.html?") + testTool.serialize(meetingConfig);
document.getElementById('copy_link_value').setAttribute('link', joinUrl);
copyToClipboard('copy_link_value');
alert('Copy link was copied to clipboard')
}).error(function(oResponse) {
console.log(oResponse)
})
};
} }

View File

@ -3,13 +3,12 @@ window.addEventListener('DOMContentLoaded', function(event) {
websdkready(); websdkready();
}); });
console.log("!!!");
function websdkready() { function websdkready() {
var testTool = window.testTool; var testTool = window.testTool;
// get meeting args from url // get meeting args from url
var tmpArgs = testTool.parseQuery(); var tmpArgs = testTool.parseQuery();
var meetingConfig = { var meetingConfig = {
apiKey: tmpArgs.apiKey, sdkKey: tmpArgs.sdkKey,
meetingNumber: tmpArgs.mn, meetingNumber: tmpArgs.mn,
userName: (function () { userName: (function () {
if (tmpArgs.name) { if (tmpArgs.name) {
@ -68,7 +67,7 @@ function websdkready() {
meetingNumber: meetingConfig.meetingNumber, meetingNumber: meetingConfig.meetingNumber,
userName: meetingConfig.userName, userName: meetingConfig.userName,
signature: signature, signature: signature,
apiKey: meetingConfig.apiKey, sdkKey: meetingConfig.sdkKey,
userEmail: meetingConfig.userEmail, userEmail: meetingConfig.userEmail,
passWord: meetingConfig.passWord, passWord: meetingConfig.passWord,
success: function (res) { success: function (res) {
@ -110,3 +109,6 @@ function websdkready() {
beginJoin(meetingConfig.signature); beginJoin(meetingConfig.signature);
}; };
window.onunload = function() {
document.exitFullscreen();
}