/**
  * Build the tree menu for generation of JavaScript test case tree.
  * Depending on mode and user's selections in user interface, 
  * either a completely filtered tree will be build and returned,
  * or only the minimal necessary data to "lazy load" 
  * the objects in the tree by later Ajax calls.
  * No return value - all variables will be stored in gui object
  * which is passed by reference.
  * 
  * @author Andreas Simon
  * @param object $gui Reference to GUI object (data will be written to it)
  */
 public function build_tree_menu(&$gui)
 {
     $tree_menu = null;
     $filters = $this->get_active_filters();
     $additional_info = null;
     $options = null;
     $loader = '';
     $children = "[]";
     $cookie_prefix = '';
     // by default, disable drag and drop, then later enable if needed
     $drag_and_drop = new stdClass();
     $drag_and_drop->enabled = false;
     $drag_and_drop->BackEndUrl = '';
     $drag_and_drop->useBeforeMoveNode = FALSE;
     if (!$this->testproject_mgr) {
         $this->testproject_mgr = new testproject($this->db);
     }
     $tc_prefix = $this->testproject_mgr->getTestCasePrefix($this->args->testproject_id);
     switch ($this->mode) {
         case 'plan_mode':
             // No lazy loading here.
             $additional_info = new stdClass();
             $additional_info->useCounters = CREATE_TC_STATUS_COUNTERS_OFF;
             $additional_info->useColours = COLOR_BY_TC_STATUS_OFF;
             $additional_info->testcases_colouring_by_selected_build = DISABLED;
             $filters->show_testsuite_contents = 1;
             $filters->hide_testcases = 0;
             if ($this->args->feature == 'test_urgency') {
                 $filters->hide_testcases = 1;
             }
             list($tree_menu, $testcases_to_show) = generateExecTree($this->db, $gui->menuUrl, $this->args->testproject_id, $this->args->testproject_name, $this->args->testplan_id, $this->args->testplan_name, $filters, $additional_info);
             $this->set_testcases_to_show($testcases_to_show);
             $root_node = $tree_menu->rootnode;
             $children = $tree_menu->menustring ? $tree_menu->menustring : "[]";
             $cookie_prefix = $this->args->feature;
             break;
         case 'edit_mode':
             if ($gui->tree_drag_and_drop_enabled[$this->args->feature]) {
                 $drag_and_drop->enabled = true;
                 $drag_and_drop->BackEndUrl = $this->args->basehref . 'lib/ajax/dragdroptprojectnodes.php';
                 $drag_and_drop->useBeforeMoveNode = false;
             }
             if ($this->do_filtering) {
                 $options = array('forPrinting' => NOT_FOR_PRINTING, 'hideTestCases' => SHOW_TESTCASES, 'tc_action_enabled' => DO_ON_TESTCASE_CLICK, 'ignore_inactive_testcases' => DO_NOT_FILTER_INACTIVE_TESTCASES, 'exclude_branches' => null);
                 $tree_menu = generateTestSpecTree($this->db, $this->args->testproject_id, $this->args->testproject_name, $gui->menuUrl, $filters, $options);
                 $root_node = $tree_menu->rootnode;
                 $children = $tree_menu->menustring ? $tree_menu->menustring : "[]";
                 $cookie_prefix = $this->args->feature;
             } else {
                 $loader = $this->args->basehref . 'lib/ajax/gettprojectnodes.php?' . "root_node={$this->args->testproject_id}&" . "tcprefix=" . urlencode($tc_prefix . $this->configuration->tc_cfg->glue_character);
                 $tcase_qty = $this->testproject_mgr->count_testcases($this->args->testproject_id);
                 $root_node = new stdClass();
                 $root_node->href = "javascript:EP({$this->args->testproject_id})";
                 $root_node->id = $this->args->testproject_id;
                 $root_node->name = $this->args->testproject_name . " ({$tcase_qty})";
                 $root_node->testlink_node_type = 'testproject';
                 $cookie_prefix = 'tproject_' . $root_node->id . "_";
             }
             break;
         case 'plan_add_mode':
             $cookie_prefix = "planaddtc_{$this->args->testproject_id}_{$this->args->user_id}_";
             if ($this->do_filtering) {
                 $options = array('forPrinting' => NOT_FOR_PRINTING, 'hideTestCases' => HIDE_TESTCASES, 'tc_action_enabled' => ACTION_TESTCASE_DISABLE, 'ignore_inactive_testcases' => IGNORE_INACTIVE_TESTCASES, 'viewType' => 'testSpecTreeForTestPlan');
                 $tree_menu = generateTestSpecTree($this->db, $this->args->testproject_id, $this->args->testproject_name, $gui->menuUrl, $filters, $options);
                 $root_node = $tree_menu->rootnode;
                 $children = $tree_menu->menustring ? $tree_menu->menustring : "[]";
             } else {
                 $loader = $this->args->basehref . 'lib/ajax/gettprojectnodes.php?' . "root_node={$this->args->testproject_id}&show_tcases=0";
                 $root_node = new stdClass();
                 $root_node->href = "javascript:EP({$this->args->testproject_id})";
                 $root_node->id = $this->args->testproject_id;
                 $root_node->name = $this->args->testproject_name;
                 $root_node->testlink_node_type = 'testproject';
             }
             break;
         case 'execution_mode':
         default:
             // No lazy loading here.
             // Filtering is always done in execution mode, no matter if user enters data or not,
             // since the user should usually never see the whole tree here.
             $additional_info = new stdClass();
             $filters->hide_testcases = false;
             $filters->show_testsuite_contents = $this->configuration->exec_cfg->show_testsuite_contents;
             $additional_info->useCounters = $this->configuration->exec_cfg->enable_tree_testcase_counters;
             $additional_info->useColours = new stdClass();
             $additional_info->useColours->testcases = $this->configuration->exec_cfg->enable_tree_testcases_colouring;
             $additional_info->useColours->counters = $this->configuration->exec_cfg->enable_tree_counters_colouring;
             $additional_info->testcases_colouring_by_selected_build = $this->configuration->exec_cfg->testcases_colouring_by_selected_build;
             list($tree_menu, $testcases_to_show) = generateExecTree($this->db, $gui->menuUrl, $this->args->testproject_id, $this->args->testproject_name, $this->args->testplan_id, $this->args->testplan_name, $filters, $additional_info);
             $this->set_testcases_to_show($testcases_to_show);
             $root_node = $tree_menu->rootnode;
             $children = $tree_menu->menustring ? $tree_menu->menustring : "[]";
             $cookie_prefix = 'exec_tplan_id_' . $this->args->testplan_id;
             break;
     }
     $gui->tree = $tree_menu;
     $gui->ajaxTree = new stdClass();
     $gui->ajaxTree->loader = $loader;
     $gui->ajaxTree->root_node = $root_node;
     $gui->ajaxTree->children = $children;
     $gui->ajaxTree->cookiePrefix = $cookie_prefix;
     $gui->ajaxTree->dragDrop = $drag_and_drop;
 }
Пример #2
0
        //		$filters->statusAllPrevBuilds = null;
        $filters->filter_keywords = null;
        $filters->filter_keywords_filter_type = null;
        $filters->filter_tc_id = null;
        $filters->filter_assigned_user = null;
        $filters->filter_result_result = null;
        $filters->filter_custom_fields = null;
        $filters->setting_platform = null;
        $filters->filter_result_build = $latestBuild;
        $filters->hide_testcases = HIDE_TESTCASES;
        $filters->filter_assigned_user_include_unassigned = true;
        $filters->show_testsuite_contents = true;
        // ----- BUGID 3451 and related ---------------------------------------
        $additionalInfo->useCounters = CREATE_TC_STATUS_COUNTERS_OFF;
        $additionalInfo->useColours = COLOR_BY_TC_STATUS_OFF;
        list($treeContents, $additionalArgs) = generateExecTree($db, $workPath, $args->tproject_id, $args->tproject_name, $args->tplan_id, $testplan_name, $filters, $additionalInfo);
        $tree = $treeContents->menustring;
        $gui->ajaxTree = new stdClass();
        $gui->ajaxTree->root_node = $treeContents->rootnode;
        $gui->ajaxTree->children = $treeContents->menustring;
        $gui->ajaxTree->loadFromChildren = true;
        $gui->ajaxTree->cookiePrefix .= $gui->ajaxTree->root_node->id . "_";
        break;
    default:
        tLog("Argument _REQUEST['type'] has invalid value", 'ERROR');
        exit;
        break;
}
$smarty = new TLSmarty();
$smarty->assign('gui', $gui);
$smarty->assign('arrCheckboxes', $arrCheckboxes);
Пример #3
0
        // Set of filters Off
        $filters->filter_keywords = null;
        $filters->filter_keywords_filter_type = null;
        $filters->filter_tc_id = null;
        $filters->filter_assigned_user = null;
        $filters->filter_result_result = null;
        $filters->filter_custom_fields = null;
        $filters->setting_platform = null;
        $filters->filter_result_build = $latestBuild;
        $filters->hide_testcases = HIDE_TESTCASES;
        $filters->filter_assigned_user_include_unassigned = true;
        $filters->show_testsuite_contents = true;
        $additionalInfo->useCounters = CREATE_TC_STATUS_COUNTERS_OFF;
        $additionalInfo->useColours = null;
        $env = array("tproject_id" => $args->tproject_id, "tplan_id" => $args->tplan_id, "tproject_name" => $args->tproject_name, "tplan_name" => $testplan_name);
        list($treeContents, $additionalArgs) = generateExecTree($db, $workPath, $env, $filters, $additionalInfo);
        $tree = $treeContents->menustring;
        $gui->ajaxTree = new stdClass();
        $gui->ajaxTree->root_node = $treeContents->rootnode;
        $gui->ajaxTree->children = $treeContents->menustring;
        $gui->ajaxTree->loadFromChildren = true;
        $report = $args->doc_type == "testplan" ? "test_plan_report" : "test_report";
        $gui->ajaxTree->cookiePrefix .= "{$report}_tplan_id_{$args->tplan_id}_";
        break;
    default:
        tLog("Argument _REQUEST['type'] has invalid value", 'ERROR');
        exit;
        break;
}
$smarty = new TLSmarty();
$smarty->assign('gui', $gui);