From 6b5cd30b720a851934c2e6763325d771c0f95b66 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Wed, 22 Apr 2020 08:52:28 +0530 Subject: [PATCH 01/17] check preview render --- frappe/website/doctype/blog_post/blog_post.py | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py index 148ba15be7..82d5d54bbd 100644 --- a/frappe/website/doctype/blog_post/blog_post.py +++ b/frappe/website/doctype/blog_post/blog_post.py @@ -37,6 +37,8 @@ class BlogPost(WebsiteGenerator): if self.published and not self.published_on: self.published_on = today() + + # self.goog_preview = render_seo_section(doc) # update posts frappe.db.sql("""UPDATE `tabBlogger` SET `posts`=(SELECT COUNT(*) FROM `tabBlog Post` @@ -65,7 +67,11 @@ class BlogPost(WebsiteGenerator): context.content = get_html_content_based_on_type(self, 'content', self.content_type) - context.description = self.blog_intro or strip_html_tags(context.content[:140]) + + if self.meta_description: + context.description = self.meta_description + else: + context.description = self.blog_intro or strip_html_tags(context.content[:140]) context.metatags = { "name": self.title, @@ -73,9 +79,12 @@ class BlogPost(WebsiteGenerator): } image = find_first_image(context.content) - if image: + if self.meta_image: + context.metatags["image"] = self.meta_image + else: context.metatags["image"] = image + self.load_comments(context) context.category = frappe.db.get_value("Blog Category", @@ -94,6 +103,18 @@ class BlogPost(WebsiteGenerator): context.comment_text = _('1 comment') else: context.comment_text = _('{0} comments').format(len(context.comment_list)) + + #render google SERP preview + + '''def render_seo_section(doc): + return frappe.render_template(""" +

doc.title

+

{{ url }}

+ {% if doc.meta_description %} +

{{ doc.meta_description }}

+ {%- else %}

{{ doc.description }}

+ {% endif %} + """) ''' def get_list_context(context=None): From b8101cb0ee982dbf29765190d4afba8d904440d4 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Wed, 22 Apr 2020 08:58:49 +0530 Subject: [PATCH 02/17] fix: blog intro in blog post render --- frappe/website/doctype/blog_post/templates/blog_post.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/website/doctype/blog_post/templates/blog_post.html b/frappe/website/doctype/blog_post/templates/blog_post.html index 285223a2af..ab3c2afa1a 100644 --- a/frappe/website/doctype/blog_post/templates/blog_post.html +++ b/frappe/website/doctype/blog_post/templates/blog_post.html @@ -15,7 +15,7 @@

- {{ description }} + {{ blog_intro }}

{{ content }} From 7c5d6dd9595b69f52fb3713cfad032efdf3759e1 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Wed, 22 Apr 2020 16:30:50 +0530 Subject: [PATCH 03/17] Google SERP Preview: First Cut --- frappe/website/doctype/blog_post/blog_post.js | 20 +++++++++- .../website/doctype/blog_post/blog_post.json | 39 ++++++++++++++++++- frappe/website/doctype/blog_post/blog_post.py | 16 +------- 3 files changed, 58 insertions(+), 17 deletions(-) diff --git a/frappe/website/doctype/blog_post/blog_post.js b/frappe/website/doctype/blog_post/blog_post.js index e1b8341139..3668748b74 100644 --- a/frappe/website/doctype/blog_post/blog_post.js +++ b/frappe/website/doctype/blog_post/blog_post.js @@ -3,6 +3,24 @@ frappe.ui.form.on('Blog Post', { refresh: function(frm) { - + frm.call('get_url').then((r)=>{ + let google_preview = frm.get_field("google_preview") + google_preview.html(` + + + ${ r.message + '/' + frm.doc.route } +

+ ${ frm.doc.title }

+ ${ frm.doc.published_on } ${frm.doc.meta_description} + `) + }) } }); diff --git a/frappe/website/doctype/blog_post/blog_post.json b/frappe/website/doctype/blog_post/blog_post.json index 9944cbf4b2..d7f04e2442 100644 --- a/frappe/website/doctype/blog_post/blog_post.json +++ b/frappe/website/doctype/blog_post/blog_post.json @@ -21,7 +21,13 @@ "content", "content_md", "content_html", - "email_sent" + "email_sent", + "seo_section", + "meta_description", + "column_break_18", + "meta_image", + "section_break_20", + "google_preview" ], "fields": [ { @@ -123,6 +129,35 @@ "fieldname": "disable_comments", "fieldtype": "Check", "label": "Disable Comments" + }, + { + "fieldname": "seo_section", + "fieldtype": "Section Break", + "label": "SEO Section" + }, + { + "fieldname": "meta_description", + "fieldtype": "Small Text", + "label": "Meta Description" + }, + { + "fieldname": "column_break_18", + "fieldtype": "Column Break" + }, + { + "fieldname": "meta_image", + "fieldtype": "Attach Image", + "label": "Meta Image" + }, + { + "fieldname": "section_break_20", + "fieldtype": "Section Break" + }, + { + "fieldname": "google_preview", + "fieldtype": "HTML", + "label": "Google Snippet Preview", + "read_only": 1 } ], "has_web_view": 1, @@ -131,7 +166,7 @@ "is_published_field": "published", "links": [], "max_attachments": 5, - "modified": "2020-04-08 19:58:13.672332", + "modified": "2020-04-22 12:27:40.724507", "modified_by": "Administrator", "module": "Website", "name": "Blog Post", diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py index 82d5d54bbd..f71f1d3d5b 100644 --- a/frappe/website/doctype/blog_post/blog_post.py +++ b/frappe/website/doctype/blog_post/blog_post.py @@ -38,8 +38,6 @@ class BlogPost(WebsiteGenerator): if self.published and not self.published_on: self.published_on = today() - # self.goog_preview = render_seo_section(doc) - # update posts frappe.db.sql("""UPDATE `tabBlogger` SET `posts`=(SELECT COUNT(*) FROM `tabBlog Post` WHERE IFNULL(`blogger`,'')=`tabBlogger`.`name`) @@ -104,18 +102,8 @@ class BlogPost(WebsiteGenerator): else: context.comment_text = _('{0} comments').format(len(context.comment_list)) - #render google SERP preview - - '''def render_seo_section(doc): - return frappe.render_template(""" -

doc.title

-

{{ url }}

- {% if doc.meta_description %} -

{{ doc.meta_description }}

- {%- else %}

{{ doc.description }}

- {% endif %} - """) ''' - + def get_url(self): + return frappe.utils.get_url() def get_list_context(context=None): list_context = frappe._dict( From 2425217a4d7d8661918e3602900e17e5b51f4e75 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Wed, 22 Apr 2020 20:08:57 +0530 Subject: [PATCH 04/17] updated js function, cleaned preview --- frappe/website/doctype/blog_post/blog_post.js | 61 +++++++++++++------ .../website/doctype/blog_post/blog_post.json | 3 +- 2 files changed, 44 insertions(+), 20 deletions(-) diff --git a/frappe/website/doctype/blog_post/blog_post.js b/frappe/website/doctype/blog_post/blog_post.js index 3668748b74..60dd7ee7cb 100644 --- a/frappe/website/doctype/blog_post/blog_post.js +++ b/frappe/website/doctype/blog_post/blog_post.js @@ -3,24 +3,47 @@ frappe.ui.form.on('Blog Post', { refresh: function(frm) { - frm.call('get_url').then((r)=>{ - let google_preview = frm.get_field("google_preview") - google_preview.html(` - - - ${ r.message + '/' + frm.doc.route } -

- ${ frm.doc.title }

- ${ frm.doc.published_on } ${frm.doc.meta_description} - `) - }) + generate_google_search_preview(frm) + }, + title: function(frm) { + generate_google_search_preview(frm) + }, + meta_description:function(frm){ + generate_google_search_preview(frm) + }, + description:function(frm){ + generate_google_search_preview(frm) } }); +function generate_google_search_preview(frm){ + frm.call('get_url').then((r)=>{ + let seo_title = frm.doc.title + seo_title = seo_title.slice(0,60) + let seo_description = frm.doc.meta_description || frm.doc.description + seo_description = seo_description.slice(0,160) + let google_preview = frm.get_field("google_preview") + google_preview.html(` + +
+
+ ${ r.message + '/' + frm.doc.route } + + +

+ ${ frm.doc.published_on }-${seo_description} +

+
+
+ `) + }); +} diff --git a/frappe/website/doctype/blog_post/blog_post.json b/frappe/website/doctype/blog_post/blog_post.json index d7f04e2442..f4f66c95ea 100644 --- a/frappe/website/doctype/blog_post/blog_post.json +++ b/frappe/website/doctype/blog_post/blog_post.json @@ -154,6 +154,7 @@ "fieldtype": "Section Break" }, { + "description": "This is an example Google SERP Preview.", "fieldname": "google_preview", "fieldtype": "HTML", "label": "Google Snippet Preview", @@ -166,7 +167,7 @@ "is_published_field": "published", "links": [], "max_attachments": 5, - "modified": "2020-04-22 12:27:40.724507", + "modified": "2020-04-22 20:07:37.324345", "modified_by": "Administrator", "module": "Website", "name": "Blog Post", From 6e50d8e79255302322716ff911a14dcf63db01fb Mon Sep 17 00:00:00 2001 From: Himanshu Warekar Date: Fri, 24 Apr 2020 15:15:34 +0530 Subject: [PATCH 05/17] fix: add form control html --- frappe/website/doctype/blog_post/blog_post.js | 71 +++++++++++-------- 1 file changed, 40 insertions(+), 31 deletions(-) diff --git a/frappe/website/doctype/blog_post/blog_post.js b/frappe/website/doctype/blog_post/blog_post.js index 60dd7ee7cb..12e1d8e80e 100644 --- a/frappe/website/doctype/blog_post/blog_post.js +++ b/frappe/website/doctype/blog_post/blog_post.js @@ -3,47 +3,56 @@ frappe.ui.form.on('Blog Post', { refresh: function(frm) { - generate_google_search_preview(frm) + generate_google_search_preview(frm); }, title: function(frm) { - generate_google_search_preview(frm) + generate_google_search_preview(frm); }, - meta_description:function(frm){ - generate_google_search_preview(frm) + meta_description: function(frm) { + generate_google_search_preview(frm); }, - description:function(frm){ - generate_google_search_preview(frm) + title: function(frm) { + generate_google_search_preview(frm); } }); function generate_google_search_preview(frm){ frm.call('get_url').then((r)=>{ - let seo_title = frm.doc.title - seo_title = seo_title.slice(0,60) - let seo_description = frm.doc.meta_description || frm.doc.description - seo_description = seo_description.slice(0,160) - let google_preview = frm.get_field("google_preview") + let google_preview = frm.get_field("google_preview"); + let seo_title = (frm.doc.title || "").slice(0, 60); + let seo_description = (frm.doc.meta_description || frm.doc.blog_intro || "").slice(0, 160); + google_preview.html(` - -
-
- ${ r.message + '/' + frm.doc.route } - -
-

- ${ seo_title }

+ + +
+
+
+ +
+
+
+
+ + ${ r.message + '/' + frm.doc.route } + +

+ + ${ seo_title } + +

+

+ ${ frm.doc.published_on } - ${ seo_description } +

+
+
+ +
-

- ${ frm.doc.published_on }-${seo_description} -

-
`) - }); + }); } From 2f6a2966b2f6433ce4925249b7058da499fb8d5f Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Fri, 24 Apr 2020 16:20:24 +0530 Subject: [PATCH 06/17] fix refresh code, add description --- frappe/website/doctype/blog_post/blog_post.js | 6 +++--- frappe/website/doctype/blog_post/blog_post.py | 15 +++++---------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/frappe/website/doctype/blog_post/blog_post.js b/frappe/website/doctype/blog_post/blog_post.js index 12e1d8e80e..955ffcd113 100644 --- a/frappe/website/doctype/blog_post/blog_post.js +++ b/frappe/website/doctype/blog_post/blog_post.js @@ -11,14 +11,14 @@ frappe.ui.form.on('Blog Post', { meta_description: function(frm) { generate_google_search_preview(frm); }, - title: function(frm) { + blog_intro: function(frm) { generate_google_search_preview(frm); } }); function generate_google_search_preview(frm){ frm.call('get_url').then((r)=>{ let google_preview = frm.get_field("google_preview"); - let seo_title = (frm.doc.title || "").slice(0, 60); + let seo_title = (frm.doc.title).slice(0, 60); let seo_description = (frm.doc.meta_description || frm.doc.blog_intro || "").slice(0, 160); google_preview.html(` @@ -48,7 +48,7 @@ function generate_google_search_preview(frm){

diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py index f71f1d3d5b..e9785855f4 100644 --- a/frappe/website/doctype/blog_post/blog_post.py +++ b/frappe/website/doctype/blog_post/blog_post.py @@ -66,22 +66,17 @@ class BlogPost(WebsiteGenerator): context.content = get_html_content_based_on_type(self, 'content', self.content_type) - if self.meta_description: - context.description = self.meta_description - else: - context.description = self.blog_intro or strip_html_tags(context.content[:140]) - + #if meta description is not present, then blog intro or first 140 characters of the blog will be set as description + context.description["description"] = self.meta_description or self.blog_intro or strip_html_tags(context.content[:140]) + context.metatags = { "name": self.title, "description": context.description, } + #if meta image is not present, then first image inside the blog will be set as so image = find_first_image(context.content) - if self.meta_image: - context.metatags["image"] = self.meta_image - else: - context.metatags["image"] = image - + context.metatags["image"] = self.meta_image or image self.load_comments(context) From 9a40383ebf0bbdffb17a40d8fbd4bc26b95bdf4b Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Fri, 24 Apr 2020 18:28:31 +0530 Subject: [PATCH 07/17] cleanups --- frappe/website/doctype/blog_post/blog_post.js | 3 ++- frappe/website/doctype/blog_post/blog_post.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/frappe/website/doctype/blog_post/blog_post.js b/frappe/website/doctype/blog_post/blog_post.js index 955ffcd113..5c5308a115 100644 --- a/frappe/website/doctype/blog_post/blog_post.js +++ b/frappe/website/doctype/blog_post/blog_post.js @@ -27,7 +27,7 @@ function generate_google_search_preview(frm){
- +
@@ -47,6 +47,7 @@ function generate_google_search_preview(frm){

+
diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py index e9785855f4..100b55a362 100644 --- a/frappe/website/doctype/blog_post/blog_post.py +++ b/frappe/website/doctype/blog_post/blog_post.py @@ -74,7 +74,7 @@ class BlogPost(WebsiteGenerator): "description": context.description, } - #if meta image is not present, then first image inside the blog will be set as so + #if meta image is not present, then first image inside the blog will be set as the meta image image = find_first_image(context.content) context.metatags["image"] = self.meta_image or image From a50f8318314f1a4810d483a5b55f2a0293227e67 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Fri, 24 Apr 2020 18:52:15 +0530 Subject: [PATCH 08/17] fix deadlock issue --- frappe/website/doctype/blog_post/blog_post.js | 2 +- frappe/website/doctype/blog_post/blog_post.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/website/doctype/blog_post/blog_post.js b/frappe/website/doctype/blog_post/blog_post.js index 5c5308a115..a5aacc06bd 100644 --- a/frappe/website/doctype/blog_post/blog_post.js +++ b/frappe/website/doctype/blog_post/blog_post.js @@ -16,7 +16,7 @@ frappe.ui.form.on('Blog Post', { } }); function generate_google_search_preview(frm){ - frm.call('get_url').then((r)=>{ + frm.call('get_site_url').then((r)=>{ let google_preview = frm.get_field("google_preview"); let seo_title = (frm.doc.title).slice(0, 60); let seo_description = (frm.doc.meta_description || frm.doc.blog_intro || "").slice(0, 160); diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py index 100b55a362..3e6ce3f1c8 100644 --- a/frappe/website/doctype/blog_post/blog_post.py +++ b/frappe/website/doctype/blog_post/blog_post.py @@ -97,7 +97,7 @@ class BlogPost(WebsiteGenerator): else: context.comment_text = _('{0} comments').format(len(context.comment_list)) - def get_url(self): + def get_site_url(self): return frappe.utils.get_url() def get_list_context(context=None): From dcdc0d0e90311169527392a8a4c5602aea73314e Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Fri, 24 Apr 2020 19:46:40 +0530 Subject: [PATCH 09/17] improve description --- frappe/website/doctype/blog_post/blog_post.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/website/doctype/blog_post/blog_post.js b/frappe/website/doctype/blog_post/blog_post.js index a5aacc06bd..c40bf7cbe0 100644 --- a/frappe/website/doctype/blog_post/blog_post.js +++ b/frappe/website/doctype/blog_post/blog_post.js @@ -49,7 +49,7 @@ function generate_google_search_preview(frm){

From 51dfe2971b3b9a47cc6cdbad2ea58f3d8e170dab Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 27 Apr 2020 15:36:00 +0530 Subject: [PATCH 10/17] feat: rename section and added description to preview section --- frappe/website/doctype/blog_post/blog_post.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/frappe/website/doctype/blog_post/blog_post.json b/frappe/website/doctype/blog_post/blog_post.json index f4f66c95ea..18e00e7905 100644 --- a/frappe/website/doctype/blog_post/blog_post.json +++ b/frappe/website/doctype/blog_post/blog_post.json @@ -133,7 +133,7 @@ { "fieldname": "seo_section", "fieldtype": "Section Break", - "label": "SEO Section" + "label": "SEO" }, { "fieldname": "meta_description", @@ -150,11 +150,12 @@ "label": "Meta Image" }, { + "description": "This is a test preview based on the meta description generated for this blog. The description can be of any length but Google will truncate it to 155 - 160 characters. You can also check the previews for Facebook and Twitter using their debugger tools. ", "fieldname": "section_break_20", - "fieldtype": "Section Break" + "fieldtype": "Section Break", + "label": "Google Search Preview" }, { - "description": "This is an example Google SERP Preview.", "fieldname": "google_preview", "fieldtype": "HTML", "label": "Google Snippet Preview", @@ -167,7 +168,7 @@ "is_published_field": "published", "links": [], "max_attachments": 5, - "modified": "2020-04-22 20:07:37.324345", + "modified": "2020-04-27 15:12:02.179731", "modified_by": "Administrator", "module": "Website", "name": "Blog Post", From fd15d2608cfbdce7f867ce85f8191ca8246ca293 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 27 Apr 2020 15:36:14 +0530 Subject: [PATCH 11/17] refactor: clean html for preview --- frappe/website/doctype/blog_post/blog_post.js | 56 +++++++------------ 1 file changed, 19 insertions(+), 37 deletions(-) diff --git a/frappe/website/doctype/blog_post/blog_post.js b/frappe/website/doctype/blog_post/blog_post.js index c40bf7cbe0..dea86b3b27 100644 --- a/frappe/website/doctype/blog_post/blog_post.js +++ b/frappe/website/doctype/blog_post/blog_post.js @@ -16,44 +16,26 @@ frappe.ui.form.on('Blog Post', { } }); function generate_google_search_preview(frm){ - frm.call('get_site_url').then((r)=>{ - let google_preview = frm.get_field("google_preview"); - let seo_title = (frm.doc.title).slice(0, 60); - let seo_description = (frm.doc.meta_description || frm.doc.blog_intro || "").slice(0, 160); + let google_preview = frm.get_field("google_preview"); + let seo_title = (frm.doc.title).slice(0, 60); + let seo_description = (frm.doc.meta_description || frm.doc.blog_intro || "").slice(0, 160); + let date = frm.doc.published_on ? new frappe.datetime.datetime(frm.doc.published_on).moment.format('ll') + ' - ' : ''; + let route_array = frm.doc.route.split('/'); + route_array.pop(); - google_preview.html(` - - -
-
-
- -
-
-
-
- - ${ r.message + '/' + frm.doc.route } - -

- - ${ seo_title } - -

-

- ${ frm.doc.published_on } - ${ seo_description } -

-
-
-
- -
+ google_preview.html(` + +
+ + ${frappe.boot.sitename} + › ${route_array.join(' › ')} + +
+ ${ seo_title }
+

+ ${ date } ${ seo_description } +

- `) - }); + `); } From b8512b689d317bdadcc56e396ce7542b162d9b4b Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 27 Apr 2020 15:40:22 +0530 Subject: [PATCH 12/17] feat: clean up unused api and white spaces --- frappe/website/doctype/blog_post/blog_post.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py index 3e6ce3f1c8..ad57c8a667 100644 --- a/frappe/website/doctype/blog_post/blog_post.py +++ b/frappe/website/doctype/blog_post/blog_post.py @@ -37,7 +37,7 @@ class BlogPost(WebsiteGenerator): if self.published and not self.published_on: self.published_on = today() - + # update posts frappe.db.sql("""UPDATE `tabBlogger` SET `posts`=(SELECT COUNT(*) FROM `tabBlog Post` WHERE IFNULL(`blogger`,'')=`tabBlogger`.`name`) @@ -65,10 +65,10 @@ class BlogPost(WebsiteGenerator): context.content = get_html_content_based_on_type(self, 'content', self.content_type) - + #if meta description is not present, then blog intro or first 140 characters of the blog will be set as description context.description["description"] = self.meta_description or self.blog_intro or strip_html_tags(context.content[:140]) - + context.metatags = { "name": self.title, "description": context.description, @@ -76,7 +76,7 @@ class BlogPost(WebsiteGenerator): #if meta image is not present, then first image inside the blog will be set as the meta image image = find_first_image(context.content) - context.metatags["image"] = self.meta_image or image + context.metatags["image"] = self.meta_image or image self.load_comments(context) @@ -96,9 +96,6 @@ class BlogPost(WebsiteGenerator): context.comment_text = _('1 comment') else: context.comment_text = _('{0} comments').format(len(context.comment_list)) - - def get_site_url(self): - return frappe.utils.get_url() def get_list_context(context=None): list_context = frappe._dict( From 80a3288e72140cfba67d339d4038d77fffbf9e10 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 27 Apr 2020 15:54:21 +0530 Subject: [PATCH 13/17] fix: assignment error --- frappe/website/doctype/blog_post/blog_post.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py index ad57c8a667..27ca122302 100644 --- a/frappe/website/doctype/blog_post/blog_post.py +++ b/frappe/website/doctype/blog_post/blog_post.py @@ -67,7 +67,7 @@ class BlogPost(WebsiteGenerator): context.content = get_html_content_based_on_type(self, 'content', self.content_type) #if meta description is not present, then blog intro or first 140 characters of the blog will be set as description - context.description["description"] = self.meta_description or self.blog_intro or strip_html_tags(context.content[:140]) + context.description = self.meta_description or self.blog_intro or strip_html_tags(context.content[:140]) context.metatags = { "name": self.title, From f62ce81866aa072e7b030820a949c43290d26e99 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 27 Apr 2020 15:54:59 +0530 Subject: [PATCH 14/17] refactor: explicitly set None --- frappe/website/doctype/blog_post/blog_post.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py index 27ca122302..e2e24afbab 100644 --- a/frappe/website/doctype/blog_post/blog_post.py +++ b/frappe/website/doctype/blog_post/blog_post.py @@ -76,7 +76,7 @@ class BlogPost(WebsiteGenerator): #if meta image is not present, then first image inside the blog will be set as the meta image image = find_first_image(context.content) - context.metatags["image"] = self.meta_image or image + context.metatags["image"] = self.meta_image or image or None self.load_comments(context) From 88d5ef1bd7183d965cdd47a57ebc4b50fbfb2ddc Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Tue, 28 Apr 2020 10:40:24 +0530 Subject: [PATCH 15/17] fix: linitng fixes --- frappe/website/doctype/blog_post/blog_post.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frappe/website/doctype/blog_post/blog_post.js b/frappe/website/doctype/blog_post/blog_post.js index dea86b3b27..adc03ca77e 100644 --- a/frappe/website/doctype/blog_post/blog_post.js +++ b/frappe/website/doctype/blog_post/blog_post.js @@ -15,7 +15,8 @@ frappe.ui.form.on('Blog Post', { generate_google_search_preview(frm); } }); -function generate_google_search_preview(frm){ + +function generate_google_search_preview(frm) { let google_preview = frm.get_field("google_preview"); let seo_title = (frm.doc.title).slice(0, 60); let seo_description = (frm.doc.meta_description || frm.doc.blog_intro || "").slice(0, 160); From 109d2e7f12c4b8786d21abd09beac2987e1027f9 Mon Sep 17 00:00:00 2001 From: Kenneth Sequeira Date: Wed, 29 Apr 2020 17:33:20 +0530 Subject: [PATCH 16/17] rename seo section to meta tags --- .../website/doctype/blog_post/blog_post.json | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/frappe/website/doctype/blog_post/blog_post.json b/frappe/website/doctype/blog_post/blog_post.json index 18e00e7905..04e349a2b0 100644 --- a/frappe/website/doctype/blog_post/blog_post.json +++ b/frappe/website/doctype/blog_post/blog_post.json @@ -22,7 +22,7 @@ "content_md", "content_html", "email_sent", - "seo_section", + "meta_tags", "meta_description", "column_break_18", "meta_image", @@ -130,11 +130,6 @@ "fieldtype": "Check", "label": "Disable Comments" }, - { - "fieldname": "seo_section", - "fieldtype": "Section Break", - "label": "SEO" - }, { "fieldname": "meta_description", "fieldtype": "Small Text", @@ -150,16 +145,20 @@ "label": "Meta Image" }, { - "description": "This is a test preview based on the meta description generated for this blog. The description can be of any length but Google will truncate it to 155 - 160 characters. You can also check the previews for Facebook and Twitter using their debugger tools. ", "fieldname": "section_break_20", - "fieldtype": "Section Break", - "label": "Google Search Preview" + "fieldtype": "Section Break" }, { + "description": "This is an example Google SERP Preview.", "fieldname": "google_preview", "fieldtype": "HTML", "label": "Google Snippet Preview", "read_only": 1 + }, + { + "fieldname": "meta_tags", + "fieldtype": "Section Break", + "label": "Meta Tags" } ], "has_web_view": 1, @@ -168,7 +167,7 @@ "is_published_field": "published", "links": [], "max_attachments": 5, - "modified": "2020-04-27 15:12:02.179731", + "modified": "2020-04-29 17:32:41.055883", "modified_by": "Administrator", "module": "Website", "name": "Blog Post", From dabdab5c9f5d98e2e7469bb51da637aa7fb05465 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Thu, 30 Apr 2020 16:24:41 +0530 Subject: [PATCH 17/17] fix: test_set_only_once_child_table_row_value test --- frappe/tests/test_permissions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/tests/test_permissions.py b/frappe/tests/test_permissions.py index 7e9416f68a..364469f168 100644 --- a/frappe/tests/test_permissions.py +++ b/frappe/tests/test_permissions.py @@ -201,7 +201,7 @@ class TestPermissions(unittest.TestCase): doc = frappe.get_doc("DocType", "Blog Post") # change one property from the child table - doc.fields[-1].fieldtype = 'HTML' + doc.fields[-1].fieldtype = 'Check' self.assertRaises(frappe.CannotChangeConstantError, doc.save) frappe.clear_cache(doctype='DocType')