Version 5.0.13

This commit is contained in:
Neo committed 2025-12-19 19:04:57 -08:00
1 parent b89858b2ff
commit 5efe744c5f
1407 files changed
+69690 -30177

No files matched your search

+227 -108
View File
@@ -332,7 +332,7 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
class='ipsJS_hide'> <button type='button' id='
class='ipsJS_hide'> <button type="button" id="
IPSCONTENT;
if ( ! empty($htmlId) ):
@@ -355,12 +355,12 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
_prefix' data-role="prefixButton" data-ipsMenu data-ipsMenu-selectable="radio" data-ipsMenu-appendTo="
_prefix" popovertarget="
IPSCONTENT;
if ( ! empty($htmlId) ):
$return .= <<<IPSCONTENT
#
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $htmlId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -369,7 +369,7 @@ IPSCONTENT;
else:
$return .= <<<IPSCONTENT
#
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -378,7 +378,7 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
_prefixWrap" class='ipsButton ipsButton--soft ipsButton--small'><span>
_prefix_menu" data-role="prefixButton" class='ipsButton ipsButton--soft ipsButton--small'><span>
IPSCONTENT;
if ( isset($valueAsArray['prefix']) ):
@@ -422,7 +422,7 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
'>
<ul id='
<i-dropdown popover id="
IPSCONTENT;
if ( ! empty($htmlId) ):
@@ -445,19 +445,23 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
_prefix_menu' data-role="prefixMenu" class='ipsMenu ipsMenu_selectable ipsMenu_auto ipsHide'>
<li data-ipsMenuValue='-' class='ipsMenu_item ipsMenu_itemChecked'>
<a href='#'>
_prefix_menu" data-i-dropdown-selectable="radio">
<div class="iDropdown">
<ul class="iDropdown__items" data-role="prefixMenu">
<li>
<button type="button" data-ipsMenuValue='-' aria-selected="true">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_prefix', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</li>
<li class='ipsMenu_sep'>
<hr>
</li>
</ul>
</button>
</li>
<li>
<hr>
</li>
</ul>
</div>
</i-dropdown>
</div>
<noscript>
<input type="hidden" name="
@@ -1312,6 +1316,28 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $theme, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
"></div>
IPSCONTENT;
return $return;
}
function captchaTurnstile( $publicKey, $lang, $theme='light' ) {
$return = '';
$return .= <<<IPSCONTENT
<div data-ipsCaptcha data-ipsCaptcha-service='turnstile' data-ipsCaptcha-key="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $publicKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" data-ipsCaptcha-lang="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $lang, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" data-ipsCaptcha-theme="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $theme, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
"></div>
IPSCONTENT;
return $return;
@@ -2113,7 +2139,7 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
'>
<h3 class='i-background_3 i-padding_2 ipsTitle ipsTitle--h4' data-role='tagsHeader'>
<h3 class='i-padding_2 ipsTitle ipsTitle--h5' data-role='tagsHeader'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'editor_tags', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -2374,29 +2400,6 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
" data-preferredFormat="
IPSCONTENT;
if ( $value instanceof \IPS\DateTime ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $value->localeDate(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $value, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
"
@@ -2785,7 +2788,7 @@ $return .= <<<IPSCONTENT
</div>
<div class='ipsColumns__secondary ipsComposeArea_sidebar'>
<h3 class='i-background_3 i-padding_2 ipsTitle ipsTitle--h4' data-role='tagsHeader'>
<h3 class='i-padding_2 ipsTitle ipsTitle--h5' data-role='tagsHeader'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'editor_tags', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -2798,26 +2801,23 @@ IPSCONTENT;
foreach ( $tags as $tagKey => $tagValue ):
$return .= <<<IPSCONTENT
<li class='i-padding_2'>
<label class="ipsJS_show i-color_hard i-font-weight_500" data-tagKey="
<li>
<button type="button" data-tagKey="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $tagKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
">
<code class="language-ipsphtml">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $tagKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</label>
<div class='ipsJS_hide i-color_soft'><strong>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $tagKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</strong></div>
<div class='i-color_soft '>
</code>
<div class='i-color_soft i-font-size_-2 i-margin-top_1'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $tagValue, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</div>
</button>
</li>
IPSCONTENT;
@@ -3958,24 +3958,31 @@ if ( $allowMedia ):
$return .= <<<IPSCONTENT
<li>
<a href='#' class='ipsButton ipsButton--soft ipsButton--small' data-ipsMenu id='elEditorAttach_media
<button type="button" id="elEditorAttach_media
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( md5($name), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
'>
" popovertarget="elEditorAttach_media
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( md5($name), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
_menu" class='ipsButton ipsButton--soft ipsButton--small'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'editor_attach_other', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
<i class='fa-solid fa-caret-down'></i></a>
<ul class='ipsMenu ipsMenu_auto ipsHide' id='elEditorAttach_media
<i class='fa-solid fa-caret-down'></i></button>
<i-dropdown popover id="elEditorAttach_media
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( md5($name), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
_menu'>
<li class='ipsMenu_item'><a href='#' data-ipsDialog data-ipsDialog-fixed data-ipsDialog-forceReload data-ipsDialog-title='
_menu">
<div class="iDropdown">
<ul class="iDropdown__items">
<li><a href='#' data-ipsDialog data-ipsDialog-fixed data-ipsDialog-forceReload data-ipsDialog-title='
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'editor_insert_existing_file', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -3991,7 +3998,9 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'editor_insert_existing_file', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a></li>
</ul>
</ul>
</div>
</i-dropdown>
</li>
IPSCONTENT;
@@ -4179,6 +4188,12 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( implode(",",\IPS\Helpers\Form\Editor::getMemberRestrictions( comments: (bool) $options["comments"] ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
"
data-ipseditorv5-restrictionlevel="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Helpers\Form\Editor::getMemberRestrictionLevel( comments: (bool) $options["comments"] ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
"
>
@@ -4257,7 +4272,7 @@ $return .= <<<IPSCONTENT
<li>
<ul>
<li>
<h4 class='i-background_3 i-padding_2 i-flex i-align-items_center i-gap_2'>
<h4 class='i-color_hard i-font-weight_500 i-background_3 i-padding_2 i-flex i-align-items_center i-gap_2'>
<span>
IPSCONTENT;
@@ -4274,7 +4289,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $tagLinks[$tagKey]['link'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
' data-customtags-dialog class='ipsButton ipsButton--inherit' target='_blank'
' data-customtags-dialog class='ipsButton ipsButton--inherit ipsButton--small i-margin-start_auto' target='_blank'
IPSCONTENT;
if ( isset( $tagLinks[$tagKey]['data'] ) ):
@@ -4343,27 +4358,33 @@ IPSCONTENT;
foreach ( $tagValue as $key => $value ):
$return .= <<<IPSCONTENT
<li class='i-padding_2'>
<label data-tagKey="
<li>
<button type="button" data-tagKey="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
">
<span class="ipsRichText">
<code class="language-ipsphtml">
<code class="language-ipsphtml">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</code>
IPSCONTENT;
</code>
</span>
</label>
<div class='i-color_soft i-font-size_-2'>
if ( $value ):
$return .= <<<IPSCONTENT
<div class='i-color_soft i-font-size_-2 i-margin-top_1'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $value, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</button>
</li>
IPSCONTENT;
@@ -4381,29 +4402,40 @@ IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<li class='i-padding_2'>
<label data-tagKey="
<li>
<button type="button" data-tagKey="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $tagKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
">
<span class="ipsRichText">
<code class="language-ipsphtml">
<code class="language-ipsphtml">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $tagKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</code>
IPSCONTENT;
</code>
</span>&nbsp;
if ( $tagValue ):
$return .= <<<IPSCONTENT
<div class='i-color_soft i-font-size_-2 i-margin-top_1'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $tagValue, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</button>
IPSCONTENT;
if ( isset( $tagLinks[$tagKey] ) ):
$return .= <<<IPSCONTENT
<a href='
<a href='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $tagLinks[$tagKey]['link'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -4450,36 +4482,15 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
'>
<i class='fa-solid fa-
<i class='fa-solid fa-
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $tagLinks[$tagKey]['icon'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
'></i>
</a>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</label>
<div class='ipsJS_hide i-color_soft'><strong>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $tagKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</strong></div>
</a>
IPSCONTENT;
if ( $tagValue ):
$return .= <<<IPSCONTENT
<div class='i-color_soft i-font-size_-2'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $tagValue, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
@@ -6458,7 +6469,7 @@ IPSCONTENT;
return $return;
}
function node( $name, $value, $multiple, $url, $title, $roots, $zeroVal, $permCheck, $subnodes, $togglePerm=NULL, $toggleIds=array(), $disabledCallback=NULL, $zeroValTogglesOn=array(), $zeroValTogglesOff=array(), $autoPopulate=FALSE, $children=NULL, $nodeClass=NULL, $where=NULL, $disabledArray=array(), $noParentNodesTitle=NULL, $noParentNodes=array(), $clubs=FALSE, $togglePermPBR=TRUE, $toggleIdsOff=array(), $loadMoreLink=FALSE ) {
function node( $name, $value, $multiple, $url, $title, $roots, $zeroVal, $permCheck, $subnodes, $togglePerm=NULL, $toggleIds=array(), $disabledCallback=NULL, $zeroValTogglesOn=array(), $zeroValTogglesOff=array(), $autoPopulate=FALSE, $children=NULL, $nodeClass=NULL, $where=NULL, $disabledArray=array(), $noParentNodesTitle=NULL, $noParentNodes=array(), $clubs=FALSE, $togglePermPBR=TRUE, $toggleIdsOff=array(), $loadMoreLink=FALSE, $nodeGroups=null ) {
$return = '';
$return .= <<<IPSCONTENT
@@ -6492,7 +6503,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
if ( $clubs ):
if ( $clubs or !empty( $nodeGroups ) ):
$return .= <<<IPSCONTENT
<i-tabs class='ipsTabs ipsTabs--small ipsTabs--stretch' id='ipsTabs_nodeSelect_
@@ -6521,6 +6532,12 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'c
$return .= <<<IPSCONTENT
</button>
IPSCONTENT;
if ( $clubs ):
$return .= <<<IPSCONTENT
<button type="button" id='ipsTabs_nodeSelect_
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -6537,6 +6554,40 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'c
$return .= <<<IPSCONTENT
</button>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( !empty( $nodeGroups ) ):
$return .= <<<IPSCONTENT
<button type="button" id='ipsTabs_nodeSelect_
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
_groups' class="ipsTabs__tab" role="tab" aria-controls="ipsTabs_nodeSelect_
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
_groups_panel" aria-selected="false">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'club_node_selector_groups', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</button>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</i-tabs>
@@ -6549,7 +6600,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
if ( $clubs ):
if ( $clubs or !empty( $nodeGroups ) ):
$return .= <<<IPSCONTENT
<div id='ipsTabs_nodeSelect_
@@ -6573,6 +6624,12 @@ $return .= \IPS\Theme::i()->getTemplate( "forms", "core", 'global' )->nodeCascad
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
if ( $clubs ):
$return .= <<<IPSCONTENT
<div id='ipsTabs_nodeSelect_
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -6589,6 +6646,40 @@ $return .= \IPS\Theme::i()->getTemplate( "forms", "core", 'global' )->nodeCascad
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( !empty( $nodeGroups ) ):
$return .= <<<IPSCONTENT
<div id='ipsTabs_nodeSelect_
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
_groups_panel' class="ipsTabs__panel" role="tabpanel" aria-labelledby="ipsTabs_nodeSelect_
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
_groups" data-role="groupNodeList" hidden>
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "forms", "core", 'global' )->nodeCascade( $nodeGroups, FALSE, true, false, null, array(), null, false, null, 'IPS\Node\NodeGroup', array() );
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
@@ -6659,7 +6750,7 @@ $return .= <<<IPSCONTENT
-zeroVal" data-role="zeroVal"
IPSCONTENT;
if ( $value === 0 ):
if ( $value == 0 ):
$return .= <<<IPSCONTENT
checked
IPSCONTENT;
@@ -6716,7 +6807,7 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
class="ipsInput ipsInput--toggle">
class="ipsInput ipsInput--toggle">
<label for="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -6841,7 +6932,12 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
if ( $nodeClass and !( $node instanceof $nodeClass ) ):
if ( $node instanceof \IPS\Node\NodeGroup ):
$return .= <<<IPSCONTENT
.g
IPSCONTENT;
elseif ( $nodeClass and !( $node instanceof $nodeClass ) ):
$return .= <<<IPSCONTENT
.s
IPSCONTENT;
@@ -7286,12 +7382,35 @@ IPSCONTENT;
elseif ( \is_numeric( $value ) ):
$return .= <<<IPSCONTENT
value="
IPSCONTENT;
if ( \is_int( $decimals ) or ( $decimals === true and mb_strpos( $value, '.' ) ) ):
$return .= <<<IPSCONTENT
value="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( number_format( $value, $decimals === true ? mb_strlen( mb_substr( $value, mb_strpos( $value, '.' ) + 1 ) ) : $decimals, '.', '' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
"
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
value="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $value, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
"
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
@@ -9296,7 +9415,7 @@ $return .= <<<IPSCONTENT
</div>
<div class='ipsColumns__secondary ipsComposeArea_sidebar'>
<h3 class='i-background_3 i-padding_2 ipsTitle ipsTitle--h4' data-role='tagsHeader'>
<h3 class='i-padding_2 i-font-weight_600 i-color_hard i-font-size_2' data-role='tagsHeader'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'editor_tags', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );