Rebuild frontend

This commit is contained in:
James Cole
2021-02-05 06:45:27 +01:00
parent d69843d4bc
commit 8e42f25a1e
38 changed files with 187 additions and 66 deletions

View File

@@ -34,7 +34,7 @@
<script> <script>
export default { export default {
name: "BudgetRow", name: "BudgetRow",
mounted() { created() {
this.locale = localStorage.locale ?? 'en-US'; this.locale = localStorage.locale ?? 'en-US';
}, },
data() { data() {

View File

@@ -26,7 +26,7 @@
extends: Line, extends: Line,
props: ['options', 'chartData'], props: ['options', 'chartData'],
mounted() { created() {
// this.chartData is created in the mixin. // this.chartData is created in the mixin.
// If you want to pass options please create a local options object // If you want to pass options please create a local options object
this.renderChart(this.chartData, this.options) this.renderChart(this.chartData, this.options)

View File

@@ -35,16 +35,21 @@
<tbody> <tbody>
<tr v-for="bill in this.bills"> <tr v-for="bill in this.bills">
<td><a :href="'./bills/show/' + bill.id" :title="bill.attributes.name">{{ bill.attributes.name }}</a> <td><a :href="'./bills/show/' + bill.id" :title="bill.attributes.name">{{ bill.attributes.name }}</a>
~{{ (~ <span class="text-danger">{{
Intl.NumberFormat(locale, {style: 'currency', currency: bill.attributes.currency_code}).format((parseFloat(bill.attributes.amount_min) + Intl.NumberFormat(locale, {style: 'currency', currency: bill.attributes.currency_code}).format((parseFloat(bill.attributes.amount_min) +
parseFloat(bill.attributes.amount_max)) / 2) parseFloat(bill.attributes.amount_max)) / -2)
}} }}</span>)
<br /> <small v-if="bill.attributes.object_group_title" class="text-muted">
<br/>
{{ bill.attributes.object_group_title }}
</small>
</td> </td>
<td> <td>
<span v-for="payDate in bill.attributes.pay_dates"> <span v-for="paidDate in bill.attributes.paid_dates">
{{ new Intl.DateTimeFormat(locale, {year: 'numeric', month: 'long', day: 'numeric'}).format(new Date(payDate)) }} <span v-html="renderPaidDate(paidDate)"/><br/>
<br /> </span>
<span v-for="payDate in bill.attributes.pay_dates" v-if="0===bill.attributes.paid_dates.length">
{{ new Intl.DateTimeFormat(locale, {year: 'numeric', month: 'long', day: 'numeric'}).format(new Date(payDate)) }}<br/>
</span> </span>
</td> </td>
</tr> </tr>
@@ -60,12 +65,8 @@
export default { export default {
name: "MainBillsList", name: "MainBillsList",
computed: {
locale() {
return this.$store.getters.locale;
}
},
created() { created() {
this.locale = localStorage.locale ?? 'en-US';
axios.get('./api/v1/bills?start=' + window.sessionStart + '&end=' + window.sessionEnd) axios.get('./api/v1/bills?start=' + window.sessionStart + '&end=' + window.sessionEnd)
.then(response => { .then(response => {
this.loadBills(response.data.data); this.loadBills(response.data.data);
@@ -74,7 +75,13 @@ export default {
}, },
components: {}, components: {},
methods: { methods: {
loadBills(data) { renderPaidDate: function (obj) {
console.log(obj);
let dateStr = new Intl.DateTimeFormat(this.locale, {year: 'numeric', month: 'long', day: 'numeric'}).format(new Date(obj.date));
let str = this.$t('firefly.bill_paid_on', {date: dateStr});
return '<a href="./transactions/show/' + obj.transaction_group_id + '" title="' + str + '">' + str + '</a>';
},
loadBills: function (data) {
for (let key in data) { for (let key in data) {
if (data.hasOwnProperty(key) && /^0$|^[1-9]\d*$/.test(key) && key <= 4294967294) { if (data.hasOwnProperty(key) && /^0$|^[1-9]\d*$/.test(key) && key <= 4294967294) {
@@ -89,7 +96,8 @@ export default {
}, },
data() { data() {
return { return {
bills: [] bills: [],
locale: 'en-US'
} }
}, },
} }

View File

@@ -34,7 +34,8 @@
</thead> </thead>
<tbody> <tbody>
<tr v-for="piggy in this.piggy_banks"> <tr v-for="piggy in this.piggy_banks">
<td>{{ piggy.attributes.name }} <td>
<a :href="'./piggy-banks/show/' + piggy.id" :title="piggy.attributes.name">{{ piggy.attributes.name }}</a>
<small v-if="piggy.attributes.object_group_title" class="text-muted"> <small v-if="piggy.attributes.object_group_title" class="text-muted">
<br/> <br/>
{{ piggy.attributes.object_group_title }} {{ piggy.attributes.object_group_title }}

View File

@@ -148,7 +148,7 @@
<!-- start of body --> <!-- start of body -->
<!-- meta --> <!-- meta -->
<div class="row"> <div class="row">
<div class="col"> <div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
<TransactionBudget <TransactionBudget
v-model="transaction.budget_id" v-model="transaction.budget_id"
:index="index" :index="index"
@@ -160,7 +160,7 @@
:errors="transaction.errors.category" :errors="transaction.errors.category"
/> />
</div> </div>
<div class="col"> <div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
<TransactionBill <TransactionBill
v-model="transaction.bill_id" v-model="transaction.bill_id"
:index="index" :index="index"
@@ -196,7 +196,7 @@
<div class="card-body"> <div class="card-body">
<!-- start of body --> <!-- start of body -->
<div class="row"> <div class="row">
<div class="col"> <div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
<TransactionInternalReference <TransactionInternalReference
:index="index" :index="index"
@@ -215,7 +215,7 @@
:errors="transaction.errors.notes" :errors="transaction.errors.notes"
/> />
</div> </div>
<div class="col"> <div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
<TransactionAttachments <TransactionAttachments
:index="index" :index="index"
@@ -243,7 +243,7 @@
</div> </div>
<div class="row"> <div class="row">
<!-- group title --> <!-- group title -->
<div class="col"> <div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
<div class="card" v-if="transactions.length > 1"> <div class="card" v-if="transactions.length > 1">
<div class="card-body"> <div class="card-body">
<div class="row"> <div class="row">
@@ -254,10 +254,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col"> <div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-xs-12">
<div class="row">
<!-- buttons! -->
<div class="col">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<div class="row"> <div class="row">
@@ -265,14 +262,36 @@
<div class="text-xs d-none d-lg-block d-xl-block"> <div class="text-xs d-none d-lg-block d-xl-block">
&nbsp; &nbsp;
</div> </div>
<button @click="addTransaction" class="btn btn-primary float-left"><i class="far fa-clone"></i> {{ $t('firefly.add_another_split') }} <button @click="addTransaction" class="btn btn-outline-primary btn-block"><i class="far fa-clone"></i> {{ $t('firefly.add_another_split') }}
</button> </button>
<button class="btn btn-success float-right" @click="submitTransaction" :disabled="isSubmitting && !submitted"> </div>
<div class="col">
<div class="text-xs d-none d-lg-block d-xl-block">
&nbsp;
</div>
<button class="btn btn-success btn-block" @click="submitTransaction" :disabled="isSubmitting && !submitted">
<span v-if="!isSubmitting"><i class="far fa-save"></i> {{ $t('firefly.store_transaction') }}</span> <span v-if="!isSubmitting"><i class="far fa-save"></i> {{ $t('firefly.store_transaction') }}</span>
<span v-if="isSubmitting && !submitted"><i class="fas fa-spinner fa-spin"></i></span> <span v-if="isSubmitting && !submitted"><i class="fas fa-spinner fa-spin"></i></span>
</button> </button>
</div> </div>
</div> </div>
<div class="row">
<div class="col">
&nbsp;
</div>
<div class="col">
<div class="form-check">
<input class="form-check-input" type="checkbox" v-model="createAnother" id="createAnother">
<label class="form-check-label" for="createAnother">
<span class="small">{{ $t('firefly.create_another') }}</span>
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" v-model="resetFormAfter" id="resetFormAfter" :disabled="!createAnother">
<label class="form-check-label" for="resetFormAfter">
<span class="small">{{ $t('firefly.reset_after') }}</span>
</label>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -359,8 +378,8 @@ export default {
groupTitle: '', groupTitle: '',
// some button flag things // some button flag things
createAnother: true, createAnother: false,
resetFormAfter: true resetFormAfter: false
} }
}, },
computed: { computed: {

View File

@@ -69,6 +69,9 @@
"flash_error": "\u0413\u0440\u0435\u0448\u043a\u0430!", "flash_error": "\u0413\u0440\u0435\u0448\u043a\u0430!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "\u0423\u0441\u043f\u0435\u0445!", "flash_success": "\u0423\u0441\u043f\u0435\u0445!",
"create_another": "\u0421\u043b\u0435\u0434 \u0441\u044a\u0445\u0440\u0430\u043d\u044f\u0432\u0430\u043d\u0435\u0442\u043e \u0441\u0435 \u0432\u044a\u0440\u043d\u0435\u0442\u0435 \u0442\u0443\u043a, \u0437\u0430 \u0434\u0430 \u0441\u044a\u0437\u0434\u0430\u0434\u0435\u0442\u0435 \u043d\u043e\u0432\u0430.",
"reset_after": "\u0418\u0437\u0447\u0438\u0441\u0442\u0432\u0430\u043d\u0435 \u043d\u0430 \u0444\u043e\u0440\u043c\u0443\u043b\u044f\u0440\u0430 \u0441\u043b\u0435\u0434 \u0438\u0437\u043f\u0440\u0430\u0449\u0430\u043d\u0435",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f #{ID}(\"{title}\")<\/a> \u0431\u0435\u0448\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f #{ID}(\"{title}\")<\/a> \u0431\u0435\u0448\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430.",
"other_budgets": "\u0412\u0440\u0435\u043c\u0435\u0432\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0438 \u0431\u044e\u0434\u0436\u0435\u0442\u0438", "other_budgets": "\u0412\u0440\u0435\u043c\u0435\u0432\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0438 \u0431\u044e\u0434\u0436\u0435\u0442\u0438",
"journal_links": "\u0412\u0440\u044a\u0437\u043a\u0438 \u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f", "journal_links": "\u0412\u0440\u044a\u0437\u043a\u0438 \u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f",

View File

@@ -69,6 +69,9 @@
"flash_error": "Chyba!", "flash_error": "Chyba!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "\u00dasp\u011b\u0161n\u011b dokon\u010deno!", "flash_success": "\u00dasp\u011b\u0161n\u011b dokon\u010deno!",
"create_another": "After storing, return here to create another one.",
"reset_after": "Reset form after submission",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.",
"other_budgets": "Custom timed budgets", "other_budgets": "Custom timed budgets",
"journal_links": "Transaction links", "journal_links": "Transaction links",

View File

@@ -69,6 +69,9 @@
"flash_error": "Fehler!", "flash_error": "Fehler!",
"store_transaction": "Buchung speichern", "store_transaction": "Buchung speichern",
"flash_success": "Geschafft!", "flash_success": "Geschafft!",
"create_another": "Nach dem Speichern hierher zur\u00fcckkehren, um ein weiteres zu erstellen.",
"reset_after": "Formular nach der \u00dcbermittlung zur\u00fccksetzen",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Buchung #{ID} (\"{title}\")<\/a> wurde gespeichert.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Buchung #{ID} (\"{title}\")<\/a> wurde gespeichert.",
"other_budgets": "Zeitlich befristete Budgets", "other_budgets": "Zeitlich befristete Budgets",
"journal_links": "Buchungsverkn\u00fcpfungen", "journal_links": "Buchungsverkn\u00fcpfungen",

View File

@@ -69,6 +69,9 @@
"flash_error": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1!", "flash_error": "\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1!", "flash_success": "\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03af\u03b1!",
"create_another": "\u039c\u03b5\u03c4\u03ac \u03c4\u03b7\u03bd \u03b1\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7, \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03c4\u03b5 \u03b5\u03b4\u03ce \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03c3\u03b5\u03c4\u03b5 \u03b1\u03ba\u03cc\u03bc\u03b7 \u03ad\u03bd\u03b1.",
"reset_after": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c6\u03cc\u03c1\u03bc\u03b1\u03c2 \u03bc\u03b5\u03c4\u03ac \u03c4\u03b7\u03bd \u03c5\u03c0\u03bf\u03b2\u03bf\u03bb\u03ae",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">\u0397 \u03c3\u03c5\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae #{ID} (\"{title}\")<\/a> \u03ad\u03c7\u03b5\u03b9 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03c4\u03b5\u03af.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">\u0397 \u03c3\u03c5\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae #{ID} (\"{title}\")<\/a> \u03ad\u03c7\u03b5\u03b9 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03c4\u03b5\u03af.",
"other_budgets": "\u03a0\u03c1\u03bf\u03cb\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03bf\u03af \u03bc\u03b5 \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03ae \u03c0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae", "other_budgets": "\u03a0\u03c1\u03bf\u03cb\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03bf\u03af \u03bc\u03b5 \u03c7\u03c1\u03bf\u03bd\u03b9\u03ba\u03ae \u03c0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae",
"journal_links": "\u03a3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03b9\u03c2 \u03c3\u03c5\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03ce\u03bd", "journal_links": "\u03a3\u03c5\u03bd\u03b4\u03ad\u03c3\u03b5\u03b9\u03c2 \u03c3\u03c5\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03ce\u03bd",

View File

@@ -69,6 +69,9 @@
"flash_error": "Error!", "flash_error": "Error!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "Success!", "flash_success": "Success!",
"create_another": "After storing, return here to create another one.",
"reset_after": "Reset form after submission",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.",
"other_budgets": "Custom timed budgets", "other_budgets": "Custom timed budgets",
"journal_links": "Transaction links", "journal_links": "Transaction links",

View File

@@ -69,6 +69,9 @@
"flash_error": "Error!", "flash_error": "Error!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "Success!", "flash_success": "Success!",
"create_another": "After storing, return here to create another one.",
"reset_after": "Reset form after submission",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.",
"other_budgets": "Custom timed budgets", "other_budgets": "Custom timed budgets",
"journal_links": "Transaction links", "journal_links": "Transaction links",

View File

@@ -69,6 +69,9 @@
"flash_error": "\u00a1Error!", "flash_error": "\u00a1Error!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "\u00a1Operaci\u00f3n correcta!", "flash_success": "\u00a1Operaci\u00f3n correcta!",
"create_another": "Despu\u00e9s de guardar, vuelve aqu\u00ed para crear otro.",
"reset_after": "Restablecer formulario despu\u00e9s del env\u00edo",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">La transacci\u00f3n #{ID} (\"{title}\")<\/a> ha sido almacenada.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">La transacci\u00f3n #{ID} (\"{title}\")<\/a> ha sido almacenada.",
"other_budgets": "Presupuestos de tiempo personalizado", "other_budgets": "Presupuestos de tiempo personalizado",
"journal_links": "Enlaces de transacciones", "journal_links": "Enlaces de transacciones",

View File

@@ -69,6 +69,9 @@
"flash_error": "Virhe!", "flash_error": "Virhe!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "Valmista tuli!", "flash_success": "Valmista tuli!",
"create_another": "Tallennuksen j\u00e4lkeen, palaa takaisin luomaan uusi tapahtuma.",
"reset_after": "Tyhjenn\u00e4 lomake l\u00e4hetyksen j\u00e4lkeen",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.",
"other_budgets": "Custom timed budgets", "other_budgets": "Custom timed budgets",
"journal_links": "Tapahtuman linkit", "journal_links": "Tapahtuman linkit",

View File

@@ -69,6 +69,9 @@
"flash_error": "Erreur !", "flash_error": "Erreur !",
"store_transaction": "Enregistrer l'op\u00e9ration", "store_transaction": "Enregistrer l'op\u00e9ration",
"flash_success": "Super !", "flash_success": "Super !",
"create_another": "Apr\u00e8s enregistrement, revenir ici pour en cr\u00e9er un nouveau.",
"reset_after": "R\u00e9initialiser le formulaire apr\u00e8s soumission",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">L'op\u00e9ration n\u00b0{ID} (\"{title}\")<\/a> a \u00e9t\u00e9 enregistr\u00e9e.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">L'op\u00e9ration n\u00b0{ID} (\"{title}\")<\/a> a \u00e9t\u00e9 enregistr\u00e9e.",
"other_budgets": "Budgets \u00e0 p\u00e9riode personnalis\u00e9e", "other_budgets": "Budgets \u00e0 p\u00e9riode personnalis\u00e9e",
"journal_links": "Liens d'op\u00e9ration", "journal_links": "Liens d'op\u00e9ration",

View File

@@ -69,6 +69,9 @@
"flash_error": "Hiba!", "flash_error": "Hiba!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "Siker!", "flash_success": "Siker!",
"create_another": "A t\u00e1rol\u00e1s ut\u00e1n t\u00e9rjen vissza ide \u00faj l\u00e9trehoz\u00e1s\u00e1hoz.",
"reset_after": "\u0170rlap t\u00f6rl\u00e9se a bek\u00fcld\u00e9s ut\u00e1n",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> mentve.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> mentve.",
"other_budgets": "Custom timed budgets", "other_budgets": "Custom timed budgets",
"journal_links": "Tranzakci\u00f3 \u00f6sszekapcsol\u00e1sok", "journal_links": "Tranzakci\u00f3 \u00f6sszekapcsol\u00e1sok",

View File

@@ -69,6 +69,9 @@
"flash_error": "Errore!", "flash_error": "Errore!",
"store_transaction": "Salva transazione", "store_transaction": "Salva transazione",
"flash_success": "Successo!", "flash_success": "Successo!",
"create_another": "Dopo il salvataggio, torna qui per crearne un'altra.",
"reset_after": "Resetta il modulo dopo l'invio",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "La <a href=\"transactions\/show\/{ID}\">transazione #{ID} (\"{title}\")<\/a> \u00e8 stata salvata.", "transaction_stored_link": "La <a href=\"transactions\/show\/{ID}\">transazione #{ID} (\"{title}\")<\/a> \u00e8 stata salvata.",
"other_budgets": "Budget a periodi personalizzati", "other_budgets": "Budget a periodi personalizzati",
"journal_links": "Collegamenti della transazione", "journal_links": "Collegamenti della transazione",

View File

@@ -69,6 +69,9 @@
"flash_error": "Feil!", "flash_error": "Feil!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "Suksess!", "flash_success": "Suksess!",
"create_another": "After storing, return here to create another one.",
"reset_after": "Reset form after submission",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.",
"other_budgets": "Custom timed budgets", "other_budgets": "Custom timed budgets",
"journal_links": "Transaksjonskoblinger", "journal_links": "Transaksjonskoblinger",

View File

@@ -69,6 +69,9 @@
"flash_error": "Fout!", "flash_error": "Fout!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "Gelukt!", "flash_success": "Gelukt!",
"create_another": "Terug naar deze pagina voor een nieuwe transactie.",
"reset_after": "Reset formulier na opslaan",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transactie #{ID} (\"{title}\")<\/a> is opgeslagen.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transactie #{ID} (\"{title}\")<\/a> is opgeslagen.",
"other_budgets": "Aangepaste budgetten", "other_budgets": "Aangepaste budgetten",
"journal_links": "Transactiekoppelingen", "journal_links": "Transactiekoppelingen",

View File

@@ -69,6 +69,9 @@
"flash_error": "B\u0142\u0105d!", "flash_error": "B\u0142\u0105d!",
"store_transaction": "Zapisz transakcj\u0119", "store_transaction": "Zapisz transakcj\u0119",
"flash_success": "Sukces!", "flash_success": "Sukces!",
"create_another": "Po zapisaniu wr\u00f3\u0107 tutaj, aby utworzy\u0107 kolejny.",
"reset_after": "Wyczy\u015b\u0107 formularz po zapisaniu",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transakcja #{ID} (\"{title}\")<\/a> zosta\u0142a zapisana.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transakcja #{ID} (\"{title}\")<\/a> zosta\u0142a zapisana.",
"other_budgets": "Bud\u017cety niestandardowe", "other_budgets": "Bud\u017cety niestandardowe",
"journal_links": "Powi\u0105zane transakcje", "journal_links": "Powi\u0105zane transakcje",

View File

@@ -69,6 +69,9 @@
"flash_error": "Erro!", "flash_error": "Erro!",
"store_transaction": "Salvar transa\u00e7\u00e3o", "store_transaction": "Salvar transa\u00e7\u00e3o",
"flash_success": "Sucesso!", "flash_success": "Sucesso!",
"create_another": "Depois de armazenar, retorne aqui para criar outro.",
"reset_after": "Resetar o formul\u00e1rio ap\u00f3s o envio",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transa\u00e7\u00e3o #{ID} (\"{title}\")<\/a> foi salva.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transa\u00e7\u00e3o #{ID} (\"{title}\")<\/a> foi salva.",
"other_budgets": "Custom timed budgets", "other_budgets": "Custom timed budgets",
"journal_links": "Transa\u00e7\u00f5es ligadas", "journal_links": "Transa\u00e7\u00f5es ligadas",

View File

@@ -69,6 +69,9 @@
"flash_error": "Erro!", "flash_error": "Erro!",
"store_transaction": "Guardar transa\u00e7\u00e3o", "store_transaction": "Guardar transa\u00e7\u00e3o",
"flash_success": "Sucesso!", "flash_success": "Sucesso!",
"create_another": "Depois de guardar, voltar aqui para criar outra.",
"reset_after": "Repor o formul\u00e1rio ap\u00f3s o envio",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transa\u00e7\u00e3o #{ID} (\"{title}\")<\/a> foi guardada.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transa\u00e7\u00e3o #{ID} (\"{title}\")<\/a> foi guardada.",
"other_budgets": "Or\u00e7amentos de tempo personalizado", "other_budgets": "Or\u00e7amentos de tempo personalizado",
"journal_links": "Liga\u00e7\u00f5es de transac\u00e7\u00e3o", "journal_links": "Liga\u00e7\u00f5es de transac\u00e7\u00e3o",

View File

@@ -69,6 +69,9 @@
"flash_error": "Eroare!", "flash_error": "Eroare!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "Succes!", "flash_success": "Succes!",
"create_another": "Dup\u0103 stocare, reveni\u021bi aici pentru a crea alta.",
"reset_after": "Reseta\u021bi formularul dup\u0103 trimitere",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Tranzac\u021bia #{ID} (\"{title}\")<\/a> a fost stocat\u0103.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Tranzac\u021bia #{ID} (\"{title}\")<\/a> a fost stocat\u0103.",
"other_budgets": "Custom timed budgets", "other_budgets": "Custom timed budgets",
"journal_links": "Link-uri de tranzac\u021bii", "journal_links": "Link-uri de tranzac\u021bii",

View File

@@ -69,6 +69,9 @@
"flash_error": "\u041e\u0448\u0438\u0431\u043a\u0430!", "flash_error": "\u041e\u0448\u0438\u0431\u043a\u0430!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "\u0423\u0441\u043f\u0435\u0448\u043d\u043e!", "flash_success": "\u0423\u0441\u043f\u0435\u0448\u043d\u043e!",
"create_another": "\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u0441\u044e\u0434\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c.",
"reset_after": "\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f #{ID} (\"{title}\")<\/a> \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f #{ID} (\"{title}\")<\/a> \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430.",
"other_budgets": "\u0411\u044e\u0434\u0436\u0435\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0440\u0435\u0437\u043e\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0438", "other_budgets": "\u0411\u044e\u0434\u0436\u0435\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0440\u0435\u0437\u043e\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0438",
"journal_links": "\u0421\u0432\u044f\u0437\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438", "journal_links": "\u0421\u0432\u044f\u0437\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438",

View File

@@ -69,6 +69,9 @@
"flash_error": "Chyba!", "flash_error": "Chyba!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "Hotovo!", "flash_success": "Hotovo!",
"create_another": "Po ulo\u017een\u00ed sa vr\u00e1ti\u0165 sp\u00e4\u0165 sem a vytvori\u0165 \u010fal\u0161\u00ed.",
"reset_after": "Po odoslan\u00ed vynulova\u0165 formul\u00e1r",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transakcia #{ID} (\"{title}\")<\/a> bola ulo\u017een\u00e1.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transakcia #{ID} (\"{title}\")<\/a> bola ulo\u017een\u00e1.",
"other_budgets": "\u0160pecifick\u00e9 \u010dasovan\u00e9 rozpo\u010dty", "other_budgets": "\u0160pecifick\u00e9 \u010dasovan\u00e9 rozpo\u010dty",
"journal_links": "Prepojenia transakcie", "journal_links": "Prepojenia transakcie",

View File

@@ -69,6 +69,9 @@
"flash_error": "Fel!", "flash_error": "Fel!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "Slutf\u00f6rd!", "flash_success": "Slutf\u00f6rd!",
"create_another": "Efter sparat, \u00e5terkom hit f\u00f6r att skapa ytterligare en.",
"reset_after": "\u00c5terst\u00e4ll formul\u00e4r efter inskickat",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaktion #{ID} (\"{title}\")<\/a> sparades.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaktion #{ID} (\"{title}\")<\/a> sparades.",
"other_budgets": "Anpassade tidsinst\u00e4llda budgetar", "other_budgets": "Anpassade tidsinst\u00e4llda budgetar",
"journal_links": "Transaktionsl\u00e4nkar", "journal_links": "Transaktionsl\u00e4nkar",

View File

@@ -69,6 +69,9 @@
"flash_error": "L\u1ed7i!", "flash_error": "L\u1ed7i!",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "Th\u00e0nh c\u00f4ng!", "flash_success": "Th\u00e0nh c\u00f4ng!",
"create_another": "Sau khi l\u01b0u tr\u1eef, quay tr\u1edf l\u1ea1i \u0111\u00e2y \u0111\u1ec3 t\u1ea1o m\u1ed9t c\u00e1i kh\u00e1c.",
"reset_after": "\u0110\u1eb7t l\u1ea1i m\u1eabu sau khi g\u1eedi",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Giao d\u1ecbch #{ID} (\"{title}\")<\/a> \u0111\u00e3 \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Giao d\u1ecbch #{ID} (\"{title}\")<\/a> \u0111\u00e3 \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef.",
"other_budgets": "Custom timed budgets", "other_budgets": "Custom timed budgets",
"journal_links": "Li\u00ean k\u1ebft giao d\u1ecbch", "journal_links": "Li\u00ean k\u1ebft giao d\u1ecbch",

View File

@@ -69,6 +69,9 @@
"flash_error": "\u9519\u8bef\uff01", "flash_error": "\u9519\u8bef\uff01",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "\u6210\u529f\uff01", "flash_success": "\u6210\u529f\uff01",
"create_another": "\u4fdd\u5b58\u540e\uff0c\u8fd4\u56de\u6b64\u9875\u9762\u521b\u5efa\u53e6\u4e00\u7b14\u8bb0\u5f55\u3002",
"reset_after": "\u63d0\u4ea4\u540e\u91cd\u7f6e\u8868\u5355",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.",
"other_budgets": "Custom timed budgets", "other_budgets": "Custom timed budgets",
"journal_links": "\u4ea4\u6613\u8fde\u7ed3", "journal_links": "\u4ea4\u6613\u8fde\u7ed3",

View File

@@ -69,6 +69,9 @@
"flash_error": "\u932f\u8aa4\uff01", "flash_error": "\u932f\u8aa4\uff01",
"store_transaction": "Store transaction", "store_transaction": "Store transaction",
"flash_success": "\u6210\u529f\uff01", "flash_success": "\u6210\u529f\uff01",
"create_another": "After storing, return here to create another one.",
"reset_after": "Reset form after submission",
"bill_paid_on": "Paid on {date}",
"transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.", "transaction_stored_link": "<a href=\"transactions\/show\/{ID}\">Transaction #{ID} (\"{title}\")<\/a> has been stored.",
"other_budgets": "Custom timed budgets", "other_budgets": "Custom timed budgets",
"journal_links": "\u4ea4\u6613\u9023\u7d50", "journal_links": "\u4ea4\u6613\u9023\u7d50",

View File

@@ -36,9 +36,9 @@
source-map "^0.5.0" source-map "^0.5.0"
"@babel/generator@^7.12.13": "@babel/generator@^7.12.13":
version "7.12.13" version "7.12.15"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.13.tgz#5f6ebe6c85db99886db2d7b044409196f872a503" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.15.tgz#4617b5d0b25cc572474cc1aafee1edeaf9b5368f"
integrity sha512-9qQ8Fgo8HaSvHEt6A5+BATP7XktD/AdAnObUeTRz5/e2y3kbrxZgz32qUJJsdmwUvBJzF4AeV21nGTNwv05Mpw== integrity sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ==
dependencies: dependencies:
"@babel/types" "^7.12.13" "@babel/types" "^7.12.13"
jsesc "^2.5.1" jsesc "^2.5.1"
@@ -238,9 +238,9 @@
js-tokens "^4.0.0" js-tokens "^4.0.0"
"@babel/parser@^7.12.13": "@babel/parser@^7.12.13":
version "7.12.14" version "7.12.15"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.14.tgz#4adb7c5eef1d437ef965ad1569cd826db8c11dc9" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.15.tgz#2b20de7f0b4b332d9b119dd9c33409c538b8aacf"
integrity sha512-xcfxDq3OrBnDsA/Z8eK5/2iPcLD8qbOaSSfOw4RA6jp4i7e6dEQ7+wTwxItEwzcXPQcsry5nZk96gmVPKletjQ== integrity sha512-AQBOU2Z9kWwSZMd6lNjCX0GUgFonL1wAM1db8L8PMk9UDaGsRCArBkU4Sc+UCM3AE4hjbXx+h58Lb3QT4oRmrA==
"@babel/plugin-proposal-async-generator-functions@^7.12.13": "@babel/plugin-proposal-async-generator-functions@^7.12.13":
version "7.12.13" version "7.12.13"
@@ -631,9 +631,9 @@
"@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-transform-runtime@^7.2.0": "@babel/plugin-transform-runtime@^7.2.0":
version "7.12.13" version "7.12.15"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.13.tgz#93a47630c80dab152a2b71011d1e1fd37b31b8e1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.15.tgz#4337b2507288007c2b197059301aa0af8d90c085"
integrity sha512-ho1CV2lm8qn2AxD3JdvPgtLVHCYLDaOszlf0gosdHcJAIfgNizag76WI+FoibrvfT+h117fgf8h+wgvo4O2qbA== integrity sha512-OwptMSRnRWJo+tJ9v9wgAf72ydXWfYSXWhnQjZing8nGZSDFqU1MBleKM3+DriKkcbv7RagA8gVeB0A1PNlNow==
dependencies: dependencies:
"@babel/helper-module-imports" "^7.12.13" "@babel/helper-module-imports" "^7.12.13"
"@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13"
@@ -869,9 +869,9 @@
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/node@*": "@types/node@*":
version "14.14.22" version "14.14.25"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.25.tgz#15967a7b577ff81383f9b888aa6705d43fbbae93"
integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== integrity sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==
"@types/q@^1.5.1": "@types/q@^1.5.1":
version "1.5.4" version "1.5.4"
@@ -2626,9 +2626,9 @@ ejs@^2.6.1:
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
electron-to-chromium@^1.3.649: electron-to-chromium@^1.3.649:
version "1.3.652" version "1.3.654"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.652.tgz#9465d884d609acffd131ba71096de7bfabd63670" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.654.tgz#f1b82d59bdeafa65af75794356df54f92b41c4de"
integrity sha512-85J5D0Ksxjq2MIHfgwOURRej72UMlexbaa7t+oKTJan3Pa/RBE8vJ4/JzwaQjLCElPvd0XeLWi7+xYTVrq96aA== integrity sha512-Zy2gc/c8KYFg2GkNr7Ruzh5tPEZpFm7EyXqZTFasm1YRDJtpyBRGaOuM0H3t6SuIP53qX4kNmtO9t0WjhBjE9A==
elliptic@^6.5.3: elliptic@^6.5.3:
version "6.5.4" version "6.5.4"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1019,6 +1019,7 @@ return [
'list_inactive_rule' => 'inactive rule', 'list_inactive_rule' => 'inactive rule',
'bill_edit_rules' => 'Firefly III will attempt to edit the rule related to this bill as well. If you\'ve edited this rule yourself however, Firefly III won\'t change anything.|Firefly III will attempt to edit the :count rules related to this bill as well. If you\'ve edited these rules yourself however, Firefly III won\'t change anything.', 'bill_edit_rules' => 'Firefly III will attempt to edit the rule related to this bill as well. If you\'ve edited this rule yourself however, Firefly III won\'t change anything.|Firefly III will attempt to edit the :count rules related to this bill as well. If you\'ve edited these rules yourself however, Firefly III won\'t change anything.',
'bill_expected_date' => 'Expected :date', 'bill_expected_date' => 'Expected :date',
'bill_paid_on' => 'Paid on {date}',
// accounts: // accounts:
'inactive_account_link' => 'You have :count inactive (archived) account, which you can view on this separate page.|You have :count inactive (archived) accounts, which you can view on this separate page.', 'inactive_account_link' => 'You have :count inactive (archived) account, which you can view on this separate page.|You have :count inactive (archived) accounts, which you can view on this separate page.',

View File

@@ -41,6 +41,8 @@
<!-- Content Header (Page header) --> <!-- Content Header (Page header) -->
<div class="content-header"> <div class="content-header">
<div class="container-fluid"> <div class="container-fluid">
<!-- flashes -->
{% include('v2.partials.layout.flashes') %}
<div class="row mb-2"> <div class="row mb-2">
<div class="col-sm-6"> <div class="col-sm-6">
<h1 class="m-0 text-dark">{% if mainTitleIcon|default(false) %}<i class="fa fas {{ mainTitleIcon }}"></i>{% endif %} <h1 class="m-0 text-dark">{% if mainTitleIcon|default(false) %}<i class="fa fas {{ mainTitleIcon }}"></i>{% endif %}

View File

@@ -0,0 +1,21 @@
{# SUCCESS MESSAGE (ALWAYS SINGULAR) #}
{% if session_has('success') %}
<div class="row">
<div class="col">
<!-- alert from URL -->
<div class="alert alert-success alert-dismissible" v-if="successMessage.length > 0">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h5><i class="icon fas fa-thumbs-up"></i> {{ 'flash_success'|_ }}</h5>
<span>
{% if session_has('success_uri') %}
<a href="{{ session('success_uri') }}">
{% endif %}
{{ session('success') }}
{% if session_has('success_uri') %}
</a>
{% endif %}
</span>
</div>
</div>
</div>
{% endif %}