Dzejkobini

esim.article.tabexpander

Jan 6th, 2016
496
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. // @namespace Violentmonkey Scripts
  5. // @grant none
  6. // @include *.e-sim.org/index.html*
  7. // @include *.e-sim.org/
  8. // ==/UserScript==
  9. /**
  10.  * Init
  11.  *
  12.  */
  13. $(document).ready(function() {
  14.     var aObj = getTopArticles();
  15.     modifyArticlesTabs(aObj);
  16. });
  17.  
  18. /**
  19.  * Event handlers
  20.  *
  21.  */
  22. $(document).ready(function() {
  23.     $('#showLinkTab1').click(function() {
  24.         $('#showLinkTab1').fadeOut('fast', function() {
  25.             $('#hideLinkTab1').fadeIn('fast');
  26.             $('#tab1menu').fadeIn('fast');
  27.         });
  28.         return false;
  29.     });
  30.     $('#hideLinkTab1').click(function() {
  31.         $('#hideLinkTab1').fadeOut('fast', function() {
  32.             $('#showLinkTab1').fadeIn('fast');
  33.             $('#tab1menu').fadeOut('fast');
  34.         });
  35.         return false;
  36.     });
  37.  
  38.     $('#showLinkTab2').click(function() {
  39.         $('#showLinkTab2').fadeOut('fast', function() {
  40.             $('#hideLinkTab2').fadeIn('fast');
  41.             $('#tab2menu').fadeIn('fast');
  42.         });
  43.         return false;
  44.     });
  45.     $('#hideLinkTab2').click(function() {
  46.         $('#hideLinkTab2').fadeOut('fast', function() {
  47.             $('#showLinkTab2').fadeIn('fast');
  48.             $('#tab2menu').fadeOut('fast');
  49.         });
  50.         return false;
  51.     });
  52.  
  53.     $('#showLinkTab3').click(function() {
  54.         $('#showLinkTab3').fadeOut('fast', function() {
  55.             $('#hideLinkTab3').fadeIn('fast');
  56.             $('#tab3menu').fadeIn('fast');
  57.         });
  58.         return false;
  59.     });
  60.     $('#hideLinkTab3').click(function() {
  61.         $('#hideLinkTab3').fadeOut('fast', function() {
  62.             $('#showLinkTab3').fadeIn('fast');
  63.             $('#tab3menu').fadeOut('fast');
  64.         });
  65.         return false;
  66.     });
  67.  
  68.     $('#showLinkTab13').click(function() {
  69.         $('#showLinkTab13').fadeOut('fast', function() {
  70.             $('#hideLinkTab13').fadeIn('fast');
  71.             $('#tab13menu').fadeIn('fast');
  72.         });
  73.         return false;
  74.     });
  75.     $('#hideLinkTab13').click(function() {
  76.         $('#hideLinkTab13').fadeOut('fast', function() {
  77.             $('#showLinkTab13').fadeIn('fast');
  78.             $('#tab13menu').fadeOut('fast');
  79.         });
  80.         return false;
  81.     });
  82. });
  83.  
  84. /**
  85.  * Get JSON Object of top/latest articles.
  86.  * @return {JSON Object} aResult.
  87.  *
  88.  */
  89. function getTopArticles() {
  90.  
  91.     var sHtml;
  92.     var nPlayerId = $("[class='button foundation-style'][href*='profile']").attr('href').replace(/[^0-9]/g, '');
  93.     var aResult = [];
  94.     var nCitizenshipId;
  95.  
  96.     $.ajax({
  97.         type: "GET",
  98.         dataType: "json",
  99.         async: false,
  100.         url: '/apiCitizenById.html?id=' + nPlayerId,
  101.         success: function(data) {
  102.             nCitizenshipId = data['citizenshipId'];
  103.         }
  104.     });
  105.  
  106.     var sUrl = ['/news.html?newsType=TOP_ARTICLES&country=0', '/news.html?newsType=LATEST_ARTICLES&country=' + nCitizenshipId, '/news.html?newsType=TOP_ARTICLES&country=1'];
  107.     var sHydepark = $('[href="#tabs-13"]').html();
  108.  
  109.     for (var l = 0; l < 2; l++) {
  110.         aResult[l] = [];
  111.         $.ajax({
  112.             type: "GET",
  113.             dataType: "html",
  114.             async: false,
  115.             url: sUrl[l],
  116.             success: function(html) {
  117.                 sHtml = html;
  118.             }
  119.         });
  120.  
  121.         var aHtmlDOM = $.parseHTML(sHtml);
  122.         var aTopArticlesTab = $('[class*="dataTable"]', aHtmlDOM)[0];
  123.         var aRows = $("tr", aTopArticlesTab);
  124.         aRows = aRows.slice(1, aRows.length);
  125.  
  126.         var k = 0;
  127.         for (var i = 0; i < aRows.length; i++) {
  128.  
  129.             var aCell = $("td", aRows[i]);
  130.             var nVotes = parseInt($("[class='bigArticleTab']", aCell[0]).html());
  131.             var sTitle = $("[class='articleTitle']", aCell[0]).html();
  132.             var sArticleLink = $("[class='articleTitle']", aCell[0]).attr('href');
  133.             var sPublishDate = $("div", aCell[0])[1];
  134.             var sArticleType;
  135.             var sNewspaperName = $("[href*='newspaper.html?id=']", aCell[0])[0].innerText;
  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.             sPublishDate = sPublishDate.innerText;
  142.             sArticleType = sPublishDate.split('\n')[4].trim();
  143.  
  144.             sPublishDate = sPublishDate.split('\n')[2];
  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. }
Advertisement
Add Comment
Please, Sign In to add comment