Raw editor for posts.

master
Blog Manager Robot 3 years ago
parent e20aabcb64
commit 515bb202b9
  1. 2
      Web/lib/MJB/Web.pm
  2. 25
      Web/lib/MJB/Web/Controller/Dashboard.pm
  3. 17
      Web/templates/dashboard/blog_config.html.ep
  4. 34
      Web/templates/dashboard/blog_post_alter.html.ep
  5. 5
      Web/templates/dashboard/blog_post_edit.html.ep

@ -151,6 +151,8 @@ sub startup ($self) {
$blog->post( '/post' )->to('Dashboard#do_blog_post' )->name('do_dashboard_blog_post' );
$blog->get ( '/post/edit' )->to('Dashboard#blog_post_edit' )->name('show_dashboard_blog_post_edit' );
$blog->post( '/post/edit' )->to('Dashboard#do_blog_post_edit' )->name('do_dashboard_blog_post_edit' );
$blog->get ( '/post/alter' )->to('Dashboard#blog_post_alter' )->name('show_dashboard_blog_post_alter' );
$blog->post( '/post/alter' )->to('Dashboard#do_blog_post_alter' )->name('do_dashboard_blog_post_alter' );
$blog->post( '/post/remove' )->to('Dashboard#do_blog_post_remove' )->name('do_dashboard_blog_post_remove' );
$blog->get ( '/settings' )->to('Dashboard#blog_settings' )->name('show_dashboard_blog_settings' );
$blog->post( '/settings' )->to('Dashboard#do_blog_settings' )->name('do_dashboard_blog_settings' );

@ -23,6 +23,12 @@ sub blog_post_edit ( $c ) {
my $post = $c->stash->{post} = $c->jekyll($blog->domain->name)->get_post( $c->param('mdfile') );
}
sub blog_post_alter ( $c ) {
my $blog = $c->stash->{blog};
my $post = $c->stash->{post} = $c->jekyll($blog->domain->name)->get_post( $c->param('mdfile') );
}
sub do_blog_post_remove ( $c ) {
my $blog = $c->stash->{blog};
@ -305,6 +311,25 @@ sub do_blog_page_edit ( $c ) {
$c->redirect_to( $c->url_for( 'show_dashboard_blog_pages', { id => $blog->id } ) );
}
sub do_blog_post_alter ( $c ) {
my $blog = $c->stash->{blog};
my $post = $c->stash->{post} = $c->jekyll($blog->domain->name)->get_post( $c->param('mdfile') );
my $content = $c->param('postContent');
my $headers = $c->param('postHeaders');
$post->set_headers_from_string( $headers );
$post->markdown( $content );
$c->jekyll($blog->domain->name)->write_post( $post );
$c->deploy_blog( $blog );
$c->flash( confirmation => "Updated Post " . $post->headers->{title} . "!" );
$c->redirect_to( $c->url_for( 'show_dashboard_blog_posts', { id => $blog->id } ) );
}
sub blog_page ( $c ) {
my $blog = $c->stash->{blog};
}

@ -1,21 +1,6 @@
% layout 'standard', title => 'Dashboard', sb_active => 'dashboard';
%= include 'dashboard/_blog_nav'
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link" aria-current="page" href="<%= $c->url_for( 'show_dashboard_blog' ) %>">Info</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<%= $c->url_for( 'show_dashboard_blog_posts' ) %>">Posts</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="<%= $c->url_for( 'show_dashboard_blog_settings' ) %>">Settings</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<%= $c->url_for( 'show_dashboard_blog_hooks' ) %>">Hooks</a>
</li>
</ul>
%= include 'dashboard/_blog_nav', page => 'settings'
% if ( my $confirmation = flash 'confirmation' ) {
<div style="margin-top: 2em" class="alert alert-success" role="alert">

@ -0,0 +1,34 @@
% layout 'standard', title => 'Dashboard', sb_active => 'dashboard';
%= include 'dashboard/_blog_nav', page => 'edit'
<p class="mt-3 fs-4" >Editing <span class="fw-bolder"><%= $post->headers->{title} %></span></p>
<form method="POST" action="<%= $c->url_for( 'do_dashboard_blog_post_alter' ) %>">
<input type="hidden" name="mdfile" value="<%= $post->filename %>">
<div class="mb-3">
<label for="postHeaders" class="form-label">
Page Headers -
See <a target="_blank" href="https://jekyllrb.com/docs/front-matter/">Jekyll Front Matter Docs</a>
</label>
<textarea class="form-control" id="postHeaders" name="postHeaders" rows="5"><%= $post->headers_as_string %></textarea>
</div>
<div class="mb-3">
<label for="postContent" class="form-label">
Post Content -
See <a target="_blank" href="https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax">Markdown Syntax Docs</a>
</label>
<textarea class="form-control" id="postContent" name="postContent" rows="25"><%= $post->markdown %></textarea>
</div>
<div class="mb-3">
<input type="submit" class="btn btn-primary btn-sm float-end" width="100%" value="Update Post">
</div>
</form>
<a href="<%= $c->url_for( 'show_dashboard_blog_post_edit', { id => $blog->id } )->query(mdfile => $post->filename) %>">Show Simple Editor (Go Back)</a>

@ -2,7 +2,9 @@
%= include 'dashboard/_blog_nav', page => 'edit'
<form method="POST" action="<%= $c->url_for( 'do_dashboard_blog_post' ) %>">
<form method="POST" action="<%= $c->url_for( 'do_dashboard_blog_post_edit' ) %>">
<input type="hidden" name="mdfile" value="<%= $post->filename %>">
<div class="mt-3 mb-3">
<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} %>">
@ -27,3 +29,4 @@
</form>
<a href="<%= $c->url_for( 'show_dashboard_blog_post_alter', { id => $blog->id } )->query(mdfile => $post->filename) %>">Advanced Editor</a>

Loading…
Cancel
Save