parent
c42c947a88
commit
4f4a4ae8d1
5 changed files with 151 additions and 0 deletions
@ -0,0 +1,64 @@ |
||||
package MJB::Web::Controller::Blog; |
||||
use Mojo::Base 'Mojolicious::Controller', -signatures; |
||||
use Try::Tiny; |
||||
|
||||
sub create ($c) { |
||||
|
||||
} |
||||
|
||||
sub do_create ($c) { |
||||
my $domain_type = $c->stash->{form_domain_type} = $c->param('domain_type'); |
||||
my $domain = $c->stash->{form_owned_domain} = $c->param('owned_domain'); |
||||
my $subdomain = $c->stash->{form_hosted_subdomain} = $c->param('hosted_subdomain'); |
||||
|
||||
push @{$c->stash->{errors}}, "Unknown domain type submitted." |
||||
unless $domain_type eq 'owned' or $domain_type eq 'hosted'; |
||||
|
||||
if ( $domain_type eq 'hosted' ) { |
||||
push @{$c->stash->{errors}}, "You must enter a subdomain." |
||||
unless $subdomain; |
||||
|
||||
} elsif ( $domain_type eq 'owned' ) { |
||||
push @{$c->stash->{errors}}, "You must enter a domain." |
||||
unless $domain; |
||||
} |
||||
|
||||
return if $c->stash->{errors}; |
||||
|
||||
$domain = $domain ? $domain : $subdomain . '.' . $c->config->{customer_domain}; |
||||
|
||||
my $blog = try { |
||||
$c->db->storage->schema->txn_do( sub { |
||||
# Make the domain name record. |
||||
my $domain_record = $c->stash->{person}->create_related('domains', { |
||||
name => $domain, |
||||
}); |
||||
|
||||
# Make the website record |
||||
my $blog = $c->stash->{person}->create_related('blogs', { |
||||
domain_id => $domain_record->id, |
||||
}); |
||||
|
||||
return $blog; |
||||
}); |
||||
} catch { |
||||
push @{$c->stash->{errors}}, "Account could not be created: $_"; |
||||
}; |
||||
|
||||
# Choose a web server to deploy to |
||||
return if $c->stash->{errors}; |
||||
|
||||
$domain = $domain ? $domain : $subdomain . '.' . $c->config->{hosted_domain}; |
||||
|
||||
# Create the Jekyll repo for the site |
||||
|
||||
# Configure DNS to point to the blog |
||||
|
||||
# Schedule a job to deploy the website |
||||
|
||||
# Take the user to the management panel for the site |
||||
|
||||
} |
||||
|
||||
|
||||
1; |
||||
@ -0,0 +1,8 @@ |
||||
package MJB::Web::Controller::Dashboard; |
||||
use Mojo::Base 'Mojolicious::Controller', -signatures; |
||||
|
||||
sub index ($c) { |
||||
|
||||
} |
||||
|
||||
1; |
||||
@ -0,0 +1,66 @@ |
||||
% layout 'standard', title => 'Create Blog', sb_active => 'dashboard'; |
||||
|
||||
<h2 class="mt-5 display-6 mb-4">Create a new blog</h2> |
||||
|
||||
<div class="mt-5"> |
||||
<div class="progress" style="height: 1px;"> |
||||
<div class="progress-bar bg-light" role="progressbar" style="width: 33%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> |
||||
<div class="progress-bar" role="progressbar" style="width: 34%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> |
||||
<div class="progress-bar bg-light" role="progressbar" style="width: 33%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div> |
||||
</div> |
||||
<div class="progress mt-1" style="height: 20px;"> |
||||
<div class="progress-bar bg-success" role="progressbar" style="width: 33%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">Connect Repo</div> |
||||
<div class="progress-bar" role="progressbar" style="width: 34%;" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">Choose Domain</div> |
||||
<div class="text-center progress-bar-striped" style="width: 33%">Select Builder</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<h2 style="margin-top: 1.5em; margin-bottom: 1em" class="h2">Choose a domain</h2> |
||||
|
||||
<p>Next you can choose a domain name for your website. You can host your website on a subdomain of <%= $c->config->{customer_domain} %> without any further configuration on your part, just enter YourSiteName below.</p> |
||||
|
||||
<p>If you have your own domain, you can also use that. Be sure to set your DNS records to match *.<%= $c->config->{customer_domain} %>.<p> |
||||
|
||||
% 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> |
||||
% } |
||||
|
||||
<form style="margin-top: 1.5em" method="POST" action="<%= $c->url_for( 'do_blog_create' ) %>"> |
||||
<div class="row"> |
||||
<input type="hidden" name="repo_id" value="<%= stash 'form_repo_id' %>"> |
||||
<div class="col"> |
||||
<div class="mb-4 form-check form-check-inline"> |
||||
<input class="form-check-input" type="radio" name="domain_type" id="inlineRadio1" value="hosted" checked> |
||||
<label class="form-check-label" for="inlineRadio1">Use our domain</label> |
||||
</div> |
||||
<div class="input-group mb-3"> |
||||
<input type="text" name="hosted_subdomain" class="form-control" placeholder="YourSiteName" aria-label="domain name" aria-describedby="domain-addon"> |
||||
<span class="input-group-text" id="domain-addon">.<%= $c->config->{customer_domain} %></span> |
||||
</div> |
||||
</div> |
||||
<div class="col" style="border-left: 1px solid #ccc"> |
||||
<div class="mb-4 form-check form-check-inline"> |
||||
<input class="form-check-input" type="radio" name="domain_type" id="inlineRadio2" value="owned"> |
||||
<label class="form-check-label" for="inlineRadio2">Use a domain you own</label> |
||||
</div> |
||||
|
||||
<div class="input-group mb-3"> |
||||
<input type="text" name ="owned_domain" class="form-control" placeholder="your.domain.com" aria-label="domain name"> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<button type="submit" class="btn btn-primary float-end mt-3">Continue →</button> |
||||
</form> |
||||
@ -0,0 +1,5 @@ |
||||
% layout 'standard', title => 'Dashboard', sb_active => 'dashboard'; |
||||
|
||||
<h2 class="mt-5 display-6 mb-4">This is totes the dashboard</h2> |
||||
|
||||
<a href="<%= $c->url_for( 'show_blog_create' ) %>">Create a new blog</a> |
||||
Loading…
Reference in new issue