fix: change chexbox positions
This commit is contained in:
+20
-46
@@ -51,14 +51,24 @@ class ProjectBriefAdmin(admin.ModelAdmin):
|
||||
(
|
||||
"Brief",
|
||||
{
|
||||
"description": (
|
||||
"Each field has its own lock and website visibility controls. "
|
||||
"Lock prevents client edits; Show on website includes the field "
|
||||
"on the public card when the project is published."
|
||||
),
|
||||
"fields": (
|
||||
"client",
|
||||
"title",
|
||||
"category",
|
||||
"locked",
|
||||
"show_on_website",
|
||||
("title", "lock_title", "show_title_on_website"),
|
||||
("category", "lock_category", "show_category_on_website"),
|
||||
"description",
|
||||
"budget_range",
|
||||
"desired_deadline",
|
||||
("lock_description", "show_description_on_website"),
|
||||
("budget_range", "lock_budget_range", "show_budget_on_website"),
|
||||
("desired_deadline", "lock_desired_deadline", "show_deadline_on_website"),
|
||||
"reference_links",
|
||||
("lock_reference_links", "show_references_on_website"),
|
||||
("lock_attachments", "show_attachments_on_website"),
|
||||
),
|
||||
},
|
||||
),
|
||||
@@ -75,34 +85,13 @@ class ProjectBriefAdmin(admin.ModelAdmin):
|
||||
},
|
||||
),
|
||||
(
|
||||
"Client editing locks",
|
||||
"Website showcase overrides",
|
||||
{
|
||||
"description": (
|
||||
"Lock individual fields so the client cannot change them while "
|
||||
"the brief is still editable. 'Lock entire project' blocks all "
|
||||
"client edits regardless of status."
|
||||
"Optional public-facing content. Leave blank to fall back to the "
|
||||
"brief field values above."
|
||||
),
|
||||
"fields": (
|
||||
"locked",
|
||||
"lock_title",
|
||||
"lock_category",
|
||||
"lock_description",
|
||||
"lock_budget_range",
|
||||
"lock_desired_deadline",
|
||||
"lock_reference_links",
|
||||
"lock_attachments",
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
"Website showcase",
|
||||
{
|
||||
"description": (
|
||||
"Control whether this project appears on the public website and "
|
||||
"which fields are visible on the website card."
|
||||
),
|
||||
"fields": (
|
||||
"show_on_website",
|
||||
"public_title",
|
||||
"public_summary",
|
||||
"public_tags",
|
||||
@@ -112,28 +101,13 @@ class ProjectBriefAdmin(admin.ModelAdmin):
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
"Website field visibility",
|
||||
{
|
||||
"description": (
|
||||
"Each field can be independently shown or hidden on the website card."
|
||||
),
|
||||
"fields": (
|
||||
"show_title_on_website",
|
||||
"show_category_on_website",
|
||||
"show_description_on_website",
|
||||
"show_budget_on_website",
|
||||
"show_deadline_on_website",
|
||||
"show_references_on_website",
|
||||
"show_attachments_on_website",
|
||||
),
|
||||
"classes": ("collapse",),
|
||||
},
|
||||
),
|
||||
)
|
||||
inlines = [ProjectBriefAttachmentInline, ProjectInternalNoteInline]
|
||||
date_hierarchy = "submitted_at"
|
||||
|
||||
class Media:
|
||||
css = {"all": ("css/project-brief-admin.css",)}
|
||||
|
||||
def save_formset(self, request, form, formset, change):
|
||||
instances = formset.save(commit=False)
|
||||
for instance in instances:
|
||||
|
||||
@@ -93,6 +93,7 @@ class ProjectBrief(models.Model):
|
||||
)
|
||||
locked = models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="Lock project",
|
||||
help_text="Lock the whole project so the client cannot edit it at all.",
|
||||
)
|
||||
lock_title = models.BooleanField(default=False, help_text="Lock title for the client.")
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
#projectbrief_form .project-brief-fieldset > .form-row.multi-field {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr);
|
||||
gap: 1rem 1.25rem;
|
||||
align-items: start;
|
||||
padding-top: 0.75rem;
|
||||
border-top: 1px solid #e5e7eb;
|
||||
}
|
||||
|
||||
#projectbrief_form .project-brief-fieldset > .form-row.multi-field:first-of-type {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
#projectbrief_form .project-brief-field-header {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr);
|
||||
gap: 1rem 1.25rem;
|
||||
margin: 0.75rem 0 0.25rem;
|
||||
padding: 0.5rem 0;
|
||||
border-bottom: 2px solid #cbd5e1;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.04em;
|
||||
color: #64748b;
|
||||
}
|
||||
|
||||
#projectbrief_form .project-brief-field-header span:nth-child(2),
|
||||
#projectbrief_form .project-brief-field-header span:nth-child(3) {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_title,
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_category,
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_description,
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_budget_range,
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_desired_deadline,
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_reference_links,
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_attachments,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_title_on_website,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_category_on_website,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_description_on_website,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_budget_on_website,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_deadline_on_website,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_references_on_website,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_attachments_on_website {
|
||||
padding-top: 0.15rem;
|
||||
}
|
||||
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_title label,
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_category label,
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_description label,
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_budget_range label,
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_desired_deadline label,
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_reference_links label,
|
||||
#projectbrief_form .project-brief-fieldset .field-lock_attachments label,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_title_on_website label,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_category_on_website label,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_description_on_website label,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_budget_on_website label,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_deadline_on_website label,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_references_on_website label,
|
||||
#projectbrief_form .project-brief-fieldset .field-show_attachments_on_website label {
|
||||
font-size: 0.78rem;
|
||||
font-weight: 600;
|
||||
color: #475569;
|
||||
}
|
||||
|
||||
#projectbrief_form .project-brief-fieldset .form-row:not(.multi-field) .field-lock_description,
|
||||
#projectbrief_form .project-brief-fieldset .form-row:not(.multi-field) .field-lock_reference_links,
|
||||
#projectbrief_form .project-brief-fieldset .form-row:not(.multi-field) .field-lock_attachments,
|
||||
#projectbrief_form .project-brief-fieldset .form-row:not(.multi-field) .field-show_description_on_website,
|
||||
#projectbrief_form .project-brief-fieldset .form-row:not(.multi-field) .field-show_references_on_website,
|
||||
#projectbrief_form .project-brief-fieldset .form-row:not(.multi-field) .field-show_attachments_on_website {
|
||||
display: inline-block;
|
||||
width: calc(50% - 0.75rem);
|
||||
vertical-align: top;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
#projectbrief_form .field-description textarea,
|
||||
#projectbrief_form .field-reference_links textarea {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
#projectbrief_form .field-lock_attachments .help,
|
||||
#projectbrief_form .field-show_attachments_on_website .help {
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{% extends "admin/change_form.html" %}
|
||||
|
||||
{% block field_sets %}
|
||||
{{ block.super }}
|
||||
<script>
|
||||
(function () {
|
||||
const form = document.getElementById("projectbrief_form");
|
||||
if (!form) return;
|
||||
const fieldsets = form.querySelectorAll("fieldset.module.aligned");
|
||||
if (!fieldsets.length || form.querySelector(".project-brief-field-header")) return;
|
||||
const briefFieldset = fieldsets[0];
|
||||
const titleRow = briefFieldset.querySelector(".form-row.field-title");
|
||||
if (!titleRow) return;
|
||||
const header = document.createElement("div");
|
||||
header.className = "project-brief-field-header";
|
||||
header.innerHTML = "<span>Field</span><span>Lock</span><span>Show on website</span>";
|
||||
briefFieldset.classList.add("project-brief-fieldset");
|
||||
briefFieldset.insertBefore(header, titleRow);
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user