667 lines
30 KiB
XML
667 lines
30 KiB
XML
|
|
<?xml version="1.0" encoding="utf-8"?>
|
||
|
|
<templates>
|
||
|
|
<template type="admin" title="helper_criteria" version_id="1000000" version_string="1.0.0"><![CDATA[<xf:macro id="user_tabs" arg-container="" arg-userTabTitle="" arg-active="">
|
||
|
|
<xf:set var="$tabs">
|
||
|
|
<a class="tabs-tab{{ $active == 'user' ? ' is-active' : '' }}"
|
||
|
|
role="tab" tabindex="0" aria-controls="{{ unique_id('criteriaUser') }}">
|
||
|
|
{{ $userTabTitle ? $userTabTitle : phrase('user_criteria') }}</a>
|
||
|
|
<a class="tabs-tab{{ $active == 'user_field' ? ' is-active' : '' }}"
|
||
|
|
role="tab" tabindex="0" aria-controls="{{ unique_id('criteriaUserField') }}">
|
||
|
|
{{ phrase('custom_userfield_criteria') }}</a>
|
||
|
|
</xf:set>
|
||
|
|
<xf:if is="$container">
|
||
|
|
<div class="tabs" role="tablist">
|
||
|
|
{$tabs|raw}
|
||
|
|
</div>
|
||
|
|
<xf:else />
|
||
|
|
{$tabs|raw}
|
||
|
|
</xf:if>
|
||
|
|
</xf:macro>
|
||
|
|
|
||
|
|
<xf:macro id="page_tabs" arg-container="" arg-active="">
|
||
|
|
<xf:set var="$tabs">
|
||
|
|
<a class="tabs-tab{{ $active == 'page' ? ' is-active' : '' }}"
|
||
|
|
role="tab" tabindex="0" aria-controls="{{ unique_id('criteriaPage') }}">{{ phrase('page_criteria') }}</a>
|
||
|
|
</xf:set>
|
||
|
|
<xf:if is="$container">
|
||
|
|
<div class="tabs" role="tablist">
|
||
|
|
{$tabs|raw}
|
||
|
|
</div>
|
||
|
|
<xf:else />
|
||
|
|
{$tabs|raw}
|
||
|
|
</xf:if>
|
||
|
|
</xf:macro>
|
||
|
|
|
||
|
|
<xf:macro id="user_panes" arg-container="" arg-active="" arg-criteria="!" arg-data="!">
|
||
|
|
|
||
|
|
<xf:set var="$app" value="{$xf.app}" />
|
||
|
|
<xf:set var="$visitor" value="{$xf.visitor}" />
|
||
|
|
<xf:set var="$em" value="{$app.em}" />
|
||
|
|
|
||
|
|
<xf:set var="$panes">
|
||
|
|
<li class="{{ $active == 'user' ? ' is-active' : '' }}" role="tabpanel" id="{{ unique_id('criteriaUser') }}">
|
||
|
|
<!--[XF:user:top]-->
|
||
|
|
|
||
|
|
<xf:checkboxrow label="{{ phrase('privileges_and_status') }}">
|
||
|
|
<!--[XF:user:status_top]-->
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[is_guest][rule]" value="is_guest" selected="{$criteria.is_guest}"
|
||
|
|
label="{{ phrase('user_is_guest') }}" />
|
||
|
|
<xf:option name="user_criteria[is_logged_in][rule]" value="is_logged_in" selected="{$criteria.is_logged_in}"
|
||
|
|
label="{{ phrase('user_is_logged_in') }}" />
|
||
|
|
<xf:option name="user_criteria[is_moderator][rule]" value="is_moderator" selected="{$criteria.is_moderator}"
|
||
|
|
label="{{ phrase('user_is_moderator') }}" />
|
||
|
|
<xf:option name="user_criteria[is_admin][rule]" value="is_admin" selected="{$criteria.is_admin}"
|
||
|
|
label="{{ phrase('user_is_administrator') }}" />
|
||
|
|
<xf:option name="user_criteria[is_banned][rule]" value="is_banned" selected="{$criteria.is_banned}"
|
||
|
|
label="{{ phrase('user_is_banned') }}"/>
|
||
|
|
<xf:option name="user_criteria[birthday][rule]" value="birthday" selected="{$criteria.birthday}"
|
||
|
|
label="{{ phrase('user_birthday_is_today') }}"/>
|
||
|
|
<xf:option name="user_criteria[user_state][rule]" value="user_state" selected="{$criteria.user_state}"
|
||
|
|
label="{{ phrase('user_state_is:') }}">
|
||
|
|
|
||
|
|
<xf:dependent>
|
||
|
|
<xf:select name="user_criteria[user_state][data][state]" value="{$criteria.user_state.state}">
|
||
|
|
<xf:option value="valid">{{ phrase('valid') }}</xf:option>
|
||
|
|
<xf:option value="email_confirm">{{ phrase('awaiting_email_confirmation') }}</xf:option>
|
||
|
|
<xf:option value="email_confirm_edit">{{ phrase('awaiting_email_confirmation_from_edit') }}</xf:option>
|
||
|
|
<xf:option value="email_bounce">{{ phrase('email_invalid_bounced') }}</xf:option>
|
||
|
|
<xf:option value="moderated">{{ phrase('awaiting_approval') }}</xf:option>
|
||
|
|
<xf:option value="rejected">{{ phrase('rejected') }}</xf:option>
|
||
|
|
<xf:option value="disabled">{{ phrase('disabled') }}</xf:option>
|
||
|
|
</xf:select>
|
||
|
|
</xf:dependent>
|
||
|
|
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<!--[XF:user:status_bottom]-->
|
||
|
|
</xf:checkboxrow>
|
||
|
|
|
||
|
|
<hr class="formRowSep" />
|
||
|
|
|
||
|
|
<!--[XF:user:after_status]-->
|
||
|
|
|
||
|
|
<xf:checkboxrow label="{{ phrase('connected_accounts') }}">
|
||
|
|
<xf:option name="user_criteria[connected_accounts][rule]" value="connected_accounts" selected="{$criteria.connected_accounts}"
|
||
|
|
label="{{ phrase('user_is_associated_with_any_of_selected_connected_account_providers:') }}">
|
||
|
|
|
||
|
|
<xf:select name="user_criteria[connected_accounts][data][provider_ids]" size="4" multiple="true" value="{$criteria.connected_accounts.provider_ids}">
|
||
|
|
<xf:options source="$data.connectedAccProviders" />
|
||
|
|
</xf:select>
|
||
|
|
|
||
|
|
</xf:option>
|
||
|
|
</xf:checkboxrow>
|
||
|
|
|
||
|
|
<hr class="formRowSep" />
|
||
|
|
|
||
|
|
<!--[XF:user:after_connected]-->
|
||
|
|
|
||
|
|
<xf:checkboxrow label="{{ phrase('user_groups') }}">
|
||
|
|
<xf:option name="user_criteria[user_groups][rule]" value="user_groups" selected="{$criteria.user_groups}"
|
||
|
|
label="{{ phrase('user_is_member_of_any_of_selected_user_groups:') }}">
|
||
|
|
|
||
|
|
<xf:select name="user_criteria[user_groups][data][user_group_ids]" size="4" multiple="true" value="{$criteria.user_groups.user_group_ids}">
|
||
|
|
<xf:foreach loop="$data.userGroups" key="$userGroupId" value="$userGroupTitle">
|
||
|
|
<xf:option value="{$userGroupId}">{$userGroupTitle}</xf:option>
|
||
|
|
</xf:foreach>
|
||
|
|
</xf:select>
|
||
|
|
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[not_user_groups][rule]" value="not_user_groups" selected="{$criteria.not_user_groups}"
|
||
|
|
label="{{ phrase('user_is_not_member_of_any_of_selected_user_groups:') }}">
|
||
|
|
|
||
|
|
<xf:select name="user_criteria[not_user_groups][data][user_group_ids]" size="4" multiple="true" value="{$criteria.not_user_groups.user_group_ids}">
|
||
|
|
<xf:foreach loop="$data.userGroups" key="$userGroupId" value="$userGroupTitle">
|
||
|
|
<xf:option value="{$userGroupId}">{$userGroupTitle}</xf:option>
|
||
|
|
</xf:foreach>
|
||
|
|
</xf:select>
|
||
|
|
|
||
|
|
</xf:option>
|
||
|
|
</xf:checkboxrow>
|
||
|
|
|
||
|
|
<hr class="formRowSep" />
|
||
|
|
|
||
|
|
<!--[XF:user:after_groups]-->
|
||
|
|
|
||
|
|
<xf:checkboxrow label="{{ phrase('content_and_achievements') }}">
|
||
|
|
<!--[XF:user:content_top]-->
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[messages_posted][rule]" value="messages_posted" selected="{$criteria.messages_posted}"
|
||
|
|
label="{{ phrase('user_has_posted_at_least_x_messages:') }}">
|
||
|
|
<xf:numberbox name="user_criteria[messages_posted][data][messages]" value="{$criteria.messages_posted.messages}"
|
||
|
|
size="5" min="0" step="1" />
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[messages_maximum][rule]" value="messages_maximum" selected="{$criteria.messages_maximum}"
|
||
|
|
label="{{ phrase('user_has_posted_no_more_than_x_messages:') }}">
|
||
|
|
<xf:numberbox name="user_criteria[messages_maximum][data][messages]" value="{$criteria.messages_maximum.messages}"
|
||
|
|
size="5" min="0" step="1" />
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<!--[XF:user:content_after_messages]-->
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[questions_solved_min][rule]" value="questions_solved_min" selected="{$criteria.questions_solved_min}"
|
||
|
|
label="{{ phrase('user_has_solved_at_least_x_questions:') }}">
|
||
|
|
<xf:numberbox name="user_criteria[questions_solved_min][data][solved]" value="{$criteria.questions_solved_min.solved}"
|
||
|
|
size="5" min="0" step="1" />
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[questions_solved_max][rule]" value="questions_solved_max" selected="{$criteria.questions_solved_max}"
|
||
|
|
label="{{ phrase('user_has_solved_no_more_than_x_questions:') }}">
|
||
|
|
<xf:numberbox name="user_criteria[questions_solved_max][data][solved]" value="{$criteria.questions_solved_max.solved}"
|
||
|
|
size="5" min="0" step="1" />
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<!--[XF:user:content_after_questions]-->
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[reaction_score][rule]" value="reaction_score" selected="{$criteria.reaction_score}"
|
||
|
|
label="{{ phrase('user_has_received_a_reaction_sore_of_at_least_x:') }}">
|
||
|
|
<xf:numberbox name="user_criteria[reaction_score][data][reactions]" value="{$criteria.reaction_score.reactions}"
|
||
|
|
size="5" min="0" step="1" />
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[reaction_ratio][rule]" value="reaction_ratio" selected="{$criteria.reaction_ratio}"
|
||
|
|
label="{{ phrase('user_reaction_message_ratio_is_at_least:') }}">
|
||
|
|
<xf:numberbox name="user_criteria[reaction_ratio][data][ratio]" value="{$criteria.reaction_ratio.ratio}"
|
||
|
|
size="5" min="0" step="0.25" />
|
||
|
|
<xf:afterhint>{{ phrase('reaction_message_ratio_explanation') }}</xf:afterhint>
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<!--[XF:user:content_after_reactions]-->
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[trophy_points][rule]" value="trophy_points" selected="{$criteria.trophy_points}"
|
||
|
|
label="{{ phrase('user_has_at_least_x_trophy_points:') }}">
|
||
|
|
<xf:numberbox name="user_criteria[trophy_points][data][points]" value="{$criteria.trophy_points.points}"
|
||
|
|
size="5" min="0" step="1" />
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<!--[XF:user:content_after_trophies]-->
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[registered_days][rule]" value="registered_days" selected="{$criteria.registered_days}"
|
||
|
|
label="{{ phrase('user_has_been_registered_for_at_least_x_days:') }}">
|
||
|
|
<xf:numberbox name="user_criteria[registered_days][data][days]" value="{$criteria.registered_days.days}"
|
||
|
|
size="5" min="0" step="1" />
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[inactive_days][rule]" value="inactive_days" selected="{$criteria.inactive_days}"
|
||
|
|
label="{{ phrase('user_has_not_visited_for_at_least_x_days:') }}">
|
||
|
|
<xf:numberbox name="user_criteria[inactive_days][data][days]" value="{$criteria.inactive_days.days}"
|
||
|
|
size="5" min="0" step="1" />
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<!--[XF:user:content_bottom]-->
|
||
|
|
</xf:checkboxrow>
|
||
|
|
|
||
|
|
<hr class="formRowSep" />
|
||
|
|
|
||
|
|
<!--[XF:user:after_content]-->
|
||
|
|
|
||
|
|
<xf:checkboxrow label="{{ phrase('user_profile_and_options') }}">
|
||
|
|
<!--[XF:user:profile_top]-->
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[language][rule]" value="language" selected="{$criteria.language}"
|
||
|
|
label="{{ phrase('user_is_browsing_with_following_language:') }}">
|
||
|
|
|
||
|
|
<xf:select name="user_criteria[language][data][language_id]" value="{$criteria.language.language_id}">
|
||
|
|
<xf:foreach loop="$data.languageTree.getFlattened(0)" value="$treeEntry">
|
||
|
|
<xf:option value="{$treeEntry.record.language_id}">{{ repeat('--', $treeEntry.depth) }} {$treeEntry.record.title}</xf:option>
|
||
|
|
</xf:foreach>
|
||
|
|
</xf:select>
|
||
|
|
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<xf:optgroup label="{{ phrase('avatar:') }}">
|
||
|
|
<xf:option name="user_criteria[has_avatar][rule]" value="has_avatar" selected="{$criteria.has_avatar}"
|
||
|
|
label="{{ phrase('user_has_avatar') }}" />
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[no_avatar][rule]" value="no_avatar" selected="{$criteria.no_avatar}"
|
||
|
|
label="{{ phrase('user_has_no_avatar') }}" />
|
||
|
|
</xf:optgroup>
|
||
|
|
|
||
|
|
<xf:optgroup label="{{ phrase('high_resolution_avatar:') }}">
|
||
|
|
<xf:option name="user_criteria[has_highdpi_avatar][rule]" value="has_highdpi_avatar" selected="{$criteria.has_highdpi_avatar}"
|
||
|
|
label="{{ phrase('user_has_highdpi_avatar') }}" />
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[no_highdpi_avatar][rule]" value="no_highdpi_avatar" selected="{$criteria.no_highdpi_avatar}"
|
||
|
|
label="{{ phrase('user_has_no_highdpi_avatar') }}" />
|
||
|
|
</xf:optgroup>
|
||
|
|
|
||
|
|
<xf:optgroup label="{{ phrase('two_step_verification:') }}">
|
||
|
|
<xf:option name="user_criteria[with_tfa][rule]" value="with_tfa" selected="{$criteria.with_tfa}"
|
||
|
|
label="{{ phrase('user_has_enabled_two_step_verification') }}" />
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[without_tfa][rule]" value="without_tfa" selected="{$criteria.without_tfa}"
|
||
|
|
label="{{ phrase('user_has_not_enabled_two_step_verification') }}"/>
|
||
|
|
</xf:optgroup>
|
||
|
|
|
||
|
|
<xf:optgroup label="{{ phrase('activity_summary_email:') }}">
|
||
|
|
<xf:option name="user_criteria[activity_summary_enabled][rule]" value="activity_summary_enabled" selected="{$criteria.activity_summary_enabled}"
|
||
|
|
label="{{ phrase('user_has_activity_summary_emails_enabled') }}" />
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[activity_summary_disabled][rule]" value="activity_summary_disabled" selected="{$criteria.activity_summary_disabled}"
|
||
|
|
label="{{ phrase('user_has_activity_summary_emails_disabled') }}"/>
|
||
|
|
</xf:optgroup>
|
||
|
|
|
||
|
|
<!--[XF:user:profile_bottom]-->
|
||
|
|
</xf:checkboxrow>
|
||
|
|
|
||
|
|
<hr class="formRowSep" />
|
||
|
|
|
||
|
|
<!--[XF:user:after_profile]-->
|
||
|
|
|
||
|
|
<xf:checkboxrow label="{{ phrase('user_segmentation') }}">
|
||
|
|
<!--[XF:user:segmentation_top]-->
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[user_id][rule]" value="user_id" selected="{$criteria.user_id}"
|
||
|
|
label="{{ phrase('user_id_matches_expression:') }}">
|
||
|
|
<xf:textbox
|
||
|
|
name="user_criteria[user_id][data][expression]"
|
||
|
|
value="{$criteria.user_id.expression}"
|
||
|
|
placeholder="2n+1"
|
||
|
|
/>
|
||
|
|
<xf:afterhint>{{ phrase('user_id_match_criteria_explain') }}</xf:afterhint>
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<!--[XF:user:segmentation_bottom]-->
|
||
|
|
</xf:checkboxrow>
|
||
|
|
|
||
|
|
<hr class="formRowSep" />
|
||
|
|
|
||
|
|
<!--[XF:user:after_segmentation]-->
|
||
|
|
|
||
|
|
<xf:checkboxrow label="{{ phrase('specific_users') }}">
|
||
|
|
<!--[XF:user:specific_top]-->
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[username][rule]" value="username" selected="{$criteria.username}"
|
||
|
|
label="{{ phrase('username_is:') }}">
|
||
|
|
<xf:textbox name="user_criteria[username][data][names]" value="{$criteria.username.names}" ac="true" />
|
||
|
|
<xf:afterhint>{{ phrase('username_criteria_explain') }}</xf:afterhint>
|
||
|
|
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[username_search][rule]" value="username_search" selected="{$criteria.username_search}"
|
||
|
|
label="{{ phrase('username_contains:') }}">
|
||
|
|
<xf:textbox name="user_criteria[username_search][data][needles]" value="{$criteria.username_search.needles}" />
|
||
|
|
<xf:afterhint>{{ phrase('username_search_criteria_explain') }}</xf:afterhint>
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<xf:option name="user_criteria[email_search][rule]" value="email_search" selected="{$criteria.email_search}"
|
||
|
|
label="{{ phrase('email_address_contains:') }}">
|
||
|
|
<xf:textbox name="user_criteria[email_search][data][needles]" value="{$criteria.email_search.needles}" />
|
||
|
|
<xf:afterhint>{{ phrase('email_search_criteria_explain') }}</xf:afterhint>
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<!--[XF:user:specific_bottom]-->
|
||
|
|
</xf:checkboxrow>
|
||
|
|
|
||
|
|
<!--[XF:user:bottom]-->
|
||
|
|
</li>
|
||
|
|
|
||
|
|
<li class="{{ $active == 'user_field' ? 'is-active' : '' }}" role="tabpanel" id="{{ unique_id('criteriaUserField') }}">
|
||
|
|
<xf:if contentcheck="true">
|
||
|
|
<xf:contentcheck>
|
||
|
|
<xf:foreach loop="$xf.app.em.getRepository('XF:UserField').getDisplayGroups()" key="$fieldGroup" value="$groupPhrase">
|
||
|
|
|
||
|
|
<xf:set var="$customFields" value="{$app.getCustomFields('users', $fieldGroup)}" />
|
||
|
|
<xf:if contentcheck="true">
|
||
|
|
<h2 class="block-formSectionHeader"><span class="block-formSectionHeader-aligner">{$groupPhrase}</span></h2>
|
||
|
|
<xf:contentcheck>
|
||
|
|
<xf:foreach loop="$customFields" key="$fieldId" value="$fieldDefinition">
|
||
|
|
<xf:set var="$fieldName" value="user_field_{$fieldId}" />
|
||
|
|
<xf:set var="$choices" value="{$fieldDefinition.field_choices}" />
|
||
|
|
<xf:checkboxrow label="{$fieldDefinition.title}">
|
||
|
|
<xf:option name="user_criteria[{$fieldName}][rule]" value="{$fieldName}" selected="{$criteria.{$fieldName}}"
|
||
|
|
label="{{ $choices ? phrase('criteria_userfield_choice_among') : phrase('criteria_userfield_contains_text:') }}">
|
||
|
|
<xf:dependent>
|
||
|
|
<xf:if is="!{$choices}">
|
||
|
|
<xf:textbox name="user_criteria[{$fieldName}][data][text]" value="{$criteria.{$fieldName}.text}" />
|
||
|
|
<xf:elseif is="{{ count($choices) }} > 6" />
|
||
|
|
<xf:select name="user_criteria[{$fieldName}][data][choices]" value="{$criteria.{$fieldName}.choices}" multiple="multiple" size="5">
|
||
|
|
<xf:options source="{$choices}" />
|
||
|
|
</xf:select>
|
||
|
|
<xf:else />
|
||
|
|
<xf:checkbox name="user_criteria[{$fieldName}][data][choices]" value="{$criteria.{$fieldName}.choices}" listclass="listColumns">
|
||
|
|
<xf:options source="{$choices}" />
|
||
|
|
</xf:checkbox>
|
||
|
|
</xf:if>
|
||
|
|
</xf:dependent>
|
||
|
|
</xf:option>
|
||
|
|
</xf:checkboxrow>
|
||
|
|
</xf:foreach>
|
||
|
|
</xf:contentcheck>
|
||
|
|
</xf:if>
|
||
|
|
|
||
|
|
</xf:foreach>
|
||
|
|
</xf:contentcheck>
|
||
|
|
<xf:else />
|
||
|
|
{{ phrase('no_custom_fields_have_been_created_yet') }}
|
||
|
|
</xf:if>
|
||
|
|
</li>
|
||
|
|
</xf:set>
|
||
|
|
|
||
|
|
<xf:if is="$container">
|
||
|
|
<ul class="tabPanes">
|
||
|
|
{$panes|raw}
|
||
|
|
</ul>
|
||
|
|
<xf:else />
|
||
|
|
{$panes|raw}
|
||
|
|
</xf:if>
|
||
|
|
</xf:macro>
|
||
|
|
|
||
|
|
<xf:macro id="page_panes" arg-container="" arg-active="" arg-criteria="!" arg-data="!">
|
||
|
|
|
||
|
|
<xf:set var="$em" value="{$xf.app.em}" />
|
||
|
|
<xf:set var="$visitor" value="{$xf.visitor}" />
|
||
|
|
|
||
|
|
<xf:set var="$panes">
|
||
|
|
<li class="{{ $active == 'page' ? ' is-active' : '' }}" role="tabpanel" id="{{ unique_id('criteriaPage') }}">
|
||
|
|
<!--[XF:page:after_from_search]-->
|
||
|
|
|
||
|
|
<xf:checkboxrow>
|
||
|
|
<xf:option name="page_criteria[after][rule]" value="after" selected="{$criteria.after}"
|
||
|
|
label="{{ phrase('criteria_date_time_is_after:') }}">
|
||
|
|
|
||
|
|
<xf:dependent>
|
||
|
|
<div class="inputGroup">
|
||
|
|
<xf:dateinput name="page_criteria[after][data][ymd]" value="{$criteria.after.ymd}" />
|
||
|
|
<span class="inputGroup-text">
|
||
|
|
{{ phrase('criteria_time:') }}
|
||
|
|
</span>
|
||
|
|
<span class="inputGroup" dir="ltr">
|
||
|
|
<xf:select name="page_criteria[after][data][hh]" value="{$criteria.after.hh}" class="input--inline input--autoSize">
|
||
|
|
<xf:foreach loop="$data.hours" value="$hour">
|
||
|
|
<xf:option value="{$hour}" label="{$hour}" />
|
||
|
|
</xf:foreach>
|
||
|
|
</xf:select>
|
||
|
|
<span class="inputGroup-text">:</span>
|
||
|
|
<xf:select name="page_criteria[after][data][mm]" value="{$criteria.after.mm}" class="input--inline input--autoSize">
|
||
|
|
<xf:foreach loop="$data.minutes" value="$minute">
|
||
|
|
<xf:option value="{$minute}" label="{$minute}" />
|
||
|
|
</xf:foreach>
|
||
|
|
</xf:select>
|
||
|
|
</span>
|
||
|
|
</div>
|
||
|
|
<dfn class="inputChoices-explain inputChoices-explain--after">{{ phrase('criteria_leave_date_empty') }}</dfn>
|
||
|
|
</xf:dependent>
|
||
|
|
|
||
|
|
<xf:radio name="page_criteria[after][data][user_tz]" value="{{ $criteria.after.user_tz ? $criteria.after.user_tz : 0 }}">
|
||
|
|
<xf:option value="1" label="{{ phrase('criteria_in_visitor_timezone') }}" />
|
||
|
|
<xf:option value="0" label="{{ phrase('criteria_in_selected_timezone:') }}">
|
||
|
|
<xf:select name="page_criteria[after][data][timezone]" value="{{ $criteria.after.timezone ? $criteria.after.timezone : $visitor.timezone }}">
|
||
|
|
<xf:options source="{$data.timeZones}" />
|
||
|
|
</xf:select>
|
||
|
|
</xf:option>
|
||
|
|
</xf:radio>
|
||
|
|
</xf:option>
|
||
|
|
</xf:checkboxrow>
|
||
|
|
|
||
|
|
<hr class="formRowSep" />
|
||
|
|
|
||
|
|
<!--[XF:page:after_time_after]-->
|
||
|
|
|
||
|
|
<xf:checkboxrow>
|
||
|
|
<xf:option name="page_criteria[before][rule]" value="before" selected="{$criteria.before}"
|
||
|
|
label="{{ phrase('criteria_date_time_is_before:') }}">
|
||
|
|
|
||
|
|
<xf:dependent>
|
||
|
|
<div class="inputGroup">
|
||
|
|
<xf:dateinput name="page_criteria[before][data][ymd]" value="{$criteria.before.ymd}" />
|
||
|
|
<span class="inputGroup-text">
|
||
|
|
{{ phrase('criteria_time:') }}
|
||
|
|
</span>
|
||
|
|
<span class="inputGroup" dir="ltr">
|
||
|
|
<xf:select name="page_criteria[before][data][hh]" value="{$criteria.before.hh}" class="input--inline input--autoSize">
|
||
|
|
<xf:foreach loop="$data.hours" value="$hour">
|
||
|
|
<xf:option value="{$hour}" label="{$hour}" />
|
||
|
|
</xf:foreach>
|
||
|
|
</xf:select>
|
||
|
|
<span class="inputGroup-text">:</span>
|
||
|
|
<xf:select name="page_criteria[before][data][mm]" value="{$criteria.before.mm}" class="input--inline input--autoSize">
|
||
|
|
<xf:foreach loop="$data.minutes" value="$minute">
|
||
|
|
<xf:option value="{$minute}" label="{$minute}" />
|
||
|
|
</xf:foreach>
|
||
|
|
</xf:select>
|
||
|
|
</span>
|
||
|
|
</div>
|
||
|
|
<dfn class="inputChoices-explain inputChoices-explain--before">{{ phrase('criteria_leave_date_empty') }}</dfn>
|
||
|
|
</xf:dependent>
|
||
|
|
|
||
|
|
<xf:radio name="page_criteria[before][data][user_tz]" value="{{ $criteria.before.user_tz ? $criteria.before.user_tz : 0 }}">
|
||
|
|
<xf:option value="1" label="{{ phrase('criteria_in_visitor_timezone') }}" />
|
||
|
|
<xf:option value="0" label="{{ phrase('criteria_in_selected_timezone:') }}">
|
||
|
|
<xf:select name="page_criteria[before][data][timezone]" value="{{ $criteria.before.timezone ? $criteria.before.timezone : $visitor.timezone }}">
|
||
|
|
<xf:options source="{$data.timeZones}" />
|
||
|
|
</xf:select>
|
||
|
|
</xf:option>
|
||
|
|
</xf:radio>
|
||
|
|
|
||
|
|
</xf:option>
|
||
|
|
</xf:checkboxrow>
|
||
|
|
|
||
|
|
<hr class="formRowSep" />
|
||
|
|
|
||
|
|
<!--[XF:page:after_time_before]-->
|
||
|
|
|
||
|
|
<xf:checkboxrow label="{{ phrase('nodes') }}">
|
||
|
|
<xf:option name="page_criteria[nodes][rule]" value="nodes" selected="{$criteria.nodes}"
|
||
|
|
label="{{ phrase('page_is_within_nodes:') }}">
|
||
|
|
|
||
|
|
<xf:select name="page_criteria[nodes][data][node_ids]" multiple="true" value="{$criteria.nodes.node_ids}">
|
||
|
|
<xf:foreach loop="$data.nodes" value="$option">
|
||
|
|
<xf:option value="{$option.value}" label="{$option.label}" />
|
||
|
|
</xf:foreach>
|
||
|
|
</xf:select>
|
||
|
|
<xf:checkbox>
|
||
|
|
<xf:option name="page_criteria[nodes][data][node_only]" value="1" selected="{$criteria.nodes.node_only}"
|
||
|
|
label="{{ phrase('only_display_within_selected_nodes_no_children') }}" />
|
||
|
|
</xf:checkbox>
|
||
|
|
|
||
|
|
</xf:option>
|
||
|
|
</xf:checkboxrow>
|
||
|
|
|
||
|
|
<hr class="formRowSep" />
|
||
|
|
|
||
|
|
<!--[XF:page:after_nodes]-->
|
||
|
|
|
||
|
|
<xf:checkboxrow label="{{ phrase('page_information') }}">
|
||
|
|
<xf:option name="page_criteria[style][rule]" value="style" selected="{$criteria.style}"
|
||
|
|
label="{{ phrase('user_is_browsing_with_following_style:') }}">
|
||
|
|
|
||
|
|
<xf:select name="page_criteria[style][data][style_id]" value="{$criteria.style.style_id}">
|
||
|
|
<xf:foreach loop="$data.styleTree.getFlattened(0)" value="$treeEntry">
|
||
|
|
<xf:option value="{$treeEntry.record.style_id}">{{ repeat('--', $treeEntry.depth) }} {$treeEntry.record.title}</xf:option>
|
||
|
|
</xf:foreach>
|
||
|
|
</xf:select>
|
||
|
|
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<xf:option name="page_criteria[tab][rule]" value="tab" selected="{$criteria.tab}"
|
||
|
|
label="{{ phrase('selected_navigation_tab_id_is:') }}">
|
||
|
|
|
||
|
|
<xf:textbox name="page_criteria[tab][data][id]" value="{$criteria.tab.id}"dir="ltr" />
|
||
|
|
<xf:afterhint>{{ phrase('selected_tab_criteria_explain') }}</xf:afterhint>
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<xf:option name="page_criteria[controller][rule]" value="controller" selected="{$criteria.controller}"
|
||
|
|
label="{{ phrase('controller_and_action_is:') }}">
|
||
|
|
|
||
|
|
<xf:macro id="helper_callback_fields::callback_fields"
|
||
|
|
arg-className="page_criteria[controller][data][name]"
|
||
|
|
arg-methodName="page_criteria[controller][data][action]"
|
||
|
|
arg-classValue="{$criteria.controller.name}"
|
||
|
|
arg-methodValue="{$criteria.controller.action}" />
|
||
|
|
<xf:afterhint>{{ phrase('controller_and_action_criteria_explain') }}</xf:afterhint>
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<xf:option name="page_criteria[view][rule]" value="view" selected="{$criteria.view}"
|
||
|
|
label="{{ phrase('view_class_is:') }}">
|
||
|
|
|
||
|
|
<xf:textbox name="page_criteria[view][data][name]" value="{$criteria.view.name}" dir="ltr" />
|
||
|
|
<xf:afterhint>{{ phrase('view_class_criteria_explain') }}</xf:afterhint>
|
||
|
|
</xf:option>
|
||
|
|
|
||
|
|
<xf:option name="page_criteria[template][rule]" value="template" selected="{$criteria.template}"
|
||
|
|
label="{{ phrase('content_template_is:') }}">
|
||
|
|
|
||
|
|
<xf:textbox name="page_criteria[template][data][name]" value="{$criteria.template.name}" dir="ltr" />
|
||
|
|
<xf:afterhint>{{ phrase('content_template_criteria_explain') }}</xf:afterhint>
|
||
|
|
</xf:option>
|
||
|
|
</xf:checkboxrow>
|
||
|
|
|
||
|
|
<!--[XF:page:after_page_info]-->
|
||
|
|
</li>
|
||
|
|
</xf:set>
|
||
|
|
|
||
|
|
<xf:if is="$container">
|
||
|
|
<ul class="tabPanes">
|
||
|
|
{$panes|raw}
|
||
|
|
</ul>
|
||
|
|
<xf:else />
|
||
|
|
{$panes|raw}
|
||
|
|
</xf:if>
|
||
|
|
</xf:macro>]]></template>
|
||
|
|
<template type="admin" title="user_delete_account_codes" version_id="1000000" version_string="1.0.0"><![CDATA[<xf:title>{$user.username}</xf:title>
|
||
|
|
|
||
|
|
<div class="block">
|
||
|
|
<div class="block-container">
|
||
|
|
<h3 class="block-minorHeader">{{ phrase('delete_account_code') }}</h3>
|
||
|
|
<div class="block-body">
|
||
|
|
<div class="block-row">{$deleteAccountCode}</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<h3 class="block-minorHeader">{{ phrase('delete_all_data_code') }}</h3>
|
||
|
|
<div class="block-body">
|
||
|
|
<div class="block-row">{$deleteAllDataCode}</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>]]></template>
|
||
|
|
<template type="public" title="approval_item_club_request" version_id="1000000" version_string="1.0.0"><![CDATA[<xf:macro id="approval_queue_macros::item_message_type"
|
||
|
|
arg-content="{$content}"
|
||
|
|
arg-user="{$content.User}"
|
||
|
|
arg-messageHtml="{$content.description}"
|
||
|
|
arg-contentDate="{$content.club_creation_date}"
|
||
|
|
arg-typePhraseHtml="Club Request"
|
||
|
|
arg-headerPhrase="{$content.title}"
|
||
|
|
arg-spamDetails="{$spamDetails}"
|
||
|
|
arg-unapprovedItem="{$unapprovedItem}"
|
||
|
|
arg-handler="{$handler}"
|
||
|
|
/>]]></template>
|
||
|
|
<template type="public" title="approval_item_entry_featured_request" version_id="1000000" version_string="1.0.0"><![CDATA[<xf:macro id="approval_queue_macros::item_message_type"
|
||
|
|
arg-content="{$content}"
|
||
|
|
arg-user="{$content.User}"
|
||
|
|
arg-messageHtml="{$content.entry_title}"
|
||
|
|
arg-contentDate="{$content.featured_request_date}"
|
||
|
|
arg-typePhraseHtml="Featured Request"
|
||
|
|
arg-headerPhrase="{$content.entry_title}"
|
||
|
|
arg-spamDetails="{$spamDetails}"
|
||
|
|
arg-unapprovedItem="{$unapprovedItem}"
|
||
|
|
arg-handler="{$handler}"
|
||
|
|
/>]]></template>
|
||
|
|
<template type="public" title="club_delete_confirm" version_id="1000000" version_string="1.0.0"><![CDATA[<xf:title>Delete club : {$club.title}</xf:title>
|
||
|
|
|
||
|
|
<xf:form action="{{ link('clubs/delete', $club) }}" class="block">
|
||
|
|
<div class="block-container">
|
||
|
|
<div class="block-body">
|
||
|
|
<xf:inforow rowtype="confirm">
|
||
|
|
Are you sure you want to delete this club ? <strong>{$club.title}</strong> ?<br />
|
||
|
|
<span class="u-muted">Deleting this will also delete all threads and posts.</span>
|
||
|
|
</xf:inforow>
|
||
|
|
</div>
|
||
|
|
<xf:submitrow rowtype="simple" icon="delete" submit="Delete" />
|
||
|
|
</div>
|
||
|
|
</xf:form>]]></template>
|
||
|
|
<template type="public" title="club_edit_form" version_id="1000000" version_string="1.0.0"><![CDATA[<div class="block">
|
||
|
|
<xf:form action="{{ link('clubs/save', $club ) }}" upload="true" ajax="true" class="block-container">
|
||
|
|
<div class="block-body">
|
||
|
|
<xf:textboxrow name="title" value="{$club.title}" label="Title" required="true" maxlength="100" />
|
||
|
|
<xf:textarearow name="description" value="{$club.description}" label="Description" required="true" rows="4" />
|
||
|
|
|
||
|
|
<xf:if is="$club.banner_date">
|
||
|
|
<xf:formrow label="Current Banner">
|
||
|
|
<img src="{$club.getBannerUrl()}" style="max-width: 300px; border-radius: 4px;" />
|
||
|
|
</xf:formrow>
|
||
|
|
</xf:if>
|
||
|
|
|
||
|
|
<xf:uploadrow name="upload_banner" accept=".jpg,.jpeg,.png" label="Banner" />
|
||
|
|
</div>
|
||
|
|
<xf:submitrow icon="save" submit="Submit Changes" />
|
||
|
|
</xf:form>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<xf:if is="$club.club_id && $club.node_id">
|
||
|
|
|
||
|
|
<div class="block u-marginTop">
|
||
|
|
<div class="block-container">
|
||
|
|
<h2 class="block-header">Club Moderators ({$subModCount}/5)</h2>
|
||
|
|
<div class="block-body">
|
||
|
|
<xf:if is="$moderators is not empty">
|
||
|
|
<div class="dataList">
|
||
|
|
<xf:foreach loop="$moderators" value="$mod">
|
||
|
|
<div class="dataList-row">
|
||
|
|
<div class="dataList-cell dataList-cell--main">
|
||
|
|
<strong>{$mod.User.username}</strong>
|
||
|
|
<xf:if is="$mod.user_id == $club.user_id">
|
||
|
|
<span class="label label--accent u-marginLeft">Owner</span>
|
||
|
|
</xf:if>
|
||
|
|
</div>
|
||
|
|
<div class="dataList-cell dataList-cell--action">
|
||
|
|
<xf:if is="$mod.user_id != $club.user_id">
|
||
|
|
<xf:form action="{{ link('clubs/remove-moderator', $club) }}" ajax="true" class="u-inline">
|
||
|
|
<input type="hidden" name="user_id" value="{$mod.user_id}" />
|
||
|
|
<xf:button type="submit" class="button--small button--warn" icon="delete">Remove</xf:button>
|
||
|
|
</xf:form>
|
||
|
|
<xf:else />
|
||
|
|
<span class="u-muted">-</span>
|
||
|
|
</xf:if>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</xf:foreach>
|
||
|
|
</div>
|
||
|
|
<xf:else />
|
||
|
|
<div class="block-row">No moderators for this club.</div>
|
||
|
|
</xf:if>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="block u-marginTop">
|
||
|
|
<xf:if is="$subModCount < 5">
|
||
|
|
<xf:form action="{{ link('clubs/add-moderator', $club) }}" ajax="true" class="block-container">
|
||
|
|
<h2 class="block-header">Add a moderator</h2>
|
||
|
|
<div class="block-body">
|
||
|
|
<xf:textboxrow name="username" label="Username" class="namePredictor" required="true" />
|
||
|
|
</div>
|
||
|
|
<xf:submitrow icon="add" submit="Promote Moderator" />
|
||
|
|
</xf:form>
|
||
|
|
<xf:else />
|
||
|
|
<div class="block-container">
|
||
|
|
<div class="block-row block-row--warning">
|
||
|
|
<strong>Limit reached:</strong> You have reached the maximum number of 5 moderators for your club. You must remove one before you can add a new one.
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</xf:if>
|
||
|
|
</div>
|
||
|
|
</xf:if>]]></template>
|
||
|
|
<template type="public" title="club_request_form" version_id="1000000" version_string="1.0.0"><![CDATA[<xf:title>Submit Club Request</xf:title>
|
||
|
|
|
||
|
|
<xf:form action="{{ link('clubs/save') }}" ajax="true" class="block">
|
||
|
|
<div class="block-container">
|
||
|
|
<div class="block-body">
|
||
|
|
<xf:textboxrow name="title" label="Title" required="required" />
|
||
|
|
<xf:textarearow name="description" label="Description" rows="4" required="required" />
|
||
|
|
<xf:uploadrow name="upload_banner" accept=".jpg,.jpeg,.jpe,.png" label="Banner" />
|
||
|
|
</div>
|
||
|
|
<xf:submitrow submit="Submit" icon="save" />
|
||
|
|
</div>
|
||
|
|
</xf:form>]]></template>
|
||
|
|
<template type="public" title="report_content_romhackplaza_entry" version_id="1000000" version_string="1.0.0"><![CDATA[<div class="block-row block-row--separated">
|
||
|
|
{{ phrase('content:') }}
|
||
|
|
{$report.content_info.description}
|
||
|
|
</div>]]></template>
|
||
|
|
<template type="public" title="report_content_romhackplaza_news" version_id="1000000" version_string="1.0.0"><![CDATA[<div class="block-row block-row--separated">
|
||
|
|
{{ phrase('content:') }}
|
||
|
|
{$report.content_info.description}
|
||
|
|
</div>]]></template>
|
||
|
|
</templates>
|