Files
OMS/app/desktop/controller/pagecols/setting.php
2026-01-04 19:08:31 +08:00

174 lines
5.7 KiB
PHP

<?php
/**
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class desktop_ctl_pagecols_setting extends desktop_controller
{
public $workground = 'setting_tools';
/**
* 列表页面
*/
public function index()
{
$model = $this->app->model('pagecols_setting');
// 获取所有配置数据
$configs = $model->getList('*', array(), 0, -1, 'id ASC');
// 按场景分组数据
$grouped_configs = array();
foreach ($configs as $config) {
$scene = $config['tbl_name'];
if (!isset($grouped_configs[$scene])) {
$grouped_configs[$scene] = array();
}
$grouped_configs[$scene][$config['col_key']] = array(
'required' => $config['is_required'] == '1',
'default' => $config['default_value']
);
}
$this->pagedata['grouped_configs'] = $grouped_configs;
// 预定义的场景和元素
$list = kernel::servicelist('set_pagecols_setting');
$predefined_scenes = array();
foreach ($list as $k => $obj) {
if (method_exists($obj, 'get_pagecols_setting')) {
$scenes = $obj->get_pagecols_setting();
if (is_array($scenes)) {
$predefined_scenes = array_merge($predefined_scenes, $scenes);
}
}
}
$this->pagedata['predefined_scenes'] = $predefined_scenes;
$this->page('admin/pagecols/setting.html');
}
/**
* 获取配置数据
*/
public function getConfigs()
{
$model = $this->app->model('pagecols_setting');
// 获取所有配置数据
$configs = $model->getList('*', array(), 0, -1, 'id ASC');
// 按场景分组数据
$grouped_configs = array();
foreach ($configs as $config) {
$scene = $config['tbl_name'];
if (!isset($grouped_configs[$scene])) {
$grouped_configs[$scene] = array();
}
$grouped_configs[$scene][] = $config;
}
$this->pagedata['grouped_configs'] = $grouped_configs;
$this->pagedata['scenes'] = array_keys($grouped_configs);
// 预定义的场景和元素
$list = kernel::servicelist('set_pagecols_setting');
$predefined_scenes = array();
foreach ($list as $k => $obj) {
if (method_exists($obj, 'get_pagecols_setting')) {
$scenes = $obj->get_pagecols_setting();
if (is_array($scenes)) {
$predefined_scenes = array_merge($predefined_scenes, $scenes);
}
}
}
$this->pagedata['predefined_scenes'] = $predefined_scenes;
$this->display('admin/pagecols/config_table.html');
}
/**
* 保存配置数据
*/
public function saveConfigs()
{
$finder_vid = $_GET['finder_vid'] ? $_GET['finder_vid'] : '';
$redirect_url = 'index.php?app=desktop&ctl=pagecols_setting&act=index';
if ($finder_vid) {
$redirect_url .= '&finder_vid=' . $finder_vid;
}
$this->begin($redirect_url);
$model = $this->app->model('pagecols_setting');
$success = true;
$message = '';
try {
// 获取提交的数据
$scene_data = $_POST['scene_data'];
// 先删除所有现有配置
$model->delete(array());
// 保存新的配置数据
foreach ($scene_data as $scene => $elements) {
foreach ($elements as $element_key => $element_data) {
$data = array(
'tbl_name' => $scene,
'col_key' => $element_key,
'is_required' => $element_data['required'] ? '1' : '0',
'default_value' => $element_data['default'],
);
$result = $model->insert($data);
if (!$result) {
$success = false;
$message = '保存失败';
break 2;
}
}
}
if ($success) {
$this->end(true, '保存成功');
} else {
$this->end(false, $message);
}
} catch (Exception $e) {
$this->end(false, '保存失败:' . $e->getMessage());
}
}
/**
* 获取场景配置
*/
public function getSceneConfig($scene)
{
$model = $this->app->model('pagecols_setting');
$configs = $model->getList('*', array('tbl_name' => $scene), 0, -1, 'id ASC');
$result = array();
foreach ($configs as $config) {
$result[$config['col_key']] = array(
'required' => $config['is_required'] == '1',
'default' => $config['default_value']
);
}
echo json_encode($result);
exit;
}
}