From 7e2528481608460f79f7107bcfb9564e6caa502b Mon Sep 17 00:00:00 2001 From: Hadi Nategh Date: Wed, 24 Oct 2018 14:48:19 +0200 Subject: [PATCH] W.I.P. implementing TinyMCE editor and deprecating CKEditor: - Add configurable toolbar as preference - Do not load CkEditor until it's used --- api/js/etemplate/et2_widget_ckeditor.js | 3 - api/js/etemplate/et2_widget_htmlarea.js | 77 ++++++++++++++---- api/src/Etemplate/Widget/CkEditor.php | 4 + .../default/images/htmlarea/aligncenter.png | Bin 0 -> 651 bytes .../default/images/htmlarea/aligncenter.svg | 1 + .../default/images/htmlarea/alignjustify.png | Bin 0 -> 595 bytes .../default/images/htmlarea/alignjustify.svg | 1 + .../default/images/htmlarea/alignleft.png | Bin 0 -> 631 bytes .../default/images/htmlarea/alignleft.svg | 1 + .../default/images/htmlarea/alignright.png | Bin 0 -> 628 bytes .../default/images/htmlarea/alignright.svg | 1 + .../default/images/htmlarea/backcolor.png | Bin 0 -> 981 bytes .../default/images/htmlarea/backcolor.svg | 1 + .../default/images/htmlarea/bold.png | Bin 0 -> 846 bytes .../default/images/htmlarea/bold.svg | 1 + .../default/images/htmlarea/bullist.png | Bin 0 -> 765 bytes .../default/images/htmlarea/bullist.svg | 1 + .../default/images/htmlarea/code.png | Bin 0 -> 853 bytes .../default/images/htmlarea/code.svg | 1 + .../default/images/htmlarea/forecolor.png | Bin 0 -> 846 bytes .../default/images/htmlarea/forecolor.svg | 1 + .../default/images/htmlarea/image.png | Bin 0 -> 1071 bytes .../default/images/htmlarea/image.svg | 1 + .../default/images/htmlarea/indent.png | Bin 0 -> 816 bytes .../default/images/htmlarea/indent.svg | 1 + .../default/images/htmlarea/italic.png | Bin 0 -> 734 bytes .../default/images/htmlarea/italic.svg | 1 + .../default/images/htmlarea/link.png | Bin 0 -> 1054 bytes .../default/images/htmlarea/link.svg | 1 + api/templates/default/images/htmlarea/ltr.png | Bin 0 -> 830 bytes api/templates/default/images/htmlarea/ltr.svg | 1 + .../default/images/htmlarea/numlist.png | Bin 0 -> 925 bytes .../default/images/htmlarea/numlist.svg | 1 + .../default/images/htmlarea/outdent.png | Bin 0 -> 821 bytes .../default/images/htmlarea/outdent.svg | 1 + .../default/images/htmlarea/redo.png | Bin 0 -> 874 bytes .../default/images/htmlarea/removeformat.png | Bin 0 -> 964 bytes .../default/images/htmlarea/removeformat.svg | 1 + api/templates/default/images/htmlarea/rtl.png | Bin 0 -> 848 bytes api/templates/default/images/htmlarea/rtl.svg | 1 + .../default/images/htmlarea/searchreplace.png | Bin 0 -> 1166 bytes .../default/images/htmlarea/searchreplace.svg | 1 + .../default/images/htmlarea/strikethrough.png | Bin 0 -> 977 bytes .../default/images/htmlarea/strikethrough.svg | 1 + .../default/images/htmlarea/undo.png | Bin 0 -> 903 bytes .../default/images/htmlarea/undo.svg | 1 + .../inc/class.preferences_hooks.inc.php | 33 ++++++++ 47 files changed, 119 insertions(+), 19 deletions(-) create mode 100644 api/templates/default/images/htmlarea/aligncenter.png create mode 100644 api/templates/default/images/htmlarea/aligncenter.svg create mode 100644 api/templates/default/images/htmlarea/alignjustify.png create mode 100644 api/templates/default/images/htmlarea/alignjustify.svg create mode 100644 api/templates/default/images/htmlarea/alignleft.png create mode 100644 api/templates/default/images/htmlarea/alignleft.svg create mode 100644 api/templates/default/images/htmlarea/alignright.png create mode 100644 api/templates/default/images/htmlarea/alignright.svg create mode 100644 api/templates/default/images/htmlarea/backcolor.png create mode 100644 api/templates/default/images/htmlarea/backcolor.svg create mode 100644 api/templates/default/images/htmlarea/bold.png create mode 100644 api/templates/default/images/htmlarea/bold.svg create mode 100644 api/templates/default/images/htmlarea/bullist.png create mode 100644 api/templates/default/images/htmlarea/bullist.svg create mode 100644 api/templates/default/images/htmlarea/code.png create mode 100644 api/templates/default/images/htmlarea/code.svg create mode 100644 api/templates/default/images/htmlarea/forecolor.png create mode 100644 api/templates/default/images/htmlarea/forecolor.svg create mode 100644 api/templates/default/images/htmlarea/image.png create mode 100644 api/templates/default/images/htmlarea/image.svg create mode 100644 api/templates/default/images/htmlarea/indent.png create mode 100644 api/templates/default/images/htmlarea/indent.svg create mode 100644 api/templates/default/images/htmlarea/italic.png create mode 100644 api/templates/default/images/htmlarea/italic.svg create mode 100644 api/templates/default/images/htmlarea/link.png create mode 100644 api/templates/default/images/htmlarea/link.svg create mode 100644 api/templates/default/images/htmlarea/ltr.png create mode 100644 api/templates/default/images/htmlarea/ltr.svg create mode 100644 api/templates/default/images/htmlarea/numlist.png create mode 100644 api/templates/default/images/htmlarea/numlist.svg create mode 100644 api/templates/default/images/htmlarea/outdent.png create mode 100644 api/templates/default/images/htmlarea/outdent.svg create mode 100644 api/templates/default/images/htmlarea/redo.png create mode 100644 api/templates/default/images/htmlarea/removeformat.png create mode 100644 api/templates/default/images/htmlarea/removeformat.svg create mode 100644 api/templates/default/images/htmlarea/rtl.png create mode 100644 api/templates/default/images/htmlarea/rtl.svg create mode 100644 api/templates/default/images/htmlarea/searchreplace.png create mode 100644 api/templates/default/images/htmlarea/searchreplace.svg create mode 100644 api/templates/default/images/htmlarea/strikethrough.png create mode 100644 api/templates/default/images/htmlarea/strikethrough.svg create mode 100644 api/templates/default/images/htmlarea/undo.png create mode 100644 api/templates/default/images/htmlarea/undo.svg diff --git a/api/js/etemplate/et2_widget_ckeditor.js b/api/js/etemplate/et2_widget_ckeditor.js index eb623ae7af..7ffa4ed799 100644 --- a/api/js/etemplate/et2_widget_ckeditor.js +++ b/api/js/etemplate/et2_widget_ckeditor.js @@ -13,9 +13,6 @@ /*egw:uses jsapi.jsapi; // Needed for egw_seperateJavaScript /vendor/bower-asset/jquery/dist/jquery.js; - /vendor/egroupware/ckeditor/ckeditor.js; - /vendor/egroupware/ckeditor/ckeditor.config; - /vendor/egroupware/ckeditor/ckeditor.adapters/jquery; et2_core_baseWidget; */ diff --git a/api/js/etemplate/et2_widget_htmlarea.js b/api/js/etemplate/et2_widget_htmlarea.js index 32a5f56d61..0355bbe5ae 100644 --- a/api/js/etemplate/et2_widget_htmlarea.js +++ b/api/js/etemplate/et2_widget_htmlarea.js @@ -21,10 +21,6 @@ */ var et2_htmlarea = (function(){ "use strict"; return et2_inputWidget.extend([et2_IResizeable], { - font_size_formats: { - pt: "8pt 10pt 12pt 14pt 18pt 24pt 36pt 48pt 72pt", - px:"8px 10px 12px 14px 18px 24px 36px 48px 72px" - }, attributes: { 'mode': { 'name': 'Mode', @@ -219,14 +215,16 @@ var et2_htmlarea = (function(){ "use strict"; return et2_inputWidget.extend([et2 }, /** + * Takes all relevant preferences into account and set settings accordingly * - * @returns {et2_widget_htmlareaet2_htmlarea.et2_widget_htmlareaAnonym$1._extendedSettings.settings} + * @returns {object} returns a object including all settings */ _extendedSettings: function () { var rte_menubar = egw.preference('rte_menubar', 'common'); + var rte_toolbar = egw.preference('rte_toolbar', 'common'); var settings = { - fontsize_formats: this.font_size_formats[egw.preference('rte_font_unit', 'common')], + fontsize_formats: et2_htmlarea.FONT_SIZE_FORMATS[egw.preference('rte_font_unit', 'common')], menubar: parseInt(rte_menubar) && this.menubar ? true : typeof rte_menubar != 'undefined' ? false : this.menubar }; @@ -234,21 +232,26 @@ var et2_htmlarea = (function(){ "use strict"; return et2_inputWidget.extend([et2 switch (mode) { case 'simple': - settings.toolbar = "fontselect fontsizeselect | bold italic forecolor backcolor | "+ - "alignleft aligncenter alignright alignjustify | numlist "+ - "bullist outdent indent | link image" + settings.toolbar = et2_htmlarea.TOOLBAR_SIMPLE; break; case 'extended': - settings.toolbar = "fontselect fontsizeselect | bold italic strikethrough forecolor backcolor | "+ - "link | alignleft aligncenter alignright alignjustify | numlist "+ - "bullist outdent indent | removeformat | image" + settings.toolbar = et2_htmlarera.TOOLBAR_EXTENDED; break; case 'advanced': - settings.toolbar = "undo redo| formatselect | fontselect fontsizeselect | bold italic strikethrough forecolor backcolor | "+ - "link | alignleft aligncenter alignright alignjustify | numlist "+ - "bullist outdent indent ltr rtl | removeformat code| image | searchreplace" + settings.toolbar = et2_htmlarea.TOOLBAR_ADVANCED; break; } + + // take rte_toolbar into account if no mode restrictly set from template + if (rte_toolbar && !this.mode) + { + var toolbar_diff = et2_htmlarea.TOOLBAR_LIST.filter((i) => {return !(rte_toolbar.indexOf(i) > -1);}); + settings.toolbar = et2_htmlarea.TOOLBAR_ADVANCED; + toolbar_diff.forEach((a) => { + let r = new RegExp(a); + settings.toolbar = settings.toolbar.replace(r, ''); + }); + } return settings; }, @@ -316,4 +319,46 @@ var et2_htmlarea = (function(){ "use strict"; return et2_inputWidget.extend([et2 } } });}).call(this); -et2_register_widget(et2_htmlarea, ["htmlarea"]); \ No newline at end of file +et2_register_widget(et2_htmlarea, ["htmlarea"]); + +// Static class stuff +jQuery.extend(et2_htmlarea, { + /** + * Array of toolbars + * @constant + */ + TOOLBAR_LIST: ['undo', 'redo', 'formatselect', 'fontselect', 'fontsizeselect', + 'bold', 'italic', 'strikethrough', 'forecolor', 'backcolor', 'link', + 'alignleft', 'aligncenter', 'alignright', 'alignjustify', 'numlist', + 'bullist', 'outdent', 'indent', 'ltr', 'rtl', 'removeformat', 'code', 'image', 'searchreplace' + ], + /** + * arranged toolbars as simple mode + * @constant + */ + TOOLBAR_SIMPLE: "fontselect fontsizeselect | bold italic forecolor backcolor | "+ + "alignleft aligncenter alignright alignjustify | numlist "+ + "bullist outdent indent | link image", + /** + * arranged toolbars as extended mode + * @constant + */ + TOOLBAR_EXTENDED: "fontselect fontsizeselect | bold italic strikethrough forecolor backcolor | "+ + "link | alignleft aligncenter alignright alignjustify | numlist "+ + "bullist outdent indent | removeformat | image", + /** + * arranged toolbars as advanced mode + * @constant + */ + TOOLBAR_ADVANCED: "undo redo| formatselect | fontselect fontsizeselect | bold italic strikethrough forecolor backcolor | "+ + "link | alignleft aligncenter alignright alignjustify | numlist "+ + "bullist outdent indent ltr rtl | removeformat code| image | searchreplace", + /** + * font size formats + * @constant + */ + FONT_SIZE_FORMATS: { + pt: "8pt 10pt 12pt 14pt 18pt 24pt 36pt 48pt 72pt", + px:"8px 10px 12px 14px 18px 24px 36px 48px 72px" + } +}); \ No newline at end of file diff --git a/api/src/Etemplate/Widget/CkEditor.php b/api/src/Etemplate/Widget/CkEditor.php index 6a81b1b8b1..bda77cb0d2 100644 --- a/api/src/Etemplate/Widget/CkEditor.php +++ b/api/src/Etemplate/Widget/CkEditor.php @@ -37,6 +37,10 @@ class CkEditor extends Etemplate\Widget { $form_name = self::form_name($cname, $this->id); + Api\Framework::includeJS('/vendor/egroupware/ckeditor/ckeditor.js'); + Api\Framework::includeJS('/vendor/egroupware/ckeditor/ckeditor.config.js'); + Api\Framework::includeJS('/vendor/egroupware/ckeditor/ckeditor.adapters/jquery.js'); + $config = Api\Html\CkEditorConfig::get_ckeditor_config_array($this->attrs['mode'], $this->attrs['height'], $this->attrs['expand_toolbar'],$this->attrs['base_href'] ); diff --git a/api/templates/default/images/htmlarea/aligncenter.png b/api/templates/default/images/htmlarea/aligncenter.png new file mode 100644 index 0000000000000000000000000000000000000000..2da2dd4850679d65be08544cc16721c7bd04c1bc GIT binary patch literal 651 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzG%n5z$oGA;usQf`0X@9p(X_Xk!UKDU0$KaQA%T7iu-m%CUND~W7z zpXh&8$z1;EnNPNbhi6VwRm%4>Nae0OD5HJrx0%VdynFxK-Z4ixT-5Sf#ALkCWoPXy z?N1E0&l;rr-hQr&WGP;9{#4T9W$I^?)IAo?ty!yLtN3-FyWELA`SsnW{-(*L#8qxM z&{!SU`8{{bCiNZuuJW;$%DBqs+emD-{rK(QEnWVkoR)j?x6BuQa^Uzopr02aOERsaA1 literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/aligncenter.svg b/api/templates/default/images/htmlarea/aligncenter.svg new file mode 100644 index 0000000000..075492cea4 --- /dev/null +++ b/api/templates/default/images/htmlarea/aligncenter.svg @@ -0,0 +1 @@ + diff --git a/api/templates/default/images/htmlarea/alignjustify.png b/api/templates/default/images/htmlarea/alignjustify.png new file mode 100644 index 0000000000000000000000000000000000000000..5721bf0fab22574071cff7982033c34f38c6ab1c GIT binary patch literal 595 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzGw#&y6@@Y7!q;#?KDTeCIbQ2`d;fh z9=>~~S4r$?$~(aQqOs(uW=KIJ=bIy~ot&(h#>{~wa=Vw6%(AcbWposl zryd3R{Jh$e#W)@abKen2>Ry!Db&Qeqv2{{ZT)~B~YwH_$&vXc_nISk=S9IY5N#DM+ zYTxIV*`6r)%f$aJwtB&VgD0C+Ef}D74>0mXA`FFV4P+5tc{~5=E+2=pqKD&%# zCnk-@gEN?xX0XI;ZrQmpO(Tu&-dRJ_O72no2mqiZEx(Ta>)MV zU!}ld`+#x&i9HKsT9UvB{QuOw+2J2iw!^x(I6X&%hIiq5{pxHON%lY(lT>Wt@QQv zGxBp&^)nJvGWAP}O7pVy6AOT>)ZBs`pgW57Q&Q6sOLI!}GjkKuf!vIe+?+(96ZI2w gGSl<2N{dT?mg@n{Jt}p!1ZWL|r>mdKI;Vst00yAR`Tzg` literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/alignjustify.svg b/api/templates/default/images/htmlarea/alignjustify.svg new file mode 100644 index 0000000000..56b332be44 --- /dev/null +++ b/api/templates/default/images/htmlarea/alignjustify.svg @@ -0,0 +1 @@ + diff --git a/api/templates/default/images/htmlarea/alignleft.png b/api/templates/default/images/htmlarea/alignleft.png new file mode 100644 index 0000000000000000000000000000000000000000..500b449edcb2acb3838a132c02a5485386a2cde2 GIT binary patch literal 631 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzG%n5z{uw5;usQf`0X@bz9s{amgUD} z^Om^1Un0`5E^UCRFlsz1nDZ zEMxJu;L5ezm0Xkxq!^403@vmG4Rno6LJW>`WgATsrng- zDVh2uMWuP!`iTWVR%&iR4$vLN`YEYtiKRIu`kA?j=|FBqNp4Oe(24qqIhpBsIjLzS XdO$;0Ke~7sXa|F*tDnm{r-UW|>KEr& literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/alignleft.svg b/api/templates/default/images/htmlarea/alignleft.svg new file mode 100644 index 0000000000..93731ac1ce --- /dev/null +++ b/api/templates/default/images/htmlarea/alignleft.svg @@ -0,0 +1 @@ + diff --git a/api/templates/default/images/htmlarea/alignright.png b/api/templates/default/images/htmlarea/alignright.png new file mode 100644 index 0000000000000000000000000000000000000000..00f3cbeff8173fbc12eaf627f4dd08a4d81fc2fe GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzG%n5z{uq3;usQf`0Z3*p@R+rt@{JZ za#U8`;ckD(m2-r32Y;B~Lv=AvQR_D$oNJ@q#AfL4UOD~e%Xi`YOpOjtcc^O%_DcnQ3=%+3+8{H>= zKdM%5|Bg4cd)Xq(q6@VO7n4_*-G9K`Im7j;-3HO%uZ=FJZUijqarxd@vwhpble_Cb zG^XBD^|5;)j8($kX3dQHavAa7XmWY%y;QY`?)FK#IZ0z|cb1&_LJ7B*f6j%Fx8h)L7fV$jZRLAw3fm=m-tD z`6-!cmAEw+T3u`aYKR2cP+XR7m6TYVs#{u=$&i+rlWL`}ub+{ho2s9Yn3AbqQdF9k zt)Ex`WToa7 diff --git a/api/templates/default/images/htmlarea/backcolor.png b/api/templates/default/images/htmlarea/backcolor.png new file mode 100644 index 0000000000000000000000000000000000000000..0ce3fc50b79e149eea6083737fbf672e65991f9b GIT binary patch literal 981 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzGw&3l;Y{)7!q;#?KSIckwA%KAMd~M z;|LTiI_MqN8`ZMp1Cy3cwra-mgojV7Bf6K$AGzcg$imGns=q=|f5B9@?ut$~o+C$Q z%-vYvn`Sn9=EYdmXdzZnxB&MXXybiB-%FD>x;;`SXGIj3?AT>>3mOj+D*$)abO zy|B39M4EeukaGLn&x<@*yG1QGT~5eKX}-HiX}uV8%QtSpnP1{$Q%z&%G9CH#hIRYg zk~5|ojyt@H*~-|_bAwH<`qj+UNj#FeNqo-+x((;T1esntuCJBb#{VKLJ7#Xd zfZoD_o68MpI zr%7{rl-=GupQ9~1btYcg`|`l1qOZ}(=bms?%WSyS)9)*EwKn3F?`H=4SyQLB^c>Zd znjxZ~8@S}kri946-r4s!E`9fOxXE_c)vkG_;EeA(x4MWv&(*x9o#Jw`<#F8hQwkv) zSDt-3eeEp0_}!nj_`KkEmkQXB{BNqqwFU2bH!v@M;k!xK@13Q|iq*^wtiqM?ul`T$ zct68+nt4WcWD_t6s+PD$l%yn7c)I$ztaD0e0sv8~iSGaa literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/backcolor.svg b/api/templates/default/images/htmlarea/backcolor.svg new file mode 100644 index 0000000000..f32afe7e0c --- /dev/null +++ b/api/templates/default/images/htmlarea/backcolor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/api/templates/default/images/htmlarea/bold.png b/api/templates/default/images/htmlarea/bold.png new file mode 100644 index 0000000000000000000000000000000000000000..aded427530249193f3840b95609d0ff9d5309eee GIT binary patch literal 846 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzG%n5!1&11#W5t}@Y`$F*&=}wY!B2U zQ?JK#S14Z0c)V0V$g#OMW4hZxrwdVkMZGRKeGummi{n~-rK>4Pq19!=0yhp10aigC zLq_GuyAR&=wH}@{W9CVV!)3qyiuZkE*m%qEXCUKUo$TW^X(wbo*T; zOV_rx#rj%j1thjIhuDVqM^9PT{m*r_-1FE#hRJfr^?lU~4y`TyGM7(s8}FH2S(?#Y zX7@9+kMXKbezKDB^t~U`{(d)ccRjo1qRONa(}=AK5y|2rrP_<`27ZtErZfLQPj}tA zn?9_nzvmP?vVYt0ZthPT%~@9@AL{Q~s3x#Nx?A~VmDpe3JF@al|0VZUvOL=GBHQBD zO_|0?^W1t2kH^|I3jRKPk^kun)t9?8I%a4~75SEDoc%e^J>kI8()A1C*my|*%R+~))QPNg*3DFm$-`USeJA&eZ6nR>_2Y4 zb$`lk%2~?)Si5G<(ha&>E;tE)U|-$#_4HxR)r)`$K()j*q9i4;B-JXpC>2OC7#SE^ z=o%X68kvL`8d({dSeY7Y8yHy`7&xS7f)W)%LvDUbW?Cg~4Te@18-N;uK{gbZrCTK> z7N_c#7G*M|W#*(>>FeufX#Ii=4IL=yrr04<7o3NHI9cVm*r>mdKI;Vst0F2v5I{*Lx literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/bold.svg b/api/templates/default/images/htmlarea/bold.svg new file mode 100644 index 0000000000..a9437a5dc4 --- /dev/null +++ b/api/templates/default/images/htmlarea/bold.svg @@ -0,0 +1 @@ + diff --git a/api/templates/default/images/htmlarea/bullist.png b/api/templates/default/images/htmlarea/bullist.png new file mode 100644 index 0000000000000000000000000000000000000000..2255660f2e186c861ac1a9e368d8077134167d03 GIT binary patch literal 765 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzG%n5z}V;M;usQf`0X@%KPE?!_Wh1q z8rg1$?ro^obJ`Nxzp&R#z*T7BCAU2dan26<37L)V0b)4@6EX^PW2Q$&%$T^r(D3u@ zv`@FES5E#Ow@=o<$Vh16J0-~lhuuv$bNX&N1w8MWCNfiPp~YJN_VWuw<+;0pQ{)-f z7(STL`277u^|c-so=(cX^U_hytYC?lqGTz`+$6W&O2_IU1LK;DvDS(aZ&sJZnHgq_ug;L z7h73at9tP0X^V9_s_$b%o<(+TF{!h-rL(DVTH?fs7i+$-{+_xeIYsv1RA6MOmbgZg zq$HN4S|t~y0x1R~149d4LjzqSlMq8AD?<}2Q)6udBP#;~hxANP0zhcU%}>cptHiCr z(CT6XP(v8VhT^hxtE9x@RNc~|Oop_~oK!1)ef^C5+*JLH#FR|^lA_YQZ2iOnAS*Su zAP4A diff --git a/api/templates/default/images/htmlarea/code.png b/api/templates/default/images/htmlarea/code.png new file mode 100644 index 0000000000000000000000000000000000000000..88fa77a8067531891ff9d99d3775dfd790eeeeb1 GIT binary patch literal 853 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzG%n5!1&VB#W5t}@Y^fi-d7Su*gni( z`6TzkGKFTnAcc?sm&R@`E~Q0cffKmJYuoLdTmtn<3@18q)i#JZ20U5S!O^6r;3}ea zW9kau?mg$`i2d~}IrH=Uj@6Z6`p;`C&Q+eTobN0e8WMQ4zTuY0oHc9fX2pu+UR#+^ z^i;KE*W=xD+E_1M{Z(6h{@c`3@4p0aJhl=$VlF9sD0z3d(*EPZiXt)kRR>Kg6>YYz z5BjNhzI8(R;a!VvuTd;^lGwUm=x1{rSK_$|ZzlDaF?)7h=bNrwe`K~xox|<;$hAdj ztp?8`EI+CDa3_ZOz20=D$IjSkMuE}Xir&ljxD(yx`*_xE)?U{7!E^hpOPsrE#SU$W z(_QJ6RdjKRz`j?Su5s^OFa16(6})}R!PXS9#b!EtqPBKKt+um#>iUXBasHfF-um<9 z;#&-!PFfc7srTG$pQw^;UqrIz7zG{^d8Yp1;7k+ew#A*?XC+Qt4ax1 z{j}li-IQ2i->#1FwbzEoDAk*Sz;vKm;u=wsl30>zm0Xkx zq!^403@vmG4Rno6LJW diff --git a/api/templates/default/images/htmlarea/forecolor.png b/api/templates/default/images/htmlarea/forecolor.png new file mode 100644 index 0000000000000000000000000000000000000000..bc0b74df664873aef489ff68763b33b87c98bbee GIT binary patch literal 846 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzG%n5zCQ_h7E|u^j^C9!${(;+=yq{5MRV%)Olq}XpeLLfU}Si4s^QFx zv|FxLGt1P<%6&MMK3`k5+ds56w)EWf*e@?GE_T0@5J=OTrojzr<-<_x~P>;*dL=6*LifAkHyo4 z5pR04EE+xIk0zNPEY;nZuh)Ki5jWe$Cz3NZcI?$_6S^_o=j%0{8K12t-j#QI(86hu zE4ikE>Db&e@-m_V7R#AdxtRtQamWsGow#rNjkBQe=o&(5sORPmRSxUtt^d3*Vb z=YM2Msw{jN?VmqSxO~`KD*9e8uf!#NqnGclsekCtsQ$4fFxgX@_xW>P{_S^Obj4iO zdGvgbOism*$uHNP2rgy)Ge>vB%ZJlD+b{3=Zd2LnW1r3~<85QJ^rC3AG3&9--ln^| z!p{DB*M0o9oBT|}M~knn(cDxoRjb8js*~~8Y*$WZdF!wBlkY7$G2tIWv6*gEzW=Rd zulgqDmRGA!IkWrK;WDO)%6)7Rj!WiT^ZqQpYT=8W8WS82EWV=lQpV)!RA!Z(_tq^u zXC$jv!f_(`ZcWspcptHiCr(CT6XP(uXBhT^hxtE9x@RNc~| zOop_~oK!1)ef^C5+*JLH#FR|^lA_YQZ2iOnAS*SuAP4A \ No newline at end of file diff --git a/api/templates/default/images/htmlarea/image.png b/api/templates/default/images/htmlarea/image.png new file mode 100644 index 0000000000000000000000000000000000000000..4652392ac00ccd8f948c6f39bb2851aa2bd3846d GIT binary patch literal 1071 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzGw&3bjZ`iF(l&f+iAWYA%P;t>lYiJ zOIZ|bX*nY!Q;Nk=(c{9Ru(h|Y98*x8p%690Wh-a&E>D#+9T^k12q^I`YU+4#n9E2& zCqq#4sklmC-_&Obj~`@S%zd_Z=Iqb+&TJ90i9+uf-aUi!!Gk zZ&xo2VCM)rzeCeJyQp|_Z5TtKnuNbHGk^EV=5N&4>! z=r@1mC9hocHD$0~v3TOYH)#)^Y~kV$a5Y}{hN)|%>CLS_HgS8{@a1ZYDjZpGQZ7Yp zcZ2G>PnK!D7c#ep22X#X%X=qrMq*XQ1K&yi6{9{xH-{QDDf9$RG??tJxpar=X=^uu zhh}vL4hOR&Hl6yReyyyiW&N!;(wWO8Rvh;=zWj3PiaEk>uJt?@dSG;vqpA7uoduUF zLZfs8dCv>BSOZL(CAnd8_$w)y=N*ae7MYK%n=Twq+Y^({ z=@_w%{f6uQgSlOgpD;am#8b?1DE6v-Yl%ST-IHRB)e;T@%QAykp1;(>E&hC_yTH3Z zsn5C(gu1UWKE3jZ&yhp$z(K|~ftJds9Vh%*9@<6w+DOMD*NXYp=0km6L)@VBNb^rzrcssBd%BA7eWY$_@jq{(d#eVxxeL1N#8>{Ykt zZ}5Ge#}4E)@Lhd*enpcHW1^p$jppr;`aKEODSQ&fS8q74el=(Mm4?`ccP3|#o}XkT zA;V(fE@$9itb8*6{0x@u@2ajcdc6o`P-Ne~i+#_Q^%dW^f%G6lfz{twLz#%;olxYwe za`RI%(<*UmFtobZ0MrlyvZ1&v-6|=uI90c_D3c*AGbhzbUtd2XKQ~oBBQYgYzoe)% zFIzvc0LV(sEyw}7qgX#BH7&6;r$j$9H!&T^%_zyuNd!6(!q)>Dxb6G&i9quiJYD@< J);T3K0RV6duF3!a literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/image.svg b/api/templates/default/images/htmlarea/image.svg new file mode 100644 index 0000000000..4dce6ccad4 --- /dev/null +++ b/api/templates/default/images/htmlarea/image.svg @@ -0,0 +1 @@ + diff --git a/api/templates/default/images/htmlarea/indent.png b/api/templates/default/images/htmlarea/indent.png new file mode 100644 index 0000000000000000000000000000000000000000..1a257718b1800047ae5ec8e2e01501df7039a6e3 GIT binary patch literal 816 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzG%n5z<9{h#W5t}@Y`wD{!ESn$Lq_5 zbQq>GC+9Bg?7es_KOr@V@rR<1PmZGE#sxxBZ+uNQ8X0c9%%AXb^@hzCe`rjY?$9E^ z6HyWOVBTp~?lXV4@4S2S?#$UU|G#Nq=a>5@GpW}_(cnR@?x~Vr(`%;97FG#l3%Q_h zo-uafTETTMc1e_<`4X?PyI`Iy&+;`fA!@HLx#lk_^Kyw{*|~)O(+g*#$iRlK%uSvx zoVV^=Tk_~kGmB=zd}S%N$T?GTAFx(@nEikLoDEBU+qa%h{P5s;kbR-wO_eL^h0od& zkI%@vx9A+#WCov&r% z5;J9&+tc+?foqCR*WC#f23{MgjSjOMi4u5wggx{x=j(kMZkN=apA`)`nN@n4QLu52 zxpdpE)Vty*cQmdk-&GnvrMN=wY=Ek{N4$utMZtvsiSbVk9_Dx;%~$fw(e=3Ze_#Zw zmbgZgq$HN4S|t~y0x1R~149d4LjzqSlMq8AD?<}2Q)6udBP#;~hxANPqCsfL%}>cp ztHiCr(CT6XP(vulhT^hxtE9x@RNc~|Oop_~oK!1)ef^C5+*JLH#FR|^lA_YQZ2iOn zAS*SuAP4A diff --git a/api/templates/default/images/htmlarea/italic.png b/api/templates/default/images/htmlarea/italic.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f56916151b66a51245ab1438ed01964635efb5 GIT binary patch literal 734 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzG%n5z*ykv;usQf`0X`Yf000u_K){B zaYPz6FgE78EOv>waZ6u8mRF?A#7xAbP9{ruU#qG}nF7n<*(cRB7@62SB81}FnlxR6 zW=cOR`|M-+{fu$C-?Mx6tgNgTHCflJ{k7)u*S)VQyMOLE!@hh{{W@*m;L6eq`62!N z%eFMMS$fY3lX-gipswj|q0ZvVk<+%baBJN<=pX->jId+b2# z`oL?8R=!ZHUes9r~I5**}r;MZRU(@L-hAeNh9-PU#Hp##--|CU=?LwAj zwgcP#S~LlsKhTvXbMS44@adc0PApSPjvT-Ch$F6oxy%Gey=0bFWcTS46QCU05ybyY$z^Ew@OMZPSq_f%4A5(%t^J<*VoU;&rQ|O zNKDDpFDWX`%hpdU0J2hZ3vz(&DArF&O-n4zDbdf&O-u)JGfHxE5`j+C&n!vI$xPM* VnrMHk^$E}d22WQ%mvv4FO#s0?3BCXT literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/italic.svg b/api/templates/default/images/htmlarea/italic.svg new file mode 100644 index 0000000000..58f1e077a5 --- /dev/null +++ b/api/templates/default/images/htmlarea/italic.svg @@ -0,0 +1 @@ + diff --git a/api/templates/default/images/htmlarea/link.png b/api/templates/default/images/htmlarea/link.png new file mode 100644 index 0000000000000000000000000000000000000000..a573571fa23c39f6711cf8fd013d5144da8bd754 GIT binary patch literal 1054 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzGw&3w8_)OF(l&f+w1WeQ&S}vKHT5F zd4JEftd`EjO{ouCFJ9HtQs#E^>QJb7$aC69Le(YqYHRAzGYj@?;&$b5d12NOVA9@F zVyGx`tM!yqYSL`e$j@`Op8Z_5v0UDC`{udt=V;$7es^#B=jwT%|Jmytua);a>aux|W)$cB z2g1Ud|3A&SR~F6^pZffDjmCZj``HhyO>h2)dN1AoXKLk-nTlL}>9=Do-%Dr*{(Ymu zzBlrR)b5^XPprRca&g6J&-dT+F3j^^CG*DrJ?*FbFFbuF^fPh&wDa4KY>b`r|MWQ> z?H8>UJFo9y$||i0%6(INEq~(w%h5N*Uhug(en_3uFBcxWSv_g~(wb$j9`??7z)*3- z)zKhH`NrdQ30wZW68`#8`}HNoS5B*oH$Jmln{oN|lzAm5rb$>@|9w%MTXDgE;-903 zUlfH3{CTSyuz2B}y|Z7Gc?W!vyOH1`z;k5r4s*3TTP;G3_4l83%=K8qqF$SIg17xI zW7pHG)%jl!zufh{XYJN`pSJ9>P;YKZs5zIr!KLnY{f|qxU*$}5POSYE6wxDpvS`It zi;XV-wr$^>vwB^{!a1AQsn|b@-TA5V+tH1+i&W~5vp>ySJ=3E`TjNH|B>f*6uODj_ z`h3`Z-1~#@x6BjA4l^EHa9r$(dhJ3@>+@ohKNU~AU#w~Wbip&Pim(^rbFR(Xwx-bT z)8%~^gCzOy9%D_MPOGy*tio5NWbLPKtTN@iLm zZViT37aM>YfSrXTWa^g`mF8vZCl&x% zsksF?Kz9`Dr=+GOmgbb`XXYlR1GyO`xjBhIC+g>9=4I;v&C|@6-wHII!PC{xWt~$( F69Dzr)yx0@ literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/link.svg b/api/templates/default/images/htmlarea/link.svg new file mode 100644 index 0000000000..fe5d954315 --- /dev/null +++ b/api/templates/default/images/htmlarea/link.svg @@ -0,0 +1 @@ + diff --git a/api/templates/default/images/htmlarea/ltr.png b/api/templates/default/images/htmlarea/ltr.png new file mode 100644 index 0000000000000000000000000000000000000000..0a608a8ef511f56cb61d72abb979073320f8cdfb GIT binary patch literal 830 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzG%n5zff7=`L?_i9A#o_e3`x+0+EEbUpciE}f>hPh{ZA!4)n;TT*((36TKb?zx-(^Jy%+5_^D~vz(Ft z%}(xy(sy@QWsHu`p3QL3Xz~#*&VYcx{cHcJoc^-$h~=!9?|h~%EgX+S{$=R8T`kWG zdBL6TLOjvzUcgX0nAv6wj)*)BN#4 za^1Q!`6|T+gDfX)JXyQq#)7v~!w)a4eBNpHh{bZkN8{WhoE!6}t>5}8E6`)YIpOM0 zPhQr4VT}^n?X;s}cN#FpRZCnWN>UO_QmvAUQh^kMk%6IwuAzahkx7W5k(Hr|m8r3| zfsvJgfkS#GC>0?zZtQajI@0g#oNTaW{EN3niNYFc7xPKkbIZelu+n^BURlL&O8eoje| X9?-a&-tS9+rZafD`njxgN@xNAJPkN> literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/ltr.svg b/api/templates/default/images/htmlarea/ltr.svg new file mode 100644 index 0000000000..d38f983830 --- /dev/null +++ b/api/templates/default/images/htmlarea/ltr.svg @@ -0,0 +1 @@ + diff --git a/api/templates/default/images/htmlarea/numlist.png b/api/templates/default/images/htmlarea/numlist.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb112826b611a2bc29fb254b5f1615fbe50bc90 GIT binary patch literal 925 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@ZnLzGw&3r04147!q;#?X>;=!GR*j?bq*d znhuOfZ-rpw%h( z_|6p*f!khB!+9%f&o{pIezEr#UyxAe-?B{q_qO+cpR@eAhdX!c*Yl?@Db=cMD2P06 z%Xio!|A*5=SGK6h7tD@Wy*zIJp}*DH-(#6osEuc5)y@+-ddebAH+YW~IPq+o@kn*w zla=R!mYn$cVEf_fnuF<6d*VJy@6f~G2)vtq7E(MhE=eh36 z3rw1|uijEF0DnoWvh(&oySOnBbM z)aE)XqT`@mYVhRJyHAu=z1Do(CVJq)at)`biJO=jwD@VB^OZk7T}Ax<}fkPnstnc6F(aSFu#Tj{c3rh`YV(4BfPjBuv(fYu&8j z*2nrR@*wX!H}|B8Yv(SRtS9wq>1S=Vowl6sU88N5$oK19KG>$!@A`ewoEF!@dB!fy zc}8oBLUV7X2j1X5enKg@b5Y5IPc!GtQv9IFexF}+Zysk5Lyq^$8)4DvarTVPFK-)v z+H_6;n3z;cTq8Lwtafu$#$k~pa Ren1--JYD@<);T3K0RWO>Y2^R_ literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/numlist.svg b/api/templates/default/images/htmlarea/numlist.svg new file mode 100644 index 0000000000..8ebc051372 --- /dev/null +++ b/api/templates/default/images/htmlarea/numlist.svg @@ -0,0 +1 @@ + diff --git a/api/templates/default/images/htmlarea/outdent.png b/api/templates/default/images/htmlarea/outdent.png new file mode 100644 index 0000000000000000000000000000000000000000..806c7fe7fb8c4140c75fa50f318955d4e27ad375 GIT binary patch literal 821 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@bx|dANdsf$^B9i(^Q{;kVQF>oX_H9J9~w zcI^JLF3CVrXWFp`{u?5W^v{s!%~{ktL&tabgd35iMjzQ{u$bQPadBC7>lkNlP$65< z%h>mO<0Z7d?>YSR-QRut=RL1|_q$a<(dmz6i*vuznddpBS~WB5OFf&PdoKPF^Pn~N z+l9R?tL7|b&j{z4souq+aGo=Faf(Rj3DzYqF21&7&0?51e~nVPU5od6rjXulbq|5^ zj{3!~?y?J{PfTTr&QQe7Z*ZbvOX=kec`IX?4_eIjkyN_B zA@5V8mhDuBjafek*=IO=HJ1(=W2Dzp_U8$2h?k2(L~ zs&?!A>w1zV{wnLcl~^2)c zm#v>z0A!`+7UTfkQLLYmnwD6aQ=*@lo0tydW|ZXSBm$kNpI=&%lA2ed2Q>2I!b1u` P8yGxY{an^LB{Ts5xi3E< literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/outdent.svg b/api/templates/default/images/htmlarea/outdent.svg new file mode 100644 index 0000000000..6ee05cd7d4 --- /dev/null +++ b/api/templates/default/images/htmlarea/outdent.svg @@ -0,0 +1 @@ + diff --git a/api/templates/default/images/htmlarea/redo.png b/api/templates/default/images/htmlarea/redo.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c8a6ec2494dea440dd3dc602e8e24d0ce0c9bb GIT binary patch literal 874 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@bx|dANdsf$^WGi(^Q{;kVcJW{U)h9DA6) z`R9e+b!`n3Bm%j0gCbN`x~OKTc1>H|W#Nd-hlJ7wb94zK**&%h>#8`sPSSE9uia z-_7o4Gg-p?!cbXYh8Oq7#p6>!V&ow-ZsST-kRO1;k01ko{MG9)9!l5HHf*}nynNOQ#>hgdES+}cIkcL ziL#6x+JW1%e}%7|ekMAoOC!*&eOW1Ad43T0d9n_f)*x%zAYH8_UN*92z?w z#eNsIiZyG8K?$4rmaFl|(gGT{DX zm0TRIbDir4L)6!>>K`c$lQtHV`P9Ab(D?d8OCX{|Pu8KE{bBgObAmHX1pYpqKe4bm zQ(=={G^b#GlKz`nQ_bHjcX+UN-PSi-Ce=xp=1*_Zo_Ce6V|`wj`myA7J-c2-@&97& z>;6B%%=wWeFmb4sxJHzuB$lLFB^RXvDF!10LknF)16?DN5JMv?LlY}gV{HQ?D+2?E z^h{8KLukm&PsvQH#I3>5>S6;>LompO;<9wBq{QM>-O{2=hP2F_R4aXb{fzwFRQ-&^ zluZ4SqSCx<{lo$wD>b(u2k4Gs{gl+S#L}D+{mk6NbRajQBsV7!=tTXZ)RcTZpm~>{ SUakWg&*16m=d#Wzp$PzpIa)dZ literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/removeformat.png b/api/templates/default/images/htmlarea/removeformat.png new file mode 100644 index 0000000000000000000000000000000000000000..1441a5d748f876f75816dd4be26fcc3a07582b66 GIT binary patch literal 964 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@bx|dAI_oDZtakF(l&f+iRBDA%P<7AMQ&# z8$D+84AI#V=;Gp1;K?*iOmAvO@7j39u0mxc4o`;-o5UPjY8bY5?6p?nShr$FgOqPi z-{j8Zb!Us`s2D$w$+<10e*-`#BkDK$l?det0C;zxI2q(tP-P;tH?IZEkGR}9_;|Y88Puod(xhp+WWui6ma|7}*V-;>FV&9fe#(zIH=B>GyS zMi971^8aUv_I` zFYj6XbieaCKFRP?YZvEDnjRI>{-FC|l&EpL<)7t0IPG3sa=5oX445(*R7+eVN>UO_ zQmvAUQh^kMk%6IwuAzahkx7W5k(Hr|m8r3|fsvJgfkS#GCZtQajI@0g#oNTaW{E zN3niNYFc7xPKkbIZelu+n^BURlL&O8eo<;}epzZ-eo<~>i5}40?=pthfYva0y85}S Ib4q9e0Gcm`Hvj+t literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/removeformat.svg b/api/templates/default/images/htmlarea/removeformat.svg new file mode 100644 index 0000000000..ee9a91aa2c --- /dev/null +++ b/api/templates/default/images/htmlarea/removeformat.svg @@ -0,0 +1 @@ + diff --git a/api/templates/default/images/htmlarea/rtl.png b/api/templates/default/images/htmlarea/rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..f7791265f0a781d34b51ae687cd76e434bd59d36 GIT binary patch literal 848 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@bx|dANdsf$^!Qi(^Q{;kQ@!W(NmK9RKKl z&ue$cisr6f*8-u!kG)9&?16%gOZfEk{xa)`+$|C1id~hE&OZ0nS>J*;4-(pyOuCPm z8ES|GI_4JNwy5B&-RYZmiACnq?t-1q=RCK$|9t0jo97oo!(&ThI@uQg{q_15%Ra6s zW}Xu}Gj1%j+B~`IT|}PhX6}0tp}9YFEN^xFKFwt~=Qz_63TJ(on71>r?))Q(tFT8^&Hc_nXh#k#81s--DCPNT%9rWvRuR~nFiC#c{4U$NLeaZ zeEVcg90?B0}_WlZNPANfdBKbYEnFW>Zrw8GPQn;(9cpR87U zKToLI+f{30YF+=mxoXwSEc2?Cb5-3nf87;g&3H!g;Cf!Dnn diff --git a/api/templates/default/images/htmlarea/searchreplace.png b/api/templates/default/images/htmlarea/searchreplace.png new file mode 100644 index 0000000000000000000000000000000000000000..6554bbfa3b2c3f6734d90b08bf1d37db41f019ae GIT binary patch literal 1166 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@bx|dANdsfmzbi#W5t}@Z0O&88M+U$3LE5 z;@f7UwpA@C>#Vcmk*Mx&uPckBGw<#Y5(#;(EBWZUE=Cw&aAyZY&!&3+a)Ip@m#9KJjMf7YM>dAIu9fBQe{ z>-QRQE`Ig&%4rR0^Ox(lGGECko_}}S?M0q$CubxsuYE0kdG-CfeEC1G_GDblzveo> zI^u8ErTnrRCnjCF{!gtY<+#0X{c3%&HG9@P*z=joi(BEj%_6nG);ogNS0CQ-CcXC8 z(_ZD}&eQjnt>Qk<&G-92&aA8VAML*JTHbbXsi({8<#Pp%F=rUmG@nlqf@(lp~2I+S}&gq9C!Y*Op1p?c24C72bwB>UrxpZzr#j4)b_}!=O*kUDVWrdpvzi&f$ATG;#j-~7Ue$?W zkL8|W$oT5;YQI%65tS!XQXOuxURYx+x<_wN2ue?}aOk(}{s=?89gZfd& z>`wm=4iz^=OJY~Br24C~*7vkX!fh${ZyQIS~Wk+(WJukh?|{vfNhght%TatFImxsd9#xXe+7P5@#UA@*V+AV z!MoJF8Lw><74&{h%yd7ze3#4V?Yi5o-!&TOS-xIUr@SyX^ZHZ8a$PTrr>6Ps(WVpg zzGZ6s``7b#a= z{!>3AJghtSR?fv8KD;YS4YqJkJRKL&ueJFiV>r{JNwu$=Z@fR>Ao2OdE#?~!DyK6& zT0NET-m8%0`Ar^AYNem8%wBmSa{p<|rRuJ)r$yZ?IsVpu{eH&mv_w5EsrF02e4|?8 z8c~vxSdwa$T$Bo=7>o=IEp!bHbd5|x42`S|O{`3fwGE7{3=AC7GeLO~p&>UvB{QuO zw+2J2iw!^xF(4a?%hIiq5{pxHON%lY(lT>Wt@QQvGxBp&^)nJvGWAP}O7pVy6AOT> z)ZBs`pgW57Q&Q6sOLI!}GjkKuf!vIe+?+(96ZMNz6N{2Fic*2fl2i472LHLOQ3kY! N!PC{xWt~$(698T(@1p diff --git a/api/templates/default/images/htmlarea/strikethrough.png b/api/templates/default/images/htmlarea/strikethrough.png new file mode 100644 index 0000000000000000000000000000000000000000..5a7be08f1b33eb94a45166f967ddb1f520f0d081 GIT binary patch literal 977 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@bx|dAI_oDaO;qF(l&f+o`9sg#$&7)f=xp zxx_d6mBw0bS4Y94UEI#B^4x-&97;bJ3KK;g1;Q6iXzloMBjihehU2avmpc+oc_Ld` zyA^h1h-SM=`Tjb!+jre;?-@%zpYU0<`scf}cedYa?%O`USIk!Pw?k+1d*>&p-U-qO)}Bv>9nV62c<01XCv%?@{buA?ew6^Rh*)^>@#3kM0yrDVJpy zne$nfi)h9?mt#~ooc+jW;=;Lec`o#`9nhIx`RwnX-80-2JPH~oB<`KuT{Ahb=i=+w z2W=`lbA?_j?o;@2N`Z0x7u_Bufh9Mxv*aIaY+dS?aYTS4?M7Bs_*2^(4qLZQOSLTB zc=FJ^e4hm;R2UN1EvWW(>VDiO%+m1oO+p)sb{?z9#*5es5n`X1+Og7M$X770PV>`5?L%kwoeo{DvIc=c?!c;wz;Z&L9T`jn9pnU$nW)svHXT;$YE#GjD6{ z-L@SkO=q?-&96MK5@}NPQdw#CA)V(P)!hsZkG1S`tNfb|vd!k!5_J2K>@-jHnBemA zi1}3$?#iUf&wlBW+G?`@hs&JpIu<*3aq2sW=dPG?V&juP=HDJ3K3;z~{;K2Sn8@?V zr+`UMwZt`|BqgyV)hf9t6-Y4{85mmV8XD*tnS>Y`Ss9vGnHp;w7+Dz@IHYHSk~2a> zZhlH;S|x4`hE^9FfEr>zHWZhoTO}nHr|Om#Wiq5?=A>Hb>+5Ia=cejsB&KBQmlT!e zW$Pyv09mQI1vx->6ziv?rX`lmdKI;Vst04kw?LI3~& literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/strikethrough.svg b/api/templates/default/images/htmlarea/strikethrough.svg new file mode 100644 index 0000000000..91634c15f9 --- /dev/null +++ b/api/templates/default/images/htmlarea/strikethrough.svg @@ -0,0 +1 @@ + diff --git a/api/templates/default/images/htmlarea/undo.png b/api/templates/default/images/htmlarea/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..c502d2a6368cd75ddc96d8c41eb0d675c1dd7448 GIT binary patch literal 903 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`q0KcVS>y)vIg-2=L1R4&+6L0Fi2MV&6c>21sKjM<$5@bx|dAI_oN!ruJF(l&f+iB;$MG_^B+Z$(h z=e0(4&04--h2F#o6XjU+omgb8DlXntePO?1LG^{R6Bc+oO}{!@e5v!?FG?>C25UBP z%OxqF*(!f4E804reSTYJdU;KJ`LhXczVGGvT=)EU?fmDJ&nx3sJiej4>|iIe)+*K; zcT%TKkLhu{mo&v!q>J;7##7Pto$i|R(=BR#3ikimyFoZ)`t>RIm11|-H2eRPe9Q3W z^Bl`v8&B;k&c3gBXZ`XOfW)&OFU#H6VP3@KKx{>$x(U*eeRJ)f~52&4#NI&{c zQ*z3BE<>S`qN$3%EOg(Cc}}|OJ=u4bE@%DZi(Ib%x>>f*I4<~ZiS*7k*Hc@6_-K9b zf1#u-#yYv|MeienZoYe5pLv)2=zLi$A@EH6*H>O29X|urJ?(02PsL6)6!m|I=E}XX zbI;Zr4}wDPnI`J)xcyCj;;Vua9~x{J)@})Tn!B0Vf!p`rNw%g36C6Lb82fAvni{%D zCCX~Mj(k$gv$UlTVq+BAoj&?W?R8{fe;sYza?#hAp|b9W`e6%!^~FLBIZH1uENf27 zV_p!^^^9$H5`XI>=I}$}+a*$B|4r#!{B~i&lGOhiMPJ(V@1LxmsQ*c0!BiQ^*fm{$ zcDz|UA+d0N=_VUKE6yx#onw|dMVGW*t$192R6Z+!(*dF8;Aqgvt`QIe8al4_M) zlnSI6j0_AdbPWx3jZ8uejjRk!tW1ry4UDV|3>?xkL8%d;AvZrIGp!Q021Bch4L}XS zARCIy(yfvbi&J$=i!vF~GILU`^!4>K@^e%5GZIrW^-GFM^Ro353xKTD+=3jSJBsyF wQqvMkb4v6xa}(2n+>DakoJ61#^-J?o^7Vk`-B$0L3pAd=)78&qol`;+0M}b;RR910 literal 0 HcmV?d00001 diff --git a/api/templates/default/images/htmlarea/undo.svg b/api/templates/default/images/htmlarea/undo.svg new file mode 100644 index 0000000000..1505b968f8 --- /dev/null +++ b/api/templates/default/images/htmlarea/undo.svg @@ -0,0 +1 @@ + diff --git a/preferences/inc/class.preferences_hooks.inc.php b/preferences/inc/class.preferences_hooks.inc.php index 846171ade6..deae04e31c 100644 --- a/preferences/inc/class.preferences_hooks.inc.php +++ b/preferences/inc/class.preferences_hooks.inc.php @@ -115,6 +115,24 @@ class preferences_hooks $GLOBALS['egw_info']['user']['preferences']['common']['rte_font_size'], $GLOBALS['egw_info']['user']['preferences']['common']['rte_font_unit']); } + $rte_toolbar_list = array ( + 'undo', 'redo', 'formatselect', 'fontselect', 'fontsizeselect', + 'bold', 'italic', 'strikethrough', 'forecolor', 'backcolor', + 'link', 'alignleft', 'aligncenter', 'alignright', 'alignjustify', + 'numlist', 'bullist', 'outdent', 'indent', 'ltr', 'rtl', + 'removeformat', 'code', 'image', 'searchreplace' + ); + $rte_toolbar_selOptions = array(); + foreach ($rte_toolbar_list as $toolbar) + { + $rte_toolbar_selOptions[$toolbar] = array ( + 'id' => $toolbar, + 'label' => lang($toolbar), + 'title' => lang($toolbar), + 'icon' => Framework::getUrl($GLOBALS['egw_info']['server']['webserver_url']).'/api/templates/default/images/htmlarea/'.$toolbar.'.png', + 'app' => 'api' + ); + } // Settings array for this app $settings = array( array( @@ -408,6 +426,21 @@ class preferences_hooks 'admin' => false, 'default'=> 'extended' ), + 'rte_toolbar' => array( + 'type' => 'taglist', + 'label' => 'Enabled features in toolbar', + 'name' => 'rte_toolbar', + 'values'=> '', + 'help' => 'You may select features to be enabled in toolbar. Selecting any of the tools from here means seleted "Feature of the editor" preference would be ignored.', + 'admin' => true, + 'attributes' => array( + 'allowFreeEntries' => false, + //'multiple' => 'toggle', + 'editModeEnabled' => false, + 'autocomplete_url' => ' ', + 'select_options' => $rte_toolbar_selOptions + ) + ) ); // disable thumbnails, if no size configured by admin if (!$GLOBALS['egw_info']['server']['link_list_thumbnail']) unset($settings['link_list_thumbnail']);