├── images ├── icon.png ├── icon-16.png ├── icon-48.png └── icon-128.png ├── background ├── background.html ├── background.js └── sites.js ├── includes ├── analytics.js ├── scraper.js ├── gensearch.js └── jquery.js ├── .gitattributes ├── options ├── options.css ├── options.html └── options.js ├── popup ├── popup.css ├── popup.html ├── popup.js └── bootstrap.min.css ├── manifest.json ├── LICENSE ├── readme.md └── .gitignore /images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootsdev/roots-search/HEAD/images/icon.png -------------------------------------------------------------------------------- /images/icon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootsdev/roots-search/HEAD/images/icon-16.png -------------------------------------------------------------------------------- /images/icon-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootsdev/roots-search/HEAD/images/icon-48.png -------------------------------------------------------------------------------- /images/icon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootsdev/roots-search/HEAD/images/icon-128.png -------------------------------------------------------------------------------- /background/background.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /includes/analytics.js: -------------------------------------------------------------------------------- 1 | var _gaq = _gaq || []; 2 | _gaq.push(['_setAccount', 'UA-35078396-1']); 3 | (function() { 4 | var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 5 | ga.src = 'https://ssl.google-analytics.com/ga.js'; 6 | var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 7 | })(); -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /options/options.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: arial; 3 | } 4 | 5 | .container { 6 | width: 600px; 7 | } 8 | 9 | p { 10 | margin: 15px 0; 11 | } 12 | 13 | #title { 14 | text-align: center; 15 | color: #F9F9F9; 16 | font-family: 'Allerta', serif; 17 | letter-spacing: 3px; 18 | margin-bottom: .25em; 19 | margin-top: 0; 20 | padding: .25em 0; 21 | background-color: #49AFCD; 22 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 23 | position: relative; 24 | } 25 | 26 | .rs-disabled { 27 | color: #aaa; 28 | } 29 | 30 | .site-url { 31 | margin-left: 20px; 32 | } 33 | 34 | .rs-disabled .site-url a { 35 | color: #BDD8EF; 36 | } -------------------------------------------------------------------------------- /includes/scraper.js: -------------------------------------------------------------------------------- 1 | genscrape() 2 | .on('data', function(data){ 3 | chrome.extension.sendRequest({ 4 | 'type': 'person_info', 5 | 'data': data 6 | }); 7 | }) 8 | .on('noData', function(){ 9 | chrome.extension.sendRequest({ 10 | 'type': 'hide' 11 | }); 12 | }) 13 | /* 14 | // TODO: logging 15 | .on('noMatch', function(){ 16 | 17 | }) 18 | */ 19 | .on('error', function(e){ 20 | chrome.extension.sendRequest({ 21 | 'type': 'js_error', 22 | 'data': { 23 | 'title': exception.name, 24 | 'message': exception.message + "\n\n" + exception.stack, 25 | 'url': url 26 | } 27 | }); 28 | }); -------------------------------------------------------------------------------- /popup/popup.css: -------------------------------------------------------------------------------- 1 | body { 2 | width: 460px; 3 | font-family: arial; 4 | } 5 | 6 | #title { 7 | text-align: center; 8 | color: #F9F9F9; 9 | font-family: 'Allerta', serif; 10 | letter-spacing: 3px; 11 | margin-bottom: .25em; 12 | margin-top: 0; 13 | padding: .25em 0; 14 | background-color: #49AFCD; 15 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 16 | position: relative; 17 | } 18 | 19 | #logo { 20 | position: absolute; 21 | right: 1em; 22 | } 23 | 24 | #form { 25 | font-size: 12px; 26 | } 27 | 28 | .field-label { 29 | padding-left: 3px; 30 | color: #777; 31 | } 32 | 33 | #search-links { 34 | padding-top: 5px; 35 | } 36 | 37 | #search-links button { 38 | text-decoration: none; 39 | display: block; 40 | padding: 5px; 41 | margin: 10px 0; 42 | width: 100%; 43 | } 44 | 45 | a { 46 | color: #777; 47 | } 48 | 49 | #options { 50 | text-align: right; 51 | } -------------------------------------------------------------------------------- /options/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Options - Roots Search 5 | 6 | 7 | 8 | 9 | 10 |

RootsSearch

11 |
12 |

Control which websites are listed in the RootsSearch popup. 13 | Email us 14 | to suggest other genealogy websites that can be added to this list.

15 |
16 |
17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2, 3 | "description": "Search across multiple genealogy sites for matching records.", 4 | "name": "RootsSearch", 5 | "version": "3.7.1", 6 | "permissions": [ 7 | "tabs", 8 | "storage", 9 | "https://rs-errors.herokuapp.com/" 10 | ], 11 | "content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'", 12 | "icons": { 13 | "16": "images/icon-16.png", 14 | "48": "images/icon-48.png", 15 | "128": "images/icon-128.png" 16 | }, 17 | "options_page": "options/options.html", 18 | "background": { 19 | "page": "background/background.html" 20 | }, 21 | "page_action": { 22 | "default_icon": "images/icon-16.png", 23 | "default_popup": "popup/popup.html", 24 | "default_title": "Roots Search" 25 | }, 26 | "content_scripts": [ 27 | { 28 | "matches": [ 29 | "" 30 | ], 31 | "run_at": "document_end", 32 | "js": [ 33 | "includes/jquery.js", 34 | "includes/genscrape.0.1.2.js", 35 | "includes/scraper.js" 36 | ] 37 | } 38 | ] 39 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 Justin York 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /popup/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Roots Search 5 | 6 | 7 | 8 | 9 | 10 |

RootsSearch

11 |
12 |
13 |
14 |
15 |
16 | 17 |
18 |
19 |
20 |
21 | Feedback 22 |
23 |
24 | Options 25 |
26 |
27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /options/options.js: -------------------------------------------------------------------------------- 1 | var background = chrome.extension.getBackgroundPage(); 2 | 3 | $(document).ready(function(){ 4 | 5 | $sites = $('#sites').html(''); 6 | 7 | $.each(background.sites, function(i, site){ 8 | $sites.append( 9 | $('').append( 10 | $('').append(creatSiteDOM(site)) 11 | ) 12 | ); 13 | }); 14 | 15 | $('#feedback-link').click(function(){ 16 | _gaq.push(['_trackEvent','Links','Click','Feedback']); 17 | }); 18 | 19 | }); 20 | 21 | function creatSiteDOM(site){ 22 | var dom = $('
').addClass('site checkbox').addClass(site.enabled ? '' : 'rs-disabled'), 23 | label = $('