From e5de787713569d47bcc17866a8a67ad440807947 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Thu, 3 Feb 2022 22:28:47 +0200 Subject: [PATCH 01/41] Add files via upload --- .../img/baseline_alternate_email_black_24dp.png | Bin 0 -> 316 bytes extension/img/quote_last.png | Bin 0 -> 1023 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 extension/img/baseline_alternate_email_black_24dp.png create mode 100644 extension/img/quote_last.png diff --git a/extension/img/baseline_alternate_email_black_24dp.png b/extension/img/baseline_alternate_email_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..eb14d32250ed7a564f1f4964f9d356cd31c67698 GIT binary patch literal 316 zcmV-C0mJ@@P)&T(#`iy#bC78(4H&LZUX z=5veY(|Bb}J(#Fot#?nA?FTF1p7c1Alom?{)LT03`p`mRg6T)2WTCflb;|mLk zu|il}n+b*9&DuSMI5(Eag>kv-O6}~Vx@BZ69usRCXLI=-K}Gbhq~X?&_Tai}rJAE@iY~@_i6>xA_lWMS9pR$F_%D zAEbNR)`YG0NS)mK;CbDC{n+bM&v1D2S_Gct+r967ci3vzoiTk+{Y|E{AAT6THcZ*~ za@iX8pc$?bZ9yE0%?b~0*F0d72-OmOY0)>wZ@I?z>z?~MI~H|>trlH-J-f75_IP34 z#)u0!W{dTCO+J65mWKEZ7E(t`;Ok3asnWOBB6PVGiT%O^`CbT;{|4C(S(Dzv;YHFC Date: Thu, 3 Feb 2022 15:29:26 -0500 Subject: [PATCH 02/41] Update manifest.json --- extension/manifest.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/extension/manifest.json b/extension/manifest.json index b42c52a..c34ceed 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -15,6 +15,7 @@ "*://*.yiddishworld.com/*", "*://*.198.153.76.147/*" ], + "css":["css/appcss.css"], "js": ["js/contentScript.js", "js/refreshNotificationCount.js", "js/settingsHandler.js"] } ], @@ -45,7 +46,11 @@ "js/addQuoteLastOnlyButton.js", "js/newResponseNotification.js", "js/addGoogleSearch.js", - "js/settingsHandler.js" + "js/settingsHandler.js", + "js/add_button.js", + "img/baseline_alternate_email_black_24dp.png", + "img/quote_last.png" + ], "options_ui": { "page": "settings.html", From 59ed251ffb4c7778fb3d30c85b8e006de23c9bda Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Thu, 3 Feb 2022 22:29:55 +0200 Subject: [PATCH 03/41] Add files via upload --- extension/css/appcss.css | 52 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 extension/css/appcss.css diff --git a/extension/css/appcss.css b/extension/css/appcss.css new file mode 100644 index 0000000..a87acfa --- /dev/null +++ b/extension/css/appcss.css @@ -0,0 +1,52 @@ + +.post-buttons .button.custom-button img { + object-fit: contain !important; + padding-top: 3px !important; + height:12px !important; + width:18px !important; + +} +.post-buttons .app-hidden { + display: none; +} +.button .custom-button.quote-last{ + height:0px !important; + width:0px !important; +} + +.post-buttons .button.custom-button.quote-last img { + object-fit: contain !important; + padding-top: 5px !important; + height:12px !important; + width:18px !important; +} + +.post-buttons .button.custom-button span{ + display: block; + height: 0; + overflow: hidden; + position: absolute; + width: 0px; +} +.clone-first .custom-button img{ + display: block; + height: 0; + overflow: hidden; + position: absolute; + width: 1px; +} +.clone-first .app-hidden { + display: none; +} +.clone-first.app-hidden { + display: none; +} +.custom-button{ + height:18px !important; + width:20px !important; + object-fit: contain !important; + margin:0 !important; + padding: 0 !important; + text-align:center; + user-select:none; +} \ No newline at end of file From 8f824af46f7eeb88d959d20e3a46f5e08af19e43 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Thu, 3 Feb 2022 22:30:34 +0200 Subject: [PATCH 04/41] Add files via upload --- extension/js/add_button.js | 176 +++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 extension/js/add_button.js diff --git a/extension/js/add_button.js b/extension/js/add_button.js new file mode 100644 index 0000000..93495ec --- /dev/null +++ b/extension/js/add_button.js @@ -0,0 +1,176 @@ +function createButton(icon, reference, customClass, title, text, onclick) { + let li = document.createElement('li'); + let a = document.createElement('a'); + let span = document.createElement('span'); + let img = document.createElement('img'); + img.setAttribute("src", `chrome-extension://ddhjfppjadeagekljoinjedloiacblpb/img/${icon}`); + if (reference){ + a.setAttribute('href', reference); + } + if (onclick){ + a.setAttribute('onClick', onclick) + } + a.setAttribute('class', `button custom-button ${customClass}`); + a.setAttribute('title',title ); + span.innerText = text; + a.appendChild(span); + a.appendChild(img); + li.appendChild(a); + return {li, a, span, img} +} + +function getPMHref(id) { + let pm_button = document.querySelector(`#profile${id.replace("post_content", "")} .pm-icon`) + if (pm_button){ + return pm_button.parentElement.getAttribute("href") + } + return null; +} + +function addBtn(){ + let btns = document.querySelectorAll('.post-buttons'); + let isPosting = (window.location.href.includes("posting.php")); + var needUpdating = false; + btns.forEach(btn => { + if(btn.getElementsByClassName('custom-button').length > 0){ + return; + } + needUpdating = true + btn.querySelectorAll('li.hidden:not(.responsive-menu)').forEach(b => { + if (b.getAttribute('class') == "hidden"){ + b.removeAttribute('class') + } + }) + let contentElement = btn.parentElement.getElementsByClassName("content").item(0) + let id = btn.parentElement.getAttribute("id") || "" + let strippedId = id.replace("post_content", "") + strippedId = strippedId.replace("pr", "") + let pingOnClick = `ping_user(${strippedId})` + addSimpleButton(btn, 'baseline_alternate_email_black_24dp.png', null, 'ping-icon', 'דערמאן תגובה', 'דערמאן תגובה', pingOnClick) + if (contentElement.innerHTML.includes("blockquote")) { + addQuoteLastButton(btn, isPosting); + } + let responsiveMenu = btn.getElementsByClassName('responsive-menu').item(0); + try { + btn.removeChild(btn.getElementsByClassName('responsive-menu').item(0)) + }catch (e) { + + } + }); + if (needUpdating){ + let navBar = document.querySelector('#nav-footer'); + navBar.querySelectorAll('li.hidden:not(.responsive-menu)').forEach(si => { + si.setAttribute('class', si.getAttribute('class').replace('hidden', '')) + }) + navBar.removeChild(navBar.getElementsByClassName('responsive-menu').item(0)) + parseDocument($('body')); + } +} + +function addSimpleButton(btn, icon, href, customClass, title, text, onclick){ + let button = createButton(icon, href, customClass, title, text, onclick); + btn.appendChild(button.li); +} + +function getQuoteURL(btn){ + let quoteButton = btn.querySelector('a.button.icon-button.quote-icon'); + if (!quoteButton){ + return null; + } + let href = quoteButton.getAttribute('href'); + return href; +} + +function getPostLink(postID){ + return `https://www.ivelt.com/forum/viewtopic.php?p=${postID}#p${postID}`; +} + +function getUsername(post_id, prefix = 'p'){ + var usernameE = document.querySelector(`#${prefix}${post_id} .username`) + if (!usernameE){ + var usernameE = document.querySelector(`#p${prefix}${post_id} .username-coloured`) + } + var username = "" + if(usernameE){ + username = usernameE.innerText + } + return username +} + +function addQuoteLastButton(btn, isPosting) { + + let href = getQuoteURL(btn) + if (!href){ + return; + } + var onclick = null; + if (isPosting){ + onclick = "last" + btn.querySelector('a.button.icon-button.quote-icon').getAttribute('onclick'); +// button.a.setAttribute("onclick", "last" + onclick); + } + let button = createButton('quote_last.png', href + '&last=true', 'quote-last', 'ציטיר בלויז די לעצטע תגובה', 'ציטיר לעצטע', onclick); + + btn.appendChild(button.li); +} + +function ping_user(post_id){ + let link = getPostLink(post_id) + if (window.location.href.includes("posting.php")){ + let username = getUsername(post_id,"pr") + let text = `[url=${link}][quote="${username}"]\n[/quote][/url]` + insert_text(text) + }else{ + let username = getUsername(post_id) + let text = `[url=${link}][quote="${username}"]\n[/quote][/url]` + addText(text) + } +} + +function addText(text){ + var textarea = document.querySelector("#message-box textarea"); + + if (!isNaN(textarea.selectionStart)) { + var sel_start = textarea.selectionStart; + var sel_end = textarea.selectionEnd; + mozWrapApp(textarea, text, ''); + textarea.selectionStart = sel_start + text.length; + textarea.selectionEnd = sel_end + text.length; + } else if (textarea.createTextRange && textarea.caretPos) { + if (baseHeight !== textarea.caretPos.boundingHeight) { + textarea.focus(); + storeCaret(textarea); + } + var caret_pos = textarea.caretPos; + caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) === ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text; + } else { + textarea.value = textarea.value + text; + } + textarea.focus(); +} +function mozWrapApp(txtarea, open, close) { + var selLength = (typeof(txtarea.textLength) === 'undefined') ? txtarea.value.length : txtarea.textLength; + var selStart = txtarea.selectionStart; + var selEnd = txtarea.selectionEnd; + var scrollTop = txtarea.scrollTop; + + var s1 = (txtarea.value).substring(0,selStart); + var s2 = (txtarea.value).substring(selStart, selEnd); + var s3 = (txtarea.value).substring(selEnd, selLength); + + txtarea.value = s1 + open + s2 + close + s3; + txtarea.selectionStart = selStart + open.length; + txtarea.selectionEnd = selEnd + open.length; + txtarea.focus(); + txtarea.scrollTop = scrollTop; + + return; +} + +addBtn(); + + + + + + + From 42b6a0f411950958485e3d317e2c3ad062f84c95 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Thu, 3 Feb 2022 15:30:48 -0500 Subject: [PATCH 05/41] Delete addQuoteLastOnlyButton.js --- extension/js/addQuoteLastOnlyButton.js | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 extension/js/addQuoteLastOnlyButton.js diff --git a/extension/js/addQuoteLastOnlyButton.js b/extension/js/addQuoteLastOnlyButton.js deleted file mode 100644 index fcb8687..0000000 --- a/extension/js/addQuoteLastOnlyButton.js +++ /dev/null @@ -1,25 +0,0 @@ -function addBtn(){ - let btns = document.querySelectorAll('.post-buttons'); - let isPosting = (window.location.href.includes("posting.php")) - btns.forEach(btn => { - let contentElement = btn.parentElement.getElementsByClassName("content").item(0) - if (contentElement.innerHTML.includes("blockquote")){ - let li = document.createElement('li'); - let a = document.createElement('a'); - let href = btn.querySelector('a.button.icon-button.quote-icon').getAttribute('href'); - let onclick = btn.querySelector('a.button.icon-button.quote-icon').getAttribute('onclick'); - a.setAttribute('href', href + '&last=true'); - a.setAttribute('style', "height:18px;width:12px;margin:0;padding:0 5px;color:black;text-align:center;user-select:none;"); - a.setAttribute('class', 'button'); - a.setAttribute('title', 'ציטיר בלויז די לעצטע תגובה'); - if (isPosting){ - a.setAttribute("onclick", "last"+onclick) - } - li.appendChild(a); - btn.appendChild(li); - a.innerText = '-' - } - }); - } - -addBtn(); From 9f563b18b2ffb7d148342c701bfabb30bb9647f4 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Thu, 3 Feb 2022 15:32:40 -0500 Subject: [PATCH 06/41] Update contentScript.js --- extension/js/contentScript.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/extension/js/contentScript.js b/extension/js/contentScript.js index 5e262a3..19f3827 100644 --- a/extension/js/contentScript.js +++ b/extension/js/contentScript.js @@ -1,15 +1,17 @@ let scripts = [ "js/keyboardShortcuts.js", "js/removeNestedQuotes.js", - "js/addQuoteLastOnlyButton.js", "js/newResponseNotification.js", "js/addGoogleSearch.js", - "js/settingsHandler.js" + "js/settingsHandler.js", + "js/add_button.js" + ]; + scripts.forEach(s => { let e = document.createElement('script'); - e.src = chrome.extension.getURL(s); + e.src = chrome.runtime.getURL(s); (document.head || document.documentElement).appendChild(e); e.onload = function () { e.parentNode.removeChild(e); From 02da98032caffe4d8c619922f9d45b38ae36cb04 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Fri, 4 Feb 2022 01:53:31 -0500 Subject: [PATCH 07/41] Update manifest.json --- extension/manifest.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/extension/manifest.json b/extension/manifest.json index c34ceed..58b1acb 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -15,7 +15,7 @@ "*://*.yiddishworld.com/*", "*://*.198.153.76.147/*" ], - "css":["css/appcss.css"], + "css":["css/appcss.css"], "js": ["js/contentScript.js", "js/refreshNotificationCount.js", "js/settingsHandler.js"] } ], @@ -47,9 +47,9 @@ "js/newResponseNotification.js", "js/addGoogleSearch.js", "js/settingsHandler.js", - "js/add_button.js", - "img/baseline_alternate_email_black_24dp.png", - "img/quote_last.png" + "js/add_button.js", + "img/baseline_alternate_email_black_24dp.png", + "img/quote_last.png" ], "options_ui": { From daa59830c0b695f62d8253d90116087c7e342bc0 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Fri, 4 Feb 2022 01:54:32 -0500 Subject: [PATCH 08/41] Update contentScript.js --- extension/js/contentScript.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/extension/js/contentScript.js b/extension/js/contentScript.js index 19f3827..115f58a 100644 --- a/extension/js/contentScript.js +++ b/extension/js/contentScript.js @@ -4,7 +4,7 @@ let scripts = [ "js/newResponseNotification.js", "js/addGoogleSearch.js", "js/settingsHandler.js", - "js/add_button.js" + "js/add_button.js" ]; @@ -15,5 +15,9 @@ scripts.forEach(s => { (document.head || document.documentElement).appendChild(e); e.onload = function () { e.parentNode.removeChild(e); + var url=chrome.runtime.getURL("img/"); + var evt=document.createEvent("CustomEvent"); + evt.initCustomEvent("yourCustomEvent", true, true, url); + document.dispatchEvent(evt); }; }); From 4fed9584315adb2d779d6567b21b4fcad21ba55a Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Fri, 4 Feb 2022 01:55:36 -0500 Subject: [PATCH 09/41] Update add_button.js --- extension/js/add_button.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/extension/js/add_button.js b/extension/js/add_button.js index 93495ec..e27d6bc 100644 --- a/extension/js/add_button.js +++ b/extension/js/add_button.js @@ -1,9 +1,11 @@ function createButton(icon, reference, customClass, title, text, onclick) { + + let li = document.createElement('li'); let a = document.createElement('a'); let span = document.createElement('span'); let img = document.createElement('img'); - img.setAttribute("src", `chrome-extension://ddhjfppjadeagekljoinjedloiacblpb/img/${icon}`); + img.setAttribute("src", `${icon}`) if (reference){ a.setAttribute('href', reference); } @@ -46,7 +48,11 @@ function addBtn(){ let strippedId = id.replace("post_content", "") strippedId = strippedId.replace("pr", "") let pingOnClick = `ping_user(${strippedId})` - addSimpleButton(btn, 'baseline_alternate_email_black_24dp.png', null, 'ping-icon', 'דערמאן תגובה', 'דערמאן תגובה', pingOnClick) + document.addEventListener('yourCustomEvent', function (e) + { + var url=e.detail; + addSimpleButton(btn, url+'baseline_alternate_email_black_24dp.png', null, 'ping-icon', 'דערמאן תגובה', 'דערמאן תגובה', pingOnClick) + }); if (contentElement.innerHTML.includes("blockquote")) { addQuoteLastButton(btn, isPosting); } @@ -106,11 +112,13 @@ function addQuoteLastButton(btn, isPosting) { var onclick = null; if (isPosting){ onclick = "last" + btn.querySelector('a.button.icon-button.quote-icon').getAttribute('onclick'); -// button.a.setAttribute("onclick", "last" + onclick); } - let button = createButton('quote_last.png', href + '&last=true', 'quote-last', 'ציטיר בלויז די לעצטע תגובה', 'ציטיר לעצטע', onclick); - - btn.appendChild(button.li); + document.addEventListener('yourCustomEvent', function (e) + { + var url=e.detail; + let button = createButton(url+'quote_last.png', href + '&last=true', 'quote-last', 'ציטיר בלויז די לעצטע תגובה', 'ציטיר לעצטע', onclick); + btn.appendChild(button.li); + }); } function ping_user(post_id){ @@ -165,12 +173,4 @@ function mozWrapApp(txtarea, open, close) { return; } - addBtn(); - - - - - - - From 54cd123e0cda992a48d72ceee371f850f6289a6d Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Fri, 4 Feb 2022 01:56:28 -0500 Subject: [PATCH 10/41] Update appcss.css --- extension/css/appcss.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/extension/css/appcss.css b/extension/css/appcss.css index a87acfa..c90129f 100644 --- a/extension/css/appcss.css +++ b/extension/css/appcss.css @@ -10,12 +10,12 @@ display: none; } .button .custom-button.quote-last{ - height:0px !important; + height:0px !important; width:0px !important; } .post-buttons .button.custom-button.quote-last img { - object-fit: contain !important; + object-fit: contain !important; padding-top: 5px !important; height:12px !important; width:18px !important; @@ -43,10 +43,10 @@ } .custom-button{ height:18px !important; - width:20px !important; + width:22px !important; object-fit: contain !important; margin:0 !important; padding: 0 !important; text-align:center; user-select:none; -} \ No newline at end of file +} From ee8f58e4f33e9ca3dc20495bc309b3845bc792ae Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Fri, 4 Feb 2022 01:56:40 -0500 Subject: [PATCH 11/41] Update appcss.css --- extension/css/appcss.css | 1 - 1 file changed, 1 deletion(-) diff --git a/extension/css/appcss.css b/extension/css/appcss.css index c90129f..d628b5f 100644 --- a/extension/css/appcss.css +++ b/extension/css/appcss.css @@ -1,4 +1,3 @@ - .post-buttons .button.custom-button img { object-fit: contain !important; padding-top: 3px !important; From e8a325eb29232136dc125d4cd25c76e7336e9686 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Fri, 4 Feb 2022 03:03:20 -0500 Subject: [PATCH 12/41] Update appcss.css --- extension/css/appcss.css | 41 ++++++---------------------------------- 1 file changed, 6 insertions(+), 35 deletions(-) diff --git a/extension/css/appcss.css b/extension/css/appcss.css index d628b5f..888efc4 100644 --- a/extension/css/appcss.css +++ b/extension/css/appcss.css @@ -1,25 +1,3 @@ -.post-buttons .button.custom-button img { - object-fit: contain !important; - padding-top: 3px !important; - height:12px !important; - width:18px !important; - -} -.post-buttons .app-hidden { - display: none; -} -.button .custom-button.quote-last{ - height:0px !important; - width:0px !important; -} - -.post-buttons .button.custom-button.quote-last img { - object-fit: contain !important; - padding-top: 5px !important; - height:12px !important; - width:18px !important; -} - .post-buttons .button.custom-button span{ display: block; height: 0; @@ -27,19 +5,6 @@ position: absolute; width: 0px; } -.clone-first .custom-button img{ - display: block; - height: 0; - overflow: hidden; - position: absolute; - width: 1px; -} -.clone-first .app-hidden { - display: none; -} -.clone-first.app-hidden { - display: none; -} .custom-button{ height:18px !important; width:22px !important; @@ -49,3 +14,9 @@ text-align:center; user-select:none; } +.quote-last{ + background-image: url("chrome-extension://__MSG_@@extension_id__/img/quote_last.png") !important; +} +.ping-icon{ + background-image: url("chrome-extension://__MSG_@@extension_id__/img/baseline_alternate_email_black_24dp.png") !important; +} From 40ff612da1b0830a0148669d5424e38f7431ab29 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Fri, 4 Feb 2022 03:03:38 -0500 Subject: [PATCH 13/41] Update add_button.js --- extension/js/add_button.js | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/extension/js/add_button.js b/extension/js/add_button.js index e27d6bc..f297eaf 100644 --- a/extension/js/add_button.js +++ b/extension/js/add_button.js @@ -4,8 +4,8 @@ function createButton(icon, reference, customClass, title, text, onclick) { let li = document.createElement('li'); let a = document.createElement('a'); let span = document.createElement('span'); - let img = document.createElement('img'); - img.setAttribute("src", `${icon}`) + //let img = document.createElement('img'); + //img.setAttribute("src", chrome-extension://__MSG_@@extension_id__/img/${icon}) if (reference){ a.setAttribute('href', reference); } @@ -16,9 +16,9 @@ function createButton(icon, reference, customClass, title, text, onclick) { a.setAttribute('title',title ); span.innerText = text; a.appendChild(span); - a.appendChild(img); + //a.appendChild(img); li.appendChild(a); - return {li, a, span, img} + return {li, a, span, } } function getPMHref(id) { @@ -48,11 +48,7 @@ function addBtn(){ let strippedId = id.replace("post_content", "") strippedId = strippedId.replace("pr", "") let pingOnClick = `ping_user(${strippedId})` - document.addEventListener('yourCustomEvent', function (e) - { - var url=e.detail; - addSimpleButton(btn, url+'baseline_alternate_email_black_24dp.png', null, 'ping-icon', 'דערמאן תגובה', 'דערמאן תגובה', pingOnClick) - }); + addSimpleButton(btn, null, null, 'ping-icon', 'דערמאן תגובה', 'דערמאן תגובה', pingOnClick) if (contentElement.innerHTML.includes("blockquote")) { addQuoteLastButton(btn, isPosting); } @@ -113,12 +109,10 @@ function addQuoteLastButton(btn, isPosting) { if (isPosting){ onclick = "last" + btn.querySelector('a.button.icon-button.quote-icon').getAttribute('onclick'); } - document.addEventListener('yourCustomEvent', function (e) - { - var url=e.detail; - let button = createButton(url+'quote_last.png', href + '&last=true', 'quote-last', 'ציטיר בלויז די לעצטע תגובה', 'ציטיר לעצטע', onclick); - btn.appendChild(button.li); - }); + +let button = createButton(null, href + '&last=true', 'quote-last', 'ציטיר בלויז די לעצטע תגובה', 'ציטיר לעצטע', onclick); + btn.appendChild(button.li); + } function ping_user(post_id){ From 66da16f8fedf5dcda1d3212159338204763a8772 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Fri, 4 Feb 2022 03:04:02 -0500 Subject: [PATCH 14/41] Update contentScript.js --- extension/js/contentScript.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/extension/js/contentScript.js b/extension/js/contentScript.js index 115f58a..5bf35ed 100644 --- a/extension/js/contentScript.js +++ b/extension/js/contentScript.js @@ -4,7 +4,7 @@ let scripts = [ "js/newResponseNotification.js", "js/addGoogleSearch.js", "js/settingsHandler.js", - "js/add_button.js" + "js/add_button.js" ]; @@ -15,9 +15,7 @@ scripts.forEach(s => { (document.head || document.documentElement).appendChild(e); e.onload = function () { e.parentNode.removeChild(e); - var url=chrome.runtime.getURL("img/"); - var evt=document.createEvent("CustomEvent"); - evt.initCustomEvent("yourCustomEvent", true, true, url); - document.dispatchEvent(evt); + + }; }); From 7ab9e65803e40e307f8a1ec43b86f768353d43a1 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Fri, 4 Feb 2022 10:06:35 +0200 Subject: [PATCH 15/41] Add files via upload --- .../img/baseline_alternate_email_black_24dp.png | Bin 316 -> 730 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/extension/img/baseline_alternate_email_black_24dp.png b/extension/img/baseline_alternate_email_black_24dp.png index eb14d32250ed7a564f1f4964f9d356cd31c67698..f22913e33b754765632451fdaf2b5382ccdbe131 100644 GIT binary patch literal 730 zcmV<00ww*4P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf0&ht~K~zXfwUxbU zYC#ak$EyY-XpmrDA;CrqQ`toXK@;p!+otdZd<8276*Rs;A{eksBII;B`TqW1#LzH?4Rd#QcjAkf zf7ugWE|;9iWaO(ZE-pA8k8`zJ|# zD)DBs+0Gn-x!2cM@kI<`cQJ&!-L9mDuYjng-|uswP~exB7ik#7rhzYF5DN{BA&kwy zx*VIBaa3Zm?lagBaMMp%LNfbjrbCP&NhY2L^+IAsUH9`1A8q8pc{2J^(R@ zg$A^M2qQJC)yjUqpNGStOdw?lJU%||rH(Odn1c^M3}T_7eg7y2`uh4JRWjsqx#;TZ z3MOha8qy~c39)N1h7B~EP3aK>J2apLMEHNfsnnJef=+{_Jv7 zUnEBxHLcdxuwP$a8y^LX+pX8@(Zj<7wcBmV=kugq0JEfCE|*EYM4o*7I8k^YW7;h$VWKjq+}$A$j!@j=OCl3J}6sSPD{g-WgJ zk^(3-q_1oG0Fgh!sf&KMJv}{by$?C-*R<=3gJ8GYC8J~f($AFWFE$R)`I(SvM*si- M07*qoM6N<$g1gvGP5=M^ literal 316 zcmV-C0mJ@@P)&T(#`iy#bC78(4H&LZUX z=5veY(|Bb}J(#Fot#?nA?FTF1p7c1Alom?{)LT03`p`mRg6T)2WTCflb;|mLk zu|il}n+b*9&DuSMI5(Eag>kv-O6}~Vx@BZ69usRCXLI Date: Fri, 4 Feb 2022 10:12:52 +0200 Subject: [PATCH 16/41] Add files via upload --- extension/img/quote_last.png | Bin 1023 -> 1014 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/extension/img/quote_last.png b/extension/img/quote_last.png index d456279a1b4adfb4ebd3e1934f8b47072646e78b..ee31f5296a492021fd2d4431702d48799ac03da2 100644 GIT binary patch delta 430 zcmV;f0a5<{2lfY3iBL{Q4GJ0x0000DNk~Le0000W0000O2nGNE0Gm_)Gynhq0drDE zLIAGL9O(c600d`2O+f$vv5yPr@4I!Q!9 zR7gwhl`)EgP!vV)3`7ehAPB(?2-X2fX&G<_)jU2NHLz~{db?>0iXJD`v!01lh(H}3JenPJP)>Q)9%jcbi#VQCiNA1 z1-9EQf*^n-Ni+eHB!S~Nm`o;rG@ozW^i~^&;e-{A0 Y0OT&-B#XOtJOBUy07*qoM6N<$g0gj~asU7T delta 439 zcmV;o0Z9J#2mc2yiBL{Q4GJ0x0000DNk~Le0000H0000F2nGNE00OZj5dZ)H0drDE zLIAGL9OAt55I$N$3QFi8h*QBmr4R_N-2}Hn=M04h8QMuG zb~N+{xLA@OP{CE4nnkyeZbCuP4i1V~Er|Q;cj7A=oP;ht`10L-@4I`s5Td^dDWw5C z0!`pr-GlrNcxP7HL5AT9@EeVWtX8W?Ws{BI=YGF0UDtn=%m_;jI8n(CyT0#>R;xw1 zT#n^WG?a(K;ZvS(M3SNY{0;ZJP>(LfGr|Je+;AVK1;R{~vWgMV$>O%D`wVzJYJHjUV8%ZGJRu hh9uWHdfGo~`~frU#u>=gP$>Wa002ovPDHLkV1iIT!SMh9 From 9c3d0be4a5932ad77a7b3e3980db2be095164e1c Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Sun, 6 Feb 2022 03:20:52 +0200 Subject: [PATCH 17/41] Add files via upload --- .../img/baseline_alternate_email_black_24dp.png | Bin 730 -> 825 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/extension/img/baseline_alternate_email_black_24dp.png b/extension/img/baseline_alternate_email_black_24dp.png index f22913e33b754765632451fdaf2b5382ccdbe131..3e964709f82db5df75a62b7ebd9b01dd1d6cc1bf 100644 GIT binary patch delta 786 zcmV+t1MU3U1-S+xiBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4Ur)=f6hrn zK~y+TtyD`W>|qo?cSg#TCV8e9iI_YlkCd#eY^2DnY-B-U2q_zNw^l5yu&|Jgn$2Wk zV~L%VNXlzUk@q8SzkAN_nz?sI_patw|IYtA=X}5KyuR-T6p}#vm+gw#UZ(l=01Lo)FadC0+wc`)I z5$^5np}oDG8_UYdFg7-ZrKKgTtgKLuj*g}w1N9cY*=}xbxHjD1-(!D&pWXi(-yVnc^>rB> z9F)z?O?J1ftxddMXm7N}S_(#|^D0^n>S93JIBaikV|aL&18pwp>FLmv;PH5%B|v6o zCMG5(7-c;E`F!csVvVfBmzS4(z6|EB*HZN6@QaLD1POm&qjQ)jB$!a-7jrI`jg{=< Q%>V!Z07*qoM6N<$f~==~k^lez delta 691 zcmV;k0!;n62HFK7iBL{Q4GJ0x0000DNk~Le0000M0000M2nGNE0K~LxJCPwZe{V@d zK~zXfwUxbUYC#ak$EyY-XpmrDA;CrqQ`toXK@;p!+otdZd<8276*Rs;A{eks*rA~j;pueB!C+7}1?vX}gMlF$iA4DG z^HUneS{yzAF^Gi*w15aBHLKOie!riG!=X$dWe7YzKJKNCF>IKF4?qlJp`m^MCgoz6YBU4f4K$lg=@A1vG@u1U_mZ&7mY^6hURv=IhV_EDwUG; z^>{oynM@@9>~d3IBu5)Ht=87CUteDv9|ertt=H?(!@~o$+il9{fAgeX0JEfCE|*EY zM4o*7I8k^YW7;h$VWKjq+}$A$j!@j=OC zl3J}6sSPD{g-WgJk^(3-q_1oG0Fgh!sf&KMJv}{by$?C-*R<=3gJ8GYC8J~f($AFW ZFE$R)`I(SvM*si-2>?k&PDHLkV1huEN2CA% From c92357c3420a6c8ee81671895edef55b4aee41d5 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Mon, 7 Feb 2022 02:33:12 +0200 Subject: [PATCH 18/41] Add files via upload --- extension/js/addQuoteLastOnlyButton.js | 25 ++++++++ extension/js/add_button.js | 30 +++++++++- extension/js/contentScript.js | 5 +- extension/js/last_quote.js | 81 ++++++++++++++++++++++++++ extension/js/settingsHandler.js | 1 + 5 files changed, 138 insertions(+), 4 deletions(-) create mode 100644 extension/js/addQuoteLastOnlyButton.js create mode 100644 extension/js/last_quote.js diff --git a/extension/js/addQuoteLastOnlyButton.js b/extension/js/addQuoteLastOnlyButton.js new file mode 100644 index 0000000..fcb8687 --- /dev/null +++ b/extension/js/addQuoteLastOnlyButton.js @@ -0,0 +1,25 @@ +function addBtn(){ + let btns = document.querySelectorAll('.post-buttons'); + let isPosting = (window.location.href.includes("posting.php")) + btns.forEach(btn => { + let contentElement = btn.parentElement.getElementsByClassName("content").item(0) + if (contentElement.innerHTML.includes("blockquote")){ + let li = document.createElement('li'); + let a = document.createElement('a'); + let href = btn.querySelector('a.button.icon-button.quote-icon').getAttribute('href'); + let onclick = btn.querySelector('a.button.icon-button.quote-icon').getAttribute('onclick'); + a.setAttribute('href', href + '&last=true'); + a.setAttribute('style', "height:18px;width:12px;margin:0;padding:0 5px;color:black;text-align:center;user-select:none;"); + a.setAttribute('class', 'button'); + a.setAttribute('title', 'ציטיר בלויז די לעצטע תגובה'); + if (isPosting){ + a.setAttribute("onclick", "last"+onclick) + } + li.appendChild(a); + btn.appendChild(li); + a.innerText = '-' + } + }); + } + +addBtn(); diff --git a/extension/js/add_button.js b/extension/js/add_button.js index f297eaf..32e245b 100644 --- a/extension/js/add_button.js +++ b/extension/js/add_button.js @@ -47,7 +47,14 @@ function addBtn(){ let id = btn.parentElement.getAttribute("id") || "" let strippedId = id.replace("post_content", "") strippedId = strippedId.replace("pr", "") - let pingOnClick = `ping_user(${strippedId})` + if (!isPosting){ + //addSimpleButton(btn, 'share.png', null, 'share-icon', 'טייל מיט די תגובה','טייל מיט', `sharePost(${id})`) + addCopyQuoteButton(btn, id.replace("post_content", "")) + //let pm_href = getPMHref(id); + //if (pm_href){ + //addSimpleButton(btn, 'pm_icon.png', pm_href, "app-pm-icon", 'שיק א פריוואטע מעסעדזש', 'שיק א פריוואטע מעסעדזש') + } + let pingOnClick = `ping_user(${strippedId})` addSimpleButton(btn, null, null, 'ping-icon', 'דערמאן תגובה', 'דערמאן תגובה', pingOnClick) if (contentElement.innerHTML.includes("blockquote")) { addQuoteLastButton(btn, isPosting); @@ -99,6 +106,16 @@ function getUsername(post_id, prefix = 'p'){ return username } +function addCopyQuoteButton(btn, postID){ + let href = getPMHref(postID) || getQuoteURL(btn) + if (!href){ + addSimpleButton(btn, null, null, 'copy-quote', 'ציטיר אין אנדערע אשכול', 'ציטיר אין אנדערע אשכול', `copyQuoteParse("${postID}")`) + return; + } + addSimpleButton(btn, null, null, 'copy-quote', 'ציטיר אין אנדערע אשכול', 'ציטיר אין אנדערע אשכול', `copyQuote("${href}", "${postID}")`) +} + + function addQuoteLastButton(btn, isPosting) { let href = getQuoteURL(btn) @@ -114,6 +131,15 @@ let button = createButton(null, href + '&last=true', 'quote-last', 'ציטיר btn.appendChild(button.li); } +function copyQuoteParse(post_id){ + var html = document.querySelector(`#post_content${post_id} .content`).innerHTML + let post_url = getPostLink(post_id) + var username = getUsername(post_id) + let converter = new HTML2BBCode(); + html = html.replaceAll("./download", "www.ivelt.com/forum/download") +// android.copyToClipboard(`[quote="${username}"]${bbcodeParser.htmlToBBCode(html).replaceAll('
', '')} [/quote] [url=${post_url}]מקור[/url]`) + navigator.clipboard.writeText(`[quote="${username}"]${converter.feed(html)} [/quote] [url=${post_url}]מקור[/url]`) +} function ping_user(post_id){ let link = getPostLink(post_id) @@ -167,4 +193,4 @@ function mozWrapApp(txtarea, open, close) { return; } -addBtn(); +addBtn(); \ No newline at end of file diff --git a/extension/js/contentScript.js b/extension/js/contentScript.js index 5bf35ed..40d9f97 100644 --- a/extension/js/contentScript.js +++ b/extension/js/contentScript.js @@ -4,7 +4,8 @@ let scripts = [ "js/newResponseNotification.js", "js/addGoogleSearch.js", "js/settingsHandler.js", - "js/add_button.js" + "js/add_button.js", + "js/last_quote.js" ]; @@ -18,4 +19,4 @@ scripts.forEach(s => { }; -}); +}); \ No newline at end of file diff --git a/extension/js/last_quote.js b/extension/js/last_quote.js new file mode 100644 index 0000000..c6de5c3 --- /dev/null +++ b/extension/js/last_quote.js @@ -0,0 +1,81 @@ + function hasNestedQuotes(text) { + let firstQ = text.indexOf("[quote"); + if (firstQ === -1) { + return false; + } + let secondQ = text.indexOf("[quote", firstQ + 1); + if (secondQ === -1) { + return false; + } + return true; + } + + function removeNestedQuotes(text) { + let nestedQuote = text.substring( + text.lastIndexOf('[quote'), + text.indexOf("[/quote]", text.lastIndexOf('[quote')) + 8 + ); + let modifiedText = text.replace(nestedQuote, ""); + + if (hasNestedQuotes(modifiedText)) { + return removeNestedQuotes(modifiedText); + } + + return modifiedText; + } + + if (window.location.href.includes("last=true")) { + let messageArea = document.querySelector("#message"); + let text = messageArea.innerHTML; + if (hasNestedQuotes(text)) { + text = removeNestedQuotes(text); + messageArea.innerHTML = text; + } + } + + function getSelection2(post_id){ + let messageName= 'message_' + post_id; + let theSelection = ''; + let divArea = false; + + divArea = document.getElementById(messageName); + + if (divArea.innerHTML) { + theSelection = divArea.innerHTML.replace(/
/ig, '\n'); + theSelection = theSelection.replace(//ig, '\n'); + theSelection = theSelection.replace(/<\;/ig, '<'); + theSelection = theSelection.replace(/>\;/ig, '>'); + theSelection = theSelection.replace(/&\;/ig, '&'); + theSelection = theSelection.replace(/ \;/ig, ' '); + } else if (divArea.textContent) { + theSelection = divArea.textContent; + } else if (divArea.firstChild.nodeValue) { + theSelection = divArea.firstChild.nodeValue; + } + return theSelection; + } + + function copyQuote(url, post_id){ + let post_url = getPostLink(post_id) + console.log(`url ${post_url}`) + $.get( + url, + response => { + var res = $("#message-box #message", response)[0].innerText + console.log(url) + if (url.toString().includes("posting.php")){ + res = `${res} [url=${post_url}]מקור[/url]` + } + navigator.clipboard.writeText(res) + } + ) + } + + function lastaddquote(post_id, username) { + let theSelection = getSelection2(post_id) + if (theSelection) { + let text = '[quote="' + username + '"]' + theSelection + '[/quote]' + insert_text(removeNestedQuotes(text)); + } + return; + } \ No newline at end of file diff --git a/extension/js/settingsHandler.js b/extension/js/settingsHandler.js index 9a7b655..5bf7802 100644 --- a/extension/js/settingsHandler.js +++ b/extension/js/settingsHandler.js @@ -32,6 +32,7 @@ if(textarea && textarea.value){ event.preventDefault(); return event.returnValue = 'Changes you made may not be saved. Are you sure you want to lose you post?'; + //return confirm('Are you sure you want to delete user:'); } } }()) From f4118e8ff63ed1dc62be43dd948805af44ebca38 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Mon, 7 Feb 2022 02:33:33 +0200 Subject: [PATCH 19/41] Add files via upload --- extension/img/ivelt_logo.png | Bin 0 -> 1205 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 extension/img/ivelt_logo.png diff --git a/extension/img/ivelt_logo.png b/extension/img/ivelt_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e244b498e77c639f1ff381d1345b5bc592776371 GIT binary patch literal 1205 zcmV;m1WNmfP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf1WHLnK~zXfwUv8N z)KwJ6zx!Su3&?^XAm9or3x*MhK&fe4RG5PiWjWL|4Vqy?SXoYgWZLu?E5k7yU^H!} zBq*Y?+;Da*9?2sZrdVFa%iV?DWm!OEVS&Bfz5G;gW%{Q+GiT1d=bSxzALra3k5I4( z*3of%`SY*%qpb(sx&e4drHF|L!`jGDB(GZoMMxkQ>B^#sGhh7>-)ZXc{wrB{I57qx zfpW+^++ep)Lua<4tIvpj;}DBYxjPEVm7#2W1DC|R4;L_f`uj^TT`YnKGw|?ULM=RI zzZ0E(dI$xA1v}t#8ohcG)0##tlg)|i;NvZ&Nqwnx@uW_Im&#p^g{`<-XT-48N}bD~ zZfIqWr(es*FNFu8O1z8B@5GT)6->K}g*bY)0;&Wh&b*t;Y&Tc@U&B`XS;+-tJ(LK( zP=KQImzg8j-xvFjmqPCAgPa|k@%*DnXzLrqlzj%Ry#uIj=|KFdFc$m5;X-6SkN|ac zBNC#*QCav7V6<3Csk(|x*(S)?$Osu98D^6ENs046$rYWMWFI|8;<7&?PaZl$PLx-X zhW0+@lWpC{q@zbq$n*rUPfZeDY&z-D4HCh|M;?DWz}o}ip&^jaIu-Ew5Q;>Q$vn~W zw;mg!S72Lm3>v!hNK1;wbEydk^7BS>mk#YZGb_W~9Z7)59Rh(6J~9u~|J4P4OGgjA zRp-smArMQLD1zlEK3~UKf#SRj#6^a1GvKGoTI}2!&%{A)T~&rE37x%q@b#u)NW~&* zTG%H+avzB4%2fx7ISUXG)cw^%e#4A1nhTp!xGFrPjla&Rm$~*|e zj~}D5u^m6uY9Wz`FiC6JI6Q`zwkIQXy%Kr(B`o&D{%3BUq`IaFQHter4YK!00SdlW zV@parG!1Pm;Dg*<7#g+V!Fv>t%iP$@rU>#!OV?E#`?dyUnnt{sejkhV_x8krXVcjD zWa$O$c_Q_HZfWP>(8+Tsy;z6cnW@YH!b8TrN(2T3fG2d8<3ebcVTme-jrXK)!h1P8 z(LZ3u%9Ju8q@G@^8y92OTgRDJ*EYkfIR(AR!k$ouGw}`dMhmHG z(lYrs3}!1q%yuSk9y`lfZ{f1yYvVSiztQ{-2W_6Ukzoi9ki%Un!FAgd`UlM@Dyzil zGBx&PZDX Date: Mon, 7 Feb 2022 02:33:54 +0200 Subject: [PATCH 20/41] Add files via upload --- extension/css/appcss.css | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/extension/css/appcss.css b/extension/css/appcss.css index 888efc4..1f7eabf 100644 --- a/extension/css/appcss.css +++ b/extension/css/appcss.css @@ -5,7 +5,12 @@ position: absolute; width: 0px; } -.custom-button{ +.custom-button { + background: transparent 0 0 no-repeat; + content: ''; + display: inline-block; + float: right; + margin: 3px 0 0 2px; height:18px !important; width:22px !important; object-fit: contain !important; @@ -20,3 +25,14 @@ .ping-icon{ background-image: url("chrome-extension://__MSG_@@extension_id__/img/baseline_alternate_email_black_24dp.png") !important; } +.copy-quote{ + background-image: url("chrome-extension://__MSG_@@extension_id__/img/ivelt_logo.png") !important; +} + +.clone-first .app-hidden { + display: none; +} +.clone-first.app-hidden { + display: none; +} +} \ No newline at end of file From a67e45a9259c00482a87745e32d3f6bbe3e035b8 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Sun, 6 Feb 2022 20:17:53 -0500 Subject: [PATCH 21/41] Update appcss.css --- extension/css/appcss.css | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/extension/css/appcss.css b/extension/css/appcss.css index 1f7eabf..f07fd3b 100644 --- a/extension/css/appcss.css +++ b/extension/css/appcss.css @@ -21,12 +21,20 @@ } .quote-last{ background-image: url("chrome-extension://__MSG_@@extension_id__/img/quote_last.png") !important; + background-repeat: no-repeat !important; + background-position: center !important; } .ping-icon{ background-image: url("chrome-extension://__MSG_@@extension_id__/img/baseline_alternate_email_black_24dp.png") !important; + background-size: 98% 98% !important; + background-repeat: no-repeat !important; + background-position: center !important; } .copy-quote{ background-image: url("chrome-extension://__MSG_@@extension_id__/img/ivelt_logo.png") !important; + background-size: 95% 95% !important; + background-repeat: no-repeat !important; + background-position: center !important; } .clone-first .app-hidden { @@ -35,4 +43,4 @@ .clone-first.app-hidden { display: none; } -} \ No newline at end of file +} From 043525624b78aef873b99e2471a486c6435241ba Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Mon, 7 Feb 2022 03:20:01 +0200 Subject: [PATCH 22/41] Add files via upload --- .../baseline_alternate_email_black_24dp.png | Bin 825 -> 316 bytes extension/img/ivelt_logo.png | Bin 1205 -> 3874 bytes extension/img/quote_last.png | Bin 1014 -> 1023 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/extension/img/baseline_alternate_email_black_24dp.png b/extension/img/baseline_alternate_email_black_24dp.png index 3e964709f82db5df75a62b7ebd9b01dd1d6cc1bf..eb14d32250ed7a564f1f4964f9d356cd31c67698 100644 GIT binary patch literal 316 zcmV-C0mJ@@P)&T(#`iy#bC78(4H&LZUX z=5veY(|Bb}J(#Fot#?nA?FTF1p7c1Alom?{)LT03`p`mRg6T)2WTCflb;|mLk zu|il}n+b*9&DuSMI5(Eag>kv-O6}~Vx@BZ69usRCXLIPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf0?tW9K~y+TtyD`W z>|qo?cSg#TCV8e9iI_YlkCd#eY^2DnY-B-U2q_zNw^l5yu&|Jgn$2WkV~L%VNXlzU zk@q8SzkAN_nz?sI_patw|IYtA=X}5KyuR-T6p}#vm+g=#@UqeF!=I7^eadGjr;}5-?K0c=Y^YasT zcX#|Z92^{=r>BR0e!oA)7DH%hnp1CYFJ50?@$vD2<>h7c_4T2(wG{&c1B}%0^74YN zt}gm7E-q4Mh!Q?NKBB0o2!(}(I6Xb3ZhCqe#l^)aC@4UEeLeE?^HEY#g4x+w+QZ>6 zv_aHG5G6c1I^t;|WpZ*d<}w1N9cY*=}xbxHjD1-(!D&pWXi(-yVnc^>rB>9F)z?O?J1ftxddM zZ?wi*3Pz{%Dq0TeVnEtBY;SL4czBotZ7%8Q>Clwm@pzymKxSqpCMG5rWjy}*eCgF< zjjY3$mzR9L4Cb!aQuOBVi;P(W34dUtbC@V3m{8;wb1s*SmF(lq00000NkvXXu0mjf DGfsou diff --git a/extension/img/ivelt_logo.png b/extension/img/ivelt_logo.png index e244b498e77c639f1ff381d1345b5bc592776371..92fb8d080680cce9e535cf9f5ae14840cae33177 100644 GIT binary patch delta 3860 zcmV+v59{!?38Ee$iBL{Q4GJ0x0000DNk~Le0000m0000m2nGNE09OL}hmj#Pe-5`v zL_t(&L#){<+NaJSc;JAR-v1ID}d9P@ko#nc1jmuZM|LSlaX1E3?$J%$H+Y zy-#>1mD;4HnRAqy1BMV@Wl%t7gnKW;1uk&jTKgP$hFrJ~|L5iGbI#u9thM&qYyE2< z%_IWu5^C%9xLi<-^Xe-&e=!ebf7dmzwYGwvw>u*G1|Tvd0HJ++;b3Q@jJR{$kpiu4 zZ8)8I8T)@ZhZ7l>keyeAwl?K)X7Yib-X^tCgD#nw!9rz*h>$*ri3-C*qlRE;WGKv4 zD!KD*;IuXYAMs8qcrhsw&t! zIFN7-aCCBlwY9Y}`ewAWw4klEm5g9X&s5=Lh8ko!OhJL{s93>&%1+qeIw3f<>CQyD-|2f2#hX& zjwbE8wa_#lKbK90Hy5rG=;wpL-k!+M&4sIr%Uu_qVQ*`L(L*D<6`s+h0)`eAIIBYe z4u9;YY<*V3&c;UEf73TMAs{eN^tqd8YBngXp3$WOsr!y2JkU=$lOxDO_YW4+(5XzLm=bLkeid-*_Lt0i}%M0E#XVtB z;Zu{)Z*n3gCN2{Zsw@0S0rvHGHh+nvXD6Yeyd149@>J$tD;I9Ge&H-J3;a8onU6^e z*Fj@2m(%SX;MupgAiv}~cCLH{|J=9(FD&~MIYs5N!RTG-L`|m7UxiIy?N>(pAAeFH z^@pEn;S3ZBe@Nfh2umv~N=gPi95VLlQFB&^ z#KyVB-^&$)>6)gt9_bfzQKPMeq})6E#fR|o@epG>6xe(G433@6!s^#%BReY#10o|u zq~W%of4@JRDO_&-;TQ7LeR%9I(O5obDhbqrt@}=5$I1>p04%|!Uj z72;fm>}D*0EzPWllP%(ggyGdE;wY+FVf_4$aOr9Z^=iX{r^X|3`WVq)xF;EB+Je>i z_4kXA+FCJvTnyGNiWj##6qxq;m zcCspPtx|&r=DshK`}?F(Sp3`sG}P51|H@TZk+Q+T!Ni>`5l2iQn-~H2%lu|N1sW%Q zf3YOdG)ca3vn6sFsiLe*(rUGQxdU2_M#{{{kV;BQ#QA~^yQDF%d?ebPLGB_wIDezm zZ{|wzdoT5{a>qDkEl-hxr@bMCKlP?m-`FJ8YBf^Ug$t5Sr<0nSo25%?wPc{9`bx3n zH}(a|d-P1{lU)bISh0wYoW6j_&^|O%e`X-z;pq5hTFaIX3lAs4CdcH7F#}P2T_@H} zXPDEXJG^=>JX{<_(%XOLvU0~bE*4V6p?AMAYXa z!44Ig2CpHzqVD#Yrf*AVw2Z#uGBV1hFU}$c_jESR#`*FTvx+4@gN9A8o zZyzc;TDqmb?QpcEKJ>yv=ZssIv-hcW2^7t&#fyyL;2AY7TuJz|uZJ`0>*@s!?+g_^ z&(g|TRB~P(E~0!bD6N2s`AlwMf2p|0@t;FsPq3mQh6|bRf6byQ%Xq5ii9Ek?9)(fk z3Z&;SZ7{>6`=cnrv{5ZVuGfVJ+=$_k{lt;0LDdzC$z1L^68mGHR`oEL;p%9ILu(Sz zO0F>?aUDewt#YSp*jO1iO4ijfA@I29FhNTkX}$G?L18k1tfGjhs;rS;f3BiZ?^fVV zTt8{+hwv#R1o;qBF&XgM7Wk^y-O7sv4W* z2XK~T>vy-{Zp63+oA6-L21OtV)89?S;otL>yIrHKx(|3Ru$nO+ov<5_`MK!OoVNl2{O& z?I>}Go86(7I6BXmm8ChN`}yJJsrTbQuRVs$EiYm2grQ2WuEDc>e|miaoa|&**|zvu zsJAT^3fR~YNi+c#?C#_!RwS>=#X%mVzFJHg(G3%3fFln(nt0F+;Kj%}peOLw%87OJ z;O=CH8OuLM%8$fA2_Bv@LF)+|bQn$!worMxJBv7cnTQm_&D{-kwY8#c429*_MbdM& zH@-#4ZuV~KG3D%Lf3WgDe>9I+rwehWgMvq?D07DWCe^lpb<FIduVET$O?lUr&6sJV6k~uJA$fw{Wtz#hk~-i}MZzcuQqm{1SOniKr_l z34co2&W;Y`T3VEo0PR~U{DOkAYP|iQJ(xabC?1a;LIsS2AbFOwAX^Mgay}u~VVa^c zw}3ghWG~izhWz_DM6;ZJ%`1*2_t9z z1BX9-w`0?{Ljgu%X(dKHyO0cI1~Up%yp=%>aTLPSacb-^y!y;T7@e>R+m`$tF_FP2 zE-HYYVl!`-Ga0j`jA}(kLCwk3Oi%O;dKjAYup;W>;qHoSx)!Y8c?91cJ4!IGPEd(zFTMudh%OcA3S9W)msDag0gA%RUxi_HHAa!s3&Q{w;RFSpm-2ug;jP-0c}AFJj(@ z+4$u?TFm8GIO|b_5cRkdaN_(R`Fm{H^%KzusshP%xX{_R=`Gw7YWim@f0GqxM{ZFm z))V2&&MQRhuzN5ib~py~^;hn858h@^OV7r4M}EUkYQ192t>U&7Xa{e@WaSj#*Yg*}{=J&GR8e^qC8!%ASdaLh zD}8!-iW!TE>M!b$zWzQ+pWDM7E6^D{8@$+cv}X7N2!j(6*B3l9{9kW+`uc7P}iBL{Q4GJ0x0000DNk~Le0000M0000M2nGNE0K~LxJCPwYe*{WN zL_t(YOSP4IP}Efv$G`ht9t+5VARyohDhq}Yh(M`nTU3~X5oI~lG!2?zLs(f(e`MP9 z7%Rgu9AGqUrX(n$vfOZXEFQ@t7^YZW#>?G>-DO!oWMP55-M#!&aAo?ZJ~L;|z2}@g zdmrcAACFM52-eYYeEIXQ_@k`{f8DwPcu1v)i3r2m$WSD&TLVQ%AQ$P%qKPwK{Se=2 z>hb<7S$H@x1|flR$UNL&w@*W7wxX-gh<@V`i%q#Z3d)tCYoE@9-{G&-|>l?(BeFm+)1E_B4K>VsO z7W=~CLS#OW0CjaE5~9LUe_8krV6<3Csk(|x*(S)?$Osu98D^6ENs046$rYWMWFI|8 z;<7&?PaZl$PLx-XhW0+@lWpC{q@zbq$n*rUPfZeDY&z-D4HCh|M;?DWz}o}ip&^ja zIu-Ew5Q;>Q$vn~Ww;mg!S72Lm3>v!hNK1;wbEydk^7BS>mk#YZe={q?+#N}P$Q=TK z5I!;w)c@55eoIFWy;bMU&mj;?m?(nfC_Z1uS%Kob48%o-a5Lbi%UbN*8qdT*Ze3M| zDhZvvdhqq8VMxUyYFgMQL2@66>B?0Hia84q5#$SPp9$sFt!U`fVRfJv6TVo=MbO{* z%fY9+=FiSLaLqPJe@zQ(wc9WR9*^MDy^lfD(#=@`W!O?w)V5;WW=Cw~awhZP(KKR_ z5PXqHfT5A=aLi0|t~t657WjF&vqW2B6{u{w!g+wtU(cjFlEE-K$>etYeCRILM@QhR z$~y2IGn{#jg7Qmv>i#%x2CNK{Bjx3}c6XAOu?h9s9wzg-e`>TKc6B&-W8)LVD?S5; z-@d>yTDv-vl?ANIJP5;&AEUCd9Y54+A(4nMNo&|RJcgIHCnI&e5_$P0EcV3yXKtRP zx~2(Hisf?+viC><3cgljOG-R64Q(vogWO#h8nxlUdlZn%+}O*e2=Yfu*Hs+*wgzRI zM!cAQAB*+(fA++IXVcjDWa$O$c_Q_HZfWP>(8+Tsy;z6cnW@YH!b8TrN(2T3fG2d8 z<3ebcVTme-jrXK)!h1P8(LZ3u%9Ju8q@G@^8y92OTgRDJ*EYkf zIR(AR!k$ouGw}`dMhmHG(lYrs3}!1q%yuSk9y`lfXm8=N;%nnJroYkr4hL6 z4v@oLD#3Nz6#56vC@QPO=`uC;Wo=`z`EO)1Js+3E^KmAs`?CWz&28)pW2a5zMvq3d kAr@&HAt55I$N$3QFi8h*QBmr4R_N-2}Hn=M04h8QMuG zb~N+{xLA@OP{CE4nnkyeZbCuP4i1V~Er|Q;cj7A=oP;ht`10L-@4I`s5Td^dDWw5C z0!`pr-GlrNcxP7HL5AT9@EeVWtX8W?Ws{BI=YGF0UDtn=%m_;jI8n(CyT0#>R;xw1 zT#n^WG?a(K;ZvS(M3SNY{0;ZJP>(LfGr|Je+;AVK1;R{~vWgMV$>O%D`wVzJYJHjUV8%ZGJRu hh9uWHdfGo~`~frU#u>=gP$>Wa002ovPDHLkV1iIT!SMh9 delta 430 zcmV;f0a5<{2lfY3iBL{Q4GJ0x0000DNk~Le0000W0000O2nGNE0Gm_)Gynhq0drDE zLIAGL9O(c600d`2O+f$vv5yPr@4I!Q!9 zR7gwhl`)EgP!vV)3`7ehAPB(?2-X2fX&G<_)jU2NHLz~{db?>0iXJD`v!01lh(H}3JenPJP)>Q)9%jcbi#VQCiNA1 z1-9EQf*^n-Ni+eHB!S~Nm`o;rG@ozW^i~^&;e-{A0 Y0OT&-B#XOtJOBUy07*qoM6N<$g0gj~asU7T From 687e46d0140fb8a0c0fd2a34442e52cb10dd5156 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Mon, 7 Feb 2022 12:21:34 -0500 Subject: [PATCH 23/41] Update addGoogleSearch.js add some of the app features --- extension/js/addGoogleSearch.js | 1 - 1 file changed, 1 deletion(-) diff --git a/extension/js/addGoogleSearch.js b/extension/js/addGoogleSearch.js index 27e2a08..bc44e39 100644 --- a/extension/js/addGoogleSearch.js +++ b/extension/js/addGoogleSearch.js @@ -31,5 +31,4 @@ function addGoogleSiteSearch(){ } }); } - addGoogleSiteSearch(); From 6f2a4e667f775b5d4b52bcd6a2b97a4c19d8c89b Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Mon, 7 Feb 2022 12:22:18 -0500 Subject: [PATCH 24/41] add some of the app features --- extension/js/add_button.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/extension/js/add_button.js b/extension/js/add_button.js index 32e245b..3e73aed 100644 --- a/extension/js/add_button.js +++ b/extension/js/add_button.js @@ -1,6 +1,5 @@ function createButton(icon, reference, customClass, title, text, onclick) { - let li = document.createElement('li'); let a = document.createElement('a'); let span = document.createElement('span'); @@ -193,4 +192,4 @@ function mozWrapApp(txtarea, open, close) { return; } -addBtn(); \ No newline at end of file +addBtn(); From f23c89d56cea88dd15762cbc097769a41e841513 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Sun, 13 Feb 2022 17:34:25 -0500 Subject: [PATCH 25/41] update the last quote img --- extension/settings.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/settings.html b/extension/settings.html index b10c770..ff3b80a 100644 --- a/extension/settings.html +++ b/extension/settings.html @@ -57,7 +57,7 @@

קיבאורד שארטקאטס

  • דרוקט די רעכטע/לינקע ערראוס אויפן קיבאורד צו גיין צום פריערדיגן/קומענדיגן בלאט אינעם אשכול.
  • דרוקט Ctrl+Enter צו שיקן א געשריבענעם תגובה.
  • דרוקט Alt+V פאר א פריוויו פונעם געשריבענעם תגובה.
  • -
  • דרוקט אויף דעם קנעפל אין א תגובה: _ צו קוואוטן נאר דעם לעצטן אינעם פריערדיגן קוואוט.
  • +
  • דרוקט אויף דעם קנעפל אין א תגובה: צו קוואוטן נאר דעם לעצטן אינעם פריערדיגן קוואוט.
  • From 308b56a5526d5a2f71367024e5694c871aeae8ca Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Thu, 17 Feb 2022 16:35:46 -0500 Subject: [PATCH 26/41] add the new buttons to the settings page --- extension/settings.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extension/settings.html b/extension/settings.html index ff3b80a..0ff098a 100644 --- a/extension/settings.html +++ b/extension/settings.html @@ -58,6 +58,8 @@

    קיבאורד שארטקאטס

  • דרוקט Ctrl+Enter צו שיקן א געשריבענעם תגובה.
  • דרוקט Alt+V פאר א פריוויו פונעם געשריבענעם תגובה.
  • דרוקט אויף דעם קנעפל אין א תגובה: צו קוואוטן נאר דעם לעצטן אינעם פריערדיגן קוואוט.
  • +
  • דרוקט אויף דעם קנעפל אין א תגובה: צו דערמאנען די תגובה.
  • +
  • דרוקט אויף דעם קנעפל אין א תגובה: צו קוואוטן די תגובה אין א אנדערע אשכול.
  • From 93bc14fcc75325102ee79d882a9d6193e609a53b Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Thu, 17 Feb 2022 23:36:13 +0200 Subject: [PATCH 27/41] fix img size --- .../baseline_alternate_email_black_24dp.png | Bin 316 -> 442 bytes extension/img/ivelt_logo.png | Bin 3874 -> 871 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/extension/img/baseline_alternate_email_black_24dp.png b/extension/img/baseline_alternate_email_black_24dp.png index eb14d32250ed7a564f1f4964f9d356cd31c67698..1901ee1d4c3dd4e6d1ca16d448a371ff26622acd 100644 GIT binary patch literal 442 zcmV;r0Y(0aP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf0Z&OpK~y+Tt&~lU zf^Cd{V>etT( z8g^oU{>Zl>S(Z^z6x6mY9gjycO_R>&vmE^bLgoyUg|6!e7W@5P91aIQL!+PPxpaP5 zgoI(p=F{mU;y9Mw5oq)=4&R(91S^2SbzRw62jlR;ub4uxWc-uje!sI>9ncE+;8$=+ zk|bdOEllkH0!c|A>U*h5!Hn07*qoM6N<$g4CC{y#N3J literal 316 zcmV-C0mJ@@P)&T(#`iy#bC78(4H&LZUX z=5veY(|Bb}J(#Fot#?nA?FTF1p7c1Alom?{)LT03`p`mRg6T)2WTCflb;|mLk zu|il}n+b*9&DuSMI5(Eag>kv-O6}~Vx@BZ69usRCXLI_MY>9&d$!xInOI02L7P4 zrx!&P4Hy}tjfADi%<{1BIR)__OxPWwB_Q=xqaFBx5rYW}qa&H; zhjFV7Qa^v+(O*@<8?jXA zS5$-yUe*GsX>1%4iG+)j=!|BhU496YRp^P2ZD;PH<+Bzs;j=_VKo&NOC9#Y%^LLVQ zyAzRNAt*nShR~S-(3^edK-GmzERxF*5ERV)NrHm{A(hKQ@wQ9Lf40uc#j?f^*cczn zZ6612K81C{$?fz_EAWj?X)1H)%!WkGwl8u2S?C&Wb5WLb2&$5Ec+jAPQZon-`_Jqb zur@9lSzA`)YDq1w9@x!ehYX|8^bHDYpL`^j5VwtOYYH8^ai4PUR@30X08LmeY!VJ~ z+ig@@*Ge%vvT5)6ed^6`cQoWy$Okz7{R M07*qoM6N<$f-b9!MgRZ+ delta 3860 zcmV+v59{#f2BIDziBL{Q4GJ0x0000DNk~Le0000m0000m2nGNE09OL}hmj#Pe-5`v zL_t(&L#){<+NaJSc;JAR-v1ID}d9P@ko#nc1jmuZM|LSlaX1E3?$J%$H+Y zy-#>1mD;4HnRAqy1BMV@Wl%t7gnKW;1uk&jTKgP$hFrJ~|L5iGbI#u9thM&qYyE2< z%_IWu5^C%9xLi<-^Xe-&e=!ebf7dmzwYGwvw>u*G1|Tvd0HJ++;b3Q@jJR{$kpiu4 zZ8)8I8T)@ZhZ7l>keyeAwl?K)X7Yib-X^tCgD#nw!9rz*h>$*ri3-C*qlRE;WGKv4 zD!KD*;IuXYAMs8qcrhsw&t! zIFN7-aCCBlwY9Y}`ewAWw4klEm5g9X&s5=Lh8ko!OhJL{s93>&%1+qeIw3f<>CQyD-|2f2#hX& zjwbE8wa_#lKbK90Hy5rG=;wpL-k!+M&4sIr%Uu_qVQ*`L(L*D<6`s+h0)`eAIIBYe z4u9;YY<*V3&c;UEf73TMAs{eN^tqd8YBngXp3$WOsr!y2JkU=$lOxDO_YW4+(5XzLm=bLkeid-*_Lt0i}%M0E#XVtB z;Zu{)Z*n3gCN2{Zsw@0S0rvHGHh+nvXD6Yeyd149@>J$tD;I9Ge&H-J3;a8onU6^e z*Fj@2m(%SX;MupgAiv}~cCLH{|J=9(FD&~MIYs5N!RTG-L`|m7UxiIy?N>(pAAeFH z^@pEn;S3ZBe@Nfh2umv~N=gPi95VLlQFB&^ z#KyVB-^&$)>6)gt9_bfzQKPMeq})6E#fR|o@epG>6xe(G433@6!s^#%BReY#10o|u zq~W%of4@JRDO_&-;TQ7LeR%9I(O5obDhbqrt@}=5$I1>p04%|!Uj z72;fm>}D*0EzPWllP%(ggyGdE;wY+FVf_4$aOr9Z^=iX{r^X|3`WVq)xF;EB+Je>i z_4kXA+FCJvTnyGNiWj##6qxq;m zcCspPtx|&r=DshK`}?F(Sp3`sG}P51|H@TZk+Q+T!Ni>`5l2iQn-~H2%lu|N1sW%Q zf3YOdG)ca3vn6sFsiLe*(rUGQxdU2_M#{{{kV;BQ#QA~^yQDF%d?ebPLGB_wIDezm zZ{|wzdoT5{a>qDkEl-hxr@bMCKlP?m-`FJ8YBf^Ug$t5Sr<0nSo25%?wPc{9`bx3n zH}(a|d-P1{lU)bISh0wYoW6j_&^|O%e`X-z;pq5hTFaIX3lAs4CdcH7F#}P2T_@H} zXPDEXJG^=>JX{<_(%XOLvU0~bE*4V6p?AMAYXa z!44Ig2CpHzqVD#Yrf*AVw2Z#uGBV1hFU}$c_jESR#`*FTvx+4@gN9A8o zZyzc;TDqmb?QpcEKJ>yv=ZssIv-hcW2^7t&#fyyL;2AY7TuJz|uZJ`0>*@s!?+g_^ z&(g|TRB~P(E~0!bD6N2s`AlwMf2p|0@t;FsPq3mQh6|bRf6byQ%Xq5ii9Ek?9)(fk z3Z&;SZ7{>6`=cnrv{5ZVuGfVJ+=$_k{lt;0LDdzC$z1L^68mGHR`oEL;p%9ILu(Sz zO0F>?aUDewt#YSp*jO1iO4ijfA@I29FhNTkX}$G?L18k1tfGjhs;rS;f3BiZ?^fVV zTt8{+hwv#R1o;qBF&XgM7Wk^y-O7sv4W* z2XK~T>vy-{Zp63+oA6-L21OtV)89?S;otL>yIrHKx(|3Ru$nO+ov<5_`MK!OoVNl2{O& z?I>}Go86(7I6BXmm8ChN`}yJJsrTbQuRVs$EiYm2grQ2WuEDc>e|miaoa|&**|zvu zsJAT^3fR~YNi+c#?C#_!RwS>=#X%mVzFJHg(G3%3fFln(nt0F+;Kj%}peOLw%87OJ z;O=CH8OuLM%8$fA2_Bv@LF)+|bQn$!worMxJBv7cnTQm_&D{-kwY8#c429*_MbdM& zH@-#4ZuV~KG3D%Lf3WgDe>9I+rwehWgMvq?D07DWCe^lpb<FIduVET$O?lUr&6sJV6k~uJA$fw{Wtz#hk~-i}MZzcuQqm{1SOniKr_l z34co2&W;Y`T3VEo0PR~U{DOkAYP|iQJ(xabC?1a;LIsS2AbFOwAX^Mgay}u~VVa^c zw}3ghWG~izhWz_DM6;ZJ%`1*2_t9z z1BX9-w`0?{Ljgu%X(dKHyO0cI1~Up%yp=%>aTLPSacb-^y!y;T7@e>R+m`$tF_FP2 zE-HYYVl!`-Ga0j`jA}(kLCwk3Oi%O;dKjAYup;W>;qHoSx)!Y8c?91cJ4!IGPEd(zFTMudh%OcA3S9W)msDag0gA%RUxi_HHAa!s3&Q{w;RFSpm-2ug;jP-0c}AFJj(@ z+4$u?TFm8GIO|b_5cRkdaN_(R`Fm{H^%KzusshP%xX{_R=`Gw7YWim@f0GqxM{ZFm z))V2&&MQRhuzN5ib~py~^;hn858h@^OV7r4M}EUkYQ192t>U&7Xa{e@WaSj#*Yg*}{=J&GR8e^qC8!%ASdaLh zD}8!-iW!TE>M!b$zWzQ+pWDM7E6^D{8@$+cv}X7N2!j(6*B3l9{9kW+`uc7 Date: Wed, 23 Feb 2022 23:37:47 +0200 Subject: [PATCH 28/41] Update extension/manifest.json Co-authored-by: mayim-chayim <85243488+mayim-chayim@users.noreply.github.com> --- extension/manifest.json | 1 + 1 file changed, 1 insertion(+) diff --git a/extension/manifest.json b/extension/manifest.json index 58b1acb..b3f326a 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -48,6 +48,7 @@ "js/addGoogleSearch.js", "js/settingsHandler.js", "js/add_button.js", + "js/last_quote.js", "img/baseline_alternate_email_black_24dp.png", "img/quote_last.png" From e6318794cc4baafe5a0b5b00143ff9dfb54d596e Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Wed, 23 Feb 2022 23:38:36 +0200 Subject: [PATCH 29/41] Update extension/manifest.json Co-authored-by: mayim-chayim <85243488+mayim-chayim@users.noreply.github.com> --- extension/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extension/manifest.json b/extension/manifest.json index b3f326a..254362d 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -50,8 +50,8 @@ "js/add_button.js", "js/last_quote.js", "img/baseline_alternate_email_black_24dp.png", - "img/quote_last.png" - + "img/quote_last.png", + "img/ivelt_logo.png" ], "options_ui": { "page": "settings.html", From 7b137ca24c063484266c76d4788be3cf6e8b7d43 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Wed, 23 Feb 2022 16:54:52 -0500 Subject: [PATCH 30/41] Update contentScript.js --- extension/js/contentScript.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extension/js/contentScript.js b/extension/js/contentScript.js index 40d9f97..a93fee0 100644 --- a/extension/js/contentScript.js +++ b/extension/js/contentScript.js @@ -4,8 +4,8 @@ let scripts = [ "js/newResponseNotification.js", "js/addGoogleSearch.js", "js/settingsHandler.js", - "js/add_button.js", - "js/last_quote.js" + "js/add_button.js", + "js/last_quote.js" ]; @@ -19,4 +19,4 @@ scripts.forEach(s => { }; -}); \ No newline at end of file +}); From 40c6c6e52f83748f475786a319225ad5043b318a Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Wed, 23 Feb 2022 16:55:29 -0500 Subject: [PATCH 31/41] Update manifest.json --- extension/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/manifest.json b/extension/manifest.json index 254362d..49afe84 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -43,7 +43,7 @@ "web_accessible_resources": [ "js/keyboardShortcuts.js", "js/removeNestedQuotes.js", - "js/addQuoteLastOnlyButton.js", + "js/newResponseNotification.js", "js/addGoogleSearch.js", "js/settingsHandler.js", From 5d0b6924605c042a76dbe63e7a78fb00422e332d Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Thu, 24 Feb 2022 04:59:37 -0500 Subject: [PATCH 32/41] Update manifest.json --- extension/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extension/manifest.json b/extension/manifest.json index b2c1a5a..2c45dfa 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -50,8 +50,8 @@ "js/last_quote.js", "img/baseline_alternate_email_black_24dp.png", "img/quote_last.png", - "img/ivelt_logo.png" - "js/sefariaLinker.js", + "img/ivelt_logo.png", + "js/sefariaLinker.js" ], "options_ui": { From e1fe40c63740fab4610887824c892d166a7d6b92 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Thu, 24 Feb 2022 05:01:20 -0500 Subject: [PATCH 33/41] Update contentScript.js --- extension/js/contentScript.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extension/js/contentScript.js b/extension/js/contentScript.js index 65b5f8f..e5b011e 100644 --- a/extension/js/contentScript.js +++ b/extension/js/contentScript.js @@ -5,7 +5,7 @@ let scripts = [ "js/addGoogleSearch.js", "js/settingsHandler.js", "js/add_button.js", - "js/last_quote.js" + "js/last_quote.js", "js/sefariaLinker.js" ]; @@ -19,4 +19,4 @@ scripts.forEach(s => { }; -}); \ No newline at end of file +}); From 351183e59024212f45088611fd5d4017039e94e4 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Tue, 14 Jun 2022 14:24:27 -0400 Subject: [PATCH 34/41] fix ping user fix ping user when there is no write access --- extension/js/add_button.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/extension/js/add_button.js b/extension/js/add_button.js index 3e73aed..40093a0 100644 --- a/extension/js/add_button.js +++ b/extension/js/add_button.js @@ -149,7 +149,12 @@ function ping_user(post_id){ }else{ let username = getUsername(post_id) let text = `[url=${link}][quote="${username}"]\n[/quote][/url]` - addText(text) + try { + addText(text) + } + catch (exception_var) { + navigator.clipboard.writeText(text) + } } } From 5f4738812d9f8cc75978ca91fbc6d5535683aa05 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Mon, 13 Mar 2023 19:06:05 -0400 Subject: [PATCH 35/41] update update icon buttons and fix for the new ivelt --- extension/css/appcss.css | 42 +--- .../baseline_alternate_email_black_24dp.png | Bin 442 -> 0 bytes extension/img/ivelt_logo.png | Bin 871 -> 0 bytes extension/img/quote_last.png | Bin 1023 -> 0 bytes extension/js/addGoogleSearch.js | 1 + extension/js/addQuoteLastOnlyButton.js | 25 --- extension/js/add_button.js | 203 ++++++++++++------ extension/js/contentScript.js | 12 +- extension/js/keyboardShortcuts.js | 2 +- extension/js/last_quote.js | 136 ++++++------ extension/js/popup.js | 14 +- extension/js/removeNestedQuotes.js | 63 ------ extension/js/settingsHandler.js | 1 - extension/manifest.json | 16 +- extension/settings.html | 4 +- 15 files changed, 225 insertions(+), 294 deletions(-) delete mode 100644 extension/img/baseline_alternate_email_black_24dp.png delete mode 100644 extension/img/ivelt_logo.png delete mode 100644 extension/img/quote_last.png delete mode 100644 extension/js/addQuoteLastOnlyButton.js delete mode 100644 extension/js/removeNestedQuotes.js diff --git a/extension/css/appcss.css b/extension/css/appcss.css index f07fd3b..3b91c9a 100644 --- a/extension/css/appcss.css +++ b/extension/css/appcss.css @@ -1,41 +1,4 @@ -.post-buttons .button.custom-button span{ - display: block; - height: 0; - overflow: hidden; - position: absolute; - width: 0px; -} -.custom-button { - background: transparent 0 0 no-repeat; - content: ''; - display: inline-block; - float: right; - margin: 3px 0 0 2px; - height:18px !important; - width:22px !important; - object-fit: contain !important; - margin:0 !important; - padding: 0 !important; - text-align:center; - user-select:none; -} -.quote-last{ - background-image: url("chrome-extension://__MSG_@@extension_id__/img/quote_last.png") !important; - background-repeat: no-repeat !important; - background-position: center !important; -} -.ping-icon{ - background-image: url("chrome-extension://__MSG_@@extension_id__/img/baseline_alternate_email_black_24dp.png") !important; - background-size: 98% 98% !important; - background-repeat: no-repeat !important; - background-position: center !important; -} -.copy-quote{ - background-image: url("chrome-extension://__MSG_@@extension_id__/img/ivelt_logo.png") !important; - background-size: 95% 95% !important; - background-repeat: no-repeat !important; - background-position: center !important; -} + .clone-first .app-hidden { display: none; @@ -43,4 +6,7 @@ .clone-first.app-hidden { display: none; } + +.post-buttons .app-hidden { + display: none; } diff --git a/extension/img/baseline_alternate_email_black_24dp.png b/extension/img/baseline_alternate_email_black_24dp.png deleted file mode 100644 index 1901ee1d4c3dd4e6d1ca16d448a371ff26622acd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmV;r0Y(0aP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf0Z&OpK~y+Tt&~lU zf^Cd{V>etT( z8g^oU{>Zl>S(Z^z6x6mY9gjycO_R>&vmE^bLgoyUg|6!e7W@5P91aIQL!+PPxpaP5 zgoI(p=F{mU;y9Mw5oq)=4&R(91S^2SbzRw62jlR;ub4uxWc-uje!sI>9ncE+;8$=+ zk|bdOEllkH0!c|A>U*h5!Hn07*qoM6N<$g4CC{y#N3J diff --git a/extension/img/ivelt_logo.png b/extension/img/ivelt_logo.png deleted file mode 100644 index cfff2d7693d0a33ca845df0f586a0792dece1d70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 871 zcmV-t1DO1YP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf0{lrtK~y+Tb(CvJ zlVKFc{~Jn*X=zN%nNpMq5k=YMgF!}xMHE>=il|ZFg02>o6m+xt5LSLkk+K9UEwl1g zsnblc%bHm^u`$8anRA<)bMAh6_Pnp9U49?-p7Vds&d$y`&nqDY{-Cp`7ey5f7#X#| z<#r=BMvi&ma}c*cj`gdSicwSWC7DV>=1E$Xa)i{HUUJy1L|!+M$3z#_zV`Cod-=gT+sCEk)20)s;*_|#@eC(m56Srtd))hKc_?#+RKJn5+ zHy@<8?jXAS5$-yUe*GsX>1%4 ziG+)j=!|BhU496YRp^P2ZD;PH<+Bzs;j=_VKo&NOC9#Y%^LLVQyAzRNAt*nShR~S- z(3^edK-GmzERxF*5ERV)NrHm{A(hKQ@wQ9Lw$97Nvc?bC7$3`R9|vweg>}No?etA6 z@QqDrDs$(|hD6P_FLD1_=o)TwQI>QFs*-bf(4d4;GYAj+&+HelHZB@jTUO(0NiD7( z*v(^y45QHW4GL?Yd?c3;w~cLU3LU#~pK|Y3)8N1WO;{~#5)N|PZB$y=M2fJpsP2C-HyBgt%nb@^qHBz^%6IFqKzEApedc0^; xLEYOAli3QB#fs&N=Obf#A{InNh*6UOKLN!=-K}Gbhq~X?&_Tai}rJAE@iY~@_i6>xA_lWMS9pR$F_%D zAEbNR)`YG0NS)mK;CbDC{n+bM&v1D2S_Gct+r967ci3vzoiTk+{Y|E{AAT6THcZ*~ za@iX8pc$?bZ9yE0%?b~0*F0d72-OmOY0)>wZ@I?z>z?~MI~H|>trlH-J-f75_IP34 z#)u0!W{dTCO+J65mWKEZ7E(t`;Ok3asnWOBB6PVGiT%O^`CbT;{|4C(S(Dzv;YHFC { - let contentElement = btn.parentElement.getElementsByClassName("content").item(0) - if (contentElement.innerHTML.includes("blockquote")){ - let li = document.createElement('li'); - let a = document.createElement('a'); - let href = btn.querySelector('a.button.icon-button.quote-icon').getAttribute('href'); - let onclick = btn.querySelector('a.button.icon-button.quote-icon').getAttribute('onclick'); - a.setAttribute('href', href + '&last=true'); - a.setAttribute('style', "height:18px;width:12px;margin:0;padding:0 5px;color:black;text-align:center;user-select:none;"); - a.setAttribute('class', 'button'); - a.setAttribute('title', 'ציטיר בלויז די לעצטע תגובה'); - if (isPosting){ - a.setAttribute("onclick", "last"+onclick) - } - li.appendChild(a); - btn.appendChild(li); - a.innerText = '-' - } - }); - } - -addBtn(); diff --git a/extension/js/add_button.js b/extension/js/add_button.js index 40093a0..b586b0e 100644 --- a/extension/js/add_button.js +++ b/extension/js/add_button.js @@ -1,23 +1,27 @@ -function createButton(icon, reference, customClass, title, text, onclick) { - +function createButton(reference, customClass, title, text, onclick, itext="") { let li = document.createElement('li'); let a = document.createElement('a'); let span = document.createElement('span'); + let i = document.createElement('i'); //let img = document.createElement('img'); - //img.setAttribute("src", chrome-extension://__MSG_@@extension_id__/img/${icon}) + //img.setAttribute('src', `https://www.ivelt.com/kfmdm/resources/drawable/${icon}`) if (reference){ a.setAttribute('href', reference); } if (onclick){ a.setAttribute('onClick', onclick) } - a.setAttribute('class', `button custom-button ${customClass}`); + a.setAttribute('class', 'button button-icon-only custom-btn '); a.setAttribute('title',title ); + i.setAttribute('class', `icon ${customClass} fa-fw`); + i.setAttribute('aria-hidden', 'true'); + i.innerText = itext; span.innerText = text; + a.appendChild(i); a.appendChild(span); - //a.appendChild(img); li.appendChild(a); - return {li, a, span, } + + return {li, a, span, i} } function getPMHref(id) { @@ -32,8 +36,9 @@ function addBtn(){ let btns = document.querySelectorAll('.post-buttons'); let isPosting = (window.location.href.includes("posting.php")); var needUpdating = false; - btns.forEach(btn => { - if(btn.getElementsByClassName('custom-button').length > 0){ + btns.forEach(btn => { + // Check if custom buttons have been added already, if yes ignore. + if(btn.getElementsByClassName('custom-btn').length > 0){ return; } needUpdating = true @@ -42,118 +47,169 @@ function addBtn(){ b.removeAttribute('class') } }) + let contentElement = btn.parentElement.getElementsByClassName("content").item(0) let id = btn.parentElement.getAttribute("id") || "" let strippedId = id.replace("post_content", "") strippedId = strippedId.replace("pr", "") - if (!isPosting){ - //addSimpleButton(btn, 'share.png', null, 'share-icon', 'טייל מיט די תגובה','טייל מיט', `sharePost(${id})`) + if (!isPosting){ addCopyQuoteButton(btn, id.replace("post_content", "")) - //let pm_href = getPMHref(id); - //if (pm_href){ - //addSimpleButton(btn, 'pm_icon.png', pm_href, "app-pm-icon", 'שיק א פריוואטע מעסעדזש', 'שיק א פריוואטע מעסעדזש') - } - let pingOnClick = `ping_user(${strippedId})` - addSimpleButton(btn, null, null, 'ping-icon', 'דערמאן תגובה', 'דערמאן תגובה', pingOnClick) - if (contentElement.innerHTML.includes("blockquote")) { + } + let pingOnClick = `ping_user(${strippedId})` + addSimpleButton(btn, null, 'fa-at', 'דערמאן תגובה', 'דערמאן תגובה', pingOnClick) + if (contentElement.innerHTML.includes("blockquote")) { addQuoteLastButton(btn, isPosting); } - let responsiveMenu = btn.getElementsByClassName('responsive-menu').item(0); + + let responsiveMenu = btn.getElementsByClassName('responsive-menu').item(0); try { btn.removeChild(btn.getElementsByClassName('responsive-menu').item(0)) }catch (e) { - + } - }); - if (needUpdating){ - let navBar = document.querySelector('#nav-footer'); - navBar.querySelectorAll('li.hidden:not(.responsive-menu)').forEach(si => { - si.setAttribute('class', si.getAttribute('class').replace('hidden', '')) - }) - navBar.removeChild(navBar.getElementsByClassName('responsive-menu').item(0)) - parseDocument($('body')); - } + }); + let navUpdate = addDefaultPage(); + if (needUpdating || navUpdate){ + let navBar = document.querySelector('#nav-footer'); + navBar.querySelectorAll('li.hidden:not(.responsive-menu)').forEach(si => { + si.setAttribute('class', si.getAttribute('class').replace('hidden', '')) + }) + navBar.removeChild(navBar.getElementsByClassName('responsive-menu').item(0)) + parseDocument($('body')); + } } -function addSimpleButton(btn, icon, href, customClass, title, text, onclick){ - let button = createButton(icon, href, customClass, title, text, onclick); +function addSimpleButton(btn, href, customClass, title, text, onclick){ + let button = createButton(href, customClass, title, text, onclick); btn.appendChild(button.li); } function getQuoteURL(btn){ - let quoteButton = btn.querySelector('a.button.icon-button.quote-icon'); - if (!quoteButton){ - return null; - } - let href = quoteButton.getAttribute('href'); - return href; -} -function getPostLink(postID){ - return `https://www.ivelt.com/forum/viewtopic.php?p=${postID}#p${postID}`; -} + try{ + let quoteButton = btn.querySelector('i.icon.fa-quote-left.fa-fw'); + let quoteUrl = quoteButton.parentElement; + if (!quoteUrl){ + return null; + } + let href = quoteUrl.getAttribute('href'); + return href; + }catch (e){ -function getUsername(post_id, prefix = 'p'){ - var usernameE = document.querySelector(`#${prefix}${post_id} .username`) - if (!usernameE){ - var usernameE = document.querySelector(`#p${prefix}${post_id} .username-coloured`) - } - var username = "" - if(usernameE){ - username = usernameE.innerText } - return username -} +} function addCopyQuoteButton(btn, postID){ let href = getPMHref(postID) || getQuoteURL(btn) if (!href){ - addSimpleButton(btn, null, null, 'copy-quote', 'ציטיר אין אנדערע אשכול', 'ציטיר אין אנדערע אשכול', `copyQuoteParse("${postID}")`) + addSimpleButton(btn, null, 'fa-copy', 'ציטיר אין אנדערע אשכול', 'ציטיר אין אנדערע אשכול', `copyQuoteParse("${postID}")`) return; } - addSimpleButton(btn, null, null, 'copy-quote', 'ציטיר אין אנדערע אשכול', 'ציטיר אין אנדערע אשכול', `copyQuote("${href}", "${postID}")`) + addSimpleButton(btn, null, 'fa-copy', 'ציטיר אין אנדערע אשכול', 'ציטיר אין אנדערע אשכול', `copyQuote("${href}", "${postID}")`) } - - function addQuoteLastButton(btn, isPosting) { let href = getQuoteURL(btn) if (!href){ + return; } var onclick = null; if (isPosting){ - onclick = "last" + btn.querySelector('a.button.icon-button.quote-icon').getAttribute('onclick'); + onclick = "last" + btn.querySelector('i.icon.fa-quote-left.fa-fw').parentElement.getAttribute('onclick'); +// button.a.setAttribute("onclick", "last" + onclick); } - -let button = createButton(null, href + '&last=true', 'quote-last', 'ציטיר בלויז די לעצטע תגובה', 'ציטיר לעצטע', onclick); - btn.appendChild(button.li); + let button = createButton(href + '&last=true', 'fa-quote-left last', 'ציטיר בלויז די לעצטע תגובה', 'ציטיר לעצטע', onclick, '1'); + + btn.appendChild(button.li); +} + + +function addDefaultPage(){ + if (document.querySelector(`#kf-app-default-page`)){ + return false + } + let li = document.createElement("li") + let a = document.createElement('a'); + li.appendChild(a) + li.setAttribute("class", "rightside") + li.setAttribute("id", "kf-app-default-page") + a.setAttribute('onClick', "saveDefaultPage()") + a.innerText = "מאך די בלאט די דיפאולט בלאט" + let pagination = document.querySelectorAll("#nav-footer").item(0) + if (pagination){ + pagination.insertBefore(li, pagination.firstChild); + return true; + } + return false; +} +function getPostLink(postID){ + return `https://www.IVELT.com/forum/viewtopic.php?p=${postID}#p${postID}`; } + function copyQuoteParse(post_id){ var html = document.querySelector(`#post_content${post_id} .content`).innerHTML let post_url = getPostLink(post_id) var username = getUsername(post_id) let converter = new HTML2BBCode(); html = html.replaceAll("./download", "www.ivelt.com/forum/download") -// android.copyToClipboard(`[quote="${username}"]${bbcodeParser.htmlToBBCode(html).replaceAll('
    ', '')} [/quote] [url=${post_url}]מקור[/url]`) navigator.clipboard.writeText(`[quote="${username}"]${converter.feed(html)} [/quote] [url=${post_url}]מקור[/url]`) } +function getPostDetails(post_id, prefix = 'p'){ + var usernameE = document.querySelector(`#${prefix}${post_id} .username`) + if (!usernameE){ + var usernameE = document.querySelector(`#p${prefix}${post_id} .username-coloured`) + } + var username = "" + if(usernameE){ + username = usernameE.innerText + } + + var idE = document.querySelector(`#${prefix}${post_id} .username`); + if (!idE){ + var usernameE = document.querySelector(`#p${prefix}${post_id} .username-coloured`) + } + var usernameLink = "" + let id ="" + if(idE){ + usernameLink = idE.href; + id = usernameLink.split("u=")[1]; + } + var tsE = document.querySelector(`#${prefix}${post_id} time`) + if (!tsE){ + var tsE = document.querySelector(`#${prefix}${post_id} [href='#postingbox']`).getAttribute('onclick') + if(tsE) + var time = tsE.match('(?<=time:)(.*)(?=,user)')[0]; + }else{ + var ts = Date.parse(tsE.dateTime) + var time = ts / 1000 + } + + + + return { + "username":username, + "id":id, + "time":time + }; +} + function ping_user(post_id){ - let link = getPostLink(post_id) + if (window.location.href.includes("posting.php")){ - let username = getUsername(post_id,"pr") - let text = `[url=${link}][quote="${username}"]\n[/quote][/url]` + let PostDetails = getPostDetails(post_id,"pr") + let text = `[quote="${PostDetails.username}" user_id=${PostDetails.id} time=${PostDetails.time} post_id=${post_id}]\n[/quote]` insert_text(text) }else{ - let username = getUsername(post_id) - let text = `[url=${link}][quote="${username}"]\n[/quote][/url]` - try { - addText(text) - } - catch (exception_var) { - navigator.clipboard.writeText(text) + let PostDetails = getPostDetails(post_id) + let text = `[quote="${PostDetails.username}" user_id=${PostDetails.id} time=${PostDetails.time} post_id=${post_id}]\n[/quote]` + + try { + addText(text) + }catch (exception_var) { + navigator.clipboard.writeText(text) } } } @@ -197,4 +253,13 @@ function mozWrapApp(txtarea, open, close) { return; } + addBtn(); + + + + + + + + diff --git a/extension/js/contentScript.js b/extension/js/contentScript.js index e5b011e..5b69230 100644 --- a/extension/js/contentScript.js +++ b/extension/js/contentScript.js @@ -1,22 +1,18 @@ let scripts = [ "js/keyboardShortcuts.js", - "js/removeNestedQuotes.js", "js/newResponseNotification.js", "js/addGoogleSearch.js", - "js/settingsHandler.js", - "js/add_button.js", + "js/add_button.js", "js/last_quote.js", "js/sefariaLinker.js" + ]; - scripts.forEach(s => { let e = document.createElement('script'); - e.src = chrome.runtime.getURL(s); + e.src = chrome.extension.getURL(s); (document.head || document.documentElement).appendChild(e); e.onload = function () { e.parentNode.removeChild(e); - - }; -}); +}); \ No newline at end of file diff --git a/extension/js/keyboardShortcuts.js b/extension/js/keyboardShortcuts.js index 2f1b643..d72c6c4 100644 --- a/extension/js/keyboardShortcuts.js +++ b/extension/js/keyboardShortcuts.js @@ -55,7 +55,7 @@ function checkKey(e) { } } -document.querySelector(".icon-search-active a").accessKey = "a"; +document.querySelector(".icon.fa-file-o.fa-fw.icon-blue").parentElement.accessKey = "a"; const notificationNode = document.getElementById("notification_list_button"); diff --git a/extension/js/last_quote.js b/extension/js/last_quote.js index c6de5c3..3eeed3b 100644 --- a/extension/js/last_quote.js +++ b/extension/js/last_quote.js @@ -1,81 +1,81 @@ - function hasNestedQuotes(text) { - let firstQ = text.indexOf("[quote"); - if (firstQ === -1) { - return false; - } - let secondQ = text.indexOf("[quote", firstQ + 1); - if (secondQ === -1) { - return false; - } - return true; +function hasNestedQuotes(text) { + let firstQ = text.indexOf("[quote"); + if (firstQ === -1) { + return false; } + let secondQ = text.indexOf("[quote", firstQ + 1); + if (secondQ === -1) { + return false; + } + return true; +} - function removeNestedQuotes(text) { - let nestedQuote = text.substring( - text.lastIndexOf('[quote'), - text.indexOf("[/quote]", text.lastIndexOf('[quote')) + 8 - ); - let modifiedText = text.replace(nestedQuote, ""); - - if (hasNestedQuotes(modifiedText)) { - return removeNestedQuotes(modifiedText); - } +function removeNestedQuotes(text) { + let nestedQuote = text.substring( + text.lastIndexOf('[quote'), + text.indexOf("[/quote]", text.lastIndexOf('[quote')) + 8 + ); + let modifiedText = text.replace(nestedQuote, ""); - return modifiedText; + if (hasNestedQuotes(modifiedText)) { + return removeNestedQuotes(modifiedText); } - if (window.location.href.includes("last=true")) { - let messageArea = document.querySelector("#message"); - let text = messageArea.innerHTML; - if (hasNestedQuotes(text)) { - text = removeNestedQuotes(text); - messageArea.innerHTML = text; - } + return modifiedText; +} + +if (window.location.href.includes("last=true")) { + let messageArea = document.querySelector("#message"); + let text = messageArea.innerHTML; + if (hasNestedQuotes(text)) { + text = removeNestedQuotes(text); + messageArea.innerHTML = text; } +} - function getSelection2(post_id){ - let messageName= 'message_' + post_id; - let theSelection = ''; - let divArea = false; +function getSelection2(post_id){ + let messageName= 'message_' + post_id; + let theSelection = ''; + let divArea = false; - divArea = document.getElementById(messageName); + divArea = document.getElementById(messageName); - if (divArea.innerHTML) { - theSelection = divArea.innerHTML.replace(/
    /ig, '\n'); - theSelection = theSelection.replace(//ig, '\n'); - theSelection = theSelection.replace(/<\;/ig, '<'); - theSelection = theSelection.replace(/>\;/ig, '>'); - theSelection = theSelection.replace(/&\;/ig, '&'); - theSelection = theSelection.replace(/ \;/ig, ' '); - } else if (divArea.textContent) { - theSelection = divArea.textContent; - } else if (divArea.firstChild.nodeValue) { - theSelection = divArea.firstChild.nodeValue; - } - return theSelection; + if (divArea.innerHTML) { + theSelection = divArea.innerHTML.replace(/
    /ig, '\n'); + theSelection = theSelection.replace(//ig, '\n'); + theSelection = theSelection.replace(/<\;/ig, '<'); + theSelection = theSelection.replace(/>\;/ig, '>'); + theSelection = theSelection.replace(/&\;/ig, '&'); + theSelection = theSelection.replace(/ \;/ig, ' '); + } else if (divArea.textContent) { + theSelection = divArea.textContent; + } else if (divArea.firstChild.nodeValue) { + theSelection = divArea.firstChild.nodeValue; } + return theSelection; +} - function copyQuote(url, post_id){ - let post_url = getPostLink(post_id) - console.log(`url ${post_url}`) - $.get( - url, - response => { - var res = $("#message-box #message", response)[0].innerText - console.log(url) - if (url.toString().includes("posting.php")){ - res = `${res} [url=${post_url}]מקור[/url]` - } - navigator.clipboard.writeText(res) +function copyQuote(url, post_id){ + let post_url = getPostLink(post_id) + console.log(`url ${post_url}`) + $.get( + url, + response => { + var res = $("#message-box #message", response)[0].innerText + console.log(url) + if (url.toString().includes("posting.php")){ + res = `${res} [url=${post_url}]מקור[/url]` } - ) - } + navigator.clipboard.writeText(res) + } + ) +} - function lastaddquote(post_id, username) { - let theSelection = getSelection2(post_id) - if (theSelection) { - let text = '[quote="' + username + '"]' + theSelection + '[/quote]' - insert_text(removeNestedQuotes(text)); - } - return; - } \ No newline at end of file +function lastaddquote(post_id, username, l_wrote, attributes ) { + let theSelection = getSelection2(post_id) + if (theSelection) { + let text = '[quote="' + username + '" post_id='+attributes.post_id+' time='+attributes.time+' user_id='+attributes.user_id+']' + theSelection + '[/quote]' + insert_text(removeNestedQuotes(text)); + } + return; +} diff --git a/extension/js/popup.js b/extension/js/popup.js index ccfd97d..31873ed 100644 --- a/extension/js/popup.js +++ b/extension/js/popup.js @@ -17,38 +17,38 @@ function checkLoginState() { } function setLogOutState() { } - getLogOutCookie('http://ivelt.com', 'phpbb3_sw7ki_sid'); + getLogOutCookie('http://www.ivelt.com', 'phpbb3_sw7kk_k'); document.getElementById('emergency_sign_out').style.display = 'block'; } else { document.getElementById('quick_sign_in').style.display = 'block'; } } -getUserId('http://ivelt.com', 'phpbb3_sw7ki_u'); +getUserId('http://www.ivelt.com', 'phpbb3_sw7kk_k'); function open_home_page(){ - chrome.tabs.create({url:'https://ivelt.com/forum/'}); + chrome.tabs.create({url:'https://www.ivelt.com/forum/'}); window.close(); } function open_pm_inbox(){ - chrome.tabs.create({url:'https://ivelt.com/forum/ucp.php?i=pm&folder=inbox'}); + chrome.tabs.create({url:'https://www.ivelt.com/forum/ucp.php?i=pm&folder=inbox'}); window.close(); } function open_active_topics(){ - chrome.tabs.create({url:'https://ivelt.com/forum/search.php?search_id=active_topics'}); + chrome.tabs.create({url:'https://www.ivelt.com/forum/search.php?search_id=active_topics'}); window.close(); } function quick_sign_in(){ - chrome.tabs.create({url:'https://ivelt.com/forum/ucp.php?mode=login', active: true}); + chrome.tabs.create({url:'https://www.ivelt.com/forum/ucp.php?mode=login', active: true}); chrome.storage.local.set({'logged_in':'0'}); window.close(); } function emergency_sign_out(){ - chrome.tabs.create({url:'https://ivelt.com/forum/ucp.php?mode=logout&sid='+logout_url, active: false}); + chrome.tabs.create({url:'https://www.ivelt.com/forum/ucp.php?mode=logout&sid='+logout_url, active: false}); chrome.storage.local.set({'logged_in':'0'}); window.close(); } diff --git a/extension/js/removeNestedQuotes.js b/extension/js/removeNestedQuotes.js deleted file mode 100644 index 44f1e39..0000000 --- a/extension/js/removeNestedQuotes.js +++ /dev/null @@ -1,63 +0,0 @@ -function hasNestedQuotes(text) { - let firstQ = text.indexOf("[quote="); - if (firstQ === -1) { - return false; - } - let secondQ = text.indexOf("[quote=", firstQ + 1); - if (secondQ === -1) { - return false; - } - return true; -} - -function removeNestedQuotes(text) { - let nestedQuote = text.substring( - text.lastIndexOf('[quote="'), - text.indexOf("[/quote]", text.lastIndexOf('[quote="')) + 8 - ); - let modifiedText = text.replace(nestedQuote, ""); - - if (hasNestedQuotes(modifiedText)) { - return removeNestedQuotes(modifiedText); - } - - return modifiedText; -} - -let onlyLastQuote = window.location.href.includes("last=true"); -if (onlyLastQuote) { - let messageArea = document.querySelector("#message"); - let text = messageArea.innerHTML; - if (hasNestedQuotes(text)) { - text = removeNestedQuotes(text); - messageArea.innerHTML = text; - } -} - -function lastaddquote(post_id, username) { - let messageName= 'message_' + post_id; - let theSelection = ''; - let divArea = false; - - divArea = document.getElementById(messageName); - - if (divArea.innerHTML) { - theSelection = divArea.innerHTML.replace(/
    /ig, '\n'); - theSelection = theSelection.replace(//ig, '\n'); - theSelection = theSelection.replace(/<\;/ig, '<'); - theSelection = theSelection.replace(/>\;/ig, '>'); - theSelection = theSelection.replace(/&\;/ig, '&'); - theSelection = theSelection.replace(/ \;/ig, ' '); - } else if (divArea.textContent) { - theSelection = divArea.textContent; - } else if (divArea.firstChild.nodeValue) { - theSelection = divArea.firstChild.nodeValue; - } - - if (theSelection) { - let text = '[quote="' + username + '"]' + theSelection + '[/quote]' - insert_text(removeNestedQuotes(text)); - } - - return; -} diff --git a/extension/js/settingsHandler.js b/extension/js/settingsHandler.js index d957772..dc89d51 100644 --- a/extension/js/settingsHandler.js +++ b/extension/js/settingsHandler.js @@ -40,7 +40,6 @@ if(textarea && textarea.value){ event.preventDefault(); return event.returnValue = 'Changes you made may not be saved. Are you sure you want to lose you post?'; - //return confirm('Are you sure you want to delete user:'); } } }()) diff --git a/extension/manifest.json b/extension/manifest.json index 639546b..68a67c7 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -3,7 +3,7 @@ "manifest_version": 2, "name": "iVelt Helper", "description": "Adds accessibility and usability improvements to אייוועלט.", - "version": "1.9.8", + "version": "1.9.10", "icons": { "48": "img/icon48.png", "128": "img/icon128.png" @@ -15,8 +15,7 @@ "*://*.yiddishworld.com/*", "*://*.198.153.76.147/*" ], - "css":["css/appcss.css"], - "js": ["js/contentScript.js", "js/refreshNotificationCount.js", "js/settingsHandler.js" + "js": ["js/contentScript.js","js/refreshNotificationCount.js", "js/settingsHandler.js"] } ], "background": { @@ -42,17 +41,12 @@ ], "web_accessible_resources": [ "js/keyboardShortcuts.js", - "js/removeNestedQuotes.js", "js/newResponseNotification.js", "js/addGoogleSearch.js", - "js/settingsHandler.js", - "js/add_button.js", + "js/sefariaLinker.js", + "js/add_button.js", "js/last_quote.js", - "img/baseline_alternate_email_black_24dp.png", - "img/quote_last.png", - "img/ivelt_logo.png", - "js/sefariaLinker.js" - + "js/settingsHandler.js" ], "options_ui": { "page": "settings.html", diff --git a/extension/settings.html b/extension/settings.html index 2f88b5e..5d114ab 100644 --- a/extension/settings.html +++ b/extension/settings.html @@ -80,9 +80,7 @@

    קיבאורד שארטקאטס

  • דרוקט די רעכטע/לינקע ערראוס אויפן קיבאורד צו גיין צום פריערדיגן/קומענדיגן בלאט אינעם אשכול.
  • דרוקט Ctrl+Enter צו שיקן א געשריבענעם תגובה.
  • דרוקט Alt+V פאר א פריוויו פונעם געשריבענעם תגובה.
  • -
  • דרוקט אויף דעם קנעפל אין א תגובה: צו קוואוטן נאר דעם לעצטן אינעם פריערדיגן קוואוט.
  • -
  • דרוקט אויף דעם קנעפל אין א תגובה: צו דערמאנען די תגובה.
  • -
  • דרוקט אויף דעם קנעפל אין א תגובה: צו קוואוטן די תגובה אין א אנדערע אשכול.
  • +
  • דרוקט אויף דעם קנעפל אין א תגובה: _ צו קוואוטן נאר דעם לעצטן אינעם פריערדיגן קוואוט.
  • From 70b6da0a97c4107adcd495ffb4bb79d81b8ea2a0 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Mon, 13 Mar 2023 19:58:03 -0400 Subject: [PATCH 36/41] update forgot to add the css file to the manifest --- extension/manifest.json | 1 + 1 file changed, 1 insertion(+) diff --git a/extension/manifest.json b/extension/manifest.json index 68a67c7..1c95161 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -15,6 +15,7 @@ "*://*.yiddishworld.com/*", "*://*.198.153.76.147/*" ], + "css":["css/appcss.css"], "js": ["js/contentScript.js","js/refreshNotificationCount.js", "js/settingsHandler.js"] } ], From a3b3bf7b27512cdee6e890f1b0bbf8900d477f20 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Mon, 13 Mar 2023 20:19:06 -0400 Subject: [PATCH 37/41] update settings page --- extension/css/font-awesome.min.css | 4 ++++ extension/css/style.css | 15 +++++++++++++++ extension/settings.html | 7 ++++++- 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 extension/css/font-awesome.min.css diff --git a/extension/css/font-awesome.min.css b/extension/css/font-awesome.min.css new file mode 100644 index 0000000..540440c --- /dev/null +++ b/extension/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/extension/css/style.css b/extension/css/style.css index 6aecf24..ed07645 100644 --- a/extension/css/style.css +++ b/extension/css/style.css @@ -170,3 +170,18 @@ select { font-size: 0.7em; line-height: 1; } + +.shortcut-key .icon { + display: inline-block; + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + font-variant: normal; + font-size: 14px; + line-height: 1; + text-rendering: auto; /* optimizelegibility throws things off #1094 */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.shortcut-key .icon:before { padding-right: 2px; } diff --git a/extension/settings.html b/extension/settings.html index 5d114ab..eb65ce8 100644 --- a/extension/settings.html +++ b/extension/settings.html @@ -5,6 +5,9 @@ iVelt Helper | אייוועלט העלפער - Settings + + +
    @@ -80,7 +83,9 @@

    קיבאורד שארטקאטס

  • דרוקט די רעכטע/לינקע ערראוס אויפן קיבאורד צו גיין צום פריערדיגן/קומענדיגן בלאט אינעם אשכול.
  • דרוקט Ctrl+Enter צו שיקן א געשריבענעם תגובה.
  • דרוקט Alt+V פאר א פריוויו פונעם געשריבענעם תגובה.
  • -
  • דרוקט אויף דעם קנעפל אין א תגובה: _ צו קוואוטן נאר דעם לעצטן אינעם פריערדיגן קוואוט.
  • +
  • דרוקט אויף דעם קנעפל אין א תגובה: צו קוואוטן נאר דעם לעצטן אינעם פריערדיגן קוואוט.
  • +
  • דרוקט אויף דעם קנעפל אין א תגובה: צו דערמאנען די תגובה.
  • +
  • דרוקט אויף דעם קנעפל אין א תגובה: צו קוואוטן די תגובה אין א אנדערע אשכול.
  • From a2a5c63ca60f779ee91af17c3d1c78e30b643eba Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Wed, 7 Jun 2023 17:26:19 -0400 Subject: [PATCH 38/41] remove unneeded settings --- extension/js/contentScript.js | 4 +--- extension/js/sefariaLinker.js | 17 ----------------- extension/js/settings.js | 1 - extension/js/settingsHandler.js | 12 +----------- extension/settings.html | 10 +--------- 5 files changed, 3 insertions(+), 41 deletions(-) delete mode 100644 extension/js/sefariaLinker.js diff --git a/extension/js/contentScript.js b/extension/js/contentScript.js index 5b69230..5b1091d 100644 --- a/extension/js/contentScript.js +++ b/extension/js/contentScript.js @@ -3,9 +3,7 @@ let scripts = [ "js/newResponseNotification.js", "js/addGoogleSearch.js", "js/add_button.js", - "js/last_quote.js", - "js/sefariaLinker.js" - + "js/last_quote.js" ]; scripts.forEach(s => { diff --git a/extension/js/sefariaLinker.js b/extension/js/sefariaLinker.js deleted file mode 100644 index 3ce57fb..0000000 --- a/extension/js/sefariaLinker.js +++ /dev/null @@ -1,17 +0,0 @@ -(function(){ - let sefariaLinkerSetting = document.getElementById('iveltHelperSettings').getAttribute('data-sefariaLinker') === 'true'; - - if(sefariaLinkerSetting){ - var linkerScript = document.createElement("script"); - linkerScript.setAttribute("charset", "utf-8"); - linkerScript.setAttribute("src", "https://www.sefaria.org/linker.js"); - linkerScript.onload = function () { - sefaria.link({ - contentLang: "hebrew", - interfaceLang: "english", - }); - - }; - document.body.appendChild(linkerScript); - } -}()) diff --git a/extension/js/settings.js b/extension/js/settings.js index 861c3b3..0688788 100644 --- a/extension/js/settings.js +++ b/extension/js/settings.js @@ -2,7 +2,6 @@ const preferencesOptions = [ 'hideUserName', 'getBrowserNotifications', 'warnOnLosingPost', - 'sefariaLinker', 'backgroundSync', 'backgroundSyncPosts', 'backgroundSyncNotif', diff --git a/extension/js/settingsHandler.js b/extension/js/settingsHandler.js index dc89d51..7a8e176 100644 --- a/extension/js/settingsHandler.js +++ b/extension/js/settingsHandler.js @@ -1,16 +1,7 @@ (function(){ if(chrome.storage){ - chrome.storage.sync.get(['hideUserName', 'warnOnLosingPost',"sefariaLinker",'backgroundSync', 'backgroundSyncPosts'], function(items){ - if(items.hideUserName){ - let userName = document.querySelector('.header-avatar .username'); - if (userName) - userName.innerText = 'הא?'; - let avatar = document.querySelector('.header-avatar .avatar'); - if (avatar) - avatar.style.display = "none"; - } - + chrome.storage.sync.get(['warnOnLosingPost','backgroundSync', 'backgroundSyncPosts'], function(items){ if(items.warnOnLosingPost){ var form = document.querySelector('form[id="qr_postform"]') || document.querySelector('form[id="postform"]'); @@ -27,7 +18,6 @@ let e = document.createElement('div'); e.style.display = "none"; e.setAttribute('id', 'iveltHelperSettings'); - e.setAttribute('data-sefariaLinker',items.sefariaLinker); e.setAttribute('data-backgroundSync',items.backgroundSync); e.setAttribute('data-backgroundSyncPosts',items.backgroundSyncPosts); document.body.appendChild(e); diff --git a/extension/settings.html b/extension/settings.html index eb65ce8..8c39659 100644 --- a/extension/settings.html +++ b/extension/settings.html @@ -30,11 +30,7 @@

    קרעדיט:

    אנשטעלונגען

    - -
    - - -
    +
    @@ -43,10 +39,6 @@

    אנשטעלונגען

    -
    - - -
    From edfb92547a05f4fbcceae339a9f139f579714fbe Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Wed, 7 Jun 2023 17:41:58 -0400 Subject: [PATCH 39/41] Update manifest.json --- extension/manifest.json | 1 - 1 file changed, 1 deletion(-) diff --git a/extension/manifest.json b/extension/manifest.json index 1c95161..02ac340 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -44,7 +44,6 @@ "js/keyboardShortcuts.js", "js/newResponseNotification.js", "js/addGoogleSearch.js", - "js/sefariaLinker.js", "js/add_button.js", "js/last_quote.js", "js/settingsHandler.js" From 82323631b73bc7e6fa671cd8c5c065724e5b3825 Mon Sep 17 00:00:00 2001 From: KF MDM Solutions Date: Thu, 9 May 2024 18:45:48 -0400 Subject: [PATCH 40/41] initialize --- .gitignore | 3 + README.md | 19 +- build.bat | 5 + extension/background.js | 45 ++-- extension/background.notifications.js | 6 +- extension/css/appcss.css | 12 -- extension/css/font-awesome.min.css | 4 - extension/css/style.css | 23 +- extension/css/styles2.css | 39 ++++ extension/js/addQuoteLastOnlyButton.js | 30 +++ extension/js/add_button.js | 265 ------------------------ extension/js/contentScript.js | 27 +-- extension/js/keyboardShortcuts.js | 41 ++-- extension/js/last_quote.js | 81 -------- extension/js/newResponseNotification.js | 136 +++++++----- extension/js/pageEnhancements.js | 9 + extension/js/popup.js | 6 +- extension/js/removeNestedQuotes.js | 63 ++++++ extension/js/settings.js | 12 +- extension/js/settingsHandler.js | 30 ++- extension/manifest.json | 65 ++++-- extension/rules.json | 8 + extension/settings.html | 48 +++-- screenshot1.png | Bin 0 -> 171583 bytes screenshot2.png | Bin 0 -> 202362 bytes 25 files changed, 435 insertions(+), 542 deletions(-) create mode 100644 .gitignore create mode 100644 build.bat delete mode 100644 extension/css/appcss.css delete mode 100644 extension/css/font-awesome.min.css create mode 100644 extension/css/styles2.css create mode 100644 extension/js/addQuoteLastOnlyButton.js delete mode 100644 extension/js/add_button.js delete mode 100644 extension/js/last_quote.js create mode 100644 extension/js/pageEnhancements.js create mode 100644 extension/js/removeNestedQuotes.js create mode 100644 extension/rules.json create mode 100644 screenshot1.png create mode 100644 screenshot2.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8f45aee --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +extension/_metadata/generated_indexed_rulesets/_ruleset1 +*.zip +dist/* diff --git a/README.md b/README.md index 3b0be9e..3e2aecc 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,35 @@ -![Chrome Web Store](https://img.shields.io/chrome-web-store/v/bcfoanjpmoikpanagkinedlihjbaijke?label=Chrome%20Web%20Store%20Version&style=flat-square&color=66bb6a) -[![GitHub release (latest by date)](https://img.shields.io/github/v/release/mordechairoth/IveltChromeExtension?label=GitHub%20Release%20Version&style=flat-square&color=42a5f5)](https://github.com/mordechairoth/IveltChromeExtension/releases/latest/) -![Chrome Web Store](https://img.shields.io/chrome-web-store/users/bcfoanjpmoikpanagkinedlihjbaijke?label=Users&style=flat-square&color=9575cd) +[![Chrome Web Store](https://img.shields.io/chrome-web-store/v/ahidenbhdkloaingggdcijofobjboopi?label=Chrome%20Web%20Store%20Version&style=flat-square&color=66bb6a)](https://chromewebstore.google.com/detail/ivelt-helper-v2/ahidenbhdkloaingggdcijofobjboopi) +[![GitHub release (latest by date)](https://img.shields.io/github/v/release/chucem/IveltChromeExtension?label=GitHub%20Release%20Version&style=flat-square&color=42a5f5)](https://github.com/chucem/IveltChromeExtension/releases/latest/) +![Chrome Web Store](https://img.shields.io/chrome-web-store/users/ahidenbhdkloaingggdcijofobjboopi?label=Users&style=flat-square&color=9575cd) -# iVelt Helper +# iVelt Helper v2 A browser extension that adds accessibility and usability improvements to אייוועלט. ## Features * Go to next/previous page by pressing the right/left keyboard keys. +* Go to up/down by pressing the up/down keyboard keys. * Submit posts with Ctrl+Enter shortcut. -* Preview posts with Alt+V shortcut (works in quick post and full editor). +* Preview posts with Alt+v shortcut (works in quick post and full editor). +* Go to אקטיווע אשכולות with Alt+a shortcut. +* Popup notifiaciton with Alt+n shortcut. * Receive inbox notifications even when not on אייוועלט. * New response notifications while on topic pages. * New page notification while on topic pages. * Quote last reply only, for posts with multiple quotes. * Search in thread with Google. * Various other fixes and options. +* Prevent accidental mark all notifications as read, and prevent loosing form +* Hide your name ## Install from Chrome Web Store -1. Visit the **[Chrome Web Store](https://chrome.google.com/webstore/detail/ivelt-forum-helper/bcfoanjpmoikpanagkinedlihjbaijke)** page +1. Visit the **[Chrome Web Store](https://chromewebstore.google.com/detail/ivelt-helper-v2/ahidenbhdkloaingggdcijofobjboopi)** page 2. Click **Add to Chrome**. 3. Confirm the **Add extension** popup. 4. Pin **iVelt Helper** to the toolbar for better visibility of the notification badge. ## Install from GitHub (manual install) -1. Download the **_Source code (zip)_** from _Assets_ on the **[Releases Page](https://github.com/mordechairoth/IveltChromeExtension/releases/latest/)** +1. Download the **_Source code (zip)_** from _Assets_ on the **[Releases Page](https://github.com/chucem/IveltChromeExtension/releases/latest/)** 2. Extract the **IveltChromeExtension-x.x.x** folder from the ZIP archive, and move to a safe place (the extension will remain running from this folder and it will need to remain available and in the same location) 3. Open the Chrome **Extensions** page (or go to chrome://extensions/) 4. (If it's not yet enabled) Enable **Developer mode** on the upper-right side diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..0b1141e --- /dev/null +++ b/build.bat @@ -0,0 +1,5 @@ +@echo off +for /f %%i in ('powershell -Command "((Get-Content -Raw -Path extension/manifest.json | ConvertFrom-Json).version)"') do set "version=%%i" +echo %version% + +7z a -tzip "dist/ivelt-helper-%version%.zip" "./extension/*" \ No newline at end of file diff --git a/extension/background.js b/extension/background.js index dcd4150..50839bc 100644 --- a/extension/background.js +++ b/extension/background.js @@ -4,7 +4,6 @@ const defualtPreferences = { hideUserName: false, getBrowserNotifications: false, warnOnLosingPost: true, - sefariaLinker: true, debugMode: false, backgroundSync: true, backgroundSyncPosts: 20000, @@ -25,13 +24,13 @@ let checkNewNotification = function () { let newCount = matches.length == 2 ? matches[1] : "0"; if (newCount !== "0") { - chrome.browserAction.setBadgeText({ text: newCount }); + chrome.action.setBadgeText({ text: newCount }); } else { - chrome.browserAction.setBadgeText({ text: "" }); + chrome.action.setBadgeText({ text: "" }); } // triggere browser notifications - chrome.storage.sync.get(['getBrowserNotifications'], function(items){ + chrome.storage.local.get(['getBrowserNotifications'], function(items){ if(items.getBrowserNotifications){ parseAndSendNotifications(data); } @@ -47,13 +46,25 @@ chrome.alarms.onAlarm.addListener((a) => { }); chrome.runtime.onInstalled.addListener(() => { + + // migrate settings from sync storage to local storage + chrome.storage.sync.get(null, function(items){ + if(Object.keys(items).length > 0){ + Object.keys(items).forEach(key => { + chrome.storage.local.set({[key]: items[key]}); + chrome.storage.sync.remove(key); + console.log(`migrated ${key}`); + }); + } + }); + // set default settings to storage - chrome.storage.sync.get({ + chrome.storage.local.get({ ...defualtPreferences, isFreshInstall: true // needed for initial notifications }, function(items){ if(items && Object.keys(items).length) - chrome.storage.sync.set(items); + chrome.storage.local.set(items); alarmToFetch(items.backgroundSync, parseInt(items.backgroundSyncNotif)); }); @@ -61,7 +72,7 @@ chrome.runtime.onInstalled.addListener(() => { chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { if(request.type === 'badgeText'){ - chrome.browserAction.setBadgeText({ text: request.text }); + chrome.action.setBadgeText({ text: request.text }); } // global method to send a notification @@ -70,28 +81,22 @@ chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { } }); -chrome.webRequest.onBeforeRequest.addListener( - function(details) { return { redirectUrl: 'https://ivelt.com/forum/' }; }, - {urls: ['*://www.ןהקךא.com/*']}, - ["blocking"] -); - chrome.storage.onChanged.addListener((changes, area) => { if(area !== 'sync') return; // clean debug logs when turned off if(changes.debugMode && changes.debugMode.newValue === false){ - chrome.storage.sync.get(null, items => { + chrome.storage.local.get(null, items => { Object.keys(items).forEach(key => { if(key.indexOf(debugLogPrefix) === 0) - chrome.storage.sync.remove(key); + chrome.storage.local.remove(key); }) }) } if(changes.backgroundSync || changes.backgroundSyncNotif){ - chrome.storage.sync.get(['backgroundSync', 'backgroundSyncNotif'], items => { + chrome.storage.local.get(['backgroundSync', 'backgroundSyncNotif'], items => { alarmToFetch(items.backgroundSync, parseInt(items.backgroundSyncNotif)); }); } @@ -115,7 +120,7 @@ function debugLog(name, valueToPush){ clearTimeout(debugQueueTimeout); debugQueueTimeout = setTimeout(() => { - chrome.storage.sync.get('debugMode', items => { + chrome.storage.local.get('debugMode', items => { if(items.debugMode){ // log all from the queue Object.keys(debugQueue).forEach(key => { @@ -129,11 +134,11 @@ function debugLog(name, valueToPush){ function commitDebugLog(name, values){ name = debugLogPrefix + name; - chrome.storage.sync.get(name, ({[name]: item}) => { + chrome.storage.local.get(name, ({[name]: item}) => { if(item) - chrome.storage.sync.set({[name]: item.concat(values)}); + chrome.storage.local.set({[name]: item.concat(values)}); else - chrome.storage.sync.set({[name]: values}); + chrome.storage.local.set({[name]: values}); }) } diff --git a/extension/background.notifications.js b/extension/background.notifications.js index 9b400a7..703485d 100644 --- a/extension/background.notifications.js +++ b/extension/background.notifications.js @@ -24,12 +24,12 @@ function parseAndSendNotifications(data){ var unreadElements = getTagContent(data, 'li', 'row bg3'); var storeOnly = false; - chrome.storage.sync.get(['notificationsSent', 'isFreshInstall'], items => { + chrome.storage.local.get(['notificationsSent', 'isFreshInstall'], items => { debugLog('isFreshInstall', items.isFreshInstall); if(items.isFreshInstall){ - chrome.storage.sync.remove('isFreshInstall'); + chrome.storage.local.remove('isFreshInstall'); storeOnly = true; } @@ -85,7 +85,7 @@ function parseAndSendNotifications(data){ // save sent items in storage // TODO: prune old ids to avoid storage quota errors - chrome.storage.sync.set({ + chrome.storage.local.set({ 'notificationsSent': notificationsSent }, () => { // dont send the initial batch diff --git a/extension/css/appcss.css b/extension/css/appcss.css deleted file mode 100644 index 3b91c9a..0000000 --- a/extension/css/appcss.css +++ /dev/null @@ -1,12 +0,0 @@ - - -.clone-first .app-hidden { - display: none; -} -.clone-first.app-hidden { - display: none; -} - -.post-buttons .app-hidden { - display: none; -} diff --git a/extension/css/font-awesome.min.css b/extension/css/font-awesome.min.css deleted file mode 100644 index 540440c..0000000 --- a/extension/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/extension/css/style.css b/extension/css/style.css index ed07645..b6da1f4 100644 --- a/extension/css/style.css +++ b/extension/css/style.css @@ -19,6 +19,7 @@ body { line-height: 1.5em; background: #fafafa; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji','Segoe UI Symbol'; + direction: rtl; } strong { font-weight: 600; @@ -86,9 +87,8 @@ hr { } .mainContent { width: 750px; - margin: 50px auto; display: grid; - grid-template-columns: 200px auto; + grid-template-columns: 500px auto; grid-column-gap: 40px; grid-template-areas: 'h h' @@ -100,7 +100,7 @@ hr { font-size: 20px; } .credits { - grid-area: n; + grid-area: m; border-right: 1px solid #ddd; padding-right: 15px; align-self: start; @@ -111,7 +111,7 @@ hr { list-style-type: none; } .content { - grid-area: m; + grid-area: n; font-size: 16px; } .content h2 { @@ -170,18 +170,3 @@ select { font-size: 0.7em; line-height: 1; } - -.shortcut-key .icon { - display: inline-block; - font-family: FontAwesome; - font-weight: normal; - font-style: normal; - font-variant: normal; - font-size: 14px; - line-height: 1; - text-rendering: auto; /* optimizelegibility throws things off #1094 */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.shortcut-key .icon:before { padding-right: 2px; } diff --git a/extension/css/styles2.css b/extension/css/styles2.css new file mode 100644 index 0000000..0eb0b0e --- /dev/null +++ b/extension/css/styles2.css @@ -0,0 +1,39 @@ +.header { + background-color: #12A3EB; + background-image: linear-gradient(to bottom, #6ACEFF 0%, #0076B1 2px, #12A3EB 92px, #12A3EB 100%); + background-repeat: repeat-x; + color: #FFFFFF; + margin-bottom: 4px; + padding: 15px; + border-radius: 10px; + } + + #logo { + float: right; + padding: 7px 15px; + } + + + .aaa { + border-top: 15px solid #0A8ED0; + border-bottom: 3px solid #0A8ED0; + border-right: 1px solid #0A8ED0; + border-left: 1px solid #0A8ED0; + border-radius: 7px; + padding: 15px; + width: 750px; + margin: 50px auto; + + } + body{ + background-color: #F5F7FA + } + .wrap{ + background-color: #fff; + + border-radius: 8px; + margin: 0 auto; + margin-top: 12px; + width: 780px; + padding: 15px; + } \ No newline at end of file diff --git a/extension/js/addQuoteLastOnlyButton.js b/extension/js/addQuoteLastOnlyButton.js new file mode 100644 index 0000000..6f646b9 --- /dev/null +++ b/extension/js/addQuoteLastOnlyButton.js @@ -0,0 +1,30 @@ +function addBtn(){ + let btns = document.querySelectorAll('.post-buttons'); + let isPosting = (window.location.href.includes("posting.php")) + btns.forEach(btn => { + let contentElement = btn.parentElement.getElementsByClassName("content").item(0) + if (contentElement.innerHTML.includes("blockquote")){ + let li = document.createElement('li'); + let a = document.createElement('a'); + let quoteBtn = btn.querySelector('[title="ציטיר אין תגובה"]'); + if (quoteBtn){ + let href = quoteBtn.getAttribute('href'); + let onclick = quoteBtn.getAttribute('onclick'); + a.setAttribute('href', href + '&last=true'); + a.setAttribute('style', "width:18px;color:black;text-align:center;user-select:none;"); + a.setAttribute('class', 'button button-icon-only'); + a.setAttribute('title', 'ציטיר בלויז די לעצטע תגובה'); + if (isPosting){ + a.setAttribute("onclick", "last"+onclick) + } + li.appendChild(a); + let quoteLi = quoteBtn.parentNode; + quoteLi.parentNode.insertBefore(li, quoteLi.nextSibling) + a.innerText = '-' + } + + } + }); + } + +addBtn(); \ No newline at end of file diff --git a/extension/js/add_button.js b/extension/js/add_button.js deleted file mode 100644 index b586b0e..0000000 --- a/extension/js/add_button.js +++ /dev/null @@ -1,265 +0,0 @@ -function createButton(reference, customClass, title, text, onclick, itext="") { - let li = document.createElement('li'); - let a = document.createElement('a'); - let span = document.createElement('span'); - let i = document.createElement('i'); - //let img = document.createElement('img'); - //img.setAttribute('src', `https://www.ivelt.com/kfmdm/resources/drawable/${icon}`) - if (reference){ - a.setAttribute('href', reference); - } - if (onclick){ - a.setAttribute('onClick', onclick) - } - a.setAttribute('class', 'button button-icon-only custom-btn '); - a.setAttribute('title',title ); - i.setAttribute('class', `icon ${customClass} fa-fw`); - i.setAttribute('aria-hidden', 'true'); - i.innerText = itext; - span.innerText = text; - a.appendChild(i); - a.appendChild(span); - li.appendChild(a); - - return {li, a, span, i} -} - -function getPMHref(id) { - let pm_button = document.querySelector(`#profile${id.replace("post_content", "")} .pm-icon`) - if (pm_button){ - return pm_button.parentElement.getAttribute("href") - } - return null; -} - -function addBtn(){ - let btns = document.querySelectorAll('.post-buttons'); - let isPosting = (window.location.href.includes("posting.php")); - var needUpdating = false; - btns.forEach(btn => { - // Check if custom buttons have been added already, if yes ignore. - if(btn.getElementsByClassName('custom-btn').length > 0){ - return; - } - needUpdating = true - btn.querySelectorAll('li.hidden:not(.responsive-menu)').forEach(b => { - if (b.getAttribute('class') == "hidden"){ - b.removeAttribute('class') - } - }) - - let contentElement = btn.parentElement.getElementsByClassName("content").item(0) - let id = btn.parentElement.getAttribute("id") || "" - let strippedId = id.replace("post_content", "") - strippedId = strippedId.replace("pr", "") - if (!isPosting){ - addCopyQuoteButton(btn, id.replace("post_content", "")) - } - let pingOnClick = `ping_user(${strippedId})` - addSimpleButton(btn, null, 'fa-at', 'דערמאן תגובה', 'דערמאן תגובה', pingOnClick) - if (contentElement.innerHTML.includes("blockquote")) { - addQuoteLastButton(btn, isPosting); - } - - let responsiveMenu = btn.getElementsByClassName('responsive-menu').item(0); - try { - btn.removeChild(btn.getElementsByClassName('responsive-menu').item(0)) - }catch (e) { - - } - }); - let navUpdate = addDefaultPage(); - if (needUpdating || navUpdate){ - let navBar = document.querySelector('#nav-footer'); - navBar.querySelectorAll('li.hidden:not(.responsive-menu)').forEach(si => { - si.setAttribute('class', si.getAttribute('class').replace('hidden', '')) - }) - navBar.removeChild(navBar.getElementsByClassName('responsive-menu').item(0)) - parseDocument($('body')); - } -} - -function addSimpleButton(btn, href, customClass, title, text, onclick){ - let button = createButton(href, customClass, title, text, onclick); - btn.appendChild(button.li); -} - -function getQuoteURL(btn){ - - try{ - let quoteButton = btn.querySelector('i.icon.fa-quote-left.fa-fw'); - let quoteUrl = quoteButton.parentElement; - if (!quoteUrl){ - return null; - } - let href = quoteUrl.getAttribute('href'); - return href; - }catch (e){ - - } - -} -function addCopyQuoteButton(btn, postID){ - let href = getPMHref(postID) || getQuoteURL(btn) - if (!href){ - addSimpleButton(btn, null, 'fa-copy', 'ציטיר אין אנדערע אשכול', 'ציטיר אין אנדערע אשכול', `copyQuoteParse("${postID}")`) - return; - } - addSimpleButton(btn, null, 'fa-copy', 'ציטיר אין אנדערע אשכול', 'ציטיר אין אנדערע אשכול', `copyQuote("${href}", "${postID}")`) -} -function addQuoteLastButton(btn, isPosting) { - - let href = getQuoteURL(btn) - if (!href){ - - return; - } - var onclick = null; - if (isPosting){ - onclick = "last" + btn.querySelector('i.icon.fa-quote-left.fa-fw').parentElement.getAttribute('onclick'); -// button.a.setAttribute("onclick", "last" + onclick); - } - let button = createButton(href + '&last=true', 'fa-quote-left last', 'ציטיר בלויז די לעצטע תגובה', 'ציטיר לעצטע', onclick, '1'); - - btn.appendChild(button.li); -} - - -function addDefaultPage(){ - if (document.querySelector(`#kf-app-default-page`)){ - return false - } - let li = document.createElement("li") - let a = document.createElement('a'); - li.appendChild(a) - li.setAttribute("class", "rightside") - li.setAttribute("id", "kf-app-default-page") - a.setAttribute('onClick', "saveDefaultPage()") - a.innerText = "מאך די בלאט די דיפאולט בלאט" - let pagination = document.querySelectorAll("#nav-footer").item(0) - if (pagination){ - pagination.insertBefore(li, pagination.firstChild); - return true; - } - return false; -} - -function getPostLink(postID){ - return `https://www.IVELT.com/forum/viewtopic.php?p=${postID}#p${postID}`; -} - -function copyQuoteParse(post_id){ - var html = document.querySelector(`#post_content${post_id} .content`).innerHTML - let post_url = getPostLink(post_id) - var username = getUsername(post_id) - let converter = new HTML2BBCode(); - html = html.replaceAll("./download", "www.ivelt.com/forum/download") - navigator.clipboard.writeText(`[quote="${username}"]${converter.feed(html)} [/quote] [url=${post_url}]מקור[/url]`) -} - -function getPostDetails(post_id, prefix = 'p'){ - var usernameE = document.querySelector(`#${prefix}${post_id} .username`) - if (!usernameE){ - var usernameE = document.querySelector(`#p${prefix}${post_id} .username-coloured`) - } - var username = "" - if(usernameE){ - username = usernameE.innerText - } - - var idE = document.querySelector(`#${prefix}${post_id} .username`); - if (!idE){ - var usernameE = document.querySelector(`#p${prefix}${post_id} .username-coloured`) - } - var usernameLink = "" - let id ="" - if(idE){ - usernameLink = idE.href; - id = usernameLink.split("u=")[1]; - } - var tsE = document.querySelector(`#${prefix}${post_id} time`) - if (!tsE){ - var tsE = document.querySelector(`#${prefix}${post_id} [href='#postingbox']`).getAttribute('onclick') - if(tsE) - var time = tsE.match('(?<=time:)(.*)(?=,user)')[0]; - }else{ - var ts = Date.parse(tsE.dateTime) - var time = ts / 1000 - } - - - - return { - "username":username, - "id":id, - "time":time - }; -} - -function ping_user(post_id){ - - if (window.location.href.includes("posting.php")){ - let PostDetails = getPostDetails(post_id,"pr") - let text = `[quote="${PostDetails.username}" user_id=${PostDetails.id} time=${PostDetails.time} post_id=${post_id}]\n[/quote]` - insert_text(text) - }else{ - let PostDetails = getPostDetails(post_id) - let text = `[quote="${PostDetails.username}" user_id=${PostDetails.id} time=${PostDetails.time} post_id=${post_id}]\n[/quote]` - - try { - addText(text) - }catch (exception_var) { - navigator.clipboard.writeText(text) - } - } -} - -function addText(text){ - var textarea = document.querySelector("#message-box textarea"); - - if (!isNaN(textarea.selectionStart)) { - var sel_start = textarea.selectionStart; - var sel_end = textarea.selectionEnd; - mozWrapApp(textarea, text, ''); - textarea.selectionStart = sel_start + text.length; - textarea.selectionEnd = sel_end + text.length; - } else if (textarea.createTextRange && textarea.caretPos) { - if (baseHeight !== textarea.caretPos.boundingHeight) { - textarea.focus(); - storeCaret(textarea); - } - var caret_pos = textarea.caretPos; - caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) === ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text; - } else { - textarea.value = textarea.value + text; - } - textarea.focus(); -} -function mozWrapApp(txtarea, open, close) { - var selLength = (typeof(txtarea.textLength) === 'undefined') ? txtarea.value.length : txtarea.textLength; - var selStart = txtarea.selectionStart; - var selEnd = txtarea.selectionEnd; - var scrollTop = txtarea.scrollTop; - - var s1 = (txtarea.value).substring(0,selStart); - var s2 = (txtarea.value).substring(selStart, selEnd); - var s3 = (txtarea.value).substring(selEnd, selLength); - - txtarea.value = s1 + open + s2 + close + s3; - txtarea.selectionStart = selStart + open.length; - txtarea.selectionEnd = selEnd + open.length; - txtarea.focus(); - txtarea.scrollTop = scrollTop; - - return; -} - -addBtn(); - - - - - - - - diff --git a/extension/js/contentScript.js b/extension/js/contentScript.js index 5b1091d..0f72982 100644 --- a/extension/js/contentScript.js +++ b/extension/js/contentScript.js @@ -1,16 +1,17 @@ let scripts = [ - "js/keyboardShortcuts.js", - "js/newResponseNotification.js", - "js/addGoogleSearch.js", - "js/add_button.js", - "js/last_quote.js" + "js/keyboardShortcuts.js", + "js/removeNestedQuotes.js", + "js/addQuoteLastOnlyButton.js", + "js/newResponseNotification.js", + "js/pageEnhancements.js", + "js/addGoogleSearch.js" ]; -scripts.forEach(s => { - let e = document.createElement('script'); - e.src = chrome.extension.getURL(s); - (document.head || document.documentElement).appendChild(e); - e.onload = function () { - e.parentNode.removeChild(e); - }; -}); \ No newline at end of file +scripts.forEach((s) => { + let e = document.createElement("script"); + e.src = chrome.runtime.getURL(s); + (document.head || document.documentElement).appendChild(e); + e.onload = function () { + e.parentNode.removeChild(e); + }; +}); diff --git a/extension/js/keyboardShortcuts.js b/extension/js/keyboardShortcuts.js index d72c6c4..9c431bc 100644 --- a/extension/js/keyboardShortcuts.js +++ b/extension/js/keyboardShortcuts.js @@ -7,30 +7,47 @@ function nextPage() { } function scrollTop() { - window.scrollTo(0, 0); + window.scrollTo({ top: 0, behavior: 'smooth' }); } function scrollBottom() { - window.scrollTo(0, document.body.scrollHeight); + window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' } ); } -function sendPost() { - document.getElementsByName("post")[0].click(); +function sendPost(post) { + if (post) { + post.click(); + } } function previewPost() { document.getElementsByName("preview")[0].click(); } +function toggleNotification() { + const notificationNode = document.getElementById("notification_list_button"); + if (notificationNode) { + notificationNode.click(); + } +} + function checkKey(e) { + if (e.code == "KeyA" && e.altKey) { + window.location.href = 'https://www.ivelt.com/forum/search.php?search_id=active_topics'; + } + if (e.key == "Enter" && e.ctrlKey && post) { - sendPost(); + sendPost(post); } if (e.code == "KeyV" && e.altKey && post) { previewPost(); } + if (e.code == "KeyN" && e.altKey) { + toggleNotification(); + } + e = e || window.event; if (e.target.nodeName == "INPUT" || e.target.nodeName == "TEXTAREA") return; @@ -49,20 +66,14 @@ function checkKey(e) { console.log("attempted to go before first page"); } } else if (e.key == "ArrowUp") { - //scrollTop(); + scrollTop(); } else if (e.key == "ArrowDown") { - //scrollBottom(); + scrollBottom(); } } -document.querySelector(".icon.fa-file-o.fa-fw.icon-blue").parentElement.accessKey = "a"; - -const notificationNode = document.getElementById("notification_list_button"); - -if (notificationNode) notificationNode.accessKey = "n"; - -let post = (document.getElementsByName("post") || [])[0]; +let post = document.getElementsByName("post")[0] || document.getElementsByName("submit")[0] || false; if (post) { - post.setAttribute("title", "שיק תגובה (שארטקאט קאנטראל+ענטער)"); + post.setAttribute("title", "שיק (שארטקאט קאנטראל+ענטער)"); } document.onkeydown = checkKey; diff --git a/extension/js/last_quote.js b/extension/js/last_quote.js deleted file mode 100644 index 3eeed3b..0000000 --- a/extension/js/last_quote.js +++ /dev/null @@ -1,81 +0,0 @@ -function hasNestedQuotes(text) { - let firstQ = text.indexOf("[quote"); - if (firstQ === -1) { - return false; - } - let secondQ = text.indexOf("[quote", firstQ + 1); - if (secondQ === -1) { - return false; - } - return true; -} - -function removeNestedQuotes(text) { - let nestedQuote = text.substring( - text.lastIndexOf('[quote'), - text.indexOf("[/quote]", text.lastIndexOf('[quote')) + 8 - ); - let modifiedText = text.replace(nestedQuote, ""); - - if (hasNestedQuotes(modifiedText)) { - return removeNestedQuotes(modifiedText); - } - - return modifiedText; -} - -if (window.location.href.includes("last=true")) { - let messageArea = document.querySelector("#message"); - let text = messageArea.innerHTML; - if (hasNestedQuotes(text)) { - text = removeNestedQuotes(text); - messageArea.innerHTML = text; - } -} - -function getSelection2(post_id){ - let messageName= 'message_' + post_id; - let theSelection = ''; - let divArea = false; - - divArea = document.getElementById(messageName); - - if (divArea.innerHTML) { - theSelection = divArea.innerHTML.replace(/
    /ig, '\n'); - theSelection = theSelection.replace(//ig, '\n'); - theSelection = theSelection.replace(/<\;/ig, '<'); - theSelection = theSelection.replace(/>\;/ig, '>'); - theSelection = theSelection.replace(/&\;/ig, '&'); - theSelection = theSelection.replace(/ \;/ig, ' '); - } else if (divArea.textContent) { - theSelection = divArea.textContent; - } else if (divArea.firstChild.nodeValue) { - theSelection = divArea.firstChild.nodeValue; - } - return theSelection; -} - -function copyQuote(url, post_id){ - let post_url = getPostLink(post_id) - console.log(`url ${post_url}`) - $.get( - url, - response => { - var res = $("#message-box #message", response)[0].innerText - console.log(url) - if (url.toString().includes("posting.php")){ - res = `${res} [url=${post_url}]מקור[/url]` - } - navigator.clipboard.writeText(res) - } - ) -} - -function lastaddquote(post_id, username, l_wrote, attributes ) { - let theSelection = getSelection2(post_id) - if (theSelection) { - let text = '[quote="' + username + '" post_id='+attributes.post_id+' time='+attributes.time+' user_id='+attributes.user_id+']' + theSelection + '[/quote]' - insert_text(removeNestedQuotes(text)); - } - return; -} diff --git a/extension/js/newResponseNotification.js b/extension/js/newResponseNotification.js index 2db49ce..c457927 100644 --- a/extension/js/newResponseNotification.js +++ b/extension/js/newResponseNotification.js @@ -1,63 +1,87 @@ -(function(){ - let currentCount = document.getElementsByClassName("post has-profile").length; - let lastPost = document.getElementsByClassName("post has-profile")[currentCount -1] +(function () { + if (window.location.pathname !== '/forum/viewtopic.php') return ; - function isLastPage() { - return document.getElementsByClassName("next").length == 0; - } + let currentCount = document + .querySelector("div.pagination") + .innerHTML.match(/(\d+) תגובות/)[1]; + let currentPostCount = + document.getElementsByClassName("post has-profile").length; + let lastPost = + document.getElementsByClassName("post has-profile")[currentPostCount - 1]; + + var topicURL = document.querySelector("h2.topic-title > a").href; + var topicURLSearch = topicURL.substr(topicURL.indexOf("?")); + var urlParams = new URLSearchParams(topicURLSearch); + var topicId = urlParams.get("t"); + var forumURL = document.getElementsByClassName("left-box arrow-right")[0] + .href; - let url = window.location.href; - let title = document.title; - // setting was unchecked by the user + function isLastPage() { + return document.getElementsByClassName("next").length == 0; + } - let backgroundSync = document.getElementById('iveltHelperSettings').getAttribute('data-backgroundSync') === 'true'; - let backgroundSyncPosts = document.getElementById('iveltHelperSettings').getAttribute('data-backgroundSyncPosts'); - if(!backgroundSync || !backgroundSyncPosts) - return; + let title = document.title; + // setting was unchecked by the user - let interval = parseInt(backgroundSyncPosts); - let checkNewResponse = function () { - if (isLastPage() && currentCount > 0) { - $.ajax({ - type: "GET", - url: url, - success: function (data) { - let newCount = (data.match(/class="post has-profile/g) || []).length; - let isNewPage = (data.match(/