Version 5.0.0 release

This commit is contained in:
Neo committed 2025-12-19 18:37:58 -08:00
1 parent 90e8c7e903
commit a3a4a9ccbd
651 files changed
+7275 -9481

No files matched your search

+24 -3
View File
@@ -1219,7 +1219,7 @@ endif;
$return .= <<<IPSCONTENT
</div>
<div class="i-flex i-flex-wrap_wrap i-gap_3 i-align-items_center i-margin-top_3">
<div class="i-flex i-flex-wrap_wrap i-gap_2 i-align-items_center i-margin-top_3">
<a href='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $event->container()->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -1233,7 +1233,8 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $event->container()->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</a>
<div class="i-flex i-flex-wrap_wrap i-gap_3 i-align-items_center">
IPSCONTENT;
if ( $event->container()->allow_comments ):
@@ -1253,7 +1254,7 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $event->container()->allow_reviews ):
@@ -1273,6 +1274,7 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</div>
</div>
</div>
@@ -1388,6 +1390,25 @@ endforeach;
$return .= <<<IPSCONTENT
</ul>
IPSCONTENT;
return $return;
}
function eventHovercard( $event, $date ) {
$return = '';
$return .= <<<IPSCONTENT
<i-data>
<ul class="ipsData ipsData--grid ipsData--eventHovercard">
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "view", "calendar" )->eventBlock( $event, $date, true );
$return .= <<<IPSCONTENT
</ul>
</i-data>
IPSCONTENT;
return $return;
+22 -4
View File
@@ -309,22 +309,40 @@ IPSCONTENT;
IPSCONTENT;
if ( \count($items) ):
$return .= <<<IPSCONTENT
<ul>
IPSCONTENT;
foreach ( $items as $item ):
$return .= <<<IPSCONTENT
<a href='
<li><a href='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $item->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
'>
' data-id="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $item->_id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $item->mapped( 'title' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</a>
</a></li>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</ul>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
+29 -7
View File
@@ -47,7 +47,11 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
[badge]">
<option value="">
<option value="" data-control="toggle" data-togglesoff="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
_badge">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'achievements_badge_none', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -515,7 +519,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $action, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" method="post" data-controller="core.admin.members.achievementRuleForm" class='ipsBox '>
" method="post" data-controller="core.admin.members.achievementRuleForm" class='ipsBox' data-ipsform>
<input type="hidden" name="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -843,6 +847,24 @@ IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( isset( $parts[$option] ) ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$ruleSelect->options['toggles'][$option] = ["rule_{$option}"];
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
@@ -876,7 +898,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $option, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
' data-role="ruleWrap" style='display: none'>
' data-role="ruleWrap" hidden>
IPSCONTENT;
@@ -1042,7 +1064,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $awardSubjectTranslatable->htmlId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" class='i-padding-top_3' style='display: none'>
" class='i-padding-top_3' hidden>
<p class='cRulesForm__condition__toDesc'>
IPSCONTENT;
@@ -1086,7 +1108,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $awardOtherTranslatable->htmlId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" class='i-padding-top_3' style='display: none'>
" class='i-padding-top_3' hidden>
<p class='cRulesForm__condition__toDesc'>
IPSCONTENT;
@@ -1136,7 +1158,7 @@ IPSCONTENT;
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $element->htmlId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" style="visibility: hidden; position: absolute">
" hidden style="position: absolute">
<input type="checkbox" id="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $element->htmlId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -1218,7 +1240,7 @@ IPSCONTENT;
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $element->htmlId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
_filter" style='display: none;'>
_filter" hidden>
<div class="cRulesForm__condition cRulesForm__condition--subCondition ipsBox i-position_relative i-padding_3 i-margin-top_3">
<h2 class='cRulesForm__condition__title ipsRadius i-text-align_center i-font-size_1 i-font-weight_600 i-flex_00'>
IPSCONTENT;
+39 -39
View File
@@ -11,34 +11,34 @@ IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=staff&controller=admin&do=save&id={$row['row_id']}&type={$row['row_id_type']}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
" method="post">
<input type="hidden" name="csrfKey" value="
<input type="hidden" name="csrfKey" value="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Session::i()->csrfKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
">
<div class='ipsBox i-margin-bottom_1'>
<div class='acpFormTabContent'>
<ul class='ipsForm ipsForm--horizontal ipsForm--restrictions'>
<li class='ipsFieldRow' id="use_restrictions_id">
<div class='ipsFieldRow__label '>
<div class='ipsBox i-margin-bottom_block'>
<div class='acpFormTabContent'>
<ul class='ipsForm ipsForm--horizontal ipsForm--restrictions'>
<li class='ipsFieldRow' id="use_restrictions_id">
<div class='ipsFieldRow__label '>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mod_use_restrictions', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
<span class='ipsFieldRow__required'>
<span class='ipsFieldRow__required'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'required', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
</div>
<div class='ipsFieldRow__content'>
<ul class="ipsFieldList" role="radiogroup" id="elRadio_mod_use_restrictions_use_restrictions_id">
<li>
<input type="radio" class="ipsInput ipsInput--toggle" name="admin_use_restrictions" value="no"
</div>
<div class='ipsFieldRow__content'>
<ul class="ipsFieldList" role="radiogroup" id="elRadio_mod_use_restrictions_use_restrictions_id">
<li>
<input type="radio" class="ipsInput ipsInput--toggle" name="admin_use_restrictions" value="no"
IPSCONTENT;
if ( $current === '*' ):
@@ -49,25 +49,25 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
id="elRadio_admin_use_restrictions_no_use_restrictions_id">
<div class='ipsFieldList__content'>
<label for='elRadio_admin_use_restrictions_no_use_restrictions_id' id='elField_mod_use_restrictions_label'>
<div class='ipsFieldList__content'>
<label for='elRadio_admin_use_restrictions_no_use_restrictions_id' id='elField_mod_use_restrictions_label'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mod_all_permissions', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</label>
<div class='ipsFieldRow__desc'>
<div class='ipsFieldRow__desc'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'admin_all_permissions_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</div>
</div>
</div>
</li>
<li>
<input type="radio" class="ipsInput ipsInput--toggle" name="admin_use_restrictions" value="yes"
</li>
<li>
<input type="radio" class="ipsInput ipsInput--toggle" name="admin_use_restrictions" value="yes"
IPSCONTENT;
if ( $current !== '*' ):
@@ -78,31 +78,31 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
data-control="toggle" data-toggles="permission_form_wrapper" id="elRadio_admin_use_restrictions_yes_use_restrictions_id">
<div class='ipsFieldList__content'>
<label for='elRadio_admin_use_restrictions_yes_use_restrictions_id' id='elField_mod_use_restrictions_label'>
<div class='ipsFieldList__content'>
<label for='elRadio_admin_use_restrictions_yes_use_restrictions_id' id='elField_mod_use_restrictions_label'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mod_restricted', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</label>
<div class='ipsFieldRow__desc'>
<div class='ipsFieldRow__desc'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'admin_restricted_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</div>
</div>
</div>
</li>
</ul>
</div>
</li>
</ul>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
</div>
<div id='permission_form_wrapper'>
<div id='permission_form_wrapper' class="ipsBox">
<i-tabs class='ipsTabs acpFormTabBar' id='ipsTabs_restrictions' data-ipsTabBar data-ipsTabBar-contentArea="#ipsTabs_restrictions_content">
<div role="tablist">
@@ -196,7 +196,7 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
>
<div class='i-padding_3' data-controller='core.admin.members.restrictions'>
<div class='' data-controller='core.admin.members.restrictions'>
<div class='i-background_3 i-padding_3 acpAppRestrictions_header'>
<input type="checkbox" class="ipsSwitch" id='elRestrict_
IPSCONTENT;
@@ -216,16 +216,16 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
> &nbsp;&nbsp;<label for='elRestrict_
> <label for='elRestrict_
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $appKey, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
'><span class='ipsTitle ipsTitle--h3'>
' class="i-font-size_3 i-font-weight_600 i-color_hard">
IPSCONTENT;
$sprintf = array(\IPS\Member::loggedIn()->language()->addToStack('__app_' . $appKey )); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'acprestrictions_app', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
$return .= <<<IPSCONTENT
</span></label>
</label>
</div>
<ul id='elRestrictions_root_
IPSCONTENT;
@@ -293,7 +293,7 @@ IPSCONTENT;
$val = "menu__{$appKey}_{$moduleKey}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</strong></h2> &nbsp;&nbsp;<span data-role='toggle' class='ipsJS_show'><a href='#' data-action='expandAll'><strong>
</strong></h2> <span data-role='toggle' class='ipsJS_show'><a href='#' data-action='expandAll'><strong>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'expand', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -325,7 +325,7 @@ IPSCONTENT;
$val = "r__{$title}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h3> &nbsp;&nbsp;<span data-role='massToggle' class='ipsJS_show'><a href='#' data-action='checkAll'>
</h3> <span data-role='massToggle' class='ipsJS_show'><a href='#' data-action='checkAll'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'all', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
-43
View File
@@ -235,49 +235,6 @@ $return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=promotion
$return .= <<<IPSCONTENT
' style="width:100%"></iframe>
IPSCONTENT;
return $return;
}
function advertisementMessage( ) {
$return = '';
$return .= <<<IPSCONTENT
<div class='i-background_2 i-padding_3 ipsPhotoPanel ipsPhotoPanel_small'>
<i class='fa-solid fa-circle-info i-font-size_6'></i>
<div>
<h2 class='ipsTitle ipsTitle--h3'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ad_promo_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<p>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'ad_promo_msg', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
<br>
<a href='
IPSCONTENT;
$return .= \IPS\Http\Url::ips( "docs/product-nexus" );
$return .= <<<IPSCONTENT
' class='ipsButton ipsButton--primary'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'more_information', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</div>
</div>
<br><br>
IPSCONTENT;
return $return;
+139 -63
View File
@@ -261,86 +261,86 @@ IPSCONTENT;
<div class='ipsColumns' data-controller='core.admin.support.dashboard'>
<div class='ipsColumns__primary'>
<div class='ipsBox'>
<p class='i-padding_3'>
<div class='ipsMessage i-margin-bottom_block'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_intro', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
</div>
<br>
<div class='ipsBox ipsHide' data-role="summary">
<h2 class='ipsBox__header' data-role="summaryText"></h2>
<div class='i-padding_2'>
<button class='ipsButton ipsButton--inherit ipsButton--small' data-role="checkAgain">
<div class="ipsBox i-margin-bottom_block">
<div class='ipsHide' data-role="summary">
<div class="ipsBox__header">
<h2 data-role="summaryText" class="i-flex_11"></h2>
<button class='ipsButton ipsButton--inherit ipsButton--small' data-role="checkAgain"><i class="fa-solid fa-arrows-rotate"></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_check_again_button', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</button>
</div>
</div>
</div>
<div data-role="tableRows">
<div class='ipsGrid i-basis_300 ipsGrid--system-health i-margin-top_2'>
<div data-role="tableRows">
<div class='ipsGrid i-basis_340 ipsGrid--lines ipsGrid--system-health'>
IPSCONTENT;
foreach ( $blocks as $key => $block ):
$return .= <<<IPSCONTENT
<div class='ipsBox' data-role='patchworkItem' data-blockid='
<div class="i-padding_3" data-role='patchworkItem' data-blockid='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
'>
<div class='elBlockTitle i-padding_2 i-flex i-align-items_center i-justify-content_space-between i-border-bottom_3'>
<div>
<h2 class='i-font-size_2 i-font-weight_600 i-color_hard'>
<div class='elBlockTitle i-margin-bottom_2 i-flex i-align-items_center i-justify-content_space-between'>
<div>
<h2 class='i-font-size_2 i-font-weight_600 i-color_hard'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $block['title'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</h2>
</h2>
IPSCONTENT;
if ( !empty( $block['details'] ) ):
$return .= <<<IPSCONTENT
<p class='i-font-weight_500 i-color_soft i-font-size_-1'>
<p class='i-font-weight_500 i-color_soft i-font-size_-1'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $block['details'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</p>
</p>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
<div>
<span class='i-color_warning ipsHide' data-iconType="critical"><i class="fa-solid fa-triangle-exclamation"></i></span>
<span class='i-color_issue ipsHide' data-iconType="recommended"><i class="fa-solid fa-circle-info"></i></span>
</div>
</div>
<div>
<span class='i-color_warning ipsHide' data-iconType="critical"><i class="fa-solid fa-triangle-exclamation"></i></span>
<span class='i-color_issue ipsHide' data-iconType="recommended"><i class="fa-solid fa-circle-info"></i></span>
</div>
<div class='ipsLoading' data-role="supportBlock"></div>
</div>
<div class='ipsLoading' data-role="supportBlock"></div>
</div>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</div>
</div>
</div>
<div class='ipsBox i-margin-block_3'>
<div class='ipsBox i-margin-bottom_block'>
<h2 class='ipsBox__header'>
IPSCONTENT;
@@ -403,18 +403,36 @@ $return .= <<<IPSCONTENT
</div>
</div>
<div class='ipsBox i-margin-block_3'>
<h2 class='ipsBox__header'>
<div>
<div class='ipsBox'>
<div class='elHealthChart'>
<div class='ipsGrid ipsGrid--lines ipsGrid--max-3 i-border-bottom_3'>
<div class="i-flex i-gap_3 i-padding_3 ipsLinkPanelWrap">
<a class='ipsLinkPanel' href='
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health__system_log_chart', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=support&controller=systemLogs", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
</div>
</h2>
<div class='elHealthChart'>
<div class='ipsButtons ipsButtons--fill i-padding_3'>
<a class='ipsButton ipsButton--inherit' href='
' aria-hidden="true" tabindex="-1"><span>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_system_log_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span></a>
<div class="i-font-size_6 i-color_soft i-opacity_7 i-flex_00"><i class="fa-solid fa-server"></i></div>
<div class="i-flex_11 i-flex i-flex-direction_column i-align-items_start">
<h3 class="ipsTitle ipsTitle--h4">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_system_log_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h3>
<p class="i-color_soft i-margin-bottom_3">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_system_log_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
<a class='ipsButton ipsButton--secondary ipsButton--small i-margin-top_auto' href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=support&controller=systemLogs", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -425,7 +443,35 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_system_log_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
<a class='ipsButton ipsButton--inherit' href='
</div>
</div>
<div class="i-flex i-gap_3 i-padding_3 ipsLinkPanelWrap">
<a class='ipsLinkPanel' href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=support&controller=errorLogs", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
' aria-hidden="true" tabindex="-1"><span>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_error_log_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span></a>
<div class="i-font-size_6 i-color_soft i-opacity_7 i-flex_00"><i class="fa-solid fa-triangle-exclamation"></i></div>
<div class="i-flex_11 i-flex i-flex-direction_column i-align-items_start">
<h3 class="ipsTitle ipsTitle--h4">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_error_log_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h3>
<p class="i-color_soft i-margin-bottom_3">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_error_log_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
<a class='ipsButton ipsButton--secondary ipsButton--small i-margin-top_auto' href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=support&controller=errorLogs", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -436,7 +482,35 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_error_log_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
<a class='ipsButton ipsButton--inherit' href='
</div>
</div>
<div class="i-flex i-gap_3 i-padding_3 ipsLinkPanelWrap">
<a class='ipsLinkPanel' href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=settings&controller=email&do=errorLog", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
' aria-hidden="true" tabindex="-1"><span>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_email_error_log_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span></a>
<div class="i-font-size_6 i-color_soft i-opacity_7 i-flex_00"><i class="fa-solid fa-envelope-open-text"></i></div>
<div class="i-flex_11 i-flex i-flex-direction_column i-align-items_start">
<h3 class="ipsTitle ipsTitle--h4">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_email_error_log_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h3>
<p class="i-color_soft i-margin-bottom_3">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_email_error_log_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
<a class='ipsButton ipsButton--secondary ipsButton--small i-margin-top_auto' href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=settings&controller=email&do=errorLog", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -447,6 +521,8 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_email_error_log_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</div>
</div>
</div>
{$chart}
<p class='i-font-size_1 i-color_soft i-padding_2'>
@@ -462,9 +538,9 @@ $return .= <<<IPSCONTENT
</div>
<div class='ipsColumns__secondary i-basis_360'>
<div class='ipsBox'>
<div class='ipsBox i-margin-bottom_block'>
<h2 class='ipsBox__header'>
<i class="fa-solid fa-book i-color_soft"></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health__search_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -483,7 +559,7 @@ $return .= <<<IPSCONTENT
</a>
</h2>
<div class='i-padding_3'>
<p class='i-font-size_1'>
<p class='i-margin-bottom_2'>
IPSCONTENT;
@@ -555,17 +631,17 @@ $return .= <<<IPSCONTENT
</div>
</div>
<div class='ipsBox i-margin-block_3'>
<div class='ipsBox i-margin-bottom_block'>
<h2 class='ipsBox__header'>
<i class="fa-solid fa-screwdriver-wrench i-color_soft"></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health__tools_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<div class='i-padding_3'>
<p class='i-font-size_1 i-margin-bottom_3'>
<div class=''>
<p class='i-font-size_1 i-padding_3 i-padding-bottom_1'>
IPSCONTENT;
@@ -574,13 +650,13 @@ $return .= <<<IPSCONTENT
</p>
<div class="ipsButtons">
<div class="ipsLinkList i-padding_2">
<a href="
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=support&controller=support&do=clearCaches" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
" class='ipsButton ipsButton--small ipsButton--inherit ipsButton--wide' data-role="clearCaches">
" data-role="clearCaches"><i class="fa-regular fa-trash-can"></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_clear_caches_button', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -591,7 +667,7 @@ IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=support&controller=support&do=thirdparty" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
" data-ipsDialog class='ipsButton ipsButton--small ipsButton--inherit ipsButton--wide' >
" data-ipsDialog><i class="fa-solid fa-paint-roller"></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_customizations_overview', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -607,7 +683,7 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_debug_log_settings', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
' class='ipsButton ipsButton--small ipsButton--inherit ipsButton--wide'>
'><i class="fa-regular fa-file-code"></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_debug_log_settings', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -624,7 +700,7 @@ IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=support&controller=phpinfo", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
' target='_blank' class='ipsButton ipsButton--small ipsButton--inherit ipsButton--wide'>
' target='_blank'><i class="fa-solid fa-circle-info"></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health_phpinfo', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -640,9 +716,9 @@ $return .= <<<IPSCONTENT
</div>
</div>
<div class='ipsBox i-margin-block_3'>
<div class='ipsBox i-margin-bottom_block'>
<h2 class='ipsBox__header'>
<i class="fa-solid fa-life-ring i-color_soft"></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'health__support_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -1134,7 +1210,7 @@ IPSCONTENT;
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $action, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" id='elCoppaForm' class='i-text-align_center' data-ipsForm>
" data-ipsForm>
<input type="hidden" name="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -1202,7 +1278,7 @@ IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
&nbsp;&nbsp;<button type='submit' class='ipsButton ipsButton--large ipsButton--primary ipsHide'>
<button type='submit' class='ipsButton ipsButton--large ipsButton--primary ipsHide'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'continue', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -1767,7 +1843,7 @@ IPSCONTENT;
$return = '';
$return .= <<<IPSCONTENT
<ul>
<ul class="i-grid i-gap_2">
IPSCONTENT;
@@ -1803,7 +1879,7 @@ IPSCONTENT;
$count++;
$return .= <<<IPSCONTENT
<div class='i-padding-block_2 i-padding-inline_2 i-flex i-align-items_center i-gap_1
<div class='i-flex i-align-items_center i-gap_1
IPSCONTENT;
if ( $listItem['critical'] ):
@@ -1818,7 +1894,7 @@ IPSCONTENT;
else:
$return .= <<<IPSCONTENT
i-color_soft
i-color_positive
IPSCONTENT;
endif;
@@ -2092,7 +2168,7 @@ else:
$return .= <<<IPSCONTENT
<li>
<div class="i-padding-block_2 i-padding-inline_2 i-flex i-align-items_center i-color_soft">
<div class="i-flex i-align-items_center i-color_positive">
<i class="fa-solid fa-check i-margin-end_icon"></i>
<p class='i-flex_11'>
IPSCONTENT;
+27 -83
View File
@@ -200,7 +200,7 @@ IPSCONTENT;
foreach ( $buttonMethods as $method ):
$return .= <<<IPSCONTENT
<li class='ipsFieldRow--fullWidth i-margin-top_1'>
<li class='ipsFieldRow ipsFieldRow--fullWidth i-margin-top_1'>
{$method->button()}
</li>
@@ -390,7 +390,22 @@ $return .= <<<IPSCONTENT
"
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core", 'front' )->htmlDataAttributes( );
if ( isset(\IPS\Widget\Request::i()->cookie['acptheme']) AND \IPS\Widget\Request::i()->cookie['acptheme'] == 'dark' ):
$return .= <<<IPSCONTENT
data-ips-scheme="dark"
IPSCONTENT;
elseif ( !isset(\IPS\Widget\Request::i()->cookie['acptheme']) AND isset(\IPS\Widget\Request::i()->cookie['acpthemedefault']) AND \IPS\Widget\Request::i()->cookie['acpthemedefault'] == 'dark' ):
$return .= <<<IPSCONTENT
data-ips-scheme="dark"
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
data-ips-scheme="light"
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
>
<head>
@@ -453,19 +468,17 @@ IPSCONTENT;
$return .= <<<IPSCONTENT
<div class="i-margin-bottom_3">
<div class='i-flex i-align-items_center ipsGap'>
<div class='i-flex_00'>
<span class='ipsUserPhoto ipsUserPhoto--medium'>
<img src='
<div class='ipsPhotoPanel' style="--i-photoPanelAvatar: 4em;">
<span class='ipsUserPhoto'>
<img src='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Member::load( $log->member_id )->photo, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
' alt=''>
</span>
</div>
<div class='i-flex_11'>
<h1>
</span>
<div class='ipsPhotoPanel__text'>
<div class="ipsPhotoPanel__primary">
IPSCONTENT;
@@ -516,16 +529,14 @@ IPSCONTENT;
$return .= \IPS\Member\Group::load( \IPS\Member::load( $log->member_id )->member_group_id )->formattedName;
$return .= <<<IPSCONTENT
)
</h1>
<div>
</div>
<div class="ipsPhotoPanel__secondary">
IPSCONTENT;
$val = ( $log->time instanceof \IPS\DateTime ) ? $log->time : \IPS\DateTime::ts( $log->time );$return .= $val->html();
$return .= <<<IPSCONTENT
</div>
<div>
<div class='ipsTruncate'>
<div class="ipsPhotoPanel__secondary">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'triggered_at', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -562,9 +573,7 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</div>
</div>
</div>
</div>
</div>
@@ -610,71 +619,6 @@ $return .= \IPS\Theme\Template::htmlspecialchars( $log->backtrace, ENT_QUOTES |
$return .= <<<IPSCONTENT
</textarea>
</div>
IPSCONTENT;
if ( $log->loaded_hooks ):
$return .= <<<IPSCONTENT
<div class="i-margin-bottom_3">
<h3 class="ipsMinorTitle">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'log_loaded_hooks', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h3>
<ul>
IPSCONTENT;
foreach ( $log->loaded_hooks as $hook ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$details = \IPS\Log::hookDetails( $hook );
$return .= <<<IPSCONTENT
<li><a href='
IPSCONTENT;
if ( $details['type'] == 'app' ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=applications&controller=applications&do=details&id={$details['id']}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
' data-ipsDialog data-ipsDialog-title='
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'app_view_details', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $hook, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</a></li>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</ul>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
return $return;
+127 -94
View File
@@ -7713,7 +7713,7 @@ IPSCONTENT;
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "layout:before", [ $title,$html,$location ] );
$return .= <<<IPSCONTENT
<div class="ipsLayout" data-ips-hook="layout">
<div class="ipsLayout" id="ipsLayout" data-ips-hook="layout">
IPSCONTENT;
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "layout:inside-start", [ $title,$html,$location ] );
@@ -11461,6 +11461,19 @@ $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/fron
$return .= <<<IPSCONTENT
<ul>
<li data-el="refresh" class="ipsMobileFooter__item ipsMobileFooter__item--refresh">
<button type="button" class="ipsMobileFooter__link" onclick="location.reload()">
<div class="ipsMobileFooter__icon">
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 512 512"><path d="M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160 352 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l111.5 0c0 0 0 0 0 0l.4 0c17.7 0 32-14.3 32-32l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1L16 432c0 17.7 14.3 32 32 32s32-14.3 32-32l0-35.1 17.6 17.5c0 0 0 0 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.8c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352l34.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48.4 288c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z"></path></svg>
</div>
<span class="ipsMobileFooter__text">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'refresh_pwa', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
</button>
</li>
IPSCONTENT;
@@ -11857,22 +11870,16 @@ $return .= <<<IPSCONTENT
</button>
</header>
<div class="ipsOffCanvas__scroll">
IPSCONTENT;
if ( \IPS\Member::loggedIn()->member_id ):
$return .= <<<IPSCONTENT
<div class="ipsOffCanvas__box">
<ul class="ipsOffCanvas__nav ipsOffCanvas__nav--user">
<li>
<div class="ipsOffCanvas__box">
<ul class="ipsOffCanvas__nav ipsOffCanvas__nav--user">
<li>
IPSCONTENT;
if ( \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members', 'front' ) ) ):
$return .= <<<IPSCONTENT
<a href="
<a href="
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Member::loggedIn()->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -11883,30 +11890,30 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_my_profile', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
">
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<div class="ipsOffCanvas__item">
<div class="ipsOffCanvas__item">
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<span class="ipsPhotoPanel i-flex_11">
<span class="ipsUserPhoto">
<img src="
<span class="ipsPhotoPanel i-flex_11">
<span class="ipsUserPhoto">
<img src="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Member::loggedIn()->photo, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" alt="" loading="lazy">
</span>
<span class="ipsPhotoPanel__text">
<span class="i-font-size_2 i-font-weight_600 i-color_hard">
</span>
<span class="ipsPhotoPanel__text">
<span class="i-font-size_2 i-font-weight_600 i-color_hard">
IPSCONTENT;
if ( isset( $_SESSION['logged_in_as_key'] ) ):
@@ -11927,58 +11934,58 @@ IPSCONTENT;
$return .= htmlspecialchars( \IPS\Member::loggedIn()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
<small class="i-color_soft i-font-size_-1 i-word-break_break-all">
<small class="i-color_soft i-font-size_-1 i-word-break_break-all">
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Member::loggedIn()->email, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</small>
</span>
</span>
</span>
IPSCONTENT;
if ( \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members', 'front' ) ) ):
$return .= <<<IPSCONTENT
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
</div>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</a></li>
</ul>
</div>
<nav class="ipsOffCanvas__box">
<ul class="ipsOffCanvas__nav ipsOffCanvas__nav--profile" id="mobile-nav__profile">
</a></li>
</ul>
</div>
<nav class="ipsOffCanvas__box">
<ul class="ipsOffCanvas__nav ipsOffCanvas__nav--profile" id="mobile-nav__profile">
IPSCONTENT;
if ( \IPS\Theme::i()->getCssVariableFromKey('set__i-mobile-icons-location') == "header" ):
$return .= <<<IPSCONTENT
<li><hr class="ipsHr"></li>
<li>
<button aria-controls="ipsOffCanvas--notifications" aria-expanded="false" data-ipscontrols data-ipsoffcanvascontent>
<span class="ipsOffCanvas__icon">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="14" viewbox="0 0 448 512"><path d="M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v25.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416H424c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm0 96c61.9 0 112 50.1 112 112v25.4c0 47.9 13.9 94.6 39.7 134.6H72.3C98.1 328 112 281.3 112 233.4V208c0-61.9 50.1-112 112-112zm64 352H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z"></path></svg>
</span>
<span class="ipsOffCanvas__label">
<li><hr class="ipsHr"></li>
<li>
<button aria-controls="ipsOffCanvas--notifications" aria-expanded="false" data-ipscontrols data-ipsoffcanvascontent>
<span class="ipsOffCanvas__icon">
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="14" viewbox="0 0 448 512"><path d="M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v25.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416H424c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm0 96c61.9 0 112 50.1 112 112v25.4c0 47.9 13.9 94.6 39.7 134.6H72.3C98.1 328 112 281.3 112 233.4V208c0-61.9 50.1-112 112-112zm64 352H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z"></path></svg>
</span>
<span class="ipsOffCanvas__label">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'notifications', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
<span class="ipsNotification"
<span class="ipsNotification"
IPSCONTENT;
if ( !\IPS\Member::loggedIn()->notification_cnt ):
@@ -11999,45 +12006,45 @@ IPSCONTENT;
$return .= htmlspecialchars( \IPS\Member::loggedIn()->notification_cnt, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
</button>
</li>
</button>
</li>
IPSCONTENT;
if ( \IPS\Member::loggedIn()->members_disable_pm != 2 and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'messaging' ) ) ):
$return .= <<<IPSCONTENT
<li>
<button aria-controls="ipsOffCanvas--messenger" aria-expanded="false" data-ipscontrols data-ipsoffcanvascontent>
<span class="ipsOffCanvas__icon">
<li>
<button aria-controls="ipsOffCanvas--messenger" aria-expanded="false" data-ipscontrols data-ipsoffcanvascontent>
<span class="ipsOffCanvas__icon">
IPSCONTENT;
if ( \IPS\Member::loggedIn()->members_disable_pm ):
$return .= <<<IPSCONTENT
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="20" viewbox="0 0 640 512" class="i-opacity_3"><path d="M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8V256H358.9l-34.5-27c2.9-3.1 7-5 11.6-5h80V192H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zM358.2 378.2C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9z"></path></svg>
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="20" viewbox="0 0 640 512" class="i-opacity_3"><path d="M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8V256H358.9l-34.5-27c2.9-3.1 7-5 11.6-5h80V192H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zM358.2 378.2C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9z"></path></svg>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewbox="0 0 512 512"><path d="M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z"></path></svg>
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewbox="0 0 512 512"><path d="M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z"></path></svg>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</span>
<span class="ipsOffCanvas__label">
</span>
<span class="ipsOffCanvas__label">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'userbar_messages', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
<span class="ipsNotification"
<span class="ipsNotification"
IPSCONTENT;
if ( !\IPS\Member::loggedIn()->msg_count_new ):
@@ -12058,42 +12065,36 @@ IPSCONTENT;
$return .= htmlspecialchars( \IPS\Member::loggedIn()->msg_count_new, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
</button>
</li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</button>
</li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<li><hr class="ipsHr"></li>
IPSCONTENT;
foreach ( \IPS\Member::loggedIn()->menu( 'mobile' )->getLinks() as $link ):
$return .= <<<IPSCONTENT
{$link}
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</ul>
</nav>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<li><hr class="ipsHr"></li>
IPSCONTENT;
foreach ( \IPS\Member::loggedIn()->menu( 'mobile' )->getLinks() as $link ):
$return .= <<<IPSCONTENT
{$link}
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</ul>
</nav>
</div>
IPSCONTENT;
@@ -12988,7 +12989,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
if ( \IPS\Member::loggedIn()->members_disable_pm != 2 and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'messaging' ) ) ):
if ( \IPS\Member::loggedIn()->member_id and \IPS\Member::loggedIn()->members_disable_pm != 2 and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'messaging' ) ) ):
$return .= <<<IPSCONTENT
<section class="ipsOffCanvas" id="ipsOffCanvas--messenger" data-ips-hidden-group="offcanvas" hidden data-ips-hidden-top-layer>
@@ -13080,6 +13081,12 @@ endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( \IPS\Member::loggedIn()->member_id ):
$return .= <<<IPSCONTENT
<!-- Notifications -->
<section class="ipsOffCanvas" id="ipsOffCanvas--notifications" data-ips-hidden-group="offcanvas" hidden data-ips-hidden-top-layer>
<button class="ipsOffCanvas__overlay" aria-controls="ipsOffCanvas--notifications" aria-expanded="false" data-ipscontrols><span class="ipsInvisible">
@@ -13130,6 +13137,12 @@ $return .= <<<IPSCONTENT
</div>
</section>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
@@ -13168,7 +13181,7 @@ IPSCONTENT;
$return .= str_replace( array( 'http://', 'https://' ), '//', htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=search&controller=search&do=quicksearch", null, "search", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE ) );
$return .= <<<IPSCONTENT
" method="post">
<div class="i-padding_2 i-position_sticky-top i-flex i-gap_1 i-margin-bottom_2">
<div class="i-padding_2 i-flex i-gap_1">
<input type="search" class="ipsInput ipsInput--text ipsOffCanvas__input" placeholder="
IPSCONTENT;
@@ -13504,7 +13517,7 @@ if ( !\IPS\Member::loggedIn()->member_id ):
$return .= <<<IPSCONTENT
<li data-el="guest">
<button class="ipsMobileNavIcons__button ipsMobileNavIcons__button--primary" aria-controls="ipsOffCanvas--guest" aria-expanded="false" data-ipscontrols>
<button type="button" class="ipsMobileNavIcons__button ipsMobileNavIcons__button--primary" aria-controls="ipsOffCanvas--guest" aria-expanded="false" data-ipscontrols>
<span>
IPSCONTENT;
@@ -13596,7 +13609,7 @@ if ( \IPS\Theme::i()->getCssVariableFromKey('set__i-mobile-icons-location') == "
$return .= <<<IPSCONTENT
<li data-el="search">
<button class="ipsMobileNavIcons__button" aria-controls="ipsOffCanvas--search" aria-expanded="false" data-ipscontrols>
<button type="button" class="ipsMobileNavIcons__button" aria-controls="ipsOffCanvas--search" aria-expanded="false" data-ipscontrols>
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewbox="0 0 512 512"><path d="M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"></path></svg>
<span class="ipsInvisible">
IPSCONTENT;
@@ -13631,7 +13644,7 @@ if ( \IPS\Member::loggedIn()->member_id ):
$return .= <<<IPSCONTENT
<li data-el="user">
<button class="ipsMobileNavIcons__button" aria-controls="ipsOffCanvas--profile" aria-expanded="false" data-ipscontrols>
<button type="button" class="ipsMobileNavIcons__button" aria-controls="ipsOffCanvas--profile" aria-expanded="false" data-ipscontrols>
<span class="ipsUserPhoto">
<img src="
IPSCONTENT;
@@ -13714,7 +13727,7 @@ if ( \IPS\Theme::i()->getCssVariableFromKey('set__i-mobile-icons-location') == "
$return .= <<<IPSCONTENT
<li data-el="more">
<button class="ipsMobileNavIcons__button" aria-controls="ipsOffCanvas--navigation" aria-expanded="false" data-ipscontrols>
<button type="button" class="ipsMobileNavIcons__button" aria-controls="ipsOffCanvas--navigation" aria-expanded="false" data-ipscontrols>
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="14" viewbox="0 0 448 512"><path d="M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"></path></svg>
<span class="ipsInvisible">Menu</span>
@@ -13737,6 +13750,12 @@ $return .= <<<IPSCONTENT
</button>
</li>
<li data-el="refresh" class="ipsMobileNavIcons__refresh">
<button type="button" class="ipsMobileNavIcons__button" onclick="location.reload()">
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 512 512"><path d="M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160 352 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l111.5 0c0 0 0 0 0 0l.4 0c17.7 0 32-14.3 32-32l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1L16 432c0 17.7 14.3 32 32 32s32-14.3 32-32l0-35.1 17.6 17.5c0 0 0 0 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.8c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352l34.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48.4 288c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z"></path></svg>
<span class="ipsInvisible">Refresh</span>
</button>
</li>
IPSCONTENT;
@@ -14050,12 +14069,20 @@ $return .= \IPS\Theme::i()->getTemplate( "global", "core", 'front' )->navBarItem
$return .= <<<IPSCONTENT
<li data-el="nav-more" hidden>
<button aria-expanded="false" aria-controls="nav__more" data-ipscontrols type="button"><i class="fa-ips fa-ips--primary-nav"></i><span>
<button aria-expanded="false" aria-controls="nav__more" data-ipscontrols type="button">
<span class="ipsNavBar__icon" aria-hidden="true">
<i class="fa-solid fa-bars"></i>
</span>
<span class="ipsNavBar__text">
<span class="ipsNavBar__label">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'more', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span><i class="fa-solid fa-angle-down"></i></button>
</span>
<i class="fa-solid fa-angle-down"></i>
</span>
</button>
<ul class="ipsNav__dropdown" id="nav__more" data-ips-hidden-light-dismiss hidden></ul>
</li>
</ul>
@@ -14361,12 +14388,14 @@ endif;
$return .= <<<IPSCONTENT
</span>
<span>
<span class="ipsNavBar__text">
<span class="ipsNavBar__label">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $item->title(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
<i class="fa-solid fa-angle-down"></i>
<i class="fa-solid fa-angle-down"></i>
</span>
</button>
<ul class='ipsNav__dropdown' id='elNavSecondary_
IPSCONTENT;
@@ -14429,12 +14458,14 @@ endif;
$return .= <<<IPSCONTENT
</span>
<span>
<span class="ipsNavBar__text">
<span class="ipsNavBar__label">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $item->title(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
<i class="fa-solid fa-angle-down"></i>
<i class="fa-solid fa-angle-down"></i>
</span>
</button>
<ul class='ipsNav__dropdown' id='elNavSecondary_
IPSCONTENT;
@@ -14544,11 +14575,13 @@ endif;
$return .= <<<IPSCONTENT
</span>
<span>
<span class="ipsNavBar__text">
<span class="ipsNavBar__label">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $item->title(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
</span>
</a>
IPSCONTENT;
@@ -18920,7 +18953,7 @@ $return .= <<<IPSCONTENT
<div class="ipsReviewResponse i-padding_3 i-margin-bottom_3 i-background_2">
<div class="i-flex i-align-items_center i-justify-content_space-between i-margin-bottom_2">
<h4 class="ipsTitle ipsTitle--h3">
<h4 class="ipsTitle ipsTitle--h5">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'review_response_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
+1 -1
View File
@@ -6081,7 +6081,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $r['guest_email'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" class='ipsButton ipsButton_verySmall ipsButton_light'><i class="fa fa-envelope"></i>
" class='ipsButton ipsButton--tiny ipsButton--light'><i class="fa fa-envelope"></i>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $r['guest_email'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
+4 -4
View File
@@ -894,7 +894,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $startValue, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
}
IPSCONTENT;
endif;
@@ -936,7 +936,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $endValue, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
}
IPSCONTENT;
endif;
@@ -1078,7 +1078,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $startValue, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
}
IPSCONTENT;
endif;
@@ -1121,7 +1121,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $endValue, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
}
IPSCONTENT;
endif;
+106 -116
View File
@@ -5564,7 +5564,7 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reg_change_email', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
' data-ipsDialog-modal='true' class='ipsButton ipsButton_light ipsButton_verySmall'>
' data-ipsDialog-modal='true' class='ipsButton ipsButton--inherit'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'reg_change_email', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -9906,33 +9906,34 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_settings_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
</div>
<div class='i-padding_3'>
<p class='i-margin-bottom_4'>
<p class=''>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_ucp_blurb', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
<div class='ipsBlockSpacer'>
</div>
<div class='ipsGrid ipsGrid--lines ipsGrid--auto-fit ipsGrid--settingsMfa i-basis_400'>
IPSCONTENT;
foreach ( $handlers as $key => $handler ):
$return .= <<<IPSCONTENT
<div class="i-padding_3 ipsColumns">
<div class='ipsColumns__primary i-basis_400'>
<h2 class="ipsTitle ipsTitle--h4 i-margin-bottom_1">
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<div class="i-margin-bottom_1 i-flex i-align-items_center i-gap_3 i-flex-wrap_wrap i-row-gap_0">
<h2 class="ipsTitle ipsTitle--h4">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $handler->ucpTitle(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</h2>
IPSCONTENT;
if ( $handler->memberHasConfiguredHandler( \IPS\Member::loggedIn() ) ):
$return .= <<<IPSCONTENT
&nbsp;&nbsp;<span class='i-color_positive'><i class='fa-solid fa-check'></i>
<span class='i-color_positive i-font-weight_600'><i class='fa-solid fa-check'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'enabled', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -9942,82 +9943,74 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</h2>
<p>
</div>
<p>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $handler->ucpDesc(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</p>
</div>
<div class='ipsColumns__secondary'>
<ul class="ipsButtons ipsButtons--start">
</div>
<ul class="ipsButtons ipsButtons--start i-margin-top_3">
IPSCONTENT;
if ( $handler->memberHasConfiguredHandler( \IPS\Member::loggedIn() ) ):
$return .= <<<IPSCONTENT
<li><a href="
<li><a href="
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&area=mfa&act=enable&type={$key}&_new=1" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings_mfa", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
" class="ipsButton ipsButton--small ipsButton--primary">
" class="ipsButton ipsButton--inherit"><i class="fa-solid fa-gear"></i>
IPSCONTENT;
$val = "mfa_{$key}_reauth"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a></li>
<li>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'or', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</li>
<li><a href="
<li><a href="
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&area=mfa&act=disable&type={$key}" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings_mfa", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
" class="i-color_negative" data-confirm>
" class="ipsButton ipsButton--inherit i-color_negative" data-confirm><i class="fa-regular fa-circle-xmark"></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_disable', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a></li>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<li><a href="
<li><a href="
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&area=mfa&act=enable&type={$key}&_new=1" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings_mfa", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
" class="ipsButton ipsButton--small ipsButton--primary">
" class="ipsButton ipsButton--primary"><i class='fa-solid fa-check'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'enable', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a></li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</ul>
</div>
</div>
</ul>
</div>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</div>
</div>
IPSCONTENT;
@@ -10050,41 +10043,47 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 's
$return .= <<<IPSCONTENT
</h2>
</div>
<div class='ipsBlockSpacer i-padding_3'>
<div class="i-padding_3 ipsColumns">
<div class='ipsColumns__primary i-basis_400'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1'>
<div class='ipsGrid ipsGrid--lines ipsGrid--auto-fit ipsGrid--privacySettings i-basis_400'>
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<div class="i-margin-bottom_1 i-flex i-align-items_center i-gap_3 i-flex-wrap_wrap i-row-gap_0">
<h2 class='ipsTitle ipsTitle--h4'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'online_visibility', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<div class="i-font-size_2 i-font-weight_600 i-margin-bottom_1">
IPSCONTENT;
if ( \IPS\Member::loggedIn()->members_bitoptions['is_anon'] ):
$return .= <<<IPSCONTENT
<span class='i-color_negative'><i class='fa-solid fa-xmark'></i>
<span class='i-color_negative i-font-weight_600'><i class='fa-solid fa-xmark'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'online_status_hidden', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<span class='i-color_positive'><i class='fa-solid fa-check'></i>
<span class='i-color_positive i-font-weight_600'><i class='fa-solid fa-check'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'online_status_visible', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</div>
<p>
IPSCONTENT;
@@ -10098,15 +10097,14 @@ IPSCONTENT;
if ( !\IPS\Member::loggedIn()->group['g_hide_online_list'] ):
$return .= <<<IPSCONTENT
<div class='ipsColumns__secondary'>
<div class='ipsButtons ipsButtons--start'>
<ul class="ipsButtons ipsButtons--start i-margin-top_3">
IPSCONTENT;
if ( \IPS\Member::loggedIn()->members_bitoptions['is_anon'] ):
$return .= <<<IPSCONTENT
<a href='
<li><a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=updateAnon&value=0" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10116,14 +10114,14 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'show_online_status', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</a></li>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<a href='
<li><a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=updateAnon&value=1" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10133,15 +10131,14 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'hide_online_status', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</a></li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</div>
</ul>
IPSCONTENT;
@@ -10155,39 +10152,46 @@ IPSCONTENT;
if ( \IPS\Settings::i()->core_datalayer_enabled AND \IPS\Settings::i()->core_datalayer_include_pii AND \IPS\Settings::i()->core_datalayer_member_pii_choice ):
$return .= <<<IPSCONTENT
<div class="i-padding_3 ipsColumns">
<div class='ipsColumns__primary i-basis_400'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1'>
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<div class="i-margin-bottom_1 i-flex i-align-items_center i-gap_3 i-flex-wrap_wrap i-row-gap_0">
<h2 class='ipsTitle ipsTitle--h4'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'datalayer_pii_opt_out', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
&nbsp;&nbsp;
</h2>
IPSCONTENT;
if ( !\IPS\Member::loggedIn()->members_bitoptions['datalayer_pii_optout'] ):
$return .= <<<IPSCONTENT
<span class='i-color_negative'><i class='fa-solid fa-xmark'></i>
<span class='i-color_negative i-font-weight_600'><i class='fa-solid fa-xmark'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'datalayer_omitted', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<span class='i-color_positive'><i class='fa-solid fa-check'></i>
<span class='i-color_positive i-font-weight_600'><i class='fa-solid fa-check'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'datalayer_collected', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</h2>
</div>
<p>
IPSCONTENT;
@@ -10195,15 +10199,14 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'd
$return .= <<<IPSCONTENT
</p>
</div>
<div class='ipsColumns__secondary'>
<div class='ipsButtons ipsButtons--start'>
<ul class="ipsButtons ipsButtons--start i-margin-top_3">
IPSCONTENT;
if ( \IPS\Member::loggedIn()->members_bitoptions['datalayer_pii_optout'] ):
$return .= <<<IPSCONTENT
<a href='
<li><a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=togglePii" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10213,14 +10216,14 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'datalayer_omit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</a></li>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<a href='
<li><a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=togglePii" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10230,15 +10233,14 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'datalayer_collect', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</a></li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</div>
</ul>
</div>
IPSCONTENT;
@@ -10656,38 +10658,36 @@ IPSCONTENT;
$return .= <<<IPSCONTENT
<div class='i-padding_3 ipsBlockSpacer'>
<div class='ipsGrid ipsGrid--lines ipsGrid--auto-fit ipsGrid--privacyDelete i-basis_400 i-border-top_3'>
IPSCONTENT;
if ( \IPS\Settings::i()->pii_type=='on' ):
$return .= <<<IPSCONTENT
<div class="i-padding_3">
<div class='ipsColumns'>
<div class='ipsColumns__primary i-basis_400'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1' id="piiDataRequest">
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1' id="piiDataRequest">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'pii_data_request', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<p>
<p>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'pii_data_request_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
</div>
<div class='ipsColumns__secondary'>
<div class='ipsButtons ipsButtons--start'>
</div>
<div class='ipsButtons ipsButtons--start i-margin-top_3'>
IPSCONTENT;
if ( \IPS\Member\PrivacyAction::canRequestPiiData() AND !\IPS\Member\PrivacyAction::hasPiiRequest(NULL, TRUE ) ):
$return .= <<<IPSCONTENT
<a href='
<a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=requestPiiData" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10698,19 +10698,19 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download_pii_data_request', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( \IPS\Member\PrivacyAction::hasPiiRequest(NULL, TRUE ) ):
$return .= <<<IPSCONTENT
<a href='
<a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=downloadPiiData" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10721,14 +10721,12 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download_pii_data', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</div>
</div>
IPSCONTENT;
@@ -10755,8 +10753,8 @@ IPSCONTENT;
elseif ( \IPS\Settings::i()->pii_type=='redirect' ):
$return .= <<<IPSCONTENT
<div class="i-padding_3 ipsColumns">
<div class='ipsColumns__primary i-basis_400'>
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1' id="piiDataRequest">
IPSCONTENT;
@@ -10770,9 +10768,8 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'p
$return .= <<<IPSCONTENT
</p>
</div>
<div class='ipsColumns__secondary'>
<div class='ipsButtons ipsButtons--start'>
<a href='
<div class='ipsButtons ipsButtons--start i-margin-top_3'>
<a href='
IPSCONTENT;
$return .= \IPS\Settings::i()->pii_link;
@@ -10783,7 +10780,6 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download_pii_data_request', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</div>
</div>
</div>
@@ -10798,31 +10794,29 @@ IPSCONTENT;
if ( \IPS\Member::loggedIn()->canUseAccountDeletion() ):
$return .= <<<IPSCONTENT
<div class="i-padding_3">
<div class='ipsColumns'>
<div class='ipsColumns__primary i-basis_400'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1' id="requestAccountDeletion">
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1' id="requestAccountDeletion">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'account_deletion', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<p>
<p>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'account_deletion_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
</div>
</div>
IPSCONTENT;
if ( \IPS\Member\PrivacyAction::canDeleteAccount() ):
$return .= <<<IPSCONTENT
<div class='ipsColumns__secondary'>
<div class='ipsButtons ipsButtons--start'>
<a href='
<div class='ipsButtons ipsButtons--start i-margin-top_3'>
<a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=settings&do=requestAccountDeletion" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "settings", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -10833,15 +10827,13 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'request_account_deletion', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</div>
</div>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
@@ -10892,8 +10884,8 @@ IPSCONTENT;
elseif ( \IPS\Settings::i()->right_to_be_forgotten_type=='redirect' ):
$return .= <<<IPSCONTENT
<div class="i-padding_3 ipsColumns">
<div class='ipsColumns__primary i-basis_400'>
<div class="i-padding_4 i-flex i-flex-direction_column">
<div class='i-flex_11'>
<h2 class='ipsTitle ipsTitle--h4 i-margin-bottom_1' id="requestAccountDeletion">
IPSCONTENT;
@@ -10907,9 +10899,8 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'a
$return .= <<<IPSCONTENT
</p>
</div>
<div class='ipsColumns__secondary'>
<div class='ipsButtons ipsButtons--start'>
<a href='
<div class='ipsButtons ipsButtons--start i-margin-top_3'>
<a href='
IPSCONTENT;
$return .= \IPS\Settings::i()->right_to_be_forgotten_link;
@@ -10920,7 +10911,6 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'request_account_deletion', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</div>
</div>
</div>
+4 -2
View File
@@ -501,7 +501,8 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
>
<label for='
<div class="theme-editor__align-setting">
<label for='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $setting->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -510,7 +511,7 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $setting->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</label>
<button class='theme-editor__revert' type='button' data-revert='
<button class='theme-editor__revert' type='button' data-revert='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $setting->key, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -535,6 +536,7 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'theme_editor_revert', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span></button>
</div>
<div class='theme-editor__input-file'>
<input type='file' accept='image/*' id='
IPSCONTENT;
+4 -6
View File
@@ -1186,7 +1186,7 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'save_chart_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
' class='ipsButton ipsButton--primary ipsButton--small' data-role='saveReport'
' class='ipsButton ipsButton--inherit ipsButton--small' data-role='saveReport'
IPSCONTENT;
if ( !\IPS\Widget\Request::i()->chartId OR \IPS\Widget\Request::i()->chartId == '_default' ):
@@ -2992,7 +2992,9 @@ if ( !\IPS\Widget\Request::i()->isAjax() ):
$return .= <<<IPSCONTENT
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
IPSCONTENT;
@@ -3595,10 +3597,6 @@ IPSCONTENT;
if ( \count( $apple ) ):
$return .= <<<IPSCONTENT
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
IPSCONTENT;
+17 -13
View File
@@ -1126,9 +1126,9 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'g
$return .= <<<IPSCONTENT
</div>
<ul class="i-padding_3 i-background_3" data-role="codeInput">
<li class="ipsFieldRow " id="google_authenticator_form_google_authenticator_setup_code">
<div class="ipsFieldRow__content">
<ul class="i-padding_2" data-role="codeInput">
<li class="" id="google_authenticator_form_google_authenticator_setup_code">
<div class="">
<input type="text" name="google_authenticator_auth_code" value="" class="ipsInput ipsInput--text
IPSCONTENT;
@@ -1160,9 +1160,9 @@ $return .= <<<IPSCONTENT
</div>
</li>
<li>
<li class="i-margin-top_2">
<button type='submit' class='ipsButton ipsButton--primary ipsButton--wide'>
<i class='fa-solid fa-lock'></i> &nbsp;
<i class='fa-solid fa-lock'></i>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'google_submit_code', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -1667,8 +1667,7 @@ IPSCONTENT;
if ( \IPS\Dispatcher::i()->controllerLocation !== 'admin' ):
$return .= <<<IPSCONTENT
<div class="i-margin-top_2">
<a class="ipsButton--text ipsButton--text--light i-font-size_2" href="
<a class="ipsButton ipsButton--text ipsModal__close" href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $url->setQueryString( array( '_mfaCancel' => 1 ) )->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -1678,9 +1677,14 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_back', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
">
<i class="fa-solid fa-arrow-left"></i>
<i class="fa-solid fa-xmark"></i>
<span class="ipsInvisible">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_back', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
</a>
</div>
IPSCONTENT;
@@ -1706,12 +1710,12 @@ $return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Session::i()->csrfKey, EN
$return .= <<<IPSCONTENT
">
{$screen}
<div class="i-background_3 i-text-align_center i-padding_3 i-padding-top_0 cOtherMethod">
<div class="i-background_2 i-text-align_center i-padding_2 cOtherMethod">
<a href='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $url->setQueryString( array( '_mfa' => 'alt', '_mfaMethod' => '' ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
' class='ipsButton ipsButton--text ipsButton--wide'>
' class='ipsButton ipsButton--inherit ipsButton--wide'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'mfa_try_another_method', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -2113,7 +2117,7 @@ IPSCONTENT;
if ( \IPS\Settings::i()->mfa_required_groups != '*' and !$member->inGroup( explode( ',', \IPS\Settings::i()->mfa_required_groups ) ) ):
$return .= <<<IPSCONTENT
<div class="i-background_3 i-text-align_center i-padding_3 i-padding-top_0 cOtherMethod">
<div class="i-background_2 i-text-align_center i-padding_2 cOtherMethod">
<a href='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $url->setQueryString( '_mfa', 'optout' )->csrf(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -2170,7 +2174,7 @@ IPSCONTENT;
$thisUrl = \IPS\Widget\Request::i()->url();
$return .= <<<IPSCONTENT
<div class="i-background_3 i-text-align_center i-padding_3 i-padding-top_0 cOtherMethod">
<div class="i-background_2 i-text-align_center i-padding_2 cOtherMethod">
<a href='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $thisUrl->stripQueryString(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
+8 -7
View File
@@ -219,7 +219,7 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( json_encode( $value ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
'>
<ul data-role="fieldsArea"></ul>
<ul data-role="fieldsArea" class="i-grid i-gap_2 i-margin-bottom_2"></ul>
<a class="ipsButton ipsButton--soft ipsButton--small" data-action="addField"><i class="fa-solid fa-plus-circle"></i>
IPSCONTENT;
@@ -679,17 +679,18 @@ $return .= \IPS\Theme\Template::htmlspecialchars( \count( $form->elements['']['u
$return .= <<<IPSCONTENT
</span>
</button>
<div id='elURLScreenshots_menu' class='ipsMenu ipsMenu_wide ipsHide i-padding_3'>
<ul class='ipsFieldRow--fullWidth'>
<div id='elURLScreenshots_menu' class='ipsMenu ipsMenu_wide ipsHide'>
<ul class="ipsForm ipsForm--vertical">
{$form->elements['']['url_screenshots']}
</ul>
<hr class='ipsHr'>
<a href='#' class='ipsButton ipsButton--wide ipsButton--primary' data-action='confirmScreenshotUrls'>
<li class="ipsSubmitRow">
<button type="button" class='ipsButton ipsButton--wide ipsButton--primary' data-action='confirmScreenshotUrls'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'submit_menu_confirm', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</button>
</li>
</ul>
</div>
</li>
</ul>
+48 -6
View File
@@ -370,7 +370,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
if ( \IPS\Application::appIsEnabled('cloud') AND \IPS\cloud\Application::featureIsEnabled( 'realtime' ) ):
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'realtime' ) ):
$return .= <<<IPSCONTENT
<div data-controller="cloud.front.realtime.whosViewing" data-location="
@@ -670,7 +670,17 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<div data-controller="forums.front.forum.forumPage,cloud.front.realtime.viewingProvider">
<div data-controller="forums.front.forum.forumPage
IPSCONTENT;
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'realtime' ) ):
$return .= <<<IPSCONTENT
,cloud.front.realtime.viewingProvider
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
">
IPSCONTENT;
@@ -2864,7 +2874,17 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
" data-controller="cloud.front.realtime.forumsTopicRow"
"
IPSCONTENT;
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'realtime' ) ):
$return .= <<<IPSCONTENT
data-controller="cloud.front.realtime.forumsTopicRow"
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $row->unread() ):
@@ -3959,7 +3979,17 @@ IPSCONTENT;
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/forums/topicRowSnippet", "topicRow:before", [ $table,$headers,$rows ] );
$return .= <<<IPSCONTENT
<li data-ips-hook="topicRow" data-controller="cloud.front.realtime.forumsTopicRow" class="ipsData__item ipsData__item--snippet
<li data-ips-hook="topicRow"
IPSCONTENT;
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'realtime' ) ):
$return .= <<<IPSCONTENT
data-controller="cloud.front.realtime.forumsTopicRow"
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
class="ipsData__item ipsData__item--snippet
IPSCONTENT;
if ( $row->groupsPosted ):
@@ -3972,7 +4002,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
if ( $row->isAssignedToMember() ):
if ( \IPS\Member::loggedIn()->modPermissions() and $row->isAssignedToMember() ):
$return .= <<<IPSCONTENT
ipsData__item--assigned
IPSCONTENT;
@@ -4169,13 +4199,25 @@ IPSCONTENT;
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/forums/topicRowSnippet", "badges:inside-start", [ $table,$headers,$rows ] );
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( \IPS\Member::loggedIn()->modPermissions() ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->assignmentBadge( $row, '' );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $row->prefix() ):
+31 -3
View File
@@ -4022,7 +4022,17 @@ IPSCONTENT;
if ( $movedTo = $row->movedTo() AND $movedTo->container()->can('view') ):
$return .= <<<IPSCONTENT
<li class="ipsData__item" data-controller="cloud.front.realtime.forumsTopicRow">
<li class="ipsData__item"
IPSCONTENT;
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'realtime' ) ):
$return .= <<<IPSCONTENT
data-controller="cloud.front.realtime.forumsTopicRow"
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
>
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $movedTo->url( "getPrefComment" ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -4848,7 +4858,15 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
>
data-stattype="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $k, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" data-v="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $v, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
">
<span class="ipsData__stats-icon" data-stat-value="
IPSCONTENT;
@@ -5413,7 +5431,17 @@ IPSCONTENT;
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/index/simplifiedTopicRowSnippet", "row:before", [ $table,$headers,$rows ] );
$return .= <<<IPSCONTENT
<li data-ips-hook="row" data-controller="cloud.front.realtime.forumsTopicRow" class="ipsData__item ipsData__item--snippet
<li data-ips-hook="row"
IPSCONTENT;
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'realtime' ) ):
$return .= <<<IPSCONTENT
data-controller="cloud.front.realtime.forumsTopicRow"
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
class="ipsData__item ipsData__item--snippet
IPSCONTENT;
if ( $row->groupsPosted ):
+1 -1
View File
@@ -4576,7 +4576,7 @@ $return .= <<<IPSCONTENT
"
IPSCONTENT;
if ( \IPS\Application::appIsEnabled('cloud') AND \IPS\cloud\Application::featureIsEnabled( 'realtime' ) ):
if ( \IPS\Platform\Bridge::i()->featureIsEnabled( 'realtime' ) ):
$return .= <<<IPSCONTENT
data-controller="cloud.front.realtime.forumsReplyArea,cloud.front.realtime.whosTyping"
IPSCONTENT;
+51 -33
View File
@@ -1415,9 +1415,26 @@ IPSCONTENT;
$return = '';
$return .= <<<IPSCONTENT
<div data-controller='core.front.core.reviewForm'>
<div>
<form accept-charset='utf-8' class="ipsFormWrap ipsFormWrap--gallery-review" action="
<div class="ipsComposeAreaWrapper">
<div class='ipsComposeArea ipsComposeArea--review'
IPSCONTENT;
if ( \IPS\Member::loggedIn()->member_id ):
$return .= <<<IPSCONTENT
data-controller='core.front.core.reviewForm'
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
>
<div class='ipsComposeArea__photo'>
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( \IPS\Member::loggedIn(), 'fluid' );
$return .= <<<IPSCONTENT
</div>
<div class='ipsComposeArea_editor'>
<form accept-charset='utf-8' class="ipsFormWrap ipsFormWrap--gallery-review" action="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $action->setQueryString( '_review', 1 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -1432,18 +1449,18 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
>
<input type="hidden" name="
<input type="hidden" name="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
_submitted" value="1">
IPSCONTENT;
foreach ( $hiddenValues as $k => $v ):
$return .= <<<IPSCONTENT
<input type="hidden" name="
<input type="hidden" name="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $k, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -1452,43 +1469,43 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $v, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
">
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $uploadField ):
$return .= <<<IPSCONTENT
<input type="hidden" name="MAX_FILE_SIZE" value="
<input type="hidden" name="MAX_FILE_SIZE" value="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $uploadField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
">
<input type="hidden" name="plupload" value="
<input type="hidden" name="plupload" value="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( md5( mt_rand() ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
">
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( !isset( \IPS\Widget\Request::i()->_review ) and \IPS\Member::loggedIn()->member_id ):
$return .= <<<IPSCONTENT
<div data-role='reviewIntro' class="i-padding_3">
<h3 class="i-margin-bottom_2"><strong class="i-color_hard i-font-weight_600">
<div data-role='reviewIntro' class="i-padding_3">
<h3 class="i-margin-bottom_2"><strong class="i-color_hard i-font-weight_600">
IPSCONTENT;
$sprintf = array(\IPS\Member::loggedIn()->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'review_intro_1', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
@@ -1499,67 +1516,68 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'review_intro_2', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</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>
<button type="button" class='ipsButton ipsButton--primary ipsButton--small' data-action='writeReview'><i class="fa-regular fa-pen-to-square"></i><span>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'write_a_review', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span></a>
</div>
</span></button>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<ul class='ipsForm ipsForm--vertical ipsForm--gallery-review
<ul class='ipsForm ipsForm--vertical ipsForm--gallery-review' data-role='reviewForm'
IPSCONTENT;
if ( !isset( \IPS\Widget\Request::i()->_review ) and \IPS\Member::loggedIn()->member_id ):
$return .= <<<IPSCONTENT
ipsJS_hide
hidden
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
i-padding_3' data-role='reviewForm'>
>
IPSCONTENT;
foreach ( $elements as $collection ):
$return .= <<<IPSCONTENT
IPSCONTENT;
foreach ( $collection as $input ):
$return .= <<<IPSCONTENT
{$input}
{$input}
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
<li class='ipsFieldRow'>
<div class='ipsFieldRow__content'>
<button type='submit' class='ipsButton ipsButton--primary'><i class="fa-regular fa-pen-to-square"></i><span>
<li class='ipsFieldRow'>
<div class='ipsFieldRow__content'>
<button type='submit' class='ipsButton ipsButton--primary'><i class="fa-regular fa-pen-to-square"></i><span>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'add_review', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span></button>
</div>
</li>
</ul>
</form>
</div>
</li>
</ul>
</form>
</div>
</div>
</div>
IPSCONTENT;
+1 -1
View File
@@ -4247,7 +4247,7 @@ $return .= <<<IPSCONTENT
<div class="ipsReviewResponse i-padding_3 i-margin-bottom_3 i-background_2">
<div class="i-flex i-align-items_center i-justify-content_space-between i-margin-bottom_2">
<h4 class="ipsTitle ipsTitle--h3">
<h4 class="ipsTitle ipsTitle--h5">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'review_response_title', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );