Добавлена форма доната
This commit is contained in:
@@ -1,44 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="page">
|
<div class="page">
|
||||||
<div class="box">
|
<div class="column items-center" style="width: 500px">
|
||||||
<p class="p">
|
<p class="p">
|
||||||
Вы можете пожертвовать на развитие проекта любую сумму:
|
Здесь вы можете пожертвовать на развитие проекта:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="address">
|
<q-btn no-caps class="q-my-lg" color="green-8" size="14px" style="width: 200px" @click="makeDonation">
|
||||||
<img class="logo" src="./assets/bitcoin.png">
|
<q-icon class="q-mr-xs" name="la la-donate" size="24px" />
|
||||||
<div class="para">
|
Поддержать проект
|
||||||
{{ bitcoinAddress }}
|
</q-btn>
|
||||||
<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">
|
<div style="font-size: 60%">
|
||||||
<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>
|
|
||||||
|
|
||||||
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -48,22 +21,14 @@
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
import vueComponent from '../../../vueComponent.js';
|
import vueComponent from '../../../vueComponent.js';
|
||||||
|
|
||||||
import {copyTextToClipboard} from '../../../../share/utils';
|
import * as utils from '../../../../share/utils';
|
||||||
|
|
||||||
class DonateHelpPage {
|
class DonateHelpPage {
|
||||||
bitcoinAddress = 'bc1q3tyumaj648pp2e69jalsez2lnt462ttc33nup9';
|
|
||||||
litecoinAddress = 'MP39Riec4oSNB3XMjiquKoLWxbufRYNXxZ';
|
|
||||||
moneroAddress = '8BQPnvHcPSHM5gMQsmuypDgx9NNsYqwXKfDDuswEyF2Q2ewQSfd2pkK6ydH2wmMyq2JViZvy9DQ35hLMx7g72mFWNJTPtnz';
|
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
}
|
}
|
||||||
|
|
||||||
async copyAddress(address, prefix) {
|
makeDonation() {
|
||||||
const result = await copyTextToClipboard(address);
|
utils.makeDonation();
|
||||||
if (result)
|
|
||||||
this.$root.notify.success(`${prefix} ${address} успешно скопирован в буфер обмена`);
|
|
||||||
else
|
|
||||||
this.$root.notify.error('Копирование не удалось');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,29 +49,4 @@ export default vueComponent(DonateHelpPage);
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
text-indent: 20px;
|
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>
|
</style>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<Window @close="close">
|
<Window @close="close" style="z-index: 200">
|
||||||
<template #header>
|
<template #header>
|
||||||
Справка
|
Справка
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -18,56 +18,51 @@
|
|||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|
||||||
<Dialog ref="dialog2" v-model="donationVisible">
|
<q-dialog ref="dialog2" v-model="donationVisible" style="z-index: 100" no-route-dismiss no-esc-dismiss no-backdrop-dismiss>
|
||||||
<template #header>
|
<div class="column bg-white no-wrap q-pa-md">
|
||||||
Здравствуйте, уважаемые читатели!
|
<div class="row justify-center q-mb-md" style="font-size: 110%">
|
||||||
</template>
|
Здравствуйте, дорогие читатели!
|
||||||
|
</div>
|
||||||
|
|
||||||
<div style="word-break: normal">
|
<div class="q-mx-md column" style="word-break: normal">
|
||||||
Стартовала ежегодная акция "Оплатим хостинг вместе".<br><br>
|
<div>
|
||||||
|
Вот уже много лет мы все вместе пользуемся нашей любимой читалкой.<br><br>
|
||||||
|
|
||||||
Для оплаты годового хостинга читалки, необходимо собрать около 2000 рублей.
|
Напоминаем вам, что проект является некоммерческим и обладает такими
|
||||||
В настоящий момент у автора эта сумма есть в наличии. Однако будет справедливо, если каждый
|
достоинствами, как:
|
||||||
сможет проголосовать рублем за то, чтобы читалка так и оставалась:
|
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>непрерывно улучшаемой</li>
|
<li>все функции читалки открыты и доступны совершенно бесплатно</li>
|
||||||
<li>без рекламы</li>
|
<li>в проекте отсутствует какая-либо реклама или баннеры</li>
|
||||||
<li>без регистрации</li>
|
<li>нет никакой регистрации и монетизации</li>
|
||||||
<li>Open Source</li>
|
<li>нет сбора персональных данных</li>
|
||||||
</ul>
|
<li>открытый исходный код</li>
|
||||||
|
<li>проект постепенно улучшается, по мере возможности</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
Автор также обращается с просьбой о помощи в распространении
|
Однако на оплату хостинга читалки и сервера обновлений автор тратит свои
|
||||||
<a href="https://omnireader.ru" target="_blank">ссылки</a>
|
собственные средства, а также тратит свое время и силы на улучшение проекта.
|
||||||
<q-icon class="copy-icon" name="la la-copy" @click="copyLink('https://omnireader.ru')">
|
<br><br>
|
||||||
<q-tooltip :delay="1000" anchor="top middle" self="center middle" content-style="font-size: 80%">
|
Поддержим же материально наш ресурс, чтобы и дальше спокойно существовать и развиваться:
|
||||||
Скопировать
|
</div>
|
||||||
</q-tooltip>
|
|
||||||
</q-icon>
|
|
||||||
на читалку через тематические форумы, соцсети, мессенджеры и пр.
|
|
||||||
Чем нас больше, тем легче оставаться на плаву и тем больше мотивации у разработчика, чтобы продолжать работать над проектом.
|
|
||||||
|
|
||||||
<br><br>
|
<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" />
|
||||||
<br><br>
|
Поддержать проект
|
||||||
P.S. При необходимости можно воспользоваться подходящим обменником на <a href="https://www.bestchange.ru" target="_blank">bestchange.ru</a>
|
</q-btn>
|
||||||
|
|
||||||
<br><br>
|
<q-btn style="margin: 0 50px 20px 50px" size="14px" no-caps @click="donationDialogRemind">
|
||||||
<div class="row justify-center">
|
Напомнить в следующем месяце
|
||||||
<!--q-btn class="q-px-sm" color="primary" dense no-caps @click="openDonate">
|
</q-btn>
|
||||||
Помочь проекту
|
|
||||||
</q-btn-->
|
<div class="row justify-center">
|
||||||
|
<div class="q-px-sm clickable" style="font-size: 80%" @click="openDonate">
|
||||||
|
Помочь проекту можно в любое время
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</q-dialog>
|
||||||
<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>
|
|
||||||
|
|
||||||
<Dialog ref="dialog3" v-model="urlHelpVisible">
|
<Dialog ref="dialog3" v-model="urlHelpVisible">
|
||||||
<template #header>
|
<template #header>
|
||||||
@@ -134,7 +129,7 @@ class ReaderDialogs {
|
|||||||
loadSettings() {
|
loadSettings() {
|
||||||
const settings = this.settings;
|
const settings = this.settings;
|
||||||
this.showWhatsNewDialog = settings.showWhatsNewDialog;
|
this.showWhatsNewDialog = settings.showWhatsNewDialog;
|
||||||
this.showDonationDialog2020 = settings.showDonationDialog2020;
|
this.showDonationDialog = settings.showDonationDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
async showWhatsNew() {
|
async showWhatsNew() {
|
||||||
@@ -149,9 +144,9 @@ class ReaderDialogs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async showDonation() {
|
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);
|
await utils.sleep(3000);
|
||||||
this.donationVisible = true;
|
this.donationVisible = true;
|
||||||
}
|
}
|
||||||
@@ -166,20 +161,17 @@ class ReaderDialogs {
|
|||||||
this.urlHelpVisible = false;
|
this.urlHelpVisible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
donationDialogDisable() {
|
|
||||||
this.donationVisible = false;
|
|
||||||
if (this.showDonationDialog2020) {
|
|
||||||
this.commit('reader/setSettings', { showDonationDialog2020: false });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
donationDialogRemind() {
|
donationDialogRemind() {
|
||||||
this.donationVisible = false;
|
this.donationVisible = false;
|
||||||
this.commit('reader/setDonationRemindDate', utils.formatDate(new Date(), 'coDate'));
|
this.commit('reader/setDonationRemindDate', utils.formatDate(new Date(), 'coMonth'));
|
||||||
|
}
|
||||||
|
|
||||||
|
makeDonation() {
|
||||||
|
utils.makeDonation();
|
||||||
|
this.donationDialogRemind();
|
||||||
}
|
}
|
||||||
|
|
||||||
openDonate() {
|
openDonate() {
|
||||||
this.donationVisible = false;
|
|
||||||
this.$emit('donate-toggle');
|
this.$emit('donate-toggle');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,15 +41,15 @@
|
|||||||
</q-checkbox>
|
</q-checkbox>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--div class="item row">
|
<div class="item row">
|
||||||
<div class="label-6">Уведомление</div>
|
<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 :delay="1000" anchor="top middle" self="bottom middle" content-style="font-size: 80%">
|
||||||
Показывать уведомление "Оплатим хостинг вместе"
|
Показывать диалог для сбора пожертвований
|
||||||
</q-tooltip>
|
</q-tooltip>
|
||||||
</q-checkbox>
|
</q-checkbox>
|
||||||
</div-->
|
</div>
|
||||||
|
|
||||||
<!---------------------------------------------->
|
<!---------------------------------------------->
|
||||||
<div class="part-header">Другое</div>
|
<div class="part-header">Другое</div>
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ export function formatDate(d, format) {
|
|||||||
`${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}`;
|
`${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}`;
|
||||||
case 'coDate':
|
case 'coDate':
|
||||||
return `${d.getFullYear()}-${(d.getMonth() + 1).toString().padStart(2, '0')}-${d.getDate().toString().padStart(2, '0')}`;
|
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':
|
case 'noDate':
|
||||||
return `${d.getDate().toString().padStart(2, '0')}.${(d.getMonth() + 1).toString().padStart(2, '0')}.${d.getFullYear()}`;
|
return `${d.getDate().toString().padStart(2, '0')}.${(d.getMonth() + 1).toString().padStart(2, '0')}.${d.getFullYear()}`;
|
||||||
}
|
}
|
||||||
@@ -410,3 +412,7 @@ export function resizeImage(dataUrl, toWidth, toHeight, quality = 0.9) {
|
|||||||
reject('Не удалось изменить размер');
|
reject('Не удалось изменить размер');
|
||||||
})().catch(reject); });
|
})().catch(reject); });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function makeDonation() {
|
||||||
|
window.open('https://donatty.com/liberama', '_blank');
|
||||||
|
}
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ const settingDefaults = {
|
|||||||
|
|
||||||
showServerStorageMessages: true,
|
showServerStorageMessages: true,
|
||||||
showWhatsNewDialog: true,
|
showWhatsNewDialog: true,
|
||||||
showDonationDialog2020: true,
|
showDonationDialog: true,
|
||||||
showNeedUpdateNotify: true,
|
showNeedUpdateNotify: true,
|
||||||
|
|
||||||
fontShifts: {},
|
fontShifts: {},
|
||||||
|
|||||||
Reference in New Issue
Block a user