fix(certs): always-visible upload button in Issue Certs wizard list
Reported 2026-05-20: the Fischerscope file column shows "↑ Upload your file" only when the operator clicks the cell. Until then, the cell looks empty and operators don't know they can upload there. Root cause: Odoo's default `widget="binary"` only renders the upload button in EDIT mode. In editable lists, non-selected rows stay in display mode, which hides the button. Stock theme CSS hides .o_select_file_button on inactive rows. Fix: scoped SCSS that overrides the default theme rule for the Issue Certs wizard ONLY. `.o_select_file_button` becomes `display: inline-flex !important` so it shows on every row from the moment the wizard opens. Added a fa-upload icon glyph + dotted underline so the button reads as clickable-action, not text. Scoped to `.o_field_one2many[name="line_ids"]` inside the form view so binary fields elsewhere in the system are unaffected. Registered in both web.assets_backend and web.assets_web_dark per CLAUDE.md two-bundle rule. Module: fusion_plating_jobs 19.0.10.16.0 → 19.0.10.16.1. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
# License OPL-1 (Odoo Proprietary License v1.0)
|
# License OPL-1 (Odoo Proprietary License v1.0)
|
||||||
{
|
{
|
||||||
'name': 'Fusion Plating — Native Jobs',
|
'name': 'Fusion Plating — Native Jobs',
|
||||||
'version': '19.0.10.16.0',
|
'version': '19.0.10.16.1',
|
||||||
'category': 'Manufacturing/Plating',
|
'category': 'Manufacturing/Plating',
|
||||||
'summary': 'Native plating job model — replaces mrp.production / mrp.workorder bridge.',
|
'summary': 'Native plating job model — replaces mrp.production / mrp.workorder bridge.',
|
||||||
'author': 'Nexa Systems Inc.',
|
'author': 'Nexa Systems Inc.',
|
||||||
@@ -87,6 +87,7 @@ full design rationale and §6.2 of the implementation plan for task list.
|
|||||||
'fusion_plating_jobs/static/src/scss/fp_step_quick_look.scss',
|
'fusion_plating_jobs/static/src/scss/fp_step_quick_look.scss',
|
||||||
'fusion_plating_jobs/static/src/scss/fp_record_inputs_dialog.scss',
|
'fusion_plating_jobs/static/src/scss/fp_record_inputs_dialog.scss',
|
||||||
'fusion_plating_jobs/static/src/scss/fp_finish_btn.scss',
|
'fusion_plating_jobs/static/src/scss/fp_finish_btn.scss',
|
||||||
|
'fusion_plating_jobs/static/src/scss/fp_cert_issue_wizard.scss',
|
||||||
'fusion_plating_jobs/static/src/js/fp_record_inputs_dialog.js',
|
'fusion_plating_jobs/static/src/js/fp_record_inputs_dialog.js',
|
||||||
'fusion_plating_jobs/static/src/xml/fp_record_inputs_dialog.xml',
|
'fusion_plating_jobs/static/src/xml/fp_record_inputs_dialog.xml',
|
||||||
],
|
],
|
||||||
@@ -94,6 +95,7 @@ full design rationale and §6.2 of the implementation plan for task list.
|
|||||||
'fusion_plating_jobs/static/src/scss/fp_step_quick_look.scss',
|
'fusion_plating_jobs/static/src/scss/fp_step_quick_look.scss',
|
||||||
'fusion_plating_jobs/static/src/scss/fp_record_inputs_dialog.scss',
|
'fusion_plating_jobs/static/src/scss/fp_record_inputs_dialog.scss',
|
||||||
'fusion_plating_jobs/static/src/scss/fp_finish_btn.scss',
|
'fusion_plating_jobs/static/src/scss/fp_finish_btn.scss',
|
||||||
|
'fusion_plating_jobs/static/src/scss/fp_cert_issue_wizard.scss',
|
||||||
'fusion_plating_jobs/static/src/js/fp_record_inputs_dialog.js',
|
'fusion_plating_jobs/static/src/js/fp_record_inputs_dialog.js',
|
||||||
'fusion_plating_jobs/static/src/xml/fp_record_inputs_dialog.xml',
|
'fusion_plating_jobs/static/src/xml/fp_record_inputs_dialog.xml',
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
// =============================================================
|
||||||
|
// Fusion Plating — Issue Certs wizard styling
|
||||||
|
// =============================================================
|
||||||
|
//
|
||||||
|
// 2026-05-20: force the Fischerscope binary-field upload button to
|
||||||
|
// be visible in display mode (not just when the row is being edited).
|
||||||
|
// Odoo's default `widget="binary"` only shows "↑ Upload your file"
|
||||||
|
// when the row is in edit mode — operators couldn't see what to
|
||||||
|
// click in the wizard list and reported it as a missing affordance.
|
||||||
|
//
|
||||||
|
// Targets ONLY the fischer_file column in this wizard so it doesn't
|
||||||
|
// affect binary fields elsewhere in the system.
|
||||||
|
|
||||||
|
.o_form_view {
|
||||||
|
.o_field_one2many[name="line_ids"] {
|
||||||
|
// List renderer — affect every binary cell that backs
|
||||||
|
// fischer_file. We can't always target by name attribute
|
||||||
|
// (Odoo 19 doesn't put `name=` on the <td>), so use the
|
||||||
|
// child field widget binding.
|
||||||
|
.o_list_renderer .o_data_cell {
|
||||||
|
.o_field_widget.o_field_binary {
|
||||||
|
// Always show the upload button, even on rows that
|
||||||
|
// aren't currently being edited. The default theme
|
||||||
|
// hides it on non-selected rows.
|
||||||
|
.o_select_file_button {
|
||||||
|
display: inline-flex !important;
|
||||||
|
align-items: center;
|
||||||
|
gap: .25rem;
|
||||||
|
color: var(--primary, #5d83a4);
|
||||||
|
text-decoration: underline dotted;
|
||||||
|
background: transparent;
|
||||||
|
border: 0;
|
||||||
|
padding: .15rem .35rem;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: .85rem;
|
||||||
|
// Add an upward-arrow + label so it reads as an
|
||||||
|
// action even if Odoo's stock label text changes.
|
||||||
|
&::before {
|
||||||
|
content: "\f093"; // fa-upload (FontAwesome 4)
|
||||||
|
font-family: "FontAwesome";
|
||||||
|
margin-right: .25rem;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
color: var(--primary-hover, #4a6f8e);
|
||||||
|
background: rgba(93, 131, 164, .08);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Empty cell shouldn't collapse to 0 height — give it
|
||||||
|
// a clickable target area.
|
||||||
|
min-height: 28px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user