admin interface with tab layout
This commit is contained in:
parent
5073a3b28e
commit
672c6f88af
6 changed files with 153 additions and 97 deletions
60
templates/admin_create.html
Normal file
60
templates/admin_create.html
Normal file
|
@ -0,0 +1,60 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:py="http://genshi.edgewall.org/"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="layout.html" />
|
||||
<head>
|
||||
<title>Admin Ticker</title>
|
||||
<link href="../admin.css" type="text/css" rel="stylesheet" />
|
||||
<link href="../bootstrap/css/bootstrap.min.css" type="text/css" rel="stylesheet" media="all" />
|
||||
<link href="../bootstrap/css/bootstrap-theme.min.css" type="text/css" rel="stylesheet" media="all" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="container theme-showcase" role="main">
|
||||
<h1 id="title">Tycker Administration</h1>
|
||||
|
||||
<?python
|
||||
import datetime
|
||||
now = datetime.datetime.now()
|
||||
?>
|
||||
|
||||
<div class="page-header"></div>
|
||||
<ul class="nav nav-tabs">
|
||||
<li role="presentation" class="active"><a href="#">New entry</a></li>
|
||||
<li role="presentation"><a href="edit">All entries</a></li>
|
||||
<li role="presentation"><a href="../../${static_url}" title="static website" target="_blank">Ticker</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-8">
|
||||
<p> </p>
|
||||
<div id="timestamp">
|
||||
<form action="generate" method="GET">
|
||||
<button type="submit" class="btn btn-default">Generate current timestamp</button>
|
||||
</form>
|
||||
</div>
|
||||
<form action="submit" method="GET">
|
||||
<div class="form-group">
|
||||
<label for="Timestamp">Timestamp</label>
|
||||
<input type="text" class="form-control" id="Timestamp" name="date" value="${now.strftime(date_format)}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="Title">Title</label>
|
||||
<input type="text" class="form-control" id="Titel" name="title" value="" autofocus="autofocus" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="Content">Content</label>
|
||||
<textarea class="form-control" name="content" rows="8" cols="80" />
|
||||
</div>
|
||||
<button type="submit" class="btn btn-default">Create</button>
|
||||
</form>
|
||||
<p> </p>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-6 col-md-4">
|
||||
<xi:include href="help.html" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
57
templates/admin_edit.html
Normal file
57
templates/admin_edit.html
Normal file
|
@ -0,0 +1,57 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:py="http://genshi.edgewall.org/"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="layout.html" />
|
||||
<head>
|
||||
<title>Admin Ticker</title>
|
||||
<link href="../admin.css" type="text/css" rel="stylesheet" />
|
||||
<link href="../bootstrap/css/bootstrap.min.css" type="text/css" rel="stylesheet" media="all" />
|
||||
<link href="../bootstrap/css/bootstrap-theme.min.css" type="text/css" rel="stylesheet" media="all" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="container theme-showcase" role="main">
|
||||
<h1 id="title">Tycker Administration</h1>
|
||||
|
||||
<?python
|
||||
import datetime
|
||||
now = datetime.datetime.now()
|
||||
?>
|
||||
|
||||
<div class="page-header"></div>
|
||||
<ul class="nav nav-tabs">
|
||||
<li role="presentation"><a href="../admin">New entry</a></li>
|
||||
<li role="presentation" class="active"><a href="#">All entries</a></li>
|
||||
<li role="presentation"><a href="../../${static_url}" title="static website" target="_blank">Ticker</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-8">
|
||||
<p> </p>
|
||||
<div class="well" py:for="entry in entries">
|
||||
<form action="submit" method="GET" >
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" name="date" value="${entry['timestamp'].strftime(date_format)}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" name="title" value="${entry['title']}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<textarea name="content" class="form-control" rows="8" cols="80">${entry['content']}</textarea>
|
||||
</div>
|
||||
<input type="hidden" name="entry_id" value="${entry.id}" /><button type="submit" class="btn btn-default">Update</button>
|
||||
</form>
|
||||
<br/>
|
||||
<form action="delete" method="GET">
|
||||
<input type="hidden" name="entry_id" value="${entry.id}" />
|
||||
<button type="submit" class="btn btn-default">Delete</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6 col-md-4">
|
||||
<xi:include href="help.html" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,94 +0,0 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:py="http://genshi.edgewall.org/"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="layout.html" />
|
||||
<head>
|
||||
<title>Admin Ticker</title>
|
||||
<link href="../admin.css" type="text/css" rel="stylesheet" />
|
||||
<link href="../bootstrap/css/bootstrap.min.css" type="text/css" rel="stylesheet" media="all" />
|
||||
<link href="../bootstrap/css/bootstrap-theme.min.css" type="text/css" rel="stylesheet" media="all" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container theme-showcase" role="main">
|
||||
|
||||
<h1 id="title">Tycker Administration</h1>
|
||||
|
||||
<?python
|
||||
import datetime
|
||||
now = datetime.datetime.now()
|
||||
?>
|
||||
|
||||
<div class="page-header"></div>
|
||||
|
||||
|
||||
<p><a href="../../${static_url}" title="static website">Show frontpage of this tycker</a></p>
|
||||
|
||||
<div id="help">
|
||||
|
||||
<p>The content may be written in <a href="http://www.wikicreole.org/imageServlet?page=CheatSheet%2Fcreole_cheat_sheet.png" target="_blank">wikicreole syntax</a>. Here are some examples:</p>
|
||||
<dl>
|
||||
<dt><strong>Emphasis</strong></dt>
|
||||
<dd><em>//italics//</em>; <strong>**bold**</strong></dd>
|
||||
<dt><strong>Links</strong></dt>
|
||||
<dd>[[URL]]; [[URL|linkname]]</dd>
|
||||
<dt><strong>Headings</strong></dt>
|
||||
<dd>== Large heading; === Medium heading; ==== Small heading</dd>
|
||||
<dt><strong>Lists</strong></dt>
|
||||
<dd>* Bullet list; ** Sub item of bullet list; # Numbered list; ## Sub item of numbered list</dd>
|
||||
<dt><strong>Line break</strong></dt>
|
||||
<dd>Force\\Linebreak</dd>
|
||||
<dt><strong>Howto</strong></dt>
|
||||
<dd>1. Press "Generate current timestamp" button to insert the current timestamp<br/>2. Choose a title<br/>3. Create some content<br/>4. Press "Create" button to publish to frontpage</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div id="timestamp">
|
||||
<form action="generate" method="GET">
|
||||
<button type="submit" class="btn btn-default">Generate current timestamp</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<form action="submit" method="GET">
|
||||
<div class="form-group">
|
||||
<label for="Timestamp">Timestamp</label>
|
||||
<input type="text" class="form-control" id="Timestamp" name="date" value="${now.strftime(date_format)}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="Title">Title</label>
|
||||
<input type="text" class="form-control" id="Titel" name="title" value="" autofocus="autofocus" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="Content">Content</label>
|
||||
<textarea class="form-control" name="content" rows="8" cols="80" />
|
||||
</div>
|
||||
<button type="submit" class="btn btn-default">Create</button>
|
||||
</form>
|
||||
|
||||
<hr/>
|
||||
|
||||
<h3>Old entries</h3>
|
||||
<div class="well" py:for="entry in entries">
|
||||
<form action="submit" method="GET" >
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" name="date" value="${entry['timestamp'].strftime(date_format)}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control" name="title" value="${entry['title']}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<textarea name="content" class="form-control" rows="8" cols="80">${entry['content']}</textarea>
|
||||
</div>
|
||||
<input type="hidden" name="entry_id" value="${entry.id}" /><button type="submit" class="btn btn-default">Update</button>
|
||||
</form>
|
||||
<br/>
|
||||
<form action="delete" method="GET">
|
||||
<input type="hidden" name="entry_id" value="${entry.id}" />
|
||||
<button type="submit" class="btn btn-default">Delete</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -40,7 +40,15 @@
|
|||
${nav_links(prev_link, next_link)}
|
||||
</div>
|
||||
|
||||
<div class="col-xs-6 col-md-4"><div id="clockbox"></div></div>
|
||||
<div class="col-xs-6 col-md-4">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div id="clockbox"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div id="footer" class="page-footer" />
|
||||
|
|
17
templates/help.html
Normal file
17
templates/help.html
Normal file
|
@ -0,0 +1,17 @@
|
|||
<div id="help">
|
||||
<p>The content may be written in <a href="http://www.wikicreole.org/imageServlet?page=CheatSheet%2Fcreole_cheat_sheet.png" target="_blank">wikicreole syntax</a>. Here are some examples:</p>
|
||||
<dl>
|
||||
<dt><strong>Emphasis</strong></dt>
|
||||
<dd><em>//italics//</em> <br/><strong>**bold**</strong></dd>
|
||||
<dt><strong>Links</strong></dt>
|
||||
<dd>[[URL]] <br/>[[URL|linkname]]</dd>
|
||||
<dt><strong>Headings</strong></dt>
|
||||
<dd>== Large heading <br/>=== Medium heading <br/>==== Small heading</dd>
|
||||
<dt><strong>Lists</strong></dt>
|
||||
<dd>* Bullet list <br/>** Sub item of bullet list <br/># Numbered list <br/>## Sub item of numbered list</dd>
|
||||
<dt><strong>Line break</strong></dt>
|
||||
<dd>Force\\Linebreak</dd>
|
||||
<dt><strong>Howto</strong></dt>
|
||||
<dd>1. Press "Generate current timestamp" button to insert the current timestamp<br/>2. Choose a title<br/>3. Create some content<br/>4. Press "Create" button to publish to frontpage</dd>
|
||||
</dl>
|
||||
</div>
|
12
tycker.py
12
tycker.py
|
@ -124,12 +124,20 @@ def generate_static():
|
|||
return bobo.redirect(BASE_URL)
|
||||
|
||||
@bobo.query('/')
|
||||
def show_entries():
|
||||
def create_entry():
|
||||
values = {}
|
||||
values["entries"] = Entry.select().orderBy("-timestamp")
|
||||
values["date_format"] = DATE_FORMAT_FULL
|
||||
values["static_url"] = get_link(1)
|
||||
return render("admin_show_entries.html", **values)
|
||||
return render("admin_create.html", **values)
|
||||
|
||||
@bobo.query('/edit')
|
||||
def edit_entries():
|
||||
values = {}
|
||||
values["entries"] = Entry.select().orderBy("-timestamp")
|
||||
values["date_format"] = DATE_FORMAT_FULL
|
||||
values["static_url"] = get_link(1)
|
||||
return render("admin_edit.html", **values)
|
||||
|
||||
@bobo.query('')
|
||||
def redirect_base():
|
||||
|
|
Loading…
Reference in a new issue