8000 feat: Improved delete page confirmation message by fsbraun · Pull Request #8070 · django-cms/django-cms · GitHub
[go: up one dir, main page]

Skip to content

feat: Improved delete page confirmation message #8070

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Dec 1, 2024
Prev Previous commit
Next Next commit
Update delete confirmation
  • Loading branch information
Github Release Action committed Nov 6, 2024
commit ea23b68322967ccf9c5a143c6f5354313ee2b479
6 changes: 0 additions & 6 deletions cms/admin/pageadmin.py
Original file line number Diff line number Diff line change
Expand Up @@ -348,12 +348,6 @@ def response_delete(self, request, obj_display, obj_id):
clear_permission_lru_caches(request.user)
return super().response_delete(request, obj_display, obj_id)

def get_deleted_objects(self, objs, request):
deleted_objs = list(objs)
for obj in objs:
deleted_objs.extend(obj.get_descendant_pages())
return super().get_deleted_objects(deleted_objs, request)

def delete_model(self, request, obj):
operation_token = send_pre_page_operation(
request=request,
Expand Down
62 changes: 62 additions & 0 deletions cms/templates/admin/cms/page/delete_confirmation.html
Original file line number Diff line number Diff line change
@@ -1,10 +1,72 @@
{% extends "admin/delete_confirmation.html" %}
{% load i18n admin_urls static cms_admin %}
{% block extrahead %}{{ block.super }}
<style>
.flexbox {
display: flex;
justify-content: space-between;
margin-bottom: 2em;
margin-top: 5em;
+ hr {
margin: 3em 0;
}
}
.summary {
font-size: 150%;
line-height: 150%;
svg {
margin-inline-end: 1em;
zoom: 200%;
}
.count {
margin-inline-start: 0.5em;
font-size: 300%;
}
}
ul.other {
li {
display: block;
padding: 0;
.number {
margin-inline-start: 1em;
text-align: inline-end;
padding-inline-end: 1.5em;
display: inline-block;
}
width: 100%;
}
padding: 0;
box-sizing: border-box;
display: none;
margin-bottom: 2em;
}
ul#deleted-objects {
padding: 0;
li {
list-style-type: none;
background(var(--body-bg));
&:has( > :not(a)) {
border-top: 1px solid var(--border-color);
}
}
ul {
margin-inline-start: 0;
padding-inline-start: 1em;
}
}
form {
padding: 1em 0;
}
</style>
{% endblock %}
{% block delete_confirm %}
<h3>
{% blocktranslate with escaped_object=object %}Are you sure you want to delete the {{ object_name }} "{{ escaped_object }}"? All of the following related items will be deleted:{% endblocktranslate %}
</h3>
{% delete_summary model_count %}
<h2>{{ _("Pages") }}</h2>
<ul id="deleted-objects">{{ deleted_objects|unordered_list }}</ul>
<hr>
<form method="post">{% csrf_token %}
<div>
<input type="hidden" name="post" value="yes">
Expand Down
17 changes: 12 additions & 5 deletions cms/templatetags/cms_admin.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import re

from classytags.arguments import Argument
from classytags.core import Options, Tag
from classytags.helpers import AsTag, InclusionTag
Expand Down Expand Up @@ -297,12 +299,17 @@ def recursively_remove(deleted_objects: list | str) -> list:
for obj in deleted_objects:
item = recursively_remove(obj)
if isinstance(item, str):
if not any(f"{capfirst(item._meta.verbose_name)}:" in obj for item in summary_models):
result.append(item)
elif len(item) == 1:
result.append(item[0])
if obj.startswith(f"{capfirst(Page._meta.verbose_name)}: "):
text = re.findall(r'>(.*)<', obj)
if text:
result.append(text[0])
else:
result.append(mark_safe(item.removeprefix(f"{capfirst(Page._meta.verbose_name)}: ")))
elif obj.startswith(f"{capfirst(PageContent._meta.verbose_name)}: "):
result.insert(0, mark_safe(item.removeprefix(f"{capfirst(PageContent._meta.verbose_name)}: ")))

elif item:
result.append(item)
result.append(sorted(item, key=lambda x: isinstance(x, list)))
return result
context["deleted_objects"] = recursively_remove(context["deleted_objects"])

Expand Down
0