diff --git a/frappe/config/desktop.py b/frappe/config/desktop.py index 59aa7ba26c..1d535e08ab 100644 --- a/frappe/config/desktop.py +++ b/frappe/config/desktop.py @@ -3,6 +3,16 @@ from frappe import _ def get_data(): return [ + { + "module_name": 'Communication', + "label": _('Email Inbox'), + "_label": _('Email Inbox'), + "_id": 'Email Inbox', + "_doctype": 'Communication', + "icon": 'fa fa-envelope-o', + "color": '#589494', + "link": 'List/Communication/Inbox' + }, { "module_name": "Desk", "label": _("Tools"), diff --git a/frappe/core/doctype/user/user.js b/frappe/core/doctype/user/user.js index c1325cd66c..b2cea1876b 100644 --- a/frappe/core/doctype/user/user.js +++ b/frappe/core/doctype/user/user.js @@ -84,7 +84,9 @@ frappe.ui.form.on('User', { } } if (!found){ - frm.add_custom_button("Create User Email",frm.events.create_user_email) + frm.add_custom_button("Create User Email", function() { + frm.events.create_user_email(frm) + }) } } @@ -113,25 +115,29 @@ frappe.ui.form.on('User', { frm.toggle_enable('email', doc.__islocal); } }, + create_user_email:function(frm) { frappe.call({ method: 'frappe.core.doctype.user.user.has_email_account', - args: {email:cur_frm.doc.email}, + args: { + email: frm.doc.email + }, callback: function(r) { - if (r["message"]== undefined){ + if (r.message == undefined) { frappe.route_options = { - "email_id": cur_frm.doc.email, - "awaiting_password":1, - "enable_incoming":1 + "email_id": frm.doc.email, + "awaiting_password": 1, + "enable_incoming": 1 }; frappe.model.with_doctype("Email Account", function (doc) { var doc = frappe.model.get_new_doc("Email Account"); - frappe.route_flags.create_user_account=cur_frm.doc.name; - frappe.set_route("Form", "Email Account", doc.name); + frappe.route_flags.linked_user = frm.doc.name; + frappe.route_flags.delete_user_from_locals = true; + frappe.set_route("Form", "Email Account", doc.name); }) - }else{ - frappe.route_flags.create_user_account=cur_frm.doc.name; - frappe.set_route("Form", "Email Account", r["message"][0]["name"]); + } else { + frappe.route_flags.create_user_account = frm.doc.name; + frappe.set_route("Form", "Email Account", r.message[0]["name"]); } } }) diff --git a/frappe/core/page/desktop/desktop.js b/frappe/core/page/desktop/desktop.js index 1fa30bb8ed..acf098db5b 100644 --- a/frappe/core/page/desktop/desktop.js +++ b/frappe/core/page/desktop/desktop.js @@ -45,21 +45,6 @@ $.extend(frappe.desktop, { explore_icon.app_icon = frappe.ui.app_icon.get_html(explore_icon); all_icons.push(explore_icon); - if(frappe.boot.email_accounts.length && frappe.model.can_read("Communication")) { - var inbox_icon = { - module_name: 'Communication', - label: 'Email Inbox', - _label: __('Email Inbox'), - _id: 'Email Inbox', - _doctype: 'Communication', - icon: 'fa fa-envelope-o', - color: '#589494', - link: 'List/Communication/Inbox' - } - inbox_icon.app_icon = frappe.ui.app_icon.get_html(inbox_icon) - all_icons.push(inbox_icon); - } - frappe.desktop.wrapper.html(frappe.render_template(template, { // all visible icons desktop_items: all_icons, diff --git a/frappe/email/doctype/email_account/email_account.js b/frappe/email/doctype/email_account/email_account.js index a9dd823780..d44de5a8f0 100644 --- a/frappe/email/doctype/email_account/email_account.js +++ b/frappe/email/doctype/email_account/email_account.js @@ -109,6 +109,11 @@ frappe.ui.form.on("Email Account", { frm.events.enable_incoming(frm); frm.events.notify_if_unreplied(frm); frm.events.show_gmail_message_for_less_secure_apps(frm); + + if(frappe.route_flags.delete_user_from_locals && frappe.route_flags.linked_user) { + delete frappe.route_flags.delete_user_from_locals + delete locals['User'][frappe.route_flags.linked_user] + } }, show_gmail_message_for_less_secure_apps: function(frm) { @@ -125,8 +130,9 @@ frappe.ui.form.on("Email Account", { }, update_domain: function(frm){ - if (!frm.doc.email_id && !frm.doc.service) + if (!frm.doc.email_id && !frm.doc.service){ return + } frappe.call({ method: 'get_domain', @@ -155,11 +161,13 @@ frappe.ui.form.on("Email Account", { }, set_domain_fields: function(frm, args) { - if(!args) + if(!args){ args = frappe.route_flags.set_domain_values? frappe.route_options: {} + } - for(field in args) + for(field in args) { frm.set_value(field, args[field]); + } delete frappe.route_flags.set_domain_values frappe.route_options = {} diff --git a/frappe/public/build.json b/frappe/public/build.json index de78968af5..25e6a8ddeb 100755 --- a/frappe/public/build.json +++ b/frappe/public/build.json @@ -255,7 +255,6 @@ "public/js/frappe/views/image/photoswipe_dom.html", "public/js/frappe/views/inbox/inbox_no_result.html", - "public/js/frappe/views/inbox/select_email_inbox.html", "public/js/frappe/views/inbox/inbox_view_item_row.html", "public/js/frappe/views/inbox/inbox_view_item_main_head.html", diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index 98ce34af50..bbb8df50e1 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -239,8 +239,9 @@ frappe.views.ListView = frappe.ui.BaseList.extend({ route.push(us['Kanban'].last_kanban_board); } - if (us.last_view === 'Inbox') + if (us.last_view === 'Inbox') { route.push(us['Inbox'].last_email_account) + } } else { route.push('List'); } diff --git a/frappe/public/js/frappe/views/inbox/inbox_no_result.html b/frappe/public/js/frappe/views/inbox/inbox_no_result.html index 688c9868e5..af6566c379 100644 --- a/frappe/public/js/frappe/views/inbox/inbox_no_result.html +++ b/frappe/public/js/frappe/views/inbox/inbox_no_result.html @@ -1,12 +1,14 @@ -
- {% if(!frappe.model.can_create(doctype) && doctype == "Email Account") { %} -

Email Account is not assigned, Please contact System Manager

- {% } else { %} -

{{ __("No {} found", [doctype]) }}

-

- -

- {% } %} +
+
+ {% if(!frappe.model.can_create(doctype) && doctype == "Email Account") { %} +

{{ __("No Email Accounts Assigned") }}

+ {% } else { %} +

{{ msg }}

+

+ +

+ {% } %} +
\ No newline at end of file diff --git a/frappe/public/js/frappe/views/inbox/inbox_view.js b/frappe/public/js/frappe/views/inbox/inbox_view.js index 98588e67f9..38938eb439 100644 --- a/frappe/public/js/frappe/views/inbox/inbox_view.js +++ b/frappe/public/js/frappe/views/inbox/inbox_view.js @@ -24,15 +24,12 @@ frappe.views.InboxView = frappe.views.ListRenderer.extend({ if(email_account) html = this.emails.map(this.render_email_row.bind(this)).join(""); else - html = this.get_inbox_selector_html() + html = this.make_no_result() this.container = $('
') .addClass('inbox-container') .appendTo(this.wrapper); this.container.append(html); - - if(!this.current_email_account) - this.bind_email_inbox_selector() }, render_email_row: function(email) { if(!email.css_seen && email.seen) @@ -112,9 +109,11 @@ frappe.views.InboxView = frappe.views.ListRenderer.extend({ }, get_current_email_account: function() { var route = frappe.get_route(); - if(!route[3] || !frappe.boot.email_accounts.find(b => b.email_account === route[3])) { + if(!route[3] && frappe.boot.email_accounts.length) { + frappe.set_route("List", "Communication", "Inbox", frappe.boot.email_accounts[0].email_account); + } else if(route[3] && !frappe.boot.email_accounts.find(b => b.email_account === route[3])) { // frappe.throw(__(`Email Account ${route[3] || ''} not found`)); - return ""; + return '' } return route[3]; }, @@ -128,51 +127,28 @@ frappe.views.InboxView = frappe.views.ListRenderer.extend({ this.no_result_doctype = "Email Account" args = { doctype: "Email Account", - label: "New Email Account", + msg: __("No Email Account"), + label: __("New Email Account"), } } else { // no sent mail this.no_result_doctype = "Communication"; args = { doctype: "Communication", - label: "Compose Email" + msg: __("No Emails"), + label: __("Compose Email") } } var no_result_message = frappe.render_template("inbox_no_result", args) return no_result_message; }, - - get_inbox_selector_html: function() { - email_account_map = {} - $.each(frappe.boot.email_accounts, function(idx, account){ - email_account_map[account.email_id] = account.email_account - }); - html = frappe.render_template("select_email_inbox", { - email_accounts: email_account_map, - is_inbox_configured: Object.keys(email_account_map).length - }) - - if(!Object.keys(email_account_map).length) - this.no_result_doctype = "Email Account" - - return html - }, - - bind_email_inbox_selector: function() { - // bind email_account on_change event - var me = this; - this.container.find('select[data-fieldname="email_inbox"]').on("change", function(event) { - inbox = $(event.target).val(); - frappe.set_route("List", "Communication", "Inbox", inbox) - }) - }, - make_new_doc: function() { if (this.no_result_doctype == "Communication") { new frappe.views.CommunicationComposer({ doc: {} }) } else { + frappe.route_options = { 'email_id': user_email } frappe.new_doc(this.no_result_doctype) } } diff --git a/frappe/public/js/frappe/views/inbox/select_email_inbox.html b/frappe/public/js/frappe/views/inbox/select_email_inbox.html deleted file mode 100644 index 990ed9f62f..0000000000 --- a/frappe/public/js/frappe/views/inbox/select_email_inbox.html +++ /dev/null @@ -1,27 +0,0 @@ -
- {% if(is_inbox_configured) { %} -
-
-
- -
-
-
- -
- -
-
-
- {% } else { %} - {%= frappe.render_template("inbox_no_result", { - doctype: "Email Account", - label: "Email Account", - }) %} - {% } %} -
\ No newline at end of file