Ajout d'une extension
@@ -0,0 +1,8 @@
|
||||
<div data-shop-carousel-data="true"
|
||||
data-arrows="{{ SHOP_CAROUSEL_ARROWS ? 'true' : 'false' }}"
|
||||
data-dots="{{ SHOP_CAROUSEL_DOTS ? 'true' : 'false' }}"
|
||||
data-fade="{{ SHOP_CAROUSEL_FADE ? 'true' : 'false' }}"
|
||||
data-autoplay="{{ SHOP_CAROUSEL_PLAY ? 'true' : 'false' }}"
|
||||
data-autoplay-speed="{{ SHOP_CAROUSEL_PLAY_SPEED }}"
|
||||
data-speed="{{ SHOP_CAROUSEL_SPEED }}"
|
||||
></div>
|
||||
235
ext/phpbbstudio/ass/styles/all/template/ass_category.html
Normal file
@@ -0,0 +1,235 @@
|
||||
{% extends '@phpbbstudio_aps/aps_main.html' %}
|
||||
|
||||
{% block includes %}
|
||||
{% INCLUDECSS '@phpbbstudio_ass/ass_common.css' %}
|
||||
{% INCLUDEJS '@phpbbstudio_ass/js/ass_common.js' %}
|
||||
{% endblock %}
|
||||
|
||||
{% block nav %}
|
||||
{% for category in ass_shop_categories %}
|
||||
<li>
|
||||
<a class="aps-list-item{{ category.S_SELECTED ? ' aps-list-active' }}" href="{{ category.U_VIEW }}" title="{{ category.TITLE }}">
|
||||
{% if category.ICON %}<i class="icon {{ category.ICON }} fa-fw" aria-hidden="true"></i>{% endif %}
|
||||
<span class="sr-only">{{ category.TITLE }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
<div class="aps-row">
|
||||
<div class="aps-col s12">
|
||||
<div class="shop-title">
|
||||
<h1 class="aps-no-mar shop-text-darkgray">{{ TITLE }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if not S_ACTIVE %}
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-button-red">
|
||||
<strong>{{ lang('ASS_CATEGORY_INACTIVE') }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if DESC_HTML %}
|
||||
{% if ICON %}
|
||||
<div class="aps-col s2">
|
||||
<div class="aps-panel aps-center">
|
||||
<div class="aps-panel-content">
|
||||
<i class="fa {{ ICON }} fa-fw fa-5x icon-aps-blue" aria-hidden="true"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-col s{{ ICON ? 10 : 12 }}">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content content">
|
||||
{{ DESC_HTML }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="aps-row">
|
||||
{% for item in ass_items %}
|
||||
<div class="aps-col s6 m{{ T_PANEL_SIZE }}">
|
||||
{{ include('@phpbbstudio_ass/ass_item_panel.html') }}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content aps-center">
|
||||
<strong class="error">{{ lang('ASS_ITEMS_NONE') }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="aps-row">
|
||||
<div class="aps-col s2">
|
||||
<form class="aps-form" method="get" action="{{ U_VIEW }}">
|
||||
<div class="shop-block dropdown-container dropdown-container-left dropdown-up dropdown-right dropdown-button-control">
|
||||
<span class="shop-block aps-button-blue aps-center dropdown-trigger" title="{{ lang('SORT_OPTIONS') }}">
|
||||
<i class="icon fa-sort-amount-asc fa-fw" aria-hidden="true"></i>
|
||||
</span>
|
||||
|
||||
<div class="dropdown hidden shop-category-dropdown">
|
||||
<div class="pointer"><div class="pointer-inner"></div></div>
|
||||
<div class="dropdown-contents">
|
||||
<fieldset>
|
||||
<div class="aps-row">
|
||||
<div class="aps-col s4">
|
||||
<label for="title">
|
||||
{{ lang('ASS_ITEM_TITLE') ~ lang('COLON') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="aps-col s8">
|
||||
<input class="full" id="title" name="title" type="text" value="{{ SORT_TITLE }}">
|
||||
</div>
|
||||
|
||||
<div class="aps-col s4">
|
||||
<label for="type">
|
||||
{{ lang('ASS_ITEM_TYPE') ~ lang('COLON') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="aps-col s8">
|
||||
<select class="full" id="type" name="type">
|
||||
{% for value, option in SORT_TYPE_ARRAY %}
|
||||
<option value="{{ value }}"{{ value == SORT_TYPE ? ' selected' }}>{{ lang(option) }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s4">
|
||||
<label for="above">
|
||||
{{ lang('ASS_PRICE_ABOVE') ~ lang('COLON') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="aps-col s8">
|
||||
<input class="full" id="above" name="above" type="number" step="{{ aps_step() }}" value="{{ SORT_ABOVE }}">
|
||||
</div>
|
||||
|
||||
<div class="aps-col s4">
|
||||
<label for="below">
|
||||
{{ lang('ASS_PRICE_BELOW') ~ lang('COLON') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="aps-col s8">
|
||||
<input class="full" id="below" name="below" type="number" step="{{ aps_step() }}" value="{{ SORT_BELOW }}">
|
||||
</div>
|
||||
|
||||
<div class="aps-col s4">
|
||||
<label for="sale">
|
||||
{{ lang('ASS_ON_SALE') ~ lang('COLON') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="aps-col s8 aps-center">
|
||||
<div class="aps-row">
|
||||
<label class="aps-col s4 aps-no-mar shop-no-pad-left">
|
||||
<input class="aps-bool" id="sale" name="sale" type="radio" value="1"{{ SORT_SALE == 1 ? ' checked' }}>
|
||||
<span class="aps-button-green shop-block"><i class="icon fa-check fa-fw shop-text-indent-3" aria-hidden="true"></i></span>
|
||||
</label>
|
||||
<label class="aps-col s4 aps-no-mar shop-no-pad-left">
|
||||
<input class="aps-bool" name="sale" type="radio" value="-1"{{ SORT_SALE == -1 ? ' checked' }}>
|
||||
<span class="aps-button-red shop-block"><i class="icon fa-times fa-fw shop-text-indent-3" aria-hidden="true"></i></span>
|
||||
</label>
|
||||
<label class="aps-col s4 aps-no-mar shop-no-pad-left">
|
||||
<input class="aps-bool" name="sale" type="radio" value="0"{{ not SORT_SALE ? ' checked' }}>
|
||||
<span class="aps-button-blue shop-block"><i class="icon fa-minus fa-fw shop-text-indent-3" aria-hidden="true"></i></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s4 aps-no-mar-bot">
|
||||
<label for="gift">
|
||||
{{ lang('ASS_GIFTABLE') ~ lang('COLON') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="aps-col s8 aps-no-mar-bot aps-center">
|
||||
<div class="aps-row">
|
||||
<label class="aps-col s4 aps-no-mar shop-no-pad-left">
|
||||
<input class="aps-bool" id="gift" name="gift" type="radio" value="1"{{ SORT_GIFT == 1 ? ' checked' }}>
|
||||
<span class="aps-button-green shop-block"><i class="icon fa-check fa-fw shop-text-indent-3" aria-hidden="true"></i></span>
|
||||
</label>
|
||||
<label class="aps-col s4 aps-no-mar shop-no-pad-left">
|
||||
<input class="aps-bool" name="gift" type="radio" value="-1"{{ SORT_GIFT == -1 ? ' checked' }}>
|
||||
<span class="aps-button-red shop-block"><i class="icon fa-times fa-fw shop-text-indent-3" aria-hidden="true"></i></span>
|
||||
</label>
|
||||
<label class="aps-col s4 aps-no-mar shop-no-pad-left">
|
||||
<input class="aps-bool" name="gift" type="radio" value="0"{{ not SORT_GIFT ? ' checked' }}>
|
||||
<span class="aps-button-blue shop-block"><i class="icon fa-minus fa-fw shop-text-indent-3" aria-hidden="true"></i></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s12 aps-no-mar">
|
||||
<hr class="dashed">
|
||||
</div>
|
||||
|
||||
<div class="aps-col s4">
|
||||
<label for="display">
|
||||
{{ lang('DISPLAY') ~ lang('COLON') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="aps-col s8">
|
||||
<select class="full" id="display" name="display">
|
||||
{% for value, option in SORT_DAYS_ARRAY %}
|
||||
<option value="{{ value }}"{{ value == SORT_DAYS ? ' selected' }}>{{ lang(option) }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s4">
|
||||
<label for="sort">
|
||||
{{ lang('SORT_BY') ~ lang('COLON') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="aps-col s8">
|
||||
<select class="full" id="sort" name="sort">
|
||||
{% for value, option in SORT_SORT_ARRAY %}
|
||||
<option value="{{ value }}"{{ value == SORT_SORT ? ' selected' }}>{{ lang(option.title) }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s4 aps-no-mar-bot">
|
||||
<label for="direction">
|
||||
{{ lang('SORT_DIRECTION') ~ lang('COLON') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="aps-col s8 aps-no-mar-bot">
|
||||
<select class="full" id="direction" name="direction">
|
||||
{% for value, option in SORT_DIR_ARRAY %}
|
||||
<option value="{{ value }}"{{ value == SORT_DIR ? ' selected' }}>{{ lang(option.title) }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s12 aps-center aps-no-mar-bot">
|
||||
<hr class="dashed">
|
||||
|
||||
<input class="aps-button-green" type="submit" value="{{ lang('GO') }}">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="aps-col s8">
|
||||
{% if shop_pagination|length %}
|
||||
{{ include('@phpbbstudio_ass/ass_pagination.html') }}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="aps-col s2">
|
||||
<div class="aps-center shop-pagination-text">
|
||||
{{ ITEMS_COUNT }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,3 @@
|
||||
<form action="{{ S_CONFIRM_ACTION }}" method="post">
|
||||
<p>{{ MESSAGE_TEXT }}</p>
|
||||
</form>
|
||||
70
ext/phpbbstudio/ass/styles/all/template/ass_exception.html
Normal file
@@ -0,0 +1,70 @@
|
||||
{% extends '@phpbbstudio_aps/aps_main.html' %}
|
||||
|
||||
{% block includes %}
|
||||
{% INCLUDECSS '@phpbbstudio_ass/ass_exception.css' %}
|
||||
{% endblock %}
|
||||
|
||||
{% block nav %}
|
||||
{% for category in ass_shop_categories %}
|
||||
<li>
|
||||
<a class="aps-list-item{{ category.S_SELECTED ? ' aps-list-active' }}" href="{{ category.U_VIEW }}" title="{{ category.TITLE }}">
|
||||
{% if category.ICON %}<i class="icon {{ category.ICON }} fa-fw" aria-hidden="true"></i>{% endif %}
|
||||
<span class="sr-only">{{ category.TITLE }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
<div class="shop-exception">
|
||||
<div class="aps-panel shop-exception-title">
|
||||
<div class="aps-panel-content">
|
||||
<h1>{{ lang('ASS_ERROR_TITLE', aps_name()) ~ lang('ELLIPSIS') }}</h1>
|
||||
</div>
|
||||
<div class="shop-exception-code">
|
||||
<span>{{ EXCEPTION_CODE }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="aps-panel shop-exception-text">
|
||||
<div class="aps-panel-content">
|
||||
<p class="aps-no-mar">{{ EXCEPTION_TEXT }}</p>
|
||||
</div>
|
||||
{% if EXCEPTION_DESC %}
|
||||
<div class="aps-panel-content">
|
||||
<p class="aps-no-mar">{{ EXCEPTION_DESC }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="aps-panel-content aps-center">
|
||||
<a class="aps-button-blue" href="{{ U_INDEX }}">{{ lang('FORUM_INDEX') }}</a>
|
||||
<a class="aps-button-blue" href="{{ path('phpbbstudio_ass_shop') }}">{{ lang('ASS_SHOP_INDEX') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="shop-exception-pot">{{ include('@phpbbstudio_ass/images/gold-pot.svg') }}</div>
|
||||
<div class="shop-exception-rainbow">{% for i in 1..5 %}<span></span>{% endfor %}</div>
|
||||
<div class="shop-exception-tree">{{ include('@phpbbstudio_ass/images/tree.svg') }}</div>
|
||||
<div class="shop-exception-trees">{{ include('@phpbbstudio_ass/images/trees.svg') }}</div>
|
||||
<div class="shop-exception-mountain">{{ include('@phpbbstudio_ass/images/mountain-summit.svg') }}</div>
|
||||
<div class="shop-exception-mountain-left">{{ include('@phpbbstudio_ass/images/mountain-summit.svg') }}</div>
|
||||
<div class="shop-exception-mountain-right">{{ include('@phpbbstudio_ass/images/rising-graph.svg') }}</div>
|
||||
<i class="icon fa-male fa-fw"></i>
|
||||
<i class="icon fa-fw shop-icons"></i>
|
||||
<i class="icon fa-comment fa-fw fa-flip-horizontal"></i>
|
||||
<i class="icon fa-map-signs fa-fw"></i>
|
||||
<span class="fa-trees left">
|
||||
<i class="icon fa-tree fa-fw"></i>
|
||||
<i class="icon fa-tree fa-fw"></i>
|
||||
<i class="icon fa-tree fa-fw"></i>
|
||||
</span>
|
||||
<span class="fa-trees">
|
||||
<i class="icon fa-tree fa-fw"></i>
|
||||
<i class="icon fa-tree fa-fw"></i>
|
||||
</span>
|
||||
<span class="fa-trees right">
|
||||
<i class="icon fa-tree fa-fw"></i>
|
||||
<i class="icon fa-tree fa-fw"></i>
|
||||
<i class="icon fa-tree fa-fw"></i>
|
||||
</span>
|
||||
</div>
|
||||
{% endblock %}
|
||||
156
ext/phpbbstudio/ass/styles/all/template/ass_history.html
Normal file
@@ -0,0 +1,156 @@
|
||||
{% extends '@phpbbstudio_aps/aps_main.html' %}
|
||||
|
||||
{% block includes %}
|
||||
{% INCLUDECSS '@phpbbstudio_ass/ass_common.css' %}
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
<div class="shop-title shop-mar-bot">
|
||||
<h1 class="aps-no-mar shop-text-darkgray">{{ lang('ASS_HISTORY') }}</h1>
|
||||
</div>
|
||||
|
||||
{% for log in ass_logs %}
|
||||
<div class="aps-panel shop-mar-bot">
|
||||
<div class="aps-panel-header">
|
||||
<div class="aps-row">
|
||||
<div class="aps-col s8 aps-no-mar">
|
||||
{% if log.U_CATEGORY %}
|
||||
<a class="shop-text-darkgray shop-panel-header-link" href="{{ log.U_CATEGORY }}" data-item-title="{{ log.CATEGORY_TITLE }}">
|
||||
{{ log.CATEGORY_TITLE }}
|
||||
</a>
|
||||
{% else %}
|
||||
<span class="shop-text-darkgray shop-panel-header-link">{{ log.CATEGORY_TITLE }}</span>
|
||||
{% endif %}
|
||||
<i class="icon fa-angle-right fa-fw icon-aps-blue" aria-hidden="true"></i>
|
||||
{% if log.U_ITEM %}
|
||||
<a class="shop-text-darkgray shop-panel-header-link shop-bold" href="{{ log.U_ITEM }}" data-item-title="{{ log.ITEM_TITLE }}">
|
||||
{{ log.ITEM_TITLE }}
|
||||
</a>
|
||||
{% else %}
|
||||
<span class="shop-text-darkgray shop-panel-header-link shop-bold">
|
||||
{{ log.ITEM_TITLE }}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="aps-col s4 aps-no-mar shop-text-right shop-text-lightgray">
|
||||
{{ log.LOG_TIME }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="aps-panel-content">
|
||||
<div class="aps-row">
|
||||
<div class="aps-col s12 m6 aps-no-mar shop-darken-span">
|
||||
{% if log.S_PURCHASE %}
|
||||
{% if log.RECIPIENT %}
|
||||
{% if log.S_GIFT_RECEIVED %}
|
||||
<span>{{ lang('ASS_LOG_ITEM_RECEIVED', log.USER) }}</span>
|
||||
{% else %}
|
||||
<span>{{ lang('ASS_LOG_ITEM_GIFTED', log.RECIPIENT) }}</span>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<span>{{ lang('ASS_LOG_ITEM_PURCHASED') }}</span>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<span>{{ lang('ASS_LOG_ITEM_USED') ~ lang('COLON') }}</span> {{ log.LOG_ACTION }}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="aps-col s4 m2 aps-no-mar aps-center">{{ aps_display(log.POINTS_OLD, false) }}</div>
|
||||
<div class="aps-col s4 m2 aps-no-mar aps-center{{ log.POINTS_SUM ? ' aps-negative' }}">{{ aps_display(log.POINTS_SUM, false) }}</div>
|
||||
<div class="aps-col s4 m2 aps-no-mar aps-center">{{ aps_display(log.POINTS_NEW, false) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="aps-panel aps-center">
|
||||
<div class="aps-panel-content">
|
||||
<p class="aps-no-mar shop-padding error">{{ lang('ASS_HISTORY_EMPTY') ~ lang('ELLIPSIS') }}</p>
|
||||
</div>
|
||||
<div class="aps-panel-footer">
|
||||
<a class="aps-button-green shop-button-active" href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP_INDEX') }}">
|
||||
<i class="icon {{ aps_config('ass_shop_icon') }} fa-fw" aria-hidden="true"></i>
|
||||
<span>{{ lang('ASS_SHOP_INDEX') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
{% if ass_logs|length %}
|
||||
<div class="aps-row">
|
||||
<div class="aps-col s2">
|
||||
<form class="aps-form" method="get" action="{{ U_VIEW }}">
|
||||
<div class="shop-block dropdown-container dropdown-container-left dropdown-up dropdown-right dropdown-button-control">
|
||||
<span class="shop-block aps-button-blue aps-center dropdown-trigger" title="{{ lang('SORT_OPTIONS') }}">
|
||||
<i class="icon fa-sort-amount-asc fa-fw" aria-hidden="true"></i>
|
||||
</span>
|
||||
|
||||
<div class="dropdown hidden shop-category-dropdown">
|
||||
<div class="pointer"><div class="pointer-inner"></div></div>
|
||||
<div class="dropdown-contents">
|
||||
<fieldset>
|
||||
<div class="aps-row">
|
||||
<div class="aps-col s4">
|
||||
<label for="display">
|
||||
{{ lang('DISPLAY') ~ lang('COLON') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="aps-col s8">
|
||||
<select id="display" name="display">
|
||||
{% for value, option in SORT_DISPLAY_ARRAY %}
|
||||
<option value="{{ value }}"{{ value == SORT_DISPLAY ? ' selected' }}>{{ lang(option.title) }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="aps-col s4">
|
||||
<label for="sort">
|
||||
{{ lang('SORT_BY') ~ lang('COLON') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="aps-col s8">
|
||||
<select class="full" id="sort" name="sort">
|
||||
{% for value, option in SORT_SORT_ARRAY %}
|
||||
<option value="{{ value }}"{{ value == SORT_SORT ? ' selected' }}>{{ lang(option.title) }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s4 aps-no-mar-bot">
|
||||
<label for="direction">
|
||||
{{ lang('SORT_DIRECTION') ~ lang('COLON') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="aps-col s8 aps-no-mar-bot">
|
||||
<select class="full" id="direction" name="direction">
|
||||
{% for value, option in SORT_DIR_ARRAY %}
|
||||
<option value="{{ value }}"{{ value == SORT_DIR ? ' selected' }}>{{ lang(option.title) }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s12 aps-center aps-no-mar-bot">
|
||||
<hr class="dashed">
|
||||
|
||||
<input class="aps-button-green" type="submit" value="{{ lang('GO') }}">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s8">
|
||||
{% if shop_pagination|length %}
|
||||
{{ include('@phpbbstudio_ass/ass_pagination.html') }}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="aps-col s2">
|
||||
<div class="aps-center shop-pagination-text">
|
||||
{{ TOTAL_LOGS }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
136
ext/phpbbstudio/ass/styles/all/template/ass_inventory.html
Normal file
@@ -0,0 +1,136 @@
|
||||
{% extends '@phpbbstudio_aps/aps_main.html' %}
|
||||
|
||||
{% block includes %}
|
||||
{% INCLUDECSS '@phpbbstudio_ass/jquery-ui.min.css' %}
|
||||
{% INCLUDEJS '@phpbbstudio_ass/js/jquery-ui.min.js' %}
|
||||
|
||||
{% INCLUDEJS '@phpbbstudio_ass/js/sketch.js' %}
|
||||
|
||||
{% INCLUDECSS '@phpbbstudio_ass/ass_common.css' %}
|
||||
{% INCLUDEJS '@phpbbstudio_ass/js/ass_common.js' %}
|
||||
|
||||
{% EVENT phpbbstudio_ass_includes_inventory %}
|
||||
{% endblock %}
|
||||
|
||||
{% block nav %}
|
||||
{% for category in ass_shop_categories %}
|
||||
<li>
|
||||
<a class="aps-list-item{{ category.S_SELECTED ? ' aps-list-active' }}" href="{{ category.U_VIEW }}" title="{{ category.TITLE }}">
|
||||
{% if category.ICON %}<i class="icon {{ category.ICON }} fa-fw" aria-hidden="true"></i>{% endif %}
|
||||
<span class="sr-only">{{ category.TITLE }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block nav_right %}
|
||||
<li>
|
||||
<a class="aps-list-item" href="{{ path('phpbbstudio_ass_history') }}" title="{{ lang('ASS_HISTORY') }}">
|
||||
<i class="icon fa-history fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('ASS_HISTORY') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
{% if ass_categories|length %}
|
||||
<div class="shop-inventory-overlay"></div>
|
||||
|
||||
<div class="aps-row">
|
||||
<div class="aps-col m5 shop-inventory-list{{ ITEM_INFO ? ' shop-inventory-with-item' }} aps-no-mar-bot">
|
||||
<div class="aps-panel-content">
|
||||
{% for category in ass_categories %}
|
||||
<div class="shop-title shop-mar-bot">
|
||||
<h1 class="aps-no-mar shop-text-large shop-text-darkgray">{{ category.TITLE }}</h1>
|
||||
</div>
|
||||
{% for batch in category.items|batch(3) %}
|
||||
<div class="aps-row shop-inventory-row">
|
||||
{% for item in batch %}
|
||||
<div class="aps-col s12 m4 shop-fake-min-width">
|
||||
<section class="shop-inventory-panel">
|
||||
<a class="aps-panel shop-inventory-link" href="{{ item.U_INVENTORY }}">
|
||||
{% if item.S_TYPE_ERROR %}
|
||||
<i class="icon fa-exclamation-triangle icon-white shop-panel-icon shop-panel-icon-tiny shop-panel-icon-red"></i>
|
||||
{% elseif item.STACK_COUNT > 1 %}
|
||||
<span class="icon icon-white shop-panel-icon shop-panel-icon-tiny shop-panel-icon-purple"><strong class="shop-inventory-stack">{{ item.STACK_COUNT }}</strong></span>
|
||||
{% elseif item.S_HAS_EXPIRED %}
|
||||
<i class="icon fa-hourglass-end icon-white shop-panel-icon shop-panel-icon-tiny shop-panel-icon-red"></i>
|
||||
{% elseif item.S_WILL_EXPIRE %}
|
||||
<i class="icon fa-hourglass-half icon-white shop-panel-icon shop-panel-icon-tiny shop-panel-icon-orange"></i>
|
||||
{% elseif item.S_GIFTED %}
|
||||
<i class="icon {{ aps_config('ass_gift_icon') }} icon-white shop-panel-icon shop-panel-icon-tiny shop-panel-icon-blue"></i>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-panel-content {{ item.BACKGROUND_SRC ? 'shop-panel-background' : 'shop-vertical' }}"{% if item.BACKGROUND_SRC %} style="background-image: url({{ item.BACKGROUND_SRC }})"{% endif %}>
|
||||
{% if not item.BACKGROUND_SRC %}
|
||||
<i class="icon {{ item.ICON ?: aps_config('ass_no_image_icon') }} fa-fw shop-text-indent-10 icon-xl icon-lightgray"></i>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="aps-panel-footer shop-bold shop-text-small shop-text-darkgray shop-text-ellipsis" title="{{ item.TITLE }}">
|
||||
{{ item.TITLE }}
|
||||
</div>
|
||||
</a>
|
||||
|
||||
{{ include('@phpbbstudio_ass/ass_item_inventory.html') }}
|
||||
</section>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="aps-panel-footer aps-row aps-center">
|
||||
<div class="aps-col s3 aps-no-mar shop-no-pad">
|
||||
<a class="aps-button-blue shop-block" href="{{ U_VIEW_SHOP }}" title="{{ L_VIEW_SHOP }}">
|
||||
<i class="fa {{ aps_config('ass_shop_icon') }} fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('ASS_SHOP_INDEX') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="aps-col s1"></div>
|
||||
<div class="aps-col s2 aps-no-mar shop-no-pad" title="{{ aps_name() }}">
|
||||
{{ aps_icon() }}
|
||||
<strong class="shop-block">{{ aps_display(user.data.user_points, false) }}</strong>
|
||||
</div>
|
||||
<div class="aps-col s2 aps-no-mar shop-no-pad">
|
||||
<i class="icon {{ T_SHOP_ICON }} fa-fw"></i>
|
||||
<strong class="shop-block">{{ COUNT_TOTAL }}</strong>
|
||||
</div>
|
||||
<div class="aps-col s2 aps-no-mar shop-no-pad">
|
||||
<i class="icon fa-hourglass-start fa-fw"></i>
|
||||
<strong class="shop-block">{{ COUNT_EXPIRE }}</strong>
|
||||
</div>
|
||||
<div class="aps-col s2 aps-no-mar shop-no-pad">
|
||||
<i class="icon {{ aps_config('ass_gift_icon') }} fa-fw"></i>
|
||||
<strong class="shop-block">{{ COUNT_GIFTS }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aps-col m7 aps-no-mar-bot">
|
||||
<div class="shop-inventory-info">
|
||||
<div class="shop-inventory-proxy">
|
||||
<div class="shop-inventory-card">
|
||||
{{ aps_icon(true) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if ITEM_INFO %}
|
||||
{{ include('@phpbbstudio_ass/ass_item_inventory.html', {item: ITEM_INFO, S_GIFT_ANIMATION: S_IS_GIFT, S_LOADED_ITEM: true}) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="aps-panel aps-center">
|
||||
<div class="aps-panel-content">
|
||||
<p class="aps-no-mar shop-padding error">{{ lang('ASS_ITEMS_NONE_INVENTORY') ~ lang('ELLIPSIS') }}</p>
|
||||
</div>
|
||||
<div class="aps-panel-footer">
|
||||
<a class="aps-button-green shop-button-active" href="{{ U_VIEW_SHOP }}" title="{{ L_VIEW_SHOP }}">
|
||||
<i class="icon {{ T_SHOP_ICON }} fa-fw" aria-hidden="true"></i>
|
||||
<span>{{ L_VIEW_SHOP }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
286
ext/phpbbstudio/ass/styles/all/template/ass_item.html
Normal file
@@ -0,0 +1,286 @@
|
||||
{% extends '@phpbbstudio_aps/aps_main.html' %}
|
||||
|
||||
{% block includes %}
|
||||
{% INCLUDEJS '@phpbbstudio_ass/js/slick.min.js' %}
|
||||
{% INCLUDECSS '@phpbbstudio_ass/slick.css' %}
|
||||
|
||||
{% INCLUDECSS '@phpbbstudio_ass/ass_item.css' %}
|
||||
{% INCLUDECSS '@phpbbstudio_ass/ass_common.css' %}
|
||||
{% INCLUDEJS '@phpbbstudio_ass/js/ass_common.js' %}
|
||||
{% endblock %}
|
||||
|
||||
{% block nav %}
|
||||
{% for category in ass_shop_categories %}
|
||||
<li>
|
||||
<a class="aps-list-item{{ category.S_SELECTED ? ' aps-list-active' }}" href="{{ category.U_VIEW }}" title="{{ category.TITLE }}">
|
||||
{% if category.ICON %}<i class="icon {{ category.ICON }} fa-fw" aria-hidden="true"></i>{% endif %}
|
||||
<span class="sr-only">{{ category.TITLE }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block nav_right %}
|
||||
<li class="shop-item-help-label">
|
||||
<label class="aps-list-item shop-cursor-pointer" for="shop-item-help-input" title="{{ lang('ASS_ITEM_HELP') }}">
|
||||
<i class="icon fa-question fa-fw icon-white" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('ASS_ITEM_HELP') }}</span>
|
||||
</label>
|
||||
</li>
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
{{ include('@phpbbstudio_ass/ass_carousel.html') }}
|
||||
|
||||
<input class="shop-item-help-input" id="shop-item-help-input" type="checkbox" />
|
||||
|
||||
{% set delay = 3 %}
|
||||
|
||||
<div class="shop-item-help">
|
||||
<div class="aps-row" data-shop-item="{{ ID }}">
|
||||
{% if ICON %}
|
||||
<div class="aps-col s2">
|
||||
<div class="aps-panel aps-center shop-relative">
|
||||
<span class="shop-item-helper bottom-right delay-{{ delay }}">{{ lang('ASS_ITEM_ICON') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
|
||||
<div class="aps-panel-content">
|
||||
<i class="fa {{ ICON }} fa-3x icon-aps-blue shop-text-indent-10" aria-hidden="true"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-col s{{ ICON ? 10 : 12 }}">
|
||||
<div class="shop-title shop-relative">
|
||||
<span class="shop-item-helper bottom-left delay-{{ delay }}">{{ lang('ASS_ITEM_TITLE') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
|
||||
<h1 class="aps-no-mar shop-text-darkgray">{{ TITLE }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if not S_ACTIVE %}
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-button-red">
|
||||
<strong>{{ lang('ASS_ITEM_INACTIVE') }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-col s12 m6">
|
||||
<div class="aps-panel shop-relative">
|
||||
<span class="shop-item-helper right delay-{{ delay }}">{{ lang('ASS_ITEM_IMAGE') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
|
||||
<div class="aps-panel-content aps-center shop-panel-height {{ BACKGROUND_SRC ? 'shop-panel-background' : 'shop-vertical shop-center' }}"{% if BACKGROUND_SRC %} style="background-image: url({{ BACKGROUND_SRC }})"{% endif %}>
|
||||
{% if S_FEATURED and S_SALE and SHOP_PANEL_FEATURED_SALE_ICON %}
|
||||
<i class="icon shop-panel-icon{{ SHOP_PANEL_FEATURED_SALE_ICON }}"></i>
|
||||
{% elseif S_FEATURED and SHOP_PANEL_FEATURED_ICON %}
|
||||
<i class="icon shop-panel-icon{{ SHOP_PANEL_FEATURED_ICON }}" title="{{ lang('ASS_FEATURED') }}"></i>
|
||||
{% elseif S_SALE and SHOP_PANEL_SALE_ICON %}
|
||||
<i class="icon shop-panel-icon{{ SHOP_PANEL_SALE_ICON }}" title="{{ lang('ASS_ON_SALE') }}"></i>
|
||||
{% endif %}
|
||||
|
||||
{% if not BACKGROUND_SRC %}
|
||||
<i class="icon {{ aps_config('ass_no_image_icon') }} shop-text-indent-10 icon-xl icon-lightgray"></i>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s12 m6 aps-row">
|
||||
<div class="aps-col s6">
|
||||
<div class="aps-panel">
|
||||
<span class="shop-item-helper right delay-{{ delay }}">{{ lang('ASS_ITEM_PRICE') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
|
||||
<div class="aps-panel-content aps-center">
|
||||
{% if S_SALE %}
|
||||
<span class="aps-positive" title="{{ lang('ASS_ON_SALE') }}">{{ aps_display(SALE_PRICE) }}</span>
|
||||
{% else %}
|
||||
{{ aps_display(PRICE) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aps-col s6">
|
||||
<div class="aps-panel">
|
||||
<span class="shop-item-helper left delay-{{ delay }}">{{ lang('ASS_ITEM_STOCK') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
|
||||
<div class="aps-panel-content aps-center" title="{{ lang(S_STOCK_UNLIMITED ? 'ASS_UNLIMITED_STOCK' : (STOCK ? 'ASS_STOCK' : 'ASS_STOCK_OUT')) }}">
|
||||
{% if S_STOCK_UNLIMITED %}
|
||||
<strong>∞</strong>
|
||||
{% elseif STOCK %}
|
||||
<strong class="shop-item-stock {{ STOCK ? 'icon-gold' : 'error' }}">{{ STOCK }}</strong> /{{ STOCK_INITIAL }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if not S_GIFT_ONLY %}
|
||||
<div class="aps-col s{{ S_GIFT and S_CAN_GIFT ? 8 : 12 }}">
|
||||
<a class="aps-button-{{ not S_OUT_OF_STOCK ? 'green shop-relative' : 'red shop-cursor-ban' }} aps-center shop-block shop-bold shop-button-active"{% if not S_OUT_OF_STOCK %} href="{{ U_PURCHASE }}" data-shop-link="shop_purchase"{% endif %}>
|
||||
{% if not S_OUT_OF_STOCK %}
|
||||
<span class="shop-item-helper right delay-{{ delay }}">{{ lang('ASS_ITEM_PURCHASE') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
{% endif %}
|
||||
|
||||
{{ lang(S_OUT_OF_STOCK ? 'ASS_STOCK_OUT' : 'ASS_PURCHASE') }}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if S_GIFT and S_CAN_GIFT %}
|
||||
<div class="aps-col s{{ S_GIFT_ONLY ? 12 : 4 }}">
|
||||
<a class="aps-button-{{ S_GIFT_ONLY and S_OUT_OF_STOCK ? 'red' : 'blue' }} aps-center shop-block shop-relative{{ S_GIFT_ONLY ? ' shop-bold shop-button-active' }}{{ not S_GIFT_ONLY and S_OUT_OF_STOCK ? ' shop-button-disabled' }}"{% if not S_OUT_OF_STOCK %} href="{{ U_GIFT }}" title="{{ lang('ASS_GIFT') }}" data-shop-link="shop_purchase"{% endif %}>
|
||||
{% if not S_OUT_OF_STOCK %}
|
||||
<span class="shop-item-helper left delay-{{ delay }}">{{ lang('ASS_ITEM_GIFT') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
{% endif %}
|
||||
<i class="icon {{ aps_config('ass_gift_icon') }} fa-fw" aria-hidden="true"></i>
|
||||
<span{% if not S_GIFT_ONLY %} class="sr-only"{% endif %}>{{ lang('ASS_GIFT') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-panel shop-relative">
|
||||
<span class="shop-item-helper left delay-{{ delay }}">{{ lang('ASS_ITEM_INFORMATION') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
|
||||
<div class="aps-panel-content">
|
||||
<ul class="fa-ul shop-darken-span">
|
||||
<li>
|
||||
<i class="icon fa-hashtag fa-li"></i>
|
||||
{% if COUNT %}
|
||||
{{ lang('ASS_ITEM_USE_COUNT', COUNT) }}
|
||||
{% else %}
|
||||
{{ lang('ASS_ITEM_USE_UNLIMITED') }}
|
||||
{% endif %}
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon fa-hourglass-start fa-li"></i>
|
||||
{% if EXPIRE_WITHIN %}
|
||||
{{ lang('ASS_ITEM_EXPIRE_WITHIN', EXPIRE_WITHIN) }}
|
||||
{% else %}
|
||||
{{ lang('ASS_ITEM_EXPIRE_NEVER') }}
|
||||
{% endif %}
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon fa-undo fa-li"></i>
|
||||
{% if REFUND_WITHIN %}
|
||||
{{ lang('ASS_ITEM_REFUND_WITHIN', REFUND_WITHIN) }}
|
||||
{% else %}
|
||||
{{ lang('ASS_ITEM_REFUND_NEVER') }}
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-row aps-panel">
|
||||
<div class="aps-col s{{ EDIT_TIME ? 6 : 12 }} aps-no-mar-bot shop-relative" title="{{ lang('ASS_TIME_CREATED') }}">
|
||||
<span class="shop-item-helper top-right delay-{{ delay }}">{{ lang('ASS_ITEM_CREATE_TIME') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
|
||||
<div class="aps-panel-content shop-padding">
|
||||
<i class="icon fa-check-square-o fa-fw"></i>
|
||||
{{ user.format_date(CREATE_TIME) }}
|
||||
</div>
|
||||
</div>
|
||||
{% if EDIT_TIME %}
|
||||
<div class="aps-col s6 aps-no-mar-bot shop-relative" title="{{ lang('ASS_TIME_EDITED') }}">
|
||||
<span class="shop-item-helper top-left delay-{{ delay }}">{{ lang('ASS_ITEM_EDIT_TIME') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
|
||||
<div class="aps-panel-content shop-padding">
|
||||
<i class="icon fa-pencil-square-o fa-fw"></i>
|
||||
{{ user.format_date(EDIT_TIME) }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if S_SALE %}
|
||||
<div class="aps-col s12 aps-center">
|
||||
<em>{{ lang('ASS_SALE_END_ON', user.format_date(SALE_UNTIL_UNIX)) }}</em>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if AVAILABLE_UNTIL_UNIX and S_AVAILABLE %}
|
||||
<div class="aps-col s12 aps-center">
|
||||
<em>{{ lang('ASS_AVAILABILITY_END_ON', user.format_date(AVAILABLE_UNTIL_UNIX)) }}</em>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if DESC_HTML %}
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-panel shop-relative">
|
||||
<span class="shop-item-helper right delay-{{ delay }}">{{ lang('ASS_ITEM_DESCRIPTION') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
|
||||
<div class="aps-panel-content content">
|
||||
{{ DESC_HTML }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if IMAGES_SRC %}
|
||||
<div class="aps-row">
|
||||
<div class="aps-col s12 shop-fake-width">
|
||||
<span class="shop-item-helper right delay-{{ delay }}">{{ lang('ASS_ITEM_IMAGES') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content">
|
||||
<div data-shop-carousel="images">
|
||||
{% for image in IMAGES_SRC %}
|
||||
<div>
|
||||
<img class="shop-carousel-images" src="{{ image }}" alt="{{ TITLE }}" />
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="aps-panel-footer">
|
||||
{% for image in IMAGES_SRC %}
|
||||
<img class="shop-carousel-nav-img" src="{{ image }}" alt="{{ TITLE }}" />
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if ass_related|length %}
|
||||
<div class="aps-row">
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-panel shop-relative">
|
||||
<span class="shop-item-helper left delay-{{ delay }}">{{ lang('ASS_RELATED_ITEMS') }}</span>
|
||||
{% set delay = delay + 1 %}
|
||||
|
||||
<div class="aps-panel-header">
|
||||
<h3>{{ lang('ASS_RELATED_ITEMS') }}</h3>
|
||||
</div>
|
||||
<div class="aps-panel-content">
|
||||
<div class="aps-row">
|
||||
{% for item in ass_related %}
|
||||
<div class="aps-col s6 m3">
|
||||
{{ include('@phpbbstudio_ass/ass_item_panel.html') }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,37 @@
|
||||
<div class="shop-relative shop-panel-height shop-padding {{ item.BACKGROUND_SRC ? 'shop-panel-background' : 'shop-vertical' }}" data-shop-item="{{ item.ID }}"{% if item.BACKGROUND_SRC %} style="background-image: url({{ item.BACKGROUND_SRC }})"{% endif %}>
|
||||
{% if not item.BACKGROUND_SRC %}
|
||||
<i class="icon {{ item.ICON ?: aps_config('ass_no_image_icon') }} fa-fw shop-text-indent-10 icon-xl icon-lightgray"></i>
|
||||
{% endif %}
|
||||
|
||||
<div class="shop-panel-bottom aps-center">
|
||||
{% if S_CAN_PURCHASE and not item.S_GIFT_ONLY %}
|
||||
{% if item.S_OUT_OF_STOCK %}
|
||||
<span class="aps-button-red shop-button-active pull-left" title="{{ lang('ASS_STOCK_OUT') }}">
|
||||
<i class="icon {{ aps_config('ass_shop_icon') }} fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('ASS_PURCHASE') }}</span>
|
||||
</span>
|
||||
{% else %}
|
||||
<a class="aps-button-green pull-left" href="{{ item.U_PURCHASE }}" title="{{ lang('ASS_PURCHASE') }}" data-shop-link="ass_purchase">
|
||||
<i class="icon {{ aps_config('ass_shop_icon') }} fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('ASS_PURCHASE') }}</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if S_CAN_GIFT and item.S_GIFT %}
|
||||
<a class="aps-button-blue pull-right" href="{{ item.U_GIFT }}" title="{{ lang('ASS_GIFT') }}" data-shop-link="ass_gift">
|
||||
<i class="icon {{ aps_config('ass_gift_icon') }} fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('ASS_GIFT') }}</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
<a class="shop-text-large shop-panel-header-link" href="{{ item.U_VIEW }}" data-item-title="{{ item.TITLE }}">
|
||||
{{ item.TITLE }}
|
||||
</a>
|
||||
{% if item.S_OUT_OF_STOCK %}
|
||||
<span class="shop-block shop-text-med aps-negative" title="{{ lang('ASS_STOCK_OUT') }}">{{ aps_display(item.PRICE) }}</span>
|
||||
{% elseif item.S_SALE %}
|
||||
<span class="shop-block shop-text-med aps-positive" title="{{ lang('ASS_ON_SALE') }}">{{ aps_display(item.SALE_PRICE) }}</span>
|
||||
{% else %}
|
||||
<span class="shop-block shop-text-med shop-text-blue">{{ aps_display(item.PRICE) }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
185
ext/phpbbstudio/ass/styles/all/template/ass_item_inventory.html
Normal file
@@ -0,0 +1,185 @@
|
||||
<div class="shop-inventory-item" data-shop-item="{{ item.ID }}">
|
||||
{% if S_GIFT_ANIMATION %}
|
||||
<div class="shop-inventory-gift shop-zoom-hide">
|
||||
<div class="shop-inventory-gift-icon">
|
||||
<i class="fa fa-gift"></i>
|
||||
</div>
|
||||
|
||||
<span class="shop-stars shop-stars-top shop-zoom-out">
|
||||
{% for i in 1..5 %}
|
||||
<i class="fa fa-star"></i>
|
||||
{% endfor %}
|
||||
</span>
|
||||
<span class="shop-stars shop-stars-bottom shop-zoom-out">
|
||||
{% for i in 1..5 %}
|
||||
<i class="fa fa-star"></i>
|
||||
{% endfor %}
|
||||
</span>
|
||||
|
||||
<svg class="shop-zoom-out" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 -1 400 402">
|
||||
<path d="M 400 200 A 200 200 0 0 1 200 400 A 200 200 0 0 1 0 200 A 200 200 0 0 1 200 0 A 200 200 0 0 1 400 200 Z"></path>
|
||||
<path d="M 219.566 206.068 M 200 395 C 92.303 395 5 307.697 5 200 C 5 92.303 92.303 5 200 5 C 307.697 5 395 92.303 395 200"></path>
|
||||
<path d="M 250.689 383.163 C 234.552 387.619 217.554 390 200 390 C 95.066 390 10 304.934 10 200 C 10 95.066 95.066 10 200 10 C 304.934 10 390 95.066 390 200 C 390 210.848 389.091 221.483 387.345 231.834"></path>
|
||||
<path d="M 385 200 C 385 302.173 302.173 385 200 385 C 97.827 385 15 302.173 15 200 C 15 97.827 97.827 15 200 15 C 302.173 15 385 97.827 385 200 Z"></path>
|
||||
<path d="M 200 380 M 181.098 379.019 C 90.57 369.572 20 293.028 20 200 C 20 100.588 100.588 20 200 20 C 292.203 20 368.213 89.323 378.752 178.693"></path>
|
||||
<path d="M 200 375 C 103.35 375 25 296.65 25 200 C 25 103.35 103.35 25 200 25 C 296.65 25 375 103.35 375 200"></path>
|
||||
<path d="M 219.433 31.099 C 304.17 40.741 370 112.682 370 200 C 370 287.453 303.966 359.482 219.038 368.946 M 200 370 M 175.05 368.182 C 92.99 356.113 30 285.413 30 200 C 30 114.408 93.254 43.59 175.567 31.743"></path>
|
||||
<path d="M 365 200 C 365 291.127 291.127 365 200 365 C 108.873 365 35 291.127 35 200 C 35 108.873 108.873 35 200 35 C 291.127 35 365 108.873 365 200 Z"></path>
|
||||
</svg>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-row{{ S_GIFT_ANIMATION ? ' shop-zoom-in' }}">
|
||||
<div class="aps-col s1 shop-no-pad">
|
||||
{% if item.U_STACK_PREV %}
|
||||
<a class="aps-button-blue" href="{{ item.U_STACK_PREV }}" title="{{ lang('PREVIOUS') }}">
|
||||
<i class="icon fa-chevron-left fa-fw"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="aps-col s10 shop-no-pad">
|
||||
<h2 class="aps-no-mar aps-center shop-padding shop-no-pad-bot shop-text-darkgray">{{ item.TITLE }}</h2>
|
||||
</div>
|
||||
<div class="aps-col s1 shop-no-pad">
|
||||
{% if item.U_STACK_NEXT %}
|
||||
<a class="aps-button-blue" href="{{ item.U_STACK_NEXT }}" title="{{ lang('NEXT') }}">
|
||||
<i class="icon fa-chevron-right fa-fw"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if U_DOWNLOAD_FILE and S_LOADED_ITEM %}
|
||||
<div class="aps-col s12 shop-no-pad">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content shop-text-darkgray">
|
||||
<script>
|
||||
setTimeout(function() {
|
||||
window.location = '{{ U_DOWNLOAD_FILE|e('js') }}';
|
||||
}, 1500);
|
||||
</script>
|
||||
{{ lang('ASS_TYPE_FILE_START') }}
|
||||
</div>
|
||||
<div class="aps-panel-content">
|
||||
{{ lang('ASS_TYPE_FILE_START_NOT') }}
|
||||
</div>
|
||||
<div class="aps-panel-footer aps-center">
|
||||
<a class="aps-button-green shop-button-active" href="{{ U_DOWNLOAD_FILE }}">
|
||||
<i class="icon fa-download fa-fw" aria-hidden="true"></i>
|
||||
<span>{{ item.ACTIVATE }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if item.S_TYPE_ERROR %}
|
||||
<div class="aps-col s12 shop-no-pad">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-header error">
|
||||
<i class="icon fa-exclamation-triangle icon-white shop-panel-icon shop-panel-icon-red"></i>
|
||||
{{ lang('ERROR') }}
|
||||
</div>
|
||||
<div class="aps-panel-content shop-text-darkgray">
|
||||
{{ lang('ASS_ITEM_TYPE_NOT_EXIST') }}
|
||||
</div>
|
||||
<div class="aps-panel-content">
|
||||
{{ lang('ASS_ERROR_LOGGED') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if item.S_LIMIT or item.S_HAS_EXPIRED or item.S_WILL_EXPIRE %}
|
||||
<div class="aps-col s12 shop-no-pad">
|
||||
<div class="aps-button-{{ item.S_LIMIT or item.S_HAS_EXPIRED ? 'red' : 'blue' }} shop-button-active shop-cursor-normal">
|
||||
{{ lang(item.S_LIMIT ? 'ASS_ITEM_USE_REACHED' : (item.S_HAS_EXPIRED ? 'ASS_ITEM_EXPIRED' : 'ASS_ITEM_EXPIRE_SOON')) }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if item.S_GIFTED %}
|
||||
<div class="aps-col s12 shop-no-pad">
|
||||
<div class="aps-panel">
|
||||
<i class="icon {{ aps_config('ass_gift_icon') }} icon-white shop-panel-icon shop-panel-icon-small shop-panel-icon-blue"></i>
|
||||
|
||||
<div class="aps-panel-content">
|
||||
{{ lang('ASS_GIFTED_BY', item.GIFTER_NAME) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-col s3 shop-no-pad-left shop-inventory-item-img">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content shop-no-pad {{ item.BACKGROUND_SRC ? 'shop-panel-background' : 'shop-vertical' }}"{% if item.BACKGROUND_SRC %} style="background-image: url({{ item.BACKGROUND_SRC }})"{% endif %}>
|
||||
{% if not item.BACKGROUND_SRC %}
|
||||
<i class="icon {{ item.ICON ?: aps_config('ass_no_image_icon') }} fa-fw shop-text-indent-10 icon-xl icon-lightgray"></i>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s9 shop-no-pad-left shop-no-pad-right">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content">
|
||||
<ul class="fa-ul">
|
||||
<li title="{{ lang('ASS_USAGES') }}">
|
||||
<i class="icon fa-li fa-hashtag" aria-hidden="true"></i>
|
||||
<span><strong class="shop-text-darkgray shop-inventory-item-count">{{ item.USE_COUNT }}</strong> /{{ item.COUNT ?: '∞' }}</span>
|
||||
</li>
|
||||
<li{% if not item.USE_UNIX %} class="hidden"{% endif %} title="{{ lang('ASS_USED_LAST') }}">
|
||||
<i class="icon fa-li fa-clock-o" aria-hidden="true"></i>
|
||||
<span class="shop-inventory-item-time">{{ user.format_date(item.USE_UNIX) }}</span>
|
||||
</li>
|
||||
<li title="{{ lang('ASS_EXPIRATION_DATE') }}">
|
||||
<i class="icon fa-li fa-hourglass-end" aria-hidden="true"></i>
|
||||
<span>{{ item.EXPIRE_SECONDS ? user.format_date(item.PURCHASE_UNIX + item.EXPIRE_SECONDS) : lang('NEVER') }}</span>
|
||||
</li>
|
||||
<li title="{{ lang('ASS_REFUND_BEFORE') }}">
|
||||
<i class="icon fa-li fa-undo" aria-hidden="true"></i>
|
||||
<span>{{ item.REFUND_SECONDS ? user.format_date(item.PURCHASE_UNIX + item.REFUND_SECONDS) : lang('NEVER') }}</span>
|
||||
</li>
|
||||
<li title="{{ lang(item.S_GIFTED ? 'ASS_GIFT_TIME' : 'ASS_PURCHASE_TIME') }}">
|
||||
<i class="icon fa-li {{ aps_config(item.S_GIFTED ? 'ass_gift_icon' : 'ass_shop_icon') }}" aria-hidden="true"></i>
|
||||
<span>{{ user.format_date(item.PURCHASE_UNIX) }}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s8 shop-no-pad-left">
|
||||
{% if not item.S_HAS_EXPIRED and not item.S_LIMIT and not item.S_TYPE_ERROR %}
|
||||
<a class="aps-button-green aps-center shop-block{{ not S_LOADED_ITEM or not U_DOWNLOAD_FILE ? ' shop-button-active' }}" href="{{ item.U_ACTIVATE }}" title="{{ item.ACTIVATE }}"{% if item.S_AJAX %} data-shop-link="{{ item.S_AJAX }}"{% endif %}>
|
||||
{{ item.ACTIVATE }}
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if item.S_REFUND %}
|
||||
<div class="aps-col s2 shop-no-pad shop-inventory-refund">
|
||||
<a class="aps-button-blue aps-center shop-block" href="{{ item.U_REFUND }}" title="{{ lang('ASS_REFUND') }}" data-shop-link="shop_inventory_delete">
|
||||
<i class="icon fa-undo fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('ASS_REFUND') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-col s{{ item.S_REFUND ? 2 : 4 }} shop-no-pad-right">
|
||||
<a class="aps-button-red aps-center shop-block" href="{{ item.U_DELETE }}" title="{{ lang('ASS_DELETE') }}" data-shop-link="shop_inventory_delete">
|
||||
<i class="icon fa-trash fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('ASS_DELETE') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
{% if item.DESC_HTML %}
|
||||
<div class="aps-col s12 shop-no-pad">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content content">
|
||||
{{ item.DESC_HTML }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
47
ext/phpbbstudio/ass/styles/all/template/ass_item_panel.html
Normal file
@@ -0,0 +1,47 @@
|
||||
<div class="aps-panel" data-shop-item="{{ item.ID }}">
|
||||
<div class="aps-panel-header">
|
||||
{% if ITEM_PANEL_ICON %}
|
||||
<i class="icon shop-panel-icon{{ ITEM_PANEL_ICON }}"></i>
|
||||
{% elseif item.S_FEATURED and item.S_SALE and SHOP_PANEL_FEATURED_SALE_ICON %}
|
||||
<i class="icon shop-panel-icon{{ SHOP_PANEL_FEATURED_SALE_ICON }}"></i>
|
||||
{% elseif item.S_FEATURED and SHOP_PANEL_FEATURED_ICON %}
|
||||
<i class="icon shop-panel-icon{{ SHOP_PANEL_FEATURED_ICON }}" title="{{ lang('ASS_FEATURED') }}"></i>
|
||||
{% elseif item.S_SALE and SHOP_PANEL_SALE_ICON %}
|
||||
<i class="icon shop-panel-icon{{ SHOP_PANEL_SALE_ICON }}" title="{{ lang('ASS_ON_SALE') }}"></i>
|
||||
{% endif %}
|
||||
|
||||
<h3 class="shop-block"><a class="shop-text-darkgray shop-block shop-panel-header-link" href="{{ item.U_VIEW }}" data-item-title="{{ item.TITLE }}">{{ item.TITLE }}</a></h3>
|
||||
</div>
|
||||
<div class="aps-panel-content shop-panel-height {{ item.BACKGROUND_SRC ? 'shop-panel-background' : 'shop-vertical' }}"{% if item.BACKGROUND_SRC %} style="background-image: url({{ item.BACKGROUND_SRC }})"{% endif %}>
|
||||
{% if not item.BACKGROUND_SRC %}
|
||||
<i class="icon {{ item.ICON ?: aps_config('ass_no_image_icon') }} fa-fw shop-text-indent-10 icon-xl icon-lightgray"></i>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="aps-row aps-panel-footer">
|
||||
<div class="aps-col s6 aps-no-mar-bot shop-no-pad">
|
||||
{% if S_CAN_PURCHASE and not item.S_OUT_OF_STOCK and not item.S_GIFT_ONLY %}
|
||||
<a class="aps-button-green shop-panel-footer-button" href="{{ item.U_PURCHASE }}" title="{{ lang('ASS_PURCHASE') }}" data-shop-link="ass_purchase">
|
||||
<i class="icon {{ aps_config('ass_shop_icon') }} fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('ASS_PURCHASE') }}</span>
|
||||
</a>
|
||||
{% elseif item.S_GIFT and S_CAN_GIFT %}
|
||||
<a class="aps-button-blue shop-panel-footer-button" href="{{ item.U_GIFT }}" title="{{ lang('ASS_GIFT') }}" data-shop-link="ass_gift">
|
||||
<i class="icon {{ aps_config('ass_gift_icon') }} fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('ASS_GIFT') }}</span>
|
||||
</a>
|
||||
{% elseif not item.S_STOCK_UNLIMITED %}
|
||||
<strong class="shop-item-stock {{ item.STOCK ? 'icon-gold' : 'error' }}" title="{{ lang(item.STOCK ? 'ASS_STOCK' : 'ASS_STOCK_OUT') }}">{{ item.STOCK }}</strong> /{{ item.STOCK_INITIAL }}
|
||||
{% elseif item.ICON %}
|
||||
<i class="icon {{ item.ICON }} fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ item.TITLE }}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="aps-col s6 aps-no-mar-bot shop-no-pad shop-text-right">
|
||||
{% if item.S_SALE %}
|
||||
<span class="aps-positive" title="{{ lang('ASS_ON_SALE') }}">{{ aps_display(item.SALE_PRICE) }}</span>
|
||||
{% else %}
|
||||
{{ aps_display(item.PRICE) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
1
ext/phpbbstudio/ass/styles/all/template/ass_message.html
Normal file
@@ -0,0 +1 @@
|
||||
<p>{{ MESSAGE_TEXT }}</p>
|
||||
45
ext/phpbbstudio/ass/styles/all/template/ass_pagination.html
Normal file
@@ -0,0 +1,45 @@
|
||||
<nav>
|
||||
{# Pagination's aria-labels should NOT be translated! #}
|
||||
<ul class="shop-pagination aps-center" aria-label="pagination">
|
||||
{% for item in shop_pagination %}
|
||||
{% if item.S_IS_PREV or (not item.S_IS_PREV and loop.first) %}
|
||||
<li>
|
||||
<a class="aps-button-blue shop-block{{ not item.S_IS_PREV ? ' shop-button-disabled' }}"{% if item.S_IS_PREV %} href="{{ U_SHOP_PAGINATION_PREVIOUS_PAGE }}"{% endif %} aria-label="Previous page" role="button">
|
||||
<i class="icon fa-chevron-left fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('PREVIOUS') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if item.S_IS_ELLIPSIS %}
|
||||
<li>
|
||||
<span class="aps-button-blue shop-block shop-button-disabled" role="separator">
|
||||
<i class="icon fa-ellipsis-h fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('ELLIPSIS') }}</span>
|
||||
</span>
|
||||
</li>
|
||||
{% elseif item.S_IS_CURRENT %}
|
||||
<li>
|
||||
<a class="aps-button-blue shop-block shop-button-active" href="{{ item.PAGE_URL }}" aria-label="Page {{ item.PAGE_NUMBER }}, Current page" aria-current="true" role="button">
|
||||
{{ item.PAGE_NUMBER }}
|
||||
</a>
|
||||
</li>
|
||||
{% elseif not item.S_IS_PREV and not item.S_IS_NEXT %}
|
||||
<li>
|
||||
<a class="aps-button-blue shop-block" href="{{ item.PAGE_URL }}" aria-label="Page {{ item.PAGE_NUMBER }}" aria-current="true" role="button">
|
||||
{{ item.PAGE_NUMBER }}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if item.S_IS_NEXT or (not item.S_IS_NEXT and loop.last) %}
|
||||
<li>
|
||||
<a class="aps-button-blue shop-block{{ not item.S_IS_NEXT ? ' shop-button-disabled' }}"{% if item.S_IS_NEXT %} href="{{ U_SHOP_PAGINATION_NEXT_PAGE }}"{% endif %} aria-label="Next page" role="button">
|
||||
<i class="icon fa-chevron-right fa-fw" aria-hidden="true"></i>
|
||||
<span class="sr-only">{{ lang('NEXT') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</nav>
|
||||
191
ext/phpbbstudio/ass/styles/all/template/ass_purchase.html
Normal file
@@ -0,0 +1,191 @@
|
||||
{% extends '@phpbbstudio_aps/aps_main.html' %}
|
||||
|
||||
{% block includes %}
|
||||
{% INCLUDECSS '@phpbbstudio_ass/ass_common.css' %}
|
||||
{% endblock %}
|
||||
|
||||
{% block nav %}
|
||||
{% for category in ass_shop_categories %}
|
||||
<li>
|
||||
<a class="aps-list-item{{ category.S_SELECTED ? ' aps-list-active' }}" href="{{ category.U_VIEW }}" title="{{ category.TITLE }}">
|
||||
{% if category.ICON %}<i class="icon {{ category.ICON }} fa-fw" aria-hidden="true"></i>{% endif %}
|
||||
<span class="sr-only">{{ category.TITLE }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
<div class="aps-row">
|
||||
{% if ICON %}
|
||||
<div class="aps-col s2">
|
||||
<div class="aps-panel aps-center">
|
||||
<div class="aps-panel-content">
|
||||
<i class="fa {{ ICON }} fa-fw fa-3x icon-aps-blue" aria-hidden="true"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-col s{{ ICON ? 10 : 12 }}">
|
||||
<div class="shop-title">
|
||||
<h1 class="aps-no-mar shop-text-darkgray">{{ TITLE }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s12 m6">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content aps-center shop-panel-height {{ BACKGROUND_SRC ? 'shop-panel-background' : 'shop-vertical' }}"{% if BACKGROUND_SRC %} style="background-image: url({{ BACKGROUND_SRC }})"{% endif %}>
|
||||
{% if S_FEATURED and S_SALE and SHOP_PANEL_FEATURED_SALE_ICON %}
|
||||
<i class="icon shop-panel-icon{{ SHOP_PANEL_FEATURED_SALE_ICON }}"></i>
|
||||
{% elseif S_FEATURED and SHOP_PANEL_FEATURED_ICON %}
|
||||
<i class="icon shop-panel-icon{{ SHOP_PANEL_FEATURED_ICON }}" title="{{ lang('ASS_FEATURED') }}"></i>
|
||||
{% elseif S_SALE and SHOP_PANEL_SALE_ICON %}
|
||||
<i class="icon shop-panel-icon{{ SHOP_PANEL_SALE_ICON }}" title="{{ lang('ASS_ON_SALE') }}"></i>
|
||||
{% endif %}
|
||||
|
||||
{% if not BACKGROUND_SRC %}
|
||||
<i class="icon {{ aps_config('ass_no_image_icon') }} fa-fw shop-text-indent-10 icon-xl icon-lightgray"></i>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="aps-col s12 m6 aps-row">
|
||||
{% if S_CONFIRM_ACTION %}
|
||||
<div class="aps-col s6">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content aps-center">
|
||||
{% if S_SALE %}
|
||||
<span class="aps-positive" title="{{ lang('ASS_ON_SALE') }}">{{ aps_display(ASS_PURCHASE_PRICE) }}</span>
|
||||
{% else %}
|
||||
{{ aps_display(ASS_PURCHASE_PRICE) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aps-col s6">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content aps-center" title="{{ lang(S_STOCK_UNLIMITED ? 'ASS_UNLIMITED_STOCK' : (STOCK ? 'ASS_STOCK' : 'ASS_STOCK_OUT')) }}">
|
||||
{% if S_STOCK_UNLIMITED %}
|
||||
<strong>∞</strong>
|
||||
{% elseif STOCK %}
|
||||
<strong class="{{ STOCK ? 'icon-gold' : 'error' }}">{{ STOCK }}</strong> /{{ STOCK_INITIAL }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content">
|
||||
<ul class="fa-ul shop-darken-span">
|
||||
<li>
|
||||
<i class="icon fa-hashtag fa-li"></i>
|
||||
{% if COUNT %}
|
||||
{{ lang('ASS_ITEM_USE_COUNT', COUNT) }}
|
||||
{% else %}
|
||||
{{ lang('ASS_ITEM_USE_UNLIMITED') }}
|
||||
{% endif %}
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon fa-hourglass-start fa-li"></i>
|
||||
{% if EXPIRE_WITHIN %}
|
||||
{{ lang('ASS_ITEM_EXPIRE_WITHIN', EXPIRE_WITHIN) }}
|
||||
{% else %}
|
||||
{{ lang('ASS_ITEM_EXPIRE_NEVER') }}
|
||||
{% endif %}
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon fa-undo fa-li"></i>
|
||||
{% if REFUND_WITHIN %}
|
||||
{{ lang('ASS_ITEM_REFUND_WITHIN', REFUND_WITHIN) }}
|
||||
{% else %}
|
||||
{{ lang('ASS_ITEM_REFUND_NEVER') }}
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if S_CONFIRM_ACTION %}
|
||||
<div class="aps-col s12">
|
||||
<form class="aps-form" id="confirm" action="{{ S_CONFIRM_ACTION }}" method="post">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-header">
|
||||
<h3>{{ MESSAGE_TITLE }}</h3>
|
||||
</div>
|
||||
|
||||
{% if not S_ASS_PURCHASE %}
|
||||
<div class="aps-panel-content">
|
||||
<label class="shop-block shop-mar-bot" for="username">{{ lang('ASS_GIFT_USER') }}</label>
|
||||
<input id="username" name="username" type="text" placeholder="{{ lang('USERNAME') }}">
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-panel-content">
|
||||
{{ MESSAGE_TEXT }}
|
||||
</div>
|
||||
|
||||
<div class="aps-panel-footer aps-center">
|
||||
{{ S_HIDDEN_FIELDS }}
|
||||
<input class="aps-button-green" type="submit" name="confirm" value="{{ lang('YES') }}" />
|
||||
<a class="aps-button-red" href="{{ path('phpbbstudio_ass_shop') }}">{{ lang('NO') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-header">
|
||||
<h3>{{ lang(S_ASS_PURCHASE ? 'ASS_PURCHASE' : 'ASS_GIFT') }}</h3>
|
||||
</div>
|
||||
<div class="aps-panel-content">
|
||||
<p>
|
||||
{% if S_ASS_PURCHASE %}
|
||||
<span class="shop-text-darkgray shop-block">{{ lang('ASS_PURCHASE_SUCCESS') }}</span>
|
||||
{{ lang('ASS_INVENTORY_ADDED') }}
|
||||
{% else %}
|
||||
<span class="shop-text-darkgray shop-block">{{ lang('ASS_GIFT_SUCCESS') }}</span>
|
||||
{{ lang('ASS_INVENTORY_ADDED_USER', RECIPIENT_NAME) }}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class="shop-block">
|
||||
{{ lang('ASS_POINTS_DEDUCTED') ~ lang('COLON') }}
|
||||
{{ aps_display(ASS_PURCHASE_PRICE) }}
|
||||
</span>
|
||||
<span class="shop-block">
|
||||
{{ lang('ASS_POINTS_BALANCE', aps_name()) ~ lang('COLON') }}
|
||||
{{ aps_display(NEW_USER_POINTS) }}
|
||||
</span>
|
||||
</p>
|
||||
|
||||
{% if EXPIRE_UNIX %}
|
||||
<p>
|
||||
<span class="shop-block">{{ lang('ASS_ITEM_USE_BEFORE') }}</span>
|
||||
{{ user.format_date(EXPIRE_UNIX) }}
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<p>
|
||||
{% if S_ASS_PURCHASE %}
|
||||
<a class="aps-button-blue" href="{{ U_INVENTORY }}">{{ lang('ASS_INVENTORY_GO') }}</a>
|
||||
{% else %}
|
||||
<a class="aps-button-blue" href="{{ path('phpbbstudio_ass_shop') }}">{{ lang('ASS_SHOP_INDEX') }}</a>
|
||||
{% if U_SEND_PM %}
|
||||
<a class="aps-button-green" href="{{ U_SEND_PM }}">{{ lang('SEND_PRIVATE_MESSAGE') }}</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
144
ext/phpbbstudio/ass/styles/all/template/ass_purchase_ajax.html
Normal file
@@ -0,0 +1,144 @@
|
||||
<div class="aps-main">
|
||||
<div class="aps-body">
|
||||
<div class="aps-row">
|
||||
<div class="aps-col s12">
|
||||
<div class="shop-title">
|
||||
<h1 class="aps-no-mar shop-text-darkgray">{{ TITLE }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if not S_PURCHASE_SUCCESS %}
|
||||
<div class="aps-col s6">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content aps-center">
|
||||
{% if S_SALE %}
|
||||
<span class="aps-positive" title="{{ lang('ASS_ON_SALE') }}">{{ aps_display(ASS_PURCHASE_PRICE) }}</span>
|
||||
{% else %}
|
||||
{{ aps_display(ASS_PURCHASE_PRICE) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aps-col s6">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content aps-center" title="{{ lang(S_STOCK_UNLIMITED ? 'ASS_UNLIMITED_STOCK' : (STOCK ? 'ASS_STOCK' : 'ASS_STOCK_OUT')) }}">
|
||||
{% if S_STOCK_UNLIMITED %}
|
||||
<strong>∞</strong>
|
||||
{% elseif STOCK %}
|
||||
<strong class="{{ STOCK ? 'icon-gold' : 'error' }}">{{ STOCK }}</strong> /{{ STOCK_INITIAL }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content">
|
||||
<ul class="fa-ul shop-darken-span shop-text-left">
|
||||
<li>
|
||||
<i class="icon fa-hashtag fa-li"></i>
|
||||
{% if COUNT %}
|
||||
{{ lang('ASS_ITEM_USE_COUNT', COUNT) }}
|
||||
{% else %}
|
||||
{{ lang('ASS_ITEM_USE_UNLIMITED') }}
|
||||
{% endif %}
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon fa-hourglass-start fa-li"></i>
|
||||
{% if EXPIRE_WITHIN %}
|
||||
{{ lang('ASS_ITEM_EXPIRE_WITHIN', EXPIRE_WITHIN) }}
|
||||
{% else %}
|
||||
{{ lang('ASS_ITEM_EXPIRE_NEVER') }}
|
||||
{% endif %}
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon fa-undo fa-li"></i>
|
||||
{% if REFUND_WITHIN %}
|
||||
{{ lang('ASS_ITEM_REFUND_WITHIN', REFUND_WITHIN) }}
|
||||
{% else %}
|
||||
{{ lang('ASS_ITEM_REFUND_NEVER') }}
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if not S_PURCHASE_SUCCESS and not S_ASS_PURCHASE %}
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content">
|
||||
<form class="aps-form">
|
||||
<label class="shop-block shop-mar-bot" for="username">{{ lang('ASS_GIFT_USER') }}</label>
|
||||
<input id="username" name="username" type="text" placeholder="{{ lang('USERNAME') }}">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if S_ASS_PURCHASE and not S_PURCHASE_SUCCESS %}
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content">
|
||||
{% if ASS_ITEM_STACK %}
|
||||
{{ lang('ASS_WARNING_STACK', ASS_ITEM_STACK) }}
|
||||
{% else %}
|
||||
{{ lang('ASS_ERROR_NOT_OWNED') }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="aps-col s12">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-content">
|
||||
{% if not S_PURCHASE_SUCCESS %}
|
||||
{{ MESSAGE_TEXT }}
|
||||
{% else %}
|
||||
<p>
|
||||
{% if S_ASS_PURCHASE %}
|
||||
<span class="shop-text-darkgray shop-block">{{ lang('ASS_PURCHASE_SUCCESS') }}</span>
|
||||
{{ lang('ASS_INVENTORY_ADDED') }}
|
||||
{% else %}
|
||||
<span class="shop-text-darkgray shop-block">{{ lang('ASS_GIFT_SUCCESS') }}</span>
|
||||
{{ lang('ASS_INVENTORY_ADDED_USER', RECIPIENT_NAME) }}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
<span class="shop-block">
|
||||
{{ lang('ASS_POINTS_DEDUCTED') ~ lang('COLON') }}
|
||||
{{ aps_display(ASS_PURCHASE_PRICE) }}
|
||||
</span>
|
||||
<span class="shop-block">
|
||||
{{ lang('ASS_POINTS_BALANCE', aps_name()) ~ lang('COLON') }}
|
||||
{{ aps_display(NEW_USER_POINTS) }}
|
||||
</span>
|
||||
</p>
|
||||
|
||||
{% if EXPIRE_UNIX %}
|
||||
<p>
|
||||
<span class="shop-block">{{ lang('ASS_ITEM_USE_BEFORE') }}</span>
|
||||
{{ user.format_date(EXPIRE_UNIX) }}
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<p>
|
||||
{% if S_ASS_PURCHASE %}
|
||||
<a class="aps-button-blue" href="{{ U_INVENTORY }}">{{ lang('ASS_INVENTORY_GO') }}</a>
|
||||
{% else %}
|
||||
<a class="aps-button-blue" href="{{ path('phpbbstudio_ass_shop') }}">{{ lang('ASS_SHOP_INDEX') }}</a>
|
||||
{% if U_SEND_PM %}
|
||||
<a class="aps-button-green" href="{{ U_SEND_PM }}">{{ lang('SEND_PRIVATE_MESSAGE') }}</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
64
ext/phpbbstudio/ass/styles/all/template/ass_shop.html
Normal file
@@ -0,0 +1,64 @@
|
||||
{% extends '@phpbbstudio_aps/aps_main.html' %}
|
||||
|
||||
{% block includes %}
|
||||
{% INCLUDEJS '@phpbbstudio_ass/js/slick.min.js' %}
|
||||
{% INCLUDECSS '@phpbbstudio_ass/slick.css' %}
|
||||
|
||||
{% INCLUDEJS '@phpbbstudio_ass/js/ass_common.js' %}
|
||||
{% INCLUDECSS '@phpbbstudio_ass/ass_common.css' %}
|
||||
{% endblock %}
|
||||
|
||||
{% block nav %}
|
||||
{% for category in ass_shop_categories %}
|
||||
<li>
|
||||
<a class="aps-list-item{{ category.S_SELECTED ? ' aps-list-active' }}" href="{{ category.U_VIEW }}" title="{{ category.TITLE }}">
|
||||
{% if category.ICON %}<i class="icon {{ category.ICON }} fa-fw" aria-hidden="true"></i>{% endif %}
|
||||
<span class="sr-only">{{ category.TITLE }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
{{ include('@phpbbstudio_ass/ass_carousel.html') }}
|
||||
|
||||
<div class="aps-row">
|
||||
{% for panel, data in ass_panels %}
|
||||
{% if attribute(loops, 'ass_' ~ panel) is defined %}
|
||||
{% set items = attribute(loops, 'ass_' ~ panel) %}
|
||||
{% if data.carousel %}
|
||||
<div class="aps-col s12 m6 shop-fake-width">
|
||||
<div class="aps-panel">
|
||||
<div class="aps-panel-header">
|
||||
{% set icon = attribute(_context, 'SHOP_PANEL_' ~ panel|upper ~ '_ICON') %}
|
||||
{% if icon %}
|
||||
<i class="icon shop-panel-icon{{ icon }}"></i>
|
||||
{% endif %}
|
||||
|
||||
<h3>{{ lang(data.title) }}</h3>
|
||||
</div>
|
||||
<div class="aps-panel-content shop-overflow shop-no-pad">
|
||||
<div data-shop-carousel="true">
|
||||
{% for item in items %}
|
||||
{{ include('@phpbbstudio_ass/ass_item_carousel.html') }}
|
||||
{% else %}
|
||||
<div class="aps-center shop-vertical shop-padding shop-panel-height">
|
||||
<strong class="error">{{ lang('ASS_ITEMS_NONE') }}</strong>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="aps-panel-footer shop-carousel-footer"></div>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
{% for item in items %}
|
||||
<div class="aps-col s6 m{{ aps_config('ass_panel_' ~ panel ~ '_width') }}">
|
||||
{{ include('@phpbbstudio_ass/ass_item_panel.html', { ITEM_PANEL_ICON: attribute(_context, 'SHOP_PANEL_' ~ panel|upper ~ '_ICON') }) }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,27 @@
|
||||
{% block width %}s12 m6{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if available|length %}
|
||||
<div class="aps-collection">
|
||||
{% for item in available %}
|
||||
<div class="aps-collection-item aps-avatar">
|
||||
{% if item.BACKGROUND_SRC %}
|
||||
<img class="avatar" src="{{ item.BACKGROUND_SRC }}" alt="{{ item.TITLE }}" />
|
||||
{% else %}
|
||||
<i class="avatar fa {{ item.ICON ?: aps_config('ass_no_image_icon') }} fa-3x icon-gray" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
<span class="title">{{ item.TITLE }}</span><br />
|
||||
<em>
|
||||
<i class="icon calender-times-o fa-fw" aria-hidden="true"></i>
|
||||
{{ user.format_date(item.AVAILABLE_UNTIL_UNIX) }}
|
||||
</em>
|
||||
<a class="aps-secondary-content" href="{{ item.U_VIEW }}">
|
||||
<i class="icon fa-external-link fa-fw"></i>
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="error aps-center">{{ lang('ASS_ITEMS_NONE') }}</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
13
ext/phpbbstudio/ass/styles/all/template/blocks/buyers.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{% block width %}s12 m4{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="aps-collection">
|
||||
{% for user in buyers %}
|
||||
<div class="aps-collection-item aps-avatar">
|
||||
{{ user.AVATAR ? user.AVATAR }}
|
||||
<span class="title">{{ user.NAME }}</span>
|
||||
<p>{{ user.COUNT }}</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
18
ext/phpbbstudio/ass/styles/all/template/blocks/charts.html
Normal file
@@ -0,0 +1,18 @@
|
||||
{% block width %}s12 m6 aps-js{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<canvas data-aps-chart="pie"
|
||||
data-aps-time="{{ aps_config('aps_display_graph_time') }}"
|
||||
data-aps-empty="{{ lang('APS_POINTS_DATA_EMPTY', aps_name()) }}"
|
||||
aria-label="{{ lang('APS_POINTS_PER_FORUM', aps_name()) }}"
|
||||
role="img">
|
||||
<p>{{ lang('APS_POINTS_PER_FORUM', aps_name()) }}</p>
|
||||
</canvas>
|
||||
<div class="hidden">
|
||||
{% for forum in aps_forums %}
|
||||
<div data-aps-labels="{{ forum.NAME|e }}"
|
||||
data-aps-value="{{ aps_format(forum.POINTS) }}">
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
27
ext/phpbbstudio/ass/styles/all/template/blocks/featured.html
Normal file
@@ -0,0 +1,27 @@
|
||||
{% block width %}s12 m6{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if featured|length %}
|
||||
<div class="aps-collection">
|
||||
{% for item in featured %}
|
||||
<div class="aps-collection-item aps-avatar">
|
||||
{% if item.BACKGROUND_SRC %}
|
||||
<img class="avatar" src="{{ item.BACKGROUND_SRC }}" alt="{{ item.TITLE }}" />
|
||||
{% else %}
|
||||
<i class="avatar fa {{ item.ICON ?: aps_config('ass_no_image_icon') }} fa-3x icon-gray" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
<span class="title">{{ item.TITLE }}</span><br />
|
||||
<em>
|
||||
<i class="icon {{ aps_config('ass_panel_featured_icon') ?: 'calender-times-o' }} fa-fw" aria-hidden="true"></i>
|
||||
{{ user.format_date(item.FEATURED_UNTIL_UNIX) }}
|
||||
</em>
|
||||
<a class="aps-secondary-content" href="{{ item.U_VIEW }}">
|
||||
<i class="icon fa-external-link fa-fw"></i>
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="error aps-center">{{ lang('ASS_ITEMS_NONE') }}</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
13
ext/phpbbstudio/ass/styles/all/template/blocks/gifters.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{% block width %}s12 m4{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="aps-collection">
|
||||
{% for user in gifters %}
|
||||
<div class="aps-collection-item aps-avatar">
|
||||
{{ user.AVATAR ? user.AVATAR }}
|
||||
<span class="title">{{ user.NAME }}</span>
|
||||
<p>{{ user.COUNT }}</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
23
ext/phpbbstudio/ass/styles/all/template/blocks/limited.html
Normal file
@@ -0,0 +1,23 @@
|
||||
{% block width %}s12 m6{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if limited|length %}
|
||||
<div class="aps-collection">
|
||||
{% for item in limited %}
|
||||
<div class="aps-collection-item aps-avatar">
|
||||
{% if item.BACKGROUND_SRC %}
|
||||
<img class="avatar" src="{{ item.BACKGROUND_SRC }}" alt="{{ item.TITLE }}" />
|
||||
{% else %}
|
||||
<i class="avatar fa {{ item.ICON ?: aps_config('ass_no_image_icon') }} fa-3x icon-gray" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
<span class="title">{{ item.TITLE }}</span>
|
||||
<a class="aps-secondary-content" href="{{ item.U_VIEW }}">
|
||||
{{ item.STOCK }}
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="error aps-center">{{ lang('ASS_ITEMS_NONE') }}</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,23 @@
|
||||
{% block width %}s12 m6{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if purchases|length %}
|
||||
<div class="aps-collection">
|
||||
{% for item in purchases %}
|
||||
<div class="aps-collection-item aps-avatar">
|
||||
{% if item.BACKGROUND_SRC %}
|
||||
<img class="avatar" src="{{ item.BACKGROUND_SRC }}" alt="{{ item.TITLE }}" />
|
||||
{% else %}
|
||||
<i class="avatar fa {{ item.ICON ?: aps_config('ass_no_image_icon') }} fa-3x icon-gray" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
<span class="title">{{ item.TITLE }}</span><br />
|
||||
<a class="aps-secondary-content" href="{{ item.U_VIEW }}">
|
||||
{{ item.PURCHASES }}
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="error aps-center">{{ lang('ASS_ITEMS_NONE') }}</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,18 @@
|
||||
{% block width %}s12 m6 aps-js{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<canvas data-aps-chart="pie"
|
||||
data-aps-time="{{ aps_config('aps_display_graph_time') }}"
|
||||
data-aps-empty="{{ lang('APS_POINTS_DATA_EMPTY', aps_name()) }}"
|
||||
aria-label="{{ lang('ASS_PURCHASES_PER_GROUP', aps_name()) }}"
|
||||
role="img">
|
||||
<p>{{ lang('APS_PURCHASES_PER_GROUP', aps_name()) }}</p>
|
||||
</canvas>
|
||||
<div class="hidden">
|
||||
{% for category in purchases_category %}
|
||||
<div data-aps-labels="{{ category.NAME|e }}"
|
||||
data-aps-value="{{ category.PURCHASES }}">
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,18 @@
|
||||
{% block width %}s12 m6 aps-js{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<canvas data-aps-chart="pie"
|
||||
data-aps-time="{{ aps_config('aps_display_graph_time') }}"
|
||||
data-aps-empty="{{ lang('APS_POINTS_DATA_EMPTY', aps_name()) }}"
|
||||
aria-label="{{ lang('ASS_PURCHASES_PER_GROUP', aps_name()) }}"
|
||||
role="img">
|
||||
<p>{{ lang('APS_PURCHASES_PER_GROUP', aps_name()) }}</p>
|
||||
</canvas>
|
||||
<div class="hidden">
|
||||
{% for group in purchases_group %}
|
||||
<div data-aps-labels="{{ group.NAME|e }}"
|
||||
data-aps-value="{{ group.PURCHASES }}">
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
27
ext/phpbbstudio/ass/styles/all/template/blocks/recent.html
Normal file
@@ -0,0 +1,27 @@
|
||||
{% block width %}s12 m6{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if recent|length %}
|
||||
<div class="aps-collection">
|
||||
{% for item in recent %}
|
||||
<div class="aps-collection-item aps-avatar">
|
||||
{% if item.BACKGROUND_SRC %}
|
||||
<img class="avatar" src="{{ item.BACKGROUND_SRC }}" alt="{{ item.TITLE }}" />
|
||||
{% else %}
|
||||
<i class="avatar fa {{ item.ICON ?: aps_config('ass_no_image_icon') }} fa-3x icon-gray" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
<span class="title">{{ item.TITLE }}</span><br />
|
||||
<em>
|
||||
<i class="icon fa-pencil-square-o fa-fw" aria-hidden="true"></i>
|
||||
{{ user.format_date(item.CREATE_TIME) }}
|
||||
</em>
|
||||
<a class="aps-secondary-content" href="{{ item.U_VIEW }}">
|
||||
<i class="icon fa-external-link fa-fw"></i>
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="error aps-center">{{ lang('ASS_ITEMS_NONE') }}</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
27
ext/phpbbstudio/ass/styles/all/template/blocks/sale.html
Normal file
@@ -0,0 +1,27 @@
|
||||
{% block width %}s12 m6{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if sale|length %}
|
||||
<div class="aps-collection">
|
||||
{% for item in sale %}
|
||||
<div class="aps-collection-item aps-avatar">
|
||||
{% if item.BACKGROUND_SRC %}
|
||||
<img class="avatar" src="{{ item.BACKGROUND_SRC }}" alt="{{ item.TITLE }}" />
|
||||
{% else %}
|
||||
<i class="avatar fa {{ item.ICON ?: aps_config('ass_no_image_icon') }} fa-3x icon-gray" aria-hidden="true"></i>
|
||||
{% endif %}
|
||||
<span class="title">{{ item.TITLE }}</span><br />
|
||||
<em>
|
||||
<i class="icon {{ aps_config('ass_panel_sale_icon') ?: 'calender-times-o' }} fa-fw" aria-hidden="true"></i>
|
||||
{{ user.format_date(item.SALE_UNTIL_UNIX) }}
|
||||
</em>
|
||||
<a class="aps-secondary-content" href="{{ item.U_VIEW }}">
|
||||
<i class="icon fa-external-link fa-fw"></i>
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="error aps-center">{{ lang('ASS_ITEMS_NONE') }}</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
13
ext/phpbbstudio/ass/styles/all/template/blocks/spenders.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{% block width %}s12 m4{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="aps-collection">
|
||||
{% for user in spenders %}
|
||||
<div class="aps-collection-item aps-avatar">
|
||||
{{ user.AVATAR ? user.AVATAR }}
|
||||
<span class="title">{{ user.NAME }}</span>
|
||||
<p>{{ aps_display(user.COUNT) }}</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_NAVBAR_HEADER_PROFILE_LIST_AFTER %}
|
||||
<li>
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}" role="menuitem">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_NAVBAR_HEADER_PROFILE_LIST_BEFORE %}
|
||||
<li>
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}" role="menuitem">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_NAVBAR_HEADER_QUICK_LINKS_AFTER %}
|
||||
<li>
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}" role="menuitem">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_NAVBAR_HEADER_QUICK_LINKS_BEFORE %}
|
||||
<li>
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}" role="menuitem">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_NAVBAR_HEADER_USER_PROFILE_APPEND %}
|
||||
<li class="rightside">
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}" role="menuitem">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_NAVBAR_HEADER_USER_PROFILE_PREPEND %}
|
||||
<li class="rightside">
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}" role="menuitem">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,5 @@
|
||||
{% if S_ASS_SHOP %}
|
||||
<div class="studio-spinner" id="studio_spinner">
|
||||
{% for i in 1..8 %}<span></span>{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_OVERALL_FOOTER_BREADCRUMB_APPEND %}
|
||||
<li>
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_OVERALL_FOOTER_TEAMLINK_AFTER %}
|
||||
<li class="rightside">
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}" role="menuitem">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_OVERALL_FOOTER_TEAMLINK_BEFORE %}
|
||||
<li class="rightside">
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}" role="menuitem">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_OVERALL_FOOTER_TIMEZONE_AFTER %}
|
||||
<li class="rightside">
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}" role="menuitem">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_OVERALL_FOOTER_TIMEZONE_BEFORE %}
|
||||
<li class="rightside">
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}" role="menuitem">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_OVERALL_HEADER_NAVIGATION_APPEND %}
|
||||
<li>
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}" role="menuitem">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,7 @@
|
||||
{% if S_ASS_ENABLED and S_ASS_OVERALL_HEADER_NAVIGATION_PREPEND %}
|
||||
<li>
|
||||
<a href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}" role="menuitem">
|
||||
<i class="icon {{ ASS_SHOP_ICON }} fa-fw" aria-hidden="true"></i><span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,16 @@
|
||||
{% if S_ASS_ENABLED %}
|
||||
<li>
|
||||
<a class="aps-list-item{{ S_ASS_SHOP ? ' aps-list-active' }}" href="{{ path('phpbbstudio_ass_shop') }}" title="{{ lang('ASS_SHOP') }}">
|
||||
<i class="icon {{ aps_config('ass_shop_icon') }} fa-fw"></i>
|
||||
<span>{{ lang('ASS_SHOP') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% if S_REGISTERED_USER %}
|
||||
<li>
|
||||
<a class="aps-list-item{{ S_ASS_INVENTORY ? ' aps-list-active' }}" href="{{ path('phpbbstudio_ass_inventory') }}" title="{{ lang('ASS_INVENTORY') }}">
|
||||
<i class="icon {{ aps_config('ass_inventory_icon') }} fa-fw"></i>
|
||||
<span>{{ lang('ASS_INVENTORY') }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
640
ext/phpbbstudio/ass/styles/all/template/js/ass_common.js
Normal file
@@ -0,0 +1,640 @@
|
||||
jQuery(function($) {
|
||||
let studio = {
|
||||
body: '.aps-body',
|
||||
link: '[data-shop-link]',
|
||||
ajax: {
|
||||
alert: $('#phpbb_alert'),
|
||||
data: $('#darkenwrapper'),
|
||||
spinner: $('#studio_spinner'),
|
||||
timer: null
|
||||
},
|
||||
carousel: {
|
||||
items: $('[data-shop-carousel]'),
|
||||
item: $('[data-shop-carousel-data]'),
|
||||
data: {
|
||||
dotsClass: 'shop-carousel-dots',
|
||||
nextArrow: '<button class="aps-button-blue shop-carousel-next" type="button"><i class="icon fa-chevron-right fa-fw"></i></button>',
|
||||
prevArrow: '<button class="aps-button-blue shop-carousel-prev" type="button"><i class="icon fa-chevron-left fa-fw"></i></button>',
|
||||
draggable: true
|
||||
}
|
||||
},
|
||||
inventory: {
|
||||
card: $('.shop-inventory-card'),
|
||||
info: $('.shop-inventory-info'),
|
||||
items: $('.shop-inventory-list .shop-inventory-panel'),
|
||||
proxy: $('.shop-inventory-proxy'),
|
||||
classes: {
|
||||
card: '.shop-inventory-card',
|
||||
cardActive: 'shop-inventory-card-active',
|
||||
cardPaused: 'shop-inventory-card-paused',
|
||||
item: '.shop-inventory-item',
|
||||
itemAnimate: 'shop-inventory-item-animate',
|
||||
itemCount: '.shop-inventory-item-count',
|
||||
itemTime: '.shop-inventory-item-time',
|
||||
link: '.shop-inventory-link',
|
||||
panel: '.shop-inventory-panel',
|
||||
refund: '.shop-inventory-refund',
|
||||
row: '.shop-inventory-row',
|
||||
stack: '.shop-inventory-stack'
|
||||
}
|
||||
},
|
||||
sketch: {
|
||||
dots: [],
|
||||
pool: [],
|
||||
limit: 280,
|
||||
timer: null,
|
||||
timeout: 1500,
|
||||
colours: ['#12a3eb', '#12a3eb', '#2172b8', '#18a39b', '#82c545', '#f8b739', '#f06045', '#ed2861', '#c12680', '#5d3191'],
|
||||
drawing: null,
|
||||
overlay: $('.shop-inventory-overlay'),
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Set up carousel items.
|
||||
*
|
||||
* @return {void}
|
||||
*/
|
||||
studio.carousel.setup = function() {
|
||||
let none = false,
|
||||
data = studio.carousel.item.data();
|
||||
|
||||
if (data) {
|
||||
none = !data.dots && !data.arrows;
|
||||
|
||||
delete data['shopCarouselData'];
|
||||
}
|
||||
|
||||
// Register all carousel items
|
||||
studio.carousel.items.each(function() {
|
||||
let $footer = $(this).parent().next('.aps-panel-footer');
|
||||
|
||||
let slickData = $.extend({}, data, studio.carousel.data);
|
||||
|
||||
if ($(this).data('shop-carousel') === 'images') {
|
||||
$.extend(slickData, {
|
||||
arrows: false,
|
||||
asNavFor: $footer,
|
||||
dots: false,
|
||||
fade: true,
|
||||
slidesToScroll: 1,
|
||||
slidesToShow: 1
|
||||
});
|
||||
} else {
|
||||
$.extend(slickData, {
|
||||
appendDots: $footer,
|
||||
appendArrows: $footer
|
||||
});
|
||||
}
|
||||
|
||||
// Initiate a Slick instance
|
||||
$(this).slick(slickData);
|
||||
|
||||
if ($(this).data('shop-carousel') === 'images') {
|
||||
$footer.slick({
|
||||
arrows: false,
|
||||
asNavFor: this,
|
||||
centerMode: true,
|
||||
dots: false,
|
||||
focusOnSelect: true,
|
||||
slidesToScroll: 1,
|
||||
slidesToShow: 3
|
||||
});
|
||||
}
|
||||
|
||||
// If there are no navigation arrows or dots, remove the footer
|
||||
if (none) {
|
||||
$footer.remove();
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Remove the carousel data element.
|
||||
*/
|
||||
studio.carousel.item.remove();
|
||||
};
|
||||
|
||||
studio.carousel.setup();
|
||||
|
||||
/**
|
||||
* Show the loader for Shop AJAX requests.
|
||||
*
|
||||
* @return {void}
|
||||
*/
|
||||
studio.ajax.loading = function() {
|
||||
if (!studio.ajax.spinner.is(':visible')) {
|
||||
studio.ajax.spinner.fadeIn(100);
|
||||
|
||||
studio.ajax.clear();
|
||||
studio.ajax.timer = setTimeout(studio.ajax.timeout, 60000)
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Show the time out message for Shop AJAX requests.
|
||||
*
|
||||
* @return {void}
|
||||
*/
|
||||
studio.ajax.timeout = function() {
|
||||
studio.ajax.message({
|
||||
title: studio.ajax.alert.attr('data-l-err'),
|
||||
html: studio.ajax.alert.attr('data-l-timeout-processing-req'),
|
||||
type: 'error'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the localised message for Shop AJAX request errors.
|
||||
*
|
||||
* @param {string} attribute
|
||||
* @return {string}
|
||||
*/
|
||||
studio.ajax.data.get = function(attribute) {
|
||||
return $(this).attr(`data-ajax-error-${attribute}`);
|
||||
};
|
||||
|
||||
/**
|
||||
* Clear the timer for Shop AJAX requests.
|
||||
*
|
||||
* @return {void}
|
||||
*/
|
||||
studio.ajax.clear = function() {
|
||||
if (studio.ajax.timer !== null) {
|
||||
clearTimeout(studio.ajax.timer);
|
||||
|
||||
studio.ajax.timer = null;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* The error handler for Shop AJAX requests.
|
||||
*
|
||||
* @param {Object} jqXHR
|
||||
* @param {Object} jqXHR.responseJSON
|
||||
* @param {String} jqXHR.responseText
|
||||
* @param {string} textStatus
|
||||
* @param {string} errorThrown
|
||||
* @return {void}
|
||||
*/
|
||||
studio.ajax.error = function(jqXHR, textStatus, errorThrown) {
|
||||
if (typeof console !== 'undefined' && console.log) {
|
||||
console.log(`AJAX error. status: ${textStatus}, message: ${errorThrown}`);
|
||||
}
|
||||
|
||||
studio.ajax.clear();
|
||||
|
||||
let responseText, errorText = '';
|
||||
|
||||
try {
|
||||
responseText = JSON.parse(jqXHR.responseText);
|
||||
responseText = responseText.message;
|
||||
} catch (e) {}
|
||||
|
||||
if (typeof responseText === 'string' && responseText.length > 0) {
|
||||
errorText = responseText;
|
||||
} else if (typeof errorThrown === 'string' && errorThrown.length > 0) {
|
||||
errorText = errorThrown;
|
||||
} else {
|
||||
errorText = studio.ajax.data.get(`text-${textStatus}`);
|
||||
|
||||
if (typeof errorText !== 'string' || !errorText.length) {
|
||||
errorText = studio.ajax.data.get('text');
|
||||
}
|
||||
}
|
||||
|
||||
studio.ajax.message({
|
||||
title: typeof jqXHR.responseJSON !== 'undefined' ? jqXHR.responseJSON.title : studio.ajax.data.get('title', false),
|
||||
html: errorText,
|
||||
type: 'error'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* The success handler for Shop AJAX requests.
|
||||
*
|
||||
* @param {Object} r
|
||||
* @param {function} callback
|
||||
* @return {void}
|
||||
*/
|
||||
studio.ajax.success = function(r, callback) {
|
||||
studio.ajax.clear();
|
||||
|
||||
/**
|
||||
* @param {string} r.MESSAGE_BODY The message template body
|
||||
* @param {string} r.YES_VALUE The "yes" language string
|
||||
* @param {string} r.S_CONFIRM_ACTION The confirm_box() action
|
||||
* @param {string} r.S_HIDDEN_FIELDS The confirm_box() hidden fields
|
||||
*/
|
||||
|
||||
// If there is no confirm action (not a confirm_box())
|
||||
if (typeof r.S_CONFIRM_ACTION === 'undefined') {
|
||||
// Call the callback
|
||||
if (typeof phpbb.ajaxCallbacks[callback] === 'function') {
|
||||
phpbb.ajaxCallbacks[callback].call(this, r);
|
||||
}
|
||||
|
||||
// Show the message
|
||||
studio.ajax.message({
|
||||
title: r.MESSAGE_TITLE,
|
||||
html: r.MESSAGE_TEXT
|
||||
});
|
||||
} else {
|
||||
// Show the confirm box
|
||||
studio.ajax.message({
|
||||
title: r.MESSAGE_TITLE,
|
||||
html: r.MESSAGE_BODY,
|
||||
type: 'question',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: r.YES_VALUE
|
||||
}).then((result) => {
|
||||
// A button was pressed, was it the Confirm button?
|
||||
if (result.value) {
|
||||
let data = $('form', swal.getContent()).serialize();
|
||||
|
||||
data = data ? `${data}&` : '';
|
||||
data = data + $(`<form>${r.S_HIDDEN_FIELDS}</form>`).serialize() + `&confirm=${r.YES_VALUE}`;
|
||||
|
||||
// Make the request
|
||||
studio.ajax.request(r.S_CONFIRM_ACTION, callback, 'POST', data);
|
||||
}
|
||||
});
|
||||
|
||||
$('input', swal.getContent()).on('keydown', function(e) {
|
||||
if (e.which === 13) {
|
||||
swal.clickConfirm();
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Show a message for Shop AJAX requests.
|
||||
*
|
||||
* @param {Object} options
|
||||
* @return {swal}
|
||||
*/
|
||||
studio.ajax.message = function(options) {
|
||||
return swal.fire($.extend({
|
||||
type: 'success',
|
||||
cancelButtonClass: 'aps-button-alert aps-button-red',
|
||||
confirmButtonClass: 'aps-button-alert aps-button-green shop-button-active',
|
||||
showCloseButton: true,
|
||||
buttonsStyling: false,
|
||||
}, options));
|
||||
};
|
||||
|
||||
/**
|
||||
* Make a Shop AJAX request.
|
||||
*
|
||||
* @param {string} url
|
||||
* @param {function} callback
|
||||
* @param {string=} type
|
||||
* @param {Object=} data
|
||||
* @return {void}
|
||||
*/
|
||||
studio.ajax.request = function(url, callback, type, data) {
|
||||
// Start the loading function
|
||||
studio.ajax.loading();
|
||||
|
||||
// Make the request
|
||||
let request = $.ajax({
|
||||
url: url,
|
||||
type: type || 'GET',
|
||||
data: data || '',
|
||||
error: studio.ajax.error,
|
||||
success: function(r) {
|
||||
studio.ajax.success(r, callback)
|
||||
},
|
||||
});
|
||||
|
||||
// No matter what the request returns, always stop the spinner
|
||||
request.always(function() {
|
||||
if (studio.ajax.spinner.is(':visible')){
|
||||
studio.ajax.spinner.fadeOut(100);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Register all shop links for Shop AJAX requests.
|
||||
*/
|
||||
$(studio.body).on('click', studio.link, function(e) {
|
||||
studio.ajax.request($(this).attr('href'), $(this).data('shop-link'));
|
||||
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
/**
|
||||
* Remove an inventory item.
|
||||
*
|
||||
* @param {Object} r
|
||||
* @return {void}
|
||||
*/
|
||||
studio.inventory.remove = function(r) {
|
||||
let $items = $(`[data-shop-item="${r.id}"]`),
|
||||
$section = $items.parents(studio.inventory.classes.panel),
|
||||
$column = $section.parent('.aps-col'),
|
||||
$row = $column.parent(studio.inventory.classes.row);
|
||||
|
||||
let $stack = $section.find(studio.inventory.classes.stack),
|
||||
stack = typeof $stack !== 'undefined' ? parseInt($stack.text()) : false;
|
||||
|
||||
if (stack === false) {
|
||||
$items.remove();
|
||||
$section.remove();
|
||||
$column.remove();
|
||||
|
||||
if ($row.children().length === 0) {
|
||||
$row.remove();
|
||||
}
|
||||
} else {
|
||||
$items.not($section.find($items)).remove();
|
||||
|
||||
if (r.index > 1) {
|
||||
let replaceUrl = location.href.slice(0, -r.index.toString().length) + '1';
|
||||
|
||||
$section.find(studio.inventory.classes.link).attr('href', replaceUrl);
|
||||
phpbb.history.replaceUrl(replaceUrl);
|
||||
}
|
||||
|
||||
if (stack === 2) {
|
||||
$stack.parent().remove();
|
||||
} else {
|
||||
$stack.text(stack - 1);
|
||||
}
|
||||
|
||||
if (r.item) {
|
||||
$items.replaceWith(r.item);
|
||||
} else {
|
||||
$section.draggable('destroy');
|
||||
$section.addClass('shop-cursor-pointer');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Add AJAX callback for purchasing a Shop item.
|
||||
*
|
||||
* @param {Object} r The response object
|
||||
* @param {string} r.points The new points value
|
||||
* @param {number|bool} r.stock The new stock value
|
||||
* @return {void}
|
||||
*/
|
||||
phpbb.addAjaxCallback('shop_purchase', function(r) {
|
||||
$('.aps-menu > .aps-list-right > :first-child > span').text(r.points);
|
||||
|
||||
if (r.stock !== false) {
|
||||
let $item = $(`[data-shop-item="${r.id}"]`);
|
||||
|
||||
$item.find('.shop-item-stock').text(r.stock);
|
||||
|
||||
if (r.stock === 0) {
|
||||
$item.find('[data-shop-link="shop_purchase"]').remove();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Add AJAX callback for deleting a Shop item.
|
||||
*
|
||||
* @return {void}
|
||||
*/
|
||||
phpbb.addAjaxCallback('shop_inventory_delete', studio.inventory.remove);
|
||||
|
||||
/**
|
||||
* Add AJAX callback for using a Shop item.
|
||||
*
|
||||
* @param {Object} r The response object
|
||||
* @param {number} r.id The item identifier
|
||||
* @param {Object} r.data The item data
|
||||
* @param {number} r.data.use_count The item use count
|
||||
* @param {string} r.data.use_time The item use time
|
||||
* @param {bool} r.delete The delete indicator
|
||||
* @param {bool} r.success The success indicator
|
||||
* @param {string} r.file A window location for downloading a file
|
||||
* @param {int} r.index The item stack index
|
||||
* @return {void}
|
||||
*/
|
||||
phpbb.addAjaxCallback('shop_inventory_use', function(r) {
|
||||
if (r.success) {
|
||||
if (r.delete) {
|
||||
studio.inventory.remove(r);
|
||||
} else {
|
||||
let $item = $(`[data-shop-item="${r.id}"]`),
|
||||
$refund = $item.find(studio.inventory.classes.refund).remove();
|
||||
|
||||
$refund.remove();
|
||||
$refund.next().removeClass('s2').addClass('s4');
|
||||
|
||||
if (r.data) {
|
||||
$item.find(studio.inventory.classes.itemCount).text(r.data['use_count']);
|
||||
$item.find(studio.inventory.classes.itemTime).text(r.data['use_time']).parent().show();
|
||||
}
|
||||
|
||||
if (r.limit) {
|
||||
let notice = '<div class="aps-col s12 shop-no-pad"><div class="aps-button-red shop-button-active shop-cursor-normal">' + r.limit + '</div></div>';
|
||||
|
||||
$item.find('> .aps-row > :first-child').after(notice);
|
||||
|
||||
$item.find('[data-shop-link="shop_inventory_use"]').remove();
|
||||
}
|
||||
}
|
||||
|
||||
if (r.file) {
|
||||
setTimeout(function() {
|
||||
window.location = r.file;
|
||||
}, 1500);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Register the inventory items as draggables.
|
||||
*
|
||||
* @return {void}
|
||||
*/
|
||||
studio.inventory.items.each(function() {
|
||||
$(this).draggable({
|
||||
appendTo: studio.body,
|
||||
containment: studio.body,
|
||||
helper: 'clone',
|
||||
scope: 'inventory',
|
||||
snap: studio.inventory.classes.card,
|
||||
snapMode: 'inner',
|
||||
start: function(e, ui) {
|
||||
studio.inventory.info.children().not(studio.inventory.proxy).remove();
|
||||
|
||||
$(this).draggable('instance').offset.click = {
|
||||
left: Math.floor(ui.helper.width() / 2),
|
||||
top: Math.floor(ui.helper.height() / 2)
|
||||
};
|
||||
|
||||
studio.sketch.create(ui.helper);
|
||||
},
|
||||
stop: function() {
|
||||
studio.sketch.timer = setTimeout(studio.sketch.destroy, studio.sketch.timeout);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* Register the inventory 'placeholder card' as droppable.
|
||||
*
|
||||
* @return {void}
|
||||
*/
|
||||
studio.inventory.card.each(function() {
|
||||
$(this).droppable({
|
||||
activeClass: studio.inventory.classes.cardActive,
|
||||
hoverClass: studio.inventory.classes.cardPaused,
|
||||
scope: 'inventory',
|
||||
drop: function(e, ui) {
|
||||
let clone = ui.draggable.clone(false),
|
||||
link = clone.find(studio.inventory.classes.link),
|
||||
item = clone.find(studio.inventory.classes.item);
|
||||
|
||||
studio.inventory.info.append(clone);
|
||||
|
||||
clone.removeClass('ui-draggable ui-draggable-handle');
|
||||
|
||||
link.remove();
|
||||
|
||||
item.addClass(studio.inventory.classes.itemAnimate);
|
||||
},
|
||||
})
|
||||
});
|
||||
|
||||
studio.sketch.dot = function(x, y, radius) {
|
||||
this.init(x, y, radius);
|
||||
};
|
||||
|
||||
studio.sketch.dot.prototype = {
|
||||
init: function(x, y, radius) {
|
||||
this.alive = true;
|
||||
|
||||
this.radius = radius || 10;
|
||||
this.wander = 0.15;
|
||||
this.theta = random(TWO_PI);
|
||||
this.drag = 0.92;
|
||||
this.color = '#12a3eb';
|
||||
|
||||
this.x = x || 0.0;
|
||||
this.y = y || 0.0;
|
||||
|
||||
this.vx = 0.0;
|
||||
this.vy = 0.0;
|
||||
},
|
||||
|
||||
move: function() {
|
||||
this.x += this.vx;
|
||||
this.y += this.vy;
|
||||
|
||||
this.vx *= this.drag;
|
||||
this.vy *= this.drag;
|
||||
|
||||
this.theta += random(-0.5, 0.5) * this.wander;
|
||||
this.vx += Math.sin(this.theta) * 0.1;
|
||||
this.vy += Math.cos(this.theta) * 0.1;
|
||||
|
||||
this.radius *= 0.96;
|
||||
this.alive = this.radius > 0.5;
|
||||
},
|
||||
|
||||
draw: function( ctx ) {
|
||||
ctx.beginPath();
|
||||
ctx.arc(this.x, this.y, this.radius, 0, TWO_PI);
|
||||
ctx.fillStyle = this.color;
|
||||
ctx.fill();
|
||||
}
|
||||
};
|
||||
|
||||
studio.sketch.create = function(helper) {
|
||||
studio.sketch.clear();
|
||||
|
||||
studio.sketch.drawing = Sketch.create({
|
||||
container: studio.sketch.overlay[0],
|
||||
eventTarget: helper[0],
|
||||
retina: 'auto'
|
||||
});
|
||||
|
||||
studio.sketch.drawing.spawn = function(x, y) {
|
||||
let dot, theta, force;
|
||||
|
||||
if (studio.sketch.dots.length >= studio.sketch.limit) {
|
||||
studio.sketch.pool.push(studio.sketch.dots.shift());
|
||||
}
|
||||
|
||||
dot = studio.sketch.pool.length ? studio.sketch.pool.pop() : new studio.sketch.dot();
|
||||
dot.init( x, y, random(5, 40));
|
||||
|
||||
dot.wander = random(0.5, 2.0);
|
||||
dot.color = random(studio.sketch.colours);
|
||||
dot.drag = random(0.9, 0.99);
|
||||
|
||||
theta = random(TWO_PI);
|
||||
force = random(2, 8);
|
||||
|
||||
dot.vx = Math.sin(theta) * force;
|
||||
dot.vy = Math.cos(theta) * force;
|
||||
|
||||
studio.sketch.dots.push(dot);
|
||||
};
|
||||
|
||||
studio.sketch.drawing.update = function() {
|
||||
let i, dot;
|
||||
|
||||
for (i = studio.sketch.dots.length - 1; i >= 0; i--) {
|
||||
dot = studio.sketch.dots[i];
|
||||
|
||||
if (dot.alive) {
|
||||
dot.move();
|
||||
} else {
|
||||
studio.sketch.pool.push(studio.sketch.dots.splice(i, 1)[0]);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
studio.sketch.drawing.draw = function() {
|
||||
studio.sketch.drawing.globalCompositeOperation = 'lighter';
|
||||
|
||||
for (let i = studio.sketch.dots.length - 1; i >= 0; i--) {
|
||||
studio.sketch.dots[i].draw(studio.sketch.drawing);
|
||||
}
|
||||
};
|
||||
|
||||
studio.sketch.drawing.mousemove = function() {
|
||||
let touch, max, i, j, n;
|
||||
|
||||
for (i = 0, n = studio.sketch.drawing.touches.length; i < n; i++) {
|
||||
touch = studio.sketch.drawing.touches[i];
|
||||
max = random(1, 4);
|
||||
|
||||
for (j = 0; j < max; j++) {
|
||||
studio.sketch.drawing.spawn(touch.x, touch.y);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
studio.sketch.clear = function() {
|
||||
if (studio.sketch.timer !== null) {
|
||||
clearTimeout(studio.sketch.timer);
|
||||
|
||||
studio.sketch.timer = null;
|
||||
}
|
||||
|
||||
studio.sketch.destroy();
|
||||
};
|
||||
|
||||
studio.sketch.destroy = function() {
|
||||
if (studio.sketch.drawing !== null) {
|
||||
studio.sketch.drawing.clear();
|
||||
studio.sketch.drawing.destroy();
|
||||
|
||||
studio.sketch.drawing = null;
|
||||
}
|
||||
};
|
||||
});
|
||||
2814
ext/phpbbstudio/ass/styles/all/template/js/jquery-ui.js
vendored
Normal file
7
ext/phpbbstudio/ass/styles/all/template/js/jquery-ui.min.js
vendored
Normal file
631
ext/phpbbstudio/ass/styles/all/template/js/sketch.js
Normal file
@@ -0,0 +1,631 @@
|
||||
|
||||
/* Copyright (C) 2013 Justin Windle, http://soulwire.co.uk */
|
||||
|
||||
(function ( root, factory ) {
|
||||
|
||||
if ( typeof exports === 'object' ) {
|
||||
|
||||
// CommonJS like
|
||||
module.exports = factory(root, root.document);
|
||||
|
||||
} else if ( typeof define === 'function' && define.amd ) {
|
||||
|
||||
// AMD
|
||||
define( function() { return factory( root, root.document ); });
|
||||
|
||||
} else {
|
||||
|
||||
// Browser global
|
||||
root.Sketch = factory( root, root.document );
|
||||
}
|
||||
|
||||
}( typeof window !== "undefined" ? window : this, function ( window, document ) {
|
||||
|
||||
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Config
|
||||
|
||||
----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
var MATH_PROPS = 'E LN10 LN2 LOG2E LOG10E PI SQRT1_2 SQRT2 abs acos asin atan ceil cos exp floor log round sin sqrt tan atan2 pow max min'.split( ' ' );
|
||||
var HAS_SKETCH = '__hasSketch';
|
||||
var M = Math;
|
||||
|
||||
var CANVAS = 'canvas';
|
||||
var WEBGL = 'webgl';
|
||||
var DOM = 'dom';
|
||||
|
||||
var doc = document;
|
||||
var win = window;
|
||||
|
||||
var instances = [];
|
||||
|
||||
var defaults = {
|
||||
|
||||
fullscreen: true,
|
||||
autostart: true,
|
||||
autoclear: true,
|
||||
autopause: true,
|
||||
container: doc.body,
|
||||
interval: 1,
|
||||
globals: true,
|
||||
retina: false,
|
||||
type: CANVAS
|
||||
};
|
||||
|
||||
var keyMap = {
|
||||
|
||||
8: 'BACKSPACE',
|
||||
9: 'TAB',
|
||||
13: 'ENTER',
|
||||
16: 'SHIFT',
|
||||
27: 'ESCAPE',
|
||||
32: 'SPACE',
|
||||
37: 'LEFT',
|
||||
38: 'UP',
|
||||
39: 'RIGHT',
|
||||
40: 'DOWN'
|
||||
};
|
||||
|
||||
/*
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Utilities
|
||||
|
||||
----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
function isArray( object ) {
|
||||
|
||||
return Object.prototype.toString.call( object ) == '[object Array]';
|
||||
}
|
||||
|
||||
function isFunction( object ) {
|
||||
|
||||
return typeof object == 'function';
|
||||
}
|
||||
|
||||
function isNumber( object ) {
|
||||
|
||||
return typeof object == 'number';
|
||||
}
|
||||
|
||||
function isString( object ) {
|
||||
|
||||
return typeof object == 'string';
|
||||
}
|
||||
|
||||
function keyName( code ) {
|
||||
|
||||
return keyMap[ code ] || String.fromCharCode( code );
|
||||
}
|
||||
|
||||
function extend( target, source, overwrite ) {
|
||||
|
||||
for ( var key in source )
|
||||
|
||||
if ( overwrite || !( key in target ) )
|
||||
|
||||
target[ key ] = source[ key ];
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
function proxy( method, context ) {
|
||||
|
||||
return function() {
|
||||
|
||||
method.apply( context, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
function clone( target ) {
|
||||
|
||||
var object = {};
|
||||
|
||||
for ( var key in target ) {
|
||||
|
||||
if ( key === 'webkitMovementX' || key === 'webkitMovementY' )
|
||||
continue;
|
||||
|
||||
if ( isFunction( target[ key ] ) )
|
||||
|
||||
object[ key ] = proxy( target[ key ], target );
|
||||
|
||||
else
|
||||
|
||||
object[ key ] = target[ key ];
|
||||
}
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
/*
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Constructor
|
||||
|
||||
----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
function constructor( context ) {
|
||||
|
||||
var request, handler, target, parent, bounds, index, suffix, clock, node, copy, type, key, val, min, max, w, h;
|
||||
|
||||
var counter = 0;
|
||||
var touches = [];
|
||||
var resized = false;
|
||||
var setup = false;
|
||||
var ratio = win.devicePixelRatio || 1;
|
||||
var isDiv = context.type == DOM;
|
||||
var is2D = context.type == CANVAS;
|
||||
|
||||
var mouse = {
|
||||
x: 0.0, y: 0.0,
|
||||
ox: 0.0, oy: 0.0,
|
||||
dx: 0.0, dy: 0.0
|
||||
};
|
||||
|
||||
var eventMap = [
|
||||
|
||||
context.eventTarget || context.element,
|
||||
|
||||
pointer, 'mousedown', 'touchstart',
|
||||
pointer, 'mousemove', 'touchmove',
|
||||
pointer, 'mouseup', 'touchend',
|
||||
pointer, 'click',
|
||||
pointer, 'mouseout',
|
||||
pointer, 'mouseover',
|
||||
|
||||
doc,
|
||||
|
||||
keypress, 'keydown', 'keyup',
|
||||
|
||||
win,
|
||||
|
||||
active, 'focus', 'blur',
|
||||
resize, 'resize'
|
||||
];
|
||||
|
||||
var keys = {}; for ( key in keyMap ) keys[ keyMap[ key ] ] = false;
|
||||
|
||||
function trigger( method ) {
|
||||
|
||||
if ( isFunction( method ) )
|
||||
|
||||
method.apply( context, [].splice.call( arguments, 1 ) );
|
||||
}
|
||||
|
||||
function bind( on ) {
|
||||
|
||||
for ( index = 0; index < eventMap.length; index++ ) {
|
||||
|
||||
node = eventMap[ index ];
|
||||
|
||||
if ( isString( node ) )
|
||||
|
||||
target[ ( on ? 'add' : 'remove' ) + 'EventListener' ].call( target, node, handler, false );
|
||||
|
||||
else if ( isFunction( node ) )
|
||||
|
||||
handler = node;
|
||||
|
||||
else target = node;
|
||||
}
|
||||
}
|
||||
|
||||
function update() {
|
||||
|
||||
cAF( request );
|
||||
request = rAF( update );
|
||||
|
||||
if ( !setup ) {
|
||||
|
||||
trigger( context.setup );
|
||||
setup = isFunction( context.setup );
|
||||
}
|
||||
|
||||
if ( !resized ) {
|
||||
trigger( context.resize );
|
||||
resized = isFunction( context.resize );
|
||||
}
|
||||
|
||||
if ( context.running && !counter ) {
|
||||
|
||||
context.dt = ( clock = +new Date() ) - context.now;
|
||||
context.millis += context.dt;
|
||||
context.now = clock;
|
||||
|
||||
trigger( context.update );
|
||||
|
||||
// Pre draw
|
||||
|
||||
if ( is2D ) {
|
||||
|
||||
if ( context.retina ) {
|
||||
|
||||
context.save();
|
||||
|
||||
if (context.autoclear) {
|
||||
context.scale( ratio, ratio );
|
||||
}
|
||||
}
|
||||
|
||||
if ( context.autoclear )
|
||||
|
||||
context.clear();
|
||||
}
|
||||
|
||||
// Draw
|
||||
|
||||
trigger( context.draw );
|
||||
|
||||
// Post draw
|
||||
|
||||
if ( is2D && context.retina )
|
||||
|
||||
context.restore();
|
||||
}
|
||||
|
||||
counter = ++counter % context.interval;
|
||||
}
|
||||
|
||||
function resize() {
|
||||
|
||||
target = isDiv ? context.style : context.canvas;
|
||||
suffix = isDiv ? 'px' : '';
|
||||
|
||||
w = context.width;
|
||||
h = context.height;
|
||||
|
||||
if ( context.fullscreen ) {
|
||||
|
||||
h = context.height = win.innerHeight;
|
||||
w = context.width = win.innerWidth;
|
||||
}
|
||||
|
||||
if ( context.retina && is2D && ratio ) {
|
||||
|
||||
target.style.height = h + 'px';
|
||||
target.style.width = w + 'px';
|
||||
|
||||
w *= ratio;
|
||||
h *= ratio;
|
||||
}
|
||||
|
||||
if ( target.height !== h )
|
||||
|
||||
target.height = h + suffix;
|
||||
|
||||
if ( target.width !== w )
|
||||
|
||||
target.width = w + suffix;
|
||||
|
||||
if ( is2D && !context.autoclear && context.retina )
|
||||
|
||||
context.scale( ratio, ratio );
|
||||
|
||||
if ( setup ) trigger( context.resize );
|
||||
}
|
||||
|
||||
function align( touch, target ) {
|
||||
|
||||
bounds = target.getBoundingClientRect();
|
||||
|
||||
touch.x = touch.pageX - bounds.left - (win.scrollX || win.pageXOffset);
|
||||
touch.y = touch.pageY - bounds.top - (win.scrollY || win.pageYOffset);
|
||||
|
||||
return touch;
|
||||
}
|
||||
|
||||
function augment( touch, target ) {
|
||||
|
||||
align( touch, context.element );
|
||||
|
||||
target = target || {};
|
||||
|
||||
target.ox = target.x || touch.x;
|
||||
target.oy = target.y || touch.y;
|
||||
|
||||
target.x = touch.x;
|
||||
target.y = touch.y;
|
||||
|
||||
target.dx = target.x - target.ox;
|
||||
target.dy = target.y - target.oy;
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
function process( event ) {
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
copy = clone( event );
|
||||
copy.originalEvent = event;
|
||||
|
||||
if ( copy.touches ) {
|
||||
|
||||
touches.length = copy.touches.length;
|
||||
|
||||
for ( index = 0; index < copy.touches.length; index++ )
|
||||
|
||||
touches[ index ] = augment( copy.touches[ index ], touches[ index ] );
|
||||
|
||||
} else {
|
||||
|
||||
touches.length = 0;
|
||||
touches[0] = augment( copy, mouse );
|
||||
}
|
||||
|
||||
extend( mouse, touches[0], true );
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
function pointer( event ) {
|
||||
|
||||
event = process( event );
|
||||
|
||||
min = ( max = eventMap.indexOf( type = event.type ) ) - 1;
|
||||
|
||||
context.dragging =
|
||||
|
||||
/down|start/.test( type ) ? true :
|
||||
|
||||
/up|end/.test( type ) ? false :
|
||||
|
||||
context.dragging;
|
||||
|
||||
while( min )
|
||||
|
||||
isString( eventMap[ min ] ) ?
|
||||
|
||||
trigger( context[ eventMap[ min-- ] ], event ) :
|
||||
|
||||
isString( eventMap[ max ] ) ?
|
||||
|
||||
trigger( context[ eventMap[ max++ ] ], event ) :
|
||||
|
||||
min = 0;
|
||||
}
|
||||
|
||||
function keypress( event ) {
|
||||
|
||||
key = event.keyCode;
|
||||
val = event.type == 'keyup';
|
||||
keys[ key ] = keys[ keyName( key ) ] = !val;
|
||||
|
||||
trigger( context[ event.type ], event );
|
||||
}
|
||||
|
||||
function active( event ) {
|
||||
|
||||
if ( context.autopause )
|
||||
|
||||
( event.type == 'blur' ? stop : start )();
|
||||
|
||||
trigger( context[ event.type ], event );
|
||||
}
|
||||
|
||||
// Public API
|
||||
|
||||
function start() {
|
||||
|
||||
context.now = +new Date();
|
||||
context.running = true;
|
||||
}
|
||||
|
||||
function stop() {
|
||||
|
||||
context.running = false;
|
||||
}
|
||||
|
||||
function toggle() {
|
||||
|
||||
( context.running ? stop : start )();
|
||||
}
|
||||
|
||||
function clear() {
|
||||
|
||||
if ( is2D )
|
||||
|
||||
context.clearRect( 0, 0, context.width * ratio, context.height * ratio );
|
||||
}
|
||||
|
||||
function destroy() {
|
||||
|
||||
parent = context.element.parentNode;
|
||||
index = instances.indexOf( context );
|
||||
|
||||
if ( parent ) parent.removeChild( context.element );
|
||||
if ( ~index ) instances.splice( index, 1 );
|
||||
|
||||
bind( false );
|
||||
stop();
|
||||
}
|
||||
|
||||
extend( context, {
|
||||
|
||||
touches: touches,
|
||||
mouse: mouse,
|
||||
keys: keys,
|
||||
|
||||
dragging: false,
|
||||
running: false,
|
||||
millis: 0,
|
||||
now: NaN,
|
||||
dt: NaN,
|
||||
|
||||
destroy: destroy,
|
||||
toggle: toggle,
|
||||
clear: clear,
|
||||
start: start,
|
||||
stop: stop
|
||||
});
|
||||
|
||||
instances.push( context );
|
||||
|
||||
return ( context.autostart && start(), bind( true ), resize(), update(), context );
|
||||
}
|
||||
|
||||
/*
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Global API
|
||||
|
||||
----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
var element, context, Sketch = {
|
||||
|
||||
CANVAS: CANVAS,
|
||||
WEB_GL: WEBGL,
|
||||
WEBGL: WEBGL,
|
||||
DOM: DOM,
|
||||
|
||||
instances: instances,
|
||||
|
||||
install: function( context ) {
|
||||
|
||||
if ( !context[ HAS_SKETCH ] ) {
|
||||
|
||||
for ( var i = 0; i < MATH_PROPS.length; i++ )
|
||||
|
||||
context[ MATH_PROPS[i] ] = M[ MATH_PROPS[i] ];
|
||||
|
||||
extend( context, {
|
||||
|
||||
TWO_PI: M.PI * 2,
|
||||
HALF_PI: M.PI / 2,
|
||||
QUARTER_PI: M.PI / 4,
|
||||
|
||||
random: function( min, max ) {
|
||||
|
||||
if ( isArray( min ) )
|
||||
|
||||
return min[ ~~( M.random() * min.length ) ];
|
||||
|
||||
if ( !isNumber( max ) )
|
||||
|
||||
max = min || 1, min = 0;
|
||||
|
||||
return min + M.random() * ( max - min );
|
||||
},
|
||||
|
||||
lerp: function( min, max, amount ) {
|
||||
|
||||
return min + amount * ( max - min );
|
||||
},
|
||||
|
||||
map: function( num, minA, maxA, minB, maxB ) {
|
||||
|
||||
return ( num - minA ) / ( maxA - minA ) * ( maxB - minB ) + minB;
|
||||
}
|
||||
});
|
||||
|
||||
context[ HAS_SKETCH ] = true;
|
||||
}
|
||||
},
|
||||
|
||||
create: function( options ) {
|
||||
|
||||
options = extend( options || {}, defaults );
|
||||
|
||||
if ( options.globals ) Sketch.install( self );
|
||||
|
||||
element = options.element = options.element || doc.createElement( options.type === DOM ? 'div' : 'canvas' );
|
||||
|
||||
context = options.context = options.context || (function() {
|
||||
|
||||
switch( options.type ) {
|
||||
|
||||
case CANVAS:
|
||||
|
||||
return element.getContext( '2d', options );
|
||||
|
||||
case WEBGL:
|
||||
|
||||
return element.getContext( 'webgl', options ) || element.getContext( 'experimental-webgl', options );
|
||||
|
||||
case DOM:
|
||||
|
||||
return element.canvas = element;
|
||||
}
|
||||
|
||||
})();
|
||||
|
||||
( options.container || doc.body ).appendChild( element );
|
||||
|
||||
return Sketch.augment( context, options );
|
||||
},
|
||||
|
||||
augment: function( context, options ) {
|
||||
|
||||
options = extend( options || {}, defaults );
|
||||
|
||||
options.element = context.canvas || context;
|
||||
options.element.className += ' sketch';
|
||||
|
||||
extend( context, options, true );
|
||||
|
||||
return constructor( context );
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Shims
|
||||
|
||||
----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
var vendors = [ 'ms', 'moz', 'webkit', 'o' ];
|
||||
var scope = self;
|
||||
var then = 0;
|
||||
|
||||
var a = 'AnimationFrame';
|
||||
var b = 'request' + a;
|
||||
var c = 'cancel' + a;
|
||||
|
||||
var rAF = scope[ b ];
|
||||
var cAF = scope[ c ];
|
||||
|
||||
for ( var i = 0; i < vendors.length && !rAF; i++ ) {
|
||||
|
||||
rAF = scope[ vendors[ i ] + 'Request' + a ];
|
||||
cAF = scope[ vendors[ i ] + 'Cancel' + a ];
|
||||
}
|
||||
|
||||
scope[ b ] = rAF = rAF || function( callback ) {
|
||||
|
||||
var now = +new Date();
|
||||
var dt = M.max( 0, 16 - ( now - then ) );
|
||||
var id = setTimeout( function() {
|
||||
callback( now + dt );
|
||||
}, dt );
|
||||
|
||||
then = now + dt;
|
||||
return id;
|
||||
};
|
||||
|
||||
scope[ c ] = cAF = cAF || function( id ) {
|
||||
clearTimeout( id );
|
||||
};
|
||||
|
||||
/*
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Output
|
||||
|
||||
----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
return Sketch;
|
||||
|
||||
}));
|
||||
2
ext/phpbbstudio/ass/styles/all/template/js/sketch.min.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/* Copyright (C) 2013 Justin Windle, http://soulwire.co.uk */
|
||||
!function(e,t){"object"==typeof exports?module.exports=t(e,e.document):"function"==typeof define&&define.amd?define(function(){return t(e,e.document)}):e.Sketch=t(e,e.document)}("undefined"!=typeof window?window:this,function(e,t){"use strict";function n(e){return"[object Array]"==Object.prototype.toString.call(e)}function o(e){return"function"==typeof e}function r(e){return"number"==typeof e}function i(e){return"string"==typeof e}function u(e){return C[e]||String.fromCharCode(e)}function a(e,t,n){for(var o in t)!n&&o in e||(e[o]=t[o]);return e}function c(e,t){return function(){e.apply(t,arguments)}}function l(e){var t={};for(var n in e)"webkitMovementX"!==n&&"webkitMovementY"!==n&&(o(e[n])?t[n]=c(e[n],e):t[n]=e[n]);return t}function s(e){function t(t){o(t)&&t.apply(e,[].splice.call(arguments,1))}function n(e){for(_=0;_<ee.length;_++)B=ee[_],i(B)?S[(e?"add":"remove")+"EventListener"].call(S,B,N,!1):o(B)?N=B:S=B}function r(){I(A),A=R(r),K||(t(e.setup),K=o(e.setup)),U||(t(e.resize),U=o(e.resize)),e.running&&!q&&(e.dt=(z=+new Date)-e.now,e.millis+=e.dt,e.now=z,t(e.update),Z&&(e.retina&&(e.save(),e.autoclear&&e.scale(V,V)),e.autoclear&&e.clear()),t(e.draw),Z&&e.retina&&e.restore()),q=++q%e.interval}function c(){S=J?e.style:e.canvas,D=J?"px":"",Y=e.width,j=e.height,e.fullscreen&&(j=e.height=v.innerHeight,Y=e.width=v.innerWidth),e.retina&&Z&&V&&(S.style.height=j+"px",S.style.width=Y+"px",Y*=V,j*=V),S.height!==j&&(S.height=j+D),S.width!==Y&&(S.width=Y+D),Z&&!e.autoclear&&e.retina&&e.scale(V,V),K&&t(e.resize)}function s(e,t){return L=t.getBoundingClientRect(),e.x=e.pageX-L.left-(v.scrollX||v.pageXOffset),e.y=e.pageY-L.top-(v.scrollY||v.pageYOffset),e}function f(t,n){return s(t,e.element),n=n||{},n.ox=n.x||t.x,n.oy=n.y||t.y,n.x=t.x,n.y=t.y,n.dx=n.x-n.ox,n.dy=n.y-n.oy,n}function d(e){if(e.preventDefault(),G=l(e),G.originalEvent=e,G.touches)for(Q.length=G.touches.length,_=0;_<G.touches.length;_++)Q[_]=f(G.touches[_],Q[_]);else Q.length=0,Q[0]=f(G,$);return a($,Q[0],!0),G}function p(n){for(n=d(n),M=(X=ee.indexOf(W=n.type))-1,e.dragging=!!/down|start/.test(W)||!/up|end/.test(W)&&e.dragging;M;)i(ee[M])?t(e[ee[M--]],n):i(ee[X])?t(e[ee[X++]],n):M=0}function g(n){F=n.keyCode,H="keyup"==n.type,te[F]=te[u(F)]=!H,t(e[n.type],n)}function m(n){e.autopause&&("blur"==n.type?E:y)(),t(e[n.type],n)}function y(){e.now=+new Date,e.running=!0}function E(){e.running=!1}function k(){(e.running?E:y)()}function P(){Z&&e.clearRect(0,0,e.width*V,e.height*V)}function T(){O=e.element.parentNode,_=b.indexOf(e),O&&O.removeChild(e.element),~_&&b.splice(_,1),n(!1),E()}var A,N,S,O,L,_,D,z,B,G,W,F,H,M,X,Y,j,q=0,Q=[],U=!1,K=!1,V=v.devicePixelRatio||1,J=e.type==w,Z=e.type==h,$={x:0,y:0,ox:0,oy:0,dx:0,dy:0},ee=[e.eventTarget||e.element,p,"mousedown","touchstart",p,"mousemove","touchmove",p,"mouseup","touchend",p,"click",p,"mouseout",p,"mouseover",x,g,"keydown","keyup",v,m,"focus","blur",c,"resize"],te={};for(F in C)te[C[F]]=!1;return a(e,{touches:Q,mouse:$,keys:te,dragging:!1,running:!1,millis:0,now:NaN,dt:NaN,destroy:T,toggle:k,clear:P,start:y,stop:E}),b.push(e),e.autostart&&y(),n(!0),c(),r(),e}for(var f,d,p="E LN10 LN2 LOG2E LOG10E PI SQRT1_2 SQRT2 abs acos asin atan ceil cos exp floor log round sin sqrt tan atan2 pow max min".split(" "),g="__hasSketch",m=Math,h="canvas",y="webgl",w="dom",x=t,v=e,b=[],E={fullscreen:!0,autostart:!0,autoclear:!0,autopause:!0,container:x.body,interval:1,globals:!0,retina:!1,type:h},C={8:"BACKSPACE",9:"TAB",13:"ENTER",16:"SHIFT",27:"ESCAPE",32:"SPACE",37:"LEFT",38:"UP",39:"RIGHT",40:"DOWN"},k={CANVAS:h,WEB_GL:y,WEBGL:y,DOM:w,instances:b,install:function(e){if(!e[g]){for(var t=0;t<p.length;t++)e[p[t]]=m[p[t]];a(e,{TWO_PI:2*m.PI,HALF_PI:m.PI/2,QUARTER_PI:m.PI/4,random:function(e,t){return n(e)?e[~~(m.random()*e.length)]:(r(t)||(t=e||1,e=0),e+m.random()*(t-e))},lerp:function(e,t,n){return e+n*(t-e)},map:function(e,t,n,o,r){return(e-t)/(n-t)*(r-o)+o}}),e[g]=!0}},create:function(e){return e=a(e||{},E),e.globals&&k.install(self),f=e.element=e.element||x.createElement(e.type===w?"div":"canvas"),d=e.context=e.context||function(){switch(e.type){case h:return f.getContext("2d",e);case y:return f.getContext("webgl",e)||f.getContext("experimental-webgl",e);case w:return f.canvas=f}}(),(e.container||x.body).appendChild(f),k.augment(d,e)},augment:function(e,t){return t=a(t||{},E),t.element=e.canvas||e,t.element.className+=" sketch",a(e,t,!0),s(e)}},P=["ms","moz","webkit","o"],T=self,A=0,N="AnimationFrame",S="request"+N,O="cancel"+N,R=T[S],I=T[O],L=0;L<P.length&&!R;L++)R=T[P[L]+"Request"+N],I=T[P[L]+"Cancel"+N];return T[S]=R=R||function(e){var t=+new Date,n=m.max(0,16-(t-A)),o=setTimeout(function(){e(t+n)},n);return A=t+n,o},T[O]=I=I||function(e){clearTimeout(e)},k});
|
||||
1
ext/phpbbstudio/ass/styles/all/template/js/slick.min.js
vendored
Normal file
BIN
ext/phpbbstudio/ass/styles/all/theme/ajax-loader.gif
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
1090
ext/phpbbstudio/ass/styles/all/theme/ass_common.css
Normal file
347
ext/phpbbstudio/ass/styles/all/theme/ass_exception.css
Normal file
@@ -0,0 +1,347 @@
|
||||
/**
|
||||
*
|
||||
* phpBB Studio - Advanced Shop System. An extension for the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) 2019, phpBB Studio, https://www.phpbbstudio.com
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
*/
|
||||
.aps-body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.shop-exception {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
min-height: 600px;
|
||||
}
|
||||
|
||||
.shop-exception-title {
|
||||
position: relative;
|
||||
margin: 32px;
|
||||
}
|
||||
|
||||
.shop-exception-title .aps-panel-content {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.shop-exception-title h1 {
|
||||
color: #313131;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.shop-exception-text {
|
||||
z-index: 2;
|
||||
width: 60%;
|
||||
margin: 32px 32px 150px;
|
||||
}
|
||||
|
||||
.shop-exception-text .aps-panel-content {
|
||||
color: #3d4851;
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.shop-exception-code {
|
||||
border-radius: 4px;
|
||||
box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5);
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
top: 100%;
|
||||
right: -20px;
|
||||
transform-origin: center -20px;
|
||||
animation: swing ease-in-out 1s infinite alternate;
|
||||
}
|
||||
|
||||
.shop-exception-code span {
|
||||
font-size: 32px;
|
||||
background: #3d4851;
|
||||
border: 4px solid #f9f9f9;
|
||||
border-radius: 4px;
|
||||
color: #ffffff;
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: 4px 12px;
|
||||
}
|
||||
|
||||
.shop-exception-code:after {
|
||||
border: 1px solid #999999;
|
||||
border-right: none;
|
||||
border-bottom: none;
|
||||
position: absolute;
|
||||
z-index: 0;
|
||||
top: -10px;
|
||||
left: calc(50% - 5px);
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
content: "";
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.shop-exception-code:before {
|
||||
background: #000000;
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
z-index: 5;
|
||||
top: -14px;
|
||||
left: 54%;
|
||||
width: 5px;
|
||||
height: 5px;
|
||||
content: "";
|
||||
}
|
||||
|
||||
@keyframes swing {
|
||||
0% { transform: rotate(3deg); }
|
||||
100% { transform: rotate(-3deg); }
|
||||
}
|
||||
|
||||
.shop-exception .fa-male,
|
||||
.shop-exception .fa-comment,
|
||||
.shop-exception .fa-map-signs,
|
||||
.shop-exception .shop-icons {
|
||||
color: #3d4851;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.shop-exception .fa-male {
|
||||
font-size: 36px;
|
||||
bottom: 0;
|
||||
left: 400px;
|
||||
}
|
||||
|
||||
.shop-exception .fa-comment {
|
||||
font-size: 24px;
|
||||
bottom: 36px;
|
||||
left: 380px;
|
||||
}
|
||||
|
||||
.shop-exception .fa-map-signs {
|
||||
font-size: 18px;
|
||||
bottom: 27px;
|
||||
left: 262px;
|
||||
}
|
||||
|
||||
.shop-exception .shop-icons {
|
||||
font-size: 12px;
|
||||
color: #ffffff;
|
||||
z-index: 1;
|
||||
bottom: 41px;
|
||||
left: 390px;
|
||||
}
|
||||
|
||||
.shop-exception .shop-icons:before {
|
||||
content: "";
|
||||
animation: icons 30s ease-in-out infinite;
|
||||
}
|
||||
|
||||
.shop-exception .fa-trees {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 185px;
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.shop-exception .fa-trees.left {
|
||||
left: 85px;
|
||||
}
|
||||
|
||||
.shop-exception .fa-trees.right {
|
||||
right: 0;
|
||||
left: unset;
|
||||
}
|
||||
|
||||
.shop-exception .fa-trees .fa-tree {
|
||||
font-size: 18px;
|
||||
background: #3d4851;
|
||||
-webkit-background-clip: text;
|
||||
text-shadow: -2px 0 0 #ffffff;
|
||||
color: transparent;
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
bottom: 0;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
|
||||
.shop-exception .fa-trees .fa-tree:nth-child(1) { left: 12px; }
|
||||
.shop-exception .fa-trees .fa-tree:nth-child(2) { left: 0; }
|
||||
|
||||
.shop-exception .fa-trees .fa-tree:nth-child(3) {
|
||||
text-shadow: 2px 0 0 #f9f9f9;
|
||||
left: 19px;
|
||||
}
|
||||
|
||||
.shop-exception-mountain,
|
||||
.shop-exception-mountain-left,
|
||||
.shop-exception-mountain-right {
|
||||
color: #3d4851;
|
||||
position: absolute;
|
||||
bottom: -50px;
|
||||
left: -10px;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
fill: #3d4851;
|
||||
}
|
||||
|
||||
.shop-exception-mountain {
|
||||
bottom: -60px;
|
||||
left: 100px;
|
||||
}
|
||||
|
||||
.shop-exception-mountain-right {
|
||||
right: 0;
|
||||
bottom: -20px;
|
||||
left: unset;
|
||||
}
|
||||
|
||||
.shop-exception-tree,
|
||||
.shop-exception-trees {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 500px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
fill: #3d4851;
|
||||
}
|
||||
|
||||
.shop-exception-tree {
|
||||
left: 550px;
|
||||
}
|
||||
|
||||
.shop-exception-pot svg {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
right: 20%;
|
||||
bottom: 0;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
.shop-exception-rainbow {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
right: 0;
|
||||
bottom: 190px;
|
||||
overflow: hidden;
|
||||
width: calc(20% + 154px);
|
||||
height: calc(100% - 200px - 128px - 39px - 20px);
|
||||
}
|
||||
|
||||
.shop-exception-rainbow span {
|
||||
border-top: 5px solid transparent;
|
||||
border-left: 21.5px solid transparent;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.shop-exception-rainbow span:nth-of-type(1) {
|
||||
border-color: #5bd6fd;
|
||||
border-top-left-radius: 50%;
|
||||
}
|
||||
|
||||
.shop-exception-rainbow span:nth-of-type(2) {
|
||||
border-color: #1fd7c3;
|
||||
border-top-left-radius: 45%;
|
||||
bottom: -5px;
|
||||
left: 21.5px;
|
||||
}
|
||||
|
||||
.shop-exception-rainbow span:nth-of-type(3) {
|
||||
border-color: #ffe76c;
|
||||
border-top-left-radius: 40%;
|
||||
bottom: -10px;
|
||||
left: 43px;
|
||||
}
|
||||
|
||||
.shop-exception-rainbow span:nth-of-type(4) {
|
||||
border-color: #ffb44d;
|
||||
border-top-left-radius: 35%;
|
||||
bottom: -15px;
|
||||
left: 65px;
|
||||
}
|
||||
|
||||
.shop-exception-rainbow span:nth-of-type(5) {
|
||||
border-color: #ff7f5a;
|
||||
border-top-left-radius: 30%;
|
||||
bottom: -20px;
|
||||
left: 86px;
|
||||
}
|
||||
|
||||
@keyframes icons {
|
||||
0% { content: "\f128"; }
|
||||
|
||||
2% { opacity: 1; }
|
||||
|
||||
15% {
|
||||
opacity: 1;
|
||||
content: "\f128";
|
||||
}
|
||||
|
||||
18% { opacity: 0; }
|
||||
|
||||
20% { content: "\f05e"; }
|
||||
|
||||
22% { opacity: 1; }
|
||||
|
||||
35% {
|
||||
opacity: 1;
|
||||
content: "\f05e";
|
||||
}
|
||||
|
||||
38% { opacity: 0; }
|
||||
|
||||
40% {
|
||||
content: "\f12a";
|
||||
}
|
||||
|
||||
42% { opacity: 1; }
|
||||
|
||||
55% {
|
||||
opacity: 1;
|
||||
content: "\f12a";
|
||||
}
|
||||
|
||||
58% { opacity: 0; }
|
||||
|
||||
60% { content: "\f129"; }
|
||||
|
||||
62% { opacity: 1; }
|
||||
|
||||
75% {
|
||||
opacity: 1;
|
||||
content: "\f129";
|
||||
}
|
||||
|
||||
78% { opacity: 0; }
|
||||
|
||||
80% { content: "\f00d"; }
|
||||
|
||||
82% { opacity: 1; }
|
||||
|
||||
95% {
|
||||
opacity: 1;
|
||||
content: "\f00d";
|
||||
}
|
||||
|
||||
98% { opacity: 0; }
|
||||
|
||||
100% { content: "\f128"; }
|
||||
}
|
||||
|
||||
@media all and (max-width: 800px) {
|
||||
.shop-exception-text {
|
||||
width: initial;
|
||||
}
|
||||
|
||||
.shop-exception-tree,
|
||||
.shop-exception-trees,
|
||||
.shop-exception .fa-male,
|
||||
.shop-exception .fa-comment,
|
||||
.shop-exception .fa-map-signs,
|
||||
.shop-exception .shop-icons {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
314
ext/phpbbstudio/ass/styles/all/theme/ass_item.css
Normal file
@@ -0,0 +1,314 @@
|
||||
/**
|
||||
*
|
||||
* phpBB Studio - Advanced Shop System. An extension for the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) 2019, phpBB Studio, https://www.phpbbstudio.com
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
*/
|
||||
.shop-item-help-label {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media all and (min-width: 800px) {
|
||||
.aps-body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.shop-item-help {
|
||||
padding: 21px;
|
||||
}
|
||||
|
||||
.shop-item-help-label {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.shop-item-help-input {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.shop-item-help,
|
||||
.shop-item-help > .aps-row,
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper {
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-moz-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked {
|
||||
opacity: 0;
|
||||
position: fixed;
|
||||
z-index: 15;
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: block;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help {
|
||||
background: #d6d6d6;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help > .aps-row {
|
||||
-webkit-transform: scale(0.8);
|
||||
-moz-transform: scale(0.8);
|
||||
-o-transform: scale(0.8);
|
||||
-ms-transform: scale(0.8);
|
||||
transform: scale(0.8);
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help > .aps-row .shop-title {
|
||||
background-color: #f9f9f9;
|
||||
border-color: #bcbcbc;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help > .aps-row .aps-panel,
|
||||
.shop-item-help-input:checked + .shop-item-help > .aps-row .aps-panel-header,
|
||||
.shop-item-help-input:checked + .shop-item-help > .aps-row .aps-panel-footer {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help > .aps-row .shop-panel-background {
|
||||
-webkit-filter: grayscale(50%);
|
||||
filter: grayscale(50%);
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper {
|
||||
opacity: 1;
|
||||
z-index: 11;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.shop-item-helper {
|
||||
font-size: 16px;
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
background: #ffffff;
|
||||
border: 1px solid #12a3eb;
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
|
||||
text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.9);
|
||||
color: #313131;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
min-width: 200px;
|
||||
height: 0;
|
||||
padding: 4px 8px;
|
||||
-webkit-transform: scale(1.5);
|
||||
-moz-transform: scale(1.5);
|
||||
-o-transform: scale(1.5);
|
||||
-ms-transform: scale(1.5);
|
||||
transform: scale(1.5);
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.top-left,
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.top-right {
|
||||
top: 100%;
|
||||
left: 50%;
|
||||
-webkit-transform: scale(1.2) translateY(100%);
|
||||
-moz-transform: scale(1.2) translateY(100%);
|
||||
-o-transform: scale(1.2) translateY(100%);
|
||||
-ms-transform: scale(1.2) translateY(100%);
|
||||
transform: scale(1.2) translateY(100%);
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.top-right {
|
||||
right: 50%;
|
||||
left: unset;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.bottom-left,
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.bottom-right {
|
||||
bottom: 100%;
|
||||
left: 50%;
|
||||
-webkit-transform: scale(1.2) translateY(-100%);
|
||||
-moz-transform: scale(1.2) translateY(-100%);
|
||||
-o-transform: scale(1.2) translateY(-100%);
|
||||
-ms-transform: scale(1.2) translateY(-100%);
|
||||
transform: scale(1.2) translateY(-100%);
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.bottom-right {
|
||||
right: 50%;
|
||||
left: unset;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.left {
|
||||
top: 50%;
|
||||
left: 100%;
|
||||
-webkit-transform: scale(1.2) translate(48px, calc(-50% + 4px));
|
||||
-moz-transform: scale(1.2) translate(48px, calc(-50% + 4px));
|
||||
-o-transform: scale(1.2) translate(48px, calc(-50% + 4px));
|
||||
-ms-transform: scale(1.2) translate(48px, calc(-50% + 4px));
|
||||
transform: scale(1.2) translate(48px, calc(-50% + 4px));
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.right {
|
||||
top: 50%;
|
||||
right: 100%;
|
||||
-webkit-transform: scale(1.2) translate(-48px, calc(-50% + 4px));
|
||||
-moz-transform: scale(1.2) translate(-48px, calc(-50% + 4px));
|
||||
-o-transform: scale(1.2) translate(-48px, calc(-50% + 4px));
|
||||
-ms-transform: scale(1.2) translate(-48px, calc(-50% + 4px));
|
||||
transform: scale(1.2) translate(-48px, calc(-50% + 4px));
|
||||
}
|
||||
|
||||
.shop-item-helper:after {
|
||||
font-family: FontAwesome, sans-serif;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
line-height: 21px;
|
||||
text-align: center;
|
||||
text-indent: 1px;
|
||||
background: linear-gradient(#59bef1, #1092d3);
|
||||
border: 1px solid #12a3eb;
|
||||
border-radius: 50%;
|
||||
text-shadow: none;
|
||||
color: #ffffff;
|
||||
position: absolute;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.shop-item-helper.top-left:after {
|
||||
top: 0;
|
||||
left: 0;
|
||||
content: "\f106";
|
||||
transform: translate(50%, -50%);
|
||||
}
|
||||
|
||||
.shop-item-helper.top-right:after {
|
||||
top: 0;
|
||||
right: 0;
|
||||
content: "\f106";
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.shop-item-helper.bottom-left:after {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
content: "\f107";
|
||||
transform: translate(50%, 50%);
|
||||
}
|
||||
|
||||
.shop-item-helper.bottom-right:after {
|
||||
text-indent: 1px;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
content: "\f107";
|
||||
transform: translate(-50%, 50%);
|
||||
}
|
||||
|
||||
.shop-item-helper.right:after {
|
||||
text-indent: 3px;
|
||||
top: 50%;
|
||||
right: 0;
|
||||
content: "\f105";
|
||||
transform: translate(50%, -50%);
|
||||
}
|
||||
|
||||
.shop-item-helper.left:after {
|
||||
text-indent: -1px;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
content: "\f104";
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper,
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-3 {
|
||||
-webkit-transition-delay: 0.3s;
|
||||
-moz-transition-delay: 0.3s;
|
||||
-o-transition-delay: 0.3s;
|
||||
transition-delay: 0.3s;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-4 {
|
||||
-webkit-transition-delay: 0.4s;
|
||||
-moz-transition-delay: 0.4s;
|
||||
-o-transition-delay: 0.4s;
|
||||
transition-delay: 0.4s;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-5 {
|
||||
-webkit-transition-delay: 0.5s;
|
||||
-moz-transition-delay: 0.5s;
|
||||
-o-transition-delay: 0.5s;
|
||||
transition-delay: 0.5s;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-6 {
|
||||
-webkit-transition-delay: 0.6s;
|
||||
-moz-transition-delay: 0.6s;
|
||||
-o-transition-delay: 0.6s;
|
||||
transition-delay: 0.6s;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-7 {
|
||||
-webkit-transition-delay: 0.7s;
|
||||
-moz-transition-delay: 0.7s;
|
||||
-o-transition-delay: 0.7s;
|
||||
transition-delay: 0.7s;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-8 {
|
||||
-webkit-transition-delay: 0.8s;
|
||||
-moz-transition-delay: 0.8s;
|
||||
-o-transition-delay: 0.8s;
|
||||
transition-delay: 0.8s;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-9 {
|
||||
-webkit-transition-delay: 0.9s;
|
||||
-moz-transition-delay: 0.9s;
|
||||
-o-transition-delay: 0.9s;
|
||||
transition-delay: 0.9s;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-10 {
|
||||
-webkit-transition-delay: 1s;
|
||||
-moz-transition-delay: 1s;
|
||||
-o-transition-delay: 1s;
|
||||
transition-delay: 1s;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-11 {
|
||||
-webkit-transition-delay: 1.1s;
|
||||
-moz-transition-delay: 1.1s;
|
||||
-o-transition-delay: 1.1s;
|
||||
transition-delay: 1.1s;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-12 {
|
||||
-webkit-transition-delay: 1.2s;
|
||||
-moz-transition-delay: 1.2s;
|
||||
-o-transition-delay: 1.2s;
|
||||
transition-delay: 1.2s;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-13 {
|
||||
-webkit-transition-delay: 1.3s;
|
||||
-moz-transition-delay: 1.3s;
|
||||
-o-transition-delay: 1.3s;
|
||||
transition-delay: 1.3s;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-14 {
|
||||
-webkit-transition-delay: 1.4s;
|
||||
-moz-transition-delay: 1.4s;
|
||||
-o-transition-delay: 1.4s;
|
||||
transition-delay: 1.4s;
|
||||
}
|
||||
|
||||
.shop-item-help-input:checked + .shop-item-help .shop-item-helper.delay-15 {
|
||||
-webkit-transition-delay: 1.5s;
|
||||
-moz-transition-delay: 1.5s;
|
||||
-o-transition-delay: 1.5s;
|
||||
transition-delay: 1.5s;
|
||||
}
|
||||
}
|
||||
BIN
ext/phpbbstudio/ass/styles/all/theme/fonts/slick.eot
Normal file
14
ext/phpbbstudio/ass/styles/all/theme/fonts/slick.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Generated by Fontastic.me</metadata>
|
||||
<defs>
|
||||
<font id="slick" horiz-adv-x="512">
|
||||
<font-face font-family="slick" units-per-em="512" ascent="480" descent="-32"/>
|
||||
<missing-glyph horiz-adv-x="512" />
|
||||
|
||||
<glyph unicode="→" d="M241 113l130 130c4 4 6 8 6 13 0 5-2 9-6 13l-130 130c-3 3-7 5-12 5-5 0-10-2-13-5l-29-30c-4-3-6-7-6-12 0-5 2-10 6-13l87-88-87-88c-4-3-6-8-6-13 0-5 2-9 6-12l29-30c3-3 8-5 13-5 5 0 9 2 12 5z m234 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
||||
<glyph unicode="←" d="M296 113l29 30c4 3 6 7 6 12 0 5-2 10-6 13l-87 88 87 88c4 3 6 8 6 13 0 5-2 9-6 12l-29 30c-3 3-8 5-13 5-5 0-9-2-12-5l-130-130c-4-4-6-8-6-13 0-5 2-9 6-13l130-130c3-3 7-5 12-5 5 0 10 2 13 5z m179 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
||||
<glyph unicode="•" d="M475 256c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
||||
<glyph unicode="a" d="M475 439l0-128c0-5-1-9-5-13-4-4-8-5-13-5l-128 0c-8 0-13 3-17 11-3 7-2 14 4 20l40 39c-28 26-62 39-100 39-20 0-39-4-57-11-18-8-33-18-46-32-14-13-24-28-32-46-7-18-11-37-11-57 0-20 4-39 11-57 8-18 18-33 32-46 13-14 28-24 46-32 18-7 37-11 57-11 23 0 44 5 64 15 20 9 38 23 51 42 2 1 4 3 7 3 3 0 5-1 7-3l39-39c2-2 3-3 3-6 0-2-1-4-2-6-21-25-46-45-76-59-29-14-60-20-93-20-30 0-58 5-85 17-27 12-51 27-70 47-20 19-35 43-47 70-12 27-17 55-17 85 0 30 5 58 17 85 12 27 27 51 47 70 19 20 43 35 70 47 27 12 55 17 85 17 28 0 55-5 81-15 26-11 50-26 70-45l37 37c6 6 12 7 20 4 8-4 11-9 11-17z"/>
|
||||
</font></defs></svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
BIN
ext/phpbbstudio/ass/styles/all/theme/fonts/slick.ttf
Normal file
BIN
ext/phpbbstudio/ass/styles/all/theme/fonts/slick.woff
Normal file
1
ext/phpbbstudio/ass/styles/all/theme/images/gold-pot.svg
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
@@ -0,0 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 79.536 79.536">
|
||||
<g>
|
||||
<path d="M79.536,61.441H0l3.946-6.846l12.285-21.284c2.175-3.76,5.722-3.76,7.889,0
|
||||
c0,0,2.853,4.942,3.197,5.52c1.634-2.825,10.341-17.916,10.341-17.916c2.18-3.76,5.725-3.76,7.894,0l17.301,29.968
|
||||
c0.891-1.548,1.771-3.064,2.443-4.256c1.574-2.713,4.127-2.713,5.707,0c1.563,2.724,4.127,7.166,5.701,9.869L79.536,61.441z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 406 B |
@@ -0,0 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 98 98">
|
||||
<g>
|
||||
<path d="M96.44,10.932L73.294,48.637c-0.857,1.399-2.54,1.626-3.736,0.506l-11.195-10.48
|
||||
c-1.197-1.12-2.92-0.919-3.826,0.449L38.823,62.814c-0.906,1.367-2.641,1.582-3.853,0.478l-7.32-6.675
|
||||
c-1.212-1.104-3.044-0.962-4.07,0.317L0.533,85.673C-0.494,86.952,0.009,88,1.646,88H98V11.374C98,9.733,97.297,9.532,96.44,10.932
|
||||
z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 402 B |
4
ext/phpbbstudio/ass/styles/all/theme/images/tree.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg viewBox="-271 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m121,422c66.16797,0 120,-61.55859 120,-136c0,-58.67187 -33.47656,-92.71484 -35.1875,-95.74219c0.85938,-4.75781 5.1875,-19.24609 5.1875,-39.25781c0,-66.16797 -40.37109,-121 -90,-121s-91,54.83203 -91,121c0,19.98828 4.35156,34.64453 5.1875,39.25781c-1.69531,3 -35.1875,35.9961 -35.1875,95.74219c0,74.44141 54.83203,136 121,136zm0,0"/>
|
||||
<path d="m15,542l482,0c8.28906,0 15,-6.71094 15,-15s-6.71094,-15 -15,-15l-15,0l0,-30l15,0c8.28906,0 15,-6.71094 15,-15s-6.71094,-15 -15,-15l-15,0l0,-45c0,-8.28906 -6.71094,-15 -15,-15l-91,0c-8.28906,0 -15,6.71094 -15,15l0,45l-15,0c-8.28906,0 -15,6.71094 -15,15s6.71094,15 15,15l15,0l0,30l-60,0l0,-63.32422c-9.69531,2.17188 -19.72656,3.32422 -30,3.32422c-10.11719,0 -20.125,-1.27344 -30,-3.5625l0,63.5625l-90,0l0,-63.32422c-9.69531,2.17188 -19.72656,3.32422 -30,3.32422s-20.30469,-1.15234 -30,-3.32422l0,63.32422l-76,0c-8.28906,0 -15,6.71094 -15,15s6.71094,15 15,15zm376,-60l61,0l0,30l-61,0l0,-30zm0,0"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
5
ext/phpbbstudio/ass/styles/all/theme/images/trees.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m121,422c66.16797,0 120,-61.55859 120,-136c0,-58.67187 -33.47656,-92.71484 -35.1875,-95.74219c0.85938,-4.75781 5.1875,-19.24609 5.1875,-39.25781c0,-66.16797 -40.37109,-121 -90,-121s-91,54.83203 -91,121c0,19.98828 4.35156,34.64453 5.1875,39.25781c-1.69531,3 -35.1875,35.9961 -35.1875,95.74219c0,74.44141 54.83203,136 121,136zm0,0"/>
|
||||
<path d="m237.99609,183.125c27.14454,38.52344 33.00391,76.625 33.00391,102.875c0,48.60156 -19.31641,93.22656 -49.81641,123.44922c15.21875,7.87109 31.9961,12.55078 49.81641,12.55078c66.16797,0 120,-61.55859 120,-136c0,-59.74609 -33.49219,-92.74219 -35.1875,-95.74219c0.83594,-4.61328 5.1875,-19.26953 5.1875,-39.25781c0,-66.16797 -40.37109,-121 -90,-121c-21.46484,0 -40.93359,10.48438 -56.41797,27.26953c16.27735,25.60547 26.41797,58.5625 26.41797,93.73047c0,12.94922 -1.49219,23.98047 -3.00391,32.125zm0,0"/>
|
||||
<path d="m15,542l482,0c8.28906,0 15,-6.71094 15,-15s-6.71094,-15 -15,-15l-15,0l0,-30l15,0c8.28906,0 15,-6.71094 15,-15s-6.71094,-15 -15,-15l-15,0l0,-45c0,-8.28906 -6.71094,-15 -15,-15l-91,0c-8.28906,0 -15,6.71094 -15,15l0,45l-15,0c-8.28906,0 -15,6.71094 -15,15s6.71094,15 15,15l15,0l0,30l-60,0l0,-63.32422c-9.69531,2.17188 -19.72656,3.32422 -30,3.32422c-10.11719,0 -20.125,-1.27344 -30,-3.5625l0,63.5625l-90,0l0,-63.32422c-9.69531,2.17188 -19.72656,3.32422 -30,3.32422s-20.30469,-1.15234 -30,-3.32422l0,63.32422l-76,0c-8.28906,0 -15,6.71094 -15,15s6.71094,15 15,15zm376,-60l61,0l0,30l-61,0l0,-30zm0,0"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
440
ext/phpbbstudio/ass/styles/all/theme/jquery-ui.css
vendored
Normal file
@@ -0,0 +1,440 @@
|
||||
/*! jQuery UI - v1.12.1 - 2019-07-19
|
||||
* http://jqueryui.com
|
||||
* Includes: draggable.css, theme.css
|
||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=base&cornerRadiusShadow=8px&offsetLeftShadow=0px&offsetTopShadow=0px&thicknessShadow=5px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=666666&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cc0000&fcError=5f3f3f&borderColorError=f1a899&bgTextureError=flat&bgColorError=fddfdf&iconColorHighlight=777620&fcHighlight=777620&borderColorHighlight=dad55e&bgTextureHighlight=flat&bgColorHighlight=fffa90&iconColorActive=ffffff&fcActive=ffffff&borderColorActive=003eff&bgTextureActive=flat&bgColorActive=007fff&iconColorHover=555555&fcHover=2b2b2b&borderColorHover=cccccc&bgTextureHover=flat&bgColorHover=ededed&iconColorDefault=777777&fcDefault=454545&borderColorDefault=c5c5c5&bgTextureDefault=flat&bgColorDefault=f6f6f6&iconColorContent=444444&fcContent=333333&borderColorContent=dddddd&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=444444&fcHeader=333333&borderColorHeader=dddddd&bgTextureHeader=flat&bgColorHeader=e9e9e9&cornerRadius=3px&fwDefault=normal&fsDefault=1em&ffDefault=Arial%2CHelvetica%2Csans-serif
|
||||
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
||||
|
||||
.ui-draggable-handle {
|
||||
-ms-touch-action: none;
|
||||
touch-action: none;
|
||||
}
|
||||
|
||||
/* Component containers
|
||||
----------------------------------*/
|
||||
.ui-widget {
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget .ui-widget {
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget input,
|
||||
.ui-widget select,
|
||||
.ui-widget textarea,
|
||||
.ui-widget button {
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
.ui-widget.ui-widget-content {
|
||||
border: 1px solid #c5c5c5;
|
||||
}
|
||||
.ui-widget-content {
|
||||
border: 1px solid #dddddd;
|
||||
background: #ffffff;
|
||||
color: #333333;
|
||||
}
|
||||
.ui-widget-content a {
|
||||
color: #333333;
|
||||
}
|
||||
.ui-widget-header {
|
||||
border: 1px solid #dddddd;
|
||||
background: #e9e9e9;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
}
|
||||
.ui-widget-header a {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
/* Interaction states
|
||||
----------------------------------*/
|
||||
.ui-state-default,
|
||||
.ui-widget-content .ui-state-default,
|
||||
.ui-widget-header .ui-state-default,
|
||||
.ui-button,
|
||||
|
||||
/* We use html here because we need a greater specificity to make sure disabled
|
||||
works properly when clicked or hovered */
|
||||
html .ui-button.ui-state-disabled:hover,
|
||||
html .ui-button.ui-state-disabled:active {
|
||||
border: 1px solid #c5c5c5;
|
||||
background: #f6f6f6;
|
||||
font-weight: normal;
|
||||
color: #454545;
|
||||
}
|
||||
.ui-state-default a,
|
||||
.ui-state-default a:link,
|
||||
.ui-state-default a:visited,
|
||||
a.ui-button,
|
||||
a:link.ui-button,
|
||||
a:visited.ui-button,
|
||||
.ui-button {
|
||||
color: #454545;
|
||||
text-decoration: none;
|
||||
}
|
||||
.ui-state-hover,
|
||||
.ui-widget-content .ui-state-hover,
|
||||
.ui-widget-header .ui-state-hover,
|
||||
.ui-state-focus,
|
||||
.ui-widget-content .ui-state-focus,
|
||||
.ui-widget-header .ui-state-focus,
|
||||
.ui-button:hover,
|
||||
.ui-button:focus {
|
||||
border: 1px solid #cccccc;
|
||||
background: #ededed;
|
||||
font-weight: normal;
|
||||
color: #2b2b2b;
|
||||
}
|
||||
.ui-state-hover a,
|
||||
.ui-state-hover a:hover,
|
||||
.ui-state-hover a:link,
|
||||
.ui-state-hover a:visited,
|
||||
.ui-state-focus a,
|
||||
.ui-state-focus a:hover,
|
||||
.ui-state-focus a:link,
|
||||
.ui-state-focus a:visited,
|
||||
a.ui-button:hover,
|
||||
a.ui-button:focus {
|
||||
color: #2b2b2b;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.ui-visual-focus {
|
||||
box-shadow: 0 0 3px 1px rgb(94, 158, 214);
|
||||
}
|
||||
.ui-state-active,
|
||||
.ui-widget-content .ui-state-active,
|
||||
.ui-widget-header .ui-state-active,
|
||||
a.ui-button:active,
|
||||
.ui-button:active,
|
||||
.ui-button.ui-state-active:hover {
|
||||
border: 1px solid #003eff;
|
||||
background: #007fff;
|
||||
font-weight: normal;
|
||||
color: #ffffff;
|
||||
}
|
||||
.ui-icon-background,
|
||||
.ui-state-active .ui-icon-background {
|
||||
border: #003eff;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.ui-state-active a,
|
||||
.ui-state-active a:link,
|
||||
.ui-state-active a:visited {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-highlight,
|
||||
.ui-widget-content .ui-state-highlight,
|
||||
.ui-widget-header .ui-state-highlight {
|
||||
border: 1px solid #dad55e;
|
||||
background: #fffa90;
|
||||
color: #777620;
|
||||
}
|
||||
.ui-state-checked {
|
||||
border: 1px solid #dad55e;
|
||||
background: #fffa90;
|
||||
}
|
||||
.ui-state-highlight a,
|
||||
.ui-widget-content .ui-state-highlight a,
|
||||
.ui-widget-header .ui-state-highlight a {
|
||||
color: #777620;
|
||||
}
|
||||
.ui-state-error,
|
||||
.ui-widget-content .ui-state-error,
|
||||
.ui-widget-header .ui-state-error {
|
||||
border: 1px solid #f1a899;
|
||||
background: #fddfdf;
|
||||
color: #5f3f3f;
|
||||
}
|
||||
.ui-state-error a,
|
||||
.ui-widget-content .ui-state-error a,
|
||||
.ui-widget-header .ui-state-error a {
|
||||
color: #5f3f3f;
|
||||
}
|
||||
.ui-state-error-text,
|
||||
.ui-widget-content .ui-state-error-text,
|
||||
.ui-widget-header .ui-state-error-text {
|
||||
color: #5f3f3f;
|
||||
}
|
||||
.ui-priority-primary,
|
||||
.ui-widget-content .ui-priority-primary,
|
||||
.ui-widget-header .ui-priority-primary {
|
||||
font-weight: bold;
|
||||
}
|
||||
.ui-priority-secondary,
|
||||
.ui-widget-content .ui-priority-secondary,
|
||||
.ui-widget-header .ui-priority-secondary {
|
||||
opacity: .7;
|
||||
filter:Alpha(Opacity=70); /* support: IE8 */
|
||||
font-weight: normal;
|
||||
}
|
||||
.ui-state-disabled,
|
||||
.ui-widget-content .ui-state-disabled,
|
||||
.ui-widget-header .ui-state-disabled {
|
||||
opacity: .35;
|
||||
filter:Alpha(Opacity=35); /* support: IE8 */
|
||||
background-image: none;
|
||||
}
|
||||
.ui-state-disabled .ui-icon {
|
||||
filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
|
||||
}
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.ui-icon,
|
||||
.ui-widget-content .ui-icon {
|
||||
background-image: url("images/ui-icons_444444_256x240.png");
|
||||
}
|
||||
.ui-widget-header .ui-icon {
|
||||
background-image: url("images/ui-icons_444444_256x240.png");
|
||||
}
|
||||
.ui-state-hover .ui-icon,
|
||||
.ui-state-focus .ui-icon,
|
||||
.ui-button:hover .ui-icon,
|
||||
.ui-button:focus .ui-icon {
|
||||
background-image: url("images/ui-icons_555555_256x240.png");
|
||||
}
|
||||
.ui-state-active .ui-icon,
|
||||
.ui-button:active .ui-icon {
|
||||
background-image: url("images/ui-icons_ffffff_256x240.png");
|
||||
}
|
||||
.ui-state-highlight .ui-icon,
|
||||
.ui-button .ui-state-highlight.ui-icon {
|
||||
background-image: url("images/ui-icons_777620_256x240.png");
|
||||
}
|
||||
.ui-state-error .ui-icon,
|
||||
.ui-state-error-text .ui-icon {
|
||||
background-image: url("images/ui-icons_cc0000_256x240.png");
|
||||
}
|
||||
.ui-button .ui-icon {
|
||||
background-image: url("images/ui-icons_777777_256x240.png");
|
||||
}
|
||||
|
||||
/* positioning */
|
||||
.ui-icon-blank { background-position: 16px 16px; }
|
||||
.ui-icon-caret-1-n { background-position: 0 0; }
|
||||
.ui-icon-caret-1-ne { background-position: -16px 0; }
|
||||
.ui-icon-caret-1-e { background-position: -32px 0; }
|
||||
.ui-icon-caret-1-se { background-position: -48px 0; }
|
||||
.ui-icon-caret-1-s { background-position: -65px 0; }
|
||||
.ui-icon-caret-1-sw { background-position: -80px 0; }
|
||||
.ui-icon-caret-1-w { background-position: -96px 0; }
|
||||
.ui-icon-caret-1-nw { background-position: -112px 0; }
|
||||
.ui-icon-caret-2-n-s { background-position: -128px 0; }
|
||||
.ui-icon-caret-2-e-w { background-position: -144px 0; }
|
||||
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||
.ui-icon-triangle-1-s { background-position: -65px -16px; }
|
||||
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||
.ui-icon-arrow-1-s { background-position: -65px -32px; }
|
||||
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
|
||||
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||
.ui-icon-extlink { background-position: -32px -80px; }
|
||||
.ui-icon-newwin { background-position: -48px -80px; }
|
||||
.ui-icon-refresh { background-position: -64px -80px; }
|
||||
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||
.ui-icon-document { background-position: -32px -96px; }
|
||||
.ui-icon-document-b { background-position: -48px -96px; }
|
||||
.ui-icon-note { background-position: -64px -96px; }
|
||||
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||
.ui-icon-comment { background-position: -128px -96px; }
|
||||
.ui-icon-person { background-position: -144px -96px; }
|
||||
.ui-icon-print { background-position: -160px -96px; }
|
||||
.ui-icon-trash { background-position: -176px -96px; }
|
||||
.ui-icon-locked { background-position: -192px -96px; }
|
||||
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||
.ui-icon-tag { background-position: -240px -96px; }
|
||||
.ui-icon-home { background-position: 0 -112px; }
|
||||
.ui-icon-flag { background-position: -16px -112px; }
|
||||
.ui-icon-calendar { background-position: -32px -112px; }
|
||||
.ui-icon-cart { background-position: -48px -112px; }
|
||||
.ui-icon-pencil { background-position: -64px -112px; }
|
||||
.ui-icon-clock { background-position: -80px -112px; }
|
||||
.ui-icon-disk { background-position: -96px -112px; }
|
||||
.ui-icon-calculator { background-position: -112px -112px; }
|
||||
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||
.ui-icon-search { background-position: -160px -112px; }
|
||||
.ui-icon-wrench { background-position: -176px -112px; }
|
||||
.ui-icon-gear { background-position: -192px -112px; }
|
||||
.ui-icon-heart { background-position: -208px -112px; }
|
||||
.ui-icon-star { background-position: -224px -112px; }
|
||||
.ui-icon-link { background-position: -240px -112px; }
|
||||
.ui-icon-cancel { background-position: 0 -128px; }
|
||||
.ui-icon-plus { background-position: -16px -128px; }
|
||||
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||
.ui-icon-minus { background-position: -48px -128px; }
|
||||
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||
.ui-icon-close { background-position: -80px -128px; }
|
||||
.ui-icon-closethick { background-position: -96px -128px; }
|
||||
.ui-icon-key { background-position: -112px -128px; }
|
||||
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||
.ui-icon-scissors { background-position: -144px -128px; }
|
||||
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||
.ui-icon-copy { background-position: -176px -128px; }
|
||||
.ui-icon-contact { background-position: -192px -128px; }
|
||||
.ui-icon-image { background-position: -208px -128px; }
|
||||
.ui-icon-video { background-position: -224px -128px; }
|
||||
.ui-icon-script { background-position: -240px -128px; }
|
||||
.ui-icon-alert { background-position: 0 -144px; }
|
||||
.ui-icon-info { background-position: -16px -144px; }
|
||||
.ui-icon-notice { background-position: -32px -144px; }
|
||||
.ui-icon-help { background-position: -48px -144px; }
|
||||
.ui-icon-check { background-position: -64px -144px; }
|
||||
.ui-icon-bullet { background-position: -80px -144px; }
|
||||
.ui-icon-radio-on { background-position: -96px -144px; }
|
||||
.ui-icon-radio-off { background-position: -112px -144px; }
|
||||
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||
.ui-icon-play { background-position: 0 -160px; }
|
||||
.ui-icon-pause { background-position: -16px -160px; }
|
||||
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||
.ui-icon-seek-start { background-position: -80px -160px; }
|
||||
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
||||
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||
.ui-icon-stop { background-position: -96px -160px; }
|
||||
.ui-icon-eject { background-position: -112px -160px; }
|
||||
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||
.ui-icon-power { background-position: 0 -176px; }
|
||||
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||
.ui-icon-signal { background-position: -32px -176px; }
|
||||
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Corner radius */
|
||||
.ui-corner-all,
|
||||
.ui-corner-top,
|
||||
.ui-corner-left,
|
||||
.ui-corner-tl {
|
||||
border-top-left-radius: 3px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-top,
|
||||
.ui-corner-right,
|
||||
.ui-corner-tr {
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-bottom,
|
||||
.ui-corner-left,
|
||||
.ui-corner-bl {
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
.ui-corner-all,
|
||||
.ui-corner-bottom,
|
||||
.ui-corner-right,
|
||||
.ui-corner-br {
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay {
|
||||
background: #aaaaaa;
|
||||
opacity: .3;
|
||||
filter: Alpha(Opacity=30); /* support: IE8 */
|
||||
}
|
||||
.ui-widget-shadow {
|
||||
-webkit-box-shadow: 0px 0px 5px #666666;
|
||||
box-shadow: 0px 0px 5px #666666;
|
||||
}
|
||||
7
ext/phpbbstudio/ass/styles/all/theme/jquery-ui.min.css
vendored
Normal file
119
ext/phpbbstudio/ass/styles/all/theme/slick.css
Normal file
@@ -0,0 +1,119 @@
|
||||
/* Slider */
|
||||
.slick-slider
|
||||
{
|
||||
position: relative;
|
||||
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
-webkit-touch-callout: none;
|
||||
-khtml-user-select: none;
|
||||
-ms-touch-action: pan-y;
|
||||
touch-action: pan-y;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.slick-list
|
||||
{
|
||||
position: relative;
|
||||
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.slick-list:focus
|
||||
{
|
||||
outline: none;
|
||||
}
|
||||
.slick-list.dragging
|
||||
{
|
||||
cursor: pointer;
|
||||
cursor: hand;
|
||||
}
|
||||
|
||||
.slick-slider .slick-track,
|
||||
.slick-slider .slick-list
|
||||
{
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-moz-transform: translate3d(0, 0, 0);
|
||||
-ms-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
|
||||
.slick-track
|
||||
{
|
||||
position: relative;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.slick-track:before,
|
||||
.slick-track:after
|
||||
{
|
||||
display: table;
|
||||
|
||||
content: '';
|
||||
}
|
||||
.slick-track:after
|
||||
{
|
||||
clear: both;
|
||||
}
|
||||
.slick-loading .slick-track
|
||||
{
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.slick-slide
|
||||
{
|
||||
display: none;
|
||||
float: left;
|
||||
|
||||
height: 100%;
|
||||
min-height: 1px;
|
||||
}
|
||||
[dir='rtl'] .slick-slide
|
||||
{
|
||||
float: right;
|
||||
}
|
||||
.slick-slide img
|
||||
{
|
||||
display: block;
|
||||
}
|
||||
.slick-slide.slick-loading img
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
.slick-slide.dragging img
|
||||
{
|
||||
pointer-events: none;
|
||||
}
|
||||
.slick-initialized .slick-slide
|
||||
{
|
||||
display: block;
|
||||
}
|
||||
.slick-loading .slick-slide
|
||||
{
|
||||
visibility: hidden;
|
||||
}
|
||||
.slick-vertical .slick-slide
|
||||
{
|
||||
display: block;
|
||||
|
||||
height: auto;
|
||||
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
.slick-arrow.slick-hidden {
|
||||
display: none;
|
||||
}
|
||||