diff --git a/django/contrib/admin/media/css/changelists.css b/django/contrib/admin/media/css/changelists.css index 4303378..65ae083 100644 --- a/django/contrib/admin/media/css/changelists.css +++ b/django/contrib/admin/media/css/changelists.css @@ -228,6 +228,14 @@ border-right: 1px solid #ddd; } +.action_counter{ + font-size: 11px; + margin: 0 0.5em; + padding-right: 0.5em; + border-right: 1px solid #ccc; + display: none; +} + #changelist table input { margin: 0; } diff --git a/django/contrib/admin/media/js/actions.js b/django/contrib/admin/media/js/actions.js index d34488a..b82bd13 100644 --- a/django/contrib/admin/media/js/actions.js +++ b/django/contrib/admin/media/js/actions.js @@ -1,10 +1,22 @@ var Actions = { init: function() { - var selectAll = document.getElementById('action-toggle'); + counterSpans = document.getElementsBySelector('span._acnt'); + counterContainer = document.getElementsBySelector('span.action_counter'); + actionCheckboxes = document.getElementsBySelector('tr input.action-select'); + selectAll = document.getElementById('action-toggle'); + for(var i = 0; i < counterContainer.length; i++) { + counterContainer[i].style.display = 'inline'; + } if (selectAll) { selectAll.style.display = 'inline'; addEvent(selectAll, 'click', function() { Actions.checker(selectAll.checked); + Actions.counter(); + }); + } + for(var i = 0; i < actionCheckboxes.length; i++) { + addEvent(actionCheckboxes[i], 'click', function() { + Actions.counter(); }); } var changelistTable = document.getElementsBySelector('#changelist table')[0]; @@ -16,6 +28,7 @@ var Actions = { if (target.className == 'action-select') { var tr = target.parentNode.parentNode; Actions.toggleRow(tr, target.checked); + Actions.checked(); } }); } @@ -27,13 +40,26 @@ var Actions = { tr.className = tr.className.replace(' selected', ''); } }, + checked: function() { + selectAll.checked = false; + }, checker: function(checked) { - var actionCheckboxes = document.getElementsBySelector('tr input.action-select'); for(var i = 0; i < actionCheckboxes.length; i++) { actionCheckboxes[i].checked = checked; Actions.toggleRow(actionCheckboxes[i].parentNode.parentNode, checked); } + }, + counter: function() { + counter = 0; + for(var i = 0; i < actionCheckboxes.length; i++) { + if(actionCheckboxes[i].checked){ + counter++; + } + } + for(var i = 0; i < counterSpans.length; i++) { + counterSpans[i].innerHTML = counter; + } } }; -addEvent(window, 'load', Actions.init); +addEvent(window, 'load', Actions.init); \ No newline at end of file diff --git a/django/contrib/admin/templates/admin/actions.html b/django/contrib/admin/templates/admin/actions.html index bf4b975..4fea071 100644 --- a/django/contrib/admin/templates/admin/actions.html +++ b/django/contrib/admin/templates/admin/actions.html @@ -1,5 +1,12 @@ {% load i18n %}