From 50750c68081a79437a3fc39c2f2fa33894d92fd3 Mon Sep 17 00:00:00 2001 From: aymm Date: Sun, 4 Apr 2021 09:44:33 +0200 Subject: [PATCH] Added support for higher pixel density avatars, added link to create new polls --- globals.php | 15 +++++++++++++++ icons/plus.svg | 6 ++++++ new_poll.php | 21 +++++++++++++++++++++ styles/style.css | 27 ++++++++++++++++++++++++--- view_poll.php | 24 ++++++++++++++++++++---- 5 files changed, 86 insertions(+), 7 deletions(-) create mode 100644 icons/plus.svg create mode 100644 new_poll.php diff --git a/globals.php b/globals.php index 939b980..4ab57ed 100644 --- a/globals.php +++ b/globals.php @@ -17,11 +17,13 @@ function get_page_header( global $api; $greeting = ''; $logout_link = ''; + $newpoll_class = ''; if ($api->isAuthenticated(false, true)) { $u = $api->getAuthorizedUser(); $greeting = 'Welcome, ' . ($u->name ?? '@'.$u->username); $logout_link = 'Logout'; } else { + $newpoll_class = 'disabled'; $greeting = 'Login with pnut'; } $title = ''; @@ -36,12 +38,16 @@ function get_page_header( foreach ($scripts as $script) { $script_str .= ''; } + return ''.$title.'' . $script_str . '
' . '
' . file_get_contents(__DIR__.'/icons/home.svg') . 'Home
' + . '
' + . file_get_contents(__DIR__.'/icons/plus.svg') //TODO + . 'New Poll
' . $greeting . '
' . $logout_link @@ -54,3 +60,12 @@ function redirect($to) die('' .''); } + +function get_source_set($user, int $base_size, int $max_scale = 3): string +{ + $srcset_entries = [$user->getAvatarUrl($base_size)]; + for ($s = 2; $s <= $max_scale; $s++) { + $srcset_entries[] = $user->getAvatarUrl($base_size * $s) . ' ' . $s . 'x'; + } + return implode(', ', $srcset_entries); +} diff --git a/icons/plus.svg b/icons/plus.svg new file mode 100644 index 0000000..b9e0c6d --- /dev/null +++ b/icons/plus.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/new_poll.php b/new_poll.php new file mode 100644 index 0000000..787691e --- /dev/null +++ b/new_poll.php @@ -0,0 +1,21 @@ +getMessage().'"'); +} + +if (!$api->isAuthenticated(false, true)) { + die('You need to be logged in to create a new poll!'); +} diff --git a/styles/style.css b/styles/style.css index 2737e61..df16f03 100644 --- a/styles/style.css +++ b/styles/style.css @@ -54,6 +54,16 @@ button:disabled { display: none !important; } +.disabled { + cursor: not-allowed; + pointer-events: none; + color: var(--disabled-color) !important; +} + +.disabled svg { + stroke: var(--disabled-color) !important; +} + /* Header */ header { display: flex; @@ -77,10 +87,14 @@ header { align-items: center; } -.homelink { +header a { margin-right: 1em; } +header .newpolllink svg { + stroke-width: 1em; +} + /* Polls */ .poll { display: inline-block; @@ -117,7 +131,7 @@ datewrapper time { grid-column: 2; } -.options { +.options form { display: grid; grid-template-columns: auto 1fr; grid-column-gap: 8px; @@ -126,13 +140,20 @@ datewrapper time { .votes-remaining { font-size: small; } +.poll .header .user .avatar { + width: 50px; +} +.option-responses .avatar { + width: 20px; +} +/* Success banner */ .banner-wrapper { cursor: pointer; transition: all 0.25s ease-in-out; box-sizing: border-box; } -/* Success banner */ + .success-banner { background-color: var(--green); padding: 8px; diff --git a/view_poll.php b/view_poll.php index 84ae7cc..7429a3a 100644 --- a/view_poll.php +++ b/view_poll.php @@ -8,8 +8,13 @@ use APnutI\Exceptions\NotSupportedPollException; use APnutI\Exceptions\NotAuthorizedException; use APnutI\Exceptions\PollAccessRestrictedException; use APnutI\Entities\Poll; +use APnutI\Entities\User; -echo get_page_header('Poll', true, ['poll']); +try { + echo get_page_header('Poll', true, ['poll']); +} catch (\Exception $e) { + die('Something went wrong :( "'.$e->getMessage().'"'); +} if (empty($_GET['id']) || !is_numeric($_GET['id']) || $_GET['id'] <= 0) { die('Invalid poll ID'); @@ -34,9 +39,14 @@ try { . '
' . '
' ); +} catch (\Exception $e) { + die('Something went wrong :( "'.$e->getMessage().'"'); } jslog($poll); + $user_avatar_url = $poll->user->getAvatarUrl(50); +$user_avatar_url_srcset = get_source_set($poll->user, 50); + $username = '@' . $poll->user->username; $disabled = $poll->canVote() ? '' : 'disabled'; $user_name = $poll->user->name ?? ''; @@ -59,10 +69,10 @@ if (array_key_exists('success', $_GET) && $_GET['success'] == 1) { ?>
- +
' ?> - +
@@ -103,7 +113,13 @@ if (array_key_exists('success', $_GET) && $_GET['success'] == 1) { ?>
respondent_ids as $res_id) { $u = $api->getUser($res_id, $user_args); ?> - + + +