pluto3/inc/acf/advanced-custom-fields-pro/admin/views/update-network.php
2017-09-19 16:23:41 +08:00

240 lines
5.1 KiB
PHP

<?php
// vars
$button = __('Upgrade Sites');
// extract
extract($args);
?>
<div id="acf-upgrade-wrap" class="wrap">
<h1><?php _e("Advanced Custom Fields Database Upgrade",'acf'); ?></h1>
<p><?php echo sprintf( __("The following sites require a DB upgrade. Check the ones you want to update and then click %s.", 'acf'), '"' . $button . '"'); ?></p>
<p><input type="submit" name="upgrade" value="<?php echo $button; ?>" class="button" id="upgrade-sites"></p>
<table class="wp-list-table widefat">
<thead>
<tr>
<td class="manage-column check-column" scope="col"><input type="checkbox" id="sites-select-all"></td>
<th class="manage-column" scope="col" style="width:33%;"><label for="sites-select-all"><?php _e("Site", 'acf'); ?></label></th>
<th><?php _e("Description", 'acf'); ?></th>
</tr>
</thead>
<tfoot>
<tr>
<td class="manage-column check-column" scope="col"><input type="checkbox" id="sites-select-all-2"></td>
<th class="manage-column" scope="col"><label for="sites-select-all-2"><?php _e("Site", 'acf'); ?></label></th>
<th><?php _e("Description", 'acf'); ?></th>
</tr>
</tfoot>
<tbody id="the-list">
<?php foreach( $sites as $i => $site ): ?>
<tr<?php if( $i % 2 == 0 ): ?> class="alternate"<?php endif; ?>>
<th class="check-column" scope="row">
<?php if( $site['updates'] ): ?>
<input type="checkbox" value="<?php echo $site['blog_id']; ?>" name="checked[]">
<?php endif; ?>
</th>
<td>
<strong><?php echo $site['name']; ?></strong><br /><?php echo $site['url']; ?>
</td>
<td>
<?php if( $site['updates'] ): ?>
<span class="response"><?php printf(__('Site requires database upgrade from %s to %s', 'acf'), $site['acf_version'], $plugin_version); ?></span>
<?php else: ?>
<?php _e("Site is up to date", 'acf'); ?>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<p><input type="submit" name="upgrade" value="<?php echo $button; ?>" class="button" id="upgrade-sites-2"></p>
<p class="show-on-complete"><?php _e('Database Upgrade complete', 'acf'); ?>. <a href="<?php echo network_admin_url(); ?>"><?php _e("Return to network dashboard",'acf'); ?></a>.</p>
<style type="text/css">
/* hide show */
.show-on-complete {
display: none;
}
</style>
<script type="text/javascript">
(function($) {
var upgrader = {
$buttons: null,
$inputs: null,
i: 0,
init : function(){
// reference
var self = this;
// vars
this.$buttons = $('#upgrade-sites, #upgrade-sites-2');
// events
this.$buttons.on('click', function( e ){
// prevent default
e.preventDefault();
// confirm
var answer = confirm("<?php _e('It is strongly recommended that you backup your database before proceeding. Are you sure you wish to run the updater now?', 'acf'); ?>");
// bail early if no confirm
if( !answer ) {
return;
}
// populate inputs
self.$inputs = $('#the-list input:checked');
// upgrade
self.upgrade();
});
// return
return this;
},
upgrade: function(){
// reference
var self = this;
// bail early if no sites
if( !this.$inputs.length ) {
return;
}
// complete
if( this.i >= this.$inputs.length ) {
this.complete();
return;
}
// disable buttons
this.$buttons.attr('disabled', 'disabled');
// vars
var $input = this.$inputs.eq( this.i ),
$tr = $input.closest('tr'),
text = '<?php _e('Upgrade complete', 'acf'); ?>';
// add loading
$tr.find('.response').html('<i class="acf-loading"></i></span> <?php printf(__('Upgrading data to version %s', 'acf'), $plugin_version); ?>');
// get results
var xhr = $.ajax({
url: '<?php echo admin_url('admin-ajax.php'); ?>',
dataType: 'json',
type: 'post',
data: {
action: 'acf/admin/data_upgrade',
nonce: '<?php echo wp_create_nonce('acf_upgrade'); ?>',
blog_id: $input.val(),
},
success: function( json ){
// remove input
$input.prop('checked', false);
$input.remove();
// vars
var message = acf.get_ajax_message(json);
// bail early if no message text
if( !message.text ) {
return;
}
// update text
text = '<pre>' + message.text + '</pre>';
},
complete: function(){
$tr.find('.response').html( text );
// upgrade next site
self.next();
}
});
},
next: function(){
this.i++;
this.upgrade();
},
complete: function(){
// enable buttons
this.$buttons.removeAttr('disabled');
// show message
$('.show-on-complete').show();
}
}.init();
})(jQuery);
</script>
</div>