a mini social media app for small communities

move theme to site settings and make default_theme apply when logged out

Changed files
+30 -28
src
templates
+3 -3
config.maple
··· 4 4 instance = { 5 5 name = 'beep' 6 6 welcome = 'welcome to beep!' 7 + 8 + default_theme = 'https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.classless.min.css' 9 + allow_changing_theme = true 7 10 } 8 11 9 12 http = { ··· 48 51 bio_min_len = 0 49 52 bio_max_len = 200 50 53 bio_pattern = '(.|\s)*' 51 - 52 - default_theme = 'https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.classless.min.css' 53 - allow_changing_theme = true 54 54 }
+3 -3
src/api.v
··· 32 32 password_salt: salt 33 33 } 34 34 35 - if app.config.user.default_theme != '' { 36 - user.theme = app.config.user.default_theme 35 + if app.config.instance.default_theme != '' { 36 + user.theme = app.config.instance.default_theme 37 37 } 38 38 39 39 sql app.db { ··· 201 201 202 202 @['/api/user/set_theme'; post] 203 203 fn (mut app App) api_user_set_theme(mut ctx Context, url string) veb.Result { 204 - if !app.config.user.allow_changing_theme { 204 + if !app.config.instance.allow_changing_theme { 205 205 ctx.error('this instance disallows changing themes :(') 206 206 return ctx.redirect('/me') 207 207 }
+21 -21
src/config.v
··· 8 8 static_path string 9 9 instance struct { 10 10 pub mut: 11 - name string 12 - welcome string 11 + name string 12 + welcome string 13 + default_theme string 14 + allow_changing_theme bool 13 15 } 14 16 http struct { 15 17 pub mut: ··· 34 36 } 35 37 user struct { 36 38 pub mut: 37 - username_min_len int 38 - username_max_len int 39 - username_pattern string 40 - nickname_min_len int 41 - nickname_max_len int 42 - nickname_pattern string 43 - password_min_len int 44 - password_max_len int 45 - password_pattern string 46 - pronouns_min_len int 47 - pronouns_max_len int 48 - pronouns_pattern string 49 - bio_min_len int 50 - bio_max_len int 51 - bio_pattern string 52 - default_theme string 53 - allow_changing_theme bool 39 + username_min_len int 40 + username_max_len int 41 + username_pattern string 42 + nickname_min_len int 43 + nickname_max_len int 44 + nickname_pattern string 45 + password_min_len int 46 + password_max_len int 47 + password_pattern string 48 + pronouns_min_len int 49 + pronouns_max_len int 50 + pronouns_pattern string 51 + bio_min_len int 52 + bio_max_len int 53 + bio_pattern string 54 54 } 55 55 } 56 56 ··· 64 64 loaded_instance := loaded.get('instance') 65 65 config.instance.name = loaded_instance.get('name').to_str() 66 66 config.instance.welcome = loaded_instance.get('welcome').to_str() 67 + config.instance.default_theme = loaded_instance.get('default_theme').to_str() 68 + config.instance.allow_changing_theme = loaded_instance.get('allow_changing_theme').to_bool() 67 69 68 70 loaded_http := loaded.get('http') 69 71 config.http.port = loaded_http.get('port').to_int() ··· 99 101 config.user.bio_min_len = loaded_user.get('bio_min_len').to_int() 100 102 config.user.bio_max_len = loaded_user.get('bio_max_len').to_int() 101 103 config.user.bio_pattern = loaded_user.get('bio_pattern').to_str() 102 - config.user.default_theme = loaded_user.get('default_theme').to_str() 103 - config.user.allow_changing_theme = loaded_user.get('allow_changing_theme').to_bool() 104 104 105 105 return config 106 106 }
+2
src/templates/partial/header.html
··· 10 10 @include 'assets/style.html' 11 11 @if ctx.is_logged_in() && user.theme != none 12 12 <link rel="stylesheet" href="@user.get_theme()"> 13 + @else if app.config.instance.default_theme != '' 14 + <link rel="stylesheet" href="@app.config.instance.default_theme"> 13 15 @endif 14 16 </head> 15 17
+1 -1
src/templates/user.html
··· 124 124 <form action="/api/user/set_nickname" method="post"> 125 125 <input type="submit" value="reset nickname"> 126 126 </form> 127 - @if app.config.user.allow_changing_theme 127 + @if app.config.instance.allow_changing_theme 128 128 <br> 129 129 <form action="/api/user/set_theme" method="post"> 130 130 <label for="url">theme:</label>