From a8cf1bcdd622397b05486b6a6e25db0fefc6a2bc Mon Sep 17 00:00:00 2001 From: George Berezhnoy Date: Thu, 26 Jan 2017 04:34:00 +0300 Subject: [PATCH] Validation for embed plugin added --- example.html | 1 + plugins/embed/embed.js | 46 +++++++++++++++++++++++++-------------- plugins/paste/patterns.js | 4 ++-- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/example.html b/example.html index 9918ba00..29f7710a 100644 --- a/example.html +++ b/example.html @@ -183,6 +183,7 @@ settings: null, render: embed.render, save: embed.save, + validate: embed.validate, displayInToolbox: false, enableLineBreaks: false, allowedToPaste: false diff --git a/plugins/embed/embed.js b/plugins/embed/embed.js index 83eaf166..529f1ab5 100644 --- a/plugins/embed/embed.js +++ b/plugins/embed/embed.js @@ -28,6 +28,22 @@ var embed = function(embed){ wrapper.innerHTML = html; return wrapper; + }, + + getRemoteId: function(source, execArray) { + + switch(source) { + case 'yandex-music-track': + id = execArray[2]+'/'+execArray[1]; + break; + case 'yandex-music-playlist': + id = execArray[1]+'/'+execArray[2]; + break; + default: + id = execArray[1]; + } + + return id; } }; @@ -82,19 +98,19 @@ var embed = function(embed){ width: 600 }, 'yandex-music-album': { - regex: '', + regex: /https?:\/\/music.yandex.ru\/album\/([0-9]*)/, html: "", height: 400, width: 540 }, 'yandex-music-track': { - regex: '', + regex: /https?:\/\/music.yandex.ru\/album\/([0-9]*)\/track\/([0-9]*)/, html: "", height: 100, width: 540 }, 'yandex-music-playlist': { - regex: '', + regex: /https?:\/\/music.yandex.ru\/users\/([^\/\?\&]*)\/playlists\/([0-9]*)/, html: "", height: 400, width: 540 @@ -162,19 +178,7 @@ var embed = function(embed){ embed.urlPastedCallback = function(url, pattern) { var execArray = pattern.regex.exec(url), - id; - - - switch(pattern.type) { - case 'yandex-music-track': - id = execArray[2]+'/'+execArray[1]; - break; - case 'yandex-music-playlist': - id = execArray[1]+'/'+execArray[2]; - break; - default: - id = execArray[1]; - } + id = methods.getRemoteId(pattern.type, execArray); var data = { source: pattern.type, @@ -185,6 +189,16 @@ var embed = function(embed){ embed.make(data, true); }; + embed.validate = function(savedData) { + + var source = savedData.source, + execArray = services[source].regex.exec(savedData.thumbnailUrl), + remoteId = methods.getRemoteId(source, execArray); + + return remoteId == savedData.remote_id; + + }; + return embed; }({}); \ No newline at end of file diff --git a/plugins/paste/patterns.js b/plugins/paste/patterns.js index 2f37b369..bc3cf868 100644 --- a/plugins/paste/patterns.js +++ b/plugins/paste/patterns.js @@ -20,12 +20,12 @@ paste.patterns = [ }, { type: 'instagram', - regex: new RegExp("http?.+instagram.com\/p?."), + regex: /http?.+instagram.com\/p\/([a-zA-Z0-9]*)/, callback: instagram.urlPastedCallback }, { type: 'twitter', - regex: new RegExp("http?.+twitter.com?.+\/"), + regex: /http?.+twitter.com?.+\//, callback: twitter.urlPastedCallback }, {