Skip to content
Snippets Groups Projects

feat: Option to keep the blog and web pages to logged in users only [backport/v4]

Merged Bot Dokos requested to merge backport/v4-dev/1302 into v4-dev

Backport of !1302 (merged)

Conflicts detected for source commit: d139de6feacb0c02fed45953a4f20caf9bba4ba7
diff --cc frappe/commands/site.py
index cea02b4321,e049babfa9..0000000000
--- a/frappe/commands/site.py
+++ b/frappe/commands/site.py
@@@ -572,7 -572,7 +572,11 @@@ def describe_database_table(context, do
  
  
  def _extract_table_stats(doctype: str, columns: list[str]) -> dict:
++<<<<<<< HEAD
 +	from frappe.utils import cstr, get_table_name
++=======
+ 	from frappe.utils import cint, cstr, get_table_name
++>>>>>>> d139de6feacb0c02fed45953a4f20caf9bba4ba7
  
  	def sql_bool(val):
  		return cstr(val).lower() in ("yes", "1", "true")
@@@ -612,7 -612,13 +616,17 @@@
  		if idx["Seq_in_index"] == 1:
  			update_cardinality(idx["Column_name"], idx["Cardinality"])
  
++<<<<<<< HEAD
 +	total_rows = frappe.db.count(doctype)
++=======
+ 	total_rows = cint(
+ 		frappe.db.sql(
+ 			f"""select table_rows
+ 			   from  information_schema.tables
+ 			   where table_name = 'tab{doctype}'"""
+ 		)[0][0]
+ 	)
++>>>>>>> d139de6feacb0c02fed45953a4f20caf9bba4ba7
  
  	# fetch accurate cardinality for columns by query. WARN: This can take a lot of time.
  	for column in columns:
diff --cc frappe/public/js/frappe/form/grid_row.js
index 8b0a93c12d,bd0806284e..0000000000
--- a/frappe/public/js/frappe/form/grid_row.js
+++ b/frappe/public/js/frappe/form/grid_row.js
@@@ -1130,8 -1130,8 +1130,13 @@@ export default class GridRow 
  		let ignore_fieldtypes = ["Text", "Small Text", "Code", "Text Editor", "HTML Editor"];
  		if (field.$input) {
  			field.$input.on("keydown", function (e) {
++<<<<<<< HEAD
 +				var { TAB, UP: UP_ARROW, DOWN: DOWN_ARROW } = frappe.ui.keyCode;
 +				if (![TAB, UP_ARROW, DOWN_ARROW].includes(e.which)) {
++=======
+ 				var { ESCAPE, TAB, UP: UP_ARROW, DOWN: DOWN_ARROW } = frappe.ui.keyCode;
+ 				if (![TAB, UP_ARROW, DOWN_ARROW, ESCAPE].includes(e.which)) {
++>>>>>>> d139de6feacb0c02fed45953a4f20caf9bba4ba7
  					return;
  				}
  
diff --cc frappe/utils/data.py
index e3d892aa88,4df1a6cc51..0000000000
--- a/frappe/utils/data.py
+++ b/frappe/utils/data.py
@@@ -638,14 -638,14 +638,26 @@@ def get_quarter_ending
  
  	return date.strftime(DATE_FORMAT) if as_str else date
  
++<<<<<<< HEAD
++=======
  
  @typing.overload
  def get_year_ending(
  	dt: DateTimeLikeObject | None = None, as_str: Literal[False] = False
  ) -> datetime.date:
  	...
++>>>>>>> d139de6feacb0c02fed45953a4f20caf9bba4ba7
  
++@typing.overload
++def get_year_ending(
++	dt: DateTimeLikeObject | None = None, as_str: Literal[False] = False
++) -> datetime.date:
++	...
++
++<<<<<<< HEAD
  
++=======
++>>>>>>> d139de6feacb0c02fed45953a4f20caf9bba4ba7
  @typing.overload
  def get_year_ending(dt: DateTimeLikeObject | None = None, as_str: Literal[True] = False) -> str:
  	...
@@@ -662,12 -662,12 +674,21 @@@ def get_year_ending(date: DateTimeLikeO
  	year_ending = add_to_date(next_year_start, days=-1)
  	return year_ending.strftime(DATE_FORMAT) if as_str else year_ending
  
++<<<<<<< HEAD
 +
 +def get_time(
 +	time_str: str | datetime.datetime | datetime.time | datetime.timedelta,
 +) -> datetime.time:
 +	"""Return a `datetime.time` object for the given `time_str`.
 +
++=======
+ 
+ def get_time(
+ 	time_str: str | datetime.datetime | datetime.time | datetime.timedelta,
+ ) -> datetime.time:
+ 	"""Return a `datetime.time` object for the given `time_str`.
+ 
++>>>>>>> d139de6feacb0c02fed45953a4f20caf9bba4ba7
  	If the given argument is already a `datetime.time` object, it is returned as is."""
  
  	if isinstance(time_str, datetime.datetime):
diff --cc frappe/website/doctype/help_article/help_article.py
index 27fb93bcd9,b34442e82b..0000000000
--- a/frappe/website/doctype/help_article/help_article.py
+++ b/frappe/website/doctype/help_article/help_article.py
@@@ -106,12 -106,10 +106,19 @@@ def get_list_context(context=None)
  		no_breadcrumbs=False,
  		introduction=introduction,
  		list_template="templates/includes/list/list.html" if category else None,
++<<<<<<< HEAD
 +		row_template="website/doctype/help_article/templates/help_article_row.html" if category else "website/doctype/help_article/templates/help_article_category_row.html"
 +	)
 +
 +	if not category:
 +		list_context["get_list"] = get_category_list
 +
++=======
+ 		get_list=get_list if category else get_category_list,
+ 		row_template="website/doctype/help_article/templates/help_article_row.html" if category else "website/doctype/help_article/templates/help_article_category_row.html"
+ 	)
+ 
++>>>>>>> d139de6feacb0c02fed45953a4f20caf9bba4ba7
  	return list_context
  
  
diff --cc frappe/website/doctype/web_page/web_page.json
index 269f357aa2,3ce38cf9d7..0000000000
--- a/frappe/website/doctype/web_page/web_page.json
+++ b/frappe/website/doctype/web_page/web_page.json
@@@ -337,7 -352,7 +352,11 @@@
   "index_web_pages_for_search": 1,
   "is_published_field": "published",
   "links": [],
++<<<<<<< HEAD
 + "modified": "2023-12-08 15:52:37.525003",
++=======
+  "modified": "2024-01-05 18:09:26.079517",
++>>>>>>> d139de6feacb0c02fed45953a4f20caf9bba4ba7
   "modified_by": "Administrator",
   "module": "Website",
   "name": "Web Page",

Conflicts detected for source commit: f335416a859b5e2b310fff4480c4cbef5f4ebd63
diff --cc frappe/commands/site.py
index cea02b4321,e049babfa9..0000000000
--- a/frappe/commands/site.py
+++ b/frappe/commands/site.py
@@@ -572,7 -572,7 +572,11 @@@ def describe_database_table(context, do
  
  
  def _extract_table_stats(doctype: str, columns: list[str]) -> dict:
++<<<<<<< HEAD
 +	from frappe.utils import cstr, get_table_name
++=======
+ 	from frappe.utils import cint, cstr, get_table_name
++>>>>>>> f335416a859b5e2b310fff4480c4cbef5f4ebd63
  
  	def sql_bool(val):
  		return cstr(val).lower() in ("yes", "1", "true")
@@@ -612,7 -612,13 +616,17 @@@
  		if idx["Seq_in_index"] == 1:
  			update_cardinality(idx["Column_name"], idx["Cardinality"])
  
++<<<<<<< HEAD
 +	total_rows = frappe.db.count(doctype)
++=======
+ 	total_rows = cint(
+ 		frappe.db.sql(
+ 			f"""select table_rows
+ 			   from  information_schema.tables
+ 			   where table_name = 'tab{doctype}'"""
+ 		)[0][0]
+ 	)
++>>>>>>> f335416a859b5e2b310fff4480c4cbef5f4ebd63
  
  	# fetch accurate cardinality for columns by query. WARN: This can take a lot of time.
  	for column in columns:
diff --cc frappe/public/js/frappe/form/grid_row.js
index 8b0a93c12d,bd0806284e..0000000000
--- a/frappe/public/js/frappe/form/grid_row.js
+++ b/frappe/public/js/frappe/form/grid_row.js
@@@ -1130,8 -1130,8 +1130,13 @@@ export default class GridRow 
  		let ignore_fieldtypes = ["Text", "Small Text", "Code", "Text Editor", "HTML Editor"];
  		if (field.$input) {
  			field.$input.on("keydown", function (e) {
++<<<<<<< HEAD
 +				var { TAB, UP: UP_ARROW, DOWN: DOWN_ARROW } = frappe.ui.keyCode;
 +				if (![TAB, UP_ARROW, DOWN_ARROW].includes(e.which)) {
++=======
+ 				var { ESCAPE, TAB, UP: UP_ARROW, DOWN: DOWN_ARROW } = frappe.ui.keyCode;
+ 				if (![TAB, UP_ARROW, DOWN_ARROW, ESCAPE].includes(e.which)) {
++>>>>>>> f335416a859b5e2b310fff4480c4cbef5f4ebd63
  					return;
  				}
  
diff --cc frappe/utils/data.py
index e3d892aa88,4df1a6cc51..0000000000
--- a/frappe/utils/data.py
+++ b/frappe/utils/data.py
@@@ -638,14 -638,14 +638,26 @@@ def get_quarter_ending
  
  	return date.strftime(DATE_FORMAT) if as_str else date
  
++<<<<<<< HEAD
++=======
  
  @typing.overload
  def get_year_ending(
  	dt: DateTimeLikeObject | None = None, as_str: Literal[False] = False
  ) -> datetime.date:
  	...
++>>>>>>> f335416a859b5e2b310fff4480c4cbef5f4ebd63
  
++@typing.overload
++def get_year_ending(
++	dt: DateTimeLikeObject | None = None, as_str: Literal[False] = False
++) -> datetime.date:
++	...
++
++<<<<<<< HEAD
  
++=======
++>>>>>>> f335416a859b5e2b310fff4480c4cbef5f4ebd63
  @typing.overload
  def get_year_ending(dt: DateTimeLikeObject | None = None, as_str: Literal[True] = False) -> str:
  	...
@@@ -662,12 -662,12 +674,21 @@@ def get_year_ending(date: DateTimeLikeO
  	year_ending = add_to_date(next_year_start, days=-1)
  	return year_ending.strftime(DATE_FORMAT) if as_str else year_ending
  
++<<<<<<< HEAD
 +
 +def get_time(
 +	time_str: str | datetime.datetime | datetime.time | datetime.timedelta,
 +) -> datetime.time:
 +	"""Return a `datetime.time` object for the given `time_str`.
 +
++=======
+ 
+ def get_time(
+ 	time_str: str | datetime.datetime | datetime.time | datetime.timedelta,
+ ) -> datetime.time:
+ 	"""Return a `datetime.time` object for the given `time_str`.
+ 
++>>>>>>> f335416a859b5e2b310fff4480c4cbef5f4ebd63
  	If the given argument is already a `datetime.time` object, it is returned as is."""
  
  	if isinstance(time_str, datetime.datetime):
diff --cc frappe/website/doctype/blog_settings/blog_settings.json
index 5bc3d48c93,f9ef1139ab..0000000000
--- a/frappe/website/doctype/blog_settings/blog_settings.json
+++ b/frappe/website/doctype/blog_settings/blog_settings.json
@@@ -10,6 -10,7 +10,10 @@@
    "preview_image",
    "column_break",
    "login_required",
++<<<<<<< HEAD
++=======
+   "show_sidebar",
++>>>>>>> f335416a859b5e2b310fff4480c4cbef5f4ebd63
    "enable_social_sharing",
    "allow_guest_to_comment",
    "browse_by_category",
@@@ -134,13 -135,20 +138,27 @@@
     "fieldname": "login_required",
     "fieldtype": "Check",
     "label": "Login required"
++<<<<<<< HEAD
++=======
+   },
+   {
+    "default": "0",
+    "depends_on": "eval:doc.login_required",
+    "fieldname": "show_sidebar",
+    "fieldtype": "Check",
+    "label": "Show sidebar"
++>>>>>>> f335416a859b5e2b310fff4480c4cbef5f4ebd63
    }
   ],
   "icon": "fa fa-cog",
   "idx": 1,
   "issingle": 1,
   "links": [],
++<<<<<<< HEAD
 + "modified": "2024-01-05 18:00:49.183492",
++=======
+  "modified": "2024-01-05 18:18:06.936842",
++>>>>>>> f335416a859b5e2b310fff4480c4cbef5f4ebd63
   "modified_by": "Administrator",
   "module": "Website",
   "name": "Blog Settings",
diff --cc frappe/website/doctype/help_article/help_article.py
index 27fb93bcd9,b34442e82b..0000000000
--- a/frappe/website/doctype/help_article/help_article.py
+++ b/frappe/website/doctype/help_article/help_article.py
@@@ -106,12 -106,10 +106,19 @@@ def get_list_context(context=None)
  		no_breadcrumbs=False,
  		introduction=introduction,
  		list_template="templates/includes/list/list.html" if category else None,
++<<<<<<< HEAD
 +		row_template="website/doctype/help_article/templates/help_article_row.html" if category else "website/doctype/help_article/templates/help_article_category_row.html"
 +	)
 +
 +	if not category:
 +		list_context["get_list"] = get_category_list
 +
++=======
+ 		get_list=get_list if category else get_category_list,
+ 		row_template="website/doctype/help_article/templates/help_article_row.html" if category else "website/doctype/help_article/templates/help_article_category_row.html"
+ 	)
+ 
++>>>>>>> f335416a859b5e2b310fff4480c4cbef5f4ebd63
  	return list_context
  
  

Conflicts detected for source commit: b2c2f90cd33f88268af55019c057570ebb1d8943
diff --cc frappe/commands/site.py
index cea02b4321,e049babfa9..0000000000
--- a/frappe/commands/site.py
+++ b/frappe/commands/site.py
@@@ -572,7 -572,7 +572,11 @@@ def describe_database_table(context, do
  
  
  def _extract_table_stats(doctype: str, columns: list[str]) -> dict:
++<<<<<<< HEAD
 +	from frappe.utils import cstr, get_table_name
++=======
+ 	from frappe.utils import cint, cstr, get_table_name
++>>>>>>> b2c2f90cd33f88268af55019c057570ebb1d8943
  
  	def sql_bool(val):
  		return cstr(val).lower() in ("yes", "1", "true")
@@@ -612,7 -612,13 +616,17 @@@
  		if idx["Seq_in_index"] == 1:
  			update_cardinality(idx["Column_name"], idx["Cardinality"])
  
++<<<<<<< HEAD
 +	total_rows = frappe.db.count(doctype)
++=======
+ 	total_rows = cint(
+ 		frappe.db.sql(
+ 			f"""select table_rows
+ 			   from  information_schema.tables
+ 			   where table_name = 'tab{doctype}'"""
+ 		)[0][0]
+ 	)
++>>>>>>> b2c2f90cd33f88268af55019c057570ebb1d8943
  
  	# fetch accurate cardinality for columns by query. WARN: This can take a lot of time.
  	for column in columns:
diff --cc frappe/public/js/frappe/form/grid_row.js
index 8b0a93c12d,bd0806284e..0000000000
--- a/frappe/public/js/frappe/form/grid_row.js
+++ b/frappe/public/js/frappe/form/grid_row.js
@@@ -1130,8 -1130,8 +1130,13 @@@ export default class GridRow 
  		let ignore_fieldtypes = ["Text", "Small Text", "Code", "Text Editor", "HTML Editor"];
  		if (field.$input) {
  			field.$input.on("keydown", function (e) {
++<<<<<<< HEAD
 +				var { TAB, UP: UP_ARROW, DOWN: DOWN_ARROW } = frappe.ui.keyCode;
 +				if (![TAB, UP_ARROW, DOWN_ARROW].includes(e.which)) {
++=======
+ 				var { ESCAPE, TAB, UP: UP_ARROW, DOWN: DOWN_ARROW } = frappe.ui.keyCode;
+ 				if (![TAB, UP_ARROW, DOWN_ARROW, ESCAPE].includes(e.which)) {
++>>>>>>> b2c2f90cd33f88268af55019c057570ebb1d8943
  					return;
  				}
  
diff --cc frappe/utils/data.py
index e3d892aa88,4df1a6cc51..0000000000
--- a/frappe/utils/data.py
+++ b/frappe/utils/data.py
@@@ -638,14 -638,14 +638,26 @@@ def get_quarter_ending
  
  	return date.strftime(DATE_FORMAT) if as_str else date
  
++<<<<<<< HEAD
++=======
  
  @typing.overload
  def get_year_ending(
  	dt: DateTimeLikeObject | None = None, as_str: Literal[False] = False
  ) -> datetime.date:
  	...
++>>>>>>> b2c2f90cd33f88268af55019c057570ebb1d8943
  
++@typing.overload
++def get_year_ending(
++	dt: DateTimeLikeObject | None = None, as_str: Literal[False] = False
++) -> datetime.date:
++	...
++
++<<<<<<< HEAD
  
++=======
++>>>>>>> b2c2f90cd33f88268af55019c057570ebb1d8943
  @typing.overload
  def get_year_ending(dt: DateTimeLikeObject | None = None, as_str: Literal[True] = False) -> str:
  	...
@@@ -662,12 -662,12 +674,21 @@@ def get_year_ending(date: DateTimeLikeO
  	year_ending = add_to_date(next_year_start, days=-1)
  	return year_ending.strftime(DATE_FORMAT) if as_str else year_ending
  
++<<<<<<< HEAD
 +
 +def get_time(
 +	time_str: str | datetime.datetime | datetime.time | datetime.timedelta,
 +) -> datetime.time:
 +	"""Return a `datetime.time` object for the given `time_str`.
 +
++=======
+ 
+ def get_time(
+ 	time_str: str | datetime.datetime | datetime.time | datetime.timedelta,
+ ) -> datetime.time:
+ 	"""Return a `datetime.time` object for the given `time_str`.
+ 
++>>>>>>> b2c2f90cd33f88268af55019c057570ebb1d8943
  	If the given argument is already a `datetime.time` object, it is returned as is."""
  
  	if isinstance(time_str, datetime.datetime):
diff --cc frappe/website/doctype/blog_post/blog_post.py
index 9e4e25547f,0565ba1c5f..0000000000
--- a/frappe/website/doctype/blog_post/blog_post.py
+++ b/frappe/website/doctype/blog_post/blog_post.py
@@@ -163,6 -163,8 +163,11 @@@ class BlogPost(WebsiteGenerator)
  			{"label": context.category.title, "route": context.category.route},
  		]
  		context.guest_allowed = False if login_required else frappe.db.get_single_value("Blog Settings", "allow_guest_to_comment")
++<<<<<<< HEAD
++=======
+ 
+ 		context.show_sidebar = frappe.db.get_single_value("Blog Settings", "show_sidebar")
++>>>>>>> b2c2f90cd33f88268af55019c057570ebb1d8943
  
  	def fetch_cta(self):
  		if frappe.db.get_single_value("Blog Settings", "show_cta_in_blog", cache=True):
diff --cc frappe/website/doctype/help_article/help_article.py
index 27fb93bcd9,b34442e82b..0000000000
--- a/frappe/website/doctype/help_article/help_article.py
+++ b/frappe/website/doctype/help_article/help_article.py
@@@ -106,12 -106,10 +106,19 @@@ def get_list_context(context=None)
  		no_breadcrumbs=False,
  		introduction=introduction,
  		list_template="templates/includes/list/list.html" if category else None,
++<<<<<<< HEAD
 +		row_template="website/doctype/help_article/templates/help_article_row.html" if category else "website/doctype/help_article/templates/help_article_category_row.html"
 +	)
 +
 +	if not category:
 +		list_context["get_list"] = get_category_list
 +
++=======
+ 		get_list=get_list if category else get_category_list,
+ 		row_template="website/doctype/help_article/templates/help_article_row.html" if category else "website/doctype/help_article/templates/help_article_category_row.html"
+ 	)
+ 
++>>>>>>> b2c2f90cd33f88268af55019c057570ebb1d8943
  	return list_context
  
  

Conflicts detected for source commit: 5f5d46964b926ed9a5b702dfe485499a769123f4
diff --cc frappe/commands/site.py
index cea02b4321,e049babfa9..0000000000
--- a/frappe/commands/site.py
+++ b/frappe/commands/site.py
@@@ -572,7 -572,7 +572,11 @@@ def describe_database_table(context, do
  
  
  def _extract_table_stats(doctype: str, columns: list[str]) -> dict:
++<<<<<<< HEAD
 +	from frappe.utils import cstr, get_table_name
++=======
+ 	from frappe.utils import cint, cstr, get_table_name
++>>>>>>> 5f5d46964b926ed9a5b702dfe485499a769123f4
  
  	def sql_bool(val):
  		return cstr(val).lower() in ("yes", "1", "true")
@@@ -612,7 -612,13 +616,17 @@@
  		if idx["Seq_in_index"] == 1:
  			update_cardinality(idx["Column_name"], idx["Cardinality"])
  
++<<<<<<< HEAD
 +	total_rows = frappe.db.count(doctype)
++=======
+ 	total_rows = cint(
+ 		frappe.db.sql(
+ 			f"""select table_rows
+ 			   from  information_schema.tables
+ 			   where table_name = 'tab{doctype}'"""
+ 		)[0][0]
+ 	)
++>>>>>>> 5f5d46964b926ed9a5b702dfe485499a769123f4
  
  	# fetch accurate cardinality for columns by query. WARN: This can take a lot of time.
  	for column in columns:
diff --cc frappe/public/js/frappe/form/grid_row.js
index 8b0a93c12d,bd0806284e..0000000000
--- a/frappe/public/js/frappe/form/grid_row.js
+++ b/frappe/public/js/frappe/form/grid_row.js
@@@ -1130,8 -1130,8 +1130,13 @@@ export default class GridRow 
  		let ignore_fieldtypes = ["Text", "Small Text", "Code", "Text Editor", "HTML Editor"];
  		if (field.$input) {
  			field.$input.on("keydown", function (e) {
++<<<<<<< HEAD
 +				var { TAB, UP: UP_ARROW, DOWN: DOWN_ARROW } = frappe.ui.keyCode;
 +				if (![TAB, UP_ARROW, DOWN_ARROW].includes(e.which)) {
++=======
+ 				var { ESCAPE, TAB, UP: UP_ARROW, DOWN: DOWN_ARROW } = frappe.ui.keyCode;
+ 				if (![TAB, UP_ARROW, DOWN_ARROW, ESCAPE].includes(e.which)) {
++>>>>>>> 5f5d46964b926ed9a5b702dfe485499a769123f4
  					return;
  				}
  
diff --cc frappe/utils/data.py
index e3d892aa88,4df1a6cc51..0000000000
--- a/frappe/utils/data.py
+++ b/frappe/utils/data.py
@@@ -638,14 -638,14 +638,26 @@@ def get_quarter_ending
  
  	return date.strftime(DATE_FORMAT) if as_str else date
  
++<<<<<<< HEAD
++=======
  
  @typing.overload
  def get_year_ending(
  	dt: DateTimeLikeObject | None = None, as_str: Literal[False] = False
  ) -> datetime.date:
  	...
++>>>>>>> 5f5d46964b926ed9a5b702dfe485499a769123f4
  
++@typing.overload
++def get_year_ending(
++	dt: DateTimeLikeObject | None = None, as_str: Literal[False] = False
++) -> datetime.date:
++	...
++
++<<<<<<< HEAD
  
++=======
++>>>>>>> 5f5d46964b926ed9a5b702dfe485499a769123f4
  @typing.overload
  def get_year_ending(dt: DateTimeLikeObject | None = None, as_str: Literal[True] = False) -> str:
  	...
@@@ -662,12 -662,12 +674,21 @@@ def get_year_ending(date: DateTimeLikeO
  	year_ending = add_to_date(next_year_start, days=-1)
  	return year_ending.strftime(DATE_FORMAT) if as_str else year_ending
  
++<<<<<<< HEAD
 +
 +def get_time(
 +	time_str: str | datetime.datetime | datetime.time | datetime.timedelta,
 +) -> datetime.time:
 +	"""Return a `datetime.time` object for the given `time_str`.
 +
++=======
+ 
+ def get_time(
+ 	time_str: str | datetime.datetime | datetime.time | datetime.timedelta,
+ ) -> datetime.time:
+ 	"""Return a `datetime.time` object for the given `time_str`.
+ 
++>>>>>>> 5f5d46964b926ed9a5b702dfe485499a769123f4
  	If the given argument is already a `datetime.time` object, it is returned as is."""
  
  	if isinstance(time_str, datetime.datetime):
diff --cc frappe/website/doctype/blog_post/blog_post.py
index 0565ba1c5f,5e7eea754f..0000000000
--- a/frappe/website/doctype/blog_post/blog_post.py
+++ b/frappe/website/doctype/blog_post/blog_post.py
@@@ -164,7 -164,24 +164,28 @@@ class BlogPost(WebsiteGenerator)
  		]
  		context.guest_allowed = False if login_required else frappe.db.get_single_value("Blog Settings", "allow_guest_to_comment")
  
++<<<<<<< HEAD
 +		context.show_sidebar = frappe.db.get_single_value("Blog Settings", "show_sidebar")
++=======
+ 		if frappe.db.get_single_value("Blog Settings", "show_sidebar"):
+ 				context.show_sidebar = True
+ 				context.sidebar_items = self.get_sidebar_items()
+ 
+ 	def get_sidebar_items(self):
+ 		def _get():
+ 			categories = frappe.get_all("Blog Category",
+ 				filters={"published": 1},
+ 				fields=["title", "route"],
+ 				order_by="title ASC"
+ 			)
+ 
+ 			for category in categories:
+ 				category.route = f"/{category.route}"
+ 
+ 			return categories
+ 
+ 		return frappe.cache.get_value("blog:category_sidebar", _get)
++>>>>>>> 5f5d46964b926ed9a5b702dfe485499a769123f4
  
  	def fetch_cta(self):
  		if frappe.db.get_single_value("Blog Settings", "show_cta_in_blog", cache=True):
diff --cc frappe/website/doctype/help_article/help_article.py
index 27fb93bcd9,b34442e82b..0000000000
--- a/frappe/website/doctype/help_article/help_article.py
+++ b/frappe/website/doctype/help_article/help_article.py
@@@ -106,12 -106,10 +106,19 @@@ def get_list_context(context=None)
  		no_breadcrumbs=False,
  		introduction=introduction,
  		list_template="templates/includes/list/list.html" if category else None,
++<<<<<<< HEAD
 +		row_template="website/doctype/help_article/templates/help_article_row.html" if category else "website/doctype/help_article/templates/help_article_category_row.html"
 +	)
 +
 +	if not category:
 +		list_context["get_list"] = get_category_list
 +
++=======
+ 		get_list=get_list if category else get_category_list,
+ 		row_template="website/doctype/help_article/templates/help_article_row.html" if category else "website/doctype/help_article/templates/help_article_category_row.html"
+ 	)
+ 
++>>>>>>> 5f5d46964b926ed9a5b702dfe485499a769123f4
  	return list_context
  
  

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
Please register or sign in to reply
Loading