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) {
75 if (typeof advanceToNextWhenDone !==
'boolean') {
77 advanceToNextWhenDone =
true;
81 progressbar = upgrade.find(
'.elgg-progressbar');
82 counter = upgrade.find(
'.upgrade-counter');
83 percent = upgrade.find(
'.upgrade-percent');
84 timer = upgrade.find(
'.upgrade-timer');
85 messageList = upgrade.find(
'.upgrade-messages');
86 errorCounter = upgrade.find(
'.upgrade-error-counter');
87 data = upgrade.find(
'.upgrade-data');
90 total = data.attr(
'data-total');
93 guid = upgrade.attr(
'id').replace(
'elgg-object-',
'');
96 $(upgrade).find(
'.elgg-progressbar').progressbar({
98 max: (total == UNKNOWN_COUNT) ? FAKE_TOTAL : total
101 upgradeStartTime =
new Date().getTime();
104 processBatch(advanceToNextWhenDone);
112 function processBatch(advanceToNextWhenDone) {
114 if (typeof advanceToNextWhenDone !==
'boolean') {
116 advanceToNextWhenDone =
true;
123 error:
function(result) {
125 if (result.system_messages.error.length) {
127 $(result.error).each(
function(key,
message) {
128 if ($.inArray(
message, errorMessages) === -1) {
129 var msg =
'<li>' +
message +
'</li>';
130 messageList.append(msg);
136 $(result.errors).each(
function(key,
message) {
137 var msg =
'<li>' +
message +
'</li>';
138 messageList.append(msg);
142 success:
function(result) {
144 numSuccess = parseInt(result.numSuccess);
145 numError = parseInt(result.numErrors);
147 numProcessed += (numSuccess + numError);
150 if (total == UNKNOWN_COUNT) {
151 counter.text(numProcessed +
'/???');
153 counter.text(numProcessed +
'/' + total);
157 if (total == UNKNOWN_COUNT) {
158 fakeDone = Math.round(FAKE_TOTAL - (FAKE_TOTAL - fakeDone) / 2);
159 progressbar.progressbar({
value: fakeDone});
161 percentage = parseInt(numProcessed * 100 / total);
162 progressbar.progressbar({
value: numProcessed});
167 .text(i18n.echo(
'upgrade:error_count', [messages.length]))
168 .css(
'color',
'red');
174 if (total == UNKNOWN_COUNT || result.isComplete) {
175 done = result.isComplete;
177 done = numProcessed >= total;
183 system_messages.error(i18n.echo(
'upgrade:finished_with_errors'));
186 if (total == UNKNOWN_COUNT) {
187 counter.text(numProcessed +
'/' + numProcessed);
188 progressbar.progressbar({
value: FAKE_TOTAL});
192 percent.html(
'100%');
195 numSuccess = numError = numProcessed = percentage = 0;
198 if (advanceToNextWhenDone) {
200 upgrade = upgrade.next();
205 if (upgrade.length) {
207 runUpgrade(advanceToNextWhenDone);
216 if (total != UNKNOWN_COUNT) {
217 percentage = parseInt(numProcessed * 100 / total);
219 percent.html(percentage +
'%');
223 processBatch(advanceToNextWhenDone);
227 var ajax =
new Ajax(
false);
228 return ajax.action(
'admin/upgrade', options);
234 function updateCounter() {
235 var now =
new Date().getTime();
238 var difference = (now - upgradeStartTime) / 1000;
241 var unProcessed = total - numProcessed;
243 var timeLeft = Math.round((difference / numProcessed) * unProcessed);
248 var seconds = timeLeft;
250 if (timeLeft < 3600) {
251 var minutes = Math.floor(timeLeft / 60);
252 var seconds = timeLeft % 60;
255 var hours = Math.floor(timeLeft / 3600);
256 var timeLeft = timeLeft % 3600;
257 var minutes = Math.floor(timeLeft / 60);
258 var seconds = timeLeft % 60;
262 hours = formatDigits(hours);
263 minutes = formatDigits(minutes);
264 seconds = formatDigits(seconds);
266 var
value = hours +
':' + minutes +
':' + seconds;
277 function formatDigits(time) {
278 time = Math.floor(time);
292 if ($(
'.elgg-item-object-elgg_upgrade').length) {
293 $(
'#elgg-upgrades-run').removeClass(
'hidden').click(
run);
296 $(document).
on(
'click',
'.elgg-menu-item-run-upgrade > a', runSingle);
298 upgrades.each(
function(key, value) {
300 $(
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');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=parseInt(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=parseInt(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);var 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(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