Ado
view release on metacpan or search on metacpan
lib/Ado/Control/Doc.pm view on Meta::CPAN
package Ado::Control::Doc;
use Mojo::Base 'Ado::Control';
#Renders the page found in md_file
sub show {
my $c = shift;
my $document = $c->md_to_html() || return;
#What will be the tag to wrap around produced HTML?
my $md_file = $c->stash('md_file');
my ($tag, $class, $toc) = ('aside', 'ui large vertical inverted labeled icon sidebar', '');
if ($md_file =~ /toc/) {
($tag) = ('aside');
}
else {
my ($lang) = $md_file =~ m|([^/]{2})/[^/]+$|;
$toc = qq|<$tag id="toc" class="$class">| . $c->md_to_html("$lang/toc.md") . qq|</$tag>|;
($tag, $class) = ('article', 'main container');
}
my ($md_id) = ($md_file =~ /([^\/]+)\.md$/);
$document = Mojo::DOM->new(qq|<$tag id="$md_id" class="$class">$document</$tag>|);
#Is the request made via Ajax? Respond directly - no template.
if ($c->req->headers->header('X-Requested-With') // '' eq 'XMLHttpRequest') {
return $c->render(text => $document->to_string);
}
#Prepare a title for the HTML
$c->_set_title($document);
#Use template show.html.ep with layout doc.html.ep
return $c->render(document => $toc . $document);
}
#prepare a title for the html>head
sub _set_title {
my ($c, $document) = @_;
my $title = $document->find('h1,h2,h3')->[0];
if (not $title) {
$title = 'ÐÑма Ðаглавие!';
$c->title($title);
$document->at('article')->prepend_content(qq|<h1 class="error">$title</h1>|);
}
else {
$c->title($title->text);
}
return;
}
1;
=pod
=encoding utf8
=head1 NAME
Ado::Control::Doc - The controller for the end-user documentation
=head1 SYNOPSIS
#in your browser go to
http://your-host/help
=head1 DESCRIPTION
This is a minimal controller to display and browse end-user documentation
written in markdown format.
=head1 METHODS/ACTIONS
L<Ado::Control::Doc> inherits all the methods from
L<Ado::Control> and defines the following ones.
=head2 show
Renders the page found in C<$c-E<gt>stash('md_file');>.
=head1 SPONSORS
The original author
Become a sponsor and help make L<Ado> the ERP for the enterprise!
=head1 SEE ALSO
L<Ado::Plugin::MarkdownRenderer>,
L<Ado::Control>, L<Mojolicious::Controller>,
L<Mojolicious::Guides::Growing/Model_View_Controller>,
L<Mojolicious::Guides::Growing/Controller_class>
=head1 AUTHOR
ÐÑаÑÐ¸Ð¼Ð¸Ñ ÐеÑов (Krasimir Berov)
=head1 COPYRIGHT AND LICENSE
Copyright 2013-2014 ÐÑаÑÐ¸Ð¼Ð¸Ñ ÐеÑов (Krasimir Berov).
This program is free software, you can redistribute it and/or
modify it under the terms of the
GNU Lesser General Public License v3 (LGPL-3.0).
You may copy, distribute and modify the software provided that
modifications are open source. However, software that includes
the license may release under a different license.
See http://opensource.org/licenses/lgpl-3.0.html for more information.
=cut
( run in 2.656 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )