* code for task#782.
* code for task#795. * rewrite the datepicker logic.
This commit is contained in:
+44
-26
@@ -13,46 +13,64 @@ $config->project->editor->edit = array('id' => 'desc,goal', 'tools' => 'simple
|
||||
$config->project->search['module'] = 'task';
|
||||
$config->project->search['fields']['name'] = $lang->task->name;
|
||||
$config->project->search['fields']['id'] = $lang->task->id;
|
||||
$config->project->search['fields']['status'] = $lang->task->status;
|
||||
$config->project->search['fields']['desc'] = $lang->task->desc;
|
||||
$config->project->search['fields']['assignedTo'] = $lang->task->assignedTo;
|
||||
$config->project->search['fields']['pri'] = $lang->task->pri;
|
||||
|
||||
$config->project->search['fields']['project'] = $lang->task->project;
|
||||
$config->project->search['fields']['type'] = $lang->task->type;
|
||||
$config->project->search['fields']['mailto'] = $lang->task->mailto;
|
||||
$config->project->search['fields']['estimate'] = $lang->task->estimate;
|
||||
$config->project->search['fields']['left'] = $lang->task->left;
|
||||
$config->project->search['fields']['consumed'] = $lang->task->consumed;
|
||||
$config->project->search['fields']['deadline'] = $lang->task->deadline;
|
||||
$config->project->search['fields']['status'] = $lang->task->status;
|
||||
$config->project->search['fields']['pri'] = $lang->task->pri;
|
||||
$config->project->search['fields']['desc'] = $lang->task->desc;
|
||||
$config->project->search['fields']['assignedTo'] = $lang->task->assignedTo;
|
||||
$config->project->search['fields']['assignedDate'] = $lang->task->assignedDate;
|
||||
$config->project->search['fields']['openedDate'] = $lang->task->openedDate;
|
||||
$config->project->search['fields']['type'] = $lang->task->type;
|
||||
$config->project->search['fields']['fromBug'] = $lang->task->fromBug;
|
||||
$config->project->search['fields']['closedReason'] = $lang->task->closedReason;
|
||||
|
||||
$config->project->search['fields']['openedBy'] = $lang->task->openedBy;
|
||||
$config->project->search['fields']['finishedBy'] = $lang->task->finishedBy;
|
||||
$config->project->search['fields']['finishedDate'] = $lang->task->finishedDate;
|
||||
$config->project->search['fields']['canceledBy'] = $lang->task->canceledBy;
|
||||
$config->project->search['fields']['canceledDate'] = $lang->task->canceledDate;
|
||||
$config->project->search['fields']['closedBy'] = $lang->task->closedBy;
|
||||
$config->project->search['fields']['closedDate'] = $lang->task->closedDate;
|
||||
$config->project->search['fields']['closedReason'] = $lang->task->closedReason;
|
||||
$config->project->search['fields']['canceledBy'] = $lang->task->canceledBy;
|
||||
$config->project->search['fields']['lastEditedBy'] = $lang->task->lastEditedBy;
|
||||
|
||||
$config->project->search['fields']['mailto'] = $lang->task->mailto;
|
||||
|
||||
$config->project->search['fields']['openedDate'] = $lang->task->openedDate;
|
||||
$config->project->search['fields']['deadline'] = $lang->task->deadline;
|
||||
$config->project->search['fields']['estStarted'] = $lang->task->estStarted;
|
||||
$config->project->search['fields']['realStarted'] = $lang->task->realStarted;
|
||||
$config->project->search['fields']['assignedDate'] = $lang->task->assignedDate;
|
||||
$config->project->search['fields']['finishedDate'] = $lang->task->finishedDate;
|
||||
$config->project->search['fields']['closedDate'] = $lang->task->closedDate;
|
||||
$config->project->search['fields']['canceledDate'] = $lang->task->canceledDate;
|
||||
$config->project->search['fields']['lastEditedDate'] = $lang->task->lastEditedDate;
|
||||
|
||||
$config->project->search['params']['name'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->project->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->statusList);
|
||||
$config->project->search['params']['desc'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->project->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
$config->project->search['params']['assignedTo'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->project->search['params']['pri'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->priList);
|
||||
|
||||
$config->project->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
$config->project->search['params']['estimate'] = array('operator' => '=', 'control' => 'input', 'values' => '');
|
||||
$config->project->search['params']['left'] = array('operator' => '=', 'control' => 'input', 'values' => '');
|
||||
$config->project->search['params']['consumed'] = array('operator' => '=', 'control' => 'input', 'values' => '');
|
||||
$config->project->search['params']['type'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->typeList);
|
||||
$config->project->search['params']['fromBug'] = array('operator' => '=', 'control' => 'input', 'values' => $lang->task->typeList);
|
||||
$config->project->search['params']['closedReason'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->reasonList);
|
||||
|
||||
$config->project->search['params']['openedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->project->search['params']['finishedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->project->search['params']['closedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->project->search['params']['cancelBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->project->search['params']['lastEditedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->project->search['params']['finishedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
|
||||
$config->project->search['params']['mailto'] = array('operator' => 'include', 'control' => 'select', 'values' => 'users');
|
||||
$config->project->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->statusList);
|
||||
$config->project->search['params']['closedReason'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->reasonList);
|
||||
$config->project->search['params']['pri'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->priList);
|
||||
$config->project->search['params']['type'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->typeList);
|
||||
$config->project->search['params']['assignedDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '');
|
||||
$config->project->search['params']['openedDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '');
|
||||
$config->project->search['params']['finishedDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '');
|
||||
$config->project->search['params']['closedDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '');
|
||||
$config->project->search['params']['canceledDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '');
|
||||
$config->project->search['params']['deadline'] = array('operator' => '=', 'control' => 'input', 'values' => '');
|
||||
|
||||
$config->project->search['params']['openedDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->project->search['params']['deadline'] = array('operator' => '>=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->project->search['params']['estStarted'] = array('operator' => '>=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->project->search['params']['realStarted'] = array('operator' => '>=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->project->search['params']['assignedDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->project->search['params']['finishedDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->project->search['params']['closedDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->project->search['params']['canceledDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
|
||||
@@ -44,7 +44,7 @@ var browseType = '<?php echo $browseType;?>';
|
||||
<th class='w-40px'> <?php common::printOrderLink('consumed', $orderBy, $vars, $lang->task->consumedAB);?></th>
|
||||
<th class='w-40px'> <?php common::printOrderLink('left', $orderBy, $vars, $lang->task->leftAB);?></th>
|
||||
<th><?php common::printOrderLink('story', $orderBy, $vars, $lang->task->story);?></th>
|
||||
<th class='w-100px {sorter:false}'><?php echo $lang->actions;?></th>
|
||||
<th class='w-120px {sorter:false}'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<?php
|
||||
|
||||
@@ -34,6 +34,7 @@ $lang->search->operators['<'] = '<';
|
||||
$lang->search->operators['<='] = '<=';
|
||||
$lang->search->operators['include'] = 'include';
|
||||
$lang->search->operators['notinclude'] = 'not include';
|
||||
$lang->search->operators['belong'] = 'belongs to';
|
||||
|
||||
$lang->search->andor['and'] = 'And';
|
||||
$lang->search->andor['or'] = 'Or';
|
||||
|
||||
@@ -34,6 +34,7 @@ $lang->search->operators['<'] = '<';
|
||||
$lang->search->operators['<='] = '<=';
|
||||
$lang->search->operators['include'] = '包含';
|
||||
$lang->search->operators['notinclude'] = '不包含';
|
||||
$lang->search->operators['belong'] = '从属于';
|
||||
|
||||
$lang->search->andor['and'] = '并且';
|
||||
$lang->search->andor['or'] = '或者';
|
||||
|
||||
+13
-1
@@ -39,7 +39,7 @@ class searchModel extends model
|
||||
$operatorName = "operator$i";
|
||||
$valueName = "value$i";
|
||||
|
||||
/* Skip empty vales. */
|
||||
/* Skip empty values. */
|
||||
if($this->post->$valueName == false) continue;
|
||||
if($this->post->$valueName == 'null') $this->post->$valueName = ''; // Null is special, stands to empty.
|
||||
|
||||
@@ -63,6 +63,18 @@ class searchModel extends model
|
||||
{
|
||||
$where .= ' NOT LIKE ' . $this->dbh->quote("%$value%");
|
||||
}
|
||||
elseif($operator == 'belong')
|
||||
{
|
||||
if($this->post->$fieldName == 'module')
|
||||
{
|
||||
$allModules = $this->loadModel('tree')->getAllChildId($value);
|
||||
$where .= helper::dbIN($allModules);
|
||||
}
|
||||
else
|
||||
{
|
||||
$where .= ' = ' . $this->dbh->quote($value) . ' ';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$where .= $operator . ' ' . $this->dbh->quote($value) . ' ';
|
||||
|
||||
@@ -11,10 +11,14 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/alert.html.php';?>
|
||||
<?php include '../../common/view/datepicker.html.php';?>
|
||||
<style>
|
||||
.helplink {display:none}
|
||||
.button-s, .button-r, .button-c {padding:3px}
|
||||
.select-1 {width:80%}
|
||||
.text-2{margin-bottom:2px}
|
||||
.select-2{margin-bottom:2px}
|
||||
.date{width:104px}
|
||||
</style>
|
||||
<script language='Javascript'>
|
||||
|
||||
@@ -35,12 +39,13 @@ var actionURL = '<?php echo $actionURL;?>';
|
||||
function setField(fieldName, fieldNO)
|
||||
{
|
||||
$('#operator' + fieldNO).val(params[fieldName]['operator']); // Set the operator according the param setting.
|
||||
$('#valueBox' + fieldNO) .html($('#box' + fieldName).children().clone());
|
||||
$('#valueBox' + fieldNO).html($('#box' + fieldName).children().clone());
|
||||
$('#valueBox' + fieldNO).children().attr({name : 'value' + fieldNO, id : 'value' + fieldNO});
|
||||
|
||||
if(fieldName.indexOf('Date') >= 0 || fieldName.indexOf('deadline') >= 0)
|
||||
if(typeof(params[fieldName]['class']) != undefined && params[fieldName]['class'] == 'date')
|
||||
{
|
||||
$("#value" + fieldNO).datePicker({createButton:true, startDate:startDate})
|
||||
$("#value" + fieldNO).addClass('date'); // Shortcut the width of the datepicker to make sure align with others.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,16 +198,9 @@ foreach($fieldParams as $fieldName => $param)
|
||||
if($param['control'] == 'select') echo html::select("value$fieldNO", $param['values'], $formSession["value$fieldNO"], 'class=select-2');
|
||||
if($param['control'] == 'input')
|
||||
{
|
||||
$fieldName = $formSession["field$fieldNO"];
|
||||
if(strpos($fieldName, 'Date') !== false or strpos($fieldName, 'deadline') !== false)
|
||||
{
|
||||
|
||||
echo html::input("value$fieldNO", $formSession["value$fieldNO"], "class='text-2 date'");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::input("value$fieldNO", $formSession["value$fieldNO"], 'class=text-2');
|
||||
}
|
||||
$fieldName = $formSession["field$fieldNO"];
|
||||
$extraClass = isset($param['class']) ? $param['class'] : '';
|
||||
echo html::input("value$fieldNO", $formSession["value$fieldNO"], "class='text-2 $extraClass'");
|
||||
}
|
||||
echo '</span>';
|
||||
|
||||
@@ -240,15 +238,9 @@ foreach($fieldParams as $fieldName => $param)
|
||||
if($param['control'] == 'select') echo html::select("value$fieldNO", $param['values'], $formSession["value$fieldNO"], 'class=select-2');
|
||||
if($param['control'] == 'input')
|
||||
{
|
||||
$fieldName = $formSession["field$fieldNO"];
|
||||
if(strpos($fieldName, 'Date') !== false or strpos($fieldName, 'deadline') !== false)
|
||||
{
|
||||
echo html::input("value$fieldNO", $formSession["value$fieldNO"], "class='text-2 date'");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::input("value$fieldNO", $formSession["value$fieldNO"], 'class=text-2');
|
||||
}
|
||||
$fieldName = $formSession["field$fieldNO"];
|
||||
$extraClass = isset($param['class']) ? $param['class'] : '';
|
||||
echo html::input("value$fieldNO", $formSession["value$fieldNO"], "class='text-2 $extraClass'");
|
||||
}
|
||||
echo '</span>';
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ $lang->story->id = '编号';
|
||||
$lang->story->product = '所属产品';
|
||||
$lang->story->module = '所属模块';
|
||||
$lang->story->source = '来源';
|
||||
$lang->story->fromBug = '来源Bug';
|
||||
$lang->story->release = '发布计划';
|
||||
$lang->story->bug = '相关bug';
|
||||
$lang->story->title = '需求名称';
|
||||
|
||||
@@ -3,29 +3,35 @@ global $lang;
|
||||
$config->testcase->search['module'] = 'testcase';
|
||||
$config->testcase->search['fields']['title'] = $lang->testcase->title;
|
||||
$config->testcase->search['fields']['id'] = $lang->testcase->id;
|
||||
$config->testcase->search['fields']['module'] = $lang->testcase->module;
|
||||
$config->testcase->search['fields']['keywords'] = $lang->testcase->keywords;
|
||||
$config->testcase->search['fields']['lastEditedBy'] = $lang->testcase->lastEditedByAB;
|
||||
$config->testcase->search['fields']['type'] = $lang->testcase->type;
|
||||
|
||||
$config->testcase->search['fields']['pri'] = $lang->testcase->pri;
|
||||
$config->testcase->search['fields']['openedBy'] = $lang->testcase->openedBy;
|
||||
$config->testcase->search['fields']['status'] = $lang->testcase->status;
|
||||
$config->testcase->search['fields']['product'] = $lang->testcase->product;
|
||||
$config->testcase->search['fields']['module'] = $lang->testcase->module;
|
||||
$config->testcase->search['fields']['lastEditedBy'] = $lang->testcase->lastEditedByAB;
|
||||
$config->testcase->search['fields']['pri'] = $lang->testcase->pri;
|
||||
$config->testcase->search['fields']['stage'] = $lang->testcase->stage;
|
||||
|
||||
$config->testcase->search['fields']['openedDate'] = $lang->testcase->openedDate;
|
||||
$config->testcase->search['fields']['lastEditedDate'] = $lang->testcase->lastEditedDateAB;
|
||||
|
||||
$config->testcase->search['params']['title'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->testcase->search['params']['module'] = array('operator' => 'belong', 'control' => 'select', 'values' => 'modules');
|
||||
$config->testcase->search['params']['keywords'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->testcase->search['params']['product'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
$config->testcase->search['params']['module'] = array('operator' => '=', 'control' => 'select', 'values' => 'modules');
|
||||
$config->testcase->search['params']['openedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->testcase->search['params']['lastEditedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->testcase->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->testcase->statusList);
|
||||
$config->testcase->search['params']['pri'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->testcase->priList);
|
||||
$config->testcase->search['params']['type'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->testcase->typeList);
|
||||
|
||||
$config->testcase->search['params']['pri'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->testcase->priList);
|
||||
$config->testcase->search['params']['openedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->testcase->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->testcase->statusList);
|
||||
$config->testcase->search['params']['product'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
$config->testcase->search['params']['stage'] = array('operator' => 'include', 'control' => 'select', 'values' => $lang->testcase->stageList);
|
||||
|
||||
$config->testcase->search['params']['openedDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->testcase->search['params']['lastEditedDate'] = array('operator' => '>=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
|
||||
$config->testcase->defaultSteps = 3;
|
||||
$config->testcase->batchCreate = 10;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user