diff --git a/admin/batch_manager.php b/admin/batch_manager.php index 792cb1f54..14c62a557 100644 --- a/admin/batch_manager.php +++ b/admin/batch_manager.php @@ -64,17 +64,15 @@ DELETE FROM '.CADDIE_TABLE.' redirect(get_root_url().'admin.php?page='.$_GET['page']); } - if ('delete_orphans' == $_GET['action']) + if ('delete_orphans' == $_GET['action'] and isset($_GET['nb_orphans_deleted'])) { - check_pwg_token(); + check_input_parameter('nb_orphans_deleted', $_GET, false, '/^\d+$/'); - $deleted_count = delete_elements(get_orphans(), true); - - if ($deleted_count > 0) + if ($_GET['nb_orphans_deleted'] > 0) { $_SESSION['page_infos'][] = l10n_dec( '%d photo was deleted', '%d photos were deleted', - $deleted_count + $_GET['nb_orphans_deleted'] ); redirect(get_root_url().'admin.php?page='.$_GET['page']); diff --git a/admin/themes/default/js/batchManagerGlobal.js b/admin/themes/default/js/batchManagerGlobal.js index 6d2a99bf7..f26ab11db 100644 --- a/admin/themes/default/js/batchManagerGlobal.js +++ b/admin/themes/default/js/batchManagerGlobal.js @@ -327,3 +327,53 @@ function progressDelete(val, max, success) { jQuery("#action_delete input[name=confirm_deletion]").change(function() { jQuery("#action_delete span.errors").hide(); }); + + +jQuery('#delete_orphans').click(function(e) { + jQuery(this).hide(); + jQuery('#orphans_deletion').show(); + + var deleteBlockSize = Math.min( + Number((jQuery('#orphans_to_delete').data('origin') / 2).toFixed()), + 1000 + ); + + delete_orphans_block(deleteBlockSize); + + return false; +}); + +function delete_orphans_block(blockSize) { + jQuery.ajax({ + url: "ws.php?format=json&method=pwg.images.deleteOrphans", + type:"POST", + dataType: "json", + data: { + pwg_token: jQuery("input[name=pwg_token").val(), + block_size: blockSize + }, + success:function(data) { + jQuery('#orphans_to_delete').html(data.result.nb_orphans); + + var percent_remaining = Number( + (data.result.nb_orphans * 100 / jQuery('#orphans_to_delete').data('origin')).toFixed() + ); + var percent_done = 100 - percent_remaining; + jQuery('#orphans_deleted').html(percent_done); + + if (data.result.nb_orphans > 0) { + delete_orphans_block(); + } + else { + // time to refresh the whole page + var redirect_to = 'admin.php?page=batch_manager'; + redirect_to += '&action=delete_orphans'; + redirect_to += '&nb_orphans_deleted='+jQuery('#orphans_to_delete').data('origin'); + + document.location = redirect_to; + } + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + } + }); +} \ No newline at end of file diff --git a/admin/themes/default/template/batch_manager_global.tpl b/admin/themes/default/template/batch_manager_global.tpl index b9ce4c0c5..254bdf551 100644 --- a/admin/themes/default/template/batch_manager_global.tpl +++ b/admin/themes/default/template/batch_manager_global.tpl @@ -345,7 +345,16 @@ var sliders = { {/foreach} {'Empty caddie'|translate} - {'Delete %d orphan photos'|translate:$NB_ORPHANS} +{if $NB_ORPHANS > 0} + {'Delete %d orphan photos'|translate:$NB_ORPHANS} +{/if} + + {'based on'|translate}