mirror of
https://github.com/openclassify/openclassify.git
synced 2026-02-09 23:06:08 -06:00
Merge branch 'master' of https://github.com/openclassify/openclassify
This commit is contained in:
commit
87b0907c86
@ -37,6 +37,8 @@ return [
|
|||||||
'create_ad' => [
|
'create_ad' => [
|
||||||
'title' => 'visiosoft.module.advs::section.create_ad',
|
'title' => 'visiosoft.module.advs::section.create_ad',
|
||||||
'fields' => [
|
'fields' => [
|
||||||
|
'steps_color',
|
||||||
|
'create_ad_button_color',
|
||||||
'hide_standard_price_field',
|
'hide_standard_price_field',
|
||||||
'hide_options_field',
|
'hide_options_field',
|
||||||
'hide_village_field',
|
'hide_village_field',
|
||||||
|
|||||||
@ -350,4 +350,16 @@ return [
|
|||||||
'bind' => 'override_text',
|
'bind' => 'override_text',
|
||||||
'env' => 'OVERRIDE_TEXT',
|
'env' => 'OVERRIDE_TEXT',
|
||||||
],
|
],
|
||||||
|
'steps_color' => [
|
||||||
|
"type" => "anomaly.field_type.colorpicker",
|
||||||
|
"config" => [
|
||||||
|
"default_value" => '#209579',
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'create_ad_button_color' => [
|
||||||
|
"type" => "anomaly.field_type.colorpicker",
|
||||||
|
"config" => [
|
||||||
|
"default_value" => '#00a651',
|
||||||
|
]
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|||||||
@ -52,8 +52,9 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.next-stap img {
|
.next-stap svg {
|
||||||
width: 60px;
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.next-stap p {
|
.next-stap p {
|
||||||
@ -62,7 +63,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn-1 {
|
.btn-1 {
|
||||||
background-color: #00a651;
|
background-color: {{ setting_value('visiosoft.module.advs::create_ad_button_color') }};
|
||||||
padding: 5px 30px 7px;
|
padding: 5px 30px 7px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border: 1px solid #dadada;
|
border: 1px solid #dadada;
|
||||||
|
|||||||
@ -6,16 +6,10 @@
|
|||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
|
||||||
&.current {
|
&.current {
|
||||||
&::after {
|
|
||||||
background: linear-gradient(to right, #209579 50%, #dfdfdf 50%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bullet {
|
.bullet {
|
||||||
color: #209579;
|
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border: .2rem solid #209579;
|
|
||||||
@media only screen and (min-width: 768px) {
|
@media only screen and (min-width: 768px) {
|
||||||
border: .3rem solid #209579;
|
border-width: .3rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,7 +37,6 @@
|
|||||||
left: 0;
|
left: 0;
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: #209579;
|
|
||||||
@media only screen and (min-width: 768px) {
|
@media only screen and (min-width: 768px) {
|
||||||
height: .3rem;
|
height: .3rem;
|
||||||
top: 1.4rem;
|
top: 1.4rem;
|
||||||
@ -58,7 +51,6 @@
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
position: relative;
|
position: relative;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
background-color: #209579;
|
|
||||||
@media only screen and (min-width: 768px) {
|
@media only screen and (min-width: 768px) {
|
||||||
height: 3rem;
|
height: 3rem;
|
||||||
width: 3rem;
|
width: 3rem;
|
||||||
|
|||||||
18
addons/default/visiosoft/advs-module/resources/css/step2.css
Normal file
18
addons/default/visiosoft/advs-module/resources/css/step2.css
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{% set stepsColor = setting_value('visiosoft.module.advs::steps_color') %}
|
||||||
|
|
||||||
|
#stepProgressBar .step.current .bullet {
|
||||||
|
color: {{ stepsColor }};
|
||||||
|
border: 0.2rem solid {{ stepsColor }};
|
||||||
|
}
|
||||||
|
|
||||||
|
#stepProgressBar .step .bullet {
|
||||||
|
background-color: {{ stepsColor }};
|
||||||
|
}
|
||||||
|
|
||||||
|
#stepProgressBar .step.current::after {
|
||||||
|
background: linear-gradient(to right, {{ stepsColor }} 50%, #dfdfdf 50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
#stepProgressBar .step::after {
|
||||||
|
background-color: {{ stepsColor }};
|
||||||
|
}
|
||||||
@ -26,7 +26,7 @@ $(document).ready(function () {
|
|||||||
success: function (response) {
|
success: function (response) {
|
||||||
hideLoader();
|
hideLoader();
|
||||||
if(response['title'] != undefined){
|
if(response['title'] != undefined){
|
||||||
response['success'] ? $('.cross-icon').hide() : $('.check-icon').hide();
|
response['success'] ? $('.post-icon > svg:last-of-type').hide() : $('.post-icon > svg:first-of-type').hide();
|
||||||
|
|
||||||
let btn = '<button type="submit" class="btn-1">'+response['continueBtn']+'</button>';
|
let btn = '<button type="submit" class="btn-1">'+response['continueBtn']+'</button>';
|
||||||
if (response['link']) {
|
if (response['link']) {
|
||||||
|
|||||||
@ -1,8 +0,0 @@
|
|||||||
$("input[data-type='currency']").on('blur', function() {
|
|
||||||
const value = this.value.replace(/,/g, '');
|
|
||||||
this.value = parseFloat(value).toLocaleString('en-US', {
|
|
||||||
style: 'decimal',
|
|
||||||
maximumFractionDigits: 2,
|
|
||||||
minimumFractionDigits: 2
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -211,4 +211,12 @@ return [
|
|||||||
'name' => 'Override Text',
|
'name' => 'Override Text',
|
||||||
'instructions' => 'Old Value:New Value'
|
'instructions' => 'Old Value:New Value'
|
||||||
],
|
],
|
||||||
|
'steps_color' => [
|
||||||
|
'name' => 'Steps Color',
|
||||||
|
'instructions' => 'Changes the progressive steps color.'
|
||||||
|
],
|
||||||
|
'create_ad_button_color' => [
|
||||||
|
'name' => 'Create Ad Button Color',
|
||||||
|
'instructions' => 'Changes the button that shows up when the new ad category selection is finished.'
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|||||||
@ -19,14 +19,12 @@
|
|||||||
<input type="number" class="price-input form-control w-100"
|
<input type="number" class="price-input form-control w-100"
|
||||||
value="{{ app.request.get('min_price') }}"
|
value="{{ app.request.get('min_price') }}"
|
||||||
name="min_price" min="0"
|
name="min_price" min="0"
|
||||||
data-type="currency"
|
|
||||||
placeholder="{{ trans('visiosoft.module.advs::field.min.name') }}">
|
placeholder="{{ trans('visiosoft.module.advs::field.min.name') }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4 p-1 pr-0 m-0">
|
<div class="col-md-4 p-1 pr-0 m-0">
|
||||||
<input class="price-input form-control w-100" type="number"
|
<input class="price-input form-control w-100" type="number"
|
||||||
value="{{ app.request.get('max_price') }}"
|
value="{{ app.request.get('max_price') }}"
|
||||||
name="max_price"
|
name="max_price"
|
||||||
data-type="currency"
|
|
||||||
placeholder="{{ trans('visiosoft.module.advs::field.max.name') }}">
|
placeholder="{{ trans('visiosoft.module.advs::field.max.name') }}">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{ addBlock('ad-list/partials/table',{'featured_advs':featured_advs})|raw }}
|
{{ addBlock('ad-list/partials/table',{'featured_advs':featured_advs,'seenList':seenList})|raw }}
|
||||||
{% for adv in advs %}
|
{% for adv in advs %}
|
||||||
<tr class="text-center clickable-row{% if adv.doping != null %} doping_type4 {% endif %}" data-href='{{ adv.detail_url }}'>
|
<tr class="text-center clickable-row{% if adv.doping != null %} doping_type4 {% endif %}" data-href='{{ adv.detail_url }}'>
|
||||||
<td class="justify-content-center align-middle text-center td-image">
|
<td class="justify-content-center align-middle text-center td-image">
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
<style>
|
<style>
|
||||||
|
{{ asset_inline("visiosoft.module.advs::css/step2.css") }}
|
||||||
{{ asset_inline("visiosoft.module.advs::css/step.scss") }}
|
{{ asset_inline("visiosoft.module.advs::css/step.scss") }}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
@ -47,9 +47,9 @@
|
|||||||
|
|
||||||
<div class="cat-item mb-2 shadow-sm border rounded align-items-center">
|
<div class="cat-item mb-2 shadow-sm border rounded align-items-center">
|
||||||
<div class="cat-item-3">
|
<div class="cat-item-3">
|
||||||
<div class="section next-stap post-option px-4 text-center py-2">
|
<div class="section next-stap post-option post-icon px-4 text-center py-2">
|
||||||
<img src="{{ img('visiosoft.module.advs::images/check.svg').url }}" class="check-icon">
|
{{ img('visiosoft.module.advs::images/check.svg').data|raw }}
|
||||||
<img src="{{ img('visiosoft.module.advs::images/cross.svg').url }}" class="cross-icon">
|
{{ img('visiosoft.module.advs::images/cross.svg').data|raw }}
|
||||||
<div class="next-content"></div>
|
<div class="next-content"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -445,7 +445,9 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
|
|||||||
|
|
||||||
public function extendAds($allAds, $isAdmin = false)
|
public function extendAds($allAds, $isAdmin = false)
|
||||||
{
|
{
|
||||||
if (!is_numeric($allAds)) {
|
if (is_array($allAds)) {
|
||||||
|
$advs = $this->newQuery()->whereIn('id', $allAds);
|
||||||
|
} elseif (!is_numeric($allAds)) {
|
||||||
if ($isAdmin && auth()->user()->hasRole('admin')) {
|
if ($isAdmin && auth()->user()->hasRole('admin')) {
|
||||||
$advs = $this->newQuery();
|
$advs = $this->newQuery();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -1244,7 +1244,12 @@ class AdvsController extends PublicController
|
|||||||
|
|
||||||
public function extendAll($isAdmin = null)
|
public function extendAll($isAdmin = null)
|
||||||
{
|
{
|
||||||
$adsExtended = $this->adv_repository->extendAds(true, $isAdmin);
|
if (\request()->unpublished) {
|
||||||
|
$allAds = $this->adv_model->pendingAdvsByUser()->pluck('id')->all();
|
||||||
|
} else {
|
||||||
|
$allAds = true;
|
||||||
|
}
|
||||||
|
$adsExtended = $this->adv_repository->extendAds($allAds, $isAdmin);
|
||||||
$this->messages->success(trans('visiosoft.module.advs::message.extended', ['number' => $adsExtended]));
|
$this->messages->success(trans('visiosoft.module.advs::message.extended', ['number' => $adsExtended]));
|
||||||
return $this->redirect->back();
|
return $this->redirect->back();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,6 +38,7 @@ $('.filter-country-btn').on('click', function () {
|
|||||||
//City
|
//City
|
||||||
$('.filter-city-btn').on('click', function () {
|
$('.filter-city-btn').on('click', function () {
|
||||||
var countries_value = $('input[name="country[]"]').val();
|
var countries_value = $('input[name="country[]"]').val();
|
||||||
|
countries_value += ',' + defaultCountry
|
||||||
var selected__city_request = $('input[name="city[]"]').val();
|
var selected__city_request = $('input[name="city[]"]').val();
|
||||||
if (cities == undefined || $(this).attr('data-parent') != countries_value) {
|
if (cities == undefined || $(this).attr('data-parent') != countries_value) {
|
||||||
$(this).attr('data-parent', countries_value);
|
$(this).attr('data-parent', countries_value);
|
||||||
@ -203,8 +204,8 @@ function SelectOnClick() {
|
|||||||
if ($(this).attr('data-field') == "country") {
|
if ($(this).attr('data-field') == "country") {
|
||||||
$('.selected-city').html('');
|
$('.selected-city').html('');
|
||||||
$('input[name="city[]"]').val('');
|
$('input[name="city[]"]').val('');
|
||||||
text_html.html(input_text)
|
// text_html.html(input_text)
|
||||||
$(".filter-location-body li[data-id='" + id + "'] input[type='checkbox']").prop('checked', true);
|
// $(".filter-location-body li[data-id='" + id + "'] input[type='checkbox']").prop('checked', true);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (input_val != "") {
|
if (input_val != "") {
|
||||||
@ -242,10 +243,11 @@ function locationCrud(params, url, type, beforeSend, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function item(field_name, id, value, abv = '') {
|
function item(field_name, id, value, abv = '') {
|
||||||
|
var selected = defaultCountry === id ? "checked" : "";
|
||||||
if (field_name === 'country') {
|
if (field_name === 'country') {
|
||||||
return '<li class="px-2" data-id="' + id + '">\n' +
|
return '<li class="px-2" data-id="' + id + '">\n' +
|
||||||
' <label class="w-100">\n' +
|
' <label class="w-100">\n' +
|
||||||
' <input type="checkbox" data-field="' + field_name + '" data-id="' + id + '">\n' +
|
' <input type="checkbox" data-field="' + field_name + '" data-id="' + id + '" '+ selected +'>\n' +
|
||||||
' <span class="flag ml-1 flag-' + abv + '">\n' +
|
' <span class="flag ml-1 flag-' + abv + '">\n' +
|
||||||
' </span>\n' +
|
' </span>\n' +
|
||||||
' <small>' + value + '</small>\n' +
|
' <small>' + value + '</small>\n' +
|
||||||
|
|||||||
@ -6,6 +6,10 @@
|
|||||||
{% if selectedCountry %}
|
{% if selectedCountry %}
|
||||||
{% set countryName = getCountry(selectedCountry).name %}
|
{% set countryName = getCountry(selectedCountry).name %}
|
||||||
{% set countryValue = defaultCountry == selectedCountry ? '' : selectedCountry %}
|
{% set countryValue = defaultCountry == selectedCountry ? '' : selectedCountry %}
|
||||||
|
{% set selected_countries_name = [] %}
|
||||||
|
{% for selectedCountry in selectedCountry[0]|split(',') %}
|
||||||
|
{% set selected_countries_name = selected_countries_name|merge([getCountry(selectedCountry|trim(',')).name]) %}
|
||||||
|
{% endfor %}
|
||||||
{% elseif defaultCountry %}
|
{% elseif defaultCountry %}
|
||||||
{% set countryName = getCountry(defaultCountry).name %}
|
{% set countryName = getCountry(defaultCountry).name %}
|
||||||
{% set countryValue = defaultCountry %}
|
{% set countryValue = defaultCountry %}
|
||||||
@ -17,7 +21,7 @@
|
|||||||
data-toggle="modal">
|
data-toggle="modal">
|
||||||
<span class="float-left">
|
<span class="float-left">
|
||||||
{{ trans("visiosoft.module.location::field.country.name") }}
|
{{ trans("visiosoft.module.location::field.country.name") }}
|
||||||
<small class="text-muted selected-country">{{ countryName }}</small>
|
<small class="text-muted selected-country">{{ countryName }} {{ selected_countries_name|join(',') }}</small>
|
||||||
</span>
|
</span>
|
||||||
<i class="fas fa-sort-down float-right"></i>
|
<i class="fas fa-sort-down float-right"></i>
|
||||||
</button>
|
</button>
|
||||||
@ -120,4 +124,5 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
var null_msg = "{{ trans('visiosoft.module.location::message.null_msg') }}!"
|
var null_msg = "{{ trans('visiosoft.module.location::message.null_msg') }}!"
|
||||||
|
var defaultCountry = {{ defaultCountry }}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ return [
|
|||||||
'delete' => 'Delete',
|
'delete' => 'Delete',
|
||||||
'extend' => 'Extend',
|
'extend' => 'Extend',
|
||||||
'extend_all' => 'Extend All',
|
'extend_all' => 'Extend All',
|
||||||
|
'extend_unpublished' => 'Extend Unpublished',
|
||||||
'edit' => 'Edit',
|
'edit' => 'Edit',
|
||||||
'go_profile' => 'Go to Profile Detail',
|
'go_profile' => 'Go to Profile Detail',
|
||||||
'go_user' => 'Go to User Detail',
|
'go_user' => 'Go to User Detail',
|
||||||
|
|||||||
@ -17,11 +17,11 @@
|
|||||||
|
|
||||||
<div class="col-sm-4 location-field city-data font-weight-bold"
|
<div class="col-sm-4 location-field city-data font-weight-bold"
|
||||||
data-content="{{ adress.city }}">
|
data-content="{{ adress.city }}">
|
||||||
{{ form.fields.city|raw }}
|
{{ form.fields.city.setPlaceholder(trans('visiosoft.module.profile::field.choose_an_option'))|raw }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-4 location-field district-data font-weight-bold"
|
<div class="col-sm-4 location-field district-data font-weight-bold"
|
||||||
data-content="{{ adress.district }}">
|
data-content="{{ adress.district }}">
|
||||||
{{ form.fields.district|raw }}
|
{{ form.fields.district.setPlaceholder(trans('visiosoft.module.profile::field.choose_an_option'))|raw }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group location-map">
|
<div class="form-group location-map">
|
||||||
|
|||||||
@ -35,6 +35,9 @@
|
|||||||
<a href="{{ url_route("advs::extendAll") }}" class="btn btn-primary">
|
<a href="{{ url_route("advs::extendAll") }}" class="btn btn-primary">
|
||||||
{{ trans('visiosoft.module.profile::button.extend_all') }}
|
{{ trans('visiosoft.module.profile::button.extend_all') }}
|
||||||
</a>
|
</a>
|
||||||
|
<a href="{{ url_route("advs::extendAll") }}?unpublished=1" class="btn btn-warning text-white">
|
||||||
|
{{ trans('visiosoft.module.profile::button.extend_unpublished') }}
|
||||||
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-content py-3 px-3 px-sm-0" id="nav-tabContent">
|
<div class="tab-content py-3 px-3 px-sm-0" id="nav-tabContent">
|
||||||
|
|||||||
@ -56,7 +56,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="pt-2 d-flex flex-column flex-sm-row d-sm-block m-auto m-sm-0">
|
<div class="pt-2 d-flex flex-column flex-sm-row d-sm-block m-auto m-sm-0">
|
||||||
<p class="mb-1 username">{{ user.name }}</p>
|
<p class="mb-1 username">{{ user.name }}</p>
|
||||||
<p class="mb-1 last-login d-flex d-sm-block m-auto m-sm-0">{{ auth_user().last_login_at|date("d.m.Y - H:i") }}</p>
|
<p class="mb-1 last-login d-flex d-sm-block m-auto m-sm-0">
|
||||||
|
{{ auth_user().last_login_at|date(config_get('streams::datetime.date_format') ~ ' - ' ~ config_get('streams::datetime.time_format')) }}
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-4">
|
<div class="mt-4">
|
||||||
@ -122,7 +124,7 @@
|
|||||||
<label class="control-label font-weight-bold">
|
<label class="control-label font-weight-bold">
|
||||||
{{ profileForm.fields.gsm_phone.label }}
|
{{ profileForm.fields.gsm_phone.label }}
|
||||||
</label>
|
</label>
|
||||||
{{ profileForm.fields.gsm_phone.input|raw }}
|
{{ profileForm.fields.gsm_phone.setAttributes({'maxlength': '14'}).input|raw }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
@ -130,7 +132,7 @@
|
|||||||
<label class="control-label font-weight-bold">
|
<label class="control-label font-weight-bold">
|
||||||
{{ profileForm.fields.office_phone.label }}
|
{{ profileForm.fields.office_phone.label }}
|
||||||
</label>
|
</label>
|
||||||
{{ profileForm.fields.office_phone.input|raw }}
|
{{ profileForm.fields.office_phone.setAttributes({'maxlength': '14'}).input|raw }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
@ -138,7 +140,7 @@
|
|||||||
<label class="control-label font-weight-bold">
|
<label class="control-label font-weight-bold">
|
||||||
{{ profileForm.fields.land_phone.label }}
|
{{ profileForm.fields.land_phone.label }}
|
||||||
</label>
|
</label>
|
||||||
{{ profileForm.fields.land_phone.input|raw }}
|
{{ profileForm.fields.land_phone.setAttributes({'maxlength': '14'}).input|raw }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
@ -146,7 +148,7 @@
|
|||||||
<label class="control-label font-weight-bold">
|
<label class="control-label font-weight-bold">
|
||||||
{{ trans("visiosoft.module.profile::field.birthday.name") }}
|
{{ trans("visiosoft.module.profile::field.birthday.name") }}
|
||||||
</label>
|
</label>
|
||||||
{{ profileForm.fields.birthday.configSet('date_format','Y-m-d').setPlaceholder(now|date('Y-m-d')).input|raw }}
|
{{ profileForm.fields.birthday.configSet('date_format','Y-m-d').setPlaceholder(now|date(config_get('streams::datetime.date_format'))).input|raw }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
@ -221,7 +223,6 @@
|
|||||||
</div>
|
</div>
|
||||||
{{ profileForm.close()|raw }}
|
{{ profileForm.close()|raw }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="tab-pane fade" id="nav-password" role="tabpanel" aria-labelledby="nav-password-tab">
|
<div class="tab-pane fade" id="nav-password" role="tabpanel" aria-labelledby="nav-password-tab">
|
||||||
{% set passwordForm = form('updatePassword').get() %}
|
{% set passwordForm = form('updatePassword').get() %}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user