parent
2891d78fd2
commit
5afe066576
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
|
||||
$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