@@ -5,127 +5,88 @@ const ИМЯ = "Файлы Главреда | Glavred Files" | |||||
// // // // | // // // // | ||||
УведомитьОбОшибкеЗагрузкиСодержимогоРедактируемогоМодуля = function(мир) | |||||
ОтобразитьВыборФайла = мир => | |||||
{ | { | ||||
var сообщение = "ОШИБКА Не удалось загрузить редактируемый модуль из хранилища бразуера | ERROR The module to be edited couldn't be loaded from the browser's storage"; | |||||
console.error(сообщение); | |||||
console.error(мир.указатель); | |||||
/* | |||||
$(`#${мир.макет.константы.содержимое}`).html(` | |||||
<div class="ошибка"> | |||||
<p>${сообщение}</p> | |||||
<p>${мир.указатель}</p> | |||||
</div> | |||||
`); | |||||
*/ | |||||
}; | |||||
// // // // | |||||
ЗагрузитьСодержимоеРедактируемогоМодуля = function(мир) | |||||
{ | |||||
// Пропускаем загрузку, если содержимое уже присутствует. | |||||
if (мир.редактируемыйМодуль.содержимое) | |||||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort(); | |||||
// Очищаем выбор. | |||||
for (var номер in файлы) | |||||
{ | { | ||||
мир.уведомить("загрузили содержимое"); | |||||
return; | |||||
$(`#${мир.макет.списокФайлов.раздел}-${номер}`).removeClass("uk-active"); | |||||
} | } | ||||
// Загружаем содержимое. | |||||
мир.модули.загрузилиСодержимоеСохранённогоМодуля.подписатьРаз(function() { | |||||
мир.уведомить("загрузили содержимое"); | |||||
}); | |||||
мир.модули.неЗагрузилиСодержимоеСохранённогоМодуля.подписатьРаз(function() { | |||||
мир.уведомить("не загрузили содержимое"); | |||||
}); | |||||
мир.модули.загрузитьСодержимоеСохранённогоМодуля(мир.указатель); | |||||
}; | |||||
// // // // | |||||
ПродолжитьЗагрузку = мир => | |||||
{ | |||||
мир.уведомить("загрузили содержимое"); | |||||
}; | |||||
// // // // | |||||
ЗадатьПараметрМодуляФайламиГлавреда = function(мир) | |||||
{ | |||||
задатьПараметрВСтрокеПоиска("📦", мир.редактируемыйМодуль.указатель); | |||||
// Отображаем выбор. | |||||
$(`#${мир.макет.списокФайлов.раздел}-${мир.номерВыбранногоФайла}`).addClass("uk-active"); | |||||
}; | }; | ||||
// // // // | // // // // | ||||
НазначитьРедактируемымМодульФайловГлавреда = function(мир) | |||||
ОтслеживатьВыборФайла = мир => | |||||
{ | { | ||||
мир.редактируемыйМодуль = мир.модули.модульПоИмени(ИМЯ); | |||||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort(); | |||||
for (var номер in файлы) | |||||
{ | |||||
const номерФайла = номер; | |||||
$(`#${мир.макет.списокФайлов.раздел}-${номер}-ссылка`).click(function() { | |||||
мир.номерВыбранногоФайла = номерФайла; | |||||
мир.уведомить("выбрали файл"); | |||||
}); | |||||
} | |||||
}; | }; | ||||
// // // // | // // // // | ||||
ПроверитьНаличиеРедактируемогоМодуля = function(мир) | |||||
ЗадатьРазделМенюСоСпискомФайлов = мир => | |||||
{ | { | ||||
мир.редактируемыйМодуль = мир.модули.модульПоУказателю(мир.указатель); | |||||
if (мир.редактируемыйМодуль) | |||||
var файлы = Object.keys(мир.редактируемыйМодуль.структура).sort(); | |||||
var содержимое = ""; | |||||
for (var номер in файлы) | |||||
{ | { | ||||
мир.уведомить("редактируемый модуль существует"); | |||||
} | |||||
else | |||||
{ | |||||
мир.уведомить("редактируемый модуль не существует"); | |||||
var название = файлы[номер]; | |||||
var id = `${мир.макет.списокФайлов.раздел}-${номер}`; | |||||
var пункт = мир.макет.списокФайлов.пунктМеню | |||||
.replace(/%название%/g, название) | |||||
.replace(/%id%/g, id) | |||||
; | |||||
содержимое += пункт; | |||||
} | } | ||||
var заголовок = "📦 " + мир.редактируемыйМодуль.имя; | |||||
var раздел = мир.макет.списокФайлов.разделМеню | |||||
.replace("%название%", заголовок) | |||||
.replace("%содержимое%", содержимое) | |||||
; | |||||
$(`#${мир.макет.константы.меню}`).append(раздел); | |||||
}; | }; | ||||
// // // // | // // // // | ||||
ВывестиПриветствиеОтФайловГлавреда = мир => | |||||
ЗадатьЭлементыМакетаСпискаФайлов = мир => | |||||
{ | { | ||||
console.debug("Привет от Файлов Главреда"); | |||||
мир.макет.списокФайлов = { | |||||
"раздел": "списокФайлов", | |||||
"разделМеню": ` | |||||
<ul class="uk-nav uk-nav-default tm-nav"> | |||||
<li class="uk-nav-header">%название%</li> | |||||
%содержимое% | |||||
</ul> | |||||
`, | |||||
"пунктМеню": ` | |||||
<li id="%id%"><a id="%id%-ссылка"><span id="%id%-изменение" hidden>• </span>%название%</a></li> | |||||
`, | |||||
}; | |||||
}; | }; | ||||
// // // // | // // // // | ||||
ЗадатьЗаголовокВкладкиБраузера = мир => | |||||
ВывестиПриветствиеОтФайловГлавреда = мир => | |||||
{ | { | ||||
document.title = мир.редактируемыйМодуль.имя; | |||||
console.debug("Привет от Файлов Главреда"); | |||||
}; | }; | ||||
// // // // | |||||
РазобратьПараметрыФайловГлавреда = мир => | |||||
{ | |||||
мир.указатель = null; | |||||
мир.файл = null; | |||||
var параметры = new URLSearchParams(window.location.search); | |||||
for (var имя of параметры.keys()) | |||||
{ | |||||
var значение = decodeURI(параметры.get(имя)); | |||||
var имя = decodeURI(имя); | |||||
if (имя == "📦") | |||||
{ | |||||
мир.указатель = значение; | |||||
} | |||||
else if (имя == "📁") | |||||
{ | |||||
мир.файл = значение; | |||||
} | |||||
} | |||||
}; |
@@ -1,14 +1,7 @@ | |||||
пуск редактора | |||||
пуск модулей главреда | |||||
вывести приветствие от файлов главреда | вывести приветствие от файлов главреда | ||||
разобрать параметры файлов главреда | |||||
проверить наличие редактируемого модуля | |||||
редактируемый модуль не существует | |||||
назначить редактируемым модуль файлов главреда | |||||
задать параметр модуля файлами главреда | |||||
продолжить загрузку | |||||
редактируемый модуль существует | |||||
загрузить содержимое редактируемого модуля | |||||
не загрузили содержимое | |||||
уведомить об ошибке загрузки содержимого редактируемого модуля | |||||
загрузили содержимое | |||||
задать заголовок вкладки браузера | |||||
задать элементы макета списка файлов | |||||
задать раздел меню со списком файлов | |||||
отслеживать выбор файла | |||||
выбрали файл | |||||
отобразить выбор файла |
@@ -52,22 +52,6 @@ | |||||
мир.редактор.session.setValue(содержимое); | мир.редактор.session.setValue(содержимое); | ||||
}; | }; | ||||
// // // // | |||||
ОтобразитьВыборФайла = function(мир) | |||||
{ | |||||
var id = мир.макет.константы.файл; | |||||
// Очищаем выбор. | |||||
for (var номер in мир.файлы) | |||||
{ | |||||
$(`#${id}-${номер}-элемент`).removeClass("uk-active"); | |||||
} | |||||
// Отображаем выбор. | |||||
$(`#${id}-${мир.номерВыбранногоФайла}-элемент`).addClass("uk-active"); | |||||
}; | |||||
*/ | */ | ||||
/* | /* | ||||
@@ -171,144 +155,6 @@ const ИМЯ = "Главред | Glavred"; | |||||
// // // // | // // // // | ||||
ОтслеживатьВыборФайла = function(мир) | |||||
{ | |||||
var id = мир.макет.константы.файл; | |||||
for (var номер in мир.файлы) | |||||
{ | |||||
const номерФайла = номер; | |||||
$(`#${id}-${номер}-ссылка`).click(function() { | |||||
мир.номерВыбранногоФайла = номерФайла; | |||||
мир.уведомить("выбрали файл"); | |||||
}); | |||||
} | |||||
}; | |||||
// // // // | |||||
ЗадатьСписокФайлов = function(мир) | |||||
{ | |||||
var м = мир.редактируемыйМодуль; | |||||
мир.файлы = Object.keys(м.структура).sort(); | |||||
var содержимое = ""; | |||||
var заголовок = мир.макет.элементы.заголовокМеню.replace("${название}", "📦 " + м.имя); | |||||
содержимое += заголовок; | |||||
var id = мир.макет.константы.файл; | |||||
for (var номер in мир.файлы) | |||||
{ | |||||
var файл = мир.файлы[номер]; | |||||
содержимое += мир.макет.элементы.пунктМеню | |||||
.replace("${название}", файл) | |||||
.replace(/\$\{id\}/g, `${id}-${номер}`) | |||||
; | |||||
} | |||||
$(`#${мир.макет.константы.меню}`).html(содержимое); | |||||
}; | |||||
// // // // | |||||
ЗадатьЗаголовокИВерсию = function(мир) | |||||
{ | |||||
var м = мир.ведущийМодуль; | |||||
$(`#${мир.макет.константы.заголовок}`).text(м.имя); | |||||
$(`#${мир.макет.константы.версия}`).text(м.версия); | |||||
}; | |||||
// // // // | |||||
ОчиститьМакетОтЗаглушек = function(мир) | |||||
{ | |||||
$(`#${мир.макет.константы.заголовок}`).text(""); | |||||
$(`#${мир.макет.константы.версия}`).text(""); | |||||
$(`#${мир.макет.константы.действия}`).text(""); | |||||
$(`#${мир.макет.константы.меню}`).text(""); | |||||
}; | |||||
// // // // | |||||
УстановитьМакет = function(мир) | |||||
{ | |||||
document.body.innerHTML = мир.макет.структура; | |||||
var вид = document.createElement("style"); | |||||
document.head.appendChild(вид); | |||||
вид.innerHTML = мир.макет.вид; | |||||
}; | |||||
// // // // | |||||
НастроитьМакет = function(мир) | |||||
{ | |||||
// Вырезаем тело из макета. | |||||
var html = мир.макет.структура; | |||||
var начало = html.indexOf("<!-- МАКЕТ_НАЧАЛО -->"); | |||||
var конец = html.indexOf("<!-- МАКЕТ_КОНЕЦ -->"); | |||||
html = html.substring(начало, конец); | |||||
var название = "редактор"; | |||||
мир.макет.константы = { | |||||
"заголовок": `${название}-макет-шапка-заголовок`, | |||||
"версия": `${название}-макет-шапка-версия`, | |||||
"действия": `${название}-макет-шапка-действия`, | |||||
"меню": `${название}-макет-меню`, | |||||
"файл": `${название}-макет-меню-файл`, | |||||
"содержимое": "редактор", | |||||
"сохранить": `${название}-макет-сохранить`, | |||||
}; | |||||
// Заменяем константы в макете. | |||||
for (var константа in мир.макет.константы) | |||||
{ | |||||
var старое = "${" + константа + "}"; | |||||
var новое = мир.макет.константы[константа]; | |||||
html = html.replace(старое, новое); | |||||
} | |||||
мир.макет.структура = html; | |||||
}; | |||||
// // // // | |||||
ЗагрузитьМакет = function(мир) | |||||
{ | |||||
var м = мир.ведущийМодуль; | |||||
var json = JSON.parse(м.содержимое["/макет|template.json"]); | |||||
мир.макет = { | |||||
"структура": м.содержимое["/макет|template.html"], | |||||
"вид": м.содержимое["/макет|template.css"], | |||||
"элементы": json, | |||||
}; | |||||
}; | |||||
// // // // | |||||
ЗадатьВедущийМодуль = function(мир) | |||||
{ | |||||
// Редактор является ведущим модулем. | |||||
мир.ведущийМодуль = мир.модули.модульПоИмени(ИМЯ); | |||||
}; | |||||
// // // // | |||||
ВывестиРазобранныеПараметры = function(мир) | ВывестиРазобранныеПараметры = function(мир) | ||||
{ | { | ||||
console.debug(` | console.debug(` | ||||