Files
OMS/app/desktop/lib/keyboard/setting.php
2025-12-28 23:13:25 +08:00

109 lines
4.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
class desktop_keyboard_setting {
private $_setting_key = array('全局操作','界面操作','导航菜单上的栏目');
/**
* 设置_default_control
* @param mixed $default default
* @param mixed $row row
* @param mixed $skip skip
* @return mixed 返回操作结果
*/
public function set_default_control( $default,&$row,$skip=false ) {
if( !$skip ) {
if( $row['params']['control'] && is_array($row['params']['control']) ) {
foreach( $row['params']['control'] as $control => $flag ) {
if( !in_array($control,$default) ) unset($row['params']['control'][$control]);
}
} else {
$this->set_default_control( $default,$row,true );
}
}
foreach( $default as $_key ) {
if( !isset($row['params']['control'][$_key]) ) $row['params']['control'][$_key] = 'false';
}
if( is_array($row['params']['control']) )
ksort( $row['params']['control'] );
}
public function init_keyboard_setting_data( &$setting,&$keyword,$keyboard_setting=array() ) {
#echo "<pre>";print_r($keyboard_setting);exit;
$_setting = array();
foreach( kernel::servicelist('desktop_keyboard_setting') as $object ) {
foreach( (array)$object->setting as $key => $row ) {
//默认只有三项。
if( !in_array($key,$this->_setting_key) ) continue;
$_setting[$key] = array_merge( (array)$_setting[$key],$row );
}
}
$setting = array();
foreach( $_setting as $key => $row ) {
foreach( $row as $_key => $val ) {
$setting[$key][$val['title']] = $val;
}
}
if( is_array($keyboard_setting) ) {
foreach( $keyboard_setting as $_keyboard_setting_key => $_keyboard_setting ) {
if( !is_array($_keyboard_setting) ) continue;
foreach( $_keyboard_setting as $_keyboard_key => $keyboard ) {
if( $keyboard['params']['control'] ) { //控制键
foreach( $keyboard['params']['control'] as $key => $val ) {
$setting[$_keyboard_setting_key][$_keyboard_key]['params']['control'][$key] = ($val=='true' ? 'true' : 'false');
}
}
if( $keyboard['params']['keyword'] ) //附加件
$setting[$_keyboard_setting_key][$_keyboard_key]['params']['keyword'] = $keyboard['params']['keyword'];
$setting[$_keyboard_setting_key][$_keyboard_key]['use'] = $keyboard['use'];
}
}
}
#$_keyword = strtoupper('a b c d e f g h i j k l m n o p q r s t u v w x y z / ; [ ] - =');
$_keyword = strtoupper('a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9');
$_keyword = explode(' ',$_keyword);
foreach( $_keyword as $key => $val ) {
if( !$val ) continue;
$keyword[$val] = $val;
}
}
/**
* 获取_setting_json
* @param mixed $setting setting
* @return mixed 返回结果
*/
public function get_setting_json( $setting ) {
$this->init_keyboard_setting_data( $keyboard_setting,$keyboard,$setting );
foreach( (array)$setting as $_keyboard_setting_key => $row ) {
foreach( (array)$row as $_keyboard_key => $val ) {
if( $val['use']!='true' ) continue;
$tmp[] = $keyboard_setting[$_keyboard_setting_key][$_keyboard_key];
}
}
$json = array();
foreach( (array)$tmp as $setting ) {
$return = array();
$return['type'] = $setting['type'];
$return['arg'] = $setting['arg'];
if( $setting['options'] )
$return['options'] = $setting['options'];
foreach( (array)$setting['params']['control'] as $key => $val ) {
if( $val=='true' ) $return['keycode'][] = $key;
}
$return['keycode'][] = strtolower( $setting['params']['keyword'] );
$json[] = $return;
}
return json_encode($json);
}
}