From 87887373c1bbc44388608121e67f9df0e84897a7 Mon Sep 17 00:00:00 2001 From: RainLoop Team Date: Thu, 17 Sep 2015 22:48:52 +0300 Subject: [PATCH] Updated: ckeditor 4.5.3, jquery 1.11.3, openpgpjs 1.2.0 OpenPGP decrypt fix + Small fixes --- dev/App/Admin.js | 18 +- dev/App/User.js | 17 +- dev/Common/HtmlEditor.js | 41 + dev/External/ko.js | 29 + dev/Knoin/Knoin.js | 3 +- dev/Model/Message.js | 10 + dev/Model/OpenPgpKey.js | 12 +- dev/Stores/User/Message.js | 6 +- dev/Stores/User/Pgp.js | 92 +- dev/Styles/Animations.less | 5 + dev/Styles/MessageList.less | 2 +- dev/Styles/MessageView.less | 21 +- dev/Styles/Responsive.less | 21 +- dev/Styles/Scroll.less | 16 +- dev/Styles/_CkeFix.less | 27 +- dev/Styles/_End.less | 2 +- dev/View/Popup/Contacts.js | 5 + dev/bootstrap.js | 4 +- gulpfile.js | 7 +- package.json | 6 +- plugins/recaptcha/VERSION | 2 +- plugins/recaptcha/index.php | 5 +- plugins/recaptcha/js/recaptcha.js | 14 +- .../templates/PluginLoginReCaptchaGroup.html | 1 - .../app/libraries/MailSo/Mail/MailClient.php | 2 +- .../0.0.0/app/libraries/RainLoop/Actions.php | 32 +- rainloop/v/0.0.0/app/templates/Index.html | 33 +- .../app/templates/Views/Admin/AdminLogin.html | 4 +- .../app/templates/Views/Admin/AdminPane.html | 4 +- .../0.0.0/app/templates/Views/User/Login.html | 18 +- .../templates/Views/User/MailFolderList.html | 4 +- .../templates/Views/User/MailMessageList.html | 4 +- .../templates/Views/User/MailMessageView.html | 4 +- .../templates/Views/User/PopupsCompose.html | 4 +- .../templates/Views/User/PopupsContacts.html | 9 +- .../templates/Views/User/SettingsPane.html | 4 +- rainloop/v/0.0.0/static/ckeditor/CHANGES.md | 252 ++- rainloop/v/0.0.0/static/ckeditor/CUSTOMS | 30 - rainloop/v/0.0.0/static/ckeditor/LICENSE.md | 160 +- .../0.0.0/static/ckeditor/adapters/jquery.js | 12 +- .../v/0.0.0/static/ckeditor/build-config.js | 20 +- rainloop/v/0.0.0/static/ckeditor/ckeditor.js | 1679 +++++++++-------- .../v/0.0.0/static/ckeditor/ckeditor.orig.js | 964 ---------- rainloop/v/0.0.0/static/ckeditor/contents.css | 2 - rainloop/v/0.0.0/static/ckeditor/lang/af.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/ar.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/bg.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/bn.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/bs.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/ca.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/cs.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/cy.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/da.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/de.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/el.js | 4 +- .../v/0.0.0/static/ckeditor/lang/en-au.js | 4 +- .../v/0.0.0/static/ckeditor/lang/en-ca.js | 4 +- .../v/0.0.0/static/ckeditor/lang/en-gb.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/en.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/eo.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/es.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/et.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/eu.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/fa.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/fi.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/fo.js | 4 +- .../v/0.0.0/static/ckeditor/lang/fr-ca.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/fr.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/gl.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/gu.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/he.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/hi.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/hr.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/hu.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/id.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/is.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/it.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/ja.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/ka.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/km.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/ko.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/ku.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/lt.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/lv.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/mk.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/mn.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/ms.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/nb.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/nl.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/no.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/pl.js | 4 +- .../v/0.0.0/static/ckeditor/lang/pt-br.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/pt.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/ro.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/ru.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/si.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/sk.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/sl.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/sq.js | 4 +- .../v/0.0.0/static/ckeditor/lang/sr-latn.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/sr.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/sv.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/th.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/tr.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/tt.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/ug.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/uk.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/vi.js | 4 +- .../v/0.0.0/static/ckeditor/lang/zh-cn.js | 4 +- rainloop/v/0.0.0/static/ckeditor/lang/zh.js | 4 +- .../ckeditor/plugins/about/dialogs/about.js | 7 + .../about/dialogs/hidpi/logo_ckeditor.png | Bin 0 -> 13339 bytes .../plugins/about/dialogs/logo_ckeditor.png | Bin 0 -> 6757 bytes .../plugins/clipboard/dialogs/paste.js | 12 +- .../plugins/fastimage/dialogs/fastimage.js | 5 - .../plugins/fastimage/images/noimage.png | Bin 2115 -> 0 bytes .../v/0.0.0/static/ckeditor/plugins/icons.png | Bin 9689 -> 9794 bytes .../static/ckeditor/plugins/icons_hidpi.png | Bin 29143 -> 29715 bytes .../ckeditor/plugins/image/dialogs/image.js | 78 +- .../ckeditor/plugins/image/images/noimage.png | Bin 2115 -> 1610 bytes .../ckeditor/plugins/image2/dialogs/image2.js | 20 +- .../plugins/onchange/docs/install.html | 77 - .../ckeditor/plugins/onchange/docs/styles.css | 59 - .../static/ckeditor/plugins/plain/plugin.js | 2 + .../ckeditor/plugins/signature/plugin.js | 193 +- .../ckeditor/plugins/table/dialogs/table.js | 4 +- .../plugins/tabletools/dialogs/tableCell.js | 17 - .../static/ckeditor/samples/css/samples.css | 1651 ++++++++++++++++ .../ckeditor/samples/img/github-top.png | Bin 0 -> 383 bytes .../static/ckeditor/samples/img/header-bg.png | Bin 0 -> 13086 bytes .../ckeditor/samples/img/header-separator.png | Bin 0 -> 123 bytes .../static/ckeditor/samples/img/logo.png | Bin 0 -> 5891 bytes .../ckeditor/samples/img/navigation-tip.png | Bin 0 -> 12029 bytes .../0.0.0/static/ckeditor/samples/index.html | 216 +-- .../static/ckeditor/samples/js/sample.js | 53 + .../v/0.0.0/static/ckeditor/samples/js/sf.js | 17 + .../ckeditor/samples/{ => old}/ajax.html | 5 +- .../ckeditor/samples/{ => old}/api.html | 5 +- .../ckeditor/samples/old}/appendto.html | 5 +- .../{ => old}/assets/inlineall/logo.png | Bin .../assets/outputxhtml/outputxhtml.css | 0 .../samples/{ => old}/assets/posteddata.php | 0 .../samples/{ => old}/assets/sample.jpg | Bin .../{ => old}/assets/uilanguages/languages.js | 0 .../samples/{ => old}/datafiltering.html | 111 +- .../dialog/assets/my_dialog.js | 0 .../ckeditor/samples/old}/dialog/dialog.html | 7 +- .../ckeditor/samples/old/divarea/divarea.html | 64 + .../ckeditor/samples/old}/divreplace.html | 5 +- .../{plugins => old}/enterkey/enterkey.html | 7 +- .../{plugins => old}/image2/assets/image1.jpg | Bin .../{plugins => old}/image2/assets/image2.jpg | Bin .../ckeditor/samples/old}/image2/image2.html | 7 +- .../static/ckeditor/samples/old/index.html | 128 ++ .../ckeditor/samples/old}/inlineall.html | 5 +- .../ckeditor/samples/old}/inlinebycode.html | 5 +- .../ckeditor/samples/old}/inlinetextarea.html | 5 +- .../static/ckeditor/samples/old}/jquery.html | 9 +- .../quicktable/quicktable.html | 0 .../ckeditor/samples/old}/readonly.html | 5 +- .../ckeditor/samples/old}/replacebyclass.html | 5 +- .../samples/{ => old}/replacebycode.html | 5 +- .../static/ckeditor/samples/old}/sample.css | 16 +- .../ckeditor/samples/{ => old}/sample.js | 0 .../samples/{ => old}/sample_posteddata.php | 2 +- .../ckeditor/samples/{ => old}/tabindex.html | 5 +- .../{plugins => old}/toolbar/toolbar.html | 7 +- .../ckeditor/samples/{ => old}/uicolor.html | 5 +- .../ckeditor/samples/old}/uilanguages.html | 5 +- .../samples/old/wysiwygarea/fullpage.html | 80 + .../samples/{ => old}/xhtmlstyle.html | 7 +- .../samples/plugins/divarea/divarea.html | 61 - .../plugins/sharedspace/sharedspace.html | 119 -- .../plugins/tableresize/tableresize.html | 104 - .../toolbarconfigurator/css/fontello.css | 55 + .../toolbarconfigurator/font/LICENSE.txt | 10 + .../toolbarconfigurator/font/config.json | 28 + .../toolbarconfigurator/font/fontello.eot | Bin 0 -> 4988 bytes .../toolbarconfigurator/font/fontello.svg | 14 + .../toolbarconfigurator/font/fontello.ttf | Bin 0 -> 4820 bytes .../toolbarconfigurator/font/fontello.woff | Bin 0 -> 2904 bytes .../samples/toolbarconfigurator/index.html | 446 +++++ .../js/abstracttoolbarmodifier.js | 14 + .../js/fulltoolbareditor.js | 9 + .../toolbarconfigurator/js/toolbarmodifier.js | 31 + .../js/toolbartextmodifier.js | 14 + .../lib/codemirror/LICENSE | 19 + .../lib/codemirror/codemirror.css | 325 ++++ .../lib/codemirror/codemirror.js | 290 +++ .../lib/codemirror/javascript.js | 24 + .../lib/codemirror/neo.css | 36 + .../lib/codemirror/show-hint.css | 38 + .../lib/codemirror/show-hint.js | 16 + .../ckeditor/skins/icy_orange/editor.css | 2 +- .../skins/icy_orange/editor_gecko.css | 2 +- .../ckeditor/skins/icy_orange/editor_ie.css | 2 +- .../ckeditor/skins/icy_orange/editor_ie7.css | 2 +- .../ckeditor/skins/icy_orange/editor_ie8.css | 2 +- .../skins/icy_orange/editor_iequirks.css | 2 +- .../ckeditor/skins/icy_orange/icons.png | Bin 5295 -> 5289 bytes .../ckeditor/skins/icy_orange/icons_hidpi.png | Bin 6711 -> 6666 bytes vendors/ckeditor-plugins/plain/plugin.js | 2 + vendors/ckeditor-plugins/signature/plugin.js | 193 +- vendors/ckeditor/CHANGES.md | 252 ++- vendors/ckeditor/CUSTOMS | 30 - vendors/ckeditor/LICENSE.md | 160 +- vendors/ckeditor/adapters/jquery.js | 12 +- vendors/ckeditor/build-config.js | 20 +- vendors/ckeditor/ckeditor.js | 1679 +++++++++-------- vendors/ckeditor/ckeditor.orig.js | 964 ---------- vendors/ckeditor/contents.css | 2 - vendors/ckeditor/lang/af.js | 4 +- vendors/ckeditor/lang/ar.js | 4 +- vendors/ckeditor/lang/bg.js | 4 +- vendors/ckeditor/lang/bn.js | 4 +- vendors/ckeditor/lang/bs.js | 4 +- vendors/ckeditor/lang/ca.js | 4 +- vendors/ckeditor/lang/cs.js | 4 +- vendors/ckeditor/lang/cy.js | 4 +- vendors/ckeditor/lang/da.js | 4 +- vendors/ckeditor/lang/de.js | 4 +- vendors/ckeditor/lang/el.js | 4 +- vendors/ckeditor/lang/en-au.js | 4 +- vendors/ckeditor/lang/en-ca.js | 4 +- vendors/ckeditor/lang/en-gb.js | 4 +- vendors/ckeditor/lang/en.js | 4 +- vendors/ckeditor/lang/eo.js | 4 +- vendors/ckeditor/lang/es.js | 4 +- vendors/ckeditor/lang/et.js | 4 +- vendors/ckeditor/lang/eu.js | 4 +- vendors/ckeditor/lang/fa.js | 4 +- vendors/ckeditor/lang/fi.js | 4 +- vendors/ckeditor/lang/fo.js | 4 +- vendors/ckeditor/lang/fr-ca.js | 4 +- vendors/ckeditor/lang/fr.js | 4 +- vendors/ckeditor/lang/gl.js | 4 +- vendors/ckeditor/lang/gu.js | 4 +- vendors/ckeditor/lang/he.js | 4 +- vendors/ckeditor/lang/hi.js | 4 +- vendors/ckeditor/lang/hr.js | 4 +- vendors/ckeditor/lang/hu.js | 4 +- vendors/ckeditor/lang/id.js | 4 +- vendors/ckeditor/lang/is.js | 4 +- vendors/ckeditor/lang/it.js | 4 +- vendors/ckeditor/lang/ja.js | 4 +- vendors/ckeditor/lang/ka.js | 4 +- vendors/ckeditor/lang/km.js | 4 +- vendors/ckeditor/lang/ko.js | 4 +- vendors/ckeditor/lang/ku.js | 4 +- vendors/ckeditor/lang/lt.js | 4 +- vendors/ckeditor/lang/lv.js | 4 +- vendors/ckeditor/lang/mk.js | 4 +- vendors/ckeditor/lang/mn.js | 4 +- vendors/ckeditor/lang/ms.js | 4 +- vendors/ckeditor/lang/nb.js | 4 +- vendors/ckeditor/lang/nl.js | 4 +- vendors/ckeditor/lang/no.js | 4 +- vendors/ckeditor/lang/pl.js | 4 +- vendors/ckeditor/lang/pt-br.js | 4 +- vendors/ckeditor/lang/pt.js | 4 +- vendors/ckeditor/lang/ro.js | 4 +- vendors/ckeditor/lang/ru.js | 4 +- vendors/ckeditor/lang/si.js | 4 +- vendors/ckeditor/lang/sk.js | 4 +- vendors/ckeditor/lang/sl.js | 4 +- vendors/ckeditor/lang/sq.js | 4 +- vendors/ckeditor/lang/sr-latn.js | 4 +- vendors/ckeditor/lang/sr.js | 4 +- vendors/ckeditor/lang/sv.js | 4 +- vendors/ckeditor/lang/th.js | 4 +- vendors/ckeditor/lang/tr.js | 4 +- vendors/ckeditor/lang/tt.js | 4 +- vendors/ckeditor/lang/ug.js | 4 +- vendors/ckeditor/lang/uk.js | 4 +- vendors/ckeditor/lang/vi.js | 4 +- vendors/ckeditor/lang/zh-cn.js | 4 +- vendors/ckeditor/lang/zh.js | 4 +- .../ckeditor/plugins/about/dialogs/about.js | 7 + .../about/dialogs/hidpi/logo_ckeditor.png | Bin 0 -> 13339 bytes .../plugins/about/dialogs/logo_ckeditor.png | Bin 0 -> 6757 bytes .../plugins/clipboard/dialogs/paste.js | 12 +- .../plugins/fastimage/dialogs/fastimage.js | 5 - .../plugins/fastimage/images/noimage.png | Bin 2115 -> 0 bytes vendors/ckeditor/plugins/icons.png | Bin 9689 -> 9794 bytes vendors/ckeditor/plugins/icons_hidpi.png | Bin 29143 -> 29715 bytes .../ckeditor/plugins/image/dialogs/image.js | 78 +- .../ckeditor/plugins/image/images/noimage.png | Bin 2115 -> 1610 bytes .../ckeditor/plugins/image2/dialogs/image2.js | 20 +- .../plugins/onchange/docs/install.html | 77 - .../ckeditor/plugins/onchange/docs/styles.css | 59 - .../ckeditor/plugins/table/dialogs/table.js | 4 +- .../plugins/tabletools/dialogs/tableCell.js | 17 - vendors/ckeditor/samples/css/samples.css | 1651 ++++++++++++++++ vendors/ckeditor/samples/img/github-top.png | Bin 0 -> 383 bytes vendors/ckeditor/samples/img/header-bg.png | Bin 0 -> 13086 bytes .../ckeditor/samples/img/header-separator.png | Bin 0 -> 123 bytes vendors/ckeditor/samples/img/logo.png | Bin 0 -> 5891 bytes .../ckeditor/samples/img/navigation-tip.png | Bin 0 -> 12029 bytes vendors/ckeditor/samples/index.html | 216 +-- vendors/ckeditor/samples/js/sample.js | 53 + vendors/ckeditor/samples/js/sf.js | 17 + vendors/ckeditor/samples/{ => old}/ajax.html | 5 +- vendors/ckeditor/samples/{ => old}/api.html | 5 +- .../ckeditor/samples/old}/appendto.html | 5 +- .../{ => old}/assets/inlineall/logo.png | Bin .../assets/outputxhtml/outputxhtml.css | 0 .../samples/{ => old}/assets/posteddata.php | 0 .../samples/{ => old}/assets/sample.jpg | Bin .../{ => old}/assets/uilanguages/languages.js | 0 .../samples/{ => old}/datafiltering.html | 111 +- .../dialog/assets/my_dialog.js | 0 .../ckeditor/samples/old}/dialog/dialog.html | 7 +- .../ckeditor/samples/old/divarea/divarea.html | 64 + .../ckeditor/samples/old}/divreplace.html | 5 +- .../{plugins => old}/enterkey/enterkey.html | 7 +- .../{plugins => old}/image2/assets/image1.jpg | Bin .../{plugins => old}/image2/assets/image2.jpg | Bin .../ckeditor/samples/old}/image2/image2.html | 7 +- vendors/ckeditor/samples/old/index.html | 128 ++ .../ckeditor/samples/old}/inlineall.html | 5 +- .../ckeditor/samples/old}/inlinebycode.html | 5 +- .../ckeditor/samples/old}/inlinetextarea.html | 5 +- .../ckeditor/samples/old}/jquery.html | 9 +- .../quicktable/quicktable.html | 0 .../ckeditor/samples/old}/readonly.html | 5 +- .../ckeditor/samples/old}/replacebyclass.html | 5 +- .../samples/{ => old}/replacebycode.html | 5 +- .../ckeditor/samples/old}/sample.css | 16 +- vendors/ckeditor/samples/{ => old}/sample.js | 0 .../samples/{ => old}/sample_posteddata.php | 2 +- .../ckeditor/samples/{ => old}/tabindex.html | 5 +- .../{plugins => old}/toolbar/toolbar.html | 7 +- .../ckeditor/samples/{ => old}/uicolor.html | 5 +- .../ckeditor/samples/old}/uilanguages.html | 5 +- .../samples/old/wysiwygarea/fullpage.html | 80 + .../samples/{ => old}/xhtmlstyle.html | 7 +- .../samples/plugins/divarea/divarea.html | 61 - .../plugins/sharedspace/sharedspace.html | 119 -- .../plugins/tableresize/tableresize.html | 104 - .../toolbarconfigurator/css/fontello.css | 55 + .../toolbarconfigurator/font/LICENSE.txt | 10 + .../toolbarconfigurator/font/config.json | 28 + .../toolbarconfigurator/font/fontello.eot | Bin 0 -> 4988 bytes .../toolbarconfigurator/font/fontello.svg | 14 + .../toolbarconfigurator/font/fontello.ttf | Bin 0 -> 4820 bytes .../toolbarconfigurator/font/fontello.woff | Bin 0 -> 2904 bytes .../samples/toolbarconfigurator/index.html | 446 +++++ .../js/abstracttoolbarmodifier.js | 14 + .../js/fulltoolbareditor.js | 9 + .../toolbarconfigurator/js/toolbarmodifier.js | 31 + .../js/toolbartextmodifier.js | 14 + .../lib/codemirror/LICENSE | 19 + .../lib/codemirror/codemirror.css | 325 ++++ .../lib/codemirror/codemirror.js | 290 +++ .../lib/codemirror/javascript.js | 24 + .../lib/codemirror/neo.css | 36 + .../lib/codemirror/show-hint.css | 38 + .../lib/codemirror/show-hint.js | 16 + vendors/ckeditor/skins/icy_orange/editor.css | 2 +- .../skins/icy_orange/editor_gecko.css | 2 +- .../ckeditor/skins/icy_orange/editor_ie.css | 2 +- .../ckeditor/skins/icy_orange/editor_ie7.css | 2 +- .../ckeditor/skins/icy_orange/editor_ie8.css | 2 +- .../skins/icy_orange/editor_iequirks.css | 2 +- vendors/ckeditor/skins/icy_orange/icons.png | Bin 5295 -> 5289 bytes .../ckeditor/skins/icy_orange/icons_hidpi.png | Bin 6711 -> 6666 bytes vendors/jquery/jquery-1.11.3.min.js | 5 + vendors/openpgp/openpgp-1.2.0.min.js | 8 + vendors/openpgp/openpgp-1.2.0.worker.min.js | 1 + webpack.config.js | 2 +- 370 files changed, 10805 insertions(+), 5637 deletions(-) delete mode 100644 plugins/recaptcha/templates/PluginLoginReCaptchaGroup.html delete mode 100644 rainloop/v/0.0.0/static/ckeditor/CUSTOMS delete mode 100644 rainloop/v/0.0.0/static/ckeditor/ckeditor.orig.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/about/dialogs/about.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png create mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/about/dialogs/logo_ckeditor.png delete mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/fastimage/dialogs/fastimage.js delete mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/fastimage/images/noimage.png delete mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/onchange/docs/install.html delete mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/onchange/docs/styles.css delete mode 100644 rainloop/v/0.0.0/static/ckeditor/plugins/tabletools/dialogs/tableCell.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/css/samples.css create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/img/github-top.png create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/img/header-bg.png create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/img/header-separator.png create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/img/logo.png create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/img/navigation-tip.png create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/js/sample.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/js/sf.js rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/ajax.html (91%) rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/api.html (96%) rename {vendors/ckeditor/samples => rainloop/v/0.0.0/static/ckeditor/samples/old}/appendto.html (90%) rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/assets/inlineall/logo.png (100%) rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/assets/outputxhtml/outputxhtml.css (100%) rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/assets/posteddata.php (100%) rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/assets/sample.jpg (100%) rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/assets/uilanguages/languages.js (100%) rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/datafiltering.html (72%) rename rainloop/v/0.0.0/static/ckeditor/samples/{plugins => old}/dialog/assets/my_dialog.js (100%) rename {vendors/ckeditor/samples/plugins => rainloop/v/0.0.0/static/ckeditor/samples/old}/dialog/dialog.html (95%) create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/old/divarea/divarea.html rename {vendors/ckeditor/samples => rainloop/v/0.0.0/static/ckeditor/samples/old}/divreplace.html (95%) rename rainloop/v/0.0.0/static/ckeditor/samples/{plugins => old}/enterkey/enterkey.html (91%) rename rainloop/v/0.0.0/static/ckeditor/samples/{plugins => old}/image2/assets/image1.jpg (100%) rename rainloop/v/0.0.0/static/ckeditor/samples/{plugins => old}/image2/assets/image2.jpg (100%) rename {vendors/ckeditor/samples/plugins => rainloop/v/0.0.0/static/ckeditor/samples/old}/image2/image2.html (94%) create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/old/index.html rename {vendors/ckeditor/samples => rainloop/v/0.0.0/static/ckeditor/samples/old}/inlineall.html (97%) rename {vendors/ckeditor/samples => rainloop/v/0.0.0/static/ckeditor/samples/old}/inlinebycode.html (96%) rename {vendors/ckeditor/samples => rainloop/v/0.0.0/static/ckeditor/samples/old}/inlinetextarea.html (95%) rename {vendors/ckeditor/samples => rainloop/v/0.0.0/static/ckeditor/samples/old}/jquery.html (95%) rename rainloop/v/0.0.0/static/ckeditor/samples/{plugins => old}/quicktable/quicktable.html (100%) rename {vendors/ckeditor/samples => rainloop/v/0.0.0/static/ckeditor/samples/old}/readonly.html (91%) rename {vendors/ckeditor/samples => rainloop/v/0.0.0/static/ckeditor/samples/old}/replacebyclass.html (96%) rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/replacebycode.html (96%) rename {vendors/ckeditor/samples => rainloop/v/0.0.0/static/ckeditor/samples/old}/sample.css (93%) rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/sample.js (100%) rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/sample_posteddata.php (87%) rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/tabindex.html (89%) rename rainloop/v/0.0.0/static/ckeditor/samples/{plugins => old}/toolbar/toolbar.html (95%) rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/uicolor.html (90%) rename {vendors/ckeditor/samples => rainloop/v/0.0.0/static/ckeditor/samples/old}/uilanguages.html (94%) create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/old/wysiwygarea/fullpage.html rename rainloop/v/0.0.0/static/ckeditor/samples/{ => old}/xhtmlstyle.html (95%) delete mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/plugins/divarea/divarea.html delete mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/plugins/sharedspace/sharedspace.html delete mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/plugins/tableresize/tableresize.html create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/css/fontello.css create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/font/LICENSE.txt create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/font/config.json create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/font/fontello.eot create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/font/fontello.svg create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/font/fontello.ttf create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/font/fontello.woff create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/index.html create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/js/abstracttoolbarmodifier.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/js/fulltoolbareditor.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/js/toolbarmodifier.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/js/toolbartextmodifier.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/lib/codemirror/LICENSE create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.css create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/lib/codemirror/javascript.js create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/lib/codemirror/neo.css create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.css create mode 100644 rainloop/v/0.0.0/static/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.js delete mode 100644 vendors/ckeditor/CUSTOMS delete mode 100644 vendors/ckeditor/ckeditor.orig.js create mode 100644 vendors/ckeditor/plugins/about/dialogs/about.js create mode 100644 vendors/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png create mode 100644 vendors/ckeditor/plugins/about/dialogs/logo_ckeditor.png delete mode 100644 vendors/ckeditor/plugins/fastimage/dialogs/fastimage.js delete mode 100644 vendors/ckeditor/plugins/fastimage/images/noimage.png delete mode 100644 vendors/ckeditor/plugins/onchange/docs/install.html delete mode 100644 vendors/ckeditor/plugins/onchange/docs/styles.css delete mode 100644 vendors/ckeditor/plugins/tabletools/dialogs/tableCell.js create mode 100644 vendors/ckeditor/samples/css/samples.css create mode 100644 vendors/ckeditor/samples/img/github-top.png create mode 100644 vendors/ckeditor/samples/img/header-bg.png create mode 100644 vendors/ckeditor/samples/img/header-separator.png create mode 100644 vendors/ckeditor/samples/img/logo.png create mode 100644 vendors/ckeditor/samples/img/navigation-tip.png create mode 100644 vendors/ckeditor/samples/js/sample.js create mode 100644 vendors/ckeditor/samples/js/sf.js rename vendors/ckeditor/samples/{ => old}/ajax.html (91%) rename vendors/ckeditor/samples/{ => old}/api.html (96%) rename {rainloop/v/0.0.0/static/ckeditor/samples => vendors/ckeditor/samples/old}/appendto.html (90%) rename vendors/ckeditor/samples/{ => old}/assets/inlineall/logo.png (100%) rename vendors/ckeditor/samples/{ => old}/assets/outputxhtml/outputxhtml.css (100%) rename vendors/ckeditor/samples/{ => old}/assets/posteddata.php (100%) rename vendors/ckeditor/samples/{ => old}/assets/sample.jpg (100%) rename vendors/ckeditor/samples/{ => old}/assets/uilanguages/languages.js (100%) rename vendors/ckeditor/samples/{ => old}/datafiltering.html (72%) rename vendors/ckeditor/samples/{plugins => old}/dialog/assets/my_dialog.js (100%) rename {rainloop/v/0.0.0/static/ckeditor/samples/plugins => vendors/ckeditor/samples/old}/dialog/dialog.html (95%) create mode 100644 vendors/ckeditor/samples/old/divarea/divarea.html rename {rainloop/v/0.0.0/static/ckeditor/samples => vendors/ckeditor/samples/old}/divreplace.html (95%) rename vendors/ckeditor/samples/{plugins => old}/enterkey/enterkey.html (91%) rename vendors/ckeditor/samples/{plugins => old}/image2/assets/image1.jpg (100%) rename vendors/ckeditor/samples/{plugins => old}/image2/assets/image2.jpg (100%) rename {rainloop/v/0.0.0/static/ckeditor/samples/plugins => vendors/ckeditor/samples/old}/image2/image2.html (94%) create mode 100644 vendors/ckeditor/samples/old/index.html rename {rainloop/v/0.0.0/static/ckeditor/samples => vendors/ckeditor/samples/old}/inlineall.html (97%) rename {rainloop/v/0.0.0/static/ckeditor/samples => vendors/ckeditor/samples/old}/inlinebycode.html (96%) rename {rainloop/v/0.0.0/static/ckeditor/samples => vendors/ckeditor/samples/old}/inlinetextarea.html (95%) rename {rainloop/v/0.0.0/static/ckeditor/samples => vendors/ckeditor/samples/old}/jquery.html (95%) rename vendors/ckeditor/samples/{plugins => old}/quicktable/quicktable.html (100%) rename {rainloop/v/0.0.0/static/ckeditor/samples => vendors/ckeditor/samples/old}/readonly.html (91%) rename {rainloop/v/0.0.0/static/ckeditor/samples => vendors/ckeditor/samples/old}/replacebyclass.html (96%) rename vendors/ckeditor/samples/{ => old}/replacebycode.html (96%) rename {rainloop/v/0.0.0/static/ckeditor/samples => vendors/ckeditor/samples/old}/sample.css (93%) rename vendors/ckeditor/samples/{ => old}/sample.js (100%) rename vendors/ckeditor/samples/{ => old}/sample_posteddata.php (87%) rename vendors/ckeditor/samples/{ => old}/tabindex.html (89%) rename vendors/ckeditor/samples/{plugins => old}/toolbar/toolbar.html (95%) rename vendors/ckeditor/samples/{ => old}/uicolor.html (90%) rename {rainloop/v/0.0.0/static/ckeditor/samples => vendors/ckeditor/samples/old}/uilanguages.html (94%) create mode 100644 vendors/ckeditor/samples/old/wysiwygarea/fullpage.html rename vendors/ckeditor/samples/{ => old}/xhtmlstyle.html (95%) delete mode 100644 vendors/ckeditor/samples/plugins/divarea/divarea.html delete mode 100644 vendors/ckeditor/samples/plugins/sharedspace/sharedspace.html delete mode 100644 vendors/ckeditor/samples/plugins/tableresize/tableresize.html create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/css/fontello.css create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/font/LICENSE.txt create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/font/config.json create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/font/fontello.eot create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/font/fontello.svg create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/font/fontello.ttf create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/font/fontello.woff create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/index.html create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/js/abstracttoolbarmodifier.js create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/js/fulltoolbareditor.js create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/js/toolbarmodifier.js create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/js/toolbartextmodifier.js create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/lib/codemirror/LICENSE create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.css create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.js create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/lib/codemirror/javascript.js create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/lib/codemirror/neo.css create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.css create mode 100644 vendors/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.js create mode 100644 vendors/jquery/jquery-1.11.3.min.js create mode 100644 vendors/openpgp/openpgp-1.2.0.min.js create mode 100644 vendors/openpgp/openpgp-1.2.0.worker.min.js diff --git a/dev/App/Admin.js b/dev/App/Admin.js index 60ef8fe50..dfc4790d7 100644 --- a/dev/App/Admin.js +++ b/dev/App/Admin.js @@ -245,6 +245,19 @@ }, bForce); }; + AdminApp.prototype.bootend = function (callback) + { + if (progressJs) + { + progressJs.end(); + } + + if (callback) + { + callback(); + } + }; + AdminApp.prototype.bootstart = function () { AbstractApp.prototype.bootstart.call(this); @@ -280,10 +293,7 @@ } } - if (progressJs) - { - progressJs().end(); - } + this.bootend(); }; module.exports = new AdminApp(); diff --git a/dev/App/User.js b/dev/App/User.js index 9c88b87df..84fb90d5a 100644 --- a/dev/App/User.js +++ b/dev/App/User.js @@ -1305,11 +1305,19 @@ AppUser.prototype.bootend = function () { - kn.hideLoading(); - if (progressJs) { - progressJs().end(); + kn.hideLoading(); + + progressJs.onbeforeend(function () { + $('.progressjs-container').hide().remove(); + }); + + progressJs.set(100).end(); + } + else + { + kn.hideLoading(); } }; @@ -1336,7 +1344,7 @@ if (progressJs) { - progressJs().set(70); + progressJs.set(90); } Globals.leftPanelDisabled.subscribe(function (bValue) { @@ -1352,7 +1360,6 @@ Settings.capa(Enums.Capa.TwoFactorForce) && Settings.settingsGet('RequireTwoFactor')) { - this.bootend(); this.bootstartTwoFactorScreen(); } diff --git a/dev/Common/HtmlEditor.js b/dev/Common/HtmlEditor.js index beae736d3..16b5ef9d9 100644 --- a/dev/Common/HtmlEditor.js +++ b/dev/Common/HtmlEditor.js @@ -209,6 +209,17 @@ } }; + HtmlEditor.prototype.replaceHtml = function (mFind, sReplaceHtml) + { + if (this.editor && this.__inited && 'wysiwyg' === this.editor.mode) + { + try { + this.editor.setData( + this.editor.getData().replace(mFind, sReplaceHtml)); + } catch (e) {} + } + }; + HtmlEditor.prototype.setPlain = function (sPlain, bFocus) { if (this.editor && this.__inited) @@ -298,6 +309,36 @@ self.focusTrigger(); }); + if (window.FileReader) + { + self.editor.on('drop', function(evt) { + if (0 < evt.data.dataTransfer.getFilesCount()) + { + var file = evt.data.dataTransfer.getFile(0); + if (file && window.FileReader && evt.data.dataTransfer.id && + file.type && file.type.match(/^image/i)) + { + var + id = evt.data.dataTransfer.id, + imageId = '[img=' + id +']', + reader = new window.FileReader() + ; + + reader.onloadend = function () { + if (reader.result) + { + self.replaceHtml(imageId, ''); + } + }; + + reader.readAsDataURL(file); + + evt.data.dataTransfer.setData('text/html', imageId); + } + } + }); + } + self.editor.on('instanceReady', function () { if (self.editor.removeMenuItem) diff --git a/dev/External/ko.js b/dev/External/ko.js index dc8161007..8ee27f5c6 100644 --- a/dev/External/ko.js +++ b/dev/External/ko.js @@ -73,6 +73,35 @@ } }; + ko.bindingHandlers.scrollerShadows = { + 'init': function (oElement) { + + var + iLimit = 8, + $oEl = $(oElement), + $win = $(window), + oCont = $oEl.find('[data-scroller-shadows-content]')[0] || null, + fFunc = _.throttle(function () { + $oEl + .toggleClass('scroller-shadow-top', iLimit < oCont.scrollTop) + .toggleClass('scroller-shadow-bottom', oCont.scrollTop + iLimit < oCont.scrollHeight - oCont.clientHeight) + ; + }, 100) + ; + + if (oCont) + { + $(oCont).on('scroll resize', fFunc); + $win.on('resize', fFunc); + + ko.utils.domNodeDisposal.addDisposeCallback(oCont, function () { + $(oCont).off(); + $win.off('resize', fFunc); + }); + } + } + }; + ko.bindingHandlers.tooltip = { 'init': function (oElement, fValueAccessor) { diff --git a/dev/Knoin/Knoin.js b/dev/Knoin/Knoin.js index 01808641c..b4ff3e5eb 100644 --- a/dev/Knoin/Knoin.js +++ b/dev/Knoin/Knoin.js @@ -31,7 +31,8 @@ Knoin.prototype.hideLoading = function () { - $('#rl-loading').hide(); + $('#rl-content').show(); + $('#rl-loading').hide().remove(); }; /** diff --git a/dev/Model/Message.js b/dev/Model/Message.js index 32eda9cf1..312091532 100644 --- a/dev/Model/Message.js +++ b/dev/Model/Message.js @@ -196,6 +196,16 @@ this.hasFlaggedSubMessage(false); }; + /** + * @return {Array} + */ + MessageModel.prototype.getRecipientsEmails = function () + { + return _.compact(_.uniq(_.map(this.to.concat(this.cc), function (oItem) { + return oItem ? oItem.email : ''; + }))); + }; + /** * @return {string} */ diff --git a/dev/Model/OpenPgpKey.js b/dev/Model/OpenPgpKey.js index 735d9f2fd..5d555bea0 100644 --- a/dev/Model/OpenPgpKey.js +++ b/dev/Model/OpenPgpKey.js @@ -49,7 +49,7 @@ OpenPgpKeyModel.prototype.armor = ''; OpenPgpKeyModel.prototype.isPrivate = false; - OpenPgpKeyModel.prototype.getNativeKeys = function () + OpenPgpKeyModel.prototype.getNativeKey = function () { var oKey = null; try @@ -57,17 +57,23 @@ oKey = PgpStore.openpgp.key.readArmored(this.armor); if (oKey && !oKey.err && oKey.keys && oKey.keys[0]) { - return oKey.keys; + return oKey; } } catch (e) { Utils.log(e); } - + return null; }; + OpenPgpKeyModel.prototype.getNativeKeys = function () + { + var oKey = this.getNativeKey(); + return oKey && oKey.keys ? oKey.keys : null; + }; + module.exports = OpenPgpKeyModel; }()); \ No newline at end of file diff --git a/dev/Stores/User/Message.js b/dev/Stores/User/Message.js index e34e1c789..382b01af5 100644 --- a/dev/Stores/User/Message.js +++ b/dev/Stores/User/Message.js @@ -511,12 +511,12 @@ /** * @param {Object} oMessageTextBody */ - MessageUserStore.prototype.initOpenPgpControls = function (oMessageTextBody) + MessageUserStore.prototype.initOpenPgpControls = function (oMessageTextBody, oMessage) { if (oMessageTextBody && oMessageTextBody.find) { oMessageTextBody.find('.b-plain-openpgp:not(.inited)').each(function () { - PgpStore.initMessageBodyControls($(this)); + PgpStore.initMessageBodyControls($(this), oMessage); }); } }; @@ -692,7 +692,7 @@ if (oBody) { - this.initOpenPgpControls(oBody); + this.initOpenPgpControls(oBody, oMessage); this.initBlockquoteSwitcher(oBody); } diff --git a/dev/Stores/User/Pgp.js b/dev/Stores/User/Pgp.js index 3edb6f0c0..bbda64410 100644 --- a/dev/Stores/User/Pgp.js +++ b/dev/Stores/User/Pgp.js @@ -73,13 +73,23 @@ }), true)); }; - PgpUserStore.prototype.findPrivateKeysByEncryptionKeyIds = function (aEncryptionKeyIds, bReturnWrapKeys) + PgpUserStore.prototype.findPrivateKeysByEncryptionKeyIds = function (aEncryptionKeyIds, aRecipients, bReturnWrapKeys) { - var self = this; - return _.compact(_.flatten(_.map(aEncryptionKeyIds, function (oId) { + var self = this, aResult = []; + aResult = Utils.isArray(aEncryptionKeyIds) ? _.compact(_.flatten(_.map(aEncryptionKeyIds, function (oId) { var oKey = oId && oId.toHex ? self.findPrivateKeyByHex(oId.toHex()) : null; return oKey ? (bReturnWrapKeys ? [oKey] : oKey.getNativeKeys()) : [null]; - }), true)); + }), true)) : []; + + if (0 === aResult.length && Utils.isNonEmptyArray(aRecipients)) + { + aResult = _.compact(_.flatten(_.map(aRecipients, function (sEmail) { + var oKey = sEmail ? self.findPrivateKeyByEmailNotNative(sEmail) : null; + return oKey ? (bReturnWrapKeys ? [oKey] : oKey.getNativeKeys()) : [null]; + }), true)); + } + + return aResult; }; /** @@ -149,44 +159,36 @@ return this.findPrivateKeyByEmail(require('Stores/User/Account').email(), sPassword); }; - PgpUserStore.prototype.decryptMessage = function (oMessage, fCallback) + PgpUserStore.prototype.decryptMessage = function (oMessage, aRecipients, fCallback) { - var self = this, aPrivateKeys = [], aEncryptionKeyIds = []; - if (oMessage && oMessage.getSigningKeyIds) + var self = this, aPrivateKeys = []; + if (oMessage && oMessage.getEncryptionKeyIds) { - aEncryptionKeyIds = oMessage.getEncryptionKeyIds(); - if (aEncryptionKeyIds) + aPrivateKeys = this.findPrivateKeysByEncryptionKeyIds(oMessage.getEncryptionKeyIds(), aRecipients, true); + if (aPrivateKeys && 0 < aPrivateKeys.length) { - aPrivateKeys = this.findPrivateKeysByEncryptionKeyIds(aEncryptionKeyIds, true); - if (aPrivateKeys && 0 < aPrivateKeys.length) - { - kn.showScreenPopup(require('View/Popup/MessageOpenPgp'), [function (oDecriptedKey) { + kn.showScreenPopup(require('View/Popup/MessageOpenPgp'), [function (oDecriptedKey) { - if (oDecriptedKey) + if (oDecriptedKey) + { + var oPrivateKey = null, oDecryptedMessage = null; + try { - var oPrivateKey = null, oDecryptedMessage = null; - try - { - oDecryptedMessage = oMessage.decrypt(oDecriptedKey); - } - catch (e) - { - oDecryptedMessage = null; - } + oDecryptedMessage = oMessage.decrypt(oDecriptedKey); + } + catch (e) + { + oDecryptedMessage = null; + } - if (oDecryptedMessage) + if (oDecryptedMessage) + { + oPrivateKey = self.findPrivateKeyByHex(oDecriptedKey.primaryKey.keyid.toHex()); + if (oPrivateKey) { - oPrivateKey = self.findPrivateKeyByHex(oDecriptedKey.primaryKey.keyid.toHex()); - if (oPrivateKey) - { - self.verifyMessage(oDecryptedMessage, function (oValidKey, aSigningKeyIds) { - fCallback(oPrivateKey, oDecryptedMessage, oValidKey || null, aSigningKeyIds || null); - }); - } - else - { - fCallback(oPrivateKey, oDecryptedMessage); - } + self.verifyMessage(oDecryptedMessage, function (oValidKey, aSigningKeyIds) { + fCallback(oPrivateKey, oDecryptedMessage, oValidKey || null, aSigningKeyIds || null); + }); } else { @@ -195,13 +197,17 @@ } else { - fCallback(null, null); + fCallback(oPrivateKey, oDecryptedMessage); } + } + else + { + fCallback(null, null); + } - }, aPrivateKeys]); + }, aPrivateKeys]); - return false; - } + return false; } } @@ -262,7 +268,7 @@ oVerControl.removeClass('success').addClass('error').attr('title', sTitle); } - if (undefined !== sText) + if (!Utils.isUnd(sText)) { mDom.text(Utils.trim(sText.replace(/(\u200C|\u0002)/g, ''))); } @@ -270,8 +276,9 @@ /** * @param {*} mDom + * @param {MessageModel} oRainLoopMessage */ - PgpUserStore.prototype.initMessageBodyControls = function (mDom) + PgpUserStore.prototype.initMessageBodyControls = function (mDom, oRainLoopMessage) { if (mDom && !mDom.hasClass('inited')) { @@ -282,6 +289,7 @@ bEncrypted = mDom.hasClass('encrypted'), bSigned = mDom.hasClass('signed'), oVerControl = null, + aRecipients = oRainLoopMessage ? oRainLoopMessage.getRecipientsEmails() : [], sData = '' ; @@ -313,7 +321,7 @@ if (oMessage && oMessage.getText && oMessage.verify && oMessage.decrypt) { - self.decryptMessage(oMessage, function (oValidPrivateKey, oDecriptedMessage, oValidPublicKey, aSigningKeyIds) { + self.decryptMessage(oMessage, aRecipients, function (oValidPrivateKey, oDecriptedMessage, oValidPublicKey, aSigningKeyIds) { if (oDecriptedMessage) { diff --git a/dev/Styles/Animations.less b/dev/Styles/Animations.less index abf72e01e..01db2035f 100644 --- a/dev/Styles/Animations.less +++ b/dev/Styles/Animations.less @@ -69,6 +69,11 @@ html.csstransitions.rl-started-trigger.no-mobile .b-login-content .loginFormWrap animation: login-form-shake 400ms ease-in-out; } + &.no-mobile .b-login-content .errorAnimated .buttonLogin { + color: #b94a48; + font-weight: bold; + } + &.cssanimations.csstransitions.no-mobile .b-login-content .afterLoginHide { opacity: 0; } diff --git a/dev/Styles/MessageList.less b/dev/Styles/MessageList.less index 29ad90ad7..6e5a9bc4d 100644 --- a/dev/Styles/MessageList.less +++ b/dev/Styles/MessageList.less @@ -610,7 +610,7 @@ html.cssanimations.rl-anim .messageList .line-loading { } .draggablePlace { - z-index: 10002; + z-index: 10003; color: #fff; background-color: #333; background-color: rgba(0,0,0,0.5); diff --git a/dev/Styles/MessageView.less b/dev/Styles/MessageView.less index 49096e7db..9f1c6135d 100644 --- a/dev/Styles/MessageView.less +++ b/dev/Styles/MessageView.less @@ -388,8 +388,23 @@ html.rl-no-preview-pane { border-radius: 0; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; display: block; - max-width: 700px; word-wrap: break-word; + background-color: #f9f9f9; + } + + code { + display: inline; + padding: 2px 5px; + } + + pre { + padding: 5px 10px; + border-radius: 5px; + background-color: #f9f9f9; + } + + pre > code { + padding: 0px; } } @@ -571,6 +586,6 @@ html.rl-message-fullscreen { } } -.nano-scrolllimit-top .buttonUp { +.nano.scroller-shadow-top .buttonUp { display: inline-block !important; -} +} \ No newline at end of file diff --git a/dev/Styles/Responsive.less b/dev/Styles/Responsive.less index 94fde40f2..9b4c04697 100644 --- a/dev/Styles/Responsive.less +++ b/dev/Styles/Responsive.less @@ -1,5 +1,5 @@ html.ssm-state-mobile111 { - + &.rl-message-fullscreen { #rl-right { .RL-MailMessageView { @@ -47,8 +47,8 @@ html.ssm-state-mobile111 { } } } - - + + #rl-right { .RL-MailMessageView { .messageView { @@ -124,18 +124,18 @@ html.ssm-state-mobile111 { } } } - + #rl-sub-right { right:0px; left:auto; width:35px; } - + #rl-center { min-width: 0px; } - - + + .b-compose.modal, .b-contacts-content.modal, .b-compose.modal, @@ -144,7 +144,7 @@ html.ssm-state-mobile111 { width: 95%; max-width: 700px; } - + .b-compose.modal { .b-header { max-height:130px; @@ -154,10 +154,9 @@ html.ssm-state-mobile111 { .cke_top { max-height:30px; overflow:auto; - } } - + .b-advanced-search-content.modal { .control-label { width:60px; @@ -166,5 +165,5 @@ html.ssm-state-mobile111 { margin-left:70px; } } - + } diff --git a/dev/Styles/Scroll.less b/dev/Styles/Scroll.less index 88bb59520..a691b7200 100644 --- a/dev/Styles/Scroll.less +++ b/dev/Styles/Scroll.less @@ -1,5 +1,5 @@ -.nano:before, .nano:after { - display: none; + +.nano.scroller-shadow-top:before, .nano.scroller-shadow-bottom:after { content: ""; position: absolute; left: 0; @@ -9,18 +9,14 @@ box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.3); } -.fixIndex.nano:before, .fixIndex.nano:after { - z-index: 98; -} - -.nano:before { +.nano.scroller-shadow-top:before { top: -10px; } -.nano:after { +.nano.scroller-shadow-bottom:after { bottom: -10px; } -.nano.nano-scrolllimit-top:before, .nano.nano-scrolllimit-bottom:after { - display: block; +.nano.fixIndex.scroller-shadow-top:before, .nano.fixIndex.scroller-shadow-bottom:after { + z-index: 98; } \ No newline at end of file diff --git a/dev/Styles/_CkeFix.less b/dev/Styles/_CkeFix.less index a7b486efc..d084ebc13 100644 --- a/dev/Styles/_CkeFix.less +++ b/dev/Styles/_CkeFix.less @@ -15,6 +15,11 @@ -moz-box-shadow: none !important; -webkit-box-shadow: none !important; box-shadow: none !important; + border-bottom: 1px solid #b6b6b6 !important; +} + +.cke_button_on { + background: #ddd !important; } .cke_button { @@ -34,6 +39,7 @@ font-family: Monaco, Menlo, Consolas, 'Courier New', monospace !important; padding: 10px !important; padding-right: 0 !important; + box-shadow: none !important; } .cke_plain { @@ -93,12 +99,31 @@ } } - pre { + pre, code { margin: 0px; padding: 0px; background: #fff; border: none; + border-radius: 0; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; + display: block; + word-wrap: break-word; + background-color: #f9f9f9; + } + + code { + display: inline; + padding: 2px 5px; + } + + pre { + padding: 5px 10px; + border-radius: 5px; + background-color: #f9f9f9; + } + + pre > code { + padding: 0px; } blockquote { diff --git a/dev/Styles/_End.less b/dev/Styles/_End.less index 198942710..ed0305d93 100644 --- a/dev/Styles/_End.less +++ b/dev/Styles/_End.less @@ -28,7 +28,7 @@ opacity: 0; } -#rl-content { +#rl-check { display: block; } diff --git a/dev/View/Popup/Contacts.js b/dev/View/Popup/Contacts.js index 4ac9b6e7e..98c09ed4f 100644 --- a/dev/View/Popup/Contacts.js +++ b/dev/View/Popup/Contacts.js @@ -739,6 +739,11 @@ return false; }); + key('c, w', Enums.KeyState.ContactList, function () { + self.newMessageCommand(); + return false; + }); + oDom .on('click', '.e-pagenator .e-page', function () { var oPage = ko.dataFor(this); diff --git a/dev/bootstrap.js b/dev/bootstrap.js index b15af81a6..00782d1f7 100644 --- a/dev/bootstrap.js +++ b/dev/bootstrap.js @@ -55,11 +55,13 @@ $(_.delay(function () { - if (!$('#rl-content').is(':visible')) + if (!$('#rl-check').is(':visible')) { Globals.$html.addClass('no-css'); } + $('#rl-check').remove(); + if (window['rainloopTEMPLATES'] && window['rainloopTEMPLATES'][0]) { $('#rl-templates').html(window['rainloopTEMPLATES'][0]); diff --git a/gulpfile.js b/gulpfile.js index 36acf37ac..413d0199a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -152,13 +152,13 @@ cfg.paths.js = { openpgp: { name: 'openpgp.min.js', src: [ - 'vendors/openpgp/openpgp-0.10.1.min.js' + 'vendors/openpgp/openpgp-1.2.0.min.js' ] }, openpgpworker: { name: 'openpgp.worker.min.js', src: [ - 'vendors/openpgp/openpgp-0.10.1.worker.min.js' + 'vendors/openpgp/openpgp-1.2.0.worker.min.js' ] }, encrypt: { @@ -178,7 +178,7 @@ cfg.paths.js = { name: 'libs.js', src: [ 'vendors/underscore/1.6.0/underscore-min.js', - 'vendors/jquery/jquery-1.11.2.min.js', + 'vendors/jquery/jquery-1.11.3.min.js', 'vendors/jquery-ui/js/jquery-ui-1.10.3.custom.min.js', 'vendors/jquery-cookie/jquery.cookie-1.4.0.min.js', 'vendors/jquery-finger/jquery.finger.min.js', @@ -539,7 +539,6 @@ gulp.task('ckeditor:copy-plugins', ['ckeditor:copy'], function() { gulp.task('ckeditor', ['ckeditor:copy-plugins'], function () { return gulp.src('rainloop/v/' + cfg.devVersion + '/static/ckeditor/*.js') .pipe(stripbom()) - .pipe(replace('console.log("Detecting changes using MutationObservers")', 'true')) .pipe(header("\uFEFF")) // BOM .pipe(gulp.dest('rainloop/v/' + cfg.devVersion + '/static/ckeditor')); }); diff --git a/package.json b/package.json index f2f158180..4d35529fa 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "RainLoop", "title": "RainLoop Webmail", - "version": "1.9.2", - "release": "361", + "version": "1.9.3", + "release": "363", "description": "Simple, modern & fast web-based email client", "homepage": "http://rainloop.net", "main": "gulpfile.js", @@ -40,7 +40,7 @@ "plugins" ], "readmeFilename": "README.md", - "ownCloudPackageVersion": "4.7", + "ownCloudPackageVersion": "4.8", "engines": { "node": ">= 0.10.0" }, diff --git a/plugins/recaptcha/VERSION b/plugins/recaptcha/VERSION index 415b19fc3..42f7d2336 100644 --- a/plugins/recaptcha/VERSION +++ b/plugins/recaptcha/VERSION @@ -1 +1 @@ -2.0 \ No newline at end of file +2.1 \ No newline at end of file diff --git a/plugins/recaptcha/index.php b/plugins/recaptcha/index.php index 4d1ab96ea..36801e89d 100644 --- a/plugins/recaptcha/index.php +++ b/plugins/recaptcha/index.php @@ -13,9 +13,6 @@ class RecaptchaPlugin extends \RainLoop\Plugins\AbstractPlugin $this->addHook('ajax.action-pre-call', 'AjaxActionPreCall'); $this->addHook('filter.ajax-response', 'FilterAjaxResponse'); - - $this->addTemplate('templates/PluginLoginReCaptchaGroup.html'); - $this->addTemplateHook('Login', 'BottomControlGroup', 'PluginLoginReCaptchaGroup'); } /** @@ -120,7 +117,7 @@ class RecaptchaPlugin extends \RainLoop\Plugins\AbstractPlugin { $oCacher = $this->Manager()->Actions()->Cacher(); $iConfigLimit = (int) $this->Config()->Get('plugin', 'error_limit', 0); - + $sKey = $this->getCaptchaCacherKey(); if (0 < $iConfigLimit && $oCacher && $oCacher->IsInited()) diff --git a/plugins/recaptcha/js/recaptcha.js b/plugins/recaptcha/js/recaptcha.js index 7b1802d31..30ba6b2e4 100644 --- a/plugins/recaptcha/js/recaptcha.js +++ b/plugins/recaptcha/js/recaptcha.js @@ -13,10 +13,17 @@ { if (null === nId) { - var oEl = $('#recaptcha-div'); - if (oEl && oEl[0]) + var + oEl = null, + oLink = $('.plugin-mark-Login-BottomControlGroup') + ; + + if (oLink && oLink[0]) { - oEl.show(); + oEl = $('
'); + + $(oLink[0]).after(oEl); + nId = window.grecaptcha.render(oEl[0], { 'sitekey': window.rl.pluginSettingsGet('recaptcha', 'public_key'), 'theme': window.rl.pluginSettingsGet('recaptcha', 'theme') @@ -79,7 +86,6 @@ { StartRecaptcha(); } - } } }); diff --git a/plugins/recaptcha/templates/PluginLoginReCaptchaGroup.html b/plugins/recaptcha/templates/PluginLoginReCaptchaGroup.html deleted file mode 100644 index 9749c8164..000000000 --- a/plugins/recaptcha/templates/PluginLoginReCaptchaGroup.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php b/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php index 3e9de81cd..bd0b916ac 100644 --- a/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php +++ b/rainloop/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php @@ -802,7 +802,7 @@ class MailClient $aFlags = \array_map('strtolower', $oFetchResponse->GetFetchValue( \MailSo\Imap\Enumerations\FetchType::FLAGS)); - if (\in_array(\strtolower(\MailSo\Imap\Enumerations\MessageFlag::RECENT), $aFlags) || + if (\in_array(\strtolower(\MailSo\Imap\Enumerations\MessageFlag::RECENT), $aFlags) && !\in_array(\strtolower(\MailSo\Imap\Enumerations\MessageFlag::SEEN), $aFlags)) { $sUid = $oFetchResponse->GetFetchValue(\MailSo\Imap\Enumerations\FetchType::UID); diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php index f75ebd478..738b0ce35 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -1131,6 +1131,18 @@ class Actions return $this->oLoggerAuth; } + /** + * @param \RainLoop\Model\Account $oAccount + */ + public function LoggerAuthHelper($oAccount = null) + { + $sLine = $this->Config()->Get('logs', 'auth_logging_format', ''); + if (!empty($sLine)) + { + $this->LoggerAuth()->Write($this->compileLogParams($sLine, $oAccount)); + } + } + /** * @return string */ @@ -1978,12 +1990,7 @@ class Actions { if ($bAuthLog) { - $sLine = $this->Config()->Get('logs', 'auth_logging_format', ''); - if (!empty($sLine)) - { - $this->LoggerAuth()->Write($this->compileLogParams($sLine, $oAccount), - \MailSo\Log\Enumerations\Type::WARNING, 'IMAP'); - } + $this->LoggerAuthHelper($oAccount); } if ($this->Config()->Get('labs', 'imap_show_login_alert', true)) @@ -2109,6 +2116,8 @@ class Actions $this->Plugins()->RunHook('event.login-pre-login-provide', array()); + $oAccount = null; + try { $oAccount = $this->LoginProvide($sEmail, $sLogin, $sPassword, $sSignMeToken, true); @@ -2129,6 +2138,8 @@ class Actions { $this->loginErrorDelay(); + $this->LoggerAuthHelper($oAccount); + throw $oException; } @@ -2148,6 +2159,8 @@ class Actions { $this->Logger()->Write('TFA: Required Code for '.$oAccount->ParentEmailHelper().' account.'); + $this->LoggerAuthHelper($oAccount); + throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::AccountTwoFactorAuthRequired); } else @@ -2176,6 +2189,8 @@ class Actions { $this->loginErrorDelay(); + $this->LoggerAuthHelper($oAccount); + throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::AccountTwoFactorAuthError); } } @@ -9577,8 +9592,9 @@ class Actions }; } -// $this->Logger()->Write('---'); -// $this->Logger()->Write($sHtml); + $sHtml = \preg_replace_callback('/]*>([\s\S\r\n\t]*)<\/pre>/mi', function ($aMatches) { + return \preg_replace('/[\r\n]+/', '
', $aMatches[0]); + }, $sHtml); $mResult['Html'] = 0 === \strlen($sHtml) ? '' : \MailSo\Base\HtmlUtils::ClearHtml( $sHtml, $bHasExternals, $mFoundedCIDs, $aContentLocationUrls, $mFoundedContentLocationUrls, false, false, diff --git a/rainloop/v/0.0.0/app/templates/Index.html b/rainloop/v/0.0.0/app/templates/Index.html index db16ceb74..8fb3fce8d 100644 --- a/rainloop/v/0.0.0/app/templates/Index.html +++ b/rainloop/v/0.0.0/app/templates/Index.html @@ -11,7 +11,7 @@ - - + - - - + +
Loading
@@ -51,7 +52,7 @@
- + + + - -

- CKEditor Samples -

-
-
-

- Basic Samples -

-
-
Replace textarea elements by class name
-
Automatic replacement of all textarea elements of a given class with a CKEditor instance.
+ -
Replace textarea elements by code
-
Replacement of textarea elements with CKEditor instances by using a JavaScript call.
+ -
Create editors with jQuery
-
Creating standard and inline CKEditor instances with jQuery adapter.
-
+
+
+

+ CKEditor Sample +

-

- Basic Customization -

-
-
User Interface color
-
Changing CKEditor User Interface color and adding a toolbar button that lets the user set the UI color.
+ +
+
-
User Interface languages
-
Changing CKEditor User Interface language and adding a drop-down list that lets the user choose the UI language.
- - - -

Plugins

-
-
New Image pluginNew!
-
Using the new Image plugin to insert captioned images and adjust their dimensions.
- -
Shared-Space plugin
-
Having the toolbar and the bottom bar spaces shared by different editor instances.
- -
TableResize plugin
-
Using the TableResize plugin to enable table column resizing.
-
-
-
-

- Inline Editing -

-
-
Massive inline editor creation
-
Turn all elements with contentEditable = true attribute into inline editors.
- -
Convert element into an inline editor by code
-
Conversion of DOM elements into inline CKEditor instances by using a JavaScript call.
- -
Replace textarea with inline editor New!
-
A form with a textarea that is replaced by an inline editor at runtime.
- - -
- -

- Advanced Samples -

-
-
Data filtering and features activation New!
-
Data filtering and automatic features activation basing on configuration.
- -
Replace DIV elements on the fly
-
Transforming a div element into an instance of CKEditor with a mouse click.
- -
Append editor instances
-
Appending editor instances to existing DOM elements.
- -
Create and destroy editor instances for Ajax applications
-
Creating and destroying CKEditor instances on the fly and saving the contents entered into the editor window.
- -
Basic usage of the API
-
Using the CKEditor JavaScript API to interact with the editor at runtime.
- -
XHTML-compliant style
-
Configuring CKEditor to produce XHTML 1.1 compliant attributes and styles.
- -
Read-only mode
-
Using the readOnly API to block introducing changes to the editor contents.
- -
"Tab" key-based navigation
-
Navigating among editor instances with tab key.
- - - -
Using the JavaScript API to customize dialog windows
-
Using the dialog windows API to customize dialog windows without changing the original editor code.
- -
Replace Textarea with a "DIV-based" editor
-
Using div instead of iframe for rich editing.
- -
Using the "Enter" key in CKEditor
-
Configuring the behavior of Enter and Shift+Enter keys.
- -
Toolbar Configurations
-
Configuring CKEditor to display full or custom toolbar layout.
- -
+
+
+
+
+

Congratulations!

+

+ If you can see CKEditor below, it means that the installation succeeded. + You can now try out your new editor version, see its features, and when you are ready to move on, check some of the most useful resources recommended below. +

+
-
+ +
+
+

+ CKEditor – The text editor for the Internet – http://ckeditor.com

-

- Copyright © 2003-2015, CKSource - Frederico Knabben. All rights reserved. +

+ Copyright © 2003-2015, CKSource – Frederico Knabben. All rights reserved.

+
+ + diff --git a/rainloop/v/0.0.0/static/ckeditor/samples/js/sample.js b/rainloop/v/0.0.0/static/ckeditor/samples/js/sample.js new file mode 100644 index 000000000..837ac6a11 --- /dev/null +++ b/rainloop/v/0.0.0/static/ckeditor/samples/js/sample.js @@ -0,0 +1,53 @@ +/** + * Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/* exported initSample */ + +if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) + CKEDITOR.tools.enableHtml5Elements( document ); + +// The trick to keep the editor in the sample quite small +// unless user specified own height. +CKEDITOR.config.height = 150; +CKEDITOR.config.width = 'auto'; + +var initSample = ( function() { + var wysiwygareaAvailable = isWysiwygareaAvailable(), + isBBCodeBuiltIn = !!CKEDITOR.plugins.get( 'bbcode' ); + + return function() { + var editorElement = CKEDITOR.document.getById( 'editor' ); + + // :((( + if ( isBBCodeBuiltIn ) { + editorElement.setHtml( + 'Hello world!\n\n' + + 'I\'m an instance of [url=http://ckeditor.com]CKEditor[/url].' + ); + } + + // Depending on the wysiwygare plugin availability initialize classic or inline editor. + if ( wysiwygareaAvailable ) { + CKEDITOR.replace( 'editor' ); + } else { + editorElement.setAttribute( 'contenteditable', 'true' ); + CKEDITOR.inline( 'editor' ); + + // TODO we can consider displaying some info box that + // without wysiwygarea the classic editor may not work. + } + }; + + function isWysiwygareaAvailable() { + // If in development mode, then the wysiwygarea must be available. + // Split REV into two strings so builder does not replace it :D. + if ( CKEDITOR.revision == ( '%RE' + 'V%' ) ) { + return true; + } + + return !!CKEDITOR.plugins.get( 'wysiwygarea' ); + } +} )(); + diff --git a/rainloop/v/0.0.0/static/ckeditor/samples/js/sf.js b/rainloop/v/0.0.0/static/ckeditor/samples/js/sf.js new file mode 100644 index 000000000..205bff8b9 --- /dev/null +++ b/rainloop/v/0.0.0/static/ckeditor/samples/js/sf.js @@ -0,0 +1,17 @@ +/* + Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +var SF=function(){function d(a){return(a=a.attributes?a.attributes.getNamedItem("class"):null)?a.value.split(" "):[]}function c(a){var e=document.createAttribute("class");e.value=a.join(" ");return e}var b={attachListener:function(a,e,b){if(a.addEventListener)a.addEventListener(e,b,!1);else if(a.attachEvent)a.attachEvent("on"+e,function(){b.apply(a,arguments)});else throw Error("Could not attach event.");}};b.indexOf=function(){var a=Array.prototype.indexOf;return"function"===a?function(e,b){return a.call(e, +b)}:function(a,b){for(var c=a.length,d=0;d Ajax — CKEditor Sample - + + +

CKEditor Samples » Append To Page Element Using JavaScript Code

+
+ This sample is not maintained anymore. Check out the brand new samples in CKEditor SDK. +

diff --git a/rainloop/v/0.0.0/static/ckeditor/samples/assets/inlineall/logo.png b/rainloop/v/0.0.0/static/ckeditor/samples/old/assets/inlineall/logo.png similarity index 100% rename from rainloop/v/0.0.0/static/ckeditor/samples/assets/inlineall/logo.png rename to rainloop/v/0.0.0/static/ckeditor/samples/old/assets/inlineall/logo.png diff --git a/rainloop/v/0.0.0/static/ckeditor/samples/assets/outputxhtml/outputxhtml.css b/rainloop/v/0.0.0/static/ckeditor/samples/old/assets/outputxhtml/outputxhtml.css similarity index 100% rename from rainloop/v/0.0.0/static/ckeditor/samples/assets/outputxhtml/outputxhtml.css rename to rainloop/v/0.0.0/static/ckeditor/samples/old/assets/outputxhtml/outputxhtml.css diff --git a/rainloop/v/0.0.0/static/ckeditor/samples/assets/posteddata.php b/rainloop/v/0.0.0/static/ckeditor/samples/old/assets/posteddata.php similarity index 100% rename from rainloop/v/0.0.0/static/ckeditor/samples/assets/posteddata.php rename to rainloop/v/0.0.0/static/ckeditor/samples/old/assets/posteddata.php diff --git a/rainloop/v/0.0.0/static/ckeditor/samples/assets/sample.jpg b/rainloop/v/0.0.0/static/ckeditor/samples/old/assets/sample.jpg similarity index 100% rename from rainloop/v/0.0.0/static/ckeditor/samples/assets/sample.jpg rename to rainloop/v/0.0.0/static/ckeditor/samples/old/assets/sample.jpg diff --git a/rainloop/v/0.0.0/static/ckeditor/samples/assets/uilanguages/languages.js b/rainloop/v/0.0.0/static/ckeditor/samples/old/assets/uilanguages/languages.js similarity index 100% rename from rainloop/v/0.0.0/static/ckeditor/samples/assets/uilanguages/languages.js rename to rainloop/v/0.0.0/static/ckeditor/samples/old/assets/uilanguages/languages.js diff --git a/rainloop/v/0.0.0/static/ckeditor/samples/datafiltering.html b/rainloop/v/0.0.0/static/ckeditor/samples/old/datafiltering.html similarity index 72% rename from rainloop/v/0.0.0/static/ckeditor/samples/datafiltering.html rename to rainloop/v/0.0.0/static/ckeditor/samples/old/datafiltering.html index 1165594ae..75c8c8be8 100644 --- a/rainloop/v/0.0.0/static/ckeditor/samples/datafiltering.html +++ b/rainloop/v/0.0.0/static/ckeditor/samples/old/datafiltering.html @@ -7,7 +7,7 @@ For licensing, see LICENSE.md or http://ckeditor.com/license Data Filtering — CKEditor Sample - + +

+ +
+ +
+ +
+

+ This editor is using a custom configuration for ACF. + It's using the + Disallowed Content property of the filter to eliminate all a and img tags, + while allowing all other tags. +

+
+CKEDITOR.replace( 'editor7', {
+	allowedContent: {
+		// Allow all content.
+		$1: {
+			elements: CKEDITOR.dtd,
+			attributes: true,
+			styles: true,
+			classes: true
+		}
+	},
+	disallowedContent: 'img a'
+} );
+
+
+ + +
+