Initial project files: BESCMS full source
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'type' => 'app',
|
||||
'name' => '自定义资料',
|
||||
'author' => '迅睿云软件',
|
||||
'icon' => 'fa fa-th-large',
|
||||
'uri' => 'block/home/index',
|
||||
|
||||
];
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 缓存参数配置
|
||||
*
|
||||
* 模型名称 => 项目目录
|
||||
*
|
||||
* 站点表:安装时由 Install.php 创建;
|
||||
* 新站点或缺表时由 Models/Block::cache($siteid) 自动补建。
|
||||
**/
|
||||
|
||||
return [
|
||||
|
||||
'block' => 'block',
|
||||
|
||||
];
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
/**
|
||||
* Block 站点表安装(原 Install_site.sql)
|
||||
* App::install 会先跑 Install.php;此处按站点创建 {siteid}_block
|
||||
*/
|
||||
$m = \Phpcmf\Service::M();
|
||||
$t = \Phpcmf\Service::M('table');
|
||||
$sites = !empty($m->site) ? $m->site : [SITE_ID => SITE_ID];
|
||||
foreach ($sites as $siteid) {
|
||||
$table = $m->dbprefix($siteid.'_block');
|
||||
if ($m->is_table_exists($table)) {
|
||||
continue;
|
||||
}
|
||||
$t->create_table($table, [
|
||||
'id' => 'smallint(5) unsigned NOT NULL AUTO_INCREMENT',
|
||||
'name' => 'varchar(100) NOT NULL COMMENT \'名称\'',
|
||||
'code' => 'varchar(100) NOT NULL COMMENT \'别名\'',
|
||||
'hide' => 'tinyint(1) unsigned NOT NULL COMMENT \'隐藏\'',
|
||||
'content' => 'text NOT NULL COMMENT \'内容\'',
|
||||
], [
|
||||
'PRIMARY KEY (`id`)',
|
||||
'KEY `code` (`code`)',
|
||||
], '资料块表');
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 菜单配置
|
||||
*/
|
||||
|
||||
|
||||
return [
|
||||
|
||||
'admin' => [
|
||||
|
||||
'app' => [
|
||||
'left' => [
|
||||
'app-plugin' => [
|
||||
'link' => [
|
||||
[
|
||||
'name' => '自定义资料',
|
||||
'icon' => 'fa fa-th-large',
|
||||
'uri' => 'block/home/index',
|
||||
],
|
||||
|
||||
]
|
||||
],
|
||||
],
|
||||
|
||||
|
||||
|
||||
],
|
||||
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
|
||||
// 加载主程序的路由
|
||||
require COREPATH.'Config/Routes.php';
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* Block 站点表卸载(原 Uninstall_site.sql)
|
||||
*/
|
||||
$m = \Phpcmf\Service::M();
|
||||
$t = \Phpcmf\Service::M('table');
|
||||
$sites = !empty($m->site) ? $m->site : [SITE_ID => SITE_ID];
|
||||
foreach ($sites as $siteid) {
|
||||
$t->drop_table($m->dbprefix($siteid.'_block'), true);
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 更新数据结构
|
||||
**/
|
||||
|
||||
$m = \Phpcmf\Service::M();
|
||||
$t = \Phpcmf\Service::M('table');
|
||||
$prefix = $m->prefix;
|
||||
|
||||
foreach ($this->site as $siteid) {
|
||||
$table = $prefix.$siteid.'_block';
|
||||
if ($m->is_table_exists($table) && !$m->is_field_exists($table, 'code')) {
|
||||
$t->add_field($table, 'code', 'VARCHAR(100)', 'NOT NULL', '');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'id' => '360',
|
||||
'vip' => '',
|
||||
'cms' => '4.7.3',
|
||||
'version' => '3.8',
|
||||
'license' => '375C71349B295FBE2DCDCA9206F20A1703',
|
||||
'updatetime' => '2026-06-01 18:26:49',
|
||||
'downtime' => '2026-08-08 00:54:28',
|
||||
|
||||
];
|
||||
@@ -0,0 +1,318 @@
|
||||
<?php namespace Phpcmf\Controllers\Admin;
|
||||
|
||||
// 自定义资料
|
||||
class Home extends \Phpcmf\Table
|
||||
{
|
||||
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->tpl_name = 'block'; // 模板命名名称
|
||||
\Phpcmf\Service::V()->assign([
|
||||
'menu' => \Phpcmf\Service::M('auth')->_admin_menu(
|
||||
[
|
||||
'自定义资料' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/index', 'fa fa-th-large'],
|
||||
'添加' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/add', 'fa fa-plus'],
|
||||
'修改' => ['hide:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/edit', 'fa fa-edit'],
|
||||
'文件存储' => ['add:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/file_edit', 'fa fa-file', '350px', '280px'],
|
||||
'更新缓存' => ['ajax:api/cache_update', 'fa fa-refresh'],
|
||||
'help' => [352],
|
||||
]
|
||||
),
|
||||
'type' => [
|
||||
'0' => dr_lang('单文本'),
|
||||
'1' => dr_lang('多文本'),
|
||||
'2' => dr_lang('富文本'),
|
||||
'3' => dr_lang('单文件'),
|
||||
'4' => dr_lang('多文件'),
|
||||
]
|
||||
]);
|
||||
// 支持附表存储
|
||||
$this->is_data = 0;
|
||||
$app = \Phpcmf\Service::M('app')->get_config(APP_DIR);
|
||||
$this->my_field = array(
|
||||
'name' => array(
|
||||
'ismain' => 1,
|
||||
'name' => dr_lang('名称'),
|
||||
'fieldname' => 'name',
|
||||
'fieldtype' => 'Text',
|
||||
'setting' => array(
|
||||
'option' => array(
|
||||
'width' => 200,
|
||||
),
|
||||
'validate' => array(
|
||||
'required' => 1,
|
||||
'tips' => dr_lang('显示名称'),
|
||||
'formattr' => ' onblur="d_topinyin(\'code\', \'name\')"'
|
||||
)
|
||||
)
|
||||
),
|
||||
'code' => array(
|
||||
'ismain' => 1,
|
||||
'name' => dr_lang('别名'),
|
||||
'fieldname' => 'code',
|
||||
'fieldtype' => 'Text',
|
||||
'setting' => array(
|
||||
'option' => array(
|
||||
'width' => 200,
|
||||
),
|
||||
'validate' => array(
|
||||
'required' => 1,
|
||||
'tips' => dr_lang('调用名称,由字母或数字组成,不得重复'),
|
||||
)
|
||||
)
|
||||
),
|
||||
'value_0' => array(
|
||||
'ismain' => 0,
|
||||
'fieldname' => 'value_0',
|
||||
'fieldtype' => 'Text',
|
||||
'setting' => array(
|
||||
'option' => array(
|
||||
'width' => '90%',
|
||||
),
|
||||
'validate' => array(
|
||||
'xss' => 1,
|
||||
),
|
||||
'is_right' => 2,
|
||||
)
|
||||
),
|
||||
'value_1' => array(
|
||||
'ismain' => 0,
|
||||
'fieldname' => 'value_1',
|
||||
'fieldtype' => 'Textarea',
|
||||
'setting' => array(
|
||||
'option' => array(
|
||||
'width' => '90%',
|
||||
'height' => 250,
|
||||
),
|
||||
'validate' => array(
|
||||
'xss' => 1,
|
||||
),
|
||||
'is_right' => 2,
|
||||
)
|
||||
),
|
||||
'value_2' => array(
|
||||
'ismain' => 0,
|
||||
'fieldtype' => 'Ueditor',
|
||||
'fieldname' => 'value_2',
|
||||
'setting' => array(
|
||||
'option' => array(
|
||||
'mode' => 1,
|
||||
'height' => 300,
|
||||
'div2p' => '1',
|
||||
'attachment' => intval($app['file']),
|
||||
'width' => '100%'
|
||||
),
|
||||
'is_right' => 2,
|
||||
)
|
||||
),
|
||||
'value_3' => array(
|
||||
'ismain' => 0,
|
||||
'fieldtype' => 'File',
|
||||
'fieldname' => 'value_3',
|
||||
'setting' => array(
|
||||
'option' => array(
|
||||
'ext' => '*',
|
||||
'input' => 1,
|
||||
'size' => 99999,
|
||||
'attachment' => intval($app['file']),
|
||||
),
|
||||
'is_right' => 2,
|
||||
)
|
||||
),
|
||||
'value_4' => array(
|
||||
'ismain' => 0,
|
||||
'fieldtype' => 'Files',
|
||||
'fieldname' => 'value_4',
|
||||
'setting' => array(
|
||||
'option' => array(
|
||||
'ext' => '*',
|
||||
'desc' => 1,
|
||||
'name' => 1,
|
||||
'input' => 1,
|
||||
'size' => 99999,
|
||||
'count' => 99999,
|
||||
'attachment' => intval($app['file']),
|
||||
),
|
||||
'is_right' => 2,
|
||||
)
|
||||
),
|
||||
);
|
||||
// 表单显示名称
|
||||
$this->name = dr_lang('自定义资料');
|
||||
// 初始化数据表
|
||||
$this->_init([
|
||||
'table' => SITE_ID.'_block',
|
||||
'field' => $this->my_field,
|
||||
'order_by' => 'id desc',
|
||||
]);
|
||||
\Phpcmf\Service::V()->assign([
|
||||
'field' => $this->my_field,
|
||||
]);
|
||||
}
|
||||
|
||||
// 后台查看表单列表
|
||||
public function index() {
|
||||
// 新字段
|
||||
$table = \Phpcmf\Service::M()->dbprefix(SITE_ID.'_block');
|
||||
if (\Phpcmf\Service::M()->is_table_exists($table)) {
|
||||
if (!\Phpcmf\Service::M()->is_field_exists($table, 'hide')) {
|
||||
\Phpcmf\Service::M('table')->add_field($table, 'hide', 'int(5)', 'DEFAULT 0', '');
|
||||
}
|
||||
}
|
||||
list($tpl, $data) = $this->_List();
|
||||
$data['list'] && $data['list'] = \Phpcmf\Service::M('Block', APP_DIR)->getValueAll($data['list']);
|
||||
\Phpcmf\Service::V()->assign($data);
|
||||
\Phpcmf\Service::V()->display($tpl);
|
||||
}
|
||||
|
||||
// 后台添加表单内容
|
||||
public function add() {
|
||||
list($tpl) = $this->_Post(0);
|
||||
\Phpcmf\Service::V()->display($tpl);
|
||||
}
|
||||
|
||||
// 后台修改表单内容
|
||||
public function edit() {
|
||||
list($tpl) = $this->_Post(intval(\Phpcmf\Service::L('Input')->get('id')));
|
||||
\Phpcmf\Service::V()->display($tpl);
|
||||
}
|
||||
|
||||
public function file_edit() {
|
||||
|
||||
$data = \Phpcmf\Service::M('app')->get_config(APP_DIR);
|
||||
|
||||
if (IS_AJAX_POST) {
|
||||
|
||||
$post = \Phpcmf\Service::L('input')->post('data');
|
||||
|
||||
\Phpcmf\Service::M('app')->save_config(APP_DIR, $post);
|
||||
|
||||
$this->_json(1, dr_lang('操作成功'));
|
||||
}
|
||||
|
||||
$page = intval(\Phpcmf\Service::L('input')->get('page'));
|
||||
|
||||
\Phpcmf\Service::V()->assign([
|
||||
'page' => $page,
|
||||
'data' => $data,
|
||||
'form' => dr_form_hidden(['page' => $page]),
|
||||
'remote' => \Phpcmf\Service::C()->get_cache('attachment'),
|
||||
]);
|
||||
\Phpcmf\Service::V()->display('config.html');exit;
|
||||
}
|
||||
|
||||
// 调用代码
|
||||
public function show_index() {
|
||||
|
||||
$data =$this->_Data(intval(\Phpcmf\Service::L('Input')->get('id')));
|
||||
!$data && $this->_json(0, dr_lang('数据#%s不存在', $_GET['id']));
|
||||
|
||||
$key = $data['code'] ? $data['code'] : $data['id'];
|
||||
$code = '// 下面调用标题';
|
||||
$code.= PHP_EOL.'{dr_block(\''.$key.'\', 1)}';
|
||||
$code.= PHP_EOL.'// 下面调用内容';
|
||||
switch ($data['i']) {
|
||||
case 3:
|
||||
$code.= PHP_EOL.'{dr_get_file(dr_block(\''.$key.'\'))}';
|
||||
break;
|
||||
case 4:
|
||||
$code.= PHP_EOL.'{php $block=dr_block(\''.$key.'\');}';
|
||||
$code.= PHP_EOL.'{loop $block.file $i $file}';
|
||||
$code.= PHP_EOL.'文件地址: {dr_get_file($file)}';
|
||||
$code.= PHP_EOL.'文件标题: {$block[\'title\'][$i]}';
|
||||
$code.= PHP_EOL.'文件描述: {$block[\'description\'][$i]}';
|
||||
$code.= PHP_EOL.'{/loop}';
|
||||
break;
|
||||
default:
|
||||
$code.= PHP_EOL.'{dr_block(\''.$key.'\')}';
|
||||
break;
|
||||
}
|
||||
\Phpcmf\Service::V()->assign('code', $code);
|
||||
\Phpcmf\Service::V()->display('block_show.html');
|
||||
exit;
|
||||
}
|
||||
|
||||
// 保存
|
||||
protected function _Save($id = 0, $data = [], $old = [], $func = null, $func2 = null) {
|
||||
return parent::_Save($id, $data, $old, function($id, $data, $old){
|
||||
$data[1]['code'] = dr_safe_replace($data[1]['code']);
|
||||
if (!$data[1]['code']) {
|
||||
return dr_return_data(0, dr_lang('别名不存在'));
|
||||
} elseif (\Phpcmf\Service::M()->table(SITE_ID.'_block')->is_exists($id, 'code', $data[1]['code'])) {
|
||||
return dr_return_data(0, dr_lang('别名已经存在'));
|
||||
}
|
||||
switch (intval($_POST['type'])) {
|
||||
case 0:
|
||||
// 文本内容
|
||||
$data[1]['content'] = '{i-0}:'.($data[0]['value_0'] ? $data[0]['value_0'] : '');
|
||||
break;
|
||||
case 1:
|
||||
// 文本内容
|
||||
$data[1]['content'] = $data[0]['value_1'] ? $data[0]['value_1'] : '';
|
||||
break;
|
||||
case 2:
|
||||
// 丰富文本
|
||||
$data[1]['content'] = '{i-2}:'.($data[0]['value_2'] ? $data[0]['value_2'] : '');
|
||||
break;
|
||||
case 3:
|
||||
// 单文件
|
||||
$data[1]['content'] = '{i-3}:'.($data[0]['value_3'] ? $data[0]['value_3'] : '');
|
||||
break;
|
||||
case 4:
|
||||
// 多文件
|
||||
$data[1]['content'] = '{i-4}:'.($data[0]['value_4'] ? dr_array2string($data[0]['value_4']) : '');
|
||||
break;
|
||||
}
|
||||
return dr_return_data(1, null, $data);
|
||||
}, function ($id, $data, $old) {
|
||||
// 更新缓存
|
||||
\Phpcmf\Service::M('block', APP_DIR)->cache();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 隐藏或者启用
|
||||
public function hidden_edit() {
|
||||
|
||||
$id = (int)\Phpcmf\Service::L('input')->get('id');
|
||||
$row = \Phpcmf\Service::M()->table(SITE_ID.'_block')->get($id);
|
||||
if (!$row) {
|
||||
$this->_json(0, dr_lang('数据不存在'));
|
||||
}
|
||||
|
||||
$v = $row['hide'] ? 0 : 1;
|
||||
\Phpcmf\Service::M()->table(SITE_ID.'_block')->update($id, ['hide' => $v]);
|
||||
\Phpcmf\Service::M('cache')->sync_cache('');
|
||||
|
||||
exit($this->_json(1, dr_lang($v ? '已被禁用' : '已被启用'), ['value' => $v]));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取内容
|
||||
* $id 内容id,新增为0
|
||||
* */
|
||||
protected function _Data($id = 0) {
|
||||
$data = parent::_Data($id);
|
||||
$data = \Phpcmf\Service::M('Block', APP_DIR)->getValue($data);
|
||||
if (!$id) {
|
||||
$data['hide'] = 0;
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
// 后台删除表单内容
|
||||
public function del() {
|
||||
$this->_Del(
|
||||
\Phpcmf\Service::L('Input')->get_post_ids(),
|
||||
null,
|
||||
function ($r) {
|
||||
// 更新缓存
|
||||
\Phpcmf\Service::M('block', APP_DIR)->cache();
|
||||
},
|
||||
\Phpcmf\Service::M()->dbprefix($this->init['table'])
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
<?php namespace Phpcmf\Model\Block;
|
||||
|
||||
// 模型类
|
||||
|
||||
class Block extends \Phpcmf\Model
|
||||
{
|
||||
|
||||
// 格式化结果
|
||||
public function getValueAll($v) {
|
||||
|
||||
foreach ($v as $i => $value) {
|
||||
$v[$i] = $this->getValue($value);
|
||||
}
|
||||
|
||||
return $v;
|
||||
}
|
||||
|
||||
public function getValue($value) {
|
||||
|
||||
if (!$value['content']) {
|
||||
$value['i'] = 0;
|
||||
$value['value_0'] = '';
|
||||
} else {
|
||||
if (preg_match('/\{i-([0-9]+)\}:/U', $value['content'], $preg)) {
|
||||
$value['i'] = intval($preg[1]);
|
||||
$value['value_'.$value['i']] = str_replace((string)$preg[0], '', $value['content']);
|
||||
if ($value['i'] == 4) {
|
||||
$value['value_'.$value['i']] = dr_string2array($value['value_'.$value['i']]);
|
||||
}
|
||||
} else {
|
||||
$value['i'] = 1;
|
||||
$value['value_1'] = $value['content'];
|
||||
}
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 确保当前站点的资料块表存在(替代 Install_site.sql)
|
||||
* 表名:{dbprefix}{siteid}_block
|
||||
*/
|
||||
protected function _ensure_site_table($siteid) {
|
||||
|
||||
$siteid = intval($siteid);
|
||||
$table = $siteid.'_block';
|
||||
$full = $this->dbprefix($table);
|
||||
if ($this->is_table_exists($full)) {
|
||||
return $table;
|
||||
}
|
||||
|
||||
$rt = \Phpcmf\Service::M('table')->create_table(
|
||||
$full,
|
||||
[
|
||||
'id' => 'smallint(5) unsigned NOT NULL AUTO_INCREMENT',
|
||||
'name' => 'varchar(100) NOT NULL COMMENT \'名称\'',
|
||||
'code' => 'varchar(100) NOT NULL COMMENT \'别名\'',
|
||||
'hide' => 'tinyint(1) unsigned NOT NULL COMMENT \'隐藏\'',
|
||||
'content' => 'text NOT NULL COMMENT \'内容\'',
|
||||
],
|
||||
[
|
||||
'PRIMARY KEY (`id`)',
|
||||
'KEY `code` (`code`)',
|
||||
],
|
||||
'资料块表'
|
||||
);
|
||||
if (!$rt['code']) {
|
||||
log_message('error', 'Block 站点表创建失败['.$full.']:'.($rt['msg'] ?? ''));
|
||||
}
|
||||
|
||||
return $table;
|
||||
}
|
||||
|
||||
// 缓存(按站点执行;缺表时自动建表)
|
||||
public function cache($siteid = SITE_ID) {
|
||||
|
||||
$this->_ensure_site_table($siteid);
|
||||
$table = \Phpcmf\Service::M()->dbprefix($siteid.'_block');
|
||||
if (!\Phpcmf\Service::M()->is_field_exists($table, 'hide')) {
|
||||
\Phpcmf\Service::M('table')->add_field($table, 'hide', 'int(5)', 'DEFAULT 0', '');
|
||||
}
|
||||
$data = $this->table($siteid.'_block')->getAll();
|
||||
$cache = [];
|
||||
if ($data) {
|
||||
foreach ($data as $t) {
|
||||
if ($t['hide']) {
|
||||
continue;
|
||||
}
|
||||
$t = $this->getValue($t);
|
||||
if (!$t['code']) {
|
||||
// 填充默认code
|
||||
$t['code'] = $t['id'];
|
||||
$this->table($siteid.'_block')->update($t['id'], [
|
||||
'code' => $t['id'],
|
||||
]);
|
||||
}
|
||||
switch (intval($t['i'])) {
|
||||
case 0:
|
||||
// 文本内容
|
||||
$value = $t['value_0'];
|
||||
break;
|
||||
case 1:
|
||||
// 文本内容
|
||||
$value = $t['value_1'];
|
||||
break;
|
||||
case 2:
|
||||
// 丰富文本
|
||||
$value = htmlspecialchars_decode($t['value_2']);
|
||||
break;
|
||||
case 3:
|
||||
// 单文件
|
||||
$value = $t['value_3'];
|
||||
break;
|
||||
case 4:
|
||||
// 多文件
|
||||
$value = dr_string2array($t['value_4']);
|
||||
break;
|
||||
}
|
||||
$cache[$t['code']] = [
|
||||
1 => $t['name'],
|
||||
0 => $value
|
||||
];
|
||||
}
|
||||
}
|
||||
\Phpcmf\Service::L('cache')->set_file('block-'.$siteid, $cache);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
{template "header.html"}
|
||||
|
||||
|
||||
<div class="note note-danger" id="table-search-tool">
|
||||
<div class="row table-search-tool">
|
||||
<form action="{SELF}" method="get">
|
||||
{dr_form_search_hidden()}
|
||||
<div class="col-md-12 col-sm-12">
|
||||
<label>
|
||||
<select name="field" class="form-control">
|
||||
<option value="id"> Id </option>
|
||||
{loop $field $t}
|
||||
{if $t.ismain}
|
||||
<option value="{$t.fieldname}" {if $param.field==$t.fieldname}selected{/if}>{$t.name}</option>
|
||||
{/if}
|
||||
{/loop}
|
||||
</select>
|
||||
</label>
|
||||
<label><i class="fa fa-caret-right"></i></label>
|
||||
<label><input type="text" class="form-control" placeholder="" value="{$param['keyword']}" name="keyword" /></label>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 col-sm-12">
|
||||
<button type="submit" class="btn blue btn-sm onloading" name="submit" > <i class="fa fa-search"></i> {dr_lang('搜索')}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="right-card-box">
|
||||
|
||||
|
||||
<form class="form-horizontal" role="form" id="myform">
|
||||
{dr_form_hidden()}
|
||||
<div class="table-scrollable">
|
||||
<table class="table table-striped table-bordered table-hover table-checkable dataTable">
|
||||
<thead>
|
||||
<tr class="heading">
|
||||
{if $ci->_is_admin_auth('del')}
|
||||
<th class="myselect">
|
||||
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
|
||||
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
|
||||
<span></span>
|
||||
</label>
|
||||
</th>
|
||||
{/if}
|
||||
<th style="text-align:center" width="90" class="{dr_sorting('id')}" name="id">{dr_lang('Id')}</th>
|
||||
<th width="60" style="text-align:center"> {dr_lang('状态')} </th>
|
||||
<th style="text-align:center" width="80">{dr_lang('类型')}</th>
|
||||
<th width="200" class="{dr_sorting('code')}" name="code">{dr_lang('别名')}</th>
|
||||
<th class="{dr_sorting('name')}" name="name">{dr_lang('名称')}</th>
|
||||
<th>{dr_lang('操作')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{loop $list $t}
|
||||
<tr class="odd gradeX" id="dr_row_{$t.id}">
|
||||
{if $ci->_is_admin_auth('del')}
|
||||
<td class="myselect">
|
||||
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
|
||||
<input type="checkbox" class="checkboxes" name="ids[]" value="{$t.id}" />
|
||||
<span></span>
|
||||
</label>
|
||||
</td>
|
||||
{/if}
|
||||
<td style="text-align:center"> {$t.id} </td>
|
||||
<td style="text-align:center">
|
||||
<a href="javascript:;" onclick="dr_ajax_open_close(this, '{dr_url(APP_DIR.'/home/hidden_edit', ['id'=>$t.id])}', 1);" class="badge badge-{if $t.hide}no{else}yes{/if}"><i class="fa fa-{if $t.no}times{else}check{/if}"></i></a>
|
||||
</td>
|
||||
<td style="text-align:center"> {$type[$t['i']]} </td>
|
||||
<td>{$t.code}</td>
|
||||
<td>{$t.name}</td>
|
||||
<td>
|
||||
{if $ci->_is_admin_auth('edit')}
|
||||
<label><a href="{dr_url($uriprefix.'/edit', ['id'=>$t.id])}" class="btn btn-xs green"> <i class="fa fa-edit"></i> {dr_lang('修改')}</a></label>
|
||||
{/if}
|
||||
<label><a href="javascript:dr_iframe_show('code', '{dr_url($uriprefix.'/show_index', ['id'=>$t.id])}', '400px', '50%');" class="btn btn-xs dark"> <i class="fa fa-code"></i> {dr_lang('调用代码')}</a></label>
|
||||
</td>
|
||||
</tr>
|
||||
{/loop}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="row fc-list-footer table-checkable ">
|
||||
<div class="col-md-5 fc-list-select">
|
||||
{if $ci->_is_admin_auth('del')}
|
||||
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
|
||||
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
|
||||
<span></span>
|
||||
</label>
|
||||
<button type="button" onclick="dr_ajax_option('{dr_url($uriprefix.'/del')}', '{dr_lang('你确定要删除它们吗?')}', 1)" class="btn red btn-sm"> <i class="fa fa-trash"></i> {dr_lang('删除')}</button>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="col-md-7 fc-list-page">
|
||||
{$mypages}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
{template "footer.html"}
|
||||
@@ -0,0 +1,65 @@
|
||||
{template "header.html"}
|
||||
<div class="note note-danger">
|
||||
<p><a href="javascript:dr_update_cache('block', 'system');">{dr_lang('更改数据之后需要更新缓存之后才能生效')}</a></p>
|
||||
</div>
|
||||
<script type="application/javascript">
|
||||
$(function(){
|
||||
dr_set_value({intval($i)});
|
||||
});
|
||||
function dr_set_value(i) {
|
||||
$('#dr_row_value_0').hide();
|
||||
$('#dr_row_value_1').hide();
|
||||
$('#dr_row_value_2').hide();
|
||||
$('#dr_row_value_3').hide();
|
||||
$('#dr_row_value_4').hide();
|
||||
$('#dr_row_value_'+i).show();
|
||||
}
|
||||
</script>
|
||||
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
|
||||
{$form}
|
||||
<div class="portlet bordered light myfbody">
|
||||
<div class="portlet-title">
|
||||
<div class="caption">
|
||||
<span class="caption-subject font-green-sharp">
|
||||
{dr_lang('自定义资料')}
|
||||
</span>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<div class="btn-group">
|
||||
<a class="btn" href="{$reply_url}"> <i class="fa fa-mail-reply"></i> {dr_lang('返回')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet-body">
|
||||
<div class="form-body">
|
||||
|
||||
{$myfield}
|
||||
<div class="form-group {if $id}dr_block_type_html{/if}">
|
||||
<label class="col-md-2 control-label">{dr_lang('类别')}</label>
|
||||
<div class="col-md-9">
|
||||
<div class="mt-radio-inline">
|
||||
{loop $type $ii $name}
|
||||
<label class="mt-radio">
|
||||
<input onclick="dr_set_value({$ii})" {if $ii==$i}checked{/if} name="type" type="radio" value="{$ii}"> {$name}
|
||||
<span></span>
|
||||
</label>
|
||||
{/loop}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{$diyfield}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="portlet-body form myfooter">
|
||||
<div class="form-actions text-center">
|
||||
<button type="button" onclick="dr_ajax_submit('{dr_now_url()}', 'myform', '2000')" class="btn green"> <i class="fa fa-save"></i> {dr_lang('保存内容')}</button>
|
||||
<button type="button" onclick="dr_ajax_submit('{dr_now_url()}', 'myform', '2000', '{$post_url}')" class="btn green"> <i class="fa fa-plus"></i> {dr_lang('保存再添加')}</button>
|
||||
<button type="button" onclick="dr_ajax_submit('{dr_now_url()}', 'myform', '2000', '{$reply_url}')" class="btn yellow"> <i class="fa fa-mail-reply-all"></i> {dr_lang('保存并返回')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{template "footer.html"}
|
||||
@@ -0,0 +1,59 @@
|
||||
{template "header.html"}
|
||||
|
||||
<form class="form-horizontal" method="post" role="form" id="myform">
|
||||
|
||||
<div class="form-body">
|
||||
|
||||
|
||||
<link href="{THEME_PATH}assets/global/plugins/codemirror/lib/codemirror.css" rel="stylesheet" type="text/css" />
|
||||
<link href="{THEME_PATH}assets/global/plugins/codemirror/theme/neat.css" rel="stylesheet" type="text/css" />
|
||||
<link href="{THEME_PATH}assets/global/plugins/codemirror/theme/ambiance.css" rel="stylesheet" type="text/css" />
|
||||
<link href="{THEME_PATH}assets/global/plugins/codemirror/theme/material.css" rel="stylesheet" type="text/css" />
|
||||
<link href="{THEME_PATH}assets/global/plugins/codemirror/theme/neo.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="{THEME_PATH}assets/global/plugins/codemirror/lib/codemirror.js" type="text/javascript"></script>
|
||||
<script src="{THEME_PATH}assets/global/plugins/codemirror/mode/javascript/javascript.js" type="text/javascript"></script>
|
||||
<script src="{THEME_PATH}assets/global/plugins/codemirror/mode/htmlmixed/htmlmixed.js" type="text/javascript"></script>
|
||||
<script src="{THEME_PATH}assets/global/plugins/codemirror/mode/css/css.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
var ComponentsCodeEditors = function () {
|
||||
|
||||
var handleDemo1 = function () {
|
||||
var myTextArea = document.getElementById('code_editor_demo_1');
|
||||
var myCodeMirror = CodeMirror.fromTextArea(myTextArea, {
|
||||
lineNumbers: false,
|
||||
matchBrackets: true,
|
||||
styleActiveLine: true,
|
||||
theme:"neo",
|
||||
mode: 'css',
|
||||
readOnly: true
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
//main function to initiate the module
|
||||
init: function () {
|
||||
handleDemo1();
|
||||
}
|
||||
};
|
||||
|
||||
}();
|
||||
|
||||
jQuery(document).ready(function() {
|
||||
ComponentsCodeEditors.init();
|
||||
});
|
||||
</script>
|
||||
<div class="form-group ">
|
||||
<div class="col-xs-12">
|
||||
<textarea id="code_editor_demo_1">{$code}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<style>
|
||||
.CodeMirror {
|
||||
height:180px;
|
||||
}
|
||||
</style>
|
||||
{template "footer.html"}
|
||||
@@ -0,0 +1,21 @@
|
||||
{template "header.html"}
|
||||
|
||||
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
|
||||
{$form}
|
||||
<div class="form-body">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{dr_lang('文件存储策略')}</label>
|
||||
<div class="col-md-9">
|
||||
<label><select class="form-control" name="data[file]">
|
||||
<option value="0"> {dr_lang('默认存储')} </option>
|
||||
{loop $remote $i $t}
|
||||
<option value="{$i}" {php echo ($i == $data['file'] ? 'selected' : '');}> {dr_lang($t['name'])} </option>
|
||||
{/loop}
|
||||
</select></label>
|
||||
<span class="help-block">资料中的文件存储位置选择</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{template "footer.html"}
|
||||
Reference in New Issue
Block a user