Вход Регистрация
Файл: system/controllers/admin/hooks/grid_admin_content_items_args.php
Строк: 132
<?php

class onAdminGridAdminContentItemsArgs extends cmsAction {

    public function 
run($data) {

        if(!
cmsCore::getInstance()->request->isAjax()){ return $data; }

        list(
$grid$args) = $data;

        
$ctype_name $args[1];

        
$content_model cmsCore::getModel('content');

        
$ctype $content_model->getContentTypeByName($ctype_name);

        
$saved cmsUser::getUPS('admin.grid_columns.content.' $ctype['id']);

        if (!
$saved) {
            return 
$data;
        }

        
$controller    $args[0];
        
$content_table $content_model->table_prefix $ctype['name'];

        
$settings $this->getContentGridColumnsSettings($ctype['id']);
        
$default  $this->getContentGridColumnsSettingsDefault();

        
$changed false;

        foreach (
$saved as $type => $fields) {
            foreach (
$fields as $name => $field) {
                if (!empty(
$field['enabled'])) {

                    if (!empty(
$field['filter']) && isset($settings[$type][$name]['filters'][$field['filter']])) { // && валидация

                        
if(!isset($grid['columns'][$name]['filter'])){
                            
$changed true;
                        }

                        
$grid['columns'][$name]['filter'] = $field['filter'];

                        if (
strpos($name'date_') !== && $field['filter'] === 'select') {
                            
$grid['columns'][$name]['filter']        = 'exact';
                            
$grid['columns'][$name]['filter_select'] = $settings[$type][$name]['filter_select'];
                        }

                    } else if (isset(
$grid['columns'][$name]['filter'])) {
                        unset(
$grid['columns'][$name]['filter']);
                    }

                    if (isset(
$default[$type][$name])) {
                        continue;
                    }

                    
// для стоковых менять только фильтр
                    
if (!isset($settings[$type][$name])) {
                        continue;
                    }

                    
$grid['columns'][$name]['title'] = $settings[$type][$name]['title'];

                    if (!empty(
$field['handler']) && isset($settings[$type][$name]['handlers'][$field['handler']])) {
                        if (
$field['handler'] === 'flag') {
                            
$grid['columns'][$name]['flag']        = true;
                            
$grid['columns'][$name]['flag_toggle'] = href_to($controller->name'toggle_item', array('{id}'$content_table$name));
                            
$grid['columns'][$name]['width']       = 60;
                        } else if (
$field['handler'] === 'to_filter') {
                            
$grid['columns'][$name]['handler'] = $settings[$type][$name]['handler_to_filter'];
                        }
                    }

                    if (!empty(
$settings[$type][$name]['handlers_only'])) {
                        
$grid['columns'][$name]['handler'] = $settings[$type][$name]['handler_only'];
                    }

                } else if (isset(
$default[$type][$name])) {
                    unset(
$grid['columns'][$name]);
                }
            }
        }

        
// пришедшие фильтра сбивают фокус с поля ввода
        
if (cmsUser::getUPS('admin.grid_columns.content.' $ctype['id'] . '.changed')) {

            
cmsUser::deleteUPS('admin.grid_columns.content.' $ctype['id'] . '.changed');

            
$grid['options']['load_columns'] = true;

        }

        
// когда включаем фильтр для существующих полей
        
if($changed){
            
$grid['options']['load_columns'] = true;
        }

        return array(
$grid$args);

    }

}
Онлайн: 2
Реклама