diff --git a/app/Constants/TextExtras.php b/app/Constants/TextExtras.php new file mode 100644 index 0000000..b4debf4 --- /dev/null +++ b/app/Constants/TextExtras.php @@ -0,0 +1,7 @@ +addFunction('render_desc', function (string $desc, array $textExtras = []): string { + $sanitizedDesc = htmlspecialchars($desc); + $out = $sanitizedDesc; + foreach ($textExtras as $extra) { + $url = ''; + $text = mb_substr($desc, $extra->start, $extra->end - $extra->start, 'UTF-8'); + switch ($extra->type) { + // User URL + case TextExtras::USER: + $url = UrlBuilder::user(htmlspecialchars($extra->userUniqueId)); + break; + // Hashtag URL + case TextExtras::HASHTAG: + $url = UrlBuilder::tag(htmlspecialchars($extra->hashtagName)); + break; + } + + $out = str_replace($text, "$text", $out); + } + return $out; + }); + $latte->render(Misc::getView($template), $base); } diff --git a/templates/components/themes/default.latte b/templates/components/themes/default.latte index 41af404..da3556a 100644 --- a/templates/components/themes/default.latte +++ b/templates/components/themes/default.latte @@ -17,7 +17,7 @@ {if !empty($item->challenges)}

{include './common/tags.latte', challenges: $item->challenges}

{/if} -

{$item->desc}

+

{render_desc($item->desc, $item->textExtra)|noescape}

Song: {$item->music->title}

{include './common/stats.latte', playCount: $item->stats->playCount, diggCount: $item->stats->diggCount, commentCount: $item->stats->commentCount, shareCount: $item->stats->shareCount} diff --git a/templates/views/user.latte b/templates/views/user.latte index 2e07961..f8708a6 100644 --- a/templates/views/user.latte +++ b/templates/views/user.latte @@ -15,8 +15,10 @@ {if $info->detail->privateAccount}

Private account

{/if} -

{$info->detail->signature}

+ {if isset($info->detail->bioLink)} +

Link: {$info->detail->bioLink->link}

+ {/if}

Following: {number($info->stats->followingCount)} / Followers: {number($info->stats->followerCount)}

Hearts: {number($info->stats->heartCount)} / Videos: {$info->stats->videoCount}

{/block} diff --git a/templates/views/video.latte b/templates/views/video.latte index 6283506..c142d22 100644 --- a/templates/views/video.latte +++ b/templates/views/video.latte @@ -33,7 +33,7 @@

{include '../components/themes/common/tags.latte', challenges: $item->challenges}

{/if}
-

{$item->desc}

+

{render_desc($item->desc, $item->textExtra)|noescape}

Song: {$item->music->title}

{include '../components/themes/common/stats.latte', playCount: $item->stats->playCount, diggCount: $item->stats->diggCount, commentCount: $item->stats->commentCount, shareCount: $item->stats->shareCount}