From 1e8b855974c12d1f84278f72f430eb85220ae8ff Mon Sep 17 00:00:00 2001 From: Wendelin Keimel Date: Thu, 27 Jan 2022 12:15:05 +0100 Subject: [PATCH 1/9] add traktor/trektor icon --- icons/64.png | Bin 0 -> 2709 bytes manifest.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 icons/64.png diff --git a/icons/64.png b/icons/64.png new file mode 100644 index 0000000000000000000000000000000000000000..1da020e9a93cbeabb1a776a470b8fa9962f8e547 GIT binary patch literal 2709 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 P00000NkvXXu0mjf*aiy! literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index ac60555..155c189 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "description": "Browser-Extension zum automatischen Anlegen von Toggl tracking tasks", "version": "0.0.1", "icons": { - "64": "icons/icon.png" + "64": "icons/64.png" }, "content_scripts": [ From 52d09ec2179796da5a5fbd31e814367673087c39 Mon Sep 17 00:00:00 2001 From: Wendelin Keimel Date: Thu, 27 Jan 2022 14:10:47 +0100 Subject: [PATCH 2/9] make tokens configurable --- content_script.js | 179 +++++++++++++++++++++++---------------------- icons/icon.png | Bin 3066 -> 0 bytes manifest.json | 3 +- options/index.html | 11 ++- options/script.js | 22 +++++- 5 files changed, 123 insertions(+), 92 deletions(-) delete mode 100644 icons/icon.png diff --git a/content_script.js b/content_script.js index 87d6381..7151b81 100644 --- a/content_script.js +++ b/content_script.js @@ -29,77 +29,62 @@ const mappings = { }; function onClick() { - let apiKey = "***" - //generate token at https://trello.com/1/authorize?expiration=never&scope=read,write,account&response_type=token&name=Server%20Token&key=afadffe77f745496f80ebb4bf460c615 - let token = "af00d9597af9fb897f6b2fedb3b7152845991fe186caca08cf5dbb03bba40ffc" - let togglToken = "***" - - const idLong = window.location.pathname.split("/")[2]; - var url = new URL(`https://api.trello.com/1/cards/${idLong}?key=${apiKey}&token=${token}`) - fetch(url.toString()).then(response => response.json()).then(response => { - const idShort = response["idShort"] - - console.log("Hallo") - var labelShort, labelLong = undefined - for (var i in response["labels"]) { - if (labelShort == undefined) { - labelShort = mappings[response["labels"][i]["name"]] - labelLong = (labelShort != undefined) ? response["labels"][i]["name"] : labelLong - } else if (mappings[response["labels"][i]["name"]] != undefined) { - alert(`Diese Karte hat sowohl "${labelShort}" als auch "${mappings[response["labels"][i]["name"]]}".`) + let trelloApiKey = "afadffe77f745496f80ebb4bf460c615" + browser.storage.local.get().then(result => { + const trelloToken = result.trello + const togglToken = result.toggl + + trelloToken = "af00d9597af9fb897f6b2fedb3b7152845991fe186caca08cf5dbb03bba40ffc" + togglToken = "1ccd218cb782e37aa2a50ed6b546272e" + + const idLong = window.location.pathname.split("/")[2]; + var url = new URL(`https://api.trello.com/1/cards/${idLong}?key=${trelloApiKey}&token=${trelloToken}`) + fetch(url.toString()).then(response => response.json()).then(response => { + const idShort = response["idShort"] + + var labelShort, labelLong = undefined + for (var i in response["labels"]) { + if (labelShort == undefined) { + labelShort = mappings[response["labels"][i]["name"]] + labelLong = (labelShort != undefined) ? response["labels"][i]["name"] : labelLong + } else if (mappings[response["labels"][i]["name"]] != undefined) { + alert(`Diese Karte hat sowohl "${labelShort}" als auch "${mappings[response["labels"][i]["name"]]}".`) + } } - } - - if (labelShort == undefined) { - alert("Diese Karte besitzt kein in den mappings vorhandenes Label.") - return false - } - if (!response["name"].endsWith(`#${labelShort}_${idShort}`)) { - - - url = new URL(`https://api.trello.com/1/cards/${idLong}`) - - var data = { - "name": `${response["name"]} #${labelShort}_${idShort}` - }; - fetch(url.toString(), { - method: 'PUT', - headers: { - 'Authorization': `OAuth oauth_consumer_key="${apiKey}", oauth_token="${token}"`, - 'Content-Type': 'application/json' - }, - body: JSON.stringify(data) - }).then(response => { - if (!response.ok) { - alert(`Error ${response.status}:\n${response.statusText}`) - return false - } + if (labelShort == undefined) { + alert("Diese Karte besitzt kein in den mappings vorhandenes Label.") + return false + } - }) + if (!response["name"].endsWith(`#${labelShort}_${idShort}`)) { + + + url = new URL(`https://api.trello.com/1/cards/${idLong}`) + + var data = { + "name": `${response["name"]} #${labelShort}_${idShort}` + }; + fetch(url.toString(), { + method: 'PUT', + headers: { + 'Authorization': `OAuth oauth_consumer_key="${trelloApiKey}", oauth_token="${trelloToken}"`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify(data) + }).then(response => { + if (!response.ok) { + alert(`Error ${response.status}:\n${response.statusText}`) + return false + } + }) - } - url = new URL("https://api.track.toggl.com/api/v8/workspaces") - const togglAuth = btoa(`${togglToken}:api_token`) - fetch(url.toString(), { - headers: { - 'Authorization': `Basic ${togglAuth}`, - 'Content-Type': 'application/json' - } - }).then(response => response.json()).then(response => { - for (var i in response) { - if (response[i]["name"] == "aboutsource") { - var wid = response[i]["id"] - } - } - if (wid == undefined) { - alert("WorkspaceID undefined\nDies bedeutet, du hast entweder keinen Zugriff zum a:s toggl oder es ist kein API-Token angegeben.") - return false } - url = new URL(`https://api.track.toggl.com/api/v8/workspaces/${wid}/projects`) + url = new URL("https://api.track.toggl.com/api/v8/workspaces") + const togglAuth = btoa(`${togglToken}:api_token`) fetch(url.toString(), { headers: { 'Authorization': `Basic ${togglAuth}`, @@ -107,36 +92,54 @@ function onClick() { } }).then(response => response.json()).then(response => { for (var i in response) { - if (response[i]["name"].endsWith(`(${labelShort})`)) { - var pid = response[i]["id"] - - url = new URL('https://api.track.toggl.com/api/v8/tasks') - data = { - "task": { - "name": `${labelShort}_${idShort}`, - "pid": pid + if (response[i]["name"] == "aboutsource") { + var wid = response[i]["id"] + } + } + if (wid == undefined) { + alert("WorkspaceID undefined\nDies bedeutet, du hast entweder keinen Zugriff zum a:s toggl oder es ist kein API-Token angegeben.") + return false + } + + url = new URL(`https://api.track.toggl.com/api/v8/workspaces/${wid}/projects`) + fetch(url.toString(), { + headers: { + 'Authorization': `Basic ${togglAuth}`, + 'Content-Type': 'application/json' + } + }).then(response => response.json()).then(response => { + for (var i in response) { + if (response[i]["name"].endsWith(`(${labelShort})`)) { + var pid = response[i]["id"] + + url = new URL('https://api.track.toggl.com/api/v8/tasks') + data = { + "task": { + "name": `${labelShort}_${idShort}`, + "pid": pid + } } + fetch(url.toString(), { + method: 'POST', + headers: { + 'Authorization': `Basic ${togglAuth}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify(data) + }).then(response => { + console.log(response) + }) } - fetch(url.toString(), { - method: 'POST', - headers: { - 'Authorization': `Basic ${togglAuth}`, - 'Content-Type': 'application/json' - }, - body: JSON.stringify(data) - }).then(response => { - console.log(response) - }) } - } + }) }) + }) + }) + window.addEventListener("pushstate", function () { + if (window.location.pathname.startsWith("/c/")) { + addButton() + } }) } - -window.addEventListener("pushstate", function () { - if (window.location.pathname.startsWith("/c/")) { - addButton() - } -}) diff --git a/icons/icon.png b/icons/icon.png deleted file mode 100644 index 063cfa8f40d2773ce841dea48d343e3940b2b7ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3066 zcmV z|GfVHoCCu|`E-W4U&-k7gg@K%j4ZO_WYO^}A8#LaeqNUZU1IKM8rhdOo%w+;JEglK zv7;4<8}H{GBk}L!vy$47miuA`Lglk_Z0(dxTW?ixWNH%o7ggdkRdN<-5_d-7*|ish zl)i@tGY?uN3ma!9wrhQMwyh(aT#(MRWXzDf?E@EZQUu33;(1Q-I*V1wC94v9z(*RO z1)A!0L_zvbTB<_wAVp-~Q@u`E^SW+m^WA#2LO)X^=PAWw|2am96~gB-yC%!LL!zGA zP9(P}f}L0R;+bg%(2-X@kaEfmA8Jts>f|P;VcjMpvj*)&PqrikJKP z+&o8rvxF~rIwz_kw?&)px>SXwdR>?BGyKl9Gl>JZ)Wy}%LYklr8c%0Aeq0UY6*MhAMcr7Z5;)X1 zTB{dh3j2Z{Hq}@YWWhc_6}ZjjK*A0npwoUng^fwP#2uRm;x9rlJih;M!VKg7pOGm0b^?t*<70E*J8y+U9>@4U_`?| zL$=8QhXQ6s?*FG;NERHu7y|gxY-0mpzWX{YK8xxSuL!o@H0*bq5ntU2+-_jhYkf5YmmcggYN8n5AuzDx;Z<-*#F%X&`P2AeBbz_Md?D&b9?YVkqpZ<7fVhEUgB&@*qqGHiXatlu-Vs3DMAp+Fz3-cw)Ls?Y zt#>oPX@Dtkoff&R;CffZ<6u!09n)!%k(Q;ZJ5837$>fEH8YCCa!| z$?-0MR5XL|w*p$ESdZ}K%!D6NFtLn=(D%(H2Y?o6g0^}tM!G((3G716>%7>kk|HAs zB2A^~{C zpdq4~Ax%KnDBId8OSXZUqSH2NFc{;ruQ#j;A6YKQU%8# z%E$jhdva_;HN1aUpbgr_bnQl5z$xZSot$oPz>$*@*NX8W&d+gY1m5Xip1)#9WpG)l z9$5U8t}WrmHdB-Eqg!Ce}9tM$kr_qGFO3Xo5Cq3@jN? zE_>bca4%{AoSK!`L0y*mUhy9$mR;OES1;KoZ{uO6mri+Y{dp2nCuR>Bp$Y`hDo z@3O+R1$9k@?ZgF~@>dNrID#uUgF7@BT1XSLL8C9zkyPtY_4D@5f#pwsSh8)(rLqH} zUVhMPG!7S0FC&oB+_`$en&%7irniqXeWFCGwi@v;qLve#OQ>W1eNg*2a4Mx9E;Bk$ zyu~}LLDZoM+Muz{sikEk$7@Rl?zp&P=5;i#StPw^{m9GbJWq5oeX2B=d63qEFQVVo zIgjcV-X4KV(Feb{3~se?h8A_nz@1t~xA+(jK-#p?-tPN(C^x;b%8N#USN98*!IeYL z9vjX)YUyN&BC%)=!0)VJs+95uR}4K1ZsietjiFB(w6}YI4o#*&^RwE=X^RIOzPMw? z_o3Xmm7&~udT4k0jlzwiF9veDzhU)^K@-_2Q61o6r&`5Ti4(YmcBS7ixDsb@hX!b| z1bUhl3w6j zd-AD*eJo{U-`0_>eM`H*IHtLM$9gdj$%1_pMQe3GXbLAkr%@Menv_VD?~SwjUR+fWt{atW;+nZPlk5QsR-@K!s>fNTh#ML_|YXECtAw}Z?+|@9yfpqY}kM;c|p(N4RQly_Crh^ zTsM4U>7Qp+RPDiK`$fHQ{mXalBnVi*tcpcKWUGK|)`;it#V1S2T*3NR{u-jVJ2C*F z=t~bQ>3_%KfdQ<@fDE<@$!0#;zUL0`Nsgp~4@Q2Bz@u8kxYuK3VUby+=|XLR0j$Uf z54K3yOI2FjpWC) z-#q0h{QbC+^8I{ejZsj?;YwYH7&UsIu#3nBY{6!u+6K`ZisV{YxZ#y@^iox?Vg3ex zJJ_@X&<1U9B{gs+VZ%nF>G>M5z-*?4EOJZp*9L;D2%;?7w#pHofD{Zyk3PIF4OPt}11 zOkg*OsPK#FZ68x5w@8^;N%5A6v~6Y4@EsM~T7bDvbFDp4t7M=6eg*{92*S;7&P`!1u z?$Yykr%~|tTZEBsH;faGPG?L=`ao{REb-CUT}UhAvIBt@6@qINuV<0*(7oh_YLZz zO|v=^$jfRUcOuiiZcP7#?>a?s!03Jn-~BhkzAn$|8D3-m0#b)|yCXX#fBK diff --git a/manifest.json b/manifest.json index 155c189..6d9c6ed 100644 --- a/manifest.json +++ b/manifest.json @@ -20,7 +20,8 @@ "permissions": [ "*://api.trello.com/*", - "*://*.toggl.com/*" + "*://*.toggl.com/*", + "storage" ], "options_ui": { diff --git a/options/index.html b/options/index.html index ed2c975..f21cce0 100644 --- a/options/index.html +++ b/options/index.html @@ -1,11 +1,18 @@ + + Trektor settings - -

Extension settings

+ +

Trektor settings

+ + + Trello Token generieren
+
Toggl Token (ziemlich weit runter scrollen)
+


diff --git a/options/script.js b/options/script.js index 5a71dfb..3d13f93 100644 --- a/options/script.js +++ b/options/script.js @@ -1 +1,21 @@ -//extension settings script +const trelloTextField = document.querySelector("#trello_token") +const togglTextField = document.querySelector("#toggl_token") + +trelloTextField.addEventListener("change", onChange) +trelloTextField.addEventListener("paste", onChange) +togglTextField.addEventListener("change", onChange) +togglTextField.addEventListener("paste", onChange) + +function onChange() { + browser.storage.local.set({ + "trello": trelloTextField.value, + "toggl": togglTextField.value + }) + console.log(`set trello token to ${togglTextField.value}`) + console.log(`set toggl token to ${togglTextField.value}`) +} + +browser.storage.local.get().then(result => { + trelloTextField.value = result["trello"] + togglTextField.value = result["toggl"] +}) From f31e09a2a29502f53140edc8fe09a7b92521a504 Mon Sep 17 00:00:00 2001 From: Wendelin Keimel Date: Thu, 27 Jan 2022 14:18:48 +0100 Subject: [PATCH 3/9] fix GG toggl task creating --- content_script.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/content_script.js b/content_script.js index 7151b81..3ab3702 100644 --- a/content_script.js +++ b/content_script.js @@ -19,7 +19,6 @@ function addButton() { } const mappings = { - "Globalgold": "gg", "GG": "gg", "Audience Builder": "ab", "Audience Exporter": "ae", @@ -34,9 +33,6 @@ function onClick() { const trelloToken = result.trello const togglToken = result.toggl - trelloToken = "af00d9597af9fb897f6b2fedb3b7152845991fe186caca08cf5dbb03bba40ffc" - togglToken = "1ccd218cb782e37aa2a50ed6b546272e" - const idLong = window.location.pathname.split("/")[2]; var url = new URL(`https://api.trello.com/1/cards/${idLong}?key=${trelloApiKey}&token=${trelloToken}`) fetch(url.toString()).then(response => response.json()).then(response => { @@ -109,7 +105,7 @@ function onClick() { } }).then(response => response.json()).then(response => { for (var i in response) { - if (response[i]["name"].endsWith(`(${labelShort})`)) { + if (response[i]["name"].endsWith(`(${labelShort})`) || (labelShort == "gg" && response[i]["name"] == "Globalgold")) { var pid = response[i]["id"] url = new URL('https://api.track.toggl.com/api/v8/tasks') From 99586e4ac48130b35381cd6fb152f8612031ac89 Mon Sep 17 00:00:00 2001 From: Wendelin Keimel Date: Thu, 27 Jan 2022 14:47:16 +0100 Subject: [PATCH 4/9] remove GG Sonderbehandlung --- content_script.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content_script.js b/content_script.js index 3ab3702..1b895d4 100644 --- a/content_script.js +++ b/content_script.js @@ -1,3 +1,5 @@ +console.log("Hallo") + function addButton() { const sidebar = document.querySelector(".window-sidebar") const button = document.createElement('span'); @@ -105,7 +107,7 @@ function onClick() { } }).then(response => response.json()).then(response => { for (var i in response) { - if (response[i]["name"].endsWith(`(${labelShort})`) || (labelShort == "gg" && response[i]["name"] == "Globalgold")) { + if (response[i]["name"].endsWith(`(${labelShort})`)) { var pid = response[i]["id"] url = new URL('https://api.track.toggl.com/api/v8/tasks') From da2f0c7ab527a6c195af9240ac31803388352865 Mon Sep 17 00:00:00 2001 From: WendelinPraktikum <98315207+WendelinPraktikum@users.noreply.github.com> Date: Thu, 27 Jan 2022 14:50:01 +0100 Subject: [PATCH 5/9] =?UTF-8?q?"kein=20unterst=C3=BCtztes=20Projekt"=20sta?= =?UTF-8?q?tt=20"kein=20in=20den=20mappings=20vorhandenes=20Label"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Martin Kalcher --- content_script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content_script.js b/content_script.js index 1b895d4..11cc5ae 100644 --- a/content_script.js +++ b/content_script.js @@ -51,7 +51,7 @@ function onClick() { } if (labelShort == undefined) { - alert("Diese Karte besitzt kein in den mappings vorhandenes Label.") + alert("Diese Karte besitzt kein unterstütztes Projekt Label.") return false } From 276f43e37089adbdb5d71121976f26440dad383a Mon Sep 17 00:00:00 2001 From: Wendelin Keimel Date: Thu, 27 Jan 2022 14:50:22 +0100 Subject: [PATCH 6/9] remove console logs --- content_script.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/content_script.js b/content_script.js index 1b895d4..3718668 100644 --- a/content_script.js +++ b/content_script.js @@ -1,5 +1,3 @@ -console.log("Hallo") - function addButton() { const sidebar = document.querySelector(".window-sidebar") const button = document.createElement('span'); @@ -124,8 +122,6 @@ function onClick() { 'Content-Type': 'application/json' }, body: JSON.stringify(data) - }).then(response => { - console.log(response) }) } } From fe9fde557fa22726ec64c408e877e80daf5ff20a Mon Sep 17 00:00:00 2001 From: WendelinPraktikum <98315207+WendelinPraktikum@users.noreply.github.com> Date: Thu, 27 Jan 2022 14:53:32 +0100 Subject: [PATCH 7/9] use input event listener instead of change and paste Co-authored-by: Martin Kalcher --- options/script.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/options/script.js b/options/script.js index 3d13f93..5a49c04 100644 --- a/options/script.js +++ b/options/script.js @@ -1,10 +1,8 @@ const trelloTextField = document.querySelector("#trello_token") const togglTextField = document.querySelector("#toggl_token") -trelloTextField.addEventListener("change", onChange) -trelloTextField.addEventListener("paste", onChange) -togglTextField.addEventListener("change", onChange) -togglTextField.addEventListener("paste", onChange) +trelloTextField.addEventListener("input", onChange) +togglTextField.addEventListener("input", onChange) function onChange() { browser.storage.local.set({ From 78747221d064e3fa64ad90fcdd30b0f25a7ff70c Mon Sep 17 00:00:00 2001 From: Wendelin Keimel Date: Thu, 27 Jan 2022 14:57:55 +0100 Subject: [PATCH 8/9] use Authorization header for trello get request --- content_script.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/content_script.js b/content_script.js index 32e2cdc..3d4cbc8 100644 --- a/content_script.js +++ b/content_script.js @@ -34,8 +34,13 @@ function onClick() { const togglToken = result.toggl const idLong = window.location.pathname.split("/")[2]; - var url = new URL(`https://api.trello.com/1/cards/${idLong}?key=${trelloApiKey}&token=${trelloToken}`) - fetch(url.toString()).then(response => response.json()).then(response => { + var url = new URL(`https://api.trello.com/1/cards/${idLong}`) + fetch(url.toString(), { + headers: { + 'Authorization': `OAuth oauth_consumer_key="${trelloApiKey}", oauth_token="${trelloToken}"`, + 'Content-Type': 'application/json' + }, + }).then(response => response.json()).then(response => { const idShort = response["idShort"] var labelShort, labelLong = undefined From 08f1446aa37dd5619c38e81bdd3ee98b219ea106 Mon Sep 17 00:00:00 2001 From: Wendelin Keimel Date: Thu, 27 Jan 2022 15:43:40 +0100 Subject: [PATCH 9/9] fix button not appearing and add chrome compatibility(?)(not tested) --- content_script.js | 22 ++++++++++++++++------ options/script.js | 12 ++++++++++-- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/content_script.js b/content_script.js index 3d4cbc8..83a76cc 100644 --- a/content_script.js +++ b/content_script.js @@ -1,3 +1,11 @@ +let engine; + +if (window.browser !== undefined) { + engine = browser; +} else { + engine = chrome; +} + function addButton() { const sidebar = document.querySelector(".window-sidebar") const button = document.createElement('span'); @@ -29,7 +37,7 @@ const mappings = { function onClick() { let trelloApiKey = "afadffe77f745496f80ebb4bf460c615" - browser.storage.local.get().then(result => { + engine.storage.local.get().then(result => { const trelloToken = result.trello const togglToken = result.toggl @@ -136,9 +144,11 @@ function onClick() { }) }) - window.addEventListener("pushstate", function () { - if (window.location.pathname.startsWith("/c/")) { - addButton() - } - }) + } + +window.addEventListener("pushstate", function () { + if (window.location.pathname.startsWith("/c/")) { + addButton() + } +}) diff --git a/options/script.js b/options/script.js index 5a49c04..065c504 100644 --- a/options/script.js +++ b/options/script.js @@ -1,3 +1,11 @@ +let engine; + +if (window.browser !== undefined) { + engine = browser; +} else { + engine = chrome; +} + const trelloTextField = document.querySelector("#trello_token") const togglTextField = document.querySelector("#toggl_token") @@ -5,7 +13,7 @@ trelloTextField.addEventListener("input", onChange) togglTextField.addEventListener("input", onChange) function onChange() { - browser.storage.local.set({ + engine.storage.local.set({ "trello": trelloTextField.value, "toggl": togglTextField.value }) @@ -13,7 +21,7 @@ function onChange() { console.log(`set toggl token to ${togglTextField.value}`) } -browser.storage.local.get().then(result => { +engine.storage.local.get().then(result => { trelloTextField.value = result["trello"] togglTextField.value = result["toggl"] })