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