diff --git a/module/admin/control.php b/module/admin/control.php
index da92dc4584..56dd63de9c 100755
--- a/module/admin/control.php
+++ b/module/admin/control.php
@@ -115,39 +115,42 @@ class admin extends control
{
$response = $this->admin->registerByAPI();
$response = json_decode($response);
- if($response->result == 'success')
+ if($response->result == 'fail')
{
- $user = $response->data;
- $data['community'] = $user->account;
- $data['ztPrivateKey'] = $user->private;
+ $message = '';
+ if(is_string($response->message))
+ {
+ $message = $response->message;
+ }
+ else
+ {
+ foreach($response->message as $item) $message .= is_array($item) ? join('\n', $item) . '\n' : $item . '\n';
+ }
+ $message = str_replace(array('', ''), '', $message);
- $this->loadModel('setting');
- $this->setting->deleteItems('owner=system&module=common§ion=global&key=community');
- $this->setting->deleteItems('owner=system&module=common§ion=global&key=ztPrivateKey');
- $this->setting->setItems('system.common.global', $data);
-
- echo js::alert($this->lang->admin->registerNotice->success);
- if($from == 'admin') return print(js::locate(inlink('index'), 'parent'));
- if($from == 'mail') return print(js::locate($this->createLink('mail', 'ztcloud'), 'parent'));
+ return $this->send(array('result' => 'fail', 'message' => $message));
}
- $alertMessage = '';
- if(is_string($response->message))
- {
- $alertMessage = $response->message;
- }
- else
- {
- foreach($response->message as $item) $alertMessage .= is_array($item) ? join('\n', $item) . '\n' : $item . '\n';
- }
- $alertMessage = str_replace(array('', ''), '', $alertMessage);
- return print(js::alert($alertMessage));
+ $user = $response->data;
+ $data['community'] = $user->account;
+ $data['ztPrivateKey'] = $user->private;
+
+ $this->loadModel('setting');
+ $this->setting->deleteItems('owner=system&module=common§ion=global&key=community');
+ $this->setting->deleteItems('owner=system&module=common§ion=global&key=ztPrivateKey');
+ $this->setting->setItems('system.common.global', $data);
+
+ $locate = true;
+ if($from == 'admin') $locate = inlink('index');
+ if($from == 'mail') $locate = $this->createLink('mail', 'ztcloud');
+
+ return $this->send(array('result' => 'success', 'message' => $this->lang->admin->registerNotice->success, 'load' => $locate));
}
- $this->view->title = $this->lang->admin->registerNotice->caption;
- $this->view->register = $this->admin->getRegisterInfo();
- $this->view->sn = $this->config->global->sn;
- $this->view->from = $from;
+ $this->view->title = $this->lang->admin->registerNotice->caption;
+ $this->view->register = $this->admin->getRegisterInfo();
+ $this->view->sn = $this->config->global->sn;
+ $this->view->from = $from;
$this->display();
}
@@ -164,30 +167,27 @@ class admin extends control
{
$response = $this->admin->bindByAPI();
$response = json_decode($response);
- if($response->result == 'success')
- {
- $user = $response->data;
- $data['community'] = $user->account;
- $data['ztPrivateKey'] = $user->private;
- $this->loadModel('setting');
- $this->setting->deleteItems('owner=system&module=common§ion=global&key=community');
- $this->setting->deleteItems('owner=system&module=common§ion=global&key=ztPrivateKey');
- $this->setting->setItems('system.common.global', $data);
+ if($response->result == 'fail') return $this->send($response);
- echo js::alert($this->lang->admin->bind->success);
- if($from == 'admin') return print(js::locate(inlink('index'), 'parent'));
- if($from == 'mail') return print(js::locate($this->createLink('mail', 'ztcloud'), 'parent'));
- }
- else
- {
- if($response->result == 'fail') return print(js::alert($response->message));
- }
+ $user = $response->data;
+ $data['community'] = $user->account;
+ $data['ztPrivateKey'] = $user->private;
+
+ $this->loadModel('setting')->deleteItems('owner=system&module=common§ion=global&key=community');
+ $this->setting->deleteItems('owner=system&module=common§ion=global&key=ztPrivateKey');
+ $this->setting->setItems('system.common.global', $data);
+
+ $locate = true;
+ if($from == 'admin') $locate = inlink('index');
+ if($from == 'mail') $locate = $this->createLink('mail', 'ztcloud');
+
+ return $this->send(array('result' => 'success', 'message' => $this->lang->admin->bind->success, 'load' => $locate));
}
- $this->view->title = $this->lang->admin->bind->caption;
- $this->view->sn = $this->config->global->sn;
- $this->view->from = $from;
+ $this->view->title = $this->lang->admin->bind->caption;
+ $this->view->sn = $this->config->global->sn;
+ $this->view->from = $from;
$this->display();
}
diff --git a/module/admin/js/register.ui.js b/module/admin/js/register.ui.js
new file mode 100644
index 0000000000..7bc6f90b98
--- /dev/null
+++ b/module/admin/js/register.ui.js
@@ -0,0 +1,21 @@
+function sendCaptcha(event, type)
+{
+ const $target = $(event.target);
+ const url = $target.data('url');
+ const data = [];
+
+ data[type] = $target.closest('.input-group').find('input').val();
+
+ $.post(url, data, function(response)
+ {
+ if(response.result == 'success')
+ {
+ zui.Messager.show({content: response.message, type: 'success', time: 1500});
+ }
+ else
+ {
+ zui.Modal.alert(response.message);
+ }
+ }, 'json')
+ return false;
+};
diff --git a/module/admin/ui/register.html.php b/module/admin/ui/register.html.php
new file mode 100644
index 0000000000..22be39fb56
--- /dev/null
+++ b/module/admin/ui/register.html.php
@@ -0,0 +1,154 @@
+
+ * @package admin
+ * @link https://www.zentao.net
+ */
+namespace zin;
+
+$canBind = hasPriv('admin', 'bind');
+
+$account = zget($config->global, 'community', '');
+if($account == 'na') $account = '';
+
+$buildCaptchRow = function($type) : wg
+{
+ global $lang;
+ return formRow
+ (
+ formGroup
+ (
+ setClass('w-1/2'),
+ set::label($lang->user->$type),
+ set::required(true),
+ inputGroup
+ (
+ input
+ (
+ set::name($type)
+ ),
+ span
+ (
+ setClass('input-group-btn'),
+ button
+ (
+ on::click("sendCaptcha(event, '{$type}')"),
+ setClass('btn'),
+ set(array('data-url' => inlink('ajaxSendCode', "type={$type}"))),
+ $lang->admin->getCaptcha
+ )
+ )
+ )
+ ),
+ formGroup
+ (
+ setClass('w-1/2'),
+ set::label($lang->admin->captcha),
+ set::name("{$type}Code"),
+ set::required(true)
+ )
+ );
+};
+
+$buildHidden = function($sn, $siteName): array
+{
+ $items[] = input
+ (
+ set::type('hidden'),
+ set::name('sn'),
+ set::value($sn)
+ );
+ $items[] = input
+ (
+ set::type('hidden'),
+ set::name($siteName),
+ set::value(common::getSysURL())
+ );
+ return $items;
+};
+
+div
+(
+ setClass('flex'),
+ col
+ (
+ setClass($canBind ? 'pr-2 w-1/2' : 'w-full'),
+ formPanel
+ (
+ setClass('w-full'),
+ set::actions(array('submit')),
+ set::title($lang->admin->registerNotice->common),
+ set::submitBtnText($lang->admin->registerNotice->submit),
+ formGroup
+ (
+ set::label($lang->user->account),
+ set::name('account'),
+ set::placeholder($lang->admin->registerNotice->lblAccount),
+ set::required(true)
+ ),
+ formGroup
+ (
+ set::label($lang->user->realname),
+ set::name('realname'),
+ set::required(true)
+ ),
+ formGroup
+ (
+ set::label($lang->user->company),
+ set::name('company'),
+ set::value($register->company),
+ set::required(true)
+ ),
+ empty($config->isINT) ? $buildCaptchRow('mobile') : null,
+ $buildCaptchRow('email'),
+ formGroup
+ (
+ set::label($lang->user->password),
+ set::control('password'),
+ set::name('password1'),
+ set::placeholder($lang->admin->registerNotice->lblPasswd),
+ set::required(true)
+ ),
+ formGroup
+ (
+ set::label($lang->user->password2),
+ set::control('password'),
+ set::name('password2'),
+ set::required(true)
+ ),
+ $buildHidden($sn, 'bindSite')
+ )
+ ),
+ $canBind ? col
+ (
+ setClass('pl-2 w-1/2'),
+ formPanel
+ (
+ setClass('w-full'),
+ set::actions(array('submit')),
+ set::title($lang->admin->registerNotice->bind),
+ set::url(inlink('bind', "from={$from}")),
+ formGroup
+ (
+ setClass('w-1/2'),
+ set::label($lang->user->account),
+ set::name('account'),
+ set::value($account)
+ ),
+ formGroup
+ (
+ setClass('w-1/2'),
+ set::label($lang->user->password),
+ set::control('password'),
+ set::name('password')
+ ),
+ $buildHidden($sn, 'site')
+ )
+ ) : null
+);
+
+render();