2 Commits
1.2.0 ... 1.4.0

Author SHA1 Message Date
b304c89698 offer, footer and settings 2026-04-21 01:01:06 +05:00
3d851a2087 mobile fixes 2026-04-20 22:21:07 +05:00
22 changed files with 394 additions and 279 deletions

View File

@@ -209,7 +209,7 @@ final class index extends core
'marketplace' => 'Маркетплейс, магазин, витрина',
'saas' => 'SaaS проект',
'search' => 'Поиск и анализ',
'calculate' => 'Автоматизированное вычисление (калькулятор)',
'calculate' => 'Вычисления (калькулятор)',
'individual' => 'Индивидуальная разработка',
],
'integrations' => [
@@ -229,22 +229,6 @@ final class index extends core
]
];
// Initializing contacts data
$this->view->contacts = [
'sim' => [
'requests' => [
'full' => PROJECT_CONTACTS_SIM_REQUESTS ?? 'Ошибка',
'country' => PROJECT_CONTACTS_SIM_REQUESTS_COUNTRY ?? 'Ошибка',
'operator' => PROJECT_CONTACTS_SIM_REQUESTS_OPERATOR ?? 'Ошибка',
'number' => [
PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_1 ?? 'Ошибка',
PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_2 ?? 'Ошибка',
PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_3 ?? 'Ошибка'
]
]
]
];
// Initializing contacts data
$this->view->integrations = [
'Вайлдберриз' => 'wildberries',

View File

@@ -44,22 +44,6 @@ final class offer extends core
if (str_contains($this->request->headers['accept'] ?? '', content::html->value)) {
// Request for HTML response
// Initializing contacts data
$this->view->contacts = [
'sim' => [
'requests' => [
'full' => PROJECT_CONTACTS_SIM_REQUESTS ?? 'Ошибка',
'country' => PROJECT_CONTACTS_SIM_REQUESTS_COUNTRY ?? 'Ошибка',
'operator' => PROJECT_CONTACTS_SIM_REQUESTS_OPERATOR ?? 'Ошибка',
'number' => [
PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_1 ?? 'Ошибка',
PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_2 ?? 'Ошибка',
PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_3 ?? 'Ошибка'
]
]
]
];
// Render page
$page = $this->view->render(
'main/offer.html',

View File

@@ -83,14 +83,14 @@ final class project extends core
$mail->setLanguage('ru');
$mail->CharSet = mail::CHARSET_UTF8;
$mail->isSMTP();
$mail->Host = MAIL_SERVER['host'];
$mail->Host = MAIL['host'];
$mail->SMTPAuth = true;
$mail->Username = MAIL_SERVER['sender']['mail'];
$mail->Password = MAIL_SERVER['password'];
$mail->Username = MAIL['sender']['mail'];
$mail->Password = MAIL['sender']['password'];
$mail->SMTPSecure = mail::ENCRYPTION_SMTPS;
$mail->Port = 465;
$mail->setFrom(MAIL_SERVER['sender']['mail'], MAIL_SERVER['sender']['name']);
$mail->addAddress(MAIL_SERVER['receiver']['mail'], MAIL_SERVER['receiver']['name']);
$mail->setFrom(MAIL['sender']['mail'], MAIL['sender']['name']);
$mail->addAddress(MAIL['receiver']['mail'], MAIL['receiver']['name']);
// The message
$mail->isHTML(true);

View File

@@ -514,6 +514,22 @@ export default class project {
]),
coefficient: 8
},
saas: {
symbol: Symbol("saas"),
integrations: new Set([
this.services.telegram,
this.services.max,
this.services.vk,
this.services.one_c,
this.services.moy_sklad,
this.services.excel,
this.services.ozon,
this.services.wildberries,
this.services.avito,
this.services.yandex_market,
]),
coefficient: 8
},
search: {
symbol: Symbol("search"),
integrations: new Set([

View File

@@ -4,8 +4,10 @@
:root {
--text-color: #fff;
--text-color-inverted: #000;
--button-background-color-inverted: #fff;
--button-background-color: #000;
--button-background-color: #fff;
--button-background-color-inverted: #000;
--button-hover-background-color: #abc7c6;
--button-active-background-color: #8fa3a2;
--section-background-color-inverted: #fff;
--section-background-color: #000;
--background-color: #fbfaf6;
@@ -21,9 +23,6 @@
--blue: #0ea5e9;
--paper: var(--white);
--button-plain-hover-background-color: #bdd2c8;
--button-plain-active-background-color: #7d9f8f;
}
/* } */
@@ -56,8 +55,10 @@
:root {
--text-color: #fff;
--text-color-inverted: #000;
--button-background-color-inverted: #fff;
--button-background-color: #000;
--button-background-color: #fff;
--button-background-color-inverted: #000;
--button-hover-background-color: #abc7c6;
--button-active-background-color: #8fa3a2;
--section-background-color-inverted: #fff;
--section-background-color: #000;
--background-color: #fbfaf6;
@@ -72,8 +73,5 @@
--white: #fff;
--paper: var(--white);
--button-plain-hover-background-color: #bdd2c8;
--button-plain-active-background-color: #7d9f8f;
}
}

View File

@@ -30,11 +30,12 @@ section#cookies {
}
>div {
padding: 0.8rem 1.2rem 0.7rem;
padding: 0.9rem 1.2rem 0.8rem;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 0.3rem;
>p {
margin: unset;
@@ -43,6 +44,8 @@ section#cookies {
}
>small {
line-height: 1rem;
text-align: center;
font-family: Nunito;
font-size: 0.9rem;
font-weight: 400;

View File

@@ -125,8 +125,8 @@ section#project {
display: flex;
flex-direction: column;
gap: 0.8em;
overflow: hidden;
border-radius: 1.125rem;
/* overflow: hidden;
border-radius: 1.125rem; */
/* border: 2px solid;
background-color: #fff;
box-shadow: var(--shadow);
@@ -185,6 +185,8 @@ section#project {
>:is(input, select, textarea) {
grid-column: 2;
grid-row: 2;
width: 100%;
border-radius: 0;
}
>small.guide {
@@ -266,7 +268,7 @@ section#project {
width: 100%;
box-sizing: border-box;
display: flex;
flex-flow: row wrap;
justify-content: space-between;
gap: 0.6em 1em;
/* border-radius: 0.75rem; */
border: 1px solid #000;
@@ -278,11 +280,6 @@ section#project {
font-weight: 400;
}
>div.row {
width: 100%;
display: flex;
justify-content: space-between;
>label {
width: 100%;
display: flex;
@@ -320,7 +317,6 @@ section#project {
}
}
}
}
>section#reward {
padding: 0.4em 0.6em 0;
@@ -703,11 +699,9 @@ section#project {
gap: unset;
>label#requester_personal {
padding: 1em 0.8em;
padding: 0.6em 0.8em;
box-sizing: border-box;
display: grid;
grid-template-columns: 3ch auto;
grid-template-rows: 2ch;
display: flex;
align-items: center;
gap: 0.7ch;
font-size: 0.9rem;
@@ -725,8 +719,7 @@ section#project {
}
>div {
grid-column: 1;
scale: 0.7;
scale: 0.8;
>input {
position: absolute;
@@ -762,7 +755,6 @@ section#project {
}
>span {
grid-column: 2;
margin-top: 0.15ch;
}
}
@@ -858,7 +850,7 @@ section#project {
display: contents;
>button#back {
--diameter: 6ch;
--diameter: 7ch;
--radius: calc(var(--diameter, 4ch) / 2);
position: absolute;
left: calc(-1.2rem - var(--diameter, 4ch));
@@ -870,14 +862,14 @@ section#project {
align-items: center;
border-radius: 100%;
border: unset;
background-color: #fff;
background-color: var(--button-background-color, #fff);
&:is(:hover, :focus) {
background-color: var(--button-plain-hover-background-color, #bdd2c8);
background-color: var(--button-hover-background-color, #abc7c6);
}
&:active {
background-color: var(--button-plain-active-background-color, #7d9f8f);
background-color: var(--button-active-background-color, #8fa3a2);
}
>img {
@@ -894,20 +886,33 @@ section#project {
/* padding: 1.05em 1.3em 1em;
border-radius: 0.75rem; */
box-sizing: border-box;
padding: 1.55em 1.3em 1.5em;
padding: 1.25em 1.3em 1.2em;
font-size: 1rem;
border-radius: 1.25rem;
border: unset;
background-color: #fff;
background-color: var(--button-background-color, #fff);
&:is(:hover, :focus) {
background-color: var(--button-hover-background-color, #abc7c6);
}
&:active {
background-color: var(--button-active-background-color, #8fa3a2);
}
&:is(#send) {
--shadow: 0 4px 5px -4px rgba(0, 0, 0, 0.5);
/* padding: 2.3ch 4.5ch 2.5ch; */
line-height: 0.9em;
font-weight: 600;
font-size: 1rem;
color: #fff;
text-shadow: 0 0 4px #000, 0 3px 1.4rem #0009;
border: unset;
background: #ff5c5c;
background: hsl(var(--button-send-background-color, 120deg) 40% 50%);
box-shadow: var(--shadow);
-webkit-box-shadow: var(--shadow);
-moz-box-shadow: var(--shadow);
transition: background 1.2s ease-out;
&:not(:disabled) {
filter: contrast(1.1);
@@ -934,16 +939,6 @@ section#project {
filter: grayscale(1) brightness(0.8);
}
}
>span {
line-height: 1rem;
font-family: Geologica;
font-weight: 600;
font-size: 1rem;
color: #fff;
text-shadow: 0 0 4px #00000070;
/* mix-blend-mode: overlay; */
}
}
}
@@ -965,6 +960,10 @@ section#project {
font-size: 0.8em;
color: #fff;
text-shadow: 0px 1px 3px #000C, 0px 1px 1px #000B;
>b {
display: block;
}
}
>section#contacts_shortcut {
@@ -1022,7 +1021,22 @@ section#project {
margin: unset;
min-width: var(--diameter, 4ch);
width: 30%;
border-radius: 0.75rem;
height: auto;
border-radius: 1.25rem;
}
}
}
}
@media (width < 480px) {
section#project {
>article {
>section[data-paginator-page] {
>section#team {
>fieldset {
flex-flow: row wrap;
}
}
}
}
}

View File

@@ -18,7 +18,7 @@ footer {
display: flex;
flex-direction: column;
justify-content: end;
gap: 1rem;
gap: 2rem;
&.company {
justify-content: space-between;
@@ -118,9 +118,13 @@ footer {
}
}
>a.mail {
margin-top: 0.2em;
}
>p.worktime {
margin: unset;
margin-top: 0.6em;
margin-top: 0.8em;
display: flex;
gap: 0.5em;
@@ -150,7 +154,7 @@ footer {
display: flex;
flex-direction: column;
gap: 0.5rem;
font-family: "Bahnschrift";
font-family: "Cascadia Code";
>h1.name {
margin: unset;
@@ -167,12 +171,23 @@ footer {
text-align: right;
gap: 0.2em;
font-size: 0.8rem;
color: grey;
color: #a3a396;
::selection {
color: #000;
background: #F22;
}
::-moz-selection {
color: #000;
background: #F22;
}
>span.row {
display: inline-flex;
justify-content: end;
font-weight: 400;
gap: 0.6em;
&:before {
margin-right: auto;
@@ -247,3 +262,23 @@ footer {
}
}
}
@media (width < 520px) {
footer {
>div.sector {
&:is(.company) {
flex-direction: column;
gap: 3rem;
>article#contacts {
width: 100%;
align-items: center;
}
>article#company {
width: 100%;
}
}
}
}
}

View File

@@ -78,16 +78,16 @@ body {
--dot-size: 23px;
--dot-space: 24px;
z-index: -50;
position: fixed;top: -200%;
left: -200vw;
top: -200%;
position: fixed;
top: 0;
left: min(-30vw, -300px);
justify-self: center;
align-self: center;
width: 400vw;
min-height: 1000px;
height: 800%;
width: max(250vw, 600px);
height: 200vh;
rotate: -16deg;
pointer-events: none;
background: linear-gradient(90deg, var(--dot-bg) calc(var(--dot-space) - var(--dot-size)), transparent 1%) center / var(--dot-space) var(--dot-space), linear-gradient(var(--dot-bg) calc(var(--dot-space) - var(--dot-size)), transparent 1%) center / var(--dot-space) var(--dot-space), var(--dot-color);
transform-origin: top left;
}
}

View File

@@ -39,13 +39,22 @@ body {
}
>article#offer {
background: #fff;
z-index: 500;
border-radius: 1.25rem;
margin: 3rem 10vw 8rem;
padding: 1rem 4rem;
margin: 3rem 0 8rem;
width: 880px;
box-sizing: border-box;
padding: 3rem 4rem;
background: #fff;
>h1 {}
>h1 {
margin-top: unset;
margin-bottom: 2.5rem;
text-align: center;
font-family: "MT Sans";
font-size: 3rem;
font-weight: 400;
}
}
}
@@ -68,16 +77,15 @@ body {
--dot-space: 24px;
z-index: -50;
position: fixed;
top: -200%;
left: -200vw;
top: -200%;
top: 0;
left: min(-30vw, -300px);
justify-self: center;
align-self: center;
width: 400vw;
min-height: 1000px;
height: 800%;
width: max(250vw, 600px);
height: 200vh;
rotate: -16deg;
pointer-events: none;
background: linear-gradient(90deg, var(--dot-bg) calc(var(--dot-space) - var(--dot-size)), transparent 1%) center / var(--dot-space) var(--dot-space), linear-gradient(var(--dot-bg) calc(var(--dot-space) - var(--dot-size)), transparent 1%) center / var(--dot-space) var(--dot-space), var(--dot-color);
transform-origin: top left;
}
}

View File

@@ -34,12 +34,51 @@
transition: 0.1s ease-out;
}
::selection {
color: #000;
background: #FF2;
text-shadow: none;
}
::-moz-selection {
color: #000;
background: #FF2;
text-shadow: none;
}
body {
margin: unset;
width: 100vw;
overflow-x: hidden;
background: var(--background-color, #fff);
background: var(--background-gradient);
/* background: var(--background-color, #fff);
background: var(--background-gradient); */
background-color: #020c13;
}
a {
font-family: "Cascadia Code";
text-decoration: unset;
color: #094ef2;
&:is(:hover, :focus) {
color: #487dfa;
}
&:active {
color: #1224bc;
}
&::selection {
color: #094ef2;
background: #FAA;
text-shadow: none;
}
&::-moz-selection {
color: #094ef2;
background: #FAA;
text-shadow: none;
}
}
.unselectable {
@@ -67,6 +106,7 @@ input:not([type="range"]) {
outline: unset;
border: unset;
border-bottom: 1px solid;
border-radius: unset;
background: unset;
}
@@ -130,6 +170,6 @@ button {
&:disabled {
cursor: not-allowed;
background-color: #08111d17;
filter: grayscale(1) brightness(0.8);
filter: grayscale(1) brightness(0.55);
}
}

View File

@@ -1,13 +1,37 @@
<?php
// Initializing default theme for the views templater
define('THEME', 'default');
define('TELEGRAM_ROBOT', [
'domain' => 'kodorvan_bot'
define('DOMAIN', 'kodorvan.tech');
define('COMPANY', [
'identifier' => '000000000000000',
'tax' => '000000000000',
'name' => [
'short' => 'ИП Мирзаев',
'full' => 'ИП Мирзаев Арсен Магомедович'
],
'address' => [
'full' => 'Пермь'
],
'worktime' => [
'from' => '10:00',
'to' => '19:00'
],
'contacts' => [
'request' => [
'sim' => [
'full' => '79005004010',
'country' => '7',
'operator' => '900',
'number' => ['500', '40', '10']
],
'mail' => 'request@kodorvan.tech'
]
]
]);
define('MAIL_SERVER', [
define('MAIL', [
'host' => 'smtp.mail.ru',
'sender' => [
'mail' => 'system@kodorvan.tech',
@@ -15,14 +39,11 @@ define('MAIL_SERVER', [
'password' => '',
],
'receiver' => [
'mail' => 'requests@kodorvan.tech',
'mail' => 'request@kodorvan.tech',
'name' => 'Заявки'
]
]);
define('PROJECT_CONTACTS_SIM_REQUESTS', '79005004010');
define('PROJECT_CONTACTS_SIM_REQUESTS_COUNTRY', '7');
define('PROJECT_CONTACTS_SIM_REQUESTS_OPERATOR', '900');
define('PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_1', '500');
define('PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_2', '40');
define('PROJECT_CONTACTS_SIM_REQUESTS_NUMBER_3', '10');
define('TELEGRAM_ROBOT', [
'domain' => 'kodorvan_bot'
]);

View File

@@ -63,6 +63,8 @@ final class templater extends controller implements array_access
// Initializing global variables
$this->twig->addGlobal('theme', THEME);
$this->twig->addGlobal('domain', DOMAIN);
$this->twig->addGlobal('company', COMPANY);
$this->twig->addGlobal('server', $_SERVER);
$this->twig->addGlobal('cookies', $_COOKIE);
$this->twig->addGlobal('language', $language = $session?->buffer['language'] ?? language::en);

View File

@@ -13,7 +13,7 @@
{% block css %}
{% endblock %}
{% include '/elements/yandex.html' %}
{% include '/metrics/yandex.html' %}
</head>
<body>

View File

@@ -30,7 +30,7 @@
autocomplete="off"
oninput="core.project.architecture = this.value"
>
<option value="" selected="true" disabled="true" hidden="true" data-paginator-select-title="true">Выберите архитектуру</option>
<option value="" selected="true" disabled="true" hidden="true" data-project-select-title="true">Выберите архитектуру</option>
{% for value, label in project.architectures %}
<option value="{{ value }}">{{ label }}</option>
{% endfor %}
@@ -47,7 +47,7 @@
autocomplete="off"
oninput="core.project.purpose = this.value"
>
<option value="" selected="true" disabled="true" hidden="true" data-paginator-select-title="true">Выберите назначение</option>
<option value="" selected="true" disabled="true" hidden="true" data-project-select-title="true">Выберите назначение</option>
{% for value, label in project.purposes %}
<option value="{{ value }}">{{ label }}</option>
{% endfor %}
@@ -80,7 +80,6 @@
<section id="team" class="row" style="display: none;">
<fieldset>
<legend>Команда</legend>
<div class="row">
<label for="programmers">
<input
id="programmers"
@@ -120,7 +119,6 @@
/>
<span>Бустеры</span>
</label>
</div>
</fieldset>
<small class="guide">Соберите команду разработчиков проекта</small>
</section>
@@ -317,21 +315,21 @@
<button onclick="core.paginator.relative(1)" style="display: none" data-paginator-page-button="2" disabled="true">ПРОДОЛЖИТЬ</button>
<button
id="send"
class="gradient"
style="display: none"
onclick="core.project.send();"
data-paginator-page-button="3"
disabled="true"
>
<span>НАЧАТЬ РАЗРАБОТКУ</span>
<div class="color yellow"></div>
<div class="color green"></div>
<div class="color blue"></div>
</button>
>ОТПРАВИТЬ</button>
</section>
<script>
const send = document.getElementById('send');
let deg = 120;
setInterval(() => send.style.setProperty('--button-send-background-color', (deg += 43) + 'deg'), 1200);
</script>
</div>
<small class="offer unselectable">Создан для удобства и <b>не является публичной офертой</b></br>Точная стоимость после изучения задания</small>
<small class="offer unselectable">Создан для удобного планирования и <b>не является публичной офертой</b></small>
<section id="contacts_shortcut">
<p class="sim"><span class="country">7</span><span class="operator">901</span><span>592</span><span>4211</span></p>

View File

@@ -52,7 +52,7 @@
{% for button in buttons %}
{% set icon = button.icon ?? 'close' %}
<link type="text/css" rel="stylesheet" href="/css/icons/{{ button.icon|replace({' ': '_'}) }}.css" />
<a type="button" href="{{ button.href }}" target="_blank" rel="nofollow noopener noreferrer"><i class="icon {{ button.icon }}"></i></a>
<a type="button" href="{{ button.href }}" target="_blank" rel="external nofollow noopener noreferrer"><i class="icon {{ button.icon }}"></i></a>
{% endfor %}
</div>
{% endif %}

View File

@@ -24,28 +24,39 @@
</article>
<nav id="links" class="unselectable">
<a href="/offer">ПУБЛИЧНАЯ ОФЕРТА</a>
<a href="https://ru.wikipedia.org/wiki/WTFPL">ЛИЦЕНЗИЯ</a>
<a href="https://t.me/kodorvan">КОДОРВАНЬ</a>
<a href="https://t.me/from_mirzaev">МИРЗАЕВ</a>
<a href="https://git.svoboda.works/kodorvan">РЕПОЗИТОРИЙ</a>
<a rel="terms-of-service noreferrer noopener" href="/offer">ОФЕРТА</a>
<a rel="privacy-policy noreferrer noopener" href="/policy">ПОЛИТИКА</a>
<a rel="license external nofollow noopener" href="https://ru.wikipedia.org/wiki/WTFPL">ЛИЦЕНЗИЯ</a>
<a rel="external nofollow noopener" href="https://git.svoboda.works/kodorvan">РЕПОЗИТОРИЙ</a>
<a rel="help external nofollow noopener" href="https://t.me/kodorvan">БЛОГ</a>
<a rel="author external nofollow noopener" href="https://t.me/from_mirzaev">МИРЗАЕВ</a>
</nav>
</div>
<div class="sector company">
<article id="contacts">
<h1 class="sim"><span class="country">7</span><span class="operator">901</span><span>592</span><span>4211</span></h1>
<span class="mail support">support@kodorvan.tech</span>
<p class="worktime unselectable">Пермь, <span class="time from">10:00</span><span class="time to">19:00</span></p>
{% if company.contacts.request.sim is not empty %}
<h1 class="sim" aria-label="{{ company.contacts.request.sim.full }}">
<span class="country">{{ company.contacts.request.sim.country }}</span>
<span class="operator">{{ company.contacts.request.sim.operator }}</span>
<span>{{ company.contacts.request.sim.number[0] }}</span>
<span>{{ company.contacts.request.sim.number[1] ~ company.contacts.request.sim.number[2] }}</span>
</h1>
{% endif %}
{% if company.contacts.request.mail is not empty %}
<a class="mail support" href="mailto:{{ company.contacts.request.mail }}">{{ company.contacts.request.mail }}</a>
{% endif %}
<p class="worktime unselectable">
{% if company.address.full is not empty %}{{ company.address.full }}{% endif %},
<span class="time from">{{ company.worktime.from }}</span>
<span class="time to">{{ company.worktime.to }}</span></p>
</article>
<article id="company">
<h1 class="name">ИП Мирзаев</h1>
<p class="column"><span class="tax row">271103176488</span><span class="identifier row">322270000004691</span></p>
<h1 class="name">{{ company.name.short }}</h1>
<p class="column"><span class="tax row">{{ company.tax }}</span><span class="identifier row">{{ company.identifier }}</span></p>
</article>
</div>
<!-- <strong class="background unselectable">КОДОРВАНЬ</strong> -->
</footer>
{% include '/themes/default/elements/rofls.html' %}
{% endblock %}

View File

@@ -7,7 +7,7 @@
<meta name="author" content="Арсен Мирзаев Татьяно-Мурадович" />
<meta name="robots" content="index, follow" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, shrink-to-fit=no" />
<meta name="HandheldFriendly" content="true" />
<meta name="MobileOptimized" content="width" />
<meta name="mobile-web-app-capable" content="yes" />
@@ -35,8 +35,6 @@
<meta name="twitter:description" content="Programming, design, boosting and legal armor!" />
<meta name="twitter:image" content="https://kodorvan.tech/images/kodorvan_1200_630.webp" />
<link rel="canonical" href="https://kodorvan.tech" />
<link rel="apple-touch-icon" sizes="57x57" href="/images/favicon/favicon-57x57.png" />
<link rel="apple-touch-icon" sizes="60x60" href="/images/favicon/favicon-60x60.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/images/favicon/favicon-72x72.png" />

View File

@@ -1,4 +1,4 @@
{% block js %}
<script src="/js/modules/damper.mjs" type="module"></script>
<link rel="modulepreload" href="/js/modules/damper.mjs" ></script>
<script src="/js/core.js"></script>
{% endblock %}

View File

@@ -1,7 +1,10 @@
{% extends "/themes/default/index.html" %}
{% block css %}
<link rel="canonical" href="https://{{ domain }}/" />
{{ parent() }}
<link type="text/css" rel="stylesheet" href="/css/icons/loading_spinner.css" />
<!-- <link type="text/css" rel="stylesheet" href="/css/icons/code_slash.css" />
<link type="text/css" rel="stylesheet" href="/css/icons/coffe.css" />
@@ -22,9 +25,9 @@
<link type="text/css" rel="stylesheet" href="/themes/default/css/elements/project.css" />
<link type="text/css" rel="stylesheet" href="/themes/default/css/elements/superpacks.css" />
{% if smartphone %}
<link rel="preload" as="image" href="/themes/default/images/interface/labubumba_2_mobile.svg" />
<link rel="preload expect" as="image" href="/themes/default/images/interface/labubumba_2_mobile.svg" />
{% else %}
<link rel="preload" as="image" href="/themes/default/images/interface/labubumba_2.svg" />
<link rel="preload expect" as="image" href="/themes/default/images/interface/labubumba_2.svg" />
<!-- <link type="text/css" rel="stylesheet" href="/themes/default/css/elements/cases.css" /> -->
{% endif %}
<link type="text/css" rel="stylesheet" href="/themes/default/css/elements/cookies.css" />
@@ -82,8 +85,8 @@
});
</script>
<link rel="modulepreload" href="/js/modules/hotline.mjs" ></script>
<script src="/js/modules/project.mjs" type="module"></script>
<script src="/js/modules/paginator.mjs" type="module"></script>
<script src="/js/modules/hotline.mjs" type="module"></script>
<script src="/js/pages/main.js" type="module" defer></script>
{% endblock %}

View File

@@ -1,7 +1,10 @@
{% extends "/themes/default/index.html" %}
{% block css %}
<link rel="canonical" href="https://{{ domain }}/offer" />
{{ parent() }}
<link type="text/css" rel="stylesheet" href="/css/icons/loading_spinner.css" />
<link type="text/css" rel="stylesheet" href="/themes/default/css/pages/offer.css" />
<link type="text/css" rel="stylesheet" href="/themes/default/css/elements/cookies.css" />
@@ -20,24 +23,22 @@
<h1>Согласие на обработку электронных пользовательских данных</h1>
<div class="text">
<p>Я даю согласие на&nbsp;обработку моих электронных пользовательских данных АО&nbsp;«ПФ «СКБ&nbsp;Контур»&nbsp;(ИНН
6663003127)&nbsp;и&nbsp;его дочерним обществам (далее вместе&nbsp;— СКБ&nbsp;Контур, группа компаний),
в&nbsp;соответствии с&nbsp;разделом 6&nbsp;<a class="external-link" href="https://kontur.ru/about/policy"
rel="nofollow noopener">Политики&nbsp;обработки персональных данных</a>&nbsp;(далее&nbsp;— Политика),
в&nbsp;следующих целях:</p>
<p>Я даю согласие на обработку моих электронных пользовательских данных «{{ company.name.full ?? company.name.short }}» (ИНН
{{ company.tax }}) и его дочерним обществам (далее вместе — {{ company.name.short }}, группа компаний),
в соответствии с разделом 6 <a href="/policy" rel="nofollow noopener">Политики обработки персональных данных</a> (далее — Политика),
в следующих целях:</p>
<ul>
<li>обеспечение корректной работы сайтов и&nbsp;программных продуктов СКБ&nbsp;Контур, персонализация, сохранение
<li>обеспечение корректной работы сайтов и программных продуктов {{ company.name.short }}, персонализация, сохранение
настроек пользователя, повышение удобства работы;</li>
<li>сбор, обработка аналитических и&nbsp;статистических данных по&nbsp;тематике деятельности СКБ&nbsp;Контур,
использования информационных ресурсов, программных продуктов, товаров, работ и&nbsp;услуг СКБ&nbsp;Контур
для&nbsp;разработки новых программных продуктов, расширения спектра оказываемых услуг, контроля качества,
противодействия незаконным или&nbsp;несанкционированным действиям, мошенничеству при&nbsp;использовании
программных продуктов, товаров, работ и&nbsp;услуг СКБ&nbsp;Контур, обеспечение информационной безопасности.
<li>сбор, обработка аналитических и статистических данных по тематике деятельности {{ company.name.short }},
использования информационных ресурсов, программных продуктов, товаров, работ и услуг {{ company.name.short }}
для разработки новых программных продуктов, расширения спектра оказываемых услуг, контроля качества,
противодействия незаконным или несанкционированным действиям, мошенничеству при использовании
программных продуктов, товаров, работ и услуг {{ company.name.short }}, обеспечение информационной безопасности.
</li>
</ul>
<p>Перечень электронных пользовательских данных, которые могут обрабатываться в&nbsp;соответствии с&nbsp;указанными
<p>Перечень электронных пользовательских данных, которые могут обрабатываться в соответствии с указанными
целями обработки:</p>
<ul>
@@ -45,82 +46,81 @@
<li>сетевые адреса;</li>
<li>файлы cookies;</li>
<li>идентификаторы устройств;</li>
<li>размеры и&nbsp;разрешение экрана;</li>
<li>сведения об&nbsp;аппаратном и&nbsp;программном обеспечении, например, браузерах, операционной системе,
<li>размеры и разрешение экрана;</li>
<li>сведения об аппаратном и программном обеспечении, например, браузерах, операционной системе,
установленных приложениях;</li>
<li>геолокация;</li>
<li>языковые настройки;</li>
<li>часовой пояс;</li>
<li>время и&nbsp;статистика использования приложений и&nbsp;информационных ресурсов СКБ&nbsp;Контур;</li>
<li>действия в&nbsp;сервисах СКБ&nbsp;Контур, источники переходов на&nbsp;веб-страницы, отправленные поисковые
и&nbsp;иные запросы, созданный пользователем контент.</li>
<li>время и статистика использования приложений и информационных ресурсов {{ company.name.short }};</li>
<li>действия в сервисах {{ company.name.short }}, источники переходов на веб-страницы, отправленные поисковые
и иные запросы, созданный пользователем контент.</li>
</ul>
<p>Кроме обработки данных cookies, установленных самими сайтами СКБ&nbsp;Контур, на&nbsp;моем устройстве могут
устанавливаться cookies, относящиеся к&nbsp;сайтам сторонних организаций, например, в&nbsp;случаях, когда
на&nbsp;сайтах СКБ&nbsp;Контур используются сторонние компоненты и&nbsp;программное обеспечение. Обработка таких
cookies регулируется политиками соответствующих сайтов, к&nbsp;которым они относятся, и&nbsp;может изменяться
без&nbsp;моего предварительного уведомления. К&nbsp;таким случаям может относиться размещение на&nbsp;сайтах:</p>
<p>Кроме обработки данных cookies, установленных самими сайтами {{ company.name.short }}, на моем устройстве могут
устанавливаться cookies, относящиеся к сайтам сторонних организаций, например, в случаях, когда
на сайтах {{ company.name.short }} используются сторонние компоненты и программное обеспечение. Обработка таких
cookies регулируется политиками соответствующих сайтов, к которым они относятся, и может изменяться
без моего предварительного уведомления. К таким случаям может относиться размещение на сайтах:</p>
<ul>
<li><span>счетчиков посещений, аналитических и&nbsp;статистических сервисов для&nbsp;сбора статистики посещаемости
<li><span>счетчиков посещений, аналитических и статистических сервисов для сбора статистики посещаемости
общедоступных страниц сайтов (Яндекс.Метрика, Яндекс.Аудитории, VK.com, Mail.ru);</span></li>
<li><span>виджетов вспомогательных сервисов для&nbsp;сбора обратной связи, организации чатов и&nbsp;иных видов
коммуникаций с&nbsp;пользователями (Carrot Quest, Callibri);</span></li>
<li><span>систем контекстной рекламы, баннерных и&nbsp;иных маркетинговых сетей (VK Ads);</span></li>
<li><span>кнопок авторизации на&nbsp;сайтах с&nbsp;помощью учетных записей в&nbsp;социальных сетях (VK ID, Яндекс
<li><span>виджетов вспомогательных сервисов для сбора обратной связи, организации чатов и иных видов
коммуникаций с пользователями (Carrot Quest, Callibri);</span></li>
<li><span>систем контекстной рекламы, баннерных и иных маркетинговых сетей (VK Ads);</span></li>
<li><span>кнопок авторизации на сайтах с помощью учетных записей в социальных сетях (VK ID, Яндекс
ID, Alfa ID);</span></li>
<li><span>иных сторонних компонент, используемых СКБ&nbsp;Контур на&nbsp;своих сайтах.</span></li>
<li><span>иных сторонних компонент, используемых {{ company.name.short }} на своих сайтах.</span></li>
</ul>
<p>Действия, на&nbsp;которые дается согласие: сбор, запись, систематизация, накопление, хранение, уточнение
(обновление, изменение), извлечение, использование, передача (предоставление, доступ,&nbsp;без&nbsp;осуществления
трансграничной передачи), обезличивание, блокирование, удаление, уничтожение, осуществляемые с&nbsp;использованием
<p>Действия, на которые дается согласие: сбор, запись, систематизация, накопление, хранение, уточнение
(обновление, изменение), извлечение, использование, передача (предоставление, доступ, без осуществления
трансграничной передачи), обезличивание, блокирование, удаление, уничтожение, осуществляемые с использованием
средств автоматизации.</p>
<p>В&nbsp;случае если я не&nbsp;согласен с&nbsp;обработкой cookies, я принимаю на&nbsp;себя риск того,
что&nbsp;в&nbsp;таком случае функции и&nbsp;возможности сайта могут не&nbsp;быть доступны в&nbsp;полном объеме,
и&nbsp;могу выбрать один из&nbsp;следующих вариантов:</p>
<p>В случае если я не согласен с обработкой cookies, я принимаю на себя риск того,
что в таком случае функции и возможности сайта могут не быть доступны в полном объеме,
и могу выбрать один из следующих вариантов:</p>
<ul>
<li>произвести самостоятельную настройку своего браузера в&nbsp;соответствии с&nbsp;документацией
или&nbsp;справкой к&nbsp;нему таким образом, чтобы он на&nbsp;постоянной основе не&nbsp;разрешал принимать
и&nbsp;отправлять данные cookies для&nbsp;любых сайтов либо для&nbsp;конкретного сайта СКБ&nbsp;Контур
или&nbsp;сайта стороннего компонента;</li>
<li>переключиться в&nbsp;специальный режим «инкогнито» браузера для&nbsp;использования сайтом cookies
до&nbsp;закрытия окна браузера или&nbsp;до&nbsp;переключения обратно в&nbsp;обычный режим;</li>
<li>покинуть сайт во&nbsp;избежание дальнейшей обработки cookies.</li>
<li>произвести самостоятельную настройку своего браузера в соответствии с документацией
или справкой к нему таким образом, чтобы он на постоянной основе не разрешал принимать
и отправлять данные cookies для любых сайтов либо для конкретного сайта {{ company.name.short }}
или сайта стороннего компонента;</li>
<li>переключиться в специальный режим «инкогнито» браузера для использования сайтом cookies
до закрытия окна браузера или до переключения обратно в обычный режим;</li>
<li>покинуть сайт во избежание дальнейшей обработки cookies.</li>
</ul>
<p>Я понимаю, что&nbsp;могу самостоятельно через&nbsp;встроенные в&nbsp;браузеры средства работы с&nbsp;данными
cookies управлять сохраненными данными, в&nbsp;том числе, удалять или&nbsp;просматривать сведения
об&nbsp;установленных сайтами cookies, включая:</p>
<p>Я понимаю, что могу самостоятельно через встроенные в браузеры средства работы с данными
cookies управлять сохраненными данными, в том числе, удалять или просматривать сведения
об установленных сайтами cookies, включая:</p>
<ul>
<li>адреса сайтов и&nbsp;пути на&nbsp;них, куда будут отправляться cookies;</li>
<li>названия и&nbsp;значения параметров, хранящихся в&nbsp;cookies;</li>
<li>адреса сайтов и пути на них, куда будут отправляться cookies;</li>
<li>названия и значения параметров, хранящихся в cookies;</li>
<li>сроки действия cookies.</li>
</ul>
<p>Срок обработки электронных пользовательских данных&nbsp;— до&nbsp;наступления условий:</p>
<p>Срок обработки электронных пользовательских данных — до наступления условий:</p>
<ul>
<li>достижение целей обработки персональных данных или&nbsp;максимальных сроков хранения;</li>
<li>утрата необходимости в&nbsp;достижении целей обработки персональных данных;</li>
<li>предоставление субъектом персональных данных или&nbsp;его законным представителем подтверждения того,
что&nbsp;персональные данные являются незаконно полученными или&nbsp;не&nbsp;являются необходимыми
для&nbsp;заявленной цели обработки;</li>
<li>отзыв согласия на&nbsp;обработку персональных данных, если сохранение персональных данных более
не&nbsp;требуется для&nbsp;целей обработки персональных данных;</li>
<li>законное требование о&nbsp;прекращении обработки персональных данных;</li>
<li>ликвидация (реорганизация) отдельно взятого общества, входящего в&nbsp;СКБ&nbsp;Контур, если обработка
осуществлялась исключительно в&nbsp;интересах данного общества и&nbsp;отсутствует какой-либо правопреемник
общества в&nbsp;СКБ&nbsp;Контур.</li>
<li>достижение целей обработки персональных данных или максимальных сроков хранения;</li>
<li>утрата необходимости в достижении целей обработки персональных данных;</li>
<li>предоставление субъектом персональных данных или его законным представителем подтверждения того,
что персональные данные являются незаконно полученными или не являются необходимыми
для заявленной цели обработки;</li>
<li>отзыв согласия на обработку персональных данных, если сохранение персональных данных более
не требуется для целей обработки персональных данных;</li>
<li>законное требование о прекращении обработки персональных данных;</li>
<li>ликвидация (реорганизация) отдельно взятого общества, входящего в {{ company.name.short }}, если обработка
осуществлялась исключительно в интересах данного общества и отсутствует какой-либо правопреемник
общества в {{ company.name.short }}.</li>
</ul>
<p>Я уведомлен, что&nbsp;при&nbsp;необходимости я могу ознакомиться с&nbsp;актуальной версией Политики обработки
персональных данных СКБ&nbsp;Контур по&nbsp;адресу&nbsp;<a class="external-link"
href="https://kontur.ru/about/policy" rel="nofollow noopener">https://kontur.ru/about/policy</a>.</p>
<p>Я уведомлен, что при необходимости я могу ознакомиться с актуальной версией Политики обработки
персональных данных {{ company.name.short }} по адресу <a href="/offer" rel="nofollow noopener">https://{{ domain }}/policy</a>.</p>
</div>
</article>
{% endblock %}