From 687d2fe96e2993d722cbc2ca8a34e2d8579cff44 Mon Sep 17 00:00:00 2001 From: codl Date: Wed, 23 Aug 2017 15:14:24 +0200 Subject: [PATCH] nicer log in buttons on index --- assets/mastodon.png | Bin 0 -> 2422 bytes assets/mastodon.svg | 61 +++++++++++++++++++++++++++++++++++++++++ assets/styles.css | 41 ++++++++++++++++++++++++++++ assets/twitter.png | Bin 0 -> 10043 bytes assets/twitter.svg | 63 +++++++++++++++++++++++++++++++++++++++++++ dodo.py | 2 +- routes.py | 16 ++++++----- templates/index.html | 29 ++++++++++++++++++-- 8 files changed, 203 insertions(+), 9 deletions(-) create mode 100644 assets/mastodon.png create mode 100644 assets/mastodon.svg create mode 100644 assets/twitter.png create mode 100644 assets/twitter.svg diff --git a/assets/mastodon.png b/assets/mastodon.png new file mode 100644 index 0000000000000000000000000000000000000000..ffaff4de7a0006b410af35fdf0113189d06d7f36 GIT binary patch literal 2422 zcmV-+35oWJP)`^@F`^xS*TW1n;Ho!P(SWICO*_gd%v?>=YmefD0<=ny200cHYc0<)rH1~3(v z222M|1||bzfJp_+4FUUrL0~ViyY3hOUIw-UJAfT#_G$rJnXsx14HJFv3xIb33xWC3 z?{k3Ts`e)(`+=>%bJ4LGc+$*X@@=SeK_ndyTo4`a1{MPo%eGq)eZWRw6Y!9kJyW#8 zQUsAS30MwX3VZ;VP==ijWGAo=SPML8WM}QN3*4>5l0e1mEHM1RQ z3waSl(mddHV5yJ#Mi_&@9l*_Iw!hWMg$0rHdElGC2}SD~;p_xHW@dkEcG8%A^EY6TnGLplhD4KrKO%@xCT|D62q{{Kq)+0e00QN52$(;%*%{GH z?XQ6;mAEvz83#;k+Cn7V2z z7l9f{f}CBs7l9f{f`q|f8%Yx6%&MITyg?A8!#JkfE9o$Bd>ecT5EDewINZ|5K%0o) zvc|W?i$IMaNQV&@Bupr_nYbX8Z*dD8P1%BM0zQLVdU^_OKjCsZ&GF#y0ZFO0DM*?q>8S#?j!61wN?T(k{i5Kt ztx97nvUhVH1My0F3py-G*QRwkvU!G_hH$i_T{%xnv=ry^T}z+bAc74dkMlXGwSY{0(?l+D^*EMlv_ z))wX|Bxx#c;8?n?oMkJs<-3I} z&spv=py}3#1TIhLl(aSHRYgqz`4V^&UxwvKon3 zGP8ig^=y(fvxURsB>ljHt?iOpE?tuJSxNsbXluWu%Tn07Nbbv$nRrFh3p!lS9!X!4 zG$UrCM{czIcaOFXOZuLqxiMQ~B`uZokVjibB>hs-d6MFxox54Yv)! zCr5x6aN~?Az--EWGr1ENE3qfCm3ew40|UT|xNAI%>^;R}hzl}>>?7uYN8-J#Lv8UQ zP$NkY-*55)88}LiC{)mY+T=@sk_}X&3HT z+yrB%=7So^eBziE5~b1Z$p*QBULXx}aT)UltxU@{NlV&& ztzCnp6(tKIxeyljOM0Jjgkkbsh9l-7WI*6MHYn*z+?&P4{#;7MjOeI>`~k>vQ0U%lW(Rdx785ox#y|0(Vwvu(F&}a`RKmfGdHE z=$xfJaSq_VK=%TVRQ-;oElI%SW^@et+3eutdDw*ZJ{HwvdO)- zp93tyEqbV5gXMeXw;#9A?P=Wl<&9?6F*}btLXc+2#atg2=VV+AOHXW07*qoM6N<$f~bpnRR910 literal 0 HcmV?d00001 diff --git a/assets/mastodon.svg b/assets/mastodon.svg new file mode 100644 index 0000000..14525ed --- /dev/null +++ b/assets/mastodon.svg @@ -0,0 +1,61 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/assets/styles.css b/assets/styles.css index 4fcdc22..e57e8c2 100644 --- a/assets/styles.css +++ b/assets/styles.css @@ -190,3 +190,44 @@ form aside { font-style: italic; font-size: 0.8em; } + +a.btn { + color: white; + text-decoration: none; + background-color: #555; + border-radius: .3em; + overflow: hidden; + height: 2em; + + display: inline-block; +} + +a.btn:hover { + opacity: 0.9; +} + +.btn > * { + display: inline-block; + vertical-align: middle; +} + +.btn-header { + flex: 0 0; + width: 2em; + height: 2em; + padding-left: 0.1em; + background-image: linear-gradient(0deg, + rgba(255,255,255,0), + rgba(255,255,255,0.2) + ); + text-align: center; +} + +.btn-header img { + margin-top: 0.4em; + height: 1.1em; +} + +.btn-content { + margin: 0 .5em 0 .1em; +} diff --git a/assets/twitter.png b/assets/twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..1cfb0d69171f687cab37302203530276ea67eb8b GIT binary patch literal 10043 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 literal 0 HcmV?d00001 diff --git a/assets/twitter.svg b/assets/twitter.svg new file mode 100644 index 0000000..644d15b --- /dev/null +++ b/assets/twitter.svg @@ -0,0 +1,63 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/dodo.py b/dodo.py index 5434382..937a937 100644 --- a/dodo.py +++ b/dodo.py @@ -35,7 +35,7 @@ def task_gen_logo(): def task_copy_asset(): import shutil - assets = ('icon.png', 'logotype.png', 'settings.js') + assets = ('icon.png', 'logotype.png', 'settings.js', 'twitter.png', 'mastodon.png') for asset in assets: yield dict( name=asset, diff --git a/routes.py b/routes.py index 4d421b0..da3dc1f 100644 --- a/routes.py +++ b/routes.py @@ -60,7 +60,9 @@ def index(): settings_error = 'settings_error' in request.args ) else: + instances = MastodonInstance.query.filter(MastodonInstance.popularity > 1).order_by(db.desc(MastodonInstance.popularity)).limit(3) return render_template('index.html', + mastodon_instances = instances, twitter_login_error = 'twitter_login_error' in request.args) @app.route('/login/twitter') @@ -216,16 +218,18 @@ def api_viewer_timers(): ) @app.route('/login/mastodon', methods=('GET', 'POST')) -def mastodon_login_step1(): +def mastodon_login_step1(instance=None): instances = MastodonInstance.query.filter(MastodonInstance.popularity > 1).order_by(db.desc(MastodonInstance.popularity)).limit(16) - if request.method == 'GET': - return render_template('mastodon_login.html', instances=instances, generic_error = 'error' in request.args) + instance_url = request.args.get('instance_url', None) or request.form.get('instance_url', None) - if not 'instance_url' in request.form or not request.form['instance_url']: - return render_template('mastodon_login.html', instances=instances, address_error=True) + if not instance_url: + return render_template('mastodon_login.html', instances=instances, + address_error = request.method == 'POST', + generic_error = 'error' in request.args + ) - instance_url = request.form['instance_url'].split("@")[-1].lower() + instance_url = instance_url.split("@")[-1].lower() callback = url_for('mastodon_login_step2', instance=instance_url, _external=True) diff --git a/templates/index.html b/templates/index.html index 4d9e9e3..6061e08 100644 --- a/templates/index.html +++ b/templates/index.html @@ -27,8 +27,33 @@ {% endif %}

Sound good to you?

-

Log in with Twitter

-

Log in with Mastodon

+

+ + + + Log in with Twitter + +

+ +{% for instance in mastodon_instances %} + +

+ + + + Log in with {{instance.instance}} + +

+ +{% endfor %} + +

+ + + + Log in with another Mastodon instance + +

Policy