Version 4.3.0

This commit is contained in:
Neo committed 2025-12-19 05:47:12 -08:00
1 parent 96997ddd8e
commit fe1acf984a
1349 files changed
+116159 -67711

No files matched your search

+47 -31
View File
@@ -115,6 +115,15 @@
<a class="ipsPos_right ipsBadge ipsBadge_style1" href="{$page->url()}" target="_blank">{lang="cms_db_used_on_page" sprintf="$page->_title"}</a>
{{endif}}
<p class='ipsType_light'>{$database->_description}</p>]]></template>
<template template_group="databases" template_name="rebuildCommentCounts" template_data="$id" template_location="admin" template_app="cms"><![CDATA[
<div class='acpBlock'>
<div class="ipsPad">
{lang="database_rebuild_commentcount_desc"}
<p>
<a href='{url="app=cms&module=databases&controller=databases&do=rebuildCommentCounts&id={$id}&process=1"}' class="ipsButton ipsButton_primary">{lang="database_rebuild_commentcount_button"}</a>
</p>
</div>
</div>]]></template>
<template template_group="databases" template_name="rebuildTopics" template_data="$id" template_location="admin" template_app="cms"><![CDATA[
<div class='acpBlock'>
<div class="ipsPad">
@@ -153,24 +162,24 @@
<template template_group="global" template_name="embedRecord" template_data="$item, $url" template_location="front" template_app="cms"><![CDATA[
{{$image = NULL;}}
<div data-embedInfo-maxSize='500' class='ipsRichEmbed'>
{template="embedHeader" group="embed" app="core" params="$item, \IPS\Member::loggedIn()->language()->addToStack( 'x_created_cms_in_embed', FALSE, array( 'sprintf' => array( $item->author()->name, $item->indefiniteArticle(), $item->container()->_title ) ) ), $item->mapped('date')"}
{template="embedHeader" group="embed" app="core" params="$item, \IPS\Member::loggedIn()->language()->addToStack( 'x_created_cms_in_embed', FALSE, array( 'sprintf' => array( $item->author()->name, $item->indefiniteArticle(), $item->container()->_title ) ) ), $item->mapped('date'), $url"}
{{if $item->record_image}}
{{$image = \IPS\File::get( "cms_Records", $item->record_image );}}
{{elseif count( $item->contentImages() )}}
{{$attachType = key( $item->contentImages()[0] );}}
{{$image = \IPS\File::get( $attachType, $item->contentImages()[0][ $attachType ] );}}
{{elseif $contentImage = $item->contentImages(1)}}
{{$attachType = key( $contentImage[0] );}}
{{$image = \IPS\File::get( $attachType, $contentImage[0][ $attachType ] );}}
{{endif}}
{{if $image}}
<div class='ipsRichEmbed_masthead ipsRichEmbed_mastheadBg ipsType_center'>
<a href='{$item->url()}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $image->url )"}" )'>
<a href='{$url}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $image->url )"}" )'>
<img src='{$image->url}' class='ipsHide' alt=''>
</a>
</div>
{{endif}}
<div class='ipsPad'>
<div class='ipsPad_double'>
<h3 class='ipsRichEmbed_itemTitle ipsTruncate ipsTruncate_line ipsType_blendLinks'>
<a href='{$item->url()}' title="{$item->mapped('title')}">{$item->mapped('title')}</a>
<a href='{$url}' title="{$item->mapped('title')}">{$item->mapped('title')}</a>
</h3>
<div class='ipsType_richText ipsType_medium ipsSpacer_top ipsSpacer_half' data-truncate='3'>
{$item->truncated(TRUE)|raw}
@@ -191,20 +200,20 @@
</div>]]></template>
<template template_group="global" template_name="embedRecordComment" template_data="$comment, $item, $url" template_location="front" template_app="cms"><![CDATA[
<div data-embedInfo-maxSize='500' class='ipsRichEmbed'>
{template="embedHeader" group="embed" app="core" params="$comment, \IPS\Member::loggedIn()->language()->addToStack( 'x_commented_cms_embed', FALSE, array( 'sprintf' => array( $comment->author()->name, $item->indefiniteArticle() ) ) ), $comment->mapped('date')"}
<div class='ipsPad'>
{template="embedHeader" group="embed" app="core" params="$comment, \IPS\Member::loggedIn()->language()->addToStack( 'x_commented_cms_embed', FALSE, array( 'sprintf' => array( $comment->author()->name, $item->indefiniteArticle() ) ) ), $comment->mapped('date'), $url"}
<div class='ipsPad_double'>
<div class='ipsRichEmbed_originalItem ipsAreaBackground_reset ipsSpacer_bottom ipsType_blendLinks'>
<div>
{{if $item->record_image}}
{{$image = \IPS\File::get( "cms_Records", $item->record_image );}}
{{elseif count( $item->contentImages() )}}
{{$attachType = key( $item->contentImages()[0] );}}
{{$image = \IPS\File::get( $attachType, $item->contentImages()[0][ $attachType ] );}}
{{elseif $contentImage = $item->contentImages(1)}}
{{$attachType = key( $contentImage[0] );}}
{{$image = \IPS\File::get( $attachType, $contentImage[0][ $attachType ] );}}
{{endif}}
{{if $image}}
<div class='ipsRichEmbed_masthead ipsRichEmbed_mastheadBg ipsType_center'>
<a href='{$item->url()}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $image->url )"}" )'>
<a href='{$url}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $image->url )"}" )'>
<img src='{$image->url}' class='ipsHide' alt=''>
</a>
</div>
@@ -219,7 +228,7 @@
{$comment->truncated(TRUE)|raw}
</div>
{{if \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and count( $comment->reactions() ) and settings.reputation_enabled}}
{{if settings.reputation_enabled and \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and count( $comment->reactions() )}}
<ul class='ipsList_inline ipsSpacer_top ipsSpacer_half'>
<li>
{template="reactionOverview" app="core" group="global" params="$comment, TRUE, 'small'"}
@@ -240,20 +249,20 @@
{{endif}}]]></template>
<template template_group="global" template_name="embedRecordReview" template_data="$comment, $item, $url" template_location="front" template_app="cms"><![CDATA[
<div data-embedInfo-maxSize='500' class='ipsRichEmbed'>
{template="embedHeader" group="embed" app="core" params="$comment, \IPS\Member::loggedIn()->language()->addToStack( 'x_reviewed_cms_embed', FALSE, array( 'sprintf' => array( $comment->author()->name, $item->indefiniteArticle() ) ) ), $comment->mapped('date')"}
<div class='ipsPad'>
{template="embedHeader" group="embed" app="core" params="$comment, \IPS\Member::loggedIn()->language()->addToStack( 'x_reviewed_cms_embed', FALSE, array( 'sprintf' => array( $comment->author()->name, $item->indefiniteArticle() ) ) ), $comment->mapped('date'), $url"}
<div class='ipsPad_double'>
<div class='ipsRichEmbed_originalItem ipsAreaBackground_reset ipsSpacer_bottom ipsType_blendLinks'>
<div>
{{if $item->record_image}}
{{$image = \IPS\File::get( "cms_Records", $item->record_image );}}
{{elseif count( $item->contentImages() )}}
{{$attachType = key( $item->contentImages()[0] );}}
{{$image = \IPS\File::get( $attachType, $item->contentImages()[0][ $attachType ] );}}
{{elseif $contentImage = $item->contentImages(1)}}
{{$attachType = key( $contentImage[0] );}}
{{$image = \IPS\File::get( $attachType, $contentImage[0][ $attachType ] );}}
{{endif}}
{{if $image}}
<div class='ipsRichEmbed_masthead ipsRichEmbed_mastheadBg ipsType_center'>
<a href='{$item->url()}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $image->url )"}" )'>
<a href='{$url}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $image->url )"}" )'>
<img src='{$image->url}' class='ipsHide' alt=''>
</a>
</div>
@@ -273,7 +282,7 @@
{$comment->truncated(TRUE)|raw}
</div>
{{if \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and count( $comment->reactions() ) and settings.reputation_enabled}}
{{if settings.reputation_enabled and \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and count( $comment->reactions() )}}
<ul class='ipsList_inline ipsSpacer_top ipsSpacer_half'>
<li>
{template="reactionOverview" app="core" group="global" params="$comment, TRUE, 'small'"}
@@ -293,11 +302,11 @@
{{endif}}]]></template>
<template template_group="media" template_name="fileListing" template_data="$url, $item" template_location="admin" template_app="cms"><![CDATA[
{{if $item instanceof \IPS\cms\Media}}
<li class='ipsGrid_span4' data-role='mediaItem' data-fileid='{$item->id}' data-uploaded='{datetime="$item->added" dateonly="true"}' data-path='{$item->full_path}' data-filename='{$item->filename}' data-url='{$item->url()}' {{if $item->is_image}}data-isImage{{endif}}>
<li class='ipsGrid_span4' data-role='mediaItem' data-fileid='{$item->id}' data-uploaded='{datetime="$item->added" dateonly="true"}' data-path='{$item->full_path}' data-filename='{$item->filename}' data-url='{$item->url()}?_cb={expression="time()"}' data-fileType='{{if $item->is_image}}image{{else}}file{{endif}}'>
<div class='cMedia_item {{if $item->is_image}}cMedia_itemImage{{endif}}'>
<div class='ipsAreaBackground_light'>
{{if $item->is_image}}
<img src='{$item->url()}'>
<img src='{$item->url()}?_cb={expression="time()"}'>
{{else}}
<div class='ipsNoThumb'></div>
{{endif}}
@@ -358,6 +367,7 @@
<input type='text' class='ipsField_fullWidth' value='' data-role='itemTag'>
<p class='ipsType_small ipsType_light'>{lang="media_tag_desc"}</p>
</div>
<hr class='ipsHr'>
<ul class='ipsList_reset ipsSpacer_top'>
@@ -378,6 +388,12 @@
<p class='ipsType_reset ipsType_medium' data-role='itemDimensions'></p>
</li>
</ul>
<hr class='ipsHr'>
<div class='ipsSpacer_top'>
<a href='#' class='ipsType_medium' data-role='replaceFile' data-baseUrl="{url="app=cms&module=pages&controller=media&do=replace&id="}">{lang="replace_media_file"}</a>
</div>
</div>
<div data-role='multipleItems'>
<div class='ipsPad ipsType_large ipsType_light ipsType_center ipsSpacer_top ipsSpacer_double' data-role='multipleItemsMessage'></div>
@@ -389,7 +405,7 @@
<div class='cMedia_managerToolbar'>
<ul class='ipsToolList ipsToolList_horizontal'>
{{if $rootButtons['add_page']}}
<li class='ipsPos_left'><a href='{url="app=cms&module=pages&controller=media&do=upload"}' data-ipsDialog data-ipsDialog-forceReload data-ipsDialog-remoteSubmit data-ipsDialog-title='{lang="cms_add_media"}' class='ipsButton ipsButton_normal ipsButton_small ipsButton_fullWidth' data-role='uploadButton'><i class='fa fa-cloud-upload'></i> &nbsp;{lang="cms_add_media"}</a></li>
<li class='ipsPos_left'><a href='{url="app=cms&module=pages&controller=media&do=upload"}' data-ipsDialog data-ipsDialog-forceReload data-ipsDialog-remoteSubmit data-ipsDialog-title='{lang="cms_add_media"}' class='ipsButton ipsButton_primary ipsButton_small ipsButton_fullWidth' data-role='uploadButton'><i class='fa fa-cloud-upload'></i> &nbsp;{lang="cms_add_media"}</a></li>
{{endif}}
<li class='ipsPos_left ipsHide' data-action='deleteFolder'><a href='{url="app=cms&module=pages&controller=media&do=delete"}' data-ipsDialog data-ipsDialog-forceReload data-ipsDialog-remoteVerify="false" data-ipsDialog-title='{lang="delete"}' class='ipsButton ipsButton_negative ipsButton_small ipsButton_fullWidth'><i class='fa fa-times'></i> {lang="cms_delete_folder_media"}</a></li>
<li class='ipsPos_left ipsHide' data-action='deleteSelected'><a href='#' class='ipsButton ipsButton_negative ipsButton_small ipsButton_fullWidth'><i class='fa fa-times'></i> {lang="cms_delete_selected_media"}</a></li>
@@ -453,7 +469,7 @@
{{endforeach}}
{{if $uploadField}}
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
<input type="hidden" name="plupload" value="{expression="md5( uniqid() )"}">
<input type="hidden" name="plupload" value="{expression="md5( mt_rand() )"}">
{{endif}}
<div class='ipsComposeArea ipsComposeArea_withPhoto ipsClearfix ipsContained'>
<div class='ipsPos_left ipsResponsive_hidePhone ipsResponsive_block'>{template="userPhoto" app="core" group="global" params="\IPS\Member::loggedIn(), 'small'"}</div>
@@ -541,7 +557,7 @@
</span>
{{endif}}
{$title}]]></template>
<template template_group="records" template_name="youtube" template_data="$url, $params" template_location="global" template_app="cms"><![CDATA[<div class='ipsEmbeddedVideo {{if \IPS\Settings::i()->max_video_width > 0}}ipsEmbeddedVideo_limited{{endif}}' contenteditable="false"><div><iframe id="ytplayer" type="text/html" {{foreach $params as $k => $v }}{$k}="{$v}" {{endforeach}} src="$url"></iframe></div></div>]]></template>
<template template_group="records" template_name="youtube" template_data="$url, $params" template_location="global" template_app="cms"><![CDATA[<div class='ipsEmbeddedVideo' contenteditable="false"><div><iframe id="ytplayer" type="text/html" {{foreach $params as $k => $v }}{$k}="{$v}" {{endforeach}} src="$url"></iframe></div></div>]]></template>
<template template_group="revisions" template_name="rows" template_data="$table, $headers, $rows" template_location="front" template_app="cms"><![CDATA[{{foreach $rows as $row}}
<article class='ipsComment ipsComment_parent ipsClearfix ipsClear'>
<div class='ipsComment_header ipsPhotoPanel ipsPhotoPanel_mini ipsPhotoPanel_notPhone'>
@@ -572,7 +588,7 @@
<div class='ipsGrid_span6 ipsPad' data-current='{$key}'>{$diff['current']}</div>
</div>
{{else}}
<div class='ipsPagesDiff' data-key='{$key}' data-method='merge' id="{expression="md5(uniqid())"}"></div>
<div class='ipsPagesDiff' data-key='{$key}' data-method='merge'></div>
<textarea class='ipsHide' data-original='{$key}'>{$diff['original']}</textarea>
<textarea class='ipsHide' data-current='{$key}'>{$diff['current']}</textarea>
{{endif}}
@@ -659,7 +675,7 @@
<div class='ipsGrid_span6 ipsPad' data-current='{$key}'>{$data['current']}</div>
</div>
{{else}}
<div class='ipsPagesDiff' data-key='{$key}' data-method='merge' id="{expression="md5(uniqid())"}"></div>
<div class='ipsPagesDiff' data-key='{$key}' data-method='merge'></div>
<textarea class='ipsHide' data-original='{$key}'>{$data['original']}</textarea>
<textarea class='ipsHide' data-current='{$key}'>{$data['current']}</textarea>
{{endif}}
@@ -717,7 +733,7 @@
{{endforeach}}
{{if $uploadField}}
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
<input type="hidden" name="plupload" value="{expression="md5( uniqid() )"}">
<input type="hidden" name="plupload" value="{expression="md5( mt_rand() )"}">
{{endif}}
{{if $hasModOptions}}
@@ -1054,7 +1070,7 @@
{{foreach $items as $item}}
<li class='ipsDataItem'>
<div class='ipsDataItem_main'>
<div class='ipsType_break ipsContained'><a href="{$item['link']}" target="_blank" rel="noopener noreferrer" class='ipsTruncate ipsTruncate_line'>{$item['title']}</a></div>
<div class='ipsType_break ipsContained'><a href="{$item['link']}" target="_blank" rel="noopener" class='ipsTruncate ipsTruncate_line'>{$item['title']}</a></div>
<span class='ipsType_light ipsType_small'>{datetime="$item['date']"}</span>
</div>
</li>
@@ -1323,7 +1339,7 @@ html[dir="rtl"] .cMedia_manager > .ipsColumns > .ipsColumn_fluid .cMedia_manager
}]]></css>
<css css_location="front" css_app="cms" css_attributes="" css_path="pages" css_name="page.css">/* ----- */
.ipsWidget.ipsWidget_horizontal[data-blockid^=&quot;app_cms&quot;] {
.ipsWidget.ipsWidget_horizontal[data-blockid^=&quot;app_cms&quot;]:not([data-blockid^=&quot;app_cms_RecordFeed&quot;]) {
padding: 0px !important;
background: transparent;
border: none;