提交 40aac0af 编写于 作者: ModStart's avatar ModStart

develop

上级 95c0dd3b
......@@ -33,9 +33,17 @@ class ConfigController extends Controller
public function agreement(AdminConfigBuilder $builder)
{
$builder->pageTitle('用户协议');
$builder->switch('Member_AgreementEnable', '用户使用协议开启');
$builder->text('Member_AgreementTitle', '用户使用协议标题')->help('默认为 用户使用协议');
$builder->richHtml('Member_AgreementContent', '用户使用协议内容');
$builder->switch('Member_AgreementEnable', '用户使用协议开启')
->when('=', true, function ($builder) {
$builder->text('Member_AgreementTitle', '用户使用协议标题')->help('默认为 用户使用协议');
$builder->richHtml('Member_AgreementContent', '用户使用协议内容');
});
$builder->switch('Member_PrivacyEnable', '用户隐私协议开启')
->when('=', true, function ($builder) {
$builder->text('Member_PrivacyTitle', '用户隐私协议标题')->help('默认为 用户隐私协议');
$builder->richHtml('Member_PrivacyContent', '用户隐私协议内容');
});
$builder->formClass('wide');
return $builder->perform();
}
......
......@@ -41,5 +41,6 @@ class MemberGroupController extends Controller
->hookSaved(function (Form $form) {
MemberGroupUtil::clearCache();
});
$builder->repository()->setSortColumn('id');
}
}
用户隐私协议配置,用户系统上周增长报表
---
- 新增:用户系统上周增长报表
- 新增:用户隐私协议配置
- 优化:地址选择模块依赖提示
- 修复:用户分组编辑排序字段问题
@extends($_viewFrame)
@section('pageTitleMain'){{modstart_config('Member_AgreementTitle','用户使用协议')}}@endsection
@section('pageKeywords')用户使用协议@endsection
@section('pageDescription')用户使用协议@endsection
@section('pageTitleMain'){{$pageTitle}}@endsection
@section('pageKeywords'){{$pageTitle}}@endsection
@section('pageDescription'){{$pageTitle}}@endsection
@section('body')
......@@ -11,10 +11,10 @@
<div class="head"></div>
<div class="body">
<div class="ub-article">
<h1 class="ub-text-center">{{modstart_config('Member_AgreementTitle','用户使用协议')}}</h1>
<h1 class="ub-text-center">{{$pageTitle}}</h1>
<div class="attr"></div>
<div class="content ub-html">
{!! modstart_config('Member_AgreementContent') !!}
{!! $pageContent !!}
</div>
</div>
</div>
......
......@@ -159,11 +159,16 @@
<button type="submit" class="btn btn-primary btn-lg btn-block">提交注册</button>
</div>
</div>
@if(modstart_config('Member_AgreementEnable',false))
@if(modstart_config('Member_AgreementEnable',false)||modstart_config('Member_PrivacyEnable',false))
<div class="line">
<div class="field">
<input type="checkbox" name="agreement" value="1" checked class="tw-align-middle" />
<a href="{{modstart_web_url('member/agreement')}}" target="_blank">{{modstart_config('Member_AgreementTitle','用户使用协议')}}</a>
@if(modstart_config('Member_AgreementEnable',false))
<a href="{{modstart_web_url('member/agreement')}}" target="_blank">{{modstart_config('Member_AgreementTitle','用户使用协议')}}</a>
@endif
@if(modstart_config('Member_PrivacyEnable',false))
<a href="{{modstart_web_url('member/privacy')}}" target="_blank">{{modstart_config('Member_PrivacyTitle','用户隐私协议')}}</a>
@endif
</div>
</div>
@endif
......
......@@ -18,6 +18,7 @@ use ModStart\Field\AutoRenderedFieldValue;
use ModStart\Form\Form;
use ModStart\Grid\Grid;
use ModStart\Grid\GridFilter;
use ModStart\Module\ModuleManager;
use ModStart\Repository\Filter\RepositoryFilter;
use Module\Member\Auth\MemberUser;
use Module\Member\Support\MemberLoginCheck;
......@@ -68,7 +69,13 @@ class MemberAddressController extends MemberFrameController implements MemberLog
$builder->pageTitle(($id ? '修改' : '增加') . '地址');
$builder->text('name', '姓名')->required();
$builder->text('phone', '手机号')->required();
$builder->areaChina('area', '省市地区')->required();
if (ModuleManager::isModuleEnabled('Area')) {
$builder->areaChina('area', '省市地区')->required();
} else {
$html = "<div class='tw-bg-gray-200 tw-rounded tw-px-2'>省市地区需要依赖 <a href='https://modstart.com/m/Area' target='_blank'>Area</a> 模块</div>";
$builder->html('area', '省市地区')->html($html)->addable(true)->required();
}
$builder->textarea('detail', '详细地址')->required();
$builder->text('post', '邮政编码');
return $builder->perform(ArrayUtil::keepKeys($record, ['name', 'phone', 'area', 'detail', 'post']),
......
......@@ -10,6 +10,17 @@ class PageController extends ModuleBaseController
{
public function agreement()
{
return $this->view('member.agreement');
return $this->view('member.page', [
'pageTitle' => modstart_config('Member_AgreementTitle'),
'pageContent' => modstart_config('Member_AgreementContent'),
]);
}
public function privacy()
{
return $this->view('member.page', [
'pageTitle' => modstart_config('Member_PrivacyTitle'),
'pageContent' => modstart_config('Member_PrivacyContent'),
]);
}
}
......@@ -7,6 +7,7 @@ $router->group([
], function () use ($router) {
$router->match(['get', 'post'], 'member/agreement', 'PageController@agreement');
$router->match(['get', 'post'], 'member/privacy', 'PageController@privacy');
$router->match(['get', 'post'], 'login', 'AuthController@login');
$router->match(['get', 'post'], 'login/captcha', 'AuthController@loginCaptcha');
......
......@@ -8,7 +8,7 @@
"require": [
"Vendor:>=1.9.0"
],
"version": "2.1.0",
"version": "2.2.0",
"modstartVersion": ">=1.4.0",
"author": "官方",
"description": "提供基础的用户管理服务",
......
模块预检失败增加查看链接
---
- 新增:模块白名单安装控制
- 优化:模块预检失败增加查看链接
......@@ -7,6 +7,7 @@ namespace Module\ModuleStore\Util;
use Chumper\Zipper\Zipper;
use Illuminate\Support\Facades\Cache;
use ModStart\Core\Exception\BizException;
use ModStart\Core\Input\InputPackage;
use ModStart\Core\Input\Response;
use ModStart\Core\Util\CurlUtil;
use ModStart\Core\Util\FileUtil;
......@@ -20,8 +21,13 @@ class ModuleStoreUtil
public static function remoteModuleData()
{
return Cache::remember('ModuleStore_Modules', 60, function () {
return CurlUtil::getJSONData(self::REMOTE_BASE . '/api/store/module');
$input = InputPackage::buildFromInput();
$memberUserId = $input->getInteger('memberUserId');
$apiToken = $input->getTrimString('apiToken');
return Cache::remember('ModuleStore_Modules:' . $memberUserId, 60, function () use ($apiToken) {
return CurlUtil::getJSONData(self::REMOTE_BASE . '/api/store/module', [
'api_token' => $apiToken,
]);
});
}
......@@ -140,7 +146,7 @@ class ModuleStoreUtil
}
} else {
$require['success'] = false;
$require['resolve'] = "请先安装 $require[name]";
$require['resolve'] = "请先安装 $require[name] <a href='https://modstart.com/m/$m' class='ub-text-white tw-underline' target='_blank'>[点击查看]</a>";
}
$requires[] = $require;
}
......
......@@ -431,6 +431,14 @@ export default {
installVersionModule: null,
}
},
watch: {
memberUser: {
handler(n, o) {
this.doLoad()
},
deep: true
}
},
computed: {
filterModules() {
const results = this.modules.filter(module => {
......@@ -609,7 +617,10 @@ export default {
}
},
doLoad() {
this.$api.post(this.$url.admin('module_store/all'), {}, res => {
this.$api.post(this.$url.admin('module_store/all'), {
memberUserId: this.memberUser.id,
apiToken: this.storeApiToken,
}, res => {
this.loading = false
this.categories = res.data.categories
this.types = res.data.types
......
IDManager新增清除随机Key功能
---
......
......@@ -395,7 +395,7 @@ class DataManager
/**
* 准备文件到本地可用
* @param $path string 文件路径 /data/xxxxxxx.xxx /data_temp/xxxxxxx.xxx http://www.example.com/data/xxxxx.xxx
* @param $path string 文件路径 /data/xxxxxxx.xxx data_temp/xxxxxx.xxx /data_temp/xxxxxxx.xxx http://www.example.com/data/xxxxx.xxx
* @param $option
* @return array
*/
......
......@@ -130,7 +130,8 @@ class UeditorManager
if (!$ignoreCatch && preg_match('/^(http|ftp|https):\\/\\//i', $f)) {
$ext = FileUtil::extension($f);
if (in_array('.' . $ext, $config ['catcherAllowFiles'])) {
if ($imageContent = CurlUtil::getRaw($f)) {
$imageContent = CurlUtil::getRaw($f);
if ($imageContent) {
$ret = DataManager::upload('image', L('Image') . '.' . $ext, $imageContent, $option);
if ($ret['code']) {
$ret['state'] = $ret['msg'];
......
......@@ -10,7 +10,7 @@ class Html extends AbstractField
{
protected $html = '';
protected $plain = false;
protected $isLayoutField=true;
protected $isLayoutField = true;
public function html($html)
{
......@@ -34,9 +34,12 @@ class Html extends AbstractField
if ($this->plain) {
return $this->html;
}
$rules = $this->rules();
$requiredRuleHtml = str_contains($rules, 'required') ? '<span class="ub-text-danger ub-text-bold">*</span>' : '';
return <<<EOT
<div class="line">
<div class="label">
{$requiredRuleHtml}
{$this->label}:
</div>
<div class="field">
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册