diff --git a/Web/lib/MJB/Web.pm b/Web/lib/MJB/Web.pm
index f6275f2..f972509 100644
--- a/Web/lib/MJB/Web.pm
+++ b/Web/lib/MJB/Web.pm
@@ -31,6 +31,14 @@ sub startup ($self) {
);
});
+ $self->helper( deploy_blog => sub ( $c, $blog ) {
+ my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], {
+ notes => { '_bid_' . $blog->id => 1 },
+ priority => $blog->build_priority,
+ });
+ $blog->create_related( 'builds', { job_id => $build_job_id } );
+ });
+
# Minion plugin & tasks
$self->plugin( Minion => { Pg => $self->config->{database}->{minion} } );
diff --git a/Web/lib/MJB/Web/Controller/Dashboard.pm b/Web/lib/MJB/Web/Controller/Dashboard.pm
index fa14860..2939f8c 100644
--- a/Web/lib/MJB/Web/Controller/Dashboard.pm
+++ b/Web/lib/MJB/Web/Controller/Dashboard.pm
@@ -1,6 +1,7 @@
package MJB::Web::Controller::Dashboard;
use Mojo::Base 'Mojolicious::Controller', -signatures;
+
sub index ($c) {
push @{$c->stash->{blogs}},
$c->stash->{person}->search_related('blogs')->all;
@@ -30,11 +31,7 @@ sub do_blog_post_remove ( $c ) {
$jekyll->remove_markdown_file( $post );
- my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], {
- notes => { '_bid_' . $blog->id => 1 },
- priority => $blog->build_priority,
- });
- $blog->create_related( 'builds', { job_id => $build_job_id } );
+ $c->deploy_blog( $blog );
$c->flash( confirmation => "That post has been removed." );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_posts', { id => $blog->id } ) );
@@ -58,11 +55,7 @@ sub do_blog_post_edit ( $c ) {
$jekyll->write_post( $post );
- my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], {
- notes => { '_bid_' . $blog->id => 1 },
- priority => $blog->build_priority,
- });
- $blog->create_related( 'builds', { job_id => $build_job_id } );
+ $c->deploy_blog( $blog );
$c->flash( confirmation => "Updated $title!" );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_posts', { id => $blog->id } ) );
@@ -107,11 +100,7 @@ sub do_blog_post ( $c ) {
$jekyll->write_post( $post );
- my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], {
- notes => { '_bid_' . $blog->id => 1 },
- priority => $blog->build_priority,
- });
- $blog->create_related( 'builds', { job_id => $build_job_id } );
+ $c->deploy_blog( $blog );
$c->flash( confirmation => "Created $title!" );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_posts', { id => $blog->id } ) );
@@ -141,6 +130,8 @@ sub do_blog_settings ($c) {
$jekyll->config->data->{email} = $email;
$jekyll->write_config;
+
+ $c->deploy_blog( $blog );
$c->flash( confirmation => "The settings have been updated!!" );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_settings', { id => $blog->id } ) );
@@ -167,6 +158,8 @@ sub do_blog_config ( $c ) {
$jekyll->write_config;
+ $c->deploy_blog( $blog );
+
$c->flash( confirmation => "The config has been updated!!" );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_config', { id => $blog->id } ) );
}
@@ -192,11 +185,7 @@ sub do_blog_media_remove( $c ) {
$jekyll->remove_file( $media_file->to_string, "Removed media file" . $media_file->basename );
}
- my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], {
- notes => { '_bid_' . $blog->id => 1 },
- priority => $blog->build_priority,
- });
- $blog->create_related( 'builds', { job_id => $build_job_id } );
+ $c->deploy_blog( $blog );
$c->flash( confirmation => "Removed " . $media_file->basename );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_media', { id => $blog->id } ) );
@@ -221,11 +210,7 @@ sub do_blog_media ( $c ) {
"Add media " . $upload->filename
);
- my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], {
- notes => { '_bid_' . $blog->id => 1 },
- priority => $blog->build_priority,
- });
- $blog->create_related( 'builds', { job_id => $build_job_id } );
+ $c->deploy_blog( $blog );
$c->flash( confirmation => "Uploaded file!" );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_media', { id => $blog->id } ) );
@@ -251,6 +236,8 @@ sub do_blog_history ( $c ) {
if ( $old_commit ) {
$jekyll->revert_commit( $commit );
+ $c->deploy_blog( $blog );
+
$c->flash( confirmation => "Undid $commit!" );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_history', { id => $blog->id } ) );
}
@@ -287,11 +274,7 @@ sub do_blog_page_remove ( $c ) {
$jekyll->remove_markdown_file( $page );
- my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], {
- notes => { '_bid_' . $blog->id => 1 },
- priority => $blog->build_priority,
- });
- $blog->create_related( 'builds', { job_id => $build_job_id } );
+ $c->deploy_blog( $blog );
$c->flash( confirmation => "That page has been removed." );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_pages', { id => $blog->id } ) );
@@ -316,11 +299,7 @@ sub do_blog_page_edit ( $c ) {
$jekyll->write_post( $blog_page );
- my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], {
- notes => { '_bid_' . $blog->id => 1 },
- priority => $blog->build_priority,
- });
- $blog->create_related( 'builds', { job_id => $build_job_id } );
+ $c->deploy_blog( $blog );
$c->flash( confirmation => "Updated Page " . $blog_page->filename . "!" );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_pages', { id => $blog->id } ) );
@@ -346,15 +325,10 @@ sub do_blog_page ( $c ) {
$jekyll->write_post( $page );
- my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], {
- notes => { '_bid_' . $blog->id => 1 },
- priority => $blog->build_priority,
- });
- $blog->create_related( 'builds', { job_id => $build_job_id } );
+ $c->deploy_blog( $blog );
$c->flash( confirmation => "Created Page " . $page->filename . "!" );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_pages', { id => $blog->id } ) );
-
}
1;