wrapper()->title(_t('@menu', 'Listings') . ' / ' . _t('@', 'List'));
$list->formsHeader([
'title.add.link' => _t('@listings', 'Add Listing'),
'title.add' => _t('@menu', 'Listings') . ' / ' . _t('@listings', 'Add Listing'),
'title.edit' => _t('@menu', 'Listings') . ' / ' . _t('@listings', 'Editing Listing'),
]);
$list
->column('id', _t('@', 'ID'), 70, ['order' => $list::COLUMN_ORDER_DESC])
->column('title', _t('@', 'Title'), false, [
'align'=>$list::COLUMN_ALIGN_LEFT,
], function ($v, $r, $o){ ?>
column('created', _t('@', 'Created'), 150, [], function ($v, $r) use ($list){ ?>
tab() == 3) { # для списка "на модерации", указываем причину отправления на модерацию:
if ($r['status'] == Listings::STATUS_BLOCKED) {
?>
= tpl::date($v, ['time' => true]) ?>
rowsActionAdd('user', function($row) use ($list) { ?>
= _te('@', 'User'); ?>
rowsActionAdd('comments', function($row) use ($list) { ?>
rowsActionsMore(['comments', $list::ACTION_DELETE])
;}
$list->tabs()
->add(0, _t('@listings', 'Published'))
->add(2, _t('@listings', 'Removed from Published'))
->add(3, _t('@listings', 'Moderation'), false, ['counter' => function(){ return Listings::moderationCounterUpdate(false); }])
->add(4, _t('@listings', 'Unactivated'), false, ['attr' => ['class' => 'disabled']])
->add(5, _t('@listings', 'Blocked'))
->add(6, _t('@listings', 'Deleted'))
->add(7, _t('@', 'All'))
;
$list->filters()
->autocomplete('cat', _t('@listings', 'Category'), '', Listings::categories_suggest(), [
'autocomplete' => function($q) {
return Listings::ajaxHandlerCategoryAutocomplete(['q' => $q, 'type' => 'adm-items-listing']);
},
'values' => function($id) {
$data = Listings::ajaxHandlerCategoryAutocomplete(['id' => $id, 'type' => 'adm-items-listing']);
if (empty($data)) {
return '';
}
$data = reset($data);
return $data[2]['title'] ?? '';
},
'onSelect' => function(){ ?>text('title', _t('@listings', 'ID / Title / Phone'))
->text('uid', _t('@listings', 'User ID / Email'))
->text('companyid', _t('@listings', 'Company ID'), [
'wrapper' => function($html, $p) {
if (! bff::businessEnabled()) {
return '';
}
return $html;
}
])
->select('moderate_list', '', function () {
return [
0 => _t('@', 'All'),
1 => _t('@listings', 'Edited'),
2 => _t('@listings', 'Imported'),
];
}, 0, ['wrapper' => function($html, $p) use ($list) {
HTML::attributeAdd($p['attr'], 'class', 'j-moderate_list');
if ($list->tab() != 3) {
HTML::attributeAdd($p['attr'], 'class', 'hide');
}
return $html;
}])
->autocomplete(
'region',
Geo::coveringType(Geo::COVERING_COUNTRIES) ? _t('@', 'Country / Region') : _t('@', 'Region'),
'',
Geo::regionPreSuggest(0, ['json' => false]),
[
'autocomplete' => function($q) {
$data = Geo::regionSuggest(['q' => $q, 'reg' => 1, 'country' => 1, 'asArray' => true]);
return $data['response'] ?? [];
},
'values' => function($id) {
$data = Geo::regionSuggest(['id' => $id, 'reg' => 1, 'country' => 1, 'asArray' => true]);
$data = $data['list'] ?? [];
if (empty($data)) {
return '';
}
$data = reset($data);
return $data['title'] ?? '';
},
'onSelect' => function(){ ?> function($html, $p) {
if (Geo::coveringType(Geo::COVERING_CITY)) {
return '';
}
return $html;
}
])
;
$blockForm = Admin::form($list)
->setTitle(_t('@listings', 'Mass Action'))
->select('blocked_id', _t('@listings', 'Blocking Reason'), 0, Listings::blockedReasons(), false, ['optionsID' => null, 'optionsTitle' => null])
->textarea('blocked_reason', '', '', false)
->visibleIf('blocked_id', [Listings::BLOCK_OTHER, Listings::BLOCK_FOREVER])
->buttonSubmit(_t('@', 'Block'))
->buttonCancel()
->onSubmit(function ($id, $p) {
if (in_array($p['data']['blocked_id'], [Listings::BLOCK_OTHER, Listings::BLOCK_FOREVER])) {
if (empty($p['data']['blocked_reason'])) {
Errors::set(_t('@listings', 'Reason can\'t be empty'), 'blocked_reason');
}
}
})
;
$refreshForm = Admin::form($list)
->setTitle(_t('@listings', 'Mass Action'))
->checkbox('topUp')
->label(_t('@listings', 'Raising Listings in Search Results'))
->buttonSubmit(_t('@listings', 'Publish'))
->buttonCancel()
;
$list->massActions()
->add('refresh', _t('@listings', 'Publish'))
->tabs(2)
->form($refreshForm)
->access('items-moderate')
->add('approve', _t('@listings', 'Approve'))
->tabs(3)
->access('items-moderate')
->add('unpublicate', _t('@listings', 'Unpublish'))
->tabs(0)
->access('items-moderate')
->add('block', _t('@listings', 'Block'))
->tabs([0,2,3,4])
->classAdd('text-error')
->form($blockForm)
->access('items-moderate')
->add('unblock', _t('@listings', 'Unblock'))
->tabs(5)
->alias('approve')
->access('items-moderate')
->add('delete', _t('@listings', 'Delete'))
->tabs([0,2,3,4,5])
->classAdd('text-error')
->access('items-edit')
->add('delete1', _t('@listings', 'Delete Completely'))
->tabs(6)
->alias('delete')
->access('items-edit')
;
$list->jsParams('onEnterSubmit', true);
$list->jsStart('jListingsAdminItemsList');
?>
jsStop();