From 6c5da9538a098aaa953782625164eb196b64631a Mon Sep 17 00:00:00 2001 From: eclipse Date: Wed, 27 Aug 2025 23:26:38 +0200 Subject: [PATCH] initial commit --- .gitignore | 2 ++ icons/samoware-multisave-32.png | Bin 0 -> 385 bytes icons/samoware-multisave-48.png | Bin 0 -> 522 bytes icons/samoware-multisave-96.png | Bin 0 -> 966 bytes manifest.json | 28 +++++++++++++++++++ samoware-multisave.js | 47 ++++++++++++++++++++++++++++++++ 6 files changed, 77 insertions(+) create mode 100644 .gitignore create mode 100644 icons/samoware-multisave-32.png create mode 100644 icons/samoware-multisave-48.png create mode 100644 icons/samoware-multisave-96.png create mode 100644 manifest.json create mode 100644 samoware-multisave.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b24cb77 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.code-workspace +tmp.md diff --git a/icons/samoware-multisave-32.png b/icons/samoware-multisave-32.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b76534f255f7934baedd82f6bac94dcd84754c GIT binary patch literal 385 zcmV-{0e=38P)xV&*MLAxe$?UwsyPZ&(-PRj?q3R=g-ivKG8L#!BCv{5j6f;O zWiD`u4$6H3c`q3|}O6UK^p2t>@`1|K2!n3wZMSnOMY-#&S&0uhA}SqjXA zZ8YhgUk~?AEKtDF82kRwkkv`;6^zS(Ky$=zdD=8WXP3RA3>?%(nWPL$B=B}O|q00000NkvXXu0mjfg^ilb literal 0 HcmV?d00001 diff --git a/icons/samoware-multisave-48.png b/icons/samoware-multisave-48.png new file mode 100644 index 0000000000000000000000000000000000000000..4e82f3589f1b44fbb9f73fad6525329b4b883f49 GIT binary patch literal 522 zcmV+l0`>igP)3#3}}mmtvd<|0w|< zz!R_nENVyz7*!?Uu@hm0y!BwD6t6~01hd^0=ADAexE_1y3B>Vzp+2+dF zL5Xz@RArubV8JIaFGt7QwrTnz-tZlXj^umKd)rcR6{-fj0{(T+Yrl+EV<=wxeP9V# zRy?O;-^hSz=@6*u_cUZqZ36We`aE@=0^`!uRn_mQ$Rma}fh2MMr9d{~C#Iyx0FP3u zSMv`}eeK1jp=n8tCqZ^Iz@-6QXSYu-q}Hw!LVV~>Dg~A2qs0Pz0nOmj?TJ%VSpWb4 M07*qoM6N<$f{P>5Pyhe` literal 0 HcmV?d00001 diff --git a/icons/samoware-multisave-96.png b/icons/samoware-multisave-96.png new file mode 100644 index 0000000000000000000000000000000000000000..25591e8dd86f0e42c1434100cf37277187348975 GIT binary patch literal 966 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9GG!XV7ZFl&wk0|Rq~ zr;B4q#hkZut+Pb}CEDck4c+!E*&Ng%;GrnRBI+98t{z&x^FE^{c#Mu*#n+^DO&%XKQP0fAF-?kqP36-6nQ#t?ayEE^M z*m({cfRM9ncVk@wgGG=-8I$ZKYf-M_jphzP1!)a`FIg|2E3Kn0ha=*XE?iSD780G5JQ$2d1C7(f{Xn&%;RWGfTOCF|5%n_;dHb{hpR$);@Wg zy)%oBMQ!L^c*d-bp;q^X--IuzrzCR^noVQ&H@-b{%i+tPSS-pyDm7;@y>p#%`#@;I zY&XU}ZB^Oa%oEHDqGva#9&l!TIz_a+WT(?)hT}#FH}(sv=T7L>5Dr+#eS;;ZS7UcW z^h~?^Ox*z*3Sluf&l}BMxB5GSaDdHs!YY{YehSkF8@iFmSgXXAzjuV1HoC{|#rH-ue7~H%sWl=8OKHd;Z_x`;+B%z-6zs z^v)R>ZVhwUP5S3{a3(Xg7&0E3!H~E}^up8n;1aX*;k8XJ+7I%w=9ORY-okWm`LmaK z*{V^D^MgN^Y~Pv$Q|{AXpynVUtkATy;T?x}G&kGTC zQk$iH%zJWt%P(#4);OCh<-=%c}R{j-TX* myH{hk90zBE!v-4j>sNeI`7UWbkzLb6Mw<&;$T%qMIE6 literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..7bb5887 --- /dev/null +++ b/manifest.json @@ -0,0 +1,28 @@ +{ + "manifest_version": 2, + "name": "samoware-multisave", + "version": "1.0", + + "description": "Whne using the groupware CommuniGate with the web application Samoware, this Browser extension saves all files attached to an openend email to a directory of the user's chhosing, prefixing each entry's filename with the current date. Yes, it's quite specific.", + + "icons": { + "48": "icons/samoware-multisave-48.png", + "96": "icons/samoware-multisave-96.png" + }, + + "permissions": [ + "activeTab", + "downloads" + ], + + "browser_action": { + "default_icon": "icons/samoware-multisave-32.png", + "default_title": "Samoware MultiSave" + }, + + "background": { + "scripts": [ + "samoware-multisave.js" + ] + } +} diff --git a/samoware-multisave.js b/samoware-multisave.js new file mode 100644 index 0000000..0fe9675 --- /dev/null +++ b/samoware-multisave.js @@ -0,0 +1,47 @@ + + + +function getCurrentDate() { + let today = new Date(); + let yyyy = today.getFullYear(); + let mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0! + let dd = String(today.getDate()).padStart(2, '0'); + return yyyy + "-" + mm + "-" + dd; +} + +function extractFileUrlsAndNames() { + return []; +} + +function onStartedDownload(id) { + console.log(`Started downloading: ${id}`); +} + +function onFailed(error) { + console.log(`Download failed: ${error}`); +} + + + +function handleButtonClick(event) { + let currentDate = getCurrentDate(); + + let files = extractFileUrlsAndNames(); + + for (let i = 0; i < files.length; i++) { + // prefix files[i].filename with currentDate + let prefixedFilename = currentDate + " " + files[i].filename; + + let dl = browser.downloads.download({ + url: files[i].url, + filename: prefixedFilename, + saveAs: (i == 0) // raise a path chooser dialog for the first file only; all later files will (hopefully!) be saved to the same folder + }).then(onStartedDownload, onFailed); + } +} + + + + +// add listener for the extension button +browser.browserAction.onClicked.addListener(handleButtonClick); \ No newline at end of file