diff --git a/manifest.json b/manifest.json index 34461ab..c89f0fa 100644 --- a/manifest.json +++ b/manifest.json @@ -13,7 +13,7 @@ "chrome_style": true }, "background": { - "scripts": ["taborola.js", "background.js"], + "scripts": ["popup.js", "taborola.js", "background.js"], "persistent": false }, "commands": { diff --git a/options.html b/options.html index 7bd0c48..9bddae9 100644 --- a/options.html +++ b/options.html @@ -1,7 +1,7 @@ - Taborola Extension Options + My Preferences Options @@ -17,18 +17,27 @@ --> - +
+
+
+ +
+
+ -
- + \ No newline at end of file diff --git a/options.js b/options.js index de6a9ac..1765d0c 100644 --- a/options.js +++ b/options.js @@ -2,32 +2,190 @@ * Created by gdev on 3/18/2017. */ function save_options() { - var tabsBackground = document.getElementById('tabsBackground').checked; - var highlightTabs = document.getElementById('highlightTabs').checked; - - chrome.storage.sync.set({ - tabsBackground: tabsBackground, - highlightTabs: highlightTabs - }, function() { - // Update status to let user know options were saved. - var status = document.getElementById('status'); - status.textContent = 'Options saved.'; - setTimeout(function() { - status.textContent = ''; - }, 750); + var prefDomain = document.getElementById('prefDomain').value; + var prefUrl = document.getElementById('prefUrl').value; + //var highlightTabs = document.getElementById('highlightTabs').checked; + alert(prefDomain); + var urls={}; + + urls[prefDomain] = [prefUrl]; + + chrome.storage.sync.get( "preferedPages", function(items) { + alert("items" + JSON.stringify(items)); + var origObj = items.preferedPages; + alert("before" + JSON.stringify(origObj)); + + if (origObj[prefDomain]) { + origObj[prefDomain].push(prefUrl); + } else { + origObj[prefDomain] = [prefUrl]; + } + + urls = origObj; + alert("final--" + JSON.stringify(urls)); + chrome.storage.sync.set({preferedPages: origObj}, function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + //items.preferedPages.prefDomain.push(prefUrl); + //alert("after changing" + items.preferedPages.prefDomain.push(prefUrl)); }); + + /* var urls; + chrome.storage.sync.get( "preferedPages", function(items) { + alert("items" + JSON.stringify(items)); + if (items) { + var domain = items.preferedPages.prefDomain; + alert(domain + "--" + prefDomain) + if (domain) { + //urls = domain.push(prefUrl); + urls = items.preferedPages.prefDomain.push(prefUrl); + alert("see" + urls); + } else { + alert ("me here"); + urls[prefDomain] = [prefUrl]; + } + + + } + });*/ + + + //alert( "URLS" + JSON.stringify(urls)); + /*chrome.storage.sync.set({ + preferedPages: urls + }, function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + });*/ } // Restores tabsBackground state using the preferences // stored in chrome.storage. function restore_options() { - chrome.storage.sync.get({ - tabsBackground: true, - highlightTabs: true - }, function(items) { - document.getElementById('tabsBackground').checked = items.tabsBackground; - document.getElementById('highlightTabs').checked = items.highlightTabs; + chrome.storage.sync.get( "preferedPages", function(items) { + var content = document.getElementById('content'); + var text = document.createTextNode(JSON.stringify(items)); + var data = items.preferedPages; + var table = document.createElement("TABLE"); + table.setAttribute("id", "table"); + content.appendChild(table); + var tr = document.createElement("TR"); + tr.setAttribute("id", "heading"); + table.appendChild(tr); + + var col1 = document.createElement("TD"); + var cell1 = document.createTextNode("Domain"); + col1.appendChild(cell1); + tr.appendChild(col1); + + var col2 = document.createElement("TD"); + var cell2 = document.createTextNode("Preferred URL"); + col2.appendChild(cell2); + tr.appendChild(col2); + + var col3 = document.createElement("TD"); + var cell3 = document.createTextNode("Delete"); + col3.appendChild(cell3); + tr.appendChild(col3); + + table.style.border = "thin solid #000000"; + //tr.style.border = "thin solid #000000"; + col1.style.border = "thin solid #000000"; + col2.style.border = "thin solid #000000"; + col3.style.border = "thin solid #000000"; + var rowIndex = 0; + Object.keys(data).forEach(function(domain, index){ + var rowSpan = (data[domain]).length; + data[domain].forEach(function(url, url_index) { + var dataRow = document.createElement("TR"); + dataRow.id = rowIndex; + table.appendChild(dataRow); + if (url_index === 0) { + var col1 = document.createElement("TD"); + col1.rowSpan = rowSpan; + var cell1 = document.createTextNode(domain); + col1.appendChild(cell1); + col1.style.border = "thin solid #000000"; + dataRow.appendChild(col1); + } + var col2 = document.createElement("TD"); + var cell2 = document.createTextNode(url); + col2.appendChild(cell2); + col2.style.border = "thin solid #000000"; + dataRow.appendChild(col2); + var col3 = document.createElement("TD"); + var cell3 = document.createElement("INPUT"); + cell3.type = "checkbox"; + cell3.id = domain; + cell3.name = "delete_chkbx"; + col3.appendChild(cell3); + col3.align = "center"; + col3.style.border = "thin solid #000000"; + dataRow.appendChild(col3); + rowIndex++; + }); + + }); + //content.appendChild(text); + + }); +} + +function delete_selected_options() { + alert("in delete"); + var allChBx = document.getElementsByName("delete_chkbx"); + + chrome.storage.sync.get( "preferedPages", function(items) { + alert("items" + JSON.stringify(items)); + var origObj = items.preferedPages; + allChBx.forEach (function (chkbx) { + //alert(chkbx); + if (chkbx.checked) { + //alert("chked"); + var rowObj = chkbx.parentElement.parentElement; + var rowId = chkbx.parentElement.parentElement.id; + var domain; + var url; + //alert(rowObj.childNodes.length); + if (rowObj.childNodes.length === 2) { + domain = chkbx.id; + url = rowObj.childNodes[0].innerHTML; + } else { + domain = rowObj.childNodes[0].innerHTML; + url = rowObj.childNodes[1].innerHTML; + } + alert(rowId + "--" + domain + "--" + url); + alert("orig obj" + JSON.stringify(origObj)); + var urlIndex = origObj[domain].indexOf(url); + alert("index in obj-" + urlIndex); + origObj[domain].splice(urlIndex, 1); + alert("obj after delete" + JSON.stringify(origObj)); + } + }); + alert("obj after delete" + JSON.stringify(origObj)); + chrome.storage.sync.set({preferedPages: origObj}, function() { + // Update status to let user know options were saved. + var status = document.getElementById('status'); + status.textContent = 'Options saved.'; + setTimeout(function() { + status.textContent = ''; + }, 750); + }); + //items.preferedPages.prefDomain.push(prefUrl); + //alert("after changing" + items.preferedPages.prefDomain.push(prefUrl)); }); + + } document.addEventListener('DOMContentLoaded', restore_options); document.getElementById('save').addEventListener('click', save_options); +document.getElementById('delete').addEventListener('click', delete_selected_options); diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..4c7445f --- /dev/null +++ b/pages.json @@ -0,0 +1,53 @@ +{ +"amazon": [ + {"Books": "http://www.amazon.in/books"}, + {"Kitchen": "http://www.amazon.in/kitchen"}, + {"Grocery": "http://www.amazon.in/Gourmet-Specialty-Foods"}, + {"Mobile-Phones": "http://www.amazon.in/mobile-phones"} +], +"cnn" : [ + {"Regions": "http://edition.cnn.com/regions"}, + {"Politics": "http://edition.cnn.com/politics"}, + {"International": "http://money.cnn.com/INTERNATIONAL/"}, + {"Entertainment": "http://edition.cnn.com/entertainment"}, + {"Technology": "http://money.cnn.com/technology/"} +], +"yahoo" : [ + {"NASDAQ" : {"url": "https://finance.yahoo.com/chart/^IXIC", "selected": false}}, + {"NFLX" : "https://finance.yahoo.com/chart/NFLX"}, + {"GOOGL" : "https://finance.yahoo.com/chart/GOOGL"}, + {"AAPL" : "https://finance.yahoo.com/chart/AAPL"}, + {"PCLN" : "https://finance.yahoo.com/chart/PCLN"}, + {"FB" : "https://finance.yahoo.com/chart/FB"}, + {"SIRI" : "https://finance.yahoo.com/chart/SIRI"}, + + {"AAOI" : "https://finance.yahoo.com/chart/AAOI"}, + {"PLCE" : "https://finance.yahoo.com/chart/PLCE"}, + {"MYSZ" : "https://finance.yahoo.com/chart/MYSZ"}, + {"HTGM" : "https://finance.yahoo.com/chart/HTGM"}, + {"SNPS" : "https://finance.yahoo.com/chart/SNPS"}, + {"COOL" : "https://finance.yahoo.com/chart/COOL"}, + {"AUPH" : "https://finance.yahoo.com/chart/AUPH"}, + {"TECL" : "https://finance.yahoo.com/chart/TECL"}, + {"AKTX" : "https://finance.yahoo.com/chart/AKTX"}, + {"SLCA" : "https://finance.yahoo.com/chart/SLCA"}, + {"WIX" : "https://finance.yahoo.com/chart/WIX"} +], +"f-apimlb810lv":[ + {"subscription": "https://f-apimlb810lv/m/subscription/ui/"}, + {"remote": "https://f-apimlb810lv/m/remote/ui/"}, + {"telemetry": "https://f-apimlb810lv/m/telemetry/ui/"}, + {"location": "https://f-apimlb810lv/m/location/ui/"}, + {"notification": "https://f-apimlb810lv/m/notification/ui/"}, + {"monitor": "https://f-apimlb810lv/m/monitor/ui/"} +], + "f-loggui801lv:9000": [ + {"APILogs": "https://f-loggui801lv:9000/streams/564f49c3e4b0eaab4985f6e2/messages?rangetype=relative&q=*+AND+facility%3Aapim&relative=0&fields=http_method%2Chttp_status%2Cmessage%2Creq_url%2Csource#fields=http_method%2Chttp_status%2Cmessage%2Creq_url%2Csource"}, + { + "AOTALogs": { + "url": "https://f-loggui801lv:9000/streams/5899e8c6e4b057ec305d93d0/messages?rangetype=relative&q=*+AND+facility%3Aapim&relative=0&fields=http_method%2Chttp_status%2Cmessage%2Creq_url%2Csource#fields=http_method%2Chttp_status%2Cmessage%2Creq_url%2Csource", + "selected": false + } + } + ] +} diff --git a/popup.html b/popup.html index 6499b37..56ad5c2 100644 --- a/popup.html +++ b/popup.html @@ -1,25 +1,28 @@ + + Select pages to view +
- - + +
+ +
diff --git a/popup.js b/popup.js index ae42158..dbe2149 100644 --- a/popup.js +++ b/popup.js @@ -1,38 +1,119 @@ -/** - * - * Created by gdev on 3/29/2017. - */ var urls = { - link1: 'http://www.amazon.in/books', - link2: 'http://www.amazon.in/kitchen', - link3: 'http://www.amazon.in/Grocery', - link4: 'http://www.amazon.in/mobile-phones' + "amazon": [ + {"Books": "http://www.amazon.in/books"}, + {"Kitchen": "http://www.amazon.in/kitchen"}, + {"Grocery": "http://www.amazon.in/Gourmet-Specialty-Foods"}, + {"Mobile-Phones": "http://www.amazon.in/mobile-phones"} + ], + "cnn" : [ + {"Regions": "http://edition.cnn.com/regions"}, + {"Politics": "http://edition.cnn.com/politics"}, + {"International": "http://money.cnn.com/INTERNATIONAL/"}, + {"Entertainment": "http://edition.cnn.com/entertainment"}, + {"Technology": "http://money.cnn.com/technology/"} + ] }; + function clickHandler(e) { - // var link1 = document.getElementById('link1'); - var links = document.getElementsByName('link'); - links.forEach(function (link) { - if (link.checked) - chrome.tabs.create ({url : urls[link.id]}); + var allUrls = document.getElementsByName("link"); + var urlsToOpen = []; + allUrls.forEach (function (url) { + console.log(url); + if (url.checked) { + chrome.tabs.create({url: url.value, active : false}); + } }); - chrome.tabs.executeScript({code : "var selectedPages = 'krish';"}, - function (result) { - chrome.tabs.executeScript({file : "openSelectedPages.js"}, function(result){}); - }); + + + window.close(); +} +function closeWindow (e) { window.close(); } document.addEventListener('DOMContentLoaded', function () { + document.getElementById('cancelbtn').addEventListener('click', closeWindow); document.getElementById('openbtn').addEventListener('click', clickHandler); - var links = document.getElementsByName('link'); + var content = document.getElementById('content'); + + var jsonData; + var xhr = new XMLHttpRequest(); + xhr.open('GET', chrome.extension.getURL('mypages.json'), true); + xhr.onreadystatechange = function() { + console.log("here"); + if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { + console.log(xhr.responseText); + jsonData = JSON.parse(xhr.responseText); + } + }; + xhr.send(); - links.forEach(function (link) { - link.addEventListener('click', function (e) { - document.getElementById('openbtn').disabled = false; - }); + getCurrentTabUrl(function(currentUrl) { + var domain = getDomain(currentUrl); + var name = domain.split('.')[0]; + var allurls = jsonData[name]; + console.log(jsonData[name]); + if(jsonData[name]){ + var list = document.createElement("UL"); + var i=1; + var value=""; + allurls.forEach(function(page) { + console.log(Object.keys(page)[0]); + console.log(Object.values(page)[0]); + var input = document.createElement("INPUT"); + input.setAttribute("type", "checkbox"); + input.setAttribute("value", Object.values(page)[0]); + input.setAttribute("name", "link"); + var id = Object.keys(page)[0]; + input.setAttribute("id", id); + + var label = document.createElement('label'); + label.htmlFor = id; + label.appendChild(document.createTextNode(id)); + list.appendChild(input); + list.appendChild(label); + var line = document.createElement('br'); + list.appendChild(line); + }); + content.appendChild(list); + } }); + }); + +function getDomain(url, subdomain) { + subdomain = subdomain || false; + + url = url.replace(/(https?:\/\/)?(www.)?/i, ''); + + if (!subdomain) { + url = url.split('.'); + + url = url.slice(url.length - 2).join('.'); + } + + if (url.indexOf('/') !== -1) { + return url.split('/')[0]; + } + + return url; +} + +function getCurrentTabUrl(callback) { + var queryInfo = { + active: true, + currentWindow: true + }; + + chrome.tabs.query(queryInfo, function(tabs) { + + var tab = tabs[0]; + var url = tab.url; + callback(url); + }); + +}