fix: show email field on adding household member
fix: move display settings to the bottom fix: reorder subscription form
This commit is contained in:
parent
0b82345ee9
commit
ec25d4bc5a
@ -1,3 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
$version = "v1.9.0";
|
$version = "v1.9.1";
|
||||||
?>
|
?>
|
||||||
22
index.php
22
index.php
@ -195,6 +195,17 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
if ($notificationsEnabled) {
|
||||||
|
?>
|
||||||
|
<div class="form-group-inline">
|
||||||
|
<input type="checkbox" id="notifications" name="notifications">
|
||||||
|
<label for="notifications"><?= translate('enable_notifications', $i18n) ?></label>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="payment_method"><?= translate('payment_method', $i18n) ?></label>
|
<label for="payment_method"><?= translate('payment_method', $i18n) ?></label>
|
||||||
<select id="payment_method" name="payment_method_id">
|
<select id="payment_method" name="payment_method_id">
|
||||||
@ -252,17 +263,6 @@
|
|||||||
<label for="inactive"><?= translate('inactive', $i18n) ?></label>
|
<label for="inactive"><?= translate('inactive', $i18n) ?></label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php
|
|
||||||
if ($notificationsEnabled) {
|
|
||||||
?>
|
|
||||||
<div class="form-group-inline">
|
|
||||||
<input type="checkbox" id="notifications" name="notifications">
|
|
||||||
<label for="notifications"><?= translate('enable_notifications', $i18n) ?></label>
|
|
||||||
</div>
|
|
||||||
<?php
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<input type="button" value="<?= translate('delete', $i18n) ?>" class="warning-button left" id="deletesub" style="display: none">
|
<input type="button" value="<?= translate('delete', $i18n) ?>" class="warning-button left" id="deletesub" style="display: none">
|
||||||
<input type="button" value="<?= translate('cancel', $i18n) ?>" class="secondary-button" onClick="closeAddSubscription()">
|
<input type="button" value="<?= translate('cancel', $i18n) ?>" class="secondary-button" onClick="closeAddSubscription()">
|
||||||
|
|||||||
@ -12,6 +12,7 @@ let i18n = {
|
|||||||
network_response_error: "Netzwerkfehler",
|
network_response_error: "Netzwerkfehler",
|
||||||
failed_add_member: "Hinzufügen von Mitglied fehlgeschlagen",
|
failed_add_member: "Hinzufügen von Mitglied fehlgeschlagen",
|
||||||
member: "Mitglied",
|
member: "Mitglied",
|
||||||
|
email: "E-Mail",
|
||||||
save_member: "Mitglied speichern",
|
save_member: "Mitglied speichern",
|
||||||
delete_member: "Mitglied löschen",
|
delete_member: "Mitglied löschen",
|
||||||
failed_remove_member: "Mitglied konnte nicht gelöscht werden",
|
failed_remove_member: "Mitglied konnte nicht gelöscht werden",
|
||||||
|
|||||||
@ -12,6 +12,7 @@ let i18n = {
|
|||||||
network_response_error: "Η ανταπόκριση του δικτύου δεν ήταν εντάξει",
|
network_response_error: "Η ανταπόκριση του δικτύου δεν ήταν εντάξει",
|
||||||
failed_add_member: "Αποτυχία προσθήκης μέλους",
|
failed_add_member: "Αποτυχία προσθήκης μέλους",
|
||||||
member: "Μέλος",
|
member: "Μέλος",
|
||||||
|
email: "Email",
|
||||||
save_member: "Αποθήκευση μέλους",
|
save_member: "Αποθήκευση μέλους",
|
||||||
delete_member: "Διαγραφή μέλους",
|
delete_member: "Διαγραφή μέλους",
|
||||||
failed_remove_member: "Αποτυχία διαγραφής μέλους",
|
failed_remove_member: "Αποτυχία διαγραφής μέλους",
|
||||||
|
|||||||
@ -12,6 +12,7 @@ let i18n = {
|
|||||||
network_response_error: "Network response was not ok",
|
network_response_error: "Network response was not ok",
|
||||||
failed_add_member: "Failed to add member",
|
failed_add_member: "Failed to add member",
|
||||||
member: "Member",
|
member: "Member",
|
||||||
|
email: "Email",
|
||||||
save_member: "Save member",
|
save_member: "Save member",
|
||||||
delete_member: "Delete member",
|
delete_member: "Delete member",
|
||||||
failed_remove_member: "Failed to remove member",
|
failed_remove_member: "Failed to remove member",
|
||||||
|
|||||||
@ -12,6 +12,7 @@ let i18n = {
|
|||||||
network_response_error: "Error en la respuesta de la red",
|
network_response_error: "Error en la respuesta de la red",
|
||||||
failed_add_member: "Error al añadir miembro",
|
failed_add_member: "Error al añadir miembro",
|
||||||
member: "Miembro",
|
member: "Miembro",
|
||||||
|
email: "Correo electrónico",
|
||||||
save_member: "Guardar miembro",
|
save_member: "Guardar miembro",
|
||||||
delete_member: "Eliminar miembro",
|
delete_member: "Eliminar miembro",
|
||||||
failed_remove_member: "Error al eliminar miembro",
|
failed_remove_member: "Error al eliminar miembro",
|
||||||
|
|||||||
@ -12,6 +12,7 @@ let i18n = {
|
|||||||
network_response_error: "La réponse du réseau n'était pas correcte",
|
network_response_error: "La réponse du réseau n'était pas correcte",
|
||||||
failed_add_member: "Échec de l'ajout du membre",
|
failed_add_member: "Échec de l'ajout du membre",
|
||||||
member: "Membre",
|
member: "Membre",
|
||||||
|
email: "Courriel",
|
||||||
save_member: "Enregistrer le membre",
|
save_member: "Enregistrer le membre",
|
||||||
delete_member: "Supprimer le membre",
|
delete_member: "Supprimer le membre",
|
||||||
failed_remove_member: "Échec de la suppression du membre",
|
failed_remove_member: "Échec de la suppression du membre",
|
||||||
|
|||||||
@ -12,6 +12,7 @@ let i18n = {
|
|||||||
network_response_error: "ネットワークの応答異常",
|
network_response_error: "ネットワークの応答異常",
|
||||||
failed_add_member: "世帯員の追加に失敗",
|
failed_add_member: "世帯員の追加に失敗",
|
||||||
member: "世帯員",
|
member: "世帯員",
|
||||||
|
email: "メール",
|
||||||
save_member: "世帯員の保存",
|
save_member: "世帯員の保存",
|
||||||
delete_member: "世帯員の削除",
|
delete_member: "世帯員の削除",
|
||||||
failed_remove_member: "世帯員の削除に失敗",
|
failed_remove_member: "世帯員の削除に失敗",
|
||||||
|
|||||||
@ -12,6 +12,7 @@ let i18n = {
|
|||||||
'network_response_error': 'Erro de resposta de rede',
|
'network_response_error': 'Erro de resposta de rede',
|
||||||
'failed_add_member': 'Falha ao adicionar membro',
|
'failed_add_member': 'Falha ao adicionar membro',
|
||||||
'member': 'Membro',
|
'member': 'Membro',
|
||||||
|
'email': 'Email',
|
||||||
'save_member': 'Guardar membro',
|
'save_member': 'Guardar membro',
|
||||||
'delete_member': 'Remover membro',
|
'delete_member': 'Remover membro',
|
||||||
'failed_remove_member': 'Erro ao remover membro',
|
'failed_remove_member': 'Erro ao remover membro',
|
||||||
|
|||||||
@ -12,6 +12,7 @@ let i18n = {
|
|||||||
network_response_error: "Ağ yanıtı kabul edilmedi",
|
network_response_error: "Ağ yanıtı kabul edilmedi",
|
||||||
failed_add_member: "Üye eklenemedi",
|
failed_add_member: "Üye eklenemedi",
|
||||||
member: "Üye",
|
member: "Üye",
|
||||||
|
email: "E-posta",
|
||||||
save_member: "Üyeyi Kaydet",
|
save_member: "Üyeyi Kaydet",
|
||||||
delete_member: "Üyeyi Sil",
|
delete_member: "Üyeyi Sil",
|
||||||
failed_remove_member: "Üye silinmedi",
|
failed_remove_member: "Üye silinmedi",
|
||||||
|
|||||||
@ -12,6 +12,7 @@ let i18n = {
|
|||||||
'network_response_error': "网络响应不正常",
|
'network_response_error': "网络响应不正常",
|
||||||
'failed_add_member': '添加成员失败',
|
'failed_add_member': '添加成员失败',
|
||||||
'member': '成员',
|
'member': '成员',
|
||||||
|
'email': '电子邮箱',
|
||||||
'save_member': '保存成员',
|
'save_member': '保存成员',
|
||||||
'delete_member': '删除成员',
|
'delete_member': '删除成员',
|
||||||
'failed_remove_member': '移除成员失败',
|
'failed_remove_member': '移除成员失败',
|
||||||
|
|||||||
@ -12,6 +12,7 @@ let i18n = {
|
|||||||
'network_response_error': "網路無回應",
|
'network_response_error': "網路無回應",
|
||||||
'failed_add_member': '新增成員失敗',
|
'failed_add_member': '新增成員失敗',
|
||||||
'member': '成員',
|
'member': '成員',
|
||||||
|
'email': '電子信箱',
|
||||||
'save_member': '保存成員',
|
'save_member': '保存成員',
|
||||||
'delete_member': '刪除成員',
|
'delete_member': '刪除成員',
|
||||||
'failed_remove_member': '移除成員失敗',
|
'failed_remove_member': '移除成員失敗',
|
||||||
|
|||||||
@ -43,6 +43,12 @@ function addMemberButton(memberId) {
|
|||||||
input.name = "member";
|
input.name = "member";
|
||||||
input.value = translate('member');
|
input.value = translate('member');
|
||||||
|
|
||||||
|
let emailInput = document.createElement("input");
|
||||||
|
emailInput.type = "text";
|
||||||
|
emailInput.placeholder = translate('email');
|
||||||
|
emailInput.name = "email";
|
||||||
|
emailInput.value = "";
|
||||||
|
|
||||||
let editLink = document.createElement("button");
|
let editLink = document.createElement("button");
|
||||||
editLink.className = "image-button medium"
|
editLink.className = "image-button medium"
|
||||||
editLink.name = "save";
|
editLink.name = "save";
|
||||||
@ -70,6 +76,7 @@ function addMemberButton(memberId) {
|
|||||||
deleteLink.appendChild(deleteImage);
|
deleteLink.appendChild(deleteImage);
|
||||||
|
|
||||||
div.appendChild(input);
|
div.appendChild(input);
|
||||||
|
div.appendChild(emailInput);
|
||||||
div.appendChild(editLink);
|
div.appendChild(editLink);
|
||||||
div.appendChild(deleteLink);
|
div.appendChild(deleteLink);
|
||||||
|
|
||||||
|
|||||||
102
settings.php
102
settings.php
@ -298,18 +298,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<?php
|
|
||||||
$sql = "SELECT * FROM payment_methods";
|
|
||||||
$result = $db->query($sql);
|
|
||||||
|
|
||||||
if ($result) {
|
|
||||||
$payments = array();
|
|
||||||
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
|
|
||||||
$payments[] = $row;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
$sql = "SELECT * FROM currencies";
|
$sql = "SELECT * FROM currencies";
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
@ -470,7 +458,57 @@
|
|||||||
<input type="submit" value="<?= translate('save', $i18n) ?>" id="addFixerKey" onClick="addFixerKeyButton()"/>
|
<input type="submit" value="<?= translate('save', $i18n) ?>" id="addFixerKey" onClick="addFixerKeyButton()"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
$sql = "SELECT * FROM payment_methods";
|
||||||
|
$result = $db->query($sql);
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
$payments = array();
|
||||||
|
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
|
||||||
|
$payments[] = $row;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<section class="account-section">
|
||||||
|
<header>
|
||||||
|
<h2><?= translate('payment_methods', $i18n) ?></h2>
|
||||||
|
</header>
|
||||||
|
<div class="payments-list">
|
||||||
|
<?php
|
||||||
|
$paymentsInUseQuery = $db->query('SELECT id FROM payment_methods WHERE id IN (SELECT DISTINCT payment_method_id FROM subscriptions)');
|
||||||
|
$paymentsInUse = [];
|
||||||
|
while ($row = $paymentsInUseQuery->fetchArray(SQLITE3_ASSOC)) {
|
||||||
|
$paymentsInUse[] = $row['id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($payments as $payment) {
|
||||||
|
$inUse = in_array($payment['id'], $paymentsInUse);
|
||||||
|
?>
|
||||||
|
<div class="payments-payment"
|
||||||
|
data-enabled="<?= $payment['enabled']; ?>"
|
||||||
|
data-in-use="<?= $inUse ? 'yes' : 'no' ?>"
|
||||||
|
data-paymentid="<?= $payment['id'] ?>"
|
||||||
|
title="<?= $inUse ? translate('cant_delete_payment_method_in_use', $i18n) : ($payment['enabled'] ? translate('disable', $i18n) : translate('enable', $i18n)) ?>"
|
||||||
|
onClick="togglePayment(<?= $payment['id'] ?>)">
|
||||||
|
<img src="images/uploads/icons/<?= $payment['icon'] ?>" alt="Logo" />
|
||||||
|
<span class="payment-name">
|
||||||
|
<?= $payment['name'] ?>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
<div class="settings-notes">
|
||||||
|
<p>
|
||||||
|
<i class="fa-solid fa-circle-info"></i>
|
||||||
|
<?= translate('payment_methods_info', $i18n) ?>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section class="account-section">
|
<section class="account-section">
|
||||||
<header>
|
<header>
|
||||||
@ -513,44 +551,6 @@
|
|||||||
<?= translate('experimental_info', $i18n) ?>
|
<?= translate('experimental_info', $i18n) ?>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="account-section">
|
|
||||||
<header>
|
|
||||||
<h2><?= translate('payment_methods', $i18n) ?></h2>
|
|
||||||
</header>
|
|
||||||
<div class="payments-list">
|
|
||||||
<?php
|
|
||||||
$paymentsInUseQuery = $db->query('SELECT id FROM payment_methods WHERE id IN (SELECT DISTINCT payment_method_id FROM subscriptions)');
|
|
||||||
$paymentsInUse = [];
|
|
||||||
while ($row = $paymentsInUseQuery->fetchArray(SQLITE3_ASSOC)) {
|
|
||||||
$paymentsInUse[] = $row['id'];
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($payments as $payment) {
|
|
||||||
$inUse = in_array($payment['id'], $paymentsInUse);
|
|
||||||
?>
|
|
||||||
<div class="payments-payment"
|
|
||||||
data-enabled="<?= $payment['enabled']; ?>"
|
|
||||||
data-in-use="<?= $inUse ? 'yes' : 'no' ?>"
|
|
||||||
data-paymentid="<?= $payment['id'] ?>"
|
|
||||||
title="<?= $inUse ? translate('cant_delete_payment_method_in_use', $i18n) : ($payment['enabled'] ? translate('disable', $i18n) : translate('enable', $i18n)) ?>"
|
|
||||||
onClick="togglePayment(<?= $payment['id'] ?>)">
|
|
||||||
<img src="images/uploads/icons/<?= $payment['icon'] ?>" alt="Logo" />
|
|
||||||
<span class="payment-name">
|
|
||||||
<?= $payment['name'] ?>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<?php
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</div>
|
|
||||||
<div class="settings-notes">
|
|
||||||
<p>
|
|
||||||
<i class="fa-solid fa-circle-info"></i>
|
|
||||||
<?= translate('payment_methods_info', $i18n) ?>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="account-section">
|
<section class="account-section">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user