Version 5.0.0 beta 10
This commit is contained in:
1 parent
56979f8ee8
commit
264eeb97e0
325 files changed
+6442
-1849
No files matched your search
+181
-178
@@ -582,11 +582,11 @@
|
||||
{$alert->content|raw}
|
||||
</div>
|
||||
|
||||
{{if $alert->reply === 2 and $alert->author()->member_id and ! $alert->anonymous and ! member.canUseMessenger()}}
|
||||
{{if $alert->reply === \IPS\core\Alerts\Alert::REPLY_REQUIRED and $alert->author()->member_id and ! $alert->anonymous and ! member.canUseMessenger()}}
|
||||
<div data-role="reply-prompt" class="i-padding_2 i-color_soft i-font-size_-2">
|
||||
<span class="ipsBadge ipsBadge--icon ipsBadge--negative"><i class="fa-solid fa-info"></i></span> {lang="alert_must_reply_modal_but_no_messenger" sprintf="$alert->author()->name"}
|
||||
</div>
|
||||
{{elseif $alert->reply == 2 and $alert->author()->member_id and ! $alert->anonymous}}
|
||||
{{elseif $alert->reply == \IPS\core\Alerts\Alert::REPLY_REQUIRED and $alert->author()->member_id and ! $alert->anonymous}}
|
||||
<div data-role="reply-prompt" class="i-padding_2 i-color_soft i-font-size_-2">
|
||||
<span class="ipsBadge ipsBadge--icon ipsBadge--negative"><i class="fa-solid fa-info"></i></span> {lang="alert_must_reply_modal" sprintf="$alert->author()->name"}
|
||||
</div>
|
||||
@@ -598,7 +598,7 @@
|
||||
{{endif}}
|
||||
<div class='ipsSubmitRow'>
|
||||
<div class='i-flex i-align-items_center i-justify-content_end i-gap_2'>
|
||||
{{if ( $alert->reply !== 2 or !$alert->author()->member_id ) or ( $alert->reply === 2 and ! member.canUseMessenger() ) }}
|
||||
{{if ( $alert->reply !== \IPS\core\Alerts\Alert::REPLY_REQUIRED or !$alert->author()->member_id ) or ( $alert->reply === \IPS\core\Alerts\Alert::REPLY_REQUIRED and ! member.canUseMessenger() ) }}
|
||||
<a class="ipsButton ipsButton--secondary ipsButton--small" href="{url="app=core&module=system&controller=alerts&do=dismiss&id={$alert->id}" seoTemplate="alert" csrf="true"}" data-role="dismiss">{lang="alert_dismiss"}</a>
|
||||
{{endif}}
|
||||
{{if !$alert->anonymous and $alert->reply and $alert->author()->member_id and member.canUseMessenger()}}
|
||||
@@ -3764,10 +3764,9 @@
|
||||
<div class='ipsMessage ipsMessage--info'>
|
||||
{lang="template_variables_save_warning_msg"}
|
||||
</div>
|
||||
<p class='ipsType_textBlock'>
|
||||
<p class='i-font-weight_600 i-color_hard i-margin-top_3 i-margin-bottom_1'>
|
||||
{lang="theme_template_variables_info"}
|
||||
</p>
|
||||
<br>
|
||||
<textarea class='ipsInput ipsInput--text ipsInput--fullWidth' data-role='variables' placeholder='{lang="theme_template_variables"}'></textarea>
|
||||
<input type='hidden' name='_variables_fileid' value=''>
|
||||
<input type='hidden' name='_variables_type' value=''>
|
||||
@@ -3781,10 +3780,9 @@
|
||||
<div id='elTemplateEditor_attributesDialog' class='ipsHide'>
|
||||
<div>
|
||||
<div class='i-padding_3'>
|
||||
<p class='ipsType_textBlock'>
|
||||
<p class='i-font-weight_600 i-color_hard i-margin-top_3 i-margin-bottom_1'>
|
||||
{lang="theme_css_attributes"}
|
||||
</p>
|
||||
<br>
|
||||
<input class='ipsInput ipsInput--text ipsInput--fullWidth' data-role='variables' placeholder="e.g. media='screen'">
|
||||
<input type='hidden' name='_variables_fileid' value=''>
|
||||
<input type='hidden' name='_variables_type' value=''>
|
||||
@@ -6686,18 +6684,18 @@
|
||||
{{endif}}
|
||||
{{if \count( $form->elements ) < 2}}
|
||||
{{if \IPS\Member::loggedIn()->language()->checkKeyExists( 'profile_step_text_' . $step->id ) and \IPS\Member::loggedIn()->language()->words[ 'profile_step_text_' . $step->id ]}}
|
||||
<div class='i-padding_3'>
|
||||
<div class='i-padding_2'>
|
||||
<div class="ipsMessage ipsMessage--info">
|
||||
{lang="profile_step_text_{$step->id}"}
|
||||
</div>
|
||||
</div>
|
||||
{{endif}}
|
||||
<div class="i-padding_3">
|
||||
<div class="">
|
||||
{{if !empty( $sidebar )}}
|
||||
<div class='ipsColumns'>
|
||||
<div class='ipsColumns__primary'>
|
||||
{{endif}}
|
||||
<ul>
|
||||
<ul class="ipsForm ipsForm--vertical">
|
||||
{{foreach $elements as $collection}}
|
||||
{{foreach $collection as $input}}
|
||||
{{if \is_object( $input ) }}
|
||||
@@ -6718,7 +6716,7 @@
|
||||
</div>
|
||||
{{else}}
|
||||
{{if \IPS\Member::loggedIn()->language()->checkKeyExists( 'profile_step_text_' . $step->id ) and \IPS\Member::loggedIn()->language()->words[ 'profile_step_text_' . $step->id ]}}
|
||||
<div class='i-padding_3'>
|
||||
<div class='i-padding_2'>
|
||||
<div class="ipsMessage ipsMessage--info">
|
||||
{lang="profile_step_text_{$step->id}"}
|
||||
</div>
|
||||
@@ -6734,10 +6732,10 @@
|
||||
</div>
|
||||
{template="tabScrollers" app="core" group="global" location="global"}
|
||||
</i-tabs>
|
||||
<div id='ipsTabs_{$id}_content' class='ipsTabs__panels ipsTabs__panels--padded'>
|
||||
<div id='ipsTabs_{$id}_content' class='ipsTabs__panels'>
|
||||
{{foreach $elements as $name => $content}}
|
||||
<div id='ipsTabs_{$id}_{$name}_panel' class="ipsTabs__panel" role="tabpanel" aria-labelledby="ipsTabs_{$id}_{$name}" {{if $name != request.tab}}hidden{{endif}}>
|
||||
<ul>
|
||||
<ul class="ipsForm ipsForm--vertical">
|
||||
{{foreach $content as $input}}
|
||||
{{if \is_object( $input ) }}
|
||||
{$input->rowHtml($form)|raw}
|
||||
@@ -9789,28 +9787,28 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
|
||||
<div class='cAcpSearch_results ipsScrollbar' data-role="searchResults"><div class="cAcpSearch_none ipsEmptyMessage">{lang="no_results"}</div></div>
|
||||
</div>
|
||||
</div>
|
||||
<ul id='elAdminUser_menu' class='ipsMenu ipsMenu_narrow ipsHide'>
|
||||
<li class='ipsMenu_item'><a href='{url="app=core&module=members&controller=members&do=adminDetails"}' data-ipsDialog data-ipsDialog-url='{url="app=core&module=members&controller=members&do=adminDetails"}' data-ipsDialog-title='{lang="change_details"}' data-ipsDialog-size='medium'><i class='fa-solid fa-pencil'></i> {lang="change_details"}</a></li>
|
||||
<ul id='elAdminUser_menu' class='ipsMenu ipsMenu_auto ipsHide'>
|
||||
<li class='ipsMenu_item'><a href='{url="app=core&module=members&controller=members&do=adminDetails"}' data-ipsDialog data-ipsDialog-url='{url="app=core&module=members&controller=members&do=adminDetails"}' data-ipsDialog-title='{lang="change_details"}' data-ipsDialog-size='medium'><i class='fa-solid fa-user'></i> {lang="change_details"}</a></li>
|
||||
<li class='ipsMenu_item ipsMenu_subItems elThemeMenu-wrap'>
|
||||
<a href='#elThemeMenu_menu' id='elThemeMenu'>
|
||||
<i class='fa-solid fa-paintbrush'></i> {lang="theme"}
|
||||
<i class='fa-solid fa-paintbrush'></i> {lang="theme"}
|
||||
</a>
|
||||
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide" id="elThemeMenu_menu">
|
||||
<li class="elThemeMenu__auto ipsCursor_pointer ipsMenu_item {{if !isset(\IPS\Request::i()->cookie['acptheme']) OR !\IPS\Request::i()->cookie['acptheme']}}ipsMenu_itemChecked{{endif}}" data-ipsMenuValue="os">
|
||||
<span>{lang="acptheme_os_preference"}</span>
|
||||
<button type="button">{lang="acptheme_os_preference"}</button>
|
||||
</li>
|
||||
<li class="ipsCursor_pointer ipsMenu_item {{if isset(\IPS\Request::i()->cookie['acptheme']) AND \IPS\Request::i()->cookie['acptheme'] == 'light'}}ipsMenu_itemChecked{{endif}}" data-ipsMenuValue="light">
|
||||
<span>{lang="acptheme_light"}</span>
|
||||
<button type="button">{lang="acptheme_light"}</button>
|
||||
</li>
|
||||
<li class="ipsCursor_pointer ipsMenu_item {{if isset(\IPS\Request::i()->cookie['acptheme']) AND \IPS\Request::i()->cookie['acptheme'] == 'dark'}}ipsMenu_itemChecked{{endif}}" data-ipsMenuValue="dark">
|
||||
<span>{lang="acptheme_dark"}</span>
|
||||
<button type="button">{lang="acptheme_dark"}</button>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
{{$languages = \IPS\Lang::roots();}}
|
||||
{{if \count( $languages ) > 1}}
|
||||
<li class='ipsMenu_item ipsMenu_subItems'>
|
||||
<a href='#elNavLang_menu' id='elNavLang'><i class='fa-solid fa-earth-americas'></i> {lang='acp_language'}</a>
|
||||
<a href='#elNavLang_menu' id='elNavLang'><i class='fa-solid fa-earth-americas'></i> {lang='acp_language'}</a>
|
||||
<ul id='elNavLang_menu' class='ipsMenu ipsMenu_selectable ipsHide'>
|
||||
{{foreach $languages as $id => $lang }}
|
||||
<li class='ipsMenu_item{{if \IPS\Member::loggedIn()->acp_language == $id || ( $lang->default && \IPS\Member::loggedIn()->acp_language === 0 )}} ipsMenu_itemChecked{{endif}}'>
|
||||
@@ -9821,7 +9819,7 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
|
||||
</li>
|
||||
{{endif}}
|
||||
<li class='ipsMenu_sep'><hr></li>
|
||||
<li class='ipsMenu_item'><a href='{url="app=core&module=system&controller=login&do=logout" csrf="true"}'><i class='fa-solid fa-power-off'></i> {lang="sign_out"}</a></li>
|
||||
<li class='ipsMenu_item'><a href='{url="app=core&module=system&controller=login&do=logout" csrf="true"}'><i class='fa-solid fa-power-off'></i> {lang="sign_out"}</a></li>
|
||||
</ul>
|
||||
{{if isset( \IPS\Output::i()->sidebar['mobilenav'] )}}{expression="\IPS\Output::i()->sidebar['mobilenav']" raw="true"}{{endif}}
|
||||
</body>
|
||||
@@ -10183,6 +10181,7 @@ data-ips-scheme='{theme="scheme"}'
|
||||
data-ips-scheme-active='{theme="scheme"}'
|
||||
data-ips-scheme-default='{theme="var.set__i-default-scheme"}'
|
||||
data-ips-theme="{theme="id"}"
|
||||
data-ips-scheme-toggle="{{if cssvar.set__i-change-scheme == "1"}}true{{else}}false{{endif}}"
|
||||
|
||||
{{if \IPS\Member::loggedIn()->member_id }}
|
||||
data-ips-member='{expression="member.member_id"}'
|
||||
@@ -12973,7 +12972,7 @@ setTimeout( function() {
|
||||
{{else}}
|
||||
<a href='{$contentURL}' data-ipsDialog data-ipsDialog-destructOnClose data-ipsDialog-size='medium' data-ipsDialog-title='{lang="see_who_reacted"}' title='{lang="see_who_reacted"}' data-ipsTooltip data-ipsTooltip-label='{$names|doubleencode}' data-ipsTooltip-json data-ipsTooltip-safe>{$lang}</a>
|
||||
{{endif}}]]></template>
|
||||
<template template_group="global" template_name="review" template_data="$item, $review, $editorName, $app, $type" template_location="front" template_app="core"><![CDATA[<div id='review-{$review->id}_wrap' data-controller='core.front.core.comment' data-feedid="{$review->feedId}" data-commentApp='{$app}' data-commentType='{$type}-review' data-commentID="{$review->id}" data-quoteData='{expression="json_encode( array('userid' => $review->author()->member_id, 'username' => $review->author()->name, 'timestamp' => $review->mapped('date'), 'contentapp' => $app, 'contenttype' => $type, 'contentid' => $item->id, 'contentcommentid' => $review->id) )"}' class='ipsEntry__content js-ipsEntry__content'
|
||||
<template template_group="global" template_name="review" template_data="$item, $review, $editorName, $app, $type" template_location="front" template_app="core"><![CDATA[<div data-ips-hook="reviewWrap" id='review-{$review->id}_wrap' data-controller='core.front.core.comment' data-feedid="{$review->feedId}" data-commentApp='{$app}' data-commentType='{$type}-review' data-commentID="{$review->id}" data-quoteData='{expression="json_encode( array('userid' => $review->author()->member_id, 'username' => $review->author()->name, 'timestamp' => $review->mapped('date'), 'contentapp' => $app, 'contenttype' => $type, 'contentid' => $item->id, 'contentcommentid' => $review->id) )"}' class='ipsEntry__content js-ipsEntry__content'
|
||||
{{if \IPS\IPS::classUsesTrait( $review, 'IPS\Content\IntersectionViewTracking' ) AND $hash=$review->getViewTrackingHash()}}
|
||||
data-view-hash="{$hash|raw}"
|
||||
data-view-tracking-data="{expression="base64_encode(json_encode( $review->getViewTrackingData() ))" raw="true"}"
|
||||
@@ -12982,14 +12981,14 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
<header class='ipsEntry__header'>
|
||||
<div class='ipsEntry__header-align'>
|
||||
<div class='ipsPhotoPanel'>
|
||||
<div class='ipsAvatarStack'>
|
||||
<div class='ipsAvatarStack' data-ips-hook="reviewUserPhoto">
|
||||
{template="userPhoto" app="core" group="global" params="$review->author(), 'fluid', $review->warningRef()"}
|
||||
{{if $review->author()->canHaveAchievements() and \IPS\core\Achievements\Rank::show() and $rank = $review->author()->rank()}}
|
||||
{$rank->html( 'ipsAvatarStack__rank' )|raw}
|
||||
{{endif}}
|
||||
</div>
|
||||
<div class='ipsPhotoPanel__text'>
|
||||
<div class='ipsEntry__username'>
|
||||
<div data-ips-hook="reviewUsername" class='ipsEntry__username'>
|
||||
<h3>{template="userLink" app="core" group="global" params="$review->author(), $review->warningRef(), NULL, \IPS\IPS::classUsesTrait( $review, 'IPS\Content\Anonymous' ) ? $review->isAnonymous() : FALSE"}</h3>
|
||||
{{if \IPS\IPS::classUsesTrait( $review, 'IPS\Content\Anonymous' ) AND !$review->isAnonymous()}}
|
||||
<span class='ipsEntry__group'>{expression="\IPS\Member\Group::load( $review->author()->member_group_id )->formattedName" raw="true"}</span>
|
||||
@@ -13037,7 +13036,7 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
</div>
|
||||
{{if $review->mapped('votes_total')}}<strong>{$review->helpfulLine()|raw}</strong>{{endif}}
|
||||
|
||||
<div id="review-{$review->id}" class='ipsRichText ipsRichText--user' data-role='commentContent' data-controller='core.front.core.lightboxedImages'>
|
||||
<div data-ips-hook="review" id="review-{$review->id}" class='ipsRichText ipsRichText--user' data-role='commentContent' data-controller='core.front.core.lightboxedImages'>
|
||||
{$review->content()|raw}
|
||||
{{if $review->editLine()}}
|
||||
{$review->editLine()|raw}
|
||||
@@ -13081,9 +13080,9 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
</div>
|
||||
|
||||
{{if ( member.member_id and ( !$review->mapped('votes_data') or !array_key_exists( member.member_id, json_decode( $review->mapped('votes_data'), TRUE ) ) ) ) || $review->canEdit() || $review->canDelete() || $review->canHide() || $review->canUnhide() || ( $review->hidden() !== 1 && \IPS\IPS::classUsesTrait( $review, 'IPS\Content\Reactable' ) and settings.reputation_enabled and $review->hasReactionBar() )}}
|
||||
<div class='ipsEntry__footer'>
|
||||
<div data-ips-hook="reviewFooter" class='ipsEntry__footer'>
|
||||
{{if $review->canEdit() || $review->canDelete() || $review->canHide() || $review->canUnhide() || ( $review->hidden() !== 1 && $review->canRespond() ) }}
|
||||
<menu class='ipsEntry__controls' data-role="commentControls" data-ips-hook="commentControls">
|
||||
<menu class='ipsEntry__controls' data-role="commentControls" data-ips-hook="reviewControls">
|
||||
{{if $review->hidden() === 1 && ( $review->canUnhide() || $review->canDelete() )}}
|
||||
{{if $review->canUnhide()}}
|
||||
<li><a href='{$review->url('unhide')->csrf()}' data-action='approveComment'><i class='fa-solid fa-check'></i><span>{lang="approve"}</span></a></li>
|
||||
@@ -14299,15 +14298,15 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
</div>
|
||||
</div>
|
||||
{{if \in_array( 'authy', $methods )}}
|
||||
<div class='i-text-align_center'>
|
||||
<div class='i-flex i-align-items_center i-justify-content_center i-flex-wrap_wrap i-gap_2'>
|
||||
{{$langCode = mb_substr( \IPS\Member::loggedIn()->language()->bcp47(), 0, 2 );}}
|
||||
<a href="{url="authy_ios" ips="true"}" target="_blank" rel="noopener"><img src="{resource="appstores/ios/{$langCode}.svg" app="core" location="global"}" class="i-margin-block_2"></a>
|
||||
<a href="{url="authy_android" ips="true"}" target="_blank" rel="noopener"><img src="{resource="appstores/android/{$langCode}.png" app="core" location="global"}" style="height: 60px"></a>
|
||||
<a href="{url="authy_ios" ips="true"}" target="_blank" rel="noopener"><img src="{resource="appstores/ios/{$langCode}.svg" app="core" location="global"}" alt=""></a>
|
||||
<a href="{url="authy_android" ips="true"}" target="_blank" rel="noopener"><img src="{resource="appstores/android/{$langCode}.png" app="core" location="global"}" style="height: 60px" alt=""></a>
|
||||
</div>
|
||||
{{endif}}
|
||||
<div class="i-padding_3">
|
||||
<div class='ipsSpanGrid'>
|
||||
<div class='ipsSpanGrid__5 i-text-align_center'>
|
||||
<div class='i-grid i-gap_1'>
|
||||
<div>
|
||||
<select class="ipsInput ipsInput--select" data-sort name="countryCode">
|
||||
{{foreach \IPS\Helpers\Form\Tel::$diallingCodes as $country => $codes}}
|
||||
{{foreach $codes as $code}}
|
||||
@@ -14316,7 +14315,7 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
{{endforeach}}
|
||||
</select>
|
||||
</div>
|
||||
<div class='ipsSpanGrid__7 i-text-align_center'>
|
||||
<div>
|
||||
<input name="phoneNumber" type="tel" class="ipsInput ipsInput--text" value="{$phoneNumber}" placeholder="{lang="authy_placeholder"}" autocomplete="tel-national">
|
||||
</div>
|
||||
</div>
|
||||
@@ -14324,27 +14323,21 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
<p class="i-color_warning">{lang="$error"}</p>
|
||||
{{endif}}
|
||||
</div>
|
||||
<div class="i-padding_3 i-background_3 ipsSpanGrid">
|
||||
<div class="i-padding_3 i-background_3 ipsButtons ipsButtons--fill">
|
||||
{{if \in_array( 'authy', $methods )}}
|
||||
<div class="ipsSpanGrid__12">
|
||||
<button type='submit' name="method" value="authy" class='ipsButton ipsButton--primary ipsButton--wide'>
|
||||
<i class='fa-solid fa-lock'></i> {lang="authy_submit_authy"}
|
||||
</button>
|
||||
</div>
|
||||
<button type='submit' name="method" value="authy" class='ipsButton ipsButton--primary'>
|
||||
<i class='fa-solid fa-lock'></i> {lang="authy_submit_authy"}
|
||||
</button>
|
||||
{{else}}
|
||||
{{if \in_array( 'phone', $methods )}}
|
||||
<div class="ipsSpanGrid__{{if \in_array( 'sms', $methods )}}6{{else}}12{{endif}}">
|
||||
<button type='submit' name="method" value="phone" class='ipsButton ipsButton--primary ipsButton--wide'>
|
||||
<i class='fa-solid fa-phone'></i> {lang="authy_submit_call"}
|
||||
</button>
|
||||
</div>
|
||||
<button type='submit' name="method" value="phone" class='ipsButton ipsButton--primary'>
|
||||
<i class='fa-solid fa-phone'></i> {lang="authy_submit_call"}
|
||||
</button>
|
||||
{{endif}}
|
||||
{{if \in_array( 'sms', $methods )}}
|
||||
<div class="ipsSpanGrid__{{if \in_array( 'phone', $methods )}}6{{else}}12{{endif}}">
|
||||
<button type='submit' name="method" value="sms" class='ipsButton ipsButton--primary ipsButton--wide'>
|
||||
<i class='fa-solid fa-commenting'></i> {lang="authy_submit_sms"}
|
||||
</button>
|
||||
</div>
|
||||
<button type='submit' name="method" value="sms" class='ipsButton ipsButton--primary'>
|
||||
<i class='fa-solid fa-commenting'></i> {lang="authy_submit_sms"}
|
||||
</button>
|
||||
{{endif}}
|
||||
{{endif}}
|
||||
</div>
|
||||
@@ -14407,12 +14400,14 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
</div>
|
||||
<div class='ipsSpanGrid__8 i-text-align_center'>
|
||||
{{$langCode = mb_substr( \IPS\Member::loggedIn()->language()->bcp47(), 0, 2 );}}
|
||||
<a href="{url="googleauth_ios" ips="true"}" target="_blank" rel="noopener"><img src="{resource="appstores/ios/{$langCode}.svg" app="core" location="global"}" class="i-margin-block_2"></a>
|
||||
<a href="{url="googleauth_android" ips="true"}" target="_blank" rel="noopener"><img src="{resource="appstores/android/{$langCode}.png" app="core" location="global"}" style="height: 60px"></a>
|
||||
<div class="i-flex i-align-items_center i-justify-content_center i-flex-wrap_wrap i-gap_2">
|
||||
<a href="{url="googleauth_ios" ips="true"}" target="_blank" rel="noopener"><img src="{resource="appstores/ios/{$langCode}.svg" app="core" location="global"}" alt=""></a>
|
||||
<a href="{url="googleauth_android" ips="true"}" target="_blank" rel="noopener"><img src="{resource="appstores/android/{$langCode}.png" app="core" location="global"}" style="height: 60px" alt=""></a>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<a class="i-cursor_pointer" data-action="showManual">{lang="google_mfa_help"}</a>
|
||||
</p>
|
||||
<div>
|
||||
<button type="button" class="i-cursor_pointer" data-action="showManual">{lang="google_mfa_help"}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -14456,12 +14451,14 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
</div>
|
||||
<div class='ipsSpanGrid__7 i-text-align_center'>
|
||||
{{$langCode = mb_substr( \IPS\Member::loggedIn()->language()->bcp47(), 0, 2 );}}
|
||||
<a href="{url="googleauth_ios" ips="true"}" target="_blank" rel="noopener"><img src="{resource="appstores/ios/{$langCode}.svg" app="core" location="global"}" class="i-margin-block_2"></a>
|
||||
<a href="{url="googleauth_android" ips="true"}" target="_blank" rel="noopener"><img src="{resource="appstores/android/{$langCode}.png" app="core" location="global"}" style="height: 60px"></a>
|
||||
<div class="i-flex i-align-items_center i-justify-content_center i-flex-wrap_wrap i-gap_2">
|
||||
<a href="{url="googleauth_ios" ips="true"}" target="_blank" rel="noopener"><img src="{resource="appstores/ios/{$langCode}.svg" app="core" location="global"}" alt=""></a>
|
||||
<a href="{url="googleauth_android" ips="true"}" target="_blank" rel="noopener"><img src="{resource="appstores/android/{$langCode}.png" app="core" location="global"}" style="height: 60px" alt=""></a>
|
||||
</div>
|
||||
|
||||
<p class='i-text-align_center'>
|
||||
<a class="i-cursor_pointer" data-action="showBarcode">{lang="google_mfa_help_reset"}</a>
|
||||
</p>
|
||||
<div class='i-text-align_center'>
|
||||
<button type="button" class="i-cursor_pointer" data-action="showBarcode">{lang="google_mfa_help_reset"}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -14563,20 +14560,20 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
{lang="mfa_popup_recover_info"}
|
||||
</p>
|
||||
<div class="i-padding_3">
|
||||
<ul>
|
||||
<ul class="ipsButtons ipsButtons--fill">
|
||||
{{foreach $handlers as $key => $handler}}
|
||||
<li class="i-margin-bottom_2">
|
||||
<a href="{$url->setQueryString( array( '_mfa' => 'alt', '_mfaMethod' => $key ) )}" class="ipsButton ipsButton--primary ipsButton--wide">{lang="$handler->recoveryButton()"}</a>
|
||||
<li>
|
||||
<a href="{$url->setQueryString( array( '_mfa' => 'alt', '_mfaMethod' => $key ) )}" class="ipsButton ipsButton--primary">{lang="$handler->recoveryButton()"}</a>
|
||||
</li>
|
||||
{{endforeach}}
|
||||
{{if $knownDevicesAvailable}}
|
||||
<li class="i-margin-bottom_2"><a href="{$url->setQueryString( array( '_mfa' => 'knownDevice' ) )}" class="ipsButton ipsButton--soft ipsButton--wide">{lang="mfa_recovery_known_device"}</a></li>
|
||||
<li><a href="{$url->setQueryString( array( '_mfa' => 'knownDevice' ) )}" class="ipsButton ipsButton--soft">{lang="mfa_recovery_known_device"}</a></li>
|
||||
{{endif}}
|
||||
{{if \in_array( 'email', explode( ',', \IPS\Settings::i()->mfa_forgot_behaviour ) )}}
|
||||
<li class="i-margin-bottom_2"><a href="{url="app=core&module=system&controller=settings&do=mfarecovery" base="front" seoTemplate="mfarecovery"}" class="ipsButton ipsButton--text ipsButton--wide">{lang="mfa_recovery_email"}</a></li>
|
||||
<li><a href="{url="app=core&module=system&controller=settings&do=mfarecovery" base="front" seoTemplate="mfarecovery"}" class="ipsButton ipsButton--text">{lang="mfa_recovery_email"}</a></li>
|
||||
{{endif}}
|
||||
{{if \in_array( 'contact', explode( ',', \IPS\Settings::i()->mfa_forgot_behaviour ) ) and \IPS\Member::loggedIn()->canUseContactUs()}}
|
||||
<li class="i-margin-bottom_2"><a href="{url="app=core&module=contact&controller=contact" base="front" seoTemplate="contact"}" class="ipsButton ipsButton--text ipsButton--wide">{lang="mfa_recovery_contact"}</a></li>
|
||||
<li><a href="{url="app=core&module=contact&controller=contact" base="front" seoTemplate="contact"}" class="ipsButton ipsButton--text">{lang="mfa_recovery_contact"}</a></li>
|
||||
{{endif}}
|
||||
</ul>
|
||||
</div>
|
||||
@@ -14589,14 +14586,14 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
<input type="hidden" name="csrfKey" value="{expression="\IPS\Session::i()->csrfKey"}">
|
||||
{{$checked = NULL;}}
|
||||
{{if \count( $acceptableHandlers ) > 1}}
|
||||
<div class='i-background_3 i-text-align_center'>
|
||||
<div class='i-background_2 i-text-align_center'>
|
||||
<div class='i-padding_3'>
|
||||
<h1 class='i-text-align_center ipsTitle ipsTitle--h3'>{lang="mfa_popup_setup_title"}</h1>
|
||||
<p class='i-margin-top_2 i-margin-inline_auto ipsRichText c2FA_info'>
|
||||
{lang="mfa_setup_multiple"}
|
||||
</p>
|
||||
</div>
|
||||
<i-tabs class='ipsTabs ipsTabs--small ipsTabs--stretch' id='ipsTabs_2fa' data-ipsTabBar data-ipsTabBar-contentArea='#ipsTabs_2fa_content'>
|
||||
<i-tabs class='ipsTabs ipsTabs--small ipsTabs--stretch i-background_2' id='ipsTabs_2fa' data-ipsTabBar data-ipsTabBar-contentArea='#ipsTabs_2fa_content'>
|
||||
<div role='tablist'>
|
||||
{{foreach $acceptableHandlers as $key => $handler}}
|
||||
<button type="button" id='ipsTabs_2fa_{$key}' class="ipsTabs__tab" role="tab" aria-controls="ipsTabs_2fa_{$key}_panel" aria-selected="{{if !$checked}}true{{$checked = $key;}}{{else}}false{{endif}}">
|
||||
@@ -14932,8 +14929,8 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
</div>
|
||||
</div>
|
||||
<div class="i-padding_3">
|
||||
<div class='ipsSpanGrid'>
|
||||
<div class='ipsSpanGrid__5 i-text-align_center'>
|
||||
<div class='i-grid i-gap_2'>
|
||||
<div>
|
||||
<select class="ipsInput ipsInput--select" data-sort name="countryCode">
|
||||
{{foreach \IPS\Helpers\Form\Tel::$diallingCodes as $country => $codes}}
|
||||
{{foreach $codes as $code}}
|
||||
@@ -14942,7 +14939,7 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
{{endforeach}}
|
||||
</select>
|
||||
</div>
|
||||
<div class='ipsSpanGrid__7 i-text-align_center'>
|
||||
<div>
|
||||
<input name="phoneNumber" type="tel" value="{$phoneNumber}" placeholder="{lang="verify_placeholder"}" autocomplete="tel-national">
|
||||
</div>
|
||||
</div>
|
||||
@@ -14950,28 +14947,22 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
<p class="i-color_warning">{lang="$error"}</p>
|
||||
{{endif}}
|
||||
</div>
|
||||
<div class="i-padding_3 i-background_3">
|
||||
{{if \in_array( 'phone', $methods )}}
|
||||
<div class="i-margin-bottom_3">
|
||||
<button type='submit' name="method" value="phone" class='ipsButton ipsButton--primary ipsButton--wide'>
|
||||
<i class='fa-solid fa-phone'></i> {lang="verify_submit_call"}
|
||||
</button>
|
||||
</div>
|
||||
{{endif}}
|
||||
{{if \in_array( 'sms', $methods )}}
|
||||
<div class="i-margin-bottom_3">
|
||||
<button type='submit' name="method" value="sms" class='ipsButton ipsButton--primary ipsButton--wide'>
|
||||
<i class='fa-solid fa-comment-dots'></i> {lang="verify_submit_sms"}
|
||||
</button>
|
||||
</div>
|
||||
{{endif}}
|
||||
{{if \in_array( 'whatsapp', $methods )}}
|
||||
<div class="i-margin-bottom_3">
|
||||
<button type='submit' name="method" value="whatsapp" class='ipsButton ipsButton--primary ipsButton--wide'>
|
||||
<i class='fa-reguar fa-comment'></i> {lang="verify_submit_whatsapp"}
|
||||
</button>
|
||||
</div>
|
||||
{{endif}}
|
||||
<div class="i-padding_3 i-background_3 ipsButtons ipsButtons--fill">
|
||||
{{if \in_array( 'phone', $methods )}}
|
||||
<button type='submit' name="method" value="phone" class='ipsButton ipsButton--primary'>
|
||||
<i class='fa-solid fa-phone'></i> {lang="verify_submit_call"}
|
||||
</button>
|
||||
{{endif}}
|
||||
{{if \in_array( 'sms', $methods )}}
|
||||
<button type='submit' name="method" value="sms" class='ipsButton ipsButton--primary'>
|
||||
<i class='fa-solid fa-comment-dots'></i> {lang="verify_submit_sms"}
|
||||
</button>
|
||||
{{endif}}
|
||||
{{if \in_array( 'whatsapp', $methods )}}
|
||||
<button type='submit' name="method" value="whatsapp" class='ipsButton ipsButton--primary'>
|
||||
<i class='fa-reguar fa-comment'></i> {lang="verify_submit_whatsapp"}
|
||||
</button>
|
||||
{{endif}}
|
||||
</div>
|
||||
{template="mfaSetupOptOut" app="core" group="login" location="global"}
|
||||
</div>]]></template>
|
||||
@@ -17743,10 +17734,10 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
{{if $row->anonymous}}
|
||||
<span class='ipsBadge ipsBadge--neutral ipsBadge--icon'><i class="fa-solid fa-eye" data-ipstooltip="" _title="{lang="alert_anon"}"></i></span>
|
||||
{{else}}
|
||||
{{if $row->reply == 1}}
|
||||
{{if $row->reply == \IPS\core\Alerts\Alert::REPLY_OPTIONAL}}
|
||||
<span class='ipsBadge ipsBadge--neutral ipsBadge--icon'><i class="fa-regular fa-envelope" data-ipstooltip="" _title="{lang="alert_can_reply"}"></i></span>
|
||||
{{endif}}
|
||||
{{if $row->reply == 2}}
|
||||
{{if $row->reply == \IPS\core\Alerts\Alert::REPLY_REQUIRED}}
|
||||
<span class='ipsBadge ipsBadge--neutral ipsBadge--icon'><i class="fa-solid fa-envelope" data-ipstooltip="" _title="{lang="alert_must_reply"}"></i></span>
|
||||
{{endif}}
|
||||
{{endif}}
|
||||
@@ -25161,12 +25152,12 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
</form>]]></template>
|
||||
<template template_group="system" template_name="completeWizardTemplate" template_data="$stepNames, $activeStep, $output, $baseUrl, $showSteps" template_location="front" template_app="core"><![CDATA[
|
||||
<div data-ipsWizard class='ipsWizard'>
|
||||
<div data-role="wizardStepbar">
|
||||
<div data-role="wizardStepbar" class="i-padding_3 i-border-bottom_3 i-background_2 i-border-start-start-radius_box i-border-start-end-radius_box">
|
||||
{{$completion = \intval( (string) \IPS\Member::loggedIn()->profileCompletionPercentage() );}}
|
||||
<progress class="ipsProgress" max='100' value='{expression="\IPS\Member::loggedIn()->profileCompletionPercentage()"}'></progress>
|
||||
<small class='i-color_soft i-display_block'>{lang="profile_completion_percent" sprintf="$completion . '%'"}</small>
|
||||
<small class='i-color_soft i-margin-top_1 i-display_block'>{lang="profile_completion_percent" sprintf="$completion . '%'"}</small>
|
||||
</div>
|
||||
<div data-role="wizardContent" class="ipsBox">
|
||||
<div data-role="wizardContent">
|
||||
{$output|raw}
|
||||
</div>
|
||||
</div>]]></template>
|
||||
@@ -25807,7 +25798,7 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
</div>
|
||||
<div class="">
|
||||
{{if $error}}
|
||||
<div class='ipsMessage ipsMessage--error'>{lang="$error"}</div>
|
||||
<div class='ipsMessage ipsMessage--error i-margin_2'>{lang="$error"}</div>
|
||||
{{endif}}
|
||||
{{$usernamePasswordMethods = $login->usernamePasswordMethods();}}
|
||||
{{$buttonMethods = $login->buttonMethods();}}
|
||||
@@ -25923,17 +25914,19 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
]]></template>
|
||||
<template template_group="system" template_name="loginForm" template_data="$login" template_location="admin" template_app="core"><![CDATA[<ul class='ipsForm ipsForm--vertical ipsForm--admin-login-form'>
|
||||
<li class="ipsFieldRow ipsFieldRow--fullWidth">
|
||||
<label class="ipsFieldRow__label" for="auth">{lang="email_address"}</label>
|
||||
<div class="ipsFieldRow__content">
|
||||
<input class="ipsInput" autofocus type="email" placeholder="{lang="email_address"}" name="auth" id="auth" {{if isset( \IPS\Request::i()->auth )}}value="{request="auth"}"{{endif}} autocomplete="email">
|
||||
</div>
|
||||
</li>
|
||||
<li class="ipsFieldRow ipsFieldRow--fullWidth">
|
||||
<label class="ipsFieldRow__label" for="password">{lang="password"}</label>
|
||||
<div class="ipsFieldRow__content">
|
||||
<input class="ipsInput" type="password" placeholder="{lang="password"}" name="password" id="password" {{if isset( \IPS\Request::i()->password )}}value="{request="password"}"{{endif}} autocomplete="current-password">
|
||||
</div>
|
||||
</li>
|
||||
<li class='ipsFieldRow ipsFieldRow--fullWidth'>
|
||||
<button type='submit' name="_processLogin" value="usernamepassword" class='ipsButton ipsButton--primary'><i class='fa-solid fa-lock'></i> {lang="login"}</button>
|
||||
<li class='ipsSubmitRow'>
|
||||
<button type='submit' name="_processLogin" value="usernamepassword" class='ipsButton ipsButton--primary ipsButton--wide'><i class='fa-solid fa-lock'></i> {lang="login"}</button>
|
||||
</li>
|
||||
</ul>
|
||||
]]></template>
|
||||
@@ -26045,7 +26038,7 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
</div>
|
||||
</div>]]></template>
|
||||
<template template_group="system" template_name="mfaLogin" template_data="$form" template_location="admin" template_app="core"><![CDATA[<!DOCTYPE html>
|
||||
<html lang="{expression="\IPS\Member::loggedIn()->language()->bcp47()"}" dir="{{if member.language()->isrtl}}rtl{{else}}ltr{{endif}}">
|
||||
<html lang="{expression="\IPS\Member::loggedIn()->language()->bcp47()"}" dir="{{if member.language()->isrtl}}rtl{{else}}ltr{{endif}}" {template="htmlDataAttributes" app="core" group="global" location="front" params=""}>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>{lang="login"}</title>
|
||||
@@ -27171,14 +27164,12 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
<div class='i-padding_3'>
|
||||
{{if $form}}
|
||||
{{if \IPS\Settings::i()->reg_auth_type == 'user' or \IPS\Settings::i()->reg_auth_type == 'admin_user'}}
|
||||
<div class='ipsType_textBlock'>
|
||||
<ul class='ipsList ipsList--bullets'>
|
||||
<li>{lang="change_email_explain_1"}</li>
|
||||
<li>
|
||||
{lang="change_email_explain_2"}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<ul class='ipsList ipsList--bullets'>
|
||||
<li>{lang="change_email_explain_1"}</li>
|
||||
<li>
|
||||
{lang="change_email_explain_2"}
|
||||
</li>
|
||||
</ul>
|
||||
<hr class='ipsHr'>
|
||||
{{endif}}
|
||||
{$form|raw}
|
||||
@@ -29409,16 +29400,18 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
|
||||
<form class='editor__form' action='{setting="base_url"}?app=core&module=system&controller=themeeditor&do=save' method='post' enctype='multipart/form-data' role="form">
|
||||
<editor-buttons>
|
||||
<div data-workspace='color'>
|
||||
<button value='light' type='button' data-on-click="changeWorkspace">
|
||||
|
||||
<div data-controller="core.front.core.colorScheme">
|
||||
<button type="button" data-ips-prefers-color-scheme="light">
|
||||
<span class='editor-buttons__tooltip'>{lang="edit_light_colors"}</span>
|
||||
<i class="fa-regular fa-lightbulb"></i>
|
||||
</button>
|
||||
<button value='dark' type='button' data-on-click="changeWorkspace">
|
||||
<button type="button" data-ips-prefers-color-scheme="dark">
|
||||
<span class='editor-buttons__tooltip'>{lang="edit_dark_colors"}</span>
|
||||
<i class="fa-regular fa-moon"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div data-workspace='size'>
|
||||
<button value='small' type='button' data-on-click="changeWorkspace">
|
||||
<span class='editor-buttons__tooltip'>{lang="theme_editor_size_small"}</span>
|
||||
@@ -29680,13 +29673,7 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
|
||||
</theme-editor>
|
||||
|
||||
<button type="button" aria-controls="closeConfirmationDialog" aria-expanded="false" data-ipscontrols id="toggleCloseConfirmationDialog" hidden>Toggle confirmation window</button>
|
||||
|
||||
<div class="sr-only" data-controller="core.front.core.colorScheme">
|
||||
<button type="button" data-ips-prefers-color-scheme="light">{lang="theme_editor_light"}</button>
|
||||
<button type="button" data-ips-prefers-color-scheme="dark">{lang="theme_editor_dark"}</button>
|
||||
<button type="button" data-ips-prefers-color-scheme="system">{lang="theme_editor_system"}</button>
|
||||
</ul>
|
||||
<button type="button" aria-controls="closeConfirmationDialog" aria-expanded="false" data-ipscontrols id="toggleCloseConfirmationDialog" hidden>Toggle confirmation window</button>
|
||||
|
||||
{template="includeJS" app="core" group="global" location="global" params=""}
|
||||
</body>
|
||||
@@ -30860,8 +30847,6 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
|
||||
#elTwoFactorAuthentication > div {
|
||||
max-width: 500px;
|
||||
max-height: 95vh;
|
||||
max-height: 95dvh;
|
||||
background: var(--i-background_1);
|
||||
box-shadow: 0px 5px 55px rgba(0,0,0,0.4);
|
||||
border-radius: 6px;
|
||||
@@ -31448,6 +31433,9 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
|
||||
}
|
||||
|
||||
/* Widgets */
|
||||
.cWidgetsManaging .ipsWidget{
|
||||
isolation: isolate;
|
||||
}
|
||||
.cSidebarBlock_managing{
|
||||
outline: 3px solid var(--i-color_soft);
|
||||
outline-color: color-mix(in srgb, var(--i-color_soft) 30%, transparent);
|
||||
@@ -32464,6 +32452,7 @@ select [value="Roboto black"] {
|
||||
}</css>
|
||||
<css css_location="admin" css_app="core" css_attributes="" css_path="core" css_name="controlstrip.css"><![CDATA[.ipsControlStrip {
|
||||
display: flex;
|
||||
justify-content: end;
|
||||
gap: 4px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
@@ -32473,12 +32462,18 @@ select [value="Roboto black"] {
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
/* Don't stretch buttons on large screens */
|
||||
@media (min-width: 500px){
|
||||
.ipsControlStrip > *{
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
.ipsControlStrip a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: inherit;
|
||||
font-size: 14px;
|
||||
min-width: 2.4em;
|
||||
min-height: 2.4em;
|
||||
border-radius: 5px;
|
||||
@@ -34576,6 +34571,17 @@ body:not( .cAdminHideMenu ) #elHideMenu [data-action="toggleOpen"] {
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
/* Sometimes .ipsTree_controls have different button amounts. This makes them all the same width */
|
||||
.ipsTree:has(.ipsControlStrip > li:nth-child(2)) .ipsControlStrip{
|
||||
min-width: calc((2.4em + 4px) * 2);
|
||||
}
|
||||
.ipsTree:has(.ipsControlStrip > li:nth-child(3)) .ipsControlStrip{
|
||||
min-width: calc((2.4em + 4px) * 3);
|
||||
}
|
||||
.ipsTree:has(.ipsControlStrip > li:nth-child(4)) .ipsControlStrip{
|
||||
min-width: calc((2.4em + 4px) * 4);
|
||||
}
|
||||
|
||||
@media (max-width: 500px){
|
||||
.ipsTree .ipsTree_controls{
|
||||
flex: 1 1 100%;
|
||||
@@ -36804,6 +36810,32 @@ a{
|
||||
margin-block: calc((1lh - var(--i--emo-he)) / 2);
|
||||
}
|
||||
|
||||
/* Flip the arrow direction in RTL */
|
||||
[dir="rtl"] .fa-angles-left{
|
||||
--fa: "\f101";
|
||||
}
|
||||
[dir="rtl"] .fa-angles-right{
|
||||
--fa: "\f100";
|
||||
}
|
||||
[dir="rtl"] .fa-angle-left{
|
||||
--fa: "\f105";
|
||||
}
|
||||
[dir="rtl"] .fa-angle-right{
|
||||
--fa: "\f104";
|
||||
}
|
||||
[dir="rtl"] .fa-arrow-left-long{
|
||||
--fa: "\f178";
|
||||
}
|
||||
[dir="rtl"] .fa-arrow-right-long{
|
||||
--fa: "\f177";
|
||||
}
|
||||
[dir="rtl"] .fa-arrow-left{
|
||||
--fa: "\f061";
|
||||
}
|
||||
[dir="rtl"] .fa-arrow-right{
|
||||
--fa: "\f060";
|
||||
}
|
||||
|
||||
/*
|
||||
----------------
|
||||
- Backdrops
|
||||
@@ -39154,14 +39186,6 @@ a:has(.ipsBadge){
|
||||
}
|
||||
}
|
||||
|
||||
/* Flip the arrow direction in RTL */
|
||||
[dir="rtl"] .ipsPagination__first .fa-angles-left{
|
||||
--i: "\f101";
|
||||
}
|
||||
[dir="rtl"] .ipsPagination__last .fa-angles-right{
|
||||
--i: "\f100";
|
||||
}
|
||||
|
||||
/*
|
||||
----------------
|
||||
- Data filters
|
||||
@@ -39497,12 +39521,12 @@ i-data{
|
||||
/* FA icons have a background which changes based on read/unread status */
|
||||
.ipsData--category [data-ips-read] .ipsData__image .ipsIcon--fa,
|
||||
.ipsData--category [data-ips-unread] .ipsData__image .ipsIcon--fa{
|
||||
--i-co: var(--i-featured, var(--i-secondary));
|
||||
--i-co: var(--i-featured, var(--i-color_secondary));
|
||||
aspect-ratio: var(--i-data--icon-ratio);
|
||||
display: grid;
|
||||
place-content: center;
|
||||
border-radius: var(--i-design-radius);
|
||||
background: color-mix(in srgb, var(--i-co) 10%, transparent);
|
||||
background: color-mix(in srgb, var(--i-co) 15%, transparent);
|
||||
color: var(--i-co);
|
||||
}
|
||||
|
||||
@@ -41758,14 +41782,11 @@ a:has(.ipsContainerTitle){
|
||||
|
||||
.ipsEditor__create-sibling {
|
||||
--i-indicator-size: 20px;
|
||||
--i-font-size: calc(var(--i-indicator-size) * 0.55);
|
||||
--i-hz-offset: 1em;
|
||||
padding-inline-start: calc(var(--i-indicator-size) / 10);
|
||||
position: absolute;
|
||||
height: var(--i-indicator-size);
|
||||
width: var(--i-indicator-size);
|
||||
line-height: var(--i-font-size);
|
||||
font-size: var(--i-font-size);
|
||||
font-size: .6em;
|
||||
color: var(--i-primary-contrast);
|
||||
background: var(--i-primary);
|
||||
border-radius: 50%;
|
||||
@@ -41816,7 +41837,7 @@ a:has(.ipsContainerTitle){
|
||||
transform-origin: center;
|
||||
}
|
||||
.ipsEditor__create-sibling--after {
|
||||
right: var(--i-hz-offset);
|
||||
inset-inline-end: var(--i-hz-offset);
|
||||
bottom: calc(var(--i-indicator-size) * -0.5);
|
||||
transform: rotate(90deg);
|
||||
transform-origin: center;
|
||||
@@ -42139,12 +42160,12 @@ a:has(.ipsContainerTitle){
|
||||
gap: 0.25em;
|
||||
position: absolute;
|
||||
top: 1em;
|
||||
right: 1em;
|
||||
inset-inline-end: 1em;
|
||||
transition: right 0.25s, top 0.25s;
|
||||
}
|
||||
|
||||
[data-node-view-wrapper].ipsEditor__nodewrap--narrow .ipsEditor__node-options--media {
|
||||
right: calc( -1em - 30px);
|
||||
inset-inline-end: calc( -1em - 30px);
|
||||
top: 0;
|
||||
}
|
||||
|
||||
@@ -42307,7 +42328,7 @@ a:has(.ipsContainerTitle){
|
||||
}
|
||||
|
||||
[data-role="toollist-wrap"] {
|
||||
right: calc(100% + var(--i-hz-offset, 20px));
|
||||
inset-inline-end: calc(100% + var(--i-hz-offset, 20px));
|
||||
}
|
||||
|
||||
.cWidgetContainer__portal-menu {
|
||||
@@ -42403,7 +42424,7 @@ a:has(.ipsContainerTitle){
|
||||
flex-direction: column;
|
||||
}
|
||||
.ipsEditor__width-form [data-role="status-indicator"] > .ipsLoading:not(#x)::before {
|
||||
right: 0;
|
||||
inset-inline-end: 0;
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
font-size: revert;
|
||||
@@ -47842,7 +47863,7 @@ textarea.ipsField_codeInput {
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.ipsMessage .ipsButton:where(:not(.ipsButton--small)){
|
||||
.ipsMessage .ipsButton:where(:not(.ipsButton--small, .ipsButton--tiny)){
|
||||
--i-button--pa-bl: 1em;
|
||||
}
|
||||
|
||||
@@ -50808,7 +50829,9 @@ li.L9 {
|
||||
background: color-mix(in srgb, var(--i-color_root), 6%, transparent);
|
||||
}
|
||||
|
||||
.ipsAccordion_header,
|
||||
[data-ipsspoiler]:not(details) *:not(.ipsSpoiler_header) {
|
||||
display: none; /* Hide this stuff by default */
|
||||
}
|
||||
.ipsSpoiler_header {
|
||||
color: var(--i-color_root);
|
||||
font-weight: 600;
|
||||
@@ -50821,11 +50844,7 @@ li.L9 {
|
||||
padding: 0.8em 1.2em;
|
||||
}
|
||||
|
||||
[data-ipsaccordion-alwaysopen] > :is(.ipsAccordion_header) {
|
||||
cursor: inherit;
|
||||
}
|
||||
|
||||
:is(.ipsSpoiler, .ipsAccordion, .ipsStyle_spoiler) > :nth-child(2) {
|
||||
:is(.ipsSpoiler, .ipsStyle_spoiler) > :nth-child(2) {
|
||||
margin-top: 1.2em;
|
||||
}
|
||||
|
||||
@@ -50844,20 +50863,6 @@ li.L9 {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.ipsRichText .ipsSpoiler > summary::before,
|
||||
.ipsSpoiler_header [data-action="toggleSpoiler"]::after {
|
||||
content: "\f070";
|
||||
font-family: var(--i-font-awesome);
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-rendering: auto;
|
||||
font-weight: 900;
|
||||
width: 1.3em;
|
||||
text-align: center;
|
||||
font-size: .8em;
|
||||
opacity: .7;
|
||||
}
|
||||
|
||||
/* The snapback icon */
|
||||
.ipsQuote_citation-origin{
|
||||
position: absolute;
|
||||
@@ -50868,10 +50873,6 @@ li.L9 {
|
||||
opacity: .2;
|
||||
}
|
||||
|
||||
.ipsSpoiler_open [data-action="toggleSpoiler"]::before {
|
||||
content: "\f06e";
|
||||
}
|
||||
|
||||
details.ipsSpoiler > .ipsSpoiler_contents,
|
||||
details.ipsQuote > .ipsQuote_contents{
|
||||
overflow: hidden;
|
||||
@@ -51024,7 +51025,8 @@ details.ipsQuote > .ipsQuote_contents{
|
||||
}
|
||||
/* Close icon */
|
||||
.ipsRichText [open] > summary::after,
|
||||
[open] > summary.ipsRichTextBox__title::after {
|
||||
[open] > summary.ipsRichTextBox__title::after,
|
||||
.ipsSpoiler_open.ipsSpoiler_header::after {
|
||||
content: "\f068";
|
||||
}
|
||||
|
||||
@@ -52357,7 +52359,7 @@ details.ipsQuote > .ipsQuote_contents{
|
||||
.ipsTruncate_8{ --line-clamp: 8; }
|
||||
.ipsTruncate_9{ --line-clamp: 9; }
|
||||
|
||||
:where(.ipsQuote_contents, [data-ipstruncate]):not([data-truncate-expanded]){
|
||||
:where(.ipsQuote_contents, [data-ipstruncate]):not([data-truncate-expanded],[data-ipstruncate-deferred]){
|
||||
max-height: 15em;
|
||||
max-height: 15lh;
|
||||
overflow: auto;
|
||||
@@ -52365,7 +52367,7 @@ details.ipsQuote > .ipsQuote_contents{
|
||||
scrollbar-width: none;
|
||||
}
|
||||
|
||||
:where(.ipsQuote_contents, [data-ipstruncate]):not([data-truncate-expanded])::-webkit-scrollbar {
|
||||
:where(.ipsQuote_contents, [data-ipstruncate]):not([data-truncate-expanded], [data-ipstruncate-deferred])::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -52455,6 +52457,7 @@ html .ipsTruncate_more{
|
||||
}
|
||||
.ipsTitle--h5{
|
||||
font-size: var(--i-font-size_2);
|
||||
font-weight: 600;
|
||||
}
|
||||
.ipsTitle--h6{
|
||||
font-size: 1em;
|
||||
@@ -53959,7 +53962,7 @@ body:has(.ipsEditor:focus-within) .ipsMobileFooter{
|
||||
}
|
||||
|
||||
[aria-expanded="false"] .ipsNavPanel__toggle-list{
|
||||
transform: rotate(-90deg);
|
||||
transform: rotate(calc(-90deg * var(--i-lang-dir)));
|
||||
}
|
||||
|
||||
[aria-expanded="true"]:not(:hover) .ipsNavPanel__toggle-list{
|
||||
@@ -57455,7 +57458,10 @@ theme-editor .i-color_hard{
|
||||
}
|
||||
}
|
||||
|
||||
editor-buttons [data-active]{
|
||||
/* The light/dark values are used here instead of aria-current because the alternative is to use JS to find if light/dark should be active when System is selected */
|
||||
editor-buttons [data-active],
|
||||
[data-ips-scheme="light"] [data-ips-prefers-color-scheme="light"],
|
||||
[data-ips-scheme="dark"] [data-ips-prefers-color-scheme="dark"] {
|
||||
background-color: var(--panel--ba-co-active);
|
||||
}
|
||||
|
||||
@@ -59262,7 +59268,6 @@ table.diff td {
|
||||
#elLogin_box {
|
||||
width: 98%;
|
||||
max-width: 450px;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.cAcpLoginBox {
|
||||
@@ -59271,8 +59276,7 @@ table.diff td {
|
||||
}
|
||||
|
||||
#elLogin_box .ipsFieldRow{
|
||||
border-width: 0;
|
||||
padding: .6em 1.5em;
|
||||
padding: 1em 1.5em;
|
||||
}
|
||||
.cAcpLoginBox .ipsTabs__panel {
|
||||
background: transparent;
|
||||
@@ -59280,7 +59284,7 @@ table.diff td {
|
||||
|
||||
.cAcpLoginBox_logo {
|
||||
text-align: center;
|
||||
margin: 30px 0 50px;
|
||||
margin: 40px 0 30px;
|
||||
}
|
||||
|
||||
.cAcpLoginBox_logo img{
|
||||
@@ -59305,16 +59309,15 @@ table.diff td {
|
||||
|
||||
/* To make 2FA show as part of the form rather than a modal */
|
||||
#elTwoFactorAuthentication.ipsModal {
|
||||
background: #f9f9f9;
|
||||
position: inherit;
|
||||
background: none;
|
||||
}
|
||||
#elTwoFactorAuthentication {
|
||||
position: inherit;
|
||||
}
|
||||
#elTwoFactorAuthentication > div {
|
||||
background: #f9f9f9;
|
||||
box-shadow: none;
|
||||
border-radius: none;
|
||||
border-radius: 0;
|
||||
}]]></css>
|
||||
<css css_location="admin" css_app="core" css_attributes="" css_path="system" css_name="menumanager.css"><![CDATA[.cMenuManager{
|
||||
--menu-manager--active: var(--i-primary);
|
||||
|
||||
Reference in new issue
Block a user