]> git.localhorst.tv Git - alttp.git/commitdiff
show random quote source
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Sat, 19 Jul 2025 10:55:53 +0000 (12:55 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Sat, 19 Jul 2025 10:55:53 +0000 (12:55 +0200)
app/Models/User.php
resources/js/components/users/Profile.jsx
resources/js/i18n/de.js
resources/js/i18n/en.js

index 6ed6a810098ef8089f0c301f14b5fc1a97f1c62c..0fdaf7482e5df4dbaacd6ecb4a6a068e2feb2234 100644 (file)
@@ -31,13 +31,17 @@ class User extends Authenticatable
        }
 
        public function getRandomQuoteAttribute() {
-               return $this->results()
+               $result = $this->results()
                        ->where('comment', '!=', '')
-                       ->whereHas('round', function(Builder $query) {
+                       ->whereHas('round', function (Builder $query) {
                                $query->where('locked', true);
                        })
                        ->inRandomOrder()
                        ->first();
+               if ($result) {
+                       $result->load(['round', 'round.tournament']);
+               }
+               return $result;
        }
 
 
index 0b9f940921be0d6d97bf62440dc54a53f2caa440..353f6d9c8799f2c1d6686a7bdde508e8aa25cb27 100644 (file)
@@ -10,6 +10,16 @@ import EditStreamLinkButton from './EditStreamLinkButton';
 import Participation from './Participation';
 import EpisodesList from '../episodes/List';
 import Icon from '../common/Icon';
+import { getIcon, getTime } from '../../helpers/Result';
+
+const getQuoteSource = (result) => {
+       if (!result || !result.round) return '';
+       const roundTitle = result.round.title || `Seed #${result.round.number}`;
+       if (result.round.tournament) {
+               return `${result.round.tournament.title} ${roundTitle}`;
+       }
+       return roundTitle;
+};
 
 const Profile = ({ user }) => {
        const [activeEpisodes, setActiveEpisodes] = React.useState('runner');
@@ -48,9 +58,18 @@ const Profile = ({ user }) => {
                </h1>
                {user.random_quote && user.random_quote.comment ?
                        <Alert className="quote-alert" variant="dark">
-                               <blockquote className="blockquote mb-0">
-                                       {user.random_quote.comment}
-                               </blockquote>
+                               <figure className="mb-0">
+                                       <blockquote className="blockquote">
+                                               {user.random_quote.comment}
+                                       </blockquote>
+                                       <figcaption className="blockquote-footer mb-0">
+                                               {t('users.randomQuoteSource', {
+                                                       date: new Date(user.random_quote.created_at),
+                                                       result: getTime(user.random_quote, true),
+                                                       source: getQuoteSource(user.random_quote),
+                                               })}
+                                       </figcaption>
+                               </figure>
                        </Alert>
                : null}
                <Row>
@@ -170,6 +189,7 @@ Profile.propTypes = {
                })),
                random_quote: PropTypes.shape({
                        comment: PropTypes.string,
+                       created_at: PropTypes.string,
                }),
                round_first_count: PropTypes.number,
                round_second_count: PropTypes.number,
index 21296fef37a6ebfd0c70cf133649619106ef7ac0..e52bad544e94c4d323416acfe3d0166d5b00a04c 100644 (file)
@@ -988,6 +988,7 @@ export default {
                        nickname: 'Name',
                        noStream: 'Kein Stream gesetzt',
                        participationEmpty: 'Hat noch an keinen Turnieren teilgenommen.',
+                       randomQuoteSource: '{{ date, L }}, {{ source }}, {{ result }}',
                        roundRecords: 'Renn-Platzierungen',
                        setNicknameError: 'Konnte Namen nicht speichern',
                        setNicknameSuccess: 'Name geƤndert',
index 1b504690e10109a32736f62673123d50ed992531..596b643ef403662e2eccd9c1c77895ccc4fde6c7 100644 (file)
@@ -988,6 +988,7 @@ export default {
                        nickname: 'Name',
                        noStream: 'No stream set',
                        participationEmpty: 'Has not participated in any tourneys yet.',
+                       randomQuoteSource: '{{ date, L }}, {{ source }}, {{ result }}',
                        roundRecords: 'Race records',
                        setNicknameError: 'Could not save name',
                        setNicknameSuccess: 'Name changed',