todo->all . " {$todoCount}", '', "class='btn btn-link'");?>
@@ -34,10 +37,10 @@
diff --git a/module/api/config.php b/module/api/config.php
index e3cc572035..3f9aac57e0 100644
--- a/module/api/config.php
+++ b/module/api/config.php
@@ -27,3 +27,29 @@ $config->api->editor->edit = array('id' => 'desc', 'tools' => 'simpleTo
$config->api->editor->createRelease = array('id' => 'desc', 'tools' => 'simpleTools');
$config->api->editor->createstruct = array('id' => 'desc', 'tools' => 'simpleTools');
$config->api->editor->editstruct = array('id' => 'desc', 'tools' => 'simpleTools');
+
+global $lang;
+$config->api->search['module'] = 'api';
+$config->api->search['fields']['title'] = $lang->api->title;
+$config->api->search['fields']['id'] = $lang->api->id;
+$config->api->search['fields']['lib'] = $lang->api->lib;
+$config->api->search['fields']['path'] = $lang->api->path;
+$config->api->search['fields']['method'] = $lang->api->method;
+$config->api->search['fields']['status'] = $lang->api->status;
+$config->api->search['fields']['addedBy'] = $lang->api->addedBy;
+$config->api->search['fields']['addedDate'] = $lang->api->addedDate;
+$config->api->search['fields']['editedBy'] = $lang->api->editedBy;
+$config->api->search['fields']['editedDate'] = $lang->api->editedDate;
+$config->api->search['fields']['version'] = $lang->api->version;
+
+$config->api->search['params']['title'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
+$config->api->search['params']['id'] = array('operator' => '=', 'control' => 'input', 'values' => '');
+$config->api->search['params']['lib'] = array('operator' => '=', 'control' => 'select', 'values' => '');
+$config->api->search['params']['path'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
+$config->api->search['params']['method'] = array('operator' => '=', 'control' => 'select', 'values' => array('' => '') + $lang->api->methodOptions);
+$config->api->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => array('' => '') + $lang->api->statusOptions);
+$config->api->search['params']['addedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
+$config->api->search['params']['addedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
+$config->api->search['params']['editedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
+$config->api->search['params']['editedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
+$config->api->search['params']['version'] = array('operator' => '>=', 'control' => 'input', 'values' => '');
diff --git a/module/api/control.php b/module/api/control.php
index 36323d864c..f078d23bdf 100755
--- a/module/api/control.php
+++ b/module/api/control.php
@@ -28,10 +28,12 @@ class api extends control
* @param int $version
* @param int $release
* @param int $appendLib
+ * @param int $queryID
+ * @param string $param
* @access public
* @return void
*/
- public function index($libID = 0, $moduleID = 0, $apiID = 0, $version = 0, $release = 0, $appendLib = 0)
+ public function index($libID = 0, $moduleID = 0, $apiID = 0, $version = 0, $release = 0, $appendLib = 0, $queryID = 0, $param = '')
{
/* Get an api doc. */
if($apiID > 0)
@@ -71,6 +73,19 @@ class api extends control
if($libs) $this->lang->modulePageNav = $this->generateLibsDropMenu($libs, $libID, $release);
$this->setMenu($libID, $moduleID);
+ if($apiID == 0) $this->lang->TRActions = ' ' . $this->lang->api->search . '' . $this->lang->TRActions;
+
+ /* Build the search form. */
+ $queryID = $param == 'bySearch' ? (int)$queryID : 0;
+ $actionURL = $this->createLink('api', 'index', "libID=$libID&moduleID=$moduleID&apiID=$apiID&version=$version&release=$release&appendLib=$appendLib&queryID=myQueryID¶m=bySearch");
+ $this->api->buildSearchForm($lib,$queryID, $actionURL);
+
+ if($param == 'bySearch')
+ {
+ $apiList = $this->api->getApiListBySearch($libID, $queryID);
+ $this->view->apiList = $apiList;
+ $this->view->typeList = $this->api->getTypeList($libID);
+ }
$this->view->lib = $lib;
$this->view->isRelease = $release > 0;
@@ -79,6 +94,7 @@ class api extends control
$this->view->libID = $libID;
$this->view->apiID = $apiID;
$this->view->libs = $libs;
+ $this->view->param = $param;
$this->view->moduleTree = $libID ? $this->doc->getApiModuleTree($libID, $apiID, $release, $moduleID) : '';
$this->view->users = $this->user->getPairs('noclosed,noletter');
@@ -675,6 +691,11 @@ EOT;
$selected = $key == $libID ? 'selected' : '';
$output .= html::a(inlink($methodName, "libID=$key"), $lib->name, '', "class='$selected' data-app='{$this->app->tab}'");
}
+ if(count($libs) >= 2 and common::hasPriv('doc', 'sortLibs'))
+ {
+ $output .= '';
+ $output .= html::a($this->createLink('doc', 'sortLibs', "type=api&objectID=0", '', true), " {$this->lang->doc->sortLibs}", '', "data-title='{$this->lang->doc->sortLibs}' data-toggle='modal' data-type='iframe' data-width='400px' data-app='{$this->app->tab}'");
+ }
$output .= "
-
+
+
-
-
diff --git a/extension/lite/group/ext/lang/resource.php b/extension/lite/group/ext/lang/resource.php
index a617a128d7..de00c3c944 100644
--- a/extension/lite/group/ext/lang/resource.php
+++ b/extension/lite/group/ext/lang/resource.php
@@ -551,6 +551,8 @@ $lang->resource->task->recordEstimate = 'recordEstimateAction';
$lang->resource->task->editEstimate = 'editEstimate';
$lang->resource->task->deleteEstimate = 'deleteEstimate';
$lang->resource->task->report = 'reportChart';
+$lang->resource->task->exportTemplet = 'exportTemplet';
+$lang->resource->task->import = 'import';
$lang->task->methodOrder[5] = 'create';
$lang->task->methodOrder[10] = 'batchCreate';
@@ -575,6 +577,8 @@ $lang->task->methodOrder[100] = 'editEstimate';
$lang->task->methodOrder[105] = 'deleteEstimate';
$lang->task->methodOrder[110] = 'report';
$lang->task->methodOrder[115] = 'batchChangeModule';
+$lang->task->methodOrder[120] = 'exportTemplet';
+$lang->task->methodOrder[125] = 'import';
/* Doc. */
$lang->resource->doc = new stdclass();
diff --git a/extension/lite/task/ext/view/batchcreate.html.php b/extension/lite/task/ext/view/batchcreate.html.php
index 69fe4dc162..a6a4a28c62 100644
--- a/extension/lite/task/ext/view/batchcreate.html.php
+++ b/extension/lite/task/ext/view/batchcreate.html.php
@@ -114,7 +114,7 @@
- createLink('todo', 'create', '', '', true), $lang->todo->create, '', "class='iframe' data-width='80%'");?> +
- createLink('todo', 'batchCreate', '', '', true), $lang->todo->batchCreate, '', "class='iframe' data-width='80%'");?> +
-
+
diff --git a/extension/lite/todo/ext/view/calendar.html.php b/extension/lite/todo/ext/view/calendar.html.php
index 522a47e37d..7509b6fb3b 100644
--- a/extension/lite/todo/ext/view/calendar.html.php
+++ b/extension/lite/todo/ext/view/calendar.html.php
@@ -19,6 +19,7 @@
#sidebar > .sidebar-toggle {left: 3px; right: auto;}
.hide-sidebar #sidebar > .cell {display: none;}
.hide-sidebar #sidebar > .sidebar-toggle > .icon:before {content: "\e314";}
+#date {float: left; margin-right: 10px; margin-left: 0px;}
lang->side->more);?>
todo->moduleList);?>
@@ -31,8 +32,18 @@
app->user->id}&orderBy=id_desc&date=_date_") . '")', " " . $lang->todo->export, '', "class='btn btn-link'");?>
- " . $lang->todo->batchCreate, '', "class='btn btn-secondary' id='batchCreate'", '', true);?>
- " . $lang->todo->create, '', "id='create' class='btn btn-primary iframe' data-width='80%'", '', 'true');?>
+
+
+ " . (common::hasPriv('todo', 'create') ? $lang->todo->create : $lang->todo->batchCreate), '', "id='create' class='btn btn-primary iframe' data-width='80%' data-app='my'", '', 'true');?>
+
+
+
+
-
+
@@ -41,10 +52,10 @@
diff --git a/module/admin/view/resetpwdsetting.html.php b/module/admin/view/resetpwdsetting.html.php
new file mode 100644
index 0000000000..ce7eb08e3b
--- /dev/null
+++ b/module/admin/view/resetpwdsetting.html.php
@@ -0,0 +1,61 @@
+
+ * @package admin
+ * @version $Id$
+ * @link https://www.zentao.net
+ */
+?>
+
+
+
-
+
+
-
-
diff --git a/lib/feishuapi/feishuapi.class.php b/lib/feishuapi/feishuapi.class.php
index 3749eb5a99..2cfb53db53 100644
--- a/lib/feishuapi/feishuapi.class.php
+++ b/lib/feishuapi/feishuapi.class.php
@@ -150,30 +150,24 @@ class feishuapi
* @access public
* @return array
*/
- public function getDeptTree()
+ public function getChildDeptTree($departmentID)
{
- $depts = array('result' => 'success', 'data' => array());
-
- /* Gets the enterprise name. */
- $response = $this->queryAPI($this->apiUrl . "tenant/v2/tenant/query", '', array(CURLOPT_CUSTOMREQUEST => "GET"));
- $company = array('id' => '1', 'pId' => '0', 'name' => $response->data->tenant->name, 'open' => 1);
- $data = array($company);
-
/* Get depts by parent dept. */
+ $depts = array();
$pageToken = '';
$index = 0;
while(true)
{
- $response = $this->queryAPI($this->apiUrl . "contact/v3/departments?parent_department_id=0" . ($pageToken ? "&page_token={$pageToken}" : '') . "&fetch_child=true&page_size=50", '', array(CURLOPT_CUSTOMREQUEST => "GET"));
+ $response = $this->queryAPI($this->apiUrl . "contact/v3/departments?parent_department_id={$departmentID}" . ($pageToken ? "&page_token={$pageToken}" : '') . "&fetch_child=true&page_size=50", '', array(CURLOPT_CUSTOMREQUEST => "GET"));
if(isset($response->data->items))
{
foreach($response->data->items as $key => $dept)
{
+ $depts[$index]['id'] = $dept->open_department_id;
+ $depts[$index]['pId'] = empty($dept->parent_department_id) ? 1 : $dept->parent_department_id;
+ $depts[$index]['name'] = $dept->name;
+ $depts[$index]['open'] = 1;
$index++;
- $data[$index]['id'] = $dept->open_department_id;
- $data[$index]['pId'] = empty($dept->parent_department_id) ? 1 : $dept->parent_department_id;
- $data[$index]['name'] = $dept->name;
- $data[$index]['open'] = 1;
}
}
@@ -181,10 +175,129 @@ class feishuapi
$pageToken = $response->data->page_token;
}
- $depts['data'] = $data;
return $depts;
}
+ /**
+ * Get the first tier department.
+ *
+ * @access public
+ * @return array
+ */
+ public function getDeptTree()
+ {
+ $depts = array('data' => array());
+
+ /* Gets the enterprise name. */
+ $response = $this->queryAPI($this->apiUrl . "tenant/v2/tenant/query", '', array(CURLOPT_CUSTOMREQUEST => "GET"));
+ $company = array('id' => '1', 'pId' => '0', 'name' => $response->data->tenant->name, 'open' => 1);
+ $depts = array($company);
+
+ $departmentIdList = $this->getScopes();
+
+ $urls = array();
+ foreach($departmentIdList as $departmentID) $urls[] = $this->apiUrl . "contact/v3/departments/{$departmentID}";
+ $datas = $this->multiRequest($urls);
+
+ foreach($datas as $index => $dept)
+ {
+ $index += 1;
+ $dept = json_decode($dept);
+
+ $memberCount = $dept->data->department->member_count;
+ $status = $dept->data->department->status->is_deleted;
+
+ $depts[$index]['id'] = $dept->data->department->open_department_id;
+ $depts[$index]['pId'] = empty($dept->data->department->parent_department_id) ? 1 : $dept->data->department->parent_department_id;
+ $depts[$index]['name'] = $dept->data->department->name;
+ $depts[$index]['open'] = 1;
+ }
+
+ return $depts;
+ }
+
+ /**
+ * Get the visible range of the application.
+ *
+ * @access public
+ * @return array
+ */
+ public function getScopes()
+ {
+ $pageToken = '';
+ $departmentIdList = array();
+
+ while(true)
+ {
+ $response = $this->queryAPI($this->apiUrl . "contact/v3/scopes" . "?user_id_type=open_id&department_id_type=open_department_id&page_token={$pageToken}&page_size=100", '', array(CURLOPT_CUSTOMREQUEST => "GET"));
+ $departmentIds = isset($response->data->department_ids) ? $response->data->department_ids : array();
+ foreach($departmentIds as $id) $departmentIdList[] = $id;
+
+ if(!isset($response->data->page_token)) break;
+ $pageToken = $response->data->page_token;
+ }
+
+ return $departmentIdList;
+ }
+
+ /**
+ * Handle the concurrency of requests.
+ *
+ * @access public
+ * @return array
+ */
+ public function multiRequest($urls)
+ {
+ $curl = curl_multi_init();
+ $urlHandlers = array();
+ $urlData = array();
+
+ /* Set request header information. */
+ $headers = array();
+ $headers[] = "Content-Type: application/json";
+ if($this->token) $headers[] = "Authorization:Bearer {$this->token}";
+
+ /* Initialize multiple request handles to one. */
+ foreach($urls as $url)
+ {
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $url);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+
+ $urlHandlers[] = $ch;
+ curl_multi_add_handle($curl, $ch);
+ }
+
+ $active = null;
+ do
+ {
+ $mrc = curl_multi_exec($curl, $active);
+ }
+ while($mrc == CURLM_CALL_MULTI_PERFORM);
+
+ while($active && $mrc == CURLM_OK)
+ {
+ usleep(50000);
+ if(curl_multi_select($curl) != -1)
+ {
+ do
+ {
+ $mrc = curl_multi_exec($curl, $active);
+ }
+ while($mrc == CURLM_CALL_MULTI_PERFORM);
+ }
+ }
+
+ foreach($urlHandlers as $index => $ch)
+ {
+ $urlData[$index] = curl_multi_getcontent($ch);
+ curl_multi_remove_handle($curl, $ch);
+ }
+ curl_multi_close($curl);
+ return $urlData;
+ }
+
/**
* Send message
*
diff --git a/lib/scm/gitlab.class.php b/lib/scm/gitlab.class.php
index 8fa6b30095..324d03a9cc 100644
--- a/lib/scm/gitlab.class.php
+++ b/lib/scm/gitlab.class.php
@@ -167,6 +167,7 @@ class gitlab
$params['per_page'] = '100';
$branches = array();
+ $default = array();
for($page = 1; true; $page ++)
{
$params['page'] = $page;
@@ -176,15 +177,24 @@ class gitlab
foreach($branchList as $branch)
{
if(!isset($branch->name)) continue;
- $branches[$branch->name] = $branch->name;
+ if($branch->default)
+ {
+ $default[$branch->name] = $branch->name;
+ }
+ else
+ {
+ $branches[$branch->name] = $branch->name;
+ }
}
/* Last page. */
if(count($branchList) < $params['per_page']) break;
}
- if(empty($branches)) $branches['master'] = 'master';
+ if(empty($branches) and empty($default)) $branches['master'] = 'master';
asort($branches);
+
+ $branches = $default + $branches;
return $branches;
}
diff --git a/lib/scm/gitrepo.class.php b/lib/scm/gitrepo.class.php
index 50e48a60cc..93261cdcac 100644
--- a/lib/scm/gitrepo.class.php
+++ b/lib/scm/gitrepo.class.php
@@ -125,6 +125,9 @@ class GitRepo
$list = execCmd($cmd . ' 2>&1', 'array', $result);
if($result) return array();
+ /* Get default branch. */
+ $defaultBranch = execCmd("$this->client symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'");
+
$branches = array();
foreach($list as $localBranch)
{
@@ -132,9 +135,12 @@ class GitRepo
$localBranch = trim($localBranch);
if(empty($localBranch))continue;
- $branches[$localBranch] = $localBranch;
+ if($localBranch != $defaultBranch) $branches[$localBranch] = $localBranch;
}
+
asort($branches);
+ $branches = array($defaultBranch => $defaultBranch) + $branches;
+
return $branches;
}
@@ -552,8 +558,10 @@ class GitRepo
else
{
$file = explode(' ', $commit);
- $file = end($file);
- list($action, $path) = explode("\t", $file);
+ $file = explode("\t", end($file));
+ if(!isset($file[1])) $file[1] = '';
+ list($action, $path) = $file;
+
$parsedFile = new stdclass();
$parsedFile->revision = $hash;
$parsedFile->path = '/' . trim($path);
diff --git a/module/admin/control.php b/module/admin/control.php
index 4292bc3a53..0ed2c37aad 100644
--- a/module/admin/control.php
+++ b/module/admin/control.php
@@ -355,4 +355,22 @@ class admin extends control
$this->dao->delete()->from(TABLE_LOG)->where('date')->lt($date)->exec();
return !dao::isError();
}
+
+ /**
+ * Reset password setting.
+ *
+ * @access public
+ * @return void
+ */
+ public function resetPWDSetting()
+ {
+ if($_POST)
+ {
+ $this->loadModel('setting')->setItem('system.common.resetPWDByMail', $this->post->resetPWDByMail);
+ return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'reload'));
+ }
+
+ $this->view->title = $this->lang->admin->resetPWDSetting;
+ $this->display();
+ }
}
diff --git a/module/admin/lang/de.php b/module/admin/lang/de.php
index 9acc93e9f7..079865be1f 100644
--- a/module/admin/lang/de.php
+++ b/module/admin/lang/de.php
@@ -9,23 +9,25 @@
* @version $Id: en.php 4460 2013-02-26 02:28:02Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
-$lang->admin->index = 'Admin Home';
-$lang->admin->checkDB = 'Datenbank prüfen';
-$lang->admin->sso = 'SSO';
-$lang->admin->ssoAction = 'Link Zdoo';
-$lang->admin->safeIndex = 'Sicherheit';
-$lang->admin->checkWeak = 'Schwache Passwörter prüfen';
-$lang->admin->certifyMobile = 'Prüfen Sie die Mobilnummer';
-$lang->admin->certifyEmail = 'Prüfen Sie die Emailadresse';
-$lang->admin->ztCompany = 'Prüfen Sie das Unternehmen';
-$lang->admin->captcha = 'Bestätigungscode';
-$lang->admin->getCaptcha = 'Bestätigungscode anfordern';
-$lang->admin->register = 'Register';
+$lang->admin->index = 'Admin Home';
+$lang->admin->checkDB = 'Datenbank prüfen';
+$lang->admin->sso = 'SSO';
+$lang->admin->ssoAction = 'Link Zdoo';
+$lang->admin->safeIndex = 'Sicherheit';
+$lang->admin->checkWeak = 'Schwache Passwörter prüfen';
+$lang->admin->certifyMobile = 'Prüfen Sie die Mobilnummer';
+$lang->admin->certifyEmail = 'Prüfen Sie die Emailadresse';
+$lang->admin->ztCompany = 'Prüfen Sie das Unternehmen';
+$lang->admin->captcha = 'Bestätigungscode';
+$lang->admin->getCaptcha = 'Bestätigungscode anfordern';
+$lang->admin->register = 'Register';
+$lang->admin->resetPWDSetting = 'Reset password Setting';
-$lang->admin->api = 'API';
-$lang->admin->log = 'Log';
-$lang->admin->setting = 'Einstellungen';
-$lang->admin->days = 'Gültige Tage';
+$lang->admin->api = 'API';
+$lang->admin->log = 'Log';
+$lang->admin->setting = 'Einstellungen';
+$lang->admin->days = 'Gültige Tage';
+$lang->admin->resetPWDByMail = 'Reset the password via the email';
$lang->admin->info = new stdclass();
$lang->admin->info->version = 'Aktuelle Version ist %s. ';
@@ -53,14 +55,14 @@ $lang->admin->bind->caption = 'Konto verknüpfen';
$lang->admin->bind->success = "Konto wurde verknüpft!";
$lang->admin->safe = new stdclass();
-$lang->admin->safe->common = 'Sicherheits-Regeln';
-$lang->admin->safe->set = 'PasswortStärke';
-$lang->admin->safe->password = 'Passwort Stärke';
-$lang->admin->safe->weak = 'Schwache Passwörter';
-$lang->admin->safe->reason = 'Typ';
-$lang->admin->safe->checkWeak = 'Schwache Passwörter prüfen';
-$lang->admin->safe->changeWeak = 'Ihr Passwort ist schwach. Bitte ändern.';
-$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
+$lang->admin->safe->common = 'Sicherheits-Regeln';
+$lang->admin->safe->set = 'PasswortStärke';
+$lang->admin->safe->password = 'Passwort Stärke';
+$lang->admin->safe->weak = 'Schwache Passwörter';
+$lang->admin->safe->reason = 'Typ';
+$lang->admin->safe->checkWeak = 'Schwache Passwörter prüfen';
+$lang->admin->safe->changeWeak = 'Ihr Passwort ist schwach. Bitte ändern.';
+$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
$lang->admin->safe->modifyPasswordFirstLogin = 'Passwort nach der ersten Anmeldung ändern';
$lang->admin->safe->modeList[0] = 'N/A';
@@ -82,5 +84,8 @@ $lang->admin->safe->modifyPasswordList[0] = 'Nein';
$lang->admin->safe->loginCaptchaList[1] = 'Ja';
$lang->admin->safe->loginCaptchaList[0] = 'Nein';
+$lang->admin->safe->resetPWDList[1] = 'ON';
+$lang->admin->safe->resetPWDList[0] = 'Off';
+
$lang->admin->safe->noticeMode = 'Password will be checked when a user logs in, or a user is added or edited.';
$lang->admin->safe->noticeStrong = '';
diff --git a/module/admin/lang/en.php b/module/admin/lang/en.php
index c7577bf48e..afeddcd82c 100644
--- a/module/admin/lang/en.php
+++ b/module/admin/lang/en.php
@@ -9,23 +9,25 @@
* @version $Id: en.php 4460 2013-02-26 02:28:02Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
-$lang->admin->index = 'Admin Home';
-$lang->admin->checkDB = 'Check Database';
-$lang->admin->sso = 'Zdoo';
-$lang->admin->ssoAction = 'Link Zdoo';
-$lang->admin->safeIndex = 'Security';
-$lang->admin->checkWeak = 'Check Weak Password';
-$lang->admin->certifyMobile = 'Verify your cellphone';
-$lang->admin->certifyEmail = 'Verify your Email';
-$lang->admin->ztCompany = 'Verify your company';
-$lang->admin->captcha = 'Verification Code';
-$lang->admin->getCaptcha = 'Send Verification Code';
-$lang->admin->register = 'Register';
+$lang->admin->index = 'Admin Home';
+$lang->admin->checkDB = 'Check Database';
+$lang->admin->sso = 'Zdoo';
+$lang->admin->ssoAction = 'Link Zdoo';
+$lang->admin->safeIndex = 'Security';
+$lang->admin->checkWeak = 'Check Weak Password';
+$lang->admin->certifyMobile = 'Verify your cellphone';
+$lang->admin->certifyEmail = 'Verify your Email';
+$lang->admin->ztCompany = 'Verify your company';
+$lang->admin->captcha = 'Verification Code';
+$lang->admin->getCaptcha = 'Send Verification Code';
+$lang->admin->register = 'Register';
+$lang->admin->resetPWDSetting = 'Reset password Setting';
-$lang->admin->api = 'API';
-$lang->admin->log = 'Log';
-$lang->admin->setting = 'Setting';
-$lang->admin->days = 'Valid Day';
+$lang->admin->api = 'API';
+$lang->admin->log = 'Log';
+$lang->admin->setting = 'Setting';
+$lang->admin->days = 'Valid Day';
+$lang->admin->resetPWDByMail = 'Reset the password via the email';
$lang->admin->info = new stdclass();
$lang->admin->info->version = 'Current Version is %s. ';
@@ -53,14 +55,14 @@ $lang->admin->bind->caption = 'Link Account';
$lang->admin->bind->success = "Account is linked!";
$lang->admin->safe = new stdclass();
-$lang->admin->safe->common = 'Security Policy';
-$lang->admin->safe->set = 'Password Settings';
-$lang->admin->safe->password = 'Password Strength';
-$lang->admin->safe->weak = 'Common Weak Passwords';
-$lang->admin->safe->reason = 'Type';
-$lang->admin->safe->checkWeak = 'Weak Password Scan';
-$lang->admin->safe->changeWeak = 'Force to change weak password';
-$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
+$lang->admin->safe->common = 'Security Policy';
+$lang->admin->safe->set = 'Password Settings';
+$lang->admin->safe->password = 'Password Strength';
+$lang->admin->safe->weak = 'Common Weak Passwords';
+$lang->admin->safe->reason = 'Type';
+$lang->admin->safe->checkWeak = 'Weak Password Scan';
+$lang->admin->safe->changeWeak = 'Force to change weak password';
+$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
$lang->admin->safe->modifyPasswordFirstLogin = 'Force to change password after first login';
$lang->admin->safe->modeList[0] = 'I don\'t care.';
@@ -82,5 +84,8 @@ $lang->admin->safe->modifyPasswordList[0] = 'No';
$lang->admin->safe->loginCaptchaList[1] = 'Yes';
$lang->admin->safe->loginCaptchaList[0] = 'No';
+$lang->admin->safe->resetPWDList[1] = 'ON';
+$lang->admin->safe->resetPWDList[0] = 'Off';
+
$lang->admin->safe->noticeMode = 'Password will be checked when a user logs in, or a user is added or edited.';
$lang->admin->safe->noticeStrong = '';
diff --git a/module/admin/lang/fr.php b/module/admin/lang/fr.php
index ee2abd5f5d..eee000d75c 100644
--- a/module/admin/lang/fr.php
+++ b/module/admin/lang/fr.php
@@ -9,23 +9,25 @@
* @version $Id: en.php 4460 2013-02-26 02:28:02Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
-$lang->admin->index = 'Admin Home';
-$lang->admin->checkDB = 'Check Database';
-$lang->admin->sso = 'Zdoo';
-$lang->admin->ssoAction = 'Link Zdoo';
-$lang->admin->safeIndex = 'Sécurité';
-$lang->admin->checkWeak = 'Contrôle niveau de sécurité des mots de passe';
-$lang->admin->certifyMobile = 'Vérifier votre smartphone';
-$lang->admin->certifyEmail = 'Vérifier votre Email';
-$lang->admin->ztCompany = 'Vérifier votre entreprise';
-$lang->admin->captcha = 'Code de vérification';
-$lang->admin->getCaptcha = 'Obtenir le Code de vérification';
-$lang->admin->register = 'Register';
+$lang->admin->index = 'Admin Home';
+$lang->admin->checkDB = 'Check Database';
+$lang->admin->sso = 'Zdoo';
+$lang->admin->ssoAction = 'Link Zdoo';
+$lang->admin->safeIndex = 'Sécurité';
+$lang->admin->checkWeak = 'Contrôle niveau de sécurité des mots de passe';
+$lang->admin->certifyMobile = 'Vérifier votre smartphone';
+$lang->admin->certifyEmail = 'Vérifier votre Email';
+$lang->admin->ztCompany = 'Vérifier votre entreprise';
+$lang->admin->captcha = 'Code de vérification';
+$lang->admin->getCaptcha = 'Obtenir le Code de vérification';
+$lang->admin->register = 'Register';
+$lang->admin->resetPWDSetting = 'Reset password Setting';
-$lang->admin->api = 'API';
-$lang->admin->log = 'Log';
-$lang->admin->setting = 'Paramétrage';
-$lang->admin->days = 'Durée de conservation';
+$lang->admin->api = 'API';
+$lang->admin->log = 'Log';
+$lang->admin->setting = 'Paramétrage';
+$lang->admin->days = 'Durée de conservation';
+$lang->admin->resetPWDByMail = 'Reset the password via the email';
$lang->admin->info = new stdclass();
$lang->admin->info->version = 'La version actuelle est %s customisée. ';
@@ -53,14 +55,14 @@ $lang->admin->bind->caption = 'Lier au compte';
$lang->admin->bind->success = "Le compte est associé !";
$lang->admin->safe = new stdclass();
-$lang->admin->safe->common = 'Politique de sécurité';
-$lang->admin->safe->set = 'Paramétrages du Mot de passe';
-$lang->admin->safe->password = 'Force du Mot de passe';
-$lang->admin->safe->weak = 'Mots de passes non sécurisés courrants';
-$lang->admin->safe->reason = 'Type';
-$lang->admin->safe->checkWeak = 'Balayage des mots de passe faibles';
-$lang->admin->safe->changeWeak = 'Forcer le changement des mots de passe faibles';
-$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
+$lang->admin->safe->common = 'Politique de sécurité';
+$lang->admin->safe->set = 'Paramétrages du Mot de passe';
+$lang->admin->safe->password = 'Force du Mot de passe';
+$lang->admin->safe->weak = 'Mots de passes non sécurisés courrants';
+$lang->admin->safe->reason = 'Type';
+$lang->admin->safe->checkWeak = 'Balayage des mots de passe faibles';
+$lang->admin->safe->changeWeak = 'Forcer le changement des mots de passe faibles';
+$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
$lang->admin->safe->modifyPasswordFirstLogin = 'Forcer le changement du mot de passe après la première connexion';
$lang->admin->safe->modeList[0] = "Contrôle Modéré";
@@ -82,5 +84,8 @@ $lang->admin->safe->modifyPasswordList[0] = 'Non';
$lang->admin->safe->loginCaptchaList[1] = 'Yes';
$lang->admin->safe->loginCaptchaList[0] = 'Non';
+$lang->admin->safe->resetPWDList[1] = 'ON';
+$lang->admin->safe->resetPWDList[0] = 'Off';
+
$lang->admin->safe->noticeMode = "Le mot de passe sera vérifié quand un utilisateur se connectera ou qu'un utilisateur sera créé ou modifier.";
$lang->admin->safe->noticeStrong = '';
diff --git a/module/admin/lang/zh-cn.php b/module/admin/lang/zh-cn.php
index 110a3be1d0..24d5afd21a 100644
--- a/module/admin/lang/zh-cn.php
+++ b/module/admin/lang/zh-cn.php
@@ -9,23 +9,25 @@
* @version $Id: zh-cn.php 4767 2013-05-05 06:10:13Z wwccss $
* @link http://www.zentao.net
*/
-$lang->admin->index = '后台管理首页';
-$lang->admin->checkDB = '检查数据库';
-$lang->admin->sso = 'ZDOO集成';
-$lang->admin->ssoAction = 'ZDOO集成';
-$lang->admin->safeIndex = '安全';
-$lang->admin->checkWeak = '弱口令检查';
-$lang->admin->certifyMobile = '认证手机';
-$lang->admin->certifyEmail = '认证邮箱';
-$lang->admin->ztCompany = '认证公司';
-$lang->admin->captcha = '验证码';
-$lang->admin->getCaptcha = '获取验证码';
-$lang->admin->register = '登记';
+$lang->admin->index = '后台管理首页';
+$lang->admin->checkDB = '检查数据库';
+$lang->admin->sso = 'ZDOO集成';
+$lang->admin->ssoAction = 'ZDOO集成';
+$lang->admin->safeIndex = '安全';
+$lang->admin->checkWeak = '弱口令检查';
+$lang->admin->certifyMobile = '认证手机';
+$lang->admin->certifyEmail = '认证邮箱';
+$lang->admin->ztCompany = '认证公司';
+$lang->admin->captcha = '验证码';
+$lang->admin->getCaptcha = '获取验证码';
+$lang->admin->register = '登记';
+$lang->admin->resetPWDSetting = '重置密码设置';
-$lang->admin->api = '接口';
-$lang->admin->log = '日志';
-$lang->admin->setting = '设置';
-$lang->admin->days = '日志保存天数';
+$lang->admin->api = '接口';
+$lang->admin->log = '日志';
+$lang->admin->setting = '设置';
+$lang->admin->days = '日志保存天数';
+$lang->admin->resetPWDByMail = '通过邮箱重置密码';
$lang->admin->info = new stdclass();
$lang->admin->info->version = '当前系统的版本是%s,';
@@ -53,14 +55,14 @@ $lang->admin->bind->caption = '关联社区帐号';
$lang->admin->bind->success = "关联账户成功";
$lang->admin->safe = new stdclass();
-$lang->admin->safe->common = '安全策略';
-$lang->admin->safe->set = '密码安全设置';
-$lang->admin->safe->password = '密码安全';
-$lang->admin->safe->weak = '常用弱口令';
-$lang->admin->safe->reason = '类型';
-$lang->admin->safe->checkWeak = '弱口令扫描';
-$lang->admin->safe->changeWeak = '修改弱口令密码';
-$lang->admin->safe->loginCaptcha = '登录使用验证码';
+$lang->admin->safe->common = '安全策略';
+$lang->admin->safe->set = '密码安全设置';
+$lang->admin->safe->password = '密码安全';
+$lang->admin->safe->weak = '常用弱口令';
+$lang->admin->safe->reason = '类型';
+$lang->admin->safe->checkWeak = '弱口令扫描';
+$lang->admin->safe->changeWeak = '修改弱口令密码';
+$lang->admin->safe->loginCaptcha = '登录使用验证码';
$lang->admin->safe->modifyPasswordFirstLogin = '首次登录修改密码';
$lang->admin->safe->modeList[0] = '不检查';
@@ -82,5 +84,8 @@ $lang->admin->safe->modifyPasswordList[0] = '不强制';
$lang->admin->safe->loginCaptchaList[1] = '是';
$lang->admin->safe->loginCaptchaList[0] = '否';
+$lang->admin->safe->resetPWDList[1] = '开启';
+$lang->admin->safe->resetPWDList[0] = '关闭';
+
$lang->admin->safe->noticeMode = '系统会在登录、创建和修改用户、修改密码的时候检查用户口令。';
$lang->admin->safe->noticeStrong = '密码长度越长,含有大写字母或数字或特殊符号越多,密码字母越不重复,安全度越强!';
diff --git a/module/admin/view/checkweak.html.php b/module/admin/view/checkweak.html.php
index 6c793818e1..d4005dd4ae 100644
--- a/module/admin/view/checkweak.html.php
+++ b/module/admin/view/checkweak.html.php
@@ -18,6 +18,7 @@
createLink('admin', 'safe'), $lang->admin->safe->set);
echo html::a($this->createLink('admin', 'checkWeak'), $lang->admin->safe->checkWeak, '', "class='active'");
+ echo html::a($this->createLink('admin', 'resetPWDSetting'), $lang->admin->resetPWDSetting);
?>
+
+
diff --git a/module/admin/view/safe.html.php b/module/admin/view/safe.html.php
index 258bc799a9..785ac9e075 100644
--- a/module/admin/view/safe.html.php
+++ b/module/admin/view/safe.html.php
@@ -24,6 +24,7 @@
createLink('admin', 'safe'), $lang->admin->safe->set, '', "class='active'");
echo html::a($this->createLink('admin', 'checkWeak'), $lang->admin->safe->checkWeak);
+ echo html::a($this->createLink('admin', 'resetPWDSetting'), $lang->admin->resetPWDSetting);
?>
+
+
+
+
+ createLink('admin', 'safe'), $lang->admin->safe->set);
+ echo html::a($this->createLink('admin', 'checkWeak'), $lang->admin->safe->checkWeak);
+ echo html::a($this->createLink('admin', 'resetPWDSetting'), $lang->admin->resetPWDSetting, '', "class='active'");
+ ?>
+
+
+
+
+
+
+