Updating posts actually works now...

master
Blog Manager Robot 3 years ago
parent 86e1367d48
commit 7c97d1ca16
  1. 11
      Web/lib/MJB/Web.pm
  2. 31
      Web/lib/MJB/Web/Controller/Dashboard.pm
  3. 2
      Web/templates/dashboard/blog_post.html.ep
  4. 25
      Web/templates/dashboard/blog_posts.html.ep
  5. 21
      libs/MJB-Backend-Jekyll/lib/MJB/Backend/Jekyll.pm
  6. 1
      libs/MJB-Backend-Jekyll/lib/MJB/Backend/Jekyll/MarkdownFile.pm

@ -114,11 +114,12 @@ sub startup ($self) {
$auth->post( '/password' )->to('UserSettings#do_change_password' )->name('do_change_password' ); $auth->post( '/password' )->to('UserSettings#do_change_password' )->name('do_change_password' );
# Dashboard # Dashboard
$auth->get ( '/dashboard' )->to('Dashboard#index' )->name('show_dashboard' ); $auth->get ( '/dashboard' )->to('Dashboard#index' )->name('show_dashboard' );
$auth->get ( '/dashboard/blog/:id' )->to('Dashboard#blog' )->name('show_dashboard_blog' ); $auth->get ( '/dashboard/blog/:id' )->to('Dashboard#blog' )->name('show_dashboard_blog' );
$auth->get ( '/dashboard/blog/:id/posts' )->to('Dashboard#blog_posts' )->name('show_dashboard_blog_posts' ); $auth->get ( '/dashboard/blog/:id/posts' )->to('Dashboard#blog_posts' )->name('show_dashboard_blog_posts' );
$auth->get ( '/dashboard/blog/:id/post/*mdfile' )->to('Dashboard#blog_post' )->name('show_dashboard_blog_post' ); $auth->get ( '/dashboard/blog/:id/post/*mdfile' )->to('Dashboard#blog_post' )->name('show_dashboard_blog_post' );
$auth->get ( '/dashboard/blog/:id/post' )->to('Dashboard#blog_post_create' )->name('show_dashboard_blog_post_create' ); $auth->post( '/dashboard/blog/:id/post/*mdfile' )->to('Dashboard#do_blog_post' )->name('do_dashboard_blog_post' );
$auth->get ( '/dashboard/blog/:id/post' )->to('Dashboard#blog_post_create' )->name('show_dashboard_blog_post_create' );
# Blog Management # Blog Management
$auth->get ( '/blog/create' )->to('Blog#create' )->name('show_blog_create' ); $auth->get ( '/blog/create' )->to('Blog#create' )->name('show_blog_create' );

@ -54,6 +54,37 @@ sub blog_post ( $c ) {
my $post = $c->stash->{post} = $c->jekyll($blog->domain->name)->get_post( $c->param('mdfile') ); my $post = $c->stash->{post} = $c->jekyll($blog->domain->name)->get_post( $c->param('mdfile') );
} }
sub do_blog_post ( $c ) {
my $blog = $c->stash->{blog} = $c->db->blog( $c->param('id') );
if ( $blog->person->id ne $c->stash->{person}->id ) {
$c->render(
text => "Error: This blog isn't owned by you.",
status => 404,
format => 'txt',
);
return;
}
my $title = $c->stash->{form_title} = $c->param('postTitle');
my $date = $c->stash->{form_date} = $c->param('postDate');
my $content = $c->stash->{form_content} = $c->param('postContent');
my $jekyll = $c->jekyll($blog->domain->name);
my $post = $c->stash->{post} = $jekyll->get_post( $c->param('mdfile') );
$post->markdown( $content );
$post->headers->{title} = $title;
$post->headers->{date} = $date;
$jekyll->update_post( $post );
$c->minion->enqueue( 'deploy_blog', [ $blog->id ] );
$c->flash( confirmation => "Updated <strong>$title</strong>!" );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_posts', { id => $blog->id } ) );
}
sub blog_post_create ( $c ) { sub blog_post_create ( $c ) {
my $blog = $c->stash->{blog} = $c->db->blog( $c->param('id') ); my $blog = $c->stash->{blog} = $c->db->blog( $c->param('id') );

@ -21,7 +21,7 @@
</ul> </ul>
<form> <form method="POST" action="<%= $c->url_for( 'do_dashboard_blog_post' ) %>">
<div class="mt-3 mb-3"> <div class="mt-3 mb-3">
<label for="postTitle" class="col-sm-2 col-form-label">Title</label> <label for="postTitle" class="col-sm-2 col-form-label">Title</label>
<input type="text" class="form-control" id="postTitle" name="postTitle" value="<%= $post->headers->{title} %>"> <input type="text" class="form-control" id="postTitle" name="postTitle" value="<%= $post->headers->{title} %>">

@ -17,6 +17,31 @@
</li> </li>
</ul> </ul>
% if ( my $confirmation = flash 'confirmation' ) {
<div style="margin-top: 2em" class="alert alert-success" role="alert">
<%== $confirmation %>
</div>
% }
% if ( $c->stash->{success} ) {
<div style="margin-top: 2em" class="alert alert-success" role="alert">
<%= $c->stash->{success_message} %>
</div>
% }
% if ( $c->stash->{errors} ) {
<div style="margin-top: 2em" class="alert alert-danger" role="alert">
There were errors with your request that could not be resolved:
<ul>
% for my $error ( @{$c->stash->{errors}} ) {
<li><%= $error %></li>
% }
</ul>
</div>
% }
% if ( $blog_posts ) { % if ( $blog_posts ) {
<table style="border: 1px solid #ccc" class="table mt-5"> <table style="border: 1px solid #ccc" class="table mt-5">
<tbody> <tbody>

@ -179,11 +179,26 @@ sub create_post {
} }
sub update_post { sub update_post {
my ( $self, $file, $headers, $content ) = @_; my ( $self, $md_file ) = @_;
$self->delete_post( $file ); $md_file->write;
# Add the file to git
$self->system_command( [ qw( git add ), $md_file->path ], {
chdir => $self->repo_path,
});
# Commit the file
$self->system_command( [ qw( git commit -m ), "Created " . $md_file->headers->{title} ], {
chdir => $self->repo_path,
});
$self->create_post( $headers, $content ); # Push the repo to the store server
$self->system_command( [ qw( git push origin master ) ], {
chdir => $self->repo_path,
});
return 1;
} }
sub delete_post { sub delete_post {

@ -66,6 +66,7 @@ sub write {
or die "Failed to open $file for writing: $!"; or die "Failed to open $file for writing: $!";
print $sf Dump($self->headers); print $sf Dump($self->headers);
print $sf "---\n";
print $sf $self->markdown; print $sf $self->markdown;
close $sf; close $sf;

Loading…
Cancel
Save