From f68b25550993fe1d61ac4f4e839a22f9b83d4c36 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 11 Dec 2012 07:40:07 +0000 Subject: [PATCH] * finish task #962. --- module/company/config.php | 39 ++++++++++++++++++++++++++++ module/company/control.php | 40 +++++++++++++++++++++++++---- module/company/view/browse.html.php | 3 +++ module/search/model.php | 5 ++++ module/user/model.php | 18 +++++++++++++ 5 files changed, 100 insertions(+), 5 deletions(-) diff --git a/module/company/config.php b/module/company/config.php index 5881a907a4..b742905f28 100644 --- a/module/company/config.php +++ b/module/company/config.php @@ -7,6 +7,7 @@ $config->company->edit->requiredFields = 'name,pms'; global $lang, $app; $app->loadLang('action'); +$app->loadLang('user'); $config->company->dynamic = new stdclass(); $config->company->dynamic->search['module'] = 'action'; $config->company->dynamic->search['fields']['product'] = $lang->action->product; @@ -24,3 +25,41 @@ $config->company->dynamic->search['params']['project'] = array('operator' => $config->company->dynamic->search['params']['objectType'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->action->search->objectTypeList); $config->company->dynamic->search['params']['date'] = array('operator' => '>=', 'control' => 'input', 'values' => ''); $config->company->dynamic->search['params']['action'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->action->search->label); + +$config->company->browse = new stdClass(); +$config->company->browse->search['module'] = 'user'; +$config->company->browse->search['fields']['realname'] = $lang->user->realname; +$config->company->browse->search['fields']['email'] = $lang->user->email; +$config->company->browse->search['fields']['dept'] = $lang->user->dept; +$config->company->browse->search['fields']['account'] = $lang->user->account; +$config->company->browse->search['fields']['phone'] = $lang->user->phone; +$config->company->browse->search['fields']['join'] = $lang->user->join; +$config->company->browse->search['fields']['id'] = $lang->user->id; +$config->company->browse->search['fields']['commiter'] = $lang->user->commiter; +$config->company->browse->search['fields']['birthday'] = $lang->user->birthyear; +$config->company->browse->search['fields']['gender'] = $lang->user->gender; +$config->company->browse->search['fields']['qq'] = $lang->user->qq; +$config->company->browse->search['fields']['msn'] = $lang->user->msn; +$config->company->browse->search['fields']['yahoo'] = $lang->user->yahoo; +$config->company->browse->search['fields']['gtalk'] = $lang->user->gtalk; +$config->company->browse->search['fields']['wangwang'] = $lang->user->wangwang; +$config->company->browse->search['fields']['address'] = $lang->user->address; +$config->company->browse->search['fields']['zipcode'] = $lang->user->zipcode; + +$config->company->browse->search['params']['dept'] = array('operator' => 'belong', 'control' => 'select', 'values' => ''); +$config->company->browse->search['params']['realname'] = array('operator' => 'include', 'control' => 'input', 'values' => ''); +$config->company->browse->search['params']['account'] = array('operator' => 'include', 'control' => 'input', 'values' => ''); +$config->company->browse->search['params']['commiter'] = array('operator' => 'include', 'control' => 'select', 'values' => ''); +$config->company->browse->search['params']['email'] = array('operator' => 'include', 'control' => 'input', 'values' => ''); +$config->company->browse->search['params']['birthday'] = array('operator' => '>=', 'control' => 'input', 'values' => '', 'class' => 'date'); +$config->company->browse->search['params']['gender'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->user->genderList); +$config->company->browse->search['params']['phone'] = array('operator' => 'include', 'control' => 'input', 'values' => ''); +$config->company->browse->search['params']['qq'] = array('operator' => '=', 'control' => 'input', 'values' => ''); +$config->company->browse->search['params']['msn'] = array('operator' => '=', 'control' => 'input', 'values' => ''); +$config->company->browse->search['params']['yahoo'] = array('operator' => '=', 'control' => 'input', 'values' => ''); +$config->company->browse->search['params']['gtalk'] = array('operator' => '=', 'control' => 'input', 'values' => ''); +$config->company->browse->search['params']['wangwang'] = array('operator' => '=', 'control' => 'input', 'values' => ''); +$config->company->browse->search['params']['address'] = array('operator' => 'include', 'control' => 'input', 'values' => ''); +$config->company->browse->search['params']['zipcode'] = array('operator' => '=', 'control' => 'input', 'values' => ''); +$config->company->browse->search['params']['join'] = array('operator' => '>=', 'control' => 'input', 'values' => '', 'class' => 'date'); +$config->company->browse->search['params']['id'] = array('operator' => '=', 'control' => 'input', 'values' => ''); diff --git a/module/company/control.php b/module/company/control.php index 8b4cce7848..3f7e40e303 100644 --- a/module/company/control.php +++ b/module/company/control.php @@ -21,7 +21,6 @@ class company extends control { parent::__construct(); $this->loadModel('dept'); - $this->app->loadLang('user'); $this->company->setMenu(); } @@ -43,27 +42,58 @@ class company extends control * @access public * @return void */ - public function browse($deptID = 0, $recTotal = 0, $recPerPage = 20, $pageID = 1) + public function browse($param = 0, $type = 'bydept', $recTotal = 0, $recPerPage = 20, $pageID = 1) { + $this->loadModel('search'); $this->lang->set('menugroup.company', 'company'); - $childDeptIds = $this->dept->getAllChildID($deptID); + $deptID = $type == 'bydept' ? (int)$param : 0; $this->company->setMenu($deptID); /* Set the pager. */ $this->app->loadClass('pager', $static = true); $pager = pager::init($recTotal, $recPerPage, $pageID); + /* Build the search form. */ + $queryID = $type == 'bydept' ? 0 : (int)$param; + $this->config->company->browse->search['actionURL'] = $this->createLink('company', 'browse', "param=myQueryID&type=bysearch"); + $this->config->company->browse->search['queryID'] = $queryID; + $this->config->company->browse->search['params']['dept']['values'] = array('' => '') + $this->dept->getOptionMenu(); + $header['title'] = $this->lang->company->index . $this->lang->colon . $this->lang->dept->common; $position[] = $this->lang->dept->common; + if($type == 'bydept') + { + $childDeptIds = $this->dept->getAllChildID($deptID); + $users = $this->dept->getUsers($childDeptIds, $pager); + } + else + { + if($queryID) + { + $query = $this->search->getQuery($queryID); + if($query) + { + $this->session->set('userQuery', $query->sql); + $this->session->set('userForm', $query->form); + } + else + { + $this->session->set('userQuery', ' 1 = 1'); + } + } + $users = $this->loadModel('user')->getByQuery($this->session->userQuery, $pager); + } + $this->view->header = $header; $this->view->position = $position; - $this->view->users = $this->dept->getUsers($childDeptIds, $pager); + $this->view->users = $users; + $this->view->searchForm = $this->fetch('search', 'buildForm', $this->config->company->browse->search); $this->view->deptTree = $this->dept->getTreeMenu($rooteDeptID = 0, array('deptModel', 'createMemberLink')); $this->view->parentDepts = $this->dept->getParents($deptID); $this->view->deptID = $deptID; - $this->view->pager = $pager; + $this->view->pager = $pager; $this->display(); } diff --git a/module/company/view/browse.html.php b/module/company/view/browse.html.php index 88d00367c2..23064b0e26 100644 --- a/module/company/view/browse.html.php +++ b/module/company/view/browse.html.php @@ -16,6 +16,9 @@ include '../../common/view/treeview.html.php'; include '../../common/view/tablesorter.html.php'; ?> + + +
dept->common;?>
diff --git a/module/search/model.php b/module/search/model.php index ba47ed4c3c..09f7374287 100644 --- a/module/search/model.php +++ b/module/search/model.php @@ -91,6 +91,11 @@ class searchModel extends model $allModules = $this->loadModel('tree')->getAllChildId($value); $where .= helper::dbIN($allModules); } + elseif($this->post->$fieldName == 'dept') + { + $allDepts = $this->loadModel('dept')->getAllChildId($value); + $where .= helper::dbIN($allDepts); + } else { $where .= ' = ' . $this->dbh->quote($value) . ' '; diff --git a/module/user/model.php b/module/user/model.php index febf55397d..6279689628 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -150,6 +150,24 @@ class userModel extends model return $user; } + /** + * Get users by sql. + * + * @param int $query + * @param int $pager + * @access public + * @return void + */ + public function getByQuery($query, $pager = null) + { + return $this->dao->select('*')->from(TABLE_USER) + ->where($query) + ->andWhere('deleted')->eq(0) + ->orderBy('id') + ->page($pager) + ->fetchAll(); + } + /** * Create a user. *