소스 검색

Добавлена форма доната

Book Pauk 2 년 전
부모
커밋
a7b4d9c0d8

+ 11 - 71
client/components/Reader/HelpPage/DonateHelpPage/DonateHelpPage.vue

@@ -1,44 +1,17 @@
 <template>
     <div class="page">
-        <div class="box">
+        <div class="column items-center" style="width: 500px">
             <p class="p">
-                Вы можете пожертвовать на развитие проекта любую сумму:
+                Здесь вы можете пожертвовать на развитие проекта:
             </p>
 
-            <div class="address">                
-                <img class="logo" src="./assets/bitcoin.png">
-                <div class="para">
-                    {{ bitcoinAddress }}
-                    <q-icon class="copy-icon" name="la la-copy" @click="copyAddress(bitcoinAddress, 'Bitcoin-адрес')">
-                        <q-tooltip :delay="1000" anchor="top middle" self="center middle" content-style="font-size: 80%">
-                            Скопировать
-                        </q-tooltip>                    
-                    </q-icon>
-                </div>
-            </div>
-
-            <div class="address">                
-                <img class="logo" src="./assets/litecoin.png">
-                <div class="para">
-                    {{ litecoinAddress }}
-                    <q-icon class="copy-icon" name="la la-copy" @click="copyAddress(litecoinAddress, 'Litecoin-адрес')">
-                        <q-tooltip :delay="1000" anchor="top middle" self="center middle" content-style="font-size: 80%">
-                            Скопировать
-                        </q-tooltip>                    
-                    </q-icon>
-                </div>
-            </div>
+            <q-btn no-caps class="q-my-lg" color="green-8" size="14px" style="width: 200px" @click="makeDonation">
+                <q-icon class="q-mr-xs" name="la la-donate" size="24px" />
+                Поддержать проект
+            </q-btn>
 
-            <div class="address">                
-                <img class="logo" src="./assets/monero.png">
-                <div class="para">
-                    {{ moneroAddress }}
-                    <q-icon class="copy-icon" name="la la-copy" @click="copyAddress(moneroAddress, 'Monero-адрес')">
-                        <q-tooltip :delay="1000" anchor="top middle" self="center middle" content-style="font-size: 80%">
-                            Скопировать
-                        </q-tooltip>                    
-                    </q-icon>
-                </div>
+            <div style="font-size: 60%">
+                * Ваш донат является подарком автору проекта
             </div>
         </div>
     </div>
@@ -48,22 +21,14 @@
 //-----------------------------------------------------------------------------
 import vueComponent from '../../../vueComponent.js';
 
-import {copyTextToClipboard} from '../../../../share/utils';
+import * as utils from '../../../../share/utils';
 
 class DonateHelpPage {
-    bitcoinAddress = 'bc1q3tyumaj648pp2e69jalsez2lnt462ttc33nup9';
-    litecoinAddress = 'MP39Riec4oSNB3XMjiquKoLWxbufRYNXxZ';
-    moneroAddress = '8BQPnvHcPSHM5gMQsmuypDgx9NNsYqwXKfDDuswEyF2Q2ewQSfd2pkK6ydH2wmMyq2JViZvy9DQ35hLMx7g72mFWNJTPtnz';
-
     created() {
     }
 
-    async copyAddress(address, prefix) {
-        const result = await copyTextToClipboard(address);
-        if (result)
-            this.$root.notify.success(`${prefix} ${address} успешно скопирован в буфер обмена`);
-        else
-            this.$root.notify.error('Копирование не удалось');
+    makeDonation() {
+        utils.makeDonation();
     }
 }
 
@@ -84,29 +49,4 @@ export default vueComponent(DonateHelpPage);
     padding: 0;
     text-indent: 20px;
 }
-
-.box {
-    max-width: 550px;
-    overflow-wrap: break-word;
-}
-
-.address {
-    padding-top: 10px;
-    margin-top: 20px;
-}
-
-.para {
-    margin: 10px 10px 10px 40px;
-}
-
-.logo {
-    width: 130px;
-}
-
-.copy-icon {
-    margin-left: 10px;
-    cursor: pointer;
-    font-size: 120%;
-    color: blue;
-}
 </style>

+ 1 - 1
client/components/Reader/HelpPage/HelpPage.vue

@@ -1,5 +1,5 @@
 <template>
-    <Window @close="close">
+    <Window @close="close" style="z-index: 200">
         <template #header>
             Справка
         </template>

+ 50 - 58
client/components/Reader/ReaderDialogs/ReaderDialogs.vue

@@ -18,56 +18,51 @@
             </template>
         </Dialog>
 
-        <Dialog ref="dialog2" v-model="donationVisible">
-            <template #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>
+        <q-dialog ref="dialog2" v-model="donationVisible" style="z-index: 100" no-route-dismiss no-esc-dismiss no-backdrop-dismiss>
+            <div class="column bg-white no-wrap q-pa-md">
+                <div class="row justify-center q-mb-md" style="font-size: 110%">
+                    Здравствуйте, дорогие читатели!
+                </div>
 
-                <br><br>
-                <div class="row justify-center">
-                    <!--q-btn class="q-px-sm" color="primary" dense no-caps @click="openDonate">
-                        Помочь проекту
-                    </q-btn-->
+                <div class="q-mx-md column" style="word-break: normal">
+                    <div>
+                        Вот уже много лет мы все вместе пользуемся нашей любимой читалкой.<br><br>
+
+                        Напоминаем вам, что проект является некоммерческим и обладает такими
+                        достоинствами, как:
+
+                        <ul>
+                            <li>все функции читалки открыты и доступны совершенно бесплатно</li>
+                            <li>в проекте отсутствует какая-либо реклама или баннеры</li>
+                            <li>нет никакой регистрации и монетизации</li>
+                            <li>нет сбора персональных данных</li>
+                            <li>открытый исходный код</li>
+                            <li>проект постепенно улучшается, по мере возможности</li>
+                        </ul>
+
+                        Однако на оплату хостинга читалки и сервера обновлений автор тратит свои 
+                        собственные средства, а также тратит свое время и силы на улучшение проекта.
+                        <br><br>
+                        Поддержим же материально наш ресурс, чтобы и дальше спокойно существовать и развиваться:
+                    </div>
+
+                    <q-btn style="margin: 10px 50px 10px 50px" color="green-8" size="14px" no-caps @click="makeDonation">
+                        <q-icon class="q-mr-xs" name="la la-donate" size="24px" />
+                        Поддержать проект
+                    </q-btn>
+
+                    <q-btn style="margin: 0 50px 20px 50px" size="14px" no-caps @click="donationDialogRemind">
+                        Напомнить в следующем месяце
+                    </q-btn>
+
+                    <div class="row justify-center">
+                        <div class="q-px-sm clickable" style="font-size: 80%" @click="openDonate">
+                            Помочь проекту можно в любое время
+                        </div>
+                    </div>
                 </div>
             </div>
-
-            <template #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>
-            </template>
-        </Dialog>
+        </q-dialog>
 
         <Dialog ref="dialog3" v-model="urlHelpVisible">
             <template #header>
@@ -134,7 +129,7 @@ class ReaderDialogs {
     loadSettings() {
         const settings = this.settings;
         this.showWhatsNewDialog = settings.showWhatsNewDialog;
-        this.showDonationDialog2020 = settings.showDonationDialog2020;
+        this.showDonationDialog = settings.showDonationDialog;
     }
 
     async showWhatsNew() {
@@ -149,9 +144,9 @@ class ReaderDialogs {
     }
 
     async showDonation() {
-        const today = utils.formatDate(new Date(), 'coDate');
+        const today = utils.formatDate(new Date(), 'coMonth');
 
-        if ((this.mode == 'omnireader' || this.mode == 'liberama.top') && today < '2020-03-01' && this.showDonationDialog2020 && this.donationRemindDate != today) {
+        if ((this.mode == 'omnireader' || this.mode == 'liberama.top') && this.showDonationDialog && this.donationRemindDate != today) {
             await utils.sleep(3000);
             this.donationVisible = true;
         }
@@ -166,20 +161,17 @@ class ReaderDialogs {
         this.urlHelpVisible = false;
     }
 
-    donationDialogDisable() {
+    donationDialogRemind() {
         this.donationVisible = false;
-        if (this.showDonationDialog2020) {
-            this.commit('reader/setSettings', { showDonationDialog2020: false });
-        }
+        this.commit('reader/setDonationRemindDate', utils.formatDate(new Date(), 'coMonth'));
     }
 
-    donationDialogRemind() {
-        this.donationVisible = false;
-        this.commit('reader/setDonationRemindDate', utils.formatDate(new Date(), 'coDate'));
+    makeDonation() {
+        utils.makeDonation();
+        this.donationDialogRemind();
     }
 
     openDonate() {
-        this.donationVisible = false;
         this.$emit('donate-toggle');
     }
 

+ 5 - 5
client/components/Reader/SettingsPage/OthersTab.inc

@@ -41,15 +41,15 @@
     </q-checkbox>
 </div>
 
-<!--div class="item row">
+<div class="item row">
     <div class="label-6">Уведомление</div>
-    <q-checkbox size="xs" v-model="showDonationDialog2020">
-        Показывать "Оплатим хостинг вместе"
+    <q-checkbox size="xs" v-model="showDonationDialog">
+        Показывать форму доната
         <q-tooltip :delay="1000" anchor="top middle" self="bottom middle" content-style="font-size: 80%">
-            Показывать уведомление "Оплатим хостинг вместе"
+            Показывать диалог для сбора пожертвований
         </q-tooltip>
     </q-checkbox>
-</div-->
+</div>
 
 <!---------------------------------------------->
 <div class="part-header">Другое</div>

+ 7 - 1
client/share/utils.js

@@ -45,6 +45,8 @@ export function formatDate(d, format) {
                 `${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}`;
         case 'coDate':
             return `${d.getFullYear()}-${(d.getMonth() + 1).toString().padStart(2, '0')}-${d.getDate().toString().padStart(2, '0')}`;
+        case 'coMonth':
+            return `${(d.getMonth() + 1).toString().padStart(2, '0')}-${d.getDate().toString().padStart(2, '0')}`;
         case 'noDate':
             return `${d.getDate().toString().padStart(2, '0')}.${(d.getMonth() + 1).toString().padStart(2, '0')}.${d.getFullYear()}`;
     }
@@ -409,4 +411,8 @@ export function resizeImage(dataUrl, toWidth, toHeight, quality = 0.9) {
         if (!resolved)
             reject('Не удалось изменить размер');
     })().catch(reject); });
-}
+}
+
+export function makeDonation() {
+    window.open('https://donatty.com/liberama', '_blank');
+}

+ 1 - 1
client/store/modules/reader.js

@@ -180,7 +180,7 @@ const settingDefaults = {
 
     showServerStorageMessages: true,
     showWhatsNewDialog: true,
-    showDonationDialog2020: true,
+    showDonationDialog: true,
     showNeedUpdateNotify: true,
 
     fontShifts: {},