basic member blogs
still trying to figure out how to maximize customisability (html & css) of member pages as much as how we have them on neocities
This commit is contained in:
16
README.md
16
README.md
@@ -24,17 +24,15 @@ do not deploy this way, the packaged flask server is not secure. production inst
|
||||
- create `config.py` in the instance folder and customise the following settings to your needs
|
||||
|
||||
```
|
||||
REGISTRATION = True
|
||||
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}
|
||||
ICON_UPLOAD_FOLDER = 'myriad/static/icons'
|
||||
BLINKIES_UPLOAD_FOLDER = 'myriad/static/blinkies'
|
||||
STAMPS_UPLOAD_FOLDER = 'myriad/static/stamps'
|
||||
REGISTRATION = True # Make sure to disable in production
|
||||
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'} # Can be anything you want
|
||||
ICON_UPLOAD_FOLDER = 'myriad/static/icons' # where member icons will be stored
|
||||
BLINKIES_UPLOAD_FOLDER = 'myriad/static/blinkies' # where site assets "blinkies" will be stored
|
||||
STAMPS_UPLOAD_FOLDER = 'myriad/static/stamps' # where site assets "stamps" will be stored
|
||||
INLINE_UPLOAD_FOLDER = 'myriad/static/inline' # where site assets "misc inline" will be stored
|
||||
MISC_UPLOAD_FOLDER = 'myriad/static/misc' # where other small images will be stored
|
||||
```
|
||||
|
||||
- registration should only be set to True in a development situation (in production set it to False one you have set up your administration account). this would mean that anyone can make an account and edit your system
|
||||
- feel free to adjust allowed file extensions however you choose
|
||||
- upload folders don't need to be changed
|
||||
|
||||
# usage
|
||||
|
||||
- the software here is free to use, and there's no requirement to link back
|
||||
|
||||
@@ -30,4 +30,7 @@ def create_app(test_config=None):
|
||||
from . import manage
|
||||
app.register_blueprint(manage.bp)
|
||||
|
||||
from . import blog
|
||||
app.register_blueprint(blog.bp)
|
||||
|
||||
return app
|
||||
|
||||
41
myriad/blog.py
Normal file
41
myriad/blog.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from flask import (
|
||||
Blueprint, flash, g, redirect, render_template, request, session, url_for, current_app
|
||||
)
|
||||
from werkzeug.utils import secure_filename
|
||||
import os, uuid
|
||||
|
||||
from myriad.auth import login_required
|
||||
from myriad.db import get_db
|
||||
|
||||
bp = Blueprint('blog', __name__, url_prefix='/blog')
|
||||
|
||||
@bp.route('/')
|
||||
def blog():
|
||||
db = get_db()
|
||||
posts = db.execute("SELECT * FROM blog ORDER BY created DESC").fetchall()
|
||||
members = db.execute("SELECT id,member_name FROM member").fetchall()
|
||||
member_ids={}
|
||||
for member in members:
|
||||
member_ids[member[0]] = member[1]
|
||||
|
||||
return render_template('blog/blog.html', blog=posts, member_ids=member_ids)
|
||||
|
||||
@bp.route('/new', methods=('GET', 'POST'))
|
||||
@login_required
|
||||
def new():
|
||||
db = get_db()
|
||||
members = db.execute("SELECT id,member_name FROM member").fetchall()
|
||||
|
||||
if request.method == 'POST':
|
||||
title = request.form['title']
|
||||
content = request.form['content']
|
||||
mid = request.form["mid"]
|
||||
|
||||
db.execute("INSERT INTO blog (member_id, title, content) VALUES (?, ?, ?)",(mid, title, content))
|
||||
db.commit()
|
||||
|
||||
return redirect(url_for('blog.blog'))
|
||||
|
||||
|
||||
return render_template('blog/new.html', members=members)
|
||||
|
||||
@@ -41,4 +41,12 @@ def full_list():
|
||||
else:
|
||||
icons[member[0]] = None
|
||||
|
||||
return render_template('full.html', memberlist=members, icons=icons)
|
||||
return render_template('full.html', memberlist=members, icons=icons)
|
||||
|
||||
@bp.route('/member/<mid>')
|
||||
def page(mid):
|
||||
db = get_db()
|
||||
member = db.execute("SELECT * FROM member WHERE id=(?)",(mid,)).fetchone()
|
||||
blog = db.execute("SELECT * FROM blog WHERE member_id=(?) ORDER BY created DESC",(mid,)).fetchall()
|
||||
|
||||
return render_template('page.html', member=member, blog=blog)
|
||||
@@ -3,7 +3,7 @@ DROP TABLE IF EXISTS member;
|
||||
DROP TABLE IF EXISTS icons;
|
||||
DROP TABLE IF EXISTS groups;
|
||||
DROP TABLE IF EXISTS group_members;
|
||||
DROP TABLE IF EXISTS pages;
|
||||
DROP TABLE IF EXISTS blog;
|
||||
|
||||
CREATE TABLE user (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
@@ -60,9 +60,11 @@ CREATE TABLE group_members (
|
||||
FOREIGN KEY (member_id) REFERENCES member (id)
|
||||
);
|
||||
|
||||
CREATE TABLE pages (
|
||||
CREATE TABLE blog (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
member_id INTEGER NOT NULL,
|
||||
page_location TEXT NOT NULL,
|
||||
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
title TEXT,
|
||||
content TEXT,
|
||||
FOREIGN KEY (member_id) REFERENCES member (id)
|
||||
);
|
||||
@@ -14,8 +14,13 @@
|
||||
{% if g.user %}
|
||||
<div class="heading">Manage</div>
|
||||
<div class="navitem">> <a href="{{ url_for('manage.new') }}">Add New Member</a></div>
|
||||
<div class="navitem">> <a href="">Site Assets</a></div>
|
||||
{% endif %}
|
||||
|
||||
<div class="heading">Blog</div>
|
||||
{% if g.user %}<div class="navitem">> <a href="{{ url_for('blog.new') }}">New Post</a></div>{% endif %}
|
||||
<div class="navitem">> <a href="{{ url_for('blog.blog') }}">View All Posts</a></div>
|
||||
|
||||
<div class="heading">Administration</div>
|
||||
{% if g.user %}
|
||||
<div class="navitem">> <a href="{{ url_for('auth.logout') }}">Log out</a></div>
|
||||
|
||||
19
myriad/templates/blog/blog.html
Normal file
19
myriad/templates/blog/blog.html
Normal file
@@ -0,0 +1,19 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block header %}
|
||||
<div class="title">{% block title %}System Blog{% endblock %}</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% for post in blog %}
|
||||
<div class="post">
|
||||
<div class="title">{{post[3]}}</div>
|
||||
<div class="timestamp">{{post[2]}} - <a href="{{ url_for('home.page', mid=post[1]) }}">{{member_ids[post[1]]}}</a></div>
|
||||
<div class="content">
|
||||
{{post[4]}}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
{% endblock %}
|
||||
24
myriad/templates/blog/new.html
Normal file
24
myriad/templates/blog/new.html
Normal file
@@ -0,0 +1,24 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block header %}
|
||||
<div class="title">{% block title %}New Blog Post{% endblock %}</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<form method="post">
|
||||
<label for="title">Title</label>
|
||||
<input name="title" id="title"><br>
|
||||
<label for="content">Content</label>
|
||||
<textarea name="content" id="content"></textarea><br>
|
||||
<label for="mid">Choose a member:</label>
|
||||
<select name="mid" id="mid">
|
||||
{% for member in members %}
|
||||
<option value="{{member[0]}}">{{member[1]}}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
|
||||
{{ error }}
|
||||
|
||||
{% endblock %}
|
||||
@@ -63,7 +63,7 @@
|
||||
{{ member[5]|safe }}
|
||||
</div>
|
||||
<br class="clear" />
|
||||
{% if g.user %}<div class="heading links">{% if member[8]==0 %}<a href="{{ url_for('manage.add_to_front', mid=member[0]) }}">Add to Front</a>{% else %}<a href="{{ url_for('manage.remove_front', mid=member[0]) }}">Remove from Front</a>{% endif %} ☆ <a href="{{ url_for('manage.edit', mid=member[0]) }}">Edit</a> ☆ {% if member[7]==0 %}<a href="{{ url_for('manage.add_to_home', mid=member[0]) }}">Pin to Homepage</a>{% else %}<a href="{{ url_for('manage.remove_home', mid=member[0]) }}">Unpin from Homepage</a>{% endif %}</div>{% endif %}
|
||||
<div class="heading links"><a href="{{ url_for('home.page', mid=member[0]) }}">View Page</a>{% if g.user %} ☆ {% if member[8]==0 %}<a href="{{ url_for('manage.add_to_front', mid=member[0]) }}">Add to Front</a>{% else %}<a href="{{ url_for('manage.remove_front', mid=member[0]) }}">Remove from Front</a>{% endif %} ☆ <a href="{{ url_for('manage.edit', mid=member[0]) }}">Edit</a> ☆ {% if member[7]==0 %}<a href="{{ url_for('manage.add_to_home', mid=member[0]) }}">Pin to Homepage</a>{% else %}<a href="{{ url_for('manage.remove_home', mid=member[0]) }}">Unpin from Homepage</a>{% endif %}{% endif %}</div>
|
||||
<!-- <img src="/geo/dsgame.webp" class="dsgame"> -->
|
||||
<br class="clear" />
|
||||
</div>
|
||||
|
||||
@@ -2,9 +2,12 @@
|
||||
{% block title %}Welcome{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% if front_list|length > 0 %}
|
||||
<div id="frontbanner" class="heading">
|
||||
<b>currently fronting: </b> {% for member in front_list %} {{ member[3] }} {% if front_list.index(member) != front_list|length -1 %}&{% endif %} {% endfor %}
|
||||
<b>currently fronting: </b> {% for member in front_list %} <a href="{{ url_for('home.page', mid=member[0]) }}">{{ member[3] }}</a> {% if front_list.index(member) != front_list|length -1 %}&{% endif %} {% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% for member in home_pins %}
|
||||
|
||||
@@ -57,7 +60,7 @@
|
||||
{{ member[5]|safe }}
|
||||
</div>
|
||||
<br class="clear" />
|
||||
{% if g.user %}<div class="heading links">{% if member[8]==0 %}<a href="{{ url_for('manage.add_to_front', mid=member[0]) }}">Add to Front</a>{% else %}<a href="{{ url_for('manage.remove_front', mid=member[0]) }}">Remove from Front</a>{% endif %} ☆ <a href="{{ url_for('manage.edit', mid=member[0]) }}">Edit</a> ☆ {% if member[7]==0 %}<a href="{{ url_for('manage.add_to_home', mid=member[0]) }}">Pin to Homepage</a>{% else %}<a href="{{ url_for('manage.remove_home', mid=member[0]) }}">Unpin from Homepage</a>{% endif %}</div>{% endif %}
|
||||
<div class="heading links"><a href="{{ url_for('home.page', mid=member[0]) }}">View Page</a>{% if g.user %} ☆ {% if member[8]==0 %}<a href="{{ url_for('manage.add_to_front', mid=member[0]) }}">Add to Front</a>{% else %}<a href="{{ url_for('manage.remove_front', mid=member[0]) }}">Remove from Front</a>{% endif %} ☆ <a href="{{ url_for('manage.edit', mid=member[0]) }}">Edit</a> ☆ {% if member[7]==0 %}<a href="{{ url_for('manage.add_to_home', mid=member[0]) }}">Pin to Homepage</a>{% else %}<a href="{{ url_for('manage.remove_home', mid=member[0]) }}">Unpin from Homepage</a>{% endif %}{% endif %}</div>
|
||||
<!-- <img src="/geo/dsgame.webp" class="dsgame"> -->
|
||||
<br class="clear" />
|
||||
</div>
|
||||
|
||||
21
myriad/templates/page.html
Normal file
21
myriad/templates/page.html
Normal file
@@ -0,0 +1,21 @@
|
||||
{% extends 'base.html' %}
|
||||
{% block title %}{{ member[3] }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="heading big">{{member[3]}}'s blog</div>
|
||||
<div id="blog">
|
||||
|
||||
{% for post in blog %}
|
||||
<div class="post">
|
||||
<div class="title">{{post[3]}}</div>
|
||||
<div class="timestamp">{{post[2]}}</div>
|
||||
<div class="content">
|
||||
{{post[4]}}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user