Добавляем все файлы

This commit is contained in:
2025-11-06 19:41:55 +02:00
parent 235d6a3a18
commit 2e5aaec307
218 changed files with 79015 additions and 0 deletions

787
main_plugin/editor/editor.css Executable file
View File

@@ -0,0 +1,787 @@
/* Главное */
#basis3 {
left: 0 !important;
top: 33px !important;
transform: none !important;
}
#copyr_sym *, .deploy *, .elementEditPanelElement * {
margin-top: 2px;
margin-bottom: 2px;
}
.selectedColor {
background: #3a6e62;
color: #ffffff;
}
.textGrey:hover {
color: #787878;
cursor: pointer;
}
.toolbar-container {
touch-action: none;
}
#panel {
position: absolute;
display: flex;
align-items: center;
max-width: -webkit-fill-available;
border-radius: 5px;
background: rgba(255, 255, 255, 0.8);
overflow-x: clip;
overflow-y: visible;
z-index: 100;
}
.toolbar-container {
display: flex;
align-items: center;
white-space: nowrap;
padding: 4px;
margin: 0;
flex-shrink: 0;
padding: 4px 0px;
width: 100%;
}
.arrow {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 24px;
height: 36px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
z-index: 10;
background: rgba(255, 255, 255, 0.8);
}
#arrow-left {
left: 0;
border: none;
border-right: inherit;
}
#arrow-right {
right: 0;
border: none;
border-left: inherit;
}
/* Стили контейнера для показа увеличенных изображений */
#bas,
#C {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
visibility: hidden;
}
#bas {
z-index: 1;
background: #FFFFFF;
opacity: 0.95;
}
#view {
z-index: 2;
display: flex;
justify-content: center;
align-items: center;
}
/* Стили контейнера, содержащего страницу */
#basis {
position: relative;
width: -webkit-fill-available;
margin: auto;
}
/* Стили таблицы, содержащей страницу */
#tab {
width: 1000px;
}
/* Стили меню */
#sect {
display: flex;
margin-bottom: 15px;
font-family: Tahoma;
font-weight: bold;
}
/* Стили пунктов меню */
.lin {
margin: 9px;
width: 180px;
height: 50px;
color: #FFFFFF;
text-align: center;
box-shadow: 5px 5px 10px #000066;
background: #660033;
line-height: 50px;
border-radius: 5px;
}
/* Стили ячейки для рекламы */
#rec {
width: 300px;
text-align: center;
vertical-align: top;
font-weight: bold;
color: #660033;
}
/* Стили контейнера, содержащего страницу */
#basis3 {
position: fixed;
width: -webkit-fill-available;
margin: auto;
z-index: 100;
user-select: none;
font-size: 0.97em;
}
/* Стили вкладок с настройками */
.cust {
height: auto;
padding: 8px;
position: fixed;
visibility: hidden;
z-index: 100;
background: url(../../img/img/backgr.jpg);
border-radius: 5px;
top: 30%;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
width: calc(100% - 20px);
max-width: max-content;
}
.cust2 {
height: auto;
padding: 5px;
position: absolute;
top: 236%;
width: 1118px;
border: 1px solid #000000;
visibility: hidden;
z-index: 100;
background: url(../../img/img/backgr.jpg);
border-radius: 5px;
max-width: -webkit-fill-available;
}
/* Стили кнопок (крестиков) для закрытия вкладок */
.cldiv {
margin: 2px;
cursor: pointer;
}
/* Стили вкладки с изображениями с сервера */
#p_list {
text-align: center;
}
.roster {
width: 180px;
margin: 5px;
cursor: pointer;
}
/* Стили главной панели редактора */
.toolbar-group {
position: relative;
padding: 0px 5px;
margin: 0px 2px;
display: inline-block;
}
.toolbar-group::before {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: -3.1px;
width: 5px;
background: linear-gradient(
to right,
#000 0px 1px,
transparent 1px 2px,
#000 2px 3px,
transparent 3px 4px,
#000 4px 5px
);
}
.toolbar-group.open {
margin-left: 7px;
}
.toolbar-group-button {
transition: transform 0.1s ease, left 0.1s ease;
}
.toolbar-group.open .toolbar-group-button {
position: absolute;
left: -9px;
transform: scale(0.6);
transform-origin: top left;
z-index: 1;
}
.toolbar-group-content {
transition: margin-left 0.1s ease;
}
.toolbar-group.open .toolbar-group-content {
margin-left: 7px;
}
#toolbar-group-button-main {
background-position: -318px -117px;
}
#toolbar-group-button-text {
background-position: -237px 1664px;
}
#toolbar-group-button-paste {
background-position: 166px 517px;
}
.align-dropdown, .align-dropdown-oneImg {
position: relative;
display: inline-block;
}
.align-dropdown-text {
position: relative;
display: inline-block;
cursor: pointer;
border: 1px solid #000000;
height: 26px;
border-radius: 5px;
vertical-align: middle;
background: #FFFFFF;
padding-right: 13px;
}
.align-dropdown-text .dropdown-arrow {
position: absolute;
right: 5px;
top: 50%;
transform: translateY(-50%);
pointer-events: none;
}
.align-dropdown-text .current {
padding: 0 3px;
height: 28px;
line-height: 28px;
display: inline-block;
cursor: pointer;
}
.align-dropdown .current {
cursor: pointer;
}
.align-list {
list-style: none;
margin: 0;
padding: 4px 0;
position: absolute;
top: 100%;
left: -9px;
background: #fff;
border: 1px solid #000000;
display: none;
z-index: 10;
font-size: 0.95em;
}
.align-list li {
padding: 4px 8px;
cursor: pointer;
}
.align-list li:hover {
background: #eee;
}
/* Стили выпадающего списка панели */
#sel {
font-size: 1.1em;
font-family: Tahoma;
border: 1px solid #000000;
}
/* Стили кнопок навигации по этапам редактирования */
#forw,
#bac {
right: 10px;
cursor: pointer;
}
/* Стили кнопок на главной панели редактора */
.but,
.pers,
.swit,
.swit2,
.pers2,
.pers3 {
border: 1px solid #000000;
cursor: pointer;
}
.editt {
display: inline-block;
}
.editi {
border-radius: 5px;
background: #FFFFFF;
display: inline-block;
width: 26px;
height: 26px;
vertical-align: middle;
}
.edits {
border-radius: 5px;
display: inline-block;
vertical-align: middle;
}
.editib {
background-image: url(../../img/pict/b_iconslyb.svg);
}
.editimc {
background-image: url(../../img/pict/mc_iconslyb.svg);
}
.editib:hover {
background-image: url(../../img/pict/g_iconslyb.svg);
}
.editimc:hover {
background-image: url(../../img/pict/g_iconslyb.svg);
}
.editf.active {
background-image: url(../../img/pict/b_iconslyb.svg);
background-color: #e7e7e7;
}
.editf.active:hover {
background-image: url(../../img/pict/g_iconslyb.svg);
background-color: #e7e7e7;
}
#settingsMain {
background-position: -197px -597px;
}
#forma {
background-position: 45px -117px;
}
#htm {
background-position: -318px 1824px;
}
#bac {
background-position: 645px 716px;
}
#forw {
background-position: 605px 716px;
}
#img, #oneImg {
background-position: 645px 477px;
}
#hr {
background-position: 766px 676px;
}
#tabl {
background-position: 1006px 597px;
}
#link {
background-position: 245px 277px;
}
#linkdel {
background-position: 205px 277px;
}
#delin {
background-position: 205px 277px;
}
#copyr {
background-position: 445px 517px;
}
#bol {
background-position: 1006px 517px;
}
#ital {
background-position: 966px 517px;
}
#under {
background-position: 926px 517px;
}
#col {
background-position: -237px 1664px;
}
#backgr {
background-position: -278px 1664px;
}
#font {
background-position: 1046px 517px;
}
#strik {
background-position: 885px 517px;
}
#sup {
background-position: 846px 517px;
}
#sub {
background-position: 806px 517px;
}
#titleEdit {
background-position: 1045px 557px;
}
/* #pluginSave {
background-position: -479px 1665px;
}
#pluginCreateLeft {
background-position: -598px 1665px;
}
#pluginAddLeft {
background-position: -677px 1665px;
}
#pluginCreateRight {
background-position: -558px 1665px;
}
#pluginAddRight {
background-position: -638px 1665px;
}
#pluginDelete {
background-position: -518px 1665px;
}
#pluginMove {
background-position: -438px 1665px;
} */
#contentPageCreate {
background-position: 926px 676px;
}
#contentPageMove {
background-position: -1077px 1704px;
}
#contentPageSettings {
background-position: -156px 1704px;
}
#elementEdit {
background-position: 965px 557px;
}
#coup {
background-position: -357px 1662px;
}
#contentPageCreateUrlManager {
background-position: -679px 1820px;
}
.indent {
display: inline-block;
width: 5px;
}
/* картинки списков */
#equar, .align-dropdown .current.equar {
background-position: 685px 517px;
}
#equac, .align-dropdown .current.equac {
background-position: 725px 517px;
}
#equal, .align-dropdown .current.equal {
background-position: 765px 517px;
}
#equaj, .align-dropdown .current.equaj {
background-position: 645px 517px;
}
#listNone, .align-dropdown .current.listNone {
background-position: -798px 1666px;
}
#listDots, .align-dropdown .current.listDots {
background-position: 764px 437px;
}
#listNumbers, .align-dropdown .current.listNumbers {
background-position: 724px 437px;
}
#listLetters, .align-dropdown .current.listLetters {
background-position: -757px 1666px;
}
/* Стили маленьких окон на главной панели редактора */
.smbut {
position: absolute;
cursor: pointer;
visibility: hidden;
}
#ccc {
position: absolute;
opacity: 0;
left: 470px;
top: 17px;
pointer-events: none;
}
#list {
width: 100px;
height: 28px;
}
#fs {
width: 50px;
height: 28px;
}
#ff {
width: 145px;
height: 28px;
}
#mainActions {
height: 28px;
}
#pluginDropdownContent {
height: 28px;
}
#elementDropdownContent {
width: 170px;
height: 28px;
}
/* Стили контейнеров вкладок с настройками */
.deploy {
text-align: center;
line-height: 25px;
}
/* Стили textarea */
.textar {
width: 400px;
height: 70px;
font-size: 0.9em;
border: 1px solid #000000;
margin-left: 5px;
margin-right: 20px;
}
/* Стили коротких текстовых полей */
.inptx {
width: 51px;
height: 22px;
font-size: 0.9em;
border: 1px solid #000000;
margin-right: 10px;
border-radius: 5px;
}
/* Стили средних текстовых полей */
.inpmid {
width: 120px;
height: 18px;
font-size: 0.9em;
border: 1px solid #000000;
margin-right: 10px;
border-radius: 5px;
}
/* Стили длинных текстовых полей */
.inpbig {
width: 190px;
height: 18px;
font-size: 0.9em;
border: 1px solid #000000;
margin-right: 10px;
border-radius: 5px;
}
/* Стили для формы */
.inform {
display: inline-block;
margin-block-end: 0em;
}
/* Стили кнопок вставки и просмотра на вкладках с настройками */
.butin {
height: 22px;
font-size: 0.9em;
border: 1px solid #000000;
background: #FFFFFF;
cursor: pointer;
border-radius: 5px;
}
.butinAuto {
width: min-content;
height: 22px;
font-size: 0.92em;
cursor: pointer;
padding: 1px 5px 1px 5px;
cursor: pointer;
}
.butinAuto:hover {
color: #787878;
}
.buttonEditTable {
height: 22px;
font-size: 0.9em;
border: 1px solid #000000;
background: #FFFFFF;
cursor: pointer;
border-radius: 5px;
}
.buttonEditTable.active {
background-color: #e7e7e7;
}
/* Стили выпадающих списков */
.sele {
height: 22px;
font-size: 0.9em;
border: 1px solid #000000;
margin-right: 10px;
border-radius: 5px;
}
.colored {
width: 28px;
height: 22px;
cursor: pointer;
margin-right: 10px;
}
/* Стили выпадающих списков без зазора справа */
.selena {
height: 22px;
font-size: 0.9em;
border: 1px solid #000000;
margin-right: 2px;
}
/* Стили кнопок выбора цвета на вкладках с настройками */
.colored {
width: 28px;
height: 22px;
cursor: pointer;
margin-right: 10px;
}
/* Стиль кнопок зарузок изоброжений */
#selectImgForm {
width: 77px;
height: 22px;
font-size: 0.9em;
border: 1px solid #000000;
background: #FFFFFF;
cursor: pointer;
border-radius: 5px;
margin: 0px 5px 0px -15px;
}
/* Стиль окна текстового редактора */
#tex {
position: absolute;
top: 236%;
width: 1100px;
height: 380px;
border: 1px solid #000000;
padding: 10px;
font-size: 1.2em;
font-family: Tahoma;
visibility: hidden;
z-index: 6;
border-radius: 5px;
left: 0px;
}
/* Стили контейнера с кнопками для символов и самих кнопок */
#copyr_sym {
text-align: center;
}
.sym {
vertical-align: middle;
width: 25px;
height: 25px;
margin: 1px;
border: 1px solid #000000;
font-size: 1em;
font-family: Tahoma;
background: #FFFFFF;
cursor: pointer;
}
#pluginRulesButton1, #pluginRulesButton2 {
width: 1em;
display: inline-block;
}
#pluginRulesBlock1, #pluginRulesBlock2 {
width: 240px;
position: absolute;
display: inline-block;
background: #efefef;
font-size: 0.9em;
padding: 2px;
line-height: 1.6;
border-radius: 5px;
opacity: 0;
transition: max-height 0.18s ease-out, opacity 0.18s ease-out;
pointer-events: none;
}
#pluginRulesBlock1.show, #pluginRulesBlock2.show {
opacity: 1;
pointer-events: all;
}
p {
margin-block-start: 5px;
margin-block-end: 5px;
}
.pluginEditable {
outline-offset: 15px;
overflow-x: hidden;
font-family: 'Roboto', sans-serif;
}
/* поля для редактирование элементов */
#editingMenuItems {
display: inline-block;
position: fixed;
z-index: 10;
user-select: none;
background-color: rgba(255, 255, 255, 0.92);
border-radius: 5px;
font-size: 1em;
box-shadow: 0px 0px 5px #777;
padding: 5px;
visibility: hidden;
}
.editingMenuItemsElement {
padding: 2px;
cursor: pointer;
}
.editingMenuItemsElement:hover {
color: #787878;
}

2272
main_plugin/editor/editor.js Executable file

File diff suppressed because it is too large Load Diff

377
main_plugin/editor/editor.php Executable file
View File

@@ -0,0 +1,377 @@
<?php
/**
* @file editor.php
* @brief Контейнеры и элементы интерфейса визуального редактора: основная панель, вкладки с символами, настройки ссылок, цвета, плагинов, страницы и элементы редактирования (текст, изображения, таблицы, линии)
*/
?>
<div style="position: absolute; display: none;">
<div id="bas"></div>
<div id="">
</div>
</div>
<?php /** @brief Основной контейнер редактора */ $basis3; ?>
<div id="basis3" style="visibility: hidden; top: 20%; left: 10px; transform: translate(0%, -20%);">
<?php /** @brief Вкладка с символами */ $copyr_d; ?>
<div id="copyr_d" class="cust sb borderStyle">
<div id="copyr_sym">
<input type="button" class="sym" id="s1" value="&#36;">
<input type="button" class="sym" id="s2" value="&#163;">
<input type="button" class="sym" id="s3" value="&#165;">
<input type="button" class="sym" id="s4" value="&#8364;">
<input type="button" class="sym" id="s5" value="&#8377;">
<input type="button" class="sym" id="s6" value="&#8381;">
<input type="button" class="sym" id="s7" value="&#8369;">
<input type="button" class="sym" id="s8" value="&#3647;">
<br>
<input type="button" class="sym" id="s9" value="&#177;">
<input type="button" class="sym" id="s10" value="&#215;">
<input type="button" class="sym" id="s11" value="&#247;">
<input type="button" class="sym" id="s12" value="&#8722;">
<input type="button" class="sym" id="s13" value="&#8730;">
<input type="button" class="sym" id="s14" value="&#8800;">
<input type="button" class="sym" id="s15" value="&#8804;">
<input type="button" class="sym" id="s16" value="&#8805;">
<input type="button" class="sym" id="s17" value="&#8721;">
<br>
<input type="button" class="sym" id="s26" value="&#8734;">
<input type="button" class="sym" id="s27" value="&#937;">
<input type="button" class="sym" id="s28" value="&#8486;">
<input type="button" class="sym" id="s29" value="&#945;">
<input type="button" class="sym" id="s30" value="&#946;">
<input type="button" class="sym" id="s31" value="&#8482;">
<input type="button" class="sym" id="s32" value="&#8729;">
<input type="button" class="sym" id="s33" value="&#8776;">
<br>
<input type="button" class="sym" id="s18" value="&#8592;">
<input type="button" class="sym" id="s19" value="&#8593;">
<input type="button" class="sym" id="s20" value="&#8594;">
<input type="button" class="sym" id="s21" value="&#8595;">
<input type="button" class="sym" id="s22" value="&#8598;">
<input type="button" class="sym" id="s23" value="&#8599;">
<input type="button" class="sym" id="s24" value="&#8600;">
<input type="button" class="sym" id="s25" value="&#8601;">
<br>
<input type="button" class="sym" id="s34" value="&#9632;">
<input type="button" class="sym" id="s35" value="&#9650;">
<input type="button" class="sym" id="s37" value="&#9675;">
<input type="button" class="sym" id="s38" value="&#9658;">
<input type="button" class="sym" id="s39" value="&#9660;">
<input type="button" class="sym" id="s40" value="&#9679;">
</div>
</div>
<?php /** @brief Блок настроек ссылок */ $link_d; ?>
<div id="link_d" class="cust sb borderStyle">
<div class="deploy">
{{link}}: <input id="link2" class="inpbig" style="margin-right: 0px;"> <input id="link2FromPage" onClick="linkFromPage()" type="button" value="{{select_page_from_site}}" style="margin-right: 10px;">
{{open_in_new_window}}: <select id="link3" class="sele">
<option selected value="yes">{{yes}}</option>
<option value="no">{{no}}</option>
</select><br>
</select>
{{underline}}: <select id="link5" class="sele">
<option value="yes">{{yes}}</option>
<option selected value="no">{{no}}</option>
</select>
{{color}}: <input type="color" id="link6c" class="colored" value="#0645AD" title="{{choose_color}}">
<input type="button" id="butlink" class="butin" value="{{insert}}" title="{{insert_link}}">
</div>
</div>
<?php /** @brief Окно для изменения цвета текста */ $col_d; ?>
<div id="col_d" class="cust sb borderStyle">
<div class="deploy">
{{change_text_color}}:
<input type="color" id="colColor" class="colored" alt="{{color}}" title="{{choose_color}}">
<button id="colFun_d" class="butin">{{select}}</button>
</div>
</div>
<?php /** @brief Окно для изменения цвета фона текста */ $backgr_d; ?>
<div id="backgr_d" class="cust sb borderStyle">
<div class="deploy">
{{change_text_background}}:
<input type="color" id="backgrColor" class="colored" alt="{{color}}" title="{{choose_color}}">
<button id="backgrFun_d" class="butin">{{select}}</button>
</div>
</div>
<?php /** @brief Окно для создания плагина слева */ $pluginCreateLeft_d; ?>
<div id="pluginCreateLeft_d" class="cust sb borderStyle">
<div class="deploy">
{{create_plugin_left}}:<br>
<label for="pluginCreateLeftName">{{enter_plugin_name}}</label>
<label id="pluginRulesButton1" class="butin">!</label>
<div id="pluginRulesBlock1">
<div>{{plugin_name_guidelines}}</div>
<hr>
<div>{{used_plugin_names}}</div>
</div>
<input type="text" id="pluginCreateLeftName" class="inpbig">
<label for="pluginCreateLeftTitle">{{enter_plugin_title}}</label>
<input type="text" id="pluginCreateLeftTitle" class="inpbig">
<button id="pluginCreateLeftFun_d" class="butin">{{add}}</button>
</div>
</div>
<?php /** @brief Список выбора плагина слева */ $pluginAddLeft_d; ?>
<div id="pluginAddLeft_d" class="cust sb borderStyle">
<div class="deploy">
{{add_plugin_left}}:<br>
<label for="pluginAddLeftName">{{select_plugin}}</label>
<select id="pluginAddLeftName" class="sele"></select>
<label for="pluginAddLeftTitle">{{enter_plugin_title}}</label>
<input type="text" id="pluginAddLeftTitle" class="inpbig">
<button id="pluginAddLeftFun_d" class="butin">{{select}}</button>
</div>
</div>
<?php /** @brief Окно для создания плагина справа */ $pluginCreateRight_d; ?>
<div id="pluginCreateRight_d" class="cust sb borderStyle">
<div class="deploy">
{{create_plugin_right}}:<br>
<label for="pluginCreateRightName">{{enter_plugin_name}}</label>
<label id="pluginRulesButton2" class="butin">!</label>
<div id="pluginRulesBlock2">
<div>{{plugin_name_guidelines}}</div>
<hr>
<div>{{used_plugin_names}}</div>
</div>
<input type="text" id="pluginCreateRightName" class="inpbig">
<label for="pluginCreateRightTitle">{{enter_plugin_title}}</label>
<input type="text" id="pluginCreateRightTitle" class="inpbig">
<button id="pluginCreateRightFun_d" class="butin">{{add}}</button>
</div>
</div>
<?php /** @brief Список выбора плагина справа */ $pluginAddRight_d; ?>
<div id="pluginAddRight_d" class="cust sb borderStyle">
<div class="deploy">
{{add_plugin_right}}:<br>
<label for="pluginAddRightName">{{select_plugin}}</label>
<select id="pluginAddRightName" class="sele"></select>
<label for="pluginAddRightTitle">{{enter_plugin_title}}</label>
<input type="text" id="pluginAddRightTitle" class="inpbig">
<button id="pluginAddRightFun_d" class="butin">{{select}}</button>
</div>
</div>
<?php /** @brief Редактирование меню страницы */ $contentPageCreate_d; ?>
<div id="contentPageCreate_d" class="cust sb borderStyle">
<div class="deploy">
{{create_page}}:<br>
{{select_or_create_file}} <input id="contentPageCreateUrl" class="inpbig">
<div id="contentPageCreateUrlManager" class="editi editib pers" style="margin: -3px 0px 0px -16px; width: 24px; height: 20px;"></div><br>
{{menu_name}}: <input id="contentPageCreateName" class="inpbig">
{{tab_title}}: <input id="contentPageCreateTitle" class="inpbig">
{{design}}: <select id="contentPageCreateTemplate" class="sele">
<?php ?>
</select>
<br>
<button id="contentPageCreateFun_d" class="butin">{{create}}</button>
</div>
</div>
<?php /** @brief Настройки страницы */ $contentPageSettings_d; ?>
<div id="contentPageSettings_d" class="cust sb borderStyle">
<div class="deploy">
<button id="contentPageSettingsFun_d" class="butin">{{edit}}</button>
</div>
</div>
<?php /** @brief Основные настройки страницы */ $settingsMain_d; ?>
<div id="settingsMain_d" class="cust2 sb borderStyle" style="width: 200px;">
<div class="deploy" style="text-align: left;">
<option id="save" class="butinAuto">{{save}}</option>
<option id="saveHow" class="butinAuto">{{save_as}}</option>
<option id="getPage" class="butinAuto">{{open}}</option>
<option id="newPage" class="butinAuto">{{new}}</option>
</div>
</div>
<?php /** @brief Главная панель редактора */ $panel; ?>
<div id="panel" class="borderStyle"><div id="arrow-left" class="arrow borderStyle">&vltri;</div><div class="toolbar-container">
<div class="toolbar-group" style="margin-left: 14px;">
<span id="toolbar-group-button-main" class="editi editib pers toolbar-group-button"></span>
<span class="toolbar-group-content">
<div id="settingsMain" class="editi editib swit"></div>
<div id="htm" onclick="showHtmlCode()" class="editi editib pers" alt="{{html_code_main_block_alt}}" title="{{html_code_main_block_title}}"></div>
<div id="bac" class="editi editib pers" alt="{{undo_action_alt}}" title="{{undo_action_title}}"></div>
<div id="forw" class="editi editib pers" alt="{{redo_action_alt}}" title="{{redo_action_title}}"></div>
</span>
</div>
<div class="toolbar-group">
<span id="toolbar-group-button-text" class="editi editib pers toolbar-group-button"></span>
<span class="toolbar-group-content">
<div class="align-dropdown-text" id="ff">
<div class="current" data-cmd="'Roboto', sans-serif">Roboto</div><span class="dropdown-arrow">▾</span>
<ul class="align-list" style="left: -1px;">
<li data-cmd="'Roboto', sans-serif"><div>Roboto</div></li>
<li data-cmd="'Open Sans', sans-serif"><div>Open Sans</div></li>
<li data-cmd="'Montserrat', sans-serif"><div>Montserrat</div></li>
<li data-cmd="'Lora', serif"><div>Lora</div></li>
<li data-cmd="'Source Sans 3', sans-serif"><div>Source Sans Pro</div></li>
<li data-cmd="'Merriweather', serif"><div>Merriweather</div></li>
<li data-cmd="'PT Serif', serif"><div>PT Serif</div></li>
<li data-cmd="'Playfair Display', serif"><div>Playfair Display</div></li>
</ul>
</div>
<div class="align-dropdown-text" id="fs">
<div class="current" data-cmd="15px">15px</div><span class="dropdown-arrow">▾</span>
<ul class="align-list" style="left: -1px;">
<li data-cmd="1px"><div>1px</div></li><li data-cmd="2px"><div>2px</div></li><li data-cmd="4px"><div>4px</div></li><li data-cmd="6px"><div>6px</div></li><li data-cmd="8px"><div>8px</div></li><li data-cmd="10px"><div>10px</div></li><li data-cmd="11px"><div>11px</div></li><li data-cmd="12px"><div>12px</div></li><li data-cmd="13px"><div>13px</div></li><li data-cmd="14px"><div>14px</div></li><li data-cmd="15px"><div>15px</div></li><li data-cmd="16px"><div>16px</div></li><li data-cmd="17px"><div>17px</div></li><li data-cmd="18px"><div>18px</div></li><li data-cmd="19px"><div>19px</div></li><li data-cmd="20px"><div>20px</div></li><li data-cmd="22px"><div>22px</div></li><li data-cmd="24px"><div>24px</div></li><li data-cmd="28px"><div>28px</div></li><li data-cmd="32px"><div>32px</div></li><li data-cmd="48px"><div>48px</div></li><li data-cmd="56px"><div>56px</div></li><li data-cmd="64px"><div>64px</div></li><li data-cmd="96px"><div>96px</div></li>
</ul>
</div>
<div id="bol" class="editi editib pers editf" alt="{{bold_alt}}" title="{{bold_title}}"></div>
<div id="ital" class="editi editib pers editf" alt="{{italic_alt}}" title="{{italic_title}}"></div>
<div id="under" class="editi editib pers editf" alt="{{underline_alt}}" title="{{underline_title}}"></div>
<div id="strik" class="editi editib pers editf" alt="{{strikethrough_alt}}" title="{{strikethrough_title}}"></div>
<div style="display: inline-block;">
<div id="col" class="editi editimc pers" alt="{{font_color_alt}}" title="{{font_color_title}}"></div>
<div id="backgr" class="editi editimc pers" alt="{{background_color_alt}}" title="{{background_color_title}}"></div>
<div class="pickr-container"></div>
</div>
<div id="sup" class="editi editib pers editf" alt="{{superscript_alt}}" title="{{superscript_title}}"></div>
<div id="sub" class="editi editib pers editf" alt="{{subscript_alt}}" title="{{subscript_title}}"></div>
<div class="align-dropdown">
<div class="current editi editib pers" style="background-position:-798px 1666px;" data-cmd="listNone"></div>
<ul class="align-list">
<li data-cmd="1"><div class="editi editib pers" id="listNone"></div></li>
<li data-cmd="2"><div class="editi editib pers" id="listDots"></div></li>
<li data-cmd="3"><div class="editi editib pers" id="listNumbers"></div></li>
<li data-cmd="4"><div class="editi editib pers" id="listLetters"></div></li>
</ul>
</div>
<div class="align-dropdown">
<div class="current editi editib pers" style="background-position: 765px 517px;" data-cmd="equal"></div>
<ul class="align-list">
<li data-cmd="equal"><div class="editi editib pers" id="equal"></div></li>
<li data-cmd="equac"><div class="editi editib pers" id="equac"></div></li>
<li data-cmd="equar"><div class="editi editib pers" id="equar"></div></li>
<li data-cmd="equaj"><div class="editi editib pers" id="equaj"></div></li>
</ul>
</div>
<div id="forma" class="editi editib pers" alt="{{remove_format_alt}}" title="{{remove_format_title}}"></div>
</span>
</div>
<div class="toolbar-group">
<span id="toolbar-group-button-paste" class="editi editib pers toolbar-group-button"></span>
<span class="toolbar-group-content">
<div id="link" class="editi editib swit" alt="{{insert_link_alt}}" title="{{insert_link_title}}"></div>
<div id="linkdel" class="editi editib pers" alt="{{remove_link_alt}}" title="{{remove_link_title}}"></div>
<div class="align-dropdown-oneImg">
<div class="current editi editib pers" id="oneImg"></div>
<ul class="align-list" style="left: -1px;">
<li data-cmd="imgLink"><div id="imgLink">{{insert_image_link}}</div></li>
<li data-cmd="imgPc"><div id="imgPc">{{insert_image_PC}}</div></li>
<li data-cmd="imgManager"><div id="imgManager">{{insert_image_manager}}</div></li>
</ul>
</div>
<div id="hr" class="editi editib pers editf"></div>
<div id="tabl" class="editi editib pers editf"></div>
<div id="copyr" class="editi editib swit"></div>
<select id="pluginDropdownContent" class="edits pers3">
<option id="pluginAddLeft" value="pluginAddLeft" class="swit">{{add_plugin_left}}</option>
<option id="pluginAddRight" value="pluginAddRight" class="swit">{{add_plugin_right}}</option>
<option id="pluginDelete" value="pluginDelete" class="editfText">{{delete_plugin}}</option>
<option id="pluginMove" value="pluginMove" class="editfText">{{move_plugin}}</option>
</select>
</span>
</div>
</div><div id="arrow-right" class="arrow borderStyle">&vrtri;</div></div>
<!-- текстовый редактор -->
<form name="dat">
<textarea id="tex" name="tex" class="sb"></textarea>
</form>
</div>
<?php /** @brief Поля для редактирования элементов */ $editingMenuItems; ?>
<div id="editingMenuItems" class="borderStyle">
<div id="editingMenuItemsCopy" class="editingMenuItemsElement">{{copy}}</div>
<div id="editingMenuItemsCut" class="editingMenuItemsElement">{{cut}}</div>
<div id="editingMenuItemsPaste" class="editingMenuItemsElement">{{paste}}</div>
<hr id="editingMenuItemsHr">
<div id="elementEditPanelHr" class="elementEditPanelElement">
{{thickness_px}}: <input id="hr1Edit" class="inptx" value="1" type="number" title="{{thickness_tooltip}}"><br>
{{width_px_percent}}: <input id="hr2Edit" class="inptx" value="95%" type="text" title="{{width_tooltip}}"><br>
{{position}}: <select id="hr4Edit" class="sele" title="{{position_tooltip}}">
<option value="left_clear">{{left_clear}}</option>
<option value="right_clear">{{right_clear}}</option>
<option value="center_clear">{{center_clear}}</option>
<option selected value="left_text">{{left_text}}</option>
<option value="right_text">{{right_text}}</option>
<option value="text">{{in_text}}</option>
</select><br>
{{color}}: <input type="color" id="hr3cEdit" class="colored" title="{{choose_color}}"><br>
{{margin_top_px}}: <input id="hrMarginTopEdit" class="inptx" value="0" type="number" title="{{padding_top_tooltip}}"><br>
{{margin_right_px}}: <input id="hrMarginRightEdit" class="inptx" value="0" type="number" title="{{padding_right_tooltip}}"><br>
{{margin_bottom_px}}: <input id="hrMarginBottomEdit" class="inptx" value="0" type="number" title="{{padding_bottom_tooltip}}"><br>
{{margin_left_px}}: <input id="hrMarginLeftEdit" class="inptx" value="0" type="number" title="{{padding_left_tooltip}}"><br>
<input type="button" id="buthrEdit" class="butin" value="{{edit}}" title="{{edit_hr}}">
</div>
<div id="elementEditPanelImg" class="elementEditPanelElement">
{{image_url}}: <input id="ima1Edit" class="inpbig" title="{{url_tooltip}}"><br>
{{image_width_px}}: <input id="ima6Edit" class="inptx" placeholder="{{auto}}" value="250" type="number" title="{{width_tooltip}}"><br>
{{image_height_px}}: <input id="ima6aEdit" class="inptx" placeholder="{{auto}}" value="" type="number" title="{{height_tooltip}}"><br>
{{position}}: <select id="ima4Edit" class="sele" title="{{position_tooltip}}">
<option value="left_clear">{{left_clear}}</option>
<option value="right_clear">{{right_clear}}</option>
<option value="center_clear">{{center_clear}}</option>
<option selected value="left_text">{{left_text}}</option>
<option value="right_text">{{right_text}}</option>
<option value="text">{{in_text}}</option>
</select><br>
{{margin_top_px}}: <input id="imaMarginTopEdit" class="inptx" value="0" type="number" title="{{padding_top_tooltip}}"><br>
{{margin_right_px}}: <input id="imaMarginRightEdit" class="inptx" value="0" type="number" title="{{padding_right_tooltip}}"><br>
{{margin_bottom_px}}: <input id="imaMarginBottomEdit" class="inptx" value="0" type="number" title="{{padding_bottom_tooltip}}"><br>
{{margin_left_px}}: <input id="imaMarginLeftEdit" class="inptx" value="0" type="number" title="{{padding_left_tooltip}}"><br>
{{border_px}}: <input id="ima7Edit" class="inptx" value="0" type="number" title="{{border_tooltip}}"><br>
{{border_color}}: <input type="color" id="ima8cEdit" class="colored" title="{{choose_color}}"><br>
{{link_tooltip}}: <input id="imaLinkEdit" class="inpbig" type="url" title="{{link_tooltip}}"><br>
<input type="button" id="butimaEdit" class="butin" value="{{edit}}" title="{{edit_image}}"><br>
</div>
<div id="elementEditPanelTable" class="elementEditPanelElement">
<input type="button" class="buttonEditTable" value="{{add_row}}" id="editTableButtonAddLine" title="{{add_row_tooltip}}"><br>
<input type="button" class="buttonEditTable" value="{{delete_row}}" id="editTableButtonDeleteLine" title="{{delete_row_tooltip}}"><br>
<input type="button" class="buttonEditTable" value="{{add_column}}" id="editTableButtonAddColumn" title="{{add_column_tooltip}}"><br>
<input type="button" class="buttonEditTable" value="{{delete_column}}" id="editTableButtonDeleteColumn" title="{{delete_column_tooltip}}"><br>
{{width_px_percent}}: <input id="tab1Edit" class="inptx" value="50%" type="text" title="{{width_tooltip}}"><br>
{{position}}: <select id="tab6Edit" class="sele" title="{{position_tooltip}}">
<option value="left_clear">{{left_clear}}</option>
<option value="right_clear">{{right_clear}}</option>
<option value="center_clear">{{center_clear}}</option>
<option selected value="left_text">{{left_text}}</option>
<option value="right_text">{{right_text}}</option>
<option value="text">{{in_text}}</option>
</select><br>
{{padding_inner_px}}: <input id="tab4Edit" class="inptx" value="1" type="number" title="{{padding_inner_tooltip}}"><br>
{{margin_top_px}}: <input id="tabMarginTopEdit" class="inptx" value="0" type="number" title="{{padding_top_tooltip}}"><br>
{{margin_right_px}}: <input id="tabMarginRightEdit" class="inptx" value="0" type="number" title="{{padding_right_tooltip}}"><br>
{{margin_bottom_px}}: <input id="tabMarginBottomEdit" class="inptx" value="0" type="number" title="{{padding_bottom_tooltip}}"><br>
{{margin_left_px}}: <input id="tabMarginLeftEdit" class="inptx" value="0" type="number" title="{{padding_left_tooltip}}"><br>
{{border_px}}: <input id="tab9Edit" class="inptx" value="1" type="number" title="{{border_tooltip}}"><br>
{{border_color}}: <input type="color" id="tab10cEdit" class="colored" title="{{choose_color}}"><br>
{{background_color}}: <input type="color" id="tab11cEdit" class="colored" value="#FFFFFF" title="{{choose_color}}"><br>
<input type="button" id="butabEdit" class="butin" value="{{edit}}" title="{{edit_table}}"><br>
</div>
</div>

View File

@@ -0,0 +1,292 @@
<?php
/**
* @file func.editor.php
* @brief Содержит серверные функции для плагина редактора
*/
/**
* @brief Сохраняет содержимое центрального блока страницы
* @param array $params Массив с данными для сохранения, включая ключ 'saveContentIdData'
* @return string 'true' в случае успешного сохранения
* @throws Exception В случае проблем с сохранением контента
*/
function savePageCenterBlock($params) {
global $config, $path, $_SESSION;
$saveContentIdXml = $path . $_SESSION['page_url'] . ".page.php";
$saveContentIdData = $params['saveContentIdData'] ?? '';
$file = @simplexml_load_file($saveContentIdXml);
$node = $file->content->{$_SESSION['lng']};
$file->content->{$_SESSION['lng']} = '';
$node = dom_import_simplexml($node);
$doc = $node->ownerDocument;
$appended = $node->appendChild($doc->createCDATASection("\n" . $saveContentIdData . "\n"));
$saved = $file->asXML($saveContentIdXml);
if ($appended && $saved) {
return 'true';
}
throw new Exception("Problem saving content", -32003);
}
/**
* @brief Сохраняет левый и правый блоки страницы
* @param array $params Массив с данными блоков, ключ 'floatsBlock' содержит массив левых и правых блоков
* @return string 'true' в случае успешного сохранения
* @throws Exception В случае проблем с сохранением блоков
*/
function savePageSideBlocks($params) {
global $config, $path, $_SESSION;
$saveContentIdXml = $path . $_SESSION['page_url'] . ".page.php";
$file = @simplexml_load_file($saveContentIdXml);
$floatsBlock = json_decode($params['floatsBlock'] ?? '[]', true);
$left = $floatsBlock['left'] ?? [];
$right = $floatsBlock['right'] ?? [];
unset($file->lblock->block, $file->rblock->block);
foreach ($left as $d) {
$b = $file->lblock->addChild('block');
$b->addAttribute('url', htmlspecialchars($d['pluginUrl'] ?? '', ENT_QUOTES, 'UTF-8'));
$b->addAttribute('title', htmlspecialchars($d['title'] ?? '', ENT_QUOTES, 'UTF-8'));
$b->addAttribute('tclass',htmlspecialchars($d['tclass'] ?? '', ENT_QUOTES, 'UTF-8'));
$b->addAttribute('bclass',htmlspecialchars($d['bclass'] ?? '', ENT_QUOTES, 'UTF-8'));
}
foreach ($right as $d) {
$b = $file->rblock->addChild('block');
$b->addAttribute('url', htmlspecialchars($d['pluginUrl'] ?? '', ENT_QUOTES, 'UTF-8'));
$b->addAttribute('title', htmlspecialchars($d['title'] ?? '', ENT_QUOTES, 'UTF-8'));
$b->addAttribute('tclass',htmlspecialchars($d['tclass'] ?? '', ENT_QUOTES, 'UTF-8'));
$b->addAttribute('bclass',htmlspecialchars($d['bclass'] ?? '', ENT_QUOTES, 'UTF-8'));
}
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($file->asXML());
$ok = $dom->save($saveContentIdXml);
if ($ok) {
return 'true';
}
throw new Exception("Problem saving floats block", -32003);
}
/**
* @brief Сохраняет заголовок страницы
* @param array $params Массив с данными для сохранения, ключ 'newTitle' содержит новый заголовок
* @return string 'true' в случае успешного сохранения
* @throws Exception В случае проблем с сохранением заголовка или если узел не найден
*/
function savePageTitle($params) {
global $config, $path, $_SESSION;
$newTitle = htmlspecialchars($params['newTitle'] ?? '', ENT_QUOTES, 'UTF-8');
$filePath = $path . "data/filepath." . $_SESSION['lng'] . ".php";
$file = @simplexml_load_file($filePath);
$fileNode = rtrim($config['REQUEST_URI'], '.html');
$nodes = array_filter(explode('/', $fileNode));
$node = $file->index;
$current = 'index';
foreach ($nodes as $n) {
if ($n !== '' && isset($node->$n)) {
$node = $node->$n;
$current .= '->' . $n;
} else {
$error = "Node not found: $current->$n";
break;
}
}
if (isset($error)) {
throw new Exception($error, -32602);
}
$node['title'] = $newTitle;
$saved = $file->asXML($filePath);
if ($saved) {
return 'true';
}
throw new Exception("Problem saving title", -32003);
}
/**
* @brief Сохраняет весь контент страницы, включая центральный блок, боковые блоки и атрибуты
* @param array $params Массив с данными страницы, включая 'page_url', 'nameFile', 'saveContentIdData', 'floatsBlock', 'title', 'pluginUrl', 'tclass', 'bclass'
* @return string 'true' в случае успешного сохранения
* @throws Exception В случае проблем с сохранением содержимого страницы
*/
function saveHowPageContent($params) {
global $config, $path, $_SESSION;
$_SESSION['page_url'] = $params['page_url'] . str_replace('.page.php', '', $params['nameFile']);
$filePath = $path . $params['page_url'] . $params['nameFile'];
$contentData = $params['saveContentIdData'] ?? '';
$file = simplexml_load_file($filePath);
$langNode = $file->content->{$_SESSION['lng']};
$file->content->{$_SESSION['lng']} = '';
$node = dom_import_simplexml($langNode);
$doc = $node->ownerDocument;
$node->appendChild($doc->createCDATASection("\n" . $contentData . "\n"));
$file->rblock = '';
$file->lblock = '';
$blocks = $params['floatsBlock'] ?? [];
$titles = $params['title'] ?? [];
$urls = $params['pluginUrl'] ?? [];
$tclasses = $params['tclass'] ?? [];
$bclasses = $params['bclass'] ?? [];
foreach ($blocks as $i => $blockName) {
$newBlock = $file->$blockName->addChild('block');
$newBlock->addAttribute('url', htmlspecialchars($urls[$i] ?? '', ENT_QUOTES,'UTF-8'));
$newBlock->addAttribute('title', htmlspecialchars($titles[$i] ?? '', ENT_QUOTES,'UTF-8'));
$newBlock->addAttribute('tclass',htmlspecialchars($tclasses[$i] ?? '',ENT_QUOTES,'UTF-8'));
$newBlock->addAttribute('bclass',htmlspecialchars($bclasses[$i] ?? '',ENT_QUOTES,'UTF-8'));
}
$dom = new DOMDocument('1.0','UTF-8');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($file->asXML());
$saved = $dom->save($filePath);
if ($saved === false) {
throw new Exception("Failed to save content", -32003);
}
return 'true';
}
/**
* @brief Создаёт новую страницу на основе шаблона
* @param array $params Массив с данными страницы, включая 'page_url', 'nameFile', 'saveContentIdData'
* @return string 'true' в случае успешного создания страницы
* @throws Exception В случае ошибок при создании файла или записи XML
*/
function createNewPage($params) {
global $config, $path, $_SESSION;
$_SESSION['page_url'] = $params['page_url'] . str_replace('.page.php', '', $params['nameFile']);
$saveContentIdXml = $path . $params['page_url'] . $params['nameFile'];
$templatePage = $path . "data/template.page.php";
$saveContentIdData = $params['saveContentIdData'] ?? '';
$templateContent = file_get_contents($templatePage);
if ($templateContent === false || file_put_contents($saveContentIdXml, $templateContent) === false) {
throw new Exception("Failed to create file", -32004);
}
$file = simplexml_load_file($saveContentIdXml);
$node = $file->content->{$_SESSION['lng']};
$file->content->{$_SESSION['lng']} = '';
$node = dom_import_simplexml($node);
$no = $node->ownerDocument;
$node->appendChild($no->createCDATASection("\n" . $saveContentIdData . "\n"));
$saved = $file->asXML($saveContentIdXml);
if ($saved === false) {
throw new Exception("Failed to write XML", -32003);
}
return 'true';
}
/**
* @brief Проверяет существование файла по указанному пути
* @param array $params Массив с данными проверки, включая 'path' и 'nameFile'
* @return string "true" если файл существует, иначе "false"
* @throws Exception В случае некорректного пути
*/
function checkFile($params) {
global $path;
$rel = trim($params['path'], "/\\");
if ($rel !== '' && strpos($rel, '..') !== false) {
throw new Exception("Invalid path", -32602);
}
$name = basename($params['nameFile']);
$full = rtrim($path, DIRECTORY_SEPARATOR)
. ($rel !== '' ? DIRECTORY_SEPARATOR . $rel : '')
. DIRECTORY_SEPARATOR . $name;
return file_exists($full) ? "true" : "false";
}
/**
* @brief Создаёт новый плагин с базовым шаблоном
* @param array $params Массив с данными плагина, включая 'pluginName'
* @return string Сообщение о создании плагина или "false", если плагин уже существует
* @throws Exception В случае отсутствия имени плагина или ошибок записи файла
*/
function createPlugin($params) {
$pluginName = $params['pluginName'] ?? '';
$baseDir = __DIR__ . '/../../plugin/';
if ($pluginName === '') {
throw new Exception("Missing pluginName", -32602);
}
$dir = $baseDir . $pluginName;
if (!is_dir($dir)) {
umask(0);
$stub = "<?php\n echo '<div class=\"pluginEditable\" contenteditable=\"true\"></div>'; \n?>";
if (file_put_contents("$dir/plug.php", $stub) === false) {
throw new Exception("Failed to write plug.php", -32004);
}
return "Plugin created: $pluginName";
}
return "false";
}
/**
* @brief Получает содержимое плагина
* @param array $params Массив с данными плагина, включая 'pluginName2'
* @return string HTML-контент плагина
* @throws Exception В случае если файл плагина не найден
*/
function getPlugin($params) {
$pluginName = $params['pluginName2'] ?? '';
$file = __DIR__ . '/../../plugin/' . $pluginName . '/plug.php';
if (!is_file($file)) {
throw new Exception("Plugin not found", -32602);
}
ob_start();
include $file;
return ob_get_clean();
}
/**
* @brief Загружает изображение пользователя из Base64 и сохраняет на сервер
* @param array $params Массив с данными изображения, включая 'userImgBase64' и 'userImgName'
* @return string Путь к сохранённому изображению
* @throws Exception В случае ошибок при сохранении изображения
*/
function uploadImage($params) {
global $config, $path, $_SESSION;
$base64 = $params['userImgBase64'] ?? '';
$filename= $params['userImgName'] ?? 'image.png';
$uploaddir = 'img/users_img/' . ($_SESSION['username'] ?? '') . '/';
$name = pathinfo($filename, PATHINFO_FILENAME);
$ext = pathinfo($filename, PATHINFO_EXTENSION) ?: 'png';
$target = $uploaddir . $name . '.' . $ext;
$i = 1;
while (file_exists($target)) {
$target = $uploaddir . $name . "_$i." . $ext;
$i++;
}
$data = base64_decode($base64, true);
if (file_put_contents($target, $data) === false) {
throw new Exception("Error saving image", -32004);
}
return $target;
}
?>

24
main_plugin/editor/lang.js.php Executable file
View File

@@ -0,0 +1,24 @@
<?php
/**
* @file lang.js.php
* @brief Подготавливает языковые строки и подставляет их в JS-шаблон редактора
*/
/** @brief Языковой массив для редактора */
$lang = include $path . 'lang.php';
/** @brief Текущий язык пользователя, по умолчанию 'en' */
$lng = $_GET['lng'] ?? ($_SESSION['lng'] ?? 'en');
/** @brief Массив подстановок для шаблона JS */
$placeholders = [];
foreach ($lang[$lng] as $key => $value) {
$placeholders['{{' . $key . '}}'] = $value;
}
$js = file_get_contents($path . 'editor.js');
$js = strtr($js, $placeholders);
echo "window.editorJs = (function() {\n" . $js . "\n})();";
?>

514
main_plugin/editor/lang.php Executable file
View File

@@ -0,0 +1,514 @@
<?php
$lang = [
'ru' => [
'insert_line' => 'Вставить линию',
'thickness_px' => 'Толщина (px)',
'width_px_percent' => 'Ширина (px, %)',
'position' => 'Положение',
'left' => 'Слева',
'center' => 'По центру',
'right' => 'Справа',
'in_text' => 'В тексте',
'color' => 'Цвет',
'choose_color' => 'Нажмите, чтобы выбрать цвет',
'insert' => 'Вставить',
'insert_hr' => 'Вставить горизонтальную линию',
'insert_table' => 'Вставить таблицу',
'rows' => 'Строки',
'columns' => 'Колонки',
'padding_inner_px' => 'Внутренний отступ (px)',
'padding_outer_px' => 'Внешний отступ (px)',
'border_px' => 'Рамка (px)',
'border_color' => 'Цвет рамки',
'background_color' => 'Цвет фона',
'upload' => 'Загрузить',
'select' => 'Выбрать',
'image_url' => 'URL изображения',
'image_width_px' => 'Ширина изображения (px)',
'image_height_px' => 'Высота изображения (px)',
'margin_outer_px' => 'Внешний отступ (px)',
'link' => 'Ссылка',
'select_page_from_site' => 'Выбрать страницу с сайта',
'open_in_new_window' => 'Открывать в новом окне',
'yes' => 'Да',
'no' => 'Нет',
'underline' => 'Подчеркивание',
'insert_link' => 'Вставить ссылку',
'change_text_color' => 'Изменить цвет текста',
'change_text_background' => 'Изменить цвет фона текста',
'create_plugin_left' => 'Создать плагин слева',
'enter_plugin_name' => 'Введите имя плагина',
'plugin_name_guidelines' => 'В имени плагина только англ. буквы, цифры, пробелы, _',
'used_plugin_names' => 'Используемые имена плагинов',
'enter_plugin_title' => 'Введите заголовок плагина',
'add' => 'Добавить',
'add_plugin_left' => 'Добавить левый плагин',
'select_plugin' => 'Выберите плагин',
'create_plugin_right' => 'Создать плагин справа',
'add_plugin_right' => 'Добавить правый плагин',
'create_page' => 'Создать страницу',
'select_or_create_file' => 'Выбрать или создать файл',
'menu_name' => 'Название в меню',
'tab_title' => 'Название во вкладке',
'design' => 'Дизайн',
'create' => 'Создать',
'edit' => 'Изменить',
'save' => 'Сохранить',
'save_as' => 'Сохранить как',
'open' => 'Открыть',
'new' => 'Новый',
'html_code_main_block_alt' => 'HTML-код главного блока',
'html_code_main_block_title' => 'HTML-код главного блока',
'undo_action_alt' => 'Отменить действие',
'undo_action_title' => 'Отменить действие',
'redo_action_alt' => 'Повторить действие',
'redo_action_title' => 'Повторить действие',
'bold_alt' => 'Жирный',
'bold_title' => 'Сделать текст жирным',
'italic_alt' => 'Курсив',
'italic_title' => 'Сделать текст курсивом',
'underline_alt' => 'Подчеркнутый',
'underline_title' => 'Сделать текст подчеркнутым',
'strikethrough_alt' => 'Зачеркнутый',
'strikethrough_title' => 'Сделать текст зачеркнутым',
'font_color_alt' => 'Цвет шрифта',
'font_color_title' => 'Сделать текст другим цветом',
'background_color_alt' => 'Цвет фона',
'background_color_title' => 'Сделать фон другим цветом',
'superscript_alt' => 'Надстрочный',
'superscript_title' => 'Сделать текст надстрочным',
'subscript_alt' => 'Подстрочный',
'subscript_title' => 'Сделать текст подстрочным',
'list_none' => 'Без списка',
'align_left_alt' => 'Выравнить влево',
'align_left_title' => 'Выравнивание влево',
'align_center_alt' => 'Выравнить по центру',
'align_center_title' => 'Выравнивание по центру',
'align_right_alt' => 'Выравнить вправо',
'align_right_title' => 'Выравнивание вправо',
'align_justify_alt' => 'Выровнять по ширине',
'align_justify_title' => 'Выровнять по ширине',
'remove_format_alt' => 'Удалить форматирование',
'remove_format_title' => 'Удалить форматирование',
'insert_link_alt' => 'Вставить ссылку',
'insert_link_title' => 'Вставить ссылку',
'remove_link_alt' => 'Удалить ссылку',
'remove_link_title' => 'Удалить ссылку',
'edit_title_title' => 'Изменить заголовок',
'insert_image_link' => 'Вставить изображение по ссылке',
'insert_image_PC' => 'Загрузить изображение с компьютера',
'insert_image_manager' => 'Выбрать изображение через менеджер',
'insert_symbol' => 'Вставить символ',
'delete_plugin' => 'Удалить плагин',
'move_plugin' => 'Переместить плагин',
'copy' => 'Копировать',
'cut' => 'Вырезать',
'paste' => 'Вставить',
'auto' => 'авто',
'insert_url' => 'Вставьте URL!',
'delete_plugin_confirm' => 'Удалить плагин?',
'action_not_defined' => 'Действие не определено',
'plugin_name_empty_error' => 'Имя плагина не может быть пустым!',
'plugin_not_selected_error' => 'Плагин не выбран!',
'plugin_name_guidelines' => 'В имени плагина можно использовать только английские буквы, цифры, пробелы и подчеркивания!',
'plugin_name_exists_suffix' => ' - это имя плагина уже используется!',
'used_plugin_names' => 'Используемые имена плагина:',
'plugin_created_left_suffix' => 'создан на левую',
'plugin_added_left_suffix' => 'добавлен на левую',
'plugin_created_right_suffix' => 'создан на правую',
'plugin_added_right_suffix' => 'добавлен на правую',
'img_upload_error' => 'Ошибка при загрузке изображения!',
'rows_or_columns_not_specified' => 'Вы не указали количество строк или столбцов!',
'insert_url_or_select_image' => 'Вставьте URL или выберите изображение!',
'cursor_not_in_editable_field' => 'Курсор не в редактируемом поле!',
'cursor_or_selection_not_in_editable_field' => 'Курсор или выделение не в редактируемом поле!',
'no_text_selected' => 'Вы не выделили текст!',
'padding_top_px' => 'Отступ сверху (px)',
'padding_right_px' => 'Отступ справа (px)',
'padding_bottom_px' => 'Отступ снизу (px)',
'padding_left_px' => 'Отступ слева (px)',
'thickness_tooltip' => 'Толщина линии в пикселях',
'width_tooltip' => 'Ширина в процентах или пикселях',
'position_tooltip' => 'Позиция элемента',
'padding_top_tooltip' => 'Задайте верхний отступ в пикселях',
'padding_right_tooltip' => 'Задайте правый отступ в пикселях',
'padding_bottom_tooltip' => 'Задайте нижний отступ в пикселях',
'padding_left_tooltip' => 'Задайте левый отступ в пикселях',
'url_tooltip' => 'Введите URL изображения',
'height_tooltip' => 'Высота изображения в пикселях',
'margin_tooltip' => 'Внешний отступ в пикселях',
'border_tooltip' => 'Толщина рамки в пикселях',
'link_tooltip' => 'Ссылка при клике на изображение',
'caption' => 'Подпись к изображению',
'caption_tooltip' => 'Текст подписи под изображением',
'add_row_tooltip' => 'Добавить строку в таблицу',
'delete_row_tooltip' => 'Удалить строку из таблицы',
'add_column_tooltip' => 'Добавить столбец в таблицу',
'delete_column_tooltip' => 'Удалить столбец из таблицы',
'padding_inner_tooltip' => 'Внутренний отступ в пикселях',
'padding_outer_tooltip' => 'Внешний отступ в пикселях',
'plugin_title_empty_error' => 'Заголовок пустой!',
'open_page' => 'Откройте страницу на сайте, а не через менеджер!',
'enter_new_title' => 'Введите новый заголовок:',
'title_saved' => 'Заголовок сохранён!',
'new_file' => 'Новый файл',
'add_row' => 'Добавить строку',
'delete_row' => 'Удалить строку',
'add_column' => 'Добавить столбец',
'delete_column'=> 'Удалить столбец',
'left_clear' => 'Слева (без текста)',
'right_clear' => 'Справа (без текста)',
'center_clear'=> 'По центру (без текста)',
'left_text' => 'Слева с текстом',
'right_text' => 'Справа с текстом',
'link_tooltip' => 'Ссылка при клике на изображение',
'margin_top_px' => 'Внешний отступ сверху (px)',
'margin_right_px' => 'Внешний отступ справа (px)',
'margin_bottom_px' => 'Внешний отступ снизу (px)',
'margin_left_px' => 'Внешний отступ слева (px)',
'in_text' => 'В тексте'
],
'en' => [
'insert_line' => 'Insert line',
'thickness_px' => 'Thickness (px)',
'width_px_percent' => 'Width (px, %)',
'position' => 'Position',
'left' => 'Left',
'center' => 'Center',
'right' => 'Right',
'in_text' => 'In text',
'color' => 'Color',
'choose_color' => 'Click to choose color',
'insert' => 'Insert',
'insert_hr' => 'Insert horizontal line',
'insert_table' => 'Insert table',
'rows' => 'Rows',
'columns' => 'Columns',
'padding_inner_px' => 'Inner padding (px)',
'padding_outer_px' => 'Outer padding (px)',
'border_px' => 'Border (px)',
'border_color' => 'Border color',
'background_color' => 'Background color',
'upload' => 'Upload',
'select' => 'Select',
'image_url' => 'Image URL',
'image_width_px' => 'Image width (px)',
'image_height_px' => 'Image height (px)',
'margin_outer_px' => 'Outer margin (px)',
'link' => 'Link',
'select_page_from_site' => 'Select page from site',
'open_in_new_window' => 'Open in new window',
'yes' => 'Yes',
'no' => 'No',
'underline' => 'Underline',
'insert_link' => 'Insert link',
'change_text_color' => 'Change text color',
'change_text_background' => 'Change text background',
'create_plugin_left' => 'Create plugin left',
'enter_plugin_name' => 'Enter plugin name',
'plugin_name_guidelines' => 'Plugin name: letters, digits, spaces, underscores',
'used_plugin_names' => 'Used plugin names',
'enter_plugin_title' => 'Enter plugin title',
'add' => 'Add',
'add_plugin_left' => 'Add left plugin',
'select_plugin' => 'Select plugin',
'create_plugin_right' => 'Create plugin right',
'add_plugin_right' => 'Add right plugin',
'create_page' => 'Create page',
'select_or_create_file' => 'Select or create file',
'menu_name' => 'Menu name',
'tab_title' => 'Tab title',
'design' => 'Design',
'create' => 'Create',
'edit' => 'Edit',
'save' => 'Save',
'save_as' => 'Save as',
'open' => 'Open',
'new' => 'New',
'html_code_main_block_alt' => 'HTML code main block',
'html_code_main_block_title' => 'HTML code main block',
'undo_action_alt' => 'Undo action',
'undo_action_title' => 'Undo action',
'redo_action_alt' => 'Redo action',
'redo_action_title' => 'Redo action',
'bold_alt' => 'Bold',
'bold_title' => 'Make text bold',
'italic_alt' => 'Italic',
'italic_title' => 'Make text italic',
'underline_alt' => 'Underline',
'underline_title' => 'Underline text',
'strikethrough_alt' => 'Strikethrough',
'strikethrough_title' => 'Strikethrough text',
'font_color_alt' => 'Font color',
'font_color_title' => 'Change font color',
'background_color_alt' => 'Background color',
'background_color_title' => 'Change background color',
'superscript_alt' => 'Superscript',
'superscript_title' => 'Make text superscript',
'subscript_alt' => 'Subscript',
'subscript_title' => 'Make text subscript',
'list_none' => 'Without a list',
'align_left_alt' => 'Align left',
'align_left_title' => 'Align text left',
'align_center_alt' => 'Align center',
'align_center_title' => 'Align text center',
'align_right_alt' => 'Align right',
'align_right_title' => 'Align text right',
'align_justify_alt' => 'Justify',
'align_justify_title' => 'Justify text',
'remove_format_alt' => 'Remove format',
'remove_format_title' => 'Remove formatting',
'insert_link_alt' => 'Insert link',
'insert_link_title' => 'Insert link',
'remove_link_alt' => 'Remove link',
'remove_link_title' => 'Remove link',
'edit_title_title' => 'Edit title',
'insert_image_link' => 'Insert image by link',
'insert_image_PC' => 'Upload image from PC',
'insert_image_manager' => 'Choose image from manager',
'insert_symbol' => 'Insert symbol',
'delete_plugin' => 'Delete plugin',
'move_plugin' => 'Move plugin',
'copy' => 'Copy',
'cut' => 'Cut',
'paste' => 'Paste',
'auto' => 'auto',
'insert_url' => 'Insert URL!',
'delete_plugin_confirm' => 'Delete plugin?',
'action_not_defined' => 'Action not defined',
'plugin_name_empty_error' => 'Plugin name cannot be empty!',
'plugin_not_selected_error' => 'Plugin not selected!',
'plugin_name_guidelines' => 'Plugin name can only contain English letters, numbers, spaces, and underscores!',
'plugin_name_exists_suffix' => ' - this plugin name is already taken!',
'used_plugin_names' => 'Used plugin names:',
'plugin_created_left_suffix' => 'created on the left',
'plugin_added_left_suffix' => 'added on the left',
'plugin_created_right_suffix' => 'created on the right',
'plugin_added_right_suffix' => 'added on the right',
'img_upload_error' => 'Image upload error!',
'rows_or_columns_not_specified' => 'You didn\'t specify the number of rows or columns!',
'insert_url_or_select_image' => 'Insert URL or select an image!',
'cursor_not_in_editable_field' => 'Cursor is not in an editable field!',
'cursor_or_selection_not_in_editable_field' => 'Cursor or selection is not in an editable field!',
'no_text_selected' => 'No text selected!',
'padding_top_px' => 'Padding top (px)',
'padding_right_px' => 'Padding right (px)',
'padding_bottom_px' => 'Padding bottom (px)',
'padding_left_px' => 'Padding left (px)',
'thickness_tooltip' => 'Line thickness in pixels',
'width_tooltip' => 'Width in percent or pixels',
'position_tooltip' => 'Element position',
'padding_top_tooltip' => 'Set top padding in pixels',
'padding_right_tooltip' => 'Set right padding in pixels',
'padding_bottom_tooltip' => 'Set bottom padding in pixels',
'padding_left_tooltip' => 'Set left padding in pixels',
'url_tooltip' => 'Enter image URL',
'height_tooltip' => 'Image height in pixels',
'margin_tooltip' => 'Outer margin in pixels',
'border_tooltip' => 'Border width in pixels',
'link_tooltip' => 'Link on image click',
'caption' => 'Image caption',
'caption_tooltip' => 'Text displayed under the image',
'add_row_tooltip' => 'Add a row to the table',
'delete_row_tooltip' => 'Delete a row from the table',
'add_column_tooltip' => 'Add a column to the table',
'delete_column_tooltip' => 'Delete a column from the table',
'padding_inner_tooltip' => 'Inner padding in pixels',
'padding_outer_tooltip' => 'Outer padding in pixels',
'plugin_title_empty_error' => 'Title is empty!',
'open_page' => 'Open the page on the website, not through the manager!',
'enter_new_title' => 'Enter a new title:',
'title_saved' => 'Title saved!',
'new_file' => 'Jauns fails',
'add_row' => 'Add row',
'delete_row' => 'Delete row',
'add_column' => 'Add column',
'delete_column'=> 'Delete column',
'left_clear' => 'Left (no text)',
'right_clear' => 'Right (no text)',
'center_clear'=> 'Center (no text)',
'left_text' => 'Left with text',
'link_tooltip' => 'Link on image click',
'margin_top_px' => 'Margin top (px)',
'margin_right_px' => 'Margin right (px)',
'margin_bottom_px' => 'Margin bottom (px)',
'margin_left_px' => 'Margin left (px)',
'right_text' => 'Right with text'
],
'lv' => [
'insert_line' => 'Ievietot līniju',
'thickness_px' => 'Biezums (px)',
'width_px_percent' => 'Platums (px, %)',
'position' => 'Novietojums',
'left' => 'Pa kreisi',
'center' => 'Centrā',
'right' => 'Pa labi',
'in_text' => 'Tekstā',
'color' => 'Krāsa',
'choose_color' => 'Klikšķiniet, lai izvēlētos krāsu',
'insert' => 'Ievietot',
'insert_hr' => 'Ievietot horizontālu līniju',
'insert_table' => 'Ievietot tabulu',
'rows' => 'Rindas',
'columns' => 'Kolonnas',
'padding_inner_px' => 'Iekšējais atkāpums (px)',
'padding_outer_px' => 'Ārējais atkāpums (px)',
'border_px' => 'Rāmja biezums (px)',
'border_color' => 'Rāmja krāsa',
'background_color' => 'Fona krāsa',
'upload' => 'Augšupielādēt',
'select' => 'Izvēlēties',
'image_url' => 'Attēla URL',
'image_width_px' => 'Attēla platums (px)',
'image_height_px' => 'Attēla augstums (px)',
'margin_outer_px' => 'Ārējais atkāpums (px)',
'link' => 'Saite',
'select_page_from_site' => 'Izvēlēties lapu no vietnes',
'open_in_new_window' => 'Atvērt jaunā logā',
'yes' => 'Jā',
'no' => 'Nē',
'underline' => 'Pasvītrojums',
'insert_link' => 'Ievietot saiti',
'change_text_color' => 'Mainīt teksta krāsu',
'change_text_background' => 'Mainīt teksta fona krāsu',
'create_plugin_left' => 'Izveidot spraudni pa kreisi',
'enter_plugin_name' => 'Ievadiet spraudņa nosaukumu',
'plugin_name_guidelines' => 'Nosaukumā tikai angļu burtu, ciparu, atstarpju un apakšsvītru',
'used_plugin_names' => 'Izmantotie spraudņu nosaukumi',
'enter_plugin_title' => 'Ievadiet spraudņa virsrakstu',
'add' => 'Pievienot',
'add_plugin_left' => 'Pievienot kreiso spraudni',
'select_plugin' => 'Izvēlēties spraudni',
'create_plugin_right' => 'Izveidot spraudni pa labi',
'add_plugin_right' => 'Pievienot labo spraudni',
'create_page' => 'Izveidot lapu',
'select_or_create_file' => 'Izvēlēties vai izveidot failu',
'menu_name' => 'Nosaukums izvēlnē',
'tab_title' => 'Cilnes virsraksts',
'design' => 'Dizains',
'create' => 'Izveidot',
'edit' => 'Rediģēt',
'save' => 'Saglabāt',
'save_as' => 'Saglabāt kā',
'open' => 'Atvērt',
'new' => 'Jauns',
'html_code_main_block_alt' => 'Galvenā bloka HTML kods',
'html_code_main_block_title' => 'Galvenā bloka HTML kods',
'undo_action_alt' => 'Atcelt darbību',
'undo_action_title' => 'Atcelt darbību',
'redo_action_alt' => 'Atkārtot darbību',
'redo_action_title' => 'Atkārtot darbību',
'bold_alt' => 'Treknraksts',
'bold_title' => 'Padarīt tekstu treknu',
'italic_alt' => 'Kursīvs',
'italic_title' => 'Padarīt tekstu kursīvu',
'underline_alt' => 'Pasvītrot',
'underline_title' => 'Pasvītrot tekstu',
'strikethrough_alt' => 'Pārvilkt',
'strikethrough_title' => 'Pārvilkt tekstu',
'font_color_alt' => 'Fonta krāsa',
'font_color_title' => 'Mainīt fonta krāsu',
'background_color_alt' => 'Fona krāsa',
'background_color_title' => 'Mainīt fona krāsu',
'superscript_alt' => 'Augšraksts',
'superscript_title' => 'Padarīt tekstu augšrakstu',
'subscript_alt' => 'Apakšraksts',
'subscript_title' => 'Padarīt tekstu apakšrakstu',
'list_none' => 'Bez saraksta',
'align_left_alt' => 'Līdzināt pa kreisi',
'align_left_title' => 'Līdzināt pa kreisi',
'align_center_alt' => 'Centrēt',
'align_center_title' => 'Centrēt tekstu',
'align_right_alt' => 'Līdzināt pa labi',
'align_right_title' => 'Līdzināt pa labi',
'align_justify_alt' => 'Izlīdzināt',
'align_justify_title' => 'Izlīdzināt tekstu',
'remove_format_alt' => 'Noņemt formatējumu',
'remove_format_title' => 'Noņemt formatējumu',
'insert_link_alt' => 'Ievietot saiti',
'insert_link_title' => 'Ievietot saiti',
'remove_link_alt' => 'Noņemt saiti',
'remove_link_title' => 'Noņemt saiti',
'edit_title_title' => 'Rediģēt virsrakstu',
'insert_image_link' => 'Ievietot attēlu pēc saites',
'insert_image_PC' => 'Augšupielādēt attēlu no datora',
'insert_image_manager' => 'Izvēlēties attēlu no pārvaldnieka',
'insert_symbol' => 'Ievietot simbolu',
'delete_plugin' => 'Dzēst spraudni',
'move_plugin' => 'Pārvietot spraudni',
'copy' => 'Kopēt',
'cut' => 'Izgriezt',
'paste' => 'Ielīmēt',
'auto' => 'auto',
'insert_url' => 'Ievietojiet URL!',
'delete_plugin_confirm' => 'Vai dzēst spraudni?',
'action_not_defined' => 'Darbība nav definēta',
'plugin_name_empty_error' => 'Spraudņa nosaukums nedrīkst būt tukšs!',
'plugin_not_selected_error' => 'Spraudnis nav izvēlēts!',
'plugin_name_guidelines' => 'Spraudņa nosaukumā var izmantot tikai angļu alfabēta burtus, ciparus, atstarpes un zemsvītras līnijas!',
'plugin_name_exists_suffix' => ' - šis spraudņa nosaukums jau ir izmantots!',
'used_plugin_names' => 'Izmantotie spraudņu nosaukumi:',
'plugin_created_left_suffix' => 'izveidots kreisajā pusē',
'plugin_added_left_suffix' => 'pievienots kreisajā pusē',
'plugin_created_right_suffix' => 'izveidots labajā pusē',
'plugin_added_right_suffix' => 'pievienots labajā pusē',
'img_upload_error' => 'Attēla augšupielādes kļūda!',
'rows_or_columns_not_specified' => 'Jūs neesat norādījis rindu vai kolonnu skaitu!',
'insert_url_or_select_image' => 'Ievietojiet URL vai izvēlieties attēlu!',
'cursor_not_in_editable_field' => 'Kursors nav rediģējamā laukā!',
'cursor_or_selection_not_in_editable_field' => 'Kursors vai atlase nav rediģējamā laukā!',
'no_text_selected' => 'Nav izvēlēts teksts!',
'padding_top_px' => 'Augšējais polsterējums (px)',
'padding_right_px' => 'Labais polsterējums (px)',
'padding_bottom_px' => 'Apakšējais polsterējums (px)',
'padding_left_px' => 'Kreisais polsterējums (px)',
'thickness_tooltip' => 'Līnijas biezums pikseļos',
'width_tooltip' => 'Platums procentos vai pikseļos',
'position_tooltip' => 'Elementa pozīcija',
'padding_top_tooltip' => 'Iestatiet augšējo polsterējumu pikseļos',
'padding_right_tooltip' => 'Iestatiet labo polsterējumu pikseļos',
'padding_bottom_tooltip' => 'Iestatiet apakšējo polsterējumu pikseļos',
'padding_left_tooltip' => 'Iestatiet kreiso polsterējumu pikseļos',
'url_tooltip' => 'Ievadiet attēla URL',
'height_tooltip' => 'Attēla augstums pikseļos',
'margin_tooltip' => 'Ārējais attālums pikseļos',
'border_tooltip' => 'Rāmja platums pikseļos',
'link_tooltip' => 'Saite, kad klikšķina uz attēla',
'caption' => 'Attēla paraksts',
'caption_tooltip' => 'Teksts zem attēla',
'add_row_tooltip' => 'Pievienot rindu tabulai',
'delete_row_tooltip' => 'Dzēst rindu no tabulas',
'add_column_tooltip' => 'Pievienot kolonnu tabulai',
'delete_column_tooltip' => 'Dzēst kolonnu no tabulas',
'padding_inner_tooltip' => 'Iekšējais polsterējums pikseļos',
'padding_outer_tooltip' => 'Ārējais polsterējums pikseļos',
'plugin_title_empty_error' => 'Virsraksts ir tukšs!',
'open_page' => 'Atveriet lapu vietnē, nevis caur pārvaldnieku!',
'enter_new_title' => 'Ievadiet jauno virsrakstu:',
'title_saved' => 'Virsraksts saglabāts!',
'new_file' => 'Jauns fails',
'add_row' => 'Pievienot rindu',
'delete_row' => 'Dzēst rindu',
'add_column' => 'Pievienot kolonnu',
'delete_column'=> 'Dzēst kolonnu',
'left_clear' => 'Pa kreisi (bez teksta)',
'right_clear' => 'Pa labi (bez teksta)',
'center_clear'=> 'Centrēti (bez teksta)',
'left_text' => 'Pa kreisi ar tekstu',
'right_text' => 'Pa labi ar tekstu',
'link_tooltip' => 'Saite kad klikšķina uz attēla',
'margin_top_px' => 'Ārējais attālums augšā (px)',
'margin_right_px' => 'Ārējais attālums pa labi (px)',
'margin_bottom_px' => 'Ārējais attālums apakšā (px)',
'margin_left_px' => 'Ārējais attālums pa kreisi (px)',
'in_text' => 'Tekstā'
],
];
return $lang;

26
main_plugin/editor/plug.php Executable file
View File

@@ -0,0 +1,26 @@
<?php
/**
* @file plug.php
* @brief Подключает плагин редактора для администраторов
*/
global $path, $_SESSION, $configAdmins;
/** @brief Языковой массив для плагина редактора */
$lang = include $path . 'main_plugin/editor/lang.php';
/** @brief Текущий язык пользователя, по умолчанию 'en' */
$lng = $_SESSION['lng'] ?? 'en';
if (in_array($_SESSION['username'], $configAdmins, true)) {
include_once $path . 'main_plugin/editor/func.editor.php';
$Html = file_get_contents($path . 'main_plugin/editor/editor.php');
foreach ($lang[$lng] as $key => $value) {
$Html = str_replace('{{' . $key . '}}', $value, $Html);
}
echo $Html;
echo '<link rel="stylesheet" type="text/css" href="/main_plugin/editor/editor.css">';
echo '<script type="text/javascript" src="/main_plugin/editor/lang.js.php?lng=' . $lng . '"></script>';
}
?>