Dzejkobini

esim.article.tabexpanderFF

Jan 10th, 2016
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name TopArticlesExpander
  3. // @description  Allows to expand list of top/latest articles.
  4. // @include *.e-sim.org/index.html*
  5. // @require http://code.jquery.com/jquery-1.12.0.min.js
  6. // @grant none+
  7. // ==/UserScript==
  8.  
  9.  
  10. $(document).ready(function() {  
  11.     var aObj = getTopArticles();
  12.     modifyArticlesTabs(aObj);
  13. });
  14.  
  15. /**
  16.  * Event handlers
  17.  *
  18.  */
  19. $(document).ready(function() {
  20.     $('#showLinkTab1').click(function() {
  21.         $('#showLinkTab1').fadeOut('fast', function() {
  22.             $('#hideLinkTab1').fadeIn('fast');
  23.             $('#tab1menu').fadeIn('fast');
  24.         });
  25.         return false;
  26.     });
  27.     $('#hideLinkTab1').click(function() {
  28.         $('#hideLinkTab1').fadeOut('fast', function() {
  29.             $('#showLinkTab1').fadeIn('fast');
  30.             $('#tab1menu').fadeOut('fast');
  31.         });
  32.         return false;
  33.     });
  34.  
  35.     $('#showLinkTab2').click(function() {
  36.         $('#showLinkTab2').fadeOut('fast', function() {
  37.             $('#hideLinkTab2').fadeIn('fast');
  38.             $('#tab2menu').fadeIn('fast');
  39.         });
  40.         return false;
  41.     });
  42.     $('#hideLinkTab2').click(function() {
  43.         $('#hideLinkTab2').fadeOut('fast', function() {
  44.             $('#showLinkTab2').fadeIn('fast');
  45.             $('#tab2menu').fadeOut('fast');
  46.         });
  47.         return false;
  48.     });
  49.  
  50.     $('#showLinkTab3').click(function() {
  51.         $('#showLinkTab3').fadeOut('fast', function() {
  52.             $('#hideLinkTab3').fadeIn('fast');
  53.             $('#tab3menu').fadeIn('fast');
  54.         });
  55.         return false;
  56.     });
  57.     $('#hideLinkTab3').click(function() {
  58.         $('#hideLinkTab3').fadeOut('fast', function() {
  59.             $('#showLinkTab3').fadeIn('fast');
  60.             $('#tab3menu').fadeOut('fast');
  61.         });
  62.         return false;
  63.     });
  64.  
  65.     $('#showLinkTab13').click(function() {
  66.         $('#showLinkTab13').fadeOut('fast', function() {
  67.             $('#hideLinkTab13').fadeIn('fast');
  68.             $('#tab13menu').fadeIn('fast');
  69.         });
  70.         return false;
  71.     });
  72.     $('#hideLinkTab13').click(function() {
  73.         $('#hideLinkTab13').fadeOut('fast', function() {
  74.             $('#showLinkTab13').fadeIn('fast');
  75.             $('#tab13menu').fadeOut('fast');
  76.         });
  77.         return false;
  78.     });
  79. });
  80.  
  81. /**
  82.  * Get JSON Object of top/latest articles.
  83.  * @return {JSON Object} aResult.
  84.  *
  85.  */
  86. function getTopArticles() {
  87.  
  88.     var sHtml;
  89.     var nPlayerId = $("[class='button foundation-style'][href*='profile']").attr('href').replace(/[^0-9]/g, '');
  90.     var aResult = [];
  91.     var nCitizenshipId;
  92.  
  93.     $.ajax({
  94.         type: "GET",
  95.         dataType: "json",
  96.         async: false,
  97.         url: '/apiCitizenById.html?id=' + nPlayerId,
  98.         success: function(data) {
  99.             nCitizenshipId = data['citizenshipId'];
  100.         }
  101.     });
  102.  
  103.     var sUrl = ['/news.html?newsType=TOP_ARTICLES&country=0', '/news.html?newsType=LATEST_ARTICLES&country=' + nCitizenshipId, '/news.html?newsType=TOP_ARTICLES&country=1'];
  104.     var sHydepark = $('[href="#tabs-13"]').html();
  105.  
  106.     for (var l = 0; l < 2; l++) {
  107.         aResult[l] = [];
  108.        
  109.         $.ajax({
  110.             type: "GET",
  111.             dataType: "html",
  112.             async: false,
  113.             url: sUrl[l],
  114.             success: function(html) {
  115.                 sHtml = html;
  116.             }
  117.         });
  118.        
  119.        
  120.         var aHtmlDOM = $.parseHTML(sHtml);
  121.         var aTopArticlesTab = $('[class*="dataTable"]', aHtmlDOM)[0];
  122.         var aRows = $("tr", aTopArticlesTab);
  123.         aRows = aRows.slice(1, aRows.length);
  124.          
  125.         var k = 0;
  126.         for (var i = 0; i < aRows.length; i++) {
  127.  
  128.             var aCell = $("td", aRows[i]);
  129.             var nVotes = parseInt($("[class='bigArticleTab']", aCell[0]).html());
  130.             var sTitle = $("[class='articleTitle']", aCell[0]).html();
  131.             var sArticleLink = $("[class='articleTitle']", aCell[0]).attr('href');
  132.             var sPublishDate = $("div", aCell[0])[1];
  133.            
  134.             var sArticleType;
  135.             var sNewspaperName = $("[href*='newspaper.html?id=']", aCell[0])[0].innerHTML;
  136.             var sNewspaperLink = $("[href*='newspaper.html?id=']", aCell[0]).attr('href');
  137.             var sNewspaperAvatar = $("[href*='newspaper.html?id=']", aCell[0])[1];
  138.             sNewspaperAvatar = $('img', sNewspaperAvatar).attr('src');
  139.              
  140.             $('a', sPublishDate).remove();
  141.            
  142.             sPublishDate = sPublishDate.innerHTML;  
  143.             sArticleType = sPublishDate.split('\n')[2].trim();    
  144.             sPublishDate = sPublishDate.split('\n')[1].replace(/<br>/g, '').trim();
  145.             sPublishDate = sPublishDate.split(/(\d+)/g);
  146.             sArticleType = sArticleType.split(":")[1].trim();
  147.  
  148.             for (var j = 0; j < sPublishDate.length; j++)
  149.                 sPublishDate[j] = sPublishDate[j].trim();
  150.  
  151.             sPublishDate = sPublishDate[0] + " " + sPublishDate[1] + " " + sPublishDate[2];
  152.  
  153.             if (sArticleType != sHydepark) {
  154.                 aResult[l][k] = {};
  155.                 aResult[l][k]['nVotes'] = nVotes;
  156.                 aResult[l][k]['sTitle'] = sTitle;
  157.                 aResult[l][k]['sArticleLink'] = sArticleLink;
  158.                 aResult[l][k]['sPublishDate'] = sPublishDate;
  159.                 aResult[l][k]['sNewspaperName'] = sNewspaperName;
  160.                 aResult[l][k]['sNewspaperAvatar'] = sNewspaperAvatar;
  161.                 aResult[l][k]['sNewspaperLink'] = sNewspaperLink;
  162.                 aResult[l][k]['sArticleType'] = sArticleType;
  163.                 k++;
  164.             }
  165.         }
  166.     }
  167.     return aResult;
  168. }
  169.  
  170. /**
  171.  * Modify article's table
  172.  * @param {JSON Object} aObj JSON Object of top/latest articles.
  173.  *
  174.  */
  175. function modifyArticlesTabs(aObj) {
  176.     var aArtTabs = $('#newsTabs');
  177.     var aTab1 = $('#tabs-1', aArtTabs);
  178.     var aTab2 = $('#tabs-2', aArtTabs);
  179.     var aTab3 = $('#tabs-3', aArtTabs);
  180.  
  181.     aTab1.append('<div id=\"tab1menu\" class="ui-tabs-panel ui-widget-content ui-corner-bottom" style=\"padding: 0px; display: none;\"></div><div id="showMoreTab1" align="center"><a style=\"font-size: 12px; display: inline;\" href=\"\" id=\"showLinkTab1\"><b>Expand list</b></a><a style=\"font-size: 12px; display: none;\" href=\"\" id=\"hideLinkTab1\"><b>Collapse list</b></a></div>');
  182.  
  183.     aTab2.append('<div id=\"tab2menu\" class="ui-tabs-panel ui-widget-content ui-corner-bottom" style=\"padding: 0px; display: none;\"></div><div id="showMoreTab2" align="center"><a style=\"font-size: 12px; display: inline;\" href=\"\" id=\"showLinkTab2\"><b>Expand list</b></a><a style=\"font-size: 12px; display: none;\" href=\"\" id=\"hideLinkTab2\"><b>Collapse list</b></a></div>');
  184.  
  185.    // aTab3.append('<div id=\"tab3menu\" class="ui-tabs-panel ui-widget-content ui-corner-bottom" style=\"padding: 0px; display: none;\"></div><div id="showMoreTab3" align="center"><a style=\"font-size: 12px; display: inline;\" href=\"\" id=\"showLinkTab3\"><b>Expand list</b></a><a style=\"font-size: 12px; display: none;\" href=\"\" id=\"hideLinkTab3\"><b>Collapse list</b></a></div>');
  186.  
  187.     for (var j = 0; j < 2; j++) {
  188.         aObj[j] = aObj[j].slice($('[class="smallArticleTab"]', $('#tabs-' + (j + 1))).length, aObj[j].length);
  189.  
  190.         for (var i = 0; i < aObj[j].length; i++) {
  191.  
  192.             $('#tab' + (j + 1) + 'menu').append('<div class="smallArticleTab" style="margin-bottom:2px;">' + aObj[j][i]['nVotes'] + '</div>\n<a href="' + aObj[j][i]['sArticleLink'] + '" class="articleTitle">' + aObj[j][i]['sTitle'] + ' (' + aObj[j][i]['sArticleType'] + ')</a></br>\n' + aObj[j][i]['sPublishDate'] + ': \n<img align="absmiddle" class="smallAvatar" src="' + aObj[j][i]['sNewspaperAvatar'] + '"></img>\n<a href="' + aObj[j][i]['sNewspaperLink'] + '">' + aObj[j][i]['sNewspaperName'] + '</a>\n<hr class="foundation-divider-light">');
  193.         }
  194.     }
  195. }
  196.  
  197.  
  198. function sleep(nMiliseconds) {
  199.     var nCurrentTime = new Date().getTime();
  200.  
  201.     while (nCurrentTime + nMiliseconds >= new Date().getTime()) {}
  202. }
Advertisement
Add Comment
Please, Sign In to add comment