--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-content/plugins/social/assets/social.js Tue Dec 04 18:43:10 2012 -0800
@@ -0,0 +1,452 @@
+(function($) {
+ /*
+ * Append social-js class to html element. This allows us to prevent JS FOUC
+ * in an accessible way.
+ * Run it ASAP. Doesn't need to run on domReady because the html element is
+ * the first thing available.
+ */
+ var c = document.getElementsByTagName('html')[0];
+ c.className += ' social-js';
+
+ $(function() {
+ $('.social-login').click(function(e) {
+ e.preventDefault();
+
+ var $window = $(this),
+ $auth_window = window.open($(this).attr('href'), "ServiceAssociate", 'width=700,height=400'),
+ auth_poll = null;
+
+ auth_poll = setInterval(function() {
+ if ($auth_window.closed) {
+ clearInterval(auth_poll);
+
+ if (!$window.hasClass('comments')) {
+ window.location.reload();
+ }
+ else {
+ var $parent = $('.social-post');
+ $.post($parent.find('#reload_url').val(), {}, function(response) {
+ if (response.result == 'success') {
+ // Add logged-in body class since we're not going to be refreshing the page.
+ $('body').addClass('logged-in');
+
+ var $cancel = $('#cancel-comment-reply-link'),
+ $parent = $cancel.closest('li'),
+ $clone = $cancel.clone(true);
+ $cancel.click();
+ $('#respond').replaceWith(response.html);
+ // replace the cancel button with the one we cloned, to retain actions
+ $('#respond').find('#cancel-comment-reply-link').remove().end()
+ .find('#reply-title small:first').append($clone);
+ $parent.find('.comment-reply-link:first').click();
+
+ $('#primary').find('#social_login').parent().html(response.disconnect_url);
+ }
+ }, 'json');
+ }
+ }
+ }, 100);
+ });
+
+ // comments.php
+ if ($('#social').length) {
+ // MCC Tabs
+ var $prevLink = null,
+ prevLink = null,
+ $nextLink = null,
+ nextLink = null;
+ if ($('#comments .nav-previous a').length) {
+ $prevLink = $('#comments .nav-previous a');
+ prevLink = $prevLink.attr('href');
+ }
+
+ if ($('#comments .nav-next a').length) {
+ $nextLink = $('#comments .nav-next a');
+ nextLink = $nextLink.attr('href');
+ }
+
+ $('.social-nav a').click(function(e) {
+ e.preventDefault();
+ $('#cancel-comment-reply-link').trigger('click');
+
+ $('.social-current-tab').removeClass('social-current-tab');
+ $(this).parent().addClass('social-current-tab');
+ $('.social-items').removeClass('social-comment-collapse');
+
+ var className = $(this).attr('rel');
+ if (className == 'social-all') {
+ if (nextLink !== null) {
+ $nextLink.attr('href', nextLink);
+ }
+
+ if (prevLink !== null) {
+ $prevLink.attr('href', prevLink);
+ }
+
+ $('.social-commentlist li').removeClass('social-comment-collapse');
+ } else {
+ $('.social-items:not(.' + className + ')').addClass('social-comment-collapse');
+ $('.social-commentlist li').each(function() {
+ if (!$(this).hasClass(className)) {
+ $(this).addClass('social-comment-collapse');
+ }
+ else {
+ $(this).removeClass('social-comment-collapse');
+ }
+ });
+
+ if (prevLink !== null) {
+ var _prevLink = prevLink.split('#comments');
+ if (_prevLink.indexOf('?') == -1) {
+ _prevLink[0] = _prevLink[0] + '?';
+ }
+ else {
+ _prevLink[0] = _prevLink[0] + '&';
+ }
+ $prevLink.attr('href', _prevLink[0] + 'social_tab=' + className + '#comments');
+ }
+
+ if (nextLink !== null) {
+ var _nextLink = nextLink.split('#comments');
+ if (_nextLink.indexOf('?') == -1) {
+ _nextLink[0] = _nextLink[0] + '?';
+ }
+ else {
+ _nextLink[0] = _nextLink[0] + '&';
+ }
+ $nextLink.attr('href', _nextLink[0] + 'social_tab=' + className + '#comments');
+ }
+ }
+ });
+
+ $('.social-current-tab a').trigger('click');
+
+ /**
+ * Inserts the Twitter username for the reply to content.
+ *
+ * @param $author
+ * @param $textarea
+ * @param extraContent
+ */
+ function insertTwitterUsername($author, $textarea, extraContent) {
+ var username = $author.html() + ' ';
+ if (username.substr(0, 1) != '@') {
+ username = '@' + username;
+ }
+ if (extraContent !== undefined) {
+ username += extraContent;
+ }
+ var val = $textarea.val();
+ if (val.substr(0, username.length) != username) {
+ var content = '';
+ var content = (val.length > 0 ? username + val : username);
+ var pos = content.length;
+ $textarea.val(content);
+ if ($textarea.get(0).setSelectionRange) {
+ $textarea.focus();
+ $textarea.get(0).setSelectionRange(pos, pos);
+ }
+ else if ($textarea.createTextRange) {
+ var range = $textarea.get(0).createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ }
+ }
+
+ /**
+ * Removes the inserted Twitter username from the content.
+ *
+ * @param $author
+ * @param $textarea
+ */
+ function removeTwitterUsername($author, $textarea) {
+ var username = $author.html() + ' ';
+ if (username.substr(0, 1) != '@') {
+ username = '@' + username;
+ }
+ var val = $textarea.val();
+ if (val.substr(0, username.length) == username) {
+ var content = val.substr(username.length);
+ var pos = content.length;
+ $textarea.val(content);
+ if ($textarea.get(0).setSelectionRange) {
+ $textarea.focus();
+ $textarea.get(0).setSelectionRange(pos, pos);
+ }
+ else if ($textarea.createTextRange) {
+ var range = $textarea.get(0).createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ }
+ }
+
+ $('.comment-reply-link').click(function() {
+ $('.comment-reply-link').show();
+ $(this).hide();
+ var $title = $('#reply-title'),
+ $cancel = null,
+ $parent = $(this).closest('li'),
+ $textarea = $parent.find('textarea'),
+ $form = $('#commentform');
+ // set data attr for current title
+ // set title to Sociali18n.commentReplyTitle
+ $cancel = $title.find('small').hide().appendTo($title);
+ $title.data('orig-title', $title.find('span').text())
+ .find('span').html(Sociali18n.commentReplyTitle + ' ')
+ .append($cancel.show());
+ if ($parent.hasClass('social-twitter') || $parent.hasClass('social-facebook')) {
+ var commentService = ($parent.hasClass('social-twitter') ? 'twitter' : 'facebook');
+ // check to see if the current user has a profile for the service
+ if ($('#post_accounts option[data-type="' + commentService + '"]').size() == 0 &&
+ $form.find('.social-identity .social-' + commentService + '-icon').size() == 0) {
+ return;
+ }
+ var username = '',
+ matched = false,
+ $option = false,
+ $options = $('#post_accounts option[data-type="' + commentService + '"]');
+ switch (commentService) {
+ case 'twitter':
+ // look for a username at the beginning of the comment
+ // if we have that account available, use it
+ // if not, select the first account for that service
+ var content = $.trim($parent.find('.social-comment-body:first').text());
+ if (content.substr(0, 1) == '@') {
+ username = content.split(' ')[0].substr(1);
+ }
+ $options.each(function() {
+ if ($(this).html() == username) {
+ matched = true;
+ $option = $(this);
+ return false;
+ }
+ });
+ var $author = $parent.find('.social-comment-author a'),
+ author_rel = $author.attr('rel').split(' ');
+ $('#in_reply_to_status_id').val(author_rel[0]);
+ // if click invoked programatically, do nothing.
+ if ($textarea.size()) {
+ insertTwitterUsername($author, $textarea);
+ }
+ break;
+ case 'facebook':
+ break;
+ }
+ if (!matched) {
+ $options.each(function() {
+ $option = $(this);
+ return false;
+ });
+ }
+ if ($option) {
+ $('#post_accounts').val($option.attr('value')).change();
+ }
+ $('#post_to_service').prop('checked', true);
+ }
+ });
+
+ // some actions need the "live" treatment
+ $(document).on('click', '#cancel-comment-reply-link', function() {
+ $('.comment-reply-link').show();
+ $('#post_to_service').prop('checked', false);
+ $('#in_reply_to_status_id').val('');
+ });
+ // due to the way WP's comment JS works, we can't run this on the "live" action above
+ // by the time this runs, the node is moved and $parent is an empty set
+ $('#cancel-comment-reply-link').click(function() {
+ var $title = $('#reply-title'),
+ $cancel = null,
+ $parent = $(this).closest('li'),
+ $textarea = $parent.find('textarea'),
+ $author = $parent.find('.social-comment-author a');
+ // if click invoked programatically, do nothing.
+ if ($textarea.size()) {
+ // restore title
+ $cancel = $title.find('small').hide().appendTo($title);
+ $title.find('span').html($title.data('orig-title') + ' ').append($cancel);
+ removeTwitterUsername($author, $textarea);
+ }
+ });
+
+ var $avatar = $('#commentform .avatar');
+ var original_avatar = $avatar.attr('src');
+ $(document).on('change', '#post_accounts', function() {
+ $(this).find('option:selected').each(function() {
+ var $parent = $(this).closest('li'),
+ $textarea = $parent.find('textarea'),
+ $author = $parent.find('.social-comment-author a');
+ if ($textarea.size()) {
+ if ($(this).data('type') == 'twitter') {
+ insertTwitterUsername($author, $textarea);
+ }
+ else {
+ removeTwitterUsername($author, $textarea);
+ }
+ }
+ var avatar = $(this).attr('rel');
+ if (avatar !== undefined) {
+ $avatar.attr('src', avatar);
+ }
+ else {
+ $avatar.attr('src', original_avatar);
+ }
+ var label = $(this).parent().attr('label');
+ if (label !== undefined) {
+ $('#post_to').show().find('span').html(label);
+ }
+ else {
+ $('#post_to').hide();
+ }
+ });
+ });
+ $('#post_accounts').trigger('change');
+ }
+
+ /**
+ * Manual Aggregation
+ */
+ var $social_comments_adminbar_item = $('#wp-admin-bar-social-find-comments');
+ if ($social_comments_adminbar_item.size()) {
+ var $social_spinner = $social_comments_adminbar_item.find('.social-aggregation-spinner');
+ var $social_aggregation = $('#social_aggregation');
+ var $comment_adminbar_item = $('#wp-admin-bar-comments');
+ $social_aggregation.click(function(e) {
+ if ($(this).attr('href') == '#') {
+ e.preventDefault();
+ }
+ }).removeClass('running-aggregation');
+ $comment_adminbar_item.removeClass('running-aggregation');
+
+ $social_comments_adminbar_item.find('a').click(function(e) {
+ e.preventDefault();
+ if (!$comment_adminbar_item.hasClass('running-aggregation')) {
+ $comment_adminbar_item.addClass('running-aggregation');
+
+ // remove old results (slide left)
+ $('#wp-adminbar-comments-social').animate({ width: '0' }, function() {
+ $(this).remove();
+ });
+
+ // show spinner
+ $comment_adminbar_item.find('#ab-awaiting-mod').hide().end()
+ .find('a:first').append($social_spinner);
+ $social_spinner.show();
+ SocialLoadingInterval = setInterval(function() {
+ var next = false;
+ var $dots = jQuery('.social-aggregation-spinner').find('.social-dot');
+ $dots.each(function() {
+ var active = jQuery(this).hasClass('dot-active');
+ if (next) {
+ jQuery(this).addClass('dot-active');
+ }
+ if (active) {
+ jQuery(this).removeClass('dot-active');
+ next = true;
+ }
+ else {
+ next = false;
+ }
+ });
+ if ($dots.filter('.dot-active').size() == 0) {
+ $dots.filter(':first').addClass('dot-active');
+ }
+ }, 425);
+
+ // make AJAX call
+ $.get(
+ $(this).attr('href'),
+ { render: 'false' },
+ function(response) {
+ // hide spinner
+ $social_spinner.hide();
+ $social_comments_adminbar_item.append($social_spinner);
+ clearInterval(SocialLoadingInterval);
+
+ // update count, show count
+ $comment_adminbar_item.find('#ab-awaiting-mod')
+ .html(response.total).show();
+
+ // show results (slide right)
+ $comment_adminbar_item.addClass('social-comments-found').after(response.html);
+ var $social_comments_found = $('#wp-adminbar-comments-social');
+ var found_width = $social_comments_found.width();
+ $social_comments_found.css({
+ position: 'relative',
+ visibility: 'visible',
+ width: 0
+ }).animate({ width: found_width + 'px' });
+
+ // set params for next call
+ $social_aggregation.attr('href', response.link);
+
+ $comment_adminbar_item.removeClass('running-aggregation');
+ },
+ 'json'
+ );
+ }
+ });
+ }
+ $('#wp-admin-bar-social-add-tweet-by-url a').each(function() {
+ $form = $(this).find('form');
+ $form.data('running-import', false).keydown(function(e) {
+ e.stopPropagation();
+ }).submit(function() {
+ if (!$(this).data('running-import')) {
+ var $this = $(this),
+ $inputs = $this.find('input');
+ $this.data('running-import', true);
+ $inputs.attr('disabled', 'disabled');
+
+ var $loading = $('<div class="loading"></div>')
+ .height($this.height())
+ .width($this.width());
+ $this.hide().closest('li')
+ .find('.msg').remove().end()
+ .end()
+ .after($loading);
+
+ $.get($this.attr('action'), {
+ url: $('input[name=url]').val()
+ }, function(response) {
+ var msg = msgClass = '';
+ switch (response) {
+ case 'protected':
+ case 'invalid':
+ msg = socialAdminBarMsgs[response];
+ msgClass = ' error';
+ break;
+ default:
+ msg = socialAdminBarMsgs['success'];
+ }
+ $loading.remove();
+ $this.data('running-import', false).show()
+ .after('<p class="msg' + msgClass + '">' + msg + '</p>');
+ $inputs.removeAttr('disabled').filter(':text').val('').focus();
+ });
+ }
+ return false;
+ }).appendTo($(this).closest('li'));
+ }).click(function(e) {
+ $(this).hide().closest('li').find('form').show().find(':text').focus().select();
+ return false;
+ });
+
+ /**
+ * Social items
+ */
+ if ($('.social-items-and-more').length) {
+ $('.social-items-and-more').click(function(e) {
+ e.preventDefault();
+
+ $(this).parent().find('a').show();
+ $(this).hide();
+ });
+ }
+ });
+})(jQuery);