diff --git a/lib/dao/dao.class.php b/lib/dao/dao.class.php index 53c6f84435..ab2dab368f 100755 --- a/lib/dao/dao.class.php +++ b/lib/dao/dao.class.php @@ -1197,13 +1197,20 @@ class sql */ public function data($data) { - $this->data = $data; + $data = (object) $data; + foreach($data as $field => $value) - { - $field = str_replace(array('`', ',', ' '), '', $field); - $this->sql .= "`$field` = " . $this->quote($value) . ','; - } - $this->sql = rtrim($this->sql, ','); // Remove the last ','. + { + if(!preg_match('|^\w+$|', $field)) + { + unset($data->$field); + continue; + } + $this->sql .= "`$field` = " . $this->quote($value) . ','; + } + + $this->data = $data; + $this->sql = rtrim($this->sql, ','); // Remove the last ','. return $this; } diff --git a/module/action/lang/en.php b/module/action/lang/en.php index 371903a712..16046e5e25 100755 --- a/module/action/lang/en.php +++ b/module/action/lang/en.php @@ -82,6 +82,7 @@ $lang->action->desc->caseconfirmed = '$date, confirmed by $actoraction->desc->bugconfirmed = '$date, confirmed by $actor.'; $lang->action->desc->frombug = '$date, from Bug by $actor BugID:$extra.'; $lang->action->desc->started = '$date, started by $actor.'; +$lang->action->desc->restarted = '$date, continued by $actor' . "\n"; $lang->action->desc->delayed = '$date, delayed by $actor.'; $lang->action->desc->suspended = '$date, suspended by $actor.'; $lang->action->desc->recordestimate = '$date, $actor recorded $extra hours.'; @@ -133,6 +134,7 @@ $lang->action->label->marked = 'edited'; $lang->action->label->linked2project = 'link to project'; $lang->action->label->unlinkedfromproject = 'unlik from project'; $lang->action->label->started = 'started'; +$lang->action->label->restarted = 'continued'; $lang->action->label->recordestimate = 'Hours'; $lang->action->label->editestimate = 'edit hour'; $lang->action->label->canceled = 'canceled'; @@ -210,6 +212,7 @@ $lang->action->search->label['marked'] = $lang->action->label->mark $lang->action->search->label['linked2project'] = $lang->action->label->linked2project; $lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject; $lang->action->search->label['started'] = $lang->action->label->started; +$lang->action->search->label['restarted'] = $lang->action->label->restarted; $lang->action->search->label['recordestimate'] = $lang->action->label->recordestimate; $lang->action->search->label['editestimate'] = $lang->action->label->editestimate; $lang->action->search->label['canceled'] = $lang->action->label->canceled; diff --git a/module/action/lang/zh-cn.php b/module/action/lang/zh-cn.php index 101c8af626..fa884d68cf 100755 --- a/module/action/lang/zh-cn.php +++ b/module/action/lang/zh-cn.php @@ -82,6 +82,7 @@ $lang->action->desc->caseconfirmed = '$date, 由 $actor 确认 $lang->action->desc->bugconfirmed = '$date, 由 $actor 确认Bug。' . "\n"; $lang->action->desc->frombug = '$date, 由 $actor Bug转化而来,Bug编号为 $extra。'; $lang->action->desc->started = '$date, 由 $actor 启动。' . "\n"; +$lang->action->desc->restarted = '$date, 由 $actor 继续。' . "\n"; $lang->action->desc->delayed = '$date, 由 $actor 延期。' . "\n"; $lang->action->desc->suspended = '$date, 由 $actor 挂起。' . "\n"; $lang->action->desc->recordestimate = '$date, 由 $actor 记录工时,消耗 $extra 小时。'; @@ -133,6 +134,7 @@ $lang->action->label->marked = '编辑了'; $lang->action->label->linked2project = '关联项目'; $lang->action->label->unlinkedfromproject = '移除项目'; $lang->action->label->started = '开始'; +$lang->action->label->restarted = '继续'; $lang->action->label->recordestimate = '记录了工时'; $lang->action->label->editestimate = '编辑了工时'; $lang->action->label->canceled = '取消了'; @@ -210,6 +212,7 @@ $lang->action->search->label['marked'] = $lang->action->label->mark $lang->action->search->label['linked2project'] = $lang->action->label->linked2project; $lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject; $lang->action->search->label['started'] = $lang->action->label->started; +$lang->action->search->label['restarted'] = $lang->action->label->restarted; $lang->action->search->label['recordestimate'] = $lang->action->label->recordestimate; $lang->action->search->label['editestimate'] = $lang->action->label->editestimate; $lang->action->search->label['canceled'] = $lang->action->label->canceled; diff --git a/module/common/lang/en.php b/module/common/lang/en.php index 4d205b2c5c..af48deb4e3 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -355,7 +355,7 @@ $lang->zentaoSite = "Official Site"; $lang->chinaScrum = "Scrum community "; $lang->agileTraining = "Training "; $lang->donate = "Donate "; -$lang->proVersion = " zentaoPRO!   "; +$lang->proVersion = " PRO   "; $lang->downNotify = "Down notify"; $lang->suhosinInfo = "Warming:data is too large! Please enlarge the setting of sohusin.post.max_vars and sohusin.request.max_vars in php.ini. Otherwise partial data can't be saved."; @@ -447,6 +447,7 @@ $lang->icons['import'] = 'upload-alt'; $lang->icons['finish'] = 'ok-sign'; $lang->icons['resolve'] = 'ok-sign'; $lang->icons['start'] = 'play'; +$lang->icons['restart'] = 'play'; $lang->icons['run'] = 'play'; $lang->icons['runCase'] = 'play'; $lang->icons['batchRun'] = 'play-sign'; @@ -466,5 +467,4 @@ $lang->icons['recordEstimate'] = 'time'; $lang->icons['customFields'] = 'cogs'; $lang->icons['manage'] = 'cog'; - include (dirname(__FILE__) . '/menuOrder.php'); diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index cb3fd375c0..8a58d8a6bc 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -17,7 +17,7 @@ $lang->at = ' 于 '; $lang->downArrow = '↓'; $lang->null = '空'; -$lang->zentaoPMS = '禅道项目'; +$lang->zentaoPMS = '禅道'; $lang->welcome = "%s项目管理系统"; $lang->myControl = "我的地盘"; $lang->currentPos = '当前位置:'; @@ -355,7 +355,7 @@ $lang->zentaoSite = "官方网站"; $lang->chinaScrum = "Scrum社区  "; $lang->agileTraining = "培训 "; $lang->donate = "捐赠 "; -$lang->proVersion = " 升至专业版!   "; +$lang->proVersion = " 专业版!   "; $lang->downNotify = "下载桌面提醒"; $lang->suhosinInfo = "警告:数据太多,请在php.ini中修改sohusin.post.max_varssohusin.request.max_vars(设置更大的数)。 保存并重新启动apache,否则会造成部分数据无法保存。"; @@ -447,6 +447,7 @@ $lang->icons['import'] = 'upload-alt'; $lang->icons['finish'] = 'ok-sign'; $lang->icons['resolve'] = 'ok-sign'; $lang->icons['start'] = 'play'; +$lang->icons['restart'] = 'play'; $lang->icons['run'] = 'play'; $lang->icons['runCase'] = 'play'; $lang->icons['batchRun'] = 'play-sign'; diff --git a/module/task/config.php b/module/task/config.php index a2e8fa766b..6ee29e4ea7 100644 --- a/module/task/config.php +++ b/module/task/config.php @@ -23,6 +23,7 @@ $config->task->editor->edit = array('id' => 'desc,comment', 'tools' => 'simp $config->task->editor->view = array('id' => 'comment,lastComment', 'tools' => 'simpleTools'); $config->task->editor->assignto = array('id' => 'comment', 'tools' => 'simpleTools'); $config->task->editor->start = array('id' => 'comment', 'tools' => 'simpleTools'); +$config->task->editor->restart = array('id' => 'comment', 'tools' => 'simpleTools'); $config->task->editor->finish = array('id' => 'comment', 'tools' => 'simpleTools'); $config->task->editor->close = array('id' => 'comment', 'tools' => 'simpleTools'); $config->task->editor->activate = array('id' => 'comment', 'tools' => 'simpleTools'); diff --git a/module/task/control.php b/module/task/control.php index e12df4f95c..74de17cc46 100644 --- a/module/task/control.php +++ b/module/task/control.php @@ -631,6 +631,40 @@ class task extends control $this->display(); } + /** + * Restart task + * + * @param int $taskID + * @access public + * @return void + */ + public function restart($taskID) + { + $this->commonAction($taskID); + + if(!empty($_POST)) + { + $this->loadModel('action'); + $changes = $this->task->start($taskID); + if(dao::isError()) die(js::error(dao::getError())); + + if($this->post->comment != '' or !empty($changes)) + { + $act = $this->post->left == 0 ? 'Finished' : 'Restarted'; + $actionID = $this->action->create('task', $taskID, $act, $this->post->comment); + $this->action->logHistory($actionID, $changes); + $this->sendmail($taskID, $actionID); + } + if(isonlybody()) die(js::closeModal('parent.parent', 'this')); + die(js::locate($this->createLink('task', 'view', "taskID=$taskID"), 'parent')); + } + + $this->view->title = $this->view->project->name . $this->lang->colon .$this->lang->task->restart; + $this->view->position[] = $this->lang->task->restart; + $this->view->users = $this->loadModel('user')->getPairs('noletter'); + $this->display(); + } + /** * Close a task. * diff --git a/module/task/lang/en.php b/module/task/lang/en.php index e8a8deb79d..0cfa74ea6d 100644 --- a/module/task/lang/en.php +++ b/module/task/lang/en.php @@ -21,6 +21,7 @@ $lang->task->view = "Info"; $lang->task->logEfforts = "Log working hours"; $lang->task->record = "Estimate"; $lang->task->start = "Start"; +$lang->task->restart = "Continue"; $lang->task->finish = "Finish"; $lang->task->pause = "Pause"; $lang->task->close = "Close"; diff --git a/module/task/lang/zh-cn.php b/module/task/lang/zh-cn.php index 7476caf050..1106e97887 100644 --- a/module/task/lang/zh-cn.php +++ b/module/task/lang/zh-cn.php @@ -21,6 +21,7 @@ $lang->task->view = "查看任务"; $lang->task->logEfforts = "记录工时"; $lang->task->record = "工时"; $lang->task->start = "开始"; +$lang->task->restart = "继续"; $lang->task->finish = "完成"; $lang->task->pause = "暂停"; $lang->task->close = "关闭"; diff --git a/module/task/model.php b/module/task/model.php index f4eb813799..d43df45b96 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -1362,12 +1362,13 @@ class taskModel extends model $action = strtolower($action); if($action == 'assignto') return $task->status != 'closed' and $task->status != 'cancel'; - if($action == 'start') return $task->status != 'doing' and $task->status != 'closed' and $task->status != 'cancel'; + if($action == 'start') return $task->status != 'doing' and $task->status != 'closed' and $task->status != 'cancel' and $task->status != 'pause'; + if($action == 'restart') return $task->status == 'pause'; if($action == 'finish') return $task->status != 'done' and $task->status != 'closed' and $task->status != 'cancel'; if($action == 'close') return $task->status == 'done' or $task->status == 'cancel'; if($action == 'activate') return $task->status == 'done' or $task->status == 'closed' or $task->status == 'cancel' ; if($action == 'cancel') return $task->status != 'done' and $task->status != 'closed' and $task->status != 'cancel'; - if($action == 'pause') return $task->status != 'done' and $task->status != 'closed' and $task->status != 'cancel' and $task->status != 'wait' and $task->status != 'pause'; + if($action == 'pause') return $task->status == 'doing'; return true; } diff --git a/module/task/view/restart.html.php b/module/task/view/restart.html.php new file mode 100644 index 0000000000..7fd6794073 --- /dev/null +++ b/module/task/view/restart.html.php @@ -0,0 +1,14 @@ + + * @package task + * @version $Id: start.html.php 935 2010-07-06 07:49:24Z jajacn@126.com $ + * @link http://www.zentao.net + */ +?> +task->start = $lang->task->restart;?> + diff --git a/module/task/view/view.html.php b/module/task/view/view.html.php index a74668c686..db93d4c25c 100644 --- a/module/task/view/view.html.php +++ b/module/task/view/view.html.php @@ -33,6 +33,7 @@ echo "
"; common::printIcon('task', 'assignTo', "projectID=$task->project&taskID=$task->id", $task, 'button', '', '', 'iframe', true); common::printIcon('task', 'start', "taskID=$task->id", $task, 'button', '', '', 'iframe', true); + common::printIcon('task', 'restart', "taskID=$task->id", $task, 'button', '', '', 'iframe', true); common::printIcon('task', 'recordEstimate', "taskID=$task->id", $task, 'button', '', '', 'iframe', true); common::printIcon('task', 'pause', "taskID=$task->id", $task, 'button', '', '', 'iframe', true); common::printIcon('task', 'finish', "taskID=$task->id", $task, 'button', '', '', 'iframe showinonlybody text-success', true); diff --git a/module/upgrade/lang/zh-cn.php b/module/upgrade/lang/zh-cn.php index b7b5b4ed37..6ea357a34d 100644 --- a/module/upgrade/lang/zh-cn.php +++ b/module/upgrade/lang/zh-cn.php @@ -38,7 +38,7 @@ $lang->upgrade->toVersion = '升级到'; $lang->upgrade->confirm = '确认要执行的SQL语句'; $lang->upgrade->sureExecute = '确认执行'; $lang->upgrade->forbiddenExt = '以下插件与新版本不兼容,已经自动禁用:'; -$lang->upgrade->checkExtension = '正在检查插件的兼容性,请稍后 ...'; +$lang->upgrade->checkExtension = '正在检查插件的兼容性,请稍候 ...'; $lang->upgrade->fromVersions['0_3beta'] = '0.3 BETA'; $lang->upgrade->fromVersions['0_4beta'] = '0.4 BETA';