Version 5.0.13
This commit is contained in:
1 parent
b89858b2ff
commit
5efe744c5f
1407 files changed
+69690
-30177
No files matched your search
@@ -56,7 +56,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<ol class="ipsBlockSpacer" data-controller="forums.front.forum.forumList" data-baseurl="">
|
||||
<li class="ipsBox ipsPull">
|
||||
<li class="ipsBox ipsBox--forumsClubCategory ipsPull">
|
||||
<h2 class="ipsBox__header">
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -71,7 +71,7 @@ if ( \IPS\Member::loggedIn()->getLayoutValue('forums_forum') === 'grid' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i-data>
|
||||
<div class="ipsData ipsData--grid ipsData--forum-grid i-padding_3 i-background_2 i-border-end-start-radius_box i-border-end-end-radius_box">
|
||||
<div class="ipsData ipsData--grid ipsData--forum-grid">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -385,7 +385,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'realtime' ) ):
|
||||
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'live_full' ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div data-controller="cloud.front.realtime.whosViewing" data-location="
|
||||
@@ -456,7 +456,7 @@ IPSCONTENT;
|
||||
if ( $forum->isCombinedView() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsPageHeader__row ipsResponsive_hideDesktop">
|
||||
<div class="i-margin-block_2 ipsResponsive_hideDesktop">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -469,19 +469,19 @@ $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/fr
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<a class="ipsButton ipsButton--inherit" href="#" rel="nofollow" data-ipsdialog data-ipsdialog-title="
|
||||
<button type="button" class="ipsButton ipsButton--secondary ipsButton--small" data-ipsdialog data-ipsdialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'forums_simple_dialog_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipsdialog-content="#elFluidFormFilters">
|
||||
<span data-role="fluidForumMobileDesc">
|
||||
<i class="fa-solid fa-list-check"></i><span data-role="fluidForumMobileDesc">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'forums_simple_filter_by', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span> <i class="fa-solid fa-angle-down"></i>
|
||||
</a>
|
||||
</span>
|
||||
</button>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -688,7 +688,7 @@ $return .= <<<IPSCONTENT
|
||||
<div data-controller="forums.front.forum.forumPage
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'realtime' ) ):
|
||||
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'live_full' ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
,cloud.front.realtime.viewingProvider
|
||||
IPSCONTENT;
|
||||
@@ -707,10 +707,10 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->member_id || !\IPS\Widget\Request::i()->advancedSearchForm && $forum->sub_can_post and !$forum->password ):
|
||||
if ( \IPS\Member::loggedIn()->member_id || !\IPS\Widget\Request::i()->advancedSearchForm && $forum->sub_can_post ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsPageActions ipsBox i-padding_2 ipsPull ipsResponsive_showPhone">
|
||||
<div class="ipsPageActions ipsBox ipsBox--forumsDisplayActions i-padding_2 ipsPull ipsResponsive_showPhone">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -795,256 +795,6 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
function forumHome( $forum, $featuredTopic, $popularQuestions, $newQuestions ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<!-- v5 todo: Is this template used? -->
|
||||
<style>*{ color: #bde361 !important; }</style>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $featuredTopic ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-padding_3">
|
||||
<h2 class="ipsTitle ipsTitle--h3">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'featured_question', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
<br><br>
|
||||
<div class="ipsPhotoPanel">
|
||||
<span class="ipsUserPhoto">
|
||||
<img src='
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $featuredTopic->author()->photo, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' alt='' loading='lazy'>
|
||||
</span>
|
||||
<div class='ipsPhotoPanel__text'>
|
||||
<h3 class="i-font-size_2">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $featuredTopic->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $featuredTopic->title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</h3>
|
||||
<p class="i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$htmlsprintf = array($featuredTopic->author()->link( NULL, NULL, $featuredTopic->isAnonymous() ), \IPS\DateTime::ts( $featuredTopic->start_date )->html( false )); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ask_byline', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
<br>
|
||||
<div class="ipsTruncate_5">
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $featuredTopic->truncated(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="ipsHr">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsSpanGrid">
|
||||
<div class="ipsSpanGrid__6 i-padding_3">
|
||||
<h2 class="ipsTitle ipsTitle--h3">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'most_popular_questions', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
<p class="i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'from_the_past_30_days', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
<i-data>
|
||||
<ol class="ipsData ipsData--table ipsData--popular-questions" id="elTopicList">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $popularQuestions as $question ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsData__item"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $question->unread() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-ips-unread
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
<div class='i-basis_50'>
|
||||
<span class='ipsUserPhoto ipsUserPhoto--mini'>
|
||||
<img src="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $question->author()->photo, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" alt='' loading='lazy'>
|
||||
</span>
|
||||
</div>
|
||||
<div class="ipsData__main">
|
||||
<h4 class="ipsData__title">
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $question->unread() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<i class="fa-solid fa-circle cTopicIcon"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $question->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $question->title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></h4>
|
||||
<ul class="ipsData__meta ipsList ipsList--inline i-color_soft">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $question->bestAnswer() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$htmlsprintf = array($question->bestAnswer()->author()->link( NULL, NULL, $question->bestAnswer()->isAnonymous() ), \IPS\DateTime::ts( $question->bestAnswer()->post_date )->html( false )); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'best_answer_by', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ol>
|
||||
</i-data>
|
||||
</div>
|
||||
<div class="ipsSpanGrid__6 i-padding_3">
|
||||
<h2 class="ipsTitle ipsTitle--h3">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'new_questions', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h2>
|
||||
<p class="i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'awaiting_an_answer', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
<i-data>
|
||||
<ol class="ipsData ipsData--compact ipsData ipsData--question-list" id="elTopicList">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $newQuestions as $question ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsData__item"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $question->unread() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-ips-unread
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
<div class='i-basis_50'>
|
||||
<span class='ipsUserPhoto ipsUserPhoto--mini'>
|
||||
<img src="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $question->author()->photo, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" alt='' loading='lazy'>
|
||||
</span>
|
||||
</div>
|
||||
<div class="ipsData__main">
|
||||
<h4 class="ipsData__title">
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $question->unread() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<i class="fa-solid fa-circle cTopicIcon"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $question->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $question->title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></h4>
|
||||
<ul class="ipsData__meta ipsList ipsList--inline i-color_soft">
|
||||
<li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$htmlsprintf = array($question->author()->link( NULL, NULL, $question->isAnonymous() ), \IPS\DateTime::ts( $question->start_date )->html( false )); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ask_byline', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ol>
|
||||
</i-data>
|
||||
</div>
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -1059,7 +809,7 @@ IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->isAjax() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<div class="ipsBox">
|
||||
<div class="ipsBox ipsBox--forumPasswordPopup">
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -1218,7 +968,7 @@ IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->isAjax() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
class='ipsBox'
|
||||
class='ipsBox ipsBox--forumSelector'
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -1240,7 +990,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/forums/forumTable", "topicListTable:before", [ $table,$headers,$rows,$quickSearch ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<div data-ips-hook="topicListTable" class="ipsBox ipsPull" data-baseurl="
|
||||
<div data-ips-hook="topicListTable" class="ipsBox ipsBox--forumsTable ipsPull" data-baseurl="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->baseUrl, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -1365,34 +1115,40 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/forums/forumTable", "sortOptions:inside-start", [ $table,$headers,$rows,$quickSearch ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="#elSortByMenu_menu" class="ipsDataFilters__button" id="elSortByMenu_
|
||||
<button class="ipsDataFilters__button" type="button" popovertarget="elSortByMenu_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->uniqueId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-role="sortButton" data-ipsmenu data-ipsmenu-activeclass="ipsDataFilters__button--active" data-ipsmenu-selectable="radio"><span>
|
||||
_menu" data-role="sortButton"><span>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'sort_by', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span><i class="fa-solid fa-caret-down"></i></a>
|
||||
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide" id="elSortByMenu_
|
||||
</span><i class="fa-solid fa-caret-down"></i></button>
|
||||
<i-dropdown id="elSortByMenu_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->uniqueId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
_menu">
|
||||
|
||||
_menu" popover data-i-dropdown-selectable="radio">
|
||||
<div class="iDropdown">
|
||||
<ul class="iDropdown__items">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$custom = TRUE;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $table->sortOptions as $k => $col ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsMenu_item
|
||||
<li><a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->baseUrl->setQueryString( array( 'filter' => $table->filter, 'sortby' => $col, 'sortdirection' => $table->getSortDirection( $col ) ) )->setPage('page', 1), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $col === $table->getSortByColumn() ):
|
||||
@@ -1402,12 +1158,12 @@ IPSCONTENT;
|
||||
|
||||
$custom = FALSE;
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsMenu_itemChecked
|
||||
aria-selected="true"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipsmenuvalue="
|
||||
data-ipsmenuvalue="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $col, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -1415,40 +1171,26 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->getSortDirection( $col ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"><a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->baseUrl->setQueryString( array( 'filter' => $table->filter, 'sortby' => $col, 'sortdirection' => $table->getSortDirection( $col ) ) )->setPage('page', 1), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow">
|
||||
"><i class="iDropdown__input"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$table->langPrefix}sort_{$k}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $table->advancedSearch ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsMenu_item
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $custom ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsMenu_itemChecked
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-noselect="true">
|
||||
<a href="
|
||||
<li>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->baseUrl->setQueryString( array( 'advancedSearchForm' => '1', 'filter' => $table->filter, 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -1457,20 +1199,32 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'custom_sort', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $custom ):
|
||||
$return .= <<<IPSCONTENT
|
||||
aria-selected="true"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
data-i-dropdown-noselect><i class="iDropdown__input"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'custom', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
</i-dropdown>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1505,82 +1259,87 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/forums/forumTable", "filters:inside-start", [ $table,$headers,$rows,$quickSearch ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="#elFilterByMenu_menu" class="ipsDataFilters__button" id="elFilterByMenu_
|
||||
<button class="ipsDataFilters__button" type="button" popovertarget="elFilterByMenu_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->uniqueId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-role="tableFilterMenu" data-ipsmenu data-ipsmenu-activeclass="ipsDataFilters__button--active" data-ipsmenu-selectable="radio"><span>
|
||||
_menu" data-role="tableFilterMenu">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'filter_by', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span><i class="fa-solid fa-caret-down"></i></a>
|
||||
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide" data-role="tableFilterMenu" id="elFilterByMenu_
|
||||
<i class="fa-solid fa-caret-down"></i></button>
|
||||
<i-dropdown id="elFilterByMenu_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->uniqueId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
_menu">
|
||||
<li data-action="tableFilter" data-ipsmenuvalue="" class="ipsMenu_item
|
||||
_menu" popover data-i-dropdown-selectable="radio" data-role="tableFilterMenu">
|
||||
<div class="iDropdown">
|
||||
<ul class="iDropdown__items">
|
||||
<li>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->baseUrl->setQueryString( array( 'filter' => '', 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) )->setPage('page', 1), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow" data-action="tableFilter" data-ipsmenuvalue=""
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !$table->filter ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsMenu_itemChecked
|
||||
aria-selected="true"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->baseUrl->setQueryString( array( 'filter' => '', 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) )->setPage('page', 1), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow">
|
||||
><i class="iDropdown__input"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$table->langPrefix}all"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</li>
|
||||
<li><hr></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $table->filters as $k => $q ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li data-action="tableFilter" data-ipsmenuvalue="
|
||||
<li>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->baseUrl->setQueryString( array( 'filter' => $k, 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) )->setPage('page', 1), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow" data-action="tableFilter" data-ipsmenuvalue="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $k, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsMenu_item
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $k === $table->filter ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsMenu_itemChecked
|
||||
aria-selected="true"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->baseUrl->setQueryString( array( 'filter' => $k, 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) )->setPage('page', 1), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow">
|
||||
><i class="iDropdown__input"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$table->langPrefix}{$k}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
</i-dropdown>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1605,11 +1364,11 @@ if ( $table->canModerate() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<a href="#elCheck_menu" class="ipsDataFilters__button" id="elCheck_
|
||||
<button class="ipsDataFilters__button" type="button" popovertarget="elCheck_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->uniqueId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" title="
|
||||
_menu" title="
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$table->langPrefix}select_rows_tooltip"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -1618,69 +1377,73 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->uniqueId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipsmenu data-ipsmenu-activeclass="ipsDataFilters__button--active">
|
||||
">
|
||||
<span class="cAutoCheckIcon"><i class="fa-regular fa-square"></i></span> <i class="fa-solid fa-caret-down"></i>
|
||||
<span class="ipsNotification" data-role="autoCheckCount">0</span>
|
||||
</a>
|
||||
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsHide" id="elCheck_
|
||||
</button>
|
||||
<i-dropdown id="elCheck_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $table->uniqueId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
_menu">
|
||||
<li class="ipsMenu_title">
|
||||
_menu" popover data-i-dropdown-selectable="radio" data-role="tableFilterMenu">
|
||||
<div class="iDropdown">
|
||||
<ul class="iDropdown__items">
|
||||
<li class="iDropdown__title">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$table->langPrefix}select_rows"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
<li class="ipsMenu_item" data-ipsmenuvalue="all"><a href="#">
|
||||
<li><button type="button" data-ipsmenuvalue="all"><i class="iDropdown__input"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'all', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
<li class="ipsMenu_item" data-ipsmenuvalue="none"><a href="#">
|
||||
</button></li>
|
||||
<li><button type="button" data-ipsmenuvalue="none"><i class="iDropdown__input"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'none', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
|
||||
</button></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count($table->getFilters()) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsMenu_sep"><hr></li>
|
||||
|
||||
<li><hr></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $table->getFilters() as $filter ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsMenu_item" data-ipsmenuvalue="
|
||||
<li><button type="button" data-ipsmenuvalue="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $filter, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"><a href="#">
|
||||
"><i class="iDropdown__input"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$filter}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
|
||||
</button></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
</i-dropdown>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -2407,12 +2170,35 @@ $return .= <<<IPSCONTENT
|
||||
{$tabData[1]->author()->link( NULL, NULL, $tabData[1]->isAnonymous() )}
|
||||
</div>
|
||||
<div class='ipsPhotoPanel__secondary'>
|
||||
|
||||
<a href='
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $tabID == 'firstPost' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $tabData[1]->item()->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $tabData[1]->item()->url( 'getLastComment' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
'>
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $tabData[1]->mapped('date') instanceof \IPS\DateTime ) ? $tabData[1]->mapped('date') : \IPS\DateTime::ts( $tabData[1]->mapped('date') );$return .= $val->html(useTitle: true);
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2516,7 +2302,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Settings::i()->core_datalayer_enabled ):
|
||||
if ( \IPS\core\DataLayer::enabled() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<script>
|
||||
@@ -2888,7 +2674,7 @@ $return .= <<<IPSCONTENT
|
||||
"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'realtime' ) ):
|
||||
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'live_full' ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-controller="cloud.front.realtime.forumsTopicRow"
|
||||
IPSCONTENT;
|
||||
@@ -3995,7 +3781,7 @@ $return .= <<<IPSCONTENT
|
||||
<li data-ips-hook="topicRow"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'realtime' ) ):
|
||||
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'live_full' ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
data-controller="cloud.front.realtime.forumsTopicRow"
|
||||
IPSCONTENT;
|
||||
|
||||
Reference in new issue
Block a user