Advertisement
rccharles

Original post on first page

Jan 29th, 2017
577
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name            Final Display Original Post on First page.  That's all.
  3. // @namespace       bubo-bubo/gmscripts
  4. // @description     ASC - Display Original Post on First page not on every page
  5. // @grant           unsafeWindow
  6. // @run-at          document-end
  7. // @include         https://discussions.apple.com/*
  8. // @include         https://discussionsjapan.apple.com/*
  9. // @include         https://discussionskorea.apple.com/*
  10. // @include         https://discussionschinese.apple.com/*
  11. // @include         https://communities.apple.com/*
  12. // @version         1.0
  13. // ==/UserScript==
  14.  
  15. // Based on Hiroto's efforts. Moded by rccharles.
  16.  
  17. var $ = unsafeWindow.jQuery;
  18. var watchdog1, watchdog2;
  19. var watch_interval          = 250; // [ms]
  20. var re_thread_or_message    = new RegExp('^https://[^/]+/(thread|message)/');
  21. var _debug                  = 0;
  22.  
  23.  
  24. console.log ("--> " + getDateTime() + ": Only on first page initializing: starting ... ");
  25.  
  26. // modify thread content view behaviour (in post-load phase)
  27. window.onload = function() {
  28.     // register event listeners
  29.     window.addEventListener('unload', function(e) {
  30.         if (_debug)  console.log('Only on first page unload is observed');
  31.         stop_watchdog_op(watchdog1);
  32.         stop_watchdog_op(watchdog2);
  33.         window.removeEventListener('_locationchange_op',
  34.                                     _locationchange_op_handler,
  35.                                     true);
  36.         window.removeEventListener(e.type, arguments.callee, true);
  37.     }, true);
  38.  
  39.     window.addEventListener('_locationchange_op', _locationchange_op_handler, true);
  40.     function _locationchange_op_handler(e) {
  41.         if (_debug)  console.log('Only on first page _locationchange is observed');
  42.         var href = window.location.href;
  43.         if ( href.match(re_thread_or_message) ) {
  44.             setTimeout(hide_solved_p2_op, 100);
  45.         }
  46.     }
  47.  
  48.     // _locationchange watch dog
  49.     var prev_href = '';
  50.     watchdog1 = setInterval( function() {
  51.         // watch for location to change
  52.         var curr_href = window.location.href;
  53.         if (curr_href != prev_href) {
  54.             if (_debug) console.log('Only on first page _locationchange_op is issued');
  55.             window.dispatchEvent(new Event('_locationchange_op'));
  56.             prev_href = curr_href;
  57.         }
  58.     }, watch_interval);
  59. };
  60.  
  61. // Show or hide targetted element
  62. function hide_solved_p2_op() {
  63.    
  64.     var u = window.location.href;
  65.     var re = /[?&]start=([0-9]+)/;
  66.     var m = re.exec(u);
  67.     var p = m ? m[1] : 0;
  68.     if (_debug)  console.log('Only on first page current start post numebr = ' + p);
  69.    
  70.     // Definite hack.
  71.     // Original Poster info
  72.     var div = $('.js-original-header.apple-overflow-hidden');
  73.     if (!div) { return; }
  74.     if (_debug)  console.log('Only on first page   found. decide ');
  75.     p > 0 ? div.hide() : div.show();
  76.  
  77.     // Original post
  78.     div = $('.j-original-message');
  79.     if (!div) { return; }
  80.     if (_debug)  console.log('Only on first page   decide#3 ');
  81.     p > 0 ? div.hide() : div.show();
  82. }
  83.  
  84. function stop_watchdog_op(dog) {
  85.     clearInterval(dog);
  86.     // console.log('Only on first page watchdog is inactive : ' + dog);
  87. }
  88.  
  89. function getDateTime () {
  90.   var currentDate = new Date(),
  91.       day = currentDate.getDate(),
  92.       month = currentDate.getMonth() + 1,
  93.       year = currentDate.getFullYear();
  94.  
  95.     var currentTime = new Date(),
  96.       hours = currentTime.getHours(),
  97.       minutes = currentTime.getMinutes();
  98.  
  99.     if (minutes < 10) {
  100.      minutes = "0" + minutes;
  101.   }
  102.  
  103.     var suffix = "AM";
  104.     if (hours >= 12) {
  105.     suffix = "PM";
  106.     hours = hours - 12;
  107.     }
  108.     if (hours == 0) {
  109.      hours = 12;
  110.     }
  111.  
  112.     return ( month + "/" + day + "/" + year + "  " + hours + ":" + minutes + " " + suffix);
  113.  
  114. }  // end of functin getDateTime
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement