From 880a9401df1fc0a8169a86253806f0195a804aad Mon Sep 17 00:00:00 2001 From: Rucha Mahabal Date: Mon, 10 Feb 2020 22:14:51 +0530 Subject: [PATCH 1/7] fix: defaults not set in doc created via Onboarding Slide --- .../doctype/onboarding_slide/onboarding_slide.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/frappe/desk/doctype/onboarding_slide/onboarding_slide.py b/frappe/desk/doctype/onboarding_slide/onboarding_slide.py index 8c75d10b9a..e63c5d7628 100644 --- a/frappe/desk/doctype/onboarding_slide/onboarding_slide.py +++ b/frappe/desk/doctype/onboarding_slide/onboarding_slide.py @@ -101,10 +101,15 @@ def is_continue_slide_required(first_slide): def create_onboarding_docs(values, doctype=None, app=None, slide_type=None): data = json.loads(values) doc = frappe.new_doc(doctype) - if hasattr(doc, 'create_onboarding_docs'): - doc.create_onboarding_docs(data) - else: - create_generic_onboarding_doc(data, doctype, slide_type) + try: + if hasattr(doc, 'create_onboarding_docs'): + doc.flags.ignore_validate = True + doc.flags.ignore_mandatory = True + doc.create_onboarding_docs(data) + else: + create_generic_onboarding_doc(data, doctype, slide_type) + except Exception: + pass def create_generic_onboarding_doc(data, doctype, slide_type): if slide_type == 'Settings': @@ -117,8 +122,8 @@ def create_generic_onboarding_doc(data, doctype, slide_type): doc = frappe.new_doc(doctype) for entry in data: doc.set(entry, data.get(entry)) + doc.flags.ignore_validate = True doc.flags.ignore_mandatory = True - doc.flags.ignore_links = True doc.insert() @frappe.whitelist() From 824bf8110e551ef251de9c3567633998e6630335 Mon Sep 17 00:00:00 2001 From: Rucha Mahabal Date: Mon, 17 Feb 2020 13:27:23 +0530 Subject: [PATCH 2/7] fix: next button for onboarding slide not enabled for link field --- frappe/public/js/frappe/ui/slides.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/ui/slides.js b/frappe/public/js/frappe/ui/slides.js index 19a6cf9263..a104ce7f84 100644 --- a/frappe/public/js/frappe/ui/slides.js +++ b/frappe/public/js/frappe/ui/slides.js @@ -149,9 +149,14 @@ frappe.ui.Slide = class Slide { bind_fields_to_action_btn() { var me = this; this.reqd_fields.map((field) => { - field.$wrapper.on('change input', () => { + field.$wrapper.on('change input click', () => { me.reset_action_button_state(); }); + field.$wrapper.on('keydown', 'input', e => { + if (e.key == 'Enter') { + me.reset_action_button_state(); + } + }) }); } From cf8863ce3e11bd21f4469e7b1c5ef41a0db56011 Mon Sep 17 00:00:00 2001 From: Rucha Mahabal Date: Mon, 17 Feb 2020 15:47:42 +0530 Subject: [PATCH 3/7] feat: add a Skip All link to Onboarding Slide --- frappe/public/js/frappe/ui/onboarding_dialog.js | 13 ++++++++++++- frappe/public/js/frappe/ui/slides.js | 6 +++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/frappe/public/js/frappe/ui/onboarding_dialog.js b/frappe/public/js/frappe/ui/onboarding_dialog.js index 962cf988e8..dd6868da45 100644 --- a/frappe/public/js/frappe/ui/onboarding_dialog.js +++ b/frappe/public/js/frappe/ui/onboarding_dialog.js @@ -14,12 +14,20 @@ frappe.setup.OnboardingSlide = class OnboardingSlide extends frappe.ui.Slide { this.$next_btn = this.slides_footer.find('.next-btn'); this.$complete_btn = this.slides_footer.find('.complete-btn'); this.$action_button = this.slides_footer.find('.next-btn'); + if (this.help_links) { this.$help_links = $(`
`).appendTo(this.$body); this.setup_help_links(); } + + // the onboarding dialog will be closed + // and shown again on refresh until all slides are completed. + this.$skip_btn = this.slides_footer.find('.skip-btn').on('click', () => { + $('.onboarding-dialog').modal('toggle'); + this.reset_is_first_startup(); + }); } setup_form() { @@ -143,7 +151,10 @@ frappe.setup.OnboardingDialog = class OnboardingDialog { before_load: ($footer) => { $footer.find('.prev-btn').addClass('hide'); $footer.find('.next-btn').removeClass('btn-default').addClass('btn-primary action'); - $footer.find('.text-right').prepend( + $footer.find('.prev-div').prepend( + $(` + ${__("Skip All")}`)); + $footer.find('.next-div').prepend( $(` ${__("Complete")}`)); } diff --git a/frappe/public/js/frappe/ui/slides.js b/frappe/public/js/frappe/ui/slides.js index a104ce7f84..cb454548b5 100644 --- a/frappe/public/js/frappe/ui/slides.js +++ b/frappe/public/js/frappe/ui/slides.js @@ -77,7 +77,7 @@ frappe.ui.Slide = class Slide { // Form methods get_atomic_fields() { var fields = JSON.parse(JSON.stringify(this.fields)); - if(this.add_more) { + if (this.add_more) { this.count = 1; fields = fields.map((field, i) => { if (field.fieldname) { @@ -337,10 +337,10 @@ frappe.ui.Slides = class Slides { make_prev_next_buttons() { $(`
-
+ - `).appendTo(this.$footer); From 67fae4f20895a2e9daaf588da94a0e759e8ef6d5 Mon Sep 17 00:00:00 2001 From: Rucha Mahabal Date: Mon, 17 Feb 2020 15:52:32 +0530 Subject: [PATCH 4/7] fix: remove Link Indicator from Onboarding Slide fields --- frappe/public/js/frappe/ui/onboarding_dialog.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/frappe/public/js/frappe/ui/onboarding_dialog.js b/frappe/public/js/frappe/ui/onboarding_dialog.js index dd6868da45..e7898a47d1 100644 --- a/frappe/public/js/frappe/ui/onboarding_dialog.js +++ b/frappe/public/js/frappe/ui/onboarding_dialog.js @@ -22,8 +22,6 @@ frappe.setup.OnboardingSlide = class OnboardingSlide extends frappe.ui.Slide { this.setup_help_links(); } - // the onboarding dialog will be closed - // and shown again on refresh until all slides are completed. this.$skip_btn = this.slides_footer.find('.skip-btn').on('click', () => { $('.onboarding-dialog').modal('toggle'); this.reset_is_first_startup(); @@ -33,6 +31,14 @@ frappe.setup.OnboardingSlide = class OnboardingSlide extends frappe.ui.Slide { setup_form() { super.setup_form(); const fields = this.get_atomic_fields(); + + // remove link indicator + fields.map((field, i) => { + if (field.fieldtype == 'Link') { + $('.link-btn').remove(); + } + }); + if (fields.length == 1) { this.$form_wrapper.addClass("text-center"); } else { From 7265d9c342cad0d19a79df93e05b1f22bc883bb8 Mon Sep 17 00:00:00 2001 From: Rucha Mahabal Date: Tue, 18 Feb 2020 12:24:57 +0530 Subject: [PATCH 5/7] fix: codacy --- frappe/public/js/frappe/ui/onboarding_dialog.js | 2 +- frappe/public/js/frappe/ui/slides.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/public/js/frappe/ui/onboarding_dialog.js b/frappe/public/js/frappe/ui/onboarding_dialog.js index e7898a47d1..023e7081e6 100644 --- a/frappe/public/js/frappe/ui/onboarding_dialog.js +++ b/frappe/public/js/frappe/ui/onboarding_dialog.js @@ -33,7 +33,7 @@ frappe.setup.OnboardingSlide = class OnboardingSlide extends frappe.ui.Slide { const fields = this.get_atomic_fields(); // remove link indicator - fields.map((field, i) => { + fields.map((field) => { if (field.fieldtype == 'Link') { $('.link-btn').remove(); } diff --git a/frappe/public/js/frappe/ui/slides.js b/frappe/public/js/frappe/ui/slides.js index cb454548b5..2f5da13207 100644 --- a/frappe/public/js/frappe/ui/slides.js +++ b/frappe/public/js/frappe/ui/slides.js @@ -156,7 +156,7 @@ frappe.ui.Slide = class Slide { if (e.key == 'Enter') { me.reset_action_button_state(); } - }) + }); }); } From 0bf2f5f97229c7a73b49a67aaea3b30a89ad952d Mon Sep 17 00:00:00 2001 From: Rucha Mahabal Date: Sun, 23 Feb 2020 21:28:13 +0530 Subject: [PATCH 6/7] fix: styling and show skip button in first slide only --- frappe/public/js/frappe/ui/onboarding_dialog.js | 14 +++++++++----- frappe/public/less/desk.less | 9 ++++++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/frappe/public/js/frappe/ui/onboarding_dialog.js b/frappe/public/js/frappe/ui/onboarding_dialog.js index 023e7081e6..f539029744 100644 --- a/frappe/public/js/frappe/ui/onboarding_dialog.js +++ b/frappe/public/js/frappe/ui/onboarding_dialog.js @@ -24,7 +24,6 @@ frappe.setup.OnboardingSlide = class OnboardingSlide extends frappe.ui.Slide { this.$skip_btn = this.slides_footer.find('.skip-btn').on('click', () => { $('.onboarding-dialog').modal('toggle'); - this.reset_is_first_startup(); }); } @@ -47,8 +46,13 @@ frappe.setup.OnboardingSlide = class OnboardingSlide extends frappe.ui.Slide { } before_show() { - (this.id === 0) ? - this.$next_btn.text(__('Let\'s Start')) : this.$next_btn.text(__('Next')); + if (this.id === 0) { + this.$next_btn.text(__('Let\'s Go')) + this.$skip_btn.removeClass('hide'); + } else { + this.$next_btn.text(__('Next')); + this.$skip_btn.addClass('hide'); + } //last slide if (this.is_last_slide()) { this.$complete_btn.removeClass('hide').addClass('action primary'); @@ -158,8 +162,8 @@ frappe.setup.OnboardingDialog = class OnboardingDialog { $footer.find('.prev-btn').addClass('hide'); $footer.find('.next-btn').removeClass('btn-default').addClass('btn-primary action'); $footer.find('.prev-div').prepend( - $(` - ${__("Skip All")}`)); + $(` + ${__("Do It Later")}`)); $footer.find('.next-div').prepend( $(` ${__("Complete")}`)); diff --git a/frappe/public/less/desk.less b/frappe/public/less/desk.less index 555216e7ee..6736fcc3c4 100644 --- a/frappe/public/less/desk.less +++ b/frappe/public/less/desk.less @@ -966,11 +966,15 @@ input[type="checkbox"] { .onboarding-dialog { .slide-body { - width: 65%; margin-right: auto; margin-left: auto; } + .slides-wrapper { + padding-left: 10px; + padding-right: 10px; + } + .modal-content { border: 1px solid #d1d8dd; box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.1); @@ -1009,6 +1013,9 @@ input[type="checkbox"] { margin-top: 15px; } + .skip-btn { + padding: 5px 0px 5px 0px; + } } /* broken image styling */ From afd1fa898f32abd93140f0684c31d63604b40b35 Mon Sep 17 00:00:00 2001 From: Rucha Mahabal Date: Wed, 26 Feb 2020 12:56:12 +0530 Subject: [PATCH 7/7] fix: codacy --- frappe/public/js/frappe/ui/onboarding_dialog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/ui/onboarding_dialog.js b/frappe/public/js/frappe/ui/onboarding_dialog.js index f539029744..3879768bfa 100644 --- a/frappe/public/js/frappe/ui/onboarding_dialog.js +++ b/frappe/public/js/frappe/ui/onboarding_dialog.js @@ -47,7 +47,7 @@ frappe.setup.OnboardingSlide = class OnboardingSlide extends frappe.ui.Slide { before_show() { if (this.id === 0) { - this.$next_btn.text(__('Let\'s Go')) + this.$next_btn.text(__('Let\'s Go')); this.$skip_btn.removeClass('hide'); } else { this.$next_btn.text(__('Next'));