diff --git a/lib/base/front/front.class.php b/lib/base/front/front.class.php index a2bd0f7a55..8a6e23a5df 100644 --- a/lib/base/front/front.class.php +++ b/lib/base/front/front.class.php @@ -990,7 +990,7 @@ EOT; static public function reload($window = 'self') { $js = self::start(); - $js .= "$window.location.reload();\n"; + $js .= "$window.location.reload(true);\n"; $js .= self::end(); return $js; } diff --git a/module/bug/config.php b/module/bug/config.php index 9785852d0a..482938c24f 100644 --- a/module/bug/config.php +++ b/module/bug/config.php @@ -9,9 +9,6 @@ $config->bug->create->requiredFields = 'title,openedBuild'; $config->bug->edit->requiredFields = $config->bug->create->requiredFields; $config->bug->resolve->requiredFields = 'resolution'; -$config->bug->batchEdit = new stdclass(); -$config->bug->batchEdit->columns = 9; - $config->bug->list = new stdclass(); $config->bug->list->allFields = 'id, module, project, story, task, title, keywords, severity, pri, type, os, browser, hardware, @@ -39,11 +36,13 @@ $config->bug->list->exportFields = 'id, product, module, project, story, task, lastEditedDate, files'; $config->bug->list->customCreateFields = 'project,story,task,pri,severity,os,browser,mailto,keywords'; -$config->bug->list->customBatchCreateFields = 'module,project,os,browser,severity,pri,type,steps,keywords'; +$config->bug->list->customBatchCreateFields = 'module,project,steps,type,pri,severity,os,browser,keywords'; +$config->bug->list->customBatchEditFields = 'type,severity,pri,productplan,assignedTo,status,resolvedBy,resolution,os,browser,keywords'; $config->bug->custom = new stdclass(); $config->bug->custom->create = $config->bug->list->customCreateFields; -$config->bug->custom->batchcreate = $config->bug->list->customBatchCreateFields; +$config->bug->custom->batchcreate = 'module,project,steps,type,severity,os,browser'; +$config->bug->custom->batchedit = 'type,severity,pri,assignedTo,status,resolvedBy,resolution'; $config->bug->editor = new stdclass(); $config->bug->editor->create = array('id' => 'steps', 'tools' => 'bugTools'); diff --git a/module/bug/control.php b/module/bug/control.php index 0e76561db2..e2bc1396ef 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -622,17 +622,27 @@ class bug extends control /* Judge whether the editedTasks is too large and set session. */ $showSuhosinInfo = false; - $showSuhosinInfo = $this->loadModel('common')->judgeSuhosinSetting(count($bugs), $this->config->bug->batchEdit->columns); + $showSuhosinInfo = $this->loadModel('common')->judgeSuhosinSetting(count($bugs), count(explode(',', $this->config->bug->custom->batchedit)) + 2); $this->app->session->set('showSuhosinInfo', $showSuhosinInfo); if($showSuhosinInfo) $this->view->suhosinInfo = $this->lang->suhosinInfo; + /* Set Custom*/ + foreach(explode(',', $this->config->bug->list->customBatchEditFields) as $field) $customFields[$field] = $this->lang->bug->$field; + $this->view->customFields = $customFields; + $this->view->showFields = $this->config->bug->custom->batchedit; + /* Set ditto option for users and type, severity, pri, resolution list. */ $users = $this->user->getPairs('nodeleted,devfirst'); $users['ditto'] = $this->lang->bug->ditto; - $this->lang->bug->typeList ['ditto'] = $this->lang->bug->ditto; - $this->lang->bug->priList ['ditto'] = $this->lang->bug->ditto; + $plans = $this->loadModel('productplan')->getPairs($productID, $branch); + $plans['ditto'] = $this->lang->bug->ditto; + $this->lang->bug->typeList['ditto'] = $this->lang->bug->ditto; + $this->lang->bug->priList['ditto'] = $this->lang->bug->ditto; $this->lang->bug->resolutionList['ditto'] = $this->lang->bug->ditto; - $this->lang->bug->severityList ['ditto'] = $this->lang->bug->ditto; + $this->lang->bug->severityList['ditto'] = $this->lang->bug->ditto; + $this->lang->bug->statusList['ditto'] = $this->lang->bug->ditto; + $this->lang->bug->osList['ditto'] = $this->lang->bug->ditto; + $this->lang->bug->browserList['ditto'] = $this->lang->bug->ditto; /* Assign. */ $this->view->position[] = $this->lang->bug->common; @@ -646,6 +656,7 @@ class bug extends control $this->view->bugs = $bugs; $this->view->branch = $branch; $this->view->users = $users; + $this->view->plans = $plans; $this->display(); } diff --git a/module/bug/js/batchedit.js b/module/bug/js/batchedit.js index a66f0cf3f5..571103fd1f 100644 --- a/module/bug/js/batchedit.js +++ b/module/bug/js/batchedit.js @@ -26,31 +26,3 @@ $(function() $(this).trigger("chosen:updated"); }); }) - -$(document).on('change', 'select', function() -{ - if($(this).val() == 'ditto') - { - var index = $(this).closest('td').index(); - var row = $(this).closest('tr').index(); - var $tbody = $(this).closest('tr').parent(); - - if($(this).attr('name').indexOf('resolutions') != -1) - { - index = $(this).closest('tr').closest('td').index(); - row = $(this).closest('tr').closest('td').parent().index(); - $tbody = $(this).closest('tr').closest('td').parent().parent(); - } - - var value = ''; - for(i = row - 1; i >= 0; i--) - { - value = $tbody.children('tr').eq(i).find('td').eq(index).find('select').val(); - if(value != 'ditto') break; - } - - $(this).val(value); - $(this).trigger("chosen:updated"); - $(this).trigger("change"); - } -}) diff --git a/module/bug/model.php b/module/bug/model.php index 1efd3618ee..bbeaad9f0d 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -512,16 +512,22 @@ class bugModel extends model if($data->types[$bugID] == 'ditto') $data->types[$bugID] = isset($prev['type']) ? $prev['type'] : ''; if($data->severities[$bugID] == 'ditto') $data->severities[$bugID] = isset($prev['severity']) ? $prev['severity'] : 3; if($data->pris[$bugID] == 'ditto') $data->pris[$bugID] = isset($prev['pri']) ? $prev['pri'] : 0; + if($data->plans[$bugID] == 'ditto') $data->plans[$bugID] = isset($prev['plan']) ? $prev['plan'] : ''; if($data->assignedTos[$bugID] == 'ditto') $data->assignedTos[$bugID] = isset($prev['assignedTo']) ? $prev['assignedTo'] : ''; if($data->resolvedBys[$bugID] == 'ditto') $data->resolvedBys[$bugID] = isset($prev['resolvedBy']) ? $prev['resolvedBy'] : ''; if($data->resolutions[$bugID] == 'ditto') $data->resolutions[$bugID] = isset($prev['resolution']) ? $prev['resolution'] : ''; + if($data->os[$bugID] == 'ditto') $data->os[$bugID] = isset($prev['os']) ? $prev['os'] : ''; + if($data->browsers[$bugID] == 'ditto') $data->browsers[$bugID] = isset($prev['browser']) ? $prev['browser'] : ''; $prev['type'] = $data->types[$bugID]; $prev['severity'] = $data->severities[$bugID]; $prev['pri'] = $data->pris[$bugID]; + $prev['plan'] = $data->plans[$bugID]; $prev['assignedTo'] = $data->assignedTos[$bugID]; $prev['resolvedBy'] = $data->resolvedBys[$bugID]; $prev['resolution'] = $data->resolutions[$bugID]; + $prev['os'] = $data->os[$bugID]; + $prev['browser'] = $data->browsers[$bugID]; } /* Initialize bugs from the post data.*/ @@ -537,8 +543,12 @@ class bugModel extends model $bug->pri = $data->pris[$bugID]; $bug->status = $data->statuses[$bugID]; $bug->title = $data->titles[$bugID]; + $bug->plan = $data->plan[$bugID]; $bug->assignedTo = $data->assignedTos[$bugID]; $bug->resolvedBy = $data->resolvedBys[$bugID]; + $bug->keywords = $data->keywords[$bugID]; + $bug->os = $data->os[$bugID]; + $bug->browser = $data->browsers[$bugID]; $bug->resolution = $data->resolutions[$bugID]; $bug->duplicateBug = $data->duplicateBugs[$bugID] ? $data->duplicateBugs[$bugID] : $oldBug->duplicateBug; diff --git a/module/bug/view/batchedit.html.php b/module/bug/view/batchedit.html.php index f8346f8087..8453ed7587 100644 --- a/module/bug/view/batchedit.html.php +++ b/module/bug/view/batchedit.html.php @@ -15,22 +15,36 @@