Version 5.0.14
This commit is contained in:
1 parent
5efe744c5f
commit
dbd774b30c
364 files changed
+7048
-1377
No files matched your search
@@ -17,6 +17,7 @@ use IPS\cms\Categories;
|
||||
use IPS\cms\Databases;
|
||||
use IPS\cms\Databases\Controller;
|
||||
use IPS\cms\Databases\Dispatcher;
|
||||
use IPS\cms\Fields;
|
||||
use IPS\cms\Pages\Page;
|
||||
use IPS\cms\Records;
|
||||
use IPS\Content\Filter;
|
||||
@@ -28,6 +29,7 @@ use IPS\Http\Url;
|
||||
use IPS\Member;
|
||||
use IPS\Output;
|
||||
use IPS\Request;
|
||||
use IPS\Session;
|
||||
use IPS\Theme;
|
||||
use IPS\Xml\Rss;
|
||||
use OutOfRangeException;
|
||||
@@ -47,6 +49,12 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
*/
|
||||
class index extends Controller
|
||||
{
|
||||
/**
|
||||
* Store any active filters for this view
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
static public array $activeFilters = array();
|
||||
|
||||
/**
|
||||
* Determine which method to load
|
||||
@@ -139,13 +147,10 @@ class index extends Controller
|
||||
|
||||
$where = [];
|
||||
|
||||
/** @var Categories $categoryClass */
|
||||
$categoryClass = 'IPS\cms\Categories' . $database->id;
|
||||
$category = $categoryClass::load( $database->_default_category );
|
||||
$cookie = $category->getFilterCookie();
|
||||
$cookie = $database->getFilterCookie();
|
||||
if( $cookie !== null )
|
||||
{
|
||||
$where = $category->buildWhereFromCookie( $cookie );
|
||||
$where = $database->buildWhereFromCookie( $cookie );
|
||||
}
|
||||
elseif( isset( Request::i()->advanced_search_submitted ) and Request::i()->advanced_search_submitted )
|
||||
{
|
||||
@@ -163,7 +168,59 @@ class index extends Controller
|
||||
}
|
||||
if( count( $cookie ) )
|
||||
{
|
||||
$where = $category->buildWhereFromCookie( $cookie );
|
||||
$where = $database->buildWhereFromCookie( $cookie );
|
||||
}
|
||||
}
|
||||
|
||||
/* Build the filters */
|
||||
/* @var Fields $fieldClass */
|
||||
$fieldClass = 'IPS\cms\Fields' . $database->id;
|
||||
$customFields = $fieldClass::data( 'view', null, $fieldClass::FIELD_SKIP_TITLE_CONTENT );
|
||||
if( $cookie !== null )
|
||||
{
|
||||
foreach( $cookie as $f => $v )
|
||||
{
|
||||
if( $f == 'cms_record_i_started' and Member::loggedIn()->member_id )
|
||||
{
|
||||
/* FilterMessage template only accepts \IPS\cms\Fields */
|
||||
$field = new Fields;
|
||||
$field->id = 'cms_record_i_started';
|
||||
|
||||
Member::loggedIn()->language()->words['content_field_cms_record_i_started'] = Member::loggedIn()->language()->addToStack( 'cms_record_i_started_sprintf', FALSE, array( 'sprintf' => $database->recordWord() ) );
|
||||
|
||||
static::$activeFilters['cms_record_i_started'] = array( 'field' => $field, 'value' => Member::loggedIn()->language()->addToStack('content_field_cms_record_i_started_on') );
|
||||
}
|
||||
else
|
||||
{
|
||||
$displayValue = $customFields[ $f ]->displayValue( $v );
|
||||
|
||||
if ( $customFields[ $f ]->type === 'Member' )
|
||||
{
|
||||
if ( ! empty( $v ) )
|
||||
{
|
||||
$newDisplayValue = array();
|
||||
$concat = '\n';
|
||||
|
||||
if ( is_array( $v ) )
|
||||
{
|
||||
foreach( $v as $m )
|
||||
{
|
||||
$member = Member::load( $m );
|
||||
$newDisplayValue[] = $member->name;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$member = Member::load( $v );
|
||||
$newDisplayValue[] = $member->name;
|
||||
}
|
||||
|
||||
$displayValue = implode( ', ', $newDisplayValue );
|
||||
}
|
||||
}
|
||||
|
||||
static::$activeFilters[ $f ] = array( 'field' => $customFields[ $f ], 'value' => $displayValue );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,7 +251,7 @@ class index extends Controller
|
||||
Output::i()->cssFiles = array_merge( Output::i()->cssFiles, Theme::i()->css( 'database_index/featured.css', 'cms', 'front' ) );
|
||||
Output::i()->title = ( $page > 1 ) ? Member::loggedIn()->language()->addToStack( 'title_with_page_number', FALSE, array( 'sprintf' => array( $database->pageTitle(), $page ) ) ) : $database->pageTitle();
|
||||
|
||||
Dispatcher::i()->output .= Output::i()->output = \IPS\cms\Theme::i()->getTemplate( $database->template_featured, 'cms', 'database' )->index( $database, $articles, $url, $pagination );
|
||||
Dispatcher::i()->output .= Output::i()->output = \IPS\cms\Theme::i()->getTemplate( $database->template_featured, 'cms', 'database' )->index( $database, $articles, $url, $pagination, static::$activeFilters );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -275,4 +332,19 @@ class index extends Controller
|
||||
Output::i()->breadcrumb[] = array( NULL, Member::loggedIn()->language()->addToStack( 'cms_select_category' ) );
|
||||
Dispatcher::i()->output = Output::i()->output = Theme::i()->getTemplate( 'records' )->categorySelector( $form );
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear any filters
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function clearFilters() : void
|
||||
{
|
||||
Session::i()->csrfCheck();
|
||||
|
||||
$database = Databases::load( Dispatcher::i()->databaseId );
|
||||
$database->saveFilterCookie( false );
|
||||
|
||||
Output::i()->redirect( $database->page->url(), 'cms_filters_cleared' );
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user