Version 5.0.0 beta 6

This commit is contained in:
Neo committed 2025-12-19 17:12:27 -08:00
1 parent 57d9db6ce2
commit fa2a720105
115 files changed
+1823 -1147

No files matched your search

File diff suppressed because it is too large. Load diff
+5 -4
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="core" version="5000031">
<app key="core" version="5000032">
<word key="__app_core" js="0">System</word>
<word key="__indefart_personal_conversation" js="0">a personal conversation</word>
<word key="__indefart_personal_conversation_message" js="0">a message in a personal conversation</word>
@@ -3500,6 +3500,7 @@
<word key="modperms__core_Reports" js="0">Reports</word>
<word key="can_view_reports" js="0">Can view reports?</word>
<word key="can_manage_sidebar" js="0">Can use Block Manager?</word>
<word key="can_use_theme_editor" js="0">Can use Theme Editor?</word>
<word key="can_moderator_be_ignored" js="0">Can be ignored?</word>
<word key="can_moderator_be_ignored_desc" js="0"><![CDATA[Additional to this moderator restriction, you can also disallow people to ignore members via a <a href='{internal.admin.app=core&module=members&controller=groups&searchResult=can_be_ignored}'>group setting.</a>]]></word>
<word key="add_moderator" js="0">Add Moderator</word>
@@ -7190,9 +7191,9 @@
<word key="profile_complete_no_add" js="0">All available profile completion steps have been used. To create new profile completion steps, please delete existing steps, or edit them to remove methods.</word>
<word key="acplog__quick_register_enabled" js="0">Quick registration enabled</word>
<word key="acplog__profile_step_added" js="0">Profile step added: %s</word>
<word key="enhancements__core_FacebookPixel" js="0">Facebook Pixel</word>
<word key="enhancements__core_FacebookPixel_desc" js="0">The Facebook pixel is used to report conversions, optimize advert delivery, build audiences and get rich insights about how people are using your website.</word>
<word key="fb_pixel_id_req" js="0">You need to enter your Facebook Pixe ID</word>
<word key="enhancements__core_FacebookPixel" js="0">Meta Pixel</word>
<word key="enhancements__core_FacebookPixel_desc" js="0">The Meta pixel is used to report conversions, optimize advert delivery, build audiences and get rich insights about how people are using your website.</word>
<word key="fb_pixel_id_req" js="0">You need to enter your Meta Pixel ID</word>
<word key="fb_pixel_id" js="0">Pixel ID</word>
<word key="fb_pixel_enabled" js="0">Enable</word>
<word key="fb_pixel_delay" js="0">Delay</word>
+12 -30
View File
@@ -24340,6 +24340,18 @@
"auto_increment": false,
"binary": false
},
"chart_favorite": {
"name": "chart_favorite",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
},
"chart_timescale": {
"name": "chart_timescale",
"type": "ENUM",
@@ -25898,36 +25910,6 @@
"zerofill": false,
"auto_increment": false,
"binary": false
},
"chart_favorite": {
"name": "chart_favorite",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
},
"chart_timescale": {
"name": "chart_timescale",
"type": "ENUM",
"length": null,
"decimals": null,
"values": [
"hourly",
"daily",
"weekly",
"monthly",
"none"
],
"allow_null": true,
"default": null,
"comment": "",
"unsigned": false,
"auto_increment": false
}
},
"indexes": {
+158 -168
View File
@@ -5763,7 +5763,7 @@
<li>
<a href='#' class='ipsButton ipsButton--soft ipsButton--small' data-ipsMenu id='elEditorAttach_media{expression="md5($name)"}'>{lang="editor_attach_other"} <i class='fa-solid fa-caret-down'></i></a>
<ul class='ipsMenu ipsMenu_auto ipsHide' id='elEditorAttach_media{expression="md5($name)"}_menu'>
<li class='ipsMenu_item'><a href='#' data-ipsDialog data-ipsDialog-fixed data-ipsDialog-forceReload data-ipsDialog-title='{lang="editor_insert_existing_file"}' data-ipsDialog-url="{url="app=core&module=system&controller=editor&do=myMedia&postKey={$editor}&editorId={$name}" csrf="1"}">{lang="editor_insert_existing_file"}</a></li>
<li class='ipsMenu_item'><a href='#' data-ipsDialog data-ipsDialog-fixed data-ipsDialog-forceReload data-ipsDialog-title='{lang="editor_insert_existing_file"}' data-ipsDialog-url="{url="app=core&module=system&controller=editor&do=myMedia&postKey={$editor}&editorId={$name}" csrf="1"}">{lang="editor_insert_existing_file"}</a>
</ul>
</li>
{{endif}}
@@ -6636,7 +6636,7 @@
{{if !\IPS\Request::i()->isAjax() }}</div>{{endif}}]]></template>
<template template_group="forms" template_name="postingInformation" template_data="$guestPostBeforeRegister, $modQueued, $standalone=false" template_location="front" template_app="core"><![CDATA[{{if !member.member_id}}
{{if !$standalone}}
<div class='cGuestTeaser'>
<div class='cGuestTeaser i-margin-bottom_3'>
<h2 class='ipsTitle ipsTitle--h3'>{lang="guest_post_header"}</h2>
{{endif}}
<p>
@@ -6651,7 +6651,6 @@
{{endif}}
</p>
{{if !$standalone}}
<hr class="ipsHr i-margin-block_3">
</div>
{{endif}}
{{elseif $modQueued}}
@@ -6889,37 +6888,37 @@
{{endforeach}}
</ul>
</form>]]></template>
<template template_group="forms" template_name="reviewTemplate" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class=''" template_location="front" template_app="core"><![CDATA[<div class='ipsComposeArea i-padding_3' {{if \IPS\Member::loggedIn()->member_id}}data-controller='core.front.core.reviewForm'{{endif}}>
<div class='ipsComposeArea__photo'>{template="userPhoto" group="global" app="core" params="\IPS\Member::loggedIn(), 'fluid'"}</div>
<div class='ipsComposeArea_editor'>
<form accept-charset='utf-8' class="ipsFormWrap ipsFormWrap--review" action="{$action->setQueryString( '_review', 1 )}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}}>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
<input type="hidden" name="{$k}" value="{$v}">
{{endforeach}}
{{if $uploadField}}
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
<input type="hidden" name="plupload" value="{expression="md5( mt_rand() )"}">
{{endif}}
{{if !isset( \IPS\Request::i()->_review ) and \IPS\Member::loggedIn()->member_id}}
<div data-role='reviewIntro'>
<h3 class="i-margin-bottom_2"><strong class="i-color_hard i-font-weight_600">{lang="review_intro_1" sprintf="\IPS\Member::loggedIn()->name"}</strong> <span class='i-color_soft i-font-weight_500'>{lang="review_intro_2"}</span></h3>
<a href='#' class='ipsButton ipsButton--primary ipsButton--small ipsJS_show' data-action='writeReview'><i class="fa-regular fa-pen-to-square"></i><span>{lang="write_a_review"}</span></a>
</div>
{{endif}}
<ul class='ipsForm ipsForm--vertical ipsForm--review {{if !isset( \IPS\Request::i()->_review ) and \IPS\Member::loggedIn()->member_id}}ipsJS_hide{{endif}}' data-role='reviewForm'>
{{foreach $elements as $collection}}
{{foreach $collection as $input}}
{$input|raw}
{{endforeach}}
<template template_group="forms" template_name="reviewTemplate" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class=''" template_location="front" template_app="core"><![CDATA[<div class="ipsComposeAreaWrapper">
<div class='ipsComposeArea ipsComposeArea--review' {{if \IPS\Member::loggedIn()->member_id}}data-controller='core.front.core.reviewForm'{{endif}}>
<div class='ipsComposeArea__photo'>{template="userPhoto" group="global" app="core" params="\IPS\Member::loggedIn(), 'fluid'"}</div>
<div class='ipsComposeArea_editor'>
<form accept-charset='utf-8' class="ipsFormWrap ipsFormWrap--review" action="{$action->setQueryString( '_review', 1 )}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}}>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
<input type="hidden" name="{$k}" value="{$v}">
{{endforeach}}
<li class='ipsFieldRow'>
<div class='ipsFieldRow__content'>
<button type='submit' class='ipsButton ipsButton--primary'>{lang="add_review"}</button>
{{if $uploadField}}
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
<input type="hidden" name="plupload" value="{expression="md5( mt_rand() )"}">
{{endif}}
{{if !isset( \IPS\Request::i()->_review ) and \IPS\Member::loggedIn()->member_id}}
<div data-role='reviewIntro'>
<h3 class="i-margin-bottom_2"><strong class="i-color_hard i-font-weight_600">{lang="review_intro_1" sprintf="\IPS\Member::loggedIn()->name"}</strong> <span class='i-color_soft i-font-weight_500'>{lang="review_intro_2"}</span></h3>
<button type="button" class='ipsButton ipsButton--primary ipsButton--small' data-action='writeReview'><i class="fa-regular fa-pen-to-square"></i><span>{lang="write_a_review"}</span></button>
</div>
</li>
</ul>
</form>
{{endif}}
<ul class='ipsForm ipsForm--vertical ipsForm--review' data-role='reviewForm' {{if !isset( \IPS\Request::i()->_review ) and \IPS\Member::loggedIn()->member_id}}hidden{{endif}}>
{{foreach $elements as $collection}}
{{foreach $collection as $input}}
{$input|raw}
{{endforeach}}
{{endforeach}}
<li class='ipsSubmitRow'>
<button type='submit' class='ipsButton ipsButton--primary'>{lang="add_review"}</button>
</li>
</ul>
</form>
</div>
</div>
</div>]]></template>
<template template_group="forms" template_name="reviewUnavailable" template_data="$lang, $warnings=array(), $ends=NULL" template_location="front" template_app="core"><![CDATA[
@@ -6970,8 +6969,7 @@
{$desc|raw}
{$warning|raw}
{{if $error}}
<br>
<span class="i-color_warning">{lang="$error"}</span>
<div class="ipsFieldRow__warning">{lang="$error"}</div>
{{endif}}
</div>
{{else}}
@@ -6987,8 +6985,7 @@
{$desc|raw}
{$warning|raw}
{{if $error}}
<br>
<span class="i-color_warning">{lang="$error"}</span>
<div class="ipsFieldRow__warning">{lang="$error"}</div>
{{endif}}
</div>
{{endif}}
@@ -7786,7 +7783,7 @@
<li class='ipsData__item'>
<div class='ipsData__main'>
<div class='i-flex i-align-items_center i-justify-content_space-between'>
<a href='{$item->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $day['commentId'] ) )}' class='i-font-weight_600'>{datetime="$day['date']"}</a>
<a href='{$item->shareableUrl( $day['commentId'] )}' class='i-font-weight_600'>{datetime="$day['date']"}</a>
<span class='i-color_soft'>{lang="num_comments" pluralize="$day['count']"}</span>
</div>
</div>
@@ -9380,40 +9377,42 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
{{endif}}]]></template>
<template template_group="global" template_name="featuredComment" template_data="$comment, $id, $commentLang='__defart_comment'" template_location="front" template_app="core"><![CDATA[{{if isset( $comment['comment'] )}}
{{$idField = $comment['comment']::$databaseColumnId;}}
<div class='i-padding_3 ipsEntry ipsEntry--recommended' data-commentID='{$id}'>
<div class='ipsColumns i-gap_3'>
<div class='ipsColumns__primary'>
<div class="ipsPhotoPanel i-margin-bottom_2">
<div class='ipsEntry ipsEntry--simple ipsEntry--featuredComment' data-commentID='{$id}'>
<header class="ipsEntry__header">
<div class="ipsEntry__header-align">
<div class="ipsPhotoPanel">
{template="userPhoto" app="core" group="global" params="$comment['comment']->author(), 'fluid', $comment['comment']->warningRef()"}
<div class="ipsPhotoPanel__text">
<div class="ipsPhotoPanel__primary">{template="userLink" app="core" group="global" params="$comment['comment']->author(), $comment['comment']->warningRef()"}</div>
<div class="ipsPhotoPanel__secondary"><a href="{$comment['comment']->url()}" title='{lang="go_to_this_comment" sprintf="\IPS\Member::loggedIn()->language()->get( $commentLang )"}' rel="nofollow" data-action='goToComment'>{$comment['comment']->dateLine()|raw}</a></div>
</div>
</div>
<div class='ipsRichText ipsTruncate_2'>{$comment['comment']->truncated( TRUE )|raw}</div>
{{if $comment['note']}}
<div class='ipsEntry__recommendedNote'>
<p class='ipsRichText'>{$comment['note']}</p>
{{if isset( $comment['featured_by'] )}}
<p class='i-color_soft i-margin-top_2 i-link-color_inherit'>{lang="recommended_by" htmlsprintf="$comment['featured_by']->link()"}</p>
{{endif}}
</div>
{{elseif isset( $comment['featured_by'] )}}
{lang="recommended_by" htmlsprintf="$comment['featured_by']->link()"}
{{endif}}
</div>
<div class='i-basis_auto i-align-self_center'>
{{if \IPS\IPS::classUsesTrait( $comment['comment'], 'IPS\Content\Reactable' ) and settings.reputation_enabled}}
</header>
<div class='ipsEntry__post'>
<div class='ipsRichText ipsTruncate_2'>{$comment['comment']->truncated( TRUE )|raw}</div>
{{if \IPS\IPS::classUsesTrait( $comment['comment'], 'IPS\Content\Reactable' ) and settings.reputation_enabled}}
<div class='i-margin-top_2 i-flex'>
{template="reactionOverview" group="global" app="core" params="$comment['comment']"}
{{endif}}
</div>
</div>
{{endif}}
{{if $comment['note']}}
<div class='ipsEntry__recommendedNote'>
<p>{$comment['note']}</p>
{{if isset( $comment['featured_by'] )}}
<p class='i-font-style_italic i-color_soft i-margin-top_1 i-link-color_inherit'>{lang="recommended_by" htmlsprintf="$comment['featured_by']->link()"}</p>
{{endif}}
</div>
{{elseif isset( $comment['featured_by'] )}}
{lang="recommended_by" htmlsprintf="$comment['featured_by']->link()"}
{{endif}}
</div>
</div>
{{endif}}]]></template>
<template template_group="global" template_name="featuredComments" template_data="$comments, $url, $titleLang='recommended_replies', $commentLang='__defart_comment'" template_location="front" template_app="core"><![CDATA[
<section data-controller='core.front.core.recommendedComments' data-url='{$url}' class='ipsBox ipsRecommendedComments {{if !\count( $comments )}}ipsHide{{endif}}'>
<template template_group="global" template_name="featuredComments" template_data="$comments, $url, $titleLang='recommended_replies', $commentLang='__defart_comment', $ipsBox=true" template_location="front" template_app="core"><![CDATA[
<section data-controller='core.front.core.recommendedComments' data-url='{$url}' class='{{if $ipsBox}}ipsBox ipsBox--featuredComments{{endif}} ipsRecommendedComments {{if !\count( $comments )}}ipsHide{{endif}}'>
<div data-role="recommendedComments">
<header class='ipsBox__header'>
<header class='{{if $ipsBox}}ipsBox__header{{else}}ipsTitle ipsTitle--h5 i-padding_2 i-flex i-align-items_center i-justify-content_space-between{{endif}}'>
<h2>{lang="$titleLang"}</h2>
{template="carouselNavigation" group="global" app="core" params="'topic-featured-posts'"}
</header>
@@ -9879,6 +9878,7 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
{template="favico" app="core" group="global" location="front" params=""}
</head>
<body data-ips-hook="body" class='ipsApp ipsApp_front {{foreach output.bodyClasses as $class}} {$class}{{endforeach}}' {{if output.globalControllers}}data-controller='{expression="implode( ',', output.globalControllers )"}'{{endif}} {{if isset( output.inlineMessage )}}data-message="{expression="output.inlineMessage"}"{{endif}} data-pageApp='{$location['app']}' data-pageLocation='front' data-pageModule='{$location['module']}' data-pageController='{$location['controller']}' {{if isset( \IPS\Request::i()->id )}}data-pageID='{expression="(int) \IPS\Request::i()->id"}'{{endif}} {{if isset( \IPS\Dispatcher::i()->dispatcherController ) AND !\IPS\Dispatcher::i()->dispatcherController->isContentPage }}data-nocontent{{endif}} {{if output.pageName}}data-pageName="{expression="output.pageName"}"{{endif}}>
<a href='#ipsLayout__main' class='ipsSkipToContent'>{lang="jump_to_content"}</a>
{theme="headerHtml"}
{{if settings.googletag_enabled AND !(settings.core_datalayer_use_gtm AND settings.core_datalayer_enabled)}}
{setting="googletag_noscript_code"}
@@ -9894,7 +9894,6 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
{{endif}}
<div class='ipsLayout__app'>
{template="announcementTop" app="core" group="global" params=""}
<a href='#ipsLayout_main' class='ipsSkipToContent'>{lang="jump_to_content"}</a>
<div data-ips-hook="mobileHeader" class='ipsMobileHeader ipsResponsive_header--mobile'>
{template="logo" app="core" group="global" params="'mobile'"}
{template="mobileNavHeader" app="core" group="global" params=""}
@@ -10067,42 +10066,32 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
<div>
<input type="hidden" name="csrfKey" value="{expression="\IPS\Session::i()->csrfKey"}">
{{if \IPS\Login::registrationType() != 'disabled'}}
<div class='i-text-align_center i-padding_3 cGuestTeaser'>
<div class='i-text-align_center cGuestTeaser'>
{{if $isReview}}
<h2 class='ipsTitle ipsTitle--h3'>{lang="teaser_review_title_reg"}</h2>
<p class='i-color_soft i-margin-top_2'>{lang="teaser_review_desc_reg"}</p>
<h2 class='ipsTitle ipsTitle--h4'>{lang="teaser_review_title_reg"}</h2>
{{else}}
<h2 class='ipsTitle ipsTitle--h3'>{lang="teaser_title_reg"}</h2>
<p class='i-color_soft i-margin-top_2'>{lang="teaser_desc_reg"}</p>
<h2 class='ipsTitle ipsTitle--h4'>{lang="teaser_title_reg"}</h2>
{{endif}}
<div class='ipsBox i-padding_3 i-margin-top_3'>
<div class='ipsFluid i-basis_400'>
<div class='cGuestTeaser_left'>
<h2 class='ipsTitle ipsTitle--h3'>{lang="teaser_account"}</h2>
<p class='i-color_soft i-margin-bottom_3'>{lang="teaser_account_desc"}</p>
{{if \IPS\Login::registrationType() == 'redirect'}}
<a href='{expression="\IPS\Settings::i()->allow_reg_target"}' class='ipsButton ipsButton--primary ipsButton--small' target="_blank" rel="noopener">
{{else}}
<a href='{url="app=core&module=system&controller=register" seoTemplate="register"}' class='ipsButton ipsButton--primary ipsButton--small' {{if \IPS\Login::registrationType() == 'normal'}}data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="sign_up"}'{{endif}}>
{{endif}}
{lang="teaser_account_button"}</a>
</div>
<div class='cGuestTeaser_right'>
<h2 class='ipsTitle ipsTitle--h3'>{lang="teaser_signin"}</h2>
<p class='i-color_soft i-margin-bottom_3'>{lang="teaser_signin_desc"}</p>
<a href='{url="app=core&module=system&controller=login" seoTemplate="login" ref="(string) $item->url() . '#replyForm'"}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-remoteVerify="false" data-ipsDialog-title="{lang="teaser_signin_button"}" class='ipsButton ipsButton--primary ipsButton--small'>{lang="teaser_signin_button"}</a>
</div>
<div class='ipsFluid i-basis_260 i-margin-top_3'>
<div>
{{if \IPS\Login::registrationType() == 'redirect'}}
<a href='{expression="\IPS\Settings::i()->allow_reg_target"}' class='ipsButton ipsButton--primary ipsButton--wide' target="_blank" rel="noopener">
{{else}}
<a href='{url="app=core&module=system&controller=register" seoTemplate="register"}' class='ipsButton ipsButton--primary ipsButton--wide' {{if \IPS\Login::registrationType() == 'normal'}}data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="sign_up"}'{{endif}}>
{{endif}}
{lang="teaser_account_button"}</a>
</div>
<div>
<a href='{url="app=core&module=system&controller=login" seoTemplate="login" ref="(string) $item->url() . '#replyForm'"}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-remoteVerify="false" data-ipsDialog-title="{lang="teaser_signin_button"}" class='ipsButton ipsButton--secondary ipsButton--wide'>{lang="teaser_signin_button"}</a>
</div>
</div>
</div>
{{else}}
<div class='i-text-align_center i-padding_3'>
<h2 class='ipsTitle ipsTitle--h3'>{lang="teaser_title_noreg"}</h2>
<p class='i-color_soft i-margin-top_2'>{lang="teaser_desc_noreg"}</p>
<br>
<br>
<a href='{url="app=core&module=system&controller=login" seoTemplate="login" ref="(string) $item->url() . '#replyForm'"}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-remoteVerify="false" data-ipsDialog-title="{lang="teaser_signin_button"}" class='ipsButton ipsButton--secondary'>{lang="teaser_signin_button"}</a>
<div class='i-text-align_center'>
<h2 class='ipsTitle ipsTitle--h4'>{lang="teaser_title_noreg"}</h2>
<p class='i-color_soft i-margin-top_1'>{lang="teaser_desc_noreg"}</p>
<a href='{url="app=core&module=system&controller=login" seoTemplate="login" ref="(string) $item->url() . '#replyForm'"}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-remoteVerify="false" data-ipsDialog-title="{lang="teaser_signin_button"}" class='ipsButton ipsButton--primary i-margin-top_3'>{lang="teaser_signin_button"}</a>
</div>
{{endif}}
</div>]]></template>
@@ -13577,7 +13566,9 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
{{endif}}
{{endforeach}}
{{endif}}
{{if \count( $tags ) > 4}}
{{if \count( $tags ) == 5}}
{template="tag" group="global" app="core" params="$tags[4], $tagEditUrl"}
{{elseif \count( $tags ) > 4}}
<li class='ipsTags__more ipsJS_show'>
<a href="#" class='ipsTags__tag' data-ipsMenu id='elTags_{$id}'>{lang="and_x_more" pluralize="\count( $tags ) - 4"} <i class="fa-solid fa-angle-down"></i></a>
<div class='ipsHide ipsMenu ipsMenu_normal i-padding_2 cTagPopup' id='elTags_{$id}_menu'>
@@ -31005,11 +30996,6 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
}
/* Guest Sign In */
.cGuestTeaser .ipsButton.ipsButton--primary {
width: 100%;
max-width: 350px;
}
.cGuestTeaser_social {
width: 250px;
margin-bottom: 5px;
@@ -31170,14 +31156,6 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
margin: 0 auto;
}
html[dir] .cGuestTeaser_left {
border-left: 0;
border-right: 0;
border-bottom: 2px solid var(--i-background_2);
margin-bottom: 15px;
padding-bottom: 15px;
}
/* Reset guest teaser on mobile back to normal layout from tablet flex layout */
.cGuestTeaser .ipsGrid {
display: block !important;
@@ -31321,7 +31299,6 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
box-shadow: none;
background: none;
border-radius: 0;
outline: max(var(--i-widget--bo-wi), 1px) solid var(--i-widget--bo-co);
}
.cWidgetContainer--carousel::-webkit-scrollbar {
@@ -37870,13 +37847,12 @@ a:has(.ipsBadge){
min-height: max(34px,2em);
min-width: max(34px,2.5em);
border-radius: min(var(--i-design-radius), 6px);
color: var(--i-co);
touch-action: manipulation;
}
@media (any-hover:hover){
.ipsCarouselNav__button:hover{
background: color-mix(in srgb, var(--i-co) 4%, transparent);
background: color-mix(in srgb, currentColor 4%, transparent);
}
}
@@ -37991,7 +37967,7 @@ a:has(.ipsBadge){
.ipsComposeArea{
display: flex;
gap: 1.3em;
gap: 1.2em;
}
.ipsComposeArea__photo{
@@ -40666,7 +40642,7 @@ i-data{
.ipsData--mini-grid .ipsData__item{
border-width: 0;
outline: var(--i-data--border) solid var(--i-background_3);
outline: var(--i-data--border) solid var(--i-data--bo-co);
}
.ipsData--mini-grid .ipsData__title{
@@ -42845,7 +42821,7 @@ a.ipsReact_reaction::after {
}
.ipsEntry__header .ipsPhotoPanel{
flex: 999 1 1%; /* 1% is needed to prevent unintended wrapping on small screens */
flex: 999 1 10%; /* 10% is needed to prevent unintended wrapping on small screens */
}
.ipsEntry__header .ipsPhotoPanel__secondary{
@@ -43389,6 +43365,13 @@ hr.ipsUnreadBar{
height: 6px;
}
/* Recommended note */
.ipsEntry__recommendedNote{
background: var(--i-background_2);
border-radius: 6px;
margin-top: 1em;
padding: 1em;
}
/* Truncate posts if using the compact style and are viewing pages beyond 1 */
.ipsEntry__truncate:not([data-truncate-expanded]){
@@ -43616,7 +43599,22 @@ hr.ipsUnreadBar{
}
}
/* Adjust the padding of the review form, since the parent wrapper already has padding */
.ipsForm--review > .ipsFieldRow:first-child{
padding-top: 0;
}
.ipsForm--review .ipsFieldRow{
border-width: 0;
padding-left: 0;
padding-right: 0;
}
.ipsForm--review .ipsSubmitRow{
padding-bottom: 0;
border-width: 0;
background: transparent;
}
@@ -50189,6 +50187,8 @@ li.L9 {
.ipsRating {
display: inline-flex;
flex-wrap: wrap;
gap: 0 1.5em;
color: var(--i-color_soft);
}
@@ -51549,8 +51549,8 @@ details.ipsQuote > .ipsQuote_contents{
}
/* Hide tabs if < 2 tabs exists */
.ipsTabs:not(:has([role="tab"]:nth-child(2))){
/* display: none; */
.ipsTabs:has([role="tablist"] > :only-child){
display: none;
}
.ipsTabs--sticky{
@@ -52079,10 +52079,6 @@ details.ipsQuote > .ipsQuote_contents{
mask-image: linear-gradient(to top, hsl(0 0% 0% / 0) 1.4em, hsl(0 0% 0% / 1) 50%);
}
:where(.tiptap .ipsQuote_contents, [data-ipstruncate])[data-truncated=&quot;true&quot;]:not([data-truncate-expanded]) {
overflow: auto;
}
/* This selector needs html due to :is(.ipsRichText, .ipsRichText) * */
html .ipsTruncate_more{
-webkit-appearance: none;
@@ -52368,14 +52364,38 @@ html .ipsTruncate_more{
padding: 1.5em 0;
--i-footer-widgets: 320px;
--i-color_root: var(--i-footer--co);
--i-color_hard: var(--i-footer--co);
--i-color_soft: color-mix(in srgb, var(--i-footer--co) 70%, var(--i-footer--ba-co));
--i-data--bo-co: color-mix(in srgb, var(--i-footer--co) 20%, var(--i-footer--ba-co));
}
.ipsFooter__footer a{
@supports (color: oklch(from var(--i) clamp(0, (.7 - l) * 1000, 1) c h)) and (color: oklch(from red l c h)){
.ipsFooter{
--i-color_hard: oklch(from var(--i-footer--ba-co) clamp(0, (.7 - l) * 1000, 1) c h);
}
}
.ipsFooter a{
color: inherit;
}
/* Adjust colors of elements so they match the footer background/color */
.ipsFooter .ipsList--border > li{
outline-color: var(--i-data--bo-co);
}
.ipsFooter .cSidebarBlock_managing .ipsButton--inherit,
.ipsFooter .ipsData--grid .ipsData__image,
.ipsFooter .ipsData__image > i{
background-color: var(--i-footer--ba-co);
}
.ipsFooter .ipsContainerTitle{
color: inherit;
}
.ipsFooter__widgets{
margin-bottom: 1.5em;
margin-bottom: 2em;
}
/* Hide footer widgets if they're empty */
@@ -52383,60 +52403,25 @@ html .ipsTruncate_more{
display: none;
}
.ipsFooter__widgets .cWidgetContainer > ul{
display: grid;
grid-auto-flow: column;
grid-auto-columns: minmax(min(var(--i-footer-widgets), 75vw), 1fr);
gap: 5em;
/* Remove all widget styles for the widget footer */
.ipsFooter__widgets .ipsWidget,
.ipsFooter__widgets .ipsWidget__header,
.ipsFooter__widgets .cWidgetContainer--carousel{
box-shadow: none;
background: color-mix(in srgb, var(--i-footer--co) 5%, var(--i-footer--ba-co));
color: inherit;
border-width: 0;
}
.ipsFooter__widgets .cWidgetContainer > ul > li{
padding: 2em 0;
scroll-snap-align: start;
}
/* Remove all widget styles for the widget footer */
.ipsFooter__widgets :is(.ipsWidget, .ipsWidget__header){
all: unset;
}
.ipsFooter__widgets .ipsWidget *{
color: inherit;
}
.ipsFooter__widgets .ipsWidget__header {
display: block;
font-weight: bold;
padding: 1em;
}
.ipsFooter__widgets .ipsData__item{
border-color: color-mix(in srgb, var(--i-co) 10%, transparent);
}
.ipsFooter__widgets :is(.ipsData__meta, .ipsPhotoPanel__secondary, .ipsData__stats){
--i-co: inherit;
color: color-mix(in srgb, var(--i-co) 50%, transparent);
}
.ipsFooter .cSidebarManager_placeholder{
height: auto;
}
/* Move into carousel on mobiles */
@media (max-width: 979px){
.ipsFooter__widgets .cWidgetContainer > ul{
gap: 2em;
margin-left: calc(var(--i-layout-gutter) * -1);
margin-right: calc(var(--i-layout-gutter) * -1);
overflow-x: scroll;
overscroll-behavior-x: contain;
scroll-behavior: smooth;
scroll-snap-type: x mandatory;
padding-inline: 2em;
scroll-padding-inline: 2em;
.ipsFooter__widgets .ipsWidget__header,
.ipsFooter__widgets .cWidgetContainer__carousel-buttons {
background: color-mix(in srgb, var(--i-footer--co) 10%, var(--i-footer--ba-co));
border-width: 0;
}
.ipsFooter .cSidebarManager_placeholder{
height: auto;
}
}
.ipsFooter__footer{
font-size: .9em;
@@ -53310,6 +53295,7 @@ i-navigation-menu{
.ipsLayout__main{
flex: 1 1 auto;
padding-top: var(--i-sp_block);
outline-width: 0;
}
@media (max-width: 979px){
@@ -53405,7 +53391,7 @@ i-navigation-menu{
display: block !important;
}
#elContextualTools{
#elContextualTools, [data-role="sidebarAd"]{
margin-bottom: var(--i-sp_block);
}
#elContextualTools,
@@ -55154,6 +55140,10 @@ a.i-link-color_inherit,
----------------
*/
.i-font-style_italic{
font-style: italic;
}
.i-text-transform_uppercase{
text-transform: uppercase;
}
+2 -1
View File
@@ -280,5 +280,6 @@
"5000028": "5.0.0 Beta 2",
"5000029": "5.0.0 Beta 3",
"5000030": "5.0.0 Beta 4",
"5000031": "5.0.0 Beta 5"
"5000031": "5.0.0 Beta 5",
"5000032": "5.0.0 Beta 6"
}
@@ -15,6 +15,7 @@ namespace IPS\core\extensions\core\MemberACPProfileBlocks;
use IPS\core\MemberACPProfile\TabbedBlock;
use IPS\core\ProfileFields\Field;
use IPS\Db;
use IPS\File;
use IPS\Helpers\Form;
use IPS\Helpers\Form\Custom;
use IPS\Helpers\Form\Editor;
@@ -211,22 +212,28 @@ class ProfileData extends TabbedBlock
Db::i()->replace( 'core_pfields_content', $profileFields );
/* Profile Preferences */
if ( $values['bday'] )
if( Settings::i()->profile_birthday_type !== 'none' )
{
$this->member->bday_day = $values['bday']['day'];
$this->member->bday_month = $values['bday']['month'];
$this->member->bday_year = $values['bday']['year'];
}
else
{
$this->member->bday_day = NULL;
$this->member->bday_month = NULL;
$this->member->bday_year = NULL;
if ( $values['bday'] )
{
$this->member->bday_day = $values['bday']['day'];
$this->member->bday_month = $values['bday']['month'];
$this->member->bday_year = $values['bday']['year'];
}
else
{
$this->member->bday_day = NULL;
$this->member->bday_month = NULL;
$this->member->bday_year = NULL;
}
}
if ( Settings::i()->signatures_enabled )
{
$this->member->signature = $values['signature'];
File::claimAttachments( 'sig-' . $this->member->member_id, $this->member->member_id );
}
$this->member->save();
/* Log and Redirect */
@@ -55,6 +55,7 @@ class General extends ModeratorPermissionsAbstract
}
$return['can_manage_sidebar'] = 'YesNo';
$return['can_use_theme_editor'] = 'YesNo';
$return['can_use_ip_tools'] = 'YesNo';
return $return;
@@ -224,7 +224,7 @@ class menu extends Controller
'title' => 'delete',
'link' => Url::internal( "app=core&module=applications&controller=menu&do=remove&id={$item['id']}" )->csrf(),
'icon' => 'times-circle',
'data' => [ 'confirm' => '' ]
'data' => ['delete' => ''],
];
$icon = null;
@@ -389,10 +389,16 @@ class emoticons extends Controller
{
try
{
File::get( 'core_Emoticons', $emoticon['image'] )->delete();
File::get( 'core_Emoticons', $emoticon['image_2x'] )->delete();
if( $emoticon['image'] )
{
File::get( 'core_Emoticons', $emoticon['image'] )->delete();
}
if( $emoticon['image_2x'] )
{
File::get( 'core_Emoticons', $emoticon['image_2x'] )->delete();
}
}
catch ( UnderflowException $e ) { }
catch ( OutOfRangeException $e ) { }
}
Db::i()->delete( 'core_emoticons', array( 'emo_set=?', $set ) );
@@ -769,7 +769,7 @@ class advertisements extends Controller
/* Any additional settings to save? */
$additionalSettings = array(
'ad_apps' => ( isset( $values['ad_apps'] ) AND $values['ad_apps'] != 0 ) ? array_keys( $values['ad_apps'] ) : 0
'ad_apps' => ( isset( $values['ad_apps'] ) AND is_array( $values['ad_apps'] ) ) ? array_keys( $values['ad_apps'] ) : 0
);
if( $values['ad_type'] == Advertisement::AD_EMAIL )
@@ -238,7 +238,7 @@ class seo extends Controller
$value = $values['use_robotstxt_custom_editor'];
}
$form->saveAsSettings( [ 'robots_txt' => $value ] );
$form->saveAsSettings( [ 'robots_txt' => $value, 'seo_reduce_links' => $values['seo_reduce_links'] ] );
Session::i()->log( 'acplog__robotstxt_edited' );
@@ -151,7 +151,7 @@ class membersactivity extends Controller
/* And now build the table */
$table = new Db( 'core_members', Request::i()->url()->setQueryString( array( 'postDateStart' => $startTime, 'postDateEnd' => $endTime, 'postGroups' => is_array( $groups ) ? implode( ',', $groups ) : NULL ) ), $where );
$table->include = array( 'name', 'email', 'member_posts', 'member_last_post', 'group_name', 'ip_address' );
$table->include = array( 'name', 'email', 'member_last_post', 'group_name', 'ip_address' );
$table->mainColumn = 'name';
$table->langPrefix = 'activity_';
$table->rowClasses = array( 'email' => array( 'ipsTable_wrap' ), 'group_name' => array( 'ipsTable_wrap' ) );
@@ -11,11 +11,13 @@
namespace IPS\core\modules\front\discover;
use IPS\Content;
use IPS\Content\Comment;
use IPS\Content\Filter;
use IPS\Content\Item;
use IPS\Content\Search\ContentFilter;
use IPS\Content\Search\Query;
use IPS\Content\Search\Result\Content as SearchResultContent;
use IPS\Content\Tag as SystemTag;
use IPS\Content\Taggable;
use IPS\DateTime;
use IPS\Db;
use IPS\Helpers\CoverPhoto;
@@ -24,11 +26,9 @@ use IPS\Helpers\Form;
use IPS\Helpers\Form\Date;
use IPS\Helpers\Form\Upload;
use IPS\Helpers\Table\Content as TableContent;
use IPS\IPS;
use IPS\Member;
use IPS\Output;
use IPS\Request;
use IPS\Settings;
use IPS\Theme;
use OutOfRangeException;
use function count;
@@ -176,48 +176,53 @@ class tag extends Controller
{
$contentTypes = SystemTag::getTaggableContentTypes();
$pinnedItems = $this->tag->getPinnedItems();
$items = [];
foreach( Db::i()->select( '*', [ 'core_tags', 't' ], [
[ 't.tag_text=?', $this->tag->text ],
[ 'p.tag_perm_visible=?', 1 ],
[ '(p.tag_perm_text=? or ' . Db::i()->findInSet( 'p.tag_perm_text', Member::loggedIn()->groups ) . ')', '*' ]
], 't.tag_added desc', 50 )
->join( [ 'core_tags_perms', 'p' ], 't.tag_aai_lookup=p.tag_perm_aai_lookup and t.tag_aap_lookup=p.tag_perm_aap_lookup' ) as $row )
$filters = [];
foreach( $contentTypes as $type )
{
if( count( $items ) >= Settings::i()->tags_landing_limit )
$filters[] = ContentFilter::init( $type );
}
$query = Query::init();
$query->setLimit( 50 );
$query->filterByContent( $filters );
$query->setOrder( Query::ORDER_NEWEST_CREATED );
$items = [];
foreach( $query->search( null, [ $this->tag->text ], Query::TAGS_MATCH_ITEMS_ONLY ) as $result )
{
/* @var SearchResultContent $result */
$pinned = false;
$result = $result->asArray();
/* If the result is a pinned item, then don't show it in the regular list */
if( is_array( $pinnedItems ) )
{
break;
foreach( $pinnedItems as $pinnedItem )
{
$pinnedItemIdColumn = $pinnedItem::$databaseColumnId;
if( get_class( $pinnedItem ) == $result['indexData']['index_class'] and $pinnedItem->$pinnedItemIdColumn == $result['indexData']['index_object_id'] )
{
$pinned = true;
break;
}
}
}
foreach( $contentTypes as $k => $itemClass )
if( !$pinned )
{
if( $itemClass::$application == $row['tag_meta_app'] and $itemClass::$module == $row['tag_meta_area'] )
try
{
try
$itemClass = $result['indexData']['index_class'];
$id = $result['indexData']['index_object_id'];
if( is_subclass_of( $itemClass, Comment::class ) )
{
$item = $itemClass::load( $row['tag_meta_id'] );
$idColumn = $itemClass::$databaseColumnId;
$pinned = false;
if( is_array( $pinnedItems ) )
{
foreach( $pinnedItems as $pinnedItem )
{
if( get_class( $pinnedItem ) == $itemClass and $pinnedItem->$idColumn == $item->$idColumn )
{
$pinned = true;
break;
}
}
}
if( !$pinned )
{
$items[] = $item;
}
$itemClass = $itemClass::$itemClass;
$id = $result['indexData']['index_item_id'];
}
catch( OutOfRangeException ){}
break;
$items[] = $itemClass::load( $id );
}
catch( OutOfRangeException ){}
}
}
@@ -135,7 +135,7 @@ class register extends Controller
{
Output::i()->redirect( Url::internal( 'app=nexus&module=store&controller=store&do=register', 'front', 'store' ) );
}
else if ( Member::loggedIn()->canAccessModule( Module::get( 'nexus', 'subscriptions' ) ) and ( Settings::i()->nexus_subs_register ) )
else if ( Member::loggedIn()->canAccessModule( Module::get( 'nexus', 'subscriptions' ) ) and Settings::i()->nexus_subs_enabled and Settings::i()->nexus_subs_register )
{
Output::i()->redirect( Url::internal( 'app=nexus&module=subscriptions&controller=subscriptions&register=1', 'front', 'nexus_subscriptions' ) );
}
@@ -56,7 +56,7 @@ class themeeditor extends Controller
*/
public function manage(): void
{
if ( ! Member::loggedIn()->isAdmin() ) /* @todo add perm checks in Admin CP */
if( !Member::loggedIn()->modPermission( 'can_use_theme_editor' ) )
{
Output::i()->error( 'no_permission', '2S164/1', 403, '' );
}
@@ -36,7 +36,7 @@ class Upgrade
*/
public function finish()
{
Task::queue( 'core', 'BuildTimeToRank', NULL, 3 );
Task::queue( 'core', 'BuildTimeToRank', [], 3 );
return TRUE;
}
}
@@ -35,7 +35,7 @@ class Upgrade
*/
public function finish()
{
Task::queue( 'core', 'RebuildReportIndexData', NULL, 3 );
Task::queue( 'core', 'RebuildReportIndexData', [], 3 );
return TRUE;
}
@@ -11,6 +11,7 @@
namespace IPS\core\setup\upg_5000015;
use IPS\Application;
use IPS\core\FrontNavigation;
use IPS\Db;
use IPS\Data\Store;
@@ -18,6 +19,7 @@ use IPS\Lang;
use IPS\Member;
use OutOfRangeException;
use function defined;
use function in_array;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
@@ -60,7 +62,7 @@ class Upgrade
/* Create the language string */
$class = 'IPS\\' . $root['app'] . '\extensions\core\FrontNavigation\\' . $root['extension'];
if( class_exists( $class ) )
if( in_array( $root['app'], array_keys( Application::enabledApplications() ) ) and class_exists( $class ) )
{
/* @var FrontNavigation\FrontNavigationAbstract $class */
$obj = new $class( json_decode( (string) $root['config'], true ), $root['id'], $root['permissions'], $root['menu_types'], json_decode( (string) $root['icon'], true ), $root['parent'] );
@@ -0,0 +1,22 @@
{
"id": 5000032,
"name": "5.0.0 Beta 6",
"steps": {
"queries": false,
"lang": true,
"theme": true,
"themeeditor": true,
"javascript": true,
"emailTemplates": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": true,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,16 @@
{
"files": {
"added": [],
"edited": [
"core\/front\/controllers\/core\/ips.core.moderation.js",
"core\/front\/controllers\/core\/ips.core.reviewForm.js",
"global\/framework\/templates\/ips.core.templates.js"
],
"removed": []
},
"orders": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,18 @@
{
"normal": {
"added": [
"can_use_theme_editor"
],
"edited": [
"enhancements__core_FacebookPixel",
"enhancements__core_FacebookPixel_desc",
"fb_pixel_id_req"
],
"removed": []
},
"js": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,41 @@
{
"html": {
"added": [],
"edited": [
"global\/forms\/editorAttachmentsPlaceholder",
"front\/forms\/postingInformation",
"front\/forms\/reviewTemplate",
"front\/forms\/row",
"front\/global\/analytics",
"front\/global\/featuredComment",
"front\/global\/featuredComments",
"front\/global\/globalTemplate",
"front\/global\/guestCommentTeaser",
"front\/global\/tags"
],
"removed": []
},
"css": {
"added": [],
"edited": [
"front\/core.css",
"global\/framework\/3-carousel.css",
"global\/framework\/3-compose.css",
"global\/framework\/3-data-tables.css",
"global\/framework\/3-entries.css",
"global\/framework\/3-forms.css",
"global\/framework\/3-rating.css",
"global\/framework\/3-tabs.css",
"global\/framework\/3-truncate.css",
"global\/framework\/4-footer.css",
"global\/framework\/4-layout.css",
"global\/framework\/5-typography.css"
],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,116 @@
{
"categories": {
"added": [],
"edited": [
"lightDarkMode",
"logos",
"pageLayouts",
"typography",
"header",
"sidePanel",
"content",
"footer",
"mobileNavigation",
"navigationPanel",
"global",
"textLogo",
"imageLogoDesktop",
"imageLogoMobile",
"desktopHeader",
"mobileHeader",
"desktopFooter",
"body",
"contentBoxes",
"sidebar",
"avatars",
"buttons"
],
"removed": []
},
"settings": {
"added": [],
"edited": [
"set__i-default-scheme",
"set__i-logo-text",
"set__i-sidebar-width",
"i-primary-button--co",
"set__i-mobile-icons-location",
"set__logo-light",
"i-footer--co",
"set__mobile-logo-light",
"layout_global_view_mode",
"set__i-font-family",
"set__i-design-border",
"set__i-layout-width",
"set__i-sidebar-ui-header--he",
"set__i-position-logo",
"set__i-mobile-header--he",
"set__i-change-scheme",
"set__i-logo-slogan",
"i-primary-button--ba-co",
"set__i-mobile-footer-labels",
"set__logo-dark",
"i-footer--ba-co",
"set__mobile-logo-dark",
"set__i-design-radius",
"set__i-font-size",
"set__i-flip-sidebar",
"i-dashHeader--ba-co",
"set__i-position-navigation",
"i-headerMobile--ba-co",
"i-headerMobile--co",
"i-secondary-button--co",
"set__i-logo--fo-fa",
"set__i-position-user",
"i-dashHeader--co",
"set__i-avatar-radius",
"i-color_root",
"set__i-mobile-logo--he",
"set__i-design-shadow",
"i-mobileFooter--ba-co",
"set__i-logo--he",
"i-secondary-button--ba-co",
"set__i-logo--fo-we",
"i-navPanelLinkHover--co",
"set__i-position-breadcrumb",
"i-mobileFooter--co",
"i-color_soft",
"i-body--ba-co",
"set__i-link-panels",
"set__i-sidebar-ui-logo--he",
"i-button--bo-ra",
"set__i-desktop-logo--fo-si",
"set__i-sticky-sidebar",
"i-navPanelLinkActive--ba-co",
"set__i-position-search",
"i-mobileFooter-active--co",
"i-color_hard",
"i-box--ba-co",
"set__i-header-primary--he",
"set__i-sidebar-ui-logo--fo-si",
"i-box--bo-co",
"i-link--co",
"i-mobileFooter-active--ba-co",
"i-navPanel--ba-co",
"set__i-mobile-logo--fo-si",
"i-link-hover--co",
"i-navPanel--co",
"set__i-header-secondary--he",
"i-boxHeader--ba-co",
"i-boxHeader--co",
"set__i-user-content-font-size",
"i-navPanelLinkActive--co",
"set__i-nav-bar-icons",
"i-widget-header--ba-co",
"i-headerTop--ba-co",
"i-widget-header--co",
"i-headerTop--co",
"i-headerPrimary--ba-co",
"i-headerPrimary--co",
"i-headerSecondary--ba-co",
"i-headerSecondary--co",
"set__i-header-top--he"
],
"removed": []
}
}
+1 -1
View File
@@ -440,7 +440,7 @@ class Stream extends Model
$value = $containers->$class ?? 0;
/* @var Item $class */
$field = new Node( 'stream_containers_' . $class::$title, $value, FALSE, array( 'class' => $nodeClass, 'clubs' => TRUE, 'multiple' => TRUE, 'zeroVal' => 'all', 'permissionCheck' => $nodeClass::searchableNodesPermission(), 'forceOwner' => FALSE, 'subnodes' => FALSE ), NULL, NULL, NULL, 'stream_containers_' . $class::$title );
$field = new Node( 'stream_containers_' . $class::$title, $value, FALSE, array( 'class' => $nodeClass, 'clubs' => TRUE, 'multiple' => TRUE, 'zeroVal' => 'all', 'forceOwner' => FALSE, 'subnodes' => FALSE ), NULL, NULL, NULL, 'stream_containers_' . $class::$title );
$field->label = Member::loggedIn()->language()->addToStack( $nodeClass::$nodeTitle );
$form->add( $field );
}