|
@@ -0,0 +1,250 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <Dialog ref="dialog1" v-model="whatsNewVisible">
|
|
|
+ <template slot="header">
|
|
|
+ Что нового:
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <div style="line-height: 20px" v-html="whatsNewContent"></div>
|
|
|
+
|
|
|
+ <span class="clickable" @click="openVersionHistory">Посмотреть историю версий</span>
|
|
|
+ <span slot="footer">
|
|
|
+ <q-btn class="q-px-md" dense no-caps @click="whatsNewDisable">Больше не показывать</q-btn>
|
|
|
+ </span>
|
|
|
+ </Dialog>
|
|
|
+
|
|
|
+ <Dialog ref="dialog2" v-model="donationVisible">
|
|
|
+ <template slot="header">
|
|
|
+ Здравствуйте, уважаемые читатели!
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <div style="word-break: normal">
|
|
|
+ Стартовала ежегодная акция "Оплатим хостинг вместе".<br><br>
|
|
|
+
|
|
|
+ Для оплаты годового хостинга читалки, необходимо собрать около 2000 рублей.
|
|
|
+ В настоящий момент у автора эта сумма есть в наличии. Однако будет справедливо, если каждый
|
|
|
+ сможет проголосовать рублем за то, чтобы читалка так и оставалась:
|
|
|
+
|
|
|
+ <ul>
|
|
|
+ <li>непрерывно улучшаемой</li>
|
|
|
+ <li>без рекламы</li>
|
|
|
+ <li>без регистрации</li>
|
|
|
+ <li>Open Source</li>
|
|
|
+ </ul>
|
|
|
+
|
|
|
+ Автор также обращается с просьбой о помощи в распространении
|
|
|
+ <a href="https://omnireader.ru" target="_blank">ссылки</a>
|
|
|
+ <q-icon class="copy-icon" name="la la-copy" @click="copyLink('https://omnireader.ru')">
|
|
|
+ <q-tooltip :delay="1000" anchor="top middle" self="center middle" content-style="font-size: 80%">Скопировать</q-tooltip>
|
|
|
+ </q-icon>
|
|
|
+ на читалку через тематические форумы, соцсети, мессенджеры и пр.
|
|
|
+ Чем нас больше, тем легче оставаться на плаву и тем больше мотивации у разработчика, чтобы продолжать работать над проектом.
|
|
|
+
|
|
|
+ <br><br>
|
|
|
+ Если соберется бóльшая сумма, то разработка децентрализованной библиотеки для свободного обмена книгами будет по возможности ускорена.
|
|
|
+ <br><br>
|
|
|
+ P.S. При необходимости можно воспользоваться подходящим обменником на <a href="https://www.bestchange.ru" target="_blank">bestchange.ru</a>
|
|
|
+
|
|
|
+ <br><br>
|
|
|
+ <div class="row justify-center">
|
|
|
+ <q-btn class="q-px-sm" color="primary" dense no-caps rounded @click="openDonate">Помочь проекту</q-btn>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <span slot="footer">
|
|
|
+ <span class="clickable row justify-end" style="font-size: 60%; color: grey" @click="donationDialogDisable">Больше не показывать</span>
|
|
|
+ <br>
|
|
|
+ <q-btn class="q-px-sm" dense no-caps @click="donationDialogRemind">Напомнить позже</q-btn>
|
|
|
+ </span>
|
|
|
+ </Dialog>
|
|
|
+
|
|
|
+ <Dialog ref="dialog3" v-model="liberamaTopVisible">
|
|
|
+ <template slot="header">
|
|
|
+ Здравствуйте, уважаемые читатели!
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <div style="word-break: normal">
|
|
|
+ Создан новый ресурс:<br><br>
|
|
|
+
|
|
|
+ <a href="https://liberama.top" target="_blank">https://liberama.top</a>
|
|
|
+ <br><br>
|
|
|
+ Это клон читалки Omni Reader, но с некоторыми дополнениями, ориентированными в сторону более свободного обмена книгами:
|
|
|
+
|
|
|
+ <ul>
|
|
|
+ <li>добавлено новое окно "Библиотека" для свободного доступа к Флибусте и другим ресурсам по желанию читателя</li>
|
|
|
+ <li>планируется добавить возможность создания подборок книг и обмена ими между пользователями</li>
|
|
|
+ </ul>
|
|
|
+
|
|
|
+ Легко мигрировать на новый сайт можно с помощью синхронизации с сервером.
|
|
|
+ О багах и предложениях просьба сообщать на почту <a href="mailto:bookpauk@gmail.com">bookpauk@gmail.com</a><br><br>
|
|
|
+ Спасибо, что вы с нами!
|
|
|
+ <br><br>
|
|
|
+ <div class="row justify-center">
|
|
|
+ <q-btn class="q-px-sm" color="primary" dense no-caps rounded @click="openDonate">Помочь проекту</q-btn>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <span slot="footer">
|
|
|
+ <q-btn class="q-px-sm" dense no-caps @click="liberamaTopDialogDisable">Больше не показывать</q-btn>
|
|
|
+ </span>
|
|
|
+ </Dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+import Vue from 'vue';
|
|
|
+import Component from 'vue-class-component';
|
|
|
+
|
|
|
+import Dialog from '../../share/Dialog.vue';
|
|
|
+import * as utils from '../../../share/utils';
|
|
|
+import {versionHistory} from '../versionHistory';
|
|
|
+
|
|
|
+export default @Component({
|
|
|
+ components: {
|
|
|
+ Dialog
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ settings: function() {
|
|
|
+ this.loadSettings();
|
|
|
+ },
|
|
|
+ },
|
|
|
+})
|
|
|
+class ReaderDialogs extends Vue {
|
|
|
+ whatsNewVisible = false;
|
|
|
+ whatsNewContent = '';
|
|
|
+ donationVisible = false;
|
|
|
+ liberamaTopVisible = false;
|
|
|
+
|
|
|
+ created() {
|
|
|
+ this.commit = this.$store.commit;
|
|
|
+ this.loadSettings();
|
|
|
+ }
|
|
|
+
|
|
|
+ mounted() {
|
|
|
+ }
|
|
|
+
|
|
|
+ async init() {
|
|
|
+ await this.showWhatsNew();
|
|
|
+ await this.showDonation();
|
|
|
+ await this.showLiberamaTop();
|
|
|
+ }
|
|
|
+
|
|
|
+ loadSettings() {
|
|
|
+ const settings = this.settings;
|
|
|
+ this.showWhatsNewDialog = settings.showWhatsNewDialog;
|
|
|
+ this.showDonationDialog2020 = settings.showDonationDialog2020;
|
|
|
+ this.showLiberamaTopDialog2020 = settings.showLiberamaTopDialog2020;
|
|
|
+ }
|
|
|
+
|
|
|
+ async showWhatsNew() {
|
|
|
+ const whatsNew = versionHistory[0];
|
|
|
+ if (this.showWhatsNewDialog &&
|
|
|
+ whatsNew.showUntil >= utils.formatDate(new Date(), 'coDate') &&
|
|
|
+ whatsNew.header != this.whatsNewContentHash) {
|
|
|
+ await utils.sleep(2000);
|
|
|
+ this.whatsNewContent = 'Версия ' + whatsNew.header + whatsNew.content;
|
|
|
+ this.whatsNewVisible = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ async showDonation() {
|
|
|
+ const today = utils.formatDate(new Date(), 'coDate');
|
|
|
+
|
|
|
+ if ((this.mode == 'omnireader' || this.mode == 'liberama.top') && today < '2020-03-01' && this.showDonationDialog2020 && this.donationRemindDate != today) {
|
|
|
+ await utils.sleep(3000);
|
|
|
+ this.donationVisible = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ donationDialogDisable() {
|
|
|
+ this.donationVisible = false;
|
|
|
+ if (this.showDonationDialog2020) {
|
|
|
+ this.commit('reader/setSettings', { showDonationDialog2020: false });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ donationDialogRemind() {
|
|
|
+ this.donationVisible = false;
|
|
|
+ this.commit('reader/setDonationRemindDate', utils.formatDate(new Date(), 'coDate'));
|
|
|
+ }
|
|
|
+
|
|
|
+ openDonate() {
|
|
|
+ this.donationVisible = false;
|
|
|
+ this.liberamaTopVisible = false;
|
|
|
+ this.$emit('donate-toggle');
|
|
|
+ }
|
|
|
+
|
|
|
+ async copyLink(link) {
|
|
|
+ const result = await utils.copyTextToClipboard(link);
|
|
|
+ if (result)
|
|
|
+ this.$root.notify.success(`Ссылка ${link} успешно скопирована в буфер обмена`);
|
|
|
+ else
|
|
|
+ this.$root.notify.error('Копирование не удалось');
|
|
|
+ }
|
|
|
+
|
|
|
+ openVersionHistory() {
|
|
|
+ this.whatsNewVisible = false;
|
|
|
+ this.$emit('version-history-toggle');
|
|
|
+ }
|
|
|
+
|
|
|
+ whatsNewDisable() {
|
|
|
+ this.whatsNewVisible = false;
|
|
|
+ const whatsNew = versionHistory[0];
|
|
|
+ this.commit('reader/setWhatsNewContentHash', whatsNew.header);
|
|
|
+ }
|
|
|
+
|
|
|
+ get mode() {
|
|
|
+ return this.$store.state.config.mode;
|
|
|
+ }
|
|
|
+
|
|
|
+ get settings() {
|
|
|
+ return this.$store.state.reader.settings;
|
|
|
+ }
|
|
|
+
|
|
|
+ get whatsNewContentHash() {
|
|
|
+ return this.$store.state.reader.whatsNewContentHash;
|
|
|
+ }
|
|
|
+
|
|
|
+ get donationRemindDate() {
|
|
|
+ return this.$store.state.reader.donationRemindDate;
|
|
|
+ }
|
|
|
+
|
|
|
+ async showLiberamaTop() {
|
|
|
+ const today = utils.formatDate(new Date(), 'coDate');
|
|
|
+
|
|
|
+ if (this.mode == 'omnireader' && today < '2020-12-01' && this.showLiberamaTopDialog2020) {
|
|
|
+ await utils.sleep(3000);
|
|
|
+ this.liberamaTopVisible = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ liberamaTopDialogDisable() {
|
|
|
+ this.liberamaTopVisible = false;
|
|
|
+ if (this.showLiberamaTopDialog2020) {
|
|
|
+ this.commit('reader/setSettings', { showLiberamaTopDialog2020: false });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ keyHook() {
|
|
|
+ if (this.$refs.dialog1.active || this.$refs.dialog2.active || this.$refs.dialog3.active)
|
|
|
+ return true;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+}
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.clickable {
|
|
|
+ color: blue;
|
|
|
+ text-decoration: underline;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.copy-icon {
|
|
|
+ cursor: pointer;
|
|
|
+ font-size: 120%;
|
|
|
+ color: blue;
|
|
|
+}
|
|
|
+</style>
|