Version 5.0.13

This commit is contained in:
Neo committed 2025-12-19 19:04:57 -08:00
1 parent b89858b2ff
commit 5efe744c5f
1407 files changed
+69690 -30177

No files matched your search

+197 -42
View File
@@ -87,7 +87,22 @@ foreach ( $result as $row ):
$return .= <<<IPSCONTENT
<li class='ipsData__item'>
<div class='ipsData__image'>
<div class='
IPSCONTENT;
if ( \in_array( $layout, ["table", "minimal", "mini-grid"] ) ):
$return .= <<<IPSCONTENT
ipsData__icon
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
ipsData__image
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
'>
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $row['member'], 'fluid', '', '' );
@@ -2289,12 +2304,12 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $member->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span></a>
<figure class='ipsData__image'>
<div class="ipsData__image" aria-hidden="true">
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $member, 'fluid' );
$return .= <<<IPSCONTENT
</figure>
</div>
<div class="ipsData__content">
<div class='ipsData__main'>
<h4 class='ipsData__title'>{$member->link()}</h4>
@@ -2374,7 +2389,7 @@ _content'>
<button type="button" data-taburl='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=mostSolved&time=week&limit={$limit}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=mostSolved&time=week&limit={$limit}&layout={$layout}&isCarousel={$isCarousel}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
' id='
IPSCONTENT;
@@ -2393,7 +2408,7 @@ $return .= <<<IPSCONTENT
<button type="button" data-taburl='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=mostSolved&time=month&limit={$limit}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=mostSolved&time=month&limit={$limit}&layout={$layout}&isCarousel={$isCarousel}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
' id='
IPSCONTENT;
@@ -2412,7 +2427,7 @@ $return .= <<<IPSCONTENT
<button type="button" data-taburl='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=mostSolved&time=year&limit={$limit}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=mostSolved&time=year&limit={$limit}&layout={$layout}&isCarousel={$isCarousel}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
' id='
IPSCONTENT;
@@ -2431,7 +2446,7 @@ $return .= <<<IPSCONTENT
<button type="button" data-taburl='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=mostSolved&time=all&limit={$limit}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=mostSolved&time=all&limit={$limit}&layout={$layout}&isCarousel={$isCarousel}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
' id='
IPSCONTENT;
@@ -2472,7 +2487,7 @@ _week">
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "widgets", "core" )->mostSolvedRows( $topSolvedThisWeek, 'week' );
$return .= \IPS\Theme::i()->getTemplate( "widgets", "core" )->mostSolvedRows( $topSolvedThisWeek, 'week', $layout, $isCarousel );
$return .= <<<IPSCONTENT
</div>
@@ -2493,13 +2508,11 @@ if ( \count( $results ) ):
$return .= <<<IPSCONTENT
<i-data>
<ul class="ipsData ipsData--grid ipsData--widget-mostSolvedRows i-basis_320">
<ul class="ipsData ipsData--
IPSCONTENT;
$count = 0;
$return .= \IPS\Theme\Template::htmlspecialchars( $layout, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
ipsData--widget-mostSolvedRows">
IPSCONTENT;
@@ -2512,7 +2525,7 @@ IPSCONTENT;
$member = \IPS\Member::load( $memberId );
$return .= <<<IPSCONTENT
<li class='ipsData__item i-align-items_center'>
<li class='ipsData__item'>
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $member->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -2522,19 +2535,34 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $member->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span></a>
<div class='ipsData__content'>
<div class='ipsData__main'>
<div class='ipsPhotoPanel'>
<div class="
IPSCONTENT;
if ( \in_array($layout, array('table', 'minimal')) ):
$return .= <<<IPSCONTENT
ipsData__icon
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
ipsData__image
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
">
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $member, 'fluid' );
$return .= <<<IPSCONTENT
<div class='ipsPhotoPanel__text'>
<div class='ipsPhotoPanel__primary'>{$member->link()}</div>
<div class='ipsPhotoPanel__secondary'>
<span title="
</div>
<div class='ipsData__content'>
<div class='ipsData__main'>
<div class="ipsData__title">{$member->link()}</div>
<div class="ipsData__meta">
<span title="
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'solved_badge_tooltip_time', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -2545,8 +2573,6 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Member::loggedIn()->language()->formatNumber( $solvedCount ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
</div>
</div>
</div>
</div>
</div>
@@ -4371,16 +4397,58 @@ IPSCONTENT;
return $return;
}
function tagRows( $items, $layout='table' ) {
function tagRows( $items, $layout='table', $isCarousel=false, $soloTag=false ) {
$return = '';
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $isCarousel ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$carouselID = $soloTag ? $soloTag : 'widget-tags_' . mt_rand();
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<i-data>
<ul class='ipsData ipsData--
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $layout, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
ipsData--widget-tags'>
ipsData--widget-tags
IPSCONTENT;
if ( $isCarousel ):
$return .= <<<IPSCONTENT
ipsData--carousel
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
'
IPSCONTENT;
if ( $isCarousel ):
$return .= <<<IPSCONTENT
id='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $carouselID, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
' tabindex="0"
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
>
IPSCONTENT;
@@ -4403,7 +4471,7 @@ IPSCONTENT;
if ( in_array($layout, array("wallpaper", "featured", "grid")) ):
$return .= <<<IPSCONTENT
<figure class='ipsData__image'>
<div class="ipsData__image" aria-hidden="true">
IPSCONTENT;
@@ -4432,21 +4500,21 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</figure>
</div>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<figure class='ipsData__icon'>
<div class='ipsData__icon'>
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $item->author(), 'fluid' );
$return .= <<<IPSCONTENT
</figure>
</div>
IPSCONTENT;
@@ -4490,6 +4558,24 @@ endforeach;
$return .= <<<IPSCONTENT
</ul>
IPSCONTENT;
if ( $isCarousel && !$soloTag ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->carouselNavigation( $carouselID );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</i-data>
IPSCONTENT;
@@ -4500,11 +4586,61 @@ IPSCONTENT;
$return = '';
$return .= <<<IPSCONTENT
<h3 class='ipsWidget__header'>
IPSCONTENT;
if ( (count( $data ) < 2) & $isCarousel ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$soloTag = 'widget-tags_' . mt_rand();
$return .= <<<IPSCONTENT
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
IPSCONTENT;
$soloTag = false;
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<header class='ipsWidget__header'>
<h3>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</h3>
IPSCONTENT;
if ( $soloTag && $isCarousel ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->carouselNavigation( $soloTag );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</header>
IPSCONTENT;
@@ -4543,7 +4679,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$tabId = \str_replace( ' ', '-', $tag );
$tabId = \preg_replace('/[^a-zA-Z0-9\-]/', '', $tag);
$return .= <<<IPSCONTENT
<button type="button" id='ipsTabs_
@@ -4615,7 +4751,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$tabId = \str_replace( ' ', '-', $tag );
$tabId = \preg_replace('/[^a-zA-Z0-9\-]/', '', $tag);
$return .= <<<IPSCONTENT
<div id="ipsTabs_
@@ -4648,7 +4784,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "widgets", "core" )->tagRows( $items, $layout );
$return .= \IPS\Theme::i()->getTemplate( "widgets", "core" )->tagRows( $items, $layout, $isCarousel, $soloTag );
$return .= <<<IPSCONTENT
</div>
@@ -4674,7 +4810,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "widgets", "core" )->tagRows( $items, $layout );
$return .= \IPS\Theme::i()->getTemplate( "widgets", "core" )->tagRows( $items, $layout, $isCarousel, $soloTag );
$return .= <<<IPSCONTENT
@@ -4706,7 +4842,11 @@ if ( \count( $results ) ):
$return .= <<<IPSCONTENT
<i-data>
<ol class="ipsData ipsData--mini-grid cTopContributors i-basis_320">
<ol class="ipsData ipsData--
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $layout, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
cTopContributors">
IPSCONTENT;
@@ -4719,7 +4859,7 @@ IPSCONTENT;
$member = \IPS\Member::load( $memberId );
$return .= <<<IPSCONTENT
<li class='ipsData__item i-align-items_center'>
<li class='ipsData__item'>
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $member->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -4729,7 +4869,22 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $member->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span></a>
<div class="ipsData__icon">
<div class="
IPSCONTENT;
if ( \in_array($layout, array('table', 'minimal')) ):
$return .= <<<IPSCONTENT
ipsData__icon
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
ipsData__image
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
">
IPSCONTENT;
@@ -4964,7 +5119,7 @@ _content'>
<button type="button" data-taburl='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=topContributors&time=week&limit={$limit}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=topContributors&time=week&limit={$limit}&layout={$layout}&isCarousel={$isCarousel}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
' class='ipsTabs__tab' role="tab" id='ipsTabs_topContributors
IPSCONTENT;
@@ -4983,7 +5138,7 @@ $return .= <<<IPSCONTENT
<button type="button" data-taburl='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=topContributors&time=month&limit={$limit}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=topContributors&time=month&limit={$limit}&layout={$layout}&isCarousel={$isCarousel}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
' class='ipsTabs__tab' role="tab" id='ipsTabs_topContributors
IPSCONTENT;
@@ -5002,7 +5157,7 @@ $return .= <<<IPSCONTENT
<button type="button" data-taburl='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=topContributors&time=year&limit={$limit}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=topContributors&time=year&limit={$limit}&layout={$layout}&isCarousel={$isCarousel}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
' class='ipsTabs__tab' role="tab" id='ipsTabs_topContributors
IPSCONTENT;
@@ -5021,7 +5176,7 @@ $return .= <<<IPSCONTENT
<button type="button" data-taburl='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=topContributors&time=all&limit={$limit}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=ajax&do=topContributors&time=all&limit={$limit}&layout={$layout}&isCarousel={$isCarousel}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
' class='ipsTabs__tab' role="tab" id='ipsTabs_topContributors
IPSCONTENT;