From f6f7a8dd54759c08da8466846ed42db0855a1d11 Mon Sep 17 00:00:00 2001 From: Matt Baer Date: Fri, 1 May 2015 23:34:24 -0400 Subject: [PATCH] Paste by Write.as --- .gitignore | 1 + icon.png | Bin 0 -> 398 bytes icon128.png | Bin 0 -> 1793 bytes icon48.png | Bin 0 -> 789 bytes manifest.json | 23 ++++++++++++ popup.html | 84 ++++++++++++++++++++++++++++++++++++++++++ popup.js | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 223 insertions(+) create mode 100644 .gitignore create mode 100644 icon.png create mode 100644 icon128.png create mode 100644 icon48.png create mode 100644 manifest.json create mode 100644 popup.html create mode 100644 popup.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b25c15b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*~ diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..332213019492866e752c706e74080f7e69298a92 GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3HQwj^(N7l!{JxM1({$v_d#0*}aI z1_o}RQf^^JhFNnYfP(BLp1!W^_gNWPdBhmKuKWZFNtU=qlsM<-=BDPAFgO>bCYGe8 zD3oWGWGJ|M`UZqI@`(c#ee-m246!)<_VQls)E^_n;ng;6KLh z{|6GjnBPd9s{~H{jSVd z&=_O#^hw$Uso&CTk|mgL95q!7JSaPDpZ12vs5O;SHi~|f5z=wn^C@_{ZN*_>w+rpZ z71ke{ds8Feq|juUjnO%ad6OM84jTS4Y;lx%Wa90^T~l+=WY>p=beTjGE1g7s_5G4Q z>Z^VnU{o^@bqdv4uzlVXk&eAd#^-KtY&MQrB>jBHD)ptTN%MCcx45>U|GR`A@97;s pPD}e7-W+u7w2{??KmGroiQCs0N6cDUvlkcw44$rjF6*2UngAwSpa%c| literal 0 HcmV?d00001 diff --git a/icon128.png b/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..acdd087447c3c6f44e745b7e8395335f83d3cd22 GIT binary patch literal 1793 zcmbW2`8U*yAI3kEWn>%6$PzP_>{-Uh7O6oDB7|IY$7P1DCCkWm(^zgIOO~;dFhrdh z+m)r5vKvK|EQ3)Z5@Q)IWBKYY_?~mmbDrlp=k>$;$LF1V-Of^gSBe(^00Fd>x#LL_ zewl~+B)cwo(N2o{4;xE!;P{uyURP(Ikki3dZeakxC;H1Eps-lt1cLGCYZl-+E)W+K zmX^|;b%G@E7B}%`cLD>kL3qF{6zhe@`p8Dy#{0=yqOV6x3b^05i2E4gD*QQ-M;L9l{M{b{Y^TYlfSIG`&)!jRp$WWP{7}l978tR*#?cr*4Q-B={-I7Motsjx zA;paOcWljfJNfL0jSE$vY=Q$7t)#?sJLTp{we>c49;olFy+@o|G0f4jyNwTX8fSYT zi~9yz$y4_Tf{Zcf-t;y5P}b2|r`cUBwG6tq4y31}!yrr}XV}ylm|jw@yaq~-$cX|m zT?d63zayjfg4LLTwtHGc?+L9wo)HdRj&>*d7N*bmt4XR-z)Iowf{0VWx!>5H)Kk{d zEZUe36O5_wosFX!ByA_8n&omenyl+VbiwsJh_J9Oz48;_-T3-m5Zux{b z3`EQgS3{7)jp8s)@--Fj3{o)**5H}8bH~Ola62R&jewfwU?z1xWZkDMzaxk4f_!~- z540}V(Z_&s366%19K~aCs?hLbAJx7U!b>gljvfnf9w>I zQgMwa74@hI!65Etk~YkpiOv7U4qsf-fwcMxNkfy{U&`gKyE2-Ip8s%0v~YMmvfpIJLyz3hf1H82*lxouG*q)L5+KqVYSul+E?`*Sc!6nb)qY>* z4<(NqL^{~{$pn{@?se*m>ktU*Og@3nfOyiuJzeeItUJiMnZJU-vs;e?r)8x5$=cB} zBQrV#vjF`L0tBhB`2Cq&TXxsWibwbDtwlc+Iez823v~H$xh(c@438C1iKTIw%W~m` z=G#t&fpR8CzFBY$^*;5S9KJuwCEUYgDJtbMZFVG0g z#?H?EkYg8?ho1Rul$@RNb&~Nk5n_m^M|UWC(k0nA$mFm%(QEpkK!Md8rW|__|N5-1 zsoSVVa^}4!Nvl7(_Nu!j=6GuKOXrnT7RnPfkEgKGsor zC1*pa+iu`P^}gp>%^h{!R?TeTBDHrwtXQ~`Xnfkmo0 zc&&a{*IrX>%lU(&gF&5I0&D`s4Cv%zQNfaF0J8Gx{VLxw!iCa?C*A7e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00MnUL_t(&-tCvaYg9oH$3O3K z8YRXU6%7a$BKRXj(4a^_L9wy1kdQ)b?Cm1N#(zL9f}{w7h?Q0nL9`Nth@!zt1%Dxk zA|eU7i@!)Nd1o^ZhGAav;+^jm?iZH3o%!zG%-rnkECd7u1Ox;G1Ox;G1Oya=C?l^O zShWPF3e2f_E3j70V_?dxDFGXSy0c#$m~55<7lAXzK)cT=;GvQY0_VhVfN5Yq@LO@# z1MiJ2!7Q+CDZ|Pc9q5oqEr!)*-VbycWBY&y<{#*kVG(CBtd!A#s*HMy{toa)&36D> z4W|`2=onc6zL>o$z(_OCN(tx&e#j5$@!a8`0OlR;ZE?h=@BmN~&R3vkIfi9H47>uq zIl39MPb9hC;&6MVAn1cymUK(f`2z6bUsbJ3PE@~}sFr|d4lfx8%${9xkn6xlC-s_& z%_&Cd+}@<*;|}+#+4GRn-OA(cxbGM>tn@=leq3t5=GrtIRl1{jIMDAnFr)M@mAnHO zbND+IKXI_~x7B62m~d{$c3>~C0oX0Fr&4;KID4Fy&wX+~0Nlu{{a6Xyb)tG6IH~4? z!awGe-?yS0QL-(0_E2Ym1!L4r;JSRT0egho34AczDM_PAnLm=iv_)2AV{G`Rj3unzbn z?|})Y*U=qqBnSPql-4VacAim#4n)8TRgU9Do}I}Hu&mb3NhJyh2nYxW_&@On8&l|W Tj}-B)00000NkvXXu0mjf(zI5% literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..f982b21 --- /dev/null +++ b/manifest.json @@ -0,0 +1,23 @@ +{ + "manifest_version": 2, + + "name": "Paste by Write.as", + "description": "Effortlessly share text online.", + "version": "1.0", + + "icons": { + "48": "icon48.png", + "128": "icon128.png" + }, + "browser_action": { + "default_icon": "icon.png", + "default_popup": "popup.html", + "default_title": "Publish this" + }, + "permissions": [ + "activeTab", + "webRequest", + "*://*.write.as/", + "https://fonts.googleapis.com/" + ] +} diff --git a/popup.html b/popup.html new file mode 100644 index 0000000..90c7f6e --- /dev/null +++ b/popup.html @@ -0,0 +1,84 @@ + + + + Paste by Write.as + + + + + +
+ +
+ + Open +
+
+ + + + + +
+
+ + + + + + diff --git a/popup.js b/popup.js new file mode 100644 index 0000000..45c919c --- /dev/null +++ b/popup.js @@ -0,0 +1,115 @@ +var $content; +var $publish; +var $url; + +function publish(content, font) { + if (content.trim() == "") { + return; + } + + $publish.classList.add('disabled'); + $publish.value = "Publishing..."; + $publish.disabled = true; + + var http = new XMLHttpRequest(); + var url = "https://write.as/api/"; + var params = "w=" + encodeURIComponent(content) + "&font=" + font; + http.open("POST", url, true); + + //Send the proper header information along with the request + http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + http.setRequestHeader("User-Agent", "Write.as Chrome Extension v1.0"); + http.setRequestHeader("Content-length", params.length); + http.setRequestHeader("Connection", "close"); + + http.onreadystatechange = function() { //Call a function when the state changes. + if (http.readyState == 4) { + $publish.classList.remove('disabled'); + $publish.value = "Publish"; + $publish.disabled = false; + + if (http.status == 200) { + $publish.style.display = 'none'; + + data = http.responseText.split("\n"); + // Pull out data parts + url = data[0]; + id = url.substr(url.lastIndexOf("/")+1); + editToken = data[1]; + + document.getElementById("publish-holder").style.display = 'none'; + document.getElementById("result-holder").style.display = 'inline'; + + $url = document.getElementById("url"); + $url.value = url; + var $urlLink = document.getElementById("url-link"); + $urlLink.href = url; + + console.log("writeas add " + id + " " + editToken); + } else { + alert("Failed to post. Please try again."); + } + } + } + http.send(params); +} + +var H = { + save: function($el, key) { + localStorage.setItem(key, $el.value); + }, + load: function($el, key) { + $el.value = localStorage.getItem(key); + }, +}; + +document.addEventListener('DOMContentLoaded', function() { + $content = document.getElementById("content"); + $publish = document.getElementById("publish"); + $url = document.getElementById("url"); + var fontRadios = document.postForm.font; + + chrome.tabs.executeScript({ + code: "window.getSelection().toString();" + }, function(selection) { + if (typeof selection !== 'undefined') { + $content.value = selection[0]; + } + // load previous draft + if ($content.value == "") { + H.load($content, 'ext-draft'); + } + }); + + // focus on the paste field + $content.focus(); + + // bind publish action + $publish.addEventListener('click', function(e) { + e.preventDefault(); + publish($content.value, fontRadios.value); + }); + $content.addEventListener('keydown', function(e){ + if (e.ctrlKey && e.keyCode == 13) { + e.preventDefault(); + publish($content.value, fontRadios.value); + } + }); + + // bind URL select-all action + $url.addEventListener('focus', function(e) { + e.preventDefault(); + this.select(); + }); + + // load font setting + H.load(fontRadios, 'font'); + $content.className = fontRadios.value; + // bind font changing action + for(var i = 0; i < fontRadios.length; i++) { + fontRadios[i].onclick = function() { + $content.className = this.value; + H.save(fontRadios, 'font'); + }; + } +});