From 7aa8dcea6bd89472a5fe32dd90de39e610bad6ac Mon Sep 17 00:00:00 2001 From: RainLoop Team Date: Sun, 16 Nov 2014 16:54:23 +0400 Subject: [PATCH] Added labs.allow_html_editor_biti_buttons setting (RTL/LTR html edito buttons) (#375) --- dev/Common/Globals.js | 6 +- dev/Common/HtmlEditor.js | 18 +- rainloop/v/0.0.0/app/src/RainLoop/Actions.php | 36 +-- .../app/src/RainLoop/Config/Application.php | 1 + .../ckeditor/plugins/bidi/icons/bidiltr.png | Bin 0 -> 769 bytes .../ckeditor/plugins/bidi/icons/bidirtl.png | Bin 0 -> 768 bytes .../plugins/bidi/icons/hidpi/bidiltr.png | Bin 0 -> 1579 bytes .../plugins/bidi/icons/hidpi/bidirtl.png | Bin 0 -> 1596 bytes .../static/ckeditor/plugins/bidi/lang/af.js | 8 + .../static/ckeditor/plugins/bidi/lang/ar.js | 8 + .../static/ckeditor/plugins/bidi/lang/bg.js | 8 + .../static/ckeditor/plugins/bidi/lang/bn.js | 8 + .../static/ckeditor/plugins/bidi/lang/bs.js | 8 + .../static/ckeditor/plugins/bidi/lang/ca.js | 8 + .../static/ckeditor/plugins/bidi/lang/cs.js | 8 + .../static/ckeditor/plugins/bidi/lang/cy.js | 8 + .../static/ckeditor/plugins/bidi/lang/da.js | 8 + .../static/ckeditor/plugins/bidi/lang/de.js | 8 + .../static/ckeditor/plugins/bidi/lang/el.js | 8 + .../ckeditor/plugins/bidi/lang/en-au.js | 8 + .../ckeditor/plugins/bidi/lang/en-ca.js | 8 + .../ckeditor/plugins/bidi/lang/en-gb.js | 8 + .../static/ckeditor/plugins/bidi/lang/en.js | 8 + .../static/ckeditor/plugins/bidi/lang/eo.js | 8 + .../static/ckeditor/plugins/bidi/lang/es.js | 8 + .../static/ckeditor/plugins/bidi/lang/et.js | 8 + .../static/ckeditor/plugins/bidi/lang/eu.js | 8 + .../static/ckeditor/plugins/bidi/lang/fa.js | 8 + .../static/ckeditor/plugins/bidi/lang/fi.js | 8 + .../static/ckeditor/plugins/bidi/lang/fo.js | 8 + .../ckeditor/plugins/bidi/lang/fr-ca.js | 8 + .../static/ckeditor/plugins/bidi/lang/fr.js | 8 + .../static/ckeditor/plugins/bidi/lang/gl.js | 8 + .../static/ckeditor/plugins/bidi/lang/gu.js | 8 + .../static/ckeditor/plugins/bidi/lang/he.js | 8 + .../static/ckeditor/plugins/bidi/lang/hi.js | 8 + .../static/ckeditor/plugins/bidi/lang/hr.js | 8 + .../static/ckeditor/plugins/bidi/lang/hu.js | 8 + .../static/ckeditor/plugins/bidi/lang/id.js | 8 + .../static/ckeditor/plugins/bidi/lang/is.js | 8 + .../static/ckeditor/plugins/bidi/lang/it.js | 8 + .../static/ckeditor/plugins/bidi/lang/ja.js | 8 + .../static/ckeditor/plugins/bidi/lang/ka.js | 8 + .../static/ckeditor/plugins/bidi/lang/km.js | 8 + .../static/ckeditor/plugins/bidi/lang/ko.js | 8 + .../static/ckeditor/plugins/bidi/lang/ku.js | 8 + .../static/ckeditor/plugins/bidi/lang/lt.js | 8 + .../static/ckeditor/plugins/bidi/lang/lv.js | 8 + .../static/ckeditor/plugins/bidi/lang/mk.js | 8 + .../static/ckeditor/plugins/bidi/lang/mn.js | 8 + .../static/ckeditor/plugins/bidi/lang/ms.js | 8 + .../static/ckeditor/plugins/bidi/lang/nb.js | 8 + .../static/ckeditor/plugins/bidi/lang/nl.js | 8 + .../static/ckeditor/plugins/bidi/lang/no.js | 8 + .../static/ckeditor/plugins/bidi/lang/pl.js | 8 + .../ckeditor/plugins/bidi/lang/pt-br.js | 8 + .../static/ckeditor/plugins/bidi/lang/pt.js | 8 + .../static/ckeditor/plugins/bidi/lang/ro.js | 8 + .../static/ckeditor/plugins/bidi/lang/ru.js | 8 + .../static/ckeditor/plugins/bidi/lang/si.js | 8 + .../static/ckeditor/plugins/bidi/lang/sk.js | 8 + .../static/ckeditor/plugins/bidi/lang/sl.js | 8 + .../static/ckeditor/plugins/bidi/lang/sq.js | 8 + .../ckeditor/plugins/bidi/lang/sr-latn.js | 8 + .../static/ckeditor/plugins/bidi/lang/sr.js | 8 + .../static/ckeditor/plugins/bidi/lang/sv.js | 8 + .../static/ckeditor/plugins/bidi/lang/th.js | 8 + .../static/ckeditor/plugins/bidi/lang/tr.js | 8 + .../static/ckeditor/plugins/bidi/lang/tt.js | 8 + .../static/ckeditor/plugins/bidi/lang/ug.js | 8 + .../static/ckeditor/plugins/bidi/lang/uk.js | 8 + .../static/ckeditor/plugins/bidi/lang/vi.js | 8 + .../ckeditor/plugins/bidi/lang/zh-cn.js | 8 + .../static/ckeditor/plugins/bidi/lang/zh.js | 8 + .../static/ckeditor/plugins/bidi/plugin.js | 305 ++++++++++++++++++ 75 files changed, 865 insertions(+), 29 deletions(-) create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/icons/bidiltr.png create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/icons/bidirtl.png create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/icons/hidpi/bidiltr.png create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/icons/hidpi/bidirtl.png create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/af.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/ar.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/bg.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/bn.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/bs.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/ca.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/cs.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/cy.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/da.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/de.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/el.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/en-au.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/en-ca.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/en-gb.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/en.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/eo.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/es.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/et.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/eu.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/fa.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/fi.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/fo.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/fr-ca.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/fr.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/gl.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/gu.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/he.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/hi.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/hr.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/hu.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/id.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/is.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/it.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/ja.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/ka.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/km.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/ko.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/ku.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/lt.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/lv.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/mk.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/mn.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/ms.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/nb.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/nl.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/no.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/pl.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/pt-br.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/pt.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/ro.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/ru.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/si.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/sk.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/sl.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/sq.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/sr-latn.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/sr.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/sv.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/th.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/tr.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/tt.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/ug.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/uk.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/vi.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/zh-cn.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/lang/zh.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/bidi/plugin.js diff --git a/dev/Common/Globals.js b/dev/Common/Globals.js index 9464bc3bf..19654ab5b 100644 --- a/dev/Common/Globals.js +++ b/dev/Common/Globals.js @@ -132,17 +132,17 @@ 'toolbarGroups': [ {name: 'spec'}, {name: 'styles'}, - {name: 'basicstyles', groups: ['basicstyles', 'cleanup']}, + {name: 'basicstyles', groups: ['basicstyles', 'cleanup', 'bidi']}, {name: 'colors'}, {name: 'paragraph', groups: ['list', 'indent', 'blocks', 'align']}, {name: 'links'}, {name: 'insert'}, + {name: 'document', groups: ['mode', 'document', 'doctools']}, {name: 'others'} - // {name: 'document', groups: ['mode', 'document', 'doctools']} ], 'removePlugins': 'liststyle,tabletools,contextmenu', //blockquote - 'removeButtons': 'Format,Undo,Redo,Cut,Copy,Paste,Anchor,Strike,Subscript,Superscript,Image,SelectAll', + 'removeButtons': 'Format,Undo,Redo,Cut,Copy,Paste,Anchor,Strike,Subscript,Superscript,Image,SelectAll,Source', 'removeDialogTabs': 'link:advanced;link:target;image:advanced;images:advanced', 'extraPlugins': 'plain', diff --git a/dev/Common/HtmlEditor.js b/dev/Common/HtmlEditor.js index 15523eb77..597871ba7 100644 --- a/dev/Common/HtmlEditor.js +++ b/dev/Common/HtmlEditor.js @@ -8,6 +8,8 @@ _ = require('_'), Globals = require('Common/Globals'), + Utils = require('Common/Utils'), + Settings = require('Storage/Settings') ; @@ -167,13 +169,23 @@ var oConfig = Globals.oHtmlEditorDefaultConfig, sLanguage = Settings.settingsGet('Language'), - bSource = !!Settings.settingsGet('AllowHtmlEditorSourceButton') + bSource = !!Settings.settingsGet('AllowHtmlEditorSourceButton'), + bBiti = !!Settings.settingsGet('AllowHtmlEditorBitiButtons') ; - if (bSource && oConfig.toolbarGroups && !oConfig.toolbarGroups.__SourceInited) + if ((bSource || bBiti) && !oConfig.toolbarGroups.__SourceInited) { oConfig.toolbarGroups.__SourceInited = true; - oConfig.toolbarGroups.push({name: 'document', groups: ['mode', 'document', 'doctools']}); + + if (bSource) + { + oConfig.removeButtons = oConfig.removeButtons.replace(',Source', ''); + } + + if (bBiti) + { + oConfig.extraPlugins += (oConfig.extraPlugins ? ',' : '') + 'bidi'; + } } oConfig.enterMode = window.CKEDITOR.ENTER_BR; diff --git a/rainloop/v/0.0.0/app/src/RainLoop/Actions.php b/rainloop/v/0.0.0/app/src/RainLoop/Actions.php index 66ac0439d..8f2c187e5 100644 --- a/rainloop/v/0.0.0/app/src/RainLoop/Actions.php +++ b/rainloop/v/0.0.0/app/src/RainLoop/Actions.php @@ -1030,6 +1030,7 @@ class Actions 'InIframe' => (bool) $oConfig->Get('labs', 'in_iframe', false), 'AllowAdminPanel' => (bool) $oConfig->Get('security', 'allow_admin_panel', true), 'AllowHtmlEditorSourceButton' => (bool) $oConfig->Get('labs', 'allow_html_editor_source_button', false), + 'AllowHtmlEditorBitiButtons' => (bool) $oConfig->Get('labs', 'allow_html_editor_biti_buttons', false), 'UseRsaEncryption' => (bool) $oConfig->Get('security', 'use_rsa_encryption', false), 'RsaPublicKey' => '', 'HideDangerousActions' => $oConfig->Get('labs', 'hide_dangerous_actions', false), @@ -2651,35 +2652,27 @@ class Actions $oCacher = $this->Cacher(); $oHttp = \MailSo\Base\Http::SingletonInstance(); - if ($oHttp->CheckLocalhost($sDomain)) + if ($oHttp->CheckLocalhost($sDomain) || !$oCacher) { return 'NO'; } + $sDomainKeyValue = \RainLoop\KeyPathHelper::LicensingDomainKeyValue($sDomain); + $sDomainLongKeyValue = \RainLoop\KeyPathHelper::LicensingDomainKeyOtherValue($sDomain); + $sValue = ''; - if (!$sForce && $oCacher) + if (!$sForce) { - if (!$bLongCache) + $iTime = $oCacher->GetTimer($bLongCache ? $sDomainLongKeyValue : $sDomainKeyValue); + if (0 < $iTime && \time() < $iTime + (60 * ($bLongCache ? 60 * 24 : 1)) * ($bLongCache ? $iLongCacheTimeInDays : $iFastCacheTimeInMin)) { - $iTime = $oCacher->GetTimer(\RainLoop\KeyPathHelper::LicensingDomainKeyValue($sDomain)); - if ($iTime + 60 * $iFastCacheTimeInMin > \time()) - { - $sValue = $oCacher->Get(\RainLoop\KeyPathHelper::LicensingDomainKeyValue($sDomain)); - } - } - else - { - $iTime = $oCacher->GetTimer(\RainLoop\KeyPathHelper::LicensingDomainKeyOtherValue($sDomain)); - if ($iTime + (60 * 60 * 24) * $iLongCacheTimeInDays > \time()) - { - $sValue = $oCacher->Get(\RainLoop\KeyPathHelper::LicensingDomainKeyOtherValue($sDomain)); - } + $sValue = $oCacher->Get($bLongCache ? $sDomainLongKeyValue : $sDomainKeyValue); } } if (0 === \strlen($sValue)) { - if ($bLongCache && (!$oCacher || !$oCacher->SetTimer(\RainLoop\KeyPathHelper::LicensingDomainKeyOtherValue($sDomain)))) + if ($bLongCache && !$oCacher->SetTimer($sDomainLongKeyValue)) { return 'NO'; } @@ -2698,13 +2691,10 @@ class Actions $sValue = ''; } - if ($oCacher) - { - $oCacher->SetTimer(\RainLoop\KeyPathHelper::LicensingDomainKeyValue($sDomain)); + $oCacher->SetTimer($sDomainKeyValue); - $oCacher->Set(\RainLoop\KeyPathHelper::LicensingDomainKeyValue($sDomain), $sValue); - $oCacher->Set(\RainLoop\KeyPathHelper::LicensingDomainKeyOtherValue($sDomain), $sValue); - } + $oCacher->Set($sDomainKeyValue, $sValue); + $oCacher->Set($sDomainLongKeyValue, $sValue); } return $sValue; diff --git a/rainloop/v/0.0.0/app/src/RainLoop/Config/Application.php b/rainloop/v/0.0.0/app/src/RainLoop/Config/Application.php index f5fc0925e..6f884ad40 100644 --- a/rainloop/v/0.0.0/app/src/RainLoop/Config/Application.php +++ b/rainloop/v/0.0.0/app/src/RainLoop/Config/Application.php @@ -241,6 +241,7 @@ Enables caching in the system'), 'login_fault_delay' => array(1), 'log_ajax_response_write_limit' => array(300), 'allow_html_editor_source_button' => array(false), + 'allow_html_editor_biti_buttons' => array(false), 'hide_dangerous_actions' => array(false), 'use_app_debug_js' => array(false), 'use_app_debug_css' => array(false), diff --git a/rainloop/v/0.0.0/static/ckeditor/plugins/bidi/icons/bidiltr.png b/rainloop/v/0.0.0/static/ckeditor/plugins/bidi/icons/bidiltr.png new file mode 100644 index 0000000000000000000000000000000000000000..a909c0103b4bbf439f65374a29a46fbfaf2a1f67 GIT binary patch literal 769 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_D|ila!~6V~EA+*2(+*q#Xs?_ut(sFjwGN3YW$sAt|my+yNJYFE8<& zZQj5p*T~)xw4}f}PJuOu%PLCifQQ?$O(KmoRDkm?0^0SQX z`dx-?dE2`UpG^&VwKwRMlcwrJmq3-de(Y;aCkCzBs-sl#{$f=7srP1PW_G!Gc}YDF zzkJzp=kDEF+qr&)=Ml5n1+Qerjt@zklJ)22_4F38T#zF1Ty8*w3Foj}}2D? ZNY%?PN}v7CMhd8i!PC{xWt~$(69BAIPS*ec literal 0 HcmV?d00001 diff --git a/rainloop/v/0.0.0/static/ckeditor/plugins/bidi/icons/bidirtl.png b/rainloop/v/0.0.0/static/ckeditor/plugins/bidi/icons/bidirtl.png new file mode 100644 index 0000000000000000000000000000000000000000..7dbad48c123532de7d3ce1883187581cd5cfa3ca GIT binary patch literal 768 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_D|ilccAMV~EA+(%{{BQjQ|F_ziZiX| z9%}3;;J6m`hksIsLJNa&^UV9U7owcAd6UmLDrvSjtPOMCe6vO1k;1{(ueBdpv|amk zcW*+P$!uSP;?|CR0v9KAtg#OAx}9OdH)%T8w(0ZFpFh7pJ|?DNrlADSrMmt96*-zd zrKeBt@bWI|f0Moby7RQu54G|Pd!81pbXy#_D{lS5t!-0;+}+(*gsl$na@1sfD0Mk& zYl;9%$76}eX^ak=Zssr?IK7GI4A1$`1w}&~!y*j_mkrkzX>e`1{kH#YnRKAY zTaK7t#~v5j%|E~YY309@wl}^p`8`eA_@lV2?Awm0wG*COuGuQU@W4&8rD5we&88r( zYf%!(3#K%^|9zdGpZ~Dm^3OYN<^Zjl$)|o*)LLU{LQmsntNG{G&!0E1El|WUyVv|< zQPA40FRS*pZ8hUP{K2=Sd(nXstG#+%N$Cd@*Dt(RCKNYG#o*YUn>YThUHZ4QOyxIg zb)bF6{;3;XHh$CVUja-xswJ)wB`Jv|saDBFsX&Us$iUE8*T7uYz$C=b+{(Zhh_nri ztPBi%m+S_nDkKfL`6-!cmAEz7{A4}?)F276Aviy+q&%@Gm7%=6TrV>(yEr+qAXP8F VD1G)j8!4b722WQ%mvv4FO#okUNGAXQ literal 0 HcmV?d00001 diff --git a/rainloop/v/0.0.0/static/ckeditor/plugins/bidi/icons/hidpi/bidiltr.png b/rainloop/v/0.0.0/static/ckeditor/plugins/bidi/icons/hidpi/bidiltr.png new file mode 100644 index 0000000000000000000000000000000000000000..c5998e007764ea631a643dd033e239273fa5afda GIT binary patch literal 1579 zcmV+`2Gse9P)hYMCzsI_Q>NuKrK>{cuO3(RYIkg9$L~vg;YeP zLb)KNNYFHnYDep=?S0Hl5B4s0oY00M!JKy2A)i+zy*LI|XkI8q|zDneSDPRxQEYtdR`jLBf03qS~gs}!YTkxiu%p6m7p z?a4OPMq5j>-KO4X&CwL4fc30F=vR3WWlRG0ZP5;Ydku#jFcJ0FIPw zER_&@_X<@gT>JQ=kM@s^juJ%?iPi+Z&qB4zcQYw0*hr7(bX9RB|1 z8*%UQWg&C9Ec*;V&}pxN=aCy9KOtsjPL6HaG5}$_0C5!IdEOsU7R3;~RclYiSVrr@%0?=CH`#xWM_F1D^t^QW8*J-!gBuRqN zx&xzirhx7~TWh}w`H-Eo(@2$DHxx3YB zl}4k{r$(xPT~VZBEr86klY}^qiNlb|UAuUD`}PxJdirFkP{=kN+sWnvaCdHQZtBR< zqdz}-^yv1(hYzcbMuRv>`V}x{pqN)xKy=&4T1%27G=qRQCnf+$q6n--NQuhlxqar0 z1wH|8eewC{?>~6(;Jy3z?~m8&b&@#F*6US3{2M?@9484u5HLSK&yF2CX05fNR;!UD z2?&95U2-EM+&**WPv8UKQ{Y=*K4`Z|(swRIRu^lX7@XeV07)FvY&P+imYAwkX1_jr z_5g4zXtj_-LkJ-dO5x;khz%RKbMBlqNpe2ty64{*AIB=CwJ}d$sn#7w?Ezx>DeIlj_%oDEd?Yz zHJB)hSXfw~GCe(e>Egu$!0BJU{PL7DJdE{hF7ThhBP`MmJu6=&ZTu%s+9uI&{S6S8`PXV;XZ?*X0#*M+?o$dG8 zqsPe7;sXe~-D8Y-dSqJ-z*8+;$ZVf`El5PXO>64FDD%KL#KO0`w|d ze9yKdk)Fq|moK04%4JkO|KBq2QLt94VVg~9n@zd6xX9w-Vs>Av)jF2EmI6Wur0XIb zCp-D9XBcCMqA0r$dd>gI+h?s_F{^NFi89-M}mGarzJLS=8FWQhbW?9;ba!ELWdL_~cP?pe dYja~^aAhuUa%Y?FJQ@H1002ovPDHLkV1mmX*6RQO literal 0 HcmV?d00001 diff --git a/rainloop/v/0.0.0/static/ckeditor/plugins/bidi/icons/hidpi/bidirtl.png b/rainloop/v/0.0.0/static/ckeditor/plugins/bidi/icons/hidpi/bidirtl.png new file mode 100644 index 0000000000000000000000000000000000000000..8aa2adc87009f5751a5e799743dd8784948de156 GIT binary patch literal 1596 zcmV-C2E+M@P)D!59w`Fe;ds zOJEJC>(1cL(!D)9{ZUmOx~DU}JIR_T#D;AdUS$-ZWN)7xif&i_;{nif` zO@AK{X^Ah0dXP;p_4~Fa<0SGCPLSU>d zffg}fttHi(ef#z`d%YgQ+LE}j7L>xR*RyjWh@+^uA0-Kn>u!q!Aq0+6?5b379f!>* zVl$2lh!TL-nq9kg5ydg?z)WmTZHz%W4p@r;tmE+47hi~#^>t*WvTgQ#@v(ZHsfh{1 z{QT0|xpVI%X-b>}NC2CQByo)AdB4U{lqHn`7yADPGo*A~ym}q4UPrkuVjy#t#P7Qg zF+aalnVw#(c^*QD!l?q;7(*C_9653%>U26q3>ah3`RuhZS-?VZO)7;@s+6`%;!{(I z+1aH>9(!!@soB{ZNo^~D)*9dUdHd+mpw(*q-05`a^?IafiqSfQ(YkOz=hwE@i*4e~ z=F+22Jh3=CGsB>>+W@RFZ1#EpXMeeT`Jv_I80`9BvC|?Btc1NDX@AXyDB@!4fN7etwzh_~Rvb8R;KItv3Sk(Mr0LL@DVJlVa4HqV_&Aq7 z_`sSp{jlP?A3iWWja5o(V{VjTt+Udc0~Nc;TEfju0Ny`&a^bZ%-Z=lmrAyC_j*k}( z4nDsvZwjSQ)hgcTDAkDxs^jB$BO}OuZ;%U?@%1`@4a^%c<19&rxu#c=7n~< z&1SEcE!(hNuyrd*rI3!3{gf*5fXLTe8-uyYHdLO6Gcv;W@4lNseDu-6?A+Xi)zwwv zIL_d21yBq&FymC~EQ<4Uou*k#40}&XRHcI3XcQ2qKmBy!srmT}zVDZsmYuueybi=s zL=?xEJRwDKTqG8T^Z`PtZ4h6dIkVsgK`9?Nx75z94#SYu-+u?d4*~#IfBOx9FbvT* zX-4}H0N?2LAn`)lt|A*T3d8q#l4-r4Xw49Bq7b}1j_R= zXL2Z~T19Rt#kX_p=ztI+tNZ;K=0d8U7o@yn@qYx+hu{_#|C{5kf1Lgeg0$&3SQG*G z0000bbVXQnWMOn=I%9HWVRU5xGB7bSEig7MGB8vzF*-0eIxsXVFfuwYF!ti6NdN!< zC3HntbYx+4WjbwdWNBu305UK!Gc7PSEiy1vF)=zYH##shD=;!TFffO|9`yhK02y>e uSaefwW^{L9a%BK_cXuvnZfkR6VQ^(GZ*pgw?mQX*0000