From 55a49ce445aac635c09bfba14fbdadc621d59811 Mon Sep 17 00:00:00 2001 From: Saqib Ansari Date: Tue, 1 Jun 2021 17:39:25 +0530 Subject: [PATCH 1/6] fix: cannot set shortcut for actions menu item --- frappe/public/js/frappe/ui/page.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/ui/page.js b/frappe/public/js/frappe/ui/page.js index e740718ef9..a302c26892 100644 --- a/frappe/public/js/frappe/ui/page.js +++ b/frappe/public/js/frappe/ui/page.js @@ -377,11 +377,12 @@ frappe.ui.Page = class Page { }); } - add_actions_menu_item(label, click, standard) { + add_actions_menu_item(label, click, standard, shortcut) { return this.add_dropdown_item({ label, click, standard, + shortcut, parent: this.actions, show_parent: false }); From e534dc0a026b49e7f22cba3d2f3d003aa600063a Mon Sep 17 00:00:00 2001 From: leela Date: Thu, 10 Jun 2021 21:30:53 +0530 Subject: [PATCH 2/6] feat: Make url's clickable in text editor when typed/copied Using a Quill module named quill-magic-url to automatically convert typed/copied urls into links. --- .../public/js/frappe/form/controls/text_editor.js | 6 +++++- package.json | 1 + yarn.lock | 13 +++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/form/controls/text_editor.js b/frappe/public/js/frappe/form/controls/text_editor.js index 059b0f76f8..1c7077eb64 100644 --- a/frappe/public/js/frappe/form/controls/text_editor.js +++ b/frappe/public/js/frappe/form/controls/text_editor.js @@ -1,7 +1,10 @@ import Quill from 'quill'; import ImageResize from 'quill-image-resize'; +import MagicUrl from 'quill-magic-url'; + Quill.register('modules/imageResize', ImageResize); +Quill.register('modules/magicUrl', MagicUrl) const CodeBlockContainer = Quill.import('formats/code-block-container'); CodeBlockContainer.tagName = 'PRE'; Quill.register(CodeBlockContainer, true); @@ -148,7 +151,8 @@ frappe.ui.form.ControlTextEditor = class ControlTextEditor extends frappe.ui.for modules: { toolbar: this.get_toolbar_options(), table: true, - imageResize: {} + imageResize: {}, + magicUrl: true }, theme: 'snow' }; diff --git a/package.json b/package.json index e666a2e1ce..078af44cd7 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "quagga": "^0.12.1", "quill": "2.0.0-dev.4", "quill-image-resize": "^3.0.9", + "quill-magic-url": "^3.0.0", "qz-tray": "^2.0.8", "redis": "^3.1.1", "showdown": "^1.9.1", diff --git a/yarn.lock b/yarn.lock index 298c424b72..4da6fe14e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4515,6 +4515,11 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== +normalize-url@^4.5.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5626,6 +5631,14 @@ quill-image-resize@^3.0.9: quill "^1.2.2" raw-loader "^0.5.1" +quill-magic-url@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/quill-magic-url/-/quill-magic-url-3.0.2.tgz#84654c749650e006250cbaf905295cb87796f3a7" + integrity sha512-kLPDwjNExGJZyCLGxbaiTFD/OYHagNLRvsdKRV+2d946I8cxaXaB7IT9wbrB49jC8z1X5cwI+pzZzHZeV0orFw== + dependencies: + normalize-url "^4.5.0" + quill-delta "^3.6.2" + quill@2.0.0-dev.4: version "2.0.0-dev.4" resolved "https://registry.yarnpkg.com/quill/-/quill-2.0.0-dev.4.tgz#130e38efe7a16b3766d767d750c8aacc038945e7" From 0e99ea6c4cbfd310d7fe26b241aec6e74c700d0f Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Sat, 5 Jun 2021 15:00:57 +0530 Subject: [PATCH 3/6] fix: property to hide grid delete button (cherry picked from commit d44a4ad730464137cac7a52b372163862687516b) --- frappe/public/js/frappe/form/grid.js | 4 ++++ frappe/public/js/frappe/form/grid_row.js | 3 +++ 2 files changed, 7 insertions(+) diff --git a/frappe/public/js/frappe/form/grid.js b/frappe/public/js/frappe/form/grid.js index a77791d0a2..5614add585 100644 --- a/frappe/public/js/frappe/form/grid.js +++ b/frappe/public/js/frappe/form/grid.js @@ -236,6 +236,10 @@ export default class Grid { } refresh_remove_rows_button() { + if (this.df.cannot_delete_rows) { + return; + } + this.remove_rows_button.toggleClass('hidden', this.wrapper.find('.grid-body .grid-row-check:checked:first').length ? false : true); this.remove_all_rows_button.toggleClass('hidden', diff --git a/frappe/public/js/frappe/form/grid_row.js b/frappe/public/js/frappe/form/grid_row.js index 33db00dede..8c51314066 100644 --- a/frappe/public/js/frappe/form/grid_row.js +++ b/frappe/public/js/frappe/form/grid_row.js @@ -569,6 +569,9 @@ export default class GridRow { .find('.grid-insert-row-below, .grid-insert-row, .grid-duplicate-row, .grid-append-row') .toggle(!cannot_add_rows); + this.wrapper.find('.grid-delete-row') + .toggle(!(this.grid.df && this.grid.df.cannot_delete_rows)); + frappe.dom.freeze("", "dark"); if (cur_frm) cur_frm.cur_grid = this; this.wrapper.addClass("grid-row-open"); From ff75a72a6ed39c6c9f640ba9969188a4eda00acc Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Mon, 14 Jun 2021 09:13:26 +0530 Subject: [PATCH 4/6] fix: Grid delete all should trigger form change --- frappe/public/js/frappe/form/grid.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frappe/public/js/frappe/form/grid.js b/frappe/public/js/frappe/form/grid.js index a77791d0a2..af89c7bd8a 100644 --- a/frappe/public/js/frappe/form/grid.js +++ b/frappe/public/js/frappe/form/grid.js @@ -210,9 +210,9 @@ export default class Grid { delete_all_rows() { frappe.confirm(__("Are you sure you want to delete all rows?"), () => { - this.frm.doc[this.df.fieldname] = []; - $(this.parent).find('.rows').empty(); - this.grid_rows = []; + this.grid_rows.forEach(row => { + row.remove(); + }); this.frm.script_manager.trigger(this.df.fieldname + "_delete", this.doctype); this.wrapper.find('.grid-heading-row .grid-row-check:checked:first').prop('checked', 0); From c523e760fdb4a49547212d5f11399940022a438a Mon Sep 17 00:00:00 2001 From: leela Date: Mon, 24 May 2021 13:56:21 +0530 Subject: [PATCH 5/6] fix: encode error to add outgoing mail to sent folder Failed to add outgoing mail to sent folder because of encoding issue. fixed it by using safe_encode method. (cherry picked from commit 5165e2afa3884310fd653280c834d984a5feda8d) --- frappe/email/doctype/email_account/email_account.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frappe/email/doctype/email_account/email_account.py b/frappe/email/doctype/email_account/email_account.py index 36b662bb39..86d1892e92 100755 --- a/frappe/email/doctype/email_account/email_account.py +++ b/frappe/email/doctype/email_account/email_account.py @@ -12,7 +12,7 @@ import functools import email.utils -from frappe import _, are_emails_muted +from frappe import _, are_emails_muted, safe_encode from frappe.model.document import Document from frappe.utils import (validate_email_address, cint, cstr, get_datetime, DATE_FORMAT, strip, comma_or, sanitize_html, add_days, parse_addr) @@ -882,7 +882,6 @@ class EmailAccount(Document): def append_email_to_sent_folder(self, message): - email_server = None try: email_server = self.get_incoming_server(in_receive=True) @@ -896,7 +895,8 @@ class EmailAccount(Document): if email_server.imap: try: - email_server.imap.append("Sent", "\\Seen", imaplib.Time2Internaldate(time.time()), message.encode()) + message = safe_encode(message) + email_server.imap.append("Sent", "\\Seen", imaplib.Time2Internaldate(time.time()), message) except Exception: frappe.log_error() From eae6ab3cf965963b39a4a830a7aed3eda66a361b Mon Sep 17 00:00:00 2001 From: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com> Date: Mon, 14 Jun 2021 10:05:14 +0530 Subject: [PATCH 6/6] style: Add missing semicolon --- frappe/public/js/frappe/form/controls/text_editor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/form/controls/text_editor.js b/frappe/public/js/frappe/form/controls/text_editor.js index 1c7077eb64..99e87c5f21 100644 --- a/frappe/public/js/frappe/form/controls/text_editor.js +++ b/frappe/public/js/frappe/form/controls/text_editor.js @@ -4,7 +4,7 @@ import MagicUrl from 'quill-magic-url'; Quill.register('modules/imageResize', ImageResize); -Quill.register('modules/magicUrl', MagicUrl) +Quill.register('modules/magicUrl', MagicUrl); const CodeBlockContainer = Quill.import('formats/code-block-container'); CodeBlockContainer.tagName = 'PRE'; Quill.register(CodeBlockContainer, true);