Преглед на файлове

themes properly implemented #1 - requires db init

cube преди 1 ден
родител
ревизия
7125dd7cfe

+ 1
- 0
README.md Целия файл

@@ -35,6 +35,7 @@ BLINKIES_UPLOAD_FOLDER = 'myriad/static/blinkies' # where site assets "blinkies"
35 35
 STAMPS_UPLOAD_FOLDER = 'myriad/static/stamps' # where site assets "stamps" will be stored
36 36
 INLINE_UPLOAD_FOLDER = 'myriad/static/inline' # where site assets "misc inline" will be stored
37 37
 MISC_UPLOAD_FOLDER = 'myriad/static/misc' # where other small images will be stored
38
+THEMES_FOLDER = 'myriad/static/themes' # where theme choices will be stored
38 39
 ```
39 40
 
40 41
 # usage

+ 5
- 2
myriad/manage.py Целия файл

@@ -44,8 +44,9 @@ def edit(mid):
44 44
             name = request.form['name']
45 45
             bio = request.form['bio']
46 46
             subtitle = request.form['subtitle']
47
+            theme = request.form["theme"]
47 48
             privacy = request.form["privacy"]
48
-            db.execute("UPDATE member SET member_name=(?), bio=(?), subtitle=(?), public=(?) WHERE id=(?)",(name, bio, subtitle, privacy, mid))
49
+            db.execute("UPDATE member SET member_name=(?), bio=(?), subtitle=(?), public=(?), theme=(?) WHERE id=(?)",(name, bio, subtitle, privacy, theme, mid))
49 50
             db.commit()
50 51
 
51 52
         if "file" in request.files:
@@ -106,7 +107,9 @@ def edit(mid):
106 107
         else:
107 108
             unjoined_groups.append(group)
108 109
 
109
-    return render_template("manage/edit.html", member=member, icons=icons, unjoined_groups=unjoined_groups, joined_groups=joined_groups)
110
+    themes = os.listdir(current_app.config["THEMES_FOLDER"])
111
+
112
+    return render_template("manage/edit.html", member=member, icons=icons, unjoined_groups=unjoined_groups, joined_groups=joined_groups, themes=themes)
110 113
 
111 114
 @bp.route("/set_main_icon/<mid>/<icon_id>")
112 115
 @login_required

+ 1
- 14
myriad/schema.sql Целия файл

@@ -21,21 +21,8 @@ CREATE TABLE member (
21 21
   main_icon INTEGER,
22 22
   homepage BOOLEAN NOT NULL DEFAULT 0,
23 23
   front BOOLEAN NOT NULL DEFAULT 0,
24
-  card_border TEXT NOT NULL DEFAULT '#99dfff',
25
-  card_bg TEXT NOT NULL DEFAULT '#e6f7ff',
26
-  heading_bg TEXT NOT NULL DEFAULT '#b3e7ff',
27
-  heading_border TEXT NOT NULL DEFAULT '#008bcc',
28
-  heading_name TEXT NOT NULL DEFAULT 'black',
29
-  heading_subtitle TEXT NOT NULL DEFAULT 'black',
30
-  card_text TEXT NOT NULL DEFAULT 'black',
31
-  icon_border TEXT NOT NULL DEFAULT '#008bcc',
32
-  page_bg TEXT NOT NULL DEFAULT '#00b7ff',
33
-  gradient1 TEXT NOT NULL DEFAULT '#00b7ff',
34
-  gradient2 TEXT NOT NULL DEFAULT '#57c785',
35
-  gradient3 TEXT NOT NULL DEFAULT '#eddd53',
36
-  a1 TEXT NOT NULL DEFAULT '#008bcc',
37
-  a2 TEXT NOT NULL DEFAULT '#026897',
38 24
   public BOOLEAN NOT NULL DEFAULT 1,
25
+  theme TEXT NOT NULL DEFAULT 'default',
39 26
   FOREIGN KEY (user_id) REFERENCES user (id),
40 27
   FOREIGN KEY (main_icon) REFERENCES icons (id)
41 28
 );

+ 40
- 0
myriad/static/themes/default.css Целия файл

@@ -0,0 +1,40 @@
1
+.default{
2
+    background-color:#e6f7ff;
3
+    border-color:#99dfff;
4
+    color:black;
5
+}
6
+.default .heading
7
+{
8
+    background-color:#b3e7ff;
9
+    border-color:#008bcc;
10
+    color:black;
11
+}
12
+.default .heading b
13
+{
14
+    color:black;
15
+}
16
+.default a{
17
+    color: #008bcc;
18
+}
19
+.default a:hover{
20
+    color: #026897;
21
+}
22
+.default ::selection {
23
+    background: #008bcc;
24
+    color: white;
25
+    text-shadow: none;
26
+}
27
+.default ::-moz-selection {
28
+    background: #008bcc;
29
+    color: #EEE;
30
+    text-shadow: none;
31
+}
32
+.default .icon{
33
+    border-color:#008bcc;
34
+}
35
+
36
+.default body{
37
+    background: #00b7ff;
38
+    background: linear-gradient(90deg, #00b7ff 0%, #57c785 50%, #eddd53 100%);
39
+    scrollbar-color:#008bcc #b3e7ff;
40
+}

+ 44
- 0
myriad/static/themes/purple.css Целия файл

@@ -0,0 +1,44 @@
1
+.purple{
2
+    background-color:#ecc9fa;
3
+    border-color:#a414da;
4
+    color:black;
5
+}
6
+.purple .heading
7
+{
8
+    background-color:#d991f4;
9
+    border-color:#a414da;
10
+    color:black;
11
+}
12
+.purple .heading b
13
+{
14
+    color:black;
15
+}
16
+.purple a{
17
+    color: #a414da;
18
+}
19
+.purple a:hover{
20
+    color: #720e98;
21
+}
22
+.purple ::selection {
23
+    background:#a414da;
24
+    color: white;
25
+    text-shadow: none;
26
+}
27
+.purple ::-moz-selection {
28
+    background: #a414da;
29
+    color: #EEE;
30
+    text-shadow: none;
31
+}
32
+.purple .icon{
33
+    border-color:#a414da;
34
+}
35
+
36
+body.purple{
37
+    background: #fb46c0;
38
+    background: linear-gradient(90deg, #fb46c0 0%, #a414da 50%, #720e98 100%);
39
+    scrollbar-color:#a414da #d991f4;
40
+}
41
+.purple .container{
42
+    background-color:#ecc9fa;
43
+    border-color:#a414da;
44
+}

+ 4
- 0
myriad/templates/auth/login.html Целия файл

@@ -5,6 +5,8 @@
5 5
 {% endblock %}
6 6
 
7 7
 {% block content %}
8
+<div class="container">
9
+  
8 10
   <form method="post">
9 11
     <label for="username">Username</label>
10 12
     <input name="username" id="username" required><br>
@@ -12,4 +14,6 @@
12 14
     <input type="password" name="password" id="password" required><br>
13 15
     <input type="submit" value="Log In">
14 16
   </form>
17
+
18
+  </div>
15 19
 {% endblock %}

+ 4
- 0
myriad/templates/auth/register.html Целия файл

@@ -5,6 +5,8 @@
5 5
 {% endblock %}
6 6
 
7 7
 {% block content %}
8
+<div class="container">
9
+
8 10
   <form method="post">
9 11
     <label for="username">Username</label>
10 12
     <input name="username" id="username" required><br>
@@ -12,4 +14,6 @@
12 14
     <input type="password" name="password" id="password" required><br>
13 15
     <input type="submit" value="Register">
14 16
   </form>
17
+
18
+  </div>
15 19
 {% endblock %}

+ 4
- 7
myriad/templates/base.html Целия файл

@@ -3,6 +3,9 @@
3 3
 <title>{% block title %}{% endblock %} - Myriad</title>
4 4
 <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
5 5
 
6
+<link rel="stylesheet" href="{{ url_for('static', filename='themes/default.css') }}">
7
+<link rel="stylesheet" href="{{ url_for('static', filename='themes/purple.css') }}">
8
+
6 9
 
7 10
 <div id="main">
8 11
   
@@ -40,13 +43,7 @@
40 43
 
41 44
     </div>
42 45
 
43
-  <div class="container">
44
-
45
-    {% block header %}{% endblock %}
46
-    {% for message in get_flashed_messages() %}
47
-      <div class="flash">{{ message }}</div>
48
-    {% endfor %}
46
+  
49 47
     {% block content %}{% endblock %}
50
-  </div>
51 48
 
52 49
 </div>

+ 8
- 2
myriad/templates/blog/blog.html Целия файл

@@ -5,10 +5,11 @@
5 5
 {% endblock %}
6 6
 
7 7
 {% block content %}
8
+<div class="container">
8 9
   
9 10
   {% for post in blog %}
10 11
     {% set op = member_ids[post[1]] %}
11
-    {% if not g.user and op[23]==0 %}
12
+    {% if not g.user and op[9]==0 %}
12 13
     {% elif not g.user and post[5]==0 %}
13 14
     {% else %}
14 15
     <div class="post">
@@ -18,7 +19,7 @@
18 19
         <img src="{{ url_for('static', filename='any.jpg') }}" class="icon">
19 20
       {% endif %}
20 21
         <div class="title">{{post[3]|safe}}</div>
21
-        <div class="timestamp">{{post[2]}} - <a href="{{ url_for('home.page', mid=post[1]) }}">{{op[3]}}</a> {% if g.user %}{% if op[23]==0 %}(Private){% else %}(Public)</b>{% endif %}{% endif %}</div>
22
+        <div class="timestamp">{{post[2]}} - <a href="{{ url_for('home.page', mid=post[1]) }}">{{op[3]}}</a> {% if g.user %}{% if op[9]==0 %}(Private){% else %}(Public)</b>{% endif %}{% endif %}</div>
22 23
         <div class="content">
23 24
             {{post[4]|safe}}
24 25
         </div>
@@ -30,4 +31,9 @@
30 31
     {% endif %}
31 32
   {% endfor %}
32 33
 
34
+  {% if not blog %}
35
+  <p>There are currently no posts to view</p>
36
+  {% endif %}
37
+
38
+</div>
33 39
 {% endblock %}

+ 3
- 0
myriad/templates/blog/edit.html Целия файл

@@ -5,6 +5,8 @@
5 5
 {% endblock %}
6 6
 
7 7
 {% block content %}
8
+<div class="container">
9
+
8 10
   <form method="post">
9 11
     <label for="title">Title</label>
10 12
     <input name="title" id="title" value="{{post[3]}}"><br>
@@ -24,4 +26,5 @@
24 26
     <input type="submit" value="Submit">
25 27
   </form>
26 28
 
29
+</div>
27 30
 {% endblock %}

+ 3
- 1
myriad/templates/blog/new.html Целия файл

@@ -5,6 +5,8 @@
5 5
 {% endblock %}
6 6
 
7 7
 {% block content %}
8
+<div class="container">
9
+
8 10
   <form method="post">
9 11
     <label for="title">Title</label>
10 12
     <input name="title" id="title"><br>
@@ -24,6 +26,6 @@
24 26
     <input type="submit" value="Submit">
25 27
   </form>
26 28
 
27
-  {{ error }}
28 29
 
30
+</div>
29 31
 {% endblock %}

+ 11
- 40
myriad/templates/full.html Целия файл

@@ -5,60 +5,26 @@
5 5
 {% endblock %}
6 6
 
7 7
 {% block content %}
8
+<div class="container">
8 9
 
10
+    {% if memberlist %}
9 11
     <div class="maintext">
10 12
         jump to:<br>
11 13
         {% for member in memberlist %}
12
-        {% if not g.user and member[23]==0  %}
14
+        {% if not g.user and member[9]==0  %}
13 15
         {% else %}
14 16
         <a href="#m{{ member[0] }}">{{ member[3] }}</a> | 
15 17
         {% endif %}
16 18
         {% endfor %}
17 19
     </div>
20
+    {% endif %}
18 21
   
19 22
     {% for member in memberlist %}
20 23
 
21
-    <style>
22
-        #m{{member[0]}}{
23
-            background-color:{{member[10]}};
24
-	        border-color:{{member[9]}};
25
-            color:{{member[15]}};
26
-        }
27
-        #m{{member[0]}} .heading
28
-        {
29
-            background-color:{{member[11]}};
30
-            border-color:{{member[12]}};
31
-            color:{{member[14]}};
32
-        }
33
-        #m{{member[0]}} .heading b
34
-        {
35
-            color:{{member[13]}};
36
-        }
37
-        #m{{member[0]}} a{
38
-            color: {{member[21]}};
39
-        }
40
-        #m{{member[0]}} a:hover{
41
-            color: {{member[22]}};
42
-        }
43
-        #m{{member[0]}} ::selection {
44
-            background: {{member[12]}};
45
-            color: white;
46
-            text-shadow: none;
47
-        }
48
-        #m{{member[0]}} ::-moz-selection {
49
-            background: {{member[12]}};
50
-            color: #EEE;
51
-            text-shadow: none;
52
-        }
53
-        #m{{member[0]}} .icon{
54
-            border-color:{{member[16]}};
55
-        }
56
-    </style>
57
-
58
-    {% if not g.user and member[23]==0  %}
24
+    {% if not g.user and member[9]==0  %}
59 25
     
60 26
     {% else %}
61
-    <div class="profile" id="m{{ member[0] }}">
27
+    <div class="profile {{member[10]}}" id="m{{ member[0] }}">
62 28
         <div class="heading"><b>{{ member[3]|safe }}</b> {{ member[4]|safe }}</div>
63 29
         {% if icons[member[0]] %}
64 30
         <img src="{{ url_for('static', filename='icons/'+icons[member[0]]) }}" class="icon">
@@ -77,4 +43,9 @@
77 43
 
78 44
     {% endfor %}
79 45
 
46
+    {% if not memberlist %}
47
+    <p>There are currently no members to view</p>
48
+    {% endif %}
49
+
50
+</div>
80 51
 {% endblock %}

+ 6
- 0
myriad/templates/groups.html Целия файл

@@ -2,6 +2,7 @@
2 2
 {% block title %}Groups{% endblock %}
3 3
 
4 4
 {% block content %}
5
+<div class="container">
5 6
 
6 7
   {% for group in groups %}
7 8
   {% if not g.user and group[3]==0 %}
@@ -18,4 +19,9 @@
18 19
     {% endif %}
19 20
   {% endfor %}
20 21
 
22
+  {% if not groups %}
23
+  <p>There are currently no groups to view</p>
24
+  {% endif %}
25
+
26
+</div>
21 27
 {% endblock %}

+ 9
- 39
myriad/templates/index.html Целия файл

@@ -2,57 +2,23 @@
2 2
 {% block title %}Welcome{% endblock %}
3 3
 
4 4
 {% block content %}
5
+<div class="container">
5 6
 
6 7
   {% if front_list|length > 0 %}
7 8
   <div id="frontbanner" class="heading">
8 9
     <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 %}
9 10
   </div>
11
+  {% else %}
12
+    <p>There are currently no members listed as fronting</p>
10 13
   {% endif %}
11 14
 
12 15
   {% for member in home_pins %}
13 16
 
14
-  {% if not g.user and member[23]==0 %}
17
+  {% if not g.user and member[9]==0 %}
15 18
   {% else %}
16 19
 
17
-  <style>
18
-        #m{{member[0]}}{
19
-            background-color:{{member[10]}};
20
-	        border-color:{{member[9]}};
21
-            color:{{member[15]}};
22
-        }
23
-        #m{{member[0]}} .heading
24
-        {
25
-            background-color:{{member[11]}};
26
-            border-color:{{member[12]}};
27
-            color:{{member[14]}};
28
-        }
29
-        #m{{member[0]}} .heading b
30
-        {
31
-            color:{{member[13]}};
32
-        }
33
-        #m{{member[0]}} a{
34
-            color: {{member[21]}};
35
-        }
36
-        #m{{member[0]}} a:hover{
37
-            color: {{member[22]}};
38
-        }
39
-        #m{{member[0]}} ::selection {
40
-            background: {{member[12]}};
41
-            color: white;
42
-            text-shadow: none;
43
-        }
44
-        #m{{member[0]}} ::-moz-selection {
45
-            background: {{member[12]}};
46
-            color: #EEE;
47
-            text-shadow: none;
48
-        }
49
-        #m{{member[0]}} .icon{
50
-            border-color:{{member[16]}};
51
-        }
52
-    </style>
53
-
54 20
 
55
-  <div class="profile" id="m{{ member[0] }}">
21
+  <div class="profile {{member[10]}}" id="m{{ member[0] }}">
56 22
         <div class="heading"><b>{{ member[3]|safe }}</b> {{ member[4]|safe }}</div>
57 23
         {% if icons[member[0]] %}
58 24
         <img src="{{ url_for('static', filename='icons/'+icons[member[0]]) }}" class="icon">
@@ -71,5 +37,9 @@
71 37
     {% endif %}
72 38
     {% endfor %}
73 39
 
40
+    {% if not home_pins %}
41
+        <p>There are currently no members pinned to the homepage.</p>
42
+    {% endif %}
74 43
 
44
+</div>
75 45
 {% endblock %}

+ 2
- 0
myriad/templates/manage/assets.html Целия файл

@@ -5,6 +5,7 @@
5 5
 {% endblock %}
6 6
 
7 7
 {% block content %}
8
+<div class="container">
8 9
 
9 10
   <div class="heading big">Icons</div>
10 11
 
@@ -38,4 +39,5 @@
38 39
 
39 40
   <div class="heading big">Stamps</div>
40 41
 
42
+  </div>
41 43
 {% endblock %}

+ 13
- 54
myriad/templates/manage/edit.html Целия файл

@@ -5,6 +5,8 @@
5 5
 {% endblock %}
6 6
 
7 7
 {% block content %}
8
+<div class="container">
9
+
8 10
   
9 11
   <a href="{{url_for('home.page', mid=member[0])}}">View {{member[3]}}'s page</a>
10 12
   <br class="clear" />
@@ -17,10 +19,17 @@
17 19
     <label for="subtitle">Subtitle</label>
18 20
     <input name="subtitle" id="subtitle" value="{{ member[4] }}"><br>
19 21
     <label for="bio">Description</label>
20
-    <textarea name="bio" id="bio">{{ member[5] }}</textarea><br>
21
-    <input type="radio" id="public" name="privacy" value=1 {% if member[23]==1 %}checked{% endif %}>
22
+    <textarea name="bio" id="bio">{{ member[5] }}</textarea><br><br>
23
+    <label for="theme">Theme</label>
24
+    <select name="theme" id="theme">
25
+      {% for theme in themes %}
26
+      {% set theme_name = theme.split(".")[0] %}
27
+      <option value="{{theme_name}}" {% if theme_name==member[10] %}selected{% endif %}>{{theme_name}}</option>
28
+      {% endfor %}
29
+    </select><br><br>
30
+    <input type="radio" id="public" name="privacy" value=1 {% if member[9]==1 %}checked{% endif %}>
22 31
     <label for="public">Public</label><br>
23
-    <input type="radio" id="private" name="privacy" value=0 {% if member[23]==0 %}checked{% endif %}>
32
+    <input type="radio" id="private" name="privacy" value=0 {% if member[9]==0 %}checked{% endif %}>
24 33
     <label for="private">Private</label><br>
25 34
     <input type="submit" value="Submit">
26 35
   </form>
@@ -66,55 +75,5 @@
66 75
     {% endfor %}
67 76
   </div>
68 77
 
69
-  <div class="heading">Manage Theme</div>
70
-
71
-  <form method="post">
72
-    <label for="c9">Card border colour:</label>
73
-    <input type="color" id="c9" name="c9" value="{{member[9]}}"><br>
74
-
75
-    <label for="c10">Card background colour:</label>
76
-    <input type="color" id="c10" name="c10" value="{{member[10]}}"><br>
77
-
78
-    <label for="c11">Heading background colour:</label>
79
-    <input type="color" id="c11" name="c11" value="{{member[11]}}"><br>
80
-
81
-    <label for="c12">Accent colour:</label>
82
-    <input type="color" id="c12" name="c12" value="{{member[12]}}"><br>
83
-
84
-    <label for="c13">Heading name text colour:</label>
85
-    <input type="color" id="c13" name="c13" value="{{member[13]}}"><br>
86
-    
87
-    <label for="c14">Heading subtitle text colour:</label>
88
-    <input type="color" id="c14" name="c14" value="{{member[14]}}"><br>
89
-
90
-    <label for="c15">Card text colour:</label>
91
-    <input type="color" id="c15" name="c15" value="{{member[15]}}"><br>
92
-
93
-    <label for="c16">Icon border colour:</label>
94
-    <input type="color" id="c16" name="c16" value="{{member[16]}}"><br>
95
-
96
-    <label for="c21">Links colour:</label>
97
-    <input type="color" id="c21" name="c21" value="{{member[21]}}"><br>
98
-
99
-    <label for="c22">Links hover colour:</label>
100
-    <input type="color" id="c22" name="c22" value="{{member[22]}}"><br>
101
-
102
-    <hr>
103
-
104
-    <label for="c18">Page Gradient colour 1</label>
105
-    <input type="color" id="c18" name="c18" value="{{member[18]}}"><br>
106
-
107
-    <label for="c19">Page Gradient colour 2</label>
108
-    <input type="color" id="c19" name="c19" value="{{member[19]}}"><br>
109
-
110
-    <label for="c20">Page Gradient colour 3</label>
111
-    <input type="color" id="c20" name="c20" value="{{member[20]}}"><br>
112
-
113
-    <input type="submit" value="Set Member Theme">
114
-  </form>
115
-
116
-  <a href="{{ url_for('manage.reset_theme', mid=member[0]) }}">Click here to reset member theme to default</a>
117
-
118
-  {{ error }}
119
-
78
+</div>
120 79
 {% endblock %}

+ 2
- 0
myriad/templates/manage/groups.html Целия файл

@@ -5,6 +5,7 @@
5 5
 {% endblock %}
6 6
 
7 7
 {% block content %}
8
+<div class="container">
8 9
 
9 10
   <div class="heading big">Create new group</div>
10 11
   <form method="post">
@@ -34,4 +35,5 @@
34 35
     <hr>
35 36
   {% endfor %}
36 37
 
38
+  </div>
37 39
 {% endblock %}

+ 2
- 1
myriad/templates/manage/new.html Целия файл

@@ -5,6 +5,7 @@
5 5
 {% endblock %}
6 6
 
7 7
 {% block content %}
8
+<div class="container">
8 9
   <form method="post">
9 10
     <label for="name">Name</label>
10 11
     <input name="name" id="name" required><br>
@@ -13,6 +14,6 @@
13 14
     <input type="submit" value="Submit">
14 15
   </form>
15 16
 
16
-  {{ error }}
17 17
 
18
+</div>
18 19
 {% endblock %}

+ 5
- 42
myriad/templates/page.html Целия файл

@@ -1,52 +1,13 @@
1 1
 {% extends 'base.html' %}
2 2
 {% block title %}{{ member[3] }}{% endblock %}
3 3
 
4
-
5
-
6 4
 {% block content %}
7 5
 
6
+<script>document.body.classList.add("{{member[10]}}");</script>
8 7
 
9
-<style>
10
-    body{
11
-        background: {{member[17]}};
12
-        background: linear-gradient(90deg, {{member[17]}} 0%, {{member[18]}} 50%, {{member[19]}} 100%);
13
-        scrollbar-color:{{member[12]}}{{member[11]}};
14
-    }
15
-    .container{
16
-        background-color:{{member[10]}};
17
-        border-color:{{member[9]}};
18
-    }
19
-    .heading{
20
-        background-color:{{member[11]}};
21
-        border-color:{{member[12]}};
22
-        color:{{member[14]}};
23
-    }
24
-    .icon{
25
-        border-color:{{member[16]}};
26
-    }
27
-    .bio{
28
-        color:{{member[15]}};
29
-    }
30
-    .heading b
31
-    {
32
-        color:{{member[13]}};
33
-    }
34
-    a{
35
-        color: {{member[21]}};
36
-    }
37
-    a:hover{
38
-        color: {{member[22]}};
39
-    }
40
-    ::selection {
41
-        background: {{member[12]}};
42
-    }
43
-    ::-moz-selection {
44
-        background: {{member[12]}};
45
-    }
46
-</style>
8
+    <div class="container {{member[10]}}">
47 9
 
48
-
49
-    {% if not g.user and member[23]==0 %}
10
+    {% if not g.user and member[9]==0 %}
50 11
     permission denied
51 12
     {% else %}
52 13
 
@@ -95,4 +56,6 @@
95 56
 
96 57
     {% endif %}
97 58
 
59
+    </div>
60
+
98 61
 {% endblock %}