From 1ea7cff2f11d93633b7eb1b360aa41264eefd204 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannnes=20B=C3=BCrst?= Date: Wed, 18 Mar 2020 13:26:10 +0100 Subject: [PATCH] file upload added, link to db next --- calender/__init__.py | 7 +- calender/calender.py | 33 +- .../archive/Dankventskalender_2017.html | 263 +++++++++++ .../archive/Dankventskalender_2018.html | 431 ++++++++++++++++++ calender/static/archive/style.css | 14 + calender/static/calender/style.css | 210 +++++++++ calender/static/calender/submit.css | 247 ++++++++++ calender/static/calender/w3.css | 233 ++++++++++ calender/templates/base.html | 70 ++- calender/templates/calender/create.html | 23 +- calender/templates/calender/index.html | 18 +- 11 files changed, 1518 insertions(+), 31 deletions(-) create mode 100644 calender/static/archive/Dankventskalender_2017.html create mode 100644 calender/static/archive/Dankventskalender_2018.html create mode 100644 calender/static/archive/style.css create mode 100644 calender/static/calender/style.css create mode 100644 calender/static/calender/submit.css create mode 100644 calender/static/calender/w3.css diff --git a/calender/__init__.py b/calender/__init__.py index af336ac..4b68189 100644 --- a/calender/__init__.py +++ b/calender/__init__.py @@ -1,15 +1,20 @@ import os +from os.path import join, dirname, realpath from flask import Flask +UPLOAD_FOLDER = join(dirname(realpath(__file__)), 'media/memes') + def create_app(test_config=None): # create and configure the app + app = Flask(__name__, instance_relative_config=True) app.config.from_mapping( SECRET_KEY='dev', DATABASE=os.path.join(app.instance_path, 'calender.sqlite'), ) + app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER if test_config is None: # load the instance config, if it exists, when not testing @@ -39,4 +44,4 @@ def create_app(test_config=None): app.register_blueprint(calender.bp) app.add_url_rule('/', endpoint='index') - return app \ No newline at end of file + return app diff --git a/calender/calender.py b/calender/calender.py index 3fffce3..ad6f27c 100644 --- a/calender/calender.py +++ b/calender/calender.py @@ -1,11 +1,15 @@ +import os + from flask import ( Blueprint, render_template, - flash, request, url_for, redirect, abort, g) + flash, request, url_for, redirect, abort, g, send_from_directory, current_app) +from werkzeug.utils import secure_filename from calender.auth import login_required from calender.db import get_db bp = Blueprint('calender', __name__) +ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'} @bp.route('/') @@ -40,6 +44,21 @@ def create(): (title, body, g.user['id']) ) db.commit() + # check if the post request has the file part + if 'file' not in request.files: + flash('No file part') + return redirect(request.url) + file = request.files['file'] + # if user does not select file, browser also + # submit an empty part without filename + if file.filename == '': + flash('No selected file') + return redirect(request.url) + if file and allowed_file(file.filename): + filename = secure_filename(file.filename) + file.save(os.path.join(current_app.config['UPLOAD_FOLDER'], filename)) + return redirect(url_for('calender.uploaded_file', + filename=filename)) return redirect(url_for('calender.index')) return render_template('calender/create.html') @@ -89,6 +108,7 @@ def update(id): return render_template('calender/update.html', post=post) + @bp.route('//delete', methods=('POST',)) @login_required def delete(id): @@ -97,3 +117,14 @@ def delete(id): db.execute('DELETE FROM post WHERE id = ?', (id,)) db.commit() return redirect(url_for('calender.index')) + + +def allowed_file(filename): + return '.' in filename and \ + filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS + + +@bp.route('/uploads/') +def uploaded_file(filename): + return send_from_directory(current_app.config['UPLOAD_FOLDER'], + filename) diff --git a/calender/static/archive/Dankventskalender_2017.html b/calender/static/archive/Dankventskalender_2017.html new file mode 100644 index 0000000..4aa3a62 --- /dev/null +++ b/calender/static/archive/Dankventskalender_2017.html @@ -0,0 +1,263 @@ + + + +Dankventskalender + + + + + + + + + + + + + +
+ + +
+ + + Home + + + Memes + + Privacy + +
+ +
+ + + +
+ +

Welcome to the Dankventskalender 2017!

+ +

24. Dezember 2017

+
JohnnyIkarus "Happy Holidays!"
+ + +
+ +

23. Dezember 2017

+
JohnnyIkarus "I AM ETERNAL!!!"
+ + + +
+ +

22. Dezember 2017

+
sorexus "Dein meme des Tages brow (message from johnnyikarus [drunk])"
+ + + +
+ + + +

21. Dezember 2017

+
JohnnyIkarus "Langspielplatte... dieses meme widme ich dir!"
+ + + +
+ +

20. Dezember 2017

+
re2one: "When someone hands you pizza but it isn‘t beef hot sauce extra beef extra garlic"
+

Ein Beitrag geteilt von Dab Moms (@dabmoms) am

+ +
+ +

19. Dezember 2017

+
Dilly boytlin92 "Danker things. Stay lit"
+ + + +
+ +

18. Dezember 2017

+
edwarf: "=D"
+
+ +
+ +

17. Dezember 2017

+
re2one: "honey lan best lan, r u pumped n***as?! "
+
+
+ +

16. Dezember 2017

+
HI-FISHxD: "Stay true, fuck life!"
+ + +
+ +

15. Dezember 2017

+
re2one: "thumbnail gives all away :("
+ + +
+ +

14. Dezember 2017

+
re2one: "No man will take Langspielplattes wunschicoin"
+
+ +
+ +

13. Dezember 2017

+
edwarf: "[NO MESSAGE]"
+
To pole vault
+ +
+ +

12. Dezember 2017

+
ultrauser: "Antike FLAK-Einheit"
+
Enjoy this drone getting taken out with a spear
+ +
+ +

11. Dezember 2017

+
Langspielplatte: "Hör auf mich mit diesem dummen Spruch zu nerven"
+ + +
+ +

10. Dezember 2017

+
re2one: "One defends you, the other three attack you "
+ +
+ + +
+ +

9. Dezember 2017

+
re2one: "Dankcember hit me like"
+ +
+
+ +

8. Dezember 2017

+
Langspielplatte: "Ich kann dich nicht sehen"
+ + + +
+ +

7. Dezember 2017

+ +
edwarf: "it is fascinating how nature does that"
+ + +
+ + + +

6. Dezember 2017

+ +
Langspielplatte: "Die Sonne Ist Kalt.MP3"
+ + + + +
+ +

5. Dezember 2017

+ +
re2one: "o message for my next entry f**k dankcember"
+ +
+ +
+ +

4. Dezember 2017

+ +
matti: " ist dies hier die community um dank shit zu submitten?"
+ + + + +
+ + + +

3. Dezember 2017

+ +
re2one: "so everyone gets what he deserves in the #johnnyskikarus.ru snowbents calendar"
+ +
.
+ + +
+ + + +

2. Dezember 2017

+ +
re2one: "Okokok bruvs door 2 is gunna be sumthn cute fur ya"
+ +

Ein Beitrag geteilt von Cuter (@cuter) am

+
+ + +

1. Dezember 2017

+ +
re2one: "moin señoritas*innen, willkommen zum #johnnymemekarus.ru dankventskalender türchen nr 1"
+ +

Ein Beitrag geteilt von Looper (@looperhq) am

+
+ + +
Submit your own posts, e.g. via email, and maybe the next dankventsdoor is yours. Be sure to send a short message with the post so i can add it to the next Dankventskalender entry.
+ +
+
Special thanks to norom for helping me to implement this calender! <3
+ + + diff --git a/calender/static/archive/Dankventskalender_2018.html b/calender/static/archive/Dankventskalender_2018.html new file mode 100644 index 0000000..6cdc502 --- /dev/null +++ b/calender/static/archive/Dankventskalender_2018.html @@ -0,0 +1,431 @@ + + + + + Dankventskalender 2018 + + + + + + + + + + +
+ + +
+ + + Home + + + Memes + + Privacy + +
+ +
+ + + + +
+ +

Welcome to the Dankventskalender 2018!

+ + +
+ +

24 December 2018

+
j k a wholesome one for a change +
+ + + + + + +
+ +
+ +

23 December 2018

+
j k white house participating in annual 'holiday techsupport marathon' aka. christmas +
+ + + + + + +
+ +
+ +

22 December 2018

+
t4ko lel +
+ + + + + + +
+ +
+ +

21 December 2018

+
j k memelord, over +
+ + + + + + +
+ +
+ +

20 December 2018

+
j k step 5 +
+ + + + + + +
+ +
+ +

19 December 2018

+
meme in my way. +
+ + + + + + +
+ +
+ +

18 December 2018

+
Johnny Ikarus The true rapgod +
+ + + + + + +
+ +
+ +

17 December 2018

+
t4ko The five stages of struggle +
+ + + + + + +
+ +
+ +

16 December 2018

+
Johnny Ikarus Hohoho +
+ + + + + + +
+ +
+ +

15 December 2018

+
memelord3000 I am programmer, yes. +
+ + + + + + +
+ +
+ +

14 December 2018

+
Johnny Ikarus every mans dream +
+ + + + + + +
+ +
+ +

13 December 2018

+
HAMMA_HIxD Play the song of my people... +
+ + + + + + +
+ +
+ +

12 December 2018

+
j k recaptcha +
+ + + + + + +
+ +
+ +

11 December 2018

+
t4ko Come on Hank, sing that song. +
+ + + + + + +
+ +
+ +

10 December 2018

+
j k *dabs* +
+ + + + + + +
+ +
+ +

09 December 2018

+
meme on my way +
+ + + + + + +
+ +
+ +

08 December 2018

+
Busti Heckin' heck +
+ + + + + + +
+ +
+ +

07 December 2018

+
t4ko 🤔🤔🤔🤔🤔 +
+ + + + + + +
+ +
+ +

06 December 2018

+
[Bonusmeme] Langspielplatte Einen schönen Nikolaustag. +
+ + + + + + +
+ +
+ +

06 December 2018

+
nomnom EverybodyRock your bodyEverybodyRock your body rightBackstreet's back alright +
+ + + + + + +
+ +
+ +

05 December 2018

+
Langspielplatte Alle Jahre wieder, wenn die Ersies kommen. +
+ + + + + + +
+ +
+ +

04 December 2018

+
snackfart ducking initd +
+ + + + + + +
+ +
+ +

03 December 2018

+
nomnom In Russia, drone flies you. +
+ + + + + + +
+ +
+ +

02 December 2018

+
Langspielplatte Jo, Brudi muss los...... das wird ein Dankzember! +
+ + + + + + +
+ +
+ +

01 December 2018

+
Johnny Ikarus Ich wünsche euch viel Spaß beim submitten und eine schöne Adventszeit! +
+ + + + + + +
+ + + + +
+

Some entries may not be visible on IPhones or in Safari-Browsers on MacOS. + Reason for that: Apple devices and software seem to have Problems with webm-files.

+
+
+ + + + +
Special thanks to Langspielplatte for hosting this webspace! <3
+ diff --git a/calender/static/archive/style.css b/calender/static/archive/style.css new file mode 100644 index 0000000..8fbe8fd --- /dev/null +++ b/calender/static/archive/style.css @@ -0,0 +1,14 @@ +video { + width:100%; + max-width:500px; + height:auto; + } +iframe{ + width:100%; + max-width:500px; + + } +img { + width: 100%; +} +body,h1,h2,h3,h4,h5 {font-family: "Raleway", sans-serif; color:black;} \ No newline at end of file diff --git a/calender/static/calender/style.css b/calender/static/calender/style.css new file mode 100644 index 0000000..fc99a56 --- /dev/null +++ b/calender/static/calender/style.css @@ -0,0 +1,210 @@ +body, h1, h2, h3, h4, h5 { + font-family: "Raleway", sans-serif; + color: black; + margin-bottom: 20px; + +} +.w3-content .w3-container-display img{ + max-width: 100%; +} +.w3-content { + max-width: 800px; +} +footer{ + padding-left: 2px; + position: fixed; + left: 0; + bottom: 0; + width: 100%; +} +video { + width:100%; + max-width:500px; + height:auto; + } +iframe{ + width:100%; + max-width:500px; + + } +img { + width: 100%; +} +textarea{ + resize: none; +} + +.container { + max-width: 500px; + margin: 0 auto; + } +.bgimg-1{ + background-attachment: fixed; + background-position: center; + background-repeat: no-repeat; + background-size: cover; + background-image: url("horsehead.jpg"); + min-height: 100%; +} +.button_flash { + background-color: #004A7F; + -webkit-border-radius: 10px; + border-radius: 10px; + border: none; + color: #FFFFFF; + cursor: pointer; + display: inline-block; + font-family: Arial; + font-size: 20px; + padding: 5px 10px; + text-align: center; + text-decoration: none; +} +.button_flash { + -webkit-animation: glowing_red 1500ms infinite; + -moz-animation: glowing_red 1500ms infinite; + -o-animation: glowing_red 1500ms infinite; + animation: glowing_red 1500ms infinite; +} + +.button_flash_animation { + -webkit-animation: glowing_green 2000ms infinite; + -moz-animation: glowing_green 2000ms infinite; + -o-animation: glowing_green 2000ms infinite; + animation: glowing_green 2000ms infinite; +} + +.rotated-image { + animation: spin_img 1s infinite linear +} +.dropbtn { + padding: 16px; + font-size: 16px; + border: none; + cursor: pointer; +} + +.dropbtn:hover, .dropbtn:focus { + background-color: #3e8e41; +} + +.dropdown { + position: relative; + display: inline-block; +} + +.dropdown-content { + display: none; + position: absolute; + background-color: #f9f9f9; + min-width: 160px; + overflow: auto; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + z-index: 1; +} + +.dropdown-content a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} + +.dropdown a:hover {background-color: #f1f1f1} + +.show {display:block;} + + +@-webkit-keyframes glowing_red { + 0% { background-color: #B20000; -webkit-box-shadow: 0 0 3px #B20000; } + 50% { background-color: #FF0000; -webkit-box-shadow: 0 0 40px #FF0000; } + 100% { background-color: #B20000; -webkit-box-shadow: 0 0 3px #B20000; } +} + +@-moz-keyframes glowing_red { + 0% { background-color: #B20000; -moz-box-shadow: 0 0 3px #B20000; } + 50% { background-color: #FF0000; -moz-box-shadow: 0 0 40px #FF0000; } + 100% { background-color: #B20000; -moz-box-shadow: 0 0 3px #B20000; } +} + +@-o-keyframes glowing_red { + 0% { background-color: #B20000; box-shadow: 0 0 3px #B20000; } + 50% { background-color: #FF0000; box-shadow: 0 0 40px #FF0000; } + 100% { background-color: #B20000; box-shadow: 0 0 3px #B20000; } +} + +@keyframes glowing_red { + 0% { background-color: #B20000; box-shadow: 0 0 3px #B20000; } + 50% { background-color: #FF0000; box-shadow: 0 0 40px #FF0000; } + 100% { background-color: #B20000; box-shadow: 0 0 3px #B20000; } +} + +@-webkit-keyframes glowing_green { + 0% { background-color: #3fff00; -webkit-box-shadow: 0 0 3px #3fff00; } + 50% { background-color: #0ad100; -webkit-box-shadow: 0 0 40px #0ad100; } + 100% { background-color: #3fff00; -webkit-box-shadow: 0 0 3px #3fff00; } +} + +@-moz-keyframes glowing_green { + 0% { background-color: #3fff00; -moz-box-shadow: 0 0 3px #3fff00; } + 50% { background-color: #0ad100; -moz-box-shadow: 0 0 40px #0ad100; } + 100% { background-color: #3fff00; -moz-box-shadow: 0 0 3px #3fff00; } +} + +@-o-keyframes glowing_green { + 0% { background-color: #3fff00; box-shadow: 0 0 3px #3fff00; } + 50% { background-color: #0ad100; box-shadow: 0 0 40px #0ad100; } + 100% { background-color: #3fff00; box-shadow: 0 0 3px #3fff00; } +} + +@keyframes glowing_green { + 0% { background-color: #3fff00; box-shadow: 0 0 3px #3fff00; } + 50% { background-color: #0ad100; box-shadow: 0 0 40px #0ad100; } + 100% { background-color: #3fff00; box-shadow: 0 0 3px #3fff00; } +} + + + + +@keyframes spin_img { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(-360deg); + } +} + +.button3 { + color: black; +} + +.button3:hover { + background-color: #f44336; + color: white; +} + +.button span { + cursor: pointer; + display: inline-block; + position: relative; + transition: 0.5s; +} + +.button span:after { + content: '\00bb'; + position: absolute; + opacity: 0; + top: 0; + right: -20px; + transition: 0.5s; +} + +.button:hover span { + padding-right: 25px; +} + +.button:hover span:after { + opacity: 1; + right: 0; +} diff --git a/calender/static/calender/submit.css b/calender/static/calender/submit.css new file mode 100644 index 0000000..bb0cdff --- /dev/null +++ b/calender/static/calender/submit.css @@ -0,0 +1,247 @@ + +body, h1, h2, h3, h4, h5 { + font-family: "Raleway", sans-serif; + color: black; +} + +.w3-content .w3-container-display img { + max-width: 100%; +} + +.w3-content { + max-width: 800px; +} + +video { + width: 100%; + max-width: 500px; + height: auto; +} + +iframe { + width: 100%; + max-width: 500px; + +} + +img { + width: 100%; +} + +.container { + max-width: 500px; + margin: 0 auto; +} + +.bgimg-1 { + background-attachment: fixed; + background-position: center; + background-repeat: no-repeat; + background-size: cover; + background-image: url("horsehead.jpg"); + min-height: 100%; +} + +.button_flash { + background-color: #004A7F; + -webkit-border-radius: 10px; + border-radius: 10px; + border: none; + color: #FFFFFF; + cursor: pointer; + display: inline-block; + font-family: Arial; + font-size: 20px; + padding: 5px 10px; + text-align: center; + text-decoration: none; +} + +.button_flash { + -webkit-animation: glowing_red 1500ms infinite; + -moz-animation: glowing_red 1500ms infinite; + -o-animation: glowing_red 1500ms infinite; + animation: glowing_red 1500ms infinite; +} + +.button_flash_animation { + -webkit-animation: glowing_green 2000ms infinite; + -moz-animation: glowing_green 2000ms infinite; + -o-animation: glowing_green 2000ms infinite; + animation: glowing_green 2000ms infinite; +} + +.rotated-image { + animation: spin_img 1s infinite linear +} + +.dropbtn { + padding: 16px; + font-size: 16px; + border: none; + cursor: pointer; +} + +.dropbtn:hover, .dropbtn:focus { + background-color: #3e8e41; +} + +.dropdown { + position: relative; + display: inline-block; +} + +.dropdown-content { + display: none; + position: absolute; + background-color: #f9f9f9; + min-width: 160px; + overflow: auto; + box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); + z-index: 1; +} + +.dropdown-content a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} + +.dropdown a:hover { + background-color: #f1f1f1 +} + +.show { + display: block; +} + +@-webkit-keyframes glowing_red { + 0% { + background-color: #B20000; + -webkit-box-shadow: 0 0 3px #B20000; + } + 50% { + background-color: #FF0000; + -webkit-box-shadow: 0 0 40px #FF0000; + } + 100% { + background-color: #B20000; + -webkit-box-shadow: 0 0 3px #B20000; + } +} + +@-moz-keyframes glowing_red { + 0% { + background-color: #B20000; + -moz-box-shadow: 0 0 3px #B20000; + } + 50% { + background-color: #FF0000; + -moz-box-shadow: 0 0 40px #FF0000; + } + 100% { + background-color: #B20000; + -moz-box-shadow: 0 0 3px #B20000; + } +} + +@-o-keyframes glowing_red { + 0% { + background-color: #B20000; + box-shadow: 0 0 3px #B20000; + } + 50% { + background-color: #FF0000; + box-shadow: 0 0 40px #FF0000; + } + 100% { + background-color: #B20000; + box-shadow: 0 0 3px #B20000; + } +} + +@keyframes glowing_red { + 0% { + background-color: #B20000; + box-shadow: 0 0 3px #B20000; + } + 50% { + background-color: #FF0000; + box-shadow: 0 0 40px #FF0000; + } + 100% { + background-color: #B20000; + box-shadow: 0 0 3px #B20000; + } +} + +@-webkit-keyframes glowing_green { + 0% { + background-color: #3fff00; + -webkit-box-shadow: 0 0 3px #3fff00; + } + 50% { + background-color: #0ad100; + -webkit-box-shadow: 0 0 40px #0ad100; + } + 100% { + background-color: #3fff00; + -webkit-box-shadow: 0 0 3px #3fff00; + } +} + +@-moz-keyframes glowing_green { + 0% { + background-color: #3fff00; + -moz-box-shadow: 0 0 3px #3fff00; + } + 50% { + background-color: #0ad100; + -moz-box-shadow: 0 0 40px #0ad100; + } + 100% { + background-color: #3fff00; + -moz-box-shadow: 0 0 3px #3fff00; + } +} + +@-o-keyframes glowing_green { + 0% { + background-color: #3fff00; + box-shadow: 0 0 3px #3fff00; + } + 50% { + background-color: #0ad100; + box-shadow: 0 0 40px #0ad100; + } + 100% { + background-color: #3fff00; + box-shadow: 0 0 3px #3fff00; + } +} + +@keyframes glowing_green { + 0% { + background-color: #3fff00; + box-shadow: 0 0 3px #3fff00; + } + 50% { + background-color: #0ad100; + box-shadow: 0 0 40px #0ad100; + } + 100% { + background-color: #3fff00; + box-shadow: 0 0 3px #3fff00; + } +} + +@keyframes spin_img { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(-360deg); + } +} + diff --git a/calender/static/calender/w3.css b/calender/static/calender/w3.css new file mode 100644 index 0000000..8faa683 --- /dev/null +++ b/calender/static/calender/w3.css @@ -0,0 +1,233 @@ +/* W3.CSS 4.12 Novemberr 2018 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent;-webkit-text-decoration-skip:objects} +a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}svg:not(:root){overflow:hidden} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-input-placeholder{color:inherit;opacity:0.54} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif} +h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit} +.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc} +.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} +.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1} +.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center} +.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} +.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap} +.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} +.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none} +.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%} +.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none} +.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} +.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s} +.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%} +.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc} +.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.w3-dropdown-hover:hover .w3-dropdown-content{display:block} +.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} +.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1} +.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px} +.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} +.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px} +.w3-main,#main{transition:margin-left .4s} +.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px} +.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} +.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0} +.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} +.w3-bar .w3-button{white-space:normal} +.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0} +.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%} +.w3-responsive{display:block;overflow-x:auto} +.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before, +.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both} +.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} +.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%} +.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%} +.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%} +@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%} +.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%} +.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}} +@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%} +.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%} +.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}} +.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px} +.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px} +.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell} +.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom} +.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} +@media (max-width:1205px){.w3-auto{max-width:95%}} +@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} +.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} +.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} +.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} +@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} +@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} +@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}} +.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} +.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} +.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} +.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} +.w3-display-position{position:absolute} +.w3-circle{border-radius:50%} +.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px} +.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} +.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px} +.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} +.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)} +.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)} +.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}} +.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}} +.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} +.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1} +.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75} +.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)} +.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)} +.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)} +.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} +.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} +.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} +.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} +.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} +.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} +.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} +.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} +.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important} +.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} +.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} +.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important} +.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} +.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} +.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} +.w3-left{float:left!important}.w3-right{float:right!important} +.w3-button:hover{color:#000!important;background-color:#ccc!important} +.w3-transparent,.w3-hover-none:hover{background-color:transparent!important} +.w3-hover-none:hover{box-shadow:none!important} +/* Colors */ +.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important} +.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important} +.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important} +.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important} +.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important} +.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important} +.w3-blue-grey,.w3-hover-blue-grey:hover,.w3-blue-gray,.w3-hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important} +.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important} +.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important} +.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important} +.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important} +.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important} +.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important} +.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important} +.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important} +.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important} +.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important} +.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important} +.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important} +.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important} +.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important} +.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important} +.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important} +.w3-grey,.w3-hover-grey:hover,.w3-gray,.w3-hover-gray:hover{color:#000!important;background-color:#9e9e9e!important} +.w3-light-grey,.w3-hover-light-grey:hover,.w3-light-gray,.w3-hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important} +.w3-dark-grey,.w3-hover-dark-grey:hover,.w3-dark-gray,.w3-hover-dark-gray:hover{color:#fff!important;background-color:#616161!important} +.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important} +.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important} +.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important} +.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important} +.w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important} +.w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important} +.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important} +.w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important} +.w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important} +.w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important} +.w3-text-blue-grey,.w3-hover-text-blue-grey:hover,.w3-text-blue-gray,.w3-hover-text-blue-gray:hover{color:#607d8b!important} +.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important} +.w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important} +.w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important} +.w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important} +.w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important} +.w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important} +.w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important} +.w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important} +.w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important} +.w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important} +.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important} +.w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important} +.w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important} +.w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important} +.w3-text-white,.w3-hover-text-white:hover{color:#fff!important} +.w3-text-black,.w3-hover-text-black:hover{color:#000!important} +.w3-text-grey,.w3-hover-text-grey:hover,.w3-text-gray,.w3-hover-text-gray:hover{color:#757575!important} +.w3-text-light-grey,.w3-hover-text-light-grey:hover,.w3-text-light-gray,.w3-hover-text-light-gray:hover{color:#f1f1f1!important} +.w3-text-dark-grey,.w3-hover-text-dark-grey:hover,.w3-text-dark-gray,.w3-hover-text-dark-gray:hover{color:#3a3a3a!important} +.w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important} +.w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important} +.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important} +.w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important} +.w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important} +.w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important} +.w3-border-blue-grey,.w3-hover-border-blue-grey:hover,.w3-border-blue-gray,.w3-hover-border-blue-gray:hover{border-color:#607d8b!important} +.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important} +.w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important} +.w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important} +.w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important} +.w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important} +.w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important} +.w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important} +.w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important} +.w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important} +.w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important} +.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important} +.w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important} +.w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important} +.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important} +.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important} +.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important} +.w3-border-grey,.w3-hover-border-grey:hover,.w3-border-gray,.w3-hover-border-gray:hover{border-color:#9e9e9e!important} +.w3-border-light-grey,.w3-hover-border-light-grey:hover,.w3-border-light-gray,.w3-hover-border-light-gray:hover{border-color:#f1f1f1!important} +.w3-border-dark-grey,.w3-hover-border-dark-grey:hover,.w3-border-dark-gray,.w3-hover-border-dark-gray:hover{border-color:#616161!important} +.w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important} +.w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffcc!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important} \ No newline at end of file diff --git a/calender/templates/base.html b/calender/templates/base.html index 4017c06..c483dd6 100644 --- a/calender/templates/base.html +++ b/calender/templates/base.html @@ -1,18 +1,54 @@ -{% block title %}{% endblock %} - Flaskr - - + + {% block title %}{% endblock %}Dankventskalender + + + + + + + + +
+ + + +
{% block header %}{% endblock %} @@ -20,5 +56,7 @@ {% for message in get_flashed_messages() %}
{{ message }}
{% endfor %} - {% block content %}{% endblock %} -
\ No newline at end of file + +{% block content %} +{% endblock %} + \ No newline at end of file diff --git a/calender/templates/calender/create.html b/calender/templates/calender/create.html index ad402e0..f14bfb5 100644 --- a/calender/templates/calender/create.html +++ b/calender/templates/calender/create.html @@ -1,15 +1,20 @@ {% extends 'base.html' %} {% block header %} -

{% block title %}New Post{% endblock %}

+

{% block title %}Submit a Meme{% endblock %}

{% endblock %} {% block content %} -
- - - - - -
-{% endblock %} \ No newline at end of file +
+ + + + +
+

Choose a mp4, webm, gif , png or jpg file.(max 25MB)

+ +
+ +
+{% endblock %} + diff --git a/calender/templates/calender/index.html b/calender/templates/calender/index.html index c1bfc10..1c55808 100644 --- a/calender/templates/calender/index.html +++ b/calender/templates/calender/index.html @@ -1,10 +1,20 @@ {% extends 'base.html' %} {% block header %} -

{% block title %}Posts{% endblock %}

- {% if g.user %} - New - {% endif %} + +
+

{% block title %}Welcome to the Dankventskalender 2020!{% endblock %}

+
+
Submit your meme for the next day now! Feel free to create and submit your own creations.
+
+ {% if g.user %} + + + + {% endif %} +
+
+ {% endblock %} {% block content %}