From: Jan Szejko Date: Wed, 5 Dec 2018 14:11:22 +0000 (+0100) Subject: add vimeo X-Git-Url: https://git.mdrn.pl/fnpeditor.git/commitdiff_plain/b3175511e034e17b05ffb5b12413ba94e2f69bee?ds=inline;hp=6b836441828cd0b8f06715cda23a54cadf37875e add vimeo --- diff --git a/src/editor/plugins/core/video/videoElement.js b/src/editor/plugins/core/video/videoElement.js index 0687955..72b19a8 100644 --- a/src/editor/plugins/core/video/videoElement.js +++ b/src/editor/plugins/core/video/videoElement.js @@ -12,10 +12,27 @@ var $ = require('libs/jquery'), attachments = require('views/attachments/attachments'), linkElement = Object.create(genericElement); +function videoParser(url) { + var youtubeId = youtubeParser(url); + if (youtubeId) { + return {'videoProvider': 'youtube', 'videoId': youtubeId} + } + var vimeoId = vimeoParser(url); + if (vimeoId) { + return {'videoProvider': 'vimeo', 'videoId': vimeoId} + } +} + function youtubeParser(url) { var regExp = /^.*(?:youtu.be\/|v\/|\/u\/\w\/|embed\/|\?v=|&v=|shared\?ci=)([^#&?]*).*/; var match = url.match(regExp); - return (match && match[1].length == 11) ? match[1] : false; + return (match && match[1].length === 11) ? match[1] : false; +} + +function vimeoParser(url) { + var regExp = /https?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/; + var match = url.match(regExp); + return match? match[2]: false; } _.extend(linkElement, { @@ -52,12 +69,18 @@ _.extend(linkElement, { refreshLink: function(linkUrl) { this._container().find('iframe').remove(); - var video_id = youtubeParser(linkUrl); - if (video_id) { - var video_frame = ''; + var videoData = videoParser(linkUrl); + var videoFrame; + if (videoData) { + if (videoData.videoProvider === 'youtube') { + videoFrame = ''; + } else if (videoData.videoProvider === 'vimeo') { + videoFrame = ''; + } this._container().text(''); - this._container().append($(video_frame)); + this._container().append($(videoFrame)); } else { this._container().text(gettext('No video. Click here to add link to your video')); } @@ -71,7 +94,7 @@ _.extend(linkElement, { cancelButtonText: gettext('Cancel'), fields: [ { - label: gettext('YouTube link'), + label: gettext('YouTube or Vimeo link'), name: 'src', type: 'input', initialValue: el.wlxmlNode.getAttr('src'), @@ -86,9 +109,11 @@ _.extend(linkElement, { e.stopPropagation(); dialog.on('execute', function(event) { + var videoData = videoParser(event.formData.src); el.wlxmlNode.document.transaction(function() { el.wlxmlNode.setAttr('src', event.formData.src); - el.wlxmlNode.setAttr('videoid', youtubeParser(event.formData.src)); + el.wlxmlNode.setAttr('videoid', videoData.videoId); + el.wlxmlNode.setAttr('provider', videoData.videoProvider); event.success(); }, { metadata: {