Version 4.7.23

This commit is contained in:
Neo committed 2025-12-19 16:21:27 -08:00
1 parent 7124a02564
commit 25ddeb65d6
1791 files changed
+76990 -44452

No files matched your search

+109 -17
View File
@@ -29,7 +29,7 @@ spl_autoload_register( function( $class )
$titleLang = 'content_db_lang_su_' . $databaseId;
$includeInSearch = $databases[ $databaseId ]->search ? "TRUE" : "FALSE";
$data = <<<EOF
$data = <<<PHP
namespace IPS\cms;
class Records{$databaseId} extends Records
{
@@ -80,7 +80,7 @@ spl_autoload_register( function( $class )
);
public static \$pagePath;
}
EOF;
PHP;
eval( $data );
}
@@ -88,7 +88,7 @@ EOF;
{
$databaseId = \intval( mb_substr( $class, 23 ) );
$data = <<<EOF
$data = <<<PHP
namespace IPS\cms\Records;
class Comment{$databaseId} extends Comment
{
@@ -99,7 +99,7 @@ EOF;
public static \$title = 'content_record_comments_title_{$databaseId}';
public static \$hideLogKey = 'ccs-records{$databaseId}-comments';
}
EOF;
PHP;
eval( $data );
}
@@ -107,7 +107,7 @@ EOF;
{
$databaseId = \intval( mb_substr( $class, 22 ) );
$data = <<<EOF
$data = <<<PHP
namespace IPS\cms\Records;
class Review{$databaseId} extends Review
{
@@ -118,7 +118,7 @@ EOF;
public static \$title = 'content_record_reviews_title_{$databaseId}';
public static \$hideLogKey = 'ccs-records{$databaseId}-reviews';
}
EOF;
PHP;
eval( $data );
}
@@ -134,12 +134,13 @@ EOF;
}
$dbObject = $databases[ $databaseId ];
$useClubContainer = ($dbObject->use_categories and $dbObject->allow_club_categories) ? "\n\t\t\tuse \\IPS\\Content\\ClubContainer;" : '';
$data = <<<EOF
$data = <<<PHP
namespace IPS\cms;
class Categories{$databaseId} extends Categories
{
use \IPS\Node\Statistics;
use \IPS\Node\Statistics;{$useClubContainer}
protected static \$multitons = array();
protected static \$multitonMap = array();
@@ -155,8 +156,99 @@ EOF;
{
return '{$dbObject->_title} ' . \IPS\Member::loggedIn()->language()->addToStack( static::\$nodeTitle . '_sg' );
}
public static function clubAcpTitle()
{
return '{$dbObject->_title} ' . \IPS\Member::loggedIn()->language()->addToStack( static::\$nodeTitle );
}
public function _saveClubForm( \IPS\Member\Club \$club, \$values )
{
\$class = static::class;
preg_match( '/\\\\\\\\\_?Categories(\\\\d*)(?:\$|\\\\\\\\)/', \$class, \$databaseIdMatches );
\$databaseId = \$databaseIdMatches[1];
\$this->database_id = (int) \$databaseId;
if ( !\$this->id )
{
\$this->_updatePaths = TRUE;
\$this->save();
}
\$this->name = \$values['club_node_name'];
\$clubIdColumn = \$this->clubIdColumn();
\$this->\$clubIdColumn = \$club->id;
\\IPS\\Lang::saveCustom( 'cms', 'content_cat_name_'.\$this->_id, \$this->name );
\$this->furl_name = \\IPS\\Http\\Url\\Friendly::seoTitle( \$this->name );
\$this->_url = NULL;
if ( \\IPS\\cms\\Categories::furlNameIsTaken( \$this->furl_name, \$databaseId, \$this->_id ?: null ) )
{
\$this->furl_name = \$this->_id . '_' . \$this->furl_name;
}
if ( \\is_numeric( \$this->furl_name ) )
{
\$this->furl_name = 'n_' . \$this->furl_name;
}
\$values['club_node_public'] = \$this->isPublic();
if ( array_key_exists( 'page_can_view', \$values ) )
{
\$this->club_view_permission = implode( ',', \$values['page_can_view'] );
\$values['club_node_public'] = \intval( \\in_array( 'member', \$values['page_can_view'] ) or \\mb_strpos( '*', \$this->club_view_permission ) !== false );
unset( \$values['page_can_view'] );
}
if ( array_key_exists( 'club_category_meta_index', \$values ) )
{
\$this->club_category_meta_index = (int) \$values['club_category_meta_index'];
unset( \$values['club_category_meta_index'] );
}
elseif( !\in_array( 'nonmember', explode( ',', \$this->club_view_permission ) ) )
{
\$this->club_category_meta_index = 0;
}
\$this->save();
\$this->setFullPath();
}
public function clubForm( \\IPS\\Helpers\\Form \$form, \\IPS\\Member\\Club \$club ) : void
{
\$itemClass = static::\$contentItemClass;
\$form->add( new \\IPS\\Helpers\\Form\\Text( 'club_node_name', \$this->_id ? \$this->_title : \\IPS\\Member::loggedIn()->language()->addToStack( static::clubFrontTitle() ), TRUE, array( 'maxLength' => 255 ) ) );
\$form->add( new \\IPS\\Helpers\\Form\\TextArea( 'club_node_description', ( \$this->_id ? \$this->description : null ), false ) );
if ( \$club->type !== \\IPS\\Member\\Club::TYPE_PUBLIC )
{
\$defaults = array( 'member', 'moderator' );
\$current = \$this->club_view_permission;
\$current = \mb_strpos( '*', \$current ) !== false ? ['nonmember','member','moderator'] : array_filter( explode( ',', \$current ) );
if ( \$club->type !== \\IPS\\Member\\Club::TYPE_PRIVATE )
{
\$defaults[] = 'nonmember';
}
\$form->add( new \\IPS\\Helpers\\Form\\CheckboxSet( 'page_can_view', \$current, FALSE, array(
'options' => array(
'nonmember' => 'club_page_nonmembers',
'member' => 'club_page_members',
'moderator' => 'club_page_moderators'
),
'toggles' => array(
'nonmember' => array( 'club_category_meta_index' )
)
) ) );
}
/* Add the index setting if this page is shown to guests */
if ( \$club->type !== \\IPS\\Member\\Club::TYPE_PRIVATE AND \\IPS\\Member::loggedIn()->group['gbw_club_manage_indexing'] )
{
\$form->add( new \\IPS\\Helpers\\Form\\YesNo('club_category_meta_index', \$this->club_category_meta_index, FALSE, [], NULL, NULL, NULL, 'club_category_meta_index' ) );
}
}
}
EOF;
PHP;
eval( $data );
}
@@ -165,7 +257,7 @@ EOF;
{
$databaseId = \intval( mb_substr( $class, 32 ) );
$data = <<<EOF
$data = <<<PHP
namespace IPS\cms\Records;
class RecordsTopicSync{$databaseId} extends \IPS\cms\Records{$databaseId}
{
@@ -181,7 +273,7 @@ EOF;
return false;
}
}
EOF;
PHP;
eval( $data );
}
@@ -189,7 +281,7 @@ EOF;
{
$databaseId = \intval( mb_substr( $class, 32 ) );
$data = <<<EOF
$data = <<<PHP
namespace IPS\cms\Records;
class CommentTopicSync{$databaseId} extends CommentTopicSync
{
@@ -199,7 +291,7 @@ EOF;
public static \$itemClass = 'IPS\cms\Records\RecordsTopicSync{$databaseId}';
public static \$title = 'content_record_comments_title_{$databaseId}';
}
EOF;
PHP;
eval( $data );
}
@@ -427,7 +519,7 @@ class _Application extends \IPS\Application
$link = (string) \IPS\Http\Url::ips('docs/pages_docs');
$content = <<<EOF
$content = <<<HTML
<p>Welcome to Pages!</p>
<p>Pages extends your site with custom content management designed especially for communities.
Create brand new sections of your community using features like blocks, databases and articles,
@@ -437,7 +529,7 @@ Build blocks that pull in all kinds of data from throughout your community to cr
or use one of the ready-made widgets we include with the Invision Community.</p>
<p><br></p>
<p><a href="{$link}">View our Pages documentation</a></p>
EOF;
HTML;
$titleField = 'field_' . $database->field_title;
$contentField = 'field_' . $database->field_content;
@@ -494,7 +586,7 @@ EOF;
$defaultWidgets = array();
$buttonUrl = (string) \IPS\Http\Url::internal( 'applications/cms/interface/default/block_arrow.png', 'none' );
$defaultContent = <<<EOF
$defaultContent = <<<HTML
<p>
<strong>Welcome to Pages!</strong>
</p>
@@ -503,7 +595,7 @@ EOF;
<br>
You can move, add and edit blocks without the need for complex coding!
</p>
EOF;
HTML;
/* Default WYSIWYG widget */
$defaultWidgets[] = array(
+12 -2
View File
@@ -182,7 +182,7 @@ class _comments extends \IPS\Content\Api\CommentController
{
throw new \OutOfRangeException;
}
$this->class = 'IPS\cms\Records\Comment' . $database->id;
}
catch ( \OutOfRangeException $e )
{
@@ -193,12 +193,22 @@ class _comments extends \IPS\Content\Api\CommentController
try
{
$recordClass = 'IPS\cms\Records' . $database->id;
/** @var \IPS\cms\Records $record */
$record = $recordClass::load( \IPS\Request::i()->record );
}
catch ( \OutOfRangeException $e )
{
throw new \IPS\Api\Exception( 'INVALID_ID', '2T311/5', 403 );
}
if( $record->useForumComments() )
{
$this->class = 'IPS\cms\Records\CommentTopicSync' . $database->id;
}
else
{
$this->class = 'IPS\cms\Records\Comment' . $database->id;
}
/* Get author */
if ( $this->member )
@@ -221,7 +231,7 @@ class _comments extends \IPS\Content\Api\CommentController
}
else
{
if ( \IPS\Request::i()->author === 0 )
if ( (int) \IPS\Request::i()->author === 0 )
{
$author = new \IPS\Member;
$author->name = \IPS\Request::i()->author_name;
+76 -2
View File
@@ -173,6 +173,7 @@ class _records extends \IPS\Content\Api\ItemController
* @apiparam int pinned 1/0 indicating if the record should be pinned
* @apiparam int featured 1/0 indicating if the record should be featured
* @apiparam bool anonymous If 1, the item will be posted anonymously.
* @apiparam object image An object with two properties to use as the record image. 'name' for the filename, and 'contents' for the image contents, Base64 Encoded.
* @throws 2T306/4 INVALID_DATABASE The database ID does not exist
* @throws 1T306/5 NO_CATEGORY The category ID does not exist
* @throws 1T306/6 NO_AUTHOR The author ID does not exist
@@ -239,7 +240,7 @@ class _records extends \IPS\Content\Api\ItemController
}
else
{
if ( \IPS\Request::i()->author === 0 )
if ( (int) \IPS\Request::i()->author === 0 )
{
$author = new \IPS\Member;
$author->name = \IPS\Request::i()->author_name;
@@ -298,6 +299,7 @@ class _records extends \IPS\Content\Api\ItemController
* @apiparam int pinned 1/0 indicating if the record should be pinned
* @apiparam int featured 1/0 indicating if the record should be featured
* @apiparam bool anonymous If 1, the item will be posted anonymously.
* @apiparam object image An object with two properties to use as the record image. 'name' for the filename, and 'contents' for the image contents, Base64 Encoded.
* @throws 2T306/9 INVALID_DATABASE The database ID does not exist
* @throws 2T306/6 INVALID_ID The record ID is invalid or the authorized user does not have permission to view it
* @throws 1T306/7 NO_CATEGORY The category ID does not exist or the authorized user does not have permission to post in it
@@ -412,11 +414,34 @@ class _records extends \IPS\Content\Api\ItemController
*/
protected function _createOrUpdate( \IPS\Content\Item $item, $type='add' )
{
$thumbImages = array();
$thumbImages = [];
$linkedFields = [];
/* Set field values */
if ( isset( \IPS\Request::i()->fields ) )
{
$fieldsClass = str_replace( 'Records', 'Fields', \get_class( $item ) );
/* Store a revision before we change any values */
if ( $type == 'edit' AND $item::database()->revisions )
{
$revision = new \IPS\cms\Records\Revisions;
$revision->database_id = $item::$customDatabaseId;
$revision->record_id = $item->_id;
$revision->data = $item->fieldValues( TRUE );
if ( $this->member )
{
$memberId = $this->member->member_id;
}
else
{
$memberId = $item->author()->member_id;
}
$revision->member_id = $memberId;
$revision->save();
}
foreach ( $fieldsClass::data() as $key => $field )
{
if ( isset( \IPS\Request::i()->fields[ $field->id ] ) )
@@ -510,6 +535,10 @@ class _records extends \IPS\Content\Api\ItemController
}
$value = implode( ',', $urls );
}
if ( $field->type === 'Item' )
{
$linkedFields[] = $field;
}
$item->$key = $value;
}
@@ -528,6 +557,45 @@ class _records extends \IPS\Content\Api\ItemController
{
$item->record_updated = $item->record_saved;
}
if ( isset( \IPS\Request::i()->image ) AND isset( \IPS\Request::i()->image['name'] ) AND isset( \IPS\Request::i()->image['contents'] ) )
{
try
{
$image = \IPS\File::create( 'cms_Records', \IPS\Request::i()->image['name'], base64_decode( \IPS\Request::i()->image['contents'] ) );
$image->save();
$fixedFieldSettings = $item::database()->fixed_field_settings;
if ( isset( $fixedFieldSettings['record_image']['thumb_dims'] ) )
{
$thumb = $image->thumbnail( 'cms_Records', $fixedFieldSettings[ 'record_image' ][ 'thumb_dims' ][ 0 ], $fixedFieldSettings[ 'record_image' ][ 'thumb_dims' ][ 1 ] );
}
else
{
$thumb = $image->thumbnail( 'cms_Records' );
}
$thumb->save();
try
{
if ( $item->record_image )
{
\IPS\File::get( 'cms_Records', $item->record_image )->delete();
}
if ( $item->record_image_thumb )
{
\IPS\File::get( 'cms_Records', $item->record_image_thumb )->delete();
}
}
catch( \Throwable ) { }
$item->record_image = (string) $image;
$item->record_image_thumb = (string) $thumb;
}
catch( \Throwable $e ) { }
}
if( $type == 'add' AND ( !$item->_title OR !$item->_content ) )
{
@@ -560,6 +628,12 @@ class _records extends \IPS\Content\Api\ItemController
) );
}
/* Process Linked Fields */
foreach( $linkedFields as $field )
{
$item->processItemFieldData( $field );
}
/* Pass up */
return $item;
}
+1 -1
View File
@@ -223,7 +223,7 @@ class _reviews extends \IPS\Content\Api\CommentController
}
else
{
if ( \IPS\Request::i()->author === 0 )
if ( (int) \IPS\Request::i()->author === 0 )
{
$author = new \IPS\Member;
$author->name = \IPS\Request::i()->author_name;
+1 -1
View File
@@ -21,7 +21,7 @@
<widget key="DatabaseFilters"><![CDATA[{"class":"\\IPS\\Widget","restrict":["cms"],"default_area":"","allow_reuse":false,"menu_style":"menu","embeddable":false}]]></widget>
<widget key="Categories"><![CDATA[{"class":"\\IPS\\Widget\\PermissionCache","restrict":["cms"],"default_area":"","allow_reuse":false,"menu_style":"menu","embeddable":false}]]></widget>
<widget key="Blocks"><![CDATA[{"class":"\\IPS\\Widget","restrict":[],"default_area":"","allow_reuse":true,"menu_style":"modal","embeddable":false}]]></widget>
<widget key="RecordFeed"><![CDATA[{"class":"\\IPS\\Widget\\PermissionCache","restrict":["cms"],"default_area":"","allow_reuse":false,"menu_style":"menu","embeddable":true}]]></widget>
<widget key="RecordFeed"><![CDATA[{"class":"\\IPS\\Widget\\PermissionCache","restrict":["sidebar","cms"],"default_area":"","allow_reuse":false,"menu_style":"menu","embeddable":true}]]></widget>
<widget key="Rss"><![CDATA[{"class":"\\IPS\\Widget\\StaticCache","restrict":["cms"],"default_area":"","allow_reuse":true,"menu_style":"modal","embeddable":true}]]></widget>
<widget key="pagebuildertext"><![CDATA[{"class":"\\IPS\\Widget\\StaticCache","restrict":["sidebar","cms"],"default_area":"","allow_reuse":true,"menu_style":"modal","embeddable":true}]]></widget>
<widget key="pagebuilderoembed"><![CDATA[{"class":"\\IPS\\Widget\\StaticCache","restrict":["sidebar","cms"],"default_area":"","allow_reuse":true,"menu_style":"modal","embeddable":true}]]></widget>
+46 -17
View File
@@ -501,14 +501,19 @@
{{endif}}]]></template>
<template template_key="database_category_index_categoryRow" template_title="categoryRow" template_desc="" template_location="database" template_group="category_index" template_params="$category" template_app="" template_type="template"><![CDATA[{{$RecordsClass = $category::$contentItemClass;}}
{{if $category->can('view')}}
{{$lastPost = $category->lastPost();}}
{{$lastPost = $category->lastPost();}}
{{$club = $category->_club;}}
<li class="ipsDataItem ipsDataItem_responsivePhoto {{if $RecordsClass::containerUnread( $category )}}ipsDataItem_unread{{endif}} ipsClearfix" data-categoryID="{$category->_id}">
<div class="ipsDataItem_icon ipsDataItem_category">
{{if \IPS\Member::loggedIn()->member_id}}<a href="{$category->url()->setQueryString( array( 'do' => 'markRead', 'c' => $category->_id ) )->csrf()}" data-action='markAsRead'>{{endif}}
<span class='ipsItemStatus ipsItemStatus_large {{if !$RecordsClass::containerUnread( $category )}}ipsItemStatus_read{{endif}}'>
<i class="fa fa-comments"></i>
</span>
{{if \IPS\Member::loggedIn()->member_id}}</a>{{endif}}
{{if $club}}
<img src="{{if $club->profile_photo}}{file="$club->profile_photo" extension="core_Clubs"}{{else}}{resource="default_club.png" app="core" location="global"}{{endif}}" alt='' class='ipsItemStatus ipsItemStatus_large {{if !$RecordsClass::containerUnread( $category )}}ipsItemStatus_read{{endif}}'>
{{else}}
{{if \IPS\Member::loggedIn()->member_id}}<a href="{$category->url()->setQueryString( array( 'do' => 'markRead', 'c' => $category->_id ) )->csrf()}" data-action='markAsRead'>{{endif}}
<span class='ipsItemStatus ipsItemStatus_large {{if !$RecordsClass::containerUnread( $category )}}ipsItemStatus_read{{endif}}'>
<i class="fa fa-comments"></i>
</span>
{{if \IPS\Member::loggedIn()->member_id}}</a>{{endif}}
{{endif}}
</div>
<div class="ipsDataItem_main ipsPos_middle">
<h4 class="ipsDataItem_title">
@@ -563,9 +568,9 @@
</div>
{{endif}}
</div>
<section class="ipsBox ipsResponsive_pull">
<section class="ipsResponsive_pull">
<ol class='ipsList_reset cCmsDatabase_index' data-controller='core.global.core.table, forums.front.forum.forumList' data-baseURL=''>
<li class='cForumRow'>
<li class='cForumRow ipsBox ipsSpacer_bottom ipsResponsive_pull'>
<h2 class="ipsType_sectionTitle ipsType_reset ipsType_blendLinks">
{lang="content_categories_title"}
</h2>
@@ -579,6 +584,21 @@
</ol>
{{endif}}
</li>
{{$categoryClass = 'IPS\cms\Categories' . $database->_id;}}
{{if settings.club_nodes_in_apps and \IPS\IPS::classUsesTrait( $categoryClass, 'IPS\Content\ClubContainer' ) and $clubCategories = $categoryClass::clubNodes()}}
{{if \count( $clubCategories )}}
<li class='cForumRow ipsBox ipsSpacer_bottom ipsResponsive_pull'>
<h2 class="ipsType_sectionTitle ipsType_reset ipsType_blendLinks">
{lang="club_categories_title"}
</h2>
<ol class="ipsDataList ipsDataList_large ipsDataList_zebra">
{{foreach $clubCategories as $category}}
{template="categoryRow" group="category_index" location="database" app="cms" params="$category"}
{{endforeach}}
</ol>
</li>
{{endif}}
{{endif}}
</ol>
</section>]]></template>
<template template_key="page_custom_wrappers_customWrapper" template_title="customWrapper" template_desc="" template_location="page" template_group="custom_wrappers" template_params="$html, $title=NULL" template_app="" template_type="template"><![CDATA[<!DOCTYPE html>
@@ -622,7 +642,9 @@
{template="reputationBadge" group="global" app="core" params="$comment->author()"}
</h3>
<p class='ipsComment_meta ipsType_light ipsType_medium'>
<a href='{$comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->$idField ) )}' class='ipsType_blendLinks'>{$comment->dateLine()|raw}</a>
{{if ! \IPS\Output::i()->reduceLinks()}}<a href='{$comment->shareableUrl()}' class='ipsType_blendLinks'>{{endif}}
{$comment->dateLine()|raw}
{{if ! \IPS\Output::i()->reduceLinks()}}</a>{{endif}}
{{if $comment->ip_address and \IPS\Member::loggedIn()->modPermission('can_use_ip_tools') and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'modcp' ) )}}
&middot; <a class='ipsType_blendLinks ipsType_light ipsType_noUnderline' href="{url="app=core&module=modcp&controller=modcp&tab=ip_tools&ip=$comment->ip_address" seoTemplate="modcp_ip_tools"}" data-ipsMenu data-ipsMenu-menuID='{$comment->$idField}_ip_menu'>{lang="ip_short"} <i class='fa fa-angle-down'></i></a>
{{endif}}
@@ -663,8 +685,9 @@
{{if $comment->canReportOrRevoke() === TRUE}}
<li class='ipsMenu_item'><a href='{$comment->url('report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-remoteSubmit data-ipsDialog-size='medium' data-ipsDialog-flashMessage='{lang="report_submit_success"}' data-ipsDialog-title="{lang="report"}"{{endif}} data-action='reportComment' title='{lang="report_content"}'>{lang="report_reply"}</a></li>
{{endif}}
<li class='ipsMenu_item'><a href='{$comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->$idField ) )}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-content='#elShareComment_{$comment->$idField}_menu' id='elShareComment_{$comment->$idField}' data-ipsDialog-title="{lang="share_this_comment"}" data-role='shareComment'>{lang="share_this_comment"}</a></li>
{{if ! \IPS\Output::i()->reduceLinks()}}
<li class='ipsMenu_item'><a href='{$comment->shareableUrl()}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-content='#elShareComment_{$comment->$idField}_menu' id='elShareComment_{$comment->$idField}' data-ipsDialog-title="{lang="share_this_comment"}" data-role='shareComment'>{lang="share_this_comment"}</a></li>
{{endif}}
{{if $comment->canReportOrRevoke() === TRUE || \count( $comment->sharelinks() )}}
{{if $comment->canEdit() || $comment->canPromoteToSocialMedia() || $comment->canDelete() || $comment->canSplit() || ( $comment instanceof \IPS\Content\Hideable AND ( ( !$comment->hidden() and $comment->canHide() ) || ( $comment->hidden() and $comment->canUnhide() ) ) ) || ( $comment->hidden() == -2 and \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') )}}
<li class='ipsMenu_sep'><hr></li>
@@ -790,9 +813,11 @@
<a href='{url="app=core&module=modcp&controller=modcp&tab=ip_tools&ip=$comment->ip_address" seoTemplate="modcp_ip_tools"}' class='ipsButton ipsButton_light ipsButton_small ipsButton_fullWidth'>{lang="more_about_ip_address"} <i class='fa fa-angle-right'></i></a>
</div>
{{endif}}
{{if ! \IPS\Output::i()->reduceLinks()}}
{template="sharemenu" group="global" app="core" params="$comment"}
</div>]]></template>
{{endif}}
</div>
]]></template>
<template template_key="database_display_commentContainer" template_title="commentContainer" template_desc="" template_location="database" template_group="display" template_params="$item, $comment, $votes=array(), $otherClasses=''" template_app="" template_type="template"><![CDATA[{{$idField = $comment::$databaseColumnId;}}
{{$itemClassSafe = str_replace( '\\', '_', mb_substr( $comment::$itemClass, 4 ) );}}
{{if $comment->isIgnored()}}
@@ -808,6 +833,7 @@
{{endif}}
<a id='comment-{$comment->$idField}'></a>
<a id='findComment-{$comment->$idField}'></a>
<article {{if $comment->author()->hasHighlightedReplies()}}data-memberGroup="{$comment->author()->member_group_id}" {{endif}} id='elComment_{$comment->$idField}' class='ipsBox ipsBox--child ipsComment {{if $otherClasses}}{$otherClasses}{{endif}} {{if settings.reputation_enabled and \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and settings.reputation_highlight and $comment->reactionCount() >= settings.reputation_highlight}}ipsComment_popular{{endif}} ipsComment_parent ipsClearfix ipsClear {{if $comment->author()->hasHighlightedReplies()}}ipsComment_highlighted{{endif}} {{if $comment->isIgnored()}}ipsHide{{endif}} {{if $comment->hidden() OR $item->hidden() == -2}}ipsModerated{{endif}}'>
{template="comment" group="display" location="database" app="cms" params="$item, $comment, $item::$formLangPrefix . 'comment', $item::$application, $item::$module, $itemClassSafe"}
</article>]]></template>
@@ -1203,10 +1229,11 @@
<a href='{$review->url('report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-remoteSubmit data-ipsDialog-size='medium' data-ipsDialog-flashMessage='{lang="report_submit_success"}' data-ipsDialog-title="{lang="report"}"{{endif}} data-action='reportComment' title='{lang="report"}'>{lang="report"}</a>
</li>
{{endif}}
{{if ! \IPS\Output::i()->reduceLinks()}}
<li class='ipsMenu_item'>
<a class='ipsType_blendLinks' href='{$review->item()->url()->setQueryString( array( 'do' => 'findReview', 'review' => $review->id ) )}' title='{lang="share_this_review"}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-content='#elShareReview_{$review->id}_menu' data-ipsDialog-title="{lang="share_this_review"}" id='elShareReview_{$review->id}' data-role='shareComment'>{lang="share_this_review"}</a>
<a class='ipsType_blendLinks' href='{$review->shareableUrl('review')}' title='{lang="share_this_review"}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-content='#elShareReview_{$review->id}_menu' data-ipsDialog-title="{lang="share_this_review"}" id='elShareReview_{$review->id}' data-role='shareComment'>{lang="share_this_review"}</a>
</li>
{{endif}}
{{if $review->canEdit() || ( $review->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') ) || ( $review instanceof \IPS\Content\Hideable && ( ( !$review->hidden() and $review->canHide() ) || ( $review->hidden() and $review->canUnhide() ) ) ) || $review->canDelete()}}
<li class='ipsMenu_sep'><hr></li>
{{endif}}
@@ -1334,8 +1361,9 @@
{{endif}}
</div>
{{endif}}
{{if ! \IPS\Output::i()->reduceLinks()}}
{template="sharemenu" group="global" app="core" params="$review"}
{{endif}}
</div>]]></template>
<template template_key="database_display_reviewContainer" template_title="reviewContainer" template_desc="" template_location="database" template_group="display" template_params="$item, $review" template_app="" template_type="template"><![CDATA[{{if $review->isIgnored()}}
<div class='ipsComment ipsComment_ignored ipsPad_half ipsType_light'>
@@ -1344,10 +1372,11 @@
{{else}}
<article id="review-{$review->id}" class="ipsBox ipsBox--child ipsComment ipsComment_parent ipsClearfix ipsClear {{if $review->hidden() OR $item->hidden() == -2}}ipsModerated{{endif}}">
<a id="review-{$review->id}"></a>
<a id="findReview-{$review->id}"></a>
{template="review" location="database" group="display" app="cms" params="$item, $review, $item::$formLangPrefix . 'review', $item::$application, $item::$module"}
</article>
{{endif}}]]></template>
<template template_key="database_display_reviews" template_title="reviews" template_desc="" template_location="database" template_group="display" template_params="$record" template_app="" template_type="template"><![CDATA[<div data-controller='core.front.core.commentFeed' {{if settings.auto_polling_enabled}}data-autoPoll{{endif}} data-commentsType='reviews' data-baseURL='{$record->url()}' {{if $record->isLastPage('reviews')}}data-lastPage{{endif}} data-feedID='records{$record::$customDatabaseId}-{$record->id}-reviews' id='reviews'>
<template template_key="database_display_reviews" template_title="reviews" template_desc="" template_location="database" template_group="display" template_params="$record" template_app="" template_type="template"><![CDATA[<div data-controller='core.front.core.commentFeed' {{if settings.auto_polling_enabled}}data-autoPoll{{endif}} data-commentsType='reviews' data-baseURL='{$record->url()}' {{if $record->isLastPage('reviews')}}data-lastPage{{endif}} data-feedID='records{$record::$customDatabaseId}-{$record->primary_id_field}-reviews' id='reviews'>
{{if $record->reviewForm()}}
{{if $record->locked()}}
<strong class='ipsType_warning'><i class='fa fa-info-circle'></i> {lang="item_locked_can_review"}</strong>
+96 -24
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="cms">
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/blocks" javascript_name="ips.blocks.form.js" javascript_type="controller" javascript_version="107712" javascript_position="1000050"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/blocks" javascript_name="ips.blocks.form.js" javascript_type="controller" javascript_version="107827" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -76,7 +76,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/databases" javascript_name="ips.databases.download.js" javascript_type="controller" javascript_version="107712" javascript_position="1000100">/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/databases" javascript_name="ips.databases.download.js" javascript_type="controller" javascript_version="107827" javascript_position="1000150">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -121,7 +121,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/databases" javascript_name="ips.databases.form.js" javascript_type="controller" javascript_version="107712" javascript_position="1000100"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/databases" javascript_name="ips.databases.form.js" javascript_type="controller" javascript_version="107827" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -197,7 +197,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/external" javascript_name="ips.external.communication.js" javascript_type="controller" javascript_version="107712" javascript_position="1000050"><![CDATA[/**
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/external" javascript_name="ips.external.communication.js" javascript_type="controller" javascript_version="107827" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -332,7 +332,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/fields" javascript_name="ips.fields.form.js" javascript_type="controller" javascript_version="107712" javascript_position="1000150">/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/fields" javascript_name="ips.fields.form.js" javascript_type="controller" javascript_version="107827" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -340,7 +340,7 @@
*
*/
;( function($, _, undefined){
&quot;use strict&quot;;
"use strict";
ips.controller.register('cms.admin.fields.form', {
currentValue: null,
@@ -352,6 +352,16 @@
this.currentValue = $('#elTextarea_field_default_value').val();
$('#field_default_update_existing').hide();
}
this.on( 'change', '#check_field_display_listing', this.updateListingFields );
this.on( 'change', '#check_field_display_display', this.updateDisplayFields );
this.on( 'change', 'select[name="field_type"]', this.setup );
this.setup();
},
setup: function(){
this.updateListingFields();
this.updateDisplayFields();
},
/**
@@ -366,10 +376,52 @@
{
$('#field_default_update_existing').show();
}
},
updateListingFields: function(){
let fieldType = $( 'select[name="field_type"]' ).val();
if( $( '#check_field_display_listing' ).is( ':checked' ) ){
if( fieldType !== 'Text' && fieldType !== 'TextArea' ){
$( '#field_truncate' ).hide();
} else {
$( '#field_truncate' ).show();
}
if( fieldType !== 'Address' ){
$( '#field_show_map_listing' ).hide();
} else {
$( '#field_show_map_listing' ).show();
}
if( fieldType === 'Youtube' || fieldType === 'Spotify' || fieldType === 'Soundcloud' ){
$( '#field_display_listing_json_badge' ).hide();
$( '#media_display_listing_method' ).show();
}
} else {
$( '#field_truncate' ).hide();
$( '#field_show_map_listing' ).hide();
$( '#media_display_listing_method' ).hide();
}
},
updateDisplayFields: function(){
let fieldType = $( 'select[name="field_type"]' ).val();
if( $( '#check_field_display_display' ).is( ':checked' ) ){
if( fieldType !== 'Address' ){
$( '#field_show_map_display' ).hide();
} else {
$( '#field_show_map_display' ).show();
}
if( fieldType === 'Youtube' || fieldType === 'Spotify' || fieldType === 'Soundcloud' ){
$( '#field_display_display_json_badge' ).hide();
$( '#media_display_display_method' ).show();
}
} else {
$( '#field_show_map_display' ).hide();
$( '#media_display_display_method' ).hide();
}
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/media" javascript_name="ips.media.main.js" javascript_type="controller" javascript_version="107712" javascript_position="1000200"><![CDATA[/**
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/media" javascript_name="ips.media.main.js" javascript_type="controller" javascript_version="107827" javascript_position="1000300"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1008,7 +1060,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/pages" javascript_name="ips.pages.embed.js" javascript_type="controller" javascript_version="107712" javascript_position="1000250"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/pages" javascript_name="ips.pages.embed.js" javascript_type="controller" javascript_version="107827" javascript_position="1000250"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1054,7 +1106,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/pages" javascript_name="ips.pages.form.js" javascript_type="controller" javascript_version="107712" javascript_position="1000250"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/pages" javascript_name="ips.pages.form.js" javascript_type="controller" javascript_version="107827" javascript_position="1000250"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1176,7 +1228,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/records" javascript_name="ips.records.form.js" javascript_type="controller" javascript_version="107712" javascript_position="1000100"><![CDATA[/**
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/records" javascript_name="ips.records.form.js" javascript_type="controller" javascript_version="107827" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1288,7 +1340,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/records" javascript_name="ips.records.revisions.js" javascript_type="controller" javascript_version="107712" javascript_position="1000100">/**
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/records" javascript_name="ips.records.revisions.js" javascript_type="controller" javascript_version="107827" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1343,7 +1395,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.addForm.js" javascript_type="controller" javascript_version="107712" javascript_position="1000300">/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.addForm.js" javascript_type="controller" javascript_version="107827" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1393,7 +1445,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.conflict.js" javascript_type="controller" javascript_version="107712" javascript_position="1000300">/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.conflict.js" javascript_type="controller" javascript_version="107827" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1465,7 +1517,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.fileEditor.js" javascript_type="controller" javascript_version="107712" javascript_position="1000300"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.fileEditor.js" javascript_type="controller" javascript_version="107827" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2421,7 +2473,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.fileList.js" javascript_type="controller" javascript_version="107712" javascript_position="1000300"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.fileList.js" javascript_type="controller" javascript_version="107827" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2764,7 +2816,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.main.js" javascript_type="controller" javascript_version="107712" javascript_position="1000300"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.main.js" javascript_type="controller" javascript_version="107827" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2933,7 +2985,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.variablesDialog.js" javascript_type="controller" javascript_version="107712" javascript_position="1000300">/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.variablesDialog.js" javascript_type="controller" javascript_version="107827" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2944,12 +2996,33 @@
;( function($, _, undefined){
&quot;use strict&quot;;
const regex = /[^a-z0-9_]+|^[^a-z_]/gi;
ips.controller.register('cms.admin.templates.variablesDialog', {
initialize: function () {
this.on( 'blur', '[data-role=&quot;title&quot;]', this.checkTitle );
this.on( 'click', 'input[type=&quot;submit&quot;]', this.submitChange );
},
/**
* Check the template title for spaces
* @param e
*/
checkTitle: function (e) {
var elem = $( e.currentTarget );
var val = elem.val();
if ( val.match(regex) ) {
elem.val( val.replaceAll( regex, '' ) );
ips.ui.alert.show({
type: 'alert',
message: ips.getString('template_title_desc'),
icon: 'warn'
});
}
},
/**
* Event handler called when the submit button within the dialog is clicked
* Fires an event that the editor controller can respond to
@@ -2978,7 +3051,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="front" javascript_path="mixins" javascript_name="ips.cms.builder.area.js" javascript_type="mixins" javascript_version="107712" javascript_position="1000150"><![CDATA[/**
<file javascript_app="cms" javascript_location="front" javascript_path="mixins" javascript_name="ips.cms.builder.area.js" javascript_type="mixins" javascript_version="107827" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -3048,7 +3121,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="mixins" javascript_name="ips.cms.builder.block.js" javascript_type="mixins" javascript_version="107712" javascript_position="1000150"><![CDATA[/**
<file javascript_app="cms" javascript_location="front" javascript_path="mixins" javascript_name="ips.cms.builder.block.js" javascript_type="mixins" javascript_version="107827" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -3156,7 +3229,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="mixins" javascript_name="ips.cms.comment.js" javascript_type="mixins" javascript_version="107712" javascript_position="1000150">/**
<file javascript_app="cms" javascript_location="front" javascript_path="mixins" javascript_name="ips.cms.comment.js" javascript_type="mixins" javascript_version="107827" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -3183,7 +3256,7 @@
});
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.media.js" javascript_type="template" javascript_version="107712" javascript_position="1000300"><![CDATA[ips.templates.set( 'templates.media.grid', "\
<file javascript_app="cms" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.media.js" javascript_type="template" javascript_version="107827" javascript_position="1000050"><![CDATA[ips.templates.set( 'templates.media.grid', "\
<ul class='ipsGrid' data-ipsGrid data-ipsGrid-minItemSize='100' data-ipsGrid-maxItemSize='200'>\
{{{contents}}}\
</ul>\
@@ -3200,7 +3273,7 @@ ips.templates.set( 'templates.media.noSearchResults', "\
{{#lang}}mediaNoResults{{/lang}}\
</div>\
");]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.templates.js" javascript_type="template" javascript_version="107712" javascript_position="1000300"><![CDATA[/* TEMPLATE EDITOR TEMPLATES */
<file javascript_app="cms" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.templates.js" javascript_type="template" javascript_version="107827" javascript_position="1000050"><![CDATA[/* TEMPLATE EDITOR TEMPLATES */
/* TEMPLATECEPTION */
ips.templates.set('templates.editor.newTab', " \
<li data-fileid='{{fileid}}' data-location='{{location}}'>\
@@ -3253,7 +3326,6 @@ Debug.js
app.js</order>
<order app="global" path="/dev/js//library//jquery">jquery.js
jquery-migrate.js
jquery.history.js
jquery.transform.js</order>
<order app="global" path="/dev/js//library//linkify">linkify.min.js
linkify-jquery.min.js</order>
+14 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="cms" version="107712">
<app key="cms" version="107827">
<word key="__app_cms" js="0">Pages</word>
<word key="menutab__cms" js="0">Pages</word>
<word key="menutab__cms_icon" js="0">files-o</word>
@@ -25,6 +25,7 @@
<word key="cms_page_pl_lc" js="0">pages</word>
<word key="cms_page_pl" js="0">Pages</word>
<word key="module_no_permission" js="0">No permission</word>
<word key="cms_no_title_content_permission" js="0">You have no permissions to set the title or content</word>
<word key="converting_pages_34x" js="0">Converting bbcode pages to HTML</word>
<word key="content_theme_dev_cannot_write_template" js="0">Could not write the file %s</word>
<word key="sitemap_databases_include" js="0">Include in Sitemap</word>
@@ -529,6 +530,8 @@
<word key="category_template_display" js="0">Display Template</word>
<word key="content_cat_furl_collision" js="0">This category name cannot be used as it is a reserved word.</word>
<word key="content_tree_title" js="0">Category Tree</word>
<word key="club_category_meta_index" js="0">Index</word>
<word key="club_category_meta_index_desc" js="0">Allow Search Engines to index this category.</word>
<word key="content_record_db_title" js="0">%s Records</word>
<word key="content_db_table_title" js="0">Title</word>
<word key="content_db_table_primary_id_field" js="0">ID</word>
@@ -654,6 +657,9 @@
<word key="database_field_sort" js="0">Sort</word>
<word key="database_field_direction" js="0">Order</word>
<word key="database_field_perpage" js="0">Records per page</word>
<word key="database_comments_perpage" js="0">Comments per page</word>
<word key="database_comments_perpage_desc" js="0"><![CDATA[If set to "Inherit", then will use the value of Records per page, <strong>or</strong> will use the Posts per page setting in the Forums application, if the database is using forums for comments.]]></word>
<word key="database_comments_perpage_inherit" js="0">Inherit</word>
<word key="database_field__id" js="0">Record ID</word>
<word key="database_field__member" js="0">Member ID</word>
<word key="database_field__saved" js="0">Publish Date</word>
@@ -728,6 +734,10 @@
<word key="database_use_categories_impossible" js="0">You have %s categories in this database. You can only have 1 category to store records in the database directly. If you wish to disable category support please move articles to a single category and delete the no longer needed categories.</word>
<word key="database_use_categories_yes" js="0"><![CDATA[<strong>Yes</strong>, allow records to be stored in different categories]]></word>
<word key="database_use_categories_no" js="0"><![CDATA[<strong>No</strong>, store records in the database directly]]></word>
<word key="database_allow_club_categories" js="0">Allow categories in Clubs</word>
<word key="database_allow_club_categories_desc" js="0">This database must also be included in a Page to use this feature. Note you cannot turn off this setting if club categories currently exist.</word>
<word key="database_allow_club_categories_yes" js="0"><![CDATA[<strong>Yes</strong>, allow categories to be created in Clubs]]></word>
<word key="database_allow_club_categories_no" js="0"><![CDATA[<strong>No</strong>, only use regular categories]]></word>
<word key="cms_db_cats_disabled" js="0"><![CDATA[<em>Categories not used</em>]]></word>
<word key="database_featured_featured" js="0">Show featured records only</word>
<word key="cms_bitoptions_comments" js="0">Allow comments</word>
@@ -798,6 +808,7 @@
<word key="rss_import_record_hide" js="0">Record Hidden/Unhidden?</word>
<word key="content_categories_title" js="0">Categories</word>
<word key="content_subcategories_title" js="0">Subcategories</word>
<word key="club_categories_title" js="0">Club Categories</word>
<word key="x_records" js="0">%d %s</word>
<word key="x_records_in_this_category" js="0">%d %s in this category</word>
<word key="content_categories_index_no_records" js="0">No %s here yet</word>
@@ -850,6 +861,7 @@
<word key="content_conflict_use_this_record" js="0">Keep the current version</word>
<word key="content_revision_restore" js="0">Restore</word>
<word key="modlog__cms_revision_restored" js="0">Restored record '%s' with revision #%s</word>
<word key="modlog__cms_revision_restored_stats" js="0">Restored a record revision</word>
<word key="content_revision_restored" js="0">Revision Restored</word>
<word key="content_view_record" js="0">View full %s</word>
<word key="cms_mark_read" js="0">Mark as read</word>
@@ -1064,5 +1076,6 @@
<word key="mediaUploadedCount" js="1">{!# [1:A file was][?:# files were]} added to this folder</word>
<word key="replaceMediaFile" js="1">Replace File</word>
<word key="mediaUploadedReplace" js="1">The file has been updated</word>
<word key="template_title_desc" js="1">Please use only a-z and 0-9 without any special characters or spaces. The title must start with a letter or underscore.</word>
</app>
</language>
+78 -4
View File
@@ -1080,6 +1080,30 @@
"zerofill": false,
"auto_increment": false,
"binary": false
},
"database_comments_perpage": {
"name": "database_comments_perpage",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
},
"database_allow_club_categories": {
"name": "database_allow_club_categories",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "Whether this database will allow club categories",
"unsigned": true,
"auto_increment": false
}
},
"indexes": {
@@ -1695,6 +1719,42 @@
"comment": "",
"unsigned": true,
"auto_increment": false
},
"category_club_id": {
"allow_null": true,
"auto_increment": false,
"comment": "",
"decimals": null,
"default": null,
"length": 0,
"name": "category_club_id",
"type": "BIGINT",
"unsigned": true,
"values": []
},
"category_club_view_permission": {
"allow_null": false,
"auto_increment": false,
"comment": "",
"decimals": null,
"default": "*",
"length": 500,
"name": "category_club_view_permission",
"type": "VARCHAR",
"unsigned": false,
"values": []
},
"category_club_category_meta_index": {
"name": "category_club_category_meta_index",
"type": "TINYINT",
"length": 0,
"decimals": null,
"values": [],
"allow_null": true,
"default": "1",
"comment": "",
"unsigned": true,
"auto_increment": false
}
},
"indexes": {
@@ -1711,11 +1771,13 @@
"category_database_id": {
"type": "key",
"name": "category_database_id",
"length": [
null
],
"columns": [
"category_database_id"
"category_database_id",
"category_club_id"
],
"length": [
null,
null
]
},
"category_select": {
@@ -2961,6 +3023,18 @@
"comment": "",
"unsigned": false,
"auto_increment": false
},
"page_views": {
"name": "page_views",
"type": "INT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
}
},
"indexes": {
+67 -5
View File
@@ -96,6 +96,54 @@
</div>]]></template>
<template template_group="blocks" template_name="previewTemplateLink" template_data="$plugin" template_location="admin" template_app="cms"><![CDATA[<span data-role="viewTemplate" data-plugin="{$plugin}" class='ipsButton ipsButton_light ipsButton_verySmall'>{lang="cms_block_view_template"}</span>]]></template>
<template template_group="blocks" template_name="rowHtml" template_data="$block" template_location="admin" template_app="cms"><![CDATA[{{if $block->category}}<span class="ipsBadge ipsBadge_neutral">{lang="cms_block_list_key" sprintf="$block->key"}</span>{{endif}}]]></template>
<template template_group="clubs" template_name="clubCategoryView" template_data="$category, $club, $index" template_location="front" template_app="cms"><![CDATA[
{{if \IPS\Settings::i()->clubs_header != 'sidebar'}}
{template="header" group="clubs" app="core" params="$club, $category, 'full'"}
{{endif}}
{$index|raw}
]]></template>
<template template_group="clubs" template_name="index" template_data="$database, $articles, $url, $pagination" template_location="front" template_app="cms"><![CDATA[
<div class='ipsPageHeader ipsBox ipsPadding ipsResponsive_pull ipsClearfix ipsSpacer_bottom'>
<div class='ipsFlex ipsFlex-ai:center ipsFlex-jc:between sm:ipsFlex-fd:column sm:ipsFlex-ai:stretch ipsGap:4'>
<div class='ipsFlex-flex:11'>
<h1 class='ipsType_pageTitle'>{$database->_title}</h1>
{{if $database->_description}}
<div class='ipsPageHeader_info ipsType_light'>
{$database->_description}
</div>
{{endif}}
</div>
<div class='ipsFlex-flex:00'>
{{$catClass = 'IPS\cms\Categories' . $database->id; $category = $catClass::load( $database->default_category );}}
{template="follow" app="core" group="global" params="'cms','categories' . $database->id, $category->_id, \IPS\cms\Records::containerFollowerCount( $category )"}
</div>
</div>
</div>
{{if $database->can('add') or \IPS\Member::loggedIn()->member_id}}
<ul class="ipsToolList ipsToolList_horizontal ipsClearfix ipsSpacer_both ipsResponsive_hidePhone">
{{if $database->can('add')}}
<li class='ipsToolList_primaryAction'>
<a class="ipsButton ipsButton_medium ipsButton_important ipsButton_fullWidth" {{if $database->use_categories}}data-ipsDialog="1" data-ipsDialog-size="narrow" data-ipsDialog-title="{lang="cms_select_category"}"{{endif}} href="{$url->setQueryString( array( 'do' => 'form', 'd' => \IPS\cms\Databases\Dispatcher::i()->databaseId ) )}">{lang="cms_add_new_record_button" sprintf="$database->recordWord( 1 )"}</a>
</li>
{{endif}}
</ul>
{{endif}}
<section class='ipsType_normal ipsSpacer_both'>
{{if \count($articles)}}
{{foreach $articles as $id => $record}}
{template="entry" app="cms" location="database" group="category_articles" params="$record, $database"}
{{endforeach}}
{{else}}
<div class="ipsBox ipsPad">{lang="cms_no_records_to_show" sprintf="\IPS\cms\Databases::load( \IPS\cms\Databases\Dispatcher::i()->databaseId )->recordWord()"}</div>
{{endif}}
</section>
{{if $database->featured_settings['pagination'] and ( $pagination['pages'] > 1 )}}
{template="pagination" app="core" location="global" group="global" params="$url, $pagination['pages'], $pagination['page'], $database->featured_settings['perpage'], TRUE, 'page'"}
{{endif}}]]></template>
<template template_group="databases" template_name="downloadDialog" template_data="$database" template_location="admin" template_app="cms"><![CDATA[<div class='ipsBox ipsPad'>
<i class="fa fa-download ipsAlert_icon"></i>
{lang="cms_download_db_explain"}
@@ -552,7 +600,7 @@
<input type="checkbox" class="ipsHide" id="elInput_record_static_furl_set" name="record_static_furl_set_checkbox" {{if $collection['record_static_furl_set']->value}}checked="checked"{{endif}} value="1">
<input type="hidden" name="record_static_furl_set" value="{{if $collection['record_static_furl_set']->value}}1{{else}}0{{endif}}">
<i class='fa fa-globe'></i> <strong>{lang="url"}:</strong> <span data-ipsSlugUrl>{url="app=cms&module=pages&controller=page&path=$page->full_path" seoTemplate="content_page_path" seoTitle="$page->full_path"}</span><span data-ipsSlugCategory>{$category->full_path}</span><span data-ipsSlugSlug></span><span data-ipsSlugManual class="ipsHide">
/ <input type="text" class='ipsField_short ipsField_tinyText' name="record_static_furl" value="{$collection['record_static_furl']->value}">
/ <input type="text" class='ipsField_short ipsField_tinyText' name="record_static_furl" value="{{if $collection['record_static_furl']->value}}{$collection['record_static_furl']->value}{{endif}}"">
</span><span data-ipsSlugExt>{{if $record !== NULL}}-r{$record->_id}{{else}}-r#{{endif}}</span>
<button data-ipsChange class="ipsButton ipsButton_veryVerySmall ipsButton_link">{lang="change"}</button>
<button data-ipsCancel class="ipsHide ipsButton ipsButton_veryVerySmall ipsButton_light">{lang="cancel"}</button>
@@ -614,11 +662,11 @@
<div class='ipsGrid' data-key='{$row['revision_id']}_{$key}' data-method='diff'>
<div class='ipsGrid_span6 ipsPad'>
<h3 class='ipsType_sectionHead'>Revision</h3>
<div data-original='{$row['revision_id']}_{$key}'>{$diff['original']}</div>
<div data-original='{$row['revision_id']}_{$key}'>{$diff['field']->displayValue( $diff['original'] )}</div>
</div>
<div class='ipsGrid_span6 ipsPad'>
<h3 class='ipsType_sectionHead'>Current</h3>
<div data-current='{$row['revision_id']}_{$key}'>{$diff['current']}</div>
<div data-current='{$row['revision_id']}_{$key}'>{$diff['field']->displayValue( $diff['current'] )}</div>
</div>
</div>
{{else}}
@@ -705,8 +753,8 @@
<div data-conflict-id="{$key}">
{{if !\in_array( $data['field']->type, array( 'Editor', 'CodeMirror', 'TextArea' ) )}}
<div class='ipsGrid' data-key='{$key}' data-method='diff'>
<div class='ipsGrid_span6 ipsPad' data-original='{$key}'>{$data['original']}</div>
<div class='ipsGrid_span6 ipsPad' data-current='{$key}'>{$data['current']}</div>
<div class='ipsGrid_span6 ipsPad' data-original='{$key}'>{$data['field']->displayValue( $data['original'] )}</div>
<div class='ipsGrid_span6 ipsPad' data-current='{$key}'>{$data['field']->displayValue( $data['current'] )}</div>
</div>
{{else}}
<div class='ipsPagesDiff' data-key='{$key}' data-method='merge'></div>
@@ -1129,6 +1177,20 @@
{{endif}}
</li>
{{endforeach}}
{{if settings.club_nodes_in_apps and \IPS\IPS::classUsesTrait( $catClass, 'IPS\Content\ClubContainer' ) and $clubCategories = $catClass::clubNodes()}}
{{if \count( $clubCategories )}}
<li>
<div class="ipsType_bold ipsType_large ipsMargin_top:double ipsBorder_bottom ipsPadding_bottom:half">{lang="club_categories_title"}</div>
<ul class="ipsSideMenu_list ipsMargin_top:half">
{{foreach $clubCategories as $category}}
<li>
<a href="{$category->url()}" class='ipsSideMenu_item ipsTruncate ipsTruncate_line'><span class='ipsBadge ipsBadge_style1 ipsPos_right'>{expression="\IPS\cms\Records::contentCount( $category )"}</span><strong class='ipsType_normal'>{$category->_title}</strong></a>
</li>
{{endforeach}}
</ul>
</li>
{{endif}}
{{endif}}
</ul>
<p class='ipsType_center'>
<a href='{$url->setQueryString('show','categories')}' class=''>{lang="cms_show_categories"} &nbsp;<i class='fa fa-caret-right'></i></a>
+65 -1
View File
@@ -587,5 +587,69 @@
"107704": "4.7.12",
"107710": "4.7.13 Beta 1",
"107711": "4.7.13 Beta 2",
"107712": "4.7.13"
"107712": "4.7.13",
"107713": "4.7.13",
"107714": "4.7.13",
"107715": "4.7.13",
"107720": "4.7.14 Beta 1",
"107721": "4.7.14 Beta 2",
"107722": "4.7.14",
"107723": "4.7.14",
"107724": "4.7.14",
"107730": "4.7.15 Beta 1",
"107731": "4.7.15 Beta 2",
"107732": "4.7.15",
"107733": "4.7.15",
"107734": "4.7.15",
"107740": "4.7.16 Beta 1",
"107741": "4.7.16 Beta 2",
"107742": "4.7.16 Beta 3",
"107743": "4.7.16 Beta 4",
"107744": "4.7.16 Beta 5",
"107745": "4.7.16",
"107746": "4.7.16",
"107747": "4.7.16",
"107748": "4.7.16",
"107749": "4.7.16",
"107750": "4.7.16",
"107751": "4.7.16",
"107760": "4.7.17 Beta 1",
"107761": "4.7.17 Beta 2",
"107762": "4.7.17 Beta 3",
"107763": "4.7.17",
"107764": "4.7.17",
"107765": "4.7.17",
"107770": "4.7.18 Beta 1",
"107771": "4.7.18 Beta 2",
"107772": "4.7.18 Beta 3",
"107773": "4.7.18",
"107774": "4.7.18",
"107775": "4.7.18",
"107780": "4.7.19 Beta 1",
"107781": "4.7.19 Beta 2",
"107782": "4.7.19 Beta 3",
"107783": "4.7.19 Beta 4",
"107784": "4.7.19",
"107785": "4.7.19",
"107786": "4.7.19",
"107787": "4.7.19",
"107795": "4.7.20 Beta 1",
"107796": "4.7.20 Beta 2",
"107797": "4.7.20 Beta 3",
"107798": "4.7.20 Beta 4",
"107799": "4.7.20 Beta 5",
"107800": "4.7.20",
"107801": "4.7.20",
"107802": "4.7.20",
"107803": "4.7.20",
"107810": "4.7.21 Beta 1",
"107811": "4.7.21",
"107815": "4.7.22 Beta 1",
"107816": "4.7.22 Beta 2",
"107817": "4.7.22",
"107818": "4.7.22",
"107819": "4.7.22",
"107820": "4.7.22",
"107826": "4.7.23 Beta 1",
"107827": "4.7.23"
}
+2 -1
View File
@@ -47,7 +47,8 @@
},
"RecordFeed": {
"class": "\\IPS\\Widget\\PermissionCache",
"restrict": [
"restrict": [
"sidebar",
"cms"
],
"default_area": "",
@@ -79,7 +79,7 @@ class _Records
$data = \IPS\Data\Store::i()->cms_files_move_data;
if ( ! \count( $data ) )
if ( !is_countable( $data ) OR ! \count( $data ) )
{
/* all done */
unset( \IPS\Data\Store::i()->cms_files_move_data );
@@ -172,7 +172,22 @@ class _Pages extends \IPS\core\FrontNavigation\FrontNavigationAbstract
*/
public function active()
{
return ( \IPS\cms\Pages\Page::$currentPage and \IPS\cms\Pages\Page::$currentPage->id == $this->configuration['menu_content_page'] );
$page = \IPS\cms\Pages\Page::$currentPage;
if ( !$page )
{
return false;
}
try
{
if ( $db = $page->getDatabase() and $db->allow_club_categories and $categoryClass = '\\IPS\\cms\\Categories' . $db->id and \IPS\cms\Databases\Dispatcher::i()->categoryId and $categoryClass::load( \IPS\cms\Databases\Dispatcher::i()->categoryId )->club() )
{
return false;
}
}
catch ( \OutOfRangeException|\OutOfBoundsException ) {}
return $page->id == $this->configuration['menu_content_page'];
}
/**
@@ -174,7 +174,7 @@ class _MoveComments
catch( \OutOfRangeException )
{
/* If the topic does not exist, reset the value so it can be re-created */
$row->item()->record_topicid = NULL;
$row->item()->record_topicid = 0;
$row->item()->save();
}
@@ -125,9 +125,11 @@ class _RssImport
$member = \IPS\Member::load( $rss->member );
$fieldsClass = '\IPS\cms\Fields' . $recordClass::database()->id;
$customFields = $fieldsClass::fields( $settings, 'add' );
$fieldData = $fieldsClass::data();
$linkedFields = [];
$values = array(
'content_field_' . $recordClass::database()->field_title => $article['title'],
'content_field_' . $recordClass::database()->field_title => $rss->topic_pre . $article['title'],
'content_field_' . $recordClass::database()->field_content => $content,
'record_member_id' => $member
);
@@ -164,6 +166,11 @@ class _RssImport
{
$record->$k = $v;
}
if( isset( $fieldData[ $id ] ) and $fieldData[ $id ]->type == 'Item' )
{
$linkedFields[] = $fieldData[ $id ];
}
}
}
@@ -198,6 +205,12 @@ class _RssImport
}
$record->save();
/* Process Linked Fields */
foreach( $linkedFields as $field )
{
$record->processItemFieldData( $field );
}
return $record;
}
+1 -1
View File
@@ -72,7 +72,7 @@ class cms_hook_Output extends _HOOK_CLASS_
/* Log */
$level = \intval( \substr( $code, 0, 1 ) );
if( !\IPS\Session::i()->userAgent->spider )
if( !\IPS\Session::i()->userAgent->bot )
{
if( $code and \IPS\Settings::i()->error_log_level and $level >= \IPS\Settings::i()->error_log_level )
{
@@ -37,7 +37,7 @@ if ( isset( \IPS\Request::i()->file ) )
}
$file = file_get_contents( \IPS\ROOT_PATH . '/themes/' . \IPS\Request::i()->file );
\IPS\Output::i()->pageCaching = FALSE;
\IPS\Output::setCacheTime( false );
\IPS\Output::i()->sendOutput( preg_replace( '#<ips:template.+?\n#', '', $file ), 200, ( mb_substr( \IPS\Request::i()->file, -4 ) === '.css' ) ? 'text/css' : 'text/javascript' );
}
+1 -1
View File
@@ -43,7 +43,7 @@ catch( \OutOfRangeException $ex ){}
if( !$cache OR !\IPS\Settings::i()->widget_cache_ttl )
{
\IPS\Output::i()->pageCaching = FALSE;
\IPS\Output::setCacheTime( false );
$headers = array();
}
else
+1
View File
@@ -72,6 +72,7 @@ try
\IPS\Output::i()->sendHeader( "Content-Length: " . $file->filesize() );
\IPS\Output::i()->sendHeader( "Content-Security-Policy: default-src 'none'; sandbox" );
\IPS\Output::i()->sendHeader( "X-Content-Security-Policy: default-src 'none'; sandbox" );
\IPS\Output::i()->sendHeader( "Cross-Origin-Opener-Policy: same-origin" );
$file->printFile();
exit;
@@ -980,7 +980,7 @@ class _databases extends \IPS\Node\Controller
$textFields = array( 'category_name', 'category_description', 'category_meta_keywords', 'category_meta_description', 'category_page_title' );
$removeFields = array( 'category_database_id', 'category_last_record_id', 'category_last_record_date', 'category_last_record_member', 'category_last_record_name', 'category_last_record_seo_name', 'category_records', 'category_record_comments',
'category_record_comments_queued', 'category_rss_cache', 'category_rss_cached', 'category_rss_exclude', 'category_forum_override', 'category_forum_record', 'category_forum_comments', 'category_forum_delete', 'category_forum_suffix', 'category_forum_prefix',
'category_forum_forum', 'category_full_path', 'category_last_title', 'category_last_seo_title');
'category_forum_forum', 'category_full_path', 'category_last_title', 'category_last_seo_title', 'category_club_id', 'category_club_view_permission', 'category_club_category_meta_index' );
$categorySchema = $schema['cms_database_categories'];
foreach ( \IPS\Db::i()->select( 'c.*, w.word_custom as category_name, w2.word_custom as category_description, p.*', array('cms_database_categories', 'c'), array( 'category_database_id=?', $database->id ) )
->join( array( 'core_sys_lang_words', 'w' ), "w.word_key=CONCAT( 'content_cat_name_', c.category_id ) and w.lang_id=" . \IPS\Lang::defaultLanguage() )
@@ -1377,6 +1377,7 @@ class _databases extends \IPS\Node\Controller
\IPS\Lang::saveCustom( 'cms', "module__cms_records" . $current->id, $values['database_name'] );
$current->use_categories = $values['database_use_categories'];
$current->allow_club_categories = $values['database_allow_club_categories'] ?? $current->allow_club_categories;
$current->template_categories = $values['database_template_categories'];
$current->template_listing = $values['database_template_listing'];
$current->template_display = $values['database_template_display'];
@@ -1426,9 +1427,10 @@ class _databases extends \IPS\Node\Controller
'categories' => $categories
);
$current->field_sort = $values['database_field_sort'];
$current->field_direction = $values['database_field_direction'];
$current->field_perpage = $values['database_field_perpage'];
$current->field_sort = $values['database_field_sort'];
$current->field_direction = $values['database_field_direction'];
$current->field_perpage = $values['database_field_perpage'];
$current->comments_perpage = $values['database_comments_perpage'];
if ( \IPS\Application::appIsEnabled( 'forums' ) )
{
@@ -1585,7 +1587,7 @@ class _databases extends \IPS\Node\Controller
) ) );
$disabled = FALSE;
if ( $current and $current->use_categories and $current->numberOfCategories() > 1 )
if ( $current and ( ( $current->use_categories and $current->numberOfCategories() > 1 ) or ( $current->allow_club_categories and $current->numberOfClubCategories() ) ) )
{
$disabled = TRUE;
}
@@ -1596,7 +1598,7 @@ class _databases extends \IPS\Node\Controller
0 => 'database_use_categories_no'
),
'toggles' => array(
1 => array( 'database_template_categories' ),
1 => array( 'database_template_categories', 'database_allow_club_categories' ),
0 => array( 'category_allow_rating', 'category_can_view_others' )
),
'disabled' => $disabled
@@ -1607,6 +1609,17 @@ class _databases extends \IPS\Node\Controller
$form->hiddenValues['database_use_categories_impossible'] = TRUE;
\IPS\Member::loggedIn()->language()->words['database_use_categories_warning'] = \IPS\Member::loggedIn()->language()->addToStack( 'database_use_categories_impossible', FALSE, array( 'sprintf' => array( $current->numberOfCategories() ) ) );
}
if( \IPS\Settings::i()->clubs )
{
$form->add( new \IPS\Helpers\Form\Radio( 'database_allow_club_categories', $current?->allow_club_categories ? 1 : 0, false, array(
'options' => array (
0 => 'database_allow_club_categories_no',
1 => 'database_allow_club_categories_yes',
),
'disabled' => (bool) ($current?->allow_club_categories and $current->numberOfClubCategories()),
), null, null, null, 'database_allow_club_categories' ) );
}
$form->add( new \IPS\Helpers\Form\Radio( 'database_use_as_page_title' , $current ? $current->use_as_page_title : 1, FALSE, array(
'options' => array(
@@ -1831,6 +1844,7 @@ class _databases extends \IPS\Node\Controller
) ) );
$form->add( new \IPS\Helpers\Form\Number( 'database_field_perpage', $current ? $current->field_perpage : 25, FALSE, array( 'min' => 1 ), NULL, NULL, NULL, 'database_field_perpage' ) );
$form->add( new \IPS\Helpers\Form\Number( 'database_comments_perpage', $current ? $current->comments_perpage : 0, FALSE, array( 'unlimited' => 0, 'unlimitedLang' => 'database_comments_perpage_inherit' ) ) );
$form->addHeader( 'content_database_form_options_field_record_image_settings' );
@@ -309,7 +309,7 @@ FILE;
{
$badge = array( 0 => 'style7', 1 => \IPS\Member::loggedIn()->language()->addToStack( 'page_database_display', FALSE, array( 'sprintf' => array( \IPS\Member::loggedIn()->language()->addToStack('content_db_' . static::$pageToDatabaseMap[ $page->id ] ) ) ) ) );
}
return \IPS\Theme::i()->getTemplate( 'trees', 'core' )->row( $url, $page->id, $page->seo_name, false, $page->getButtons( \IPS\Http\url::internal('app=cms&module=pages&controller=pages'), true ), "", 'file-text-o', NULL, FALSE, NULL, NULL, $badge, FALSE, FALSE, FALSE );
return \IPS\Theme::i()->getTemplate( 'trees', 'core' )->row( $url, $page->id, $page->seo_name, false, $page->getButtons( \IPS\Http\Url::internal('app=cms&module=pages&controller=pages'), true ), \IPS\Member::loggedIn()->language()->addToStack( 'num_views_with_number', NULL, array( 'pluralize' => array( $page->views ) ) ), 'file-text-o', NULL, FALSE, NULL, NULL, $badge, FALSE, FALSE, FALSE );
}
/**
@@ -321,7 +321,7 @@ FILE;
*/
public static function getFolderRow( $folder, $url )
{
return \IPS\Theme::i()->getTemplate( 'trees', 'core' )->row( $url, $folder->id, $folder->name, true, $folder->getButtons( \IPS\Http\url::internal('app=cms&module=pages&controller=pages') ), "", 'folder-o', NULL );
return \IPS\Theme::i()->getTemplate( 'trees', 'core' )->row( $url, $folder->id, $folder->name, true, $folder->getButtons( \IPS\Http\Url::internal('app=cms&module=pages&controller=pages') ), "", 'folder-o', NULL );
}
/**
@@ -145,11 +145,6 @@ class _templates extends \IPS\Dispatcher\Controller
$form->hiddenValues['plugin'] = \IPS\Request::i()->plugin;
}
if( \IPS\Request::i()->marketplace )
{
$form->hiddenValues['marketplace'] = (int) \IPS\Request::i()->marketplace;
}
if( \IPS\Request::i()->lang )
{
$form->hiddenValues['lang'] = \IPS\Request::i()->lang;
@@ -256,11 +251,7 @@ class _templates extends \IPS\Dispatcher\Controller
$lang = $values['lang'] == 'updated' ? 'application_now_updated' : 'application_now_installed';
}
if( !empty( $values['marketplace'] ) )
{
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=marketplace&controller=marketplace&do=viewFile&id=' . $values['marketplace'] ), $lang );
}
elseif( !empty( $values['application'] ) )
if( !empty( $values['application'] ) )
{
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=applications&controller=applications' ), $lang );
}
@@ -92,7 +92,7 @@ class _category extends \IPS\cms\Databases\Controller
{
$breadcrumbs = \IPS\Output::i()->breadcrumb;
}
$RecordsClass = $category::$contentItemClass;
/* AdvancedSearch can wipe out the checked box as it is looking for _checkbox. Note to self in 4.5, rewrite the filter widget to avoid using advancedSearch :/ */
@@ -683,19 +683,12 @@ class _category extends \IPS\cms\Databases\Controller
\IPS\Output::i()->linkTags['canonical'] = (string) $category->url();
/* Set breadcrumb */
if ( \IPS\IPS::classUsesTrait( $category, 'IPS\Content\ClubContainer' ) and $club = $category->club() )
foreach ( $category->parents() as $parent )
{
$club->setBreadcrumbs( $category );
\IPS\Output::i()->breadcrumb[] = array( $parent->url(), $parent->_title );
}
else
{
foreach ( $category->parents() as $parent )
{
\IPS\Output::i()->breadcrumb[] = array( $parent->url(), $parent->_title );
}
\IPS\Output::i()->breadcrumb[] = array( NULL, $category->_title );
}
\IPS\Output::i()->breadcrumb[] = array( NULL, $category->_title );
}
/* Node handler does not support keywords, so we need to do it manually */
@@ -704,6 +697,9 @@ class _category extends \IPS\cms\Databases\Controller
\IPS\Output::i()->metaTags['keywords'] = $category->meta_keywords;
}
/* Show club header, if applicable */
$this->showClubHeader( $category );
/* Update location */
$permissions = $category->permissions();
\IPS\Session::i()->setLocation( $category->url(), explode( ",", $permissions['perm_view'] ), 'loc_cms_viewing_db_cat', array( 'content_db_' . $database->id => TRUE, 'content_cat_name_' . $category->id => TRUE ) );
@@ -740,6 +736,39 @@ class _category extends \IPS\cms\Databases\Controller
\IPS\Output::i()->title = $titleSuffix;
}
}
/**
* Show Club Header
*
* @param \IPS\cms\Categories $category
* @return void
*/
protected function showClubHeader( \IPS\cms\Categories $category )
{
if ( $club = $category->_club )
{
\IPS\Output::i()->sidebar['contextual'] = '';
/* Club info in sidebar */
if ( \IPS\Settings::i()->clubs_header == 'sidebar' )
{
\IPS\Output::i()->sidebar['enabled'] = true;
\IPS\Output::i()->sidebar['contextual'] .= \IPS\Theme::i()->getTemplate( 'clubs', 'core', 'front' )->header( $club, $category, 'sidebar' );
}
else
{
\IPS\cms\Databases\Dispatcher::i()->output .= \IPS\Theme::i()->getTemplate( 'clubs', 'core', 'front' )->header( $club, $category, 'full' );
}
if( ( \IPS\GeoLocation::enabled() and \IPS\Settings::i()->clubs_locations AND $location = $club->location() ) )
{
\IPS\Output::i()->sidebar['enabled'] = true;
\IPS\Output::i()->sidebar['contextual'] .= \IPS\Theme::i()->getTemplate( 'clubs', 'core', 'front' )->clubLocationBox( $club, $location );
}
$club->setBreadcrumbs( $category );
}
}
/**
* Form
@@ -774,13 +803,6 @@ class _category extends \IPS\cms\Databases\Controller
{
$hasModOptions = TRUE;
}
\IPS\Output::i()->allowDefaultWidgets = FALSE;
\IPS\Output::i()->sidebar['enabled'] = FALSE;
\IPS\cms\Pages\Page::$currentPage->getWidgets();
\IPS\cms\Databases\Dispatcher::i()->output = \IPS\Output::i()->output = $form->customTemplate( array( \IPS\cms\Theme::i()->getTemplate( $database->template_form, 'cms', 'database' ), 'recordForm' ), NULL, $category, $database, \IPS\cms\Pages\Page::$currentPage, $title, $hasModOptions );
\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack( $title );
\IPS\Output::i()->cssFiles = array_merge( \IPS\Output::i()->cssFiles, \IPS\Theme::i()->css( 'records/form.css', 'cms', 'front' ) );
try
{
@@ -794,8 +816,17 @@ class _category extends \IPS\cms\Databases\Controller
}
}
catch( \Exception $e ) {}
\IPS\Output::i()->breadcrumb[] = array( NULL, $title );
$this->showClubHeader( $category );
\IPS\Output::i()->allowDefaultWidgets = FALSE;
\IPS\Output::i()->sidebar['enabled'] = FALSE;
\IPS\cms\Pages\Page::$currentPage->getWidgets();
\IPS\Output::i()->output = $form->customTemplate( array( \IPS\cms\Theme::i()->getTemplate( $database->template_form, 'cms', 'database' ), 'recordForm' ), NULL, $category, $database, \IPS\cms\Pages\Page::$currentPage, $title, $hasModOptions );
\IPS\cms\Databases\Dispatcher::i()->output .= \IPS\Output::i()->output;
\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack( $title );
\IPS\Output::i()->cssFiles = array_merge( \IPS\Output::i()->cssFiles, \IPS\Theme::i()->css( 'records/form.css', 'cms', 'front' ) );
}
/**
@@ -148,7 +148,16 @@ class _index extends \IPS\cms\Databases\Controller
/* Load into memory */
$class::loadIntoMemory();
$categories = $class::roots();
/* Get only the categories we can view. Otherwise, there is a risk the output will show a list of categories with no actual content or error message (the template that checks view permission is separate from the one that verifies the count in our oob templates) */
$categories = [];
foreach ( $class::roots() as $category )
{
if ( $category->can('view') )
{
$categories[] = $category;
}
}
\IPS\Output::i()->cssFiles = array_merge( \IPS\Output::i()->cssFiles, \IPS\Theme::i()->css( 'records/index.css', 'cms', 'front' ) );
\IPS\Output::i()->title = $database->pageTitle();
@@ -124,6 +124,16 @@ class _record extends \IPS\Content\Controller
if ( \count( $customValues ) )
{
/* Store a revision before we change any values */
if ( $record::database()->revisions )
{
$revision = new \IPS\cms\Records\Revisions;
$revision->database_id = $record::$customDatabaseId;
$revision->record_id = $record->_id;
$revision->data = $record->fieldValues( TRUE );
$revision->save();
}
if ( isset( $values['record_display_field_change'] ) AND $values['record_display_field_change'] )
{
$record->addCommentWhenFiltersChanged( $values );
@@ -326,6 +336,7 @@ class _record extends \IPS\Content\Controller
);
}
$this->showClubHeader();
/* Set default search to this record */
if ( ! $record::database()->search )
{
@@ -729,7 +740,6 @@ class _record extends \IPS\Content\Controller
\IPS\Output::i()->allowDefaultWidgets = FALSE;
\IPS\Output::i()->sidebar['enabled'] = FALSE;
\IPS\cms\Pages\Page::$currentPage->getWidgets();
\IPS\cms\Databases\Dispatcher::i()->output = $form->customTemplate( array( \IPS\cms\Theme::i()->getTemplate( $database->template_form, 'cms', 'database' ), 'recordForm' ), NULL, $category, $database, \IPS\cms\Pages\Page::$currentPage, $title, $hasModOptions );
\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack( $title );
\IPS\Output::i()->cssFiles = array_merge( \IPS\Output::i()->cssFiles, \IPS\Theme::i()->css( 'records/form.css', 'cms', 'front' ) );
@@ -747,6 +757,9 @@ class _record extends \IPS\Content\Controller
catch( \Exception $e ) {}
\IPS\Output::i()->breadcrumb[] = array( $record->url(), $record->mapped('title') );
$this->showClubHeader();
\IPS\cms\Databases\Dispatcher::i()->output .= $form->customTemplate( array( \IPS\cms\Theme::i()->getTemplate( $database->template_form, 'cms', 'database' ), 'recordForm' ), NULL, $category, $database, \IPS\cms\Pages\Page::$currentPage, $title, $hasModOptions );
}
/**
@@ -949,4 +962,37 @@ class _record extends \IPS\Content\Controller
\IPS\Output::i()->error( 'node_error', '2T252/F', 403, '' );
}
}
/**
* Add the club header to \IPS\Output
*
* @return void
*/
protected function showClubHeader()
{
$record = $this->_getRecord();
if ( $record and $club = $record->club )
{
$category = $record->container();
\IPS\Output::i()->sidebar['contextual'] = '';
/* Club info in sidebar */
if ( \IPS\Settings::i()->clubs_header == 'sidebar' )
{
\IPS\Output::i()->sidebar['enabled'] = true;
\IPS\Output::i()->sidebar['contextual'] .= \IPS\Theme::i()->getTemplate( 'clubs', 'core', 'front' )->header( $club, $category, 'sidebar' );
}
else
{
\IPS\cms\Databases\Dispatcher::i()->output .= \IPS\Theme::i()->getTemplate( 'clubs', 'core', 'front' )->header( $club, $record->container(), 'full' );
}
if( ( \IPS\GeoLocation::enabled() and \IPS\Settings::i()->clubs_locations AND $location = $club->location() ) )
{
\IPS\Output::i()->sidebar['enabled'] = true;
\IPS\Output::i()->sidebar['contextual'] .= \IPS\Theme::i()->getTemplate( 'clubs', 'core', 'front' )->clubLocationBox( $club, $location );
}
}
}
}
@@ -161,6 +161,14 @@ class _builder extends \IPS\core\modules\front\system\widgets
$blocks[ $k ]['configuration'] = $values;
\IPS\Db::i()->insert( 'cms_page_widget_areas', array( 'area_page_id' => \IPS\Request::i()->pageID, 'area_area' => \IPS\Request::i()->pageArea, 'area_widgets' => json_encode( $blocks ) ), TRUE );
/* Reindex the page any time the blocks are updated */
try
{
\IPS\Content\Search\Index::i()->index( \IPS\cms\Pages\PageItem::load( \IPS\Request::i()->pageID ) );
}
catch( \OutOfRangeException ){}
\IPS\Output::i()->json( 'OK' );
}
\IPS\Output::i()->output = $widget->configuration()->customTemplate( array( \IPS\Theme::i()->getTemplate( 'widgets', 'core' ), 'formTemplate' ), $widget );
@@ -267,6 +275,13 @@ class _builder extends \IPS\core\modules\front\system\widgets
/* Save to database */
$orientation = ( isset( \IPS\Request::i()->orientation ) and \IPS\Request::i()->orientation === 'vertical' ) ? 'vertical' : 'horizontal';
\IPS\Db::i()->replace( 'cms_page_widget_areas', array( 'area_orientation' => $orientation, 'area_page_id' => \IPS\Request::i()->pageID, 'area_widgets' => json_encode( $newOrder ), 'area_area' => \IPS\Request::i()->area ) );
/* Reindex the page any time the blocks are updated */
try
{
\IPS\Content\Search\Index::i()->index( \IPS\cms\Pages\PageItem::load( \IPS\Request::i()->pageID ) );
}
catch( \OutOfRangeException ){}
\IPS\cms\Pages\Page::load( \IPS\Request::i()->pageID )->postWidgetOrderSave();
}
@@ -23,15 +23,6 @@ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
*/
class _page extends \IPS\Dispatcher\Controller
{
/**
* Execute
*
* @return void
*/
public function execute()
{
parent::execute();
}
/**
* Determine which method to load
@@ -195,6 +186,11 @@ class _page extends \IPS\Dispatcher\Controller
\IPS\Output::i()->error( 'content_err_page_403', '2T187/3', 403, '' );
}
if ( \IPS\IPS::classUsesTrait( $page->item(), 'IPS\Content\ViewUpdates' ) )
{
$page->item()->updateViews();
}
/* Set the current page, so other blocks, DBs, etc don't have to figure out where they are */
\IPS\cms\Pages\Page::$currentPage = $page;
@@ -0,0 +1,23 @@
{
"id": 107713,
"name": "4.7.13",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107714,
"name": "4.7.13",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107715,
"name": "4.7.13",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107720,
"name": "4.7.14 Beta 1",
"steps": {
"queries": true,
"lang": true,
"theme": true,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,16 @@
{
"normal": {
"added": [
"database_comments_perpage",
"database_comments_perpage_desc",
"database_comments_perpage_inherit"
],
"edited": [],
"removed": []
},
"js": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,20 @@
{
"1": {
"method": "addColumn",
"params": [
"cms_databases",
{
"name": "database_comments_perpage",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
}
]
}
}
@@ -0,0 +1,20 @@
{
"html": {
"added": [],
"edited": [
"front\/revisions\/rows",
"front\/revisions\/view"
],
"removed": []
},
"css": {
"added": [],
"edited": [],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,23 @@
{
"id": 107721,
"name": "4.7.14 Beta 2",
"steps": {
"queries": true,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,12 @@
{
"1": {
"method": "update",
"params": [
"cms_databases",
{
"database_comments_perpage": 0
},
"database_comments_perpage=-1"
]
}
}
@@ -0,0 +1,23 @@
{
"id": 107722,
"name": "4.7.14",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107723,
"name": "4.7.14",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107724,
"name": "4.7.14",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107730,
"name": "4.7.15 Beta 1",
"steps": {
"queries": false,
"lang": true,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,14 @@
{
"normal": {
"added": [
"cms_no_title_content_permission"
],
"edited": [],
"removed": []
},
"js": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,23 @@
{
"id": 107731,
"name": "4.7.15 Beta 2",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107732,
"name": "4.7.15",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107733,
"name": "4.7.15",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107734,
"name": "4.7.15",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107740,
"name": "4.7.16 Beta 1",
"steps": {
"queries": true,
"lang": true,
"theme": true,
"themeSettings": false,
"javascript": true,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": true,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,14 @@
{
"files": {
"added": [],
"edited": [],
"removed": []
},
"orders": {
"added": [],
"edited": [
"global\/\/dev\/js\/\/library\/\/jquery"
],
"removed": []
}
}
@@ -0,0 +1,20 @@
{
"normal": {
"added": [
"club_category_meta_index",
"club_category_meta_index_desc",
"database_allow_club_categories",
"database_allow_club_categories_desc",
"database_allow_club_categories_yes",
"database_allow_club_categories_no",
"modlog__cms_revision_restored_stats"
],
"edited": [],
"removed": []
},
"js": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,111 @@
{
"1": {
"method": "addColumn",
"params": [
"cms_pages",
{
"name": "page_views",
"type": "INT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
}
]
},
"2": {
"method": "addColumn",
"params": [
"cms_database_categories",
{
"name": "category_club_id",
"type": "BIGINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": true,
"default": null,
"comment": "",
"unsigned": true,
"auto_increment": false
}
]
},
"3": {
"method": "addColumn",
"params": [
"cms_database_categories",
{
"name": "category_club_view_permission",
"type": "VARCHAR",
"length": 500,
"decimals": null,
"values": null,
"allow_null": false,
"default": "*",
"comment": "",
"unsigned": false,
"auto_increment": false
}
]
},
"4": {
"method": "addColumn",
"params": [
"cms_database_categories",
{
"name": "category_club_category_meta_index",
"type": "TINYINT",
"length": 0,
"decimals": null,
"values": [],
"allow_null": true,
"default": "1",
"comment": "",
"unsigned": true,
"auto_increment": false
}
]
},
"5": {
"method": "addColumn",
"params": [
"cms_databases",
{
"name": "database_allow_club_categories",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "Whether this database will allow club categories",
"unsigned": true,
"auto_increment": false
}
]
},
"6": {
"method": "changeIndex",
"params": [
"cms_database_categories",
"category_database_id",
{
"type": "key",
"name": "category_database_id",
"columns": [
"category_database_id",
"category_club_id"
],
"length": [
null,
null
]
}
]
}
}
@@ -0,0 +1,20 @@
{
"html": {
"added": [
"front\/clubs\/clubCategoryView",
"front\/clubs\/index"
],
"edited": [],
"removed": []
},
"css": {
"added": [],
"edited": [],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,23 @@
{
"id": 107741,
"name": "4.7.16 Beta 2",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107742,
"name": "4.7.16 Beta 3",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107743,
"name": "4.7.16 Beta 4",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107744,
"name": "4.7.16 Beta 5",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107745,
"name": "4.7.16",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107746,
"name": "4.7.16",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107747,
"name": "4.7.16",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107748,
"name": "4.7.16",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107749,
"name": "4.7.16",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107750,
"name": "4.7.16",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107751,
"name": "4.7.16",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107760,
"name": "4.7.17 Beta 1",
"steps": {
"queries": false,
"lang": true,
"theme": true,
"themeSettings": false,
"javascript": true,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,14 @@
{
"files": {
"added": [],
"edited": [
"cms\/admin\/controllers\/templates\/ips.templates.variablesDialog.js"
],
"removed": []
},
"orders": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,16 @@
{
"normal": {
"added": [
"club_categories_title"
],
"edited": [],
"removed": []
},
"js": {
"added": [
"template_title_desc"
],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,20 @@
{
"html": {
"added": [],
"edited": [
"global\/records\/customslug",
"front\/widgets\/Categories"
],
"removed": []
},
"css": {
"added": [],
"edited": [],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,23 @@
{
"id": 107761,
"name": "4.7.17 Beta 2",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107762,
"name": "4.7.17 Beta 3",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107763,
"name": "4.7.17",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107764,
"name": "4.7.17",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107765,
"name": "4.7.17",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107770,
"name": "4.7.18 Beta 1",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107771,
"name": "4.7.18 Beta 2",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107772,
"name": "4.7.18 Beta 3",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107773,
"name": "4.7.18",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107774,
"name": "4.7.18",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107775,
"name": "4.7.18",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107780,
"name": "4.7.19 Beta 1",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": true,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,14 @@
{
"files": {
"added": [],
"edited": [
"cms\/admin\/controllers\/fields\/ips.fields.form.js"
],
"removed": []
},
"orders": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,23 @@
{
"id": 107781,
"name": "4.7.19 Beta 2",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107782,
"name": "4.7.19 Beta 3",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107783,
"name": "4.7.19 Beta 4",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107784,
"name": "4.7.19",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107785,
"name": "4.7.19",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107786,
"name": "4.7.19",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107787,
"name": "4.7.19",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107795,
"name": "4.7.20 Beta 1",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107796,
"name": "4.7.20 Beta 2",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": true,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,7 @@
{
"added": [],
"edited": [
"RecordFeed"
],
"removed": []
}
@@ -0,0 +1,23 @@
{
"id": 107797,
"name": "4.7.20 Beta 3",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107798,
"name": "4.7.20 Beta 4",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107799,
"name": "4.7.20 Beta 5",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107800,
"name": "4.7.20",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107801,
"name": "4.7.20",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107802,
"name": "4.7.20",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107803,
"name": "4.7.20",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107810,
"name": "4.7.21 Beta 1",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": true,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,7 @@
{
"added": [
"sitemap_databases_count"
],
"edited": [],
"removed": []
}
@@ -0,0 +1,23 @@
{
"id": 107811,
"name": "4.7.21",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107815,
"name": "4.7.22 Beta 1",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
Loaded 100 of 1791 files, more files were not shown because too many files have changed in this diff. Show more