Pārlūkot izejas kodu

Добавлены уведомления о выходе новой httpS версии сайта

Book Pauk 5 gadi atpakaļ
vecāks
revīzija
cf2efc2b92

+ 120 - 0
client/components/Reader/Reader.vue

@@ -87,6 +87,87 @@
                 </span>
             </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-container>
@@ -192,6 +273,8 @@ class Reader extends Vue {
 
     whatsNewVisible = false;
     whatsNewContent = '';
+    migrationVisible1 = false;
+    migrationVisible2 = false;
 
     created() {
         this.loading = true;
@@ -265,6 +348,7 @@ class Reader extends Vue {
             this.loading = false;
 
             await this.showWhatsNew();
+            await this.showMigration();
         })();
     }
 
@@ -276,6 +360,7 @@ class Reader extends Vue {
         this.clickControl = settings.clickControl;
         this.blinkCachedLoad = settings.blinkCachedLoad;
         this.showWhatsNewDialog = settings.showWhatsNewDialog;
+        this.showMigrationDialog = settings.showMigrationDialog;
         this.showToolButton = settings.showToolButton;
 
         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() {
         this.whatsNewVisible = false;
         this.versionHistoryToggle();
@@ -376,6 +488,10 @@ class Reader extends Vue {
 
     }
 
+    get mode() {
+        return this.$store.state.config.mode;
+    }
+
     get routeParamUrl() {
         let result = '';
         const path = this.$route.fullPath;
@@ -456,6 +572,10 @@ class Reader extends Vue {
         return this.$store.state.reader.whatsNewContentHash;
     }
 
+    get migrationRemindDate() {
+        return this.$store.state.reader.migrationRemindDate;
+    }
+
     addAction(pos) {
         let a = this.actionList;
         if (!a.length || a[a.length - 1] != pos) {

+ 9 - 1
client/components/Reader/SettingsPage/SettingsPage.vue

@@ -458,6 +458,14 @@
                             <el-checkbox v-model="showWhatsNewDialog">Показывать уведомление "Что нового"</el-checkbox>
                         </el-tooltip>
                     </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 :model="form" size="mini" label-width="120px" @submit.native.prevent>
@@ -645,7 +653,7 @@ class SettingsPage extends Vue {
     }
 
     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() {

+ 4 - 2
client/components/Reader/versionHistory.js

@@ -1,13 +1,15 @@
 export const versionHistory = [
 {
-    showUntil: '2019-08-10',
+    showUntil: '2019-09-10',
     header: '0.7.0 (2019-08-??)',
     content:
 `
 <ul>
+    <li>налажена работа https-версии сайта, рекомендуется плавный переход</li>
     <li>добавлена возможность загрузки и работы читалки в оффлайн-режиме (при отсутствии интернета)</li>
     <li>упрощение механизма серверной синхронизации с целью повышения надежности и избавления от багов</li>
-    <li>окна теперь можно перемещать за заголовок, как следствие улучшение управления на смартфонах</li>
+    <li>окна теперь можно перемещать за заголовок</li>
+    <li>улучшен внешний вид и управление на смартфонах</li>
     <li>добавлен параметр "Компактность" в раздел "Вид"->"Текст" в настройках</li>
 </ul>
 `

+ 5 - 0
client/store/modules/reader.js

@@ -181,6 +181,7 @@ const settingDefaults = {
     imageFitWidth: true,
     showServerStorageMessages: true,
     showWhatsNewDialog: true,
+    showMigrationDialog: true,
 
     fontShifts: {},
     showToolButton: {},
@@ -202,6 +203,7 @@ const state = {
     profilesRev: 0,
     allowProfilesSave: false,//подстраховка для разработки
     whatsNewContentHash: '',
+    migrationRemindDate: '',
     currentProfile: '',
     settings: Object.assign({}, settingDefaults),
     settingsRev: {},
@@ -236,6 +238,9 @@ const mutations = {
     setWhatsNewContentHash(state, value) {
         state.whatsNewContentHash = value;
     },
+    setMigrationRemindDate(state, value) {
+        state.migrationRemindDate = value;
+    },
     setCurrentProfile(state, value) {
         state.currentProfile = value;
     },