diff --git a/app/Quicksave.php b/app/Quicksave.php index aca14a0..a87e2f5 100644 --- a/app/Quicksave.php +++ b/app/Quicksave.php @@ -45,7 +45,7 @@ class Quicksave { public function rollback( $hash, $environment = "production", $version, $type, $value = "" ) { if ( $type == "all") { $command = "quicksave rollback {$this->site_id}-{$environment} $hash --version=$version --all"; - $response = Run::CLI( $command ); + $response = Run::task( $command ); return $response; } $command = "quicksave rollback {$this->site_id}-{$environment} $hash --version=$version --$type=$value"; diff --git a/templates/core.php b/templates/core.php index d056562..43d7b3b 100644 --- a/templates/core.php +++ b/templates/core.php @@ -3168,10 +3168,11 @@ if ( is_plugin_active( 'arve-pro/arve-pro.php' ) ) { ?> {{ item.created_at | pretty_timestamp_epoch }} {{ item.status }} - + + Revert changes mdi-restore + Reapply changes mdi-redo + View Changes mdi-file-compare + @@ -3757,7 +3758,8 @@ if ( is_plugin_active( 'arve-pro/arve-pro.php' ) ) { ?> {{ item.status }} - Rollback Everything mdi-restore + Revert changes mdi-restore + Reapply changes mdi-redo View Changes mdi-file-compare @@ -12477,10 +12479,15 @@ new Vue({ .catch( error => console.log( error ) ); }, - QuicksavesRollback( site_id, quicksave ) { - date = this.$options.filters.pretty_timestamp_epoch(quicksave.created_at) + QuicksavesRollback( site_id, quicksave, version ) { site = this.dialog_site.site - should_proceed = confirm("Will rollback all themes/plugins on " + site.name + " to " + date + ". Proceed?") + environment = this.dialog_site.environment_selected + created_at = quicksave.created_at + if ( version == 'previous' ) { + created_at = quicksave.previous_created_at + } + date = this.$options.filters.pretty_timestamp_epoch(created_at) + should_proceed = confirm("Will rollback all themes/plugins on " + environment.home_url + " to " + date + ". Proceed?") if ( ! should_proceed ) { return; @@ -12491,25 +12498,60 @@ new Vue({ job_id = Math.round((new Date()).getTime()); this.jobs.push({"job_id": job_id,"description": description, "status": "queued", stream: []}); - var data = { - 'action': 'captaincore_install', - 'post_id': site.site_id, - 'hash': quicksave.hash, - 'command': 'quicksave_rollback', - 'environment': this.dialog_site.environment_selected.environment, - }; - - self = this; - - axios.post( ajaxurl, Qs.stringify( data ) ) - .then( response => { - quicksave.loading = false; - self.jobs.filter(job => job.job_id == job_id)[0].job_id = response.data; - self.runCommand( response.data ); - self.snackbar.message = "Rollback in process."; - self.snackbar.show = true; + axios.post( + `/wp-json/captaincore/v1/quicksaves/${quicksave.hash}/rollback`, { + site_id: site.site_id, + environment: environment.environment, + version: version, + type: "all" + }, + { headers: {'X-WP-Nonce':this.wp_nonce} } + ) + .then(response => { + this.jobs.filter(job => job.job_id == job_id)[0].job_id = response.data; + quicksave.loading = false + this.runCommand( response.data ); + this.snackbar.message = "Rollback in progress."; + this.snackbar.show = true; + }) + }, + rollbackUpdates( site_id, quicksave, previous ) { + hash = quicksave.hash_after + created_at = quicksave.created_at + if ( previous ) { + hash = quicksave.hash_before + created_at = quicksave.started_at + } + date = this.$options.filters.pretty_timestamp_epoch(created_at) + site = this.dialog_site.site + environment = this.dialog_site.environment_selected + should_proceed = confirm("Will rollback all themes/plugins on " + environment.home_url + " to " + date + ". Proceed?") + + if ( ! should_proceed ) { + return; + } + + // Start job + description = "Quicksave rollback all themes/plugins on " + site.name + " to " + date + "."; + job_id = Math.round((new Date()).getTime()); + this.jobs.push({"job_id": job_id,"description": description, "status": "queued", stream: []}); + + axios.post( + `/wp-json/captaincore/v1/quicksaves/${hash}/rollback`, { + site_id: site.site_id, + environment: environment.environment, + version: 'this', + type: "all" + }, + { headers: {'X-WP-Nonce':this.wp_nonce} } + ) + .then(response => { + this.jobs.filter(job => job.job_id == job_id)[0].job_id = response.data; + quicksave.view_quicksave = false; + this.runCommand( response.data ); + this.snackbar.message = "Rollback in progress."; + this.snackbar.show = true; }) - .catch( error => console.log( error ) ); }, viewQuicksavesChanges( site_id, quicksave ) {