Paste Search Dynamic
Recent pastes
global.js
  1. if (window.disqus === undefined) {
  2.     var disqus = {};
  3. }
  4.  
  5. (function() {
  6.     // jQuery plugin for enabling/disabling elements
  7.     $.fn.enable = function(className) {
  8.         this.removeAttr('disabled');
  9.         this.removeClass(className || 'disabled');
  10.         return this;
  11.     };
  12.  
  13.     $.fn.disable = function(className) {
  14.         this.attr('disabled', 'disabled');
  15.         this.addClass(className || 'disabled');
  16.         return this;
  17.     };
  18. })();
  19.  
  20. (function () {
  21.     /**
  22.      * Makes the active page, if any, be highlighted in the nav bar
  23.      */
  24.     function setupActivePage() {
  25.         var navLinks,
  26.             link;
  27.         navLinks = $('.nav li a');
  28.         $.each(navLinks, function(index){
  29.             link = navLinks[index];
  30.             // matches if this is the same page as in the link or one of its subpages
  31.             if ((new RegExp('^' + $(link).attr('href'))).test(document.URL)) {
  32.                 $(link).closest('li').addClass('active');
  33.                 return false;
  34.             }
  35.         });
  36.     }
  37.  
  38.     /**
  39.      * Renders the user's top-right navigation bar.
  40.      */
  41.     function setupUserNav(data) {
  42.         var template, built;
  43.         if (data.username !== undefined) {
  44.             // Remove the "Login" link
  45.             $('#global-nav-login').remove();
  46.  
  47.             built = $('#authed-account-nav-tmpl').tmpl($.extend({}, data, {
  48.                 nav: context.navMap,
  49.                 url: context.urlMap,
  50.                 is_moderating_forums: data.has_forums,
  51.                 is_staff: data.is_staff
  52.             }));
  53.         } else {
  54.             built = $('#anon-account-nav-tmpl').tmpl($.extend({}, {
  55.                 nav: context.navMap,
  56.                 url: context.urlMap
  57.             }));
  58.         }
  59.         $('#account-nav').css('visibility', 'hidden').append(built);
  60.         var default_width = $('#account-nav .user-dropdown .dropdown').width();
  61.         var username_width = $('#account-nav .user-dropdown').width();
  62.         $('#account-nav .user-dropdown .dropdown').width(Math.max(username_width+20, default_width));
  63.         $('#account-nav').css('visibility', 'visible');
  64.     }
  65.  
  66.     /**
  67.      * Framework for showing flash messages.
  68.      */
  69.     disqus.messages = {};
  70.     disqus.messages.add = function(message, level) {
  71.         var el = $('<li class="message ' + level + '">' +
  72.                         message + '<a href="#" class="messages-close closeMessage">X</a>' +
  73.                    '</li>').hide().appendTo('#message-list ul').fadeIn();
  74.     };
  75.  
  76.     $('#message-list .closeMessage').live('click', function(){
  77.         $(this).parent().remove();
  78.         return false;
  79.     });
  80.  
  81.     $(document).ready(function(){
  82.         // we use the disqusauth cookie to determine if our login data is stale
  83.  
  84.         DISQUS.sexyapi.setPublicKey(context.apiPublicKey);
  85.  
  86.         $('.community-launcher').live('click', function() {
  87.             var url = $(this).attr('data-forum-url');
  88.             var modal = new DISQUS.ui.ForumCommunityModal();
  89.             modal.open('http://' + url + '.' + context.disqusDomain + '/community.html');
  90.             return false;
  91.         });
  92.  
  93.         if ($('#message-list')) {
  94.             DISQUS.sexyapi["internal/users"].details({
  95.                 data: {
  96.                     with_messages: 1
  97.                 },
  98.                 success: function(data) {
  99.                     $.each(data.messages, function(index, value){
  100.                         disqus.messages.add(value[1], value[2]);
  101.                     });
  102.  
  103.                     $('#message-list .close').click(function(){
  104.                         $('#message-list').remove();
  105.                         return false;
  106.                     });
  107.                 }
  108.             });
  109.         }
  110.  
  111.         // Placeholder HTML5 polyfill. Does nothing if placeholders are supported.
  112.         // Unfortunately, this still does query and return a DOM set.
  113.         $('input[placeholder], textarea[placeholder]').placeholder();
  114.  
  115.         setupActivePage();
  116.         setupUserNav(context.auth);
  117.     });
  118. })();
Parsed in 0.026 seconds