1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- import { withPluginApi } from "discourse/lib/plugin-api";
- import showModal from "discourse/lib/show-modal";
- import { iconHTML } from "discourse-common/lib/icon-library";
- import { ajax } from "discourse/lib/ajax";
- import { popupAjaxError } from "discourse/lib/ajax-error";
- function launchBBB($elem, fullWindow) {
- const data = $elem.data();
- ajax("/bbb/create.json", {
- type: "POST",
- data: data
- })
- .then(res => {
- if (res.url) {
- console.log(fullWindow);
- if (fullWindow) {
- window.location.href = res.url;
- } else {
- $elem.children().hide();
- $elem.append(
- `<iframe src="${res.url}" allow="camera;microphone;fullscreen;speaker" width="690" height="500" style="border:none"></iframe>`
- );
- }
- }
- })
- .catch(function(error) {
- popupAjaxError(error);
- });
- }
- function attachButton($elem, fullWindow) {
- const buttonLabel = $elem.data("label") || I18n.t("bbb.launch");
- $elem.html(
- `<button class='launch-bbb btn'>${iconHTML(
- "video"
- )} ${buttonLabel}</button>`
- );
- $elem.find("button").on("click", () => launchBBB($elem, fullWindow));
- }
- function attachBBB($elem, helper) {
- if (helper) {
- const siteSettings = Discourse.__container__.lookup("site-settings:main");
- const fullWindow = siteSettings.bbb_full_window;
- $elem.find("[data-wrap=discourse-bbb]").each((idx, val) => {
- attachButton($(val), fullWindow);
- });
- }
- }
- export default {
- name: "insert-bbb",
- initialize() {
- withPluginApi("0.8.31", api => {
- const currentUser = api.getCurrentUser();
- const siteSettings = api.container.lookup("site-settings:main");
- api.onToolbarCreate(toolbar => {
- if (siteSettings.bbb_staff_only && !currentUser.staff) {
- return;
- }
- toolbar.addButton({
- title: "bbb.composer_title",
- id: "insertBBB",
- group: "insertions",
- icon: "fab-bootstrap",
- perform: e =>
- showModal("insert-bbb").setProperties({ toolbarEvent: e })
- });
- });
- api.decorateCooked(attachBBB, { id: "discourse-bbb" });
- });
- }
- };
|