2 Commits

Author SHA1 Message Date
2d7d202f40 add error.txt 2025-11-06 19:29:37 +02:00
66e502d183 add index.php 2025-11-06 19:22:51 +02:00
216 changed files with 0 additions and 79015 deletions

View File

@@ -1,13 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Страница не найдена</title>
</head>
<body>
<h1>Страница не найдена</h1>
Запрошенный URL <!--#echo var="REQUEST_URI" --> не найден на сервере 404.
<hr>
<em><!--#echo var="HTTP_HOST" --></em>
</body>
</html>

View File

@@ -1,13 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Страница не найдена</title>
</head>
<body>
<h1>Страница не найдена</h1>
Запрошенный URL <php? #echo var="REQUEST_URI" ?> не найден на сервере 405.
<hr>
<em><php? #echo var="HTTP_HOST" ?></em>
</body>
</html>

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<comfig>
<general>
<!--дизайн-->
<icon>../../img/favicon.ico</icon>
<sitename>Движок для сайтов</sitename>
<slogan>Идеален для сайтов-визиток</slogan>
<!--настройки-->
<encoding>utf-8</encoding>
<users>data/users.php</users>
<usersrequest>data/request_on_users.php</usersrequest>
</general>
</comfig>

View File

@@ -1,13 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Страница не найдена</title>
</head>
<body>
<h1>Страница не найдена</h1>
Запрошенный URL <php? #echo var="REQUEST_URI" ?> не найден на сервере 405.
<hr>
<em><php? #echo var="HTTP_HOST" ?></em>
</body>
</html>

View File

@@ -1,106 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<page>
<general>
<!--Kлючевые слова-->
<keywords>
Суперлёгкий движок
</keywords>
</general>
<!--Содержание страницы-->
<!--Левые блоки-->
<lblock>
<block url="/plugin/plugintest/" title="кнерцу" tclass="btitle" bclass="bfloat"/>
<block url="/plugin/plugintest/" title="цйеп5" tclass="btitle" bclass="bfloat"/>
<block url="/plugin/plugintest/" title="срмт ьтмр" tclass="btitle" bclass="bfloat"/>
</lblock>
<!--Правые блоки-->
<rblock>
<block url="/plugin/plugintest/" title="tdfref" tclass="btitle" bclass="bfloat"/>
</rblock>
<!--Текст страницы-->
<content tclass="btitle" bclass="bfloat">
<ru><![CDATA[
<div>
текст текст текст текст текст текст текст текст текст текст текст тексритчрсотат текст текст текст текст текствяепивыериепчаивекапверыреверыверывеыве</div>
<div>
 текст текст текст текст текыККПАФЦКАКПАМст текст текст текст текст текст текст текст текст текст урпкцуептекст текст текст
</div>
<div>
 текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текстфыкепыуверыер</div>
<div>
<hr style="height: 5px; width: 50%; background: rgb(0, 0, 0); border: 0px;">
<br>
</div>
<div>
<table style="width: 50%; margin: 1px; float: left; border: 1px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255); border-collapse: collapse;">
<tbody>
<tr>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
</tr>
<tr>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
</tr>
<tr>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
</tr>
<tr>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
</tr>
</tbody>
</table>
<br>
</div>
<div>
<br>
</div>
<div>
<br>
</div>
<div>
<br>
</div>
<div>
<br>
</div>
<div>
<br>
</div>
<div><br>
</div>
]]></ru>
<lv><![CDATA[
<p>Uz šo brīdi šeit ne kā nav</p>
]]></lv>
<en><![CDATA[
<p>??????</p>
]]></en>
</content>
</page>

View File

@@ -1,36 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<page>
<general>
<!--Kлючевые слова-->
<keywords>
Суперлёгкий движок
</keywords>
</general>
<!--Содержание страницы-->
<!--Левые блоки-->
<lblock>
<block url="/plugin/foto/" title="df" tclass="btitle" bclass="bfloat"/>
<block url="/plugin/plugintest/" title="кнерцу" tclass="btitle" bclass="bfloat"/>
<block url="/plugin/foto/" title="цкпм" tclass="btitle" bclass="bfloat"/>
</lblock>
<!--Правые блоки-->
<rblock>
<block url="/plugin/plugintest/" title="a5ysd" tclass="btitle" bclass="bfloat"/>
</rblock>
<!--Текст страницы-->
<content tclass="btitle" bclass="bfloat">
<ru><![CDATA[
<!--?php
header('Content-Type: text/html; charset=utf-8');
readfile(__DIR__ . '/DgrmJS-main/src/index.html');
?-->
text
]]></ru>
<lv><![CDATA[
echo file_get_contents(__DIR__ . '/DgrmJS-main/src/index.html');
]]></lv>
<en><![CDATA[
echo file_get_contents(__DIR__ . '/DgrmJS-main/src/index.html');
]]></en>
</content>
</page>

View File

@@ -1,107 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<page>
<general>
<!--Kлючевые слова-->
<keywords>
Суперлёгкий движок
</keywords>
</general>
<!--Содержание страницы-->
<!--Левые блоки-->
<lblock>
</lblock>
<!--Правые блоки-->
<rblock>
</rblock>
<!--Текст страницы-->
<content tclass="btitle" bclass="bfloat">
<ru><![CDATA[
<div>
текст текст текст текст текст текст текст текст текст текст текст тексритчрсотат текст текст текст текст </div>
<div>
 текст текст текст текст текыККПАФЦКАКПАМст текст текст текст текст текст текст текст урпкцуептекст текст текст
</div>
<div>
 текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст текст
</div>
<div>
<hr style="height: 5px; width: 50%; background: rgb(0, 0, 0); border: 0px;">
<br>
</div>
<div>
<table style="width: 50%; margin: 1px; float: left; border: 1px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255); border-collapse: collapse;">
<tbody>
<tr>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
</tr>
<tr>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
</tr>
<tr>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
</tr>
<tr>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
<td style="padding: 1px; border: 1px solid rgb(0, 0, 0);">
</td>
</tr>
</tbody>
</table>
<br>
</div>
<div>
<br>
</div>
<div>
<br>
</div>
<div>
<br>
</div>
<div>
<br>
</div>
<div>
<br>
</div>
<div><br>
</div>
]]></ru>
<lv><![CDATA[
<p>  cb <b>bbvcdjyfdyhyhdывепиwstdg</b></p>
]]></lv>
<en><![CDATA[
<p>dfgesgfuyjчнлаг</p><p></p>
]]></en>
</content>
</page>

View File

@@ -1,47 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<page>
<general>
<!--Kлючевые слова-->
<keywords>
</keywords>
<!--Условия доступа-->
<access>
<read>
<users>
</users>
<groups>
</groups>
</read>
<edit>
<users>
</users>
<groups>
</groups>
</edit>
</access>
</general>
<!--Содержание страницы-->
<!--Основное меню-->
<mainmenu>
<item name="имя" url="урл" title="описание">
</item>
</mainmenu>
<!--Текст страницы-->
<content tclass="btitle" bclass="bfloat">
<ru><![CDATA[
<p>пппппацфакц</p>
]]></ru>
<lv>
<![CDATA[
<p>Uz šo brīdi šeit ne kā nav</p>
]]>
</lv>
<en>
<![CDATA[
<p>??????</p>
]]>
</en>
</content>
<rblock/><lblock/></page>

File diff suppressed because it is too large Load Diff

View File

@@ -1,87 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<page>
<general>
<!--Kлючевые слова-->
<keywords></keywords>
</general>
<!--Содержание страницы-->
<!--Левые блоки-->
<lblock>
</lblock>
<!--Правые блоки-->
<rblock>
</rblock>
<!--Текст страницы-->
<content tclass="btitle" bclass="bfloat">
<ru><![CDATA[
<p><span style="font-size: 28px;"><span style="font-weight: bold;">Добро пожаловать на страницу создания сайта!</span></span></p>
<p>Для начала редактирования намите на шестерёнку, чтобы открыть меню:</p>
<p><img src="/img/createSite/settings.png" style="width: 250px;"></p>
<hr>
<p>Чтобы редактировать страницу нажмите на <button onclick="basisVis()">Редактор страницы</button>:</p>
<p><img src="/img/createSite/editor.png" style="width: 800px;"></p>
<p>Для сохранения, открытия и создания новой страницы используйте <button onclick="settingsMain.click()">иконку кассеты</button>.</p>
<p>Для создания боковых панелей используйте <button onclick="pluginDropdownContent.focus()">список редактирования плагинов</button>.</p>
<hr>
<p>Чтобы редактировать древо сайта нажмите на <button onclick="basisVisSiteTree()">Древо сайта</button>:</p>
<p><img src="/img/createSite/siteTree.png" style="width: 500px;"></p>
<p>Чтобы сохранить изменения на странице, используйте кнопку <button onclick="treeSettingsSave.click()">Сохранить</button> на панели древа сайта.</p>
<p>Для изменения свойств элемента в древе сайта нажмите на страницу правой кнопкой мыши или зажмите пальцем, выберите <button onclick="treeSettingsProperties.click()">Свойства</button>, внесите нужные изменения и нажмите <button onclick="treePropertiesDivButtonOk.click()">Ок</button>, чтобы сохранить их.</p>
<hr>
<p>Чтобы редактировать файлы нажмите на <button onclick="basisVisManager()">Файловый менеджер</button>:</p>
<p><img src="/img/createSite/manager.png" style="width: 500px;"></p>
<p>Для открытия папок в файловом менеджере используйте одинарный или двойной клик по папке. Перемещаться по папкам можно также с помощью стрелок истории <button onclick="managerHistoryBackFun.click()">Назад</button> и <button onclick="managerHistoryForwFun.click()">Вперёд</button> или кнопки <button onclick="managerBackFun.click()">назад</button> из папки.</p>
<p>Чтобы открыть свойства файла, нажмите или зажмите файл и выберите <button onclick="managerSettingsProperties.click()">Свойства</button>.</p>
]]></ru>
<en><![CDATA[
<p><span style="font-size: 28px;"><span style="font-weight: bold;">Welcome to the site creation page!</span></span></p>
<p>To start editing, click the gear to open the menu:</p>
<p><img src="/img/createSite/settings.png" style="width: 250px;"></p>
<hr>
<p>To edit the page, click <button onclick="basisVis()">Page Editor</button>:</p>
<p><img src="/img/createSite/editor.png" style="width: 800px;"></p>
<p>To save, open, or create a new page, use the <button onclick="settingsMain.click()">cassette icon</button>.</p>
<p>To create side panels use the <button onclick="pluginDropdownContent.focus()">plugin editing list</button>.</p>
<hr>
<p>To edit the site tree click <button onclick="basisVisSiteTree()">Site Tree</button>:</p>
<p><img src="/img/createSite/siteTree.png" style="width: 500px;"></p>
<p>To save changes on the page use the <button onclick="treeSettingsSave.click()">Save</button> button on the site tree panel.</p>
<p>To change the properties of an element in the site tree, right-click the page or press and hold it, select <button onclick="treeSettingsProperties.click()">Properties</button>, make the changes and click <button onclick="treePropertiesDivButtonOk.click()">Ok</button> to save them.</p>
<hr>
<p>To edit files click <button onclick="basisVisManager()">File Manager</button>:</p>
<p><img src="/img/createSite/manager.png" style="width: 500px;"></p>
<p>To open folders in the file manager use a single or double click on the folder. You can also navigate folders using the history arrows <button onclick="managerHistoryBackFun.click()">Back</button> and <button onclick="managerHistoryForwFun.click()">Forward</button> or the folder's <button onclick="managerBackFun.click()">Back</button> button.</p>
<p>To open file properties, click or press and hold the file and choose <button onclick="managerSettingsProperties.click()">Properties</button>.</p>
]]></en>
<lv><![CDATA[
<p><span style="font-size: 28px;"><span style="font-weight: bold;">Laipni lūdzam vietnes izveides lapā!</span></span></p>
<p>Lai sāktu rediģēšanu, noklikšķiniet uz zobrata, lai atvērtu izvēlni:</p>
<p><img src="/img/createSite/settings.png" style="width: 250px;"></p>
<hr>
<p>Lai rediģētu lapu, noklikšķiniet uz <button onclick="basisVis()">Redaktors</button>:</p>
<p><img src="/img/createSite/editor.png" style="width: 800px;"></p>
<p>Lai saglabātu, atvērtu vai izveidotu jaunu lapu, izmantojiet <button onclick="settingsMain.click()">kasetes ikonu</button>.</p>
<p>Sānu paneļu izveidei izmantojiet <button onclick="pluginDropdownContent.focus()">spraudņu rediģēšanas sarakstu</button>.</p>
<hr>
<p>Lai rediģētu vietnes struktūru, noklikšķiniet uz <button onclick="basisVisSiteTree()">Vietnes koks</button>:</p>
<p><img src="/img/createSite/siteTree.png" style="width: 500px;"></p>
<p>Lai saglabātu izmaiņas lapā, izmantojiet pogu <button onclick="treeSettingsSave.click()">Saglabāt</button> uz vietnes koka paneļa.</p>
<p>Lai mainītu elementa īpašības vietnes kokā, noklikšķiniet uz lapas ar peles labo pogu vai paturiet to nospiestu ar pirkstu, izvēlieties <button onclick="treeSettingsProperties.click()">Īpašības</button>, veiciet izmaiņas un nospiediet <button onclick="treePropertiesDivButtonOk.click()">Labi</button>, lai saglabātu tās.</p>
<hr>
<p>Lai rediģētu failus noklikšķiniet uz <button onclick="basisVisManager()">Failu pārvaldnieks</button>:</p>
<p><img src="/img/createSite/manager.png" style="width: 500px;"></p>
<p>Lai atvērtu mapes failu pārvaldniekā, izmantojiet vienreizēju vai dubultklikšķi uz mapes. Pārvietoties pa mapēm var arī ar vēstures bultiņām <button onclick="managerHistoryBackFun.click()">Atpakaļ</button> un <button onclick="managerHistoryForwFun.click()">Uz priekšu</button> vai pogu <button onclick="managerBackFun.click()">atpakaļ</button> mapē.</p>
<p>Lai atvērtu faila īpašības, noklikšķiniet vai paturiet failu un izvēlieties <button onclick="managerSettingsProperties.click()">Īpašības</button>.</p>
]]></lv>
</content>
</page>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<site>
<!-- title -->
<sitename>Raspberry Pi</sitename>
<!--Слоган-->
<slogan>Raspberry Pi</slogan>
<index url='content/index' name='Home' title='Main page' template='rpi' PageMenu='0,0' users='' group=''>
</index>
</site>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<site>
<sitename>RaspberryqePi</sitename>
<slogan>Raspberry Pi</slogan>
<index url='content/index' title='Sākuma lapa' name='index' template='rpi' PageMenu='0,1,2' users='' group=''>
</index>
</site>

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<site>
<sitename>site</sitename>
<slogan>site</slogan>
<index url="content/index" title="Новый ф6нрцуеыке" name="index" template="start" PageMenu="0,0" users="" group="" news="" plugins="">
<page1 url="content/rpi/index" title="Новый ф6нрцуеыкеа" name="page1" template="MedWait" PageMenu="0,1,2" users="" group="" news="" plugins="">
<underpage1 url="content/rpi/index" title="Загловок" name="underpage1" template="rpi" PageMenu="0,1,2" users="" group="" news="" plugins="">
</underpage1>
<underpage2 url="content/rpi/index" title="Загловок" name="underpage2" template="rpi" PageMenu="0,1,2" users="" group="" news="" plugins="SvgEditorM">
</underpage2>
<createSite url="data/createSite" title="Страница создание нового сайта" name="createSite" template="MedWait" PageMenu="0,1,2" users="" group="" news="" plugins="dgrm">
</createSite>
</page1>
<page2 url="content/index" title="Загловок" name="page2" template="rpi" PageMenu="0,1,2" users="" group="" news="" plugins="dgrm,SvgEditorM">
</page2>
<uyr url="content/index" title="Новый syu6e5" name="uyr" template="MedWait" PageMenu="0,1,2" users="" group="" news="" plugins="">
</uyr>
</index>
</site>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,153 +0,0 @@
/*Начало шрифты*/
@font-face {
font-family: 'Lora';
src: url('Lora/Lora-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Lora';
src: url('Lora/Lora-Bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Lora';
src: url('Lora/Lora-Italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'Merriweather';
src: url('Merriweather/Merriweather-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Merriweather';
src: url('Merriweather/Merriweather-Bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Merriweather';
src: url('Merriweather/Merriweather-Italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'Montserrat';
src: url('Montserrat/Montserrat-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Montserrat';
src: url('Montserrat/Montserrat-Bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Montserrat';
src: url('Montserrat/Montserrat-Italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'OpenSans';
src: url('OpenSans/OpenSans-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'OpenSans';
src: url('OpenSans/OpenSans-Bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'OpenSans';
src: url('OpenSans/OpenSans-Italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'Playfair_Display';
src: url('Playfair_Display/PlayfairDisplay-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Playfair_Display';
src: url('Playfair_Display/PlayfairDisplay-Bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Playfair_Display';
src: url('Playfair_Display/PlayfairDisplay-Italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'PT_Serif';
src: url('PT_Serif/PTSerif-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'PT_Serif';
src: url('PT_Serif/PTSerif-Bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'PT_Serif';
src: url('PT_Serif/PTSerif-Italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'Roboto';
src: url('Roboto/Roboto-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Roboto';
src: url('Roboto/Roboto-Bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Roboto';
src: url('Roboto/Roboto-Italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'Source_Sans_3';
src: url('Source_Sans_3/SourceSans3-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Source_Sans_3';
src: url('Source_Sans_3/SourceSans3-Bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Source_Sans_3';
src: url('Source_Sans_3/SourceSans3-Italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
}
/*Конец шрифты*/

View File

@@ -1,8 +0,0 @@
<div id="fclear">
</div>
<div id="footer">
Powered by uText CMS<br>
2013 &#169 gugudze
</div>
</div>

View File

@@ -1,43 +0,0 @@
#fclear{
clear :both;
}
#footer {
text-align :center;
position :relative;
width :100%;
margin :0px auto;
/*
background :#ffffff;
border :1px solid #0ffff0;
height :20px;
*/
}
.left-footer,
.right-footer,
.center-footer {
position :relative;
padding :0px;
/*
border :1px solid #0ffff0;
*/
}
.left-footer {
float :left;
width :200px;
}
.right-footer {
float :right;
width :200px;
}
.center-footer {
float :none;
width :auto;
overflow :hidden;
/*
text-align :left;
*/
}

View File

@@ -1,790 +0,0 @@
<?php
/**
* @file func.php
* @brief Основные php функции страницы
*/
/**
* @brief Выполняет действие, переданное через POST-запрос
* @param string $handleRequestAction Имя действия для выполнения
* @return string JSON-ответ с результатом или ошибкой действия
*/
function handleRequest($handleRequestAction) {
$action = preg_replace('/[^a-zA-Z0-9_]/', '', $handleRequestAction);
if (function_exists($action)) {
call_user_func($action);
} else {
echo json_encode([
'error' => 'Неизвестное действие',
'action' => $handleRequestAction,
'post_data' => $_POST,
'get_data' => $_GET,
'server' => $_SERVER['REQUEST_URI']
]);
}
}
/**
* @brief Обрабатывает входящий JSON-RPC запрос
* @return string JSON-ответ с результатом выполнения метода или ошибкой
*/
function jsonrpcRequest() {
$raw = file_get_contents("php://input");
$data = json_decode($raw, true);
$id = $data["id"] ?? null;
try {
if (json_last_error() !== JSON_ERROR_NONE) {
throw new Exception("Parse error", -32700);
}
$method = $data["method"] ?? "";
$params = $data["params"] ?? [];
if (!function_exists($method)) {
throw new Exception("Method not found", -32601);
}
$result = $method($params);
header("Content-Type: application/json");
echo json_encode(["jsonrpc" => "2.0", "id" => $id, "result" => $result]);
}
catch (Exception $e) {
header("Content-Type: application/json");
echo json_encode(["jsonrpc" => "2.0", "id" => $id, "error" => ["code" => $e->getCode(), "message" => $e->getMessage()]]);
}
}
/**
* @brief Подключает плагин или плагины из директории main_plugin
* @param array $params Параметры подключения, ключ 'plugin' содержит имя плагина
* @return string HTML-код подключённых плагинов
*/
function includePlugin($params) {
global $path, $config;
$html = '';
$pluginDir = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . 'main_plugin' . DIRECTORY_SEPARATOR;
$requested = isset($params['plugin']) ? trim($params['plugin']) : null;
if ($requested !== null && ($requested === '' || strpos($requested, '..') !== false)) {
throw new Exception("Invalid plugin name", -32602);
}
if (!is_dir($pluginDir)) return $html;
$dirs = $requested ? [$requested] : array_diff(scandir($pluginDir), ['.', '..']);
foreach ($dirs as $dir) {
$dirPath = $pluginDir . $dir;
if (!is_dir($dirPath)) continue;
$file = $dirPath . '/plug.php';
if (is_file($file)) {
ob_start();
include $file;
$html .= ob_get_clean();
}
}
return $html;
}
/**
* @brief Получает список файлов и DOM-элементов плагина
* @param array $params Параметры, ключ 'plugin' содержит имя плагина
* @return array Массив ссылок на CSS, JS файлы и id элементов плагина
*/
function removePluginDom($params) {
global $path;
$plugin = isset($params['plugin']) ? trim($params['plugin']) : null;
if (!$plugin || strpos($plugin, '..') !== false || !preg_match('/^[A-Za-z0-9_\-]+$/', $plugin) || !is_dir($path . 'main_plugin/' . $plugin)) {
throw new Exception("Invalid plugin name");
}
$pluginDir = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . 'main_plugin' . DIRECTORY_SEPARATOR . $plugin;
$plugFile = $pluginDir . '/plug.php';
if (!is_file($plugFile)) throw new Exception("plug.php not found");
ob_start();
include $plugFile;
$html = ob_get_clean();
$files = [];
if (preg_match_all('/<link[^>]+href=["\']([^"\']+)["\']/i', $html, $m)) $files = array_merge($files, $m[1]);
if (preg_match_all('/<script[^>]+src=["\']([^"\']+)["\']/i', $html, $m)) $files = array_merge($files, $m[1]);
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML('<div id="wrapper">' . $html . '</div>', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
libxml_clear_errors();
$wrapper = $doc->getElementById('wrapper');
foreach ($wrapper->childNodes as $child) {
if ($child instanceof DOMElement && $child->hasAttribute('id')) {
$files[] = '#' . $child->getAttribute('id');
}
}
return array_values($files);
}
/**
* @brief Подключает все PHP-файлы функций из папки main_plugin
* @return int Количество подключённых файлов
*/
function includePluginsPhp() {
global $path;
$count = 0;
$pluginDir = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . 'main_plugin' . DIRECTORY_SEPARATOR;
if (!is_dir($pluginDir)) return $count;
$dirs = array_diff(scandir($pluginDir), ['.', '..']);
foreach ($dirs as $dir) {
$fullDir = $pluginDir . $dir . DIRECTORY_SEPARATOR;
if (!is_dir($fullDir)) continue;
foreach (glob($fullDir . 'func.*.php') as $file) {
if (is_file($file)) {
include_once $file;
$count++;
}
}
}
return $count;
}
/**
* @brief Устанавливает язык пользователя в сессии
* @param array $params Параметры, ключ 'lng' содержит код языка
* @return string Строка "true" при успешной установке
*/
function setLng($params) {
global $_SESSION;
if (!isset($params['lng'])) {
throw new Exception("Missing parameter: lng", -32602);
}
$_SESSION['lng'] = $params['lng'];
return "true";
}
/**
* @brief Завершает сессию пользователя
* @param array $params Параметры, ключ 'logoff' инициирует выход
* @return string Строка "true" при успешной разлогине
*/
function logoutUser($params) {
if (!isset($params['logoff'])) {
throw new Exception("Missing parameter: logoff", -32602);
}
session_destroy();
return "true";
}
/**
* @brief Выполняет вход пользователя с проверкой логина и пароля
* @param array $params Параметры, ключи 'log', 'login' и 'pass' для авторизации
* @return string "true" если вход успешен, "false" если нет
*/
function loginUser($params) {
global $_SESSION;
if (!isset($params['log']) || $params['log'] !== "Войти" || !isset($params['login']) || !isset($params['pass'])) {
throw new Exception("Missing login action or credentials", -32602);
}
if (check($params['login'], md5($params['pass']))) {
$_SESSION['username'] = $params['login'];
$_SESSION['pass'] = $params['pass'];
$_SESSION['Login'] = 'true';
setcookie('Login', 'true', time() + 2419200, "/");
$_SESSION['log_in'] = false;
return "true";
} else {
$_SESSION['Login'] = 'false';
setcookie('Login', 'false', time() + 2419200, "/");
return "false";
}
}
/**
* @brief Проверяет соответствие логина и пароля с данными пользователей
* @param string $login Имя пользователя
* @param string $pass Хеш пароля пользователя
* @return bool true если пользователь найден и пароль совпадает, false иначе
*/
function check($login, $pass) {
global $config, $uxml, $path;
$xmlstr = simplexml_load_file($path . $config['users']);
$result = false;
foreach ($xmlstr->users->user as $user) {
if ((string)$user['name'] === $login && (string)$user['pass'] === $pass) {
$result = true;
}
}
return $result;
}
/**
* @brief Загружает конфигурацию сайта из XML и пользователей
* @return void Возвращает значения в глобальный массив $config
*/
function SetConfig()
{
global $config, $path;
$xmlstr = simplexml_load_file($path . 'config/config_site.php');
$config['icon'] = $xmlstr->general->icon;
$config['encoding'] = $xmlstr->general->encoding;
$config['users'] = $xmlstr->general->users;
$config['usersRequest'] = $xmlstr->general->usersrequest;
$xmlstr = simplexml_load_file($path . 'data/users.php');
$config['emailAdmin'] = '';
foreach ($xmlstr->users->user as $user) {
$access = explode(',', (string)$user['access']);
$access = array_map('trim', $access);
if (in_array('creatingAccounts', $access)) {
$config['emailAdmin'] = (string)$user['email'];
break;
}
}
}
/**
* @brief Получает список пользователей с правами администратора
* @return array Массив имён пользователей с правами Admin
*/
function adminsConfig() {
global $path;
$xml = simplexml_load_file($path . 'data/users.php');
$admins = [];
foreach ($xml->users->user as $user) {
$accessList = array_map('trim', explode(', ', (string)$user['access']));
if (in_array('Admin', $accessList, true)) {
$admins[] = (string)$user['name'];
}
}
return $admins;
}
/**
* @brief Генерирует HTML-ссылки для меню
* @param array $menuVar Массив пунктов меню с ключами 'url', 'title', 'name'
* @return string Сформированные HTML-ссылки для меню
*/
function GetMenuItems($menuVar){
global $config;
$menu = '';
for ($i = 0; $i <= count($menuVar)-1; $i+=1)
{
$menu.= '<a href="'.$config['server'].$menuVar[$i]['url'].'.html" title="'.$menuVar[$i]['title'].'">'.$menuVar[$i]['name'] . '</a> ';
if ($i <= count($menuVar)-2)
{
$menu.= ':: ';
}
}
return $menu;
}
/**
* @brief Формирует HTML-блоки для отображения на странице
* @param array $BlockVar Массив блоков с ключами 'url', 'title', 'tclass', 'bclass'
* @param string $side Сторона или тип блока
* @return string Сформированные HTML-блоки
*/
function GetBlock ($BlockVar, $side) {
global $path, $ansv, $REQUEST_URI,$menu, $config, $EditPage;
$Block = '';
if (is_countable($BlockVar) && count($BlockVar) > 0){
for ($i = 0; $i <= count($BlockVar)-1; $i+=1){
ob_start();
include $path . $BlockVar[$i]['url'].'plug.php';
$Xblock = ob_get_contents();
ob_end_clean();
$Block.='<div plugin-url="'.$BlockVar[$i]['url'].'">';
if ($BlockVar[$i]['title']!=''){
$Block.='<div plugin-title="pluginTitle" tclass="tclass" class="'.$BlockVar[$i]['tclass'].'">'.$BlockVar[$i]['title'].'</div>';
}
$Block.='<div bclass="bclass" class="'.$BlockVar[$i]['bclass'].'"><div class="bcont">'.$Xblock.'</div></div>';
$Block.= '</br> ';
$Block.='</div>';
}
}
return $Block;
// $Block.='<div class="'.$BlockVar[$i]['bclass'].'"><div class="bcont">ku ku</div></div>';
/*is_countable($$BlockVar) && count($BlockVar)
$Block = "";
if (is_countable($$BlockVar) && count($BlockVar) > 0){
$Block = "true";
}
else{
$Block = "false";
}
$Block = count($BlockVar);*/
}
/**
* @brief Обрабатывает ошибку 404 и выводит страницу ошибки
* @param bool $pageout Если true, выводит содержимое файла 404.shtml
* @param string $encoding Кодировка страницы
* @return void Завершает выполнение скрипта
*/
function error404($pageout = false, $encoding = 'utf-8')
{
header('Cache-Control: no-cache, no-store');
header('Content-Type: text/html; charset=' . $encoding);
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
if ($pageout)
readfile('404.shtml');
die;
}
/**
* @brief Обрабатывает ошибку 405 и выводит страницу ошибки
* @param bool $pageout Если true, выводит содержимое файла 405.shtml
* @param string $encoding Кодировка страницы
* @return void Завершает выполнение скрипта
*/
function error405($pageout = false, $encoding = 'utf-8')
{
header('Cache-Control: no-cache, no-store');
header('Content-Type: text/html; charset=' . $encoding);
header($_SERVER['SERVER_PROTOCOL'] . ' 405 Not Found');
if ($pageout)
readfile('405.shtml');
die;
}
# Функция HTTP авторизации. Логин и пароль задаются в файле users.xml
# Форма авторизации
/* function Log_Form($Vector,$act) {
if ($Vector=='h') $sep = ' ';
else $sep = '<br/>';
$string = '<form action="'.$_SERVER["REQUEST_URI"].'" method="post">';
$string .= '<input type="hidden" name="handleRequestAction" value="API">';
switch ($act){
case 'log_on':{
$string .= '<label>Логин: </label>';
$string .= $sep;
$string .= '<input type = "text" name = "login">';
$string .= $sep;
$string .= '<label>Пароль: </label>';
$string .= $sep;
$string .= '<input type = "password" name = "pass" autocomplete>';
$string .= $sep;
$string .= '<form method="post"><input type="hidden" name="handleRequestAction" value="API">
<input type="submit" name="log" value="Войти"></form>';
break;
}
case 'log_off':{
$string .= '<form method="post"><input type="hidden" name="handleRequestAction" value="API">
<input type="submit" name="logoff" value="Выйти"></form>';
break;
}
case 'log_err':{
$string .= '<label>Фигню написал, батинька!!! </label>';
$string .= $sep;
$string .= '<form method="post"><input type="hidden" name="handleRequestAction" value="API">
<input type="submit" name="LogPage" value="Попробуйте ещё раз"></form>';
break;
}
}
$string .= '</form>';
$_SESSION['Login'] ='';
return $string;
} */
/**
* @brief Генерирует HTML-меню для выбора языка с кнопками для каждого доступного языка
* @return string Сформированный HTML-код меню выбора языка с встроенным скриптом для отправки запроса
*/
function LngMenu() {
$s = '<ul><li>' . $_SESSION['lng'] . '<ul><span id="f">';
if ($_SESSION['lng'] != 'lv') {
$s .= '<button id="lng_lv" onclick="sendLanguageRequest(\'lv\')" type="button" title="Latviski" value="lv"><span>LV</span></button><br>';
}
if ($_SESSION['lng'] != 'en') {
$s .= '<button id="lng_en" onclick="sendLanguageRequest(\'en\')" type="button" title="English" value="en"><span>EN</span></button><br>';
}
if ($_SESSION['lng'] != 'ru') {
$s .= '<button id="lng_ru" onclick="sendLanguageRequest(\'ru\')" type="button" title="По русски" value="ru"><span>RU</span></button><br>';
}
$s .= '</span></ul></li></ul>';
$s .= '
<script>
async function sendLanguageRequest(language) {
if (document.getElementById("basis3")?.style.visibility === "visible" && window.contentIsEdit) {
messageQueue.push("Сохранить данные?");
try {
const confirmed = await messageCreateQuestion();
if (confirmed) {
if (window.newPageFunValue === "newPage") {
document.getElementById("saveHow").click();
messageFunction("Сохраните новую страницу!");
return;
} else {
await saveChanges();
}
}
} catch (e) {
console.error("Ошибка:", e);
}
}
jsonrpcRequest("setLng", { lng: language })
.then(r => {
if (r === "true") {
location.reload();
} else {
messageFunction("{{language_change_error}}");
}
})
.catch(err => {
console.error(err);
messageFunction("{{language_change_error}}");
});
}
</script>
';
return $s;
}
/**
* @brief Определяет текущий язык пользователя и сохраняет его в сессии
* @return string Текущий язык (например, 'en', 'ru', 'lv')
*/
function SetLanguage(){
global $_SESSION, $path;
if (isset($_POST['lng']) && $_POST['lng'] != '')
$_SESSION['lng'] = $_POST['lng'];
if (empty($_SESSION['lng'])){
$s = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$a = explode('-', $s[0]);
$_SESSION['lng'] = $a[0];
}
return $_SESSION['lng'];
}
/**
* @brief Разбирает URL запроса и определяет действие и путь к странице
* @param string $URL URL запроса
* @return array Массив с ключами 'act' и 'str', где 'act' — действие, 'str' — путь к странице
*/
function GetRequestURL($URL){
$c=explode('.',$URL);
if ($c[1]=='html'&&count($c)!=1){
$mURL['act'] ='view';
$mURL['str'] = explode('/',$c[0]);
$mURL['str'][0]="index";
if ($mURL['str'][1]=='index'){
$mURL['str'][1]='';
}
if ($mURL['str'][count($mURL['str'])-1]==''){
array_pop($mURL['str']);
}
}
else{
if ($c[1]=='xml'&&count($c)!=1){
$mURL['act'] ='edit';
$mURL['str'] = explode('/',$c[0]);
$mURL['str'][0]="index";
}
else{
$mURL['str']='error';
}
}
return $mURL;
}
/**
* @brief Получает новости из XML-файла и формирует HTML-блоки для отображения
* @param array $BlockVar Массив блоков с настройками отображения
* @param string $side Сторона страницы, для которой формируются новости
* @return string Сформированные HTML-блоки с новостями
*/
function getNews($BlockVar, $side) {
global $path, $_SESSION;
$lng = $_SESSION['lng'] ?? 'en';
$file = $path . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'filepath.' . $lng . '.php';
$content = @file_get_contents($file);
if (!$content) $content = '';
$content = preg_replace('/^\s*<\?php.*?\?>\s*/s', '', $content);
$xml = @simplexml_load_string($content);
$rootReal = realpath(rtrim($path, DIRECTORY_SEPARATOR));
$html = '';
$tplClass = isset($BlockVar[0]['tclass']) ? $BlockVar[0]['tclass'] : 'btitle';
$bclass = isset($BlockVar[0]['bclass']) ? $BlockVar[0]['bclass'] : 'bfloat';
$now = new DateTime();
$walk = function($node) use (&$walk, &$html, $path, $side, $lng, $rootReal, $tplClass, $bclass, $now) {
$newsAttr = trim((string)$node['news']);
if ($newsAttr === '') {
foreach ($node->children() as $child) $walk($child);
return;
}
$parts = explode(',', $newsAttr);
if (count($parts) === 0) {
foreach ($node->children() as $child) $walk($child);
return;
}
$period = array_shift($parts);
$dates = explode('/', $period);
if (count($dates) !== 2) {
foreach ($node->children() as $child) $walk($child);
return;
}
$parseDate = function($str) {
$parts = explode('.', $str);
if (count($parts) < 5) return false;
list($Y, $m, $d, $H, $i) = $parts;
$dateStr = sprintf('%04d-%02d-%02d %02d:%02d:00', $Y, $m, $d, $H, $i);
return DateTime::createFromFormat('Y-m-d H:i:s', $dateStr);
};
$start = $parseDate($dates[0]);
$end = $parseDate($dates[1]);
if (!$start || !$end || $now < $start || $now > $end) {
foreach ($node->children() as $child) $walk($child);
return;
}
$blocks = array_map('trim', $parts);
if (!empty($blocks) && !in_array($side, $blocks)) {
foreach ($node->children() as $child) $walk($child);
return;
}
$urlAttrRaw = trim((string)$node['url']);
$titleRaw = (string)$node['title'];
$urlPart = trim($urlAttrRaw, "/\\");
$pageFile = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $urlPart . '.page.php';
$pageFileReal = realpath($pageFile);
$pageContent = '';
if ($pageFileReal && strpos($pageFileReal, $rootReal) === 0 && is_file($pageFileReal) && is_readable($pageFileReal)) {
$pageXml = @simplexml_load_file($pageFileReal);
if ($pageXml && isset($pageXml->content->{$lng})) {
$pageContent = strip_tags((string)$pageXml->content->{$lng});
$maxLength = ($side === 'center') ? 300 : 100;
$pageContent = mb_substr($pageContent, 0, $maxLength) . (mb_strlen($pageContent) > $maxLength ? '...' : '');
}
}
$nameRaw = trim((string)$node['name']);
$tagPath = [];
$n = $node;
while ($n) {
$tag = $n->getName();
if ($tag !== 'site' && $tag !== 'index') {
$tagPath[] = $tag;
}
$n = $n->xpath('..') ? $n->xpath('..')[0] : null;
}
$tagPath = array_reverse($tagPath);
if (empty($tagPath)) {
$link = '/';
} else {
$link = implode('/', $tagPath) . '.html';
}
$link = htmlspecialchars($link);
$readMore = '<a href="' . $link . '">читать дальше</a>';
$title = $titleRaw !== '' ? htmlspecialchars($titleRaw) : '';
$html .= '<div>';
if ($side === "center") $html .= '</br> ';
if ($title !== '') $html .= '<div plugin-title="pluginTitle" class="' . htmlspecialchars($tplClass) . '">' . $title . '</div>';
$html .= '<div class="' . htmlspecialchars($bclass) . '"><div class="bcont">' . $pageContent . ' ' . $readMore . '</div></div>';
if ($side !== 'center') $html .= '</br> ';
$html .= '</div>';
foreach ($node->children() as $child) $walk($child);
};
if ($xml && isset($xml->index)) $walk($xml->index);
return $html;
}
/**
* @brief Генерирует HTML-строку горизонтального меню из XML-структуры
* @param object $menuVar XML-объект меню
* @param array $RURLstr Массив сегментов URL для определения вложенности
* @param int $ItemNo Индекс текущего элемента в URL
* @param string $Vector Вертикальное ('v') или горизонтальное отображение
* @return string Сформированное HTML-меню
*/
function GetXMLMenu($menuVar,$RURLstr,$ItemNo,$Vector){
global $config, $path, $_SESSION;
$child_menu = "";
$topURL = '';
if ($ItemNo!=0) {
for ($i = 1; $i <= $ItemNo; $i+=1) {
$topURL .=$RURLstr[$i].'/';
$menuVar =$menuVar->{$RURLstr[$i]};
}
}
$i = 0;
foreach ($menuVar->children() as $child_page) {
if (FindPageUser($child_page['users'],$_SESSION['username'])) {
if ($i!=0) {
if ($Vector!='v') {
$child_menu .=' :: ';
} else {
$child_menu .='<br>';
}
}
$child_menu .= '<a href="'.$config['server'].$topURL.$child_page->getName().'.html">' . $child_page['title'] . '</a>';
$i=$i+1;
}
}
return $child_menu;
}
/**
* @brief Генерирует HTML-блок бокового меню из XML-структуры
* @param object $menuVar XML-объект меню
* @param array $RURLstr Массив сегментов URL для определения вложенности
* @param int $ItemNo Индекс текущего элемента в URL
* @return string Сформированное HTML боковое меню
*/
function GetSideXMLMenu($menuVar,$RURLstr,$ItemNo){
global $config, $path, $_SESSION;
$child_menu = "";
$topURL = '';
if ($ItemNo!=0) {
for ($i = 1; $i <= $ItemNo; $i+=1) {
$topURL .=$RURLstr[$i].'/';
$menuVar =$menuVar->{$RURLstr[$i]};
}
}
$child_menu.='<div class="side-menu-header">';
$child_menu.='<label for="menu-toggle" class="menu-btn close">×</label>';
$child_menu.='<a href="'.$config['server'].'" class="side-home">Home</a>';
$child_menu.='</div>';
foreach ($menuVar->children() as $child_page) {
if (FindPageUser($child_page['users'],$_SESSION['username'])) {
$child_menu.='<a href="'.$config['server'].$topURL.$child_page->getName().'.html" class="side-link">'.$child_page['title'].'</a>';
}
}
return $child_menu;
}
/**
* @brief Проверяет, имеет ли пользователь доступ к странице
* @param string $PageUser Список пользователей, имеющих доступ, через запятую
* @param string $user Имя пользователя
* @return bool true если доступ разрешён, false если нет
*/
function FindPageUser($PageUser,$user){
if ($PageUser==''){
$test =true;
}
else{
$test =false;
$PageUser =explode(',',$PageUser);
for ($i = 0; $i <= count($PageUser)-1; $i+=1){
if ($PageUser[$i]==$user){
$test =true;
}
}
}
return $test;
}
/**
* @brief Разбирает файл XML страницы и возвращает информацию о запрошенном URL
* @param string $FPfile Путь к XML-файлу с описанием страниц
* @param mixed $RURLstr Массив сегментов URL или строка 'error'
* @return array Массив с информацией о странице, включая URL, шаблон, заголовок и плагины
*/
function URLstr($FPfile,$RURLstr){
global $path, $server, $config;
$xmlstr =simplexml_load_file($FPfile);
if (!isset($xmlstr->index)) {
$index = $xmlstr->addChild('index', "\n");
$index->addAttribute('url', 'data/createSite');
$lang = isset($config['lng']) ? $config['lng'] : 'ru';
$titles = [ 'ru' => 'Страница создание нового сайта', 'en' => 'New site creation page', 'lv' => 'Jaunas vietnes izveides lapa' ];
$index->addAttribute('title', isset($titles[$lang]) ? $titles[$lang] : $titles['ru']);
$index->addAttribute('name', 'index');
$index->addAttribute('template', 'MedWait');
$index->addAttribute('PageMenu', '0,1,2');
$index->addAttribute('users', '');
$index->addAttribute('group', '');
$index->addAttribute('news', '');
$index->addAttribute('plugins', '');
$xmlstr->asXML($FPfile);
}
$ansv['sitename'] =$xmlstr->sitename;
$ansv['XML'] =$xmlstr;
$ansv['pageURL'] =$xmlstr->sitename;
$fileURL ='http://'.$_SERVER['HTTP_HOST'];
$ansv['URLLine'] ="";
if ($RURLstr!='error'){
for ($i = 0; $i <= count($RURLstr)-1; $i+=1){
if ($xmlstr->{$RURLstr[$i]}['name']!=''){
if ($i!=count($RURLstr)-1) {
if ($i!=0){
$fileURL .='/'.$xmlstr->{$RURLstr[$i]}->getName();
$end ='.html';
}
else{
$end ='/index.html';
}
$ansv['URLLine'] .= '<a href="'.$fileURL.$end.'" title="'.$xmlstr->{$RURLstr[$i]}['title'].'">'.$xmlstr->{$RURLstr[$i]}['name'].'</a>>>';
}
else{
$ansv['URLLine'] .= $xmlstr->{$RURLstr[$i]}['name'];
$ansv['FileURL'] = $xmlstr->{$RURLstr[$i]}['url'];
$ansv['template'] = $xmlstr->{$RURLstr[$i]}['template'];
$ansv['title'] = $xmlstr->{$RURLstr[$i]}['title'];
$ansv['page'] = $xmlstr->{$RURLstr[$i]};
$ansv['page_plugins'] = (string)($xmlstr->{$RURLstr[$i]}['plugins'] ?? '');
}
$xmlstr = $xmlstr->{$RURLstr[$i]};
}
else {
$ansv['URLLine'] = 'error';
$ansv['FileURL'] = 'error';
}
}
}
return $ansv;
}
/**
* @brief Разбирает файл XML страницы и возвращает информацию о запрошенном URL
* @param string $FPfile Путь к XML-файлу с описанием страниц
* @param mixed $RURLstr Массив сегментов URL или строка 'error'
* @return array Массив с информацией о странице, включая URL, шаблон, заголовок и плагины
*/
function loadPluginsInCenterBlock() {
global $_SESSION, $path, $config;
if ($_SESSION['Login'] == 'true') {
$availablePlugins = ['dgrm', 'SvgEditorM'];
$pluginDir = $path . 'main_plugin/';
if (is_dir($pluginDir)) {
$dirs = array_diff(scandir($pluginDir), ['.', '..']);
foreach ($dirs as $dir) {
if (is_dir($pluginDir . $dir)) {
if (!in_array($dir, $availablePlugins) || strpos($config['page_plugins'] ?? '', $dir) !== false) {
if ($dir === 'SvgEditorM' || $dir === 'dgrm') {
$html .= includePlugin(['plugin' => $dir]);
}
}
}
}
}
}
$html .= includePlugin(['plugin' => 'form_editor']);
return $html;
}
?>

View File

@@ -1,113 +0,0 @@
<?php
$lang_Basic_functions = [
'ru' => [
'error' => 'Ошибка',
'message' => 'Сообщение:',
'ok' => 'ОК',
'cancel' => 'Отмена',
'yes' => 'Да',
'no' => 'Нет',
'main_block_saved' => 'Изменения главного блока сохранились!',
'main_block_not_saved' => 'Изменения главного блока не сохранились!',
'plugins_not_saved' => 'Плагины не сохранились!',
'page_must_end_with_page_php' => 'Страница должна заканчиваться на ".page.php"!',
'save_file_as' => 'Сохранить файл как:',
'file' => 'Файл',
'exists_overwrite_prompt' => 'уже существует. Перезаписать?',
'new_file' => 'Новый файл!',
'file_save_failed' => 'Не удалось сохранить файл!',
'changes_saved_successfully' => 'Изменения успешно сохранены!',
'data_save_error' => 'Ошибка сохранения данных!',
'created_successfully' => 'успешно создан!',
'file_creation_error' => 'Ошибка при создании файла',
'folder' => 'Папка',
'select_file' => 'Выберите файл',
'file_manager_title' => 'Файловый менеджер',
'name' => 'Имя',
'save' => 'Сохранить',
'open' => 'Открыть',
'choose' => 'Выбрать',
'column_size_bytes' => 'Размер (байт)',
'column_creation_date' => 'Дата создания',
'plugin_title_empty_error' => 'Заголовок пустой!',
'open_page' => 'Откройте страницу на сайте, а не через менеджер, чтобы сохранить заголовки!',
'enter_new_title' => 'Введите новый заголовок:',
'title_saved' => 'Заголовок сохранён!',
'new_file' => 'Новый файл'
],
'en' => [
'error' => 'Error',
'message' => 'Message:',
'ok' => 'OK',
'cancel' => 'Cancel',
'yes' => 'Yes',
'no' => 'No',
'main_block_saved' => 'Main block changes saved!',
'main_block_not_saved' => 'Main block changes not saved!',
'plugins_not_saved' => 'Plugins not saved!',
'page_must_end_with_page_php' => 'Page must end with ".page.php"!',
'save_file_as' => 'Save file as:',
'file' => 'File',
'exists_overwrite_prompt' => 'already exists. Overwrite?',
'new_file' => 'New file!',
'file_save_failed' => 'Failed to save file!',
'changes_saved_successfully' => 'Changes saved successfully!',
'data_save_error' => 'Data save error!',
'created_successfully' => 'created successfully!',
'file_creation_error' => 'Error creating file',
'folder' => 'Folder',
'select_file' => 'Select file',
'file_manager_title' => 'File Manager',
'name' => 'Name',
'save' => 'Save',
'open' => 'Open',
'choose' => 'Choose',
'column_size_bytes' => 'Size (bytes)',
'column_creation_date' => 'Creation Date',
'plugin_title_empty_error' => 'Title is empty!',
'open_page' => 'Open the page on the website, not through the manager, to save the headings!',
'enter_new_title' => 'Enter a new title:',
'title_saved' => 'Title saved!',
'new_file' => 'Jauns fails'
],
'lv' => [
'error' => 'Kļūda',
'message' => 'Ziņojums:',
'ok' => 'Ok',
'cancel' => 'Atcelt',
'yes' => 'Jā',
'no' => 'Nē',
'main_block_saved' => 'Galvenā bloka izmaiņas saglabātas!',
'main_block_not_saved' => 'Galvenā bloka izmaiņas nesaglabājās!',
'plugins_not_saved' => 'Spraudņi nav saglabāti!',
'page_must_end_with_page_php' => 'Lapa jābeidz ar ".page.php"!',
'save_file_as' => 'Saglabāt kā failu:',
'file' => 'Fails',
'exists_overwrite_prompt' => 'jau pastāv. Pārrakstīt?',
'new_file' => 'Jauns fails!',
'file_save_failed' => 'Neizdevās saglabāt failu!',
'changes_saved_successfully' => 'Izmaiņas veiksmīgi saglabātas!',
'data_save_error' => 'Datu saglabāšanas kļūda!',
'created_successfully' => 'veiksmīgi izveidots!',
'file_creation_error' => 'Kļūda, izveidojot failu',
'folder' => 'Mape',
'select_file' => 'Izvēlieties failu',
'file_manager_title' => 'Failu pārvaldnieks',
'name' => 'Nosaukums',
'save' => 'Saglabāt',
'open' => 'Atvērt',
'choose' => 'Izvēlēties',
'column_size_bytes' => 'Izmērs (baiti)',
'column_creation_date' => 'Izveides datums',
'plugin_title_empty_error' => 'Virsraksts ir tukšs!',
'open_page' => 'Atveriet lapu vietnē, nevis caur pārvaldnieku, lai saglabātu virsrakstus!',
'enter_new_title' => 'Ievadiet jauno virsrakstu:',
'title_saved' => 'Virsraksts saglabāts!',
'new_file' => 'Jauns fails'
],
];
return $lang_Basic_functions;

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<users>
<users>
<user name="svjatoslavyeliseev2@gmail.com" pass="svjatoslavyeliseev2@gmail.com" access="" email="svjatoslavyeliseev2@gmail.com" link="1d17bfc70bf2def3c091e17e3779d85e"/>
<user name="srgar" pass="srgar" access="" email="vjatoslavyeliseev2@gmail.com" link="aff04c580bdd5d9bc44379e52468880d"/>
</users>
</users>

View File

@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<page>
<general>
<!--Kлючевые слова-->
<keywords></keywords>
</general>
<!--Содержание страницы-->
<!--Левые блоки-->
<lblock>
</lblock>
<!--Правые блоки-->
<rblock>
</rblock>
<!--Текст страницы-->
<content tclass="btitle" bclass="bfloat">
<ru><![CDATA[]]></ru>
<lv><![CDATA[]]></lv>
<en><![CDATA[]]></en>
</content>
</page>

View File

@@ -1,196 +0,0 @@
#hbody {
text-align :center;
position :fixed;
width :-webkit-fill-available;
height :1.2em;
padding: 2px 25px;
background :rgb(237,232,237);
background-image :linear-gradient(bottom, rgb(194,194,194) 15%, rgb(237,232,237) 57%);
background-image :-o-linear-gradient(bottom, rgb(194,194,194) 15%, rgb(237,232,237) 57%);
background-image :-moz-linear-gradient(bottom, rgb(194,194,194) 15%, rgb(237,232,237) 57%);
background-image :-webkit-linear-gradient(bottom, rgb(194,194,194) 15%, rgb(237,232,237) 57%);
background-image :-ms-linear-gradient(bottom, rgb(194,194,194) 15%, rgb(237,232,237) 57%);
background-image :-webkit-gradient(linear, left bottom, left top, color-stop(0.15, rgb(194,194,194)), color-stop(0.57, rgb(237,232,237)));
color :#666;
text-shadow :1px 1px 3px #666, -1px -1px 3px #FFF, 1px 1px #666, -1px -1px #FFF;
/*
font-family :Arial, Tahoma, Verdana, sans-serif;
*/
font-size :1.3em;
top :0px;
z-index :1000;
white-space: nowrap;
}
.side-link{
white-space: normal;
overflow-wrap: break-word;
word-break: break-word;
padding: 10px 20px 10px 20px;
}
.side-menu-header{
padding: 30px 20px 20px 20px;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.15, rgb(233 233 233)), color-stop(0.57, rgb(194 194 194)));
}
/*- меню страниц */
.menu-btn {
cursor: pointer;
position: relative;
float: right;
margin-left: 9px;
}
.side-menu {
position: fixed;
top: 0;
right: -100%;
width: 70%;
max-width: 13em;
height: 100%;
box-sizing: border-box;
transition: left 0.3s ease;
display: flex;
flex-direction: column;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.15, rgb(194, 194, 194)), color-stop(0.57, rgb(237, 232, 237)));
z-index: 1006;
}
.menu-toggle {
font-size: 2em;
margin: -3px 0px 0px 0px;
}
.menu-toggle:checked ~ .side-menu {
right: 0;
}
#overlay {
position: fixed;
top: 0; left: 0; right: 0; bottom: 0;
background: rgba(0, 0, 0, 0.2);
pointer-events: none;
opacity: 0;
transition: opacity 0.3s ease;
z-index: 1005;
}
#overlay.active {
pointer-events: auto;
opacity: 1;
}
#shome{
position :relative;
float :left;
}
#smenu{
position: relative;
margin: 0px auto;
overflow: hidden;
display: inline-block;
margin: 0px 10px;
padding: 0px 3px;
}
#slng{
text-transform :uppercase;
position :relative;
float :right;
}
#slng ul li a,
#slng ul li a:visited {
display :block;
text-decoration :none;
text-align :center;
line-height :20px;
overflow :hidden;
}
#slng ul {
padding :0;
margin :0;
list-style :none;
}
#slng ul li {
float :left;
position :relative;
}
#slng ul li ul {
display :none;
background :rgb(237,232,237);
position: absolute;
right: 4px;
}
/* specific to non IE browsers */
#slng ul li:hover a { }
#slng ul li:hover ul {
display :block;
}
#slng ul li:hover ul li a.hide { }
#slng ul li:hover ul li:hover a.hide { }
#slng ul li:hover ul li ul {
display :none;
}
#slng ul li:hover ul li a {
display :block;
}
#slng ul li:hover ul li a:hover { }
#slng ul li:hover ul li:hover ul {
display :block;
position :absolute;
left :50px;
top :0;
}
#slng ul li:hover ul li:hover ul.left {
left :-105px;
}
#f button{
color :#666;
background :none;
cursor :pointer;
border :0;
text-shadow :1px 1px 3px #666,
-1px -1px 3px #FFF,
1px 1px #666,
-1px -1px #FFF;
font-family :serif;
font-size :1em;
}
#f, #f button{
display :inline;
margin :1px;
padding :0;
}
#f button:hover{
color :rgb(153,153,153);
text-shadow :-1px -1px #666,
1px 1px #FFF;
}
#hbody a{
color :#666;
text-shadow :1px 1px 3px #666,
-1px -1px 3px #FFF,
1px 1px #666,
-1px -1px #FFF;
text-decoration :none;
}
#hbody a:hover{
color :rgb(153,153,153);
text-shadow :-1px -1px #666,
1px 1px #FFF;
}

View File

@@ -1,31 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=%encoding%" />
<title>%sitename%</title>
<link rel="icon" type="image/ico" href="%icon%" />
<link href="%server%template/%template%/css.php" rel="stylesheet" type="text/css" />
<link href="%server%data/footer.css.php" rel="stylesheet" type="text/css" />
<link href="%server%data/top.css.php" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="hbody">
<div id="shome">
<a href="%server%">Home</a>
</div>
<div id="smenu">
%TopMenu%
</div>
<input type="checkbox" id="menu-toggle" class="menu-toggle" hidden>
<label for="menu-toggle" class="menu-btn open"></label>
<nav class="side-menu">
%sideMenu%
</nav>
<div id="overlay"></div>
<div id="slng">
%LngMenu%
</div>
</div>
</body>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<users>
<users>
<user name="Admin" pass="b09c600fddc573f117449b3723f23d64" access="Admin, creatingAccounts" email="mail9182298@gmail.com"/>
<user name="Admin2" pass="b09c600fddc573f117449b3723f23d64" access="Admin" email="svjatoslavyeliseev@gmail.com"/>
<user name="test" pass="b09c600fddc573f117449b3723f23d64" access="" email="svjatoslavyeliseev@gmail.com"/>
<user name="test2" pass="b09c600fddc573f117449b3723f23d64" access="" email="svjatoslavyeliseev@gmail.com"/>
</users>
</users>

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 570 720">
<path fill="#000" d="m158.38,1.6562c-3.6193,0.11232-7.5172,1.4493-11.938,4.9375-10.83-4.1763-21.33-5.6271-30.72,2.8751-14.5-1.8808-19.212,2.0002-22.782,6.5312-3.183-0.066-23.819-3.272-33.282,10.844-23.781-2.814-31.297,13.988-22.781,29.656-4.8569,7.519-9.8895,14.947,1.4688,29.281-4.018,7.9835-1.5274,16.644,7.9375,27.125-2.4979,11.223,2.4121,19.141,11.219,25.312-1.6471,15.358,14.084,24.287,18.781,27.469,1.8037,8.9487,5.5629,17.393,23.531,22.062,2.9632,13.336,13.762,15.639,24.219,18.438-34.562,20.09-64.201,46.523-64,111.38l-5.0625,9.0312c-39.63,24.1-75.285,101.56-19.53,164.52,3.6419,19.708,9.7496,33.864,15.188,49.531,8.1338,63.131,61.218,92.692,75.219,96.188,20.517,15.628,42.368,30.457,71.938,40.844,27.875,28.749,58.074,39.706,88.438,39.688,0.44515-0.00028,0.89853,0.005,1.3438,0,30.364,0.0189,60.562-10.938,88.438-39.688,29.569-10.387,51.421-25.216,71.938-40.844,14.001-3.4959,67.085-33.057,75.219-96.188,5.4379-15.667,11.546-29.823,15.188-49.531,55.754-62.965,20.1-140.43-19.531-164.53l-5.07-9.03c0.20067-64.852-29.438-91.285-64-111.38,10.457-2.7984,21.256-5.1014,24.219-18.438,17.968-4.6698,21.728-13.114,23.531-22.062,4.6978-3.1813,20.428-12.111,18.781-27.469,8.8067-6.1716,13.717-14.09,11.219-25.312,9.4649-10.481,11.956-19.141,7.9375-27.125,11.36-14.328,6.32-21.756,1.47-29.275,8.51-15.668,1-32.47-22.79-29.656-9.46-14.116-30.09-10.91-33.28-10.844-3.57-4.531-8.28-8.412-22.78-6.5312-9.39-8.5022-19.89-7.0514-30.72-2.875-12.86-10.148-21.37-2.0133-31.09,1.0624-15.57-5.0877-19.13,1.881-26.78,4.7188-16.98-3.5881-22.14,4.224-30.28,12.469l-9.4688-0.1875c-25.611,15.093-38.334,45.826-42.844,61.625-4.5121-15.802-17.206-46.535-42.812-61.625l-9.4688,0.1875c-8.15-8.245-13.31-16.057-30.29-12.469-7.65-2.8378-11.2-9.8065-26.78-4.7188-6.3797-2.0185-12.247-6.2144-19.156-6z"/>
<path fill="#75a928" d="m107.39,68.056c67.948,35.031,107.45,63.369,129.09,87.504-11.082,44.418-68.896,46.445-90.036,45.199,4.3284-2.0147,7.9399-4.4278,9.2205-8.1357-5.3045-3.7698-24.113-0.39719-37.244-7.7742,5.0441-1.045,7.4035-2.063,9.7629-5.7854-12.406-3.9567-25.769-7.3664-33.628-13.921,4.2413,0.0524,8.2012,0.9488,13.74-2.8927-11.112-5.9882-22.969-10.734-32.181-19.887,5.7452-0.14063,11.939-0.0568,13.74-2.1695-10.17-6.3007-18.751-13.308-25.854-20.972,8.04,0.97052,11.435,0.13478,13.379-1.2656-7.6878-7.8742-17.418-14.523-22.057-24.226,5.9696,2.0575,11.431,2.8451,15.368-0.1808-2.6124-5.8935-13.805-9.3696-20.249-23.142,6.2844,0.60938,12.95,1.3711,14.283,0-2.917-11.884-7.922-18.565-12.831-25.487,13.45-0.2,33.828,0.052,32.905-1.085l-8.3165-8.4973c13.138-3.5372,26.581,0.56816,36.34,3.6159,4.3819-3.4577-0.0776-7.83-5.4238-12.294,11.165,1.4906,21.254,4.0574,30.373,7.5934,4.8724-4.3993-3.1639-8.7987-7.051-13.198,17.249,3.2726,24.557,7.8707,31.82,12.475,5.2694-5.0508,0.30166-9.3433-3.2543-13.74,13.006,4.817,19.705,11.036,26.758,17.175,2.3912-3.2271,6.0749-5.5924,1.6272-13.379,9.2342,5.3227,16.189,11.595,21.334,18.622,5.7134-3.6379,3.4039-8.613,3.4351-13.198,9.5966,7.8065,15.687,16.114,23.142,24.226,1.5017-1.0934,2.8166-4.8017,3.9775-10.667,22.895,22.212,55.246,78.158,8.3165,100.34-39.94-32.94-87.64-56.883-140.5-74.844z"/>
<path fill="#75a928" d="M467.92,68.056c-67.94,35.034-107.44,63.364-129.08,87.504,11.082,44.418,68.896,46.445,90.036,45.199-4.3284-2.0147-7.9399-4.4278-9.2205-8.1357,5.3045-3.7698,24.113-0.39719,37.244-7.7742-5.0441-1.045-7.4035-2.063-9.7629-5.7854,12.406-3.9567,25.769-7.3664,33.628-13.921-4.2413,0.0524-8.2012,0.9488-13.74-2.8927,11.112-5.9882,22.969-10.734,32.181-19.887-5.7452-0.14063-11.939-0.0568-13.74-2.1695,10.17-6.3007,18.751-13.308,25.854-20.972-8.04,0.97052-11.435,0.13478-13.379-1.2656,7.6878-7.8742,17.418-14.523,22.057-24.226-5.9696,2.0575-11.431,2.8451-15.368-0.1808,2.6124-5.8935,13.805-9.3696,20.249-23.142-6.2844,0.60938-12.95,1.3711-14.283,0,2.9223-11.889,7.9275-18.57,12.836-25.492-13.45-0.19973-33.828,0.05235-32.905-1.0848l8.3165-8.4973c-13.138-3.5372-26.581,0.56816-36.34,3.6159-4.3819-3.4577,0.0776-7.83,5.4238-12.294-11.165,1.4906-21.254,4.0574-30.373,7.5934-4.8724-4.3993,3.1639-8.7987,7.051-13.198-17.249,3.2726-24.557,7.8707-31.82,12.475-5.2694-5.0508-0.30166-9.3433,3.2543-13.74-13.006,4.817-19.705,11.036-26.758,17.175-2.3912-3.2271-6.0749-5.5924-1.6272-13.379-9.2342,5.3227-16.189,11.595-21.334,18.622-5.7134-3.6379-3.4039-8.613-3.4351-13.198-9.5966,7.8065-15.687,16.114-23.142,24.226-1.5017-1.0934-2.8166-4.8017-3.9775-10.667-22.895,22.212-55.246,78.158-8.3165,100.34,39.919-32.947,87.616-56.888,140.48-74.849z"/>
<path fill="#bc1142" d="m365.2,521.85a71.956,66.532,0,1,1,-143.91,0,71.956,66.532,0,1,1,143.91,0z" transform="matrix(1.131107,0,0,1.1280497,-43.139135,-68.310983)"/>
<path fill="#bc1142" d="m262.84,276.65a61.875,28.125,0,1,1,-123.75,0,61.875,28.125,0,1,1,123.75,0z" transform="matrix(0.76741684,-1.1613112,2.171115,1.4224368,-560.88858,217.68859)"/>
<path fill="#bc1142" d="m262.84,276.65a61.875,28.125,0,1,1,-123.75,0,61.875,28.125,0,1,1,123.75,0z" transform="matrix(-0.76741684,-1.1613112,-2.171115,1.4224368,1134.8288,213.68859)"/>
<path fill="#bc1142" d="M72.91,342.09c36.41-9.76,12.292,150.63-17.333,137.47-32.587-26.21-43.083-102.97,17.333-137.47z"/>
<path fill="#bc1142" d="m493.68,340.09c-36.414-9.7569-12.292,150.64,17.333,137.48,32.587-26.213,43.083-102.98-17.333-137.48z"/>
<path fill="#bc1142" d="m369.97,220.65c62.835-10.61,115.12,26.722,113.01,94.858-2.0669,26.121-136.16-90.969-113.01-94.858z"/>
<path fill="#bc1142" d="M196.36,218.65c-62.84-10.61-115.12,26.73-113.01,94.86,2.067,26.12,136.16-90.97,113.01-94.86z"/>
<path fill="#bc1142" d="m286.62,202.76c-37.503-0.97548-73.495,27.834-73.582,44.544-0.10462,20.304,29.651,41.093,73.837,41.62,45.123,0.32321,73.916-16.64,74.061-37.594,0.16484-23.74-41.039-48.937-74.317-48.571z"/>
<path fill="#bc1142" d="m288.91,619.12c32.697-1.4271,76.571,10.532,76.657,26.396,0.5427,15.405-39.79,50.211-78.826,49.538-40.427,1.7439-80.069-33.116-79.55-45.199-0.60506-17.716,49.226-31.548,81.719-30.735z"/>
<path fill="#bc1142" d="m168.14,525.1c23.279,28.046,33.891,77.319,14.464,91.844-18.379,11.088-63.012,6.5216-94.736-39.052-21.395-38.242-18.638-77.157-3.6159-88.589,22.464-13.684,57.173,4.799,83.889,35.797z"/>
<path fill="#bc1142" d="m405.02,516.21c-25.187,29.502-39.212,83.31-20.838,100.64,17.568,13.464,64.729,11.582,99.566-36.756,25.296-32.465,16.82-86.682,2.3708-101.08-21.464-16.602-52.277,4.6449-81.099,37.188z"/>
</svg>

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 876 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 793 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 627 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 678 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 691 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 678 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 648 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 738 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 738 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 747 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 710 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -1,267 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="192.53999"
height="36.049999"
id="svg2"
version="1.1"
inkscape:version="0.48.2 r9819"
sodipodi:docname="rpi.svg"
inkscape:export-filename="C:\Documents and Settings\Admin\My Documents\Folders&amp;Shortcut\Portable\OpenServer\domains\rpi\img\rpi_label.png"
inkscape:export-xdpi="270.05038"
inkscape:export-ydpi="270.05038">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.1569609"
inkscape:cx="69.655165"
inkscape:cy="-23.849375"
inkscape:document-units="px"
inkscape:current-layer="g4279"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1280"
inkscape:window-height="744"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1">
<sodipodi:guide
orientation="0,1"
position="212.13203,58.588847"
id="guide3827" />
<sodipodi:guide
orientation="0,1"
position="174.91071,38.303571"
id="guide3829" />
<sodipodi:guide
orientation="0,1"
position="174.24107,38.303571"
id="guide3831" />
<sodipodi:guide
orientation="0,1"
position="207.08127,48.487322"
id="guide3824" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-211.83597,-493.42658)">
<g
id="g4279"
transform="translate(-8.0812204,2.5253814)">
<path
inkscape:connector-curvature="0"
id="path3944"
d="m 224.4089,529.47658 c -5.5973,-32.1144 -11.19461,-32.1144 -11.19461,-32.1144"
style="fill:none;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cscc"
inkscape:connector-curvature="0"
id="path3970"
d="m 239.30556,518.97775 c -0.80339,0.32656 -2.38315,-1.02781 -2.12176,-2.366 0.3961,-2.02784 0.90872,-5.4754 -3.56251,-6.35698 l -3.06975,0"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976"
d="m 256.07298,506.84602 0.0631,12.19684"
style="fill:none;stroke:#000000;stroke-width:3.82744384;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="csc"
inkscape:connector-curvature="0"
id="path3980"
d="m 268.4352,508.75158 c -4.42521,-5.06533 -11.51949,1.72991 -3.0197,4.43864 6.48702,2.0673 0.81861,9.26618 -4.79104,3.9066"
style="fill:none;stroke:#000000;stroke-width:3.77254701;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-7"
d="m 272.90237,506.89365 -3e-5,18.09931"
style="fill:none;stroke:#000000;stroke-width:3.86534524;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0"
d="m 290.44975,498.7451 -0.0632,20.39246"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
id="path4052"
d="m 319.55338,517.70471 c -2.99811,2.68049 -11.11489,1.33515 -11.19921,-5.05241 0.94454,-7.60879 11.46863,-6.96466 12.43175,-0.61735"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-4"
d="m 309.26385,512.69784 11.36415,-0.0631"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-8"
d="m 325.80511,505.56362 -7e-5,13.5108"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-8-8"
d="m 337.20089,505.59519 c -2e-5,4.01486 -5e-5,8.486 -7e-5,13.5108"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-8-2"
d="m 332.40267,505.65832 c -2.48069,-0.0845 -6.00034,3.14953 -6.37666,5.93466"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-8-2-4"
d="m 343.54591,505.7854 c -2.48069,-0.0845 -6.00034,3.14953 -6.37666,5.93466"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="csc"
inkscape:connector-curvature="0"
id="path3976-0-8-2-5"
d="m 358.31939,505.596 c -0.0479,1.73897 0.12125,11.35858 -0.0784,15.40402 -0.17649,3.57623 -6.02006,4.80832 -8.69738,2.39993"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="csc"
inkscape:connector-curvature="0"
id="path3976-0-8-2-5-5"
d="m 349.04938,505.54011 c 0.0479,1.73897 -0.0581,5.29766 0.14153,9.3431 0.17649,3.57623 6.02006,4.80832 8.69738,2.39993"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-8-8-1"
d="m 389.69185,505.56958 c -2e-5,4.01486 -5e-5,8.486 -7e-5,13.5108"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-8-8-15"
d="m 389.41675,499.80582 c -1.4e-4,0.58072 0.29042,-0.57295 0.29042,0.15377"
style="fill:none;stroke:#000000;stroke-width:3.88206148000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
transform="matrix(1.2985783,0,0,1.2255714,-135.86346,-102.60508)"
d="m 421.25,492.0163 c 0,3.29762 -2.5184,5.97088 -5.625,5.97088 -3.1066,0 -5.625,-2.67326 -5.625,-5.97088 0,-3.29763 2.5184,-5.97089 5.625,-5.97089 3.1066,0 5.625,2.67326 5.625,5.97089 z"
sodipodi:ry="5.9708843"
sodipodi:rx="5.625"
sodipodi:cy="492.0163"
sodipodi:cx="415.625"
id="path4277"
style="fill:none;stroke:#000000;stroke-width:1.58535527999999990;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#000000;stroke-width:2.88689828;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="path3025"
sodipodi:cx="14.394673"
sodipodi:cy="-25.06423"
sodipodi:rx="4.5456862"
sodipodi:ry="4.2931485"
d="m 18.94036,-25.06423 c 0,2.37104 -2.035173,4.293149 -4.545687,4.293149 -2.510513,0 -4.5456859,-1.922109 -4.5456859,-4.293149 0,-2.37104 2.0351729,-4.293148 4.5456859,-4.293148 2.510514,0 4.545687,1.922108 4.545687,4.293148 z"
transform="matrix(1.3888433,0,0,1.3823046,229.78789,547.5186)" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#000000;stroke-width:2.88689828;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="path3025-7"
sodipodi:cx="14.394673"
sodipodi:cy="-25.06423"
sodipodi:rx="4.5456862"
sodipodi:ry="4.2931485"
d="m 18.94036,-25.06423 c 0,2.37104 -2.035173,4.293149 -4.545687,4.293149 -2.510513,0 -4.5456859,-1.922109 -4.5456859,-4.293149 0,-2.37104 2.0351729,-4.293148 4.5456859,-4.293148 2.510514,0 4.545687,1.922108 4.545687,4.293148 z"
transform="matrix(1.3888433,0,0,1.3823046,259.24014,547.51859)" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#000100;stroke-width:2.88689828000000000;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="path3025-4"
sodipodi:cx="14.394673"
sodipodi:cy="-25.06423"
sodipodi:rx="4.5456862"
sodipodi:ry="4.2931485"
d="m 18.94036,-25.06423 c 0,2.37104 -2.035173,4.293149 -4.545687,4.293149 -2.510513,0 -4.5456859,-1.922109 -4.5456859,-4.293149 0,-2.37104 2.0351729,-4.293148 4.5456859,-4.293148 2.510514,0 4.545687,1.922108 4.545687,4.293148 z"
transform="matrix(1.3888433,0,0,1.3823046,276.69684,547.64486)" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-4"
d="m 227.39996,499.83321 0.071,19.18439"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
style="fill:none;stroke:#000000;stroke-width:4;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.9848485;stroke-dasharray:none;stroke-dashoffset:0"
d="m 238.70437,505.04351 c 0,2.88492 -2.68271,5.18511 -6.31325,5.22361 l -4.88587,-0.044 -0.10734,-10.38087 5.13496,0.0122 c 3.4867,0.008 6.17143,2.30395 6.17143,5.18887 z"
id="path3025-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csccssc" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-4-1"
d="m 373.20048,499.8334 0.071,19.18439"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
style="fill:none;stroke:#000000;stroke-width:4;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.9848485;stroke-dasharray:none;stroke-dashoffset:0"
d="m 384.50489,505.0437 c 0,2.88492 -2.68271,5.18511 -6.31325,5.22361 l -4.88587,-0.044 -0.10734,-10.38087 5.13496,0.0122 c 3.4867,0.008 6.17143,2.30395 6.17143,5.18887 z"
id="path3025-0-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csccssc" />
<g
id="g3037"
transform="matrix(0.39679659,0,0,0.38394115,294.83292,313.94304)">
<path
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 281.94244,495.07026 c -0.80339,0.32656 -2.38315,-1.02781 -2.12176,-2.366 0.3961,-2.02784 0.90872,-5.4754 -3.56251,-6.35698 l -3.06975,0"
id="path3970-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cscc" />
<path
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 270.03684,475.92572 0.071,19.18439"
id="path3976-4-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="csccssc"
inkscape:connector-curvature="0"
id="path3025-0-4"
d="m 281.34125,481.13602 c 0,2.88492 -2.68271,5.18511 -6.31325,5.22361 l -4.88587,-0.044 -0.10734,-10.38087 5.13496,0.0122 c 3.4867,0.008 6.17143,2.30395 6.17143,5.18887 z"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.9848485;stroke-dasharray:none;stroke-dashoffset:0" />
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 446 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 451 KiB

View File

@@ -1,213 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="192.53999"
height="36.049999"
id="svg2"
version="1.1"
inkscape:version="0.48.2 r9819"
sodipodi:docname="rpi.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="124.21449"
inkscape:cy="78.636891"
inkscape:document-units="px"
inkscape:current-layer="g4279"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1280"
inkscape:window-height="744"
inkscape:window-x="-4"
inkscape:window-y="-4"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-211.83597,-493.42658)">
<g
id="g4279"
transform="translate(-8.0812204,2.5253814)">
<path
inkscape:connector-curvature="0"
id="path3944"
d="m 224.4089,529.47658 c -5.5973,-32.1144 -11.19461,-32.1144 -11.19461,-32.1144"
style="fill:none;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cczcc"
inkscape:connector-curvature="0"
id="path3946"
d="m 223.68422,519.05129 c 0,-22.04312 0.0631,-19.0758 0.0631,-19.0758 0,0 9.27101,-1.26676 10.4818,3.36878 1.2108,4.63554 -4.04225,6.27403 -4.04225,6.27403 l -6.56574,0.0645"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cscc"
inkscape:connector-curvature="0"
id="path3970"
d="m 235.86992,519.04285 c -1.07535,-0.33501 -1.83791,-1.43433 -1.8539,-2.69893 -0.0587,-4.6381 -0.67562,-5.74853 -4.52267,-6.45557 l -1.89404,-0.12627"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3972"
d="m 251.21162,508.62565 c -14.71035,-12.50063 -15.79377,19.80838 -0.12627,7.44987"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976"
d="m 251.40102,505.7846 0.0631,13.32139"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="csc"
inkscape:connector-curvature="0"
id="path3980"
d="m 266.35176,507.71495 c -4.42521,-5.69454 -11.51949,1.94479 -3.0197,4.99 6.48702,2.32409 0.81861,10.41721 -4.79104,4.39187"
style="fill:none;stroke:#000000;stroke-width:3.89852786000000020;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3972-1"
d="m 273.51369,508.7184 c 14.71035,-12.50063 15.79377,19.80838 0.12627,7.44987"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-7"
d="m 272.90237,505.61065 -3e-5,19.38231"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0"
d="m 290.44975,498.7451 -0.0632,20.39246"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3972-1-9"
d="m 291.44389,508.78154 c 14.71035,-12.50063 15.79377,19.80838 0.12627,7.44987"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
id="path4052"
d="m 319.90062,517.10494 c -3.97669,3.89508 -11.68311,1.77708 -11.64115,-5.08399 0.051,-8.31979 11.95721,-8.25665 11.8951,-0.36484"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-4"
d="m 308.82191,511.68768 11.36415,-0.0631"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-8"
d="m 325.80511,505.56362 -7e-5,13.5108"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-8-8"
d="m 337.20089,505.59519 c -2e-5,4.01486 -5e-5,8.486 -7e-5,13.5108"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-8-2"
d="m 332.40267,505.65832 c -2.48069,-0.0845 -6.00034,3.14953 -6.37666,5.93466"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-8-2-4"
d="m 343.54591,505.7854 c -2.48069,-0.0845 -6.00034,3.14953 -6.37666,5.93466"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="csc"
inkscape:connector-curvature="0"
id="path3976-0-8-2-5"
d="m 358.31939,505.596 c -0.0479,1.73897 0.12125,11.35858 -0.0784,15.40402 -0.17649,3.57623 -6.02006,4.80832 -8.69738,2.39993"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="csc"
inkscape:connector-curvature="0"
id="path3976-0-8-2-5-5"
d="m 349.04938,505.54011 c 0.0479,1.73897 -0.0581,5.29766 0.14153,9.3431 0.17649,3.57623 6.02006,4.80832 8.69738,2.39993"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cczcc"
inkscape:connector-curvature="0"
id="path3946-7"
d="m 373.6644,519.40818 c 0,-22.04312 0.0631,-19.0758 0.0631,-19.0758 0,0 9.27101,-1.26676 10.4818,3.36878 1.2108,4.63554 -4.04225,6.27403 -4.04225,6.27403 l -6.56574,0.0645"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-8-8-1"
d="m 389.69185,505.56958 c -2e-5,4.01486 -5e-5,8.486 -7e-5,13.5108"
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3976-0-8-8-15"
d="m 389.41675,499.80582 c -1.4e-4,0.58072 0.29042,-0.57295 0.29042,0.15377"
style="fill:none;stroke:#000000;stroke-width:3.88206148000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cczcc"
inkscape:connector-curvature="0"
id="path3946-2"
d="m 401.4096,503.70117 c 0,-7.82628 0.0273,-6.77275 0.0273,-6.77275 0,0 4.01759,-0.44976 4.54229,1.19606 0.5247,1.64582 -1.75171,2.22756 -1.75171,2.22756 l -2.84526,0.0229"
style="fill:none;stroke:#000000;stroke-width:1.56899095000000010;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cscc"
inkscape:connector-curvature="0"
id="path3970-7"
d="m 406.75018,503.70947 c -0.466,-0.11894 -0.79646,-0.50925 -0.80339,-0.95824 -0.0254,-1.64673 -0.29278,-2.04098 -1.9599,-2.29201 l -0.82078,-0.0448"
style="fill:none;stroke:#000000;stroke-width:1.56899095000000010;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
transform="matrix(1.2985783,0,0,1.2255714,-135.86346,-102.60508)"
d="m 421.25,492.0163 c 0,3.29762 -2.5184,5.97088 -5.625,5.97088 -3.1066,0 -5.625,-2.67326 -5.625,-5.97088 0,-3.29763 2.5184,-5.97089 5.625,-5.97089 3.1066,0 5.625,2.67326 5.625,5.97089 z"
sodipodi:ry="5.9708843"
sodipodi:rx="5.625"
sodipodi:cy="492.0163"
sodipodi:cx="415.625"
id="path4277"
style="fill:none;stroke:#000000;stroke-width:1.58535527999999990;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

View File

@@ -1,400 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="diagram" tabindex="0" style="background-position: 338.043px -1360.36px; touch-action: none; background-color: rgb(255, 255, 255); display: block; user-select: none; pointer-events: unset; background-size: 24px 24px;">
<g id="canvas" style="transform: matrix(1, 0, 0, 1, 338.043, -1360.36);"><g class="hovertrack" transform="translate(54,151)" style="transform: translate(132px, 84px);">
<circle data-key="outer" data-evt-no="" data-evt-index="2" r="72" fill="transparent" stroke-width="0"/>
<circle data-key="main" r="48" fill="#ff6600" stroke="#fff" stroke-width="1"/>
<text data-key="text" x="0" y="0em" text-anchor="middle" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">index.php</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(48px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-48px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 48px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -48px);"/></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 180px);" transform="translate(42.20000076293945,243.73333740234375)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="336" height="96" x="-168" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="288" height="48" x="-144" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">Title$path = dirname(__FILE__) . '/';</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(144px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-144px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 132 C 132 147, 132 141, 132 156" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 132 C 132 147, 132 141, 132 156" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 132 C 132 147, 132 141, 132 156" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 132px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 156px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 252px);" transform="translate(-217.8000030517578,245.73333740234375)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="192" height="96" x="-96" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="144" height="48" x="-72" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">session_start();</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(72px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-72px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 204 C 132 219, 132 213, 132 228" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 204 C 132 219, 132 213, 132 228" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 204 C 132 219, 132 213, 132 228" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 204px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 228px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 324px);" transform="translate(-215.8000030517578,235.73333740234375)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="288" height="96" x="-144" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="240" height="48" x="-120" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$_SESSION['access'] = true;</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(120px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-120px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 276 C 132 291, 132 285, 132 300" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 276 C 132 291, 132 285, 132 300" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 276 C 132 291, 132 285, 132 300" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 276px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 300px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 396px);" transform="translate(-262.3999938964844,339)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="336" height="96" x="-168" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="288" height="48" x="-144" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">include_once $path . 'data/func.php';</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(144px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-144px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 348 C 132 363, 132 357, 132 372" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 348 C 132 363, 132 357, 132 372" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 348 C 132 363, 132 357, 132 372" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 348px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 372px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 468px);" transform="translate(-267.20001220703125,347)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="240" height="96" x="-120" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="192" height="48" x="-96" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">includePluginsPhp();</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(96px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-96px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 420 C 132 435, 132 429, 132 444" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 420 C 132 435, 132 429, 132 444" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 420 C 132 435, 132 429, 132 444" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 420px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 444px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 540px);" transform="translate(-226.39999389648438,473.3999938964844)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="144" height="96" x="-72" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="96" height="48" x="-48" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">SetConfig();</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(48px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-48px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 492 C 132 507, 132 501, 132 516" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 492 C 132 507, 132 501, 132 516" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 492 C 132 507, 132 501, 132 516" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 492px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 516px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 612px);" transform="translate(-215.1999969482422,635)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="288" height="96" x="-144" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="240" height="48" x="-120" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$configAdmins = adminsConfig();</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(120px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-120px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 684px);" transform="translate(-213.60000610351562,645.4000244140625)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="1104" height="96" x="-552" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="1056" height="48" x="-528" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$REQUEST_URI = $_SERVER['REQUEST_URI'] === '/' ? GetRequestURL('/index.html')['str'] : GetRequestURL($_SERVER['REQUEST_URI'])['str'];</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(528px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-528px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 756px);" transform="translate(-237.60000610351562,641.4000244140625)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="288" height="96" x="-144" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="240" height="48" x="-120" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$config['lng'] = SetLanguage();</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(120px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-120px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 828px);" transform="translate(-237.60000610351562,649.4000244140625)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="624" height="96" x="-312" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="576" height="48" x="-288" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$ansv = URLstr($path . 'data/filepath.'.$config['lng'].'.php', $REQUEST_URI);</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(288px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-288px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 564 C 132 579, 132 573, 132 588" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 564 C 132 579, 132 573, 132 588" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 564 C 132 579, 132 573, 132 588" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 564px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 588px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 636 C 132 651, 132 645, 132 660" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 636 C 132 651, 132 645, 132 660" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 636 C 132 651, 132 645, 132 660" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 636px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 660px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 708 C 132 723, 132 717, 132 732" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 708 C 132 723, 132 717, 132 732" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 708 C 132 723, 132 717, 132 732" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 708px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 732px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 780 C 132 795, 132 789, 132 804" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 780 C 132 795, 132 789, 132 804" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 780 C 132 795, 132 789, 132 804" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 780px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 804px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 900px);" transform="translate(-324,778.2000122070312)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="336" height="96" x="-168" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="288" height="48" x="-144" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$config['page_url'] = $ansv['FileURL'];</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(144px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-144px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 852 C 132 867, 132 861, 132 876" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 852 C 132 867, 132 861, 132 876" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 852 C 132 867, 132 861, 132 876" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 852px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 876px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(444px, 1044px);" transform="translate(-682.9000244140625,1239.566650390625)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="384" height="96" x="-192" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="336" height="48" x="-168" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$_SESSION['page_url'] = $config['page_url'];</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(168px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-168px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 1116px);" transform="translate(-550.7000122070312,1174.2332763671875)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="192" height="96" x="-96" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="144" height="48" x="-72" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$methodRpc = null;</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(72px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-72px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 444 1068 C 374 1068, 202 1092, 132 1092" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 444 1068 C 374 1068, 202 1092, 132 1092" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 444 1068 C 374 1068, 202 1092, 132 1092" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(444px, 1068px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1092px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect cl-green ta-2" style="transform: translate(132px, 972px);" transform="translate(-732.576171875,1036.8905029296875)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="336" height="96" x="-168" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="288" height="48" x="-144" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">if (!isset($_SESSION['page_url'])) {</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(144px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-144px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 924 C 132 939, 132 933, 132 948" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 924 C 132 939, 132 933, 132 948" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 924 C 132 939, 132 933, 132 948" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 924px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 948px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 996 C 132 1044, 132 1044, 132 1092" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 996 C 132 1044, 132 1044, 132 1092" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 996 C 132 1044, 132 1044, 132 1092" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 996px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1092px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack cl-green shrect ta-2" style="transform: translate(132px, 1188px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="1008" height="96" x="-504" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="960" height="48" x="-480" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">if ($_SERVER["REQUEST_METHOD"] === "POST" &amp;&amp; strpos($_SERVER["CONTENT_TYPE"] ?? "", "application/json") !== false) {</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(480px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-480px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 1140 C 132 1155, 132 1149, 132 1164" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 1140 C 132 1155, 132 1149, 132 1164" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 1140 C 132 1155, 132 1149, 132 1164" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 1140px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1164px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(684px, 1332px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="672" height="96" x="-336" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="624" height="48" x="-312" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$methodRpc = json_decode(file_get_contents("php://input"), true)["method"] ?? null;</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(312px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-312px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="hovertrack shrect ta-2" style="transform: translate(684px, 1260px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="192" height="96" x="-96" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="144" height="48" x="-72" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">jsonrpcRequest();</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(72px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-72px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="hovertrack cl-green shrect ta-2" style="transform: translate(132px, 1404px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="768" height="96" x="-384" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="720" height="48" x="-360" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">if ($_SERVER['REQUEST_METHOD'] === 'POST' &amp;&amp; !empty($_POST['handleRequestAction'])) {</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(360px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-360px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 1212 C 132 1282, 132 1310, 132 1380" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 1212 C 132 1282, 132 1310, 132 1380" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 1212 C 132 1282, 132 1310, 132 1380" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 1212px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1380px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 612 1188 C 655.2666153055678 1188, 640.7333846944322 1236, 684 1236" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 612 1188 C 655.2666153055678 1188, 640.7333846944322 1236, 684 1236" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 612 1188 C 655.2666153055678 1188, 640.7333846944322 1236, 684 1236" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(612px, 1188px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(684px, 1236px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 684 1284 C 684 1299, 684 1293, 684 1308" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 684 1284 C 684 1299, 684 1293, 684 1308" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 684 1284 C 684 1299, 684 1293, 684 1308" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(684px, 1284px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(684px, 1308px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 276 972 C 346 972, 374 1020, 444 1020" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 276 972 C 346 972, 374 1020, 444 1020" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 276 972 C 346 972, 374 1020, 444 1020" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(276px, 972px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(444px, 1020px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 684 1356 C 614 1356, 202 1380, 132 1380" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 684 1356 C 614 1356, 202 1380, 132 1380" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 684 1356 C 614 1356, 202 1380, 132 1380" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(684px, 1356px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1380px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(684px, 1476px);" transform="translate(-590.2428588867188,1215.8905029296875)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="432" height="96" x="-216" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="384" height="48" x="-192" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">handleRequest($_POST['handleRequestAction']);</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(192px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-192px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 492 1404 C 562 1404, 614 1452, 684 1452" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 492 1404 C 562 1404, 614 1452, 684 1452" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 492 1404 C 562 1404, 614 1452, 684 1452" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(492px, 1404px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(684px, 1452px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 1548px);" transform="translate(-590.2428588867188,1231.8905029296875)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="672" height="96" x="-336" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="624" height="48" x="-312" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">setcookie('Login', $_SESSION['Login'] === 'true' ? 'true' : 'false', time() + 2419200, "/");</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(312px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-312px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 1428 C 132 1476, 132 1476, 132 1524" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 1428 C 132 1476, 132 1476, 132 1524" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 1428 C 132 1476, 132 1476, 132 1524" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 1428px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1524px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 684 1500 C 614 1500, 202 1524, 132 1524" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 684 1500 C 614 1500, 202 1524, 132 1524" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 684 1500 C 614 1500, 202 1524, 132 1524" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(684px, 1500px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1524px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 1620px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="480" height="96" x="-240" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="432" height="48" x="-216" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">setcookie('User', $config['User'] ?? '', time() + 2419200, '/');</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(216px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-216px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 1572 C 132 1587, 132 1581, 132 1596" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 1572 C 132 1587, 132 1581, 132 1596" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 1572 C 132 1587, 132 1581, 132 1596" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 1572px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1596px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 1692px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="288" height="96" x="-144" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="240" height="48" x="-120" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$allowed = ['loginUser', 'setLng'];</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(120px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-120px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 1644 C 132 1659, 132 1653, 132 1668" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 1644 C 132 1659, 132 1653, 132 1668" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 1644 C 132 1659, 132 1653, 132 1668" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 1644px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1668px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack cl-green shrect ta-2" style="transform: translate(132px, 1764px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="768" height="96" x="-384" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="720" height="48" x="-360" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="-0.5em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">if (($_POST['handleRequestAction'] &amp;&amp; !in_array($_POST['handleRequestAction'], $allowed)) ||</tspan><tspan x="0" dy="1em">    ($methodRpc &amp;&amp; !in_array($methodRpc, $allowed))) {</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(360px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-360px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 1716 C 132 1731, 132 1725, 132 1740" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 1716 C 132 1731, 132 1725, 132 1740" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 1716 C 132 1731, 132 1725, 132 1740" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 1716px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1740px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(612px, 1836px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="144" height="96" x="-72" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="96" height="48" x="-48" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">exit;</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(48px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-48px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 492 1764 C 556.6219776856141 1764, 547.3780223143859 1812, 612 1812" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 492 1764 C 556.6219776856141 1764, 547.3780223143859 1812, 612 1812" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 492 1764 C 556.6219776856141 1764, 547.3780223143859 1812, 612 1812" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(492px, 1764px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(612px, 1812px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g></g>
</svg>

Before

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -1,400 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" id="diagram" tabindex="0" style="background-position: 338.043px -1360.36px; touch-action: none; background-color: rgb(255, 255, 255); display: block; user-select: none; pointer-events: unset; background-size: 24px 24px;">
<g id="canvas" style="transform: matrix(1, 0, 0, 1, 338.043, -1360.36);"><g class="hovertrack" transform="translate(54,151)" style="transform: translate(132px, 84px);">
<circle data-key="outer" data-evt-no="" data-evt-index="2" r="72" fill="transparent" stroke-width="0"/>
<circle data-key="main" r="48" fill="#ff6600" stroke="#fff" stroke-width="1"/>
<text data-key="text" x="0" y="0em" text-anchor="middle" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">index.php</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(48px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-48px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 48px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -48px);"/></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 180px);" transform="translate(42.20000076293945,243.73333740234375)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="336" height="96" x="-168" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="288" height="48" x="-144" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">Title$path = dirname(__FILE__) . '/';</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(144px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-144px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 132 C 132 147, 132 141, 132 156" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 132 C 132 147, 132 141, 132 156" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 132 C 132 147, 132 141, 132 156" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 132px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 156px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 252px);" transform="translate(-217.8000030517578,245.73333740234375)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="192" height="96" x="-96" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="144" height="48" x="-72" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">session_start();</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(72px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-72px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 204 C 132 219, 132 213, 132 228" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 204 C 132 219, 132 213, 132 228" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 204 C 132 219, 132 213, 132 228" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 204px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 228px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 324px);" transform="translate(-215.8000030517578,235.73333740234375)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="288" height="96" x="-144" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="240" height="48" x="-120" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$_SESSION['access'] = true;</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(120px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-120px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 276 C 132 291, 132 285, 132 300" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 276 C 132 291, 132 285, 132 300" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 276 C 132 291, 132 285, 132 300" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 276px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 300px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 396px);" transform="translate(-262.3999938964844,339)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="336" height="96" x="-168" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="288" height="48" x="-144" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">include_once $path . 'data/func.php';</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(144px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-144px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 348 C 132 363, 132 357, 132 372" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 348 C 132 363, 132 357, 132 372" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 348 C 132 363, 132 357, 132 372" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 348px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 372px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 468px);" transform="translate(-267.20001220703125,347)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="240" height="96" x="-120" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="192" height="48" x="-96" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">includePluginsPhp();</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(96px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-96px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 420 C 132 435, 132 429, 132 444" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 420 C 132 435, 132 429, 132 444" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 420 C 132 435, 132 429, 132 444" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 420px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 444px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 540px);" transform="translate(-226.39999389648438,473.3999938964844)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="144" height="96" x="-72" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="96" height="48" x="-48" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">SetConfig();</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(48px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-48px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 492 C 132 507, 132 501, 132 516" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 492 C 132 507, 132 501, 132 516" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 492 C 132 507, 132 501, 132 516" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 492px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 516px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 612px);" transform="translate(-215.1999969482422,635)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="288" height="96" x="-144" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="240" height="48" x="-120" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$configAdmins = adminsConfig();</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(120px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-120px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 684px);" transform="translate(-213.60000610351562,645.4000244140625)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="1104" height="96" x="-552" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="1056" height="48" x="-528" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$REQUEST_URI = $_SERVER['REQUEST_URI'] === '/' ? GetRequestURL('/index.html')['str'] : GetRequestURL($_SERVER['REQUEST_URI'])['str'];</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(528px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-528px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 756px);" transform="translate(-237.60000610351562,641.4000244140625)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="288" height="96" x="-144" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="240" height="48" x="-120" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$config['lng'] = SetLanguage();</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(120px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-120px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 828px);" transform="translate(-237.60000610351562,649.4000244140625)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="624" height="96" x="-312" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="576" height="48" x="-288" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$ansv = URLstr($path . 'data/filepath.'.$config['lng'].'.php', $REQUEST_URI);</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(288px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-288px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 564 C 132 579, 132 573, 132 588" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 564 C 132 579, 132 573, 132 588" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 564 C 132 579, 132 573, 132 588" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 564px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 588px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 636 C 132 651, 132 645, 132 660" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 636 C 132 651, 132 645, 132 660" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 636 C 132 651, 132 645, 132 660" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 636px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 660px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 708 C 132 723, 132 717, 132 732" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 708 C 132 723, 132 717, 132 732" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 708 C 132 723, 132 717, 132 732" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 708px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 732px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 780 C 132 795, 132 789, 132 804" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 780 C 132 795, 132 789, 132 804" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 780 C 132 795, 132 789, 132 804" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 780px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 804px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 900px);" transform="translate(-324,778.2000122070312)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="336" height="96" x="-168" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="288" height="48" x="-144" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$config['page_url'] = $ansv['FileURL'];</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(144px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-144px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 852 C 132 867, 132 861, 132 876" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 852 C 132 867, 132 861, 132 876" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 852 C 132 867, 132 861, 132 876" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 852px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 876px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(444px, 1044px);" transform="translate(-682.9000244140625,1239.566650390625)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="384" height="96" x="-192" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="336" height="48" x="-168" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$_SESSION['page_url'] = $config['page_url'];</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(168px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-168px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 1116px);" transform="translate(-550.7000122070312,1174.2332763671875)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="192" height="96" x="-96" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="144" height="48" x="-72" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$methodRpc = null;</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(72px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-72px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 444 1068 C 374 1068, 202 1092, 132 1092" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 444 1068 C 374 1068, 202 1092, 132 1092" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 444 1068 C 374 1068, 202 1092, 132 1092" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(444px, 1068px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1092px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect cl-green ta-2" style="transform: translate(132px, 972px);" transform="translate(-732.576171875,1036.8905029296875)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="336" height="96" x="-168" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="288" height="48" x="-144" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">if (!isset($_SESSION['page_url'])) {</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(144px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-144px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 924 C 132 939, 132 933, 132 948" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 924 C 132 939, 132 933, 132 948" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 924 C 132 939, 132 933, 132 948" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 924px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 948px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 996 C 132 1044, 132 1044, 132 1092" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 996 C 132 1044, 132 1044, 132 1092" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 996 C 132 1044, 132 1044, 132 1092" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 996px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1092px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack cl-green shrect ta-2" style="transform: translate(132px, 1188px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="1008" height="96" x="-504" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="960" height="48" x="-480" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">if ($_SERVER["REQUEST_METHOD"] === "POST" &amp;&amp; strpos($_SERVER["CONTENT_TYPE"] ?? "", "application/json") !== false) {</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(480px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-480px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 1140 C 132 1155, 132 1149, 132 1164" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 1140 C 132 1155, 132 1149, 132 1164" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 1140 C 132 1155, 132 1149, 132 1164" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 1140px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1164px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(684px, 1332px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="672" height="96" x="-336" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="624" height="48" x="-312" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$methodRpc = json_decode(file_get_contents("php://input"), true)["method"] ?? null;</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(312px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-312px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="hovertrack shrect ta-2" style="transform: translate(684px, 1260px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="192" height="96" x="-96" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="144" height="48" x="-72" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">jsonrpcRequest();</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(72px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-72px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="hovertrack cl-green shrect ta-2" style="transform: translate(132px, 1404px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="768" height="96" x="-384" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="720" height="48" x="-360" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">if ($_SERVER['REQUEST_METHOD'] === 'POST' &amp;&amp; !empty($_POST['handleRequestAction'])) {</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(360px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-360px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 1212 C 132 1282, 132 1310, 132 1380" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 1212 C 132 1282, 132 1310, 132 1380" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 1212 C 132 1282, 132 1310, 132 1380" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 1212px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1380px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 612 1188 C 655.2666153055678 1188, 640.7333846944322 1236, 684 1236" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 612 1188 C 655.2666153055678 1188, 640.7333846944322 1236, 684 1236" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 612 1188 C 655.2666153055678 1188, 640.7333846944322 1236, 684 1236" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(612px, 1188px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(684px, 1236px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 684 1284 C 684 1299, 684 1293, 684 1308" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 684 1284 C 684 1299, 684 1293, 684 1308" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 684 1284 C 684 1299, 684 1293, 684 1308" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(684px, 1284px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(684px, 1308px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 276 972 C 346 972, 374 1020, 444 1020" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 276 972 C 346 972, 374 1020, 444 1020" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 276 972 C 346 972, 374 1020, 444 1020" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(276px, 972px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(444px, 1020px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 684 1356 C 614 1356, 202 1380, 132 1380" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 684 1356 C 614 1356, 202 1380, 132 1380" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 684 1356 C 614 1356, 202 1380, 132 1380" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(684px, 1356px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1380px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(684px, 1476px);" transform="translate(-590.2428588867188,1215.8905029296875)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="432" height="96" x="-216" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="384" height="48" x="-192" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">handleRequest($_POST['handleRequestAction']);</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(192px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-192px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 492 1404 C 562 1404, 614 1452, 684 1452" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 492 1404 C 562 1404, 614 1452, 684 1452" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 492 1404 C 562 1404, 614 1452, 684 1452" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(492px, 1404px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(684px, 1452px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 1548px);" transform="translate(-590.2428588867188,1231.8905029296875)">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="672" height="96" x="-336" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="624" height="48" x="-312" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">setcookie('Login', $_SESSION['Login'] === 'true' ? 'true' : 'false', time() + 2419200, "/");</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(312px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-312px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 1428 C 132 1476, 132 1476, 132 1524" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 1428 C 132 1476, 132 1476, 132 1524" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 1428 C 132 1476, 132 1476, 132 1524" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 1428px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1524px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 684 1500 C 614 1500, 202 1524, 132 1524" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 684 1500 C 614 1500, 202 1524, 132 1524" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 684 1500 C 614 1500, 202 1524, 132 1524" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(684px, 1500px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1524px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 1620px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="480" height="96" x="-240" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="432" height="48" x="-216" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">setcookie('User', $config['User'] ?? '', time() + 2419200, '/');</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(216px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-216px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 1572 C 132 1587, 132 1581, 132 1596" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 1572 C 132 1587, 132 1581, 132 1596" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 1572 C 132 1587, 132 1581, 132 1596" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 1572px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1596px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(132px, 1692px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="288" height="96" x="-144" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="240" height="48" x="-120" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">$allowed = ['loginUser', 'setLng'];</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(120px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-120px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 1644 C 132 1659, 132 1653, 132 1668" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 1644 C 132 1659, 132 1653, 132 1668" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 1644 C 132 1659, 132 1653, 132 1668" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 1644px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1668px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack cl-green shrect ta-2" style="transform: translate(132px, 1764px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="768" height="96" x="-384" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="720" height="48" x="-360" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="-0.5em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">if (($_POST['handleRequestAction'] &amp;&amp; !in_array($_POST['handleRequestAction'], $allowed)) ||</tspan><tspan x="0" dy="1em">    ($methodRpc &amp;&amp; !in_array($methodRpc, $allowed))) {</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(360px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-360px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 132 1716 C 132 1731, 132 1725, 132 1740" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 132 1716 C 132 1731, 132 1725, 132 1740" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 132 1716 C 132 1731, 132 1725, 132 1740" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(132px, 1716px) rotate(270deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(132px, 1740px) rotate(90deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g><g class="hovertrack shrect ta-2" style="transform: translate(612px, 1836px);">
<rect data-key="outer" data-evt-no="" data-evt-index="2" width="144" height="96" x="-72" y="-48" fill="transparent" stroke="transparent" stroke-width="0"/>
<rect data-key="main" width="96" height="48" x="-48" y="-24" rx="15" ry="15" fill="#1aaee5" stroke="#fff" stroke-width="1"/>
<text data-key="text" y="0em" x="0" style="pointer-events: none;" fill="#fff"><tspan x="0" dy="0.41em">exit;</tspan></text>
<circle data-key="right" data-connect="right" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(48px, 0px);"/>,<circle data-key="left" data-connect="left" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(-48px, 0px);"/>,<circle data-key="bottom" data-connect="bottom" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, 24px);"/>,<circle data-key="top" data-connect="top" class="hovertrack" data-evt-index="2" r="10" cx="0" cy="0" style="transform: translate(0px, -24px);"/></g><g class="shpath arw-e" style="pointer-events: unset;">
<path data-key="outer" d="M 492 1764 C 556.6219776856141 1764, 547.3780223143859 1812, 612 1812" stroke="transparent" stroke-width="20" fill="none"/>
<path data-key="path" class="path" d="M 492 1764 C 556.6219776856141 1764, 547.3780223143859 1812, 612 1812" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
<path data-key="selected" d="M 492 1764 C 556.6219776856141 1764, 547.3780223143859 1812, 612 1812" stroke="transparent" stroke-width="10" fill="none" style="pointer-events: none;"/>
<g data-key="start" style="transform: translate(492px, 1764px) rotate(180deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g>
<g data-key="end" style="transform: translate(612px, 1812px) rotate(0deg);">
<circle data-evt-index="1" class="path-end" r="10" stroke-width="0" fill="transparent"/>
<path class="path" d="M-7 7 l 7 -7 l -7 -7" stroke="#495057" stroke-width="1.8" fill="none" style="pointer-events: none;"/>
</g></g></g>
</svg>

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 KiB

View File

@@ -1,88 +0,0 @@
#message {
color: rgb(255, 255, 255);
font-size: 3em;
text-align: center;
}
.sidebar {
display: flex;
flex-direction: column;
height: 80vh;
}
.sidebar__menu {
width: 100px;
float: left;
background-color: #f0f0f0;
box-sizing: border-box;
}
#main {
margin: 7px 10px 7px 110px;
background-color: #ffffff;
box-sizing: border-box;
}
.sidebar__title {
font-size: 1.5em;
text-align: center;
}
.sidebar__buttons {
font-size: 1.3em;
display: flex;
flex-direction: column;
}
.sidebar__button {
border: solid;
text-align: center;
padding: 5px;
margin: 5px;
border: 1px solid rgb(0, 0, 0);
}
.sidebar__shapes {
font-size: 1.3em;
margin-top: 0.5em;
display: flex;
flex-direction: column;
}
.sidebar__shape {
border: solid;
text-align: center;
padding: 5px;
margin: 5px;
border: 1px solid rgb(0, 0, 0);
}
.sidebar__selectors {
display: flex;
flex-direction: column;
margin-top: 0.5em;
font-size: 1.3em;
}
.sidebar__selector {
border: solid;
text-align: center;
padding: 5px;
margin: 5px;
border: 1px solid rgb(0, 0, 0);
}
.sidebar__selector.active {
background-color: #e4e4e4;
}
.sidebar__footer {
text-align: center;
margin-top: auto;
}
.main {
height: 600px;
}
.selection {
position: absolute;
display: none;
outline: rgb(153, 153, 255) solid 2px;
pointer-events: none;
left: 333.617px;
top: 55px;
width: 175.5px;
height: 175.5px;
}

View File

@@ -1,762 +0,0 @@
/**
* @file SvgEditorM.js
* @brief Основной файл SvgEditorM, реализует функционал редактирования SVG-графики на сайте
*/
/**
* @brief Базовый SVG-элемент
* @param width Ширина
* @param height Высота
* @param posX Позиция X
* @param posY Позиция Y
* @param id ID элемента
* @param type Тип SVG-элемента
*/
class SVGElement {
constructor({ width, height, posX, posY, id, type } = {}) {
this.width = width || 100;
this.height = height || 100;
this.posX = posX || 100;
this.posY = posY || 100;
this.id = id || `svgElement_${Date.now()}`;
this.type = type || 'svg';
this.domNode = this.createSVGDOMNode(this.type);
}
createSVGDOMNode(type) {
let { height, width, posY, posX, id } = this;
let svg = document.createElementNS('http://www.w3.org/2000/svg', type);
svg.setAttribute('style', 'border: 1px solid black; box-sizing: border-box;');
svg.setAttribute('id', id);
if (type !== 'svg') {
svg.setAttribute('x', posX);
svg.setAttribute('y', posY);
svg.setAttribute('width', width);
svg.setAttribute('height', height);
} else {
svg.setAttribute('width', width);
svg.setAttribute('height', height);
}
svg.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', 'http://www.w3.org/1999/xlink');
return svg;
}
}
/**
* @brief Класс для модификации SVG-элементов
*/
class SVGElementModifier {
static moveSelectedElement({ handler, event }) {
const { selected, selector, editor, offset } = handler;
const { clientX, clientY } = event;
if (selected) {
if (selected.tagName.toLowerCase() === 'circle') {
selected.setAttribute('cx', clientX + offset.x);
selected.setAttribute('cy', clientY + offset.y);
} else {
selected.setAttribute('x', clientX + offset.x);
selected.setAttribute('y', clientY + offset.y);
selector.updateSelection(selected, editor);
}
selector.updateSelection(selected);
}
}
static deselectElement({ handler }) {
handler.selected = null;
}
static toggelHoveredElement({ handler, target }) {
return handler.selector.updateSelection(target, handler.editor);
}
static selectElement({ handler, event }) {
let { target, clientX, clientY } = event;
const { selector, editor } = handler;
if (selector.isSelectable(target, editor)) {
handler.offset.x = parseFloat(target.getAttribute('x')) - clientX || 0;
handler.offset.y = parseFloat(target.getAttribute('y')) - clientY || 0;
handler.selected = target;
}
}
}
/**
* @brief Прямоугольник
* @param posX Позиция X
* @param posY Позиция Y
* @param width Ширина
* @param height Высота
* @param id ID элемента
*/
class Rect extends SVGElement {
constructor({ posX, posY, width, height, id } = {}) {
super({ type: 'rect', posX, posY, width, height, id });
this.domNode.setAttribute('width', width || 100);
this.domNode.setAttribute('height', height || 100);
this.domNode.setAttribute('x', posX || 100);
this.domNode.setAttribute('y', posY || 100);
this.domNode.setAttribute('fill', 'rgba(0,120,200,0.2)');
this.domNode.setAttribute('stroke', '#0078c8');
}
}
/**
* @brief Класс выбора фигур
* @param id ID селектора
*/
class ShapeSelector {
constructor(id) {
this.id = id;
this.selectorElem = document.getElementById(this.id);
}
isSelectable(element, area) {
if (!element) return false;
if (element.isSameNode(area)) return false;
const tag = element.tagName ? element.tagName.toLowerCase() : '';
return (tag === 'rect' || tag === 'circle' || tag === 'g' || tag === 'path' || tag === 'ellipse');
}
toggleSelectionOverElement(element) {
let bound = element.getBoundingClientRect();
const { style } = this.selectorElem;
style.left = bound.left + 'px';
style.top = bound.top + 'px';
style.width = bound.width + 'px';
style.height = bound.height + 'px';
style.display = 'block';
}
updateSelection(element, area) {
if (this.isSelectable(element, area)) {
return this.toggleSelectionOverElement(element);
}
return this.hideSelection();
}
hideSelection() {
if (this.selectorElem) this.selectorElem.style.display = 'none';
}
}
/**
* @brief Обработчик событий редактора
*/
class EditorEventHandler {
constructor() {
this.editor = null;
this.selector = null;
this.selected = null;
this.offset = { x: 0, y: 0 };
}
startListening({ editor, selector }) {
this.editor = editor;
this.selector = selector;
this.handleEditorEvents();
}
handleEditorEvents() {
this.handleElementsHover();
this.handleElementSelect();
this.handleMoveElement();
this.handleElementDeselect();
}
handleElementsHover() {
this.editor.addEventListener('mouseover', ({ target }) => {
SVGElementModifier.toggelHoveredElement({ handler: this, target });
});
}
handleElementSelect() {
this.editor.addEventListener('mousedown', event => {
SVGElementModifier.selectElement({ handler: this, event });
});
}
handleElementDeselect() {
this.editor.addEventListener('mouseup', event => {
SVGElementModifier.deselectElement({ handler: this });
});
}
handleMoveElement() {
this.editor.addEventListener('mousemove', event => {
SVGElementModifier.moveSelectedElement({ handler: this, event });
});
}
}
/**
* @brief Область для рисования
* @param options Параметры области
*/
class Area extends SVGElement {
constructor(options = {}) {
super({ type: 'svg', width: options.width || 800, height: options.height || 400, id: options.id || 'mySVG' });
this.domNode.style.border = '3px solid black';
}
appendElement(element) {
this.domNode.appendChild(element);
}
setDimentions() { }
}
/**
* @brief Редактор SVG
* @param targetNode Узел-цель
* @param playGround Игровая область
* @param eventHandler Обработчик событий
* @param selector Селектор фигур
*/
class Editor {
constructor({ targetNode, playGround, eventHandler, selector }) {
this.targetNode = targetNode;
this.playGround = playGround;
this.domNode = this.createEditor();
this.selector = selector;
this.svgElements = [];
this.EditorEventHandler = eventHandler;
this.EditorEventHandler.startListening({
editor: this.domNode,
selector: this.selector
});
}
setDimentions(node, width, height) {
node.style.width = '-webkit-fill-available';
node.style.height = '-webkit-fill-available';
return node;
}
createEditor() {
let editor = this.playGround.domNode;
const { width, height } = this.getEditorParams();
this.setDimentions(editor, width, height);
return editor;
}
getEditorParams() {
let width = Math.max(this.targetNode.offsetWidth - 10, 0);
let height = Math.max(this.targetNode.offsetHeight - 10, 0);
return { width, height };
}
addElement(element) {
if (!element || !element.domNode) return;
this.playGround.appendElement(element.domNode);
this.svgElements.push(element);
}
}
/* -----------------------------
Инициализация (выполняется после загрузки DOM)
----------------------------- */
window.addEventListener('DOMContentLoaded', () => {
let main = document.getElementById('main') || document.body;
let selection = document.getElementById('selector');
if (!selection) {
selection = document.createElement('div');
selection.id = 'selector';
Object.assign(selection.style, {
position: 'absolute',
display: 'none',
border: '1px dashed #333',
pointerEvents: 'none',
zIndex: 9999
});
document.body.appendChild(selection);
}
const area = new Area({ id: 'mySVG', width: 800, height: 400 });
main.appendChild(area.domNode);
const selector = new ShapeSelector('selector');
const editorEventHandler = new EditorEventHandler();
const editor = new Editor({
targetNode: main,
playGround: area,
selector,
eventHandler: editorEventHandler
});
const testRect = new Rect({ posX: 20, posY: 20, width: 120, height: 80, id: 'r1' });
const testRect2 = new Rect({ posX: 200, posY: 150, width: 140, height: 90, id: 'r2' });
editor.addElement(testRect);
editor.addElement(testRect2);
area.domNode.addEventListener('mouseover', (e) => {
const tgt = e.target;
selector.updateSelection(tgt, area.domNode);
});
window.addEventListener('resize', () => {
const { width, height } = editor.getEditorParams();
editor.setDimentions(area.domNode, width, height);
});
console.log('SVG Editor initialized', { area, editor, selector });
});
/* -----------------------------
edit
----------------------------- */
/** @brief Селектор основного контейнера */
const MAIN_SEL = "#main";
/** @brief ID элемента outline */
const OUTLINE_ID = "outline";
/** @brief Селектор боковой панели с фигурами */
const SIDEBAR_SHAPES = ".sidebar__shapes";
/** @brief Селектор боковой панели с режимами */
const SIDEBAR_SELECTORS = ".sidebar__selectors";
/** @brief Ключ для сохранения количества изменений */
const saveCountKey = 'SvgEditorM_saveCount';
/** @brief Основной контейнер DOM */
const main = document.querySelector(MAIN_SEL);
if (!main) throw new Error("Не найден #main");
/** @brief Массив svg элементов внутри main */
let svgsInMain = Array.from(main.querySelectorAll("svg"));
/** @brief Рабочий svg элемент */
let svg;
if (svgsInMain.length === 0) {
svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg.setAttribute("style", "border: 1px solid #ccc; box-sizing: border-box; width: -webkit-fill-available; height: -webkit-fill-available;");
svg.setAttribute("width", "1000");
svg.setAttribute("height", "600");
main.appendChild(svg);
} else {
// keep first svg, remove extras to avoid duplicates
svg = svgsInMain[0];
for (let i = 1; i < svgsInMain.length; i++) svgsInMain[i].remove();
}
/** @brief Создает и добавляет маркер стрелки к SVG */
(function ensureArrowMarker() {
let defs = svg.querySelector("defs");
if (!defs) {
defs = document.createElementNS("http://www.w3.org/2000/svg", "defs");
svg.appendChild(defs);
}
if (!svg.querySelector("#arrowhead")) {
const marker = document.createElementNS("http://www.w3.org/2000/svg", "marker");
marker.setAttribute("id", "arrowhead");
marker.setAttribute("markerWidth", "6");
marker.setAttribute("markerHeight", "4");
marker.setAttribute("refX", "4.8");
marker.setAttribute("refY", "2");
marker.setAttribute("orient", "auto");
const path = document.createElementNS("http://www.w3.org/2000/svg", "path");
path.setAttribute("d", "M0,0 L6,2 L0,4 z");
path.setAttribute("fill", "#495057");
marker.appendChild(path);
defs.appendChild(marker);
}
})();
/** @brief Получает элемент outline из DOM */
const outline = document.getElementById(OUTLINE_ID);
/** @brief Счетчик для генерации уникальных ID */
let uid = 1;
/**
* @brief Генерирует уникальный идентификатор для элемента
* @param prefix префикс для ID
*/
function makeId(prefix = "el") { return `${prefix}_${Date.now().toString(36)}_${uid++}`; }
/**
* @brief Преобразует координаты из клиентских в координаты SVG
* @param clientX координата X в пикселях
* @param clientY координата Y в пикселях
*/
function clientToSvgPoint(clientX, clientY) {
const pt = svg.createSVGPoint();
pt.x = clientX; pt.y = clientY;
const ctm = svg.getScreenCTM();
if (!ctm) return { x: clientX, y: clientY };
const inv = ctm.inverse();
const p = pt.matrixTransform(inv);
return { x: p.x, y: p.y };
}
/**
* @brief Возвращает размеры и позицию элемента в координатах экрана
* @param el элемент SVG
*/
function screenBBoxOf(el) {
try {
const bbox = el.getBBox();
const p1 = svg.createSVGPoint(); p1.x = bbox.x; p1.y = bbox.y;
const p2 = svg.createSVGPoint(); p2.x = bbox.x + bbox.width; p2.y = bbox.y + bbox.height;
const s1 = p1.matrixTransform(svg.getScreenCTM());
const s2 = p2.matrixTransform(svg.getScreenCTM());
return {
left: Math.min(s1.x, s2.x),
top: Math.min(s1.y, s2.y),
width: Math.abs(s2.x - s1.x),
height: Math.abs(s2.y - s1.y)
};
} catch (e) {
const r = el.getBoundingClientRect();
return { left: r.left, top: r.top, width: r.width, height: r.height };
}
}
/**
* @brief Показывает или скрывает outline вокруг элемента
* @param el элемент SVG или null
*/
function showOutlineFor(el) {
if (!outline) return;
if (!el) { outline.style.display = "none"; return; }
const b = screenBBoxOf(el);
outline.style.display = "block";
outline.style.position = "fixed";
outline.style.left = `${b.left-2}px`;
outline.style.top = `${b.top-2}px`;
outline.style.width = `${b.width}px`;
outline.style.height = `${b.height}px`;
outline.style.border = "2px solid rgba(0,120,255,0.6)";
outline.style.pointerEvents = "none";
}
/** @brief Режим работы редактора */
let mode = "Move";
/** @brief Текущий выбранный элемент */
let currentSelected = null;
/** @brief Состояние перетаскивания элемента */
let dragState = null;
document.querySelectorAll(`${SIDEBAR_SHAPES} .sidebar__shape`).forEach(node => {
node.addEventListener("click", () => {
const shapeName = node.textContent.trim().toLowerCase();
createShape(shapeName);
});
});
document.querySelectorAll(`${SIDEBAR_SELECTORS} .sidebar__selector`).forEach(node => {
node.addEventListener("click", () => {
document.querySelectorAll(`${SIDEBAR_SELECTORS} .sidebar__selector`).forEach(n => n.classList.remove("active"));
node.classList.add("active");
mode = node.textContent.trim();
});
});
const defaultSel = document.querySelector(`${SIDEBAR_SELECTORS} .sidebar__selector`);
if (defaultSel) {
defaultSel.classList.add("active");
mode = defaultSel.textContent.trim();
}
/**
* @brief Создает фигуру указанного типа в центре SVG
* @param kind тип фигуры: rect, circle, line, arrow
*/
function createShape(kind) {
const center = { x: parseFloat(svg.getAttribute("width"))/2 || 200, y: parseFloat(svg.getAttribute("height"))/2 || 150 };
const id = makeId(kind);
let el = null;
if (kind === "rect") {
el = document.createElementNS("http://www.w3.org/2000/svg", "rect");
el.setAttribute("x", center.x - 50);
el.setAttribute("y", center.y - 25);
el.setAttribute("width", 100);
el.setAttribute("height", 50);
el.setAttribute("fill", "#1aaee5");
} else if (kind === "circle") {
el = document.createElementNS("http://www.w3.org/2000/svg", "circle");
el.setAttribute("cx", center.x);
el.setAttribute("cy", center.y);
el.setAttribute("r", 30);
el.setAttribute("fill", "#ff6600");
} else if (kind === "line") {
el = document.createElementNS("http://www.w3.org/2000/svg", "line");
el.setAttribute("x1", center.x - 60);
el.setAttribute("y1", center.y);
el.setAttribute("x2", center.x + 60);
el.setAttribute("y2", center.y);
el.setAttribute("stroke", "#495057");
el.setAttribute("stroke-width", 4);
} else if (kind === "arrow") {
el = document.createElementNS("http://www.w3.org/2000/svg", "line");
el.setAttribute("x1", center.x - 60);
el.setAttribute("y1", center.y - 10);
el.setAttribute("x2", center.x + 60);
el.setAttribute("y2", center.y + 10);
el.setAttribute("stroke", "#495057");
el.setAttribute("stroke-width", 4);
el.setAttribute("marker-end", "url(#arrowhead)");
} else {
alert("Unknown shape: " + kind);
return;
}
el.setAttribute("id", id);
el.classList.add("draggable");
svg.appendChild(el);
attachShapeListeners(el);
selectElement(el);
}
/**
* @brief Подключает обработчики событий для фигуры
* @param el элемент SVG
*/
function attachShapeListeners(el) {
el.addEventListener("mousedown", (ev) => {
ev.stopPropagation();
const startClient = { x: ev.clientX, y: ev.clientY };
const startSvg = clientToSvgPoint(ev.clientX, ev.clientY);
const startAttrs = readElementAttrs(el);
const action = mode === "Resize" ? "resize" : "move";
dragState = { type: action, el, startClient, startSvg, startAttrs };
selectElement(el);
window.addEventListener("mousemove", onWindowMouseMove);
window.addEventListener("mouseup", onWindowMouseUp);
});
el.addEventListener("click", (e) => { e.stopPropagation(); selectElement(el); });
}
/**
* @brief Считывает атрибуты элемента SVG
* @param el элемент SVG
*/
function readElementAttrs(el) {
const tag = el.tagName.toLowerCase();
if (tag === "rect") {
return {
x: parseFloat(el.getAttribute("x")||0),
y: parseFloat(el.getAttribute("y")||0),
width: parseFloat(el.getAttribute("width")||0),
height: parseFloat(el.getAttribute("height")||0)
};
} else if (tag === "circle") {
return {
cx: parseFloat(el.getAttribute("cx")||0),
cy: parseFloat(el.getAttribute("cy")||0),
r: parseFloat(el.getAttribute("r")||0)
};
} else if (tag === "line") {
return {
x1: parseFloat(el.getAttribute("x1")||0),
y1: parseFloat(el.getAttribute("y1")||0),
x2: parseFloat(el.getAttribute("x2")||0),
y2: parseFloat(el.getAttribute("y2")||0)
};
}
return {};
}
/**
* @brief Обрабатывает движение мыши при перетаскивании/изменении размера
* @param ev событие мыши
*/
function onWindowMouseMove(ev) {
if (!dragState) return;
const { type, el, startSvg, startAttrs } = dragState;
const curSvg = clientToSvgPoint(ev.clientX, ev.clientY);
const dx = curSvg.x - startSvg.x;
const dy = curSvg.y - startSvg.y;
const tag = el.tagName.toLowerCase();
if (type === "move") {
if (tag === "rect") {
el.setAttribute("x", startAttrs.x + dx);
el.setAttribute("y", startAttrs.y + dy);
} else if (tag === "circle") {
el.setAttribute("cx", startAttrs.cx + dx);
el.setAttribute("cy", startAttrs.cy + dy);
} else if (tag === "line") {
el.setAttribute("x1", startAttrs.x1 + dx);
el.setAttribute("y1", startAttrs.y1 + dy);
el.setAttribute("x2", startAttrs.x2 + dx);
el.setAttribute("y2", startAttrs.y2 + dy);
}
} else {
if (tag === "rect") {
const newW = Math.max(6, startAttrs.width + dx);
const newH = Math.max(6, startAttrs.height + dy);
el.setAttribute("width", newW);
el.setAttribute("height", newH);
} else if (tag === "circle") {
const center = { x: startAttrs.cx, y: startAttrs.cy };
const newR = Math.max(4, Math.hypot(curSvg.x - center.x, curSvg.y - center.y));
el.setAttribute("r", newR);
} else if (tag === "line") {
el.setAttribute("x2", startAttrs.x2 + dx);
el.setAttribute("y2", startAttrs.y2 + dy);
}
}
showOutlineFor(el);
}
/**
* @brief Обрабатывает отпускание кнопки мыши при перетаскивании/изменении размера
*/
function onWindowMouseUp() {
if (dragState) {
dragState = null;
window.removeEventListener("mousemove", onWindowMouseMove);
window.removeEventListener("mouseup", onWindowMouseUp);
}
}
svg.addEventListener("mousedown", (ev) => {
if (ev.target === svg) selectElement(null);
});
/**
* @brief Выбирает элемент или снимает выбор
* @param el элемент SVG или null
*/
function selectElement(el) {
if (currentSelected === el) return;
if (currentSelected) currentSelected.classList.remove("selected");
currentSelected = el;
if (el) {
el.classList.add("selected");
showOutlineFor(el);
} else {
showOutlineFor(null);
}
}
Array.from(svg.querySelectorAll(".draggable, rect, circle, line")).forEach(attachShapeListeners);
window.addEventListener("resize", () => showOutlineFor(currentSelected));
window.addEventListener("scroll", () => showOutlineFor(currentSelected));
window.addEventListener("keydown", (ev) => {
if ((ev.key === "Delete" || ev.key === "Backspace") && currentSelected) {
currentSelected.remove();
selectElement(null);
}
});
/** @brief Кнопки панели сайдбара */
const buttons = Array.from(document.querySelectorAll('.sidebar__button'));
/** @brief Кнопка сохранения */
const saveBtn = buttons.find(b => b.textContent.trim().toLowerCase() === 'save');
/** @brief Кнопка загрузки */
const loadBtn = buttons.find(b => b.textContent.trim().toLowerCase() === 'load');
/** @brief Генерирует следующее имя файла для сохранения */
function nextFilename() {
localStorage.setItem(saveCountKey, String((parseInt(localStorage.getItem(saveCountKey) || '0', 10) || 0) + 1));
const n = parseInt(localStorage.getItem(saveCountKey), 10) || 1;
return n === 1 ? 'SvgEditorM.svg' : `SvgEditorM-${n}.svg`;
}
/** @brief Возвращает SVG внутри main */
function getMainSvg() {
return main.querySelector('svg');
}
/**
* @brief Устанавливает атрибуты xmlns для элемента SVG, если их нет
* @param el элемент SVG
*/
function ensureXmlns(el) {
if (!el.getAttribute('xmlns')) el.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
if (!el.getAttribute('xmlns:xlink')) el.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
return el;
}
/** @brief Сохраняет SVG из main в файл */
function saveSvg() {
const svg = getMainSvg();
if (!svg) return;
const clone = svg.cloneNode(true);
ensureXmlns(clone);
const xml = new XMLSerializer().serializeToString(clone);
const blob = new Blob([xml], { type: 'image/svg+xml;charset=utf-8' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = nextFilename();
document.body.appendChild(a);
a.click();
a.remove();
setTimeout(() => URL.revokeObjectURL(url), 10000);
}
/** @brief Элемент input для загрузки файлов */
const fileInput = document.createElement('input');
fileInput.type = 'file';
fileInput.accept = '.svg,image/svg+xml';
fileInput.style.display = 'none';
document.body.appendChild(fileInput);
/**
* @brief Делает узел и его потомков интерактивными
* @param node элемент SVG
*/
function makeInteractiveForNode(node) {
if (!(node instanceof Element)) return;
const tag = node.tagName.toLowerCase();
if (['rect','circle','line','path','polyline','polygon','g'].includes(tag)) {
if (!node.classList.contains('draggable')) node.classList.add('draggable');
if (typeof attachShapeListeners === 'function') {
attachShapeListeners(node);
}
}
Array.from(node.children || []).forEach(ch => makeInteractiveForNode(ch));
}
/**
* @brief Загружает SVG из файла в main
* @param file объект File
*/
async function loadSvgFile(file) {
if (!file) return;
const text = await file.text();
const parser = new DOMParser();
const doc = parser.parseFromString(text, 'image/svg+xml');
const parsedSvg = doc.querySelector('svg');
if (!parsedSvg) {
alert('Выбранный файл не содержит SVG');
return;
}
const targetSvg = getMainSvg();
if (!targetSvg) {
const imported = document.importNode(parsedSvg, true);
ensureXmlns(imported);
main.appendChild(imported);
Array.from(imported.querySelectorAll('*')).forEach(n => makeInteractiveForNode(n));
} else {
const preservedOutline = document.getElementById('outline');
while (targetSvg.firstChild) targetSvg.removeChild(targetSvg.firstChild);
Array.from(parsedSvg.childNodes).forEach(n => {
const imp = document.importNode(n, true);
targetSvg.appendChild(imp);
});
Array.from(parsedSvg.attributes).forEach(attr => {
if (attr.name === 'xmlns' || attr.name === 'xmlns:xlink') return;
targetSvg.setAttribute(attr.name, attr.value);
});
ensureXmlns(targetSvg);
Array.from(targetSvg.querySelectorAll('*')).forEach(n => makeInteractiveForNode(n));
if (preservedOutline && preservedOutline.parentElement !== document.body) {
}
}
main.dispatchEvent(new CustomEvent('svg-loaded', { detail: { fileName: file.name } }));
}
fileInput.addEventListener('change', () => {
const f = fileInput.files && fileInput.files[0];
loadSvgFile(f).finally(() => { fileInput.value = ''; });
});
if (saveBtn) saveBtn.addEventListener('click', (e) => { e.stopPropagation(); saveSvg(); });
if (loadBtn) loadBtn.addEventListener('click', (e) => { e.stopPropagation(); fileInput.click(); });

View File

@@ -1,30 +0,0 @@
<?php
/**
* @file SvgEditorM/index.php
* @brief Интерфейс SVG редактора: боковая панель с кнопками действий, фигурами и селекторами, основная область для работы с SVG
*/
?>
<?php /** @brief Основной контейнер SVG редактора */ $sidebar; ?>
<div id="sidebar" class="bfloat">
<div class="btitle" style="background-color: transparent; padding-bottom: 10px;">SVG редактор</div>
<div class="sidebar__menu">
<div class="sidebar__buttons">
<span class="sidebar__button">Save</span>
<span class="sidebar__button">Load</span>
</div>
<div class="sidebar__shapes">
<span class="sidebar__shape">Circle</span>
<span class="sidebar__shape">Rect</span>
<span class="sidebar__shape">Line</span>
<span class="sidebar__shape">Arrow</span>
</div>
<div class="sidebar__selectors">
<span class="sidebar__selector">Move</span>
<span class="sidebar__selector">Resize</span>
</div>
</div>
<div class="main" id="main">
<span class="selection" id="outline"></span>
</div>
</div>

View File

@@ -1,25 +0,0 @@
<?php
/**
* @file plug.php
* @brief Подключает плагин SvgEditorM для администраторов, перемещает sidebar и подгружает JS-модуль
*/
global $path, $_SESSION, $configAdmins;
if (in_array($_SESSION['username'], $configAdmins, true)) {
include $path . 'main_plugin/SvgEditorM/index.php';
echo '<link rel="stylesheet" type="text/css" href="/main_plugin/SvgEditorM/SvgEditorM.css">';
echo "<script type='module'>
document.addEventListener('DOMContentLoaded', () => {
const c = document.querySelector('.center-float');
const d = document.getElementById('sidebar');
if (c && d) {
c.appendChild(document.createElement('br'));
c.appendChild(d);
import('/main_plugin/SvgEditorM/SvgEditorM.js');
} else if (d) {
d.remove();
}
});
</script>";
}
?>

View File

@@ -1,88 +0,0 @@
#authorizationButton {
width: 26px;
height: 26px;
position: relative;
cursor: pointer;
user-select: none;
float: right;
margin-left: 5px;
}
#authorizationButton:hover {
background-image: url(../../img/pict/g_iconslyb.svg);
}
#loginButton {
margin: 0px 3px;
}
#authorizationDiv {
font-size: 0.85em;
display: inline-block;
position: fixed;
user-select: none;
background-color: rgba(255, 255, 255, 0.92);
width: 370px;
border-radius: 5px;
height: 230px;
box-shadow: 0px 0px 5px #777;
color: #000000;
text-shadow: none;
z-index: 100;
min-height: fit-content;
}
#authorizationDiv input, #authorizationDiv textarea, #authorizationDiv select, #authorizationDiv button {
font-size: 0.85em;
}
.authorizationDivTop {
text-align: center;
border: none;
border-bottom: inherit;
padding: 5px;
background-color: rgba(255, 255, 255, 0.6);
}
.authorizationDivCloseFun {
background-image: url(../../img/pict/b_iconslyb.svg);
float: right;
width: 22px;
height: 22px;
background-position: -159px -120px;
cursor: pointer;
}
.authorizationDivMainDiv {
display: flex;
align-items: center;
height: 200px;
justify-content: center;
flex-direction: column;
padding: 10px 0px;
}
.formRow {
display: flex;
justify-content: center;
width: -webkit-fill-available;
margin: 5px 45px;
}
.formRow label {
margin-right: 10px;
white-space: nowrap;
}
.formRow input {
flex: 1;
min-width: 0;
}
#BackArrow {
background-position: -77px -37px;
background-image: url(../../img/pict/b_iconslyb.svg);
width: 26px;
height: 26px;
position: absolute;
left: 0px;
top: 33px;
}
#BackArrow:hover {
background-image: url(../../img/pict/g_iconslyb.svg);
cursor: pointer;
}

View File

@@ -1,161 +0,0 @@
/**
* @file auth.js
* @brief Скрипт авторизации, содержит функции и переменные для входа, регистрации и управления блоком авторизации
*/
addEventListener("load", function() {
movementMenu("authorizationDiv");
let authorizationButtonId = document.getElementById("authorizationButton");
const authorizationDivId = document.getElementById("authorizationDiv");
if (getCookie('Login') == "true") {
authorizationButtonId.style.background = "url(../../img/pict/mc_iconslyb.svg) -1038px 1px";
document.documentElement.style.setProperty('--autButBackX', '-1038');
document.documentElement.style.setProperty('--autButBackY', '1');
authorizationButtonId.onclick = function() {
jsonrpcRequest("logoutUser", { logoff: "Выйти" })
.then(response => {
location.reload();
})
};
} else if (getCookie('Login') == "false") {
authorizationButtonId.style.background = "url(../../img/pict/mc_iconslyb.svg) -756px 1px";
document.documentElement.style.setProperty('--autButBackX', '-756');
document.documentElement.style.setProperty('--autButBackY', '1');
authorizationButtonId.onclick = function() {
const el = authorizationDivId;
if (el.style.visibility === "visible") {
el.style.visibility = "hidden";
} else {
el.style.visibility = "visible";
el.style.top = "20%";
el.style.left = "50%";
el.style.transform = "translate(-50%, -20%)";
}
};
}
});
/**
* @brief Закрывает блок авторизации
*/
function authorizationDivCloseFun() {
document.getElementById("authorizationDiv").style.visibility = "hidden";
}
/**
* @brief Создаёт форму кнопки входа
*/
function loginButtonFunCreate() {
document.querySelector(".authorizationDivMainDiv").innerHTML = `
<div id="BackArrow" onClick="mainButtonFunCreate()"></div>
<div class="formRow">
<label>{{login_label}}:</label>
<input type="text" id="loginInput" name="login">
</div>
<div class="formRow">
<label>{{password_label}}:</label>
<input type="password" id="passInput" name="pass" autocomplete="">
</div>
<div class="formRow">
<button type="button" id="loginButton" onClick="loginButtonFun()">{{login}}</button>
</div>
`;
const inputLogin = document.getElementById('loginInput');
const inputPass = document.getElementById('passInput');
const loginBtn = document.getElementById('loginButton');
[inputLogin, inputPass].forEach(input => {
input.addEventListener('keydown', function(e) {
if (e.key === 'Enter') {
if (loginBtn.getAttribute('onClick') === 'loginButtonFun()') {
loginBtn.click();
}
}
});
});
}
/**
* @brief Обрабатывает нажатие кнопки входа
*/
function loginButtonFun() {
var login = document.getElementById("loginInput").value;
var pass = document.getElementById("passInput").value;
jsonrpcRequest("loginUser", { login: login, pass: pass, log: "Войти" })
.then(response => {
if (response == "true") {
location.reload();
} else {
messageFunction("{{incorrect_login_password}}");
}
});
}
/**
* @brief Создаёт форму кнопки регистрации
*/
function registrationButtonFunCreate() {
document.querySelector(".authorizationDivMainDiv").innerHTML = `
<div id="BackArrow" onClick="mainButtonFunCreate()"></div>
<div class="formRow">
<label>{{login_label}}:</label>
<input type="text" id="loginInput" name="login">
</div>
<div class="formRow">
<label>{{password_label}}:</label>
<input type="text" id="passInput" name="pass">
</div>
<div class="formRow">
<label>{{repeat_password_label}}:</label>
<input type="text" id="passСheckInput" name="pass">
</div>
<div class="formRow">
<label>{{email_label}}:</label>
<input id="emailInput">
</div>
<div class="formRow">
<button type="button" id="loginButton" onClick="registrationButtonFun()">{{register}}</button>
</div>
`;
}
/**
* @brief Обрабатывает нажатие кнопки регистрации
*/
function registrationButtonFun() {
var login = document.getElementById("loginInput").value;
var pass = document.getElementById("passInput").value;
var passСheck = document.getElementById("passСheckInput").value;
var email = document.getElementById("emailInput").value;
if (login.trim() == "" || pass.trim() == "" || passСheck.trim() == "" || email.trim() == "" ) {
messageFunction("{{fill_all_fields}}");
return;
}
if (pass != passСheck) {
messageFunction("{{passwords_do_not_match}}");
return;
}
jsonrpcRequest("registerUser", { login: login, pass: pass, email: email }).then(response => {
if (response == "true") {
messageFunction("{{account_creation_request_sent}}");
} else if (response == "name_exists") {
messageFunction("{{user_exists}}");
} else {
messageFunction("{{account_creation_request_error}}");
}
});
}
/**
* @brief Создаёт главную форму выбора между входом и регистрацией
*/
function mainButtonFunCreate() {
document.querySelector(".authorizationDivMainDiv").innerHTML = `
<div class="formRow">{{account_authorization}}</div>
<div class="formRow">
<button type="button" id="loginButton" onClick="loginButtonFunCreate()">{{login}}</button>
<button type="button" id="loginButton" onClick="registrationButtonFunCreate()">{{register}}</button>
</div>
`;
}

View File

@@ -1,43 +0,0 @@
<?php
/**
* @file auth.php
* @brief Содержит интерфейс авторизации пользователя
*/
?>
<?php /** @brief Кнопка вызова окна авторизации */ $authorizationButton; ?>
<span id="authorizationButton"></span>
<?php /** @brief Основной контейнер окна авторизации */ $authorizationDiv; ?>
<div id="authorizationDiv" class="borderStyle" style="visibility: hidden; top: 20%; left: 50%; transform: translate(-50%, -20%);">
<div class="authorizationDivTop" class="borderStyle">
<span class="authorizationDivTopTitle">{{authorization}}</span>
<span class="authorizationDivCloseFun" onClick="authorizationDivCloseFun()" class="editib"></span>
</div>
<div class="authorizationDivMainDiv">
<div class="formRow">{{account_authorization}}</div>
<div class="formRow">
<button type="button" id="loginButton" onClick="loginButtonFunCreate()">{{login}}</button>
<button type="button" id="loginButton" onClick="registrationButtonFunCreate()">{{register}}</button>
</div>
</div>
</div>
<script>
window.addEventListener("load", function() {
try {
var buttonHTML = document.getElementById("authorizationButton").outerHTML;
var divHTML = document.getElementById("authorizationDiv").outerHTML;
document.getElementById("authorizationButton").remove();
document.getElementById("authorizationDiv").remove();
var container = document.getElementById("hbody");
if (!container) throw new Error("#hbody не найден для authorization");
container.insertAdjacentHTML("beforeend", buttonHTML);
container.insertAdjacentHTML("beforeend", divHTML);
} catch (e) {
console.error("Ошибка в блоке authorization:", e);
}
});
</script>

View File

@@ -1,82 +0,0 @@
<?php
/**
* @file func.auth.php
* @brief Функции для регистрации пользователей и отправки уведомлений по email
*/
/**
* @brief Регистрирует нового пользователя
* @param array $params Массив с ключами 'login', 'pass', 'email'
* @return string "name_exists" если пользователь уже есть, "true" если регистрация прошла успешно
* @throws Exception Если произошла ошибка при создании запроса на регистрацию
*/
function registerUser($params) {
global $path, $config;
$exists = false;
$requestFile = simplexml_load_file($path . $config['usersRequest']);
foreach ($requestFile->users->user as $child) {
if ((string)$child['name'] === $params['login']) {
$exists = true;
break;
}
}
$usersFile = simplexml_load_file($path . $config['users']);
foreach ($usersFile->users->user as $child) {
if ((string)$child['name'] === $params['login']) {
$exists = true;
break;
}
}
if ($exists) {
return "name_exists";
} else {
$requestFile = simplexml_load_file($path . $config['usersRequest']);
$requestFilePath = $path . $config['usersRequest'];
$newUser = $requestFile->users->addChild('user');
$newUser->addAttribute('name', $params['login']);
$newUser->addAttribute('pass', $params['pass']);
$newUser->addAttribute('access', '');
$newUser->addAttribute('email', $params['email']);
$newUser->addAttribute('link', md5($params['login'].$params['pass']));
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($requestFile->asXML());
if ($dom->save($requestFilePath)) {
return sendRegistrationEmail($params);
} else {
throw new Exception("Error while creating user request", -32003);
}
}
}
/**
* @brief Отправляет уведомление о регистрации пользователю и администратору
* @param array $paramsEmail Массив с ключами 'login', 'pass', 'email'
* @return string "true" при успешной отправке
* @throws Exception Если произошла ошибка при отправке email
*/
function sendRegistrationEmail($paramsEmail) {
global $config;
$to = $config['emailAdmin'];
$subject = '=?UTF-8?B?'.base64_encode('Запрос на создание аккаунта на сайте ').'?=' . $_SERVER['HTTP_HOST'];
$message = 'Логин: ' . $paramsEmail['login'] . "\r\n";
$message .= 'Пароль: ' . $paramsEmail['pass'] . "\r\n";
$message .= 'Почта: ' . $paramsEmail['email'] . "\r\n";
$message .= 'Сайт: ' . $config['server'] . "\r\n";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";
$headers .= "From: info@oblat.lv";
if (!mail($to, $subject, $message, $headers)) {
throw new Exception("Error sending email", -32002);
}
return "true";
}
?>

View File

@@ -1,23 +0,0 @@
<?php
/**
* @file lang.js.php
* @brief Генерирует JavaScript-файл с языковыми строками для плагина авторизации
*/
global $path, $_SESSION;
/** @brief Загружает языковой массив для плагина авторизации */
$lang = include $path . 'lang.php';
/** @brief Определяет текущий язык пользователя, берется из GET-параметра или сессии, по умолчанию 'en' */
$lng = $_GET['lng'] ?? ($_SESSION['lng'] ?? 'en');
/** @brief Массив для подстановки языковых строк в шаблон JS */
$placeholders = [];
foreach ($lang[$lng] as $key => $value) {
$placeholders['{{' . $key . '}}'] = $value;
}
echo strtr(file_get_contents($path . 'auth.js'), $placeholders);
?>

Some files were not shown because too many files have changed in this diff Show More