mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-02 12:05:57 +01:00
moved the duplicated sharing code to requirejs module
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
/* global define, config, templates, app, ajaxify, socket, translator */
|
/* global define, config, templates, app, ajaxify, socket, translator */
|
||||||
|
|
||||||
define(['composer', 'forum/pagination'], function(composer, pagination) {
|
define(['composer', 'forum/pagination', 'share'], function(composer, pagination, share) {
|
||||||
var Category = {},
|
var Category = {},
|
||||||
loadingMoreTopics = false;
|
loadingMoreTopics = false;
|
||||||
|
|
||||||
@@ -10,33 +10,7 @@ define(['composer', 'forum/pagination'], function(composer, pagination) {
|
|||||||
|
|
||||||
app.enterRoom('category_' + cid);
|
app.enterRoom('category_' + cid);
|
||||||
|
|
||||||
$('.twitter-share').on('click', function () {
|
share.addShareHandlers(ajaxify.variables.get('category_name'));
|
||||||
window.open('https://twitter.com/intent/tweet?url=' + encodeURIComponent(window.location.href) + '&text=' + encodeURIComponent(ajaxify.variables.get('category_name')), '_blank', 'width=550,height=420,scrollbars=no,status=no');
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.facebook-share').on('click', function () {
|
|
||||||
window.open('https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(window.location.href), '_blank', 'width=626,height=436,scrollbars=no,status=no');
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.google-share').on('click', function () {
|
|
||||||
window.open('https://plus.google.com/share?url=' + encodeURIComponent(window.location.href), '_blank', 'width=500,height=570,scrollbars=no,status=no');
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.share-dropdown').on('shown.bs.dropdown', function() {
|
|
||||||
$('#category-link').val(window.location.protocol + '//' + window.location.host + window.location.pathname);
|
|
||||||
// without the setTimeout can't select the text in the input
|
|
||||||
setTimeout(function() {
|
|
||||||
$('#category-link').putCursorAtEnd().select();
|
|
||||||
}, 50);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.post-link').on('click', function(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#new_post').on('click', function () {
|
$('#new_post').on('click', function () {
|
||||||
composer.newTopic(cid);
|
composer.newTopic(cid);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
/* globals define, app, translator, ajaxify, socket, bootbox */
|
/* globals define, app, translator, ajaxify, socket, bootbox */
|
||||||
|
|
||||||
define(['composer'], function(composer) {
|
define(['composer', 'share'], function(composer, share) {
|
||||||
|
|
||||||
var PostTools = {},
|
var PostTools = {},
|
||||||
topicName;
|
topicName;
|
||||||
@@ -12,7 +12,7 @@ define(['composer'], function(composer) {
|
|||||||
|
|
||||||
addPostHandlers(tid, threadState);
|
addPostHandlers(tid, threadState);
|
||||||
|
|
||||||
addShareHandlers();
|
share.addShareHandlers(topicName);
|
||||||
};
|
};
|
||||||
|
|
||||||
function addPostHandlers(tid, threadState) {
|
function addPostHandlers(tid, threadState) {
|
||||||
@@ -21,6 +21,7 @@ define(['composer'], function(composer) {
|
|||||||
onReplyClicked($(this), tid, topicName);
|
onReplyClicked($(this), tid, topicName);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var postContainer = $('#post-container');
|
var postContainer = $('#post-container');
|
||||||
|
|
||||||
postContainer.on('click', '.quote', function() {
|
postContainer.on('click', '.quote', function() {
|
||||||
@@ -228,39 +229,5 @@ define(['composer'], function(composer) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function addShareHandlers() {
|
|
||||||
|
|
||||||
function openShare(url, pid, width, height) {
|
|
||||||
window.open(url + encodeURIComponent(window.location.protocol + '//' + window.location.host + window.location.pathname + '#' + pid), '_blank', 'width=' + width + ',height=' + height + ',scrollbars=no,status=no');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$('#post-container').on('shown.bs.dropdown', '.share-dropdown', function() {
|
|
||||||
var pid = getPid($(this));
|
|
||||||
$('#post_' + pid + '_link').val(window.location.protocol + '//' + window.location.host + window.location.pathname + '#' + pid);
|
|
||||||
// without the setTimeout can't select the text in the input
|
|
||||||
setTimeout(function() {
|
|
||||||
$('#post_' + pid + '_link').putCursorAtEnd().select();
|
|
||||||
}, 50);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#post-container').on('click', '.post-link', function(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#post-container').on('click', '.twitter-share', function () {
|
|
||||||
return openShare('https://twitter.com/intent/tweet?text=' + topicName + '&url=', getPid($(this)), 550, 420);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#post-container').on('click', '.facebook-share', function () {
|
|
||||||
return openShare('https://www.facebook.com/sharer/sharer.php?u=', getPid($(this)), 626, 436);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#post-container').on('click', '.google-share', function () {
|
|
||||||
return openShare('https://plus.google.com/share?url=', getPid($(this)), 500, 570);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return PostTools;
|
return PostTools;
|
||||||
});
|
});
|
||||||
56
public/src/modules/share.js
Normal file
56
public/src/modules/share.js
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
/* globals define, app, translator, ajaxify, socket, bootbox */
|
||||||
|
|
||||||
|
define(function() {
|
||||||
|
|
||||||
|
var module = {};
|
||||||
|
|
||||||
|
module.addShareHandlers = function(name) {
|
||||||
|
|
||||||
|
var baseUrl = window.location.protocol + '//' + window.location.host + window.location.pathname;
|
||||||
|
|
||||||
|
function openShare(url, hash, width, height) {
|
||||||
|
window.open(url + encodeURIComponent(baseUrl + hash), '_blank', 'width=' + width + ',height=' + height + ',scrollbars=no,status=no');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#content').on('shown.bs.dropdown', '.share-dropdown', function() {
|
||||||
|
|
||||||
|
var postLink = $(this).find('.post-link');
|
||||||
|
postLink.val(baseUrl + getPostHash($(this)));
|
||||||
|
|
||||||
|
// without the setTimeout can't select the text in the input
|
||||||
|
setTimeout(function() {
|
||||||
|
postLink.putCursorAtEnd().select();
|
||||||
|
}, 50);
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#content').on('click', '.post-link', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#content').on('click', '.twitter-share', function () {
|
||||||
|
return openShare('https://twitter.com/intent/tweet?text=' + name + '&url=', getPostHash($(this)), 550, 420);
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#content').on('click', '.facebook-share', function () {
|
||||||
|
return openShare('https://www.facebook.com/sharer/sharer.php?u=', getPostHash($(this)), 626, 436);
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#content').on('click', '.google-share', function () {
|
||||||
|
return openShare('https://plus.google.com/share?url=', getPostHash($(this)), 500, 570);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
function getPostHash(clickedElement) {
|
||||||
|
var pid = clickedElement.parents('.post-row').attr('data-pid');
|
||||||
|
if (pid) {
|
||||||
|
return '#' + pid;
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return module;
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user