Skip to content

Commit ef79bd5

Browse files
committed
Fixed unchecked checklist lines badge in the Item edit screen
1 parent c23c657 commit ef79bd5

9 files changed

Lines changed: 68 additions & 31 deletions

inc/items/model/_itemlight.class.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1931,6 +1931,25 @@ function get_checklist_lines()
19311931
}
19321932

19331933

1934+
/**
1935+
* Get number of unchecked checklist lines
1936+
*/
1937+
function get_unchecked_checklist_lines()
1938+
{
1939+
$checklist_lines = $this->get_checklist_lines();
1940+
$unchecked_checklist_lines = 0;
1941+
foreach( $checklist_lines as $checklist_line )
1942+
{
1943+
if( ! $checklist_line->check_checked )
1944+
{
1945+
$unchecked_checklist_lines++;
1946+
}
1947+
}
1948+
1949+
return $unchecked_checklist_lines;
1950+
}
1951+
1952+
19341953
/**
19351954
* Get a list of item IDs from $MainList and $ItemList, if they are loaded.
19361955
* This is used for prefetching item related data for the whole list(s).

inc/items/views/_item_expert.form.php

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -341,11 +341,12 @@
341341
}
342342

343343
$tab_panes[] = '#checklist';
344-
echo '<li><a data-toggle="tab" href="#checklist">'.T_('Checklist').( $edited_Item->get_checklist_lines() ? ' <span id="checklist_counter" class="badge badge-important">'.count( $edited_Item->get_checklist_lines() ).'</span>' : '' ).'</a></li>';
344+
$unchecked_checklist_lines = $edited_Item->get_unchecked_checklist_lines();
345+
echo '<li><a data-toggle="tab" href="#checklist">'.T_('Checklist').( $unchecked_checklist_lines > 0 ? ' <span id="checklist_counter" class="badge badge-important">'.$unchecked_checklist_lines.'</span>' : '' ).'</a></li>';
345346

346347
echo '</ul>';
347348

348-
echo '<div class="tab-content evo_tab_pane_itemform_content">';
349+
echo '<div class="tab-content evo_tab_pane_itemform_content">';
349350

350351
$attachment_tab = true;
351352
$fold_images_attachments_block = ( $orig_action != 'update_edit' && $orig_action != 'create_edit' ); // don't fold the links block on these two actions
@@ -1180,6 +1181,8 @@
11801181
echo_item_add_version_js();
11811182
// JS code for link to link new version:
11821183
echo_item_link_version_js();
1184+
// Init Item Checklist JS:
1185+
expose_var_to_js( 'evo_item_checklist_config', true );
11831186

11841187
// JS to post excerpt mode switching:
11851188
?>
@@ -1232,29 +1235,7 @@
12321235

12331236
if( hasClass )
12341237
{ // element has class `.checklist_line`, update counter:
1235-
var checklist_badge = document.getElementById( 'checklist_counter' );
1236-
var checklist_line_count = document.querySelectorAll( '.checklist_lines .checklist_line' ).length
1237-
if( checklist_badge )
1238-
{
1239-
if( checklist_line_count > 0 )
1240-
{ // Update checklist counter badge:
1241-
checklist_badge.innerHTML = checklist_line_count;
1242-
}
1243-
else
1244-
{ // Remove checklist counter badge:
1245-
checklist_badge.remove();
1246-
}
1247-
}
1248-
else if( checklist_line_count > 0 )
1249-
{ // Create checklist counter badge:
1250-
var checklist_tab = document.querySelector( 'a[href="#checklist"]' );
1251-
checklist_badge = document.createElement( 'span' );
1252-
checklist_badge.classList.add( 'badge', 'badge-important' );
1253-
checklist_badge.innerHTML = checklist_line_count;
1254-
checklist_badge.setAttribute( 'id', 'checklist_counter' );
1255-
checklist_tab.appendChild( document.createTextNode( ' ' ) );
1256-
checklist_tab.appendChild( checklist_badge );
1257-
}
1238+
window.update_checklist_tab_badge();
12581239
}
12591240
}
12601241
} );

rsc/js/build/bootstrap-evo_backoffice.bmin.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rsc/js/build/bootstrap-evo_frontoffice-superbundle.bmin.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rsc/js/build/bootstrap-evo_frontoffice.bmin.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rsc/js/build/evo_backoffice.bmin.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rsc/js/build/evo_frontoffice.bmin.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rsc/js/build/evo_generic.bmin.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rsc/js/src/evo_init_generic_jquery_ready_functions.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1180,4 +1180,41 @@ jQuery( document ).ready( function()
11801180
// Expand all fieldsets that have the fields with error
11811181
jQuery( '.field_error' ).closest( '.fieldset_wrapper.folded' ).find( 'span[id^=icon_folding_]' ).click();
11821182
}
1183+
1184+
// Item Checklist JS - inc/items/views/_item_expert.form.php
1185+
if( typeof( evo_item_checklist_config ) != 'undefined' )
1186+
{
1187+
window.update_checklist_tab_badge = function()
1188+
{
1189+
var checklist_badge = document.getElementById( 'checklist_counter' );
1190+
var unchecked_line_count = document.querySelectorAll( '.checklist_lines .checklist_line input[type="checkbox"]:not(:checked)' ).length;
1191+
1192+
if( checklist_badge )
1193+
{
1194+
if( unchecked_line_count > 0 )
1195+
{ // Update checklist counter badge:
1196+
checklist_badge.innerHTML = unchecked_line_count;
1197+
}
1198+
else
1199+
{ // Remove checklist counter badge:
1200+
checklist_badge.remove();
1201+
}
1202+
}
1203+
else if( unchecked_line_count > 0 )
1204+
{ // Create checklist counter badge:
1205+
var checklist_tab = document.querySelector( 'a[href="#checklist"][data-toggle="tab"]' );
1206+
if( checklist_tab )
1207+
{
1208+
checklist_badge = document.createElement( 'span' );
1209+
checklist_badge.classList.add( 'badge', 'badge-important' );
1210+
checklist_badge.innerHTML = unchecked_line_count;
1211+
checklist_badge.setAttribute( 'id', 'checklist_counter' );
1212+
checklist_tab.appendChild( document.createTextNode( ' ' ) );
1213+
checklist_tab.appendChild( checklist_badge );
1214+
}
1215+
}
1216+
};
1217+
1218+
jQuery( '.checklist_lines' ).on( 'click', '.checklist_line input[type="checkbox"]', window.update_checklist_tab_badge );
1219+
}
11831220
} );

0 commit comments

Comments
 (0)