|
@@ -1,62 +1,374 @@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
// // // // |
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
УведомитьОНеудачномСохраненииИзменений = мир => |
|
|
|
|
|
|
|
|
УведомитьОЗавершенииПубликации = мир => |
|
|
{ |
|
|
{ |
|
|
UIkit.notification("Не удалось сохранить изменения", {status: "danger"}); |
|
|
|
|
|
UIkit.notification("Could not save changes", {status: "danger"}); |
|
|
|
|
|
|
|
|
UIkit.notification("Опубликовали"); |
|
|
|
|
|
UIkit.notification("Published"); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
УведомитьОбУспешномСохраненииИзменений = мир => |
|
|
|
|
|
|
|
|
ОпубликоватьСодержимое = мир => |
|
|
{ |
|
|
{ |
|
|
UIkit.notification("Сохранили успешно", {status: "success"}); |
|
|
|
|
|
UIkit.notification("Saved successfully", {status: "success"}); |
|
|
|
|
|
|
|
|
(async() => { |
|
|
|
|
|
|
|
|
|
|
|
await git.push({ |
|
|
|
|
|
fs: мир.fs, |
|
|
|
|
|
http: мир.гитHTTP, |
|
|
|
|
|
dir: мир.директория, |
|
|
|
|
|
remote: мир.источник, |
|
|
|
|
|
ref: мир.ветка, |
|
|
|
|
|
onAuth: url => { |
|
|
|
|
|
var auth = { |
|
|
|
|
|
"username": мир.пользователь, |
|
|
|
|
|
"password": мир.пароль, |
|
|
|
|
|
}; |
|
|
|
|
|
//var json = JSON.stringify(auth); |
|
|
|
|
|
//console.debug(`Auth url: '${url}' auth: '${json}'`); |
|
|
|
|
|
return auth; |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
мир.уведомить("опубликовали содержимое"); |
|
|
|
|
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ПродублироватьСодержимоеПубликуемогоМодуляВЛокальнуюКопиюГит = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
(async() => { |
|
|
|
|
|
|
|
|
|
|
|
var содержимое = мир.редактируемыйМодуль.содержимое; |
|
|
|
|
|
for (var файл in содержимое) |
|
|
|
|
|
{ |
|
|
|
|
|
var содержимоеФайла = содержимое[файл]; |
|
|
|
|
|
// НАДО Поддержать сохранение двоичных файлов. |
|
|
|
|
|
await мир.fs.promises.writeFile(мир.директория + файл, содержимоеФайла, "utf8"); |
|
|
|
|
|
var путь = файл.substr(1); |
|
|
|
|
|
await git.add({ |
|
|
|
|
|
fs: мир.fs, |
|
|
|
|
|
dir: мир.директория, |
|
|
|
|
|
filepath: путь, |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
await git.commit({ |
|
|
|
|
|
fs: мир.fs, |
|
|
|
|
|
dir: мир.директория, |
|
|
|
|
|
message: мир.сообщение, |
|
|
|
|
|
author: мир.автор, |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
мир.уведомить("продублировали содержимое"); |
|
|
|
|
|
})(); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
УведомитьОЗавершенииОбновления = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
UIkit.notification("Обновили локальную копию Гит"); |
|
|
|
|
|
UIkit.notification("Finished refreshing local Git copy"); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
УведомитьОНеобходимостиПерезагрузки = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
var сообщение = `ВНИМАНИЕ Произведена очистка локальной копии Гита. Перезагрузите страницу руками и повторите публикацию | WARNING Local Git copy has just been removed. Reload this page manually and repeat the publication ${мир.ошибка}`; |
|
|
|
|
|
UIkit.modal.alert(сообщение); |
|
|
|
|
|
console.error(сообщение); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОчиститьФайловуюСистему = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
// Очищаем IndexedDB. |
|
|
|
|
|
мир.fs = new LightningFS(мир.имяФС, { wipe: true }); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОбновитьХранилище = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
(async() => { |
|
|
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
|
{ |
|
|
|
|
|
await git.pull({ |
|
|
|
|
|
fs: мир.fs, |
|
|
|
|
|
http: мир.гитHTTP, |
|
|
|
|
|
dir: мир.директория, |
|
|
|
|
|
url: мир.хранилище, |
|
|
|
|
|
depth: 1, |
|
|
|
|
|
author: мир.автор, |
|
|
|
|
|
corsProxy: мир.прокси, |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
мир.уведомить("обновили хранилище"); |
|
|
|
|
|
} |
|
|
|
|
|
catch (ошибка) |
|
|
|
|
|
{ |
|
|
|
|
|
мир.ошибка = ошибка; |
|
|
|
|
|
мир.уведомить("не обновили хранилище"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СклонироватьХранилище = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
(async() => { |
|
|
|
|
|
|
|
|
|
|
|
await git.clone({ |
|
|
|
|
|
fs: мир.fs, |
|
|
|
|
|
http: мир.гитHTTP, |
|
|
|
|
|
dir: мир.директория, |
|
|
|
|
|
url: мир.хранилище, |
|
|
|
|
|
depth: 1, |
|
|
|
|
|
corsProxy: мир.прокси, |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
мир.уведомить("склонировали хранилище"); |
|
|
|
|
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
УведомитьОбОшибкеПодготовкиДиректории = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
var сообщение = `Не удалось подготовить директорию для хранилища Гит | Could not prepare a directory for Git repository ${мир.ошибка}`; |
|
|
|
|
|
UIkit.modal.alert(сообщение); |
|
|
|
|
|
console.error(сообщение); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ПодготовитьДиректорию = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
(async() => { |
|
|
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
|
{ |
|
|
|
|
|
await мир.fs.promises.mkdir(мир.директория); |
|
|
|
|
|
мир.уведомить("подготовили директорию"); |
|
|
|
|
|
} |
|
|
|
|
|
catch (ошибка) |
|
|
|
|
|
{ |
|
|
|
|
|
мир.ошибка = ошибка; |
|
|
|
|
|
мир.уведомить("не подготовили директорию"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ПроверитьНаличиеДиректории = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
мир.fs = new LightningFS(мир.имяФС); |
|
|
|
|
|
|
|
|
|
|
|
(async() => { |
|
|
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
|
{ |
|
|
|
|
|
await мир.fs.promises.readdir(мир.директория); |
|
|
|
|
|
мир.уведомить("директория присутствует"); |
|
|
|
|
|
} |
|
|
|
|
|
catch (ошибка) |
|
|
|
|
|
{ |
|
|
|
|
|
мир.ошибка = ошибка; |
|
|
|
|
|
мир.уведомить("директория отсутствует"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
})(); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ЗадатьНастройки = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
мир.хранилище = $(`#издатель-гит-хранилище`).val(); |
|
|
|
|
|
мир.имяФС = "fs_" + мир.хранилище; |
|
|
|
|
|
мир.пользователь = $(`#издатель-гит-имя`).val(); |
|
|
|
|
|
мир.пароль = $(`#издатель-гит-пароль`).val(); |
|
|
|
|
|
мир.автор = { |
|
|
|
|
|
"name": "Главред | Glavred", |
|
|
|
|
|
"email": "glavred@gitjs.org", |
|
|
|
|
|
}; |
|
|
|
|
|
мир.ветка = "master"; |
|
|
|
|
|
мир.директория = "/" + мир.ветка; |
|
|
|
|
|
мир.источник = "origin"; |
|
|
|
|
|
мир.сообщение = "Изменения от Главреда ГитЖС | Changes of GitJS Glavred"; |
|
|
|
|
|
//мир.прокси = "https://cors.isomorphic-git.org"; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ВключитьКнопкуПубликацииВГит = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
$(`#издатель-гит-опубликовать`).prop("disabled", false); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОтключитьКнопкуПубликацииВГит = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
$(`#издатель-гит-опубликовать`).prop("disabled", true); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
УведомитьОНачалеПубликацииВГит = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
UIkit.notification("Начали публикацию в Гит"); |
|
|
|
|
|
UIkit.notification("Started publishing to Git"); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СообщитьОНедостаточностиУчётныхДанных = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
var сообщение = "Недостаточно учётных данных для публикации | Not enough credentials to publish"; |
|
|
|
|
|
UIkit.modal.alert(сообщение); |
|
|
|
|
|
console.error(сообщение); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
СохранитьИзменения = мир => |
|
|
|
|
|
|
|
|
ПроверитьДостаточностьУчётныхДанных = мир => |
|
|
{ |
|
|
{ |
|
|
for (var файл in мир.временноеСодержимое) |
|
|
|
|
|
|
|
|
if ( |
|
|
|
|
|
$(`#издатель-гит-имя`).val() && |
|
|
|
|
|
$(`#издатель-гит-пароль`).val() && |
|
|
|
|
|
$(`#издатель-гит-хранилище`).val() |
|
|
|
|
|
) { |
|
|
|
|
|
мир.уведомить("учётных данных достаточно"); |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
{ |
|
|
{ |
|
|
var содержимое = мир.временноеСодержимое[файл]; |
|
|
|
|
|
мир.редактируемыйМодуль.содержимое[файл] = содержимое; |
|
|
|
|
|
|
|
|
мир.уведомить("учётных данных недостаточно"); |
|
|
} |
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
мир.временноеСодержимое = {}; |
|
|
|
|
|
|
|
|
|
|
|
мир.модули.сохранили.подписатьРаз(function() { |
|
|
|
|
|
мир.уведомить("сохранили изменения"); |
|
|
|
|
|
}); |
|
|
|
|
|
мир.модули.неСохранили.подписатьРаз(function() { |
|
|
|
|
|
мир.уведомить("не сохранили изменения"); |
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОтслеживатьКнопкуПубликацииВГит = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
$(`#издатель-гит-учётка`).submit(function(событие) { |
|
|
|
|
|
событие.preventDefault(); |
|
|
|
|
|
мир.уведомить("кнопка публикации в гит"); |
|
|
}); |
|
|
}); |
|
|
мир.модули.сохранить(мир.редактируемыйМодуль.указатель); |
|
|
|
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ЗадатьКнопкуСохранения = мир => |
|
|
|
|
|
|
|
|
ОтобразитьАдресХранилищаГита = мир => |
|
|
{ |
|
|
{ |
|
|
$(`#${мир.макет.константы.заголовокПраво}`).append(` |
|
|
|
|
|
<ul class="uk-navbar-nav"> |
|
|
|
|
|
<li><a id="сохранить-ссылка">💾</a></li> |
|
|
|
|
|
|
|
|
$(`#издатель-гит-хранилище`).val(мир.редактируемыйМодуль["🏠"]); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОтобразитьСодержимоеПунктаГитИздателя = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
$(`#${мир.макет.константы.содержимое}`).html(` |
|
|
|
|
|
<div class="издатель-гит-отступ"> |
|
|
|
|
|
<form id="издатель-гит-учётка"> |
|
|
|
|
|
<input id="издатель-гит-имя" class="uk-input uk-margin-small" type="text" placeholder="Имя | Name"> |
|
|
|
|
|
<input id="издатель-гит-пароль" class="uk-input uk-margin-small" type="password" placeholder="Пароль | Password"> |
|
|
|
|
|
<input id="издатель-гит-хранилище" class="uk-input uk-margin-small" type="text" placeholder="Хранилище | Repository" readonly> |
|
|
|
|
|
<button id="издатель-гит-опубликовать" class="uk-button uk-button-primary uk-margin-small">Опубликовать | Publish</button> |
|
|
|
|
|
</form> |
|
|
|
|
|
</div> |
|
|
|
|
|
`); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОтобразитьВыборПунктаГитИздателя = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
$(`#издатель-гит`).addClass("uk-active"); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ЗадатьВидСодержимогоМенюИздателя = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
задатьВид(` |
|
|
|
|
|
.издатель-гит-отступ |
|
|
|
|
|
{ |
|
|
|
|
|
padding: 1em; |
|
|
|
|
|
} |
|
|
|
|
|
`) |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ЗадатьРазделМенюИздателя = мир => |
|
|
|
|
|
{ |
|
|
|
|
|
$(`#${мир.макет.константы.меню}`).append(` |
|
|
|
|
|
<ul class="uk-nav uk-nav-default tm-nav"> |
|
|
|
|
|
<li class="uk-nav-header">📓 Издание | Publishing</li> |
|
|
|
|
|
<li id="издатель-гит"> |
|
|
|
|
|
<a id="издатель-гит-ссылка">Гит | Git</a> |
|
|
|
|
|
</li> |
|
|
</ul> |
|
|
</ul> |
|
|
`); |
|
|
`); |
|
|
$(`#сохранить-ссылка`).click(function() { |
|
|
|
|
|
мир.уведомить("выбрали сохранить"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$(`#издатель-гит-ссылка`).click(function() { |
|
|
|
|
|
мир.уведомить("выбрали пункт гит издателя"); |
|
|
}); |
|
|
}); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
*/ |
|
|
|