modulejs.define('ext/delete', ['_', '$', 'core/settings', 'core/entry', 'core/event', 'core/resource', 'core/refresh'], function (_, $, allsettings, entry, event, resource, refresh) { var settings = _.extend({ enabled: false }, allsettings['delete']), deleteBtnTemplate = '
  • ' + '' + 'delete' + 'delete' + '' + '
  • ', authTemplate = '
    ' + '' + '' + '
    ', selectedHrefsStr = '', $delete, $img, $deleteAuth, $deleteUser, $deletePassword, failed = function () { $delete.addClass('failed'); setTimeout(function () { $delete.removeClass('failed'); }, 1000); }, handleResponse = function (json) { $delete.removeClass('current'); $img.attr('src', resource.image('delete')); if (!json || json.code) { if (json && json.code === 401) { $deleteAuth .css({ left: $delete.offset().left, top: $delete.offset().top + $delete.outerHeight() }) .show(); $deleteUser.focus(); } failed(); } refresh(); }, requestDeletion = function (hrefsStr) { $delete.addClass('current'); $img.attr('src', resource.image('loading.gif', true)); $.ajax({ url: resource.api(), data: { action: 'delete', hrefs: hrefsStr, user: $deleteUser.val(), password: $deletePassword.val() }, dataType: 'json', success: handleResponse }); }, onSelection = function (entries) { selectedHrefsStr = ''; if (entries.length) { selectedHrefsStr = _.map(entries, function (entry) { return entry.absHref; }).join(':'); $delete.appendTo('#navbar').show(); } else { $delete.hide(); $deleteAuth.hide(); } }, init = function () { if (!settings.enabled) { return; } $delete = $(deleteBtnTemplate) .find('a').on('click', function (event) { event.preventDefault(); $deleteAuth.hide(); requestDeletion(selectedHrefsStr); }).end() .appendTo('#navbar'); $img = $delete.find('img'); $deleteAuth = $(authTemplate).appendTo('body'); $deleteUser = $deleteAuth.find('#delete-auth-user'); $deletePassword = $deleteAuth.find('#delete-auth-password'); event.sub('selection', onSelection); }; init(); });