Browse Source

Improve homepage, add delete function

JoostSijm 6 years ago
parent
commit
241d3aea29
3 changed files with 150 additions and 86 deletions
  1. 13 0
      app/modules/backend/app.py
  2. 78 40
      app/templates/site/index.j2
  3. 59 46
      app/templates/user/login.j2

+ 13 - 0
app/modules/backend/app.py

@@ -153,6 +153,19 @@ def edit_page(page_id):
     )
 
 
+@BLUEPRINT.route('/page/remove/<int:page_id>')
+@login_required
+def remove_page(page_id):
+    """Page removing"""
+    page = Page.query.get(page_id)
+
+    db.session.delete(page)
+    db.session.commit()
+
+    flash('Page "%s" successfully remove' % page.title, 'success')
+    return redirect(url_for('backend.index'))
+
+
 @BLUEPRINT.route('/page/view/<int:page_id>')
 @login_required
 def view_page(page_id):

+ 78 - 40
app/templates/site/index.j2

@@ -3,46 +3,84 @@
 <head>
     <title>Backend</title>
     <meta name="viewport" content="width=device-width, initial-scale=1">
+    <script src="/static/js/main.js"></script>
 </head>
 <body>
-	{% with messages = get_flashed_messages(with_categories=true) %}
-	{% if messages %}
-	{% for category, message in messages %}
-	<div class="alert alert-{{ category }} alert-dismissible fade show" role="alert">
-		{{ message }}
-		<button type="button" class="close" data-dismiss="alert" aria-label="Close">
-			<span aria-hidden="true">&times;</span>
-		</button>
-	</div>
-	{% endfor %}
-	{% endif %}
-	{% endwith %}
-	<ul>
-		{%- for item in current_menu.children recursive -%}
-		<li class="nav-item" data-toggle="tooltip" data-placement="right" title="{{ item.text }}">
-		    <a class="nav-link" href="{{ item.url}}">
-		        <span class="nav-link-text">{{ item.text }}</span>
-		    </a>
-		</li>
-		{%- endfor -%}
-	</ul>
-	<h1>Backend</h1>
-	<h2>Pages</h2>
-	<table>
-		<tr>
-			<th>Action</th>
-			<th>Title</th>
-		</tr>
-		{%- for page in pages recursive -%}
-		<tr>
-			<td><button></button></td>
-			<td>
-				{{ '> ' * (loop.depth - 1) }}<a href="{{ url_for('backend.view_page', page_id=page.id) }}">
-					{{ page.title if page.title else 'page %s' % page.id }}
-				</a>
-			</td>
-		</tr>
-	    {{ loop(page.children) }}
-		{%- endfor -%}
-	</table>
+    <nav class="navbar navbar-expand-md navbar-dark bg-dark">
+        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsDefault" aria-controls="navbarsDefault" aria-expanded="false" aria-label="Toggle navigation">
+            <span class="navbar-toggler-icon"></span>
+        </button>
+        <div class="collapse navbar-collapse" id="navbarsDefault">
+            <ul class="navbar-nav mr-auto">
+                {%- for item in current_menu.children recursive -%}
+                <li class="nav-item {{ 'active' if item.active }}" data-toggle="tooltip" data-placement="right" title="{{ item.text }}">
+                    <a class="nav-link" href="{{ item.url}}">
+                        <span class="nav-link-text">{{ item.text }}</span>
+                    </a>
+                </li>
+                {%- endfor -%}
+            </ul>
+            <ul class="navbar-nav">
+                <li class="nav-item text-nowrap">
+                      <a class="nav-link" href="#">Sign out</a>
+                </li>
+            </ul>
+        </div>
+    </nav>
+    <main class="container">
+        {% with messages = get_flashed_messages(with_categories=true) %}
+        {% if messages %}
+        {% for category, message in messages %}
+        <div class="alert alert-{{ category }} alert-dismissible fade show" role="alert">
+            {{ message }}
+            <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+                <span aria-hidden="true">&times;</span>
+            </button>
+        </div>
+        {% endfor %}
+        {% endif %}
+        {% endwith %}
+            <h1>Backend</h1>
+            <h1>Bootstrap starter template</h1>
+            <p class="lead">Use this document as a way to quickly start any new project.<br> All you get is this text and a mostly barebones HTML document.</p>
+            <div class="table-responsive">
+                <table class="table table-striped table-sm">
+                    <thead>
+                        <tr>
+                            <th>Action</th>
+                            <th>Title</th>
+                            <th>Datum</th>
+                            <th>Author</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        {%- for page in pages recursive -%}
+                        <tr>
+                            <td>
+                                <div class="btn-group">
+                                    <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                                        Small button
+                                    </button>
+                                    <div class="dropdown-menu">
+                                        <a class="dropdown-item" href="{{ url_for('backend.view_page', page_id=page.id) }}">View</a>
+                                        <a class="dropdown-item" href="{{ url_for('backend.edit_page', page_id=page.id) }}">Edit</a>
+                                        <a class="dropdown-item" href="{{ url_for('backend.remove_page', page_id=page.id) }}">Remove</a>
+                                    </div>
+                                </div>
+                            </td>
+                            <td>
+                                {{ '> ' * (loop.depth - 1) }}<a href="{{ url_for('backend.view_page', page_id=page.id) }}">
+                                    {{ page.title if page.title else 'page %s' % page.id }}
+                                </a>
+                            </td>
+                            <td>{{ page.datetime }}</td>
+                            <td>{{ page.user.name }}</td>
+                        </tr>
+                        {{ loop(page.children) }}
+                        {%- endfor -%}
+                    </tbody>
+                </table>
+            </div>
+        </div>
+    </main>
 </body>

+ 59 - 46
app/templates/user/login.j2

@@ -3,56 +3,69 @@
 <head>
     <title>Login</title>
     <meta name="viewport" content="width=device-width, initial-scale=1">
+    <script src="/static/js/main.js"></script>
 </head>
-<body>
-	{% with messages = get_flashed_messages(with_categories=true) %}
-	{% if messages %}
-	{% for category, message in messages %}
-	<div class="alert alert-{{ category }} alert-dismissible fade show" role="alert">
-		{{ message }}
-		<button type="button" class="close" data-dismiss="alert" aria-label="Close">
-			<span aria-hidden="true">&times;</span>
-		</button>
-	</div>
-	{% endfor %}
-	{% endif %}
-	{% endwith %}
-	<div class="row">
-		<div class="col-12 col-md-6">
-			<h2>Login</h2>
-			<form method="post">
-				<div class="form-group">
-					<label class="text-normal text-dark">Email</label>
-					<input type="email" class="form-control" name="email" placeholder="Email">
-				</div>
-				<div class="form-group">
-					<label class="text-normal text-dark">Password</label>
-					<input type="password" class="form-control" name="password" placeholder="Password">
-				</div>
-				<div class="form-group pull-right">
-					<button class="btn btn-primary">Login</button>
-				</div>
-			</form>
-		</div>
-		<div class="col-12 col-md-6">
-			<h2>Register</h2>
-			<form action="{{ url_for('backend.register')}}" method="post">
-				<div class="form-group">
-					<label class="text-normal text-dark">Name</label>
-					<input type="text" class="form-control" name="name" placeholder="Name" value="{{ name }}" required>
-				</div>
-				<div class="form-group">
-					<label class="text-normal text-dark">Email</label>
-					<input type="email" class="form-control" name="email" placeholder="Email" value="{{ email }}" required>
+<body class="bg-dark">
+	<div class="container">
+		<div class="card mx-auto mt-5">
+			<div class="card-header">
+				<i class="fa fa-user"></i> Login
+				<div class="float-right">
+					<a href="{{ request.referrer }}" class="btn btn-sm btn-secondary">Cancel</a>
 				</div>
-				<div class="form-group">
-					<label class="text-normal text-dark">Password</label>
-					<input type="password" class="form-control" name="password" placeholder="Password" required>
+			</div>
+			<div class="card-body">
+				{% with messages = get_flashed_messages(with_categories=true) %}
+				{% if messages %}
+				{% for category, message in messages %}
+				<div class="alert alert-{{ category }} alert-dismissible fade show" role="alert">
+					{{ message }}
+					<button type="button" class="close" data-dismiss="alert" aria-label="Close">
+						<span aria-hidden="true">&times;</span>
+					</button>
 				</div>
-				<div class="form-group pull-right">
-					<button class="btn btn-primary">Register</button>
+				{% endfor %}
+				{% endif %}
+				{% endwith %}
+				<div class="row">
+					<div class="col-12 col-md-6">
+						<h2>Login</h2>
+						<form method="post">
+							<div class="form-group">
+								<label class="text-normal text-dark">Email</label>
+								<input type="email" class="form-control" name="email" placeholder="Email">
+							</div>
+							<div class="form-group">
+								<label class="text-normal text-dark">Password</label>
+								<input type="password" class="form-control" name="password" placeholder="Password">
+							</div>
+							<div class="form-group float-right">
+								<button class="btn btn-primary">Login</button>
+							</div>
+						</form>
+					</div>
+					<div class="col-12 col-md-6">
+						<h2>Register</h2>
+						<form action="{{ url_for('backend.register')}}" method="post">
+							<div class="form-group">
+								<label class="text-normal text-dark">Name</label>
+								<input type="text" class="form-control" name="name" placeholder="Name" value="{{ name }}" required>
+							</div>
+							<div class="form-group">
+								<label class="text-normal text-dark">Email</label>
+								<input type="email" class="form-control" name="email" placeholder="Email" value="{{ email }}" required>
+							</div>
+							<div class="form-group">
+								<label class="text-normal text-dark">Password</label>
+								<input type="password" class="form-control" name="password" placeholder="Password" required>
+							</div>
+							<div class="form-group float-right">
+								<button class="btn btn-primary">Register</button>
+							</div>
+						</form>
+					</div>
 				</div>
-			</form>
+			</div>
 		</div>
 	</div>
 </body>