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 }, {