Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //manifest
- {
- "manifest_version": 2,
- "name": "AS CA",
- "version": "1.2",
- "description": "pre-alpha",
- "minimum_chrome_version": "45.0",
- "offline_enabled": true,
- "icons": {
- "16": "images/icon_new.png",
- "128": "images/icon_new_128.png"
- },
- "app": {
- "background": {
- "scripts": ["js/jquery-2.1.4.js", "js/background.js"]
- }
- },
- "externally_connectable": {
- "matches": ["*://localhost:*/"]
- },
- "permissions": [
- "storage",
- "webview",
- "<all_urls>",
- {
- "fileSystem": [
- "write"
- ]
- }
- ]
- }
- //background
- chrome.app.runtime.onLaunched.addListener(function() {
- chrome.app.window.create('index.html', {
- id: "messaging1ID",
- outerBounds: {
- minWidth: 404,
- maxWidth: 404,
- width: 380,
- minHeight: 400,
- maxHeight: 1000,
- height: 500
- }
- });
- });
- chrome.runtime.onMessageExternal.addListener(function(message, sender, sendResponse) {
- if ("open_app" == message.key) {
- chrome.app.window.create('index.html', {
- 'outerBounds': {
- 'minWidth': 360,
- 'maxWidth': 360,
- 'width': 360,
- 'minHeight': 400,
- 'height': 500
- }
- });
- } else {
- chrome.app.window.create('index.html', {
- 'outerBounds': {
- 'minWidth': 10,
- 'maxWidth': 10,
- 'width': 10,
- 'minHeight': 10,
- 'height': 10
- }
- });
- }
- });
- //index
- <!DOCTYPE html>
- <html>
- <head>
- <title>S CA</title>
- <link href="style.css" rel="stylesheet">
- <script src="js/jquery-2.1.4.js"></script>
- <script src="js/index.js"></script>
- </head>
- <body>
- <div id="refresh">Refresh</div>
- <div id="export">Export
- <div id="status"></div>
- </div>
- <script src="js/export.js"></script>
- </body>
- </html>
- //index
- function sleep(milliseconds) {
- var start = new Date().getTime();
- for (var i = 0; i < 1e7; i++) {
- if ((new Date().getTime() - start) > milliseconds)
- break;
- }
- }
- function generate_feed(xml) {
- var items = xml.getElementsByTagName("item");
- var doc = document.implementation.createHTMLDocument("New Document");
- var i, mark, el = doc.createElement('html');
- el.innerHTML = "<html><head><title>S CA</title></head><body></body></html>";
- mark = 0;
- for (i = 0; i < items.length; i++) {
- var div = document.createElement("div");
- div.className = "block";
- //category
- var inner_cat = document.createElement("div");
- inner_cat.className = "cat";
- inner_cat.innerHTML = $(items[i]).find("category").html();
- div.appendChild(inner_cat);
- //date
- var inner_date = document.createElement("div");
- inner_date.className = "date";
- var pub_date = $(items[i]).find("pubDate").html();
- var date = new Date(pub_date);
- var months = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
- var string = date.getDate() + " " + months[date.getMonth()];
- inner_date.innerHTML = string;
- div.appendChild(inner_date);
- //image
- var inner_img = document.createElement("img");
- inner_img.className = "prev";
- inner_img.id = $(items[i]).find("enclosure").attr('length');
- inner_img.src = 'images/prev_load2_std.GIF';
- inner_img.style.width = "64px";
- inner_img.style.marginLeft = "148px";
- var img_src = $(items[i]).find("enclosure").attr('url');
- var xhr = new XMLHttpRequest();
- xhr.open('GET', img_src, true);
- xhr.responseType = 'blob';
- xhr.send();
- xhr.onload = function(e) {
- if (200 == this.status) {
- inner_img.src = window.URL.createObjectURL(this.response);
- console.log("XHR[" + mark + "]" + inner_img.src);
- var id = this.getResponseHeader('Content-Length').toString();
- document.getElementById(id).src = inner_img.src;
- document.getElementById(id).style.width = "160px";
- document.getElementById(id).style.marginLeft = "auto";
- mark++;
- }
- }
- div.appendChild(inner_img);
- //title
- var inner_title = document.createElement("div");
- inner_title.className = "tit";
- inner_title.innerHTML = $(items[i]).find("title").html();
- div.appendChild(inner_title);
- //description
- var inner_descr = document.createElement("div");
- inner_descr.className = "dsc";
- inner_descr.innerHTML = $(items[i]).find("description").html();
- div.appendChild(inner_descr);
- var inner_br = document.createElement("br");
- inner_descr.appendChild(inner_br);
- //link
- var inner_link = document.createElement("a");
- inner_link.className = "lnk";
- inner_link.href = $(items[i]).find("link").html();
- if (-1 != inner_link.href.indexOf("game") || -1 != inner_link.href.indexOf("thrones") || -1 != inner_link.href.indexOf("prestol")) {
- div.style.backgroundColor = "#FF9933";
- inner_img.src = 'images/prev_load2_spec.GIF';
- }
- //inner_link.target = "_blank";
- inner_link.innerHTML = "Read more";
- inner_descr.appendChild(inner_link);
- el.getElementsByTagName('body')[0].appendChild(div);
- }
- console.log("mark:" + mark);
- string = JSON.stringify(el.getElementsByTagName("body")[0].innerHTML);
- string = string.replace(/<!--\[CDATA\[/g, '').replace(/\]\]-->/g, '');
- console.log('stringified:' + string);
- return string;
- }
- function set_webview() {
- var full_text_url = this.href;
- chrome.app.window.create("webview.html",
- {
- hidden: true,
- outerBounds: {
- minWidth: 720,
- maxWidth: 1024,
- width: 720,
- minHeight: 500,
- maxHeight: 1024,
- height: 800
- }
- }, function(app_window) {
- app_window.contentWindow.addEventListener('DOMContentLoaded', function() {
- var wv = app_window.contentWindow.document.querySelector('webview');
- wv.src = full_text_url;
- wv.addEventListener("loadcommit", function(e) {
- this.executeScript({
- code: "",
- runAt: "document_start"
- });
- });
- app_window.show();
- });
- }
- );
- e.stopPropagation();
- }
- function modify_index(response_data) {
- document.getElementsByTagName("body")[0].innerHTML += JSON.parse(response_data);
- var i, h, blocks = document.getElementsByClassName('block');
- for (i = 0; i < blocks.length; i++) {
- blocks[i].addEventListener("click", function() {
- if ("visible" == this.getElementsByClassName('dsc')[0].style.visibility) {
- this.getElementsByClassName('dsc')[0].style.visibility = "hidden";
- this.getElementsByClassName('date')[0].style.visibility = "hidden";
- $(this).css("height", "180px");
- } else {
- this.getElementsByClassName('dsc')[0].style.visibility = "visible";
- this.getElementsByClassName('date')[0].style.visibility = "visible";
- $(this).css("height", "auto");
- }
- });
- $(blocks[i]).on("click", ".lnk", set_webview);
- }
- }
- function clear_dom() {
- var blocks = document.getElementsByClassName("block");
- for (var i = 0; i < blocks.length; i++) {
- $('.block').remove();
- }
- }
- function get_rss(rss_url) {
- console.log('requseting url:' + rss_url);
- var xhr = new XMLHttpRequest();
- xhr.open("GET", rss_url, true);
- xhr.send(null);
- xhr.onreadystatechange = function() {
- if (4 == xhr.readyState) {
- if (200 == xhr.status) {
- console.log(xhr.responseXML);
- feed = generate_feed(xhr.responseXML);
- clear_dom();
- modify_index(feed);
- } else {
- console.log('status:' + xhr.status);
- }
- } else {
- console.log('readyState:' + xhr.readyState);
- }
- }
- console.log("_Ret from get_rss()");
- }
- document.addEventListener('DOMContentLoaded', function() {
- $(document).on("click", "#refresh", function() {
- this.innerHTML = "+";
- get_rss("http://lenta.ru/rss");
- });
- //document.getElementById("refresh").click();
- console.log("_Ret from event listener");
- });
- //export
- (function() {
- var text = "";
- var savedFileEntry, fileDisplayPath;
- function get_data_as_text() {
- var rss_url = "http://lenta.ru/rss";
- var xhr = new XMLHttpRequest();
- xhr.open("GET", rss_url, true);
- xhr.send(null);
- xhr.onreadystatechange = function() {
- if (4 == xhr.readyState && 200 == xhr.status) {
- var xml = xhr.responseXML;
- var items = xml.getElementsByTagName("item");
- for (var i = 0; i < items.length; i++) {
- text += $(items[i]).find("title").html() + '\n';
- text += '\t' + $(items[i]).find("description").html() + '\n';
- text += '\n';
- for (j = 0; j < 70; j++) text += "=";
- text += '\n';
- }
- text = text.replace(/<!\[CDATA\[/g, '').replace(/\]\]>/g, '');
- return true;
- }
- }
- return true;
- }
- function getTodosAsText(callback) {
- //var text = "lorem ipsum dolor sit amet";
- callback(text);
- }
- function exportToFileEntry(fileEntry) {
- savedFileEntry = fileEntry;
- var status = document.getElementById('export');
- // Use this to get a file path appropriate for displaying
- chrome.fileSystem.getDisplayPath(fileEntry, function(path) {
- fileDisplayPath = path;
- status.innerText = 'Exporting';
- });
- getTodosAsText( function(contents) {
- fileEntry.createWriter(function(fileWriter) {
- var truncated = false;
- var blob = new Blob([contents]);
- fileWriter.onwriteend = function(e) {
- if (!truncated) {
- truncated = true;
- // You need to explicitly set the file size to truncate
- // any content that might have been there before
- this.truncate(blob.size);
- return;
- }
- status.innerText = 'Export completed';
- };
- fileWriter.onerror = function(e) {
- status.innerText = 'Export failed: '+e.toString();
- };
- fileWriter.write(blob);
- });
- });
- }
- function doExportToDisk() {
- if (savedFileEntry) {
- exportToFileEntry(savedFileEntry);
- } else {
- chrome.fileSystem.chooseEntry( {
- type: 'saveFile',
- suggestedName: 'todos.txt',
- accepts: [ { description: 'Text files (*.txt)',
- extensions: ['txt']} ],
- acceptsAllTypes: true
- }, exportToFileEntry);
- }
- }
- document.getElementById("export").addEventListener("click", function() {
- if (true == get_data_as_text()) {
- doExportToDisk();
- }
- });
- })();
- //webview
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- </head>
- <body>
- <webview style="width: 1024px; height: 800px;"></webview>
- <script src="js/webview.js"></script>
- </body>
- </html>
- //webview??
- document.addEventListener('DOMContentLoaded', function() {
- if (-1 != document.URL.indexOf("lenta.ru")) {
- document.getElementById("ban_billboard").style.display = "none";
- }
- });
- var wv = document.querySelector('webview');
- wv.addEventListener('loadcommit', function() {
- wv.insertCSS({
- code: 'body { background: red !important; }',
- runAt: 'document_start'
- });
- });
- //style
- body {
- font-size: 11pt;
- background-color: #808080;
- list-style-type: none;
- -webkit-user-select: none;
- }
- a {
- text-decoration: none;
- color: #FF9933;
- }
- a:hover {
- color: black;
- }
- #refresh , #export{
- display: block;
- cursor: pointer;
- float: left;
- width: 172px;
- text-align: center;
- margin: 5px;
- background-color: #D0D0D0;
- border: 1px solid black;
- border-radius: 2px;
- }
- #refresh:hover, #export:hover {
- background-color: #F0F0F0;
- }
- #export {
- float: right;
- }
- .block {
- display: block;
- float: left;
- cursor: default;
- height: 180px;
- width: 360px;
- margin: 5px;
- background-color: #D0D0D0;
- }
- .cat {
- display: inherit;
- float: left;
- cursor: inherit;
- text-indent: 5px;
- }
- .date {
- display: inherit;
- visibility: hidden;
- margin-right: 5px;
- text-align: right;
- }
- .prev {
- display: inherit;
- cursor: inherit;
- width: 160px;
- margin-left: auto;
- margin-right: auto;
- }
- .tit {
- display: inherit;
- cursor: inherit;
- height: auto;
- text-align: center;
- padding: 5px;
- }
- .dsc {
- display: inherit;
- cursor: inherit;
- visibility: hidden;
- text-align: justify;
- margin: 5px;
- padding: 5px;
- background-color: #F0F0F0;
- }
- .lnk {
- visibility: inherit;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement