7 define([
'jquery',
'elgg/Ajax',
'elgg/spinner',
'elgg/popup',
'elgg/system_messages',
'elgg/i18n',
'jquery-ui/widgets/progressbar'],
function($, Ajax, spinner, popup, system_messages, i18n) {
9 var UNKNOWN_COUNT = -1;
10 var upgrades = $(
'.elgg-item-object-elgg_upgrade');
19 var errorMessages = [];
29 var FAKE_TOTAL = 1000000;
38 event.preventDefault();
41 $(
'#elgg-upgrades-run').addClass(
'hidden');
44 upgrade = upgrades.first();
53 function runSingle() {
54 var guid = $(
this).data().guid;
56 if (!$(
'#elgg-object-' + guid).length) {
61 upgrade = $(
'#elgg-object-' + guid);
73 function runUpgrade(advanceToNextWhenDone) {
74 if (typeof advanceToNextWhenDone !==
'boolean') {
75 advanceToNextWhenDone =
true;
79 progressbar = upgrade.find(
'.elgg-progressbar');
80 counter = upgrade.find(
'.upgrade-counter');
81 percent = upgrade.find(
'.upgrade-percent');
82 timer = upgrade.find(
'.upgrade-timer');
83 messageList = upgrade.find(
'.upgrade-messages');
84 errorCounter = upgrade.find(
'.upgrade-error-counter');
85 var data = upgrade.find(
'.upgrade-data');
88 total = data.attr(
'data-total');
91 guid = upgrade.attr(
'id').replace(
'elgg-object-',
'');
94 $(upgrade).find(
'.elgg-progressbar').progressbar({
96 max: (total == UNKNOWN_COUNT) ? FAKE_TOTAL : total
99 upgradeStartTime =
new Date().getTime();
102 processBatch(advanceToNextWhenDone);
110 function processBatch(advanceToNextWhenDone) {
112 if (typeof advanceToNextWhenDone !==
'boolean') {
114 advanceToNextWhenDone =
true;
121 error:
function(result) {
123 if (result.system_messages.error.length) {
125 $(result.error).each(
function(key,
message) {
126 if ($.inArray(
message, errorMessages) === -1) {
127 var msg =
'<li>' +
message +
'</li>';
128 messageList.append(msg);
134 $(result.errors).each(
function(key,
message) {
135 var msg =
'<li>' +
message +
'</li>';
136 messageList.append(msg);
140 success:
function(result) {
142 numSuccess = parseInt(result.numSuccess);
143 numError = parseInt(result.numErrors);
145 numProcessed += (numSuccess + numError);
148 if (total == UNKNOWN_COUNT) {
149 counter.text(numProcessed +
'/???');
151 counter.text(numProcessed +
'/' + total);
155 if (total == UNKNOWN_COUNT) {
156 fakeDone = Math.round(FAKE_TOTAL - (FAKE_TOTAL - fakeDone) / 2);
157 progressbar.progressbar({
value: fakeDone});
159 percentage = Math.round(numProcessed * 100 / total);
160 progressbar.progressbar({
value: numProcessed});
165 .text(i18n.echo(
'upgrade:error_count', [messages.length]))
166 .css(
'color',
'red');
172 if (total == UNKNOWN_COUNT || result.isComplete) {
173 done = result.isComplete;
175 done = numProcessed >= total;
181 system_messages.error(i18n.echo(
'upgrade:finished_with_errors'));
184 if (total == UNKNOWN_COUNT) {
185 counter.text(numProcessed +
'/' + numProcessed);
186 progressbar.progressbar({
value: FAKE_TOTAL});
190 percent.html(
'100%');
193 numSuccess = numError = numProcessed = percentage = 0;
196 if (advanceToNextWhenDone) {
198 upgrade = upgrade.next();
203 if (upgrade.length) {
205 runUpgrade(advanceToNextWhenDone);
214 if (total != UNKNOWN_COUNT) {
215 percentage = Math.round(numProcessed * 100 / total);
217 percent.html(percentage +
'%');
221 processBatch(advanceToNextWhenDone);
225 var ajax =
new Ajax(
false);
226 return ajax.action(
'admin/upgrade', options);
232 function updateCounter() {
233 var now =
new Date().getTime();
236 var difference = (now - upgradeStartTime) / 1000;
239 var unProcessed = total - numProcessed;
241 var timeLeft = Math.round((difference / numProcessed) * unProcessed);
246 var seconds = timeLeft;
248 if (timeLeft < 3600) {
249 var minutes = Math.floor(timeLeft / 60);
250 var seconds = timeLeft % 60;
253 var hours = Math.floor(timeLeft / 3600);
254 timeLeft = timeLeft % 3600;
255 var minutes = Math.floor(timeLeft / 60);
256 var seconds = timeLeft % 60;
260 hours = formatDigits(hours);
261 minutes = formatDigits(minutes);
262 seconds = formatDigits(seconds);
264 var
value = hours +
':' + minutes +
':' + seconds;
276 function formatDigits(time) {
277 time = Math.floor(parseInt(time));
291 if ($(
'.elgg-item-object-elgg_upgrade').length) {
292 $(
'#elgg-upgrades-run').removeClass(
'hidden').click(
run);
295 $(document).
on(
'click',
'.elgg-menu-item-run-upgrade > a', runSingle);
297 upgrades.each(
function(key, value) {
299 $(
value).find(
'.elgg-progressbar').progressbar();
and give any other recipients of the Program a copy of this License along with the Program You may charge a fee for the physical act of transferring a and you may at your option offer warranty protection in exchange for a fee You may modify your copy or copies of the Program or any portion of thus forming a work based on the and copy and distribute such modifications or work under the terms of Section provided that you also meet all of these that in whole or in part contains or is derived from the Program or any part to be licensed as a whole at no charge to all third parties under the terms of this License c If the modified program normally reads commands interactively when run
define(['jquery', 'elgg/Ajax', 'elgg/spinner', 'elgg/popup', 'elgg/system_messages', 'elgg/i18n', 'jquery-ui/widgets/progressbar'], function($, Ajax, spinner, popup, system_messages, i18n){var UNKNOWN_COUNT=-1;var upgrades=$('.elgg-item-object-elgg_upgrade');var upgrade;var guid;var progressbar;var upgradeStartTime;var timer;var counter;var percent;var errorCounter;var errorMessages=[];var numSuccess;var numError;var numProcessed=0;var total;var messages=[];var messageList;var percentage=0;var FAKE_TOTAL=1000000;var fakeDone=0;function run(event){event.preventDefault();$('#elgg-upgrades-run').addClass('hidden');spinner.start();upgrade=upgrades.first();runUpgrade();return false;}function runSingle(){var guid=$(this).data().guid;if(!$('#elgg-object-'+guid).length){return;}spinner.start();upgrade=$('#elgg-object-'+guid);runUpgrade(false);popup.close();}function runUpgrade(advanceToNextWhenDone){if(typeof advanceToNextWhenDone!== 'boolean'){advanceToNextWhenDone=true;}upgrade=$(upgrade);progressbar=upgrade.find('.elgg-progressbar');counter=upgrade.find('.upgrade-counter');percent=upgrade.find('.upgrade-percent');timer=upgrade.find('.upgrade-timer');messageList=upgrade.find('.upgrade-messages');errorCounter=upgrade.find('.upgrade-error-counter');var data=upgrade.find('.upgrade-data');total=data.attr('data-total');guid=upgrade.attr('id').replace('elgg-object-', '');$(upgrade).find('.elgg-progressbar').progressbar({value:0, max:(total==UNKNOWN_COUNT)?FAKE_TOTAL:total});upgradeStartTime=new Date().getTime();percentage=0;processBatch(advanceToNextWhenDone);}function processBatch(advanceToNextWhenDone){if(typeof advanceToNextWhenDone!== 'boolean'){advanceToNextWhenDone=true;}var options={data:{guid:guid}, error:function(result){if(result.system_messages.error.length){$(result.error).each(function(key, message){if($.inArray(message, errorMessages)===-1){var msg= '< li >'+message+ '</li >';messageList.append(msg);messages.push(message);}});}$(result.errors).each(function(key, message){var msg= '< li >'+message+ '</li >';messageList.append(msg);messages.push(message);});}, success:function(result){numSuccess=parseInt(result.numSuccess);numError=parseInt(result.numErrors);numProcessed+=(numSuccess+numError);if(total==UNKNOWN_COUNT){counter.text(numProcessed+ '/?^);}else{counter.text(numProcessed+ '/'+total);}if(total==UNKNOWN_COUNT){fakeDone=Math.round(FAKE_TOTAL-(FAKE_TOTAL-fakeDone)/2);progressbar.progressbar({value:fakeDone});}else{percentage=Math.round(numProcessed *100/total);progressbar.progressbar({value:numProcessed});}if(numError > 0){errorCounter.text(i18n.echo('upgrade:error_count', [messages.length])).css('color', 'red');}updateCounter();var done;if(total==UNKNOWN_COUNT||result.isComplete){done=result.isComplete;}else{done=numProcessed >=total;}if(done){if(numError > 0){system_messages.error(i18n.echo('upgrade:finished_with_errors'));}if(total==UNKNOWN_COUNT){counter.text(numProcessed+ '/'+numProcessed);progressbar.progressbar({value:FAKE_TOTAL});}percent.html('100%');numSuccess=numError=numProcessed=percentage=0;messages=[];if(advanceToNextWhenDone){upgrade=upgrade.next();}else{upgrade= '';}if(upgrade.length){runUpgrade(advanceToNextWhenDone);}else{spinner.stop();}return;}if(total!=UNKNOWN_COUNT){percentage=Math.round(numProcessed *100/total);percent.html(percentage+ '%');}processBatch(advanceToNextWhenDone);}};var ajax=new Ajax(false);return ajax.action('admin/upgrade', options);}function updateCounter(){var now=new Date().getTime();var difference=(now-upgradeStartTime)/1000;var unProcessed=total-numProcessed;var timeLeft=Math.round((difference/numProcessed)*unProcessed);if(timeLeft< 60){var hours= '00';var minutes= '00';var seconds=timeLeft;}else{if(timeLeft< 3600){var minutes=Math.floor(timeLeft/60);var seconds=timeLeft%60;var hours= '00';}else{var hours=Math.floor(timeLeft/3600);timeLeft=timeLeft%3600;var minutes=Math.floor(timeLeft/60);var seconds=timeLeft%60;}}hours=formatDigits(hours);minutes=formatDigits(minutes);seconds=formatDigits(seconds);var value=hours+ ':'+minutes+ ':'+seconds;timer.html(value);}function formatDigits(time){time=Math.floor(parseInt(time));if(time< 1){return '00';}if(time< 10){return '0'+time;}return time;}if($('.elgg-item-object-elgg_upgrade').length){$('#elgg-upgrades-run').removeClass('hidden').click(run);}$(document).on('click', '.elgg-menu-item-run-upgrade > a', runSingle);upgrades.each(function(key, value){$(value).find('.elgg-progressbar').progressbar();});})
Javascript that takes care of running batch upgrades.
Bundled plugins(the contents of the"/mod"directory) are available only under the GPLv2 license.The remainder of the project is available under either MIT or GPLv2.Both licenses can be found below.More info and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two distribute and or modify the software for each author s protection and we want to make certain that everyone understands that there is no warranty for this free software If the software is modified by someone else and passed on