Добавлены уведомления о выходе новой httpS версии сайта
This commit is contained in:
@@ -87,6 +87,87 @@
|
|||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
title="Внимание!"
|
||||||
|
:visible.sync="migrationVisible1"
|
||||||
|
width="90%">
|
||||||
|
<div>
|
||||||
|
Появилась httpS-версия сайта по адресу <a href="https://omnireader.ru" target="_blank">https://omnireader.ru</a><br>
|
||||||
|
Работа по httpS-протоколу, помимо безопасности соединения, позволяет воспользоваться всеми возможностями
|
||||||
|
современных браузеров, а именно, применительно к нашему ресурсу:
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>возможность автономной работы с читалкой (без доступа к интернету), кеширование сайта через appcache</li>
|
||||||
|
<li>безопасная передача на сервер данных о настройках и читаемых книгах при включенной синхронизации; все данные шифруются на стороне
|
||||||
|
браузера ключом доступа и никто (в т.ч. администратор) не имеет возможности их прочитать
|
||||||
|
<li>использование встроенных в JS функций шифрования и других</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
Для того, чтобы перейти на новую версию с сохранением настроек и читаемых книг необходимо сделать следующее:
|
||||||
|
<ul>
|
||||||
|
<li>зайти в "Настройки"->"Профили" и поставить галочку "Включить синхронизацию с сервером"</li>
|
||||||
|
<li>там же добавить профиль устройства с любым именем для синхронизации настроек<br>
|
||||||
|
<span style="margin-left: 20px"><i style="font-size: 90%" class="el-icon-info"></i>
|
||||||
|
после этого все данные будут автоматически сохранены на сервер
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
<li>далее нажать на кнопку "Показать ключ доступа" и кликнуть по ссылке "Ссылка для ввода ключа"<br>
|
||||||
|
<span style="margin-left: 20px"><i style="font-size: 90%" class="el-icon-info"></i>
|
||||||
|
произойдет переход на https-версию читалки и откроется окно для ввода ключа
|
||||||
|
</span><br>
|
||||||
|
<span style="margin-left: 20px"><i style="font-size: 90%" class="el-icon-info"></i>
|
||||||
|
подтвердив ввод ключа нажатием "OK" и выбрав профиль устройства, вы восстановите все ваши настройки в новой версии
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
Старая http-версия сайта будет доступна до конца 2019 года.<br>
|
||||||
|
Приносим извинения за доставленные неудобства.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="migrationDialogDisable">Больше не показывать</el-button>
|
||||||
|
<el-button @click="migrationDialogRemind">Напомнить позже</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
title="Внимание!"
|
||||||
|
:visible.sync="migrationVisible2"
|
||||||
|
width="90%">
|
||||||
|
<div>
|
||||||
|
Информация для пользователей старой версии читалки по адресу <a href="http://omnireader.ru" target="_blank">http://omnireader.ru</a><br>
|
||||||
|
Для того, чтобы перейти на новую httpS-версию с сохранением настроек и читаемых книг необходимо сделать следующее:
|
||||||
|
<ul>
|
||||||
|
<li>перейти на старую версию ресурса <a href="http://omnireader.ru" target="_blank">http://omnireader.ru</a></li>
|
||||||
|
<li>зайти в "Настройки"->"Профили" и поставить галочку "Включить синхронизацию с сервером"</li>
|
||||||
|
<li>там же добавить профиль устройства с любым именем для синхронизации настроек<br>
|
||||||
|
<span style="margin-left: 20px"><i style="font-size: 90%" class="el-icon-info"></i>
|
||||||
|
после этого все данные будут автоматически сохранены на сервер
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
<li>далее нажать на кнопку "Показать ключ доступа" и кликнуть по ссылке "Ссылка для ввода ключа"<br>
|
||||||
|
<span style="margin-left: 20px"><i style="font-size: 90%" class="el-icon-info"></i>
|
||||||
|
произойдет переход на https-версию читалки и откроется окно для ввода ключа
|
||||||
|
</span><br>
|
||||||
|
<span style="margin-left: 20px"><i style="font-size: 90%" class="el-icon-info"></i>
|
||||||
|
подтвердив ввод ключа нажатием "OK" и выбрав профиль устройства, вы восстановите все ваши настройки в новой версии
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
Старая http-версия сайта будет доступна до конца 2019 года.<br>
|
||||||
|
Приносим извинения за доставленные неудобства.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="migrationDialogDisable">Больше не показывать</el-button>
|
||||||
|
<el-button @click="migrationDialogRemind">Напомнить позже</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
</el-main>
|
</el-main>
|
||||||
|
|
||||||
</el-container>
|
</el-container>
|
||||||
@@ -192,6 +273,8 @@ class Reader extends Vue {
|
|||||||
|
|
||||||
whatsNewVisible = false;
|
whatsNewVisible = false;
|
||||||
whatsNewContent = '';
|
whatsNewContent = '';
|
||||||
|
migrationVisible1 = false;
|
||||||
|
migrationVisible2 = false;
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
@@ -265,6 +348,7 @@ class Reader extends Vue {
|
|||||||
this.loading = false;
|
this.loading = false;
|
||||||
|
|
||||||
await this.showWhatsNew();
|
await this.showWhatsNew();
|
||||||
|
await this.showMigration();
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,6 +360,7 @@ class Reader extends Vue {
|
|||||||
this.clickControl = settings.clickControl;
|
this.clickControl = settings.clickControl;
|
||||||
this.blinkCachedLoad = settings.blinkCachedLoad;
|
this.blinkCachedLoad = settings.blinkCachedLoad;
|
||||||
this.showWhatsNewDialog = settings.showWhatsNewDialog;
|
this.showWhatsNewDialog = settings.showWhatsNewDialog;
|
||||||
|
this.showMigrationDialog = settings.showMigrationDialog;
|
||||||
this.showToolButton = settings.showToolButton;
|
this.showToolButton = settings.showToolButton;
|
||||||
|
|
||||||
this.updateHeaderMinWidth();
|
this.updateHeaderMinWidth();
|
||||||
@@ -340,6 +425,33 @@ class Reader extends Vue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async showMigration() {
|
||||||
|
await utils.sleep(3000);
|
||||||
|
if (!this.settingsActive &&
|
||||||
|
this.mode == 'omnireader' && this.showMigrationDialog && this.migrationRemindDate != utils.formatDate(new Date(), 'coDate')) {
|
||||||
|
if (window.location.protocol == 'http:') {
|
||||||
|
this.migrationVisible1 = true;
|
||||||
|
} else if (window.location.protocol == 'https:') {
|
||||||
|
this.migrationVisible2 = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
migrationDialogDisable() {
|
||||||
|
this.migrationVisible1 = false;
|
||||||
|
this.migrationVisible2 = false;
|
||||||
|
if (this.showMigrationDialog) {
|
||||||
|
const newSettings = Object.assign({}, this.settings, { showMigrationDialog: false });
|
||||||
|
this.commit('reader/setSettings', newSettings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
migrationDialogRemind() {
|
||||||
|
this.migrationVisible1 = false;
|
||||||
|
this.migrationVisible2 = false;
|
||||||
|
this.commit('reader/setMigrationRemindDate', utils.formatDate(new Date(), 'coDate'));
|
||||||
|
}
|
||||||
|
|
||||||
openVersionHistory() {
|
openVersionHistory() {
|
||||||
this.whatsNewVisible = false;
|
this.whatsNewVisible = false;
|
||||||
this.versionHistoryToggle();
|
this.versionHistoryToggle();
|
||||||
@@ -376,6 +488,10 @@ class Reader extends Vue {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get mode() {
|
||||||
|
return this.$store.state.config.mode;
|
||||||
|
}
|
||||||
|
|
||||||
get routeParamUrl() {
|
get routeParamUrl() {
|
||||||
let result = '';
|
let result = '';
|
||||||
const path = this.$route.fullPath;
|
const path = this.$route.fullPath;
|
||||||
@@ -456,6 +572,10 @@ class Reader extends Vue {
|
|||||||
return this.$store.state.reader.whatsNewContentHash;
|
return this.$store.state.reader.whatsNewContentHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get migrationRemindDate() {
|
||||||
|
return this.$store.state.reader.migrationRemindDate;
|
||||||
|
}
|
||||||
|
|
||||||
addAction(pos) {
|
addAction(pos) {
|
||||||
let a = this.actionList;
|
let a = this.actionList;
|
||||||
if (!a.length || a[a.length - 1] != pos) {
|
if (!a.length || a[a.length - 1] != pos) {
|
||||||
|
|||||||
@@ -458,6 +458,14 @@
|
|||||||
<el-checkbox v-model="showWhatsNewDialog">Показывать уведомление "Что нового"</el-checkbox>
|
<el-checkbox v-model="showWhatsNewDialog">Показывать уведомление "Что нового"</el-checkbox>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="Уведомление">
|
||||||
|
<el-tooltip :open-delay="500" effect="light">
|
||||||
|
<template slot="content">
|
||||||
|
Показывать диалог о переходе на httpS-версию
|
||||||
|
</template>
|
||||||
|
<el-checkbox v-model="showMigrationDialog">Уведомлять о переходе на httpS-версию</el-checkbox>
|
||||||
|
</el-tooltip>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<el-form :model="form" size="mini" label-width="120px" @submit.native.prevent>
|
<el-form :model="form" size="mini" label-width="120px" @submit.native.prevent>
|
||||||
@@ -645,7 +653,7 @@ class SettingsPage extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get setStorageKeyLink() {
|
get setStorageKeyLink() {
|
||||||
return `http://${window.location.host}/#/reader?setStorageAccessKey=${utils.toBase58(this.serverStorageKey)}`;
|
return `https://${window.location.host}/#/reader?setStorageAccessKey=${utils.toBase58(this.serverStorageKey)}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
get predefineTextColors() {
|
get predefineTextColors() {
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
export const versionHistory = [
|
export const versionHistory = [
|
||||||
{
|
{
|
||||||
showUntil: '2019-08-10',
|
showUntil: '2019-09-10',
|
||||||
header: '0.7.0 (2019-08-??)',
|
header: '0.7.0 (2019-08-??)',
|
||||||
content:
|
content:
|
||||||
`
|
`
|
||||||
<ul>
|
<ul>
|
||||||
|
<li>налажена работа https-версии сайта, рекомендуется плавный переход</li>
|
||||||
<li>добавлена возможность загрузки и работы читалки в оффлайн-режиме (при отсутствии интернета)</li>
|
<li>добавлена возможность загрузки и работы читалки в оффлайн-режиме (при отсутствии интернета)</li>
|
||||||
<li>упрощение механизма серверной синхронизации с целью повышения надежности и избавления от багов</li>
|
<li>упрощение механизма серверной синхронизации с целью повышения надежности и избавления от багов</li>
|
||||||
<li>окна теперь можно перемещать за заголовок, как следствие улучшение управления на смартфонах</li>
|
<li>окна теперь можно перемещать за заголовок</li>
|
||||||
|
<li>улучшен внешний вид и управление на смартфонах</li>
|
||||||
<li>добавлен параметр "Компактность" в раздел "Вид"->"Текст" в настройках</li>
|
<li>добавлен параметр "Компактность" в раздел "Вид"->"Текст" в настройках</li>
|
||||||
</ul>
|
</ul>
|
||||||
`
|
`
|
||||||
|
|||||||
@@ -181,6 +181,7 @@ const settingDefaults = {
|
|||||||
imageFitWidth: true,
|
imageFitWidth: true,
|
||||||
showServerStorageMessages: true,
|
showServerStorageMessages: true,
|
||||||
showWhatsNewDialog: true,
|
showWhatsNewDialog: true,
|
||||||
|
showMigrationDialog: true,
|
||||||
|
|
||||||
fontShifts: {},
|
fontShifts: {},
|
||||||
showToolButton: {},
|
showToolButton: {},
|
||||||
@@ -202,6 +203,7 @@ const state = {
|
|||||||
profilesRev: 0,
|
profilesRev: 0,
|
||||||
allowProfilesSave: false,//подстраховка для разработки
|
allowProfilesSave: false,//подстраховка для разработки
|
||||||
whatsNewContentHash: '',
|
whatsNewContentHash: '',
|
||||||
|
migrationRemindDate: '',
|
||||||
currentProfile: '',
|
currentProfile: '',
|
||||||
settings: Object.assign({}, settingDefaults),
|
settings: Object.assign({}, settingDefaults),
|
||||||
settingsRev: {},
|
settingsRev: {},
|
||||||
@@ -236,6 +238,9 @@ const mutations = {
|
|||||||
setWhatsNewContentHash(state, value) {
|
setWhatsNewContentHash(state, value) {
|
||||||
state.whatsNewContentHash = value;
|
state.whatsNewContentHash = value;
|
||||||
},
|
},
|
||||||
|
setMigrationRemindDate(state, value) {
|
||||||
|
state.migrationRemindDate = value;
|
||||||
|
},
|
||||||
setCurrentProfile(state, value) {
|
setCurrentProfile(state, value) {
|
||||||
state.currentProfile = value;
|
state.currentProfile = value;
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user