Feat | profile add subscriptions pages #27
Merged
Andrei-10
merged 1 commits from web_87
into master
3 months ago
File diff suppressed because it is too large
Load Diff
@ -1,67 +0,0 @@ |
|||||||
// 'use strict';
|
|
||||||
|
|
||||||
// import * as fun from './_gp-function.js';
|
|
||||||
|
|
||||||
// let widthPhoneCabinet = 1200;
|
|
||||||
|
|
||||||
// fun.toggleOpenX('.cabinet-card__order', '.cabinet-card-order__open-detail', '.cabinet-card-order__detail', '.cabinet-card-order__block-detail');
|
|
||||||
// fun.modalFormOpen('.form-open');
|
|
||||||
|
|
||||||
// fun.closeModalForm('.modal-form__close');
|
|
||||||
// fun.closeModalForm('.modal-form__button-close');
|
|
||||||
|
|
||||||
// controlCabinet('.cabinet-control__button', '.cabinet', widthPhoneCabinet);
|
|
||||||
|
|
||||||
// function controlCabinet(buttons, main, minWidth){
|
|
||||||
// let thisWidth = window.innerWidth;
|
|
||||||
// let thisMain = document.querySelector(main);
|
|
||||||
|
|
||||||
// let thisButtons = document.querySelectorAll(buttons);
|
|
||||||
|
|
||||||
// thisButtons.forEach(e => {
|
|
||||||
// e.onclick = function (element){
|
|
||||||
// let thisContent = document.querySelector(`.cabinet__${e.dataset.cabinet}`);
|
|
||||||
// let newHeight = thisContent.clientHeight + 48;
|
|
||||||
// let thisButton = element.target;
|
|
||||||
|
|
||||||
// thisMain.style.height = `${newHeight}px`
|
|
||||||
|
|
||||||
// if (!thisContent.classList.contains('active')) {
|
|
||||||
// thisMain.querySelector('.active').classList.remove('active');
|
|
||||||
// thisContent.classList.add('active');
|
|
||||||
|
|
||||||
// setTimeout(() => {
|
|
||||||
// thisMain.style.height = 'auto';
|
|
||||||
|
|
||||||
// if (thisMain.querySelector('.hide')) {
|
|
||||||
// thisMain.querySelector('.hide').classList.remove('hide');
|
|
||||||
// }
|
|
||||||
|
|
||||||
// thisMain.querySelector('.active').classList.add('hide');
|
|
||||||
// }, 200);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// thisButtons.forEach(e => {
|
|
||||||
// e.classList.remove('active');
|
|
||||||
// })
|
|
||||||
// thisButton.classList.add('active');
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
// let modal = document.querySelector('.modal');
|
|
||||||
// modal.onclick = function (eventModal) {
|
|
||||||
// let thisTarget = eventModal.target;
|
|
||||||
|
|
||||||
// if (thisTarget.classList.contains('modal')) {
|
|
||||||
// thisTarget.classList.remove('active');
|
|
||||||
|
|
||||||
// if (!thisTarget.querySelector('.modal-map.active')) {
|
|
||||||
// thisTarget.querySelector('.modal-form.active').classList.remove('active');
|
|
||||||
// }else{
|
|
||||||
// thisTarget.querySelector('.modal-map.active').classList.remove('active');
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
@ -0,0 +1,143 @@ |
|||||||
|
<?php |
||||||
|
if (!defined('ABSPATH')) { |
||||||
|
exit; |
||||||
|
} |
||||||
|
use Timber\Timber; |
||||||
|
add_filter('timber/twig/filters', function ($filters) { |
||||||
|
$filters['wp_get_attachment_image_src'] = [ |
||||||
|
'callable' => function ($attachment_id, $size = 'thumbnail', $icon = false) { |
||||||
|
$image = wp_get_attachment_image_src($attachment_id, $size, $icon); |
||||||
|
return $image ? $image[0] : ''; // Return the URL or empty string |
||||||
|
}, |
||||||
|
]; |
||||||
|
return $filters; |
||||||
|
}); |
||||||
|
add_filter('timber/twig/functions', function ($functions) { |
||||||
|
$functions['wc_get_page_permalink'] = [ |
||||||
|
'callable' => 'wc_get_page_permalink', |
||||||
|
]; |
||||||
|
$functions['wc_get_endpoint_url'] = [ |
||||||
|
'callable' => 'wc_get_endpoint_url', |
||||||
|
]; |
||||||
|
$functions['is_wc_endpoint_url'] = [ |
||||||
|
'callable' => 'is_wc_endpoint_url', |
||||||
|
]; |
||||||
|
$functions['get_permalink'] = [ |
||||||
|
'callable' => 'get_permalink', |
||||||
|
]; |
||||||
|
$functions['get_the_ID'] = [ |
||||||
|
'callable' => 'get_the_ID', |
||||||
|
]; |
||||||
|
$functions['pll_e'] = [ |
||||||
|
'callable' => 'pll_e', |
||||||
|
]; |
||||||
|
return $functions; |
||||||
|
}); |
||||||
|
|
||||||
|
// Get subscription ID from URL (e.g., /my-account/view-subscription/7632/) |
||||||
|
|
||||||
|
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; |
||||||
|
if (preg_match('/view-subscription\/(\d+)/', $request_uri, $matches)) { |
||||||
|
$subscription_id = absint($matches[1]); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
$subscription = $subscription_id ? wcs_get_subscription($subscription_id) : null; |
||||||
|
|
||||||
|
if (!$subscription || !wcs_is_subscription($subscription) || $subscription->get_user_id() !== get_current_user_id()) { |
||||||
|
error_log('Invalid or inaccessible subscription ID: ' . $subscription_id); |
||||||
|
$subscription = null; |
||||||
|
} else { |
||||||
|
error_log('Subscription ID: ' . $subscription->get_id() . ' | Status: ' . $subscription->get_status()); |
||||||
|
|
||||||
|
$items = array_map(function ($item) { |
||||||
|
$product_id = $item->get_product_id(); |
||||||
|
$variation_id = $item->get_variation_id(); |
||||||
|
$wc_product = $product_id ? wc_get_product($variation_id ?: $product_id) : null; |
||||||
|
$product_name = $wc_product ? $wc_product->get_name() : 'Unknown Product'; |
||||||
|
$image_id = $wc_product ? $wc_product->get_image_id() : 0; |
||||||
|
$status = $product_id ? get_post_status($product_id) : 'N/A'; |
||||||
|
$permalink = $wc_product && $wc_product->is_visible() ? get_permalink($product_id) : ''; |
||||||
|
$variation_details = $variation_id ? wc_get_formatted_variation($wc_product, true) : ''; |
||||||
|
error_log('Item ID: ' . $item->get_id() . ' | Product ID: ' . $product_id . ' | Variation ID: ' . $variation_id . ' | Name: ' . $product_name . ' | Permalink: ' . $permalink . ' | Status: ' . $status); |
||||||
|
|
||||||
|
return [ |
||||||
|
'product' => [ |
||||||
|
'id' => $product_id ?: 0, |
||||||
|
'name' => $product_name, |
||||||
|
'image_id' => $image_id, |
||||||
|
'variation_details' => $variation_details, |
||||||
|
], |
||||||
|
'quantity' => $item->get_quantity(), |
||||||
|
'total' => $item->get_total(), |
||||||
|
]; |
||||||
|
}, $subscription->get_items()); |
||||||
|
|
||||||
|
|
||||||
|
$cancel_url = ''; |
||||||
|
if ($subscription->can_be_updated_to('cancelled')) { |
||||||
|
$cancel_url = add_query_arg( |
||||||
|
[ |
||||||
|
'subscription_id' => $subscription->get_id(), |
||||||
|
'change_subscription_to' => 'cancelled', |
||||||
|
'_wpnonce' => wp_create_nonce('wcs_switch_request'), |
||||||
|
], |
||||||
|
wc_get_endpoint_url('view-subscription', $subscription->get_id(), wc_get_page_permalink('myaccount')) |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
$subscription_data = [ |
||||||
|
'id' => $subscription->get_id(), |
||||||
|
'status' => $subscription->get_status(), |
||||||
|
'date_created' => $subscription->get_date_created(), |
||||||
|
'last_order_date' => $subscription->get_date('last_order_date_created'), |
||||||
|
'next_payment_date' => $subscription->get_date('next_payment'), |
||||||
|
'payment_method_title' => $subscription->get_payment_method_title(), |
||||||
|
'total' => $subscription->get_total(), |
||||||
|
'currency' => $subscription->get_currency(), |
||||||
|
'items' => $items, |
||||||
|
'cancel_url' => $cancel_url, |
||||||
|
'shipping_address' => $subscription->get_formatted_shipping_address(), |
||||||
|
'shipping_comment' => $subscription->get_customer_note(), |
||||||
|
]; |
||||||
|
} |
||||||
|
|
||||||
|
// Timber context |
||||||
|
$context = Timber::context(); |
||||||
|
|
||||||
|
$current_user = wp_get_current_user(); |
||||||
|
$context['current_user'] = $current_user; |
||||||
|
$context['first_name'] = $current_user->user_firstname; |
||||||
|
$context['last_name'] = $current_user->user_lastname; |
||||||
|
$context['email'] = $current_user->user_email; |
||||||
|
$context['phone'] = get_user_meta($current_user->ID, 'billing_phone', true); |
||||||
|
$context['tg_account'] = get_user_meta($current_user->ID, 'tg_account', true); |
||||||
|
|
||||||
|
// ACF поля для пользователя |
||||||
|
$context['activated'] = get_field('activated', 'user_' . get_current_user_id()); |
||||||
|
$context['uuid'] = get_field('uuid', 'user_' . get_current_user_id()); |
||||||
|
|
||||||
|
// Запрос для питомцев |
||||||
|
$current_user_id = get_current_user_id(); |
||||||
|
if ($current_user_id) { |
||||||
|
$args = [ |
||||||
|
'post_type' => 'pets', |
||||||
|
'meta_query' => [ |
||||||
|
[ |
||||||
|
'key' => 'user', |
||||||
|
'value' => $current_user_id, |
||||||
|
'compare' => '=' |
||||||
|
] |
||||||
|
] |
||||||
|
]; |
||||||
|
$context['pets'] = Timber::get_posts($args); |
||||||
|
} |
||||||
|
$context['bot_username'] = defined('BOT_USERNAME') ? BOT_USERNAME : ''; |
||||||
|
$context['subscription'] = $subscription_data; |
||||||
|
|
||||||
|
// Debug: Log subscription data |
||||||
|
error_log('Subscription Data: ' . print_r($subscription_data, true)); |
||||||
|
|
||||||
|
// Render the Twig template |
||||||
|
Timber::render('profile/profile-subs-single.twig', $context); |
||||||
|
?> |
@ -0,0 +1,107 @@ |
|||||||
|
<?php |
||||||
|
if (!defined('ABSPATH')) { |
||||||
|
exit; |
||||||
|
} |
||||||
|
add_filter('timber/twig/filters', function ($filters) { |
||||||
|
$filters['wp_get_attachment_image_src'] = [ |
||||||
|
'callable' => function ($attachment_id, $size = 'thumbnail', $icon = false) { |
||||||
|
$image = wp_get_attachment_image_src($attachment_id, $size, $icon); |
||||||
|
return $image ? $image[0] : ''; // Return the URL or empty string |
||||||
|
}, |
||||||
|
]; |
||||||
|
return $filters; |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
use Timber\Timber; |
||||||
|
|
||||||
|
|
||||||
|
$context = Timber::context(); |
||||||
|
if (!class_exists('WC_Subscriptions')) { |
||||||
|
error_log('WooCommerce Subscriptions plugin is not active.'); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
// Get the current user’s subscriptions |
||||||
|
$user_id = get_current_user_id(); |
||||||
|
$subscriptions = wcs_get_users_subscriptions($user_id); |
||||||
|
|
||||||
|
$subscription_data = []; |
||||||
|
foreach ($subscriptions as $subscription) { |
||||||
|
$view_url = $subscription->get_view_order_url(); |
||||||
|
// Debug: Log the view_url to check its value |
||||||
|
error_log('Subscription ID: ' . $subscription->get_id() . ' | View URL: ' . $view_url); |
||||||
|
|
||||||
|
$subscription_data[] = [ |
||||||
|
'id' => $subscription->get_id(), |
||||||
|
'date_created' => $subscription->get_date_created(), |
||||||
|
'total' => $subscription->get_total(), |
||||||
|
'currency' => $subscription->get_currency(), |
||||||
|
'billing_period' => $subscription->get_billing_period(), |
||||||
|
'next_payment_date' => $subscription->get_date('next_payment'), |
||||||
|
'view_url' => esc_url($view_url), // Ensure URL is escaped for safety |
||||||
|
'items' => array_map(function ($item) { |
||||||
|
$product = $item->get_product(); |
||||||
|
return [ |
||||||
|
'product' => [ |
||||||
|
'name' => $product->get_name(), |
||||||
|
'image_id' => $product->get_image_id(), |
||||||
|
], |
||||||
|
]; |
||||||
|
}, $subscription->get_items()), |
||||||
|
]; |
||||||
|
} |
||||||
|
|
||||||
|
$context['subscriptions'] = $subscription_data; |
||||||
|
|
||||||
|
// Debug: Log the entire subscriptions array |
||||||
|
error_log('Subscriptions Data: ' . print_r($subscription_data, true)); |
||||||
|
|
||||||
|
// Render the Twig template |
||||||
|
|
||||||
|
$current_user = wp_get_current_user(); |
||||||
|
$context['current_user'] = $current_user; |
||||||
|
$context['first_name'] = $current_user->user_firstname; |
||||||
|
$context['last_name'] = $current_user->user_lastname; |
||||||
|
$context['email'] = $current_user->user_email; |
||||||
|
$context['phone'] = get_user_meta($current_user->ID, 'billing_phone', true); |
||||||
|
$context['tg_account'] = get_user_meta($current_user->ID, 'tg_account', true); |
||||||
|
|
||||||
|
// ACF поля для пользователя |
||||||
|
$context['activated'] = get_field('activated', 'user_' . get_current_user_id()); |
||||||
|
$context['uuid'] = get_field('uuid', 'user_' . get_current_user_id()); |
||||||
|
$context['bot_username'] = defined('BOT_USERNAME') ? BOT_USERNAME : ''; |
||||||
|
// Запрос для питомцев |
||||||
|
$current_user_id = get_current_user_id(); |
||||||
|
if ($current_user_id) { |
||||||
|
$args = [ |
||||||
|
'post_type' => 'pets', |
||||||
|
'meta_query' => [ |
||||||
|
[ |
||||||
|
'key' => 'user', |
||||||
|
'value' => $current_user_id, |
||||||
|
'compare' => '=' |
||||||
|
] |
||||||
|
] |
||||||
|
]; |
||||||
|
$context['pets'] = Timber::get_posts($args); |
||||||
|
} |
||||||
|
|
||||||
|
// Месяцы для локализации |
||||||
|
$context['months'] = [ |
||||||
|
__('january', 'woodmart'), |
||||||
|
__('february', 'woodmart'), |
||||||
|
__('march', 'woodmart'), |
||||||
|
__('april', 'woodmart'), |
||||||
|
__('may', 'woodmart'), |
||||||
|
__('june', 'woodmart'), |
||||||
|
__('july', 'woodmart'), |
||||||
|
__('august', 'woodmart'), |
||||||
|
__('september', 'woodmart'), |
||||||
|
__('october', 'woodmart'), |
||||||
|
__('november', 'woodmart'), |
||||||
|
__('december', 'woodmart'), |
||||||
|
]; |
||||||
|
|
||||||
|
Timber::render('profile/profile-subs.twig', $context); |
||||||
|
?> |
@ -1 +1,2 @@ |
|||||||
<?php
|
<?php
|
||||||
|
$context = Timber::get_context(); |
||||||
|
@ -0,0 +1,55 @@ |
|||||||
|
jQuery(document).ready(function($) { |
||||||
|
window.onTelegramAuth = function(user) { |
||||||
|
$.ajax({ |
||||||
|
type: 'POST', |
||||||
|
url: telegram_auth_params.ajax_url, |
||||||
|
data: { |
||||||
|
action: 'ontelegramauth', |
||||||
|
userid: user.id, |
||||||
|
username: user.username || '', |
||||||
|
fname: user.first_name || '', |
||||||
|
lname: user.last_name || '', |
||||||
|
photo_url: user.photo_url || '', |
||||||
|
auth_date: user.auth_date, |
||||||
|
hash: user.hash |
||||||
|
}, |
||||||
|
success: function(response) { |
||||||
|
if (response.success) { |
||||||
|
window.location.href = telegram_auth_params.my_account_url; |
||||||
|
} else { |
||||||
|
alert(telegram_auth_params.i18n_error + ': ' + (response.data.message || 'Unknown error')); |
||||||
|
} |
||||||
|
}, |
||||||
|
error: function() { |
||||||
|
alert(telegram_auth_params.i18n_error); |
||||||
|
} |
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
|
window.linkTelegram = function(user) { |
||||||
|
$.ajax({ |
||||||
|
type: 'POST', |
||||||
|
url: telegram_auth_params.ajax_url, |
||||||
|
data: { |
||||||
|
action: 'linktelegram', |
||||||
|
userid: user.id, |
||||||
|
username: user.username || '', |
||||||
|
fname: user.first_name || '', |
||||||
|
lname: user.last_name || '', |
||||||
|
photo_url: user.photo_url || '', |
||||||
|
auth_date: user.auth_date, |
||||||
|
hash: user.hash |
||||||
|
}, |
||||||
|
success: function(response) { |
||||||
|
if (response.success) { |
||||||
|
$('.cabinet-accounts').html('<svg width="40px" height="40px" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid"><g><path d="M128,0 C57.307,0 0,57.307 0,128 L0,128 C0,198.693 57.307,256 128,256 L128,256 C198.693,256 256,198.693 256,128 L256,128 C256,57.307 198.693,0 128,0 L128,0 Z" fill="#40B3E0"></path><path d="M190.2826,73.6308 L167.4206,188.8978 C167.4206,188.8978 164.2236,196.8918 155.4306,193.0548 L102.6726,152.6068 L83.4886,143.3348 L51.1946,132.4628 C51.1946,132.4628 46.2386,130.7048 45.7586,126.8678 C45.2796,123.0308 51.3546,120.9528 51.3546,120.9528 L179.7306,70.5928 C179.7306,70.5928 190.2826,65.9568 190.2826,73.6308" fill="#FFFFFF"></path><path d="M98.6178,187.6035 C98.6178,187.6035 97.0778,187.4595 95.1588,181.3835 C93.2408,175.3085 83.4888,143.3345 83.4888,143.3345 L161.0258,94.0945 C161.0258,94.0945 165.5028,91.3765 165.3428,94.0945 C165.3428,94.0945 166.1418,94.5735 163.7438,96.8115 C161.3458,99.0505 102.8328,151.6475 102.8328,151.6475" fill="#D2E5F1"></path><path d="M122.9015,168.1154 L102.0335,187.1414 C102.0335,187.1414 100.4025,188.3794 98.6175,187.6034 L102.6135,152.2624" fill="#B5CFE4"></path></g></svg>'); |
||||||
|
} else { |
||||||
|
alert(telegram_auth_params.i18n_error_link + ': ' + (response.data.message || 'Unknown error')); |
||||||
|
} |
||||||
|
}, |
||||||
|
error: function() { |
||||||
|
alert(telegram_auth_params.i18n_error_link); |
||||||
|
} |
||||||
|
}); |
||||||
|
}; |
||||||
|
}); |
After Width: | Height: | Size: 1.8 KiB |
@ -0,0 +1,611 @@ |
|||||||
|
<main class="wrapper"> |
||||||
|
<div class="cabinet-card cabinet-card--green-white cabinet__subscription-mobile"> |
||||||
|
<div class="cabinet-card__content"> |
||||||
|
<p class="cabinet-card__title"> |
||||||
|
{{ function('pll_e', 'Feed subscription') }} |
||||||
|
</p> |
||||||
|
<div class="cabinet-card__element"> |
||||||
|
<p class="cabinet-card__text">{{ function('pll_e', 'Weekly food delivery for your pet') }}</p> |
||||||
|
</div> |
||||||
|
<div class="cabinet-card__element"> |
||||||
|
<button class="button button--gradient button--high-46 form-sub__btn"> |
||||||
|
{{ function('pll_e', 'Get details') }} |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="cabinet__control cabinet__control--column"> |
||||||
|
<a href="{{ fn('wc_get_page_permalink', 'myaccount') }}" class="to-know to-know--start button--100-perc to-know--background-none"> |
||||||
|
<p>{{ fn('pll_e', 'Перейти в профиль') }}</p> |
||||||
|
</a> |
||||||
|
<div class="form-input__tabs form-input__tabs--control form-input__tabs--white"> |
||||||
|
<a href="{{ fn('wc_get_endpoint_url', 'orders', '', fn('wc_get_page_permalink', 'myaccount')) }}" class="form-input-tabs__button {% if fn('is_wc_endpoint_url','orders') %}active{% endif %}"> |
||||||
|
{{ fn('pll_e', 'Заказы') }} |
||||||
|
</a> |
||||||
|
<a href="{{ fn('wc_get_page_permalink', 'myaccount') }}subscriptions" class="form-input-tabs__button {% if fn('is_wc_endpoint_url','subscriptions') %}active{% endif %}"> |
||||||
|
{{ fn('pll_e', 'Подписки') }} |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="cabinet"> |
||||||
|
<div class="cabinet__profile cabinet-content {% if not fn('is_wc_endpoint_url') %}active hide{% endif %}"> |
||||||
|
<div class="form-input__tabs form-input__tabs--control form-input__tabs--white"> |
||||||
|
|
||||||
|
<a href="{{ fn('wc_get_endpoint_url', '', '', fn('wc_get_page_permalink', 'myaccount')) }}" class="form-input-tabs__button {% if not fn('is_wc_endpoint_url') %}active{% endif %}"> |
||||||
|
{{ fn('pll_e', 'Заказы') }} |
||||||
|
</a> |
||||||
|
<a href="subscriptions" class="form-input-tabs__button {% if fn('is_wc_endpoint_url','subscriptions') %}active{% endif %}"> |
||||||
|
{{ fn('pll_e', 'Подписки') }} |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="cabinet-card cabinet-card--green"> |
||||||
|
<div class="cabinet-card__content"> |
||||||
|
<div class="cabinet-card__element"> |
||||||
|
<p class="cabinet-card__text {% if not first_name and not last_name %}cabinet-card__text--grey{% endif %}"> |
||||||
|
{% if first_name or last_name %} |
||||||
|
{{ first_name }} {{ last_name }} |
||||||
|
{% else %} |
||||||
|
{{ function('pll_e', 'Name is not set') }} |
||||||
|
{% endif %} |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="cabinet-card__element"> |
||||||
|
<p class="cabinet-card__label">{{ function('pll_e', 'Phone') }}:</p> |
||||||
|
<p class="cabinet-card__text {% if not phone %}cabinet-card__text--grey{% endif %}"> |
||||||
|
{% if phone %} |
||||||
|
{{ phone }} |
||||||
|
{% else %} |
||||||
|
{{ function('pll_e', 'Not filled') }} |
||||||
|
{% endif %} |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="cabinet-card__element"> |
||||||
|
<p class="cabinet-card__label">{{ function('pll_e', 'Email') }}:</p> |
||||||
|
{% if email %} |
||||||
|
<p class="cabinet-card__text">{{ email }}</p> |
||||||
|
{% if activated %} |
||||||
|
<p class="cabinet-card__status cabinet-card__status--chek">{{ function('pll_e', 'Email is verified') }}</p> |
||||||
|
{% else %} |
||||||
|
<p class="cabinet-card__status cabinet-card__status--cancelled">{{ function('pll_e', 'Email is not verified') }}</p> |
||||||
|
<form class="email_approve_form"> |
||||||
|
<input type="hidden" name="action" value="email_activate"> |
||||||
|
<button type="submit" class="cabinet-card__confirm">{{ function('pll_e', 'Verify') }}</button> |
||||||
|
</form> |
||||||
|
{% if uuid %} |
||||||
|
<p class="cabinet-card__status">{{ function('pll_e', 'Email with verification link is sent to your email.') }}</p> |
||||||
|
{% endif %} |
||||||
|
{% endif %} |
||||||
|
{% else %} |
||||||
|
<div class="cabinet-card__label"> |
||||||
|
<form class="email_link_form"> |
||||||
|
<input type="hidden" name="action" value="email_link"> |
||||||
|
<div class="cabinet-card_linked-email"> |
||||||
|
<input class="form__input" type="text" name="email" placeholder="example@example.com" required> |
||||||
|
</div> |
||||||
|
<button class="cabinet-card__confirm" type="submit">{{ function('pll_e', 'Link email') }}</button> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="cabinet-card__element"> |
||||||
|
<p class="cabinet-card__label">{{ function('pll_e', 'Linked accounts') }}:</p> |
||||||
|
<p class="cabinet-card__text cabinet-accounts"> |
||||||
|
{% if tg_account %} |
||||||
|
<svg width="40px" height="40px" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid"> |
||||||
|
<g> |
||||||
|
<path d="M128,0 C57.307,0 0,57.307 0,128 L0,128 C0,198.693 57.307,256 128,256 L128,256 C198.693,256 256,198.693 256,128 L256,128 C256,57.307 198.693,0 128,0 L128,0 Z" fill="#40B3E0"></path> |
||||||
|
<path d="M190.2826,73.6308 L167.4206,188.8978 C167.4206,188.8978 164.2236,196.8918 155.4306,193.0548 L102.6726,152.6068 L83.4886,143.3348 L51.1946,132.4628 C51.1946,132.4628 46.2386,130.7048 45.7586,126.8678 C45.2796,123.0308 51.3546,120.9528 51.3546,120.9528 L179.7306,70.5928 C179.7306,70.5928 190.2826,65.9568 190.2826,73.6308" fill="#FFFFFF"></path> |
||||||
|
<path d="M98.6178,187.6035 C98.6178,187.6035 97.0778,187.4595 95.1588,181.3835 C93.2408,175.3085 83.4888,143.3345 83.4888,143.3345 L161.0258,94.0945 C161.0258,94.0945 165.5028,91.3765 165.3428,94.0945 C165.3428,94.0945 166.1418,94.5735 163.7438,96.8115 C161.3458,99.0505 102.8328,151.6475 102.8328,151.6475" fill="#D2E5F1"></path> |
||||||
|
<path d="M122.9015,168.1154 L102.0335,187.1414 C102.0335,187.1414 100.4025,188.3794 98.6175,187.6034 L102.6135,152.2624" fill="#B5CFE4"></path> |
||||||
|
</g> |
||||||
|
</svg> |
||||||
|
{% else %} |
||||||
|
<script async src="https://telegram.org/js/telegram-widget.js?2" data-telegram-login="{{ bot_username }}" data-size="large" data-onauth="linkTelegram(user)"></script> |
||||||
|
{% endif %} |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="cabinet-card__element"> |
||||||
|
<div class="cabinet-card__block-buttons"> |
||||||
|
<button class="cabinet-card__button user-edit-open">{{ function('pll_e', 'Edit') }}</button> |
||||||
|
<a href="{{ fn('wp_logout_url', fn('home_url')) }}" class="cabinet-card__button">{{ function('pll_e', 'Logout') }}</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
{% if pets %} |
||||||
|
{% for pet in pets %} |
||||||
|
{% include 'pet-card.twig' with { 'item': pet } %} |
||||||
|
{% endfor %} |
||||||
|
{% endif %} |
||||||
|
|
||||||
|
<div class="cabinet-card cabinet-card--green"> |
||||||
|
<div class="cabinet-card__content"> |
||||||
|
<button class="cabinet-card__block-add-pets form-open" data-form="form-pet"> |
||||||
|
<div class="cabinet-card-add-pets__circle"> |
||||||
|
<img src="{{ theme.link }}/static/img/svg/main/plus-grey.svg" alt=""> |
||||||
|
</div> |
||||||
|
<p class="cabinet-card-add-pets__text">{{ function('pll_e', 'Add a pet') }}</p> |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
{% block profile_content %} |
||||||
|
|
||||||
|
{% endblock %} |
||||||
|
|
||||||
|
|
||||||
|
</main> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="modalProfile" id="pet_add_form"> |
||||||
|
<div class="popup-wrap"> |
||||||
|
<div class="modal-form form__full-mobile modal-form--white modal-form--height-100-phone form-pet active"> |
||||||
|
<button class="modal-form__close"></button> |
||||||
|
<p class="modal-form__title">{{ fn('pll_e', 'Добавить питомца') }}</p> |
||||||
|
|
||||||
|
<form class="modal-form__content" id="add-pet-form" method="post" action=""> |
||||||
|
<input type="hidden" name="nonce" value="{{ fn('wp_create_nonce', 'add_pet_nonce') }}"> |
||||||
|
<input type="hidden" name="action" value="add_pet"> |
||||||
|
<div class="modal-form-content__line"> |
||||||
|
<label for="" class="label-name">{{ fn('pll_e', 'Вид животного') }}</label> |
||||||
|
<div class="form-input__tabs"> |
||||||
|
<label for="pet_type_cat" class="form-input-tabs__button active"> |
||||||
|
{{ fn('pll_e', 'Кошка') }} |
||||||
|
<input type="radio" value="cat" checked name="pet" id="pet_type_cat" class="form-input-tabs__input"> |
||||||
|
</label> |
||||||
|
<label for="pet_type_dog" class="form-input-tabs__button"> |
||||||
|
{{ fn('pll_e', 'Собака') }} |
||||||
|
<input type="radio" value="dog" name="pet" id="pet_type_dog" class="form-input-tabs__input"> |
||||||
|
</label> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-form-content__line sterilized"> |
||||||
|
<label for="" class="label-name">{{ fn('pll_e', 'Стерелизован') }}</label> |
||||||
|
<div class="form-input__tabs"> |
||||||
|
<label for="sterilized_yes" class="form-input-tabs__button active"> |
||||||
|
{{ fn('pll_e', 'Да') }} |
||||||
|
<input type="radio" value="1" checked name="sterilized" id="sterilized_yes" class="form-input-tabs__input"> |
||||||
|
</label> |
||||||
|
<label for="sterilized_no" class="form-input-tabs__button"> |
||||||
|
{{ fn('pll_e', 'Нет') }} |
||||||
|
<input type="radio" value="0" name="sterilized" id="sterilized_no" class="form-input-tabs__input"> |
||||||
|
</label> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-form-content__line"> |
||||||
|
<div class="modal-form-content-line__element"> |
||||||
|
<label for="pet_name" class="label-name">{{ fn('pll_e', 'Имя') }}</label> |
||||||
|
<input id="pet_name" class="form__input" type="text" name="name" placeholder="{{ fn('pll_e', 'Имя питомца') }}" required> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-form-content__line"> |
||||||
|
<div class="modal-form-content-line__element"> |
||||||
|
<label for="pet_breed" class="label-name">{{ fn('pll_e', 'Порода') }}</label> |
||||||
|
<input id="pet_breed" class="form__input" type="text" name="breed" placeholder="{{ fn('pll_e', 'Порода вашего питомца') }}" required> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-form-content__line"> |
||||||
|
<label for="" class="label-name">{{ fn('pll_e', 'Пол вашего питомца') }}</label> |
||||||
|
<div class="form-input__tabs"> |
||||||
|
<label for="pet_sex_male" class="form-input-tabs__button active"> |
||||||
|
{{ fn('pll_e', 'Мальчик') }} |
||||||
|
<input type="radio" value="male" checked name="sex" id="pet_sex_male" class="form-input-tabs__input"> |
||||||
|
</label> |
||||||
|
<label for="pet_sex_female" class="form-input-tabs__button"> |
||||||
|
{{ fn('pll_e', 'Девочка') }} |
||||||
|
<input type="radio" value="female" name="sex" id="pet_sex_female" class="form-input-tabs__input"> |
||||||
|
</label> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-form-content__line modal-form-content__line--two"> |
||||||
|
<div class="modal-form-content-line__element"> |
||||||
|
<label class="label-name">{{ fn('pll_e', 'Вид активности') }}</label> |
||||||
|
<div class="form-input__list"> |
||||||
|
<div class="form-input-list__input">{{ fn('pll_e', 'Выберите из списка') }}</div> |
||||||
|
<div class="form-input-list__block-content" style="height: 0px;"> |
||||||
|
<div class="form-input-list__content"> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Низкая') }}</p> |
||||||
|
<input type="radio" required name="activity" value="low" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Средняя') }}</p> |
||||||
|
<input type="radio" required name="activity" value="moderate" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Высокая') }}</p> |
||||||
|
<input type="radio" required name="activity" value="high" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-form-content-line__element"> |
||||||
|
<label for="pet_weight" class="label-name">{{ fn('pll_e', 'Вес') }}</label> |
||||||
|
<div class="form-input__list"> |
||||||
|
<div class="form-input-list__input">{{ fn('pll_e', 'Выберите из списка') }}</div> |
||||||
|
<div class="form-input-list__block-content" style="height: 0px;"> |
||||||
|
<div class="form-input-list__content"> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', '1-1.5 кг') }}</p> |
||||||
|
<input type="radio" required name="weight" value="below_1_5" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', '1.5-3 кг') }}</p> |
||||||
|
<input type="radio" required name="weight" value="1_5-3" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', '3-5 кг') }}</p> |
||||||
|
<input type="radio" required name="weight" value="3-5" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', '5-8 кг') }}</p> |
||||||
|
<input type="radio" required name="weight" value="5-8" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', '8-11 кг') }}</p> |
||||||
|
<input type="radio" required name="weight" value="8-11" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', '11-15 кг') }}</p> |
||||||
|
<input type="radio" required name="weight" value="11-15" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', '10-20кг') }}</p> |
||||||
|
<input type="radio" required name="weight" value="15-20" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', '20-25кг') }}</p> |
||||||
|
<input type="radio" required name="weight" value="20-25" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', '25-35 кг') }}</p> |
||||||
|
<input type="radio" required name="weight" value="25-35" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Более 35 кг') }}</p> |
||||||
|
<input type="radio" required name="weight" value="more_35" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="rm"> |
||||||
|
<div class="modal-form-content__line"> |
||||||
|
<label class="label-name">{{ fn('pll_e', 'Возраст питомца') }}</label> |
||||||
|
<div class="form-input__tabs form-input__remote-control" data-content="modal__age"> |
||||||
|
<label for="age_type_exemplary" class="form-input-tabs__button active" data-rm="0"> |
||||||
|
{{ fn('pll_e', 'Примерный') }} |
||||||
|
<input type="radio" checked value="ex" name="old_type" required id="age_type_exemplary" class="form-input-tabs__input"> |
||||||
|
</label> |
||||||
|
<label for="age_type_accurate" class="form-input-tabs__button" data-rm="1"> |
||||||
|
{{ fn('pll_e', 'Точный') }} |
||||||
|
<input type="radio" value="acc" name="old_type" required id="age_type_accurate" class="form-input-tabs__input"> |
||||||
|
</label> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal__age"> |
||||||
|
<!-- Approximate age selection --> |
||||||
|
<div class="form-input__radio remote-control__item active" data-rmcont="0"> |
||||||
|
<label class="form-input-radio__item active"> |
||||||
|
<input type="radio" name="old" value="baby" checked class="v-hidden"> |
||||||
|
<div class="form-input-radio__circle"> |
||||||
|
<div class="form-input-radio-circle__content"></div> |
||||||
|
</div> |
||||||
|
<p class="form-input-radio__title">{{ fn('pll_e', 'Малыш') }} <span>{{ fn('pll_e', '(от 0 до 1 года)') }}</span></p> |
||||||
|
</label> |
||||||
|
<label class="form-input-radio__item"> |
||||||
|
<input type="radio" name="old" value="normal" class="v-hidden"> |
||||||
|
<div class="form-input-radio__circle"> |
||||||
|
<div class="form-input-radio-circle__content"></div> |
||||||
|
</div> |
||||||
|
<p class="form-input-radio__title">{{ fn('pll_e', 'Взрослый') }} <span>{{ fn('pll_e', '(от 1 года до 7 лет)') }}</span></p> |
||||||
|
</label> |
||||||
|
<label class="form-input-radio__item"> |
||||||
|
<input type="radio" name="old" value="old" class="v-hidden"> |
||||||
|
<div class="form-input-radio__circle"> |
||||||
|
<div class="form-input-radio-circle__content"></div> |
||||||
|
</div> |
||||||
|
<p class="form-input-radio__title">{{ fn('pll_e', 'Пожилой') }} <span>{{ fn('pll_e', '(от 7 до 12 лет)') }}</span></p> |
||||||
|
</label> |
||||||
|
<label class="form-input-radio__item"> |
||||||
|
<input type="radio" name="old" value="very_old" class="v-hidden"> |
||||||
|
<div class="form-input-radio__circle"> |
||||||
|
<div class="form-input-radio-circle__content"></div> |
||||||
|
</div> |
||||||
|
<p class="form-input-radio__title">{{ fn('pll_e', 'Стареющий') }} <span>{{ fn('pll_e', '(от 12 лет и старше)') }}</span></p> |
||||||
|
</label> |
||||||
|
</div> |
||||||
|
|
||||||
|
<!-- Exact age selection --> |
||||||
|
<div data-rmcont="1" class="modal-form-content__line remote-control__item modal-form-content__line--three modal-form-content__line--margin-top-16"> |
||||||
|
<div class="modal-form-content-line__element"> |
||||||
|
<label for="pet_day" class="label-name">{{ fn('pll_e', 'День') }}</label> |
||||||
|
<input id="pet_day" class="form__input form__input--center" maxlength="2" type="text" name="day" placeholder="{{ fn('pll_e', 'ДД') }}"> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-form-content-line__element"> |
||||||
|
<label for="pet_month" class="label-name">{{ fn('pll_e', 'Месяц') }}</label> |
||||||
|
<div class="form-input__list"> |
||||||
|
<div class="form-input-list__input">{{ fn('pll_e', 'Месяц') }}</div> |
||||||
|
<div class="form-input-list__block-content"> |
||||||
|
<div class="form-input-list__content"> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Январь') }}</p> |
||||||
|
<input type="radio" name="month" value="1" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Февраль') }}</p> |
||||||
|
<input type="radio" name="month" value="2" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Март') }}</p> |
||||||
|
<input type="radio" name="month" value="3" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Апрель') }}</p> |
||||||
|
<input type="radio" name="month" value="4" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Май') }}</p> |
||||||
|
<input type="radio" name="month" value="5" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Июнь') }}</p> |
||||||
|
<input type="radio" name="month" value="6" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Июль') }}</p> |
||||||
|
<input type="radio" name="month" value="7" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Август') }}</p> |
||||||
|
<input type="radio" name="month" value="8" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Сентябрь') }}</p> |
||||||
|
<input type="radio" name="month" value="9" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Октябрь') }}</p> |
||||||
|
<input type="radio" name="month" value="10" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Ноябрь') }}</p> |
||||||
|
<input type="radio" name="month" value="11" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
<label class="form-input-list__item"> |
||||||
|
<p class="form-input-list-item__text">{{ fn('pll_e', 'Декабрь') }}</p> |
||||||
|
<input type="radio" name="month" value="12" class="v-hidden"> |
||||||
|
<div class="form-input-list-item__box"> |
||||||
|
<div class="form-input-list-item-box__content"> |
||||||
|
<img src="{{ theme.link }}/gp-include/assets/lk/img/svg/main/arrow-selected-white.svg" alt=""> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</label> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-form-content-line__element"> |
||||||
|
<label for="pet_year" class="label-name">{{ fn('pll_e', 'Год') }}</label> |
||||||
|
<input id="pet_year" class="form__input form__input--center" maxlength="4" type="text" name="year" placeholder="{{ fn('pll_e', 'ГГГГ') }}"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-form__buttons"> |
||||||
|
<button class="button button--gradient button--high button--100-perc" type="submit">{{ fn('pll_e', 'Добавить') }}</button> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modalProfile" id="subForm"> |
||||||
|
<div class="popup-wrap"> |
||||||
|
<div class="modal-form modal__notification modal-form--green-gradient modal-form--width-584 form-sub active"> |
||||||
|
<button class="modal-form__close modal-form__close--white"></button> |
||||||
|
<p class="modal-form__title modal-form__title--white">{{ fn('pll_e', 'Подписка на корм') }}</p> |
||||||
|
|
||||||
|
<div class="modal-form__element modal-form__element--top-40"> |
||||||
|
<p class="modal-form__text modal-form__text--white"> |
||||||
|
{{ fn('pll_e', 'Спасибо за интерес к нашему новому виду услуг, данная функция находится в разработке, если вы хотите узнать первыми о запуске подпишитесь на рассылку.') }} |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
|
||||||
|
<form class="modal-form__element modal-form__element--top-40 foodSub"> |
||||||
|
<input type="hidden" name="email" value="{{ user.user_email }}"> |
||||||
|
<input type="hidden" name="action" value="subscription_sub__profile"> |
||||||
|
<button class="button form__button-pc button--white button--100-perc open-overlay button--high"> |
||||||
|
{{ fn('pll_e', 'Хочу попробовать первым!') }} |
||||||
|
</button> |
||||||
|
<button class="button form__button-mobile button--white button--100-perc open-overlay button--high"> |
||||||
|
{{ fn('pll_e', 'Хочу быть первым!') }} |
||||||
|
</button> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="modalProfile" id="user_edit"> |
||||||
|
<div class="popup-wrap"> |
||||||
|
<div class="modal-form form__full-mobile modal-form--white modal-form--height-100-phone form-data active"> |
||||||
|
<button class="modal-form__close"></button> |
||||||
|
<p class="modal-form__title">{{ fn('pll_e', 'Изменить мои данные') }}</p> |
||||||
|
|
||||||
|
<form class="modal-form__content user-edit-form" method="post"> |
||||||
|
<input type="hidden" name="action" value="edit_user"> |
||||||
|
<div class="modal-form-content__line modal-form-content__line--two"> |
||||||
|
<div class="modal-form-content-line__element"> |
||||||
|
<label for="user_firstname" class="label-name">{{ fn('pll_e', 'Имя') }}</label> |
||||||
|
<input id="user_firstname" class="form__input" type="text" value="{{ user.user_firstname }}" name="name" placeholder="{{ fn('pll_e', 'Ваше имя') }}" required> |
||||||
|
<span class="form-input__error form-input__error--absolute">{{ fn('pll_e', 'Имя введено неверно') }}</span> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-form-content-line__element"> |
||||||
|
<label for="user_lastname" class="label-name">{{ fn('pll_e', 'Фамилия') }}</label> |
||||||
|
<input id="user_lastname" class="form__input" type="text" value="{{ user.user_lastname }}" name="l_name" placeholder="{{ fn('pll_e', 'Ваша фамилия') }}" required> |
||||||
|
<span class="form-input__error form-input__error--absolute">{{ fn('pll_e', 'Фамилия введена неверно') }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-form-content__line"> |
||||||
|
<label class="label-name">{{ fn('pll_e', 'Телефон') }}</label> |
||||||
|
<div class="form-input__phone"> |
||||||
|
<input type="text" placeholder="___ ___ ____" id="user_phone" value="{{ fn('get_user_meta', user.ID, 'billing_phone', true) }}" name="phone" class="form-input-phone__input" required> |
||||||
|
<div class="form-input__error form-input__error--absolute">{{ fn('pll_e', 'Номер введён неверно') }}</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="modal-form__buttons modal-form__buttons--two"> |
||||||
|
<button class="button button--gradient button--high" type="submit">{{ fn('pll_e', 'Сохранить') }}</button> |
||||||
|
<input type="reset" class="button button--white open-overlay button--high modal-form__button-close" value="{{ fn('pll_e', 'Отмена') }}"> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
@ -0,0 +1,106 @@ |
|||||||
|
{% extends 'profile/profile-base.twig' %} |
||||||
|
|
||||||
|
{% block profile_content%} |
||||||
|
<div class="cabinet__orders cabinet-content {% if fn('is_wc_endpoint_url') %}active hide{% endif %}"> |
||||||
|
<div class="cabinet-card cabinet-card--green-white cabinet__subscription-pc"> |
||||||
|
<div class="cabinet-card__content"> |
||||||
|
<p class="cabinet-card__title">{{ function('pll_e', 'Feed subscription') }}</p> |
||||||
|
<div class="cabinet-card__element"> |
||||||
|
<p class="cabinet-card__text">{{ function('pll_e', 'Weekly food delivery for your pet') }}</p> |
||||||
|
</div> |
||||||
|
<div class="cabinet-card__element"> |
||||||
|
<button class="button button--gradient button--high-46 form-sub__btn">{{ function('pll_e', 'Get details') }}</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% if customer_orders %} |
||||||
|
{% for order in customer_orders %} |
||||||
|
{% set meta_data = order.meta_data.order_data %} |
||||||
|
{% set shipping_address = order.get_address('shipping') %} |
||||||
|
<div class="cabinet-card cabinet-card--grey"> |
||||||
|
<div class="cabinet-card__content"> |
||||||
|
<div class="cabinet-card__order"> |
||||||
|
<div class="cabinet-card-order__header"> |
||||||
|
<div class="cabinet-card-order__main"> |
||||||
|
<p class="cabinet-card-order-main__date">{{ function('pll_e', 'Order from') }} {{ order.date_created|date('Y.m.d') }}</p> |
||||||
|
<p class="cabinet-card-order-main__number">{{ order.id }}</p> |
||||||
|
</div> |
||||||
|
<div class="cabinet-card-order__payment"> |
||||||
|
<p class="cabinet-card-order-payment__title">{{ function('pll_e', 'Summary') }}:</p> |
||||||
|
<p class="cabinet-card-order-payment__price">{{ order.get_total() }}</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="cabinet-card-order__bottom"> |
||||||
|
<div class="cabinet-card-order__content"> |
||||||
|
{% set order_track = meta_data.order_number|default('') %} |
||||||
|
<div class="cabinet-card-order__block-detail"> |
||||||
|
<div class="cabinet-card-order__detail"> |
||||||
|
<div class="cabinet-card-order-detail__address"> |
||||||
|
<p class="cabinet-card-order-detail-address__title">{{ function('pll_e', 'Delivery address') }}</p> |
||||||
|
<p class="cabinet-card-order-detail-address__text"> |
||||||
|
{% if meta_data.office_code %} |
||||||
|
{{ function('pll_e', 'CDEK shipping point') }}<br> |
||||||
|
{{ office_name }} |
||||||
|
{% else %} |
||||||
|
{{ shipping_address.city }} {{ shipping_address.address_1 }} |
||||||
|
{% endif %} |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
<div class="cabinet-card-order-detail__main"> |
||||||
|
<div class="cabinet-card-order-detail-main__products"> |
||||||
|
{% for item in order.get_items %} |
||||||
|
{% set product = item.get_product %} |
||||||
|
{% set thumbnail = product ? function('wp_get_attachment_image_url', product.get_image_id(), 'woocommerce_thumbnail') : function('wc_placeholder_img_src', 'woocommerce_thumbnail') %} |
||||||
|
<div class="cabinet-card-order-detail-main__product"> |
||||||
|
<img src="{{ thumbnail }}" alt="" class="cabinet-card-order-detail-main-product__img"> |
||||||
|
<div class="cabinet-card-order-detail-main-product__content"> |
||||||
|
<div class="cabinet-card-order-detail-main-product__description"> |
||||||
|
<p class="cabinet-card-order-detail-main-product-description__what">{{ item.name }}</p> |
||||||
|
</div> |
||||||
|
<p class="cabinet-card-order-detail-main-product__count">{{ item.quantity }}</p> |
||||||
|
<p class="cabinet-card-order-detail-main-product__price">{{ item.total }} {{ function('get_woocommerce_currency_symbol', code) }}</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% endfor %} |
||||||
|
</div> |
||||||
|
<div class="cabinet-card-order-detail-main__links"> |
||||||
|
{% if order_track %} |
||||||
|
<a href="https://www.cdek.ru/ru/tracking/?order_id={{ order_track }}" target="_blank" class="cabinet-card__button cabinet-card-order-detail-main__link"> |
||||||
|
{{ function('pll_e', 'Track order') }} |
||||||
|
</a> |
||||||
|
{% endif %} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<button class="cabinet-card-order__open-detail">{{ function('pll_e', 'Order details') }}</button> |
||||||
|
</div> |
||||||
|
<div class="cabinet-card-order__detail-short"> |
||||||
|
{% for item in order.get_items %} |
||||||
|
{% set product = item.get_product %} |
||||||
|
{% set thumbnail = product ? function('wp_get_attachment_image_url', product.get_image_id(), 'woocommerce_thumbnail') : function('wc_placeholder_img_src', 'woocommerce_thumbnail') %} |
||||||
|
{% if thumbnail %} |
||||||
|
<a href="{{ product.permalink }}"><img src="{{ thumbnail }}" alt="" class="cabinet-card-order-detail-short__item"></a> |
||||||
|
{% endif %} |
||||||
|
{% endfor %} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% endfor %} |
||||||
|
{% else %} |
||||||
|
<div class="cabinet-card__no-orders"> |
||||||
|
<div class="cabinet-card-no-orders__element"> |
||||||
|
<p class="cabinet-card-no-orders__title">{{ function('pll_e', 'No orders yet') }}</p> |
||||||
|
</div> |
||||||
|
<div class="cabinet-card-no-orders__element"> |
||||||
|
<a href="/shop/" class="to-know button--100-perc to-know--background-none"> |
||||||
|
<p>{{ function('pll_e', 'Catalog') }}</p> |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% endblock %} |
@ -0,0 +1,133 @@ |
|||||||
|
{% extends 'profile/profile-base.twig' %} |
||||||
|
|
||||||
|
{% block profile_content %} |
||||||
|
|
||||||
|
<div class="cabinet__orders cabinet__orders--no-cab cabinet-content active hide"> |
||||||
|
{% if subscription %} |
||||||
|
<div class="cabinet-card cabinet-card--grey"> |
||||||
|
<div class="cabinet-card__content"> |
||||||
|
<div class="cabinet-card__order"> |
||||||
|
<div class="cabinet-card-order__header"> |
||||||
|
<div class="cabinet-card-order__main"> |
||||||
|
<p class="cabinet-card-order-main__date"> |
||||||
|
{{ fn('pll_e', 'Подписка №') }} {{ subscription.id }} |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="subscription"> |
||||||
|
<div class="subscription__item"> |
||||||
|
<p>{{ fn('pll_e', 'Статус') }}</p> |
||||||
|
<p class="subscription__status--end">{{ subscription.status | capitalize }}</p> |
||||||
|
</div> |
||||||
|
<div class="subscription__item"> |
||||||
|
<p>{{ fn('pll_e', 'Дата подписки') }}</p> |
||||||
|
<p>{{ subscription.date_created | date('d.m.Y') }}</p> |
||||||
|
</div> |
||||||
|
<div class="subscription__item"> |
||||||
|
<p>{{ fn('pll_e', 'Дата последнего заказа') }}</p> |
||||||
|
<p>{{ subscription.last_order_date | date('d.m.Y') }}</p> |
||||||
|
</div> |
||||||
|
<div class="subscription__item"> |
||||||
|
<p>{{ fn('pll_e', 'Следующий платеж') }}</p> |
||||||
|
<p>{{ subscription.next_payment_date | date('d.m.Y')}}</p> |
||||||
|
</div> |
||||||
|
<div class="subscription__item"> |
||||||
|
<p>{{ fn('pll_e', 'Способ оплаты') }}</p> |
||||||
|
<p>{{ subscription.payment_method_title}}</p> |
||||||
|
</div> |
||||||
|
<div class="subscription__item"> |
||||||
|
<div class="subscription__add"> |
||||||
|
<div class="subscription__add-header"> |
||||||
|
<p class="subscription__add-title">{{ fn('pll_e', 'Товары:') }}</p> |
||||||
|
</div> |
||||||
|
<div class="subscription__add-content"> |
||||||
|
{% for item in subscription.items %} |
||||||
|
{% set product = item.product %} |
||||||
|
{% set image_id = product.image_id %} |
||||||
|
{% set product_permalink = product.id ? fn('get_permalink', product.id) : '' %} |
||||||
|
{# Debug: Display product ID and permalink for testing #} |
||||||
|
<p class="debug-info" style="display: none;">Product ID: {{ product.id | default('null') }} | Permalink: {{ product_permalink | default('none') }}</p> |
||||||
|
<div class="cabinet-card-order-detail-main__product subscription__add-product"> |
||||||
|
{% if product.id and product_permalink and product_permalink != fn('get_permalink', fn('get_the_ID')) %} |
||||||
|
<a href="{{ product_permalink }}"> |
||||||
|
<img src="{{ image_id | wp_get_attachment_image_src('thumbnail') | default('assets/img/product/mini-card.png') }}" |
||||||
|
alt="{{ product.name }}" |
||||||
|
class="cabinet-card-order-detail-main-product__img"> |
||||||
|
</a> |
||||||
|
{% else %} |
||||||
|
<img src="{{ image_id | wp_get_attachment_image_src('thumbnail') | default('assets/img/product/mini-card.png') }}" |
||||||
|
alt="{{ product.name }}" |
||||||
|
class="cabinet-card-order-detail-main-product__img"> |
||||||
|
{% endif %} |
||||||
|
<div class="cabinet-card-order-detail-main-product__description"> |
||||||
|
<p class="cabinet-card-order-detail-main-product-description__what">{{ product.name }}</p> |
||||||
|
<p class="cabinet-card-order-detail-main-product-description__with-what">{{ product.variation_details | default('') }}</p> |
||||||
|
</div> |
||||||
|
<div class="cabinet-card-order-detail-main-product__content"> |
||||||
|
<p class="cabinet-card-order-detail-main-product__count">{{ item.quantity }}</p> |
||||||
|
<p class="cabinet-card-order-detail-main-product__price">{{ item.total }}</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% endfor %} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="subscription__item"> |
||||||
|
<p>{{ fn('pll_e', 'Сумма') }}</p> |
||||||
|
<p><span>{{ subscription.total }} {{ subscription.currency }} <small>/ {{ fn('pll_e', 'месяц') }}</small></span></p> |
||||||
|
</div> |
||||||
|
<div class="subscription__item"> |
||||||
|
<p>{{ fn('pll_e', 'Доставка') }}</p> |
||||||
|
<p>{{ fn('pll_e', 'Бесплатно') }}</p> |
||||||
|
</div> |
||||||
|
<div class="subscription__item"> |
||||||
|
<p>{{ fn('pll_e', 'Итого') }}</p> |
||||||
|
<p><span>{{ subscription.total }} {{ subscription.currency }} <small>/ {{ fn('pll_e', 'месяц') }}</small></span></p> |
||||||
|
</div> |
||||||
|
<div class="subscription__item"> |
||||||
|
<div class="subscription__add"> |
||||||
|
<div class="subscription__add-header"> |
||||||
|
<p class="subscription__add-title">{{ fn('pll_e', 'Доставка:') }}</p> |
||||||
|
</div> |
||||||
|
<div class="subscription__add-content" data-js-tabs=""> |
||||||
|
<form action="" method="post" class="subscription-address-form" data-subscription-id="{{ subscription.id }}"> |
||||||
|
<div class="modal-form-content__line"> |
||||||
|
<div class="modal-form-content-line__element"> |
||||||
|
<label for="delivery_address" class="label-name modal-form-content-line__element--arrow">{{ fn('pll_e', 'Адрес доставки') }}</label> |
||||||
|
<input id="delivery_address" class="form__input form-open" type="text" name="address" value="{{ subscription.shipping_address | striptags | default('') }}" placeholder="{{ fn('pll_e', 'Начните вводить адрес') }}" required data-form="form-data"> |
||||||
|
<span class="form-input__error form-input__error--absolute">{{ fn('pll_e', 'Адрес введен неверно') }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="modal-form-content__line"> |
||||||
|
<div class="modal-form-content-line__element"> |
||||||
|
<label for="delivery_comment" class="label-name">{{ fn('pll_e', 'Комментарий для доставки') }}</label> |
||||||
|
<textarea id="delivery_comment" class="form__input form__input--textarea-72" name="comment" placeholder="{{ fn('pll_e', 'Для службы доставки') }}">{{ subscription.shipping_comment | default('') }}</textarea> |
||||||
|
<span class="form-input__error form-input__error--absolute">{{ fn('pll_e', 'Комментарий введен неверно') }}</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<input type="hidden" name="subscription_id" value="{{ subscription.id }}"> |
||||||
|
<input type="hidden" name="address_nonce" value="{{ fn('wp_create_nonce', 'update_subscription_address') }}"> |
||||||
|
<div class="modal-form-content__line"> |
||||||
|
<button type="submit" style="width: 100%;" class="button button--gradient button--high-46">{{ fn('pll_e', 'Сохранить') }}</button> |
||||||
|
</div> |
||||||
|
<div class="form-message" style="display: none;"></div> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<a href="{{ subscription.cancel_url }}" class="to-know to-know--start button--100-perc to-know--background-none"> |
||||||
|
<p>{{ fn('pll_e', 'Отменить подписку') }}</p> |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% else %} |
||||||
|
<div class="cabinet-card-no-orders__element"> |
||||||
|
<p>{{ fn('pll_e', 'Подписка не найдена.') }}</p> |
||||||
|
</div> |
||||||
|
{% endif %} |
||||||
|
</div> |
||||||
|
{% endblock %} |
@ -0,0 +1,78 @@ |
|||||||
|
{% extends 'profile/profile-base.twig' %} |
||||||
|
|
||||||
|
{% block profile_content %} |
||||||
|
<div class="cabinet__orders cabinet__orders--no-cab cabinet-content active hide"> |
||||||
|
{% for subscription in subscriptions %} |
||||||
|
<div class="cabinet-card cabinet-card--grey"> |
||||||
|
<div class="cabinet-card__content"> |
||||||
|
<div class="cabinet-card__order"> |
||||||
|
<div class="cabinet-card-order__header"> |
||||||
|
<div class="cabinet-card-order__main"> |
||||||
|
<p class="cabinet-card-order-main__date"> |
||||||
|
{% if subscription.view_url %} |
||||||
|
<a href="{{ subscription.view_url }}">{{ fn('pll_e', 'Подписка от') }} {{ subscription.date_created | date('d.m.Y') }}</a> |
||||||
|
{% else %} |
||||||
|
{{ fn('pll_e', 'Подписка от') }} {{ subscription.date_created | date('d.m.Y') }} |
||||||
|
{% endif %} |
||||||
|
</p> |
||||||
|
<p class="cabinet-card-order-main__number"> |
||||||
|
{{ subscription.id }} |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
<div class="cabinet-card-order__payment"> |
||||||
|
<p class="cabinet-card-order-payment__title">{{ fn('pll_e', 'Сумма:') }}</p> |
||||||
|
<p class="cabinet-card-order-payment__price cabinet-card-order-payment__price--add"> |
||||||
|
{{ subscription.total }} {{ subscription.currency }} <span>/ {{ subscription.billing_period }}</span> |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="cabinet-card-order__content"> |
||||||
|
<div class="cabinet-card-order__payment-add"> |
||||||
|
<p class="cabinet-card-order__sub-title"> |
||||||
|
{{ fn('pll_e', 'Следующий платеж:') }} |
||||||
|
</p> |
||||||
|
<p class="cabinet-card-order__date"> |
||||||
|
{{ subscription.next_payment_date | date('d.m.Y') }} |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="cabinet-card-order__detail-short mt-m-3"> |
||||||
|
{% for item in subscription.items %} |
||||||
|
{% set product = item.product %} |
||||||
|
{% set image_id = product.image_id %} |
||||||
|
{% if product.permalink %} |
||||||
|
<a href="{{ product.permalink }}"> |
||||||
|
<img src="{{ image_id | wp_get_attachment_image_src('thumbnail') | default('assets/img/product/mini-card.png') }}" |
||||||
|
alt="{{ product.name }}" |
||||||
|
class="cabinet-card-order-detail-short__item"> |
||||||
|
</a> |
||||||
|
{% else %} |
||||||
|
<img src="{{ image_id | wp_get_attachment_image_src('thumbnail') | default('assets/img/product/mini-card.png') }}" |
||||||
|
alt="{{ product.name }}" |
||||||
|
class="cabinet-card-order-detail-short__item"> |
||||||
|
{% endif %} |
||||||
|
{% endfor %} |
||||||
|
</div> |
||||||
|
<div class="cabinet-card-order__link"> |
||||||
|
{% if subscription.view_url %} |
||||||
|
<a href="{{ subscription.view_url }}" class="to-know to-know--start button--100-perc to-know--background-none"> |
||||||
|
<p>{{ fn('pll_e', 'Детали подписки') }}</p> |
||||||
|
</a> |
||||||
|
{% else %} |
||||||
|
<p class="to-know to-know--start button--100-perc to-know--background-none disabled"> |
||||||
|
{{ fn('pll_e', 'Детали недоступны') }} |
||||||
|
</p> |
||||||
|
{% endif %} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% else %} |
||||||
|
<p>{{ fn('pll_e', 'У вас нет активных подписок.') }}</p> |
||||||
|
{% endfor %} |
||||||
|
</div> |
||||||
|
{% endblock %} |
Loading…
Reference in new issue