editor.js/plugins/twitter/twitter.js

190 lines
5.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Twitter plugin
* @version 1.0.0
*/
var twitter = (function(twitter) {
var methods = {
/**
* Twitter render method appends content after block
* @param tweetId
*/
twitter : function(data, tweet) {
setTimeout(function() {
window.twttr.widgets.createTweet(data.id_str, tweet);
}, 1000);
tweet.classList.add('twitter__loader');
if (codex.content.currentNode) {
tweet.dataset.statusUrl = data.status_url;
codex.content.switchBlock(codex.content.currentNode, tweet, 'twitter');
}
/**
* in case if we need extra data
*/
if (!data.user) {
codex.core.ajax({
url : '/writing/tweetInfo?tweetId=' + data.id_str,
type: "GET",
success: function(result) {
methods.saveTwitterData(result, tweet);
}
});
} else {
tweet.dataset.profileImageUrl = data.user.profile_image_url;
tweet.dataset.profileImageUrlHttps = data.user.profile_image_url_https;
tweet.dataset.screenName = data.user.screen_name;
tweet.dataset.name = data.user.name;
tweet.dataset.id = data.id;
tweet.dataset.idStr = data.id_str;
tweet.dataset.text = data.text;
tweet.dataset.createdAt = data.created_at;
tweet.dataset.statusUrl = data.status_url;
tweet.dataset.media = data.media;
tweet.classList.remove('twitter__loader');
}
},
twitterBlock : function() {
var block = codex.draw.node('DIV', '', { height: "20px" });
return block;
},
saveTwitterData : function(result, tweet) {
var data = JSON.parse(result),
twitterContent = tweet;
setTimeout(function() {
/**
* Save twitter data via data-attributes
*/
twitterContent.dataset.profileImageUrl = data.user.profile_image_url;
twitterContent.dataset.profileImageUrlHttps = data.user.profile_image_url_https;
twitterContent.dataset.screenName = data.user.screen_name;
twitterContent.dataset.name = data.user.name;
twitterContent.dataset.id = data.id;
twitterContent.dataset.idStr = data.id_str;
twitterContent.dataset.text = data.text;
twitterContent.dataset.createdAt = data.created_at;
twitterContent.dataset.media = data.entities.urls.length > 0 ? "false" : "true";
twitterContent.classList.remove('twitter__loader');
}, 50);
}
};
/**
* Prepare twitter scripts
*/
twitter.prepare = function() {
var script = "//platform.twitter.com/widgets.js";
/**
* Load script
*/
codex.core.importScript(script, 'twitterAPI');
};
twitter.make = function(data) {
if (!data.id || !data.status_url)
return;
if (!data.id_str && typeof(data.id) === 'number') {
data.id_str = data.status_url.match(/[^\/]+$/)[0];
}
var blockContent = methods.twitterBlock();
methods.twitter(data, blockContent);
return blockContent;
};
twitter.validate = function(data) {
return true;
};
twitter.save = function(blockContent) {
var data;
data = {
media:blockContent.dataset.media,
conversation:false,
user:{
profile_image_url: blockContent.dataset.profileImageUrl,
profile_image_url_https: blockContent.dataset.profileImageUrlHttps,
screen_name: blockContent.dataset.screenName,
name: blockContent.dataset.name
},
id: blockContent.dataset.id || blockContent.dataset.tweetId,
id_str : blockContent.dataset.idStr,
text: blockContent.dataset.text,
created_at: blockContent.dataset.createdAt,
status_url: blockContent.dataset.statusUrl,
caption: ""
};
return data;
};
twitter.render = function(data) {
return twitter.make(data);
};
/**
* callback for twitter utl's coming from pasteTool
* Using Twittter Widget to render
* @param url
*/
twitter.urlPastedCallback = function(url) {
var tweetId,
arr,
data;
arr = url.split('/');
tweetId = arr.pop();
/** Example */
data = {
media:true,
conversation:false,
user:{
profile_image_url:"http:\/\/pbs.twimg.com\/profile_images\/1817165982\/nikita-likhachev-512_normal.jpg",
profile_image_url_https:"https:\/\/pbs.twimg.com\/profile_images\/1817165982\/nikita-likhachev-512_normal.jpg",
screen_name:"Niketas",
name:"Никита Лихачёв"
},
id: tweetId,
text:"ВНИМАНИЕ ЧИТАТЬ ВСЕМ НЕ ДАЙ БОГ ПРОПУСТИТЕ НУ ИЛИ ХОТЯ БЫ КЛИКНИ И ПОДОЖДИ 15 СЕКУНД https:\/\/t.co\/iWyOHf4xr2",
created_at:"Tue Jun 28 14:09:12 +0000 2016",
status_url:"https:\/\/twitter.com\/Niketas\/status\/747793978511101953",
caption:"Caption"
};
codex.tools.twitter.make(data);
}
return twitter;
})({});