Commit c7ce032f by Alex Bush

admin side

1 parent 8fc4a7bd
#!/usr/bin/env perl
use Mojolicious::Lite;
use utf8;
use Mojo::ByteStream 'b';
use DBIx::Custom;
use Mojo::Headers;
# Documentation browser under "/perldoc"
plugin 'PODRenderer';
my $config = plugin 'Config';
app->secret($config->{secret} || 'minecraft');
plugin charset => {charset => $config->{encoding}};
# Connect to db
our $dbi = DBIx::Custom->connect(
dsn => "dbi:$config->{db_driver}:database=$config->{db}",
option => {sqlite_unicode => 1},
);
sub wikitree {
my $tree_row = $dbi->select(
['url', 'name'],
table => 'wiki',
);
my $tree = $tree_row->all;
return $tree;
};
get '/' => sub {
my $self = shift;
my @wikitree = wikitree();
$self->render(
template => 'index',
title => 'Welcome',
layout => 'default',
wikitree => \@wikitree,
);
};
......@@ -18,7 +46,7 @@ get '/download' => sub {
my $self = shift;
my @files = glob("public/data/*.zip");
my @wikitree = wikitree();
my @data;
foreach my $x (@files) {
......@@ -31,16 +59,183 @@ get '/download' => sub {
title => 'Download',
layout => 'default',
folders => \@data,
wikitree => \@wikitree,
);
};
get '/wiki/:url' => sub {
my $self = shift;
my $url = $self->param('url');
my @wikitree = wikitree();
my $page_row = $dbi->select(
['page', 'id'],
table => 'wiki',
where => { url => $url },
);
my $page = $page_row->one;
$self->render(
template => 'wiki',
title => 'Wiki',
layout => 'default',
wikitree => \@wikitree,
page => $page,
url => $url,
);
};
get '/wiki' => sub {
my $self = shift;
my @wikitree = wikitree();
my $page_row = $dbi->select(
['page', 'id'],
table => 'wiki',
);
my $page = $page_row->one;
$self->render(
template => 'wiki',
title => 'Wiki',
layout => 'default',
wikitree => \@wikitree,
page => $page,
url => 1,
);
};
post '/login' => sub {
my $self = shift;
my $login = $self->param('username') || '';
my $password = $self->param('password') || '';
my $redirect = $self->param('redirect') || '/';
if ( $login eq $config->{username} ) {
if ( $password eq $config->{userpass} ) {
$self->session( 'login' => $login );
} else {
$redirect = '/';
}
} else {
$redirect = '/';
}
$self->redirect_to( $redirect );
};
get '/logout' => sub {
my $self = shift;
$self->session( 'expires' => 1 );
$self->redirect_to( '/' );
};
# Authentication
under sub {
my $self = shift;
# Authenticated
return 1
if $self->session( 'login' );
# Not authenticated
$self->flash( 'message' => 'You are not logged in' );
$self->render(
title => 'login',
'template' => 'login',
'status' => 401,
);
return;
};
get '/wiki/:url/edit' => sub {
my $self = shift;
my $url = $self->param('url');
my @wikitree = wikitree();
my $page_row = $dbi->select(
['id', 'page', 'url', 'name'],
table => 'wiki',
where => { url => $url },
);
my $page = $page_row->one;
$self->render(
template => 'wiki/edit',
title => 'Wiki',
layout => 'default',
wikitree => \@wikitree,
page => $page,
url => $url,
);
};
get '/wiki/add/new' => sub {
my $self = shift;
my $url = $self->param('url');
my @wikitree = wikitree();
$self->render(
template => 'wiki/new',
title => 'Wiki',
layout => 'default',
wikitree => \@wikitree,
);
};
get '/wiki/:id/delete' => sub {
my $self = shift;
my $id = $self->param('id');
my $status = $dbi->delete(
table => 'wiki',
where => { id => $id }
);
$self->redirect_to('/wiki');
};
post '/wiki/:id/edit' => sub {
my $self = shift;
my $id = $self->param('page_id');
my $url = $self->param('page_url');
my $page = $self->param('page_text');
my $name = $self->param('page_name');
$dbi->update(
{
url => $url,
page => $page,
name => $name,
},
table => 'wiki',
where => { id => $id }
);
$self->redirect_to("/wiki/$url");
};
post '/wiki/add/new' => sub {
my $self = shift;
my $id = $self->param('page_id');
my $url = $self->param('page_url');
my $page = $self->param('page_text');
my $name = $self->param('page_name');
$dbi->insert(
{
url => $url,
page => $page,
name => $name,
},
table => 'wiki',
);
$self->redirect_to("/wiki/$url");
};
app->start;
......
{
secret => 'minecraft',
encoding => 'utf-8',
db_driver => 'SQLite',
db => 'minecraft.sqlite',
username => 'admin',
userpass => 'test',
};
\ No newline at end of file
No preview for this file type
.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}
.clearfix:after{clear:both;}
.hide-text{overflow:hidden;text-indent:100%;white-space:nowrap;}
.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}
.hidden{display:none;visibility:hidden;}
.visible-phone{display:none;}
.visible-tablet{display:none;}
.visible-desktop{display:block;}
.hidden-phone{display:block;}
.hidden-tablet{display:block;}
.hidden-desktop{display:none;}
@media (max-width:767px){.visible-phone{display:block;} .hidden-phone{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}@media (min-width:768px) and (max-width:979px){.visible-tablet{display:block;} .hidden-tablet{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} .navbar-fixed-top{margin-left:-20px;margin-right:-20px;} .container{width:auto;} .row-fluid{width:100%;} .row{margin-left:0;} .row>[class*="span"],.row-fluid>[class*="span"]{float:none;display:block;width:auto;margin:0;} .thumbnails [class*="span"]{width:auto;} input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} .input-prepend input[class*="span"],.input-append input[class*="span"]{width:auto;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:20px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.762430939%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:99.999999993%;} .row-fluid > .span11{width:91.436464082%;} .row-fluid > .span10{width:82.87292817100001%;} .row-fluid > .span9{width:74.30939226%;} .row-fluid > .span8{width:65.74585634900001%;} .row-fluid > .span7{width:57.182320438000005%;} .row-fluid > .span6{width:48.618784527%;} .row-fluid > .span5{width:40.055248616%;} .row-fluid > .span4{width:31.491712705%;} .row-fluid > .span3{width:22.928176794%;} .row-fluid > .span2{width:14.364640883%;} .row-fluid > .span1{width:5.801104972%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:714px;} input.span11, textarea.span11, .uneditable-input.span11{width:652px;} input.span10, textarea.span10, .uneditable-input.span10{width:590px;} input.span9, textarea.span9, .uneditable-input.span9{width:528px;} input.span8, textarea.span8, .uneditable-input.span8{width:466px;} input.span7, textarea.span7, .uneditable-input.span7{width:404px;} input.span6, textarea.span6, .uneditable-input.span6{width:342px;} input.span5, textarea.span5, .uneditable-input.span5{width:280px;} input.span4, textarea.span4, .uneditable-input.span4{width:218px;} input.span3, textarea.span3, .uneditable-input.span3{width:156px;} input.span2, textarea.span2, .uneditable-input.span2{width:94px;} input.span1, textarea.span1, .uneditable-input.span1{width:32px;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{float:none;margin:0 0 9px;} .navbar .nav>li{float:none;} .navbar .nav>li>a{margin-bottom:2px;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav .nav-header{color:#999999;text-shadow:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);} .navbar .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:100%;} .row-fluid > .span11{width:91.45299145300001%;} .row-fluid > .span10{width:82.905982906%;} .row-fluid > .span9{width:74.358974359%;} .row-fluid > .span8{width:65.81196581200001%;} .row-fluid > .span7{width:57.264957265%;} .row-fluid > .span6{width:48.717948718%;} .row-fluid > .span5{width:40.170940171000005%;} .row-fluid > .span4{width:31.623931624%;} .row-fluid > .span3{width:23.076923077%;} .row-fluid > .span2{width:14.529914530000001%;} .row-fluid > .span1{width:5.982905983%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:1160px;} input.span11, textarea.span11, .uneditable-input.span11{width:1060px;} input.span10, textarea.span10, .uneditable-input.span10{width:960px;} input.span9, textarea.span9, .uneditable-input.span9{width:860px;} input.span8, textarea.span8, .uneditable-input.span8{width:760px;} input.span7, textarea.span7, .uneditable-input.span7{width:660px;} input.span6, textarea.span6, .uneditable-input.span6{width:560px;} input.span5, textarea.span5, .uneditable-input.span5{width:460px;} input.span4, textarea.span4, .uneditable-input.span4{width:360px;} input.span3, textarea.span3, .uneditable-input.span3{width:260px;} input.span2, textarea.span2, .uneditable-input.span2{width:160px;} input.span1, textarea.span1, .uneditable-input.span1{width:60px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;}}
ul.wysihtml5-toolbar {
margin: 0;
padding: 0;
display: block;
}
ul.wysihtml5-toolbar::after {
clear: both;
display: table;
content: "";
}
ul.wysihtml5-toolbar > li {
float: left;
display: list-item;
list-style: none;
margin: 0 5px 10px 0;
}
ul.wysihtml5-toolbar a[data-wysihtml5-command=bold] {
font-weight: bold;
}
ul.wysihtml5-toolbar a[data-wysihtml5-command=italic] {
font-style: italic;
}
ul.wysihtml5-toolbar a[data-wysihtml5-command=underline] {
text-decoration: underline;
}
ul.wysihtml5-toolbar a.btn.wysihtml5-command-active {
background-image: none;
-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);
-moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);
background-color: #E6E6E6;
background-color: #D9D9D9;
outline: 0;
}
ul.wysihtml5-commands-disabled .dropdown-menu {
display: none !important;
}
ul.wysihtml5-toolbar div.wysihtml5-colors {
display:block;
width: 50px;
height: 20px;
margin-top: 2px;
margin-left: 5px;
position: absolute;
pointer-events: none;
}
ul.wysihtml5-toolbar a.wysihtml5-colors-title {
padding-left: 70px;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="black"] {
background: black !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="silver"] {
background: silver !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="gray"] {
background: gray !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="maroon"] {
background: maroon !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="red"] {
background: red !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="purple"] {
background: purple !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="green"] {
background: green !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="olive"] {
background: olive !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="navy"] {
background: navy !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="blue"] {
background: blue !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="orange"] {
background: orange !important;
}
......@@ -17,4 +17,5 @@ body { background: url(/img/linen-gray.png); }
border-radius: 5px 5px 0px 0px;
background: -moz-linear-gradient(center top , rgb(73, 72, 82), rgb(42, 42, 48)) repeat scroll 0% 0% / 100% auto rgb(42, 42, 48);
}
.box-body { padding: 1%; }
\ No newline at end of file
.box-body { padding: 1%; }
.white_rabbit { background-color: #fff; }
\ No newline at end of file
.com { color: #93a1a1; }
.lit { color: #195f91; }
.pun, .opn, .clo { color: #93a1a1; }
.fun { color: #dc322f; }
.str, .atv { color: #D14; }
.kwd, .linenums .tag { color: #1e347b; }
.typ, .atn, .dec, .var { color: teal; }
.pln { color: #48484c; }
.prettyprint {
padding: 8px;
background-color: #f7f7f9;
border: 1px solid #e1e1e8;
}
.prettyprint.linenums {
-webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
-moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
}
/* Specify class=linenums on a pre to get line numbering */
ol.linenums {
margin: 0 0 0 33px; /* IE indents via margin-left */
}
ol.linenums li {
padding-left: 12px;
color: #bebec5;
line-height: 18px;
text-shadow: 0 1px 0 #fff;
}
\ No newline at end of file
.wysiwyg-color-black {
color: black;
}
.wysiwyg-color-silver {
color: silver;
}
.wysiwyg-color-gray {
color: gray;
}
.wysiwyg-color-white {
color: white;
}
.wysiwyg-color-maroon {
color: maroon;
}
.wysiwyg-color-red {
color: red;
}
.wysiwyg-color-purple {
color: purple;
}
.wysiwyg-color-fuchsia {
color: fuchsia;
}
.wysiwyg-color-green {
color: green;
}
.wysiwyg-color-lime {
color: lime;
}
.wysiwyg-color-olive {
color: olive;
}
.wysiwyg-color-yellow {
color: yellow;
}
.wysiwyg-color-navy {
color: navy;
}
.wysiwyg-color-blue {
color: blue;
}
.wysiwyg-color-teal {
color: teal;
}
.wysiwyg-color-aqua {
color: aqua;
}
.wysiwyg-color-orange {
color: orange;
}
\ No newline at end of file
/* ============================================================
* bootstrap-button.js v2.0.2
* http://twitter.github.com/bootstrap/javascript.html#buttons
* ============================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============================================================ */
!function( $ ){
"use strict"
/* BUTTON PUBLIC CLASS DEFINITION
* ============================== */
var Button = function ( element, options ) {
this.$element = $(element)
this.options = $.extend({}, $.fn.button.defaults, options)
}
Button.prototype = {
constructor: Button
, setState: function ( state ) {
var d = 'disabled'
, $el = this.$element
, data = $el.data()
, val = $el.is('input') ? 'val' : 'html'
state = state + 'Text'
data.resetText || $el.data('resetText', $el[val]())
$el[val](data[state] || this.options[state])
// push to event loop to allow forms to submit
setTimeout(function () {
state == 'loadingText' ?
$el.addClass(d).attr(d, d) :
$el.removeClass(d).removeAttr(d)
}, 0)
}
, toggle: function () {
var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
$parent && $parent
.find('.active')
.removeClass('active')
this.$element.toggleClass('active')
}
}
/* BUTTON PLUGIN DEFINITION
* ======================== */
$.fn.button = function ( option ) {
return this.each(function () {
var $this = $(this)
, data = $this.data('button')
, options = typeof option == 'object' && option
if (!data) $this.data('button', (data = new Button(this, options)))
if (option == 'toggle') data.toggle()
else if (option) data.setState(option)
})
}
$.fn.button.defaults = {
loadingText: 'loading...'
}
$.fn.button.Constructor = Button
/* BUTTON DATA-API
* =============== */
$(function () {
$('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
var $btn = $(e.target)
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
$btn.button('toggle')
})
})
}( window.jQuery );
\ No newline at end of file
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
......@@ -6,6 +6,8 @@
</div>
-->
<div class="row">
<div class="well">
<div class="box">
<div class="box-header">Файлы для загрузки:</div>
<div class="box-body">
......@@ -18,3 +20,5 @@
</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
<div class="row">
<div class="well">
<div class="row">
<div class="span5">
<div class="box">
......@@ -8,4 +9,6 @@
</div>
</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
......@@ -3,10 +3,15 @@
<head>
<title>Minecraft style | <%= title %></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/css/style.css" rel="stylesheet" media="screen">
<meta charset="utf-8">
<link href="/css/bootstrap.css" rel="stylesheet" media="screen">
<link href="/css/mystyle.css" rel="stylesheet" media="screen">
<script src="http://code.jquery.com/jquery.js"></script>
<script src="/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="/css/bootstrap-wysihtml5.css">
<script src="/js/bootstrap-wysihtml5.js"></script>
</head>
<body>
......@@ -18,11 +23,39 @@
<li><a href="/download">Download</a></li>
<li><a href="/wiki">wiki</a></li>
</ul>
<ul class="nav pull-right">\
% if ( my $login = session 'login' ) {
<li class="divider-vertical"></li>
<li class="dropdown">
<a class="dropdown-toggle" href="#" data-toggle="dropdown">
Admin <strong class="caret"></strong>
</a>
<ul class="dropdown-menu">
<li><a href="/logout">Logout</a></li>
</ul>
</li>
% } else {
<li class="divider-vertical"></li>
<li class="dropdown">
<a class="dropdown-toggle" href="#" data-toggle="dropdown">
Sign In <strong class="caret"></strong>
</a>
<div class="dropdown-menu" style="padding: 15px; padding-bottom: 0px;">
<form method="post" action="/login" accept-charset="UTF-8">
<input style="margin-bottom: 15px;" type="text" placeholder="Username" id="username" name="username">
<input style="margin-bottom: 15px;" type="password" placeholder="Password" id="password" name="password">
<input class="btn btn-primary btn-block" type="submit" id="sign-in" value="Sign In">
</form>
</div>
</li>
% }
</ul>
</div>
</div>
<div id="wrapper" class="container well">
<div id="wrapper" class="container">
<%= content %>
</div>
</body>
......
% if ( my $login = session 'login' ) {
<div class="row">
<div class="span1 offset8">
<a href="/wiki/add/new" class="btn btn-primary">
<i class="icon-pencil icon-white"></i>
<span><strong>New</strong></span>
</a>
</div>
<div class="span1">
<a href="/wiki/<%= $url %>/edit" class="btn btn-primary">
<i class="icon-edit icon-white"></i>
<span><strong>Edit</strong></span>
</a>
</div>
<div class="span1">
<a href="/wiki/<%= $page->{id} %>/delete" class="btn btn-primary" onclick="return confirm('Вы уверены?');">
<i class="icon-trash icon-white"></i>
<span><strong>Delete</strong></span>
</a>
</div>
</div>
<br>
% }
<div class="row">
<div class="well">
<div class="row">
<div class="span2">
% if ( $wikitree ) {
<ul class="">
% foreach my $i (@{$wikitree}) {
% foreach my $k (@{$i}){
<li><a href="/wiki/<%= $k->{url} %>">
<%= $k->{name} %>
</a></li>
% }
% }
</ul>
% } else {
<li><a href="/wiki">wiki</a></li>
% }
</div>
<div class="span9">
<%== $page->{page} %>
</div>
</div>
</div><!-- //row -->
</div>
<%# <div class="row">
<div class="well">
<div class="box">
<div class="box-header">Установка игры:</div>
<div class="box-body">
<p>Архив представляет собой две вложенные папки:
<code>minecraft</code> и <code>.minecraft</code> (с точкой):
</p>
<code>minecraft-1.5.1-linux.zip</code><br>
&emsp;<code>minecraft</code><br>
&emsp;<code>.minecraft</code><br>
<br>
<p>Для установки игры необходимо распаковать архив.
Папку <code>.minecraft</code> (с точкой в названии) положить в:
<ul>
<li>Для Linux: <code>~/</code> (в домашнюю директорию)</li>
<li>Для Windows: <code></code></li>
</ul>
</p>
<textarea id="some-textarea" placeholder="Enter text ..."></textarea>
<script type="text/javascript">
$('#some-textarea').wysihtml5();
</script>
</div>
</div>
</div>
</div> %>
<div class="row">
<div class="well">
<div class="box">
<div class="box-header">Установка игры:</div>
<div class="box-body">
<form action="/wiki/<%= $page->{id} if $page %>/edit" method="post">
<input type="hidden" name="page_id" value="<%= $page->{id} %>">
<label for="page_name">Название страницы:</label>
<input type="text" name="page_name" class="span10" value="<%= $page->{name} if $page %>"><br>
<label for="page_url">URL:</label>
<input type="text" name="page_url" class="span10" value="<%= $page->{url} if $page %>"><br>
<textarea id="some-textarea" rows="10" class="span10" name="page_text"><%= $page->{page} if $page %></textarea><br>
<script type="text/javascript">
$('#some-textarea').wysihtml5();
</script>
<div class="form-actions">
<button type="submit" class="btn btn-primary" onclick="return confirm('Вы уверены?');">Сохранить</button>
<a href="javascript:history.back();"><button type="button" class="btn">Отменить</button></a>
</div>
</form>
</div>
</div>
</div>
</div>
\ No newline at end of file
<div class="row">
<div class="well">
<div class="box">
<div class="box-header">Установка игры:</div>
<div class="box-body">
<form action="/wiki/add/new" method="post">
<input type="hidden" name="page_id" value="">
<label for="page_name">Название страницы:</label>
<input type="text" name="page_name" class="span10" value=""><br>
<label for="page_url">URL:</label>
<input type="text" name="page_url" class="span10" value=""><br>
<textarea id="some-textarea" rows="10" class="span10" name="page_text"></textarea><br>
<script type="text/javascript">
$('#some-textarea').wysihtml5();
</script>
<div class="form-actions">
<button type="submit" class="btn btn-primary">Сохранить</button>
<a href="javascript:history.back();"><button type="button" class="btn">Отменить</button></a>
</div>
</form>
</div>
</div>
</div>
</div>
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!