Bug 40113: Update accounting admin pages to use grid layout for forms

This patch updates four administration templates to use new structure
and CSS for layout forms using CSS grids.

To test, apply the patch and go to Administration. Check the following
pages, confirming that the "New" and "Edit" versions of the form look
correct in each case:

- Administration -> Debit types
- Administration -> Credit types
- Administration -> Cash registers
- Administration -> Desks

Sponsored-by: Athens County Public Libraries
Signed-off-by: noah <noah@inlibro.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Owen Leonard 2025-06-10 18:24:22 +00:00 committed by Lucas Gass
parent 2c7e644cee
commit 09c5bd5a9a
No known key found for this signature in database
GPG Key ID: 60B447398B0D36CA
4 changed files with 170 additions and 81 deletions

View File

@ -103,27 +103,42 @@
<form action="/cgi-bin/koha/admin/cash_registers.pl" id="Aform" name="Aform" class="validated" method="post">
[% INCLUDE 'csrf-token.inc' %]
<fieldset class="rows">
<fieldset class="fg">
<input type="hidden" name="op" value="cud-add_validate" />
<ol>
[% IF cash_register %]
<li>
<span class="label">Cash register ID: </span>[% cash_register.id | html %]
[% IF cash_register %]
<div class="fg-row">
<div class="fg-label">
<span class="label">Cash register ID: </span>
</div>
<div class="fg-text">
[% cash_register.id | html %]
<input type="hidden" name="id" value="[% cash_register.id | html %]" />
</li>
[% END %]
<li>
</div>
</div>
[% END %]
<div class="fg-row">
<div class="fg-label">
<label for="name" class="required">Name: </label>
</div>
<div class="fg-input">
<input type="text" name="name" id="name" size="24" maxlength="24" value="[% cash_register.name | html %]" class="required focus" />
<span class="required">Required</span>
</li>
<div class="required">Required</div>
</div>
</div>
<li>
<div class="fg-row">
<div class="fg-label">
<label for="description">Description: </label>
</div>
<div class="fg-input">
<input type="text" name="description" id="description" size="24" value="[% cash_register.description | html %]" />
</li>
<li>
</div>
</div>
<div class="fg-row">
<div class="fg-label">
<label for="branch">Library: </label>
</div>
<div class="fg-input">
<select id="branch" name="branch">
[% IF cash_register %]
[% PROCESS options_for_libraries libraries => Branches.all( selected => cash_register.branch ) %]
@ -131,13 +146,17 @@
[% PROCESS options_for_libraries libraries => Branches.all() %]
[% END %]
</select>
</li>
</div>
</div>
<li>
<div class="fg-row input-sm">
<div class="fg-label">
<label for="starting_float">Initial float: </label>
</div>
<div class="fg-input">
<input type="text" pattern="^\d+(?:\.\d{0,2})$" name="starting_float" id="starting_float" size="24" value="[% cash_register.starting_float | $Price on_editing => 1 %]" />
</li>
</ol>
</div>
</div>
</fieldset>
<fieldset class="action">

View File

@ -85,27 +85,43 @@
<form action="/cgi-bin/koha/admin/credit_types.pl" name="Aform" method="post" class="validated">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="op" value="cud-add_validate" />
<fieldset class="rows">
<ol>
<li>
<fieldset class="fg">
<div class="fg-row">
<div class="fg-label">
<label for="code" class="required">Credit type code: </label>
[% IF credit_type %]
</div>
[% IF credit_type %]
<div class="fg-text">
<strong>[% credit_type.code | html %]</strong>
<input type="hidden" name="code" value="[% code | html %]" />
[% ELSE %]
<input type="text" name="code" id="code" size="80" maxlength="64" class="required focus" required="required" /><span class="required">Required. Maximum length is 64 letters</span>
[% END %]
</li>
<li>
</div>
[% ELSE %]
<div class="fg-input">
<input type="text" name="code" id="code" size="80" maxlength="64" class="required focus" required="required" />
</div>
<div class="required">Required</div>
<div class="hint">Maximum length is 64 letters</div>
[% END %]
</div>
<div class="fg-row">
<div class="fg-label">
<label for="description" class="required">Description: </label>
[% IF credit_type && credit_type.is_system %]
</div>
[% IF credit_type && credit_type.is_system %]
<div class="fg-text">
<span>[%- PROCESS credit_type_description credit_type = credit_type -%]</span>
[% ELSE %]
</div>
[% ELSE %]
<div class="fg-input">
<input type="text" name="description" id="description" required="required" class="required" size="80" maxlength="100" value="[% credit_type.description | html %]" /> <span class="required">Required</span>
[% END %]
</li>
<li>
<label for="can_be_added_manually">Can be manually added ? </label>
</div>
[% END %]
</div>
<div class="fg-row input-checkbox">
<div class="fg-label">
<label for="can_be_added_manually">Can be manually added? </label>
</div>
<div class="fg-input">
[% IF credit_type && credit_type.is_system %]
[% IF credit_type.can_be_added_manually %]<span>Yes</span>[% ELSE %]<span>No</span>[% END %]
[% ELSIF credit_type.can_be_added_manually %]
@ -113,21 +129,31 @@
[% ELSE %]
<input type="checkbox" name="can_be_added_manually" id="can_be_added_manually" value="1" />
[% END %]
</li>
<li>
</div>
</div>
<div class="fg-row input-checkbox">
<div class="fg-label">
<label for="credit_number_enabled">Enable credit number</label>
</div>
<div class="fg-input">
[% IF credit_type.credit_number_enabled %]
<input type="checkbox" name="credit_number_enabled" id="credit_number_enabled" checked="checked" value="1" />
[% ELSE %]
<input type="checkbox" name="credit_number_enabled" id="credit_number_enabled" value="1" />
[% END %]
<span class="hint">Enable automatic generation of credit number (see <a href="/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=AutoCreditNumber">AutoCreditNumber</a>)</span>
</li>
<li>
</div>
<div class="hint">Enable automatic generation of credit number (see <a href="/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=AutoCreditNumber">AutoCreditNumber</a>)</div>
</div>
<div class="fg-row">
<div class="fg-label">
<label for="library_limitation">Libraries limitation: </label>
[% IF credit_type && credit_type.is_system %]
</div>
[% IF credit_type && credit_type.is_system %]
<div class="fg-text">
<span>No library limitation</span>
[% ELSE %]
</div>
[% ELSE %]
<div class="fg-input">
<select id="library_limitation" name="branches" multiple size="10">
[% FOREACH branch IN branches_loop %]
[% IF ( branch.selected ) %]
@ -137,10 +163,10 @@
[% END %]
[% END %]
</select>
<div class="hint">Limit the use of this credit type to the selected libraries.</div>
[% END %]
</li>
</ol>
</div>
<div class="hint">Limit the use of this credit type to the selected libraries.</div>
[% END %]
</div>
</fieldset>
[% IF additional_fields.size %]
[% INCLUDE 'additional-fields-entry.inc' available=additional_fields values=additional_field_values wrap_fieldset=1 %]

View File

@ -83,57 +83,89 @@
<form action="/cgi-bin/koha/admin/debit_types.pl" name="Aform" method="post" class="validated">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="op" value="cud-add_validate" />
<fieldset class="rows">
<ol>
<li>
<fieldset class="fg">
<div class="fg-row">
<div class="fg-label">
<label for="code" class="required">Debit type code: </label>
[% IF debit_type %]
</div>
[% IF debit_type %]
<div class="fg-text">
<strong>[% debit_type.code | html %]</strong>
<input type="hidden" name="code" value="[% code | html %]" />
[% ELSE %]
<input type="text" name="code" id="code" size="80" maxlength="64" class="required focus" required="required" /><span class="required">Required. Maximum length is 64 letters</span>
[% END %]
</li>
<li>
</div>
[% ELSE %]
<div class="fg-input">
<input type="text" name="code" id="code" size="80" maxlength="64" class="required focus" required="required" />
</div>
<div class="required">Required</div>
<div class="hint">Maximum length is 64 letters</div>
[% END %]
</div>
<div class="fg-row input-sm">
<div class="fg-label">
<label for="default_amount">Default amount: </label>
</div>
<div class="fg-input">
<input type="text" pattern="^\d+(\.\d{2})?$" name="default_amount" id="default_amount" size="80" maxlength="100" value="[% debit_type.default_amount | $Price on_editing => 1 %]" step="any" min="0" />
</li>
<li>
</div>
</div>
<div class="fg-row">
<div class="fg-label">
<label for="description" class="required">Description: </label>
[% IF debit_type && debit_type.is_system %]
</div>
[% IF debit_type && debit_type.is_system %]
<div class="fg-text">
<span>[%- PROCESS debit_type_description debit_type = debit_type -%]</span>
[% ELSE %]
<input type="text" name="description" id="description" required="required" class="required" size="80" maxlength="100" value="[% debit_type.description | html %]" /> <span class="required">Required</span>
[% END %]
</li>
<li>
</div>
[% ELSE %]
<div class="fg-input">
<input type="text" name="description" id="description" required="required" class="required" size="80" maxlength="100" value="[% debit_type.description | html %]" />
</div>
<div class="required">Required</div>
[% END %]
</div>
<div class="fg-row">
<div class="fg-label">
<label for="can_be_invoiced">Can be manually invoiced? </label>
</div>
<div class="fg-input">
[% IF debit_type.can_be_invoiced %]
<input type="checkbox" name="can_be_invoiced" id="can_be_invoiced" checked="checked" value="1" />
[% ELSE %]
<input type="checkbox" name="can_be_invoiced" id="can_be_invoiced" value="1" />
[% END %]
</li>
<li>
</div>
</div>
<div class="fg-row">
<div class="fg-label">
<label for="can_be_sold">Can be sold? </label>
</div>
<div class="fg-input">
[% IF debit_type.can_be_sold %]
<input type="checkbox" name="can_be_sold" id="can_be_sold" checked="checked" value="1" />
[% ELSE %]
<input type="checkbox" name="can_be_sold" id="can_be_sold" value="1" />
[% END %]
</li>
<li>
</div>
</div>
<div class="fg-row">
<div class="fg-label">
<label for="restricts_checkouts">Included in noissuescharge? </label>
</div>
<div class="fg-input">
[% IF debit_type.restricts_checkouts %]
<input type="checkbox" name="restricts_checkouts" id="restricts_checkouts" checked="checked" value="1" />
[% ELSE %]
<input type="checkbox" name="restricts_checkouts" id="restricts_checkouts" value="1" />
[% END %]
</li>
<li>
</div>
</div>
<div class="fg-row">
<div class="fg-label">
<label for="library_limitation">Libraries limitation: </label>
</div>
<div class="fg-input">
<select id="library_limitation" name="branches" multiple size="10">
<option value="">All libraries</option>
[% FOREACH branch IN branches_loop %]
[% IF ( branch.selected ) %]
<option selected="selected" value="[% branch.branchcode | html %]">[% branch.branchname | html %]</option>
@ -142,9 +174,9 @@
[% END %]
[% END %]
</select>
<div class="hint">Limit use of this debit type to the selected libraries.</div>
</li>
</ol>
</div>
<div class="hint">Limit use of this debit type to the selected libraries.</div>
</div>
</fieldset>
[% IF additional_fields.size %]
[% INCLUDE 'additional-fields-entry.inc' available=additional_fields values=additional_field_values wrap_fieldset=1 %]

View File

@ -101,17 +101,29 @@
<input type="hidden" name="op" value="cud-add_validate" />
<input type="hidden" name="desk_id" value="[% desk.desk_id | html %]" />
<fieldset class="rows">
<ol>
[% IF desk %]
<li><span class="label">Desk ID: </span>[% desk.desk_id | html %]</li>
[% END %]
<li>
<fieldset class="fg">
[% IF desk %]
<div class="fg-row">
<div class="fg-label">
<span class="label">Desk ID: </span>
</div>
<div class="fg-text"> [% desk.desk_id | html %] </div>
</div>
[% END %]
<div class="fg-row">
<div class="fg-label">
<label for="desk_name" class="required">Desk: </label>
<input type="text" name="desk_name" id="desk_name" size="80" maxlength="100" value="[% desk.desk_name | html %]" required="required" class="required" /> <span class="required">Required</span>
</li>
<li>
</div>
<div class="fg-input">
<input type="text" name="desk_name" id="desk_name" size="80" maxlength="100" value="[% desk.desk_name | html %]" required="required" class="required" />
</div>
<div class="required">Required</div>
</div>
<div class="fg-row">
<div class="fg-label">
<label for="branchcode" class="required">Library: </label>
</div>
<div class="fg-input">
<select id="branchcode" name="branchcode" required="required">
<option value=""></option>
[% IF desk %]
@ -120,8 +132,8 @@
[% PROCESS options_for_libraries libraries => Branches.all() %]
[% END %]
</select>
</li>
</ol>
</div>
</div>
</fieldset>
<fieldset class="action">