├── bin └── build.sh ├── Chrome ├── preferences.js ├── lobbyradar.png ├── lobbyradar-128.png ├── lobbyradar-16.png ├── lobbyradar-32.png ├── lobbyradar-38.png ├── lobbyradar-48.png ├── lobbyradar-64.png ├── popup │ ├── logo-header.png │ ├── popup_firefox.js │ ├── popup.html │ └── popup.js ├── css │ ├── font │ │ ├── RobotoSlab-Bold.eot │ │ ├── RobotoSlab-Bold.ttf │ │ ├── RobotoSlab-Bold.woff │ │ ├── RobotoSlab-Regular.eot │ │ ├── RobotoSlab-Regular.ttf │ │ ├── RobotoSlab-Regular.woff │ │ └── roboto-slab.css │ ├── popup.css │ └── lobbyradar.css ├── manifest.json ├── options.html ├── options.js ├── share-icons.css ├── bg_common.js ├── jquery_highlight.js ├── bg_browserbutton.js ├── style.css └── shariff.min.css ├── lib ├── lobbyradar.png ├── share_em.png ├── share_fb.png ├── share_tw.png ├── logo-header.png ├── lobbyradar-128.png ├── lobbyradar-16.png ├── lobbyradar-32.png ├── lobbyradar-38.png ├── lobbyradar-48.png ├── lobbyradar-64.png ├── lobbyradar-orig.png ├── popup │ ├── logo-header.png │ ├── popup_firefox.js │ ├── popup.html │ └── popup.js ├── css │ ├── font │ │ ├── RobotoSlab-Bold.eot │ │ ├── RobotoSlab-Bold.ttf │ │ ├── RobotoSlab-Bold.woff │ │ ├── RobotoSlab-Regular.eot │ │ ├── RobotoSlab-Regular.ttf │ │ ├── RobotoSlab-Regular.woff │ │ └── roboto-slab.css │ ├── popup.css │ └── lobbyradar.css ├── worker_search.js ├── local_settings.json.example ├── share-icons.css ├── bg_common.js ├── settings.json ├── jquery_highlight.js ├── bg_browserbutton.js ├── style.css └── shariff.min.css ├── Firefox ├── lobbyradar.xpi ├── data │ ├── lobbyradar.png │ ├── lobbyradar-16.png │ ├── lobbyradar-32.png │ ├── popup │ │ ├── logo-header.png │ │ ├── popup_firefox.js │ │ └── popup.html │ ├── css │ │ ├── font │ │ │ ├── RobotoSlab-Bold.eot │ │ │ ├── RobotoSlab-Bold.ttf │ │ │ ├── RobotoSlab-Bold.woff │ │ │ ├── RobotoSlab-Regular.eot │ │ │ ├── RobotoSlab-Regular.ttf │ │ │ ├── RobotoSlab-Regular.woff │ │ │ └── roboto-slab.css │ │ ├── popup.css │ │ └── lobbyradar.css │ ├── share-icons.css │ ├── style.css │ └── shariff.min.css ├── test │ └── test-main.js ├── lib │ ├── settings.js │ ├── tabData.js │ ├── bg_common.js │ └── bg_browserbutton.js └── package.json ├── styling ├── popup │ ├── lobbyradar.png │ ├── css │ │ ├── popup.css │ │ ├── font │ │ │ ├── RobotoSlab-Bold.eot │ │ │ ├── RobotoSlab-Bold.ttf │ │ │ ├── RobotoSlab-Bold.woff │ │ │ ├── RobotoSlab-Regular.eot │ │ │ ├── RobotoSlab-Regular.ttf │ │ │ ├── RobotoSlab-Regular.woff │ │ │ └── roboto-slab.css │ │ └── lobbyradar.css │ ├── index.html │ ├── blacklisted.html │ ├── disabled.html │ └── default.html └── tooltip │ ├── style.css │ └── index.html ├── Safari.safariextension ├── lobbyradar.png ├── lobbyradar-16.png ├── lobbyradar-16-mono.png ├── popup │ ├── logo-header.png │ ├── popup_firefox.js │ ├── popup.html │ └── popup.js ├── css │ ├── font │ │ ├── RobotoSlab-Bold.eot │ │ ├── RobotoSlab-Bold.ttf │ │ ├── RobotoSlab-Bold.woff │ │ ├── RobotoSlab-Regular.eot │ │ ├── RobotoSlab-Regular.ttf │ │ ├── RobotoSlab-Regular.woff │ │ └── roboto-slab.css │ ├── popup.css │ └── lobbyradar.css ├── fontawesome_safari.css ├── worker_search.js ├── Info.plist ├── share-icons.css ├── bg_common.js ├── background.html ├── jquery_highlight.js ├── bg_browserbutton.js ├── style.css └── shariff.min.css ├── .editorconfig ├── .gitignore ├── TODO.md ├── LICENSE.txt ├── test └── iframe.html └── README.md /bin/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec ./bin/build.js "$@" 4 | -------------------------------------------------------------------------------- /Chrome/preferences.js: -------------------------------------------------------------------------------- 1 | var default_preferences = {'whitelist':"", 'updateinterval':3600}; 2 | -------------------------------------------------------------------------------- /lib/lobbyradar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/lobbyradar.png -------------------------------------------------------------------------------- /lib/share_em.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/share_em.png -------------------------------------------------------------------------------- /lib/share_fb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/share_fb.png -------------------------------------------------------------------------------- /lib/share_tw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/share_tw.png -------------------------------------------------------------------------------- /lib/logo-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/logo-header.png -------------------------------------------------------------------------------- /Chrome/lobbyradar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/lobbyradar.png -------------------------------------------------------------------------------- /Firefox/lobbyradar.xpi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Firefox/lobbyradar.xpi -------------------------------------------------------------------------------- /lib/lobbyradar-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/lobbyradar-128.png -------------------------------------------------------------------------------- /lib/lobbyradar-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/lobbyradar-16.png -------------------------------------------------------------------------------- /lib/lobbyradar-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/lobbyradar-32.png -------------------------------------------------------------------------------- /lib/lobbyradar-38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/lobbyradar-38.png -------------------------------------------------------------------------------- /lib/lobbyradar-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/lobbyradar-48.png -------------------------------------------------------------------------------- /lib/lobbyradar-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/lobbyradar-64.png -------------------------------------------------------------------------------- /lib/lobbyradar-orig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/lobbyradar-orig.png -------------------------------------------------------------------------------- /Chrome/lobbyradar-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/lobbyradar-128.png -------------------------------------------------------------------------------- /Chrome/lobbyradar-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/lobbyradar-16.png -------------------------------------------------------------------------------- /Chrome/lobbyradar-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/lobbyradar-32.png -------------------------------------------------------------------------------- /Chrome/lobbyradar-38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/lobbyradar-38.png -------------------------------------------------------------------------------- /Chrome/lobbyradar-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/lobbyradar-48.png -------------------------------------------------------------------------------- /Chrome/lobbyradar-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/lobbyradar-64.png -------------------------------------------------------------------------------- /lib/popup/logo-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/popup/logo-header.png -------------------------------------------------------------------------------- /Chrome/popup/logo-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/popup/logo-header.png -------------------------------------------------------------------------------- /Firefox/data/lobbyradar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Firefox/data/lobbyradar.png -------------------------------------------------------------------------------- /styling/popup/lobbyradar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/styling/popup/lobbyradar.png -------------------------------------------------------------------------------- /Firefox/data/lobbyradar-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Firefox/data/lobbyradar-16.png -------------------------------------------------------------------------------- /Firefox/data/lobbyradar-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Firefox/data/lobbyradar-32.png -------------------------------------------------------------------------------- /lib/css/font/RobotoSlab-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/css/font/RobotoSlab-Bold.eot -------------------------------------------------------------------------------- /lib/css/font/RobotoSlab-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/css/font/RobotoSlab-Bold.ttf -------------------------------------------------------------------------------- /lib/css/font/RobotoSlab-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/css/font/RobotoSlab-Bold.woff -------------------------------------------------------------------------------- /Chrome/css/font/RobotoSlab-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/css/font/RobotoSlab-Bold.eot -------------------------------------------------------------------------------- /Chrome/css/font/RobotoSlab-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/css/font/RobotoSlab-Bold.ttf -------------------------------------------------------------------------------- /Firefox/data/popup/logo-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Firefox/data/popup/logo-header.png -------------------------------------------------------------------------------- /lib/css/font/RobotoSlab-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/css/font/RobotoSlab-Regular.eot -------------------------------------------------------------------------------- /lib/css/font/RobotoSlab-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/css/font/RobotoSlab-Regular.ttf -------------------------------------------------------------------------------- /Chrome/css/font/RobotoSlab-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/css/font/RobotoSlab-Bold.woff -------------------------------------------------------------------------------- /Chrome/css/font/RobotoSlab-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/css/font/RobotoSlab-Regular.eot -------------------------------------------------------------------------------- /Chrome/css/font/RobotoSlab-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/css/font/RobotoSlab-Regular.ttf -------------------------------------------------------------------------------- /Safari.safariextension/lobbyradar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Safari.safariextension/lobbyradar.png -------------------------------------------------------------------------------- /lib/css/font/RobotoSlab-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/lib/css/font/RobotoSlab-Regular.woff -------------------------------------------------------------------------------- /Chrome/css/font/RobotoSlab-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Chrome/css/font/RobotoSlab-Regular.woff -------------------------------------------------------------------------------- /Safari.safariextension/lobbyradar-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Safari.safariextension/lobbyradar-16.png -------------------------------------------------------------------------------- /styling/popup/css/popup.css: -------------------------------------------------------------------------------- 1 | #btn_disable_for_site, 2 | #btn_enable_for_site, 3 | #plugin_disabled, #hits, #nohits { 4 | display:none; 5 | } 6 | -------------------------------------------------------------------------------- /Firefox/data/css/font/RobotoSlab-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Firefox/data/css/font/RobotoSlab-Bold.eot -------------------------------------------------------------------------------- /Firefox/data/css/font/RobotoSlab-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Firefox/data/css/font/RobotoSlab-Bold.ttf -------------------------------------------------------------------------------- /Firefox/data/css/font/RobotoSlab-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Firefox/data/css/font/RobotoSlab-Bold.woff -------------------------------------------------------------------------------- /styling/popup/css/font/RobotoSlab-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/styling/popup/css/font/RobotoSlab-Bold.eot -------------------------------------------------------------------------------- /styling/popup/css/font/RobotoSlab-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/styling/popup/css/font/RobotoSlab-Bold.ttf -------------------------------------------------------------------------------- /styling/popup/css/font/RobotoSlab-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/styling/popup/css/font/RobotoSlab-Bold.woff -------------------------------------------------------------------------------- /Firefox/data/css/font/RobotoSlab-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Firefox/data/css/font/RobotoSlab-Regular.eot -------------------------------------------------------------------------------- /Firefox/data/css/font/RobotoSlab-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Firefox/data/css/font/RobotoSlab-Regular.ttf -------------------------------------------------------------------------------- /Firefox/data/css/font/RobotoSlab-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Firefox/data/css/font/RobotoSlab-Regular.woff -------------------------------------------------------------------------------- /Safari.safariextension/lobbyradar-16-mono.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Safari.safariextension/lobbyradar-16-mono.png -------------------------------------------------------------------------------- /Safari.safariextension/popup/logo-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Safari.safariextension/popup/logo-header.png -------------------------------------------------------------------------------- /styling/popup/css/font/RobotoSlab-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/styling/popup/css/font/RobotoSlab-Regular.eot -------------------------------------------------------------------------------- /styling/popup/css/font/RobotoSlab-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/styling/popup/css/font/RobotoSlab-Regular.ttf -------------------------------------------------------------------------------- /styling/popup/css/font/RobotoSlab-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/styling/popup/css/font/RobotoSlab-Regular.woff -------------------------------------------------------------------------------- /Safari.safariextension/css/font/RobotoSlab-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Safari.safariextension/css/font/RobotoSlab-Bold.eot -------------------------------------------------------------------------------- /Safari.safariextension/css/font/RobotoSlab-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Safari.safariextension/css/font/RobotoSlab-Bold.ttf -------------------------------------------------------------------------------- /Safari.safariextension/css/font/RobotoSlab-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Safari.safariextension/css/font/RobotoSlab-Bold.woff -------------------------------------------------------------------------------- /Safari.safariextension/css/font/RobotoSlab-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Safari.safariextension/css/font/RobotoSlab-Regular.eot -------------------------------------------------------------------------------- /Safari.safariextension/css/font/RobotoSlab-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Safari.safariextension/css/font/RobotoSlab-Regular.ttf -------------------------------------------------------------------------------- /Safari.safariextension/css/font/RobotoSlab-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lobbyradar/lobbyradar-extension/HEAD/Safari.safariextension/css/font/RobotoSlab-Regular.woff -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 4 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /firefox-unpacked 2 | /firefox-addon-sdk-url.txt 3 | /firefox-addon-sdk 4 | /lib/local_settings.json 5 | /Chrome.pem 6 | *~ 7 | /Firefox/*.png 8 | /Firefox/data/*.js 9 | /Safari.safariextension/Settings.plist 10 | .DS_Store 11 | ._* 12 | -------------------------------------------------------------------------------- /Firefox/test/test-main.js: -------------------------------------------------------------------------------- 1 | var main = require("./main"); 2 | 3 | exports["test main"] = function(assert) { 4 | assert.pass("Unit test running!"); 5 | }; 6 | 7 | exports["test main async"] = function(assert, done) { 8 | assert.pass("async Unit test running!"); 9 | done(); 10 | }; 11 | 12 | require("sdk/test").run(exports); 13 | -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- 1 | ## TODO 2 | 3 | Refactoring des Build-Systems (grunt? gulp?) 4 | Build sollte alle Dateien in Chrom/Safari/Firefox erzeugen. 5 | 6 | 7 | ## Issues 8 | Tooltip ragt oben raus, wenn rechts zu wenig platz _UND_ Browser nicht hoch genug, so dass TT unten raus springt 9 | Firefox: jede Entity nur 4 mal taggen: Begrenzung versagt manchmal (taggt dann 8 Mal) 10 | 11 | -------------------------------------------------------------------------------- /Firefox/lib/settings.js: -------------------------------------------------------------------------------- 1 | exports.include = ["http://*","https://*"]; 2 | exports.contentScriptWhen = "ready"; 3 | exports.contentScriptFile = ["BabelExt.js","jquery.js","jquery_highlight.js","jquery.tooltipster.js","fg_page.js","moment.js","underscore.js","shariff.min.js","worker_search.js"]; 4 | exports.contentStyleFile = ["style.css","tooltipster.css","shariff.min.css","share-icons.css"]; 5 | exports.icons = {"16":"lobbyradar-16.png","32":"lobbyradar-32.png","38":"lobbyradar-38.png","48":"lobbyradar-48.png","64":"lobbyradar-64.png","128":"lobbyradar-128.png"}; 6 | -------------------------------------------------------------------------------- /styling/popup/css/lobbyradar.css: -------------------------------------------------------------------------------- 1 | body { 2 | min-width: 280px; 3 | min-height: 200px; 4 | } 5 | .navbar-brand, 6 | .navbar-nav li a { 7 | line-height: 80px; 8 | height: 80px; 9 | padding-top: 0; 10 | } 11 | 12 | .navbar-form { 13 | padding-top: 15px; 14 | padding-bottom: 15px; 15 | } 16 | 17 | .navbar-brand { 18 | font-size: 30px; 19 | font-family: "Roboto Slab"; 20 | color: #eee !important; 21 | } 22 | 23 | .navbar-brand img { 24 | height: 60px; 25 | margin: -15px 5px -10px 0px; 26 | } 27 | 28 | .navbar+.container { 29 | margin-top: 100px; 30 | } 31 | -------------------------------------------------------------------------------- /Firefox/lib/tabData.js: -------------------------------------------------------------------------------- 1 | // keep track of names found in each Browsertab 2 | var tabData ={}; 3 | 4 | exports.tabData = { 5 | // get data stored for a tab 6 | get: function(tabId) { 7 | return tabData[tabId] ? tabData[tabId] : {}; 8 | }, 9 | 10 | // store value for tab 11 | set: function(tabId, value) { 12 | tabData[tabId] = value; 13 | }, 14 | 15 | // When a tab is closed, delete all its data 16 | onTabClosed: function(tabId) { 17 | console.log('Tab '+tabId+' closed'); 18 | delete tabData[tabId]; 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /Firefox/lib/bg_common.js: -------------------------------------------------------------------------------- 1 | var sdk_parseUrl = require("sdk/url").URL; 2 | let { isUndefined } = require('sdk/lang/type'); 3 | 4 | exports.lobbyradar_tools = { 5 | tabData: false, 6 | parseURL: function(url) { 7 | if( isUndefined( url ) ) return false; 8 | return sdk_parseUrl( url ); 9 | }, 10 | // umlaute für die Sortierung ersetzen 11 | replaceUmlauts: function(string) 12 | { 13 | return string.replace(/\u00e4|\u00c4/g, 'a') 14 | .replace(/\u00f6|\u00d6/g, 'o') 15 | .replace(/\u00fc|\u00dc/g, 'u'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Safari.safariextension/fontawesome_safari.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Fonts für ein Content script 3 | * Safari Version 4 | * In Safari sind Fonts einfach relativ zum Stylesheet 5 | */ 6 | 7 | @font-face { 8 | font-family:FontAwesome; 9 | src:url(css/font/fontawesome-webfont.eot?v=4.3.0); 10 | src:url(css/font/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'), 11 | url(css/font/fontawesome-webfont.woff2?v=4.3.0)format('woff2'), 12 | url(css/font/fontawesome-webfont.woff?v=4.3.0)format('woff'), 13 | url(css/font/fontawesome-webfont.ttf?v=4.3.0)format('truetype'), 14 | url(css/font/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular)format('svg'); 15 | font-weight:400; 16 | font-style:normal 17 | } 18 | -------------------------------------------------------------------------------- /Chrome/css/font/roboto-slab.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Roboto Slab'; 3 | src: url('RobotoSlab-Regular.eot'); 4 | src: url('RobotoSlab-Regular.eot?#iefix') format('embedded-opentype'), 5 | url('RobotoSlab-Regular.woff') format('woff'), 6 | url('RobotoSlab-Regular.ttf') format('truetype'), 7 | url('RobotoSlab-Regular.svg#RobotoSlab-Regular') format('svg'); 8 | font-weight: 400; 9 | font-style: normal; 10 | } 11 | 12 | @font-face { 13 | font-family: 'Roboto Slab'; 14 | src: url('RobotoSlab-Bold.eot'); 15 | src: url('RobotoSlab-Bold.eot?#iefix') format('embedded-opentype'), 16 | url('RobotoSlab-Bold.woff') format('woff'), 17 | url('RobotoSlab-Bold.ttf') format('truetype'), 18 | url('RobotoSlab-Bold.svg#Roboto-Bold') format('svg'); 19 | font-weight: 700; 20 | font-style: normal; 21 | } 22 | -------------------------------------------------------------------------------- /lib/css/font/roboto-slab.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Roboto Slab'; 3 | src: url('RobotoSlab-Regular.eot'); 4 | src: url('RobotoSlab-Regular.eot?#iefix') format('embedded-opentype'), 5 | url('RobotoSlab-Regular.woff') format('woff'), 6 | url('RobotoSlab-Regular.ttf') format('truetype'), 7 | url('RobotoSlab-Regular.svg#RobotoSlab-Regular') format('svg'); 8 | font-weight: 400; 9 | font-style: normal; 10 | } 11 | 12 | @font-face { 13 | font-family: 'Roboto Slab'; 14 | src: url('RobotoSlab-Bold.eot'); 15 | src: url('RobotoSlab-Bold.eot?#iefix') format('embedded-opentype'), 16 | url('RobotoSlab-Bold.woff') format('woff'), 17 | url('RobotoSlab-Bold.ttf') format('truetype'), 18 | url('RobotoSlab-Bold.svg#Roboto-Bold') format('svg'); 19 | font-weight: 700; 20 | font-style: normal; 21 | } 22 | -------------------------------------------------------------------------------- /Firefox/data/css/font/roboto-slab.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Roboto Slab'; 3 | src: url('RobotoSlab-Regular.eot'); 4 | src: url('RobotoSlab-Regular.eot?#iefix') format('embedded-opentype'), 5 | url('RobotoSlab-Regular.woff') format('woff'), 6 | url('RobotoSlab-Regular.ttf') format('truetype'), 7 | url('RobotoSlab-Regular.svg#RobotoSlab-Regular') format('svg'); 8 | font-weight: 400; 9 | font-style: normal; 10 | } 11 | 12 | @font-face { 13 | font-family: 'Roboto Slab'; 14 | src: url('RobotoSlab-Bold.eot'); 15 | src: url('RobotoSlab-Bold.eot?#iefix') format('embedded-opentype'), 16 | url('RobotoSlab-Bold.woff') format('woff'), 17 | url('RobotoSlab-Bold.ttf') format('truetype'), 18 | url('RobotoSlab-Bold.svg#Roboto-Bold') format('svg'); 19 | font-weight: 700; 20 | font-style: normal; 21 | } 22 | -------------------------------------------------------------------------------- /styling/popup/css/font/roboto-slab.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Roboto Slab'; 3 | src: url('RobotoSlab-Regular.eot'); 4 | src: url('RobotoSlab-Regular.eot?#iefix') format('embedded-opentype'), 5 | url('RobotoSlab-Regular.woff') format('woff'), 6 | url('RobotoSlab-Regular.ttf') format('truetype'), 7 | url('RobotoSlab-Regular.svg#RobotoSlab-Regular') format('svg'); 8 | font-weight: 400; 9 | font-style: normal; 10 | } 11 | 12 | @font-face { 13 | font-family: 'Roboto Slab'; 14 | src: url('RobotoSlab-Bold.eot'); 15 | src: url('RobotoSlab-Bold.eot?#iefix') format('embedded-opentype'), 16 | url('RobotoSlab-Bold.woff') format('woff'), 17 | url('RobotoSlab-Bold.ttf') format('truetype'), 18 | url('RobotoSlab-Bold.svg#Roboto-Bold') format('svg'); 19 | font-weight: 700; 20 | font-style: normal; 21 | } 22 | -------------------------------------------------------------------------------- /Safari.safariextension/css/font/roboto-slab.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Roboto Slab'; 3 | src: url('RobotoSlab-Regular.eot'); 4 | src: url('RobotoSlab-Regular.eot?#iefix') format('embedded-opentype'), 5 | url('RobotoSlab-Regular.woff') format('woff'), 6 | url('RobotoSlab-Regular.ttf') format('truetype'), 7 | url('RobotoSlab-Regular.svg#RobotoSlab-Regular') format('svg'); 8 | font-weight: 400; 9 | font-style: normal; 10 | } 11 | 12 | @font-face { 13 | font-family: 'Roboto Slab'; 14 | src: url('RobotoSlab-Bold.eot'); 15 | src: url('RobotoSlab-Bold.eot?#iefix') format('embedded-opentype'), 16 | url('RobotoSlab-Bold.woff') format('woff'), 17 | url('RobotoSlab-Bold.ttf') format('truetype'), 18 | url('RobotoSlab-Bold.svg#Roboto-Bold') format('svg'); 19 | font-weight: 700; 20 | font-style: normal; 21 | } 22 | -------------------------------------------------------------------------------- /styling/popup/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Styling des Popups 5 | 6 | 12 | 13 | 14 |

Popup

15 |

Das Plugin erzeugt einen Button in der Adresszeile. Bei click auf den Button erscheint dieses Popup

16 |
17 |
18 |

default

19 | 20 |
21 |
22 |

disabled

23 | 24 |
25 |
26 |

blacklisted

27 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /lib/worker_search.js: -------------------------------------------------------------------------------- 1 | if( typeof(importScripts) != 'undefined' ) importScripts("resource://gre/modules/workers/require.js"); 2 | 3 | var _ = false; 4 | 5 | onmessage = function(e) { 6 | _ = require(e.data.basedir+'underscore.js'); 7 | postMessage(do_search(e.data.names,e.data.bodytext)); 8 | } 9 | 10 | function do_search(names,bodytext) { 11 | var stats ={}; 12 | var search_start = new Date().getTime(); 13 | 14 | var found_names = []; 15 | var searches = 0; 16 | _.each(names,function(person,uid){ 17 | _.each(person.names,function(name,nameidx) { 18 | searches++; 19 | var result = bodytext.match(person.regexes[nameidx]); 20 | if( result ) { 21 | found_names.push({uid:uid,name:name}); 22 | } 23 | }) 24 | }); 25 | stop = new Date().getTime(); 26 | stats['searchtime'] = (stop-search_start); 27 | stats['hits'] = found_names.length; 28 | stats['searches'] = searches; 29 | return {found_names:found_names,stats:stats}; 30 | } 31 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-13 Steve Sobel (honestbleeps) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Safari.safariextension/worker_search.js: -------------------------------------------------------------------------------- 1 | if( typeof(importScripts) != 'undefined' ) importScripts("resource://gre/modules/workers/require.js"); 2 | 3 | var _ = false; 4 | 5 | onmessage = function(e) { 6 | _ = require(e.data.basedir+'underscore.js'); 7 | postMessage(do_search(e.data.names,e.data.bodytext)); 8 | } 9 | 10 | function do_search(names,bodytext) { 11 | var stats ={}; 12 | var search_start = new Date().getTime(); 13 | 14 | var found_names = []; 15 | var searches = 0; 16 | _.each(names,function(person,uid){ 17 | _.each(person.names,function(name,nameidx) { 18 | searches++; 19 | var result = bodytext.match(person.regexes[nameidx]); 20 | if( result ) { 21 | found_names.push({uid:uid,name:name,result:result}); 22 | } 23 | }) 24 | }); 25 | stop = new Date().getTime(); 26 | stats['searchtime'] = (stop-search_start); 27 | stats['hits'] = found_names.length; 28 | stats['searches'] = searches; 29 | console.log((stats['searchtime']/1000).toPrecision(2)+' s'); 30 | return {found_names:found_names,stats:stats}; 31 | } 32 | -------------------------------------------------------------------------------- /test/iframe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | iframe 6 | 7 | 8 |

Hello iframe

9 |
  • Thomas

  • 10 |
  • Entwicklung der Braunschen Röhre durch Karl Ferdinand Braun.

  • 11 |
  • georg

  • 12 |
  • Karl-August Siepelmeyer

  • 13 |
  • Hans-Joachim Ahnert

  • 14 |
  • Hans-Joachim Wolff, Hans Joachim Wolff, Hans-Joachim Wolff

  • 15 |
  • Karin Schüler

  • 16 |
  • Klaus-Dieter Rennert

  • 17 |
  • Reiner Assmann

  • 18 |
  • Grüne Die Grünen

  • 19 |
  • Peter Spary

  • 20 | 21 |

    22 |

    some Orgs

    23 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Firefox/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Discover Lobby Networks", 3 | "license": "MIT", 4 | "author": "Medieninnovationszentrum Babelsberg MIZ", 5 | "version": "1.3.4", 6 | "title": "Lobbyradar", 7 | "id": "DF6BD873-26A4-4A36-96DB-208B10ACC4D0", 8 | "name": "lobbyradar", 9 | "icon": "lobbyradar-48.png", 10 | "icon_64": "lobbyradar-64.png", 11 | "preferences": [ 12 | { 13 | "name": "updateinterval", 14 | "type": "menulist", 15 | "title": "Update Interval", 16 | "value": 3600, 17 | "description": "Aktualisierungsinterval für Lobbydaten", 18 | "options": [ 19 | { 20 | "value": "600", 21 | "label": "alle 10 Minuten" 22 | }, 23 | { 24 | "value": "3600", 25 | "label": "stündlich" 26 | }, 27 | { 28 | "value": "86400", 29 | "label": "täglich" 30 | }, 31 | { 32 | "value": "604800", 33 | "label": "wöchentlich" 34 | } 35 | ] 36 | } 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /Chrome/css/popup.css: -------------------------------------------------------------------------------- 1 | #btn_disable_for_site, 2 | #btn_enable_for_site, 3 | #plugin_disabled, #hits, #nohits { 4 | display:none; 5 | } 6 | 7 | .lighttext { 8 | opacity: 0; 9 | } 10 | .lighttext:hover { 11 | opacity: 0.8; 12 | } 13 | body { 14 | overflow: hidden; 15 | } 16 | 17 | html, body { 18 | height: auto; 19 | } 20 | 21 | .navbar a { 22 | width:100%; 23 | } 24 | .lobbyradar_item { 25 | display: block; 26 | list-style: none; 27 | padding: 10px 0 !important; 28 | width: 314px; 29 | border-bottom: 1px solid rgb(216,216,226); 30 | margin: 0; 31 | background: transparent !important; 32 | } 33 | .lobbyradar_item a { 34 | text-decoration: none; 35 | color: white; 36 | background: transparent !important; 37 | padding: 0; 38 | margin: 0; 39 | } 40 | .lobbyradar_item a img { 41 | padding: 0 4px 3px 0; 42 | margin: 2px 0 0 0; 43 | vertical-align: top; 44 | } 45 | .lobbyradar_item a:hover { 46 | text-decoration: underline; 47 | background: transparent !important; 48 | } 49 | .lobbyradar_item a:visited { 50 | background: transparent !important; 51 | } 52 | .lobbyradar_item a { 53 | max-width: 236px !important; 54 | display: inline-block !important; 55 | } 56 | .lobbyradar_item:last-child { 57 | border: none; 58 | } 59 | 60 | .lobbyradar_list { 61 | overflow-x: hidden !important; 62 | overflow-y: auto !important; 63 | padding: 0 !important; 64 | margin-left: 0 !important; 65 | margin-right: 0 !important; 66 | height: 450px; 67 | } 68 | -------------------------------------------------------------------------------- /lib/css/popup.css: -------------------------------------------------------------------------------- 1 | #btn_disable_for_site, 2 | #btn_enable_for_site, 3 | #plugin_disabled, #hits, #nohits { 4 | display:none; 5 | } 6 | 7 | .lighttext { 8 | opacity: 0; 9 | } 10 | .lighttext:hover { 11 | opacity: 0.8; 12 | } 13 | body { 14 | overflow: hidden; 15 | } 16 | 17 | html, body { 18 | height: auto; 19 | } 20 | 21 | .navbar a { 22 | width:100%; 23 | } 24 | .lobbyradar_item { 25 | display: block; 26 | list-style: none; 27 | padding: 10px 0 !important; 28 | width: 314px; 29 | border-bottom: 1px solid rgb(216,216,226); 30 | margin: 0; 31 | background: transparent !important; 32 | } 33 | .lobbyradar_item a { 34 | text-decoration: none; 35 | color: white; 36 | background: transparent !important; 37 | padding: 0; 38 | margin: 0; 39 | } 40 | .lobbyradar_item a img { 41 | padding: 0 4px 3px 0; 42 | margin: 2px 0 0 0; 43 | vertical-align: top; 44 | } 45 | .lobbyradar_item a:hover { 46 | text-decoration: underline; 47 | background: transparent !important; 48 | } 49 | .lobbyradar_item a:visited { 50 | background: transparent !important; 51 | } 52 | .lobbyradar_item a { 53 | max-width: 236px !important; 54 | display: inline-block !important; 55 | } 56 | .lobbyradar_item:last-child { 57 | border: none; 58 | } 59 | 60 | .lobbyradar_list { 61 | overflow-x: hidden !important; 62 | overflow-y: auto !important; 63 | padding: 0 !important; 64 | margin-left: 0 !important; 65 | margin-right: 0 !important; 66 | height: 450px; 67 | } 68 | -------------------------------------------------------------------------------- /Firefox/data/css/popup.css: -------------------------------------------------------------------------------- 1 | #btn_disable_for_site, 2 | #btn_enable_for_site, 3 | #plugin_disabled, #hits, #nohits { 4 | display:none; 5 | } 6 | 7 | .lighttext { 8 | opacity: 0; 9 | } 10 | .lighttext:hover { 11 | opacity: 0.8; 12 | } 13 | body { 14 | overflow: hidden; 15 | } 16 | 17 | html, body { 18 | height: auto; 19 | } 20 | 21 | .navbar a { 22 | width:100%; 23 | } 24 | .lobbyradar_item { 25 | display: block; 26 | list-style: none; 27 | padding: 10px 0 !important; 28 | width: 314px; 29 | border-bottom: 1px solid rgb(216,216,226); 30 | margin: 0; 31 | background: transparent !important; 32 | } 33 | .lobbyradar_item a { 34 | text-decoration: none; 35 | color: white; 36 | background: transparent !important; 37 | padding: 0; 38 | margin: 0; 39 | } 40 | .lobbyradar_item a img { 41 | padding: 0 4px 3px 0; 42 | margin: 2px 0 0 0; 43 | vertical-align: top; 44 | } 45 | .lobbyradar_item a:hover { 46 | text-decoration: underline; 47 | background: transparent !important; 48 | } 49 | .lobbyradar_item a:visited { 50 | background: transparent !important; 51 | } 52 | .lobbyradar_item a { 53 | max-width: 236px !important; 54 | display: inline-block !important; 55 | } 56 | .lobbyradar_item:last-child { 57 | border: none; 58 | } 59 | 60 | .lobbyradar_list { 61 | overflow-x: hidden !important; 62 | overflow-y: auto !important; 63 | padding: 0 !important; 64 | margin-left: 0 !important; 65 | margin-right: 0 !important; 66 | height: 450px; 67 | } 68 | -------------------------------------------------------------------------------- /Safari.safariextension/css/popup.css: -------------------------------------------------------------------------------- 1 | #btn_disable_for_site, 2 | #btn_enable_for_site, 3 | #plugin_disabled, #hits, #nohits { 4 | display:none; 5 | } 6 | 7 | .lighttext { 8 | opacity: 0; 9 | } 10 | .lighttext:hover { 11 | opacity: 0.8; 12 | } 13 | body { 14 | overflow: hidden; 15 | } 16 | 17 | html, body { 18 | height: auto; 19 | } 20 | 21 | .navbar a { 22 | width:100%; 23 | } 24 | .lobbyradar_item { 25 | display: block; 26 | list-style: none; 27 | padding: 10px 0 !important; 28 | width: 314px; 29 | border-bottom: 1px solid rgb(216,216,226); 30 | margin: 0; 31 | background: transparent !important; 32 | } 33 | .lobbyradar_item a { 34 | text-decoration: none; 35 | color: white; 36 | background: transparent !important; 37 | padding: 0; 38 | margin: 0; 39 | } 40 | .lobbyradar_item a img { 41 | padding: 0 4px 3px 0; 42 | margin: 2px 0 0 0; 43 | vertical-align: top; 44 | } 45 | .lobbyradar_item a:hover { 46 | text-decoration: underline; 47 | background: transparent !important; 48 | } 49 | .lobbyradar_item a:visited { 50 | background: transparent !important; 51 | } 52 | .lobbyradar_item a { 53 | max-width: 236px !important; 54 | display: inline-block !important; 55 | } 56 | .lobbyradar_item:last-child { 57 | border: none; 58 | } 59 | 60 | .lobbyradar_list { 61 | overflow-x: hidden !important; 62 | overflow-y: auto !important; 63 | padding: 0 !important; 64 | margin-left: 0 !important; 65 | margin-right: 0 !important; 66 | height: 450px; 67 | } 68 | -------------------------------------------------------------------------------- /styling/popup/blacklisted.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lobbyradar Popup 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 23 |
    24 |
    25 | Treffer auf dieser Seite. 26 |
    deaktivieren
    27 |
    28 |
    29 | Keine Zusatzinformationen auf dieser Seite. 30 |
    31 |
    32 | Auf dieser Seite nicht möglich. 33 |
    34 |
    Einstellungen
    35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /styling/tooltip/style.css: -------------------------------------------------------------------------------- 1 | span[class^="lobbradar_hit"] { 2 | background: rgba(23,189,46,0.07); 3 | border-radius: 3px; 4 | cursor: pointer; 5 | padding: 3px 3px 3px 0; 6 | } 7 | span[class^="lobbradar_hit"] > a:hover { 8 | text-decoration: none !important; 9 | } 10 | 11 | span[class^="lobbradar_hit"]::before 12 | { 13 | background-repeat: no-repeat; 14 | background-position: center center; 15 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3wEJESkWwqKBnQAAAqxJREFUKM9NwUtoXFUcwOHfedw7Dy15TR6dhCQTachKMYsuxFKjqXQEpQttoS5KUVy0PqoIlbp0a6qrSAVjUSmCWHAhBStGKigUh3SlSZs+kkxq0kzGTG4nmZl77vm79fsU/3Pm9Dv93eP5E5XR+rHNYHtM7Qq53bb5wWrv5e+++faz365ce6CUYmr6PApg4uln7MSR516qNKsXfir/mrt3tI4dSOPWWvhKk756Fy/aidre++2nPnz33CWlFAbg5NuvHZmv3Px+5pevspX1dVL5RwiyIarqMVtCtLbN3K0b6cDa4uqN5fWrV67OmTfPvNXfyLZ+vDj7dVbvMaQ6M+gm6HaL3vHIWox2gttosnZ3NUib9Nj7r7/3uy2MFk58fu3LnAoV4QMF1iErCdIRIlrgXgx1R1BxPPQ73MreHi10Dx+2NRcdW1j6i2zHHvxKA53WeC8kpR3IaPx6E1VJSHYcdsCwsrXK7fKd/XajtjFGaDCBQQKFshqlIdgUfJBANcE3PTq0qNBQa9SoblYPWvECXvBe8IlHEjDakEQOEUFiwccJSoFPwGsPIqJ7OrrncR68oNBYa/CJJ2k5fJzgmo4wHSJeEA/t2Ta6enOzuu/RvstDe0dwLYcKIE4SlNV4EeKWw2ZCWnEL0YAIIz3DDHTmS6a2vfX35LOTb1xfLKUZMtiRDDJoMI+l0IUQyRt0PkA6NYEOeLL/iYWjB16eMkt3l+p//lFaTqXSxfL9cvAwqpM0BL+b0IpiXBTjIodtGA7seyoqjh/66NVXjv9glVKIyKWPp6cymTB99uY/i/uWN8vUohriPe3ZNgr5YYa6BhcOPT7x6emTpy4A2PPTn6CUAvhi5uLM3EjP8OHF1Tv7/61UD4qI5Hq7Z/u78qXnxyd/fqFYvA5w9twH/AdlAUVKUFC8XAAAAABJRU5ErkJggg==); 16 | background-size: 12px 12px; 17 | display: inline; 18 | min-width: 14px; 19 | min-height: 14px; 20 | color: transparent; 21 | margin-right: 0px; 22 | content:"LR"; 23 | } 24 | 25 | .tooltipster-content p { 26 | font-family: sans-serif !important; 27 | } -------------------------------------------------------------------------------- /Chrome/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Lobbyradar", 3 | "author": "Medieninnovationszentrum Babelsberg MIZ", 4 | "version": "1.3.4", 5 | "manifest_version": 2, 6 | "description": "Discover Lobby Networks", 7 | "background": { 8 | "scripts": [ 9 | "background.js", 10 | "underscore.js", 11 | "bg_common.js", 12 | "bg_search.js", 13 | "bg_browserbutton.js", 14 | "jquery.js" 15 | ] 16 | }, 17 | "content_scripts": [ 18 | { 19 | "matches": [ 20 | "*://*/*" 21 | ], 22 | "exclude_matches": [ 23 | "*://lobbyradar.opendatacloud.de/*", 24 | "*://www.lobbyradar.de/*" 25 | ], 26 | "js": [ 27 | "BabelExt.js", 28 | "jquery.js", 29 | "jquery_highlight.js", 30 | "jquery.tooltipster.js", 31 | "fg_page.js", 32 | "moment.js", 33 | "underscore.js", 34 | "shariff.min.js" 35 | ], 36 | "css": [ 37 | "style.css", 38 | "tooltipster.css", 39 | "shariff.min.css", 40 | "share-icons.css" 41 | ], 42 | "run_at": "document_end" 43 | } 44 | ], 45 | "permissions": [ 46 | "*://*/*", 47 | "contextMenus", 48 | "tabs", 49 | "history", 50 | "notifications", 51 | "storage" 52 | ], 53 | "web_accessible_resources": [ 54 | "css/font/*.*" 55 | ], 56 | "icons": { 57 | "16": "lobbyradar-16.png", 58 | "32": "lobbyradar-32.png", 59 | "38": "lobbyradar-38.png", 60 | "48": "lobbyradar-48.png", 61 | "64": "lobbyradar-64.png", 62 | "128": "lobbyradar-128.png" 63 | }, 64 | "browser_action": { 65 | "default_icon": { 66 | "16": "lobbyradar-16.png", 67 | "32": "lobbyradar-32.png", 68 | "38": "lobbyradar-38.png", 69 | "48": "lobbyradar-48.png", 70 | "64": "lobbyradar-64.png", 71 | "128": "lobbyradar-128.png" 72 | }, 73 | "default_popup": "popup/popup.html" 74 | }, 75 | "options_page": "options.html" 76 | } 77 | -------------------------------------------------------------------------------- /Chrome/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lobbyradar Options 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 21 |
    22 |
    23 |
    24 | Persönliche Liste von Domains auf denen Lobbyradar aktiv ist. Ein Eintrag pro Zeile.
    25 | 26 |
    Update Interval:
    31 | Aktualisierungsinterval für Lobbydaten
    32 |
    33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /styling/popup/disabled.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lobbyradar Popup 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 23 |
    24 |
    25 | Treffer auf dieser Seite. 26 |
    deaktivieren
    27 |
    28 |
    29 | Keine Zusatzinformationen auf dieser Seite. 30 |
    31 |
    32 | Auf dieser Seite deaktiviert. 33 |
    aktivieren
    34 |
    35 |
    Einstellungen
    36 |
    37 | 38 | 39 | -------------------------------------------------------------------------------- /styling/popup/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lobbyradar Popup 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 24 |
    25 |
    26 | 15 Treffer auf dieser Seite. 27 |
    deaktivieren
    28 |
    29 |
    30 | Keine Zusatzinformationen auf dieser Seite. 31 |
    32 | 36 |
    Einstellungen
    37 |
    38 | 39 | 40 | -------------------------------------------------------------------------------- /lib/css/lobbyradar.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | height: 100%; 3 | } 4 | 5 | body { 6 | min-width: 280px; 7 | min-height: 200px; 8 | background: #11354b; /* Old browsers */ 9 | background: -moz-linear-gradient(top, #11354b 0%, #91b2c0 65%, #91b2c0 77%, #6392a8 100%); /* FF3.6+ */ 10 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#11354b), color-stop(65%,#91b2c0), color-stop(77%,#91b2c0), color-stop(100%,#6392a8)); /* Chrome,Safari4+ */ 11 | background: -webkit-linear-gradient(top, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* Chrome10+,Safari5.1+ */ 12 | background: -o-linear-gradient(top, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* Opera 11.10+ */ 13 | background: -ms-linear-gradient(top, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* IE10+ */ 14 | background: linear-gradient(to bottom, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* W3C */ 15 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#11354b', endColorstr='#6392a8',GradientType=0 ); /* IE6-9 */ 16 | } 17 | 18 | a .header-person{ 19 | font-size:24px; 20 | } 21 | 22 | .navbar-brand, 23 | .navbar-nav li a { 24 | line-height: 60px; 25 | height: 60px; 26 | padding-top: 0; 27 | } 28 | 29 | .navbar-brand img { 30 | max-width:150px; 31 | height:auto!important; 32 | } 33 | 34 | .navbar-form { 35 | padding-top: 15px; 36 | padding-bottom: 15px; 37 | } 38 | 39 | #btn_disable_for_site, 40 | #btn_enable_for_site, 41 | #btn_settings { 42 | margin: 10px; 43 | float: left; 44 | } 45 | 46 | #btn_settings { 47 | float: right; 48 | } 49 | 50 | .navbar { 51 | min-width: 333px; 52 | } 53 | 54 | .navbar-inverse { 55 | background:rgba(20, 59, 82, 1); 56 | } 57 | 58 | .navbar-brand { 59 | font-size: 32px; 60 | font-family: "Arial"; 61 | color: white !important; 62 | } 63 | 64 | a.navbar-brand:focus { 65 | outline:0px!important; 66 | } 67 | 68 | .navbar-brand img { 69 | height: 60px; 70 | margin: -15px 5px -10px 0px; 71 | } 72 | 73 | .lighttext { 74 | font-size:100%!important; 75 | margin-left:10px; 76 | color:white!important; 77 | } 78 | 79 | .lighttext #searchtime { 80 | color:white!important; 81 | } 82 | 83 | .navbar+.container { 84 | color:white; 85 | margin-bottom: 80px; 86 | } 87 | 88 | .optionspage .navbar+.container { 89 | margin-top: 80px; 90 | } 91 | 92 | 93 | .help-block { 94 | color: #fff; 95 | } 96 | -------------------------------------------------------------------------------- /lib/popup/popup_firefox.js: -------------------------------------------------------------------------------- 1 | var detail_url_extern = 'https://www.lobbyradar.de/entity/'; 2 | var current_Taburl = false; 3 | 4 | self.port.on('currentTabInfo',function(tabData){ 5 | current_Taburl = false; 6 | $('.dynamic').hide(); 7 | if( !tabData || !tabData.value ){ 8 | $('#plugin_disabled').show(); 9 | return; 10 | }; 11 | var info = tabData.value; 12 | var tab = tabData.tab; 13 | current_Taburl = tab.url; 14 | 15 | if( info.stage == 'search' ) { 16 | $('#plugin_working').show(); 17 | } else if ( info.stage == 'mark' ) { 18 | $('#plugin_marking').show(); 19 | } else { 20 | if( info.disabled ) { 21 | $('#plugin_disabled').show(); 22 | if(info.can_enable) { 23 | $('#btn_enable_for_site').show(); 24 | } 25 | } else { 26 | $('#plugin_disabled').hide(); 27 | if(info.can_disable){ 28 | $('#btn_disable_for_site').show(); 29 | } 30 | if( info.hits && info.hits.length ) { 31 | $('#hits').show(); 32 | $('#num_hits').text(info.hits.length); 33 | $('#searchtime').text((info.searchtime/1000).toPrecision(2)); 34 | $('#hitlist').empty(); 35 | $.each(info.hits,function(id,person){ 36 | $('#hitlist').append('
  • '+person.name+'
  • '); 37 | }); 38 | $('.lobbyradar_item').click(function(){ 39 | var data = {url: detail_url_extern+$('a',this).attr('data-uid')}; 40 | self.port.emit('openTab',data); 41 | }); 42 | 43 | } else { 44 | $('#nohits').show(); 45 | } 46 | } 47 | } 48 | }); 49 | 50 | $(function(){ 51 | $('#btn_settings').click(function(){ 52 | self.port.emit('openPrefs'); 53 | }); 54 | $('#btn_enable_for_site').click(function(){ 55 | self.port.emit('addWhitelist',current_Taburl); 56 | $('.dynamic').hide(); 57 | $('#reloadhint').show(); 58 | }); 59 | $('#btn_disable_for_site').click(function(){ 60 | self.port.emit('removeWhitelist',current_Taburl); 61 | $('.dynamic').hide(); 62 | $('#reloadhint').show(); 63 | }); 64 | }) 65 | -------------------------------------------------------------------------------- /Chrome/css/lobbyradar.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | height: 100%; 3 | } 4 | 5 | body { 6 | min-width: 280px; 7 | min-height: 200px; 8 | background: #11354b; /* Old browsers */ 9 | background: -moz-linear-gradient(top, #11354b 0%, #91b2c0 65%, #91b2c0 77%, #6392a8 100%); /* FF3.6+ */ 10 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#11354b), color-stop(65%,#91b2c0), color-stop(77%,#91b2c0), color-stop(100%,#6392a8)); /* Chrome,Safari4+ */ 11 | background: -webkit-linear-gradient(top, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* Chrome10+,Safari5.1+ */ 12 | background: -o-linear-gradient(top, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* Opera 11.10+ */ 13 | background: -ms-linear-gradient(top, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* IE10+ */ 14 | background: linear-gradient(to bottom, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* W3C */ 15 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#11354b', endColorstr='#6392a8',GradientType=0 ); /* IE6-9 */ 16 | } 17 | 18 | a .header-person{ 19 | font-size:24px; 20 | } 21 | 22 | .navbar-brand, 23 | .navbar-nav li a { 24 | line-height: 60px; 25 | height: 60px; 26 | padding-top: 0; 27 | } 28 | 29 | .navbar-brand img { 30 | max-width:150px; 31 | height:auto!important; 32 | } 33 | 34 | .navbar-form { 35 | padding-top: 15px; 36 | padding-bottom: 15px; 37 | } 38 | 39 | #btn_disable_for_site, 40 | #btn_enable_for_site, 41 | #btn_settings { 42 | margin: 10px; 43 | float: left; 44 | } 45 | 46 | #btn_settings { 47 | float: right; 48 | } 49 | 50 | .navbar { 51 | min-width: 333px; 52 | } 53 | 54 | .navbar-inverse { 55 | background:rgba(20, 59, 82, 1); 56 | } 57 | 58 | .navbar-brand { 59 | font-size: 32px; 60 | font-family: "Arial"; 61 | color: white !important; 62 | } 63 | 64 | a.navbar-brand:focus { 65 | outline:0px!important; 66 | } 67 | 68 | .navbar-brand img { 69 | height: 60px; 70 | margin: -15px 5px -10px 0px; 71 | } 72 | 73 | .lighttext { 74 | font-size:100%!important; 75 | margin-left:10px; 76 | color:white!important; 77 | } 78 | 79 | .lighttext #searchtime { 80 | color:white!important; 81 | } 82 | 83 | .navbar+.container { 84 | color:white; 85 | margin-bottom: 80px; 86 | } 87 | 88 | .optionspage .navbar+.container { 89 | margin-top: 80px; 90 | } 91 | 92 | 93 | .help-block { 94 | color: #fff; 95 | } 96 | -------------------------------------------------------------------------------- /Chrome/popup/popup_firefox.js: -------------------------------------------------------------------------------- 1 | var detail_url_extern = 'https://www.lobbyradar.de/entity/'; 2 | var current_Taburl = false; 3 | 4 | self.port.on('currentTabInfo',function(tabData){ 5 | current_Taburl = false; 6 | $('.dynamic').hide(); 7 | if( !tabData || !tabData.value ){ 8 | $('#plugin_disabled').show(); 9 | return; 10 | }; 11 | var info = tabData.value; 12 | var tab = tabData.tab; 13 | current_Taburl = tab.url; 14 | 15 | if( info.stage == 'search' ) { 16 | $('#plugin_working').show(); 17 | } else if ( info.stage == 'mark' ) { 18 | $('#plugin_marking').show(); 19 | } else { 20 | if( info.disabled ) { 21 | $('#plugin_disabled').show(); 22 | if(info.can_enable) { 23 | $('#btn_enable_for_site').show(); 24 | } 25 | } else { 26 | $('#plugin_disabled').hide(); 27 | if(info.can_disable){ 28 | $('#btn_disable_for_site').show(); 29 | } 30 | if( info.hits && info.hits.length ) { 31 | $('#hits').show(); 32 | $('#num_hits').text(info.hits.length); 33 | $('#searchtime').text((info.searchtime/1000).toPrecision(2)); 34 | $('#hitlist').empty(); 35 | $.each(info.hits,function(id,person){ 36 | $('#hitlist').append('
  • '+person.name+'
  • '); 37 | }); 38 | $('.lobbyradar_item').click(function(){ 39 | var data = {url: detail_url_extern+$('a',this).attr('data-uid')}; 40 | self.port.emit('openTab',data); 41 | }); 42 | 43 | } else { 44 | $('#nohits').show(); 45 | } 46 | } 47 | } 48 | }); 49 | 50 | $(function(){ 51 | $('#btn_settings').click(function(){ 52 | self.port.emit('openPrefs'); 53 | }); 54 | $('#btn_enable_for_site').click(function(){ 55 | self.port.emit('addWhitelist',current_Taburl); 56 | $('.dynamic').hide(); 57 | $('#reloadhint').show(); 58 | }); 59 | $('#btn_disable_for_site').click(function(){ 60 | self.port.emit('removeWhitelist',current_Taburl); 61 | $('.dynamic').hide(); 62 | $('#reloadhint').show(); 63 | }); 64 | }) 65 | -------------------------------------------------------------------------------- /Firefox/data/css/lobbyradar.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | height: 100%; 3 | } 4 | 5 | body { 6 | min-width: 280px; 7 | min-height: 200px; 8 | background: #11354b; /* Old browsers */ 9 | background: -moz-linear-gradient(top, #11354b 0%, #91b2c0 65%, #91b2c0 77%, #6392a8 100%); /* FF3.6+ */ 10 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#11354b), color-stop(65%,#91b2c0), color-stop(77%,#91b2c0), color-stop(100%,#6392a8)); /* Chrome,Safari4+ */ 11 | background: -webkit-linear-gradient(top, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* Chrome10+,Safari5.1+ */ 12 | background: -o-linear-gradient(top, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* Opera 11.10+ */ 13 | background: -ms-linear-gradient(top, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* IE10+ */ 14 | background: linear-gradient(to bottom, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* W3C */ 15 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#11354b', endColorstr='#6392a8',GradientType=0 ); /* IE6-9 */ 16 | } 17 | 18 | a .header-person{ 19 | font-size:24px; 20 | } 21 | 22 | .navbar-brand, 23 | .navbar-nav li a { 24 | line-height: 60px; 25 | height: 60px; 26 | padding-top: 0; 27 | } 28 | 29 | .navbar-brand img { 30 | max-width:150px; 31 | height:auto!important; 32 | } 33 | 34 | .navbar-form { 35 | padding-top: 15px; 36 | padding-bottom: 15px; 37 | } 38 | 39 | #btn_disable_for_site, 40 | #btn_enable_for_site, 41 | #btn_settings { 42 | margin: 10px; 43 | float: left; 44 | } 45 | 46 | #btn_settings { 47 | float: right; 48 | } 49 | 50 | .navbar { 51 | min-width: 333px; 52 | } 53 | 54 | .navbar-inverse { 55 | background:rgba(20, 59, 82, 1); 56 | } 57 | 58 | .navbar-brand { 59 | font-size: 32px; 60 | font-family: "Arial"; 61 | color: white !important; 62 | } 63 | 64 | a.navbar-brand:focus { 65 | outline:0px!important; 66 | } 67 | 68 | .navbar-brand img { 69 | height: 60px; 70 | margin: -15px 5px -10px 0px; 71 | } 72 | 73 | .lighttext { 74 | font-size:100%!important; 75 | margin-left:10px; 76 | color:white!important; 77 | } 78 | 79 | .lighttext #searchtime { 80 | color:white!important; 81 | } 82 | 83 | .navbar+.container { 84 | color:white; 85 | margin-bottom: 80px; 86 | } 87 | 88 | .optionspage .navbar+.container { 89 | margin-top: 80px; 90 | } 91 | 92 | 93 | .help-block { 94 | color: #fff; 95 | } 96 | -------------------------------------------------------------------------------- /Firefox/data/popup/popup_firefox.js: -------------------------------------------------------------------------------- 1 | var detail_url_extern = 'https://www.lobbyradar.de/entity/'; 2 | var current_Taburl = false; 3 | 4 | self.port.on('currentTabInfo',function(tabData){ 5 | current_Taburl = false; 6 | $('.dynamic').hide(); 7 | if( !tabData || !tabData.value ){ 8 | $('#plugin_disabled').show(); 9 | return; 10 | }; 11 | var info = tabData.value; 12 | var tab = tabData.tab; 13 | current_Taburl = tab.url; 14 | 15 | if( info.stage == 'search' ) { 16 | $('#plugin_working').show(); 17 | } else if ( info.stage == 'mark' ) { 18 | $('#plugin_marking').show(); 19 | } else { 20 | if( info.disabled ) { 21 | $('#plugin_disabled').show(); 22 | if(info.can_enable) { 23 | $('#btn_enable_for_site').show(); 24 | } 25 | } else { 26 | $('#plugin_disabled').hide(); 27 | if(info.can_disable){ 28 | $('#btn_disable_for_site').show(); 29 | } 30 | if( info.hits && info.hits.length ) { 31 | $('#hits').show(); 32 | $('#num_hits').text(info.hits.length); 33 | $('#searchtime').text((info.searchtime/1000).toPrecision(2)); 34 | $('#hitlist').empty(); 35 | $.each(info.hits,function(id,person){ 36 | $('#hitlist').append('
  • '+person.name+'
  • '); 37 | }); 38 | $('.lobbyradar_item').click(function(){ 39 | var data = {url: detail_url_extern+$('a',this).attr('data-uid')}; 40 | self.port.emit('openTab',data); 41 | }); 42 | 43 | } else { 44 | $('#nohits').show(); 45 | } 46 | } 47 | } 48 | }); 49 | 50 | $(function(){ 51 | $('#btn_settings').click(function(){ 52 | self.port.emit('openPrefs'); 53 | }); 54 | $('#btn_enable_for_site').click(function(){ 55 | self.port.emit('addWhitelist',current_Taburl); 56 | $('.dynamic').hide(); 57 | $('#reloadhint').show(); 58 | }); 59 | $('#btn_disable_for_site').click(function(){ 60 | self.port.emit('removeWhitelist',current_Taburl); 61 | $('.dynamic').hide(); 62 | $('#reloadhint').show(); 63 | }); 64 | }) 65 | -------------------------------------------------------------------------------- /Safari.safariextension/css/lobbyradar.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | height: 100%; 3 | } 4 | 5 | body { 6 | min-width: 280px; 7 | min-height: 200px; 8 | background: #11354b; /* Old browsers */ 9 | background: -moz-linear-gradient(top, #11354b 0%, #91b2c0 65%, #91b2c0 77%, #6392a8 100%); /* FF3.6+ */ 10 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#11354b), color-stop(65%,#91b2c0), color-stop(77%,#91b2c0), color-stop(100%,#6392a8)); /* Chrome,Safari4+ */ 11 | background: -webkit-linear-gradient(top, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* Chrome10+,Safari5.1+ */ 12 | background: -o-linear-gradient(top, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* Opera 11.10+ */ 13 | background: -ms-linear-gradient(top, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* IE10+ */ 14 | background: linear-gradient(to bottom, #11354b 0%,#91b2c0 65%,#91b2c0 77%,#6392a8 100%); /* W3C */ 15 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#11354b', endColorstr='#6392a8',GradientType=0 ); /* IE6-9 */ 16 | } 17 | 18 | a .header-person{ 19 | font-size:24px; 20 | } 21 | 22 | .navbar-brand, 23 | .navbar-nav li a { 24 | line-height: 60px; 25 | height: 60px; 26 | padding-top: 0; 27 | } 28 | 29 | .navbar-brand img { 30 | max-width:150px; 31 | height:auto!important; 32 | } 33 | 34 | .navbar-form { 35 | padding-top: 15px; 36 | padding-bottom: 15px; 37 | } 38 | 39 | #btn_disable_for_site, 40 | #btn_enable_for_site, 41 | #btn_settings { 42 | margin: 10px; 43 | float: left; 44 | } 45 | 46 | #btn_settings { 47 | float: right; 48 | } 49 | 50 | .navbar { 51 | min-width: 333px; 52 | } 53 | 54 | .navbar-inverse { 55 | background:rgba(20, 59, 82, 1); 56 | } 57 | 58 | .navbar-brand { 59 | font-size: 32px; 60 | font-family: "Arial"; 61 | color: white !important; 62 | } 63 | 64 | a.navbar-brand:focus { 65 | outline:0px!important; 66 | } 67 | 68 | .navbar-brand img { 69 | height: 60px; 70 | margin: -15px 5px -10px 0px; 71 | } 72 | 73 | .lighttext { 74 | font-size:100%!important; 75 | margin-left:10px; 76 | color:white!important; 77 | } 78 | 79 | .lighttext #searchtime { 80 | color:white!important; 81 | } 82 | 83 | .navbar+.container { 84 | color:white; 85 | margin-bottom: 80px; 86 | } 87 | 88 | .optionspage .navbar+.container { 89 | margin-top: 80px; 90 | } 91 | 92 | 93 | .help-block { 94 | color: #fff; 95 | } 96 | -------------------------------------------------------------------------------- /Safari.safariextension/popup/popup_firefox.js: -------------------------------------------------------------------------------- 1 | var detail_url_extern = 'https://www.lobbyradar.de/entity/'; 2 | var current_Taburl = false; 3 | 4 | self.port.on('currentTabInfo',function(tabData){ 5 | current_Taburl = false; 6 | $('.dynamic').hide(); 7 | if( !tabData || !tabData.value ){ 8 | $('#plugin_disabled').show(); 9 | return; 10 | }; 11 | var info = tabData.value; 12 | var tab = tabData.tab; 13 | current_Taburl = tab.url; 14 | 15 | if( info.stage == 'search' ) { 16 | $('#plugin_working').show(); 17 | } else if ( info.stage == 'mark' ) { 18 | $('#plugin_marking').show(); 19 | } else { 20 | if( info.disabled ) { 21 | $('#plugin_disabled').show(); 22 | if(info.can_enable) { 23 | $('#btn_enable_for_site').show(); 24 | } 25 | } else { 26 | $('#plugin_disabled').hide(); 27 | if(info.can_disable){ 28 | $('#btn_disable_for_site').show(); 29 | } 30 | if( info.hits && info.hits.length ) { 31 | $('#hits').show(); 32 | $('#num_hits').text(info.hits.length); 33 | $('#searchtime').text((info.searchtime/1000).toPrecision(2)); 34 | $('#hitlist').empty(); 35 | $.each(info.hits,function(id,person){ 36 | $('#hitlist').append('
  • '+person.name+'
  • '); 37 | }); 38 | $('.lobbyradar_item').click(function(){ 39 | var data = {url: detail_url_extern+$('a',this).attr('data-uid')}; 40 | self.port.emit('openTab',data); 41 | }); 42 | 43 | } else { 44 | $('#nohits').show(); 45 | } 46 | } 47 | } 48 | }); 49 | 50 | $(function(){ 51 | $('#btn_settings').click(function(){ 52 | self.port.emit('openPrefs'); 53 | }); 54 | $('#btn_enable_for_site').click(function(){ 55 | self.port.emit('addWhitelist',current_Taburl); 56 | $('.dynamic').hide(); 57 | $('#reloadhint').show(); 58 | }); 59 | $('#btn_disable_for_site').click(function(){ 60 | self.port.emit('removeWhitelist',current_Taburl); 61 | $('.dynamic').hide(); 62 | $('#reloadhint').show(); 63 | }); 64 | }) 65 | -------------------------------------------------------------------------------- /lib/local_settings.json.example: -------------------------------------------------------------------------------- 1 | /* 2 | * Local settings 3 | * This contains settings that are specific to an installation, 4 | * Rename this file to 'local_settings.json' before use 5 | * 'localsettings.json' is in .gitignore because it should never go in version control 6 | */ 7 | { 8 | 9 | // set this to release to addons.mozilla.org: 10 | amo_login_info: { 11 | username: 'user@example.org', 12 | password: 'password123' // optional - defaults to the environment variable 'AMO_PASSWORD' 13 | }, 14 | 15 | // set this to release to the Chrome store: 16 | chrome_login_info: { 17 | 18 | username: 'user@example.org', 19 | password: 'password123', // optional - defaults to the environment variable 'CHROME_PASSWORD' 20 | 21 | // "ID" string in chrome://extensions/: 22 | id: "abcdefghijklmnopqrstuvwxyz012345", 23 | 24 | /* 25 | * Keys for the Chrome WebStore API. 26 | * Follow the instructions here: https://developer.chrome.com/webstore/using_webstore_api 27 | * 28 | * Make sure to get an access token (code) manually once, to make sure it works. 29 | * If you get a 401 error when you try to retrieve the token, go to APIs & auth > Consent screen 30 | * in the Google Developers Console and fill in your email address and product name. 31 | * 32 | * Also make sure to enable the Web Store API by going to APIs & auth > APIs, 33 | * browsing for "Chrome Web Store API" and changing the status to "ON" 34 | */ 35 | "client_id" : 'abcdefghijkl-mnopqrstuvwxyz0123456789ABCDEFGH.apps.googleusercontent.com', 36 | "client_secret": "abcdefghijklm-nopqrstuvw", 37 | 38 | }, 39 | 40 | // set this to release to the Opera extensions site: 41 | opera_login_info: { 42 | username: 'user@example.org', 43 | password: 'password123', // optional - defaults to the environment variable 'OPERA_PASSWORD' 44 | tested_on: 'Opera 25 Developer Linux' // List of versions you've tested on (see opera://about for your version) 45 | }, 46 | 47 | // Command to get the changelog for your latest version. 48 | // At the time of writing, this was required by Opera and hadn't yet been implemented for other browsers: 49 | changelog_command: [ 'git', 'log', '--pretty=* %s', '@{u}..HEAD', '--reverse', '--first-parent' ], 50 | 51 | } -------------------------------------------------------------------------------- /Chrome/popup/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Lobbyradar Popup 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 27 |
    28 |
    29 | Treffer auf dieser Seite.(s) 30 | 33 |
    34 |
    35 | 0 Treffer auf dieser Seite. 36 |
    37 |
    38 | Lobbyradar sucht... 39 |
    40 |
    41 | Lobbyradar markiert Treffer... 42 |
    43 |
    44 | Bitte Seite neu laden. 45 |
    46 |
    47 | Auf dieser Seite deaktiviert. 48 |
    aktivieren
    49 |
    50 |
    51 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /lib/popup/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Lobbyradar Popup 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 27 |
    28 |
    29 | Treffer auf dieser Seite.(s) 30 | 33 |
    34 |
    35 | 0 Treffer auf dieser Seite. 36 |
    37 |
    38 | Lobbyradar sucht... 39 |
    40 |
    41 | Lobbyradar markiert Treffer... 42 |
    43 |
    44 | Bitte Seite neu laden. 45 |
    46 |
    47 | Auf dieser Seite deaktiviert. 48 |
    aktivieren
    49 |
    50 |
    51 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /Firefox/data/popup/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Lobbyradar Popup 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 27 |
    28 |
    29 | Treffer auf dieser Seite.(s) 30 | 33 |
    34 |
    35 | 0 Treffer auf dieser Seite. 36 |
    37 |
    38 | Lobbyradar sucht... 39 |
    40 |
    41 | Lobbyradar markiert Treffer... 42 |
    43 |
    44 | Bitte Seite neu laden. 45 |
    46 |
    47 | Auf dieser Seite deaktiviert. 48 |
    aktivieren
    49 |
    50 |
    51 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /Safari.safariextension/popup/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Lobbyradar Popup 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 27 |
    28 |
    29 | Treffer auf dieser Seite.(s) 30 | 33 |
    34 |
    35 | 0 Treffer auf dieser Seite. 36 |
    37 |
    38 | Lobbyradar sucht... 39 |
    40 |
    41 | Lobbyradar markiert Treffer... 42 |
    43 |
    44 | Bitte Seite neu laden. 45 |
    46 |
    47 | Auf dieser Seite deaktiviert. 48 |
    aktivieren
    49 |
    50 |
    51 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /lib/popup/popup.js: -------------------------------------------------------------------------------- 1 | var detail_url_extern = 'https://www.lobbyradar.de/entity/'; 2 | var BG,tab; 3 | if(SAFARI) { 4 | BG = safari.extension.globalPage.contentWindow; 5 | } else { 6 | BG = chrome.extension.getBackgroundPage(); 7 | } 8 | 9 | function enable_for_site(url) { 10 | var hostname = BG.parseURL(url).hostname; 11 | BabelExt.bgMessage({requestType:'addWhitelist',hostname:hostname}); 12 | } 13 | 14 | function disable_for_site(url) { 15 | var hostname = BG.parseURL(url).hostname; 16 | BabelExt.bgMessage({requestType:'removeWhitelist',hostname:hostname}); 17 | } 18 | 19 | function wire_components() { 20 | $('#btn_settings').click(function(){ 21 | chrome.tabs.create({url: "options.html"}); 22 | }); 23 | $('#btn_enable_for_site').click(function(){ 24 | enable_for_site(tab.url); 25 | $('.dynamic').hide(); 26 | $('#reloadhint').show(); 27 | }); 28 | $('#btn_disable_for_site').click(function(){ 29 | disable_for_site(tab.url); 30 | $('.dynamic').hide(); 31 | $('#reloadhint').show(); 32 | }); 33 | } 34 | 35 | function update_content() { 36 | $('.dynamic').hide(); 37 | if(SAFARI) $('.hide_in_safari').hide(); 38 | BG.getCurrentTabInfo(function(tabData){ 39 | if( !tabData || !tabData.value ){ 40 | $('#plugin_disabled').show(); 41 | return; 42 | }; 43 | var info = tabData.value; 44 | tab = tabData.tab; 45 | if( !info.stage || info.stage == 'search' || info.stage == 'mark' || !info.hits ) { 46 | $('#plugin_working').show(); 47 | window.setTimeout(update_content,250); 48 | } else { 49 | if( info.disabled ) { 50 | $('#plugin_disabled').show(); 51 | if(info.can_enable) { 52 | $('#btn_enable_for_site').show(); 53 | } 54 | } else { 55 | $('#plugin_disabled').hide(); 56 | if(info.can_disable){ 57 | $('#btn_disable_for_site').show(); 58 | } 59 | if( info.hits && info.hits.length ) { 60 | $('#hits').show(); 61 | $('#num_hits').text(info.hits.length); 62 | $('#searchtime').text((info.searchtime/1000).toPrecision(2)); 63 | $('#hitlist').empty(); 64 | $.each(info.hits,function(id,person){ 65 | $('#hitlist').append('
  • '+person.name+'
  • '); 66 | }); 67 | $('.lobbyradar_item').click(function(){ 68 | 69 | chrome.tabs.create({url: $('a',this).attr('href')}); 70 | }); 71 | 72 | } else { 73 | $('#nohits').show(); 74 | } 75 | } 76 | } 77 | }); 78 | } 79 | 80 | $(function(){ 81 | wire_components(); 82 | update_content(); 83 | }); 84 | -------------------------------------------------------------------------------- /Chrome/popup/popup.js: -------------------------------------------------------------------------------- 1 | var detail_url_extern = 'https://www.lobbyradar.de/entity/'; 2 | var BG,tab; 3 | if(SAFARI) { 4 | BG = safari.extension.globalPage.contentWindow; 5 | } else { 6 | BG = chrome.extension.getBackgroundPage(); 7 | } 8 | 9 | function enable_for_site(url) { 10 | var hostname = BG.parseURL(url).hostname; 11 | BabelExt.bgMessage({requestType:'addWhitelist',hostname:hostname}); 12 | } 13 | 14 | function disable_for_site(url) { 15 | var hostname = BG.parseURL(url).hostname; 16 | BabelExt.bgMessage({requestType:'removeWhitelist',hostname:hostname}); 17 | } 18 | 19 | function wire_components() { 20 | $('#btn_settings').click(function(){ 21 | chrome.tabs.create({url: "options.html"}); 22 | }); 23 | $('#btn_enable_for_site').click(function(){ 24 | enable_for_site(tab.url); 25 | $('.dynamic').hide(); 26 | $('#reloadhint').show(); 27 | }); 28 | $('#btn_disable_for_site').click(function(){ 29 | disable_for_site(tab.url); 30 | $('.dynamic').hide(); 31 | $('#reloadhint').show(); 32 | }); 33 | } 34 | 35 | function update_content() { 36 | $('.dynamic').hide(); 37 | if(SAFARI) $('.hide_in_safari').hide(); 38 | BG.getCurrentTabInfo(function(tabData){ 39 | if( !tabData || !tabData.value ){ 40 | $('#plugin_disabled').show(); 41 | return; 42 | }; 43 | var info = tabData.value; 44 | tab = tabData.tab; 45 | if( !info.stage || info.stage == 'search' || info.stage == 'mark' || !info.hits ) { 46 | $('#plugin_working').show(); 47 | window.setTimeout(update_content,250); 48 | } else { 49 | if( info.disabled ) { 50 | $('#plugin_disabled').show(); 51 | if(info.can_enable) { 52 | $('#btn_enable_for_site').show(); 53 | } 54 | } else { 55 | $('#plugin_disabled').hide(); 56 | if(info.can_disable){ 57 | $('#btn_disable_for_site').show(); 58 | } 59 | if( info.hits && info.hits.length ) { 60 | $('#hits').show(); 61 | $('#num_hits').text(info.hits.length); 62 | $('#searchtime').text((info.searchtime/1000).toPrecision(2)); 63 | $('#hitlist').empty(); 64 | $.each(info.hits,function(id,person){ 65 | $('#hitlist').append('
  • '+person.name+'
  • '); 66 | }); 67 | $('.lobbyradar_item').click(function(){ 68 | 69 | chrome.tabs.create({url: $('a',this).attr('href')}); 70 | }); 71 | 72 | } else { 73 | $('#nohits').show(); 74 | } 75 | } 76 | } 77 | }); 78 | } 79 | 80 | $(function(){ 81 | wire_components(); 82 | update_content(); 83 | }); 84 | -------------------------------------------------------------------------------- /Safari.safariextension/popup/popup.js: -------------------------------------------------------------------------------- 1 | var detail_url_extern = 'https://www.lobbyradar.de/entity/'; 2 | var BG,tab; 3 | if(SAFARI) { 4 | BG = safari.extension.globalPage.contentWindow; 5 | } else { 6 | BG = chrome.extension.getBackgroundPage(); 7 | } 8 | 9 | function enable_for_site(url) { 10 | var hostname = BG.parseURL(url).hostname; 11 | BabelExt.bgMessage({requestType:'addWhitelist',hostname:hostname}); 12 | } 13 | 14 | function disable_for_site(url) { 15 | var hostname = BG.parseURL(url).hostname; 16 | BabelExt.bgMessage({requestType:'removeWhitelist',hostname:hostname}); 17 | } 18 | 19 | function wire_components() { 20 | $('#btn_settings').click(function(){ 21 | chrome.tabs.create({url: "options.html"}); 22 | }); 23 | $('#btn_enable_for_site').click(function(){ 24 | enable_for_site(tab.url); 25 | $('.dynamic').hide(); 26 | $('#reloadhint').show(); 27 | }); 28 | $('#btn_disable_for_site').click(function(){ 29 | disable_for_site(tab.url); 30 | $('.dynamic').hide(); 31 | $('#reloadhint').show(); 32 | }); 33 | } 34 | 35 | function update_content() { 36 | $('.dynamic').hide(); 37 | if(SAFARI) $('.hide_in_safari').hide(); 38 | BG.getCurrentTabInfo(function(tabData){ 39 | if( !tabData || !tabData.value ){ 40 | $('#plugin_disabled').show(); 41 | return; 42 | }; 43 | var info = tabData.value; 44 | tab = tabData.tab; 45 | if( !info.stage || info.stage == 'search' || info.stage == 'mark' || !info.hits ) { 46 | $('#plugin_working').show(); 47 | window.setTimeout(update_content,250); 48 | } else { 49 | if( info.disabled ) { 50 | $('#plugin_disabled').show(); 51 | if(info.can_enable) { 52 | $('#btn_enable_for_site').show(); 53 | } 54 | } else { 55 | $('#plugin_disabled').hide(); 56 | if(info.can_disable){ 57 | $('#btn_disable_for_site').show(); 58 | } 59 | if( info.hits && info.hits.length ) { 60 | $('#hits').show(); 61 | $('#num_hits').text(info.hits.length); 62 | $('#searchtime').text((info.searchtime/1000).toPrecision(2)); 63 | $('#hitlist').empty(); 64 | $.each(info.hits,function(id,person){ 65 | $('#hitlist').append('
  • '+person.name+'
  • '); 66 | }); 67 | $('.lobbyradar_item').click(function(){ 68 | 69 | chrome.tabs.create({url: $('a',this).attr('href')}); 70 | }); 71 | 72 | } else { 73 | $('#nohits').show(); 74 | } 75 | } 76 | } 77 | }); 78 | } 79 | 80 | $(function(){ 81 | wire_components(); 82 | update_content(); 83 | }); 84 | -------------------------------------------------------------------------------- /Safari.safariextension/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Author 6 | Medieninnovationszentrum Babelsberg MIZ 7 | Builder Version 8 | 10600.5.17 9 | CFBundleDisplayName 10 | Lobbyradar 11 | CFBundleIdentifier 12 | de.miz-babelsberg.lobbyradar 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleShortVersionString 16 | 1.3.4 17 | CFBundleVersion 18 | 1.3.4 19 | Chrome 20 | 21 | Database Quota 22 | 10485760 23 | Global Page 24 | background.html 25 | Popovers 26 | 27 | 28 | Filename 29 | popup/popup.html 30 | Height 31 | 640 32 | Identifier 33 | lobbyradarPopover 34 | Width 35 | 361 36 | 37 | 38 | Toolbar Items 39 | 40 | 41 | Identifier 42 | lobbyradarBtn 43 | Image 44 | lobbyradar-16-mono.png 45 | Label 46 | Lobbyradar 47 | Popover 48 | lobbyradarPopover 49 | 50 | 51 | 52 | Content 53 | 54 | Scripts 55 | 56 | End 57 | 58 | jquery.js 59 | jquery_highlight.js 60 | jquery.tooltipster.js 61 | fg_page.js 62 | moment.js 63 | underscore.js 64 | shariff.min.js 65 | 66 | Start 67 | 68 | BabelExt.js 69 | 70 | 71 | Stylesheets 72 | 73 | style.css 74 | tooltipster.css 75 | shariff.min.css 76 | share-icons.css 77 | 78 | 79 | Description 80 | Discover Lobby Networks 81 | DeveloperIdentifier 82 | 3HQU4WS555 83 | ExtensionInfoDictionaryVersion 84 | 1.0 85 | Permissions 86 | 87 | Website Access 88 | 89 | Allowed Domains 90 | 91 | * 92 | 93 | Include Secure Pages 94 | 95 | Level 96 | Some 97 | 98 | 99 | Website 100 | http://www.lobbyradar.zdf.de 101 | 102 | 103 | -------------------------------------------------------------------------------- /Chrome/options.js: -------------------------------------------------------------------------------- 1 | // based on https://developer.chrome.com/extensions/options 2 | 3 | function get_preferences() { 4 | var preferences = {}; 5 | [].slice.call(document.querySelectorAll('.form-control')).forEach(function(element) { 6 | switch ( element.nodeName ) { 7 | case 'INPUT': 8 | switch ( element.type ) { 9 | case 'checkbox': 10 | if ( element.checked ) { 11 | preferences[element.id] = 12 | element.hasAttribute('data-on') ? parseInt(element.getAttribute('data-on'),10) : true; 13 | } else { 14 | preferences[element.id] = 15 | element.hasAttribute('data-off') ? parseInt(element.getAttribute('data-off'),10) : false; 16 | } 17 | break; 18 | case 'radio' : if ( element.checked ) preferences[element.name] = element.value; break; 19 | case 'number': preferences[element.id] = parseInt(element.value,10); break; 20 | case 'text' : preferences[element.id] = element.value; break; 21 | } 22 | break; 23 | case 'SELECT': preferences[element.id] = element.value; break; 24 | case 'TEXTAREA': preferences[element.id] = element.value.split("\n").join(","); break; 25 | } 26 | }); 27 | return preferences; 28 | } 29 | 30 | document.addEventListener('DOMContentLoaded', function() { 31 | chrome.storage.local.get(get_preferences(), function(preferences) { 32 | [].slice.call(document.querySelectorAll('.form-control')).forEach(function(element) { 33 | switch ( element.nodeName ) { 34 | case 'INPUT': 35 | switch ( element.type ) { 36 | case 'checkbox': 37 | element.checked = 38 | preferences[element.id] == ( element.hasAttribute('data-on') ? element.getAttribute('data-on') : true ); 39 | break; 40 | case 'radio' : element.checked = preferences[element.name] == element.value; break; 41 | case 'number': element.value = preferences[element.id]; break; 42 | case 'text' : element.value = preferences[element.id]; break; 43 | } 44 | break; 45 | case 'SELECT': element.value = preferences[element.id]; break; 46 | case 'TEXTAREA': element.value = preferences[element.id].split(',').join("\n"); break; 47 | } 48 | }); 49 | }); 50 | }); 51 | 52 | function storePreferences() { 53 | chrome.storage.local.set(get_preferences(), function() { 54 | chrome.runtime.sendMessage({requestType:'optionsChanged'}); 55 | }); 56 | } 57 | document.addEventListener('click', storePreferences); 58 | document.addEventListener('input', storePreferences); 59 | 60 | $(function(){ 61 | moment.locale('de'); 62 | chrome.storage.local.get('last_update',function(last_update){ 63 | var string_last_update = "noch nie."; 64 | if(last_update.last_update){ 65 | string_last_update = moment(last_update.last_update).calendar(); 66 | } 67 | $('#updateinterval_help').append('
    Letzte Aktualisierung: '+string_last_update); 68 | }); 69 | }); 70 | -------------------------------------------------------------------------------- /lib/share-icons.css: -------------------------------------------------------------------------------- 1 | .tooltipster-lobbyradar .shariff .fa-envelope::before, 2 | .tooltipster-lobbyradar .shariff .fa-twitter::before, 3 | .tooltipster-lobbyradar .shariff .fa-facebook::before { 4 | content:'' !important; 5 | } 6 | .tooltipster-lobbyradar .shariff .fa-facebook { 7 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3wQYDSMnXOqMswAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABU0lEQVRYw+2XMU7DQBBF/99YUFEgeiLgClDsiga4BAdAcBUkLgBHiOAKEQ2xC2joiRAnMDQUIdmhQCIQ7MRLHLNC8xtLY6337czsH5k3aQ8xK6nzY9baNoWHpGxAuPn1nVCeCTx44CLLsqdGAa21KwY4A3gCAgDx8RyLnwHpAmgO0FrbNmAXwNZiSuwmzxom43kFVofjiBKyZ7Jrfg/n39wRiO3QdSF7mnmyR+I42lvsX936jOzlEOlAkH+LDtlvxmaSqX2XyxD7Zjm7j8oHx6YnnTrg5u7BcsCJskYHWKMUsJFL4gdur+BoO+UGidXCNQDMUnod5LUwvZljR0bO15SQnK10Ld4SC+4i70HJ4wYU9KMGFPDx32Wwks3ICAdFNkPitGQWn4vn5Y/4C24XAljkXX7ggFb5LA71Ox11CqiACqiACqiACqiAf6JKv52awSl6B2n9WoEGthpcAAAAAElFTkSuQmCC") !important; 8 | } 9 | .tooltipster-lobbyradar .shariff .fa-twitter { 10 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3wQYDSQV23xL9AAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACoElEQVRYw+2Yz0obURTGf+eaKEigTcCttOQBpKAL7y620gcQpA9gg/QBtKXrEu0DiIgPYEUfoIi4qePCtKUPEGjdhnZqEcFJvKeL2hRinMxM/mAld5mZzPw49/vO+e7IB++Q27wMt3wNAO88YAqL3GZAwRzKYIvvtgZ7vFzVZrjPM0EfAijyiRrHZtQ76ViD7tyOR31Qy//X7ZIIy0D22kXVbfVlwYx5ZwCuZhdEKKrPzN/fQgFd1WYkxzd1LJu0txkXTuvTa4gstrmtgupHROb/vFRLkj56HU2D95gCsmLYcDW7EKtyNTsXAQ4g34BTXdefUnI1OxcN0DDVKLNhQ2vTb1zVZiLpxrCSoOPlJcevZjlEd7GRV5LjswtsIbR6F3YCyCfoyLM4LTXL6WZAx3GrLZEh9rU+vXYF0upFuSSGUkexWX9tXayX9ntLBzZuoKywwyXvzYj3BcAFtiBD7MejY09S3tPYfVCVVZEQPQmTApOkWNFLC0q5b43aBbZAwBbD+iCiI0GY7N+oE/IywldEZns+z1TL8QGVSqNX9ZpP5DQ2oBn2DnqhqZYrYCtRmlHHch/wKmHzPhTQDHsH6igCfg/1t9dRHjRpb1PrzKC63gtQDWSlozzozu24pNgByYU27WTVWzejRyedVXDUO7nahmyXi+e3q17ksKC+LHXb0aqsRgnDkQDNmHemfkOH3aDbNinvbU+OnS6wBRF9gshsotGmlJtjfXdPdadXMawPcLFOde7CTojReQyLINkkjlVfluLA3QjoanZOhGJTSsmS7CtJRR0vTfpot2tpxqS9XQ14DlpBmE3YYnyclvQHj0za203qp7YmcVWbIcsLgcf/KhkCpfpOVfY7gerMxRd24tq5ox4+8AdftwaA/zPgb0V8C7UUveH2AAAAAElFTkSuQmCC") !important; 11 | } 12 | .tooltipster-lobbyradar .shariff .fa-envelope { 13 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3wQYDSYHGvNYPgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACaElEQVRYw+2X0UoUURzGv//Zo4JsFyvsbQU+wLYhwR69cUR6AEt6AIvwAULpWgRfQBEfIDIfwMr1Js9CCeF9EHkrOQRbMM7M+bpwZ1tpzVGnZcE5MDfnZn7M+Z3v+498sHvo1zVhxqFhIOjfRT2h+hjPAf2MByAHvAGAuuvVCWtLEBnr6XU9wVM1bA/TAUK+imCxd3TYx08cpz5iNWA36PAYgN8DuHf04amybV4I6H6Z2y4wlRbkFiN4IPb/X85xWbR9qMq26Y5M0Z2YyS6Ie5I8dHxLknRuNdlz33mLzq0y23XsYj5qvyPkPZJfSLJz//xbLPKckfnojkxRlW1TdGOexEJWvjGCpwbsFgC40MyJRh3AKAAIeD9dzAjGZATf2keu7QpjTF3LS/I1fXhqyB4kaSEK6wBKV83BkmjUXWjmAEAN2l0GqF7JS8dl0Y0niW+MzDaULGYR1CVRWGdYWwIANWwP6cMDuZYSzWeMKRlovAQAF5iKlFCHYDrbJlGyyMhsn/HS4dmFvgWoqkG72/JtRjTqEKQugctVnWBaRvC5I4o2GKHa1UtyjT68pB1avm3+y7esuni05eUMAKghe8Bj3On0ksSC6Mb8H99qr9L4luWwUBKFzbaXZdsUbR8wxhQD3FXariTBf+qbzGY6LFzOy9oofZlTZdtMXAMAd2ImpYA3lz3S7MctkVkpoZ7UlDsyRYa1JSlg57pw1/+CnaFewA5j097IJ+ocMAfMAfsUkJT35wIyxoue/CidT7fW2Uanidqa/c/MloGpQDDSU7gf+PTXn50bZ9cmSUby3MEcMAfMAW8A4G85E2704V7LBQAAAABJRU5ErkJggg==") !important; 14 | } 15 | -------------------------------------------------------------------------------- /Chrome/share-icons.css: -------------------------------------------------------------------------------- 1 | .tooltipster-lobbyradar .shariff .fa-envelope::before, 2 | .tooltipster-lobbyradar .shariff .fa-twitter::before, 3 | .tooltipster-lobbyradar .shariff .fa-facebook::before { 4 | content:'' !important; 5 | } 6 | .tooltipster-lobbyradar .shariff .fa-facebook { 7 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3wQYDSMnXOqMswAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABU0lEQVRYw+2XMU7DQBBF/99YUFEgeiLgClDsiga4BAdAcBUkLgBHiOAKEQ2xC2joiRAnMDQUIdmhQCIQ7MRLHLNC8xtLY6337czsH5k3aQ8xK6nzY9baNoWHpGxAuPn1nVCeCTx44CLLsqdGAa21KwY4A3gCAgDx8RyLnwHpAmgO0FrbNmAXwNZiSuwmzxom43kFVofjiBKyZ7Jrfg/n39wRiO3QdSF7mnmyR+I42lvsX936jOzlEOlAkH+LDtlvxmaSqX2XyxD7Zjm7j8oHx6YnnTrg5u7BcsCJskYHWKMUsJFL4gdur+BoO+UGidXCNQDMUnod5LUwvZljR0bO15SQnK10Ld4SC+4i70HJ4wYU9KMGFPDx32Wwks3ICAdFNkPitGQWn4vn5Y/4C24XAljkXX7ggFb5LA71Ox11CqiACqiACqiACqiAf6JKv52awSl6B2n9WoEGthpcAAAAAElFTkSuQmCC") !important; 8 | } 9 | .tooltipster-lobbyradar .shariff .fa-twitter { 10 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3wQYDSQV23xL9AAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACoElEQVRYw+2Yz0obURTGf+eaKEigTcCttOQBpKAL7y620gcQpA9gg/QBtKXrEu0DiIgPYEUfoIi4qePCtKUPEGjdhnZqEcFJvKeL2hRinMxM/mAld5mZzPw49/vO+e7IB++Q27wMt3wNAO88YAqL3GZAwRzKYIvvtgZ7vFzVZrjPM0EfAijyiRrHZtQ76ViD7tyOR31Qy//X7ZIIy0D22kXVbfVlwYx5ZwCuZhdEKKrPzN/fQgFd1WYkxzd1LJu0txkXTuvTa4gstrmtgupHROb/vFRLkj56HU2D95gCsmLYcDW7EKtyNTsXAQ4g34BTXdefUnI1OxcN0DDVKLNhQ2vTb1zVZiLpxrCSoOPlJcevZjlEd7GRV5LjswtsIbR6F3YCyCfoyLM4LTXL6WZAx3GrLZEh9rU+vXYF0upFuSSGUkexWX9tXayX9ntLBzZuoKywwyXvzYj3BcAFtiBD7MejY09S3tPYfVCVVZEQPQmTApOkWNFLC0q5b43aBbZAwBbD+iCiI0GY7N+oE/IywldEZns+z1TL8QGVSqNX9ZpP5DQ2oBn2DnqhqZYrYCtRmlHHch/wKmHzPhTQDHsH6igCfg/1t9dRHjRpb1PrzKC63gtQDWSlozzozu24pNgByYU27WTVWzejRyedVXDUO7nahmyXi+e3q17ksKC+LHXb0aqsRgnDkQDNmHemfkOH3aDbNinvbU+OnS6wBRF9gshsotGmlJtjfXdPdadXMawPcLFOde7CTojReQyLINkkjlVfluLA3QjoanZOhGJTSsmS7CtJRR0vTfpot2tpxqS9XQ14DlpBmE3YYnyclvQHj0za203qp7YmcVWbIcsLgcf/KhkCpfpOVfY7gerMxRd24tq5ox4+8AdftwaA/zPgb0V8C7UUveH2AAAAAElFTkSuQmCC") !important; 11 | } 12 | .tooltipster-lobbyradar .shariff .fa-envelope { 13 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3wQYDSYHGvNYPgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACaElEQVRYw+2X0UoUURzGv//Zo4JsFyvsbQU+wLYhwR69cUR6AEt6AIvwAULpWgRfQBEfIDIfwMr1Js9CCeF9EHkrOQRbMM7M+bpwZ1tpzVGnZcE5MDfnZn7M+Z3v+498sHvo1zVhxqFhIOjfRT2h+hjPAf2MByAHvAGAuuvVCWtLEBnr6XU9wVM1bA/TAUK+imCxd3TYx08cpz5iNWA36PAYgN8DuHf04amybV4I6H6Z2y4wlRbkFiN4IPb/X85xWbR9qMq26Y5M0Z2YyS6Ie5I8dHxLknRuNdlz33mLzq0y23XsYj5qvyPkPZJfSLJz//xbLPKckfnojkxRlW1TdGOexEJWvjGCpwbsFgC40MyJRh3AKAAIeD9dzAjGZATf2keu7QpjTF3LS/I1fXhqyB4kaSEK6wBKV83BkmjUXWjmAEAN2l0GqF7JS8dl0Y0niW+MzDaULGYR1CVRWGdYWwIANWwP6cMDuZYSzWeMKRlovAQAF5iKlFCHYDrbJlGyyMhsn/HS4dmFvgWoqkG72/JtRjTqEKQugctVnWBaRvC5I4o2GKHa1UtyjT68pB1avm3+y7esuni05eUMAKghe8Bj3On0ksSC6Mb8H99qr9L4luWwUBKFzbaXZdsUbR8wxhQD3FXariTBf+qbzGY6LFzOy9oofZlTZdtMXAMAd2ImpYA3lz3S7MctkVkpoZ7UlDsyRYa1JSlg57pw1/+CnaFewA5j097IJ+ocMAfMAfsUkJT35wIyxoue/CidT7fW2Uanidqa/c/MloGpQDDSU7gf+PTXn50bZ9cmSUby3MEcMAfMAW8A4G85E2704V7LBQAAAABJRU5ErkJggg==") !important; 14 | } 15 | -------------------------------------------------------------------------------- /Firefox/data/share-icons.css: -------------------------------------------------------------------------------- 1 | .tooltipster-lobbyradar .shariff .fa-envelope::before, 2 | .tooltipster-lobbyradar .shariff .fa-twitter::before, 3 | .tooltipster-lobbyradar .shariff .fa-facebook::before { 4 | content:'' !important; 5 | } 6 | .tooltipster-lobbyradar .shariff .fa-facebook { 7 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3wQYDSMnXOqMswAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABU0lEQVRYw+2XMU7DQBBF/99YUFEgeiLgClDsiga4BAdAcBUkLgBHiOAKEQ2xC2joiRAnMDQUIdmhQCIQ7MRLHLNC8xtLY6337czsH5k3aQ8xK6nzY9baNoWHpGxAuPn1nVCeCTx44CLLsqdGAa21KwY4A3gCAgDx8RyLnwHpAmgO0FrbNmAXwNZiSuwmzxom43kFVofjiBKyZ7Jrfg/n39wRiO3QdSF7mnmyR+I42lvsX936jOzlEOlAkH+LDtlvxmaSqX2XyxD7Zjm7j8oHx6YnnTrg5u7BcsCJskYHWKMUsJFL4gdur+BoO+UGidXCNQDMUnod5LUwvZljR0bO15SQnK10Ld4SC+4i70HJ4wYU9KMGFPDx32Wwks3ICAdFNkPitGQWn4vn5Y/4C24XAljkXX7ggFb5LA71Ox11CqiACqiACqiACqiAf6JKv52awSl6B2n9WoEGthpcAAAAAElFTkSuQmCC") !important; 8 | } 9 | .tooltipster-lobbyradar .shariff .fa-twitter { 10 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3wQYDSQV23xL9AAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACoElEQVRYw+2Yz0obURTGf+eaKEigTcCttOQBpKAL7y620gcQpA9gg/QBtKXrEu0DiIgPYEUfoIi4qePCtKUPEGjdhnZqEcFJvKeL2hRinMxM/mAld5mZzPw49/vO+e7IB++Q27wMt3wNAO88YAqL3GZAwRzKYIvvtgZ7vFzVZrjPM0EfAijyiRrHZtQ76ViD7tyOR31Qy//X7ZIIy0D22kXVbfVlwYx5ZwCuZhdEKKrPzN/fQgFd1WYkxzd1LJu0txkXTuvTa4gstrmtgupHROb/vFRLkj56HU2D95gCsmLYcDW7EKtyNTsXAQ4g34BTXdefUnI1OxcN0DDVKLNhQ2vTb1zVZiLpxrCSoOPlJcevZjlEd7GRV5LjswtsIbR6F3YCyCfoyLM4LTXL6WZAx3GrLZEh9rU+vXYF0upFuSSGUkexWX9tXayX9ntLBzZuoKywwyXvzYj3BcAFtiBD7MejY09S3tPYfVCVVZEQPQmTApOkWNFLC0q5b43aBbZAwBbD+iCiI0GY7N+oE/IywldEZns+z1TL8QGVSqNX9ZpP5DQ2oBn2DnqhqZYrYCtRmlHHch/wKmHzPhTQDHsH6igCfg/1t9dRHjRpb1PrzKC63gtQDWSlozzozu24pNgByYU27WTVWzejRyedVXDUO7nahmyXi+e3q17ksKC+LHXb0aqsRgnDkQDNmHemfkOH3aDbNinvbU+OnS6wBRF9gshsotGmlJtjfXdPdadXMawPcLFOde7CTojReQyLINkkjlVfluLA3QjoanZOhGJTSsmS7CtJRR0vTfpot2tpxqS9XQ14DlpBmE3YYnyclvQHj0za203qp7YmcVWbIcsLgcf/KhkCpfpOVfY7gerMxRd24tq5ox4+8AdftwaA/zPgb0V8C7UUveH2AAAAAElFTkSuQmCC") !important; 11 | } 12 | .tooltipster-lobbyradar .shariff .fa-envelope { 13 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3wQYDSYHGvNYPgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACaElEQVRYw+2X0UoUURzGv//Zo4JsFyvsbQU+wLYhwR69cUR6AEt6AIvwAULpWgRfQBEfIDIfwMr1Js9CCeF9EHkrOQRbMM7M+bpwZ1tpzVGnZcE5MDfnZn7M+Z3v+498sHvo1zVhxqFhIOjfRT2h+hjPAf2MByAHvAGAuuvVCWtLEBnr6XU9wVM1bA/TAUK+imCxd3TYx08cpz5iNWA36PAYgN8DuHf04amybV4I6H6Z2y4wlRbkFiN4IPb/X85xWbR9qMq26Y5M0Z2YyS6Ie5I8dHxLknRuNdlz33mLzq0y23XsYj5qvyPkPZJfSLJz//xbLPKckfnojkxRlW1TdGOexEJWvjGCpwbsFgC40MyJRh3AKAAIeD9dzAjGZATf2keu7QpjTF3LS/I1fXhqyB4kaSEK6wBKV83BkmjUXWjmAEAN2l0GqF7JS8dl0Y0niW+MzDaULGYR1CVRWGdYWwIANWwP6cMDuZYSzWeMKRlovAQAF5iKlFCHYDrbJlGyyMhsn/HS4dmFvgWoqkG72/JtRjTqEKQugctVnWBaRvC5I4o2GKHa1UtyjT68pB1avm3+y7esuni05eUMAKghe8Bj3On0ksSC6Mb8H99qr9L4luWwUBKFzbaXZdsUbR8wxhQD3FXariTBf+qbzGY6LFzOy9oofZlTZdtMXAMAd2ImpYA3lz3S7MctkVkpoZ7UlDsyRYa1JSlg57pw1/+CnaFewA5j097IJ+ocMAfMAfsUkJT35wIyxoue/CidT7fW2Uanidqa/c/MloGpQDDSU7gf+PTXn50bZ9cmSUby3MEcMAfMAW8A4G85E2704V7LBQAAAABJRU5ErkJggg==") !important; 14 | } 15 | -------------------------------------------------------------------------------- /Safari.safariextension/share-icons.css: -------------------------------------------------------------------------------- 1 | .tooltipster-lobbyradar .shariff .fa-envelope::before, 2 | .tooltipster-lobbyradar .shariff .fa-twitter::before, 3 | .tooltipster-lobbyradar .shariff .fa-facebook::before { 4 | content:'' !important; 5 | } 6 | .tooltipster-lobbyradar .shariff .fa-facebook { 7 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3wQYDSMnXOqMswAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABU0lEQVRYw+2XMU7DQBBF/99YUFEgeiLgClDsiga4BAdAcBUkLgBHiOAKEQ2xC2joiRAnMDQUIdmhQCIQ7MRLHLNC8xtLY6337czsH5k3aQ8xK6nzY9baNoWHpGxAuPn1nVCeCTx44CLLsqdGAa21KwY4A3gCAgDx8RyLnwHpAmgO0FrbNmAXwNZiSuwmzxom43kFVofjiBKyZ7Jrfg/n39wRiO3QdSF7mnmyR+I42lvsX936jOzlEOlAkH+LDtlvxmaSqX2XyxD7Zjm7j8oHx6YnnTrg5u7BcsCJskYHWKMUsJFL4gdur+BoO+UGidXCNQDMUnod5LUwvZljR0bO15SQnK10Ld4SC+4i70HJ4wYU9KMGFPDx32Wwks3ICAdFNkPitGQWn4vn5Y/4C24XAljkXX7ggFb5LA71Ox11CqiACqiACqiACqiAf6JKv52awSl6B2n9WoEGthpcAAAAAElFTkSuQmCC") !important; 8 | } 9 | .tooltipster-lobbyradar .shariff .fa-twitter { 10 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3wQYDSQV23xL9AAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACoElEQVRYw+2Yz0obURTGf+eaKEigTcCttOQBpKAL7y620gcQpA9gg/QBtKXrEu0DiIgPYEUfoIi4qePCtKUPEGjdhnZqEcFJvKeL2hRinMxM/mAld5mZzPw49/vO+e7IB++Q27wMt3wNAO88YAqL3GZAwRzKYIvvtgZ7vFzVZrjPM0EfAijyiRrHZtQ76ViD7tyOR31Qy//X7ZIIy0D22kXVbfVlwYx5ZwCuZhdEKKrPzN/fQgFd1WYkxzd1LJu0txkXTuvTa4gstrmtgupHROb/vFRLkj56HU2D95gCsmLYcDW7EKtyNTsXAQ4g34BTXdefUnI1OxcN0DDVKLNhQ2vTb1zVZiLpxrCSoOPlJcevZjlEd7GRV5LjswtsIbR6F3YCyCfoyLM4LTXL6WZAx3GrLZEh9rU+vXYF0upFuSSGUkexWX9tXayX9ntLBzZuoKywwyXvzYj3BcAFtiBD7MejY09S3tPYfVCVVZEQPQmTApOkWNFLC0q5b43aBbZAwBbD+iCiI0GY7N+oE/IywldEZns+z1TL8QGVSqNX9ZpP5DQ2oBn2DnqhqZYrYCtRmlHHch/wKmHzPhTQDHsH6igCfg/1t9dRHjRpb1PrzKC63gtQDWSlozzozu24pNgByYU27WTVWzejRyedVXDUO7nahmyXi+e3q17ksKC+LHXb0aqsRgnDkQDNmHemfkOH3aDbNinvbU+OnS6wBRF9gshsotGmlJtjfXdPdadXMawPcLFOde7CTojReQyLINkkjlVfluLA3QjoanZOhGJTSsmS7CtJRR0vTfpot2tpxqS9XQ14DlpBmE3YYnyclvQHj0za203qp7YmcVWbIcsLgcf/KhkCpfpOVfY7gerMxRd24tq5ox4+8AdftwaA/zPgb0V8C7UUveH2AAAAAElFTkSuQmCC") !important; 11 | } 12 | .tooltipster-lobbyradar .shariff .fa-envelope { 13 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3wQYDSYHGvNYPgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACaElEQVRYw+2X0UoUURzGv//Zo4JsFyvsbQU+wLYhwR69cUR6AEt6AIvwAULpWgRfQBEfIDIfwMr1Js9CCeF9EHkrOQRbMM7M+bpwZ1tpzVGnZcE5MDfnZn7M+Z3v+498sHvo1zVhxqFhIOjfRT2h+hjPAf2MByAHvAGAuuvVCWtLEBnr6XU9wVM1bA/TAUK+imCxd3TYx08cpz5iNWA36PAYgN8DuHf04amybV4I6H6Z2y4wlRbkFiN4IPb/X85xWbR9qMq26Y5M0Z2YyS6Ie5I8dHxLknRuNdlz33mLzq0y23XsYj5qvyPkPZJfSLJz//xbLPKckfnojkxRlW1TdGOexEJWvjGCpwbsFgC40MyJRh3AKAAIeD9dzAjGZATf2keu7QpjTF3LS/I1fXhqyB4kaSEK6wBKV83BkmjUXWjmAEAN2l0GqF7JS8dl0Y0niW+MzDaULGYR1CVRWGdYWwIANWwP6cMDuZYSzWeMKRlovAQAF5iKlFCHYDrbJlGyyMhsn/HS4dmFvgWoqkG72/JtRjTqEKQugctVnWBaRvC5I4o2GKHa1UtyjT68pB1avm3+y7esuni05eUMAKghe8Bj3On0ksSC6Mb8H99qr9L4luWwUBKFzbaXZdsUbR8wxhQD3FXariTBf+qbzGY6LFzOy9oofZlTZdtMXAMAd2ImpYA3lz3S7MctkVkpoZ7UlDsyRYa1JSlg57pw1/+CnaFewA5j097IJ+ocMAfMAfsUkJT35wIyxoue/CidT7fW2Uanidqa/c/MloGpQDDSU7gf+PTXn50bZ9cmSUby3MEcMAfMAW8A4G85E2704V7LBQAAAABJRU5ErkJggg==") !important; 14 | } 15 | -------------------------------------------------------------------------------- /lib/bg_common.js: -------------------------------------------------------------------------------- 1 | 2 | // True in Safari, false in Chrome. 3 | SAFARI = (function() { 4 | if (typeof safari === "undefined" && typeof chrome === "undefined") { 5 | // Safari bug: window.safari undefined in iframes with JS src in them. 6 | // Must get it from an ancestor. 7 | var w = window; 8 | while (w.safari === undefined && w !== window.top) { 9 | w = w.parent; 10 | } 11 | window.safari = w.safari; 12 | } 13 | return (typeof safari !== "undefined"); 14 | })(); 15 | 16 | var parseURL = function(url) { 17 | var parser = document.createElement('a'), 18 | searchObject = {}, 19 | queries, split, i; 20 | // Let the browser do the work 21 | parser.href = url; 22 | 23 | return { 24 | protocol: parser.protocol, 25 | host: parser.host, 26 | hostname: parser.hostname, 27 | port: parser.port, 28 | pathname: parser.pathname, 29 | search: parser.search, 30 | hash: parser.hash 31 | }; 32 | } 33 | 34 | var getCurrentTabInfo = function(callback, secondTime) { 35 | if (!SAFARI) { 36 | console.log('getCurrentTabInfo'); 37 | chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 38 | if (tabs.length === 0) { 39 | console.log('no tabs open?'); 40 | return; // For example: only the background devtools or a popup are opened 41 | } 42 | 43 | var tab = tabs[0]; 44 | 45 | if (tab && !tab.url) { 46 | // Issue 6877: tab URL is not set directly after you opened a window 47 | // using window.open() 48 | if (!secondTime) 49 | window.setTimeout(function() { 50 | getCurrentTabInfo(callback, true); 51 | }, 250); 52 | return; 53 | } 54 | 55 | 56 | var result = { 57 | tab: tab, 58 | value: tabData.get(tab.id) 59 | }; 60 | if(!result.value) { 61 | result.value={state:'search'} 62 | } 63 | 64 | callback(result); 65 | }); 66 | } else { 67 | var browserWindow = safari.application.activeBrowserWindow; 68 | var tab = browserWindow.activeTab; 69 | tab.id=_.indexOf(safari.application.activeBrowserWindow.tabs,tab); 70 | 71 | var result = { 72 | tab: tab, 73 | value: tabData.get(tab.id) 74 | }; 75 | 76 | callback(result); 77 | } 78 | } 79 | 80 | function get_extension_setting(key,callback){ 81 | if(!callback) callback = function(){}; 82 | if( SAFARI ) { 83 | return callback(safari.extension.settings[key]); 84 | } else { 85 | chrome.storage.local.get(key, function(result){ 86 | callback(result[key]); 87 | }); 88 | } 89 | } 90 | function set_extension_setting(key,value,callback){ 91 | if(!callback) callback = function(){}; 92 | if( SAFARI ) { 93 | safari.extension.settings[key] = value; 94 | return callback(value); 95 | } else { 96 | var json = {}; 97 | json[key]=value; 98 | chrome.storage.local.set(json, callback); 99 | } 100 | } 101 | 102 | function get_localstorage(key,callback) { 103 | if(!callback) callback = function(){}; 104 | if( SAFARI ) { 105 | return callback(localStorage.getItem(key)); 106 | } else { 107 | chrome.storage.local.get(key, function(result){ 108 | callback(result[key]); 109 | }); 110 | } 111 | } 112 | function set_localstorage(key,value,callback){ 113 | if(!callback) callback = function(){}; 114 | if( SAFARI ) { 115 | localStorage.setItem(key,value); 116 | return callback(value); 117 | } else { 118 | var json = {}; 119 | json[key]=value; 120 | chrome.storage.local.set(json, callback); 121 | } 122 | } 123 | 124 | function replaceUmlauts(string) 125 | { 126 | return string.replace(/\u00e4|\u00c4/g, 'a') 127 | .replace(/\u00f6|\u00d6/g, 'o') 128 | .replace(/\u00fc|\u00dc/g, 'u'); 129 | } 130 | -------------------------------------------------------------------------------- /Chrome/bg_common.js: -------------------------------------------------------------------------------- 1 | 2 | // True in Safari, false in Chrome. 3 | SAFARI = (function() { 4 | if (typeof safari === "undefined" && typeof chrome === "undefined") { 5 | // Safari bug: window.safari undefined in iframes with JS src in them. 6 | // Must get it from an ancestor. 7 | var w = window; 8 | while (w.safari === undefined && w !== window.top) { 9 | w = w.parent; 10 | } 11 | window.safari = w.safari; 12 | } 13 | return (typeof safari !== "undefined"); 14 | })(); 15 | 16 | var parseURL = function(url) { 17 | var parser = document.createElement('a'), 18 | searchObject = {}, 19 | queries, split, i; 20 | // Let the browser do the work 21 | parser.href = url; 22 | 23 | return { 24 | protocol: parser.protocol, 25 | host: parser.host, 26 | hostname: parser.hostname, 27 | port: parser.port, 28 | pathname: parser.pathname, 29 | search: parser.search, 30 | hash: parser.hash 31 | }; 32 | } 33 | 34 | var getCurrentTabInfo = function(callback, secondTime) { 35 | if (!SAFARI) { 36 | console.log('getCurrentTabInfo'); 37 | chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 38 | if (tabs.length === 0) { 39 | console.log('no tabs open?'); 40 | return; // For example: only the background devtools or a popup are opened 41 | } 42 | 43 | var tab = tabs[0]; 44 | 45 | if (tab && !tab.url) { 46 | // Issue 6877: tab URL is not set directly after you opened a window 47 | // using window.open() 48 | if (!secondTime) 49 | window.setTimeout(function() { 50 | getCurrentTabInfo(callback, true); 51 | }, 250); 52 | return; 53 | } 54 | 55 | 56 | var result = { 57 | tab: tab, 58 | value: tabData.get(tab.id) 59 | }; 60 | if(!result.value) { 61 | result.value={state:'search'} 62 | } 63 | 64 | callback(result); 65 | }); 66 | } else { 67 | var browserWindow = safari.application.activeBrowserWindow; 68 | var tab = browserWindow.activeTab; 69 | tab.id=_.indexOf(safari.application.activeBrowserWindow.tabs,tab); 70 | 71 | var result = { 72 | tab: tab, 73 | value: tabData.get(tab.id) 74 | }; 75 | 76 | callback(result); 77 | } 78 | } 79 | 80 | function get_extension_setting(key,callback){ 81 | if(!callback) callback = function(){}; 82 | if( SAFARI ) { 83 | return callback(safari.extension.settings[key]); 84 | } else { 85 | chrome.storage.local.get(key, function(result){ 86 | callback(result[key]); 87 | }); 88 | } 89 | } 90 | function set_extension_setting(key,value,callback){ 91 | if(!callback) callback = function(){}; 92 | if( SAFARI ) { 93 | safari.extension.settings[key] = value; 94 | return callback(value); 95 | } else { 96 | var json = {}; 97 | json[key]=value; 98 | chrome.storage.local.set(json, callback); 99 | } 100 | } 101 | 102 | function get_localstorage(key,callback) { 103 | if(!callback) callback = function(){}; 104 | if( SAFARI ) { 105 | return callback(localStorage.getItem(key)); 106 | } else { 107 | chrome.storage.local.get(key, function(result){ 108 | callback(result[key]); 109 | }); 110 | } 111 | } 112 | function set_localstorage(key,value,callback){ 113 | if(!callback) callback = function(){}; 114 | if( SAFARI ) { 115 | localStorage.setItem(key,value); 116 | return callback(value); 117 | } else { 118 | var json = {}; 119 | json[key]=value; 120 | chrome.storage.local.set(json, callback); 121 | } 122 | } 123 | 124 | function replaceUmlauts(string) 125 | { 126 | return string.replace(/\u00e4|\u00c4/g, 'a') 127 | .replace(/\u00f6|\u00d6/g, 'o') 128 | .replace(/\u00fc|\u00dc/g, 'u'); 129 | } 130 | -------------------------------------------------------------------------------- /Safari.safariextension/bg_common.js: -------------------------------------------------------------------------------- 1 | 2 | // True in Safari, false in Chrome. 3 | SAFARI = (function() { 4 | if (typeof safari === "undefined" && typeof chrome === "undefined") { 5 | // Safari bug: window.safari undefined in iframes with JS src in them. 6 | // Must get it from an ancestor. 7 | var w = window; 8 | while (w.safari === undefined && w !== window.top) { 9 | w = w.parent; 10 | } 11 | window.safari = w.safari; 12 | } 13 | return (typeof safari !== "undefined"); 14 | })(); 15 | 16 | var parseURL = function(url) { 17 | var parser = document.createElement('a'), 18 | searchObject = {}, 19 | queries, split, i; 20 | // Let the browser do the work 21 | parser.href = url; 22 | 23 | return { 24 | protocol: parser.protocol, 25 | host: parser.host, 26 | hostname: parser.hostname, 27 | port: parser.port, 28 | pathname: parser.pathname, 29 | search: parser.search, 30 | hash: parser.hash 31 | }; 32 | } 33 | 34 | var getCurrentTabInfo = function(callback, secondTime) { 35 | if (!SAFARI) { 36 | console.log('getCurrentTabInfo'); 37 | chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 38 | if (tabs.length === 0) { 39 | console.log('no tabs open?'); 40 | return; // For example: only the background devtools or a popup are opened 41 | } 42 | 43 | var tab = tabs[0]; 44 | 45 | if (tab && !tab.url) { 46 | // Issue 6877: tab URL is not set directly after you opened a window 47 | // using window.open() 48 | if (!secondTime) 49 | window.setTimeout(function() { 50 | getCurrentTabInfo(callback, true); 51 | }, 250); 52 | return; 53 | } 54 | 55 | 56 | var result = { 57 | tab: tab, 58 | value: tabData.get(tab.id) 59 | }; 60 | if(!result.value) { 61 | result.value={state:'search'} 62 | } 63 | 64 | callback(result); 65 | }); 66 | } else { 67 | var browserWindow = safari.application.activeBrowserWindow; 68 | var tab = browserWindow.activeTab; 69 | tab.id=_.indexOf(safari.application.activeBrowserWindow.tabs,tab); 70 | 71 | var result = { 72 | tab: tab, 73 | value: tabData.get(tab.id) 74 | }; 75 | 76 | callback(result); 77 | } 78 | } 79 | 80 | function get_extension_setting(key,callback){ 81 | if(!callback) callback = function(){}; 82 | if( SAFARI ) { 83 | return callback(safari.extension.settings[key]); 84 | } else { 85 | chrome.storage.local.get(key, function(result){ 86 | callback(result[key]); 87 | }); 88 | } 89 | } 90 | function set_extension_setting(key,value,callback){ 91 | if(!callback) callback = function(){}; 92 | if( SAFARI ) { 93 | safari.extension.settings[key] = value; 94 | return callback(value); 95 | } else { 96 | var json = {}; 97 | json[key]=value; 98 | chrome.storage.local.set(json, callback); 99 | } 100 | } 101 | 102 | function get_localstorage(key,callback) { 103 | if(!callback) callback = function(){}; 104 | if( SAFARI ) { 105 | return callback(localStorage.getItem(key)); 106 | } else { 107 | chrome.storage.local.get(key, function(result){ 108 | callback(result[key]); 109 | }); 110 | } 111 | } 112 | function set_localstorage(key,value,callback){ 113 | if(!callback) callback = function(){}; 114 | if( SAFARI ) { 115 | localStorage.setItem(key,value); 116 | return callback(value); 117 | } else { 118 | var json = {}; 119 | json[key]=value; 120 | chrome.storage.local.set(json, callback); 121 | } 122 | } 123 | 124 | function replaceUmlauts(string) 125 | { 126 | return string.replace(/\u00e4|\u00c4/g, 'a') 127 | .replace(/\u00f6|\u00d6/g, 'o') 128 | .replace(/\u00fc|\u00dc/g, 'u'); 129 | } 130 | -------------------------------------------------------------------------------- /Firefox/lib/bg_browserbutton.js: -------------------------------------------------------------------------------- 1 | var { on, once, off, emit } = require('sdk/event/core'); 2 | var panels = require("sdk/panel"); 3 | var self = require("sdk/self"); 4 | var { ToggleButton } = require("sdk/ui/button/toggle"); 5 | var settings = require("./settings.js"); 6 | var tabs = require('sdk/tabs'); 7 | var { setTimeout } = require("sdk/timers"); 8 | var lobbyradar_tools = require('bg_common').lobbyradar_tools; 9 | 10 | var ToolbarButton = false; 11 | var tabData = false; 12 | var activeTab = false; 13 | var panelsizes = { small:{w:361,h:250}, 14 | big:{w:361,h:640} 15 | }; 16 | exports.buttonfunctions = { 17 | initialize: function(global_tabData){ 18 | ToolbarButton = ToggleButton({ 19 | id: "lobbyradarBtn", 20 | label: "Lobbyradar", 21 | icon: { 22 | "16": './'+settings.icons[16], 23 | "32": './'+settings.icons[32] 24 | }, 25 | onChange: function(state) { if (state.checked) { 26 | var activeSize = panelsizes.small; 27 | if(state.badge && state.badge != '0' && state.badge != '+++' && state.badge != '...') activeSize = panelsizes.big; 28 | panel.show({ position: ToolbarButton , 29 | height: activeSize.h, 30 | width : activeSize.w 31 | }); 32 | } 33 | }, 34 | badgeColor:'#143B52' 35 | }); 36 | tabData = global_tabData; 37 | }, 38 | updateBrowserButton: function( tab ) { 39 | var storedTabdata = tabData.get(tab.id); 40 | storedTabdata.stage='done'; 41 | tabData.set(tab.id,storedTabdata); 42 | if(storedTabdata && storedTabdata.hits) { 43 | ToolbarButton.state(tab,{ badge:storedTabdata.hits.length.toString() } ); 44 | panel.resize( panelsizes.big.w,panelsizes.big.h); 45 | } else { 46 | if( storedTabdata && !storedTabdata.disabled ) { 47 | ToolbarButton.state(tab,{ badge:'0' } ); 48 | } else { 49 | ToolbarButton.state(tab,{ badge:'' } ); 50 | } 51 | } 52 | }, 53 | setBrowserButton_searching: function( tab ) { 54 | var storedTabdata = tabData.get(tab.id); 55 | storedTabdata.stage='search'; 56 | tabData.set(tab.id,storedTabdata); 57 | ToolbarButton.state(tab,{ badge:'...' } ); 58 | panel.resize( panelsizes.small.w,panelsizes.small.h); 59 | }, 60 | setBrowserButton_waiting: function( tab ) { 61 | var storedTabdata = tabData.get(tab.id); 62 | storedTabdata.stage='mark'; 63 | tabData.set(tab.id,storedTabdata); 64 | ToolbarButton.state(tab,{ badge:'+++' } ); 65 | panel.resize( panelsizes.small.w,panelsizes.small.h); 66 | } 67 | } 68 | 69 | var panel = panels.Panel({ 70 | contentURL: self.data.url("popup/popup.html"), 71 | contentScriptFile: [self.data.url("jquery.js"),self.data.url("popup/popup_firefox.js")], 72 | onHide: function(){ToolbarButton.state('window', {checked: false});} 73 | }); 74 | 75 | // das tabData-Objekt wird hier nur als Anker für die Events verwendet 76 | panel.port.on('addWhitelist',function(url){ 77 | emit(tabData,'addWhitelist',lobbyradar_tools.parseURL(url).hostname); 78 | }); 79 | panel.port.on('removeWhitelist',function(url){ 80 | emit(tabData,'removeWhitelist',lobbyradar_tools.parseURL(url).hostname); 81 | }); 82 | panel.port.on('openPrefs',function(){ 83 | emit(tabData,'openPrefs'); 84 | }); 85 | panel.port.on('openTab',function(data){ 86 | emit(tabData,'openTab',data); 87 | }); 88 | 89 | function makeTabObject() { 90 | return { 91 | tab: { url: tabs.activeTab.url }, 92 | value: tabData.get(tabs.activeTab.id) 93 | } 94 | } 95 | 96 | function sendTabdata() { 97 | var tabdata = makeTabObject(); 98 | panel.port.emit('currentTabInfo',tabdata ); 99 | if( !tabdata.value || !tabdata.value.stage || tabdata.value.stage == 'search' || tabdata.value.stage == 'mark' ) { 100 | setTimeout(sendTabdata,100); 101 | } 102 | } 103 | 104 | panel.on("show",sendTabdata); 105 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ### Lobbyradar ### 3 | 4 | Lobbyradar is a Browserextension which uses Data available on lobbyradar.opendatacloud.de 5 | Lobbyradar is meant to run on Chrome, Safari and Firefox. 6 | It is built using the BabelExt Project. BabelExt simplifies cross-browser development of 7 | Extensions. It abstracts Message passing between background- and foreground scripts. 8 | Background scripts are run in the Context of the Extension. They have access to the extension 9 | data, here: settings and lobbydata. 10 | Foreground scripts are injected into the current page and can modify the DOM and interact with 11 | the UI. BabelExt comes with an unusual Build-Script based on PhantomJS. 12 | 13 | I had to modify BabelExt for lobbyradar, so browser abstraction is somewhat lost. 14 | 15 | ### Directories ### 16 | 17 | lib/: Background and Foreground scripts, settings files (settings.json, local_settings.json) 18 | test/: Test-Page with many names and an iframe. Serve this directory with a web server to test your extension. 19 | build/: Installable Extensions generated by the build script. 20 | 21 | Chrome/: the Chrome-Extension. This Directory is modified by the build script. 22 | Safari.safariextension/: the Safari extension. Modified by build script and Safaris extensions builder (Info.plist) 23 | Firefox/: the Firefox extension. Modified by Build script and Firefox-SDK. 24 | 25 | Do not delete the Extension directories! The build script generates only part of the files. 26 | 27 | ### Files ### 28 | fg_page.js: Injected into the Page. The same for all Browsers 29 | bg_*.js: Background Scripts. One Version for Chrome/Safari, different for Firefox. 30 | 31 | Background-scripts for Chrome/Safari are modified in lib/. 32 | Background-scripts for Firefox are modified in Firefox/. 33 | 34 | I strongly recommend to understand the build script. 35 | 36 | ### Build process ### 37 | 38 | Download PhantomJS (http://phantomjs.org), which is used to build and deploy browser-extensions. 39 | You need to have the Chrome Browser installed to build the Chrome extension. 40 | 41 | In UNIX-based OSes, run `./bin/build.sh` 42 | 43 | The build system hasn't been tested under Windows yet - your best bet is probably to look at 44 | the scripts and write a Windows equivalent. If it's any good, please send in a patch! 45 | 46 | **IMPORTANT SAFARI NOTE:** 47 | If the extension directory does not end in ".safariextension", it will not be 48 | recognized by Safari. Symlinks inside the extension directory are not allowed. 49 | 50 | 51 | ## Instructions for loading/testing an extension in each browser ## 52 | 53 | - You need to build the package before you start - the initial build 54 | process configures some files that aren't stored in git 55 | 56 | ### Chrome / Opera ### 57 | 58 | - Go to about://extensions 59 | 60 | - Check "Developer Mode" 61 | 62 | - Click "load unpacked extension" and choose the Chrome directory 63 | 64 | - You're good to go! If you just want to try out the BabelExt kitchen sink demo, navigate to [http://babelext.com/demo/](http://babelext.com/demo/) 65 | 66 | - Further Chrome development information can be found at [http://code.google.com/chrome/extensions/index.html](http://code.google.com/chrome/extensions/index.html) 67 | 68 | ### Firefox ### 69 | 70 | - Install firefox developer edition 71 | - Install Auto-Installer Extension [https://addons.mozilla.org/addon/autoinstaller/](https://addons.mozilla.org/addon/autoinstaller/) 72 | 73 | - Further Firefox development information can be found at [https://addons.mozilla.org/en-US/developers/docs/sdk/latest/](https://addons.mozilla.org/en-US/developers/docs/sdk/latest/) 74 | 75 | ### Safari ### 76 | 77 | - Click the gear icon, and choose Settings -> Preferences -> Advanced 78 | 79 | - Check the box that reads "Show Develop menu in menu bar" 80 | 81 | - Click the menu button (left of the gear icon), and choose Develop -> Show Extension Builder 82 | 83 | - Click the + button at the bottom left, and choose "Add Extension" 84 | 85 | - Choose the Safari.safariextension folder from lobbyradar 86 | 87 | - Further Safari development information can be found at [https://developer.apple.com/library/safari/#documentation/Tools/Conceptual/SafariExtensionGuide/Introduction/Introduction.html](https://developer.apple.com/library/safari/#documentation/Tools/Conceptual/SafariExtensionGuide/Introduction/Introduction.html) 88 | 89 | ## Releasing packages ## 90 | 91 | You need to release your extension by hand in each Extension store. 92 | 93 | ### LICENSE ### 94 | 95 | MIT (X11) license. See LICENSE.txt 96 | -------------------------------------------------------------------------------- /lib/settings.json: -------------------------------------------------------------------------------- 1 | /* 2 | * BROWSER-NEUTRAL CONFIGURATION FILE 3 | * (copied to browser-specific files during build) 4 | */ 5 | { 6 | // In Linux, you can make a GUID by running `uuidgen` on the command line: 7 | "id": "DF6BD873-26A4-4A36-96DB-208B10ACC4D0", 8 | "bundleid": "de.miz-babelsberg.lobbyradar", // used by safari only 9 | 10 | // General config parameters 11 | "name": "lobbyradar", 12 | "title": "Lobbyradar", 13 | "description": "Discover Lobby Networks", 14 | "license": "MIT", 15 | "author": "Medieninnovationszentrum Babelsberg MIZ", 16 | "version": "1.3.4", 17 | "website": "http://www.lobbyradar.zdf.de", 18 | "icons": { 19 | "16": "lobbyradar-16.png", 20 | "32": "lobbyradar-32.png", 21 | "38": "lobbyradar-38.png", 22 | "48": "lobbyradar-48.png", 23 | "64": "lobbyradar-64.png", 24 | "128": "lobbyradar-128.png" 25 | }, 26 | 27 | "long_description": 28 | "Lobbyradar markiert die Namen und Organisationen, die in unserer Datenbank hinterlegt sind, in den Texten, die Sie lesen. Fährt man dann mit der Maus über die Markierung, lädt Lobbyradar die wichtigsten Infos aus unserer Datenbank und zeigt sie an. So werden Nachrichten und Geschichten in einen neuen Kontext gesetzt und Sie erhalten nützliche Zusatzinformationen.", 29 | 30 | // userscript config parameters: 31 | 32 | /* 33 | * contentScriptWhen can be 'early', 'middle' or 'late'. 34 | * different browsers interpret this in different ways, but in general: 35 | * * 'early' runs at the earliest point supported by the browser (possibly before the DOM exists) 36 | * * 'middle' guarantees the DOM exists, but might run while the page is still loading 37 | * * 'late' guarantees the scripts are run aft the page finishes loading 38 | */ 39 | "contentScriptWhen": "middle", 40 | 41 | "contentScriptFiles": [ "jquery.js","jquery_highlight.js","jquery.tooltipster.js","fg_page.js","moment.js","underscore.js", "shariff.min.js" ], 42 | // contentscriptfiles nur für Firefox 43 | "contentScriptFiles_ff": [ "worker_search.js" ], 44 | "contentCSSFiles": [ "style.css","tooltipster.css","shariff.min.css","share-icons.css" ], 45 | "contentCSSFiles_chrome":[ ], 46 | "contentCSSFiles_ff": [ ], 47 | "contentCSSFiles_safari":[ ], 48 | "backgroundScriptFiles": [ "underscore.js","bg_common.js", "bg_search.js","bg_browserbutton.js","jquery.js",], 49 | "extra_files": [ "css","lobbyradar.png" ], 50 | 51 | "match_domain": "*", // catchall 52 | // whether to match https://: 53 | "match_secure_domain": true, 54 | 55 | // plugin should not run on these urls 56 | "exclude_matches": [ "*://lobbyradar.opendatacloud.de/*","*://www.lobbyradar.de/*" ], 57 | 58 | // Popup if supported by target platform 59 | // 60 | // reference for this feature is the functionality on the Chrome Platform 61 | "popup": { 62 | "page": "popup/popup.html", 63 | "extra_files": [ "popup" ], 64 | "icon": "lobbyradar-16-mono.png", // safari only. Chrome uses best match from icons{} array 65 | "width": 361, 66 | "height": 640 67 | }, 68 | 69 | "preferences": [ 70 | /* 71 | * Preferences that users can set in the browser's preferences page. 72 | * The layout is based on Mozilla's "simple preferences" interface: 73 | * https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/simple-prefs 74 | * currently supported types: bool, boolint, integer, string, menulist, radio 75 | */ 76 | { 77 | "name": "whitelist", 78 | "type": "text", 79 | "title": "Whitelist", 80 | "description": "Persönliche Liste von Domains auf denen Lobbyradar aktiv ist. Ein Eintrag pro Zeile.", 81 | "value": "", 82 | }, 83 | { 84 | "name": "updateinterval", 85 | "type": "menulist", 86 | "title": "Update Interval", 87 | "value": 3600, 88 | "description": "Aktualisierungsinterval für Lobbydaten", 89 | "options": [ 90 | { 91 | "value": "600", 92 | "label": "alle 10 Minuten" 93 | }, 94 | { 95 | "value": "3600", 96 | "label": "stündlich" 97 | }, 98 | { 99 | "value": "86400", 100 | "label": "täglich" 101 | }, 102 | { 103 | "value": "604800", 104 | "label": "wöchentlich" 105 | } 106 | ] 107 | } 108 | ], 109 | 110 | "firefox_max_version": '38.*' 111 | 112 | } 113 | -------------------------------------------------------------------------------- /lib/jquery_highlight.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Highlight plugin 3 | * 4 | * Based on highlight v3 by Johann Burkard 5 | * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html 6 | * 7 | * Code a little bit refactored and cleaned (in my humble opinion). 8 | * Most important changes: 9 | * - has an option to highlight only entire words (wordsOnly - false by default), 10 | * - has an option to be case sensitive (caseSensitive - false by default) 11 | * - highlight element tag and class names can be specified in options 12 | * 13 | * Usage: 14 | * // wrap every occurrance of text 'lorem' in content 15 | * // with (default options) 16 | * $('#content').highlight('lorem'); 17 | * 18 | * // search for and highlight more terms at once 19 | * // so you can save some time on traversing DOM 20 | * $('#content').highlight(['lorem', 'ipsum']); 21 | * $('#content').highlight('lorem ipsum'); 22 | * 23 | * // search only for entire word 'lorem' 24 | * $('#content').highlight('lorem', { wordsOnly: true }); 25 | * 26 | * // don't ignore case during search of term 'lorem' 27 | * $('#content').highlight('lorem', { caseSensitive: true }); 28 | * 29 | * // wrap every occurrance of term 'ipsum' in content 30 | * // with 31 | * $('#content').highlight('ipsum', { element: 'em', className: 'important' }); 32 | * 33 | * // remove default highlight 34 | * $('#content').unhighlight(); 35 | * 36 | * // remove custom highlight 37 | * $('#content').unhighlight({ element: 'em', className: 'important' }); 38 | * 39 | * 40 | * Copyright (c) 2009 Bartek Szopka 41 | * 42 | * Licensed under MIT license. 43 | * 44 | */ 45 | 46 | jQuery.extend({ 47 | highlight: function (node, re, nodeName, className, wordsOnly, word, re_word,ret) { 48 | if (node.nodeType === 3) { 49 | ret.match = 0; 50 | var match = node.data.match(re); 51 | if (match) { 52 | if( ret.maxHits === 0 ) return ret; 53 | var highlight = document.createElement(nodeName || 'span'); 54 | highlight.className = className || 'highlight'; 55 | if(wordsOnly) { 56 | var index = match[0].search(re_word)+match.index; 57 | var wordNode = node.splitText(index); 58 | wordNode.splitText(word.length); 59 | } else { 60 | var wordNode = node.splitText(match.index); 61 | wordNode.splitText(word.length); 62 | } 63 | var wordClone = wordNode.cloneNode(true); 64 | highlight.appendChild(wordClone); 65 | wordNode.parentNode.replaceChild(highlight, wordNode); 66 | ret.match = 1; 67 | ret.maxHits--; 68 | return ret; //skip added node in parent 69 | } 70 | } else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children 71 | !/(script|style)/i.test(node.tagName) && // ignore script and style nodes 72 | !(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted 73 | for (var i = 0; i < node.childNodes.length; i++) { 74 | ret = jQuery.highlight(node.childNodes[i], re, nodeName, className,wordsOnly,word,re_word,ret); 75 | i += ret.match; 76 | } 77 | } 78 | return ret; 79 | } 80 | }); 81 | 82 | jQuery.fn.unhighlight = function (options) { 83 | var settings = { className: 'highlight', element: 'span' }; 84 | jQuery.extend(settings, options); 85 | 86 | return this.find(settings.element + "." + settings.className).each(function () { 87 | var parent = this.parentNode; 88 | parent.replaceChild(this.firstChild, this); 89 | parent.normalize(); 90 | }).end(); 91 | }; 92 | 93 | jQuery.fn.highlight = function (word, options) { 94 | var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false, maxHits:-1 }; 95 | jQuery.extend(settings, options); 96 | 97 | var pattern = "(" + word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") + ")"; 98 | var pattern_word = word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); 99 | 100 | var flag = settings.caseSensitive ? "" : "i"; 101 | if (settings.wordsOnly) { 102 | // simple \b does not work with unicode text 103 | // see http://stackoverflow.com/questions/10590098/javascript-regexp-word-boundaries-unicode-characters 104 | pattern = "(^|\\s|[,.\\-\\(\\)\\[\\]])" + pattern + "($|\\s|[,.\\-\\(\\)\\[\\]])"; 105 | } 106 | var re = new RegExp(pattern, flag); 107 | var document_results={match:0,maxHits:settings.maxHits}; 108 | 109 | return this.each(function () { 110 | document_results = jQuery.highlight(this, re, settings.element, settings.className,settings.wordsOnly,word,new RegExp(pattern_word,'i'), document_results); 111 | }); 112 | }; 113 | -------------------------------------------------------------------------------- /Chrome/jquery_highlight.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Highlight plugin 3 | * 4 | * Based on highlight v3 by Johann Burkard 5 | * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html 6 | * 7 | * Code a little bit refactored and cleaned (in my humble opinion). 8 | * Most important changes: 9 | * - has an option to highlight only entire words (wordsOnly - false by default), 10 | * - has an option to be case sensitive (caseSensitive - false by default) 11 | * - highlight element tag and class names can be specified in options 12 | * 13 | * Usage: 14 | * // wrap every occurrance of text 'lorem' in content 15 | * // with (default options) 16 | * $('#content').highlight('lorem'); 17 | * 18 | * // search for and highlight more terms at once 19 | * // so you can save some time on traversing DOM 20 | * $('#content').highlight(['lorem', 'ipsum']); 21 | * $('#content').highlight('lorem ipsum'); 22 | * 23 | * // search only for entire word 'lorem' 24 | * $('#content').highlight('lorem', { wordsOnly: true }); 25 | * 26 | * // don't ignore case during search of term 'lorem' 27 | * $('#content').highlight('lorem', { caseSensitive: true }); 28 | * 29 | * // wrap every occurrance of term 'ipsum' in content 30 | * // with 31 | * $('#content').highlight('ipsum', { element: 'em', className: 'important' }); 32 | * 33 | * // remove default highlight 34 | * $('#content').unhighlight(); 35 | * 36 | * // remove custom highlight 37 | * $('#content').unhighlight({ element: 'em', className: 'important' }); 38 | * 39 | * 40 | * Copyright (c) 2009 Bartek Szopka 41 | * 42 | * Licensed under MIT license. 43 | * 44 | */ 45 | 46 | jQuery.extend({ 47 | highlight: function (node, re, nodeName, className, wordsOnly, word, re_word,ret) { 48 | if (node.nodeType === 3) { 49 | ret.match = 0; 50 | var match = node.data.match(re); 51 | if (match) { 52 | if( ret.maxHits === 0 ) return ret; 53 | var highlight = document.createElement(nodeName || 'span'); 54 | highlight.className = className || 'highlight'; 55 | if(wordsOnly) { 56 | var index = match[0].search(re_word)+match.index; 57 | var wordNode = node.splitText(index); 58 | wordNode.splitText(word.length); 59 | } else { 60 | var wordNode = node.splitText(match.index); 61 | wordNode.splitText(word.length); 62 | } 63 | var wordClone = wordNode.cloneNode(true); 64 | highlight.appendChild(wordClone); 65 | wordNode.parentNode.replaceChild(highlight, wordNode); 66 | ret.match = 1; 67 | ret.maxHits--; 68 | return ret; //skip added node in parent 69 | } 70 | } else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children 71 | !/(script|style)/i.test(node.tagName) && // ignore script and style nodes 72 | !(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted 73 | for (var i = 0; i < node.childNodes.length; i++) { 74 | ret = jQuery.highlight(node.childNodes[i], re, nodeName, className,wordsOnly,word,re_word,ret); 75 | i += ret.match; 76 | } 77 | } 78 | return ret; 79 | } 80 | }); 81 | 82 | jQuery.fn.unhighlight = function (options) { 83 | var settings = { className: 'highlight', element: 'span' }; 84 | jQuery.extend(settings, options); 85 | 86 | return this.find(settings.element + "." + settings.className).each(function () { 87 | var parent = this.parentNode; 88 | parent.replaceChild(this.firstChild, this); 89 | parent.normalize(); 90 | }).end(); 91 | }; 92 | 93 | jQuery.fn.highlight = function (word, options) { 94 | var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false, maxHits:-1 }; 95 | jQuery.extend(settings, options); 96 | 97 | var pattern = "(" + word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") + ")"; 98 | var pattern_word = word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); 99 | 100 | var flag = settings.caseSensitive ? "" : "i"; 101 | if (settings.wordsOnly) { 102 | // simple \b does not work with unicode text 103 | // see http://stackoverflow.com/questions/10590098/javascript-regexp-word-boundaries-unicode-characters 104 | pattern = "(^|\\s|[,.\\-\\(\\)\\[\\]])" + pattern + "($|\\s|[,.\\-\\(\\)\\[\\]])"; 105 | } 106 | var re = new RegExp(pattern, flag); 107 | var document_results={match:0,maxHits:settings.maxHits}; 108 | 109 | return this.each(function () { 110 | document_results = jQuery.highlight(this, re, settings.element, settings.className,settings.wordsOnly,word,new RegExp(pattern_word,'i'), document_results); 111 | }); 112 | }; 113 | -------------------------------------------------------------------------------- /Safari.safariextension/background.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 145 | 146 | 147 | -------------------------------------------------------------------------------- /Safari.safariextension/jquery_highlight.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Highlight plugin 3 | * 4 | * Based on highlight v3 by Johann Burkard 5 | * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html 6 | * 7 | * Code a little bit refactored and cleaned (in my humble opinion). 8 | * Most important changes: 9 | * - has an option to highlight only entire words (wordsOnly - false by default), 10 | * - has an option to be case sensitive (caseSensitive - false by default) 11 | * - highlight element tag and class names can be specified in options 12 | * 13 | * Usage: 14 | * // wrap every occurrance of text 'lorem' in content 15 | * // with (default options) 16 | * $('#content').highlight('lorem'); 17 | * 18 | * // search for and highlight more terms at once 19 | * // so you can save some time on traversing DOM 20 | * $('#content').highlight(['lorem', 'ipsum']); 21 | * $('#content').highlight('lorem ipsum'); 22 | * 23 | * // search only for entire word 'lorem' 24 | * $('#content').highlight('lorem', { wordsOnly: true }); 25 | * 26 | * // don't ignore case during search of term 'lorem' 27 | * $('#content').highlight('lorem', { caseSensitive: true }); 28 | * 29 | * // wrap every occurrance of term 'ipsum' in content 30 | * // with 31 | * $('#content').highlight('ipsum', { element: 'em', className: 'important' }); 32 | * 33 | * // remove default highlight 34 | * $('#content').unhighlight(); 35 | * 36 | * // remove custom highlight 37 | * $('#content').unhighlight({ element: 'em', className: 'important' }); 38 | * 39 | * 40 | * Copyright (c) 2009 Bartek Szopka 41 | * 42 | * Licensed under MIT license. 43 | * 44 | */ 45 | 46 | jQuery.extend({ 47 | highlight: function (node, re, nodeName, className, wordsOnly, word, re_word,ret) { 48 | if (node.nodeType === 3) { 49 | ret.match = 0; 50 | var match = node.data.match(re); 51 | if (match) { 52 | if( ret.maxHits === 0 ) return ret; 53 | var highlight = document.createElement(nodeName || 'span'); 54 | highlight.className = className || 'highlight'; 55 | if(wordsOnly) { 56 | var index = match[0].search(re_word)+match.index; 57 | var wordNode = node.splitText(index); 58 | wordNode.splitText(word.length); 59 | } else { 60 | var wordNode = node.splitText(match.index); 61 | wordNode.splitText(word.length); 62 | } 63 | var wordClone = wordNode.cloneNode(true); 64 | highlight.appendChild(wordClone); 65 | wordNode.parentNode.replaceChild(highlight, wordNode); 66 | ret.match = 1; 67 | ret.maxHits--; 68 | return ret; //skip added node in parent 69 | } 70 | } else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children 71 | !/(script|style)/i.test(node.tagName) && // ignore script and style nodes 72 | !(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted 73 | for (var i = 0; i < node.childNodes.length; i++) { 74 | ret = jQuery.highlight(node.childNodes[i], re, nodeName, className,wordsOnly,word,re_word,ret); 75 | i += ret.match; 76 | } 77 | } 78 | return ret; 79 | } 80 | }); 81 | 82 | jQuery.fn.unhighlight = function (options) { 83 | var settings = { className: 'highlight', element: 'span' }; 84 | jQuery.extend(settings, options); 85 | 86 | return this.find(settings.element + "." + settings.className).each(function () { 87 | var parent = this.parentNode; 88 | parent.replaceChild(this.firstChild, this); 89 | parent.normalize(); 90 | }).end(); 91 | }; 92 | 93 | jQuery.fn.highlight = function (word, options) { 94 | var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false, maxHits:-1 }; 95 | jQuery.extend(settings, options); 96 | 97 | var pattern = "(" + word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") + ")"; 98 | var pattern_word = word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); 99 | 100 | var flag = settings.caseSensitive ? "" : "i"; 101 | if (settings.wordsOnly) { 102 | // simple \b does not work with unicode text 103 | // see http://stackoverflow.com/questions/10590098/javascript-regexp-word-boundaries-unicode-characters 104 | pattern = "(^|\\s|[,.\\-\\(\\)\\[\\]])" + pattern + "($|\\s|[,.\\-\\(\\)\\[\\]])"; 105 | } 106 | var re = new RegExp(pattern, flag); 107 | var document_results={match:0,maxHits:settings.maxHits}; 108 | 109 | return this.each(function () { 110 | document_results = jQuery.highlight(this, re, settings.element, settings.className,settings.wordsOnly,word,new RegExp(pattern_word,'i'), document_results); 111 | }); 112 | }; 113 | -------------------------------------------------------------------------------- /lib/bg_browserbutton.js: -------------------------------------------------------------------------------- 1 | if(SAFARI) { 2 | var ToolbarButton; 3 | safari.extension.toolbarItems.forEach(function(item) { 4 | if (item.identifier == 'lobbyradarBtn') { 5 | ToolbarButton = item; 6 | } 7 | }); 8 | var updateBrowserButton = function( tabId ) { 9 | var storedTabdata = tabData.get(tabId); 10 | storedTabdata.stage='done'; 11 | tabData.set(tabId,storedTabdata); 12 | if(storedTabdata && storedTabdata.hits && storedTabdata.hits.length) { 13 | ToolbarButton.badge = storedTabdata.hits.length.toString(); 14 | } else { 15 | ToolbarButton.badge = '0'; 16 | } 17 | } 18 | 19 | var setBrowserButton_searching = function( tabId ) { 20 | var storedTabdata = tabData.get(tabId); 21 | storedTabdata.stage='search'; 22 | tabData.set(tabId,storedTabdata); 23 | ToolbarButton.badge = '...'; // safari is not displaying this. unfortunately 24 | } 25 | var setBrowserButton_waiting = function( tabId ) { 26 | var storedTabdata = tabData.get(tabId); 27 | storedTabdata.stage='mark'; 28 | tabData.set(tabId,storedTabdata); 29 | ToolbarButton.badge = '+++'; // safari is not displaying this. unfortunately 30 | } 31 | } else { 32 | var updateBrowserButton = function( tabId ) { 33 | chrome.browserAction.setTitle({title:'Lobbyradar',tabId:tabId}); 34 | chrome.browserAction.setBadgeText({text:'',tabId:tabId}); 35 | chrome.browserAction.setBadgeBackgroundColor({ color: "#555",tabId:tabId }); 36 | var storedTabdata = tabData.get(tabId); 37 | storedTabdata.stage='done'; 38 | tabData.set(tabId,storedTabdata); 39 | if(storedTabdata.hits) { 40 | chrome.browserAction.setBadgeText({text:storedTabdata.hits.length.toString(),tabId:tabId}); 41 | } else { 42 | chrome.browserAction.setBadgeText({text:"0",tabId:tabId}); 43 | } 44 | } 45 | 46 | var setBrowserButton_searching = function( tabId ) { 47 | var storedTabdata = tabData.get(tabId); 48 | storedTabdata.stage='search'; 49 | tabData.set(tabId,storedTabdata); 50 | chrome.browserAction.setTitle({title:'Lobbyradar sucht...',tabId:tabId}); 51 | chrome.browserAction.setBadgeText({text:'...',tabId:tabId}); 52 | chrome.browserAction.setBadgeBackgroundColor({ color: "#a00",tabId:tabId }); 53 | } 54 | var setBrowserButton_waiting = function( tabId ) { 55 | var storedTabdata = tabData.get(tabId); 56 | storedTabdata.stage='mark'; 57 | tabData.set(tabId,storedTabdata); 58 | chrome.browserAction.setTitle({title:'Lobbyradar arbeitet...',tabId:tabId}); 59 | chrome.browserAction.setBadgeText({text:'+++',tabId:tabId}); 60 | chrome.browserAction.setBadgeBackgroundColor({ color: "#a00",tabId:tabId }); 61 | } 62 | } 63 | 64 | // keep track of names found in each Browsertab 65 | tabData = { 66 | // get data stored for a tab 67 | get: function(tabId) { 68 | return tabData[tabId] ? tabData[tabId] : {}; 69 | }, 70 | 71 | // store value for tab 72 | set: function(tabId, value) { 73 | tabData[tabId] = value; 74 | }, 75 | 76 | // When a tab is closed, delete all its data 77 | onTabClosed: function(tabId) { 78 | delete tabData[tabId]; 79 | } 80 | }; 81 | 82 | function respondToLobbyradarBadgeMessage (request, sender, sendResponse) { 83 | switch(request.requestType) { 84 | case 'updateBrowserButton': updateBrowserButton( sender.tab.id );break; 85 | case 'setBrowserButton_waiting': setBrowserButton_waiting( sender.tab.id );break; 86 | case 'setBrowserButton_searching': setBrowserButton_searching( sender.tab.id );break; 87 | } 88 | return true; 89 | }; 90 | 91 | if(SAFARI) { 92 | safari.application.addEventListener("validate",function(msgEvent){ 93 | var sender = {tab:msgEvent.target.browserWindow.activeTab}; 94 | sender.tab.id=_.indexOf(safari.application.activeBrowserWindow.tabs,sender.tab); 95 | updateBrowserButton( sender.tab.id ); 96 | }); 97 | safari.application.addEventListener("popover", function(msgEvent) { 98 | safari.extension.popovers[0].contentWindow.update_content(); 99 | }, true); 100 | 101 | safari.application.addEventListener("message",function(msgEvent){ 102 | var sender = {tab:msgEvent.target}; 103 | sender.tab.id=_.indexOf(safari.application.activeBrowserWindow.tabs,sender.tab); 104 | 105 | var sendResponse=function(data) { 106 | var callbackID = msgEvent.message.callbackID; 107 | msgEvent.target.page.dispatchMessage( msgEvent.name, { value:data, 108 | callbackID:callbackID 109 | }); 110 | } 111 | respondToLobbyradarBadgeMessage( msgEvent.message, sender, sendResponse ); 112 | },false); 113 | 114 | } else { 115 | chrome.runtime.onMessage.addListener(respondToLobbyradarBadgeMessage); 116 | chrome.tabs.onRemoved.addListener(tabData.onTabClosed); 117 | } 118 | 119 | -------------------------------------------------------------------------------- /Chrome/bg_browserbutton.js: -------------------------------------------------------------------------------- 1 | if(SAFARI) { 2 | var ToolbarButton; 3 | safari.extension.toolbarItems.forEach(function(item) { 4 | if (item.identifier == 'lobbyradarBtn') { 5 | ToolbarButton = item; 6 | } 7 | }); 8 | var updateBrowserButton = function( tabId ) { 9 | var storedTabdata = tabData.get(tabId); 10 | storedTabdata.stage='done'; 11 | tabData.set(tabId,storedTabdata); 12 | if(storedTabdata && storedTabdata.hits && storedTabdata.hits.length) { 13 | ToolbarButton.badge = storedTabdata.hits.length.toString(); 14 | } else { 15 | ToolbarButton.badge = '0'; 16 | } 17 | } 18 | 19 | var setBrowserButton_searching = function( tabId ) { 20 | var storedTabdata = tabData.get(tabId); 21 | storedTabdata.stage='search'; 22 | tabData.set(tabId,storedTabdata); 23 | ToolbarButton.badge = '...'; // safari is not displaying this. unfortunately 24 | } 25 | var setBrowserButton_waiting = function( tabId ) { 26 | var storedTabdata = tabData.get(tabId); 27 | storedTabdata.stage='mark'; 28 | tabData.set(tabId,storedTabdata); 29 | ToolbarButton.badge = '+++'; // safari is not displaying this. unfortunately 30 | } 31 | } else { 32 | var updateBrowserButton = function( tabId ) { 33 | chrome.browserAction.setTitle({title:'Lobbyradar',tabId:tabId}); 34 | chrome.browserAction.setBadgeText({text:'',tabId:tabId}); 35 | chrome.browserAction.setBadgeBackgroundColor({ color: "#555",tabId:tabId }); 36 | var storedTabdata = tabData.get(tabId); 37 | storedTabdata.stage='done'; 38 | tabData.set(tabId,storedTabdata); 39 | if(storedTabdata.hits) { 40 | chrome.browserAction.setBadgeText({text:storedTabdata.hits.length.toString(),tabId:tabId}); 41 | } else { 42 | chrome.browserAction.setBadgeText({text:"0",tabId:tabId}); 43 | } 44 | } 45 | 46 | var setBrowserButton_searching = function( tabId ) { 47 | var storedTabdata = tabData.get(tabId); 48 | storedTabdata.stage='search'; 49 | tabData.set(tabId,storedTabdata); 50 | chrome.browserAction.setTitle({title:'Lobbyradar sucht...',tabId:tabId}); 51 | chrome.browserAction.setBadgeText({text:'...',tabId:tabId}); 52 | chrome.browserAction.setBadgeBackgroundColor({ color: "#a00",tabId:tabId }); 53 | } 54 | var setBrowserButton_waiting = function( tabId ) { 55 | var storedTabdata = tabData.get(tabId); 56 | storedTabdata.stage='mark'; 57 | tabData.set(tabId,storedTabdata); 58 | chrome.browserAction.setTitle({title:'Lobbyradar arbeitet...',tabId:tabId}); 59 | chrome.browserAction.setBadgeText({text:'+++',tabId:tabId}); 60 | chrome.browserAction.setBadgeBackgroundColor({ color: "#a00",tabId:tabId }); 61 | } 62 | } 63 | 64 | // keep track of names found in each Browsertab 65 | tabData = { 66 | // get data stored for a tab 67 | get: function(tabId) { 68 | return tabData[tabId] ? tabData[tabId] : {}; 69 | }, 70 | 71 | // store value for tab 72 | set: function(tabId, value) { 73 | tabData[tabId] = value; 74 | }, 75 | 76 | // When a tab is closed, delete all its data 77 | onTabClosed: function(tabId) { 78 | delete tabData[tabId]; 79 | } 80 | }; 81 | 82 | function respondToLobbyradarBadgeMessage (request, sender, sendResponse) { 83 | switch(request.requestType) { 84 | case 'updateBrowserButton': updateBrowserButton( sender.tab.id );break; 85 | case 'setBrowserButton_waiting': setBrowserButton_waiting( sender.tab.id );break; 86 | case 'setBrowserButton_searching': setBrowserButton_searching( sender.tab.id );break; 87 | } 88 | return true; 89 | }; 90 | 91 | if(SAFARI) { 92 | safari.application.addEventListener("validate",function(msgEvent){ 93 | var sender = {tab:msgEvent.target.browserWindow.activeTab}; 94 | sender.tab.id=_.indexOf(safari.application.activeBrowserWindow.tabs,sender.tab); 95 | updateBrowserButton( sender.tab.id ); 96 | }); 97 | safari.application.addEventListener("popover", function(msgEvent) { 98 | safari.extension.popovers[0].contentWindow.update_content(); 99 | }, true); 100 | 101 | safari.application.addEventListener("message",function(msgEvent){ 102 | var sender = {tab:msgEvent.target}; 103 | sender.tab.id=_.indexOf(safari.application.activeBrowserWindow.tabs,sender.tab); 104 | 105 | var sendResponse=function(data) { 106 | var callbackID = msgEvent.message.callbackID; 107 | msgEvent.target.page.dispatchMessage( msgEvent.name, { value:data, 108 | callbackID:callbackID 109 | }); 110 | } 111 | respondToLobbyradarBadgeMessage( msgEvent.message, sender, sendResponse ); 112 | },false); 113 | 114 | } else { 115 | chrome.runtime.onMessage.addListener(respondToLobbyradarBadgeMessage); 116 | chrome.tabs.onRemoved.addListener(tabData.onTabClosed); 117 | } 118 | 119 | -------------------------------------------------------------------------------- /Safari.safariextension/bg_browserbutton.js: -------------------------------------------------------------------------------- 1 | if(SAFARI) { 2 | var ToolbarButton; 3 | safari.extension.toolbarItems.forEach(function(item) { 4 | if (item.identifier == 'lobbyradarBtn') { 5 | ToolbarButton = item; 6 | } 7 | }); 8 | var updateBrowserButton = function( tabId ) { 9 | var storedTabdata = tabData.get(tabId); 10 | storedTabdata.stage='done'; 11 | tabData.set(tabId,storedTabdata); 12 | if(storedTabdata && storedTabdata.hits && storedTabdata.hits.length) { 13 | ToolbarButton.badge = storedTabdata.hits.length.toString(); 14 | } else { 15 | ToolbarButton.badge = '0'; 16 | } 17 | } 18 | 19 | var setBrowserButton_searching = function( tabId ) { 20 | var storedTabdata = tabData.get(tabId); 21 | storedTabdata.stage='search'; 22 | tabData.set(tabId,storedTabdata); 23 | ToolbarButton.badge = '...'; // safari is not displaying this. unfortunately 24 | } 25 | var setBrowserButton_waiting = function( tabId ) { 26 | var storedTabdata = tabData.get(tabId); 27 | storedTabdata.stage='mark'; 28 | tabData.set(tabId,storedTabdata); 29 | ToolbarButton.badge = '+++'; // safari is not displaying this. unfortunately 30 | } 31 | } else { 32 | var updateBrowserButton = function( tabId ) { 33 | chrome.browserAction.setTitle({title:'Lobbyradar',tabId:tabId}); 34 | chrome.browserAction.setBadgeText({text:'',tabId:tabId}); 35 | chrome.browserAction.setBadgeBackgroundColor({ color: "#555",tabId:tabId }); 36 | var storedTabdata = tabData.get(tabId); 37 | storedTabdata.stage='done'; 38 | tabData.set(tabId,storedTabdata); 39 | if(storedTabdata.hits) { 40 | chrome.browserAction.setBadgeText({text:storedTabdata.hits.length.toString(),tabId:tabId}); 41 | } else { 42 | chrome.browserAction.setBadgeText({text:"0",tabId:tabId}); 43 | } 44 | } 45 | 46 | var setBrowserButton_searching = function( tabId ) { 47 | var storedTabdata = tabData.get(tabId); 48 | storedTabdata.stage='search'; 49 | tabData.set(tabId,storedTabdata); 50 | chrome.browserAction.setTitle({title:'Lobbyradar sucht...',tabId:tabId}); 51 | chrome.browserAction.setBadgeText({text:'...',tabId:tabId}); 52 | chrome.browserAction.setBadgeBackgroundColor({ color: "#a00",tabId:tabId }); 53 | } 54 | var setBrowserButton_waiting = function( tabId ) { 55 | var storedTabdata = tabData.get(tabId); 56 | storedTabdata.stage='mark'; 57 | tabData.set(tabId,storedTabdata); 58 | chrome.browserAction.setTitle({title:'Lobbyradar arbeitet...',tabId:tabId}); 59 | chrome.browserAction.setBadgeText({text:'+++',tabId:tabId}); 60 | chrome.browserAction.setBadgeBackgroundColor({ color: "#a00",tabId:tabId }); 61 | } 62 | } 63 | 64 | // keep track of names found in each Browsertab 65 | tabData = { 66 | // get data stored for a tab 67 | get: function(tabId) { 68 | return tabData[tabId] ? tabData[tabId] : {}; 69 | }, 70 | 71 | // store value for tab 72 | set: function(tabId, value) { 73 | tabData[tabId] = value; 74 | }, 75 | 76 | // When a tab is closed, delete all its data 77 | onTabClosed: function(tabId) { 78 | delete tabData[tabId]; 79 | } 80 | }; 81 | 82 | function respondToLobbyradarBadgeMessage (request, sender, sendResponse) { 83 | switch(request.requestType) { 84 | case 'updateBrowserButton': updateBrowserButton( sender.tab.id );break; 85 | case 'setBrowserButton_waiting': setBrowserButton_waiting( sender.tab.id );break; 86 | case 'setBrowserButton_searching': setBrowserButton_searching( sender.tab.id );break; 87 | } 88 | return true; 89 | }; 90 | 91 | if(SAFARI) { 92 | safari.application.addEventListener("validate",function(msgEvent){ 93 | var sender = {tab:msgEvent.target.browserWindow.activeTab}; 94 | sender.tab.id=_.indexOf(safari.application.activeBrowserWindow.tabs,sender.tab); 95 | updateBrowserButton( sender.tab.id ); 96 | }); 97 | safari.application.addEventListener("popover", function(msgEvent) { 98 | safari.extension.popovers[0].contentWindow.update_content(); 99 | }, true); 100 | 101 | safari.application.addEventListener("message",function(msgEvent){ 102 | var sender = {tab:msgEvent.target}; 103 | sender.tab.id=_.indexOf(safari.application.activeBrowserWindow.tabs,sender.tab); 104 | 105 | var sendResponse=function(data) { 106 | var callbackID = msgEvent.message.callbackID; 107 | msgEvent.target.page.dispatchMessage( msgEvent.name, { value:data, 108 | callbackID:callbackID 109 | }); 110 | } 111 | respondToLobbyradarBadgeMessage( msgEvent.message, sender, sendResponse ); 112 | },false); 113 | 114 | } else { 115 | chrome.runtime.onMessage.addListener(respondToLobbyradarBadgeMessage); 116 | chrome.tabs.onRemoved.addListener(tabData.onTabClosed); 117 | } 118 | 119 | -------------------------------------------------------------------------------- /styling/tooltip/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Testpage 4 | 5 | 6 | 7 | 8 | 9 |

    Tooltip Styling

    10 |

    11 | Diese Seite existiert nur, um beim Styling des Tooltips zu helfen. Phasellus gravida semper nisi. Vestibulum turpis sem, aliquet eget, lobortis pellentesque, rutrum eu, nisl. Curabitur suscipit suscipit tellus. Praesent ut ligula non mi varius sagittis. Quisque id mi. 12 | 13 | Curabitur suscipit suscipit tellus. Nullam accumsan lorem in dui. Maecenas nec odio et ante tincidunt tempus. Aliquam lobortis. Vivamus elementum semper nisi. 14 | 15 | Praesent porttitor, nulla vitae posuere iaculis, arcu nisl dignissim dolor, a pretium mi sem ut ipsum. Vestibulum suscipit nulla quis orci. Cras id dui. Praesent egestas tristique nibh. Aliquam eu nunc. 16 | 17 | Proin pretium, leo ac pellentesque mollis, felis nunc ultrices eros, sed gravida augue augue mollis justo. Duis leo. Vestibulum rutrum, mi nec elementum vehicula, eros quam gravida nisl, id fringilla neque ante vel mi. Aenean tellus metus, bibendum sed, posuere ac, mattis non, nunc. Pellentesque egestas, neque sit amet convallis pulvinar, justo nulla eleifend augue, ac auctor orci leo non est. 18 | 19 | Vestibulum rutrum, mi nec elementum vehicula, eros quam gravida nisl, id fringilla neque ante vel mi. Sed fringilla mauris sit amet nibh. Sed in libero ut nibh placerat accumsan. Ut non enim eleifend felis pretium feugiat. Fusce fermentum.

    20 |

    some Persons

    21 |
      22 |
    • Thomas
    • 23 |
    • Entwicklung der Braunschen Röhre durch Karl Ferdinand Braun.
    • 24 |
    • georg
    • 25 |
    • Karl-August Siepelmeyer
    • 26 |
    • Hans-Joachim Ahnert
    • 27 |
    • Hans-Joachim Wolff, Hans Joachim Wolff, Hans-Joachim Wolff
    • 28 |
    • Karin Schüler
    • 29 |
    • Klaus-Dieter Rennert
    • 30 |
    • Reiner Assmann
    • 31 |
    • Siepelmeyer
    • 32 |
    • Peter Spary
    • 33 |
    34 | 35 |

    some Orgs

    36 |
      37 |
    • Arbeitgebervereinigung Nahrung und Genuß e.V.
    • 38 |
    • Apotheker in Wissenschaft, Industrie und Verwaltungen (Fachgruppe WIV-Apotheker)
    • 39 |
    • Arbeitsgemeinschaft Kino - Gilde deutscher Filmkunsttheater e.V AG Kino-Gilde
    • 40 |
    • Architekten- und Ingenieur-Verein zu Berlin e.V.
    • 41 |
    42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Chrome/style.css: -------------------------------------------------------------------------------- 1 | span[class^="lobbyradar_hit"] { 2 | border-bottom: 2px dotted rgba(20, 59, 82, 0.9) !important; 3 | background:rgba(20, 59, 82, 0.1) !important; 4 | cursor: pointer !important; 5 | padding: 2px 4px 0px 3px !important; 6 | } 7 | 8 | span[class^="lobbyradar_hit"] > a:hover { 9 | text-decoration: none !important; 10 | } 11 | 12 | 13 | .tooltipster-lobbyradar button { 14 | float: none !important; 15 | display: inline-block !important; 16 | height: 32px !important; 17 | } 18 | .tooltipster-lobbyradar .tooltipster-content p { 19 | font-family: sans-serif !important; 20 | } 21 | 22 | .tooltipster-lobbyradar div.tooltipster-content { 23 | background: -moz-linear-gradient(top, #11354b 0%, #a1bdc9 65%, #a1bdc9 77%, #6392a8 100%) !important; /* FF3.6+ */ 24 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#11354b), color-stop(65%,#a1bdc9), color-stop(77%,#a1bdc9), color-stop(100%,#6392a8)) !important; /* Chrome,Safari4+ */ 25 | background: -webkit-linear-gradient(top, #11354b 0%,#a1bdc9 65%,#a1bdc9 77%,#6392a8 100%) !important; /* Chrome10+,Safari5.1+ */ 26 | background: linear-gradient(to bottom, #11354b 0%,#a1bdc9 65%,#a1bdc9 77%,#6392a8 100%) !important; /* W3C */ 27 | } 28 | 29 | .tooltipster-lobbyradar .tooltipster-arrow span{ 30 | border-color:rgba(20, 59, 82, 1)!important; 31 | } 32 | 33 | .tooltipster-lobbyradar .tooltipster-content section.lobbyradar_middle section { 34 | margin: 0 !important; 35 | } 36 | 37 | .tooltipster-lobbyradar .tooltipster-content section.lobbyradar_middle .lobbyradar_item a { 38 | color:white!important; 39 | } 40 | 41 | .lobbyradar_list { 42 | overflow-x: hidden !important; 43 | overflow-y: auto !important; 44 | padding: 0 !important; 45 | margin-left: 0 !important; 46 | margin-right: 0 !important; 47 | } 48 | 49 | .lobbyradar_top, 50 | section.lobbyradar_footer { 51 | background:rgba(20, 59, 82, 1) !important; 52 | color:white!important; 53 | } 54 | 55 | .lobbyradar_top { 56 | padding: 0 15px 15px 15px !important; 57 | } 58 | 59 | .lobbyradar_top .header-logos { 60 | display: block; 61 | margin-left:-15px !important; 62 | } 63 | .lobbyradar_top .header-logos::after { 64 | clear: both; 65 | } 66 | .lobbyradar_top .header-logos .logo_l { 67 | margin-top: 10px !important; 68 | display: inline-block !important; 69 | } 70 | 71 | .lobbyradar_top .header-person { 72 | font-size:155% !important; 73 | padding-bottom:10px !important; 74 | color:#fff !important; 75 | } 76 | 77 | .lobbyradar_top a { 78 | color:#fff !important; 79 | } 80 | 81 | section.lobbyradar_middle { 82 | background: transparent!important; 83 | border-top: 1px solid #143b52!important; 84 | border-bottom: 1px solid #143b52!important; 85 | padding: 4px 14px !important; 86 | } 87 | 88 | .num_connections { 89 | float: right; 90 | padding-right: 5px; 91 | color:white!important; 92 | } 93 | 94 | .num_connections::before { 95 | background-repeat: no-repeat; 96 | background-position: center center; 97 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wQPCjYvrQWbNgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABDElEQVQ4y62VPU4DMRSEZ1ZJEdECTaiQQAo9LTfgBHQoJTRJzpBLIDgJF0iTDlEgypR0SEhE5KNxhBV5F3uz0/nnjd+M37OllgCmwJo/HGoPsjvSmLglIXVrvUIiSbqUhKRkMs4lsi2gkvTTtNddyIwwiQPOgY8E0SPwtWN+L3Eht8DAIehT0kHE8xp8OpPUj+ZPbK8iC0ZB5Zvt9TaDd2BDM56AU8BZ3tRgA8yB45JKcJPZtovrtJK0aEh+DhxlSY2iriOJdbgKe7M83N70CngBlmH8DHzvHDaMOkbACLgA+iUKHhIZp+pwnNUpUc3ldMqs5FEQcPNPvdL581WpY7QlvK+Zn+7zDST/lF8gdqzKfvPyfAAAAABJRU5ErkJggg==); 98 | background-size: 12px 12px; 99 | display: inline; 100 | min-width: 14px; 101 | min-height: 14px; 102 | color: transparent; 103 | margin-right: 0px; 104 | content:"CN"; 105 | } 106 | 107 | .tooltipster-lobbyradar .shariff { 108 | margin: -3px 0 0 0 !important; 109 | display: inline-block; 110 | vertical-align: top; 111 | } 112 | .tooltipster-lobbyradar .shariff li { 113 | min-width: 0 !important; 114 | width: 33% !important; 115 | height: 17px !important; 116 | min-width:0 !important; 117 | margin-bottom: 0 !important; 118 | margin-right: 1.8% !important; 119 | list-style-type: none !important; 120 | background: none !important; 121 | padding: 0 !important; 122 | } 123 | 124 | .tooltipster-lobbyradar .sharebuttons { 125 | float: right !important; 126 | border-bottom: 1px solid #fff !important; 127 | width: 100% !important; 128 | text-align: right !important; 129 | margin-bottom: 10px !important; 130 | padding-bottom: 2px !important; 131 | padding-top: 2px !important; 132 | font-size: 10px !important; 133 | } 134 | 135 | .tooltipster-lobbyradar .shariff li:last-child { 136 | margin-right: 0 !important; 137 | } 138 | .tooltipster-lobbyradar .shariff ul { 139 | margin: 0 0 0 10px !important; 140 | } 141 | .tooltipster-lobbyradar .shariff li.shariff-button { 142 | margin-right: 5px; 143 | } 144 | .tooltipster-lobbyradar .shariff li.shariff-button.mail { 145 | margin-left: 4px; 146 | } 147 | 148 | .tooltipster-lobbyradar .shariff .theme-transparent .shariff-button a { 149 | background: transparent !important; 150 | color: rgb(60, 60, 70) !important; 151 | } 152 | 153 | .tooltipster-lobbyradar .shariff .fa { 154 | display: inline-block; 155 | width: 15px; 156 | height: 15px; 157 | background-size: contain !important; 158 | -webkit-background-size: contain !important; 159 | } 160 | .tooltipster-lobbyradar .orientation-horizontal { 161 | margin-left: 10px !important; 162 | } 163 | .tooltipster-lobbyradar .shariff .share_text { 164 | display: none !important; 165 | } 166 | 167 | -------------------------------------------------------------------------------- /lib/style.css: -------------------------------------------------------------------------------- 1 | span[class^="lobbyradar_hit"] { 2 | border-bottom: 2px dotted rgba(20, 59, 82, 0.9) !important; 3 | background:rgba(20, 59, 82, 0.1) !important; 4 | cursor: pointer !important; 5 | padding: 2px 4px 0px 3px !important; 6 | } 7 | 8 | span[class^="lobbyradar_hit"] > a:hover { 9 | text-decoration: none !important; 10 | } 11 | 12 | 13 | .tooltipster-lobbyradar button { 14 | float: none !important; 15 | display: inline-block !important; 16 | height: 32px !important; 17 | } 18 | .tooltipster-lobbyradar .tooltipster-content p { 19 | font-family: sans-serif !important; 20 | } 21 | 22 | .tooltipster-lobbyradar div.tooltipster-content { 23 | background: -moz-linear-gradient(top, #11354b 0%, #a1bdc9 65%, #a1bdc9 77%, #6392a8 100%) !important; /* FF3.6+ */ 24 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#11354b), color-stop(65%,#a1bdc9), color-stop(77%,#a1bdc9), color-stop(100%,#6392a8)) !important; /* Chrome,Safari4+ */ 25 | background: -webkit-linear-gradient(top, #11354b 0%,#a1bdc9 65%,#a1bdc9 77%,#6392a8 100%) !important; /* Chrome10+,Safari5.1+ */ 26 | background: linear-gradient(to bottom, #11354b 0%,#a1bdc9 65%,#a1bdc9 77%,#6392a8 100%) !important; /* W3C */ 27 | } 28 | 29 | .tooltipster-lobbyradar .tooltipster-arrow span{ 30 | border-color:rgba(20, 59, 82, 1)!important; 31 | } 32 | 33 | .tooltipster-lobbyradar .tooltipster-content section.lobbyradar_middle section { 34 | margin: 0 !important; 35 | } 36 | 37 | .tooltipster-lobbyradar .tooltipster-content section.lobbyradar_middle .lobbyradar_item a { 38 | color:white!important; 39 | } 40 | 41 | .lobbyradar_list { 42 | overflow-x: hidden !important; 43 | overflow-y: auto !important; 44 | padding: 0 !important; 45 | margin-left: 0 !important; 46 | margin-right: 0 !important; 47 | } 48 | 49 | .lobbyradar_top, 50 | section.lobbyradar_footer { 51 | background:rgba(20, 59, 82, 1) !important; 52 | color:white!important; 53 | } 54 | 55 | .lobbyradar_top { 56 | padding: 0 15px 15px 15px !important; 57 | } 58 | 59 | .lobbyradar_top .header-logos { 60 | display: block; 61 | margin-left:-15px !important; 62 | } 63 | .lobbyradar_top .header-logos::after { 64 | clear: both; 65 | } 66 | .lobbyradar_top .header-logos .logo_l { 67 | margin-top: 10px !important; 68 | display: inline-block !important; 69 | } 70 | 71 | .lobbyradar_top .header-person { 72 | font-size:155% !important; 73 | padding-bottom:10px !important; 74 | color:#fff !important; 75 | } 76 | 77 | .lobbyradar_top a { 78 | color:#fff !important; 79 | } 80 | 81 | section.lobbyradar_middle { 82 | background: transparent!important; 83 | border-top: 1px solid #143b52!important; 84 | border-bottom: 1px solid #143b52!important; 85 | padding: 4px 14px !important; 86 | } 87 | 88 | .num_connections { 89 | float: right; 90 | padding-right: 5px; 91 | color:white!important; 92 | } 93 | 94 | .num_connections::before { 95 | background-repeat: no-repeat; 96 | background-position: center center; 97 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wQPCjYvrQWbNgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABDElEQVQ4y62VPU4DMRSEZ1ZJEdECTaiQQAo9LTfgBHQoJTRJzpBLIDgJF0iTDlEgypR0SEhE5KNxhBV5F3uz0/nnjd+M37OllgCmwJo/HGoPsjvSmLglIXVrvUIiSbqUhKRkMs4lsi2gkvTTtNddyIwwiQPOgY8E0SPwtWN+L3Eht8DAIehT0kHE8xp8OpPUj+ZPbK8iC0ZB5Zvt9TaDd2BDM56AU8BZ3tRgA8yB45JKcJPZtovrtJK0aEh+DhxlSY2iriOJdbgKe7M83N70CngBlmH8DHzvHDaMOkbACLgA+iUKHhIZp+pwnNUpUc3ldMqs5FEQcPNPvdL581WpY7QlvK+Zn+7zDST/lF8gdqzKfvPyfAAAAABJRU5ErkJggg==); 98 | background-size: 12px 12px; 99 | display: inline; 100 | min-width: 14px; 101 | min-height: 14px; 102 | color: transparent; 103 | margin-right: 0px; 104 | content:"CN"; 105 | } 106 | 107 | .tooltipster-lobbyradar .shariff { 108 | margin: -3px 0 0 0 !important; 109 | display: inline-block; 110 | vertical-align: top; 111 | } 112 | .tooltipster-lobbyradar .shariff li { 113 | min-width: 0 !important; 114 | width: 33% !important; 115 | height: 17px !important; 116 | min-width:0 !important; 117 | margin-bottom: 0 !important; 118 | margin-right: 1.8% !important; 119 | list-style-type: none !important; 120 | background: none !important; 121 | padding: 0 !important; 122 | } 123 | 124 | .tooltipster-lobbyradar .sharebuttons { 125 | float: right !important; 126 | border-bottom: 1px solid #fff !important; 127 | width: 100% !important; 128 | text-align: right !important; 129 | margin-bottom: 10px !important; 130 | padding-bottom: 2px !important; 131 | padding-top: 2px !important; 132 | font-size: 10px !important; 133 | } 134 | 135 | .tooltipster-lobbyradar .shariff li:last-child { 136 | margin-right: 0 !important; 137 | } 138 | .tooltipster-lobbyradar .shariff ul { 139 | margin: 0 0 0 10px !important; 140 | } 141 | .tooltipster-lobbyradar .shariff li.shariff-button { 142 | margin-right: 5px; 143 | } 144 | .tooltipster-lobbyradar .shariff li.shariff-button.mail { 145 | margin-left: 4px; 146 | } 147 | 148 | .tooltipster-lobbyradar .shariff .theme-transparent .shariff-button a { 149 | background: transparent !important; 150 | color: rgb(60, 60, 70) !important; 151 | } 152 | 153 | .tooltipster-lobbyradar .shariff .fa { 154 | display: inline-block; 155 | width: 15px; 156 | height: 15px; 157 | background-size: contain !important; 158 | -webkit-background-size: contain !important; 159 | } 160 | .tooltipster-lobbyradar .orientation-horizontal { 161 | margin-left: 10px !important; 162 | } 163 | .tooltipster-lobbyradar .shariff .share_text { 164 | display: none !important; 165 | } 166 | 167 | -------------------------------------------------------------------------------- /Firefox/data/style.css: -------------------------------------------------------------------------------- 1 | span[class^="lobbyradar_hit"] { 2 | border-bottom: 2px dotted rgba(20, 59, 82, 0.9) !important; 3 | background:rgba(20, 59, 82, 0.1) !important; 4 | cursor: pointer !important; 5 | padding: 2px 4px 0px 3px !important; 6 | } 7 | 8 | span[class^="lobbyradar_hit"] > a:hover { 9 | text-decoration: none !important; 10 | } 11 | 12 | 13 | .tooltipster-lobbyradar button { 14 | float: none !important; 15 | display: inline-block !important; 16 | height: 32px !important; 17 | } 18 | .tooltipster-lobbyradar .tooltipster-content p { 19 | font-family: sans-serif !important; 20 | } 21 | 22 | .tooltipster-lobbyradar div.tooltipster-content { 23 | background: -moz-linear-gradient(top, #11354b 0%, #a1bdc9 65%, #a1bdc9 77%, #6392a8 100%) !important; /* FF3.6+ */ 24 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#11354b), color-stop(65%,#a1bdc9), color-stop(77%,#a1bdc9), color-stop(100%,#6392a8)) !important; /* Chrome,Safari4+ */ 25 | background: -webkit-linear-gradient(top, #11354b 0%,#a1bdc9 65%,#a1bdc9 77%,#6392a8 100%) !important; /* Chrome10+,Safari5.1+ */ 26 | background: linear-gradient(to bottom, #11354b 0%,#a1bdc9 65%,#a1bdc9 77%,#6392a8 100%) !important; /* W3C */ 27 | } 28 | 29 | .tooltipster-lobbyradar .tooltipster-arrow span{ 30 | border-color:rgba(20, 59, 82, 1)!important; 31 | } 32 | 33 | .tooltipster-lobbyradar .tooltipster-content section.lobbyradar_middle section { 34 | margin: 0 !important; 35 | } 36 | 37 | .tooltipster-lobbyradar .tooltipster-content section.lobbyradar_middle .lobbyradar_item a { 38 | color:white!important; 39 | } 40 | 41 | .lobbyradar_list { 42 | overflow-x: hidden !important; 43 | overflow-y: auto !important; 44 | padding: 0 !important; 45 | margin-left: 0 !important; 46 | margin-right: 0 !important; 47 | } 48 | 49 | .lobbyradar_top, 50 | section.lobbyradar_footer { 51 | background:rgba(20, 59, 82, 1) !important; 52 | color:white!important; 53 | } 54 | 55 | .lobbyradar_top { 56 | padding: 0 15px 15px 15px !important; 57 | } 58 | 59 | .lobbyradar_top .header-logos { 60 | display: block; 61 | margin-left:-15px !important; 62 | } 63 | .lobbyradar_top .header-logos::after { 64 | clear: both; 65 | } 66 | .lobbyradar_top .header-logos .logo_l { 67 | margin-top: 10px !important; 68 | display: inline-block !important; 69 | } 70 | 71 | .lobbyradar_top .header-person { 72 | font-size:155% !important; 73 | padding-bottom:10px !important; 74 | color:#fff !important; 75 | } 76 | 77 | .lobbyradar_top a { 78 | color:#fff !important; 79 | } 80 | 81 | section.lobbyradar_middle { 82 | background: transparent!important; 83 | border-top: 1px solid #143b52!important; 84 | border-bottom: 1px solid #143b52!important; 85 | padding: 4px 14px !important; 86 | } 87 | 88 | .num_connections { 89 | float: right; 90 | padding-right: 5px; 91 | color:white!important; 92 | } 93 | 94 | .num_connections::before { 95 | background-repeat: no-repeat; 96 | background-position: center center; 97 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wQPCjYvrQWbNgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABDElEQVQ4y62VPU4DMRSEZ1ZJEdECTaiQQAo9LTfgBHQoJTRJzpBLIDgJF0iTDlEgypR0SEhE5KNxhBV5F3uz0/nnjd+M37OllgCmwJo/HGoPsjvSmLglIXVrvUIiSbqUhKRkMs4lsi2gkvTTtNddyIwwiQPOgY8E0SPwtWN+L3Eht8DAIehT0kHE8xp8OpPUj+ZPbK8iC0ZB5Zvt9TaDd2BDM56AU8BZ3tRgA8yB45JKcJPZtovrtJK0aEh+DhxlSY2iriOJdbgKe7M83N70CngBlmH8DHzvHDaMOkbACLgA+iUKHhIZp+pwnNUpUc3ldMqs5FEQcPNPvdL581WpY7QlvK+Zn+7zDST/lF8gdqzKfvPyfAAAAABJRU5ErkJggg==); 98 | background-size: 12px 12px; 99 | display: inline; 100 | min-width: 14px; 101 | min-height: 14px; 102 | color: transparent; 103 | margin-right: 0px; 104 | content:"CN"; 105 | } 106 | 107 | .tooltipster-lobbyradar .shariff { 108 | margin: -3px 0 0 0 !important; 109 | display: inline-block; 110 | vertical-align: top; 111 | } 112 | .tooltipster-lobbyradar .shariff li { 113 | min-width: 0 !important; 114 | width: 33% !important; 115 | height: 17px !important; 116 | min-width:0 !important; 117 | margin-bottom: 0 !important; 118 | margin-right: 1.8% !important; 119 | list-style-type: none !important; 120 | background: none !important; 121 | padding: 0 !important; 122 | } 123 | 124 | .tooltipster-lobbyradar .sharebuttons { 125 | float: right !important; 126 | border-bottom: 1px solid #fff !important; 127 | width: 100% !important; 128 | text-align: right !important; 129 | margin-bottom: 10px !important; 130 | padding-bottom: 2px !important; 131 | padding-top: 2px !important; 132 | font-size: 10px !important; 133 | } 134 | 135 | .tooltipster-lobbyradar .shariff li:last-child { 136 | margin-right: 0 !important; 137 | } 138 | .tooltipster-lobbyradar .shariff ul { 139 | margin: 0 0 0 10px !important; 140 | } 141 | .tooltipster-lobbyradar .shariff li.shariff-button { 142 | margin-right: 5px; 143 | } 144 | .tooltipster-lobbyradar .shariff li.shariff-button.mail { 145 | margin-left: 4px; 146 | } 147 | 148 | .tooltipster-lobbyradar .shariff .theme-transparent .shariff-button a { 149 | background: transparent !important; 150 | color: rgb(60, 60, 70) !important; 151 | } 152 | 153 | .tooltipster-lobbyradar .shariff .fa { 154 | display: inline-block; 155 | width: 15px; 156 | height: 15px; 157 | background-size: contain !important; 158 | -webkit-background-size: contain !important; 159 | } 160 | .tooltipster-lobbyradar .orientation-horizontal { 161 | margin-left: 10px !important; 162 | } 163 | .tooltipster-lobbyradar .shariff .share_text { 164 | display: none !important; 165 | } 166 | 167 | -------------------------------------------------------------------------------- /Safari.safariextension/style.css: -------------------------------------------------------------------------------- 1 | span[class^="lobbyradar_hit"] { 2 | border-bottom: 2px dotted rgba(20, 59, 82, 0.9) !important; 3 | background:rgba(20, 59, 82, 0.1) !important; 4 | cursor: pointer !important; 5 | padding: 2px 4px 0px 3px !important; 6 | } 7 | 8 | span[class^="lobbyradar_hit"] > a:hover { 9 | text-decoration: none !important; 10 | } 11 | 12 | 13 | .tooltipster-lobbyradar button { 14 | float: none !important; 15 | display: inline-block !important; 16 | height: 32px !important; 17 | } 18 | .tooltipster-lobbyradar .tooltipster-content p { 19 | font-family: sans-serif !important; 20 | } 21 | 22 | .tooltipster-lobbyradar div.tooltipster-content { 23 | background: -moz-linear-gradient(top, #11354b 0%, #a1bdc9 65%, #a1bdc9 77%, #6392a8 100%) !important; /* FF3.6+ */ 24 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#11354b), color-stop(65%,#a1bdc9), color-stop(77%,#a1bdc9), color-stop(100%,#6392a8)) !important; /* Chrome,Safari4+ */ 25 | background: -webkit-linear-gradient(top, #11354b 0%,#a1bdc9 65%,#a1bdc9 77%,#6392a8 100%) !important; /* Chrome10+,Safari5.1+ */ 26 | background: linear-gradient(to bottom, #11354b 0%,#a1bdc9 65%,#a1bdc9 77%,#6392a8 100%) !important; /* W3C */ 27 | } 28 | 29 | .tooltipster-lobbyradar .tooltipster-arrow span{ 30 | border-color:rgba(20, 59, 82, 1)!important; 31 | } 32 | 33 | .tooltipster-lobbyradar .tooltipster-content section.lobbyradar_middle section { 34 | margin: 0 !important; 35 | } 36 | 37 | .tooltipster-lobbyradar .tooltipster-content section.lobbyradar_middle .lobbyradar_item a { 38 | color:white!important; 39 | } 40 | 41 | .lobbyradar_list { 42 | overflow-x: hidden !important; 43 | overflow-y: auto !important; 44 | padding: 0 !important; 45 | margin-left: 0 !important; 46 | margin-right: 0 !important; 47 | } 48 | 49 | .lobbyradar_top, 50 | section.lobbyradar_footer { 51 | background:rgba(20, 59, 82, 1) !important; 52 | color:white!important; 53 | } 54 | 55 | .lobbyradar_top { 56 | padding: 0 15px 15px 15px !important; 57 | } 58 | 59 | .lobbyradar_top .header-logos { 60 | display: block; 61 | margin-left:-15px !important; 62 | } 63 | .lobbyradar_top .header-logos::after { 64 | clear: both; 65 | } 66 | .lobbyradar_top .header-logos .logo_l { 67 | margin-top: 10px !important; 68 | display: inline-block !important; 69 | } 70 | 71 | .lobbyradar_top .header-person { 72 | font-size:155% !important; 73 | padding-bottom:10px !important; 74 | color:#fff !important; 75 | } 76 | 77 | .lobbyradar_top a { 78 | color:#fff !important; 79 | } 80 | 81 | section.lobbyradar_middle { 82 | background: transparent!important; 83 | border-top: 1px solid #143b52!important; 84 | border-bottom: 1px solid #143b52!important; 85 | padding: 4px 14px !important; 86 | } 87 | 88 | .num_connections { 89 | float: right; 90 | padding-right: 5px; 91 | color:white!important; 92 | } 93 | 94 | .num_connections::before { 95 | background-repeat: no-repeat; 96 | background-position: center center; 97 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wQPCjYvrQWbNgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABDElEQVQ4y62VPU4DMRSEZ1ZJEdECTaiQQAo9LTfgBHQoJTRJzpBLIDgJF0iTDlEgypR0SEhE5KNxhBV5F3uz0/nnjd+M37OllgCmwJo/HGoPsjvSmLglIXVrvUIiSbqUhKRkMs4lsi2gkvTTtNddyIwwiQPOgY8E0SPwtWN+L3Eht8DAIehT0kHE8xp8OpPUj+ZPbK8iC0ZB5Zvt9TaDd2BDM56AU8BZ3tRgA8yB45JKcJPZtovrtJK0aEh+DhxlSY2iriOJdbgKe7M83N70CngBlmH8DHzvHDaMOkbACLgA+iUKHhIZp+pwnNUpUc3ldMqs5FEQcPNPvdL581WpY7QlvK+Zn+7zDST/lF8gdqzKfvPyfAAAAABJRU5ErkJggg==); 98 | background-size: 12px 12px; 99 | display: inline; 100 | min-width: 14px; 101 | min-height: 14px; 102 | color: transparent; 103 | margin-right: 0px; 104 | content:"CN"; 105 | } 106 | 107 | .tooltipster-lobbyradar .shariff { 108 | margin: -3px 0 0 0 !important; 109 | display: inline-block; 110 | vertical-align: top; 111 | } 112 | .tooltipster-lobbyradar .shariff li { 113 | min-width: 0 !important; 114 | width: 33% !important; 115 | height: 17px !important; 116 | min-width:0 !important; 117 | margin-bottom: 0 !important; 118 | margin-right: 1.8% !important; 119 | list-style-type: none !important; 120 | background: none !important; 121 | padding: 0 !important; 122 | } 123 | 124 | .tooltipster-lobbyradar .sharebuttons { 125 | float: right !important; 126 | border-bottom: 1px solid #fff !important; 127 | width: 100% !important; 128 | text-align: right !important; 129 | margin-bottom: 10px !important; 130 | padding-bottom: 2px !important; 131 | padding-top: 2px !important; 132 | font-size: 10px !important; 133 | } 134 | 135 | .tooltipster-lobbyradar .shariff li:last-child { 136 | margin-right: 0 !important; 137 | } 138 | .tooltipster-lobbyradar .shariff ul { 139 | margin: 0 0 0 10px !important; 140 | } 141 | .tooltipster-lobbyradar .shariff li.shariff-button { 142 | margin-right: 5px; 143 | } 144 | .tooltipster-lobbyradar .shariff li.shariff-button.mail { 145 | margin-left: 4px; 146 | } 147 | 148 | .tooltipster-lobbyradar .shariff .theme-transparent .shariff-button a { 149 | background: transparent !important; 150 | color: rgb(60, 60, 70) !important; 151 | } 152 | 153 | .tooltipster-lobbyradar .shariff .fa { 154 | display: inline-block; 155 | width: 15px; 156 | height: 15px; 157 | background-size: contain !important; 158 | -webkit-background-size: contain !important; 159 | } 160 | .tooltipster-lobbyradar .orientation-horizontal { 161 | margin-left: 10px !important; 162 | } 163 | .tooltipster-lobbyradar .shariff .share_text { 164 | display: none !important; 165 | } 166 | 167 | -------------------------------------------------------------------------------- /lib/shariff.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * shariff - v1.10.0 - 15.04.2015 3 | * https://github.com/heiseonline/shariff 4 | * Copyright (c) 2015 Ines Pauer, Philipp Busse, Sebastian Hilbig, Erich Kramer, Deniz Sesli 5 | * Licensed under the MIT license 6 | */.shariff::after,.shariff::before{content:" ";display:table}.shariff::after{clear:both}.shariff ul{padding:0;margin:0;list-style:none}.shariff li{height:35px;box-sizing:border-box;overflow:hidden}.shariff li a{color:#fff;position:relative;display:block;height:35px;text-decoration:none;box-sizing:border-box}.shariff li .share_count,.shariff li .share_text{font-family:Arial,Helvetica,sans-serif;font-size:12px;vertical-align:middle;line-height:35px}.shariff li .fa{width:35px;line-height:35px;text-align:center;vertical-align:middle}.shariff li .share_count{padding:0 8px;height:33px;position:absolute;top:1px;right:1px}.shariff .orientation-horizontal{display:-webkit-box}.shariff .orientation-horizontal li{-webkit-box-flex:1}.shariff .orientation-horizontal .info{-webkit-box-flex:0}.shariff .orientation-horizontal{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.shariff .orientation-horizontal li{float:left;-webkit-flex:none;-ms-flex:none;flex:none;width:35px;margin-right:3%;margin-bottom:10px}.shariff .orientation-horizontal li:last-child{margin-right:0}.shariff .orientation-horizontal li .share_text{display:block;text-indent:-9999px;padding-left:3px}.shariff .orientation-horizontal li .share_count{display:none}.shariff .theme-grey .shariff-button a{background-color:#b0b0b0}.shariff .theme-grey .shariff-button .share_count{background-color:#ccc;color:#333}.shariff .theme-white .shariff-button{border:1px solid #ddd}.shariff .theme-white .shariff-button a{background-color:#fff}.shariff .theme-white .shariff-button a:hover{background-color:#eee}.shariff .theme-white .shariff-button .share_count{background-color:#fff;color:#999}.shariff .orientation-vertical{min-width:110px}.shariff .orientation-vertical li{display:block;width:100%;margin:5px 0}.shariff .orientation-vertical li .share_count{width:24px;text-align:right}@media only screen and (min-width:360px){.shariff .orientation-horizontal li{margin-right:1.8%;min-width:80px;width:auto;-webkit-flex:1;-ms-flex:1;flex:1}.shariff .orientation-horizontal li .share_count{display:block}.shariff .orientation-horizontal.col-1 li,.shariff .orientation-horizontal.col-2 li{min-width:110px;max-width:160px}.shariff .orientation-horizontal.col-1 li .share_text,.shariff .orientation-horizontal.col-2 li .share_text{text-indent:0;display:inline}.shariff .orientation-horizontal.col-5 li,.shariff .orientation-horizontal.col-6 li{-webkit-flex:none;-ms-flex:none;flex:none}}@media only screen and (min-width:640px){.shariff .orientation-horizontal.col-3 li{min-width:110px;max-width:160px}.shariff .orientation-horizontal.col-3 li .share_text{text-indent:0;display:inline}}@media only screen and (min-width:768px){.shariff .orientation-horizontal li{min-width:110px;max-width:160px}.shariff .orientation-horizontal li .share_text{text-indent:0;display:inline}.shariff .orientation-horizontal.col-5 li,.shariff .orientation-horizontal.col-6 li{-webkit-flex:1;-ms-flex:1;flex:1}}@media only screen and (min-width:1024px){.shariff li{height:30px}.shariff li a{height:30px}.shariff li .fa{width:30px;line-height:30px}.shariff li .share_count,.shariff li .share_text{line-height:30px}.shariff li .share_count{height:28px}}.shariff .twitter a{background-color:#55acee}.shariff .twitter a:hover{background-color:#32bbf5}.shariff .twitter .fa-twitter{font-size:28px}.shariff .twitter .share_count{color:#0174a4;background-color:#96D4EE}.shariff .theme-white .twitter a{color:#55acee}@media only screen and (min-width:600px){.shariff .twitter .fa-twitter{font-size:24px}}.shariff .facebook a{background-color:#3b5998}.shariff .facebook a:hover{background-color:#4273c8}.shariff .facebook .fa-facebook{font-size:22px}.shariff .facebook .share_count{color:#183a75;background-color:#99adcf}.shariff .theme-white .facebook a{color:#3b5998}@media only screen and (min-width:600px){.shariff .facebook .fa-facebook{font-size:19px}}.shariff .googleplus a{background-color:#d34836}.shariff .googleplus a:hover{background-color:#f75b44}.shariff .googleplus .fa-google-plus{font-size:22px}.shariff .googleplus .share_count{color:#a31601;background-color:#eda79d}.shariff .theme-white .googleplus a{color:#d34836}@media only screen and (min-width:600px){.shariff .googleplus .fa-google-plus{font-size:19px;position:relative;top:1px}}.shariff .mail a{background-color:#999}.shariff .mail a:hover{background-color:#a8a8a8}.shariff .mail .fa-envelope{font-size:21px}.shariff .theme-white .mail a{color:#999}@media only screen and (min-width:600px){.shariff .mail .fa-envelope{font-size:18px}}.shariff .info{border:1px solid #ccc}.shariff .info a{color:#666;background-color:#fff}.shariff .info a:hover{background-color:#efefef}.shariff .info .fa-info{font-size:20px;width:33px}.shariff .info .share_text{display:block!important;text-indent:-9999px!important}.shariff .theme-grey .info a{background-color:#fff}.shariff .theme-grey .info a:hover{background-color:#efefef}.shariff .orientation-vertical .info{width:35px;float:right}@media only screen and (min-width:360px){.shariff .orientation-horizontal .info{-webkit-flex:none!important;-ms-flex:none!important;flex:none!important;width:35px;min-width:35px}}@media only screen and (min-width:1024px){.shariff .info .fa-info{font-size:16px;width:23px}.shariff .orientation-horizontal .info{width:25px;min-width:25px}.shariff .orientation-vertical .info{width:25px}}.shariff .whatsapp a{background-color:#5cbe4a}.shariff .whatsapp a:hover{background-color:#34af23}.shariff .whatsapp .fa-whatsapp{font-size:28px}.shariff .theme-white .whatsapp a{color:#5cbe4a}@media only screen and (min-width:600px){.shariff .whatsapp .fa-whatsapp{font-size:22px}}.shariff .xing a{background-color:#126567}.shariff .xing a:hover{background-color:#29888a}.shariff .xing .fa-xing{font-size:22px}.shariff .xing .share_count{color:#15686a;background-color:#4fa5a7}.shariff .theme-white .xing a{color:#126567}@media only screen and (min-width:600px){.shariff .xing .fa-xing{font-size:19px}} 7 | -------------------------------------------------------------------------------- /Chrome/shariff.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * shariff - v1.10.0 - 15.04.2015 3 | * https://github.com/heiseonline/shariff 4 | * Copyright (c) 2015 Ines Pauer, Philipp Busse, Sebastian Hilbig, Erich Kramer, Deniz Sesli 5 | * Licensed under the MIT license 6 | */.shariff::after,.shariff::before{content:" ";display:table}.shariff::after{clear:both}.shariff ul{padding:0;margin:0;list-style:none}.shariff li{height:35px;box-sizing:border-box;overflow:hidden}.shariff li a{color:#fff;position:relative;display:block;height:35px;text-decoration:none;box-sizing:border-box}.shariff li .share_count,.shariff li .share_text{font-family:Arial,Helvetica,sans-serif;font-size:12px;vertical-align:middle;line-height:35px}.shariff li .fa{width:35px;line-height:35px;text-align:center;vertical-align:middle}.shariff li .share_count{padding:0 8px;height:33px;position:absolute;top:1px;right:1px}.shariff .orientation-horizontal{display:-webkit-box}.shariff .orientation-horizontal li{-webkit-box-flex:1}.shariff .orientation-horizontal .info{-webkit-box-flex:0}.shariff .orientation-horizontal{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.shariff .orientation-horizontal li{float:left;-webkit-flex:none;-ms-flex:none;flex:none;width:35px;margin-right:3%;margin-bottom:10px}.shariff .orientation-horizontal li:last-child{margin-right:0}.shariff .orientation-horizontal li .share_text{display:block;text-indent:-9999px;padding-left:3px}.shariff .orientation-horizontal li .share_count{display:none}.shariff .theme-grey .shariff-button a{background-color:#b0b0b0}.shariff .theme-grey .shariff-button .share_count{background-color:#ccc;color:#333}.shariff .theme-white .shariff-button{border:1px solid #ddd}.shariff .theme-white .shariff-button a{background-color:#fff}.shariff .theme-white .shariff-button a:hover{background-color:#eee}.shariff .theme-white .shariff-button .share_count{background-color:#fff;color:#999}.shariff .orientation-vertical{min-width:110px}.shariff .orientation-vertical li{display:block;width:100%;margin:5px 0}.shariff .orientation-vertical li .share_count{width:24px;text-align:right}@media only screen and (min-width:360px){.shariff .orientation-horizontal li{margin-right:1.8%;min-width:80px;width:auto;-webkit-flex:1;-ms-flex:1;flex:1}.shariff .orientation-horizontal li .share_count{display:block}.shariff .orientation-horizontal.col-1 li,.shariff .orientation-horizontal.col-2 li{min-width:110px;max-width:160px}.shariff .orientation-horizontal.col-1 li .share_text,.shariff .orientation-horizontal.col-2 li .share_text{text-indent:0;display:inline}.shariff .orientation-horizontal.col-5 li,.shariff .orientation-horizontal.col-6 li{-webkit-flex:none;-ms-flex:none;flex:none}}@media only screen and (min-width:640px){.shariff .orientation-horizontal.col-3 li{min-width:110px;max-width:160px}.shariff .orientation-horizontal.col-3 li .share_text{text-indent:0;display:inline}}@media only screen and (min-width:768px){.shariff .orientation-horizontal li{min-width:110px;max-width:160px}.shariff .orientation-horizontal li .share_text{text-indent:0;display:inline}.shariff .orientation-horizontal.col-5 li,.shariff .orientation-horizontal.col-6 li{-webkit-flex:1;-ms-flex:1;flex:1}}@media only screen and (min-width:1024px){.shariff li{height:30px}.shariff li a{height:30px}.shariff li .fa{width:30px;line-height:30px}.shariff li .share_count,.shariff li .share_text{line-height:30px}.shariff li .share_count{height:28px}}.shariff .twitter a{background-color:#55acee}.shariff .twitter a:hover{background-color:#32bbf5}.shariff .twitter .fa-twitter{font-size:28px}.shariff .twitter .share_count{color:#0174a4;background-color:#96D4EE}.shariff .theme-white .twitter a{color:#55acee}@media only screen and (min-width:600px){.shariff .twitter .fa-twitter{font-size:24px}}.shariff .facebook a{background-color:#3b5998}.shariff .facebook a:hover{background-color:#4273c8}.shariff .facebook .fa-facebook{font-size:22px}.shariff .facebook .share_count{color:#183a75;background-color:#99adcf}.shariff .theme-white .facebook a{color:#3b5998}@media only screen and (min-width:600px){.shariff .facebook .fa-facebook{font-size:19px}}.shariff .googleplus a{background-color:#d34836}.shariff .googleplus a:hover{background-color:#f75b44}.shariff .googleplus .fa-google-plus{font-size:22px}.shariff .googleplus .share_count{color:#a31601;background-color:#eda79d}.shariff .theme-white .googleplus a{color:#d34836}@media only screen and (min-width:600px){.shariff .googleplus .fa-google-plus{font-size:19px;position:relative;top:1px}}.shariff .mail a{background-color:#999}.shariff .mail a:hover{background-color:#a8a8a8}.shariff .mail .fa-envelope{font-size:21px}.shariff .theme-white .mail a{color:#999}@media only screen and (min-width:600px){.shariff .mail .fa-envelope{font-size:18px}}.shariff .info{border:1px solid #ccc}.shariff .info a{color:#666;background-color:#fff}.shariff .info a:hover{background-color:#efefef}.shariff .info .fa-info{font-size:20px;width:33px}.shariff .info .share_text{display:block!important;text-indent:-9999px!important}.shariff .theme-grey .info a{background-color:#fff}.shariff .theme-grey .info a:hover{background-color:#efefef}.shariff .orientation-vertical .info{width:35px;float:right}@media only screen and (min-width:360px){.shariff .orientation-horizontal .info{-webkit-flex:none!important;-ms-flex:none!important;flex:none!important;width:35px;min-width:35px}}@media only screen and (min-width:1024px){.shariff .info .fa-info{font-size:16px;width:23px}.shariff .orientation-horizontal .info{width:25px;min-width:25px}.shariff .orientation-vertical .info{width:25px}}.shariff .whatsapp a{background-color:#5cbe4a}.shariff .whatsapp a:hover{background-color:#34af23}.shariff .whatsapp .fa-whatsapp{font-size:28px}.shariff .theme-white .whatsapp a{color:#5cbe4a}@media only screen and (min-width:600px){.shariff .whatsapp .fa-whatsapp{font-size:22px}}.shariff .xing a{background-color:#126567}.shariff .xing a:hover{background-color:#29888a}.shariff .xing .fa-xing{font-size:22px}.shariff .xing .share_count{color:#15686a;background-color:#4fa5a7}.shariff .theme-white .xing a{color:#126567}@media only screen and (min-width:600px){.shariff .xing .fa-xing{font-size:19px}} 7 | -------------------------------------------------------------------------------- /Firefox/data/shariff.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * shariff - v1.10.0 - 15.04.2015 3 | * https://github.com/heiseonline/shariff 4 | * Copyright (c) 2015 Ines Pauer, Philipp Busse, Sebastian Hilbig, Erich Kramer, Deniz Sesli 5 | * Licensed under the MIT license 6 | */.shariff::after,.shariff::before{content:" ";display:table}.shariff::after{clear:both}.shariff ul{padding:0;margin:0;list-style:none}.shariff li{height:35px;box-sizing:border-box;overflow:hidden}.shariff li a{color:#fff;position:relative;display:block;height:35px;text-decoration:none;box-sizing:border-box}.shariff li .share_count,.shariff li .share_text{font-family:Arial,Helvetica,sans-serif;font-size:12px;vertical-align:middle;line-height:35px}.shariff li .fa{width:35px;line-height:35px;text-align:center;vertical-align:middle}.shariff li .share_count{padding:0 8px;height:33px;position:absolute;top:1px;right:1px}.shariff .orientation-horizontal{display:-webkit-box}.shariff .orientation-horizontal li{-webkit-box-flex:1}.shariff .orientation-horizontal .info{-webkit-box-flex:0}.shariff .orientation-horizontal{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.shariff .orientation-horizontal li{float:left;-webkit-flex:none;-ms-flex:none;flex:none;width:35px;margin-right:3%;margin-bottom:10px}.shariff .orientation-horizontal li:last-child{margin-right:0}.shariff .orientation-horizontal li .share_text{display:block;text-indent:-9999px;padding-left:3px}.shariff .orientation-horizontal li .share_count{display:none}.shariff .theme-grey .shariff-button a{background-color:#b0b0b0}.shariff .theme-grey .shariff-button .share_count{background-color:#ccc;color:#333}.shariff .theme-white .shariff-button{border:1px solid #ddd}.shariff .theme-white .shariff-button a{background-color:#fff}.shariff .theme-white .shariff-button a:hover{background-color:#eee}.shariff .theme-white .shariff-button .share_count{background-color:#fff;color:#999}.shariff .orientation-vertical{min-width:110px}.shariff .orientation-vertical li{display:block;width:100%;margin:5px 0}.shariff .orientation-vertical li .share_count{width:24px;text-align:right}@media only screen and (min-width:360px){.shariff .orientation-horizontal li{margin-right:1.8%;min-width:80px;width:auto;-webkit-flex:1;-ms-flex:1;flex:1}.shariff .orientation-horizontal li .share_count{display:block}.shariff .orientation-horizontal.col-1 li,.shariff .orientation-horizontal.col-2 li{min-width:110px;max-width:160px}.shariff .orientation-horizontal.col-1 li .share_text,.shariff .orientation-horizontal.col-2 li .share_text{text-indent:0;display:inline}.shariff .orientation-horizontal.col-5 li,.shariff .orientation-horizontal.col-6 li{-webkit-flex:none;-ms-flex:none;flex:none}}@media only screen and (min-width:640px){.shariff .orientation-horizontal.col-3 li{min-width:110px;max-width:160px}.shariff .orientation-horizontal.col-3 li .share_text{text-indent:0;display:inline}}@media only screen and (min-width:768px){.shariff .orientation-horizontal li{min-width:110px;max-width:160px}.shariff .orientation-horizontal li .share_text{text-indent:0;display:inline}.shariff .orientation-horizontal.col-5 li,.shariff .orientation-horizontal.col-6 li{-webkit-flex:1;-ms-flex:1;flex:1}}@media only screen and (min-width:1024px){.shariff li{height:30px}.shariff li a{height:30px}.shariff li .fa{width:30px;line-height:30px}.shariff li .share_count,.shariff li .share_text{line-height:30px}.shariff li .share_count{height:28px}}.shariff .twitter a{background-color:#55acee}.shariff .twitter a:hover{background-color:#32bbf5}.shariff .twitter .fa-twitter{font-size:28px}.shariff .twitter .share_count{color:#0174a4;background-color:#96D4EE}.shariff .theme-white .twitter a{color:#55acee}@media only screen and (min-width:600px){.shariff .twitter .fa-twitter{font-size:24px}}.shariff .facebook a{background-color:#3b5998}.shariff .facebook a:hover{background-color:#4273c8}.shariff .facebook .fa-facebook{font-size:22px}.shariff .facebook .share_count{color:#183a75;background-color:#99adcf}.shariff .theme-white .facebook a{color:#3b5998}@media only screen and (min-width:600px){.shariff .facebook .fa-facebook{font-size:19px}}.shariff .googleplus a{background-color:#d34836}.shariff .googleplus a:hover{background-color:#f75b44}.shariff .googleplus .fa-google-plus{font-size:22px}.shariff .googleplus .share_count{color:#a31601;background-color:#eda79d}.shariff .theme-white .googleplus a{color:#d34836}@media only screen and (min-width:600px){.shariff .googleplus .fa-google-plus{font-size:19px;position:relative;top:1px}}.shariff .mail a{background-color:#999}.shariff .mail a:hover{background-color:#a8a8a8}.shariff .mail .fa-envelope{font-size:21px}.shariff .theme-white .mail a{color:#999}@media only screen and (min-width:600px){.shariff .mail .fa-envelope{font-size:18px}}.shariff .info{border:1px solid #ccc}.shariff .info a{color:#666;background-color:#fff}.shariff .info a:hover{background-color:#efefef}.shariff .info .fa-info{font-size:20px;width:33px}.shariff .info .share_text{display:block!important;text-indent:-9999px!important}.shariff .theme-grey .info a{background-color:#fff}.shariff .theme-grey .info a:hover{background-color:#efefef}.shariff .orientation-vertical .info{width:35px;float:right}@media only screen and (min-width:360px){.shariff .orientation-horizontal .info{-webkit-flex:none!important;-ms-flex:none!important;flex:none!important;width:35px;min-width:35px}}@media only screen and (min-width:1024px){.shariff .info .fa-info{font-size:16px;width:23px}.shariff .orientation-horizontal .info{width:25px;min-width:25px}.shariff .orientation-vertical .info{width:25px}}.shariff .whatsapp a{background-color:#5cbe4a}.shariff .whatsapp a:hover{background-color:#34af23}.shariff .whatsapp .fa-whatsapp{font-size:28px}.shariff .theme-white .whatsapp a{color:#5cbe4a}@media only screen and (min-width:600px){.shariff .whatsapp .fa-whatsapp{font-size:22px}}.shariff .xing a{background-color:#126567}.shariff .xing a:hover{background-color:#29888a}.shariff .xing .fa-xing{font-size:22px}.shariff .xing .share_count{color:#15686a;background-color:#4fa5a7}.shariff .theme-white .xing a{color:#126567}@media only screen and (min-width:600px){.shariff .xing .fa-xing{font-size:19px}} 7 | -------------------------------------------------------------------------------- /Safari.safariextension/shariff.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * shariff - v1.10.0 - 15.04.2015 3 | * https://github.com/heiseonline/shariff 4 | * Copyright (c) 2015 Ines Pauer, Philipp Busse, Sebastian Hilbig, Erich Kramer, Deniz Sesli 5 | * Licensed under the MIT license 6 | */.shariff::after,.shariff::before{content:" ";display:table}.shariff::after{clear:both}.shariff ul{padding:0;margin:0;list-style:none}.shariff li{height:35px;box-sizing:border-box;overflow:hidden}.shariff li a{color:#fff;position:relative;display:block;height:35px;text-decoration:none;box-sizing:border-box}.shariff li .share_count,.shariff li .share_text{font-family:Arial,Helvetica,sans-serif;font-size:12px;vertical-align:middle;line-height:35px}.shariff li .fa{width:35px;line-height:35px;text-align:center;vertical-align:middle}.shariff li .share_count{padding:0 8px;height:33px;position:absolute;top:1px;right:1px}.shariff .orientation-horizontal{display:-webkit-box}.shariff .orientation-horizontal li{-webkit-box-flex:1}.shariff .orientation-horizontal .info{-webkit-box-flex:0}.shariff .orientation-horizontal{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.shariff .orientation-horizontal li{float:left;-webkit-flex:none;-ms-flex:none;flex:none;width:35px;margin-right:3%;margin-bottom:10px}.shariff .orientation-horizontal li:last-child{margin-right:0}.shariff .orientation-horizontal li .share_text{display:block;text-indent:-9999px;padding-left:3px}.shariff .orientation-horizontal li .share_count{display:none}.shariff .theme-grey .shariff-button a{background-color:#b0b0b0}.shariff .theme-grey .shariff-button .share_count{background-color:#ccc;color:#333}.shariff .theme-white .shariff-button{border:1px solid #ddd}.shariff .theme-white .shariff-button a{background-color:#fff}.shariff .theme-white .shariff-button a:hover{background-color:#eee}.shariff .theme-white .shariff-button .share_count{background-color:#fff;color:#999}.shariff .orientation-vertical{min-width:110px}.shariff .orientation-vertical li{display:block;width:100%;margin:5px 0}.shariff .orientation-vertical li .share_count{width:24px;text-align:right}@media only screen and (min-width:360px){.shariff .orientation-horizontal li{margin-right:1.8%;min-width:80px;width:auto;-webkit-flex:1;-ms-flex:1;flex:1}.shariff .orientation-horizontal li .share_count{display:block}.shariff .orientation-horizontal.col-1 li,.shariff .orientation-horizontal.col-2 li{min-width:110px;max-width:160px}.shariff .orientation-horizontal.col-1 li .share_text,.shariff .orientation-horizontal.col-2 li .share_text{text-indent:0;display:inline}.shariff .orientation-horizontal.col-5 li,.shariff .orientation-horizontal.col-6 li{-webkit-flex:none;-ms-flex:none;flex:none}}@media only screen and (min-width:640px){.shariff .orientation-horizontal.col-3 li{min-width:110px;max-width:160px}.shariff .orientation-horizontal.col-3 li .share_text{text-indent:0;display:inline}}@media only screen and (min-width:768px){.shariff .orientation-horizontal li{min-width:110px;max-width:160px}.shariff .orientation-horizontal li .share_text{text-indent:0;display:inline}.shariff .orientation-horizontal.col-5 li,.shariff .orientation-horizontal.col-6 li{-webkit-flex:1;-ms-flex:1;flex:1}}@media only screen and (min-width:1024px){.shariff li{height:30px}.shariff li a{height:30px}.shariff li .fa{width:30px;line-height:30px}.shariff li .share_count,.shariff li .share_text{line-height:30px}.shariff li .share_count{height:28px}}.shariff .twitter a{background-color:#55acee}.shariff .twitter a:hover{background-color:#32bbf5}.shariff .twitter .fa-twitter{font-size:28px}.shariff .twitter .share_count{color:#0174a4;background-color:#96D4EE}.shariff .theme-white .twitter a{color:#55acee}@media only screen and (min-width:600px){.shariff .twitter .fa-twitter{font-size:24px}}.shariff .facebook a{background-color:#3b5998}.shariff .facebook a:hover{background-color:#4273c8}.shariff .facebook .fa-facebook{font-size:22px}.shariff .facebook .share_count{color:#183a75;background-color:#99adcf}.shariff .theme-white .facebook a{color:#3b5998}@media only screen and (min-width:600px){.shariff .facebook .fa-facebook{font-size:19px}}.shariff .googleplus a{background-color:#d34836}.shariff .googleplus a:hover{background-color:#f75b44}.shariff .googleplus .fa-google-plus{font-size:22px}.shariff .googleplus .share_count{color:#a31601;background-color:#eda79d}.shariff .theme-white .googleplus a{color:#d34836}@media only screen and (min-width:600px){.shariff .googleplus .fa-google-plus{font-size:19px;position:relative;top:1px}}.shariff .mail a{background-color:#999}.shariff .mail a:hover{background-color:#a8a8a8}.shariff .mail .fa-envelope{font-size:21px}.shariff .theme-white .mail a{color:#999}@media only screen and (min-width:600px){.shariff .mail .fa-envelope{font-size:18px}}.shariff .info{border:1px solid #ccc}.shariff .info a{color:#666;background-color:#fff}.shariff .info a:hover{background-color:#efefef}.shariff .info .fa-info{font-size:20px;width:33px}.shariff .info .share_text{display:block!important;text-indent:-9999px!important}.shariff .theme-grey .info a{background-color:#fff}.shariff .theme-grey .info a:hover{background-color:#efefef}.shariff .orientation-vertical .info{width:35px;float:right}@media only screen and (min-width:360px){.shariff .orientation-horizontal .info{-webkit-flex:none!important;-ms-flex:none!important;flex:none!important;width:35px;min-width:35px}}@media only screen and (min-width:1024px){.shariff .info .fa-info{font-size:16px;width:23px}.shariff .orientation-horizontal .info{width:25px;min-width:25px}.shariff .orientation-vertical .info{width:25px}}.shariff .whatsapp a{background-color:#5cbe4a}.shariff .whatsapp a:hover{background-color:#34af23}.shariff .whatsapp .fa-whatsapp{font-size:28px}.shariff .theme-white .whatsapp a{color:#5cbe4a}@media only screen and (min-width:600px){.shariff .whatsapp .fa-whatsapp{font-size:22px}}.shariff .xing a{background-color:#126567}.shariff .xing a:hover{background-color:#29888a}.shariff .xing .fa-xing{font-size:22px}.shariff .xing .share_count{color:#15686a;background-color:#4fa5a7}.shariff .theme-white .xing a{color:#126567}@media only screen and (min-width:600px){.shariff .xing .fa-xing{font-size:19px}} 7 | --------------------------------------------------------------------------------