From b356d680bd9f12e8cebf8a89faea54d5e98b9bf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Sj=C3=B6berg?= Date: Mon, 15 Jul 2013 11:42:30 -0500 Subject: [PATCH] Add new plugin to find portals by photo submitter. --- plugins/players-portal-pictures.user.js | 111 ++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 plugins/players-portal-pictures.user.js diff --git a/plugins/players-portal-pictures.user.js b/plugins/players-portal-pictures.user.js new file mode 100644 index 00000000..ffb6d414 --- /dev/null +++ b/plugins/players-portal-pictures.user.js @@ -0,0 +1,111 @@ +// ==UserScript== +// @id iitc-plugin-players-portal-pictures +// @name IITC plugin: Player's Portal Pictures +// @version 0.1.0.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description [@@BUILDNAME@@-@@BUILDDATE@@] This plugin finds portal pictures submitted by a given player. The input is in the sidebar. +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== + +@@PLUGINSTART@@ + +// PLUGIN START //////////////////////////////////////////////////////// + +/********************************************************************************************************* +* Changelog: +* +* 0.1.0 First public release, supports only cover photos for now. +*********************************************************************************************************/ + +// use own namespace for plugin +window.plugin.playersPortalPictures = function() {}; + +window.plugin.playersPortalPictures.findPictures = function(playername) { + var s = ''; + var portalSet = {}; + var effectiveNick = ''; + var team = ''; + var portalCounter = 0; + var pictureCounter = 0; + var totalVoteCounter = 0; + // Assuming there can be no agents with same nick with different lower/uppercase + var nickToFind = playername.toLowerCase(); + $.each(window.portals, function(ind, portal){ + var coverPhotoAttribution = ''; + var attributionMarkup = new Object(); + if(portal.options.details.photoStreamInfo.hasOwnProperty('coverPhoto') && portal.options.details.photoStreamInfo.coverPhoto.hasOwnProperty('attributionMarkup')) { + attributionMarkup = portal.options.details.photoStreamInfo.coverPhoto.attributionMarkup; + if(attributionMarkup.length === 2 && attributionMarkup[0] === 'PLAYER') { + coverPhotoAttribution = attributionMarkup[1].plain; + } else { + return true; + } + } else { + return true; + } + + if(coverPhotoAttribution.toLowerCase() === nickToFind) { + pictureCounter += 1; + if(!effectiveNick) { + effectiveNick = coverPhotoAttribution; + } + if(!team) { + team = attributionMarkup[1].team; + } + var votes = 0; + votes = portal.options.details.photoStreamInfo.coverPhoto.voteCount; + totalVoteCounter += votes; + if(!portalSet.hasOwnProperty(portal.options.guid)) { + portalSet[portal.options.guid] = true; + var latlng = [portal.options.details.locationE6.latE6/1E6, portal.options.details.locationE6.lngE6/1E6].join(); + var guid = portal.options.guid; + var zoomPortal = 'window.zoomToAndShowPortal(\''+guid+'\', ['+latlng+']);return false'; + var perma = '/intel?latE6='+portal.options.details.locationE6.latE6+'&lngE6='+portal.options.details.locationE6.lngE6+'&z=17&pguid='+guid; + var a = $('',{ + 'class': 'help', + text: portal.options.details.portalV2.descriptiveText.TITLE, + title: portal.options.details.portalV2.descriptiveText.ADDRESS, + href: perma, + onClick: zoomPortal + })[0].outerHTML; + portalCounter += 1; + s += a + ': '; + } + s += votes + ' votes
'; + } + }); + if (s) { + // Showing the playername as a "fake" link to avoid the auto-mouseover effect on the first portal + fakeLinkPlayer = '
' + effectiveNick + ''; + s = fakeLinkPlayer + ' has pictures on ' + portalCounter + ' portals with ' + totalVoteCounter + ' total votes:

' + s; + } else { + s = playername + ' has no portal pictures in this range
'; + } + window.dialog({ + title: playername + '\'s portal pictures', + html: s, + id: 'playerPortalPictures', + width: 500 + }); +} + +var setup = function() { + var content = ''; + $('#sidebar').append(content); + $('#toolbox').append(' Player\'s Portal Pictures'); + $('#playerPortalPicture').keypress(function(e) { + if((e.keyCode ? e.keyCode : e.which) !== 13) return; + var data = $(this).val(); + window.plugin.playersPortalPictures.findPictures(data); + }); +} + +// PLUGIN END ////////////////////////////////////////////////////////// + +@@PLUGINEND@@