ComposerUpdate 增加多语言支持

This commit is contained in:
Anyon 2019-12-30 14:42:24 +08:00
parent 4a6040edb9
commit 19c01d7ab8
14 changed files with 110 additions and 38 deletions

18
composer.lock generated
View File

@ -74,16 +74,16 @@
},
{
"name": "league/flysystem",
"version": "1.0.61",
"version": "1.0.62",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
"reference": "4fb13c01784a6c9f165a351e996871488ca2d8c9"
"reference": "14dd5d7dff5fbc29ca9a2a53ff109760e40d91a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4fb13c01784a6c9f165a351e996871488ca2d8c9",
"reference": "4fb13c01784a6c9f165a351e996871488ca2d8c9",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/14dd5d7dff5fbc29ca9a2a53ff109760e40d91a0",
"reference": "14dd5d7dff5fbc29ca9a2a53ff109760e40d91a0",
"shasum": "",
"mirrors": [
{
@ -160,7 +160,7 @@
"sftp",
"storage"
],
"time": "2019-12-08T21:46:50+00:00"
"time": "2019-12-29T14:46:55+00:00"
},
{
"name": "league/flysystem-cached-adapter",
@ -909,12 +909,12 @@
"source": {
"type": "git",
"url": "https://github.com/zoujingli/ThinkLibrary.git",
"reference": "f231c9bb248fa6c1bd0f5e7c569f350e98c7ac80"
"reference": "250e1994a747d37fb3c3be3804dac69f26694c6b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/f231c9bb248fa6c1bd0f5e7c569f350e98c7ac80",
"reference": "f231c9bb248fa6c1bd0f5e7c569f350e98c7ac80",
"url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/250e1994a747d37fb3c3be3804dac69f26694c6b",
"reference": "250e1994a747d37fb3c3be3804dac69f26694c6b",
"shasum": "",
"mirrors": [
{
@ -958,7 +958,7 @@
],
"description": "ThinkPHP v6.0 Development Library",
"homepage": "http://framework.thinkadmin.top",
"time": "2019-12-27T01:48:44+00:00"
"time": "2019-12-30T03:58:19+00:00"
},
{
"name": "zoujingli/wechat-developer",

View File

@ -69,17 +69,17 @@
},
{
"name": "league/flysystem",
"version": "1.0.61",
"version_normalized": "1.0.61.0",
"version": "1.0.62",
"version_normalized": "1.0.62.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
"reference": "4fb13c01784a6c9f165a351e996871488ca2d8c9"
"reference": "14dd5d7dff5fbc29ca9a2a53ff109760e40d91a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4fb13c01784a6c9f165a351e996871488ca2d8c9",
"reference": "4fb13c01784a6c9f165a351e996871488ca2d8c9",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/14dd5d7dff5fbc29ca9a2a53ff109760e40d91a0",
"reference": "14dd5d7dff5fbc29ca9a2a53ff109760e40d91a0",
"shasum": "",
"mirrors": [
{
@ -115,7 +115,7 @@
"spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
"srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
},
"time": "2019-12-08T21:46:50+00:00",
"time": "2019-12-29T14:46:55+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -935,12 +935,12 @@
"source": {
"type": "git",
"url": "https://github.com/zoujingli/ThinkLibrary.git",
"reference": "f231c9bb248fa6c1bd0f5e7c569f350e98c7ac80"
"reference": "250e1994a747d37fb3c3be3804dac69f26694c6b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/f231c9bb248fa6c1bd0f5e7c569f350e98c7ac80",
"reference": "f231c9bb248fa6c1bd0f5e7c569f350e98c7ac80",
"url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/250e1994a747d37fb3c3be3804dac69f26694c6b",
"reference": "250e1994a747d37fb3c3be3804dac69f26694c6b",
"shasum": "",
"mirrors": [
{
@ -956,7 +956,7 @@
"ext-json": "*",
"topthink/framework": "^6.0"
},
"time": "2019-12-27T01:48:44+00:00",
"time": "2019-12-30T03:58:19+00:00",
"type": "library",
"extra": {
"think": {

16
vendor/league/flysystem/SECURITY.md vendored Normal file
View File

@ -0,0 +1,16 @@
# Security Policy
## Supported Versions
| Version | Supported |
| ------- | ------------------ |
| 1.0.x | :white_check_mark: |
| 2.0.x | :x: |
## Reporting a Vulnerability
When you've encountered a security vulnerability, please disclose it securely.
The security process is described at:
[https://flysystem.thephpleague.com/docs/security/](https://flysystem.thephpleague.com/docs/security/)

View File

@ -1,5 +1,6 @@
{
"name": "league/flysystem",
"type": "library",
"description": "Filesystem abstraction: Many filesystems, one API.",
"keywords": [
"filesystem", "filesystems", "files", "storage", "dropbox", "aws",

View File

@ -267,12 +267,16 @@ class Util
*
* @param resource $resource
*
* @return int stream size
* @return int|null stream size
*/
public static function getStreamSize($resource)
{
$stat = fstat($resource);
if ( ! is_array($stat) || ! isset($stat['size'])) {
return null;
}
return $stat['size'];
}

2
vendor/services.php vendored
View File

@ -1,5 +1,5 @@
<?php
// This file is automatically generated at:2019-12-27 11:17:48
// This file is automatically generated at:2019-12-30 14:41:46
declare (strict_types = 1);
return array (
0 => 'think\\app\\Service',

View File

@ -60,7 +60,7 @@ abstract class Controller extends \stdClass
* 表单CSRF验证失败提示
* @var string
*/
public $csrf_message = '表单令牌验证失败,请刷新页面再试!';
public $csrf_message;
/**
* Controller constructor.
@ -82,6 +82,9 @@ abstract class Controller extends \stdClass
*/
protected function initialize()
{
if (empty($this->csrf_message)) {
$this->csrf_message = lang('think_library_csrf_error');
}
}
/**

View File

@ -32,6 +32,11 @@ class Library extends Service
*/
public function register()
{
// 读取中文语言
if ($this->app->lang->getLangSet() === 'zh-cn') {
$this->app->lang->load(__DIR__ . '/lang/zh-cn.php', 'zh-cn');
}
// 判断访问模式
if ($this->app->request->isCli()) {
if (empty($_SERVER['REQUEST_URI']) && isset($_SERVER['argv'][1])) {
$this->app->request->setPathinfo($_SERVER['argv'][1]);
@ -56,9 +61,9 @@ class Library extends Service
} elseif (AdminService::instance()->check()) {
return $next($request)->code(200)->header($header);
} elseif (AdminService::instance()->isLogin()) {
return json(['code' => 0, 'msg' => '抱歉,没有访问该操作的权限!'])->header($header);
return json(['code' => 0, 'msg' => lang('think_library_not_auth')])->header($header);
} else {
return json(['code' => 0, 'msg' => '抱歉,需要登录获取访问权限!', 'url' => url('@admin/login')->build()])->header($header);
return json(['code' => 0, 'msg' => lang('think_library_not_login'), 'url' => url('@admin/login')->build()])->header($header);
}
}, 'route');
}

View File

@ -77,9 +77,9 @@ class DeleteHelper extends Helper
}
// 回复前端结果
if ($result !== false) {
$this->controller->success('数据删除成功!', '');
$this->controller->success(lang('think_library_delete_success'), '');
} else {
$this->controller->error('数据删除失败, 请稍候再试!');
$this->controller->error(lang('think_library_delete_error'));
}
}

View File

@ -91,8 +91,11 @@ class FormHelper extends Helper
if (false !== $this->controller->callback('_form_filter', $data, $this->where)) {
$result = data_save($this->query, $data, $this->field, $this->where);
if (false !== $this->controller->callback('_form_result', $result, $data)) {
if ($result !== false) $this->controller->success('恭喜, 数据保存成功!', '');
$this->controller->error('数据保存失败, 请稍候再试!');
if ($result !== false) {
$this->controller->success(lang('think_library_form_success'));
} else {
$this->controller->error(lang('think_library_form_error'));
}
}
return $result;
}

View File

@ -87,19 +87,21 @@ class PageHelper extends Helper
[$options, $query] = ['', $this->app->request->get()];
$pager = $this->query->paginate(['list_rows' => $limit, 'query' => $query], $this->total);
foreach ([10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200] as $num) {
[$query['limit'], $query['page'], $selected] = [$num, 1, $limit === $num ? 'selected' : ''];
[$query['limit'], $query['page'], $selects] = [$num, 1, $limit === $num ? 'selected' : ''];
if (stripos($this->app->request->get('spm', '-'), 'm-') === 0) {
$url = url('@admin') . '#' . $this->app->request->baseUrl() . '?' . urldecode(http_build_query($query));
} else {
$url = $this->app->request->baseUrl() . '?' . urldecode(http_build_query($query));
}
$options .= "<option data-num='{$num}' value='{$url}' {$selected}>{$num}</option>";
$options .= "<option data-num='{$num}' value='{$url}' {$selects}>{$num}</option>";
}
$html = "<div class='pagination-container nowrap'><span>共 {$pager->total()} 条记录,每页显示 <select onchange='location.href=this.options[this.selectedIndex].value' data-auto-none>{$options}</select> 条,共 {$pager->lastPage()} 页当前显示第 {$pager->currentPage()} 页。</span>{$pager->render()}</div>";
$selects = "<select onchange='location.href=this.options[this.selectedIndex].value' data-auto-none>{$options}</select>";
$pagetext = lang('think_library_page_html', [$pager->total(), $selects, $pager->lastPage(), $pager->currentPage()]);
$pagehtml = "<div class='pagination-container nowrap'><span>{$pagetext}</span>{$pager->render()}</div>";
if (stripos($this->app->request->get('spm', '-'), 'm-') === 0) {
$this->controller->assign('pagehtml', preg_replace('|href="(.*?)"|', 'data-open="$1" onclick="return false" href="$1"', $html));
$this->controller->assign('pagehtml', preg_replace('|href="(.*?)"|', 'data-open="$1" onclick="return false" href="$1"', $pagehtml));
} else {
$this->controller->assign('pagehtml', $html);
$this->controller->assign('pagehtml', $pagehtml);
}
$result = ['page' => ['limit' => intval($limit), 'total' => intval($pager->total()), 'pages' => intval($pager->lastPage()), 'current' => intval($pager->currentPage())], 'list' => $pager->items()];
} else {
@ -126,11 +128,11 @@ class PageHelper extends Helper
$map = [$pk => $this->app->request->post($pk, 0)];
$data = ['sort' => intval($this->app->request->post('sort', 0))];
if ($this->app->db->table($this->query->getTable())->where($map)->update($data) !== false) {
$this->controller->success('列表排序修改成功!', '');
$this->controller->success(lang('think_library_sort_success'), '');
}
}
}
$this->controller->error('列表排序修改失败,请稍候再试!');
$this->controller->error($message ?? lang('think_library_sort_error'));
}
}

View File

@ -82,9 +82,9 @@ class SaveHelper extends Helper
}
// 回复前端结果
if ($result !== false) {
$this->controller->success('数据更新成功!', '');
$this->controller->success(lang('think_library_save_success'), '');
} else {
$this->controller->error('数据更新失败, 请稍候再试!');
$this->controller->error(lang('think_library_save_error'));
}
}

View File

@ -0,0 +1,29 @@
<?php
// +----------------------------------------------------------------------
// | Library for ThinkAdmin
// +----------------------------------------------------------------------
// | 版权所有 2014~2020 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
// +----------------------------------------------------------------------
// | 官方网站: https://gitee.com/zoujingli/ThinkLibrary
// +----------------------------------------------------------------------
// | 开源协议 ( https://mit-license.org )
// +----------------------------------------------------------------------
// | gitee 仓库地址 https://gitee.com/zoujingli/ThinkLibrary
// | github 仓库地址 https://github.com/zoujingli/ThinkLibrary
// +----------------------------------------------------------------------
return [
'think_library_not_auth' => '抱歉,没有访问该操作的权限!',
'think_library_not_login' => '抱歉,需要登录获取访问权限!',
'think_library_delete_success' => '恭喜, 数据删除成功!',
'think_library_delete_error' => '抱歉,数据删除失败, 请稍候再试!',
'think_library_form_success' => '恭喜, 数据保存成功!',
'think_library_form_error' => '抱歉,数据保存失败, 请稍候再试!',
'think_library_save_success' => '恭喜,数据更新成功!',
'think_library_save_error' => '抱歉,数据更新失败, 请稍候再试!',
'think_library_sort_success' => '恭喜,列表排序修改成功!',
'think_library_sort_error' => '抱歉,列表排序修改失败,请稍候再试!',
'think_library_page_html' => '共 %s 条记录,每页显示 %s 条,共 %s 页当前显示第 %s 页。',
'think_library_csrf_error' => '表单令牌验证失败,请刷新页面再试!',
];

View File

@ -41,7 +41,16 @@ class AdminService extends Service
*/
public function getUserId()
{
return $this->app->session->get('user.id') ?? 0;
return $this->app->session->get('user.id', 0);
}
/**
* 获取后台用户名称
* @return string
*/
public function getUserName()
{
return $this->app->session->get('user.username', '');
}
/**