From c5d9187bafc87350a77b098697770a7c3c8ec583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BB=94=E5=93=A5?= Date: Wed, 1 Nov 2017 11:29:07 +0800 Subject: [PATCH] * fix score module --- config/filter.php | 4 ++ db/update9.5.1.sql | 14 ++--- module/custom/view/score.html.php | 2 +- module/my/control.php | 3 +- module/my/view/index.html.php | 3 +- module/score/config.php | 22 ++++++- module/score/control.php | 26 -------- module/score/lang/en.php | 78 ++++++++++++++++++++++++ module/score/lang/zh-cn.php | 36 ++++++----- module/score/lang/zh-tw.php | 78 ++++++++++++++++++++++++ module/score/model.php | 98 ++++++++++++++++-------------- module/score/view/init.html.php | 2 +- module/score/view/refresh.html.php | 64 ------------------- module/testtask/control.php | 4 +- www/js/my.full.js | 6 +- 15 files changed, 265 insertions(+), 175 deletions(-) delete mode 100644 module/score/view/refresh.html.php diff --git a/config/filter.php b/config/filter.php index ee9d0880b3..ebf6c3bdfe 100644 --- a/config/filter.php +++ b/config/filter.php @@ -44,6 +44,7 @@ $filter->mail = new stdclass(); $filter->user = new stdclass(); $filter->block = new stdclass(); $filter->file = new stdclass(); +$filter->my = new stdclass(); $filter->block->default = new stdclass(); $filter->block->main = new stdclass(); @@ -85,6 +86,7 @@ $filter->testtask->default = new stdclass(); $filter->todo->export = new stdclass(); $filter->upgrade->license = new stdclass(); $filter->user->login = new stdclass(); +$filter->my->index = new stdclass(); $filter->bug->batchcreate->cookie['preBranch'] = 'int'; $filter->bug->browse->cookie['bugModule'] = 'int'; @@ -160,6 +162,8 @@ $filter->todo->export->cookie['checkedItem'] = 'reg::checked'; $filter->user->login->cookie['keepLogin'] = 'equal::on'; +$filter->my->index->cookie['showNotice'] = 'int'; + $filter->block->default->get['hash'] = 'reg::md5'; $filter->block->main->get['blockid'] = 'code'; $filter->block->main->get['blockTitle'] = 'reg::any'; diff --git a/db/update9.5.1.sql b/db/update9.5.1.sql index 2e51b8c49d..8928bb3a17 100644 --- a/db/update9.5.1.sql +++ b/db/update9.5.1.sql @@ -77,23 +77,23 @@ ALTER TABLE `zt_team` CHANGE `days` `days` SMALLINT(5) UNSIGNED NOT NULL DEFA ALTER TABLE `zt_team` DROP PRIMARY KEY; ALTER TABLE `zt_team` ADD PRIMARY KEY (`project`, `task`, `account`); -ALTER TABLE `zt_user` ADD `score` DECIMAL(12,1) NOT NULL DEFAULT '0' AFTER `deleted`; -ALTER TABLE `zt_user` ADD `scoreLevel` DECIMAL(12,1) NOT NULL DEFAULT '0' AFTER `score`; +ALTER TABLE `zt_user` ADD `score` INT(12) NOT NULL DEFAULT '0' AFTER `deleted`; +ALTER TABLE `zt_user` ADD `scoreLevel` INT(11) NOT NULL DEFAULT '0' AFTER `score`; CREATE TABLE `zt_score` ( `id` bigint(12) unsigned NOT NULL AUTO_INCREMENT, `account` varchar(30) NOT NULL, - `module` varchar(30) NOT NULL, + `module` varchar(30) NOT NULL DEFAULT '', `method` varchar(30) NOT NULL, `desc` varchar(250) NOT NULL DEFAULT '', - `before` decimal(12,1) NOT NULL DEFAULT '0.0', - `score` decimal(12,1) NOT NULL DEFAULT '0.0', - `after` decimal(12,1) NOT NULL DEFAULT '0.0', + `before` int(11) NOT NULL DEFAULT '0', + `score` int(11) NOT NULL DEFAULT '0', + `after` int(11) NOT NULL DEFAULT '0', `time` datetime NOT NULL, `objectID` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `account` (`account`), - KEY `model` (`model`), + KEY `model` (`module`), KEY `method` (`method`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/module/custom/view/score.html.php b/module/custom/view/score.html.php index 1cb97f36e6..7e4fa4af9e 100644 --- a/module/custom/view/score.html.php +++ b/module/custom/view/score.html.php @@ -19,7 +19,7 @@ - global->scoreInit) ? common::printLink('score', 'refresh', '', " " . $lang->custom->scoreReset, '', ' id="scoreRefresh" class="btn iframe" data-width="480"', true, true) : common::printLink('score', 'init', '', " " . $lang->custom->scoreInit, '', ' id="scoreInit" class="btn iframe" data-width="480"', true, true); ?> + " . isset($config->global->scoreInit) ? $lang->custom->scoreReset : $lang->custom->scoreInit, '', ' id="scoreRefresh" class="btn iframe" data-width="480"', true, true); ?> diff --git a/module/my/control.php b/module/my/control.php index c7710775ca..e5940e15f4 100644 --- a/module/my/control.php +++ b/module/my/control.php @@ -33,7 +33,8 @@ class my extends control */ public function index() { - $this->view->title = $this->lang->my->common; + $this->view->title = $this->lang->my->common; + $this->view->notice = $this->loadModel('score')->getNotice(); $this->display(); } diff --git a/module/my/view/index.html.php b/module/my/view/index.html.php index af96a59b9b..4998837ff0 100644 --- a/module/my/view/index.html.php +++ b/module/my/view/index.html.php @@ -12,4 +12,5 @@ version);?> fetch('block', 'dashboard', 'module=my');?> - +
+ \ No newline at end of file diff --git a/module/score/config.php b/module/score/config.php index 7b5cad5650..45ac6f57d3 100644 --- a/module/score/config.php +++ b/module/score/config.php @@ -1,12 +1,15 @@ score = new stdClass(); //user rule +$config->score->user = new stdClass(); $config->score->user->login = array('num' => 3, 'time' => 24, 'score' => 1, 'ext' => ''); $config->score->user->changePassword = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => array(1 => 2, 2 => 5)); $config->score->user->editProfile = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => ''); //tutorial rule +$config->score->tutorial = new stdClass(); $config->score->tutorial->keepAll = array('num' => 1, 'time' => 0, 'score' => 100, 'ext' => ''); //javascript ajax rule +$config->score->ajax = new stdClass(); $config->score->ajax->selectTheme = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => ''); $config->score->ajax->selectLang = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => ''); $config->score->ajax->showSearchMenu = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => ''); @@ -15,41 +18,54 @@ $config->score->ajax->lastNext = array('num' => 1, 'time' => 0, 'score' $config->score->ajax->switchToDataTable = array('num' => 1, 'time' => 0, 'score' => 1, 'ext' => ''); $config->score->ajax->submitPage = array('num' => 1, 'time' => 0, 'score' => 1, 'ext' => ''); $config->score->ajax->customMenu = array('num' => 1, 'time' => 0, 'score' => 1, 'ext' => ''); -$config->score->ajax->quickDump = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => ''); +$config->score->ajax->quickJump = array('num' => 1, 'time' => 0, 'score' => 10, 'ext' => ''); $config->score->ajax->batchCreate = array('num' => 1, 'time' => 0, 'score' => 20, 'ext' => ''); $config->score->ajax->batchEdit = array('num' => 1, 'time' => 0, 'score' => 20, 'ext' => ''); //doc rule +$config->score->doc = new stdClass(); $config->score->doc->create = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => ''); //todo rule +$config->score->todo = new stdClass(); $config->score->todo->create = array('num' => 5, 'time' => 24, 'score' => 1, 'ext' => ''); //story rule +$config->score->story = new stdClass(); $config->score->story->create = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => ''); $config->score->story->close = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => array('createID' => 2)); //task rule +$config->score->task = new stdClass(); $config->score->task->create = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => ''); $config->score->task->close = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => ''); $config->score->task->finish = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => array(1 => 2, 2 => 1, 3 => 0)); //bug rule +$config->score->bug = new stdClass(); $config->score->bug->create = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => ''); $config->score->bug->confirmBug = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => array(1 => 3, 2 => 2, 3 => 1)); $config->score->bug->createFormCase = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => ''); $config->score->bug->resolve = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => array(1 => 3, 2 => 2, 3 => 1)); $config->score->bug->saveTplModal = array('num' => 0, 'time' => 0, 'score' => 20, 'ext' => ''); -//testTask rule -$config->score->testTask->runCase = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => ''); //testcase rule +$config->score->testcase = new stdClass(); $config->score->testcase->create = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => ''); +//testtask rule +$config->score->testtask = new stdClass(); +$config->score->testtask->runCase = array('num' => 0, 'time' => 0, 'score' => 1, 'ext' => ''); //bulid rule +$config->score->build = new stdClass(); $config->score->build->create = array('num' => 0, 'time' => 0, 'score' => 10, 'ext' => ''); //project rule +$config->score->project = new stdClass(); $config->score->project->create = array('num' => 0, 'time' => 0, 'score' => 10, 'ext' => ''); $config->score->project->close = array('num' => 0, 'time' => 0, 'score' => 0, 'ext' => array('manager' => array(20, 10), 'member' => array(5, 5))); //productplan rule +$config->score->productplan = new stdClass(); $config->score->productplan->create = array('num' => 0, 'time' => 0, 'score' => 10, 'ext' => ''); //release rule +$config->score->release = new stdClass(); $config->score->release->create = array('num' => 0, 'time' => 0, 'score' => 10, 'ext' => ''); //block rule +$config->score->block = new stdClass(); $config->score->block->set = array('num' => 1, 'time' => 0, 'score' => 20, 'ext' => ''); //search rule +$config->score->search = new stdClass(); $config->score->search->saveQuery = array('num' => 1, 'time' => 0, 'score' => 1, 'ext' => ''); $config->score->search->saveQueryAdvanced = array('num' => 1, 'time' => 0, 'score' => 1, 'ext' => ''); diff --git a/module/score/control.php b/module/score/control.php index a139c2574e..1c3d41c847 100644 --- a/module/score/control.php +++ b/module/score/control.php @@ -48,30 +48,4 @@ class score extends control } $this->display(); } - - /** - * reset all score - * - * @param int $lastID - * - * @access public - * @return void - */ - public function reset($lastID = 0) - { - if(helper::isAjaxRequest()) - { - $result = $this->score->reset($lastID); - if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError())); - if($result['status'] == 'finish') - { - $this->send(array('result' => 'finished', 'message' => $this->lang->score->resetFinish)); - } - else - { - $this->send(array('result' => 'unfinished', 'message' => $this->lang->score->resetLoading, 'lastID' => $result['lastID'])); - } - } - $this->display(); - } } \ No newline at end of file diff --git a/module/score/lang/en.php b/module/score/lang/en.php index b3d9bbc7f3..9881005e0c 100644 --- a/module/score/lang/en.php +++ b/module/score/lang/en.php @@ -1 +1,79 @@ score->common = 'Score'; +$lang->score->record = 'Score record'; +$lang->score->current = 'Current score'; +$lang->score->level = 'Level score'; +$lang->score->init = 'Initialize'; +$lang->score->tips = 'Yesterday added score:%d
Today total score:%d
Come on! ^_^'; +$lang->score->initTips = 'Initialization will be based on historical records, the execution time may be longer. Do not close the window before the completion'; +$lang->score->initStart = 'Start initialize'; +$lang->score->initLoading = 'Initializing...'; +$lang->score->initFinish = 'initialized'; +$lang->score->processed = 'Processed ...'; + +$lang->score->id = 'ID'; +$lang->score->userID = 'UserID'; +$lang->score->account = 'User'; +$lang->score->module = 'Module'; +$lang->score->method = 'Method'; +$lang->score->before = 'Before'; +$lang->score->score = 'Score'; +$lang->score->after = 'After'; +$lang->score->time = 'Time'; +$lang->score->desc = 'Description'; + + +$lang->score->models['task'] = 'Task'; +$lang->score->models['tutorial'] = 'Tutorial'; +$lang->score->models['user'] = 'User'; +$lang->score->models['ajax'] = 'Other'; +$lang->score->models['doc'] = 'Doc'; +$lang->score->models['todo'] = 'Todo'; +$lang->score->models['story'] = 'Story'; +$lang->score->models['bug'] = 'Bug'; +$lang->score->models['testcase'] = 'TestCase'; +$lang->score->models['testtask'] = 'TestTask'; +$lang->score->models['build'] = 'Build'; +$lang->score->models['project'] = 'Project'; +$lang->score->models['productplan'] = 'Plan'; +$lang->score->models['release'] = 'Release'; +$lang->score->models['block'] = 'Block'; +$lang->score->models['search'] = 'Search'; + +$lang->score->methods['task']['create'] = 'Create task'; +$lang->score->methods['task']['close'] = 'Close task'; +$lang->score->methods['task']['finish'] = 'Finish task'; +$lang->score->methods['tutorial']['keepAll'] = 'Finish tutorial'; +$lang->score->methods['user']['login'] = 'Login'; +$lang->score->methods['user']['changePassword'] = 'Change password'; +$lang->score->methods['user']['editProfile'] = 'Edit profile'; +$lang->score->methods['ajax']['selectTheme'] = 'Change theme'; +$lang->score->methods['ajax']['selectLang'] = 'Change Lang'; +$lang->score->methods['ajax']['showSearchMenu'] = 'Advanced search'; +$lang->score->methods['ajax']['customMenu'] = 'Custom menu'; +$lang->score->methods['ajax']['dragSelected'] = 'Drag selected'; +$lang->score->methods['ajax']['lastNext'] = 'Page turned'; +$lang->score->methods['ajax']['switchToDataTable'] = 'Switch dataTable'; +$lang->score->methods['ajax']['submitPage'] = 'Change page number'; +$lang->score->methods['ajax']['quickJump'] = 'Quick jump'; +$lang->score->methods['ajax']['batchCreate'] = 'Batch create'; +$lang->score->methods['ajax']['batchEdit'] = 'Batch update'; +$lang->score->methods['doc']['create'] = 'Create doc'; +$lang->score->methods['todo']['create'] = 'Create todo'; +$lang->score->methods['story']['create'] = 'Create story'; +$lang->score->methods['story']['close'] = 'Close story'; +$lang->score->methods['bug']['create'] = 'Create bug'; +$lang->score->methods['bug']['confirmBug'] = 'Confirm bug'; +$lang->score->methods['bug']['createFormCase'] = 'Create bug form case'; +$lang->score->methods['bug']['resolve'] = 'Resolve bug'; +$lang->score->methods['bug']['saveTplModal'] = 'Bug save template'; +$lang->score->methods['testtask']['runCase'] = 'Run test case'; +$lang->score->methods['testcase']['create'] = 'Create test case'; +$lang->score->methods['build']['create'] = 'Create build'; +$lang->score->methods['project']['create'] = 'Create project'; +$lang->score->methods['project']['close'] = 'Project finish'; +$lang->score->methods['productplan']['create'] = 'Create plan'; +$lang->score->methods['release']['create'] = 'Create release'; +$lang->score->methods['block']['set'] = 'Custom block'; +$lang->score->methods['search']['saveQuery'] = 'Save search query'; +$lang->score->methods['search']['saveQueryAdvanced'] = 'Advanced search'; diff --git a/module/score/lang/zh-cn.php b/module/score/lang/zh-cn.php index dacb4aa435..2987cca8a5 100644 --- a/module/score/lang/zh-cn.php +++ b/module/score/lang/zh-cn.php @@ -1,19 +1,15 @@ score->common = '积分'; -$lang->score->record = '积分记录'; -$lang->score->current = '当前积分'; -$lang->score->level = '等级积分'; -$lang->score->init = '初始化'; -$lang->score->initTips = '初始化将根据历史记录计算,执行时间可能会比较长.
请勿在未完成前关闭窗口'; -$lang->score->initStart = '开始初始化'; -$lang->score->initLoading = '正在初始化...'; -$lang->score->initFinish = '初始化完成'; -$lang->score->reset = '重置积分'; -$lang->score->resetTips = '重置积分将对所有用户积分清零,执行时间可能会比较长.
请勿在未完成前关闭窗口'; -$lang->score->resetStart = '开始重置所有积分'; -$lang->score->resetLoading = '积分重置中...'; -$lang->score->resetFinish = '重置完成'; -$lang->score->processed = '正在处理中...'; +$lang->score->common = '积分'; +$lang->score->record = '积分记录'; +$lang->score->current = '当前积分'; +$lang->score->level = '等级积分'; +$lang->score->init = '初始化'; +$lang->score->tips = '昨天增加了积分:%d
现共有积分:%d
今天再接再厉哟! ^_^'; +$lang->score->initTips = '初始化将根据历史记录计算,执行时间可能会比较长.
请勿在未完成前关闭窗口'; +$lang->score->initStart = '开始初始化'; +$lang->score->initLoading = '正在初始化...'; +$lang->score->initFinish = '初始化完成'; +$lang->score->processed = '正在处理中...'; $lang->score->id = '编号'; $lang->score->userID = '用户ID'; @@ -30,12 +26,13 @@ $lang->score->desc = '描述'; $lang->score->models['task'] = '任务'; $lang->score->models['tutorial'] = '新手教程'; $lang->score->models['user'] = '用户'; -$lang->score->models['ajax'] = ''; +$lang->score->models['ajax'] = '其它'; $lang->score->models['doc'] = '文档'; $lang->score->models['todo'] = '待办'; $lang->score->models['story'] = '需求'; $lang->score->models['bug'] = 'Bug'; -$lang->score->models['testTask'] = '用例'; +$lang->score->models['testcase'] = '用例'; +$lang->score->models['testtask'] = '测试'; $lang->score->models['build'] = 'Build'; $lang->score->models['project'] = '项目'; $lang->score->models['productplan'] = '计划'; @@ -58,7 +55,7 @@ $lang->score->methods['ajax']['dragSelected'] = '列表页面拖动选中 $lang->score->methods['ajax']['lastNext'] = '快捷键翻页'; $lang->score->methods['ajax']['switchToDataTable'] = '使用高级表格'; $lang->score->methods['ajax']['submitPage'] = '修改分页数量'; -$lang->score->methods['ajax']['quickDump'] = '使用快速跳转'; +$lang->score->methods['ajax']['quickJump'] = '使用快速跳转'; $lang->score->methods['ajax']['batchCreate'] = '首次使用批量添加'; $lang->score->methods['ajax']['batchEdit'] = '首次使用批量编辑'; $lang->score->methods['doc']['create'] = '创建文档'; @@ -70,7 +67,8 @@ $lang->score->methods['bug']['confirmBug'] = '确认Bug'; $lang->score->methods['bug']['createFormCase'] = '从用例创建'; $lang->score->methods['bug']['resolve'] = '解决Bug'; $lang->score->methods['bug']['saveTplModal'] = '保存模板'; -$lang->score->methods['testTask']['runCase'] = '执行用例'; +$lang->score->methods['testtask']['runCase'] = '执行用例'; +$lang->score->methods['testcase']['create'] = '创建用例'; $lang->score->methods['build']['create'] = '创建版本'; $lang->score->methods['project']['create'] = '创建项目'; $lang->score->methods['project']['close'] = '项目完成'; diff --git a/module/score/lang/zh-tw.php b/module/score/lang/zh-tw.php index b3d9bbc7f3..08d473539b 100644 --- a/module/score/lang/zh-tw.php +++ b/module/score/lang/zh-tw.php @@ -1 +1,79 @@ score->common = '積分'; +$lang->score->record = '積分記錄'; +$lang->score->current = '當前積分'; +$lang->score->level = '等級積分'; +$lang->score->init = '初始化'; +$lang->score->tips = '昨天增加了積分:%d
現共有積分:%d
今天再接再厲喲! ^_^'; +$lang->score->initTips = '初始化將根據歷史記錄計算,執行時間可能會比較長.
請勿在未完成前關閉窗口'; +$lang->score->initStart = '開始初始化'; +$lang->score->initLoading = '正在初始化...'; +$lang->score->initFinish = '初始化完成'; +$lang->score->processed = '正在處理中...'; + +$lang->score->id = '編號'; +$lang->score->userID = '用戶ID'; +$lang->score->account = '用戶'; +$lang->score->module = '模塊'; +$lang->score->method = '動作'; +$lang->score->before = '之前'; +$lang->score->score = '分值'; +$lang->score->after = '之後'; +$lang->score->time = '時間'; +$lang->score->desc = '描述'; + + +$lang->score->models['task'] = '任務'; +$lang->score->models['tutorial'] = '新手教程'; +$lang->score->models['user'] = '用戶'; +$lang->score->models['ajax'] = '其它'; +$lang->score->models['doc'] = '文檔'; +$lang->score->models['todo'] = '待辦'; +$lang->score->models['story'] = '需求'; +$lang->score->models['bug'] = 'Bug'; +$lang->score->models['testcase'] = '用例'; +$lang->score->models['testtask'] = '測試'; +$lang->score->models['build'] = 'Build'; +$lang->score->models['project'] = '項目'; +$lang->score->models['productplan'] = '計劃'; +$lang->score->models['release'] = '發布'; +$lang->score->models['block'] = '區塊'; +$lang->score->models['search'] = '搜索'; + +$lang->score->methods['task']['create'] = '創建任務'; +$lang->score->methods['task']['close'] = '關閉任務'; +$lang->score->methods['task']['finish'] = '完成任務'; +$lang->score->methods['tutorial']['keepAll'] = '學習完成'; +$lang->score->methods['user']['login'] = '登錄'; +$lang->score->methods['user']['changePassword'] = '修改密碼'; +$lang->score->methods['user']['editProfile'] = '修改個人資料'; +$lang->score->methods['ajax']['selectTheme'] = '切換主題'; +$lang->score->methods['ajax']['selectLang'] = '切換語言'; +$lang->score->methods['ajax']['showSearchMenu'] = '搜索高級用法'; +$lang->score->methods['ajax']['customMenu'] = '自定義菜單'; +$lang->score->methods['ajax']['dragSelected'] = '列表頁面拖動選中'; +$lang->score->methods['ajax']['lastNext'] = '快捷鍵翻頁'; +$lang->score->methods['ajax']['switchToDataTable'] = '使用高級表格'; +$lang->score->methods['ajax']['submitPage'] = '修改分頁數量'; +$lang->score->methods['ajax']['quickJump'] = '使用快速跳轉'; +$lang->score->methods['ajax']['batchCreate'] = '首次使用批量添加'; +$lang->score->methods['ajax']['batchEdit'] = '首次使用批量編輯'; +$lang->score->methods['doc']['create'] = '創建文檔'; +$lang->score->methods['todo']['create'] = '創建待辦'; +$lang->score->methods['story']['create'] = '創建需求'; +$lang->score->methods['story']['close'] = '需求關閉'; +$lang->score->methods['bug']['create'] = '創建Bug'; +$lang->score->methods['bug']['confirmBug'] = '確認Bug'; +$lang->score->methods['bug']['createFormCase'] = '從用例創建'; +$lang->score->methods['bug']['resolve'] = '解決Bug'; +$lang->score->methods['bug']['saveTplModal'] = '保存模板'; +$lang->score->methods['testtask']['runCase'] = '執行用例'; +$lang->score->methods['testcase']['create'] = '創建用例'; +$lang->score->methods['build']['create'] = '創建版本'; +$lang->score->methods['project']['create'] = '創建項目'; +$lang->score->methods['project']['close'] = '項目完成'; +$lang->score->methods['productplan']['create'] = '創建計劃'; +$lang->score->methods['release']['create'] = '創建發布'; +$lang->score->methods['block']['set'] = '區塊自定義設置'; +$lang->score->methods['search']['saveQuery'] = '保存搜索條件'; +$lang->score->methods['search']['saveQueryAdvanced'] = '使用高級搜索'; \ No newline at end of file diff --git a/module/score/model.php b/module/score/model.php index 783f8ffd89..86a4a02f80 100644 --- a/module/score/model.php +++ b/module/score/model.php @@ -9,8 +9,6 @@ */ class scoreModel extends model { - public static $num = 0; - /** * get user score list * @@ -22,7 +20,7 @@ class scoreModel extends model */ public function getListByAccount($account, $pager) { - return $this->dao->select('*')->from(TABLE_SCORE)->where('account')->eq($account)->orderBy('time_desc,id_desc')->page($pager)->fetchAll(); + return $this->dao->select('*')->from(TABLE_SCORE)->where('account')->eq($account)->orderBy('time_desc')->page($pager)->fetchAll(); } /** @@ -86,6 +84,7 @@ class scoreModel extends model { $desc = $this->lang->score->methods[$module][$method] . 'ID:' . $param; $task = $this->loadModel('task')->getById($param); + if(!empty($rule['ext'][$task->pri])) $rule['score'] = $rule['score'] + $rule['ext'][$task->pri]; if(!empty($task->estimate)) $rule['score'] = $rule['score'] + round(($task->consumed / 10 * $task->estimate / $task->consumed), 1); } @@ -129,20 +128,23 @@ class scoreModel extends model if($method == 'create') $desc .= 'ID:' . $param; if($method == 'close') { - $desc = $this->lang->score->methods[$module][$method] . ',' . $desc . 'ID:' . $param->id; - $objectID = $param->id; + $desc = $this->lang->score->methods[$module][$method] . ',' . $desc . 'ID:' . $param->id; + $objectID = $param->id; + $timestamp = empty($time) ? time() : strtotime($time); + //project PM if(!empty($param->PM)) { - $rule['score'] = $param->end > date('Y-m-d', $time) ? $rule['ext']['manager'][0] + $rule['ext']['manager'][1] : $rule['ext']['manager'][0]; + $rule['score'] = $param->end > date('Y-m-d', $timestamp) ? $rule['ext']['manager'][0] + $rule['ext']['manager'][1] : $rule['ext']['manager'][0]; $this->saveScore($param->PM, $rule, $module, $method, $desc, $objectID, $time); } + //project team user $teams = $this->dao->select('account')->from(TABLE_TEAM)->where('project')->eq($param->id)->fetchGroup('account'); if(!empty($teams)) { $users = array_keys($teams); - $rule['score'] = $param->end > date('Y-m-d', $time) ? $rule['ext']['member'][0] + $rule['ext']['member'][1] : $rule['ext']['member'][0]; + $rule['score'] = $param->end > date('Y-m-d', $timestamp) ? $rule['ext']['member'][0] + $rule['ext']['member'][1] : $rule['ext']['member'][0]; foreach($users as $user) { if($user != $param->PM) $this->saveScore($user, $rule, $module, $method, $desc, $objectID, $time); @@ -191,13 +193,13 @@ class scoreModel extends model { if(empty($rule['time'])) { - $count = $this->dao->select('id')->from(TABLE_SCORE)->where('account')->eq($account)->andWhere('model')->eq($module)->andWhere('method')->eq($method)->count(); + $count = $this->dao->select('id')->from(TABLE_SCORE)->where('account')->eq($account)->andWhere('module')->eq($module)->andWhere('method')->eq($method)->count(); if($count >= $rule['num']) return true; } else { $timestamp = empty($time) ? time() : strtotime($time); - $count = $this->dao->select('id')->from(TABLE_SCORE)->where('account')->eq($account)->andWhere('time')->between(date('Y-m-d 0:0:0', $timestamp), date('Y-m-d 23:59:59', $timestamp))->andWhere('model')->eq($module)->andWhere('method')->eq($method)->count(); + $count = $this->dao->select('id')->from(TABLE_SCORE)->where('account')->eq($account)->andWhere('time')->between(date('Y-m-d 0:0:0', $timestamp), date('Y-m-d 23:59:59', $timestamp))->andWhere('module')->eq($module)->andWhere('method')->eq($method)->count(); if($count >= $rule['num']) return true; } } @@ -217,8 +219,8 @@ class scoreModel extends model $data->score = $rule['score']; $data->after = $user->score + $rule['score']; $data->time = empty($time) ? helper::now() : $time; - $this->dao->insert(TABLE_SCORE)->data($data)->exec(); + $this->dao->query("UPDATE " . TABLE_USER . " SET `score`=`score` + " . $rule['score'] . ",`scoreLevel`=`scoreLevel` + " . $rule['score'] . " WHERE `account`='" . $account . "'"); $this->dao->commit(); @@ -229,39 +231,6 @@ class scoreModel extends model } } - /** - * reset all user score and scoreLevel - * - * @param int $lastID - * - * @access public - * @return void - */ - public function reset($lastID = 0) - { - if($lastID == 0) - { - $this->dao->query("DROP TABLE IF EXISTS `score_bak`"); - $this->dao->query("RENAME TABLE " . TABLE_SCORE . ' TO score_bak'); - $this->dao->query("CREATE TABLE " . TABLE_SCORE . ' LIKE score_bak'); - $this->dao->query("UPDATE " . TABLE_USER . " SET `score`=0,`scoreLevel`=0"); - } - - $actions = $this->dao->select('*')->from('score_bak')->where('id')->gt($lastID)->orderBy('id_asc')->limit(100)->fetchAll('id'); - - if(empty($actions)) return array('num' => 0, 'status' => 'finish'); - - foreach($actions as $action) - { - $param = $action->objectID; - if($action->model == 'project' && $action->method == 'close') $param = $this->dao->findById($action->objectID)->from(TABLE_PROJECT)->fetch(); - if($action->model == 'bug' && ($action->method == 'confirmBug' || $action->method == 'resolve')) $param = $this->dao->findById($action->objectID)->from(TABLE_BUG)->fetch(); - $this->score($action->model, $action->method, $param, $action->account, $action->time); - } - - return array('status' => 'more', 'lastID' => max(array_keys($actions))); - } - /** * Score init from action * @@ -290,8 +259,14 @@ class scoreModel extends model { $param = $action->objectID; if($action->objectType == 'project' && $action->action == 'closed') $param = $this->dao->findById($action->objectID)->from(TABLE_PROJECT)->fetch(); - if($action->objectType == 'bug' && ($action->action == 'bugconfirmed' || $action->action == 'resolved')) $param = $this->dao->findById($action->objectID)->from(TABLE_BUG)->fetch(); - $this->score($action->objectType, $this->fixKey($action->action), $param, $action->actor, $action->date); + if($action->objectType == 'bug') + { + $bug = $this->dao->findById($action->objectID)->from(TABLE_BUG)->fetch(); + if(!empty($bug->case)) $action->action = 'createFormCase'; + if($action->action == 'bugconfirmed' || $action->action == 'resolved') $param = $bug; + } + if($action->objectType == 'case') $action->objectType = 'testcase'; + $this->create($action->objectType, $this->fixKey($action->action), $param, $action->actor, $action->date); } return array('status' => 'more', 'lastID' => max(array_keys($actions))); @@ -307,7 +282,36 @@ class scoreModel extends model */ private function fixKey($string) { - $strings = array('created' => 'create', 'closed' => 'close', 'finished' => 'finish', 'bugconfirmed' => 'confirmBug', 'resolved' => 'resolve'); + $strings = array('created' => 'create', 'opened' => 'create', 'closed' => 'close', 'finished' => 'finish', 'bugconfirmed' => 'confirmBug', 'resolved' => 'resolve'); return isset($strings[$string]) ? $strings[$string] : $string; } -} \ No newline at end of file + + /** + * get yesterday's score for user + * + * @access public + * @return string + */ + public function getNotice() + { + if(!isset($this->config->global->score) || empty($this->config->global->score)) return ''; + if($this->cookie->showNotice == strtotime(date('Y-m-d'))) return ''; + + setcookie('showNotice', strtotime(date('Y-m-d')), $this->config->cookieLife, $this->config->webRoot); + + $yesterday = $this->dao->select("sum(score) as score")->from(TABLE_SCORE)->where('time')->between(date('Y-m-d 00:00:00', strtotime('-1 day')), date('Y-m-d 23:59:59', strtotime('-1 day')))->andWhere('account')->eq($this->app->user->account)->fetch(); + + $notice = empty($yesterday->score) ? '' : sprintf($this->lang->score->tips, $yesterday->score, $this->app->user->score); + + $notice .= $this->cookie->showNotice; + + $fullNotice = << + +
{$notice}
+ + +EOT; + return empty($notice) ? '' : $fullNotice; + } +} diff --git a/module/score/view/init.html.php b/module/score/view/init.html.php index c40c52c3ea..4d0c179687 100644 --- a/module/score/view/init.html.php +++ b/module/score/view/init.html.php @@ -56,7 +56,7 @@ else { $('#loading_content').html("
  • " + response.message + "
  • "); - setTimeout(function(){score_init(response.lastID);}, 2000); + setTimeout(function(){score_init(response.lastID);}, 500); } }); } diff --git a/module/score/view/refresh.html.php b/module/score/view/refresh.html.php deleted file mode 100644 index 9afa211468..0000000000 --- a/module/score/view/refresh.html.php +++ /dev/null @@ -1,64 +0,0 @@ - - * @package score - * @version $Id$ - * @link http://www.zentao.net - */ -?> - -
    - -
    -

    score->reset; ?>

    -
    -

    score->resetTips; ?>

    -

    - -

    -
    -
    - - - - \ No newline at end of file diff --git a/module/testtask/control.php b/module/testtask/control.php index 60e5601185..9fffb4e85a 100644 --- a/module/testtask/control.php +++ b/module/testtask/control.php @@ -832,8 +832,8 @@ class testtask extends control } } - $preCase = ''; - $nextCase = ''; + $preCase = array(); + $nextCase = array(); if($preAndNext->pre) { $preCase['runID'] = $runID ? $preAndNext->pre->id : 0; diff --git a/www/js/my.full.js b/www/js/my.full.js index 3712882c44..d0af0e2522 100644 --- a/www/js/my.full.js +++ b/www/js/my.full.js @@ -193,10 +193,10 @@ function showSearchMenu(objectType, objectID, module, method, extra) { $menu.find('#search').focus(); } - if(!$.cookie('ajax_quickDump')) + if(!$.cookie('ajax_quickJump')) { - $.cookie('ajax_quickDump', 'on', {expires: config.cookieLife, path: config.webRoot}); - $.get(createLink('score', 'ajax', "method=quickDump")); + $.cookie('ajax_quickJump', 'on', {expires: config.cookieLife, path: config.webRoot}); + $.get(createLink('score', 'ajax', "method=quickJump")); } }