[evolvis-commits] r18330: merge 1.9.3 import

mirabilos at evolvis.org mirabilos at evolvis.org
Wed Apr 11 11:34:33 CEST 2012


Author: mirabilos
Date: 2012-04-11 11:34:31 +0200 (Wed, 11 Apr 2012)
New Revision: 18330

Added:
   trunk/testlink/.gitignore
   trunk/testlink/cfg/custom_reports.cfg.php
   trunk/testlink/cfg/custom_reports.cfg.php.example
   trunk/testlink/cfg/polarion.cfg.php
   trunk/testlink/docs/file_examples/custom_fields/RE-XMLRPC-customFields.xml
   trunk/testlink/docs/file_examples/custom_fields/cf4RemoteExecServerCfg.xml
   trunk/testlink/docs/file_examples/custom_fields/cf4RemoteExecServerCfgKO.xml
   trunk/testlink/docs/file_examples/custom_fields/moreUsefulCustomFields.xml
   trunk/testlink/docs/file_examples/custom_fields/ragged_file.xml
   trunk/testlink/docs/file_examples/custom_fields/ragged_file2.xml
   trunk/testlink/docs/file_examples/platforms/browsers.xml
   trunk/testlink/docs/file_examples/platforms/dbms.xml
   trunk/testlink/docs/file_examples/platforms/formulaone.xml
   trunk/testlink/docs/file_examples/platforms/motogp.xml
   trunk/testlink/docs/file_examples/requirements/req-1500-example-tl.csv
   trunk/testlink/docs/file_examples/requirements/req-1500-example.csv
   trunk/testlink/docs/file_examples/testspec/4-testcase-3-steps.xml
   trunk/testlink/docs/file_examples/testspec/single-testcase-3-steps.xml
   trunk/testlink/gui/templates/execute/execHistory.tpl
   trunk/testlink/gui/themes/default/css/custom.css.example
   trunk/testlink/lib/bugtracking/int_polarion.php
   trunk/testlink/lib/execute/execHistory.php
   trunk/testlink/lib/requirements/reqPrint.php
   trunk/testlink/lib/requirements/reqSpecPrint.php
   trunk/testlink/lib/testcases/tcPrint.php
   trunk/testlink/locale/cs_CZ/custom_strings.txt.example
   trunk/testlink/locale/de_DE/custom_strings.txt.example
   trunk/testlink/locale/en_GB/custom_strings.txt.example
   trunk/testlink/locale/en_US/custom_strings.txt.example
   trunk/testlink/locale/es_AR/custom_strings.txt.example
   trunk/testlink/locale/es_ES/custom_strings.txt.example
   trunk/testlink/locale/fi_FI/custom_strings.txt.example
   trunk/testlink/locale/fr_FR/custom_strings.txt.example
   trunk/testlink/locale/id_ID/custom_strings.txt.example
   trunk/testlink/locale/it_IT/custom_strings.txt.example
   trunk/testlink/locale/ja_JP/custom_strings.txt.example
   trunk/testlink/locale/ko_KR/custom_strings.txt.example
   trunk/testlink/locale/nl_NL/custom_strings.txt.example
   trunk/testlink/locale/pl_PL/custom_strings.txt.example
   trunk/testlink/locale/pt_BR/custom_strings.txt.example
   trunk/testlink/locale/ru_RU/custom_strings.txt.example
   trunk/testlink/locale/zh_CN/custom_strings.txt.example
   trunk/testlink/third_party/codeplex/
   trunk/testlink/third_party/ext-js/css/theme-gray/pivotgrid.css
   trunk/testlink/third_party/ext-js/images/gray/grid/sort-hd.gif
   trunk/testlink/third_party/ext-js/release-notes.html
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-am.js
   trunk/testlink/third_party/user_contribution/fakeRemoteExecServer/
Removed:
   trunk/testlink/logs/config_check.txt
   trunk/testlink/logs/userlog0.log
   trunk/testlink/logs/userlog1.log
   trunk/testlink/third_party/ext-js/resources.jsb
   trunk/testlink/third_party/phpexcel/
Modified:
   trunk/testlink/
   trunk/testlink/CHANGELOG
   trunk/testlink/README
   trunk/testlink/cfg/const.inc.php
   trunk/testlink/cfg/reports.cfg.php
   trunk/testlink/cfg/tl_fckeditor_config.js
   trunk/testlink/config.inc.php
   trunk/testlink/custom_config.inc.php.example
   trunk/testlink/docs/Configuration_of_FCKEditor_and_CKFinder.pdf
   trunk/testlink/gui/javascript/execTree.js
   trunk/testlink/gui/javascript/execTreeWithMenu.js
   trunk/testlink/gui/javascript/ext_extensions.js
   trunk/testlink/gui/javascript/tcTree.js
   trunk/testlink/gui/javascript/testlink_library.js
   trunk/testlink/gui/javascript/treebyloader.js
   trunk/testlink/gui/templates/cfields/cfieldsTprojectAssign.tpl
   trunk/testlink/gui/templates/cfields/cfieldsView.tpl
   trunk/testlink/gui/templates/classTester.tpl
   trunk/testlink/gui/templates/execute/bugAdd.tpl
   trunk/testlink/gui/templates/execute/execNavigator.tpl
   trunk/testlink/gui/templates/execute/execSetResults.tpl
   trunk/testlink/gui/templates/execute/inc_exec_test_spec.tpl
   trunk/testlink/gui/templates/inc_filter_panel.tpl
   trunk/testlink/gui/templates/inc_head.tpl
   trunk/testlink/gui/templates/inc_res_by_prio.tpl
   trunk/testlink/gui/templates/inc_res_by_ts.tpl
   trunk/testlink/gui/templates/inc_show_bug_table.tpl
   trunk/testlink/gui/templates/input_dimensions.conf
   trunk/testlink/gui/templates/keywords/keywordsView.tpl
   trunk/testlink/gui/templates/mainPageRight.tpl
   trunk/testlink/gui/templates/plan/buildView.tpl
   trunk/testlink/gui/templates/plan/inc_controls_planEdit.tpl
   trunk/testlink/gui/templates/plan/newest_tcversions.tpl
   trunk/testlink/gui/templates/plan/planAddTCNavigator.tpl
   trunk/testlink/gui/templates/plan/planAddTC_m1.tpl
   trunk/testlink/gui/templates/plan/planMilestonesEdit.tpl
   trunk/testlink/gui/templates/plan/planTCNavigator.tpl
   trunk/testlink/gui/templates/plan/planUpdateTC.tpl
   trunk/testlink/gui/templates/plan/planUrgency.tpl
   trunk/testlink/gui/templates/plan/planView.tpl
   trunk/testlink/gui/templates/plan/tc_exec_assignment.tpl
   trunk/testlink/gui/templates/platforms/platformsEdit.tpl
   trunk/testlink/gui/templates/platforms/platformsView.tpl
   trunk/testlink/gui/templates/project/projectView.tpl
   trunk/testlink/gui/templates/requirements/inc_btn_reqSpecView.tpl
   trunk/testlink/gui/templates/requirements/reqCompareVersions.tpl
   trunk/testlink/gui/templates/requirements/reqCopy.tpl
   trunk/testlink/gui/templates/requirements/reqCreateTestCases.tpl
   trunk/testlink/gui/templates/requirements/reqEdit.tpl
   trunk/testlink/gui/templates/requirements/reqSpecEdit.tpl
   trunk/testlink/gui/templates/requirements/reqSpecView.tpl
   trunk/testlink/gui/templates/requirements/reqTcAssign.tpl
   trunk/testlink/gui/templates/requirements/reqTcBulkAssignment.tpl
   trunk/testlink/gui/templates/requirements/reqViewRevisionRO.tpl
   trunk/testlink/gui/templates/requirements/reqViewRevisionViewer.tpl
   trunk/testlink/gui/templates/requirements/reqViewVersions.tpl
   trunk/testlink/gui/templates/requirements/reqViewVersionsViewer.tpl
   trunk/testlink/gui/templates/results/inc_results_show_table.tpl
   trunk/testlink/gui/templates/results/metricsDashboard.tpl
   trunk/testlink/gui/templates/results/printDocOptions.tpl
   trunk/testlink/gui/templates/results/resultsBugs.tpl
   trunk/testlink/gui/templates/results/resultsByTesterPerBuild.tpl
   trunk/testlink/gui/templates/results/resultsGeneral.tpl
   trunk/testlink/gui/templates/results/resultsMoreBuilds.tpl
   trunk/testlink/gui/templates/results/resultsMoreBuildsGUI.tpl
   trunk/testlink/gui/templates/results/resultsReqs.tpl
   trunk/testlink/gui/templates/testcases/containerDelete.tpl
   trunk/testlink/gui/templates/testcases/containerDeleteTC.tpl
   trunk/testlink/gui/templates/testcases/containerEdit.tpl
   trunk/testlink/gui/templates/testcases/containerNew.tpl
   trunk/testlink/gui/templates/testcases/inc_testsuite_viewer_ro.tpl
   trunk/testlink/gui/templates/testcases/tcAssign2Tplan.tpl
   trunk/testlink/gui/templates/testcases/tcDelete.tpl
   trunk/testlink/gui/templates/testcases/tcNew.tpl
   trunk/testlink/gui/templates/testcases/tcStepEdit.tpl
   trunk/testlink/gui/templates/testcases/tcTree.tpl
   trunk/testlink/gui/templates/testcases/tcView.tpl
   trunk/testlink/gui/templates/testcases/tcView_viewer.tpl
   trunk/testlink/gui/templates/usermanagement/userInfo.tpl
   trunk/testlink/gui/templates/usermanagement/usersView.tpl
   trunk/testlink/gui/themes/default/css/testlink.css
   trunk/testlink/gui/themes/default/css/tl_documents.css
   trunk/testlink/install/sql/alter_tables/1.0.4_to_1.6/build.sql
   trunk/testlink/install/sql/alter_tables/1.0.4_to_1.6/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.5_to_1.6/build.sql
   trunk/testlink/install/sql/alter_tables/1.5_to_1.6/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.6/build.sql
   trunk/testlink/install/sql/alter_tables/1.6/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7.1/mssql/builds.sql
   trunk/testlink/install/sql/alter_tables/1.7.1/mssql/tcversions.sql
   trunk/testlink/install/sql/alter_tables/1.7.1/mssql/testplans.sql
   trunk/testlink/install/sql/alter_tables/1.7.1/mssql/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7.1/mysql/builds.sql
   trunk/testlink/install/sql/alter_tables/1.7.1/mysql/tcversions.sql
   trunk/testlink/install/sql/alter_tables/1.7.1/mysql/testplans.sql
   trunk/testlink/install/sql/alter_tables/1.7.1/mysql/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7.1/postgres/builds.sql
   trunk/testlink/install/sql/alter_tables/1.7.1/postgres/tcversions.sql
   trunk/testlink/install/sql/alter_tables/1.7.1/postgres/testplans.sql
   trunk/testlink/install/sql/alter_tables/1.7.1/postgres/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_3/builds.sql
   trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_3/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_4/requirements.sql
   trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_4/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_5/priorities.sql
   trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_5/risk_assignments.sql
   trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_5/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_2/requirements.sql
   trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_2/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_3/milestones.sql
   trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_3/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_4/remove_redundant_indexes.sql
   trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_3/builds.sql
   trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_3/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_4/requirements.sql
   trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_4/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_5/priorities.sql
   trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_5/risk_assignments.sql
   trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_5/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7/postgres/rc_2/requirements.sql
   trunk/testlink/install/sql/alter_tables/1.7/postgres/rc_2/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.7/postgres/rc_3/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.8/mssql/DB.1.2/db_version.sql
   trunk/testlink/install/sql/alter_tables/1.8/mssql/DB.1.2/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.8/mysql/DB.1.2/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.8/postgres/DB.1.2/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.9.1/mysql/DB.1.4/stepZ/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.9.1/postgres/DB.1.4/stepZ/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.9/mssql/DB.1.3/stepZ/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.9/mysql/DB.1.3/stepZ/z_final_step.sql
   trunk/testlink/install/sql/alter_tables/1.9/postgres/DB.1.3/stepZ/z_final_step.sql
   trunk/testlink/install/sql/mssql/testlink_create_tables.sql
   trunk/testlink/lib/ajax/getrequirementnodes.php
   trunk/testlink/lib/ajax/gettprojectnodes.php
   trunk/testlink/lib/api/APIKey.php
   trunk/testlink/lib/api/sample_clients/php/index.php
   trunk/testlink/lib/api/xmlrpc.class.php
   trunk/testlink/lib/bugtracking/int_bugtracking.php
   trunk/testlink/lib/bugtracking/int_bugzilla.php
   trunk/testlink/lib/bugtracking/int_seapine.php
   trunk/testlink/lib/execute/execSetResults.php
   trunk/testlink/lib/functions/assignment_mgr.class.php
   trunk/testlink/lib/functions/build_progress.class.php
   trunk/testlink/lib/functions/cfield_mgr.class.php
   trunk/testlink/lib/functions/common.php
   trunk/testlink/lib/functions/configCheck.php
   trunk/testlink/lib/functions/csv.inc.php
   trunk/testlink/lib/functions/exec.inc.php
   trunk/testlink/lib/functions/exttable.class.php
   trunk/testlink/lib/functions/print.inc.php
   trunk/testlink/lib/functions/remote_exec.php
   trunk/testlink/lib/functions/requirement_mgr.class.php
   trunk/testlink/lib/functions/requirement_spec_mgr.class.php
   trunk/testlink/lib/functions/requirements.inc.php
   trunk/testlink/lib/functions/results.class.php
   trunk/testlink/lib/functions/specview.php
   trunk/testlink/lib/functions/testPlanUrgency.class.php
   trunk/testlink/lib/functions/testcase.class.php
   trunk/testlink/lib/functions/testplan.class.php
   trunk/testlink/lib/functions/testproject.class.php
   trunk/testlink/lib/functions/testsuite.class.php
   trunk/testlink/lib/functions/tlFilterControl.class.php
   trunk/testlink/lib/functions/tlKeyword.class.php
   trunk/testlink/lib/functions/tlRequirementFilterControl.class.php
   trunk/testlink/lib/functions/tlTestCaseFilterControl.class.php
   trunk/testlink/lib/functions/tlTestPlanMetrics.class.php
   trunk/testlink/lib/functions/tlUser.class.php
   trunk/testlink/lib/functions/tlsmarty.inc.php
   trunk/testlink/lib/functions/treeMenu.inc.php
   trunk/testlink/lib/functions/xml.inc.php
   trunk/testlink/lib/general/mainPage.php
   trunk/testlink/lib/plan/planAddTC.php
   trunk/testlink/lib/plan/planImport.php
   trunk/testlink/lib/plan/planMilestonesCommands.class.php
   trunk/testlink/lib/plan/planUrgency.php
   trunk/testlink/lib/plan/tc_exec_assignment.php
   trunk/testlink/lib/platforms/platformsEdit.php
   trunk/testlink/lib/requirements/reqCommands.class.php
   trunk/testlink/lib/requirements/reqEdit.php
   trunk/testlink/lib/requirements/reqImport.php
   trunk/testlink/lib/requirements/reqSpecCommands.class.php
   trunk/testlink/lib/requirements/reqSpecView.php
   trunk/testlink/lib/requirements/reqView.php
   trunk/testlink/lib/results/metricsDashboard.php
   trunk/testlink/lib/results/printDocOptions.php
   trunk/testlink/lib/results/printDocument.php
   trunk/testlink/lib/results/resultsByTesterPerBuild.php
   trunk/testlink/lib/results/resultsGeneral.php
   trunk/testlink/lib/results/resultsImport.php
   trunk/testlink/lib/results/resultsReqs.php
   trunk/testlink/lib/results/resultsTC.php
   trunk/testlink/lib/results/testCasesWithCF.php
   trunk/testlink/lib/results/testCasesWithoutTester.php
   trunk/testlink/lib/testcases/containerEdit.php
   trunk/testlink/lib/testcases/tcAssign2Tplan.php
   trunk/testlink/lib/testcases/tcAssignedToUser.php
   trunk/testlink/lib/testcases/tcEdit.php
   trunk/testlink/lib/testcases/tcImport.php
   trunk/testlink/lib/testcases/testcaseCommands.class.php
   trunk/testlink/linkto.php
   trunk/testlink/locale/cs_CZ/strings.txt
   trunk/testlink/locale/de_DE/description.php
   trunk/testlink/locale/de_DE/strings.txt
   trunk/testlink/locale/en_GB/description.php
   trunk/testlink/locale/en_GB/strings.txt
   trunk/testlink/locale/en_GB/texts.php
   trunk/testlink/locale/en_US/description.php
   trunk/testlink/locale/en_US/strings.txt
   trunk/testlink/locale/en_US/texts.php
   trunk/testlink/locale/es_AR/strings.txt
   trunk/testlink/locale/es_ES/strings.txt
   trunk/testlink/locale/fi_FI/strings.txt
   trunk/testlink/locale/fr_FR/description.php
   trunk/testlink/locale/fr_FR/strings.txt
   trunk/testlink/locale/fr_FR/texts.php
   trunk/testlink/locale/id_ID/strings.txt
   trunk/testlink/locale/it_IT/strings.txt
   trunk/testlink/locale/ja_JP/strings.txt
   trunk/testlink/locale/ko_KR/strings.txt
   trunk/testlink/locale/nl_NL/strings.txt
   trunk/testlink/locale/pl_PL/strings.txt
   trunk/testlink/locale/pt_BR/strings.txt
   trunk/testlink/locale/ru_RU/strings.txt
   trunk/testlink/locale/zh_CN/strings.txt
   trunk/testlink/login.php
   trunk/testlink/third_party/codeplex/PHPExcel.php
   trunk/testlink/third_party/codeplex/PHPExcel/Autoloader.php
   trunk/testlink/third_party/codeplex/PHPExcel/CachedObjectStorage/APC.php
   trunk/testlink/third_party/codeplex/PHPExcel/CachedObjectStorage/CacheBase.php
   trunk/testlink/third_party/codeplex/PHPExcel/CachedObjectStorage/DiscISAM.php
   trunk/testlink/third_party/codeplex/PHPExcel/CachedObjectStorage/ICache.php
   trunk/testlink/third_party/codeplex/PHPExcel/CachedObjectStorage/Memcache.php
   trunk/testlink/third_party/codeplex/PHPExcel/CachedObjectStorage/Memory.php
   trunk/testlink/third_party/codeplex/PHPExcel/CachedObjectStorage/MemoryGZip.php
   trunk/testlink/third_party/codeplex/PHPExcel/CachedObjectStorage/MemorySerialized.php
   trunk/testlink/third_party/codeplex/PHPExcel/CachedObjectStorage/PHPTemp.php
   trunk/testlink/third_party/codeplex/PHPExcel/CachedObjectStorage/Wincache.php
   trunk/testlink/third_party/codeplex/PHPExcel/CachedObjectStorageFactory.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/Database.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/DateTime.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/Engineering.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/Exception.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/ExceptionHandler.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/Financial.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/FormulaParser.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/FormulaToken.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/Function.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/Functions.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/Logical.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/LookupRef.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/MathTrig.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/Statistical.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/TextData.php
   trunk/testlink/third_party/codeplex/PHPExcel/Calculation/functionlist.txt
   trunk/testlink/third_party/codeplex/PHPExcel/Cell.php
   trunk/testlink/third_party/codeplex/PHPExcel/Cell/AdvancedValueBinder.php
   trunk/testlink/third_party/codeplex/PHPExcel/Cell/DataType.php
   trunk/testlink/third_party/codeplex/PHPExcel/Cell/DataValidation.php
   trunk/testlink/third_party/codeplex/PHPExcel/Cell/DefaultValueBinder.php
   trunk/testlink/third_party/codeplex/PHPExcel/Cell/Hyperlink.php
   trunk/testlink/third_party/codeplex/PHPExcel/Cell/IValueBinder.php
   trunk/testlink/third_party/codeplex/PHPExcel/Comment.php
   trunk/testlink/third_party/codeplex/PHPExcel/DocumentProperties.php
   trunk/testlink/third_party/codeplex/PHPExcel/DocumentSecurity.php
   trunk/testlink/third_party/codeplex/PHPExcel/HashTable.php
   trunk/testlink/third_party/codeplex/PHPExcel/IComparable.php
   trunk/testlink/third_party/codeplex/PHPExcel/IOFactory.php
   trunk/testlink/third_party/codeplex/PHPExcel/NamedRange.php
   trunk/testlink/third_party/codeplex/PHPExcel/Reader/CSV.php
   trunk/testlink/third_party/codeplex/PHPExcel/Reader/DefaultReadFilter.php
   trunk/testlink/third_party/codeplex/PHPExcel/Reader/Excel2003XML.php
   trunk/testlink/third_party/codeplex/PHPExcel/Reader/Excel2007.php
   trunk/testlink/third_party/codeplex/PHPExcel/Reader/Excel2007/Theme.php
   trunk/testlink/third_party/codeplex/PHPExcel/Reader/Excel5.php
   trunk/testlink/third_party/codeplex/PHPExcel/Reader/Excel5/Escher.php
   trunk/testlink/third_party/codeplex/PHPExcel/Reader/Gnumeric.php
   trunk/testlink/third_party/codeplex/PHPExcel/Reader/IReadFilter.php
   trunk/testlink/third_party/codeplex/PHPExcel/Reader/IReader.php
   trunk/testlink/third_party/codeplex/PHPExcel/Reader/OOCalc.php
   trunk/testlink/third_party/codeplex/PHPExcel/Reader/SYLK.php
   trunk/testlink/third_party/codeplex/PHPExcel/ReferenceHelper.php
   trunk/testlink/third_party/codeplex/PHPExcel/RichText.php
   trunk/testlink/third_party/codeplex/PHPExcel/RichText/ITextElement.php
   trunk/testlink/third_party/codeplex/PHPExcel/RichText/Run.php
   trunk/testlink/third_party/codeplex/PHPExcel/RichText/TextElement.php
   trunk/testlink/third_party/codeplex/PHPExcel/Settings.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/CodePage.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/Date.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/Drawing.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/Escher.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/Escher/DgContainer.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/Escher/DggContainer.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/Excel5.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/File.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/Font.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/CHANGELOG.TXT
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/CholeskyDecomposition.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/EigenvalueDecomposition.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/LUDecomposition.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/Matrix.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/QRDecomposition.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/SingularValueDecomposition.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/docs/docs.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/docs/download.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/docs/example.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/docs/includes/credits.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/docs/includes/footer.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/docs/includes/header.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/docs/includes/navbar.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/docs/index.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/docs/package.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/docs/test.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/examples/LMQuadTest.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/examples/LagrangeInterpolation.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/examples/LagrangeInterpolation2.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/examples/LevenbergMarquardt.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/examples/MagicSquareExample.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/examples/Stats.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/examples/benchmark.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/examples/polyfit.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/examples/tile.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/tests/TestMatrix.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/utils/Error.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/JAMA/utils/Maths.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/OLE.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/OLE/ChainedBlockStream.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/OLE/PPS.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/OLE/PPS/File.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/OLE/PPS/Root.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/OLERead.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PCLZip/gnu-lgpl.txt
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PCLZip/pclzip.lib.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PCLZip/readme.txt
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/2dbarcodes.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/CHANGELOG.TXT
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/LICENSE.TXT
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/README.TXT
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/barcodes.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/cache/chapter_demo_1.txt
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/cache/chapter_demo_2.txt
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/cache/table_data_demo.txt
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/cache/utf8test.txt
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/config/lang/bra.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/config/lang/eng.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/config/lang/ger.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/config/lang/ita.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/config/tcpdf_config.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/config/tcpdf_config_alt.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/.noencode
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/README.TXT
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/ZarBold.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/ZarBold.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/almohanad.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/almohanad.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/almohanad.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/arialunicid0-chinese-simplified.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/arialunicid0-chinese-traditional.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/arialunicid0-japanese.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/arialunicid0-korean.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/arialunicid0.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/chinese.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/courier.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavu-fonts-ttf-2.30/AUTHORS
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavu-fonts-ttf-2.30/BUGS
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavu-fonts-ttf-2.30/LICENSE
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavu-fonts-ttf-2.30/NEWS
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavu-fonts-ttf-2.30/README
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavu-fonts-ttf-2.30/langcover.txt
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavu-fonts-ttf-2.30/status.txt
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavu-fonts-ttf-2.30/unicover.txt
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusans.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusans.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusans.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansb.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansb.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansb.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansbi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansbi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansbi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusanscondensed.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusanscondensed.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusanscondensed.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusanscondensedb.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusanscondensedb.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusanscondensedb.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusanscondensedbi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusanscondensedbi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusanscondensedbi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusanscondensedi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusanscondensedi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusanscondensedi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansmono.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansmono.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansmono.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansmonob.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansmonob.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansmonob.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansmonobi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansmonobi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansmonobi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansmonoi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansmonoi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavusansmonoi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserif.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserif.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserif.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifb.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifb.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifb.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifbi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifbi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifbi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifcondensed.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifcondensed.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifcondensed.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifcondensedb.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifcondensedb.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifcondensedb.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifcondensedbi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifcondensedbi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifcondensedbi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifcondensedi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifcondensedi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifcondensedi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/dejavuserifi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freefont-20090104/AUTHORS
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freefont-20090104/COPYING
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freefont-20090104/CREDITS
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freefont-20090104/ChangeLog
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freefont-20090104/INSTALL
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freefont-20090104/README
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freemono.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freemono.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freemono.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freemonob.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freemonob.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freemonob.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freemonobi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freemonobi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freemonobi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freemonoi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freemonoi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freemonoi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freesans.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freesans.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freesans.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freesansb.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freesansb.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freesansb.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freesansbi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freesansbi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freesansbi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freesansi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freesansi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freesansi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freeserif.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freeserif.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freeserif.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freeserifb.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freeserifb.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freeserifb.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freeserifbi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freeserifbi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freeserifbi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freeserifi.ctg.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freeserifi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/freeserifi.z
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/helvetica.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/helveticab.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/helveticabi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/helveticai.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/hysmyeongjostdmedium.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/kozgopromedium.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/kozminproregular.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/msungstdlight.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/stsongstdlight.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/symbol.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/times.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/timesb.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/timesbi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/timesi.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/uni2cid_ac15.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/uni2cid_ag15.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/uni2cid_aj16.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/uni2cid_ak12.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/README.TXT
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/cp1250.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/cp1251.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/cp1252.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/cp1253.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/cp1254.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/cp1255.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/cp1257.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/cp1258.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/cp874.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/iso-8859-1.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/iso-8859-11.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/iso-8859-15.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/iso-8859-16.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/iso-8859-2.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/iso-8859-4.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/iso-8859-5.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/iso-8859-7.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/iso-8859-9.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/koi8-r.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/enc/koi8-u.map
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/freetype6.dll
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/makeallttffonts.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/makefont.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/pfm2afm
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/pfm2afm.exe
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/src/pfm2afm-src.tar.gz
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/src/readme.txt
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/src/ttf2ufm-src.tar.gz
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/ttf2ufm
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/ttf2ufm.exe
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/utils/zlib1.dll
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/zapfdingbats.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/fonts/zarbold.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/htmlcolors.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/_blank.png
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/alpha.png
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/bug.eps
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/image_demo.jpg
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/image_with_alpha.png
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/img.png
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/logo_example.gif
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/logo_example.jpg
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/logo_example.png
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/pelican.ai
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/tcpdf_cell.png
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/tcpdf_logo.jpg
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/tcpdf_signature.png
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/testsvg.svg
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/tiger.ai
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/images/tux.svg
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/pdf417.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/qrcode.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/tcpdf.crt
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/tcpdf.fdf
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/tcpdf.p12
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/tcpdf.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PDF/unicode_data.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/PasswordHasher.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/String.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/XMLWriter.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/ZipArchive.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/ZipStreamWrapper.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/trend/bestFitClass.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/trend/exponentialBestFitClass.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/trend/linearBestFitClass.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/trend/logarithmicBestFitClass.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/trend/polynomialBestFitClass.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/trend/powerBestFitClass.php
   trunk/testlink/third_party/codeplex/PHPExcel/Shared/trend/trendClass.php
   trunk/testlink/third_party/codeplex/PHPExcel/Style.php
   trunk/testlink/third_party/codeplex/PHPExcel/Style/Alignment.php
   trunk/testlink/third_party/codeplex/PHPExcel/Style/Border.php
   trunk/testlink/third_party/codeplex/PHPExcel/Style/Borders.php
   trunk/testlink/third_party/codeplex/PHPExcel/Style/Color.php
   trunk/testlink/third_party/codeplex/PHPExcel/Style/Conditional.php
   trunk/testlink/third_party/codeplex/PHPExcel/Style/Fill.php
   trunk/testlink/third_party/codeplex/PHPExcel/Style/Font.php
   trunk/testlink/third_party/codeplex/PHPExcel/Style/NumberFormat.php
   trunk/testlink/third_party/codeplex/PHPExcel/Style/Protection.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/BaseDrawing.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/CellIterator.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/ColumnDimension.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/Drawing.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/Drawing/Shadow.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/HeaderFooter.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/HeaderFooterDrawing.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/MemoryDrawing.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/PageMargins.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/PageSetup.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/Protection.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/Row.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/RowDimension.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/RowIterator.php
   trunk/testlink/third_party/codeplex/PHPExcel/Worksheet/SheetView.php
   trunk/testlink/third_party/codeplex/PHPExcel/WorksheetIterator.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/CSV.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel2007.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel2007/Comments.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel2007/ContentTypes.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel2007/DocProps.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel2007/Drawing.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel2007/Rels.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel2007/StringTable.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel2007/Style.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel2007/Theme.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel2007/Workbook.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel2007/Worksheet.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel2007/WriterPart.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel5.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel5/BIFFwriter.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel5/Escher.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel5/Font.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel5/Parser.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel5/Workbook.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel5/Worksheet.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/Excel5/Xf.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/HTML.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/IWriter.php
   trunk/testlink/third_party/codeplex/PHPExcel/Writer/PDF.php
   trunk/testlink/third_party/codeplex/PHPExcel/locale/cs/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/cs/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/da/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/da/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/de/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/de/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/en/uk/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/es/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/es/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/fi/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/fi/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/fr/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/fr/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/hu/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/hu/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/it/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/it/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/nl/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/nl/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/no/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/no/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/pl/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/pl/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/pt/br/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/pt/br/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/pt/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/pt/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/ru/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/ru/functions
   trunk/testlink/third_party/codeplex/PHPExcel/locale/sv/config
   trunk/testlink/third_party/codeplex/PHPExcel/locale/sv/functions
   trunk/testlink/third_party/codeplex/changelog.txt
   trunk/testlink/third_party/codeplex/install.txt
   trunk/testlink/third_party/codeplex/license.txt
   trunk/testlink/third_party/ext-js/adapter/ext/ext-base-debug.js
   trunk/testlink/third_party/ext-js/adapter/ext/ext-base.js
   trunk/testlink/third_party/ext-js/adapter/jquery/ext-jquery-adapter-debug.js
   trunk/testlink/third_party/ext-js/adapter/jquery/ext-jquery-adapter.js
   trunk/testlink/third_party/ext-js/adapter/prototype/ext-prototype-adapter-debug.js
   trunk/testlink/third_party/ext-js/adapter/prototype/ext-prototype-adapter.js
   trunk/testlink/third_party/ext-js/adapter/yui/ext-yui-adapter-debug.js
   trunk/testlink/third_party/ext-js/adapter/yui/ext-yui-adapter.js
   trunk/testlink/third_party/ext-js/css/debug.css
   trunk/testlink/third_party/ext-js/css/ext-all-notheme.css
   trunk/testlink/third_party/ext-js/css/ext-all.css
   trunk/testlink/third_party/ext-js/css/reset-min.css
   trunk/testlink/third_party/ext-js/css/structure/borders.css
   trunk/testlink/third_party/ext-js/css/structure/box.css
   trunk/testlink/third_party/ext-js/css/structure/button.css
   trunk/testlink/third_party/ext-js/css/structure/combo.css
   trunk/testlink/third_party/ext-js/css/structure/core.css
   trunk/testlink/third_party/ext-js/css/structure/date-picker.css
   trunk/testlink/third_party/ext-js/css/structure/dd.css
   trunk/testlink/third_party/ext-js/css/structure/debug.css
   trunk/testlink/third_party/ext-js/css/structure/dialog.css
   trunk/testlink/third_party/ext-js/css/structure/editor.css
   trunk/testlink/third_party/ext-js/css/structure/form.css
   trunk/testlink/third_party/ext-js/css/structure/grid.css
   trunk/testlink/third_party/ext-js/css/structure/layout.css
   trunk/testlink/third_party/ext-js/css/structure/list-view.css
   trunk/testlink/third_party/ext-js/css/structure/menu.css
   trunk/testlink/third_party/ext-js/css/structure/panel-reset.css
   trunk/testlink/third_party/ext-js/css/structure/panel.css
   trunk/testlink/third_party/ext-js/css/structure/pivotgrid.css
   trunk/testlink/third_party/ext-js/css/structure/progress.css
   trunk/testlink/third_party/ext-js/css/structure/qtips.css
   trunk/testlink/third_party/ext-js/css/structure/reset.css
   trunk/testlink/third_party/ext-js/css/structure/resizable.css
   trunk/testlink/third_party/ext-js/css/structure/slider.css
   trunk/testlink/third_party/ext-js/css/structure/tabs.css
   trunk/testlink/third_party/ext-js/css/structure/toolbar.css
   trunk/testlink/third_party/ext-js/css/structure/tree.css
   trunk/testlink/third_party/ext-js/css/structure/window.css
   trunk/testlink/third_party/ext-js/css/theme-access/borders.css
   trunk/testlink/third_party/ext-js/css/theme-access/box.css
   trunk/testlink/third_party/ext-js/css/theme-access/button.css
   trunk/testlink/third_party/ext-js/css/theme-access/combo.css
   trunk/testlink/third_party/ext-js/css/theme-access/core.css
   trunk/testlink/third_party/ext-js/css/theme-access/date-picker.css
   trunk/testlink/third_party/ext-js/css/theme-access/dd.css
   trunk/testlink/third_party/ext-js/css/theme-access/debug.css
   trunk/testlink/third_party/ext-js/css/theme-access/dialog.css
   trunk/testlink/third_party/ext-js/css/theme-access/editor.css
   trunk/testlink/third_party/ext-js/css/theme-access/form.css
   trunk/testlink/third_party/ext-js/css/theme-access/grid.css
   trunk/testlink/third_party/ext-js/css/theme-access/layout.css
   trunk/testlink/third_party/ext-js/css/theme-access/list-view.css
   trunk/testlink/third_party/ext-js/css/theme-access/menu.css
   trunk/testlink/third_party/ext-js/css/theme-access/panel.css
   trunk/testlink/third_party/ext-js/css/theme-access/progress.css
   trunk/testlink/third_party/ext-js/css/theme-access/qtips.css
   trunk/testlink/third_party/ext-js/css/theme-access/resizable.css
   trunk/testlink/third_party/ext-js/css/theme-access/slider.css
   trunk/testlink/third_party/ext-js/css/theme-access/tabs.css
   trunk/testlink/third_party/ext-js/css/theme-access/toolbar.css
   trunk/testlink/third_party/ext-js/css/theme-access/tree.css
   trunk/testlink/third_party/ext-js/css/theme-access/window.css
   trunk/testlink/third_party/ext-js/css/theme-gray/borders.css
   trunk/testlink/third_party/ext-js/css/theme-gray/box.css
   trunk/testlink/third_party/ext-js/css/theme-gray/button.css
   trunk/testlink/third_party/ext-js/css/theme-gray/combo.css
   trunk/testlink/third_party/ext-js/css/theme-gray/core.css
   trunk/testlink/third_party/ext-js/css/theme-gray/date-picker.css
   trunk/testlink/third_party/ext-js/css/theme-gray/dd.css
   trunk/testlink/third_party/ext-js/css/theme-gray/debug.css
   trunk/testlink/third_party/ext-js/css/theme-gray/dialog.css
   trunk/testlink/third_party/ext-js/css/theme-gray/editor.css
   trunk/testlink/third_party/ext-js/css/theme-gray/form.css
   trunk/testlink/third_party/ext-js/css/theme-gray/grid.css
   trunk/testlink/third_party/ext-js/css/theme-gray/layout.css
   trunk/testlink/third_party/ext-js/css/theme-gray/list-view.css
   trunk/testlink/third_party/ext-js/css/theme-gray/menu.css
   trunk/testlink/third_party/ext-js/css/theme-gray/panel.css
   trunk/testlink/third_party/ext-js/css/theme-gray/progress.css
   trunk/testlink/third_party/ext-js/css/theme-gray/qtips.css
   trunk/testlink/third_party/ext-js/css/theme-gray/resizable.css
   trunk/testlink/third_party/ext-js/css/theme-gray/slider.css
   trunk/testlink/third_party/ext-js/css/theme-gray/tabs.css
   trunk/testlink/third_party/ext-js/css/theme-gray/toolbar.css
   trunk/testlink/third_party/ext-js/css/theme-gray/tree.css
   trunk/testlink/third_party/ext-js/css/theme-gray/window.css
   trunk/testlink/third_party/ext-js/css/visual/borders.css
   trunk/testlink/third_party/ext-js/css/visual/box.css
   trunk/testlink/third_party/ext-js/css/visual/button.css
   trunk/testlink/third_party/ext-js/css/visual/combo.css
   trunk/testlink/third_party/ext-js/css/visual/core.css
   trunk/testlink/third_party/ext-js/css/visual/date-picker.css
   trunk/testlink/third_party/ext-js/css/visual/dd.css
   trunk/testlink/third_party/ext-js/css/visual/debug.css
   trunk/testlink/third_party/ext-js/css/visual/dialog.css
   trunk/testlink/third_party/ext-js/css/visual/editor.css
   trunk/testlink/third_party/ext-js/css/visual/form.css
   trunk/testlink/third_party/ext-js/css/visual/grid.css
   trunk/testlink/third_party/ext-js/css/visual/layout.css
   trunk/testlink/third_party/ext-js/css/visual/list-view.css
   trunk/testlink/third_party/ext-js/css/visual/menu.css
   trunk/testlink/third_party/ext-js/css/visual/panel.css
   trunk/testlink/third_party/ext-js/css/visual/pivotgrid.css
   trunk/testlink/third_party/ext-js/css/visual/progress.css
   trunk/testlink/third_party/ext-js/css/visual/qtips.css
   trunk/testlink/third_party/ext-js/css/visual/resizable.css
   trunk/testlink/third_party/ext-js/css/visual/slider.css
   trunk/testlink/third_party/ext-js/css/visual/tabs.css
   trunk/testlink/third_party/ext-js/css/visual/toolbar.css
   trunk/testlink/third_party/ext-js/css/visual/tree.css
   trunk/testlink/third_party/ext-js/css/visual/window.css
   trunk/testlink/third_party/ext-js/css/xtheme-access.css
   trunk/testlink/third_party/ext-js/css/xtheme-blue.css
   trunk/testlink/third_party/ext-js/css/xtheme-gray.css
   trunk/testlink/third_party/ext-js/css/yourtheme.css
   trunk/testlink/third_party/ext-js/ext-all-debug-w-comments.js
   trunk/testlink/third_party/ext-js/ext-all-debug.js
   trunk/testlink/third_party/ext-js/ext-all.js
   trunk/testlink/third_party/ext-js/ext.jsb2
   trunk/testlink/third_party/ext-js/images/default/panel/tool-sprites.gif
   trunk/testlink/third_party/ext-js/images/gray/panel/tool-sprites.gif
   trunk/testlink/third_party/ext-js/index.html
   trunk/testlink/third_party/ext-js/license.txt
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-af.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-bg.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-ca.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-cs.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-da.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-de.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-el_GR.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-en.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-en_GB.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-es.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-fa.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-fi.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-fr.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-fr_CA.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-gr.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-he.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-hr.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-hu.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-id.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-it.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-ja.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-ko.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-lt.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-lv.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-mk.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-nl.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-no_NB.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-no_NN.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-pl.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-pt.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-pt_BR.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-pt_PT.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-ro.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-ru.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-sk.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-sl.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-sr.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-sr_RS.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-sv_SE.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-th.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-tr.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-ukr.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-vn.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-zh_CN.js
   trunk/testlink/third_party/ext-js/src/locale/ext-lang-zh_TW.js
   trunk/testlink/third_party/user_contribution/fakeRemoteExecServer/README.TXT
   trunk/testlink/third_party/user_contribution/fakeRemoteExecServer/all_testsuites_remote_fake_exec.xml
   trunk/testlink/third_party/user_contribution/fakeRemoteExecServer/client4fakeXMLRPCTestRunner.php
   trunk/testlink/third_party/user_contribution/fakeRemoteExecServer/fakeXMLRPCTestRunner.php
Log:
merge 1.9.3 import


Property changes on: trunk/testlink
___________________________________________________________________
Added: svn:mergeinfo
   + /vendor/testlink:18329


Copied: trunk/testlink/.gitignore (from rev 18329, vendor/testlink/.gitignore)
===================================================================
--- trunk/testlink/.gitignore	                        (rev 0)
+++ trunk/testlink/.gitignore	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,3 @@
+gui/templates_c/
+logs/
+config_db.inc.php

Modified: trunk/testlink/CHANGELOG
===================================================================
--- trunk/testlink/CHANGELOG	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/CHANGELOG	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,9 +3,102 @@
    TestLink  Change-log
 *******************************************************************************
 
+TestLink - 1.9.3 (2011 Q3 - bug fixing) (Scheduled For Release 2011-07-01)
+==========================================================================
+- 0004511: [Reports] MIle stones are not getting updated (Julian) - resolved.
+- 0004419: [Test Importance / Urgency / Priority] Add columns "Importance" and "Priority" to "Set urgent Tests" (Julian) - closed.
+- 0004418: [Test Importance / Urgency / Priority] Clean up priority usage within Testlink (Julian) - closed.
+- 0004398: [Migration/Upgrade Testlink] Prevent user-login when database scheme version does not fit required scheme (Julian) - closed.
+- 0002985: [New Feature] Expose test case IMPORTANCE (NOT priority) as a column in the 'Add / Remove Test cases to Test Plan' frame. (Julian) - closed.
+- 0004486: [Test Plan (builds, milestones, test assign)] Assign test execution - Link shows incorrect Test Case Version (Julian) - closed.
+- 0004487: [Requirement Management] Add Req-Version to internal Requirement Links (Julian) - closed.
+- 0004497: [Requirement Revisioning] Revision is not shown for older Requirement Versions (Julian) - closed.
+- 0004481: [User Interface Customization] Allow custom configuration of CSS Styles when defining new statuses (fman) - closed.
+- 0004536: [Requirement Management] Tree is not refreshed after editing Requirement (fman) - closed.
+- 0004376: [User Interface General] Test Specification > {test suite | test case} > {ctrl, click, drag} > destination test suite (fman) - closed.
+- 0004535: [Requirement Management] Tree is not refreshed after editing Requirement Specification (fman) - closed.
+- 0004368: [Inventory / Platforms] Provide WYSIWYG Editor (FCKEditor) for Platform Description (fman) - closed.
+- 0004584: [Test Specification] Checkbox to decide whether to create another test case or not (Julian) - closed.
+- 0003953: [Test Specification] Checkbox to decide whether to create another requirement or not (Julian) - closed.
+- 0004305: [User Interface General] The test cases tree shows nothing when creating test cases (fman) - closed.
+- 0004613: [Test Plan (builds, milestones, test assign)] cookiePrefix needs to be improved for all trees within testlink (Julian) - closed.
+- 0004322: [Test Specification] New Option to block delete of executed test cases. (fman) - closed.
+- 0004196: [Test Execute] Usability: Tree is collapsed after execution (fman) - closed.
+- 0004625: [Test Execute] Settings not properly set on "args" when first entering test execution (asimon) - closed.
+- 0004600: [Test Plan (builds, milestones, test assign)] Block to execute test case because of updating new test case version (asimon) - closed.
+- 0003110: [Test Specification] Show Testcase newest version must have clickable TC and compare (Julian) - closed.
+- 0004636: [Test Plan (builds, milestones, test assign)] Add Edit Icon and Execution Icon to Test Execution Assingment Frame that opens Test Case Edit or Execution popup (Julian) - closed.
+- 0004494: [Third party components] Upgrade Extjs 3.3.0 to 3.4.0 to support Internet Explorer 9 (Julian) - closed.
+- 0004644: [User Interface General] Allow to configure different CSS-Files for Test Spec Documents and Requirement Spec Documents (Julian) - closed.
+- 0004298: [Requirement Management] Direct links for each requirement version (asimon) - closed.
+- 0004289: [Requirement Management] (MS SQL Server 2008) - Opening a requirement crashes (fman) - closed.
+- 0004321: [Requirement Management] Requirement Spec - add option to print single Req Spec (fman) - closed.
+- 0004125: [Reports] Filtering does not work in " Test result matrix" (Eloff) - closed.
+- 0004349: [Localization] Locale en_US outdated -> copy en_GB to en_US to update for now (Julian) - closed.
+- 0004062: [Users and Rights] General user rights overide user rigths at test plan level (after migration from 1.8.5 to 1.9.x) (fman) - closed.
+- 0004356: [TL API] Unable to generate developer key when using prefix in table names. (fman) - closed.
+- 0004303: [Test Execute] Filtering does NOT work (fman) - closed.
+- 0004333: [Reports] On General Test Plan Metrics % complete did not round (kinow) - closed.
+- 0004302: [Test Execute] Execute Test pane (fman) - closed.
+- 0004343: [Reports] Reports Failed Test Cases / Blocked Test Cases / Not Run Test Cases -> Build is not shown (fman) - closed.
+- 0004341: [Reports] New Column "Last Execuition Result" for Test Result Matrix (Julian) - closed.
+- 0004362: [Reports] metricsDashboard not working properly with platforms defined (fman) - closed.
+- 0004363: [Reports] General Test Plan Metrics - Overall Build Status -> empty line for a build shown with no test cases assigned to user (fman) - closed.
+- 0004391: [Reports] General Test Plan Metrics - Results by Keywords does not work properly when platforms are used (fman) - closed.
+- 0004387: [Reports] Tables in "general testplan metrics" should offer option to sort data (Julian) - closed.
+- 0004374: [Test Project Management] When copying a project, external TC ID is not preserved (fman) - closed.
+- 0004128: [Reports] Report->Overall Build Status:the Assigned field is not correct sometimes (fman) - closed.
+- 0004243: [Test Execute] When creating a new build without "Copy tester assignments", the test cases remain assigned to users of the previous build (Julian) - closed.
+- 0004336: [Reports] tl_documents.css not found due to wrong path in generated report (kinow) - closed.
+
+TestLink - 1.9.2 (2010 Q2 - bug fixing) (Released 2011-03-19)
+=============================================================
+- 0004186: [General] Log message on config_check.txt after upgrade to Testlink 1.9.1 (Julian) - closed.
+- 0004207: [Database MS-SQL] SQL error Class:testcase - Method: set_step_number */ UPDATE tcsteps TC_STEP SET step_number = 2 WHERE TC_STEP.id = 56 (fman) - closed.
+- 0004204: [Database General] Error query using prefix table (fman) - closed.
+- 0004222: [Export/Import] CUSTOM FIELDS - Remove \n from fields that are used on TestLink as identifiers. (fman) - closed.
+- 0004199: [General] No tree control below options box on Specification pages (Test Spec. & Req. Spec) after 1.9.0 >1.9.1 (Julian) - closed.
+- 0004230: [Test Specification] JS error when editing test case (step) (Julian) - closed.
+- 0004228: [Reports] Requirement based Report - Add more detailed requirement evalutation states for better analysis (Julian) - closed.
+- 0004206: [Requirement Management] Requirement based Report - Jump to latest execution for linked test cases (Julian) - closed.
+- 0004205: [Reports] Requirement based Report - Add progress bars for a quick Overview (Julian) - closed.
+- 0004220: [Localization] Translation in brazilian portuguese (pt-br) (Julian) - closed.
+- 0004194: [Reports] Debug messages on Test Result Matrix (fman) - closed.
+- 0004193: [Reports] Debug messages on Query Metrics report (fman) - closed.
+- 0004227: [Reports] Requirement based Report - Allow to choose status of requirements to be evaluated (asimon) - closed.
+- 0004192: [Reports] Results by Tester per Build - show only open builds per default to improve performance (asimon) - closed.
+- 0004244: [Reports] Test Cases with Execution Details does not show test with Notes (Julian) - closed.
+- 0004250: [Test Specification] Cannot cancel 'Create step' mode (Julian) - closed.
+- 0004002: [Test Specification] by edit test case the Cancel button does not work (Julian) - closed.
+- 0003737: [Test Specification] Step Edit - Cancel Button not working anymore (Julian) - closed.
+- 0004245: [Test Specification] Cannot view certain ver of case directly without view its prev ver (Julian) - closed.
+- 0004253: [Test Plan (builds, milestones, test assign)] Filter 'Result=Not Run' in page "Assign Test Case Execution" does not work if test plan has ONLY 1 build (asimon) - closed.
+- 0004246: [Test Plan (builds, milestones, test assign)] Suggest to add snap to grid in test plan management GUI (fman) - closed.
+- 0004233: [Reports] Query Metrics Report does not work in Internet Explorer 8.0 (Julian) - closed.
+- 0004239: [Test Project Management] Duplicated requirements in testcase layout and duplicated testcases in requirement layout when using testproject reuse feature (asimon) - closed.
+- 0004275: [Requirement Management] Generate Requirement Specification Document: Many Requirements are in the document twice (Julian) - closed.
+- 0004270: [Keywords] Keywords are not ordered by name (Julian) - closed.
+- 0004221: [Reports] Test Results matrix HTML: File does not exist: \\*gui\\ (Julian) - closed.
+- 0004269: [Reports] Test result matrix can not be display (Julian) - closed.
+- 0004276: [Reports] Debug information being displayed in the header of the report (Julian) - closed.
+- 0004203: [Test Plan (builds, milestones, test assign)] Test case become unassigned on a build when it is unassigned from another build (asimon) - closed.
+- 0004279: [Test Specification] After copying test case user feedback at top of frame has encoded HTML (Julian) - closed.
+- 0004277: [User Interface General] "New Child Test Suite" button is missing. (Julian) - closed.
+- 0004286: [Test Specification] Option to print single test case (fman) - closed.
+- 0004273: [Requirement Management] Option to print single requirement (fman) - closed.
+- 0004300: [Requirement Revisioning] The pop up window for Revision and Version have the same title (Julian) - closed.
+- 0004274: [Documentation (Install, User Manual, help)] Help-page for requirement editing needed (asimon) - closed.
+- 0003765: [Requirement Management] Req. Spec Doc ID disappears when you filter requirements (asimon) - closed.
+- 0004311: [Integration with Other Systems] Problem using uploadExecutionAttachment method with Testlink-java-api (fman) - closed.
+- 0004317: [Test Specification] Create Test Cases from Requirements do not use expected coverage data to set default nb TC to create. (Julian) - closed.
+- 0004285: [Reports] Test Metrics shows results from inactive builds (fman) - closed.
+- 0004021: [TL API] Remote execution of testcases doesn't work (fman) - closed.
+- 0003338: [TL API] Contribution: make execute_remote work (fman) - closed.
+- 0004328: [Reports] Metrics dashboard - only active builds has to be used (fman) - closed.
+
 TestLink - 1.9.1 (Prague - Bugfix 1) (Released 2011-01-23)
 ==========================================================
-0004184: [Database MS-SQL] Ambiguous column name ''platform_id'' (fman) - resolved.
+- 0004184: [Database MS-SQL] Ambiguous column name ''platform_id'' (fman) - resolved.
 - 0004164: [Custom fields] Custom fields with "LIST" type remain wide open during use. (Julian) - resolved.
 - 0004079: [Test Execute] Cannot add attachment to execution [DB REPOSITORY / MSSQL] (fman) - resolved.
 - 0004100: [Requirement Management] Import Requirements - create new version for duplicate requirements (fman) - resolved.

Modified: trunk/testlink/README
===================================================================
--- trunk/testlink/README	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/README	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,5 +1,5 @@
 ===============================================================
-                    TestLink 1.9.1 (Prague Bugfix 1) - Read me
+                    TestLink 1.9.3 (Prague Bugfix 3) - Read me
 ===============================================================
 
 Contents
@@ -31,8 +31,7 @@
 2. Release notes
 ===============================================================
 
-This release contains bugfixes for 1.9.0 and a new feature 
-(requirement revisioning).
+This release contains bugfixes for 1.9.0/1.9.1/1.9.2
    
 See CHANGELOG file for detailed list of issues fixed.
 
@@ -99,9 +98,10 @@
 When accessing Installer page you will found following options:
 
  - New Installation
- - Migration from 1.8 to 1.9.1
+ - Migration from 1.8 to 1.9.1/2/3
 
-If you are upgrading from 1.9.0 please go to section 'Upgrade from 1.9.0 to 1.9.1'.
+If you are upgrading from 1.9.0 please go to section 'Upgrade from 1.9.0 to 1.9.1/2/3'.
+If you are upgrading from 1.9.1/2 NO DB upgrades will be needed.
 
  Steps
  - Make a Backup of your current database.
@@ -127,8 +127,8 @@
    
  Always before login, after an upgrade/migration clear browser cookies.
 
-- Upgrade from 1.9.0 to 1.9.1
-To be able to use Testlink 1.9.1 with the new „Requirement Revisioning“ feature - 
+- Upgrade from 1.9.0 to 1.9.1+
+To be able to use Testlink 1.9.1+ with the new „Requirement Revisioning“ feature - 
 migration procedure requires some manual steps. 
 
 A.) Why does this release need manual steps on migration from 1.9.0?
@@ -136,7 +136,7 @@
 Manual migration is simple and should not be a problem for anyone. 
 No data needs to be migrated – it only requires to alter some tables and create a single new table.
 
-B.) What steps have to be executed for migration from 1.9.0 to 1.9.1?
+B.) What steps have to be executed for migration from 1.9.0 to 1.9.1+?
 1. First of all make sure your testlink installation uses testlink 1.9.0 database scheme. 
 If you are still on Testlink 1.8.x use standard upgrade procedure.
 
@@ -155,10 +155,9 @@
 --- Most Active on this release
 * Francisco Mancardi - Project lead, builds, core developer, contributors code reviewer
 * Julian Krien - Leader of testlink-qa group effort on 1.9.x
-* Andreas Simon
 
-
 --- Contributors and developers active on other releases ---
+* Andreas Simon
 * Erik Eloff
 * Martin Havlat - Project lead, builds, infrastructure, developer
 * Andreas Morsing - core developer

Modified: trunk/testlink/cfg/const.inc.php
===================================================================
--- trunk/testlink/cfg/const.inc.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/cfg/const.inc.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -9,7 +9,7 @@
  * @package 	TestLink
  * @author 		Martin Havlat
  * @copyright 	2007-2009, TestLink community 
- * @version    	CVS: $Id: const.inc.php,v 1.167.2.5 2011/01/15 18:31:35 franciscom Exp $
+ * @version    	CVS: $Id: const.inc.php,v 1.167.2.7 2011/01/26 09:01:58 mx-julian Exp $
  * @see 		config.inc.php
  *
  * @internal 
@@ -22,8 +22,12 @@
 
 /** TestLink Release version (MUST BE changed before the release day) */
 define('TL_FACE_DIR', 'prague'); 
-define('TL_VERSION', '1.9.1 (Prague)'); 
+define('TL_VERSION', '1.9.3 (Prague)'); 
 
+/** Last Database version that is used to give users feedback about necesssary upgrades
+ * if you set this parameter also upgrade lib/functions/configCheck.php - checkSchemaVersion() */
+define('TL_LAST_DB_VERSION', 'DB 1.4');
+
 // needed to avoid problems in install scripts that do not include config.inc.php
 // want to point to root install dir, need to remove fixed part
 if (!defined('TL_ABS_PATH')) 
@@ -185,6 +189,8 @@
 define('TL_CSS_MAIN', 'testlink.css');
 define('TL_CSS_PRINT', 'tl_print.css');
 define('TL_CSS_DOCUMENTS', 'tl_documents.css');
+define('TL_CSS_CUSTOM', 'custom.css');
+
 /** @todo havlatm: remove - probably obsolete from 1.9 */
 define('TL_CSS_TREEMENU', 'tl_treemenu.css');
 
@@ -395,21 +401,21 @@
  *           If you add new statuses, please use custom_strings.txt to add your localized strings
  */
 
+/** User can define own test status(es) by modifying
+ *   - $tlCfg->results['status_code'] (in custom_config.inc.php)
+ *   - $tlCfg->results['status_label'] (in custom_config.inc.php)
+ *   - $tlCfg->results['status_label_for_exec_ui'] (in custom_config.inc.php)
+ *   - $tlCfg->results['charts']['status_colour'] (in custom_config.inc.php)
+ *   - /locale/<your_language>/custom_strings.txt
+ *   - /gui/themes/default/css/custom.css
+ *   
+ * DO NOT define Custom test status(es) in this file - use custom_config.inc.php
+ */
+
 /** 
  * @var array List of Test Case execution results (status_key -> DB code). 
  * The code is used in DB to store results (not GUI).  
  * Do not do localisation here, i.e do not change "passed" by your national language.
- *
- * How to add a new status:
- * - add a new record to the array
- * 		- do not edit this file use custom_config.inc.php
- *
- * - you also need to add the new status to: 
- *	$tlCfg->results['status_label'], 
- *	$tlCfg->reportsCfg->exec_status
- *	$tlCfg->results['charts']['status_colour']
- *  charts config
- *
  */ 
 $tlCfg->results['status_code'] = array (
 	'failed'        => 'f',
@@ -436,11 +442,11 @@
  * </code>        
  */
 $tlCfg->results['status_label'] = array(
-	'not_run'  		=> 'test_status_not_run',
-	'passed'   		=> 'test_status_passed',
-	'failed'   		=> 'test_status_failed',
-	'blocked'  		=> 'test_status_blocked'
-//	'all'      		=> 'test_status_all_status',
+	'not_run'       => 'test_status_not_run',
+	'passed'        => 'test_status_passed',
+	'failed'        => 'test_status_failed',
+	'blocked'       => 'test_status_blocked'
+//	'all'           => 'test_status_all_status',
 //	'not_available' => 'test_status_not_available',
 //	'unknown'       => 'test_status_unknown'
 );
@@ -463,10 +469,10 @@
 //          used to localize the strings.
 //
 $tlCfg->results['status_label_for_exec_ui'] = array(
-	'not_run'  		=> 'test_status_not_run',
-	'passed'  		=> 'test_status_passed',
-	'failed'  		=> 'test_status_failed',
-	'blocked' 		=> 'test_status_blocked'
+	'not_run' => 'test_status_not_run',
+	'passed'  => 'test_status_passed',
+	'failed'  => 'test_status_failed',
+	'blocked' => 'test_status_blocked'
 );
 
 /** 
@@ -480,10 +486,10 @@
  * Colours should be compiant with definition in CSS 
  **/
 $tlCfg->results['charts']['status_colour'] = array(
- 	'not_run'  		=> '000000',
-	'passed'   		=> '006400',
-	'failed'   		=> 'B22222',
-	'blocked'  		=> '00008B'
+	'not_run' => '000000',
+	'passed'  => '006400',
+	'failed'  => 'B22222',
+	'blocked' => '00008B'
 );
 
 /*
@@ -491,16 +497,16 @@
  * used for testcase execution
  */
 $tlCfg->execution_filter_methods['status_code'] = array('latest_execution' => 1,
-    									    'all_builds' => 2,
-    									    'any_build' => 3,
-    									    'specific_build' => 4,
-										    'current_build' => 5);
+                                                        'all_builds' => 2,
+                                                        'any_build' => 3,
+                                                        'specific_build' => 4,
+                                                        'current_build' => 5);
 
 $tlCfg->execution_filter_methods['status_label'] = array('latest_execution' => 'filter_result_latest_execution',
-    									     'all_builds' => 'filter_result_all_builds',
-    									     'any_build' => 'filter_result_any_build',
-    									     'specific_build' => 'filter_result_specific_build',
-										     'current_build' => 'filter_result_current_build');
+                                                         'all_builds' => 'filter_result_all_builds',
+                                                         'any_build' => 'filter_result_any_build',
+                                                         'specific_build' => 'filter_result_specific_build',
+                                                         'current_build' => 'filter_result_current_build');
 
 $tlCfg->execution_filter_methods['default_type'] = $tlCfg->execution_filter_methods['status_code']['current_build'];
 
@@ -509,14 +515,14 @@
  * these are used for testcase execution assignment
  */
 $tlCfg->execution_assignment_filter_methods['status_code'] = array('latest_execution' => 1,
-    									    'all_builds' => 2,
-    									    'any_build' => 3,
-    									    'specific_build' => 4);
+                                                                   'all_builds' => 2,
+                                                                   'any_build' => 3,
+                                                                   'specific_build' => 4);
 
 $tlCfg->execution_assignment_filter_methods['status_label'] = array('latest_execution' => 'filter_result_latest_execution',
-    									     'all_builds' => 'filter_result_all_builds',
-    									     'any_build' => 'filter_result_any_build',
-    									     'specific_build' => 'filter_result_specific_build');
+                                                                    'all_builds' => 'filter_result_all_builds',
+                                                                    'any_build' => 'filter_result_any_build',
+                                                                    'specific_build' => 'filter_result_specific_build');
 
 $tlCfg->execution_assignment_filter_methods['default_type'] = $tlCfg->execution_assignment_filter_methods['status_code']['latest_execution'];
 
@@ -570,12 +576,13 @@
 // --------------------------------------------------------------------------------------
 /* [Priority, Urgency, Importance] */
 
-/** @var array descriptionPriority is computed as Importance x Urgency */
+/** @deprecated 1.9.3 use urgencyImportance instead
+    @var array descriptionPriority is computed as Importance x Urgency
 $tlCfg->priority_levels = array( 
 	HIGH => 6, // high priority include 6 and more
 	MEDIUM => 3,
 	LOW => 1
-);
+); */
 
 /** @var array importance levels */
 $tlCfg->importance_levels = array( 
@@ -675,14 +682,16 @@
  * CRITIC: DO NOT REMOVE ANY OF THIS CONSTANTS, BECAUSE TL EXPECT THIS TO BE DEFINED
  *
  * @since TestLink 1.9
+ *
+ * IMPORTANT NOTICE: this value will be written on DB on field of type CHAR(1)
  **/
-define('TL_REQ_TYPE_INFO', 1);
-define('TL_REQ_TYPE_FEATURE',2);
-define('TL_REQ_TYPE_USE_CASE',3); 
-define('TL_REQ_TYPE_INTERFACE',4);
-define('TL_REQ_TYPE_NON_FUNCTIONAL',5);
-define('TL_REQ_TYPE_CONSTRAIN',6);
-define('TL_REQ_TYPE_SYSTEM_FUNCTION',7);
+define('TL_REQ_TYPE_INFO', '1');
+define('TL_REQ_TYPE_FEATURE','2');
+define('TL_REQ_TYPE_USE_CASE','3'); 
+define('TL_REQ_TYPE_INTERFACE','4');
+define('TL_REQ_TYPE_NON_FUNCTIONAL','5');
+define('TL_REQ_TYPE_CONSTRAIN','6');
+define('TL_REQ_TYPE_SYSTEM_FUNCTION','7');
 
 
 /** 
@@ -710,6 +719,8 @@
  * Add you types ONLY AFTER LAST RESERVED
  *
  * @since TestLink 1.9
+ *
+ * IMPORTANT NOTICE this will be written on DB on an INT field
  **/
 define('TL_REQ_REL_TYPE_PARENT_CHILD', 1);
 define('TL_REQ_REL_TYPE_BLOCKS_DEPENDS', 2);
@@ -774,9 +785,10 @@
 
 
 
-define('TL_REQ_SPEC_TYPE_SECTION', 1); 
-define('TL_REQ_SPEC_TYPE_USER_REQ_SPEC', 2);
-define('TL_REQ_SPEC_TYPE_SYSTEM_REQ_SPEC', 3);
+// IMPORTANT NOTICE: this value will be written on DB on field of type CHAR(1)
+define('TL_REQ_SPEC_TYPE_SECTION', '1'); 
+define('TL_REQ_SPEC_TYPE_USER_REQ_SPEC', '2');
+define('TL_REQ_SPEC_TYPE_SYSTEM_REQ_SPEC', '3');
 
 
 // define('TL_REQ_SPEC_TYPE_FUNCTIONAL_AND_DATA', 1);

Copied: trunk/testlink/cfg/custom_reports.cfg.php (from rev 18329, vendor/testlink/cfg/custom_reports.cfg.php)
===================================================================
--- trunk/testlink/cfg/custom_reports.cfg.php	                        (rev 0)
+++ trunk/testlink/cfg/custom_reports.cfg.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,25 @@
+<?php
+/**
+ * TestLink Open Source Project - http://testlink.sourceforge.net/ 
+ * This script is distributed under the GNU General Public License 2 or later. 
+ *
+ *
+ */
+
+/** 
+ * @VAR $tlCfg->reports_list['report_identifier'] 
+ * definition of default set of reports
+ * title - title string identifier
+ * url - http path (without testPlanId and format)
+ * enabled - availability
+ * 	1. all (everytime),
+ * 	2. bts (if bug tracker is connected only), 
+ * 	3. req (if project has available requirements only)
+ */
+// $tlCfg->reports_list['MY_REPORT'] = array( 
+// 	'title' => 'link_MY_REPORT',
+// 	'url' => 'lib/results/fileThatImplementsMYREPORTLogics.php',
+// 	'enabled' => 'all',
+// 	'format' => 'format_xls' >>>> See cfg/reports.cfg.php
+// );
+?>
\ No newline at end of file

Copied: trunk/testlink/cfg/custom_reports.cfg.php.example (from rev 18329, vendor/testlink/cfg/custom_reports.cfg.php.example)
===================================================================
--- trunk/testlink/cfg/custom_reports.cfg.php.example	                        (rev 0)
+++ trunk/testlink/cfg/custom_reports.cfg.php.example	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,25 @@
+<?php
+/**
+ * TestLink Open Source Project - http://testlink.sourceforge.net/ 
+ * This script is distributed under the GNU General Public License 2 or later. 
+ *
+ *
+ */
+
+/** 
+ * @VAR $tlCfg->reports_list['report_identifier'] 
+ * definition of default set of reports
+ * title - title string identifier
+ * url - http path (without testPlanId and format)
+ * enabled - availability
+ * 	1. all (everytime),
+ * 	2. bts (if bug tracker is connected only), 
+ * 	3. req (if project has available requirements only)
+ */
+// $tlCfg->reports_list['MY_REPORT'] = array( 
+// 	'title' => 'link_MY_REPORT',
+// 	'url' => 'lib/results/fileThatImplementsMYREPORTLogics.php',
+// 	'enabled' => 'all',
+// 	'format' => 'format_xls' >>>> See cfg/reports.cfg.php
+// );
+?>
\ No newline at end of file

Copied: trunk/testlink/cfg/polarion.cfg.php (from rev 18329, vendor/testlink/cfg/polarion.cfg.php)
===================================================================
--- trunk/testlink/cfg/polarion.cfg.php	                        (rev 0)
+++ trunk/testlink/cfg/polarion.cfg.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,29 @@
+<?php
+/**
+* TestLink Open Source Project - http://testlink.sourceforge.net/ 
+* @filesource polarion.cfg.php
+* 
+* @author Gregor Bonney
+*
+* @internal revisions
+*
+*/
+
+# About the path to the polarion svn server
+define('BUG_TRACK_SVN_PROTO', 'https://');
+define('BUG_TRACK_SVN_USED_PROJECT_GRP', 'TT2');
+define('BUG_TRACK_SVN_REPO', 'svn.polarion-server.org/repo/');
+define('BUG_TRACK_SVN_WIDIR', '/.polarion/tracker/workitems/');
+define('BUG_TRACK_SVN_USER', 'polarionsvnuser');
+define('BUG_TRACK_SVN_PASS', 'my-password');
+
+# Will Result in: 
+# https://svn.polarion-server.org/polarion/#/project/MYPROJECT/workitem?id=MYPROJECT-4711
+define('BUG_TRACK_HREF', "https://svn.polarion-server.org/polarion/#/project/");
+define('BUG_TRACK_HREF_END', "/workitem?id=");
+
+# Will Result in: 
+# https://svn.polarion-server.org/polarion/#/project/MYPROJECT/?shortcut=Create Work Item
+define('BUG_TRACK_ENTER_BUG_HREF',"https://svn.polarion-server.org/polarion/#/project/");
+define('BUG_TRACK_ENTER_BUG_HREF_END',"/?shortcut=Create Work Item");
+?>
\ No newline at end of file

Modified: trunk/testlink/cfg/reports.cfg.php
===================================================================
--- trunk/testlink/cfg/reports.cfg.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/cfg/reports.cfg.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,14 +3,13 @@
  * TestLink Open Source Project - http://testlink.sourceforge.net/ 
  * This script is distributed under the GNU General Public License 2 or later. 
  *
- * Filename $RCSfile: reports.cfg.php,v $
- * @version $Revision: 1.19 $
- * @modified $Date: 2010/09/03 11:25:53 $ by $Author: mx-julian $
+ * @filesource	reports.cfg.php
  * @author Martin Havlat
  *
  * SCOPE: Definition of report/metrics menu 
  * 
- * Revision:
+ * @internal revisions:
+ *	20110312 - franciscom - added logic to include custom_reports.cfg.php
  *  20100903 - Julian - BUGID 37006 - disabled uncovered_testcases report 
  *  20100731 - asimon - added results by tester per build and assignment overview
  *  20090421 - amitkhullar- BUGID 2410 - Custom Field report for Test Plan
@@ -27,6 +26,9 @@
 define('DOC_TEST_PLAN', 'testplan');
 define('DOC_TEST_REPORT', 'testreport');
 define('DOC_REQ_SPEC', 'reqspec');
+define('SINGLE_TESTCASE', 'testcase');
+define('SINGLE_REQ', 'requirement');
+define('SINGLE_REQSPEC', 'single_reqspec');
 
 define('FORMAT_HTML', 0);
 define('FORMAT_ODT', 1);
@@ -187,5 +189,13 @@
 'enabled' => 'all',
 'format' => 'format_html'
 );
+
+
+clearstatcache();
+$f2inc = TL_ABS_PATH . 'cfg/custom_reports.cfg.php';
+if ( file_exists($f2inc) )
+{
+  require_once($f2inc);
+}
 // -------------------------------------------------------------------
 ?>
\ No newline at end of file

Modified: trunk/testlink/cfg/tl_fckeditor_config.js
===================================================================
--- trunk/testlink/cfg/tl_fckeditor_config.js	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/cfg/tl_fckeditor_config.js	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,23 +1,71 @@
 /*  
 TestLink Open Source Project - http://testlink.sourceforge.net/
-$Id: tl_fckeditor_config.js,v 1.3 2009/06/07 22:03:51 havlat Exp $
 
 Configure FCKEditor
-See: http://docs.fckeditor.net/ for more information
+See: http://docs.fckeditor.net/ and 
+     Configuration_of_FCKEditor_and_CKFinder.pdf in docs folder
+     for more information
 */
 
+// General configuration
+
+/* Disable server browsing
+   To enable server browsing/file upload check Configuration_of_FCKEditor_and_CKFinder.pdf 
+   in docs folder */
+FCKConfig.LinkBrowser = false;
+FCKConfig.ImageBrowser = false;
+FCKConfig.FlashBrowser = false;
+
+//disable quick upload to avoid unsorted files.
+FCKConfig.LinkUpload = false ;
+FCKConfig.ImageUpload = false ;
+FCKConfig.FlashUpload = false ;
+
+//use Testlink stylesheet
+//FCKConfig.EditorAreaCSS = FCKConfig.BasePath + '../../../gui/themes/default/css/testlink.css' ;
+
+//Set Skin
+FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/';
+//FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/office2003/';
+//FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/silver/';
+
+
+//Toolbar configuration
+FCKConfig.ToolbarSets["full"] = [
+	['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
+	['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
+	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
+	['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
+	'/',
+	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
+	['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],
+	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
+	['Link','Unlink','Anchor'],
+	['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
+	'/',
+	['Style','FontFormat','FontName','FontSize'],
+	['TextColor','BGColor'],
+	['FitWindow','ShowBlocks','-','About']
+] ;
+
 FCKConfig.ToolbarSets["tl_default"] = [
 	['Cut','Copy','Paste','PasteText','PasteWord','Find','Replace','SelectAll','-',
 	'Anchor','Bold','Italic','Underline','OrderedList','UnorderedList','JustifyLeft'],
 	'/',['FontName','FontSize','TextColor','BGColor','-','Link','Unlink','Image','Table','Rule']
 ] ;
 
-/* Just an example */
 FCKConfig.ToolbarSets["tl_mini"] = [
 	['Anchor','Bold','Italic','Underline','OrderedList','UnorderedList','JustifyLeft'],
 	'/',['FontName','FontSize','TextColor','BGColor','-','Table','Rule']
 ] ;
 
-/* Disable a server browsing */
-FCKConfig.LinkBrowser = false;
-FCKConfig.LinkUpload = false;
+/* CKFINDER configuration
+   You need to modify third_party/ckfinder/config.php - $baseUrl and set it to fckeditor_upload_area path
+   refer to Configuration_of_FCKEditor_and_CKFinder.pdf */
+
+//FCKConfig.LinkBrowserURL = '../../../ckfinder/ckfinder.html';
+//FCKConfig.ImageBrowserURL = '../../../ckfinder/ckfinder.html?type=Images';
+//FCKConfig.FlashBrowserURL = '../../../ckfinder/ckfinder.html?type=Flash';
+//FCKConfig.LinkUploadURL = '../../../ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files';
+//FCKConfig.ImageUploadURL = '../../../ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images';
+//FCKConfig.FlashUploadURL = '../../../ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash';
\ No newline at end of file

Modified: trunk/testlink/config.inc.php
===================================================================
--- trunk/testlink/config.inc.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/config.inc.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -16,14 +16,20 @@
  * replace values of TestLink configuration variables.
  * It saves your changes for the next upgrade in one extra file.
  *
+ * @filesource	config.inc.php
  * @package 	TestLink
- * @copyright 	2005-2009, TestLink community
- * @version    	CVS: $Id: config.inc.php,v 1.333.2.8 2011/01/09 09:24:56 franciscom Exp $
+ * @copyright 	2005-2011, TestLink community
  * @link 		http://www.teamst.org/index.php
  *
- * @internal Revisions:
- * 20110109 - franciscom - added $tlCfg->req_cfg->duplicated_name_algorithm
- *								 $tlCfg->req_cfg->duplicated_docid_algorithm
+ * @internal revisions
+ *	20110530 - Julian - allow to define seperate logo for generated documents including height 
+ *	20110414 - franciscom - moved $g_prefix_name_for_copy BEFORE use of custom config
+ *	20110409 - franciscom - BUGID 4368: Provide WYSIWYG Editor for platform notes
+ *							$tlCfg->platform_template						
+ *	20110319 - franciscom - BUGID 4322: New Option to block delete of executed test cases.
+ *							testcase_cfg->can_delete_executed
+ * 	20110109 - franciscom - added $tlCfg->req_cfg->duplicated_name_algorithm
+ *								  $tlCfg->req_cfg->duplicated_docid_algorithm
  *
  *	20110103 - franciscom - BUGID 4131: PHPMAILER - upgrade config options to use SSL or TLS - allows use gmail
  *	20101212 - franciscom - req_cfg->log_message_len
@@ -79,47 +85,7 @@
  *  20090103 - franciscom - $tlCfg->req_cfg->coverageStatusAlgorithm
  *  20090103 - franciscom - BUGID 651 - $tlCfg->testcase_cfg->can_remove_executed
  *  20090101 - franciscom - changes in regex used to validate an email address
- *  20081228 - franciscom - gui->layoutMainPageLeft,gui->layoutMainPageRight
- *  20081217 - franciscom - exec_cfg->simple_tester_roles
- *  20081213 - franciscom - more remove of old $g_* config parameters.
- *  20081122 - franciscom - removed some old $g_* config parameters.
- *  20081115 - franciscom - $tlCfg->testcase_cfg->search
- *  20081104 - franciscom - Added FOGBUGZ as BTS type
- *  20081103 - franciscom - Added GFORGE as BTS type
- *  20081006 - franciscom - config for rounding via nifty corners
- *  20080925 - franciscom - refactoring of urgencyImportance config
- *                          $tlCfg->req_cfg->child_requirements_mgmt
  *
- *  20080805 - franciscom - api configuration refactoring
- *  20080805 - franciscom - BUGID 1660 - extjs tree is default
- *  20080504 - franciscom - removed gui->enable_custom_fields
- * 	20080419 - havlatm - documentation update; minor refactorization
- *  20080326 - franciscom - restored configuration parameters removed without reasons.
- *
- * 	20080423 - havlatm - added $tlCfg as standard configuration holder
- *  20080322 - franciscom - $g_exec_cfg->edit_notes
- *  20080308 - franciscom - changed initial values for email settings
- *  20080304 - franciscom - $g_exec_cfg->show_testsuite_contents
- *  20080208 - franciscom - added contribution seapine BTS (BUGID 1371)
- *  20071112 - franciscom - config changes due to upgrade of Smarty
- *  20071106 - franciscom - BUGID 1165 - $g_testcase_template
- *
- *  20071104 - franciscom - $g_exec_cfg->enable_test_automation
- *                          $g_gui->tprojects_combo_order_by (BUGID 498)
- *  20070930 - franciscom - BUGID 1086 - configure order by in attachment
- *  20070910 - franciscom - removed MAIN_PAGE_METRICS_ENABLED
- *  20070505 - franciscom - following mantis bug tracking style, if file
- *                          custom_config.inc.php exists, il will be included
- *                          allowing users to customize TL configurations
- *                          managed using global variables, without need
- *                          of changing this file.
- *
- *  20070429 - franciscom - added contribution by Seweryn Plywaczyk
- *                          text area custom field
- *
- *  20070415 - franciscom -  added config for drag and drop feature
- *  20070301 - franciscom - #695 - $g_user_self_signup (fawel contribute)
- *
  **/
 
 // ----------------------------------------------------------------------------
@@ -292,7 +258,8 @@
  * 'SEAPINE'   : edit configuration in TL_ABS_PATH/cfg/seapine.cfg.php
  * 'GFORGE'    : edit configuration in TL_ABS_PATH/cfg/gforge.cfg.php
  * 'FOGBUGZ'   : edit configuration in TL_ABS_PATH/cfg/fogbugz.cfg.php
- * 'YOUTRACK' : edit configuration in TL_ABS_PATH/cfg/youtrack.cfg.php
+ * 'YOUTRACK'  : edit configuration in TL_ABS_PATH/cfg/youtrack.cfg.php
+ * 'POLARION'  : edit configuration in TL_ABS_PATH/cfg/polarion.cfg.php
  * 'EVOLVIS'   : edit configuration in TL_ABS_PATH/cfg/evolvis.cfg.php
  * ]
  */
@@ -631,12 +598,20 @@
 $tlCfg->document_generator->company_copyright = '2009 © TestLink Community';
 $tlCfg->document_generator->confidential_msg = '';
 
+// Logo for generated documents
+$tlCfg->document_generator->company_logo = 'company_logo.png';
+$tlCfg->document_generator->company_logo_height = '53';
+
 /** CSS used in printed html documents */
 
 // BUGID 3424
 // $tlCfg->document_generator->css_template = $tlCfg->theme_dir . 'css/tl_documents.css';
+// CSS file for Test Specification Document, Test Plan Report, Test Report and Test Case Print View
 $tlCfg->document_generator->css_template = 'css/tl_documents.css';
 
+// CSS file for Requirement Specification Document, Requirement and Requirement Spec Print View
+$tlCfg->document_generator->requirement_css_template = 'css/tl_documents.css';
+
 /** Misc settings */
 // Display test case version when creating test spec document
 $tlCfg->document_generator->tc_version_enabled = FALSE;
@@ -784,6 +759,12 @@
 $tlCfg->testcase_cfg->can_remove_executed = ENABLED;
 
 
+// ENABLED -> user can DELETE a TEST CASE that has been executed. 
+// DISABLED -> [STANDARD BEHAVIOUR]
+// IMPORTANT: this is valid for any role => admin is also under this law.
+$tlCfg->testcase_cfg->can_delete_executed = DISABLED;
+
+
 // To avoid perfomance problems on search test case feature,
 // we can decide when to inform user that results can not be displayed
 // due to too many results.
@@ -890,6 +871,11 @@
 $tlCfg->role_template->notes->value = '';
 
 
+$tlCfg->platform_template = new stdClass();
+$tlCfg->platform_template->notes = new stdClass();
+$tlCfg->platform_template->notes->type = 'none';
+$tlCfg->platform_template->notes->value = '';
+
 // ----------------------------------------------------------------------------
 /* [ATTACHMENTS] */
 
@@ -1009,6 +995,11 @@
 // DISABLED: do not ask, do not use
 $tlCfg->req_cfg->expected_coverage_management = ENABLED;
 
+// Show Child Requirements on Requirement Specification Print View
+// ENABLED: Requirement Specification including Child Requirements are shown
+// DIABLED: ONLY Requirement Specification is shown
+$tlCfg->req_cfg->show_child_reqs_on_reqspec_print_view = DISABLED;
+
 // 20090111 - franciscom
 // Order of test cases status in this array, is used to undestand
 // to what status set requirement in the requirements report.
@@ -1029,7 +1020,7 @@
 // This logic is implemented using following config parameter
 $tlCfg->req_cfg->coverageStatusAlgorithm['checkOrder']=array('atLeastOne','all');
 $tlCfg->req_cfg->coverageStatusAlgorithm['checkType']['atLeastOne']=array('failed','blocked');
-$tlCfg->req_cfg->coverageStatusAlgorithm['checkType']['all']=array('not_run','passed');
+$tlCfg->req_cfg->coverageStatusAlgorithm['checkType']['all']=array('passed');
 
 // Configure here what status has to get requirement when check of type 'all' fails like
 // in following situation (BUGID 2171)
@@ -1367,6 +1358,14 @@
 $tlCfg->enableTableExportButton = DISABLED;
 
 
+/** 
+Used when creating a Test Suite using copy
+and you have choose  $g_action_on_duplicate_name = 'generate_new'
+if the name exist.
+*/
+$g_prefix_name_for_copy = strftime("%Y%m%d-%H:%M:%S", time());
+
+
 // ----- End of Config ------------------------------------------------------------------
 // --------------------------------------------------------------------------------------
 // DO NOT CHANGE NOTHING BELOW
@@ -1377,7 +1376,6 @@
 require_once('configCheck.php');
 
 /** root of testlink directory location seen through the web server */
-// @TODO: basehref should be defined by installation script or stored from login in $_SESSION
 /*  20070106 - franciscom - this statement it's not 100% right
     better use $_SESSION['basehref'] in the scripts. */
 define('TL_BASE_HREF', get_home_url());
@@ -1444,6 +1442,7 @@
 define('TL_THEME_IMG_DIR', $tlCfg->theme_dir . 'images/');
 define('TL_THEME_CSS_DIR', $tlCfg->theme_dir . 'css/');
 define('TL_TESTLINK_CSS', TL_THEME_CSS_DIR . TL_CSS_MAIN);
+define('TL_TESTLINK_CUSTOM_CSS', TL_THEME_CSS_DIR . TL_CSS_CUSTOM);
 define('TL_PRINT_CSS', TL_THEME_CSS_DIR . TL_CSS_PRINT);
 define('TL_TREEMENU_CSS', TL_THEME_CSS_DIR . TL_CSS_TREEMENU);
 
@@ -1466,20 +1465,12 @@
 $g_ereg_forbidden = "/[|]/i";
 
 
-/** @TODO martin: remove from configuration and use a number in brackets after name ("My Test Title(2)")
- * Used when creating a Test Suite using copy
-   and you have choose  $g_action_on_duplicate_name = 'generate_new'
-   if the name exist.
- */
-$g_prefix_name_for_copy = strftime("%Y%m%d-%H:%M:%S", time());
 
-
 /**
  * @TODO remove from TL - unfinished refactorization;
  * use $tlCfg instead of old variables and constants
  */
 define('TL_IMPORT_ROW_MAX', $tlCfg->import_max_row);
-// define('TL_ITEM_BULLET_IMG', TL_THEME_IMG_DIR . $tlCfg->bullet_image);
 define('TL_TPL_CHARSET', $tlCfg->charset);
 define('TITLE_SEP',$tlCfg->gui_title_separator_1);
 define('TITLE_SEP_TYPE2',$tlCfg->gui_title_separator_2);
@@ -1487,12 +1478,9 @@
 define('TL_FRMWORKAREA_LEFT_FRAME_WIDTH', $tlCfg->frame_workarea_default_width);
 define('TL_TEMP_PATH', $tlCfg->temp_dir);
 
-
-$tlCfg->document_generator->company_logo = $tlCfg->company_logo;
-
 $tlCfg->gui->title_separator_1 =  $tlCfg->gui_title_separator_1;
 $tlCfg->gui->title_separator_2 =  $tlCfg->gui_title_separator_2;
 $tlCfg->gui->role_separator_open =  $tlCfg->gui_separator_open;
 $tlCfg->gui->role_separator_close = $tlCfg->gui_separator_close;
 // ----- END OF FILE --------------------------------------------------------------------
-?>
+?>
\ No newline at end of file

Modified: trunk/testlink/custom_config.inc.php.example
===================================================================
--- trunk/testlink/custom_config.inc.php.example	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/custom_config.inc.php.example	2012-04-11 09:34:31 UTC (rev 18330)
@@ -5,8 +5,8 @@
  *
  * Filename $RCSfile: custom_config.inc.php.example,v $
  *
- * @version $Revision: 1.7 $
- * @modified $Date: 2010/08/19 19:08:34 $ by $Author: franciscom $
+ * @version $Revision: 1.9 $
+ * @modified $Date: 2011/02/10 22:42:33 $ by $Author: franciscom $
  *
  * SCOPE:
  * Constants and configuration parameters used throughout TestLink DEFINED BY USERS.
@@ -135,36 +135,58 @@
 
 //$g_log_level='DEBUG';
 
-// $tlCfg->results['status_code'] = array ( 
-//         "failed"        => 'f', 
-//         "blocked"       => 'b', 
-//         "passed"        => 'p', 
-//         "not_run"       => 'n', 
-//         "not_available" => 'x', 
-//         "unknown"       => 'u', 
-//         "all"           => 'a' 
-// ); 
-// 
-// $tlCfg->results['status_label'] = array( 
-//         "passed"                => "test_status_passed", 
-//         "failed"                => "test_status_failed", 
-//         "blocked"               => "test_status_blocked", 
-//         "not_run"               => "test_status_not_run", 
-// //    "all"                   => "test_status_all_status", 
-//         "not_available"    => "test_status_not_available", 
-// //      "unknown"          => "test_status_unknown" 
-// ); 
-// 
-// $tlCfg->results['status_label_for_exec_ui'] = array( 
-//         "passed"  => "test_status_passed", 
-//         "failed"  => "test_status_failed", 
-//         "blocked" => "test_status_blocked", 
-//         "not_run" => "test_status_not_run",
-//         "not_available" => "test_status_not_available" 
-// ); 
-// 
-// $tlCfg->results['default_status'] = "not_run"; 
+/** Define your own test status(es) by modifying
+ *   - $tlCfg->results['status_code'] (in this file)
+ *   - $tlCfg->results['status_label'] (in this file)
+ *   - $tlCfg->results['status_label_for_exec_ui'] (in this file)
+ *   - $tlCfg->results['charts']['status_colour'] (in this file)
+ *   - /locale/<your_language>/custom_strings.txt (see custom_strings.txt.example)
+ *   - /gui/themes/default/css/custom.css (see custom.css.example)
+ */
+
+// This Example shows how to add the status 'my_status'
+
+//$tlCfg->results['status_code'] = array (
+//	'failed'        => 'f',
+//	'blocked'       => 'b',
+//	'passed'        => 'p',
+//	'not_run'       => 'n',
+//	'not_available' => 'x',
+//	'unknown'       => 'u',
+//	'all'           => 'a',
+//	'my_status'     => 'm'
+//); 
 //
+//// For localization example see /locale/<your_language>/custom_strings.txt.example
+//$tlCfg->results['status_label'] = array(
+//	'not_run'       => 'test_status_not_run',
+//	'passed'        => 'test_status_passed',
+//	'failed'        => 'test_status_failed',
+//	'blocked'       => 'test_status_blocked',
+//	'my_status'     => 'test_status_my_status'
+////	'all'           => 'test_status_all_status',
+////	'not_available' => 'test_status_not_available',
+////	'unknown'       => 'test_status_unknown'
+//);
+//
+//$tlCfg->results['status_label_for_exec_ui'] = array(
+//	'not_run'   => 'test_status_not_run',
+//	'passed'    => 'test_status_passed',
+//	'failed'    => 'test_status_failed',
+//	'blocked'   => 'test_status_blocked',
+//	'my_status' => 'test_status_my_status'
+//);
+//
+//$tlCfg->results['default_status'] = 'not_run';
+//
+//$tlCfg->results['charts']['status_colour'] = array(
+//	'not_run'   => '000000',
+//	'passed'    => '006400',
+//	'failed'    => 'B22222',
+//	'blocked'   => '00008B',
+//	'my_status' => 'FF8C11'
+//);
+//
 // -------------------------------------------------------------------------------------------------
 // Item templates
 //

Modified: trunk/testlink/docs/Configuration_of_FCKEditor_and_CKFinder.pdf
===================================================================
(Binary files differ)

Copied: trunk/testlink/docs/file_examples/custom_fields/RE-XMLRPC-customFields.xml (from rev 18329, vendor/testlink/docs/file_examples/custom_fields/RE-XMLRPC-customFields.xml)
===================================================================
--- trunk/testlink/docs/file_examples/custom_fields/RE-XMLRPC-customFields.xml	                        (rev 0)
+++ trunk/testlink/docs/file_examples/custom_fields/RE-XMLRPC-customFields.xml	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!-- Custom fields used to implement XML-RPC remote execution -->
+<custom_fields>
+	<custom_field>
+		<name><![CDATA[RE-XMLRPC_url_link]]></name>
+		<label><![CDATA[XML-RPC Server URL @Test Plan Design Level]]></label>
+		<type><![CDATA[501]]></type>
+		<possible_values><![CDATA[]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[0]]></show_on_design>
+		<enable_on_design><![CDATA[0]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[0]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[1]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[1]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+	<custom_field>
+		<name><![CDATA[RE-XMLRPC_url_tcase]]></name>
+		<label><![CDATA[XML-RPC Server URL @Test Case level]]></label>
+		<type><![CDATA[0]]></type>
+		<possible_values><![CDATA[]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[1]]></show_on_design>
+		<enable_on_design><![CDATA[1]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[0]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[0]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[0]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+	<custom_field>
+		<name><![CDATA[RE-XMLRPC_url_tsuite]]></name>
+		<label><![CDATA[XML-RPC Server URL @Test Suite level]]></label>
+		<type><![CDATA[0]]></type>
+		<possible_values><![CDATA[]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[1]]></show_on_design>
+		<enable_on_design><![CDATA[1]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[0]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[0]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[0]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[2]]></node_type_id>
+	</custom_field>
+</custom_fields>

Copied: trunk/testlink/docs/file_examples/custom_fields/cf4RemoteExecServerCfg.xml (from rev 18329, vendor/testlink/docs/file_examples/custom_fields/cf4RemoteExecServerCfg.xml)
===================================================================
--- trunk/testlink/docs/file_examples/custom_fields/cf4RemoteExecServerCfg.xml	                        (rev 0)
+++ trunk/testlink/docs/file_examples/custom_fields/cf4RemoteExecServerCfg.xml	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,37 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<custom_fields>
+	<custom_field>
+		<name><![CDATA[xml_server_host]]></name>
+		<label><![CDATA[XML-RPC Server Host]]></label>
+		<type><![CDATA[501]]></type>
+		<possible_values><![CDATA[]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[0]]></show_on_design>
+		<enable_on_design><![CDATA[0]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[0]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[1]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[1]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+	<custom_field>
+		<name><![CDATA[xml_server_port]]></name>
+		<label><![CDATA[XML-RPC Server Port]]></label>
+		<type><![CDATA[0]]></type>
+		<possible_values><![CDATA[]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[0]]></show_on_design>
+		<enable_on_design><![CDATA[0]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[0]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[1]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[1]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+</custom_fields>

Copied: trunk/testlink/docs/file_examples/custom_fields/cf4RemoteExecServerCfgKO.xml (from rev 18329, vendor/testlink/docs/file_examples/custom_fields/cf4RemoteExecServerCfgKO.xml)
===================================================================
--- trunk/testlink/docs/file_examples/custom_fields/cf4RemoteExecServerCfgKO.xml	                        (rev 0)
+++ trunk/testlink/docs/file_examples/custom_fields/cf4RemoteExecServerCfgKO.xml	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<custom_fields>
+	<custom_field>
+		<name>
+			<![CDATA[QQQxml_server_host]]></name>
+		<label>
+			<![CDATA[QQQQXML-RPC Server Host]]></label>
+		<type>
+			<![CDATA[501]]></type>
+		<possible_values><![CDATA[]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[0]]></show_on_design>
+		<enable_on_design><![CDATA[0]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[0]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[1]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[1]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+</custom_fields>

Copied: trunk/testlink/docs/file_examples/custom_fields/moreUsefulCustomFields.xml (from rev 18329, vendor/testlink/docs/file_examples/custom_fields/moreUsefulCustomFields.xml)
===================================================================
--- trunk/testlink/docs/file_examples/custom_fields/moreUsefulCustomFields.xml	                        (rev 0)
+++ trunk/testlink/docs/file_examples/custom_fields/moreUsefulCustomFields.xml	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,156 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<custom_fields>
+	<custom_field>
+		<name><![CDATA[Automated]]></name>
+		<label><![CDATA[Automated]]></label>
+		<type><![CDATA[5]]></type>
+		<possible_values><![CDATA[No | Yes]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[0]]></show_on_design>
+		<enable_on_design><![CDATA[0]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[1]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[0]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[0]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+	<custom_field>
+		<name><![CDATA[Controller Mode]]></name>
+		<label><![CDATA[Controller Mode]]></label>
+		<type><![CDATA[6]]></type>
+		<possible_values><![CDATA[Dual|Single]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[0]]></show_on_design>
+		<enable_on_design><![CDATA[0]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[1]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[0]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[0]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+	<custom_field>
+		<name><![CDATA[Priority]]></name>
+		<label><![CDATA[Priority]]></label>
+		<type><![CDATA[6]]></type>
+		<possible_values><![CDATA[Critical|Important|Required|Optional]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[1]]></show_on_design>
+		<enable_on_design><![CDATA[1]]></enable_on_design>
+		<show_on_execution><![CDATA[0]]></show_on_execution>
+		<enable_on_execution><![CDATA[0]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[0]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[0]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+	<custom_field>
+		<name><![CDATA[IO Application]]></name>
+		<label><![CDATA[IO Application]]></label>
+		<type><![CDATA[7]]></type>
+		<possible_values><![CDATA[DT|Diskerciser|Iometer|JetStress|Medusa|N/A|Simple|SQLIOStress|WINTHRAX|Xdd]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[0]]></show_on_design>
+		<enable_on_design><![CDATA[0]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[1]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[0]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[0]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+	<custom_field>
+		<name><![CDATA[SFA Platform]]></name>
+		<label><![CDATA[SFA Platform]]></label>
+		<type><![CDATA[6]]></type>
+		<possible_values><![CDATA[Aspen | Snowmass | Beaver Creek | Dragon | S2A6620]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[0]]></show_on_design>
+		<enable_on_design><![CDATA[0]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[1]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[0]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[0]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+	<custom_field>
+		<name><![CDATA[Time To Test]]></name>
+		<label><![CDATA[Test Duration (HHH:MM)]]></label>
+		<type><![CDATA[1]]></type>
+		<possible_values><![CDATA[]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[0]]></show_on_design>
+		<enable_on_design><![CDATA[0]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[1]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[0]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[0]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+	<custom_field>
+		<name><![CDATA[Background Verify]]></name>
+		<label><![CDATA[Background Verify]]></label>
+		<type><![CDATA[5]]></type>
+		<possible_values><![CDATA[Off | On]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[0]]></show_on_design>
+		<enable_on_design><![CDATA[0]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[1]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[0]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[0]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+	<custom_field>
+		<name><![CDATA[FW Version]]></name>
+		<label><![CDATA[FW Version]]></label>
+		<type><![CDATA[0]]></type>
+		<possible_values><![CDATA[]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[0]]></show_on_design>
+		<enable_on_design><![CDATA[0]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[1]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[0]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[0]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+	<custom_field>
+		<name><![CDATA[Number of Shelves]]></name>
+		<label><![CDATA[Number of Shelves]]></label>
+		<type><![CDATA[6]]></type>
+		<possible_values><![CDATA[5 shelf | 10 shelf | 20 shelf]]></possible_values>
+		<default_value><![CDATA[]]></default_value>
+		<valid_regexp><![CDATA[]]></valid_regexp>
+		<length_min><![CDATA[0]]></length_min>
+		<length_max><![CDATA[0]]></length_max>
+		<show_on_design><![CDATA[0]]></show_on_design>
+		<enable_on_design><![CDATA[0]]></enable_on_design>
+		<show_on_execution><![CDATA[1]]></show_on_execution>
+		<enable_on_execution><![CDATA[1]]></enable_on_execution>
+		<show_on_testplan_design><![CDATA[0]]></show_on_testplan_design>
+		<enable_on_testplan_design><![CDATA[0]]></enable_on_testplan_design>
+		<node_type_id><![CDATA[3]]></node_type_id>
+	</custom_field>
+</custom_fields>

Copied: trunk/testlink/docs/file_examples/custom_fields/ragged_file.xml (from rev 18329, vendor/testlink/docs/file_examples/custom_fields/ragged_file.xml)
===================================================================
--- trunk/testlink/docs/file_examples/custom_fields/ragged_file.xml	                        (rev 0)
+++ trunk/testlink/docs/file_examples/custom_fields/ragged_file.xml	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,10 @@
+  <custom_fields>
+      <custom_field>
+        <name>
+          <![CDATA[QATrackSuiteID]]>
+</name>
+        <value>
+          <![CDATA[TSC462-0.2]]>
+</value>
+      </custom_field>
+    </custom_fields>

Copied: trunk/testlink/docs/file_examples/custom_fields/ragged_file2.xml (from rev 18329, vendor/testlink/docs/file_examples/custom_fields/ragged_file2.xml)
===================================================================
--- trunk/testlink/docs/file_examples/custom_fields/ragged_file2.xml	                        (rev 0)
+++ trunk/testlink/docs/file_examples/custom_fields/ragged_file2.xml	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<custom_fields>
+<custom_field>
+					<name>
+<![CDATA[QAAQATrackSuiteID]]>
+</name>
+<label>
+								<![CDATA[TSC462-0.2]]>
+</label>
+		<type>
+			<![CDATA[501]]></type>
+		<node_type_id>
+			
+			
+			
+			
+			<![CDATA[3]]>																		
+																							</node_type_id>
+
+</custom_field>
+</custom_fields>

Copied: trunk/testlink/docs/file_examples/platforms/browsers.xml (from rev 18329, vendor/testlink/docs/file_examples/platforms/browsers.xml)
===================================================================
--- trunk/testlink/docs/file_examples/platforms/browsers.xml	                        (rev 0)
+++ trunk/testlink/docs/file_examples/platforms/browsers.xml	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,75 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<platforms>
+	<platform>
+		<name><![CDATA[Firefox]]></name>
+		<notes><![CDATA[Mozilla Firefox is probably one of the best known of the third-party browsers, and by this time just about everyone has one copy stashed away somewhere on their computer. Firefox is a Gecko-based browser with extensions, password management and a whole lot more.]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Flock]]></name>
+		<notes><![CDATA[Flock is considered an off shoot of Firefox that is built on Gecko and will run on Windows, Mac OS X, Linux and BSD. The major difference with Flock is that it is heavily focused on incorporating a social networking experience into the browser environment.]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Konqueror]]></name>
+		<notes><![CDATA[Konqueror is a part of the K Desktop Environment, but is also available for Unix systems, Mac OS X and is finally coming out for Windows systems. Besides being a browser, it can also be used for file management.]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Google Chrome]]></name>
+		<notes><![CDATA[Built on WebKit, Google Chrome has built a pretty loyal following in the relatively short time it has been out.  While it is not officially out yet for Mac OS X or Linux, both versions are supposed to be coming.  A lot of things are planned for the future versions of this particular application, but for now it is just an excellent browser without many bells or whistles.]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Sleipnir]]></name>
+		<notes><![CDATA[Sleipnir is a browser that is gaining in popularity in Japan, and has a heavy focus on customization that allows the user to create a browser that fits their specific needs. It is based around the Trident engine and features plugins, tabs, customizable skins and a lot more.]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Maxthon]]></name>
+		<notes><![CDATA[Maxthon is a China-based browser, but has gained a cult following in other parts of the world. Currently the browser runs on the Trident engine, but version 3, which is currently under testing, will run both Trident and WebKit. It includes features such as being skinable, undo for closed tabs, numerous extensions and a host of others.]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[K-Meleon]]></name>
+		<notes><![CDATA[Based on the Mozilla Gecko engine, K-Meleon is built around the concept of being lightweight and integrating tightly with the visual look of your Windows settings.
+]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Internet Explorer]]></name>
+		<notes><![CDATA[As much as designers bemoan the fact that Internet Explorer 6 haunts their nightmares, we’re talking about Internet Explorer 8 in this particular case. IE8 is more up-to-date on Web standards, handles AJAX and is a vast improvement over all of the previous versions of this mainstay of the browsing world.]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Avant]]></name>
+		<notes><![CDATA[Avant claims to be the fastest web browser, is available in 41 languages and has been downloaded over 22 million times. It uses the Trident layout engine to power itself, which makes it compatible with Internet Explorer toolbars and plugins. It also offers built-in features such as online profile storage that will allow you to log-in to your account from wherever you are, mouse gestures, auto-fill forms and a lot more.
+]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[SeaMonkey]]></name>
+		<notes><![CDATA[SeaMonkey is another browser in the Mozilla family, but is more of an application suite that features a browser, email and news reader.]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Safari]]></name>
+		<notes><![CDATA[While Safari is tightly associated with Macs as it is made by Apple and comes installed on every Mac, there is a Windows version that has gained some popularity. Built on WebKit, Safari goes with a minimalistic design that emphasizes the pages you are looking at, it also relies on numerous visual tricks to make mundane tasks like looking at your browsing history a bit more interesting.]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Opera]]></name>
+		<notes><![CDATA[Opera uses the Presto engine, and smaller versions of the browser are utilized in devices such as the Wii and Nintendo DS. It offers features such as data synchronization, in-line spell checking, mouse gestures and more.
+]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Shiira]]></name>
+		<notes><![CDATA[Shiira is an open source browser based out of Japan that is built on WebKit and aims “to create a browser that is better and more useful than Safari.”  At the time writing this there hasn’t been a new stable version released since 2007, so we’ll leave it up to you to decide if that mission was accomplished.]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[OmniWeb]]></name>
+		<notes><![CDATA[Developed by the well-known Omni Group, OmniWeb uses WebKit and includes some nice features such as workspaces, link viewing, ad blocking and a lot more]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[iCab]]></name>
+		<notes><![CDATA[iCab is based on WebKit and is available for free as “nag ware” that will remind you to register and upgrade to pro]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Camino]]></name>
+		<notes><![CDATA[Mozilla Power, Mac Style” is the tag line for this popular Mac-only web browser. Based on the Gecko engine, Camino is an open source browser project that tries to match its power to the Mac experience. Due to its open source nature, it also supports a number of add-ons that extend the usability of the program.]]></notes>
+	</platform>
+</platforms>
+ 
+
+ 
+
+

Copied: trunk/testlink/docs/file_examples/platforms/dbms.xml (from rev 18329, vendor/testlink/docs/file_examples/platforms/dbms.xml)
===================================================================
--- trunk/testlink/docs/file_examples/platforms/dbms.xml	                        (rev 0)
+++ trunk/testlink/docs/file_examples/platforms/dbms.xml	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<platforms>
+	<platform>
+		<name><![CDATA[MySQL]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[PostgreSQL]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Apache Derby]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[MSSQL]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[SQLite]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[EnterpriseDB]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Firebird]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Ingres]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[MariaDB]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Informix]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Oracle]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Pervasive]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[solidDB]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+</platforms>
\ No newline at end of file

Copied: trunk/testlink/docs/file_examples/platforms/formulaone.xml (from rev 18329, vendor/testlink/docs/file_examples/platforms/formulaone.xml)
===================================================================
--- trunk/testlink/docs/file_examples/platforms/formulaone.xml	                        (rev 0)
+++ trunk/testlink/docs/file_examples/platforms/formulaone.xml	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,51 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<platforms>
+	<platform>
+		<name><![CDATA[RBR-Renault]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[McLaren-Mercedes]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Ferrari]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Renault]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Sauber-Ferrari]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[STR-Ferrari]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Force India-Mercedes]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Mercedes]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Lotus-Renault]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Virgin-Cosworth]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Williams-Cosworth]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[HRT-Cosworth]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+</platforms>
\ No newline at end of file

Copied: trunk/testlink/docs/file_examples/platforms/motogp.xml (from rev 18329, vendor/testlink/docs/file_examples/platforms/motogp.xml)
===================================================================
--- trunk/testlink/docs/file_examples/platforms/motogp.xml	                        (rev 0)
+++ trunk/testlink/docs/file_examples/platforms/motogp.xml	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,43 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<platforms>
+	<platform>
+		<name><![CDATA[Yamaha Factory Racing]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[San Carlo Honda Gresini]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Rizla Suzuki MotoGP]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Repsol Honda Team]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Pramac Racing Team]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Monster Yamaha Tech 3]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Mapfre Aspar Team MotoGP]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[LCR Honda MotoGP]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Ducati Team]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+	<platform>
+		<name><![CDATA[Cardion AB Motoracing]]></name>
+		<notes><![CDATA[]]></notes>
+	</platform>
+</platforms>
\ No newline at end of file

Copied: trunk/testlink/docs/file_examples/requirements/req-1500-example-tl.csv (from rev 18329, vendor/testlink/docs/file_examples/requirements/req-1500-example-tl.csv)
===================================================================
--- trunk/testlink/docs/file_examples/requirements/req-1500-example-tl.csv	                        (rev 0)
+++ trunk/testlink/docs/file_examples/requirements/req-1500-example-tl.csv	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,1558 @@
+#docid,title,description,type,status,expected_coverage,node_order
+"RQT_SSY_CAS-IPPV_0007_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_CAS-OPPV_0001_v1","2.1 req1.1","test",1,"F",3,2
+"RQT_SSY_EASY-SMS_0001_v1","2.1 req1.2","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0037_v1","2.1 req1.3","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0008_v1","2.1 req1.4","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0009_v1","2.1 req1.5","test",1,"F",3,2
+"RQT_SSY_CAS-OPPV_0002_v1","2.1 req1.6","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0019_v1","2.2 req2.1","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0020_v1","2.2 req2.2","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0021_v1","2.2 req2.3","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0022_v1","2.2 req2.4","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0023_v1","2.2 req2.5","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0024_v1","2.2 req2.6","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0025_v1","2.2 req2.7","test",1,"F",3,2
+"RQT_SSY_MMI-PROMO_0001_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_MMI-PROMO_0002_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0021_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0022_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_MMI-OPPV_0001_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0030_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0029_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0050_v1","4.1 req9.1","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0023_v1","4.1 req9.2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0024_v1","4.1 req9.3","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0026_v1","4.1 req9.4","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0027_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0028_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0011_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0032_v1","1.3 req14.01","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0033_v1","1.3 req14.02","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0034_v1","1.3 req14.03","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0035_v1","1.3 req14.04","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0036_v1","1.3 req14.05","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0037_v1","2.1 req15.06","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0038_v1","2.1 req15.07","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0039_v1","2.2 req16.08","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0040_v1","2.3 req17.09","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0041_v1","2.4 req18.10","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0042_v1","2.5 req19.11","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0043_v1","2.6 req20.12","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0044_v1","2.7 req21.13","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0045_v1","2.7 req21.14","test",1,"F",3,2
+"RQT_SSY_LDR_0001_v1","2.7 req21.01","test",1,"F",3,2
+"RQT_SSY_LDR_0002_v1","2.7 req21.02","test",1,"F",3,2
+"RQT_SSY_LDR_0003_v1","2.7 req21.03","test",1,"F",3,2
+"RQT_SSY_LDR_0004_v1","2.7 req21.04","test",1,"F",3,2
+"RQT_SSY_LDR_0005_v1","2.7 req21.05","test",1,"F",3,2
+"RQT_SSY_LDR_0006_v1","2.7 req21.06","test",1,"F",3,2
+"RQT_SSY_CAS_0001_v1","2.7 req21.07","test",1,"F",3,2
+"RQT_SSY_LDR_0007_v1","2.7 req21.08","test",1,"F",3,2
+"RQT_SSY_SSV_0001_v1","2.7 req21.09","test",1,"F",3,2
+"RQT_SSY_SSV_0002_v1","2.7 req21.10","test",1,"F",3,2
+"RQT_SSY_SSV_0003_v1","2.7 req21.11","test",1,"F",3,2
+"RQT_SSY_STABILITY_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0001_v1","5. ma1n 1","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0002_v1","5. ma1n 2","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0003_v1","5. ma1n 3","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0004_v1","5. ma1n 4","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0005_v1","5. ma1n 5","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0006_v1","5. ma1n 6","test",1,"F",3,2
+"RQT_SSY_EPG_0014_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0026_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0027_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0008_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_EPG_0001_v1","5.1. EPG 1","test",1,"F",3,2
+"RQT_SSY_EPG_0002_v1","5.1. EPG 2","test",1,"F",3,2
+"RQT_SSY_EPG_0003_v1","5.1. EPG 3","test",1,"F",3,2
+"RQT_SSY_EPG_0004_v1","5.1. EPG 4","test",1,"F",3,2
+"RQT_SSY_EPG_0005_v1","5.1. EPG 5","test",1,"F",3,2
+"RQT_SSY_EPG_0006_v1","5.1. EPG 6","test",1,"F",3,2
+"RQT_SSY_EPG_0007_v1","5.1. EPG 7","test",1,"F",3,2
+"RQT_SSY_EPG_0008_v1","5.1. EPG 8","test",1,"F",3,2
+"RQT_SSY_EPG_0009_v1","5.1. EPG 9","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NAME_0001_v1","5.2.1 Channel 1","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NAME_0002_v1","5.2.1 Channel 2","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NAME_0003_v1","5.2.1 Channel 3","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NAME_0004_v1","5.2.1 Channel 4","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NAME_0006_v1","5.2.1 Channel 5","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NB_0001_v1","5.2.1 Channel09","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NB_0002_v1","5.2.1 Channel10","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NB_0003_v1","5.2.1 Channel11","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NB_0004_v1","5.2.1 Channel12","test","prior","to","the","channel","number","(E.g.","if","the","channel","number","is",85,"then","it","will","be","present","as","85""""","not","as","085"""").","|5",,,,,"|6",,,,,"|7",,,,,"|8",,,,,"|9",,,,,,"|10",,,,,"|11","DEFINED",,,,"|12",,,,,"|13","DigiTurk",,,,"|14",,,,,"|15",,,,,"|16",,,,,"|17",,,,,"|18",,,,,"|19","X",,,,"|20","X",,,,"|21",,,,,"|22",,,,,"|23",,,,,"|24","X",,,,"|25",,,,,"|26",,,,,"|27",,,,,"|28","X",,,,"|29",,,,,"|30",,,,,"|31",,,,,"|32",,,,,"|33",,,,,"|34",,,,,"|35",,,,,"|36",,,,,"|37",,,,,"|38",,,,,"|39",,,,,,"|40",,,,,"|41",,,,,"|42","X",,,,"|43",,,,,"|44",,,,,"|45",,,,,"|46",,,,,"|47",,,,,"|48",,,,,"|49",,,,,"|50","X",,,,"|51",,,,,"|52",,,,,"|53",,,,,"|54",,,,,"|55",,,,,"|56",,,,,"|57","X""",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NB_0005_v1","5.2.1 Channel13","test","shall","also","be","supported","if","there","is","a","channel","with","channel","number","0.","|5",,,,,"|6",,,,,"|7",,,,,"|8",,,,,"|9",,,,,,"|10",,,,,"|11","DEFINED",,,,"|12",,,,,"|13","DigiTurk",,,,"|14",,,,,"|15",,,,,"|16",,,,,"|17",,,,,"|18",,,,,"|19",,,,,,"|20","X",,,,"|21",,,,,"|22",,,,,"|23",,,,,"|24",,,,,"|25",,,,,"|26",,,,,"|27",,,,,"|28","X",,,,"|29",,,,,"|30",,,,,"|31",,,,,"|32",,,,,"|33",,,,,"|34",,,,,"|35",,,,,"|36",,,,,"|37",,,,,"|38",,,,,"|39",,,,,,"|40",,,,,"|41",,,,,"|42","X",,,,"|43",,,,,"|44",,,,,"|45",,,,,"|46",,,,,"|47",,,,,"|48",,,,,"|49",,,,,"|50","X""",1,"F",3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+"RQT_SSY_MMI-EVENT-NAME_0001_v1"," 5.2.3 Event 14","test",1,"F",3,2
+"RQT_SSY_MMI-EVENT-NAME_0002_v1"," 5.2.3 Event 15","test",1,"F",3,2
+"RQT_SSY_MMI-EVENT-NAME_0003_v1"," 5.2.3 Event 16","test",1,"F",3,2
+"RQT_SSY_MMI-EVENT-NAME_0004_v1"," 5.2.3 Event 17","test",1,"F",3,2
+"RQT_SSY_MMI-EVENT-NAME_0005_v1"," 5.2.3 Event 18","test",1,"F",3,2
+"RQT_SSY_MMI-EVENT-NAME_0006_v1"," 5.2.3 Event 19","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0001_v1","5.2.4 Banner 1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0002_v1","5.2.4 Banner 2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0003_v1","5.2.4 Banner 3","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0004_v1","5.2.4 Banner 4","test",1,"F",3,2
+"RQT_SSY_EPG-SCALED-VID_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_EPG-SCALED-VID_0002_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_EPG-SCALED-VID_0003_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_EPG-SCALED-VID_0004_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_EPG-SCALED-VID_0005_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_DATE_0001_v1","15.2.6  Info","test",1,"F",3,2
+"RQT_SSY_DATE_0002_v1","25.2.6  Info","test",1,"F",3,2
+"RQT_SSY_DATE_0003_v1","35.2.6  Info","test",1,"F",3,2
+"RQT_SSY_DATE_0004_v1","45.2.6  Info","test",1,"F",3,2
+"RQT_SSY_TAG_0001_v1","015.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0002_v1","025.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0003_v1","035.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0004_v1","045.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0005_v1","055.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0006_v1","065.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0007_v1","075.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0008_v1","085.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0009_v1","095.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_TAG_0010_v1","105.2.9 Series","test",1,"F",3,2
+"RQT_SSY_TAG_0011_v1","115.2.9 Series","test",1,"F",3,2
+"RQT_SSY_TAG_0012_v1","125.2.9 Series","test",1,"F",3,2
+"RQT_SSY_TAG_0013_v1","135.2.9 Series","test",1,"F",3,2
+"RQT_SSY_TAG_0014_v1","145.2.9 Series","test",1,"F",3,2
+"RQT_SSY_TAG_0015_v1","155.2.10 Based","test",1,"F",3,2
+"RQT_SSY_TAG_0016_v1","165.2.10 Based","test",1,"F",3,2
+"RQT_SSY_TAG_0017_v1","175.2.10 Based","test",1,"F",3,2
+"RQT_SSY_TAG_0018_v1","185.2.10 Based","test",1,"F",3,2
+"RQT_SSY_TAG_0019_v1","195.2.10 Based","test",1,"F",3,2
+"RQT_SSY_TAG_0020_v1","205.2.10 Based","test",1,"F",3,2
+"RQT_SSY_TAG_0021_v1","215.2.11 List ","test",1,"F",3,2
+"RQT_SSY_TAG_0022_v1","225.2.11 List ","test",1,"F",3,2
+"RQT_SSY_TAG_0023_v1","235.2.11 List ","test",1,"F",3,2
+"RQT_SSY_TAG_0024_v1","245.2.11 List ","test",1,"F",3,2
+"RQT_SSY_TAG_0025_v1","255.2.11 List ","test",1,"F",3,2
+"RQT_SSY_TAG_0026_v1","265.2.11 List ","test",1,"F",3,2
+"RQT_SSY_TAG_0027_v1","275.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_TAG_0028_v1","285.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PVR_0090_v1","295.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVERT_0001_v1","095.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVERT_0002_v1","105.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVERT_0003_v1","115.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVERT_0004_v1","125.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVERT_0005_v1","135.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVERT_0006_v1","145.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_EPG-NAV_0001_v1","Z5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_EPG-NAV_0002_v1","X5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_EPG-NAV_0003_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_EPG-NAV_0004_v1","Z2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0028_v1","X2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL_0001_v1","ZZ2.1 req1","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0001_v1","ZXZ2.1 req1","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0002_v1","S2.1 req1","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0003_v1","SX2.1 req1","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0004_v1","082.2 req2","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0005_v1","092.2 req2","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0006_v1","102.2 req2","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0007_v1","112.2 req2","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0008_v1","122.2 req2","test",1,"F",3,2
+"RQT_SSY_CHL_FILT_0001_v1","A2.2 req2","test",1,"F",3,2
+"RQT_SSY_CHL_FILT_0002_v1","B2.2 req2","test",1,"F",3,2
+"RQT_SSY_CHL_FILT_0003_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_CHL_FILT_0004_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_CHL_FILT_0005_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_MUSIC_CHL_0001_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0001_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0002_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0003_v1","4.1 req907","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0004_v1","4.1 req908","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0005_v1","4.1 req909","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0006_v1","4.1 req910","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0007_v1","4.1 req911","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0008_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0009_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_EPG-THEME_0001_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_EPG-THEME_0002_v1","1.3 req14A","test",1,"F",3,2
+"RQT_SSY_EPG-THEME_0003_v1","1.3 req14B","test",1,"F",3,2
+"RQT_SSY_EPG-THEME_0004_v1","1.3 req14C","test",1,"F",3,2
+"RQT_SSY_EPG-THEME_0005_v1","1.3 req14D","test",1,"F",3,2
+"RQT_SSY_EPG-RECOM-EVT_0001_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_EPG-RECOM-EVT_0002_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_EPG-RECOM-EVT_0003_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_EPG-RECOM-EVT_0004_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_EPG-RECOM-EVT_0005_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_EPG-RECOM-EVT_0006_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_REC_0001_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_REC_0002_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0001_v1","2.7 req21-01","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0002_v1","2.7 req21-02","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0003_v1","2.7 req21-03","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0004_v1","2.7 req21-04","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0005_v1","2.7 req21-05","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0006_v1","2.7 req21-06","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0007_v1","2.7 req21-07","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0008_v1","2.7 req21-08","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0009_v1","2.7 req21-09","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0010_v1","2.7 req21-10","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0011_v1","2.7 req21-11","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0012_v1","2.7 req21-12","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0013_v1","2.7 req21-13","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0014_v1","2.7 req21-14","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0015_v1","5. ma1n K1","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0016_v1","5. ma1n K2","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0017_v1","5. ma1n K3","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0018_v1","5. ma1n K4","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0019_v1","5. ma1n K5","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0020_v1","5. ma1n K6","test",1,"F",3,2
+"RQT_SSY_REC-TIMER_0001_v1","5. ma1n OP1","test",1,"F",3,2
+"RQT_SSY_REC-TIMER_0002_v1","5. ma1n OP2","test",1,"F",3,2
+"RQT_SSY_REC-TIMER_0003_v1","5. ma1n OP3","test",1,"F",3,2
+"RQT_SSY_REC-TIMER_0004_v1","5. ma1n OP4","test",1,"F",3,2
+"RQT_SSY_CONFLITMNGT_0001_v1","5.1. EPG QAAA","test",1,"F",3,2
+"RQT_SSY_CONFLITMNGT_0002_v1","5.1. EPG QAQAQQ","test",1,"F",3,2
+"RQT_SSY_SERIES_0001_v1","5.1. EPG XC1","test",1,"F",3,2
+"RQT_SSY_SERIES_0002_v1","5.1. EPG XC2","test",1,"F",3,2
+"RQT_SSY_SERIES_0003_v1","5.1. EPG XC3","test",1,"F",3,2
+"RQT_SSY_SERIES_0004_v1","5.1. EPG XC4","test",1,"F",3,2
+"RQT_SSY_SERIES_0005_v1","5.1. EPG XC5","test",1,"F",3,2
+"RQT_SSY_SERIES_0006_v1","5.1. EPG XC6","test",1,"F",3,2
+"RQT_SSY_SERIES_0007_v1","5.1. EPG XC7","test",1,"F",3,2
+"RQT_SSY_SERIES_0008_v1","5.2.1 Channel0001","test",1,"F",3,2
+"RQT_SSY_SERIES_0009_v1","5.2.1 Channel0002","test",1,"F",3,2
+"RQT_SSY_SERIES_0010_v1","5.2.1 Channel0003","test",1,"F",3,2
+"RQT_SSY_SERIES_0011_v1","5.2.1 Channel0004","test",1,"F",3,2
+"RQT_SSY_SERIES_0012_v1","5.2.1 Channel0005","test",1,"F",3,2
+"RQT_SSY_SERIES_0013_v1","5.2.1 Channel0006","test",1,"F",3,2
+"RQT_SSY_SERIES_0014_v1","5.2.1 Channel0007","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0007_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0008_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_REMOTE-REC_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_EPG_0010_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_EPG_0011_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_EPG_0012_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_EPG_0013_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_TIMESHARED-CHNL_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_INSTALL-OMODE_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_INSTALL-OMODE_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_INSTALL-OMODE_0003_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_INSTALL-OMODE_0004_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_INSTALL-OMODE_0005_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0002_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0002_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0003_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0004_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0005_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0006_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0007_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0008_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0009_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0010_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0011_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0012_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0013_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0014_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0015_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0016_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0017_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0018_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0019_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0020_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0021_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0022_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0023_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0024_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0025_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0026_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0027_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0028_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0029_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0030_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0031_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0032_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0033_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0034_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0035_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0036_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0037_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0038_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0039_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0040_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0041_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0042_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0043_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0044_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0045_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0046_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0047_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0048_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0049_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0050_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0051_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0052_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0053_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0054_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0055_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0056_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0005_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0006_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0007_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0008_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0009_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0010_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0011_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0012_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0013_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0014_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0015_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0016_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0017_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0018_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0019_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0020_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0021_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0022_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0023_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0024_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0025_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0026_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0027_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0001_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0002_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0003_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0006_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0007_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-AUTOREC_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-AUTOREC_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-AUTOREC_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-AUTOREC_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-AUTOREC_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0008_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0009_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0010_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0011_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0002_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0003_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0004_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0005_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0006_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0007_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0008_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0009_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0010_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0011_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0012_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_IP-STREAMING_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_IP-STREAMING_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_IP-STREAMING_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_IP-STREAMING_0004_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_DLNA_0011_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PROGRESSIVE-DLD_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PROGRESSIVE-DLD_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PROGRESSIVE-DLD_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PROGRESSIVE-DLD_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0007_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0008_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0009_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0010_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BROWSER_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BROWSER_0002_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BROWSER_0003_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BROWSER_0004_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BROWSER_0005_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BROWSER_0006_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_BROWSER_0007_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_BROWSER_0008_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_BROWSER_0009_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_BROWSER_0010_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_BROWSER_0011_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_FLASH-PLAYER_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_INSTALL_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_INSTALL_0002_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_INSTALL_0003_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_INSTALL_0004_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_EASY-INSTALL_0001_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_EASY-INSTALL_0002_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_EASY-INSTALL_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0001_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0002_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0005_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0006_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0007_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0008_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0009_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_DB-SI_0001_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_DB-SI_0002_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_DB-SI_0003_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_DB-SI_0004_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_DB-SI_0005_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0011_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0012_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0013_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0014_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0015_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0016_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_DB-SI_0006_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_DB-SI_0007_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_DB-SI_0008_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_DB-SI_0009_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_DB-SI_0010_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DB-SI_0011_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DB-SI_0012_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0017_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0018_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0019_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0003_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0004_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0005_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0006_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0007_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-INSTALL_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-INSTALL_0002_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_TIME_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-TIME_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-TIME_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_TIME_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_TIME_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_TIME_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DLD_0001_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DLD_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DLD_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-IP_0001_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-IP_0002_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-IP_0003_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-IP_0004_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-IP_0005_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0001_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0002_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0002_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0003_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0003_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0004_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0004_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0005_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0006_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0007_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0008_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0005_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0009_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0010_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0006_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0005_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0011_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0007_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0012_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0008_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0013_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0009_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0014_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0010_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0009_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0011_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0015_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0012_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-STARTUP_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0013_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0006_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0007_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0008_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0014_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0009_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0010_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0011_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0012_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0015_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0013_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0014_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0015_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0016_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0016_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0004_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0017_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-STARTUP_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0018_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-STARTUP_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-SLEEP_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0019_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_SLEEP-MODE_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_SLEEP-MODE_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_SLEEP-MODE_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_REC_0003_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0002_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0003_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0020_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0004_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0005_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0006_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0021_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0007_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0008_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_REC_0004_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0009_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0022_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0009_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0010_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0011_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0012_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0013_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0014_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0015_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0016_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0017_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0018_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0019_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0020_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0021_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0022_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0023_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0024_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0025_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0026_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0001_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0002_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0003_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0004_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0005_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0006_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0023_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0007_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0008_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0009_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PARENTAL-RATING_0001_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PARENTAL-RATING_0002_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_FRONT-PANEL_0001_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_FRONT-PANEL_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0024_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0003_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0004_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0005_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0007_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0008_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0009_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0002_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0003_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-IRDETO-STATUS_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-IRDETO-STATUS_0002_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-IRDETO-STATUS_0003_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-HDD-SETTINGS_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-POWER-CYCLE_0001_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PURCHASE-LIST_0001_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PURCHASE-LIST_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PURCHASE-LIST_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PURCHASE-LIST_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PURCHASE-LIST_0005_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PURCHASE-LIST_0006_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0001_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0002_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0003_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0004_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0005_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0006_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0007_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0008_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0009_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0010_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-SERVICE-MENU_0001_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-SERVICE-MENU_0002_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_MMI-SERVICE-MENU_0003_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_MMI-FACTORY-SETTINGS_0001_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_MMI-FACTORY-SETTINGS_0002_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-FACTORY-SETTINGS_0003_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-FACTORY-SETTINGS_0004_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-FACTORY-SETTINGS_0005_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0001_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0002_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0003_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0004_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0005_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0006_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0007_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0008_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0009_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0010_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0011_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0012_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0013_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0014_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0015_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0016_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0017_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0018_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0019_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0020_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0021_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0022_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0023_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0024_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_RECORD-CUT_0001_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_RECORD-MERGE_0001_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_RECORD-MERGE_0002_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_RECORD-COPY_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_RECORD-COPY_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0025_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0026_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0027_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0028_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0029_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0030_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0031_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0032_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0033_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0007_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0008_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0009_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0010_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0011_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0012_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0013_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SEND-RECORDING_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SEND-RECORDING_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SEND-RECORDING_0003_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SEND-RECORDING_0004_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SEND-RECORDING_0005_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SEND-RECORDING_0006_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0025_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0002_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0003_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0004_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0005_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0006_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0007_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0008_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0009_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0001_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0002_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0005_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0006_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0007_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0008_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0027_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0009_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0011_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0012_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0013_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0014_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0015_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0016_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0017_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0018_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0019_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0020_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0021_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0022_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0023_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0024_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0025_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0026_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0007_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0008_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0009_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0010_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0011_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0012_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0013_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0014_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0015_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0016_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0017_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0018_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0019_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0020_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0021_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0022_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0023_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0024_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0025_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0026_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0027_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0028_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0029_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0030_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0031_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0032_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0033_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0034_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0035_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0036_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0037_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_ADVERT_0007_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_ADVERT_0008_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_ADVERT_0009_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_ADVERT_0010_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_ADVERT_0011_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_ADVERT_0012_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_ADVERT_0013_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_ADVERT_0014_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_SMARTSIGN_0001_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_SMARTSIGN_0002_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_SMARTSIGN_0003_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_SMARTSIGN_0004_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_SMARTSIGN_0005_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_CHANNEL-LIST_0001_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_CHANNEL-LIST_0002_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_CHANNEL-LIST_0003_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_CHANNEL-LIST_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CHANNEL-LIST_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CHANNEL-LIST_0006_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MOSAIC-CHANNEL_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MOSAIC-CHANNEL_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MOSAIC-CHANNEL_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MOSAIC-CHANNEL_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0006_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0007_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0008_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0009_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0010_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0011_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0012_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0013_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0014_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0015_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0066_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0016_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0017_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0018_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0019_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0020_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0021_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0022_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0023_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0024_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0025_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0026_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0027_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0028_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0029_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0030_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0031_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0032_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0033_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0034_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0035_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0036_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0002_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0003_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0004_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0005_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0006_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0007_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0008_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0009_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0010_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0011_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0012_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0013_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0014_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0015_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0016_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0017_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0018_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0019_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0020_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0021_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0001_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0002_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0005_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0006_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0007_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0008_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0009_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0011_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0012_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0013_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0014_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0015_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0016_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PVR-JUMP_0001_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PVR-JUMP_0002_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PVR-SLOWMOTION_0001_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PVR-SLOWMOTION_0002_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PVR-SLOWMOTION_0003_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PVR-SLOWMOTION_0004_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PVR-SLOWMOTION_0005_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REC_0005_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REC_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REC_0007_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_STANDBY_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0034_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0035_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0036_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PVR-LOCKEDEVENT_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PVR-LOCKEDEVENT_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PVR-LOCKEDEVENT_0003_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PVR-LOCKEDEVENT_0004_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PVR-LOCKEDEVENT_0005_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR_0037_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR_0038_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR_0039_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0017_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0018_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0019_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0020_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0021_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0022_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0023_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-JUMP_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-JUMP_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0001_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0002_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0003_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0004_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0005_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0006_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0007_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0017_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0017_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_ADVERT_0015_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_ADVERT_0016_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_ADVERT_0017_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_ADVERT_0018_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_ADVERT_0019_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_ADVERT_0020_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_ADVERT_0021_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_ADVERT_0022_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_ADVERT_0023_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_ADVERT_0024_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PVR_0040_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PVR_0041_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_PVR_0042_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_PVR_0043_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_REC_0008_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_PVR_0044_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_BANNER_0038_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_BANNER_0039_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_ADVERT_0025_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0045_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0046_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0047_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0048_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0049_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0050_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0051_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0052_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0053_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0054_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0055_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0056_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0057_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0058_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0059_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0060_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0061_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0010_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0062_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0063_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0064_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0065_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS_0002_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0004_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0005_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0006_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0007_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0008_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0009_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0010_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0011_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0012_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0013_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0014_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0015_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0016_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_INSTALL_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_INSTALL_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_INSTALL_0007_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0017_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_INSTALL_0008_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0018_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0019_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0020_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0021_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0022_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0023_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0024_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0025_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0026_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0027_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0028_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0029_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0030_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0031_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_REPORT_0001_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0032_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0033_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0034_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0035_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0036_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0037_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0038_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0039_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0040_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0041_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0042_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0043_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0044_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0045_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0046_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0047_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0048_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0049_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0050_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0051_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_LOGGING_0001_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_LOGGING_0002_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_LOGGING_0003_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_LOGGING_0004_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_LOGGING_0005_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_LOGGING_0006_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_LOGGING_0007_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_LOGGING_0008_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0009_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0010_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0011_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0012_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0013_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0014_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0015_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0016_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0017_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0018_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0019_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0020_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0021_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0022_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0023_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0024_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0025_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0026_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0027_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0028_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0029_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0030_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0031_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0032_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0033_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_LOGGING_0034_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_LOGGING_0035_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_LOGGING_0036_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_LOGGING_0037_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_LOGGING_0038_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_LOGGING_0039_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_LOGGING_0040_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_LOGGING_0041_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_LOGGING_0042_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_LOGGING_0043_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_LOGGING_0044_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_LOGGING_0046_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_LOGGING_0047_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0052_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0026_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0053_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_LOGGING_0048_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_LOGGING_0049_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0054_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_LOGGING_0050_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_LOGGING_0051_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_LOGGING_0052_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_LOGGING_0053_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_LOGGING_0054_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_LOGGING_0055_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0055_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0056_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_TAG_0029_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_TAG_0030_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_TAG_0031_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0057_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0058_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0059_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REMOTE-REC_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REMOTE-REC_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0060_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_HDD_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_HDD_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_HDD_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_HDD_0004_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0061_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0062_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0063_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0064_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0065_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0066_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0027_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0067_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0068_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0069_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0070_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0071_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0072_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0073_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0074_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0075_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0076_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0077_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0078_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0079_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0080_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0081_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0028_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0006_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0007_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0082_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0083_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0084_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0085_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0086_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0087_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0001_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0003_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0004_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0005_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0006_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0007_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0008_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0009_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_DB-SI_0013_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_DB-SI_0014_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_EVT-REC_0021_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_EVT-REC_0022_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0032_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0033_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0034_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_SERIES_0015_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_SERIES_0016_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0038_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_INSTALL_0009_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_INSTALL_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_INSTALL_0011_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_INSTALL_0012_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_INSTALL_0013_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_REPORTING_0001_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_REPORTING_0002_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_REPORTING_0003_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_REPORTING_0004_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_REPORTING_0005_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_REPORTING_0006_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_REPORTING_0007_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_REPORTING_0008_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REPORTING_0009_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REPORTING_0010_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0001_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0002_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0003_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0004_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0005_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0007_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0008_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0003_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0004_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0005_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0007_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0008_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0009_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-FORCED_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-FORCED_0002_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-FORCED_0003_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-FORCED_0004_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-FORCED_0005_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_REPORTING-FORCED_0006_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0001_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_STANDBY_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_STANDBY_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_STANDBY_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_STANDBY_0005_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_STANDBY_0006_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_STANDBY_0007_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_STANDBY_0008_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0001_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0002_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0003_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0004_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0005_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0006_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0007_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0008_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0009_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0010_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0011_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0012_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0013_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0014_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0001_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0002_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0003_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0004_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0005_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0006_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0010_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0011_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_DB-SI_0015_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_DB-SI_0016_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_STANDBY_0009_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_STANDBY_0010_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AV-OUTPUT_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AV-OUTPUT_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AV-OUTPUT_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AV-OUTPUT_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AV-OUTPUT_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_FRONTEND_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_FRONTEND_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_FRONTEND_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_FRONTEND_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_DB-SI_0017_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0011_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0012_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0013_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0014_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0015_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_RESET_0001_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_RESET_0002_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0028_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0029_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0030_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_AUTOSHOW_0001_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_AUTOSHOW_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_AUTOSHOW_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0068_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0067_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0015_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0016_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0017_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0018_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_HDD_0005_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_HDD_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_HDD_0007_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0031_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0032_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0033_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0034_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0035_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0036_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_USB_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_USB_0002_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_USB_0003_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0009_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0010_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0011_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0012_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0003_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0004_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0005_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0006_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0007_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0008_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0009_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0001_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0002_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0003_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0005_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0006_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0007_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0001_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0002_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0005_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0006_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0007_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0008_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0009_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0011_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0012_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0013_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0014_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0015_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0016_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0017_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0018_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0019_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0020_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0021_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0022_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0023_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0024_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0012_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0013_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0014_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0015_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0016_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0017_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0018_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0019_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0020_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0021_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0022_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0023_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0024_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0025_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0026_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0005_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0006_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0007_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0008_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0009_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0010_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0011_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0012_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0013_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0014_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0015_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0016_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0017_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0018_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0019_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0020_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_CAS_0006_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_CAS_0007_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_CAS_0008_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS_0009_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS_0010_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS_0011_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS_0012_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS_0013_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_CAS_0014_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_CAS_0015_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_CAS_0016_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_CAS_0017_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_CAS_0018_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_CAS_0019_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_CAS_0020_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS_0021_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0025_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0026_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0027_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0028_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0029_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0019_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0020_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0021_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0022_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0023_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0024_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0025_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_FRONT-PANEL_0003_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_FRONT-PANEL_0004_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_FRONT-PANEL_0005_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0004_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0005_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0006_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0007_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0008_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0009_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0010_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0011_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0012_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0013_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0014_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0015_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0016_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0017_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0018_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PERFO_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PERFO_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0007_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0008_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0009_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0010_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0011_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0012_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PERFO_0013_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PERFO_0014_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PERFO_0015_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PERFO_0016_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PERFO_0017_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PERFO_0018_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_RC_0001_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_RC_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_RC_0003_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0008_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0009_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0010_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0011_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0012_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0013_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0014_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0015_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0016_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0017_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0018_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0019_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0020_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0021_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0022_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0023_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0024_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0025_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0026_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0027_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0028_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0029_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0030_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0031_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0032_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0033_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0034_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0035_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0036_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0037_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0038_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0039_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0040_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0041_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0042_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0043_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0044_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0045_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0046_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0047_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0048_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0049_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0020_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DVB-OVER-IP_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DVB-OVER-IP_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DVB-OVER-IP_0003_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DVB-OVER-IP_0004_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_DVB-OVER-IP_0005_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_EPG_0014_v2","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0028_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_SSV_0019_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_SSV_0020_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_SSV_0021_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_SSV_0022_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0013_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0014_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0015_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0016_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0017_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0018_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0019_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0020_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0021_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0022_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0023_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0024_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0025_v1","4.1 req9",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0026_v1","4.1 req9",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0027_v1","4.1 req9",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0001_v1","4.1 req9",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0002_v1","4.1 req9",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0003_v1","5.1 req10",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0004_v1","5.3 req11",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0005_v1","5.4 req12",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0006_v1","1.3 req14",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0007_v1","1.3 req14",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0008_v1","1.3 req14",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0009_v1","1.3 req14",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0010_v1","1.3 req14",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0001_v1","2.1 req15",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0002_v1","2.1 req15",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0003_v1","2.2 req16",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0004_v1","2.3 req17",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0005_v1","2.4 req18",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0006_v1","2.5 req19",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0007_v1","2.6 req20",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0008_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0009_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0010_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_VOD-STUDIO-REPORTER_0001_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_VOD-IP-CLIENT_0001_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_VOD-IP-CLIENT_0002_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_VOD-IP-CLIENT_0003_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0028_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0029_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0030_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0031_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0032_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0033_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0034_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0035_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0036_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0037_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0038_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0039_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0040_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0041_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0002_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0003_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0004_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0005_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0006_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0007_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0008_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0009_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0010_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0011_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0012_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0007_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0008_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0009_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0010_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0011_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0012_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0013_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0014_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0015_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0016_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0017_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0018_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0001_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0003_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0004_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0005_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0006_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0007_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0002_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0003_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0004_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0005_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0006_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0007_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0001_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0002_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0005_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0006_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0007_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0008_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0009_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0011_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0008_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0012_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0013_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0014_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0015_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0001_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0002_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0003_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0004_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0005_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0006_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0007_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0008_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0009_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0010_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0011_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0012_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0013_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0014_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0015_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0016_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0017_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0018_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0007_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0011_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0004_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0005_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0006_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0007_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0008_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0009_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0010_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0011_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0012_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0013_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0014_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0015_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0016_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0017_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0018_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0019_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0020_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0021_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0022_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0023_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0024_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0025_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0026_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0027_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0028_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0029_v1","5.4 req12","test",1,"F",3,2

Copied: trunk/testlink/docs/file_examples/requirements/req-1500-example.csv (from rev 18329, vendor/testlink/docs/file_examples/requirements/req-1500-example.csv)
===================================================================
--- trunk/testlink/docs/file_examples/requirements/req-1500-example.csv	                        (rev 0)
+++ trunk/testlink/docs/file_examples/requirements/req-1500-example.csv	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,1558 @@
+#docid,title,description,type,status,expected_coverage,node_order
+"RQT_SSY_CAS-IPPV_0007_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_CAS-OPPV_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_EASY-SMS_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0037_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0008_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0009_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_CAS-OPPV_0002_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0019_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0020_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0021_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0022_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0023_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0024_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0025_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PROMO_0001_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_MMI-PROMO_0002_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0021_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0022_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_MMI-OPPV_0001_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0030_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0029_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0050_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0023_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0024_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0026_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0027_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0028_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0011_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0032_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0033_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0034_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0035_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0036_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0037_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0038_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0039_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0040_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0041_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0042_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0043_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0044_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0045_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_LDR_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_LDR_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_LDR_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_LDR_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_LDR_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_LDR_0006_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_LDR_0007_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_SSV_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_SSV_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_SSV_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_STABILITY_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0001_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0002_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0003_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0004_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0005_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0006_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_EPG_0014_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0026_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0027_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0008_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_EPG_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_EPG_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_EPG_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_EPG_0004_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_EPG_0005_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_EPG_0006_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_EPG_0007_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_EPG_0008_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_EPG_0009_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NAME_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NAME_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NAME_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NAME_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NAME_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NB_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NB_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NB_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NB_0004_v1","5.2.1 Channel","test","prior","to","the","channel","number","(E.g.","if","the","channel","number","is",85,"then","it","will","be","present","as","85""""","not","as","085"""").","|5",,,,,"|6",,,,,"|7",,,,,"|8",,,,,"|9",,,,,,"|10",,,,,"|11","DEFINED",,,,"|12",,,,,"|13","DigiTurk",,,,"|14",,,,,"|15",,,,,"|16",,,,,"|17",,,,,"|18",,,,,"|19","X",,,,"|20","X",,,,"|21",,,,,"|22",,,,,"|23",,,,,"|24","X",,,,"|25",,,,,"|26",,,,,"|27",,,,,"|28","X",,,,"|29",,,,,"|30",,,,,"|31",,,,,"|32",,,,,"|33",,,,,"|34",,,,,"|35",,,,,"|36",,,,,"|37",,,,,"|38",,,,,"|39",,,,,,"|40",,,,,"|41",,,,,"|42","X",,,,"|43",,,,,"|44",,,,,"|45",,,,,"|46",,,,,"|47",,,,,"|48",,,,,"|49",,,,,"|50","X",,,,"|51",,,,,"|52",,,,,"|53",,,,,"|54",,,,,"|55",,,,,"|56",,,,,"|57","X""",1,"F",3,2
+"RQT_SSY_MMI-CHANNEL-NB_0005_v1","5.2.1 Channel","test","shall","also","be","supported","if","there","is","a","channel","with","channel","number","0.","|5",,,,,"|6",,,,,"|7",,,,,"|8",,,,,"|9",,,,,,"|10",,,,,"|11","DEFINED",,,,"|12",,,,,"|13","DigiTurk",,,,"|14",,,,,"|15",,,,,"|16",,,,,"|17",,,,,"|18",,,,,"|19",,,,,,"|20","X",,,,"|21",,,,,"|22",,,,,"|23",,,,,"|24",,,,,"|25",,,,,"|26",,,,,"|27",,,,,"|28","X",,,,"|29",,,,,"|30",,,,,"|31",,,,,"|32",,,,,"|33",,,,,"|34",,,,,"|35",,,,,"|36",,,,,"|37",,,,,"|38",,,,,"|39",,,,,,"|40",,,,,"|41",,,,,"|42","X",,,,"|43",,,,,"|44",,,,,"|45",,,,,"|46",,,,,"|47",,,,,"|48",,,,,"|49",,,,,"|50","X""",1,"F",3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+"RQT_SSY_MMI-EVENT-NAME_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-EVENT-NAME_0002_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-EVENT-NAME_0003_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-EVENT-NAME_0004_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-EVENT-NAME_0005_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-EVENT-NAME_0006_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0001_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0003_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0004_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_EPG-SCALED-VID_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_EPG-SCALED-VID_0002_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_EPG-SCALED-VID_0003_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_EPG-SCALED-VID_0004_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_EPG-SCALED-VID_0005_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_DATE_0001_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_DATE_0002_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_DATE_0003_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_DATE_0004_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_TAG_0001_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0002_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0005_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0006_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0007_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0008_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0009_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_TAG_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_TAG_0011_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_TAG_0012_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_TAG_0013_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_TAG_0014_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_TAG_0015_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_TAG_0016_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_TAG_0017_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_TAG_0018_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_TAG_0019_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_TAG_0020_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_TAG_0021_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_TAG_0022_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_TAG_0023_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_TAG_0024_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_TAG_0025_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_TAG_0026_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_TAG_0027_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_TAG_0028_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PVR_0090_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVERT_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVERT_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVERT_0003_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVERT_0004_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVERT_0005_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVERT_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_EPG-NAV_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_EPG-NAV_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_EPG-NAV_0003_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_EPG-NAV_0004_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0028_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0002_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0003_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0005_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0006_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0007_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0008_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_CHL_FILT_0001_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_CHL_FILT_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_CHL_FILT_0003_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_CHL_FILT_0004_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_CHL_FILT_0005_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_MUSIC_CHL_0001_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0001_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0002_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0003_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0004_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0005_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0006_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0007_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0008_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_EPG-LIST_0009_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_EPG-THEME_0001_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_EPG-THEME_0002_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_EPG-THEME_0003_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_EPG-THEME_0004_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_EPG-THEME_0005_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_EPG-RECOM-EVT_0001_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_EPG-RECOM-EVT_0002_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_EPG-RECOM-EVT_0003_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_EPG-RECOM-EVT_0004_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_EPG-RECOM-EVT_0005_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_EPG-RECOM-EVT_0006_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_REC_0001_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_REC_0002_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0006_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0007_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0008_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0009_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0010_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0011_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0012_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0013_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0014_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0015_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0016_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0017_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0018_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0019_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_REC-EVT_0020_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_REC-TIMER_0001_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_REC-TIMER_0002_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_REC-TIMER_0003_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_REC-TIMER_0004_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CONFLITMNGT_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CONFLITMNGT_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SERIES_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SERIES_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SERIES_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SERIES_0004_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SERIES_0005_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SERIES_0006_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SERIES_0007_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SERIES_0008_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_SERIES_0009_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_SERIES_0010_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_SERIES_0011_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_SERIES_0012_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_SERIES_0013_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_SERIES_0014_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0007_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0008_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_REMOTE-REC_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_EPG_0010_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_EPG_0011_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_EPG_0012_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_EPG_0013_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_TIMESHARED-CHNL_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_INSTALL-OMODE_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_INSTALL-OMODE_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_INSTALL-OMODE_0003_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_INSTALL-OMODE_0004_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_INSTALL-OMODE_0005_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0002_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0002_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0003_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0004_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0005_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0006_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0007_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0008_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0009_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0010_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0011_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0012_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0013_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0014_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0015_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0016_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0017_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0018_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0019_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0020_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0021_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0022_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0023_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0024_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0025_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0026_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0027_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0028_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0029_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0030_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0031_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0032_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0033_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0034_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0035_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0036_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0037_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0038_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0039_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0040_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0041_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0042_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0043_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0044_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0045_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0046_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0047_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0048_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0049_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0050_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0051_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0052_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0053_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0054_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0055_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PUSHVOD_0056_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0005_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0006_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0007_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0008_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0009_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0010_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0011_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0012_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0013_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0014_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0015_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0016_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0017_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0018_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0019_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0020_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0021_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0022_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0023_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0024_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0025_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0026_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0027_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0001_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0002_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0003_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0006_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0007_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-AUTOREC_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-AUTOREC_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-AUTOREC_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-AUTOREC_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-AUTOREC_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0008_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0009_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0010_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AUTOREC_0011_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0002_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0003_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0004_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0005_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0006_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0007_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0008_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0009_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0010_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0011_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0012_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_IP-STREAMING_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_IP-STREAMING_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_IP-STREAMING_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_IP-STREAMING_0004_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_DLNA_0011_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PROGRESSIVE-DLD_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PROGRESSIVE-DLD_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PROGRESSIVE-DLD_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PROGRESSIVE-DLD_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0007_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0008_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0009_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DLNA_0010_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BROWSER_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BROWSER_0002_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BROWSER_0003_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BROWSER_0004_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BROWSER_0005_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BROWSER_0006_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_BROWSER_0007_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_BROWSER_0008_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_BROWSER_0009_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_BROWSER_0010_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_BROWSER_0011_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_FLASH-PLAYER_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_INSTALL_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_INSTALL_0002_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_INSTALL_0003_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_INSTALL_0004_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_EASY-INSTALL_0001_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_EASY-INSTALL_0002_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_EASY-INSTALL_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0001_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0002_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0005_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0006_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0007_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0008_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0009_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_DB-SI_0001_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_DB-SI_0002_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_DB-SI_0003_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_DB-SI_0004_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_DB-SI_0005_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0011_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0012_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0013_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0014_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0015_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0016_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_DB-SI_0006_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_DB-SI_0007_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_DB-SI_0008_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_DB-SI_0009_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_DB-SI_0010_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DB-SI_0011_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DB-SI_0012_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0017_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0018_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0019_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0003_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0004_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0005_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0006_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LNB-ALGORITHM_0007_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-INSTALL_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-INSTALL_0002_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_TIME_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-TIME_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-TIME_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_TIME_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_TIME_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_TIME_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DLD_0001_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DLD_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DLD_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-IP_0001_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-IP_0002_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-IP_0003_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-IP_0004_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-IP_0005_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0001_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0002_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0002_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0003_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0003_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0004_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0004_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0005_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0006_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0007_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0008_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0005_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0009_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0010_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0006_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0005_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0011_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0007_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0012_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0008_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0013_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0009_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0014_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0010_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0009_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0011_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-DISPLAY_0015_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0012_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-STARTUP_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0013_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0006_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0007_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0008_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0014_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0009_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0010_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0011_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0012_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0015_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0013_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0014_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0015_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0016_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0016_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0004_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0017_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-STARTUP_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0018_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-STARTUP_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-SLEEP_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0019_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_SLEEP-MODE_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_SLEEP-MODE_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_SLEEP-MODE_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_REC_0003_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0002_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0003_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0020_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0004_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0005_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0006_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0021_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0007_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0008_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_REC_0004_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-REC_0009_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0022_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0009_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0010_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0011_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0012_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0013_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0014_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0015_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0016_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0017_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0018_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0019_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0020_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0021_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0022_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0023_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0024_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0025_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_FAV-CHL_0026_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0001_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0002_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0003_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0004_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0005_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0006_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0023_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0007_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0008_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0009_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PARENTAL-RATING_0001_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PARENTAL-RATING_0002_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_FRONT-PANEL_0001_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_FRONT-PANEL_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0024_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0003_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0004_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0005_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0007_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0008_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_CHL-LOCK_0009_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0002_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0003_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-IRDETO-STATUS_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-IRDETO-STATUS_0002_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-IRDETO-STATUS_0003_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-HDD-SETTINGS_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-POWER-CYCLE_0001_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PURCHASE-LIST_0001_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PURCHASE-LIST_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PURCHASE-LIST_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PURCHASE-LIST_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PURCHASE-LIST_0005_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-PURCHASE-LIST_0006_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0001_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0002_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0003_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0004_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0005_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0006_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0007_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0008_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0009_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-MAIL-LIST_0010_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-SERVICE-MENU_0001_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-SERVICE-MENU_0002_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_MMI-SERVICE-MENU_0003_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_MMI-FACTORY-SETTINGS_0001_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_MMI-FACTORY-SETTINGS_0002_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-FACTORY-SETTINGS_0003_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-FACTORY-SETTINGS_0004_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-FACTORY-SETTINGS_0005_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0001_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0002_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0003_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0004_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0005_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0006_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0007_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0008_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0009_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0010_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0011_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0012_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0013_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0014_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0015_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0016_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0017_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0018_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0019_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0020_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0021_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0022_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0023_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0024_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_RECORD-CUT_0001_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_RECORD-MERGE_0001_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_RECORD-MERGE_0002_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_RECORD-COPY_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_RECORD-COPY_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0025_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0026_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0027_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0028_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0029_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0030_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0031_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0032_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0033_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0007_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0008_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0009_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0010_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0011_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0012_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-UPLOADED-LIST_0013_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SEND-RECORDING_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_MMI-SEND-RECORDING_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SEND-RECORDING_0003_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SEND-RECORDING_0004_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SEND-RECORDING_0005_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_MMI-SEND-RECORDING_0006_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0025_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0002_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0003_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0004_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0005_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0006_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0007_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0008_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-PLAYLIST_0009_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0001_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0002_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0005_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0006_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0007_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0008_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0027_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0009_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0011_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0012_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0013_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0014_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0015_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0016_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0017_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0018_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0019_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0020_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0021_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0022_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0023_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0024_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0025_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0026_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0007_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0008_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0009_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0010_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0011_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0012_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0013_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0014_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0015_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0016_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0017_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0018_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0019_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0020_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0021_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0022_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0023_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0024_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0025_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0026_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0027_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0028_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0029_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0030_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0031_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0032_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0033_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0034_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0035_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0036_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0037_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_ADVERT_0007_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_ADVERT_0008_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_ADVERT_0009_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_ADVERT_0010_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_ADVERT_0011_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_ADVERT_0012_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_ADVERT_0013_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_ADVERT_0014_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_SMARTSIGN_0001_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_SMARTSIGN_0002_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_SMARTSIGN_0003_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_SMARTSIGN_0004_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_SMARTSIGN_0005_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_CHANNEL-LIST_0001_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_CHANNEL-LIST_0002_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_CHANNEL-LIST_0003_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_CHANNEL-LIST_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CHANNEL-LIST_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CHANNEL-LIST_0006_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MOSAIC-CHANNEL_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MOSAIC-CHANNEL_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MOSAIC-CHANNEL_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MOSAIC-CHANNEL_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0006_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0007_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0008_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0009_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0010_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0011_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0012_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0013_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0014_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0015_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0066_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0016_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0017_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0018_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0019_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0020_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0021_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0022_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0023_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0024_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0025_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0026_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0027_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0028_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0029_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0030_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0031_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0032_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0033_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0034_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0035_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PVR_0036_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0002_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0003_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0004_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0005_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0006_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0007_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0008_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0009_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0010_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0011_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0012_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0013_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0014_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0015_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0016_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0017_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0018_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0019_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0020_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-TRICKMODE_0021_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0001_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0002_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0005_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0006_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0007_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0008_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0009_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0011_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0012_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0013_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0014_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0015_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0016_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PVR-JUMP_0001_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PVR-JUMP_0002_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PVR-SLOWMOTION_0001_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PVR-SLOWMOTION_0002_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PVR-SLOWMOTION_0003_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PVR-SLOWMOTION_0004_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PVR-SLOWMOTION_0005_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REC_0005_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REC_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REC_0007_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_STANDBY_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0034_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0035_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-RECORDING-LIST_0036_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PVR-LOCKEDEVENT_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PVR-LOCKEDEVENT_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PVR-LOCKEDEVENT_0003_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PVR-LOCKEDEVENT_0004_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PVR-LOCKEDEVENT_0005_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR_0037_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR_0038_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR_0039_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0017_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0018_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0019_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0020_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0021_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0022_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-STATUSBAR_0023_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-JUMP_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-JUMP_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0001_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0002_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0003_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0004_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0005_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0006_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_PVR-BOOKMARK_0007_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-LANGUAGE_0017_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-SETTINGS-AUDIO_0017_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_ADVERT_0015_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_ADVERT_0016_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_ADVERT_0017_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_ADVERT_0018_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_ADVERT_0019_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_ADVERT_0020_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_ADVERT_0021_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_ADVERT_0022_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_ADVERT_0023_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_ADVERT_0024_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PVR_0040_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_PVR_0041_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_PVR_0042_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_PVR_0043_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_REC_0008_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_PVR_0044_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_BANNER_0038_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_BANNER_0039_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_ADVERT_0025_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0045_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0046_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0047_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0048_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0049_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0050_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0051_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0052_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0053_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0054_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0055_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0056_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0057_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_PVR_0058_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0059_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0060_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0061_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0010_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0062_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0063_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0064_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PVR_0065_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS_0002_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0004_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0005_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0006_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0007_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0008_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0009_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0010_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0011_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0012_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0013_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0014_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0015_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0016_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_INSTALL_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_INSTALL_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_INSTALL_0007_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0017_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_INSTALL_0008_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0018_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0019_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0020_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0021_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0022_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0023_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0024_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0025_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0026_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0027_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0028_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0029_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0030_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0031_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_REPORT_0001_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0032_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0033_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0034_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0035_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0036_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0037_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0038_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0039_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0040_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0041_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0042_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0043_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0044_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0045_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0046_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0047_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0048_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0049_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0050_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0051_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_LOGGING_0001_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_LOGGING_0002_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_LOGGING_0003_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_LOGGING_0004_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_LOGGING_0005_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_LOGGING_0006_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_LOGGING_0007_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_LOGGING_0008_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0009_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0010_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0011_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0012_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0013_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0014_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0015_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0016_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0017_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0018_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_LOGGING_0019_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0020_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0021_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0022_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0023_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0024_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0025_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_LOGGING_0026_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0027_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0028_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0029_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0030_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0031_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0032_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_LOGGING_0033_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_LOGGING_0034_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_LOGGING_0035_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_LOGGING_0036_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_LOGGING_0037_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_LOGGING_0038_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_LOGGING_0039_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_LOGGING_0040_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_LOGGING_0041_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_LOGGING_0042_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_LOGGING_0043_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_LOGGING_0044_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_LOGGING_0046_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_LOGGING_0047_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0052_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0026_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0053_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_LOGGING_0048_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_LOGGING_0049_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0054_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_LOGGING_0050_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_LOGGING_0051_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_LOGGING_0052_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_LOGGING_0053_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_LOGGING_0054_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_LOGGING_0055_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0055_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0056_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_TAG_0029_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_TAG_0030_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_TAG_0031_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0057_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0058_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0059_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REMOTE-REC_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_REMOTE-REC_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0060_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_HDD_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_HDD_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_HDD_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_HDD_0004_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0061_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0062_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0063_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0064_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0065_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0066_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0027_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0067_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0068_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0069_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0070_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0071_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0072_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0073_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0074_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0075_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0076_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0077_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0078_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0079_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0080_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0081_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_DEFAULT-PARAM_0028_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0001_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0006_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0007_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0082_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0083_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0084_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0085_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0086_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_CAS-DDEMM_0087_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0001_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0003_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0004_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0005_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0006_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0007_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0008_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_PRIVATE-DP-SI_0009_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_DB-SI_0013_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_DB-SI_0014_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_EVT-REC_0021_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_EVT-REC_0022_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0032_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0033_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_TAG_0034_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_SERIES_0015_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_SERIES_0016_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-BANNER_0038_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_INSTALL_0009_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_INSTALL_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_INSTALL_0011_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_INSTALL_0012_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_INSTALL_0013_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_REPORTING_0001_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_REPORTING_0002_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_REPORTING_0003_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_REPORTING_0004_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_REPORTING_0005_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_REPORTING_0006_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_REPORTING_0007_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_REPORTING_0008_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REPORTING_0009_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REPORTING_0010_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0001_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0002_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0003_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0004_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0005_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0007_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-SCHEDULED_0008_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0003_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0004_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0005_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0007_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0008_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-CREDIT-THRES_0009_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-FORCED_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-FORCED_0002_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-FORCED_0003_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-FORCED_0004_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_REPORTING-FORCED_0005_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_REPORTING-FORCED_0006_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0001_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_STANDBY_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_STANDBY_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_STANDBY_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_STANDBY_0005_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_STANDBY_0006_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_STANDBY_0007_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_STANDBY_0008_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0001_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0002_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0003_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0004_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0005_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0006_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0007_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0008_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0009_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0010_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0011_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0012_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0013_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_TAPING-MODE_0014_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0001_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0002_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0003_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0004_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0005_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_CAS-IPPV_0006_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0010_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0011_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_DB-SI_0015_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_DB-SI_0016_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_STANDBY_0009_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_STANDBY_0010_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AV-OUTPUT_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AV-OUTPUT_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AV-OUTPUT_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AV-OUTPUT_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_AV-OUTPUT_0005_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_FRONTEND_0001_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_FRONTEND_0002_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_FRONTEND_0003_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_FRONTEND_0004_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_DB-SI_0017_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0011_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0012_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0013_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0014_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0015_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_RESET_0001_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_RESET_0002_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0028_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0029_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0030_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_AUTOSHOW_0001_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_AUTOSHOW_0002_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_AUTOSHOW_0003_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0068_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PVR_0067_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0015_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0016_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0017_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0018_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_HDD_0005_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_HDD_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_HDD_0007_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_CAS_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0031_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0032_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0033_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0034_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0035_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PUSHVOD_0036_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_USB_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_USB_0002_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_USB_0003_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0001_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0009_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0010_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0011_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0012_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0003_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0004_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0005_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0006_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_WIDGETS_0007_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0008_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0009_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0001_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0002_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0003_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0005_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0006_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_COPY-PROTECT_0007_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0001_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0002_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0005_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0006_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0007_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0008_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0009_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0011_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0012_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0013_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0014_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0015_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0016_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0017_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0018_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0019_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0020_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0021_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0022_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0023_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0024_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0012_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0013_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0014_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0015_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0016_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0017_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0018_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0019_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0020_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0021_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0022_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0023_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0024_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0025_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_PIN-CODE_0026_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0001_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0002_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0003_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0004_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0005_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0006_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0007_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0008_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0009_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0010_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0011_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0012_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0013_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0014_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0015_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0016_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0017_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0018_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0019_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_MMI-IPPV_0020_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_CAS_0006_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_CAS_0007_v1","5.4 req12","test",1,"F",3,2
+"RQT_SSY_CAS_0008_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS_0009_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS_0010_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS_0011_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS_0012_v1","1.3 req14","test",1,"F",3,2
+"RQT_SSY_CAS_0013_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_CAS_0014_v1","2.1 req15","test",1,"F",3,2
+"RQT_SSY_CAS_0015_v1","2.2 req16","test",1,"F",3,2
+"RQT_SSY_CAS_0016_v1","2.3 req17","test",1,"F",3,2
+"RQT_SSY_CAS_0017_v1","2.4 req18","test",1,"F",3,2
+"RQT_SSY_CAS_0018_v1","2.5 req19","test",1,"F",3,2
+"RQT_SSY_CAS_0019_v1","2.6 req20","test",1,"F",3,2
+"RQT_SSY_CAS_0020_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_CAS_0021_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0025_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0026_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0027_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0028_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-MESSAGES_0029_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0019_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0020_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0021_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0022_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0023_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0024_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_MMI-GLOBAL_0025_v1","2.7 req21","test",1,"F",3,2
+"RQT_SSY_FRONT-PANEL_0003_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_FRONT-PANEL_0004_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_FRONT-PANEL_0005_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0004_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0005_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0006_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0007_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0008_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0009_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0010_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_SSV_0011_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0012_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0013_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0014_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0015_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0016_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0017_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_SSV_0018_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PERFO_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_PERFO_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0007_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0008_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0009_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0010_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0011_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_PERFO_0012_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PERFO_0013_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PERFO_0014_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PERFO_0015_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PERFO_0016_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PERFO_0017_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_PERFO_0018_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_RC_0001_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_RC_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_RC_0003_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0008_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0009_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0010_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0011_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0012_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0013_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0014_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0015_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0016_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0017_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0018_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0019_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0020_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0021_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0022_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0023_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0024_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0025_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0026_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0027_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0028_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0029_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0030_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0031_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0032_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0033_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0034_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0035_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0036_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0037_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0038_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0039_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0040_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0041_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0042_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0043_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0044_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0045_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0046_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0047_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0048_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_BOOTLOAD_0049_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_ADVANCED-INSTALL_0020_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DVB-OVER-IP_0001_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DVB-OVER-IP_0002_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DVB-OVER-IP_0003_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_DVB-OVER-IP_0004_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_DVB-OVER-IP_0005_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_EPG_0014_v2","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-SEARCH_0028_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_SSV_0019_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_SSV_0020_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_SSV_0021_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_SSV_0022_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0013_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0014_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0015_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0016_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0017_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0018_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0019_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0020_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0021_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0022_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0023_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0024_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_IP-PVOD_0025_v1","4.1 req9",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0026_v1","4.1 req9",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0027_v1","4.1 req9",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0001_v1","4.1 req9",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0002_v1","4.1 req9",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0003_v1","5.1 req10",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0004_v1","5.3 req11",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0005_v1","5.4 req12",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0006_v1","1.3 req14",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0007_v1","1.3 req14",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0008_v1","1.3 req14",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0009_v1","1.3 req14",,1,"F",3,2
+"RQT_SSY_PVOD-PES_0010_v1","1.3 req14",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0001_v1","2.1 req15",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0002_v1","2.1 req15",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0003_v1","2.2 req16",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0004_v1","2.3 req17",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0005_v1","2.4 req18",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0006_v1","2.5 req19",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0007_v1","2.6 req20",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0008_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0009_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_VOD-CDS_0010_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_VOD-STUDIO-REPORTER_0001_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_VOD-IP-CLIENT_0001_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_VOD-IP-CLIENT_0002_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_VOD-IP-CLIENT_0003_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0028_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0029_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0030_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0031_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0032_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0033_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0034_v1","2.7 req21",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0035_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0036_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0037_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0038_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0039_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0040_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_IP-PVOD_0041_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0002_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0003_v1","5. ma1n ",,1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0004_v1","5. ma1n ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0005_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0006_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0007_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0008_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0009_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0010_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0011_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_REPORTING-STATUS_0012_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0001_v1","5.1. EPG ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0002_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0003_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0004_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0005_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0006_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0007_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0008_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0009_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0010_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0011_v1","5.2.1 Channel","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0012_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0013_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0014_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0015_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0016_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0017_v1"," 5.2.3 Event ","test",1,"F",3,2
+"RQT_SSY_60-DAYS-LIMIT_0018_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0001_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0002_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0003_v1","5.2.4 Banner","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0004_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0005_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0006_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE_0007_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0001_v1","5.2.5 Video","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0002_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0003_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0004_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0005_v1","5.2.6  Info","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0006_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0007_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0001_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0002_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0003_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0004_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0005_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0006_v1","5.2.7  Icon","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0007_v1","5.2.8 Remote","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0008_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0009_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0010_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0011_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-DISABLED_0008_v1","5.2.9 Series","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0012_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0013_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0014_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_OTHER-MODE-ENABLED_0015_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0001_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0002_v1","5.2.10 Based","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0003_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0004_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0005_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0006_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0007_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0008_v1","5.2.11 List ","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0009_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0010_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0011_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0012_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0013_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0014_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0015_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0016_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0017_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_PROMO-CHANNEL_0018_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0006_v1","5.2.12 Conflicts","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0007_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_MMI-ALARM-LIST_0011_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0004_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0005_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0006_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0007_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0008_v1","2.1 req1","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0009_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0010_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0011_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0012_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0013_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0014_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0015_v1","2.2 req2","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0016_v1","3.1 req3","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0017_v1","3.1.1 req4","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0018_v1","3.2 req5","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0019_v1","3.2.1 req6","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0020_v1","3.3 req7","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0021_v1","3.4 req8","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0022_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0023_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0024_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0025_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0026_v1","4.1 req9","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0027_v1","5.1 req10","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0028_v1","5.3 req11","test",1,"F",3,2
+"RQT_SSY_WATCHING-LIMIT_0029_v1","5.4 req12","test",1,"F",3,2

Copied: trunk/testlink/docs/file_examples/testspec/4-testcase-3-steps.xml (from rev 18329, vendor/testlink/docs/file_examples/testspec/4-testcase-3-steps.xml)
===================================================================
--- trunk/testlink/docs/file_examples/testspec/4-testcase-3-steps.xml	                        (rev 0)
+++ trunk/testlink/docs/file_examples/testspec/4-testcase-3-steps.xml	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<testcases>
+<testcase internalid="25" name="MGT-TC-01">
+	<node_order><![CDATA[100]]></node_order>
+	<externalid><![CDATA[1]]></externalid>
+	<version><![CDATA[1]]></version>
+	<summary><![CDATA[<p>MGT-TC-01</p>]]></summary>
+	<preconditions><![CDATA[<p>MGT-TC-01</p>]]></preconditions>
+	<execution_type><![CDATA[1]]></execution_type>
+	<importance><![CDATA[2]]></importance>
+<steps>
+<step>
+	<step_number><![CDATA[1]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-01-ACTION-STEP-01</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-01-EXRES-STEP-01</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+
+<step>
+	<step_number><![CDATA[2]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-01-ACTION-STEP-2</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-01-EXRES-STEP-2</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+
+<step>
+	<step_number><![CDATA[3]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-01-ACTION-STEP-3</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-01-EXRES-STEP-3</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+</steps>
+</testcase>
+
+<testcase internalid="" name="MGT-TC-02">
+	<node_order><![CDATA[100]]></node_order>
+	<externalid><![CDATA[1]]></externalid>
+	<version><![CDATA[1]]></version>
+	<summary><![CDATA[<p>MGT-TC-02</p>]]></summary>
+	<preconditions><![CDATA[<p>MGT-TC-02</p>]]></preconditions>
+	<execution_type><![CDATA[1]]></execution_type>
+	<importance><![CDATA[2]]></importance>
+<steps>
+<step>
+	<step_number><![CDATA[1]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-02-ACTION-STEP-01</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-02-EXRES-STEP-01</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+
+<step>
+	<step_number><![CDATA[2]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-02-ACTION-STEP-02</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-02-EXRES-STEP-02</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+
+<step>
+	<step_number><![CDATA[3]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-02-ACTION-STEP-3</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-02-EXRES-STEP-3</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+</steps>
+</testcase>
+<testcase internalid="" name="MGT-TC-03">
+	<node_order><![CDATA[100]]></node_order>
+	<externalid><![CDATA[1]]></externalid>
+	<version><![CDATA[1]]></version>
+	<summary><![CDATA[<p>MGT-TC-03</p>]]></summary>
+	<preconditions><![CDATA[<p>MGT-TC-03</p>]]></preconditions>
+	<execution_type><![CDATA[1]]></execution_type>
+	<importance><![CDATA[2]]></importance>
+<steps>
+<step>
+	<step_number><![CDATA[1]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-03-ACTION-STEP-01</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-03-EXRES-STEP-01</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+
+<step>
+	<step_number><![CDATA[2]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-03-ACTION-STEP-02</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-03-EXRES-STEP-02</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+
+<step>
+	<step_number><![CDATA[3]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-03-ACTION-STEP-03</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-03-EXRES-STEP-03</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+</steps>
+</testcase>
+<testcase internalid="" name="MGT-TC-04">
+	<node_order><![CDATA[100]]></node_order>
+	<externalid><![CDATA[1]]></externalid>
+	<version><![CDATA[1]]></version>
+	<summary><![CDATA[<p>MGT-TC-04</p>]]></summary>
+	<preconditions><![CDATA[<p>MGT-TC-04</p>]]></preconditions>
+	<execution_type><![CDATA[1]]></execution_type>
+	<importance><![CDATA[2]]></importance>
+<steps>
+<step>
+	<step_number><![CDATA[1]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-04-ACTION-STEP-01</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-04-EXRES-STEP-01</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+
+<step>
+	<step_number><![CDATA[2]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-04-ACTION-STEP-02</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-04-EXRES-STEP-02</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+
+<step>
+	<step_number><![CDATA[3]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-04-ACTION-STEP-03</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-04-EXRES-STEP-03</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+</steps>
+</testcase>
+</testcases>
\ No newline at end of file

Copied: trunk/testlink/docs/file_examples/testspec/single-testcase-3-steps.xml (from rev 18329, vendor/testlink/docs/file_examples/testspec/single-testcase-3-steps.xml)
===================================================================
--- trunk/testlink/docs/file_examples/testspec/single-testcase-3-steps.xml	                        (rev 0)
+++ trunk/testlink/docs/file_examples/testspec/single-testcase-3-steps.xml	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<testcases>
+<testcase internalid="25" name="MGT-TC-1">
+	<node_order><![CDATA[100]]></node_order>
+	<externalid><![CDATA[1]]></externalid>
+	<version><![CDATA[1]]></version>
+	<summary><![CDATA[<p>MGT-TC-1</p>]]></summary>
+	<preconditions><![CDATA[<p>MGT-TC-1</p>]]></preconditions>
+	<execution_type><![CDATA[1]]></execution_type>
+	<importance><![CDATA[2]]></importance>
+<steps>
+<step>
+	<step_number><![CDATA[1]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-1-ACTION-STEP-1</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-1-EXRES-STEP-1</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+
+<step>
+	<step_number><![CDATA[2]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-1-ACTION-STEP-2</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-1-EXRES-STEP-2</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+
+<step>
+	<step_number><![CDATA[3]]></step_number>
+	<actions><![CDATA[<p>MGT-TC-1-ACTION-STEP-3</p>]]></actions>
+	<expectedresults><![CDATA[<p>MGT-TC-1-EXRES-STEP-3</p>]]></expectedresults>
+	<execution_type><![CDATA[1]]></execution_type>
+</step>
+</steps>
+</testcase>
+</testcases>
\ No newline at end of file

Modified: trunk/testlink/gui/javascript/execTree.js
===================================================================
--- trunk/testlink/gui/javascript/execTree.js	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/javascript/execTree.js	2012-04-11 09:34:31 UTC (rev 18330)
@@ -105,7 +105,8 @@
         // activate all path strings from the state
         try 
         {
-            var path = this.state[i];
+        	// BUGID 4196 - tree not properly restored
+            var path = stateToRestore[i];
             this.mytree.expandPath(path);
         } 
         catch(e) 

Modified: trunk/testlink/gui/javascript/execTreeWithMenu.js
===================================================================
--- trunk/testlink/gui/javascript/execTreeWithMenu.js	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/javascript/execTreeWithMenu.js	2012-04-11 09:34:31 UTC (rev 18330)
@@ -106,7 +106,8 @@
         // activate all path strings from the state
         try 
         {
-            var path = this.state[i];
+        	// BUGID 4196 - tree not properly restored
+            var path = stateToRestore[i];
             this.mytree.expandPath(path);
         } 
         catch(e) 

Modified: trunk/testlink/gui/javascript/ext_extensions.js
===================================================================
--- trunk/testlink/gui/javascript/ext_extensions.js	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/javascript/ext_extensions.js	2012-04-11 09:34:31 UTC (rev 18330)
@@ -339,3 +339,30 @@
 	}
 	return false;
 }
+
+/**
+ * Allows list filtering on status value. Status is a special column type
+ * and its value is a JS-object. The objects 'value' attribute (p/n/b/n) is
+ * used in filtering.
+ * (The standard ListFilter uses the raw object itself treating it like a string.)
+ *
+ * Introduced to fix BUGID 4125
+ * @author Eloff
+ */
+Ext.ux.grid.filter.StatusFilter = Ext.extend(Ext.ux.grid.filter.ListFilter, {
+    validateRecord: function (record) {
+        var status = record.get(this.dataIndex).value;
+        return ( this.getValue().indexOf(status) > -1);
+    }
+});
+
+/**
+ * Allows list filtering on priority.
+ * (The standard ListFilter uses the raw object itself treating it like a string.)
+ */
+Ext.ux.grid.filter.PriorityFilter = Ext.extend(Ext.ux.grid.filter.ListFilter, {
+    validateRecord: function (record) {
+        var priority = record.get(this.dataIndex);
+        return ( this.getValue().indexOf(priority) > -1);
+    }
+});

Modified: trunk/testlink/gui/javascript/tcTree.js
===================================================================
--- trunk/testlink/gui/javascript/tcTree.js	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/javascript/tcTree.js	2012-04-11 09:34:31 UTC (rev 18330)
@@ -143,7 +143,8 @@
         // activate all path strings from the state
         try 
         {
-            var path = this.state[i];
+        	// BUGID 4196 - tree not properly restored
+            var path = stateToRestore[i];
             this.mytree.expandPath(path);
         } 
         catch(e) 

Modified: trunk/testlink/gui/javascript/testlink_library.js
===================================================================
--- trunk/testlink/gui/javascript/testlink_library.js	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/javascript/testlink_library.js	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,7 +1,7 @@
 // TestLink Open Source Project - http://testlink.sourceforge.net/
 // This script is distributed under the GNU General Public License 2 or later.
 //
-// $Id: testlink_library.js,v 1.112.2.5 2011/01/12 12:24:57 mx-julian Exp $
+// $Id: testlink_library.js,v 1.112.2.6 2011/02/11 08:03:14 mx-julian Exp $
 //
 // Javascript functions commonly used through the GUI
 // Rule: DO NOT ADD FUNCTIONS FOR ONE USING
@@ -24,6 +24,10 @@
 //                 on I.E. => generates a bug - BE CAREFUL
 //
 // ------ Revisions ---------------------------------------------------------------------
+// 20110219 - franciscom - 	BUGID 4321: Requirement Spec - add option to print single Req Spec
+//							openPrintPreview() refactoring
+//
+// 20110308 - asimon - BUGID 4286, BUGID 4273: backported openPrintPreview() from master to 1.9 branch
 // 20101119 - asimon - added openLinkedReqVersionWindow()
 // 20101111 - asimon - now openTCaseWindow() also remembers popup size like other functions do
 // 20101106 - amitkhullar - BUGID 2738: Contribution: option to include TC Exec notes in test report
@@ -1406,7 +1410,7 @@
 function scrollToShowMe(oid) {
 	obj = document.getElementById(oid);
 	if (obj != null) {
-		obj.scrollIntoView();
+		obj.scrollIntoView(true);
 		obj.focus();
 	}
 }
@@ -1450,3 +1454,70 @@
 	window.open(fRoot+feature_url,"Requirement Revision",windowCfg);
 }
 
+/**
+ * Open print preview in popup window to enable simple printing for the user.
+ * 
+ * @author asimon
+ * @param type can be "req","reqSpec", "tc"
+ * @param id
+ * @param version_id the version which shall be printed, if set
+ * @param revision_id only used for requirements, null in case of testcases
+ * @param print_action target url to open in popup
+ */
+function openPrintPreview(type, id, version_id, revision, print_action) {
+	// configure window size using cookies or default values if there are no cookies
+	var width = getCookie("ReqPopupWidth");
+	var height = getCookie("ReqPopupHeight");
+	var windowCfg='';
+	var feature_url = print_action;
+
+	if (width == null) {
+		width = "800";
+	}
+	if (height == null) {
+		height = "600";
+	}
+	
+	switch(type)
+	{
+
+		case 'req':
+			feature_url += "?req_id=" + id + "&req_version_id=" + version_id + "&req_revision=" + revision;
+		break;
+
+		case 'reqSpec':
+			feature_url += "?reqspec_id=" + id;
+		break;
+		
+		case 'tc':
+			feature_url += "&testcase_id=" + id + "&tcversion_id=" + version_id;
+		break;
+		
+	}
+	windowCfg = "width="+width+",height="+height+",resizable=yes,scrollbars=yes,toolbar=yes,dependent=yes,menubar=yes";
+	window.open(fRoot+feature_url,"_blank",windowCfg); // TODO localize "Print Preview"!
+}
+
+
+
+function openExecHistoryWindow(tc_id) 
+{
+	var url = "lib/execute/execHistory.php?tcase_id=" + tc_id;
+
+	var width = getCookie("execHistoryPopupWidth");
+	var height = getCookie("execHistoryPopupHeight");
+
+	if (width == null)
+	{
+		width = "800";
+	}
+
+	if (height == null)
+	{
+		height = "600";
+	}
+	
+	var windowCfg = "width="+width+",height="+height+",resizable=yes,scrollbars=yes,dependent=yes";
+	window.open(fRoot+url, '_blank', windowCfg);
+}
+

Modified: trunk/testlink/gui/javascript/treebyloader.js
===================================================================
--- trunk/testlink/gui/javascript/treebyloader.js	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/javascript/treebyloader.js	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,6 +1,6 @@
 /*  
 TestLink Open Source Project - http://testlink.sourceforge.net/
-$Id: treebyloader.js,v 1.9.2.1 2010/11/21 16:54:44 asimon83 Exp $
+ at filesource	treebyloader.js
 
 Created using EXT JS examples.
 This code has following features:
@@ -23,15 +23,15 @@
 
 Author: franciscom - 20080525
 
-rev:
-    20101121 - asimon - BUGID 4042: "Expand/Collapse" Button for Trees
-    20100908 - franciscom - work on CTRL+Drag&Drop for copy (just started)
-    20100603 - franciscom - added context menu logic to solve partially 
-               BUGID 2408: Relation between internal testcaseid,testplanid,...
+ at internal revisions
+20101121 - asimon - BUGID 4042: "Expand/Collapse" Button for Trees
+20100908 - franciscom - work on CTRL+Drag&Drop for copy (just started)
+20100603 - franciscom - added context menu logic to solve partially 
+           				BUGID 2408: Relation between internal testcaseid,testplanid,...
                
-    20080831 - franciscom - added beforemovenode() logic
+20080831 - franciscom - added beforemovenode() logic
     
-    Ext JS Forums > Ext JS General Forums > Ext: Examples and Extras > Saving tree state example
+Ext JS Forums > Ext JS General Forums > Ext: Examples and Extras > Saving tree state example
 */
 
 
@@ -258,7 +258,8 @@
         // activate all path strings from the state
         try 
         {
-            var path = this.state[i];
+        	// BUGID 4196 - tree not properly restored
+            var path = stateToRestore[i];
             this.mytree.expandPath(path);
         } 
         catch(e) 
@@ -435,14 +436,17 @@
         });                                          
     }   
     
-    // 20100908
-    tree.on(
-            'beforenodedrop', 
-            function(dropEvent)
-            { 
-                  return checkCtrlKey(dropEvent);                    
-            }
-    );                                          
+    // 20110529 - franciscom 
+    // Will comment till will be ready
+    //
+    // 20100908 - work on CTRL+Drag&Drop for copy (just started)
+    // tree.on(
+    //        'beforenodedrop', 
+    //        function(dropEvent)
+    //        { 
+    //              return checkCtrlKey(dropEvent);                    
+    //        }
+    // );                                          
     
     
     

Modified: trunk/testlink/gui/templates/cfields/cfieldsTprojectAssign.tpl
===================================================================
--- trunk/testlink/gui/templates/cfields/cfieldsTprojectAssign.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/cfields/cfieldsTprojectAssign.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -41,7 +41,7 @@
  	    {* used as memory for the check/uncheck all checkbox javascript logic *}
        <input type="hidden" name="memory_assigned_cf"  
                             id="memory_assigned_cf"  value="0" />
-      <table class="simple">
+      <table class="simple_tableruler">
       	<tr>
       		<th align="center"  style="width: 5px;background-color:#005498;"> 
       		    <img src="{$smarty.const.TL_THEME_IMG_DIR}/toggle_all.gif"
@@ -117,7 +117,7 @@
        <input type="hidden" name="memory_free_cf"  
                             id="memory_free_cf"  value="0" />
 
-      <table class="simple" style="width: 50%;">
+      <table class="simple_tableruler" style="width: 50%;">
       	<tr>
       		<th align="center"  style="width: 5px;background-color:#005498;"> 
       		    <img src="{$smarty.const.TL_THEME_IMG_DIR}/toggle_all.gif"

Modified: trunk/testlink/gui/templates/cfields/cfieldsView.tpl
===================================================================
--- trunk/testlink/gui/templates/cfields/cfieldsView.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/cfields/cfieldsView.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,13 +1,11 @@
 {* 
 TestLink Open Source Project - http://testlink.sourceforge.net/
-$Id: cfieldsView.tpl,v 1.9 2010/10/17 09:46:37 franciscom Exp $ 
+ at filesource cfieldsView.tpl
 
-rev :
-     20101017 - franciscom - image access refactored (tlImages)
-     20100315 - franciscom - added management on goback_url for export action
-     20090503 - franciscom - BUGID 2425 - commented show_on_design and show_on_testplan_design 
-                                          till new implementation
-     20080810 - franciscom - BUGID 1650 (REQ)
+ at internal revisions
+20110331 - franciscom - make table sortable
+20101017 - franciscom - image access refactored (tlImages)
+20100315 - franciscom - added management on goback_url for export action
 *}
 {assign var="cfg_section" value=$smarty.template|basename|replace:".tpl":"" }
 {config_load file="input_dimensions.conf" section=$cfg_section}
@@ -24,24 +22,25 @@
 {lang_get var="labels"
           s="name,label,type,title_cfields_mgmt,manage_cfield,btn_cfields_create,
              show_on_design,enable_on_design,show_on_exec,enable_on_exec,btn_export,
-             btn_import,btn_goback,
+             btn_import,btn_goback,sort_table_by_column,
              show_on_testplan_design,enable_on_testplan_design,available_on"}
 
-{include file="inc_head.tpl"}
+{include file="inc_head.tpl" enableTableSorting="yes"}
+
 <body>
 <h1 class="title">{$labels.title_cfields_mgmt}</h1>
 <div class="workBack">
 {if $gui->cf_map != '' }
-  <table class="simple" style="width: 90%">
+  <table id='item_view' class="simple_tableruler sortable">
   	<tr>
-  		<th>{$labels.name}</th>
-  		<th>{$labels.label}</th>
-  		<th>{$labels.type}</th>
-  		<th>{$labels.enable_on_design}</th>
-  		<th>{$labels.show_on_exec}</th>
-  		<th>{$labels.enable_on_exec}</th>
-  		<th>{$labels.enable_on_testplan_design}</th>
-  		<th>{$labels.available_on}</th>
+  		<th>{$tlImages.sort_hint}{$labels.name}</th>
+  		<th>{$tlImages.sort_hint}{$labels.label}</th>
+  		<th>{$tlImages.sort_hint}{$labels.type}</th>
+  		<th class="{$noSortableColumnClass}">{$labels.enable_on_design}</th>
+  		<th class="{$noSortableColumnClass}">{$labels.show_on_exec}</th>
+  		<th class="{$noSortableColumnClass}">{$labels.enable_on_exec}</th>
+  		<th class="{$noSortableColumnClass}">{$labels.enable_on_testplan_design}</th>
+  		<th>{$tlImages.sort_hint}{$labels.available_on}</th>
   	</tr>
   
    	{foreach key=cf_id item=cf_def from=$gui->cf_map}

Modified: trunk/testlink/gui/templates/classTester.tpl
===================================================================
--- trunk/testlink/gui/templates/classTester.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/classTester.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -11,7 +11,7 @@
 <p><h3>Description:</h3>{$classDescription}</p>
 <p><h3>How to Use this class</h3>{$classUsage}</p>
 
-<table class="simple" border="1" style="width: 100%, text-align: center; margin-left: 0px;">
+<table class="simple" border="1" style="text-align: center; margin-left: 0px;">
 
 <tr><th>method name</th><th>description</th><th>test parameters</th><th>return value</th><th>test result</th></tr>
 

Modified: trunk/testlink/gui/templates/execute/bugAdd.tpl
===================================================================
--- trunk/testlink/gui/templates/execute/bugAdd.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/execute/bugAdd.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -24,7 +24,7 @@
 			<a style="font-weight:normal" target="_blank" href="{$bts_url}">
 			{lang_get s='link_bts_create_bug'}({$gui->interface_bugs|lower|capitalize})</a>
 		</p>	
-	  	<p class="label">{$gsmarty_interface_bugs|lower|capitalize} {lang_get s='bug_id'}
+	  	<p class="label">{$gui->interface_bugs|lower|capitalize} {lang_get s='bug_id'}
   	 		<input type="text" id="bug_id" name="bug_id" size="{#BUGID_SIZE#}" maxlength="{$bugIDMaxLength}"/>
 		</p>	
 		<div class="groupBtn">

Copied: trunk/testlink/gui/templates/execute/execHistory.tpl (from rev 18329, vendor/testlink/gui/templates/execute/execHistory.tpl)
===================================================================
--- trunk/testlink/gui/templates/execute/execHistory.tpl	                        (rev 0)
+++ trunk/testlink/gui/templates/execute/execHistory.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,90 @@
+{* 
+TestLink Open Source Project - http://testlink.sourceforge.net/
+ at filsesource execHistory.tpl
+*}	
+{lang_get var='labels' 
+          s='title_test_case,th_test_case_id,version,date_time_run,platform,test_exec_by,
+             exec_status,testcaseversion,attachment_mgmt,deleted_user,build,testplan,
+             execution_type_manual,execution_type_auto,run_mode'}
+
+{assign var="my_colspan" value=$attachment_model->num_cols}
+{* DEBUG: - $my_colspan - {$my_colspan}<br> *}
+
+<html>
+{include file="inc_head.tpl"}
+</head>
+
+<body onUnload="storeWindowSize('execHistoryPopup')">
+{if $gui->main_descr != ''}
+{$gui->main_descr|escape}<br>
+{$gui->detailed_descr|escape}<br>
+{/if}
+
+<table cellspacing="0" class="exec_history">
+	{* Table Header *} 
+	<tr>
+		<th style="text-align:left">{$labels.date_time_run}</th>
+		<th style="text-align:left">{$labels.testplan}</th>
+		<th style="text-align:left">{$labels.build}</th>
+		{if $gui->displayPlatformCol}
+			{assign var="my_colspan" value=$my_colspan+1}
+			<th style="text-align:left">{$labels.platform}</th>
+		{/if}
+		<th style="text-align:left">{$labels.test_exec_by}</th>
+		<th style="text-align:center">{$labels.exec_status}</th>
+		<th style="text-align:center">{$labels.testcaseversion}</th>
+		{if $attachment_model->show_upload_column && $gsmarty_attachments->enabled}
+			<th style="text-align:center">{$labels.attachment_mgmt}</th>
+		{else}		
+			{assign var="my_colspan" value=$my_colspan-1}
+		{/if}
+		
+		{if $gsmarty_bugInterfaceOn}
+			<th style="text-align:left">{$labels.bug_mgmt}</th>
+			{assign var="my_colspan" value=$my_colspan+1}
+		{/if}
+
+        <th style="text-align:left">{$labels.run_mode}</th>
+		{assign var="my_colspan" value=$my_colspan+2}
+	</tr>
+
+	{* Table data *}
+ 	{foreach item=tcv_exec_set from=$gui->execSet}
+ 		{foreach item=tcv_exec from=$tcv_exec_set}
+			{cycle values='#eeeeee,#d0d0d0' assign="bg_color"}
+			<tr style="border-top:1px solid black; background-color: {$bg_color}">
+				<td>{localize_timestamp ts=$tcv_exec.execution_ts}</td>
+				<td>{$tcv_exec.testplan_name|escape}</td>
+				<td>
+				{if !$tcv_exec.build_is_open}
+					<img src="{$smarty.const.TL_THEME_IMG_DIR}/lock.png" title="{$labels.closed_build}">
+				{/if}
+				{$tcv_exec.build_name|escape}
+  				</td>
+				{if $gui->displayPlatformCol}<td>{$tcv_exec.platform_name}</td>{/if}
+				<td title="{$tcv_exec.tester_first_name|escape} {$tcv_exec.tester_last_name|escape}">
+				{$tcv_exec.tester_login|escape}
+  				</td>
+				{assign var="tc_status_code" value=$tcv_exec.status}
+  				<td class="{$tlCfg->results.code_status.$tc_status_code}" style="text-align:center">
+  				    {localize_tc_status s=$tcv_exec.status}
+  				</td>
+				<td  style="text-align:center">{$tcv_exec.tcversion_number}</td>
+
+				<td class="icon_cell" align="center">
+				{if $tcv_exec.execution_run_type == $smarty.const.TESTCASE_EXECUTION_TYPE_MANUAL}
+      		    <img src="{$smarty.const.TL_THEME_IMG_DIR}/user.png" title="{$labels.execution_type_manual}"
+      		             style="border:none" />
+       		  	{else}
+      		    <img src="{$smarty.const.TL_THEME_IMG_DIR}/bullet_wrench.png" title="{$labels.execution_type_auto}"
+      		            style="border:none" />
+       		  	{/if}
+				</td>
+			</tr>
+		{/foreach}
+	{/foreach}
+
+
+</table>
+</body>
+</html>

Modified: trunk/testlink/gui/templates/execute/execNavigator.tpl
===================================================================
--- trunk/testlink/gui/templates/execute/execNavigator.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/execute/execNavigator.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,5 +1,5 @@
 {* TestLink Open Source Project - http://testlink.sourceforge.net/ *}
-{* $Id: execNavigator.tpl,v 1.52.2.3 2010/12/06 15:49:21 asimon83 Exp $ *}
+{* $Id: execNavigator.tpl,v 1.52.2.4 2011/02/11 08:21:22 mx-julian Exp $ *}
 {* Purpose: smarty template - show test set tree *}
 {*
 rev :
@@ -90,6 +90,7 @@
 	treeCfg.root_id={$gui->ajaxTree->root_node->id};
 	treeCfg.root_href='{$gui->ajaxTree->root_node->href}';
 	treeCfg.children={$gui->ajaxTree->children};
+	treeCfg.cookiePrefix='{$gui->ajaxTree->cookiePrefix}';
 </script>
 
 <script type="text/javascript" src='gui/javascript/execTreeWithMenu.js'></script>

Modified: trunk/testlink/gui/templates/execute/execSetResults.tpl
===================================================================
--- trunk/testlink/gui/templates/execute/execSetResults.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/execute/execSetResults.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,24 +1,24 @@
 {*
 TestLink Open Source Project - http://testlink.sourceforge.net/
-$Id: execSetResults.tpl,v 1.63 2010/11/06 11:42:47 amkhullar Exp $
-Purpose: smarty template - show tests to add results
-Rev:
-  20101008 - asimon - BUGID 3311
-  20100926 - franciscom - BUGID 3421: Test Case Execution feature - Add Export All test Case in TEST SUITE button
-  20100614 - eloff - BUGID 3522 - fix issue with multiple note panels
-  20100503 - franciscom - BUGID 3260: Import XML Results is not working with Internet Explorer
+
+ at filesource	execSetResults.tpl
+ at internal smarty template - show tests to add results
+ at internal revisions
+	20110314 - franciscom - remote execution improvements
+	20101008 - asimon - BUGID 3311
+	20100926 - franciscom - BUGID 3421: Test Case Execution feature - Add Export All test Case in TEST SUITE button
+	20100614 - eloff - BUGID 3522 - fix issue with multiple note panels
+	20100503 - franciscom - BUGID 3260: Import XML Results is not working with Internet Explorer
                           reason: passing string without string separator to  openImportResult()
-  20090901 - franciscom - preconditions
-  20090815 - franciscom - platform feature
-  20090418 - franciscom - BUGID 2364 - added logic to refresh tree, 
-                          due to access to test spec to edit it.
-
-  20090329 - franciscom - when using bulk mode, user can access test case spec opening a new window.
+	20090901 - franciscom - preconditions
+	20090815 - franciscom - platform feature
+	20090418 - franciscom - BUGID 2364 - added logic to refresh tree, due to access to test spec to edit it.
+	20090329 - franciscom - when using bulk mode, user can access test case spec opening a new window.
                           
-  20090212 - amitkhullar - BUGID 2068
-  20081231 - franciscom - new implementation of Bulk TC Status 
+	20090212 - amitkhullar - BUGID 2068
+	20081231 - franciscom - new implementation of Bulk TC Status 
                           BUGID 1635
-  20081210 - franciscom - BUGID 1905 
+	20081210 - franciscom - BUGID 1905 
 *}
 {assign var="attachment_model" value=$cfg->exec_cfg->att_model}
 {assign var="title_sep"  value=$smarty.const.TITLE_SEP}
@@ -34,22 +34,23 @@
 
 {lang_get s='build' var='build_title'}
 
-{lang_get var='labels'
-          s='edit_notes,build_is_closed,test_cases_cannot_be_executed,test_exec_notes,test_exec_result,
-             th_testsuite,details,warning_delete_execution,title_test_case,th_test_case_id,
-             version,has_no_assignment,assigned_to,execution_history,exec_notes,step_actions,
-             execution_type_short_descr,expected_results,testcase_customfields,
-             last_execution,exec_any_build,date_time_run,test_exec_by,build,exec_status,
-             test_status_not_run,tc_not_tested_yet,last_execution,exec_current_build,
-	           attachment_mgmt,bug_mgmt,delete,closed_build,alt_notes,alt_attachment_mgmt,
-	           img_title_bug_mgmt,img_title_delete_execution,test_exec_summary,title_t_r_on_build,
-	           execution_type_manual,execution_type_auto,run_mode,or_unassigned_test_cases,
-	           no_data_available,import_xml_results,btn_save_all_tests_results,execution_type,
-	           testcaseversion,btn_print,execute_and_save_results,warning,warning_nothing_will_be_saved,
-	           test_exec_steps,test_exec_expected_r,btn_save_tc_exec_results,only_test_cases_assigned_to,
-             deleted_user,click_to_open,reqs,requirement,show_tcase_spec,edit_execution, 
-             btn_save_exec_and_movetonext,step_number,btn_export,btn_export_testcases,
-             preconditions,platform,platform_description,exec_not_run_result_note'}
+{lang_get 
+  var='labels'
+  s='edit_notes,build_is_closed,test_cases_cannot_be_executed,test_exec_notes,test_exec_result,
+	th_testsuite,details,warning_delete_execution,title_test_case,th_test_case_id,
+	version,has_no_assignment,assigned_to,execution_history,exec_notes,step_actions,
+	execution_type_short_descr,expected_results,testcase_customfields,
+	last_execution,exec_any_build,date_time_run,test_exec_by,build,exec_status,
+	test_status_not_run,tc_not_tested_yet,last_execution,exec_current_build,
+	attachment_mgmt,bug_mgmt,delete,closed_build,alt_notes,alt_attachment_mgmt,
+	img_title_bug_mgmt,img_title_delete_execution,test_exec_summary,title_t_r_on_build,
+	execution_type_manual,execution_type_auto,run_mode,or_unassigned_test_cases,
+	no_data_available,import_xml_results,btn_save_all_tests_results,execution_type,
+	testcaseversion,btn_print,execute_and_save_results,warning,warning_nothing_will_be_saved,
+	test_exec_steps,test_exec_expected_r,btn_save_tc_exec_results,only_test_cases_assigned_to,
+	deleted_user,click_to_open,reqs,requirement,show_tcase_spec,edit_execution, 
+	btn_save_exec_and_movetonext,step_number,btn_export,btn_export_testcases,
+	preconditions,platform,platform_description,exec_not_run_result_note,remoteExecFeeback'}
 
 
 
@@ -93,19 +94,19 @@
 */
 function set_combo_group(formid,combo_id_prefix,value_to_assign)
 {
-  var f=document.getElementById(formid);
+	var f=document.getElementById(formid);
 	var all_comboboxes = f.getElementsByTagName('select');
 	var input_element;
 	var idx=0;
 		
 	for(idx = 0; idx < all_comboboxes.length; idx++)
 	{
-	  input_element=all_comboboxes[idx];
+		input_element=all_comboboxes[idx];
 		if( input_element.type == "select-one" && 
 		    input_element.id.indexOf(combo_id_prefix)==0 &&
 		   !input_element.disabled)
 		{
-       input_element.value=value_to_assign;
+			input_element.value=value_to_assign;
 		}	
 	}
 }
@@ -445,6 +446,22 @@
       </table>
       </div>
   {else}
+
+	{if $tlCfg->exec_cfg->enable_test_automation && $gui->remoteExecFeedback != ''}
+		<b>{$labels.remoteExecFeeback}</b>
+		{if	$gui->remoteExecFeedback.system == ''}
+			<br>{$gui->remoteExecFeedback.statusVerbose|escape}
+			<br>{$gui->remoteExecFeedback.notes|escape}
+			{if $gui->remoteExecFeedback.status == ''}	
+				<br>{$gui->remoteExecFeedback.scheduled|escape}
+				<br>{$gui->remoteExecFeedback.timestamp|escape}
+			{/if}	
+		{else}
+			<br>{$gui->remoteExecFeedback.system.msg|escape}
+		{/if}
+		<p>
+	{/if}
+	
     {include file="execute/inc_exec_show_tc_exec.tpl"}
 
     {* 20090419 - BUGID 2364 - franciscom*}

Modified: trunk/testlink/gui/templates/execute/inc_exec_test_spec.tpl
===================================================================
--- trunk/testlink/gui/templates/execute/inc_exec_test_spec.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/execute/inc_exec_test_spec.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -46,7 +46,7 @@
 		 {/if}
      
     <div class="exec_test_spec">
-		<table class="simple" width="100%">
+		<table class="simple">
 		<tr>
 			<th colspan="{$tableColspan}" class="title">{$args_labels.test_exec_summary}</th>
 		</tr>

Modified: trunk/testlink/gui/templates/inc_filter_panel.tpl
===================================================================
--- trunk/testlink/gui/templates/inc_filter_panel.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/inc_filter_panel.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -12,6 +12,8 @@
  *
  * @author Andreas Simon
  * @internal revision
+ *  20110222 - asimon - BUGID 4253: enable filter method selector before submitting 
+                                    the form so its value doesn't get lost
  *  20101121 - asimon - BUGID 4042: "Expand/Collapse" Button for Trees
  *  20101101 - franciscom - openExportTestPlan() interface changes
  *  20101009 - franciscom - fixed error viewer warning
@@ -38,7 +40,9 @@
 
 {config_load file="input_dimensions.conf" section="treeFilterForm"}
 
-<form method="post" id="filter_panel_form" name="filter_panel_form">
+{* BUGID 4253: enable filter method selector before submitting the form so its value doesn't get lost *}
+<form method="post" id="filter_panel_form" name="filter_panel_form" 
+      onsubmit="document.getElementById('filter_result_method').disabled=false;">
 
 {* hidden input with token to manage transfer of data between left and right frame *}
 {if isset($control->form_token)}

Modified: trunk/testlink/gui/templates/inc_head.tpl
===================================================================
--- trunk/testlink/gui/templates/inc_head.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/inc_head.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -34,6 +34,8 @@
 	
 {* ----- load CSS ------------------------------------------------------------------- *} 
 	<style media="all" type="text/css">@import "{$css}";</style>
+	<style media="all" type="text/css">@import "{$custom_css}";</style>
+
 	{if $testproject_coloring eq 'background'}
   	<style type="text/css"> body {ldelim}background: {$testprojectColor};{rdelim}</style>
 	{/if}

Modified: trunk/testlink/gui/templates/inc_res_by_prio.tpl
===================================================================
--- trunk/testlink/gui/templates/inc_res_by_prio.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/inc_res_by_prio.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -6,7 +6,7 @@
 
 <h2>{lang_get s='title_res_by_prio'}</h2>
 <p>{lang_get s='tit_milestone'} {$arrDataPriority.milestone} ({lang_get s='tit_end_date'} {$arrDataPriority.deadline})</p>
-<table class="simple" style="width: 100%; text-align: center; margin-left: 0px;">
+<table class="simple" style="text-align: center; margin-left: 0px;">
 	<tr>
 	<th>{lang_get s='trep_prio'}</th>
 	<th>{lang_get s='trep_total'}</th>

Modified: trunk/testlink/gui/templates/inc_res_by_ts.tpl
===================================================================
--- trunk/testlink/gui/templates/inc_res_by_ts.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/inc_res_by_ts.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 {* $Id: inc_res_by_ts.tpl,v 1.6 2007/05/15 13:56:38 franciscom Exp $ *}
 {* Purpose: smarty template - show Test Results and Metrics *}
 <h2>{lang_get s='title_res_by_ts'}</h2>
-<table class="simple" style="width: 100%; text-align: center; margin-left: 0px;">
+<table class="simple" style="text-align: center; margin-left: 0px;">
 	<tr>
 	  <th>{lang_get s='trep_ts'}</th>
 		<th>{lang_get s='trep_total'}</th>

Modified: trunk/testlink/gui/templates/inc_show_bug_table.tpl
===================================================================
--- trunk/testlink/gui/templates/inc_show_bug_table.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/inc_show_bug_table.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -17,7 +17,7 @@
     {assign var="tableStyles"  value="font-size:12px"}
 {/if}
 {* -------------------------------------------------------------------------------------- *}
-<table class="simple" style="width:95%">
+<table class="simple">
   <tr>
 	  <th style="text-align:left">{lang_get s='build'}</th>
 	  <th style="text-align:left">{lang_get s='caption_bugtable'}</th>

Modified: trunk/testlink/gui/templates/input_dimensions.conf
===================================================================
--- trunk/testlink/gui/templates/input_dimensions.conf	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/input_dimensions.conf	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,23 +1,19 @@
 #
 # Testlink Open Source Project - http://testlink.sourceforge.net/
-# $Id: input_dimensions.conf,v 1.70 2010/10/28 06:40:14 mx-julian Exp $
-#
 # Smarty config file - definitions of size and maxlength of often used fields
 #
-# Revisions:
+# @filesource input_dimensions.conf
 #
+# @internal revisions
+#
+#  20110409 - franciscom - PLATFORM_NOTES_TRUNCATE_LEN
 #  20100808 - asimon - BUGID 3950 - changed TESTPROJECT_TRUNCATE_SIZE from 50 to 35
 #  20100403 - franciscom - FILENAME_MAXLEN and FILENAME_SIZE becomes global
 #  20100808 - asimon - additional values in section treeFilterForm
 #  20100403 - franciscom - TRUNCATE_SCOPE => SCOPE_TRUNCATE,  added SCOPE_SHORT_TRUNCATE
 #  20100324 - asimon - moved TC_ID_SIZE/MAX_LEN to common area to allow reuse
 #  20100106 - asimon - contribution for 2976 req/reqspec search
-#  20090129 - havlatm - tcId extended because of prefix 
-#  20090125 - franciscom - REQ_DOCID* moved to common area, to allow reuse
-#  20080401 - franciscom - [planAddTC]
-#  20080207 - franciscom - [eventviewer]
 #
-#
 # the section [], when possible has the name of the template where the values
 # are used.
 # Sometimes refers to an operation i.e. fileupload
@@ -146,6 +142,7 @@
 [platformsView]
 PLATFORM_SIZE=25
 PLATFORM_MAXLEN=75
+PLATFORM_NOTES_TRUNCATE_LEN=120
 NOTES_ROWS=3
 NOTES_COLS=50
 

Modified: trunk/testlink/gui/templates/keywords/keywordsView.tpl
===================================================================
--- trunk/testlink/gui/templates/keywords/keywordsView.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/keywords/keywordsView.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -27,7 +27,7 @@
 
 <div class="workBack">
 	{if $keywords neq ''}
-	<table class="simple sortable" style="width:98%">
+	<table class="simple_tableruler sortable">
 		<tr>
 			<th width="30%">{$tlImages.sort_hint}{$labels.th_keyword}</th>
 			<th>{$tlImages.sort_hint}{$labels.th_notes}</th>

Modified: trunk/testlink/gui/templates/mainPageRight.tpl
===================================================================
--- trunk/testlink/gui/templates/mainPageRight.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/mainPageRight.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -179,22 +179,24 @@
 	{* ------------------------------------------------------------------------------------------ *}
 	{if $display_right_block_2}
     <div id='test_execution_topics'>
-		  {if $gui->grants.testplan_execute == "yes"}
-		  	<img src="{$tlImages.bullet}" />
-	          <a href="{$gui->launcher}?feature=executeTest">{$labels.href_execute_test}</a>
-		  {/if} 
+		{if $gui->grants.testplan_execute == "yes"}
+			<img src="{$tlImages.bullet}" />
+			<a href="{$gui->launcher}?feature=executeTest">{$labels.href_execute_test}</a>
+			
+			<br /> 
+			<img src="{$tlImages.bullet}" />
+			<a href="{$gui->url.testcase_assignments}">{$labels.href_my_testcase_assignments}</a>
+			<br />
+		{/if} 
       
-  	  {if $gui->grants.testplan_metrics == "yes"}
-	          <br />
-		  	<img src="{$tlImages.bullet}" />
-	          <a href="{$gui->launcher}?feature=showMetrics">{$labels.href_rep_and_metrics}</a>
-		  {/if} 
- 	    <br />
- 		  <img src="{$tlImages.bullet}" />
-	         <a href="{$gui->url.metrics_dashboard}">{$labels.href_metrics_dashboard}</a>
- 	    <br />
- 		  <img src="{$tlImages.bullet}" />
-	         <a href="{$gui->url.testcase_assignments}">{$labels.href_my_testcase_assignments}</a>
+		{if $gui->grants.testplan_metrics == "yes"}
+			<img src="{$tlImages.bullet}" />
+			<a href="{$gui->launcher}?feature=showMetrics">{$labels.href_rep_and_metrics}</a>
+			
+			<br />
+			<img src="{$tlImages.bullet}" />
+			<a href="{$gui->url.metrics_dashboard}">{$labels.href_metrics_dashboard}</a>
+		{/if} 
     </div>
 	{/if}
   {* ------------------------------------------------------------------------------------------ *}

Modified: trunk/testlink/gui/templates/plan/buildView.tpl
===================================================================
--- trunk/testlink/gui/templates/plan/buildView.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/plan/buildView.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -48,7 +48,7 @@
 <div id="existing_builds">
   {if $gui->buildSet ne ""}
     {* table id MUST BE item_view to use show/hide API info *}
-  	<table id="item_view" class="simple  sortable" style="width:80%">
+  	<table id="item_view" class="simple_tableruler sortable">
   		<tr>
   			<th>{$tlImages.toggle_api_info}{$tlImages.sort_hint}{$labels.th_title}</th>
   			<th class="{$noSortableColumnClass}">{$labels.th_description}</th>

Modified: trunk/testlink/gui/templates/plan/inc_controls_planEdit.tpl
===================================================================
--- trunk/testlink/gui/templates/plan/inc_controls_planEdit.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/plan/inc_controls_planEdit.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -12,44 +12,62 @@
 		         testplan_copy_assigned_to,testplan_copy_user_roles,testplan_copy_platforms_links'}
 
 <table style="float: left; text-align:left">
-	<tr><td align='left'>{$labels.testplan_copy_tcases}</td>
+	<tr>
 		<td align='left'>
-		<input type="checkbox" name="copy_tcases" checked="checked"/>
-		{$labels.testplan_copy_tcases_latest}<input type="radio" name="tcversion_type" value="latest" />
-		{$labels.testplan_copy_tcases_current}<input type="radio" name="tcversion_type" value="current" checked="1"/>
-			</td></tr>
-	<tr><td align='left'>
-		{$labels.testplan_copy_builds}
+			{$labels.testplan_copy_tcases}
 		</td>
 		<td align='left'>
-		<input type="checkbox" name="copy_builds" checked="checked"/>
-			</td></tr>
-	<tr><td align='left'>
-		{$labels.testplan_copy_priorities}
+			<input type="checkbox" name="copy_tcases" checked="checked"/>
+			{$labels.testplan_copy_tcases_latest}<input type="radio" name="tcversion_type" value="latest" />
+			{$labels.testplan_copy_tcases_current}<input type="radio" name="tcversion_type" value="current" checked="1"/>
 		</td>
+	</tr>
+	<tr>
 		<td align='left'>
-		<input type="checkbox" name="copy_priorities" checked="checked"/>
-			</td></tr>
-	<tr><td align='left'>
-		{$labels.testplan_copy_milestones}
+			{$labels.testplan_copy_builds}
 		</td>
 		<td align='left'>
-		<input type="checkbox" name="copy_milestones" checked="checked"/>
-			</td></tr>
-	<tr><td align='left'>
-		{$labels.testplan_copy_user_roles}
+			<input type="checkbox" name="copy_builds" checked="checked"/>
 		</td>
+	</tr>
+	<tr>
 		<td align='left'>
-		<input type="checkbox" name="copy_user_roles" checked="checked"/>
-		</td></tr>
-	<tr><td align='left'>
-		{$labels.testplan_copy_platforms_links}
+			{$labels.testplan_copy_priorities}
 		</td>
 		<td align='left'>
-		<input type="checkbox" name="copy_platforms_links" checked="checked"/>
-		</td></tr>
-	<tr><td align='left'>{$labels.testplan_copy_assigned_to}</td>
+			<input type="checkbox" name="copy_priorities" checked="checked"/>
+		</td>
+	</tr>
+	<tr>
 		<td align='left'>
-		<input type="checkbox" name="copy_assigned_to" checked="checked"/>
-	  </td></tr>
+			{$labels.testplan_copy_milestones}
+		</td>
+		<td align='left'>
+			<input type="checkbox" name="copy_milestones" checked="checked"/>
+		</td>
+	</tr>
+	<tr>
+		<td align='left'>
+			{$labels.testplan_copy_user_roles}
+		</td>
+		<td align='left'>
+			<input type="checkbox" name="copy_user_roles" checked="checked"/>
+		</td>
+	</tr>
+	<tr>
+		<td align='left'>
+			{$labels.testplan_copy_platforms_links}
+		</td>
+		<td align='left'>
+			<input type="checkbox" name="copy_platforms_links" checked="checked"/>
+		</td>
+	</tr>
+	<tr>
+		<td align='left'>
+			{$labels.testplan_copy_assigned_to}
+		</td>
+		<td align='left'>
+			<input type="checkbox" name="copy_assigned_to" checked="checked"/>
+		</td>
+	</tr>
 </table>
\ No newline at end of file

Modified: trunk/testlink/gui/templates/plan/newest_tcversions.tpl
===================================================================
--- trunk/testlink/gui/templates/plan/newest_tcversions.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/plan/newest_tcversions.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -10,7 +10,8 @@
 {include file="inc_jsCheckboxes.tpl"}
 
 {lang_get var='labels' 
-          s='testproject,test_plan,th_id,th_test_case,title_newest_tcversions,linked_version,newest_version' }
+          s='testproject,test_plan,th_id,th_test_case,title_newest_tcversions,
+             linked_version,newest_version,compare,design' }
 
 </head>
 <body>
@@ -38,23 +39,33 @@
 </form>
 
 {if $gui->show_details }
-  <div class="workBack" style="height: 380px; overflow-y: auto;">
+  <div class="workBack">
 
-    <table cellspacing="0" style="font-size:small;" width="100%">
-      <tr style="background-color:blue;font-weight:bold;color:white">
+    <table class="simple_tableruler">
+      <tr>
 		    {* <td>{$labels.th_id}</td>  *}
-		    <td>{$labels.th_test_case}</td>
-		    <td>{$labels.linked_version}</td>
-		    <td>{$labels.newest_version}</td>
-		    <td> </td>
+		    <th>{$labels.th_test_case}</th>
+		    <th>{$labels.linked_version}</th>
+		    <th>{$labels.newest_version}</th>
+		    <th>{$labels.compare}</th>
       </tr>   
     
       {foreach from=$gui->testcases item=tc}
       <tr>
 		{* <td style="align:right;"> {$gui->tcasePrefix|escape}{$tc.tc_external_id|escape} </td>  *} 
-		<td> {$tc.path}{$gui->tcasePrefix|escape}{$tc.tc_external_id|escape}:{$tc.name|escape} </td>  
-		<td> {$tc.version|escape} </td>
-		<td> {$tc.newest_version|escape} </td>
+		<td> 
+			<img class="clickable" src="{$smarty.const.TL_THEME_IMG_DIR}/edit_icon.png"
+			     onclick="javascript:openTCaseWindow({$tc.tc_id});"
+			     title="{$labels.design}" />
+			{$tc.path}{$gui->tcasePrefix|escape}{$tc.tc_external_id|escape}:{$tc.name|escape}
+		</td>
+		<td align="center"> {$tc.version|escape} </td>
+		<td align="center"> {$tc.newest_version|escape} </td>
+		</td>
+		<td align="center">
+			<a href="lib/testcases/tcCompareVersions.php?testcase_id={$tc.tc_id}&version_left={$tc.version}&version_right={$tc.newest_version}&compare_selected_versions=1&use_html_comp=1" target="_blank">
+			<img src="{$smarty.const.TL_THEME_IMG_DIR}/magnifier.png"></img></a>
+		</td>
       </tr>
   	  {/foreach}
   	</table>

Modified: trunk/testlink/gui/templates/plan/planAddTCNavigator.tpl
===================================================================
--- trunk/testlink/gui/templates/plan/planAddTCNavigator.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/plan/planAddTCNavigator.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -16,7 +16,7 @@
 	20080629 - franciscom - fixed missed variable bug
   20080622 - franciscom - ext js tree support
   20080429 - franciscom - keyword filter multiselect
-* ------------------------------------------------------------------------ *}
+ ------------------------------------------------------------------------ *}
 
 {lang_get var="labels" 
           s='keywords_filter_help,btn_apply_filter,execution_type,importance,
@@ -70,6 +70,7 @@
         treeCfg.root_id={$gui->ajaxTree->root_node->id};
         treeCfg.root_href='{$gui->ajaxTree->root_node->href}';
         treeCfg.children={$gui->ajaxTree->children};
+        treeCfg.cookiePrefix = "{$gui->ajaxTree->cookiePrefix}";
         </script>
         <script type="text/javascript" src='gui/javascript/execTree.js'></script>
     {else}

Modified: trunk/testlink/gui/templates/plan/planAddTC_m1.tpl
===================================================================
--- trunk/testlink/gui/templates/plan/planAddTC_m1.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/plan/planAddTC_m1.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -4,6 +4,7 @@
 Purpose: smarty template - generate a list of TC for adding to Test Plan 
 
 rev:
+    20110415 - Julian - BUGID 2985 - added importance column
     20101215 - Julian - changed tc summary tooltip configuration
     20101028 - asimon - avoided a warning on event log
     20100721 - asimon - BUGID 3406: added build selector to assign users to chosen build 
@@ -29,7 +30,7 @@
              executed_can_not_be_removed,added_on_date,btn_save_platform,
              check_uncheck_all_checkboxes,removal_tc,show_tcase_spec,
              tester_assignment_on_add,adding_tc,check_uncheck_all_tc,for,
-             build_to_assign_on_add'}
+             build_to_assign_on_add,importance'}
 
 {* prefix for checkbox named , ADD and ReMove *}   
 {assign var="add_cb" value="achecked_tc"} 
@@ -61,6 +62,21 @@
 	alert(e);
 }
 
+// BUGID 2985: variables to store importance informations for test cases
+js_option_importance = new Array();
+{/literal}
+{foreach key=key item=item from=$gsmarty_option_importance}
+	js_option_importance[{$key}] = "{$item}";
+{/foreach}
+{literal}
+
+js_tcase_importance = new Array();
+
+// BUGID 2985: function to update test case importance when selecting a different test case version
+function updateImportance(tcID,importanceOptions,importance) {
+	document.getElementById("importance_"+tcID).firstChild.nodeValue = importanceOptions[importance];
+}
+
 Ext.onReady(function(){ 
 {/literal}
 {foreach from=$gui->items key=idx item=info}
@@ -164,7 +180,7 @@
     {* ======================================== *}
     {* Loop over Test Suites to draw test cases *}
   	{assign var="item_number" value=0}
-  	{foreach from=$gui->items item=ts}
+  	{foreach name="tSuiteLoop" from=$gui->items item=ts}
   		{assign var="item_number" value=$item_number+1}
   		{assign var="ts_id" value=$ts.testsuite.id}
   		{assign var="div_id" value="div_$ts_id"}
@@ -195,9 +211,10 @@
   		    	    {/if}
   			     </td>
   
-             {if $gui->usePlatforms} <td>{$labels.th_platform}</td> {/if}
+                 {if $gui->usePlatforms} <td>{$labels.th_platform}</td> {/if}
   			     <td>{$labels.th_test_case}</td>
   			     <td>{$labels.version}</td>
+  			     {if $gui->priorityEnabled} <td>{$labels.importance}</td> {/if}
              <td align="center">
    				      <img src="{$smarty.const.TL_THEME_IMG_DIR}/timeline_marker.png" 
                      title="{$labels.execution_order}" />
@@ -220,7 +237,7 @@
              {/if}
             </tr>   
             
-  			    {foreach from=$ts.testcases item=tcase}
+  			    {foreach name="tCaseLoop" from=$ts.testcases item=tcase}
       			  {assign var='is_active' value=0}
               {assign var='linked_version_id' value=$tcase.linked_version_id}
               {assign var='tcID' value=$tcase.id}
@@ -280,10 +297,48 @@
        					      {$gui->testCasePrefix|escape}{$tcase.external_id}: <a href="javascript:openTCaseWindow({$tcID})">{$tcase.name|escape}</a>
       			        </td>
                   	<td>
+                  	{if $gui->priorityEnabled}
+                  			<script type="text/javascript">
+                  			{* To be able to update importance when selecting another test case version
+                      		   we need to transform smarty arrays to javascript array *}
+
+                      			js_tcase_importance[{$tcID}] = new Array();
+                  				{foreach key=version item=value from=$tcase.importance}
+                  					js_tcase_importance[{$tcID}][{$version}] = {$value};
+                  				{/foreach}
+                      		</script>
+           				    <select name="tcversion_for_tcid[{$tcID}]" 
+           				            onchange="javascript:updateImportance({$tcID},js_option_importance,js_tcase_importance[{$tcID}][this.options[this.selectedIndex].value]);"
+           				            {if $linked_version_id != 0} disabled{/if}>
+           				            {html_options options=$tcase.tcversions selected=$linked_version_id}
+           				    </select>
+                  	</td>
+                  	
+                  	    {* BUGID - add Importance column *}
+      			        <td id="importance_{$tcID}">
+      			              {* $tcase.importance *}
+      			              {* $linked_version_id *}
+      			              {if $linked_version_id != 0} 
+      			                    {* set importance to importance of linked test case version *}
+      			                    {assign var=importance value=$tcase.importance.$linked_version_id}
+      			              {else}
+      			                    {* if no test case version is linked -> set to importance 
+      			                       of the first option from select box. only way to get first
+      			                       element of an array is this loop afaik *}
+      			                    {foreach name="oneLoop" from=$tcase.importance key=key item=item}
+      			                    	{if $smarty.foreach.oneLoop.first}
+      			                    		{assign var=firstElement value=$key}
+      			                    	{/if}
+      			                    {/foreach}
+      			                    {assign var=importance value=$tcase.importance.$firstElement}
+      			              {/if}
+      			              {$gsmarty_option_importance.$importance}
+      			        </td>
+           			{else}
            				    <select name="tcversion_for_tcid[{$tcID}]"{if $linked_version_id != 0} disabled{/if}>
            				            {html_options options=$tcase.tcversions selected=$linked_version_id}
            				    </select>
-                  	</td>
+           			{/if}
                   	<td style="text-align:center;">
                     		<input name="exec_order[{$tcID}]" {$gui->exec_order_input_disabled}
                                style="text-align:right;" size="{#EXECUTION_ORDER_SIZE#}" maxlength="{#EXECUTION_ORDER_MAXLEN#}" 
@@ -315,7 +370,7 @@
                       {/if}
                       {if $is_active eq 0}   {$labels.inactive_testcase}{/if}
             			  </td>
-            			  <td title="{$labels.info_added_on_date}">
+            			  <td align="center" title="{$labels.info_added_on_date}">
             			  	{if $tcase.linked_ts[0] != ''}{localize_date d=$tcase.linked_ts[0]}{else} {/if}  
             			  </td>
                   {/if}
@@ -325,7 +380,7 @@
                 {* This piece will be used ONLY when platforms are not used or not assigned yet *}
   			        {if isset($tcase.custom_fields[0])}
         			    <input type='hidden' name='linked_with_cf[{$tcase.feature_id}]' value='{$tcase.feature_id}' />
-                  <tr><td colspan="8">{$tcase.custom_fields[0]}</td></tr>
+                  <tr><td colspan="9">{$tcase.custom_fields[0]}</td></tr>
                 {/if}
               {/if}
               
@@ -349,6 +404,7 @@
       			        </td>
       			        <td>{$platform.name|escape}</td>
   				          <td> </td><td> </td><td> </td>
+  				          {if $gui->priorityEnabled} <td> </td> {/if}
   				          
   				          {if $is_active == 1 && isset($tcase.feature_id[$platform.id])}
   	      			      <td> </td>
@@ -361,12 +417,12 @@
                             title="{$gui->warning_msg->executed}" />
                         {/if}
   	                  </td>
-  	                  <td title="{$labels.info_added_on_date}">{localize_date d=$tcase.linked_ts[$platform.id]}</td>
+  	                  <td align="center" title="{$labels.info_added_on_date}">{localize_date d=$tcase.linked_ts[$platform.id]}</td>
                     {/if}
                   </tr>
   			          {if isset($tcase.custom_fields[$platform.id])}
                     <tr>
-                      <td colspan="7">
+                      <td colspan="8">
                         <input type='hidden' name='linked_with_cf[{$tcase.feature_id}]' value='{$tcase.feature_id}' />
                         {$tcase.custom_fields[$platform.id]}
                       </td>
@@ -374,7 +430,7 @@
                   {/if}
                   
                 {/foreach}
-               	<tr><td colspan="9"><hr/></td></tr>
+               	<tr><td colspan="10"><hr/></td></tr>
               {/if}             
               {* ================================================================================================================ *} 
               

Modified: trunk/testlink/gui/templates/plan/planMilestonesEdit.tpl
===================================================================
--- trunk/testlink/gui/templates/plan/planMilestonesEdit.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/plan/planMilestonesEdit.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,6 +3,7 @@
 $Id: planMilestonesEdit.tpl,v 1.13 2010/11/06 11:42:47 amkhullar Exp $
 
 Rev:
+    20110417 - Julian - BUGID 3971 - Help for Milestones 
     20101026 - Julian - BUGID 3930 - Localized dateformat for datepicker
     20101022 - asimon - BUGID 3716: replaced old separated inputs for day/month/year by ext js calendar
 *}
@@ -13,7 +14,7 @@
                           btn_cancel,warning,start_date,info_milestones_start_date,
                           th_name,th_date_format,th_perc_a_prio,th_perc_b_prio,th_perc_c_prio,
                           th_perc_testcases,th_delete,alt_delete_milestone,show_calender,
-                          clear_date'}
+                          clear_date,info_milestone_create_prio,info_milestone_create_no_prio'}
 
 {assign var="cfg_section" value=$smarty.template|basename|replace:".tpl":""}
 {config_load file="input_dimensions.conf" section=$cfg_section}
@@ -225,8 +226,15 @@
 			     onclick="javascript: history.back();"/>
 	</div>
 	</form>
+	
+	{* BUGID 3971 - Help for Milestones *}
+	<br />
+	{if $session['testprojectOptions']->testPriorityEnabled}
+		<p class="italic">{$labels.info_milestone_create_prio}</p>
+	{else}
+		<p class="italic">{$labels.info_milestone_create_no_prio}</p>
+	{/if}
+	
 </div>
- 
-
 </body>
 </html>

Modified: trunk/testlink/gui/templates/plan/planTCNavigator.tpl
===================================================================
--- trunk/testlink/gui/templates/plan/planTCNavigator.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/plan/planTCNavigator.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -17,7 +17,7 @@
 	                    panel is now ext collapsible panel
 	20081223 - franciscom - advanced/simple filters
 	20080311 - franciscom - BUGID 1427
-* ---------------------------------------------------------------------- *}
+ ---------------------------------------------------------------------- *}
 
 {lang_get var="labels" 
           s='btn_update_menu,btn_apply_filter,keyword,keywords_filter_help,title_navigator,
@@ -73,6 +73,7 @@
 	    // BUGID 3406
 	    treeCfg.root_href = '{$gui->ajaxTree->root_node->href}';
 	    treeCfg.children = {$gui->ajaxTree->children};
+	    treeCfg.cookiePrefix = "{$gui->ajaxTree->cookiePrefix}";
     </script>
     
     <script type="text/javascript" src='gui/javascript/execTree.js'>

Modified: trunk/testlink/gui/templates/plan/planUpdateTC.tpl
===================================================================
--- trunk/testlink/gui/templates/plan/planUpdateTC.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/plan/planUpdateTC.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -8,7 +8,8 @@
          that have a newer available version.
          
 rev:
-	20100724 - asimon - added closing ">" for "<td class="clickable_icon">"
+    20110626 - Julian - BUGID 3110 - Quick TC Version Compare for Bulk Update
+    20100724 - asimon - added closing ">" for "<td class="clickable_icon">"
     20091212 - franciscom - BUGID 2652 - contribution refactored
     20080528 - franciscom - BUGID 1504 
 *}
@@ -19,7 +20,8 @@
              version,linked_version,newest_version,
              note_keyword_filter,check_uncheck_all,
              check_uncheck_all_checkboxes,th_id,has_been_executed,show_tcase_spec,
-             update_to_version,inactive_testcase,btn_update_testplan_tcversions'}
+             update_to_version,inactive_testcase,btn_update_testplan_tcversions,
+             compare,design'}
 
 {include file="inc_head.tpl" openHead="yes"}
 {include file="inc_del_onclick.tpl"}
@@ -66,7 +68,7 @@
      <h1 class="title">{$action_descr}</h1>
      {include file="inc_update.tpl" result=$sqlResult}
 
-    <div class="workBack" style="height: 380px; overflow-y: auto;">
+    <div class="workBack">
     {if $gui->instructions != ''}
       {$gui->instructions}
       {if $gui->user_feedback != ''}
@@ -205,20 +207,20 @@
   {/if}  
 
   {if $gui->operationType == 'bulk'}
-  <div class="workBack" overflow-y: auto;">
-	    <br/><table border="0" cellspacing="0" cellpadding="2" style="font-size:small;" width="100%">
-	      <tr class="testlink" style="background-color:blue;font-weight:bold;color:white">
+  <input type="hidden" name="update_all_value"  id="update_all_value"  value="1" />
+	    <br/><table class="simple_tableruler">
+	      <tr>
 			    
-			    <td class="clickable_icon">
+			    <th class="clickable_icon">
              <img src="{$smarty.const.TL_THEME_IMG_DIR}/toggle_all.gif" border="0" 
 	                alt="{$labels.check_uncheck_all}" title="{$labels.check_uncheck_all}" 
                   onclick="cs_all_checkbox_in_div('updateTcForm','{$update_cb}','update_all_value');" />
        
-	        </td>
-			    <td>{$labels.th_test_case}</td>
-			    <td>{$labels.linked_version}</td>
-			    <td>{$labels.newest_version}</td>
-			    <td> </td>
+	        </th>
+			    <th>{$labels.th_test_case}</th>
+			    <th>{$labels.linked_version}</th>
+			    <th>{$labels.newest_version}</th>
+			    <th>{$labels.compare}</th>
 	      </tr>   
 	    
 	      {foreach from=$gui->testcases item=tc}
@@ -230,25 +232,30 @@
       			<input type='hidden' name='a_tcid[{$tc.tc_id}]' value='{$tc.newest_tcversion_id}' />
     		</td>
 	      
-			  <td> {$tc.path}{$gui->testCasePrefix|escape}{$tc.tc_external_id|escape}:{$tc.name|escape} </td>  
-			  <td> {$tc.version|escape} </td>
 			  <td>
+			  <img class="clickable" src="{$smarty.const.TL_THEME_IMG_DIR}/edit_icon.png"
+			    onclick="javascript:openTCaseWindow({$tc.tc_id});"
+			    title="{$labels.design}" />
+			    {$tc.path}{$gui->testCasePrefix|escape}{$tc.tc_external_id|escape}:{$tc.name|escape} </td>  
+			  <td align="center"> {$tc.version|escape} </td>
+			  <td align="center">
 			  {$tc.newest_version|escape} 
 			  <input type="hidden" name="new_tcversion_for_tcid[{$tc.tc_id}]" value="{$tc.newest_tcversion_id}" />
 			  </td>
+			  <td align="center">
+			  <a href="lib/testcases/tcCompareVersions.php?testcase_id={$tc.tc_id}&version_left={$tc.version}&version_right={$tc.newest_version}&compare_selected_versions=1&use_html_comp=1" target="_blank">
+			  <img src="{$smarty.const.TL_THEME_IMG_DIR}/magnifier.png"></img></a>
+			  </td>
 	      </tr>
 	  	  {/foreach}
 	  	</table>
-    </div>
+
   {/if}
  
-  <div class="workBack">
     <br>   
     <input type="submit" id="update_btn" name="update_btn" style="padding-right: 20px;"
            value='{$labels.btn_update_testplan_tcversions}'  />
     <input type="hidden" name="doAction" id="doAction" value="{$gui->buttonAction}" />  
-  </div>
-
   </form>
 {else}
   	<h2>{$gui->user_feedback}</h2>

Modified: trunk/testlink/gui/templates/plan/planUrgency.tpl
===================================================================
--- trunk/testlink/gui/templates/plan/planUrgency.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/plan/planUrgency.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -5,6 +5,7 @@
 Smarty template - manage test case urgency
 
 Revisions: 
+	20110415 - Julian - BUGID 4419 - added columns "Importance" and "Priority"
 	20080901 - franciscom - display testcase external id
     20080721 - franciscom 
           1. if test suite has no test case, then give message and remove all controls
@@ -15,7 +16,8 @@
 {assign var="ownURL" value="lib/plan/planUrgency.php"}
 {lang_get var="labels" 
           s='title_plan_urgency, th_testcase, th_urgency, urgency_low, urgency_medium, urgency_high,
-             label_set_urgency_ts, btn_set_urgency_tc, urgency_description,testsuite_is_empty'}
+             label_set_urgency_ts, btn_set_urgency_tc, urgency_description,testsuite_is_empty,
+             priority, importance'}
 
 {include file="inc_head.tpl"}
 <body>
@@ -42,15 +44,19 @@
 	<form method="post" action="{$ownURL}" id="set_urgency_tc">
 	<input type="hidden" name="tplan_id" value="{$gui->tplan_id}" />
 	<input type="hidden" name="id" value="{$gui->node_id}" />
-	<table class="simple" style="width: 600px; text-align: center">
+	<table class="simple_tableruler" style="text-align: center">
 	<tr>
 		<th style="text-align: left;">{$labels.th_testcase}</th>
+		<th>{$labels.importance}</th>
 		<th colspan="3">{$labels.th_urgency}</th>
+		<th>{$labels.priority}</th>
 	</tr>
 
 	{foreach item=res from=$gui->listTestCases}
 	<tr>
 			<td style="text-align: left;">{$res.tcprefix|escape}{$res.tc_external_id} : {$res.name|escape}</td>
+			{assign var=importance value=$res.importance}
+			<td>{$gsmarty_option_importance.$importance}</td>
   			{assign var=urgencyCode value=$res.urgency}
 			<td><input type="radio"
 					   name="urgency[{$res.tcversion_id}]"
@@ -79,6 +85,8 @@
 						/>
 				<span style="vertical-align:middle;">{$labels.urgency_low}</span>
 			</td>
+			{assign var=priority value=$res.priority}
+			<td>{$gsmarty_option_priority.$priority}</td>
 	</tr>
 	{/foreach}
 	</table>

Modified: trunk/testlink/gui/templates/plan/planView.tpl
===================================================================
--- trunk/testlink/gui/templates/plan/planView.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/plan/planView.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,19 +1,16 @@
 {*
 TestLink Open Source Project - http://testlink.sourceforge.net/ 
-$Id: planView.tpl,v 1.24 2010/10/17 17:41:51 franciscom Exp $ 
-Purpose: smarty template - edit / delete Test Plan 
+Filename: planView.tpl
+smarty template - edit / delete Test Plan 
 
 Development hint:
      some smarty and javascript variables are created on the inc_*.tpl files.
      
 Rev:
+    20110220 - franciscom - use of thead abd tbody
+    						BUGID 4246 - add simple table ruler via events
     20101017 - franciscom - image access refactored (tlImages)
     20100925 - franciscom - BUGID 3649 - test plan export/import -> EXPORT
-    20080805 - franciscom - api config refactoring
-    20080116 - franciscom - added option to show/hide id useful for API 
-    20080109 - franciscom - added sort table by JS
-    20071006 - franciscom - added logic to use ext js confirm widget
-     
 *}
 {assign var="cfg_section" value=$smarty.template|basename|replace:".tpl":""}
 {config_load file="input_dimensions.conf" section=$cfg_section}
@@ -64,7 +61,8 @@
 {elseif $gui->tplans eq ''}
 	{$labels.testplan_txt_empty_list}
 {else}
-	<table id='item_view'class="simple sortable" width="95%">
+	<table id='item_view'class="simple_tableruler sortable">
+		<thead>
 		<tr>
 			<th>{$tlImages.toggle_api_info}{$tlImages.sort_hint}{$labels.testplan_th_name}</th> 			
 			<th class="{$noSortableColumnClass}">{$labels.testplan_th_notes}</th>
@@ -74,6 +72,8 @@
 			<th class="{$noSortableColumnClass}">{$labels.export}</th>
 			<th class="{$noSortableColumnClass}">{$labels.import}</th>
 		</tr>
+		</thead>
+		<tbody>
 		{foreach item=testplan from=$gui->tplans}
 		<tr>
 			<td><span class="api_info" style='display:none'>{$tlCfg->api->id_format|replace:"%s":$testplan.id}</span>
@@ -125,7 +125,7 @@
 			</td>
 		</tr>
 		{/foreach}
-
+		</tbody>
 	</table>
 
 {/if}

Modified: trunk/testlink/gui/templates/plan/tc_exec_assignment.tpl
===================================================================
--- trunk/testlink/gui/templates/plan/tc_exec_assignment.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/plan/tc_exec_assignment.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,22 +1,11 @@
 {* 
 TestLink Open Source Project - http://testlink.sourceforge.net/ 
-$Id: tc_exec_assignment.tpl,v 1.35.2.1 2010/12/15 21:17:05 franciscom Exp $
+ at filesource tc_exec_assignment.tpl
 generate the list of TC that can be removed from a Test Plan 
 
-rev :
-	   20101030 - amitkhullar - Adjusted the Checkbox column width
-     20100927 - franciscom - Added ext-js extension to transform tables in ext-js grid
-                             BUGID 3668: Test Case EXECUTION Assignment Page not displayed properly
-                             <div id="header-wrap" -> added height:110px;
-                             added z-index to avoid problems with scrolling when using EXT-JS and header-wrap
-     20100926 - franciscom - HTML improvements using <thead>,<tbody>
-     20100822 - franciscom - BUGID 3698
-     20100709 - asimon - BUGID 3406 - changed assignment logic to operate on build 
-                                      instead of testplan level
-     20100209 - franciscom - minor code layout refactoring
-     20100121 - eloff - BUGID 3078 - buttons always visible on top
-     20090215 - franciscom - BUGID 2114
-     20070120 - franciscom - BUGID 530
+ at internal revisions
+20110618 - franciscom - TICKET 4624: bulk assignment KO if "Send mail notification to tester" is checked
+20110523 - Julian - Added linked test case version to test case link
 *}
 
 {lang_get var="labels" s='user_bulk_assignment,btn_do,check_uncheck_all_checkboxes,th_id,
@@ -24,7 +13,7 @@
                           send_mail_to_tester,platform,no_testcase_available,
                           exec_assign_no_testcase,warning,check_uncheck_children_checkboxes,
                           th_test_case,version,assigned_to,assign_to,note_keyword_filter, priority,
-                          check_uncheck_all_tc
+                          check_uncheck_all_tc, execution, design
                           '}
 
 {include file="inc_head.tpl" openHead="yes"}
@@ -89,16 +78,18 @@
 			{else}
 			<input type="hidden" id="select_platform" value="0">
 			{/if}
-			<button onclick="cs_all_checkbox_in_div_with_platform('tc_exec_assignment', '{$add_cb}', Ext.get('select_platform').getValue()); return false">{$labels.btn_do}</button>
+			{* TICKET 4624 *}
+			<button onclick="cs_all_checkbox_in_div_with_platform('tc_exec_assignment_cb', '{$add_cb}', Ext.get('select_platform').getValue()); return false">{$labels.btn_do}</button>
 		</div>
 		<div>
 			{$labels.user_bulk_assignment}
 			<select name="bulk_tester_div"  id="bulk_tester_div">
 				{html_options options=$gui->testers selected=0}
 			</select>
+			{* TICKET 4624 *}
 			<input type='button' name='bulk_user_assignment' id='bulk_user_assignment'
 				onclick='if(check_action_precondition("tc_exec_assignment","default"))
-						        set_combo_if_checkbox("tc_exec_assignment","tester_for_tcid_",Ext.get("bulk_tester_div").getValue())'
+						        set_combo_if_checkbox("tc_exec_assignment_cb","tester_for_tcid_",Ext.get("bulk_tester_div").getValue())'
 				value="{$labels.btn_do}" />
 		</div>
 		<div>
@@ -114,7 +105,7 @@
 	</div> <!-- header-wrap -->
 
   {if $gui->has_tc}
-   <div class="workBack">
+   <div class="workBack" id="tc_exec_assignment_cb"> {* TICKET 4624 *}
 	  {assign var=table_counter value=0}
 	  {assign var=top_level value=$gui->items[0].level}
 	  {foreach from=$gui->items item=ts key=idx name="div_drawing"}
@@ -185,8 +176,15 @@
             	    	<td>
             	    		{$gui->testCasePrefix|escape}{$tcase.external_id|escape}
             	    	</td>
-            	    	<td title="{$labels.show_tcase_spec}">
-            	    		 <a href="javascript:openTCaseWindow({$tcase.id})"><strong>{$tcase.name|escape}</strong></a>
+            	    	<td>
+            	    		{* BUGID 4636 add execution and edit icon to open specific content in popup *}
+            	    		<img class="clickable" src="{$smarty.const.TL_THEME_IMG_DIR}/exec_icon.png"
+            	    		     onclick="javascript:openExecutionWindow({$tcase.id},{$tcase.linked_version_id},{$gui->build_id},{$gui->tplan_id},{$platform_id});"
+            	    		     title="{$labels.execution}" />
+            	    		<img class="clickable" src="{$smarty.const.TL_THEME_IMG_DIR}/edit_icon.png"
+            	    		     onclick="javascript:openTCaseWindow({$tcase.id},{$tcase.linked_version_id});"
+            	    		     title="{$labels.design}" />
+            	    		{$tcase.name|escape}
             	    		 {$gsmarty_gui->role_separator_open} {$tcase.tcversions[$tcase.linked_version_id]}
             	    		{$gsmarty_gui->role_separator_close}
             	    	</td>

Modified: trunk/testlink/gui/templates/platforms/platformsEdit.tpl
===================================================================
--- trunk/testlink/gui/templates/platforms/platformsEdit.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/platforms/platformsEdit.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,10 +1,10 @@
 {*
 TestLink Open Source Project - http://testlink.sourceforge.net/
-$Id: platformsEdit.tpl,v 1.9 2010/11/06 11:42:47 amkhullar Exp $
+ at filesource	platformsEdit.tpl
 Purpose: smarty template - View all platforms
 
-rev:
-  20090806 - franciscom - refactoring
+ at internal revisions
+20110409 - franciscom - BUGID 4368: Provide WYSIWYG Editor for platform notes
 *}
 {assign var="url_args" value="lib/platforms/platformsEdit.php"}
 {assign var="platform_edit_url" value="$basehref$url_args"}
@@ -74,7 +74,7 @@
   		</tr>
   		<tr>
   			<th>{$labels.th_notes}</th>
-  			<td><textarea name="notes" rows="{#NOTES_ROWS#}" cols="{#NOTES_COLS#}">{$gui->notes|escape}</textarea></td>
+  			<td>{$gui->notes}</td>
   		</tr>
   	</table>
   	<div class="groupBtn">	

Modified: trunk/testlink/gui/templates/platforms/platformsView.tpl
===================================================================
--- trunk/testlink/gui/templates/platforms/platformsView.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/platforms/platformsView.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,12 +1,13 @@
 {*
 TestLink Open Source Project - http://testlink.sourceforge.net/
-$Id: platformsView.tpl,v 1.13 2010/11/06 11:42:47 amkhullar Exp $
+
 Purpose: smarty template - View all platforms
 
-20100119 - Eloff      - added ability to show/hide platform id for API
-20091201 - Eloff      - show grey trash icon on platforms that use used
-                        and show warning when deleting platforms
-20091010 - franciscom - export XML feature
+ at filesource platformsView.tpl
+
+ at internal revisions
+20110409 - franciscom - BUGID 4368: Provide WYSIWYG Editor for platform notes
+20100119 - Eloff	- added ability to show/hide platform id for API
 *}
 {include file="inc_head.tpl" jsValidate="yes" openHead="yes" enableTableSorting="yes"}
 {include file="inc_del_onclick.tpl"}
@@ -42,7 +43,7 @@
 {include file="inc_feedback.tpl" user_feedback=$gui->user_feedback}
 <div class="workBack">
 {if $gui->platforms != ''}
-	<table class="simple sortable" style="width:95%">
+	<table class="simple_tableruler sortable">
 		<tr>
 			<th width="30%">{$tlImages.toggle_api_info}{$tlImages.sort_hint}{$labels.th_platform}</th>
 			<th>{$tlImages.sort_hint}{$labels.th_notes}</th>
@@ -62,8 +63,10 @@
 					</a>
 				{/if}
 			</td>
-			<td>{$gui->platforms[platform].notes|escape|nl2br}</td>
-			{if $gui->canManage ne ""}
+			{* when using rich webeditor strip_tags is needed - franciscom *}
+			<td>{$gui->platforms[platform].notes|strip_tags|strip|truncate:#PLATFORM_NOTES_TRUNCATE_LEN#}</td>
+
+			{if $gui->canManage != ""}
 			<td class="clickable_icon">
 				{if $gui->platforms[platform].linked_count eq 0}
 				<img style="border:none;cursor: pointer;"	alt="{$labels.alt_delete_platform}"

Modified: trunk/testlink/gui/templates/project/projectView.tpl
===================================================================
--- trunk/testlink/gui/templates/project/projectView.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/project/projectView.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -58,7 +58,7 @@
 {if $gui->tprojects == ''}
 	{$labels.testproject_txt_empty_list}
 {else}
-	<table id="item_view" class="simple sortable" width="95%">
+	<table id="item_view" class="simple_tableruler sortable">
 		<tr>
 			<th>{$tlImages.toggle_api_info}{$tlImages.sort_hint}{$labels.th_name}</th>
 			<th class="{$noSortableColumnClass}">{$labels.th_notes}</th>

Modified: trunk/testlink/gui/templates/requirements/inc_btn_reqSpecView.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/inc_btn_reqSpecView.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/inc_btn_reqSpecView.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,20 +1,19 @@
 {* 
 TestLink Open Source Project - http://testlink.sourceforge.net/
-$Id: inc_btn_reqSpecView.tpl,v 1.22 2010/10/28 13:32:28 mx-julian Exp $
+ at fielsource inc_btn_reqSpecView.tpl
 
-rev:
-     20101028 - asimon - BUGID 3954: added contribution by Vincent to freeze requirements
-     20101022 - eloff - BUGID 3918 - work on buttons
-     20101007 - asimon - BUGID 3866 - removed analyse button
-     20100326 - asimon - removed print button
-     20090321 - franciscom 
-     20080925 - franciscom - child requirements/folder management 
-     20080924 - franciscom - if req spec has no requirements then disable certain features
+ at internal revisions
+
+20110319 - franciscom - BUGID 4321: Requirement Spec - add option to print single Req Spec			
+20101028 - asimon - BUGID 3954: added contribution by Vincent to freeze requirements
+20101022 - eloff - BUGID 3918 - work on buttons
+20101007 - asimon - BUGID 3866 - removed analyse button
+20100326 - asimon - removed print button
 *}
 {lang_get var='labels'
           s='btn_req_create,btn_new_req_spec,btn_export_req_spec,
              req_select_create_tc,btn_import_req_spec,btn_import_reqs,
-             btn_export_reqs,btn_edit_spec,btn_delete_spec,
+             btn_export_reqs,btn_edit_spec,btn_delete_spec,btn_print_view,
              btn_show_direct_link,btn_copy_requirements,btn_copy_req_spec,
              req_spec_operations, req_operations, btn_freeze_req_spec'}
              
@@ -29,14 +28,13 @@
 			<input type="hidden" name="req_spec_id" value="{$gui->req_spec_id}" />
 			<input type="hidden" name="doAction" value="" />
 
-  		{if $gui->grants->req_mgmt == "yes"}
-            	{if $tlCfg->req_cfg->child_requirements_mgmt == $smarty.const.ENABLED}
-  	        <input type="button" name="btn_new_req_spec" 
-  	               value="{$labels.btn_new_req_spec}"
-		               onclick="location='{$req_spec_new_url}'" />  
-        	{/if}
+	{if $gui->grants->req_mgmt == "yes"}
+		{if $tlCfg->req_cfg->child_requirements_mgmt == $smarty.const.ENABLED}
+  	        <input type="button" name="btn_new_req_spec" value="{$labels.btn_new_req_spec}"
+		           onclick="location='{$req_spec_new_url}'" />  
+        {/if}
   		<input type="submit" name="edit_req_spec"  value="{$labels.btn_edit_spec}" 
-  	         onclick="doAction.value='edit'"/>
+			   onclick="doAction.value='edit'"/>
   		<input type="button" name="deleteSRS" value="{$labels.btn_delete_spec}"
   	       onclick="delete_confirmation({$gui->req_spec.id},'{$gui->req_spec.title|escape:'javascript'|escape}',
                                         '{$del_msgbox_title}','{$warning_msg}');"	/>
@@ -50,9 +48,11 @@
                    onclick="delete_confirmation({$gui->req_spec.id},'{$gui->req_spec.title|escape:'javascript'|escape}',
                    '{$freeze_msgbox_title|escape:'javascript'|escape}', '{$freeze_warning_msg|escape:'javascript'|escape}',
                    pF_freeze_req_spec);"	/>
+	{/if}
+	<input type="button" name="printerFriendly" value="{$labels.btn_print_view}"
+		   onclick="javascript:openPrintPreview('reqSpec',{$args_reqspec_id},-1,-1,
+		                                        'lib/requirements/reqSpecPrint.php');"/>
 
-  		{/if}
-
 		</fieldset>
 
 		<fieldset class="groupBtn">

Modified: trunk/testlink/gui/templates/requirements/reqCompareVersions.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/reqCompareVersions.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/reqCompareVersions.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -20,7 +20,8 @@
           btn_compare_selected_versions, context, show_all,author,timestamp,timestamp_lastchange,
           warning_context, warning_context_range, warning_empty_context,warning,custom_field, 
           warning_selected_versions, warning_same_selected_versions,revision,attribute,
-          custom_fields,attributes,log_message,use_html_code_comp,use_html_comp,diff_method"}
+          custom_fields,attributes,log_message,use_html_code_comp,use_html_comp,diff_method,
+          btn_cancel"}
 
 <link rel="stylesheet" type="text/css" href="{$basehref}third_party/diff/diff.css">
 <link rel="stylesheet" type="text/css" href="{$basehref}third_party/daisydiff/css/diff.css">
@@ -113,14 +114,14 @@
 		}
 	}
 	
-	if (!valButton(document.req_compare_versions.version_left)
-			|| !valButton(document.req_compare_versions.version_right)) {
+	if (!valButton(document.req_compare_versions.left_item_id)
+			|| !valButton(document.req_compare_versions.right_item_id)) {
 		alert_message(alert_box_title,warning_selected_versions);
 		return false;
 	}
 	
-	for (var i=document.req_compare_versions.version_left.length-1; i > -1; i--) {
-        if (document.req_compare_versions.version_left[i].checked && document.req_compare_versions.version_right[i].checked) {
+	for (var i=document.req_compare_versions.left_item_id.length-1; i > -1; i--) {
+        if (document.req_compare_versions.left_item_id[i].checked && document.req_compare_versions.right_item_id[i].checked) {
         	alert_message(alert_box_title,warning_same_selected_versions);
         	return false;
         }
@@ -202,7 +203,11 @@
 	<form target="diffwindow" method="post" action="lib/requirements/reqCompareVersions.php" name="req_compare_versions" id="req_compare_versions"  
 			onsubmit="return validateForm();" />			
 	
-	<p><input onClick="test();" type="submit" name="compare_selected_versions" value="{$labels.btn_compare_selected_versions}" /></p><br/>
+	<p>
+		<input type="submit" name="compare_selected_versions" value="{$labels.btn_compare_selected_versions}" />
+		<input type="button" name="cancel" value="{$labels.btn_cancel}" onclick="javascript:history.back();" />
+	</p>
+	<br/>
 	
 	<table border="0" cellspacing="0" cellpadding="2" style="font-size:small;" width="100%">
 	
@@ -250,8 +255,11 @@
 		<input type="checkbox" id="context_show_all" name="context_show_all" 
 		       onclick="triggerField(this.form.context);"/> {$labels.show_all} 	</td></tr></table>
 	
-	<p><input type="hidden" name="requirement_id" value="{$gui->req_id}" />
-	<input type="submit" name="compare_selected_versions" value="{$labels.btn_compare_selected_versions}" /></p>
+	<p>
+		<input type="hidden" name="requirement_id" value="{$gui->req_id}" />
+		<input type="submit" name="compare_selected_versions" value="{$labels.btn_compare_selected_versions}" />
+		<input type="button" name="cancel" value="{$labels.btn_cancel}" onclick="javascript:history.back();" />
+	</p>
 	
 	</form>
 

Modified: trunk/testlink/gui/templates/requirements/reqCopy.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/reqCopy.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/reqCopy.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -82,7 +82,7 @@
     {* used as memory for the check/uncheck all checkbox javascript logic *}
     <input type="hidden" name="add_value_memory"  id="add_value_memory"  value="0" />
 		<div id="checkbox_region">
-        <table class="simple">
+        <table class="simple_tableruler">
           <tr>
           <th class="clickable_icon">
 			         <img src="{$smarty.const.TL_THEME_IMG_DIR}/toggle_all.gif"

Modified: trunk/testlink/gui/templates/requirements/reqCreateTestCases.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/reqCreateTestCases.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/reqCreateTestCases.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -9,6 +9,10 @@
    20101111 - Julian - BUGID 4003 - Minor Improvements to table layout
    20100403 - francisco - adding #SCOPE_TRUNCATE#
    20091209 - asimon - contrib for testcase creation, BUGID 2996
+   20110314 - Julian - BUGID 4317 - Added Contribution from user frl for an easy
+                                    way to set amount of test cases to create to
+                                    the number of test cases still required to
+                                    fully cover the requirement(s)
 *}
 {assign var="req_module" value='lib/requirements/'}
 {assign var="cfg_section" value=$smarty.template|basename|replace:".tpl":"" }
@@ -18,7 +22,7 @@
 {lang_get var='labels' 
           s="req_doc_id,title,scope,coverage_number,expected_coverage,needed,warning,
              current_coverage,coverage,req_msg_norequirement,req_select_create_tc,
-             requirement,status,type"} 
+             requirement,status,type,toggle_create_testcase_amount"} 
 
 
 {include file="inc_head.tpl" openHead="yes"}
@@ -61,6 +65,37 @@
     return false; 
  }  
 }
+
+/* BUGID 4317 - CONTRIB FRL:
+  function:  cs_all_coverage_in_div (copied from cs_all_checkbox_in_div)
+	Change values of all text inputs with a id prefix with values from another (hidden) text with matching id on a div.
+	Note : IDs matching based equality of last part of inputs id (without prefixes)
+  args :
+	div_id: id of the div container of elements 
+	input_id_prefix: input text id prefix (for inputs to be fill)
+	default_id_prefix : input hidden id prefix (for inputs containing default values)
+	memory_id: id of hidden input used to hold old check value.
+   returns:  - 
+
+*/
+function cs_all_coverage_in_div(div_id, input_id_prefix, default_id_prefix, memory_id)
+{
+	var inputs = document.getElementById(div_id).getElementsByTagName('input');
+	var memory = document.getElementById(memory_id);
+
+	for(var idx = 0; idx < inputs.length; idx++)
+	{
+		// look for text input whose id starts with input_id_prefix
+		if(inputs[idx].type == "text" && (inputs[idx].id.indexOf(input_id_prefix)==0) )
+		{
+		// set the value to 1 (if coverage ignored) or default value (retrieved from hidden input with matching id)
+		inputs[idx].value = (memory.value == "1") ? "1" : document.getElementById(default_id_prefix+inputs[idx].id.substring(default_id_prefix.length)).value;
+		}	
+	} // for
+	// switch coverage_count flag value 
+	memory.value = (memory.value == "1") ? "0" : "1";
+}
+
 </script>
 {/literal}
 </head>
@@ -94,74 +129,84 @@
   {* ------------------------------------------------------------------------------------------ *}
   {if $gui->all_reqs ne ''}  
 
-     <div id="req_div"  style="margin:0px 0px 0px 0px;">
-        {* used as memory for the check/uncheck all checkbox javascript logic *}
-        <input type="hidden" name="toggle_req"  id="toggle_req"  value="0" />
-     
+	 <div id="req_div"  style="margin:0px 0px 0px 0px;">
+		{* used as memory for the check/uncheck all checkbox javascript logic *}
+		<input type="hidden" name="toggle_req"  id="toggle_req"  value="0" />
+		{* BUGID 4317 - CONTRIB FRL : add hidden field as memory to set/unset coverage_number with coverage values *}
+		<input type="hidden" name="tc_cov_set"  id="tc_cov_set"  value="0" />
+		{* BUGID 4317 - END CONTRIB FRL *}
 
-     <table class="simple" style="width:99%">
-    	 <tr>
-    		{if $gui->grants->req_mgmt == "yes"}
-    		<th style="width: 15px;">
-    						    <img src="{$smarty.const.TL_THEME_IMG_DIR}/toggle_all.gif" 
-                         onclick='cs_all_checkbox_in_div("req_div","req_id_cbox","toggle_req");'
-                         title="{lang_get s='check_uncheck_all_checkboxes'}" class="clickable"/></th>
-        {/if}
-    		
-    		<th>{$labels.requirement}</th>
-    		<th>{$labels.status}</th>
-    		<th>{$labels.type}</th>
-    		
-    		{* contribution for testcase creation, BUGID 2996 *}
-    		<th>{$labels.coverage_number}</th>
-    		{if $gui->req_cfg->expected_coverage_management}
-  				<th>{$labels.needed}</th>
-  			{/if}
-  			<th>{$labels.current_coverage}</th>
-  			<th>{$labels.coverage}</th>
-    		
-    	 </tr>
-    	{section name=row loop=$gui->all_reqs}
-    	<tr>
-    	  {* 20060110 - fm - managing checkboxes as array and added value *}
-    		{if $gui->grants->req_mgmt == "yes"}
-    		<td style="padding:2px;"><input type="checkbox" id="req_id_cbox{$gui->all_reqs[row].id}"
-    		           name="req_id_cbox[{$gui->all_reqs[row].id}]" 
-    		                                           value="{$gui->all_reqs[row].id}"/></td>{/if}
-    		<td style="padding:2px;">
-    			<span onclick="javascript: openLinkedReqWindow({$gui->all_reqs[row].id});"
-      			      style="cursor:  pointer;  color: #059;" >
+	 <table class="simple_tableruler">
+	<tr>
+		{if $gui->grants->req_mgmt == "yes"}
+			<th style="width: 15px;">
+				<img src="{$smarty.const.TL_THEME_IMG_DIR}/toggle_all.gif" 
+					onclick='cs_all_checkbox_in_div("req_div","req_id_cbox","toggle_req");'
+					title="{lang_get s='check_uncheck_all_checkboxes'}" class="clickable"/></th>
+		{/if}
+		<th>{$labels.requirement}</th>
+		<th>{$labels.status}</th>
+		<th>{$labels.type}</th>
+			
+		{* contribution for testcase creation, BUGID 2996 *}
+		{* BUGID 4317 - CONTRIB FRL : add toogle to set/unset coverage_number with coverage values *}
+		<th>{$labels.coverage_number}
+			{if $gui->req_cfg->expected_coverage_management}
+				<img src="{$smarty.const.TL_THEME_IMG_DIR}/insert_step.png" width="12" height="12"
+					onclick='cs_all_coverage_in_div("req_div","testcase_count","coverage_count","tc_cov_set");'
+					title="{lang_get s='toggle_create_testcase_amount'}" class="clickable"/></th>
+			<th>{$labels.needed}
+		{/if}</th>
+		{* BUGID 4317 - END CONTRIB FRL : add toogle to set/unset coverage_number with coverage values *}
+		<th>{$labels.current_coverage}</th>
+		<th>{$labels.coverage}</th>
+			
+	</tr>
+	{section name=row loop=$gui->all_reqs}
+	<tr>
+		{* 20060110 - fm - managing checkboxes as array and added value *}
+			{if $gui->grants->req_mgmt == "yes"}
+			<td style="padding:2px;"><input type="checkbox" id="req_id_cbox{$gui->all_reqs[row].id}"
+					   name="req_id_cbox[{$gui->all_reqs[row].id}]" 
+													   value="{$gui->all_reqs[row].id}"/></td>{/if}
+			<td style="padding:2px;">
+				<span onclick="javascript: openLinkedReqWindow({$gui->all_reqs[row].id});"
+					  style="cursor:  pointer;  color: #059;" >
 					{$gui->all_reqs[row].req_doc_id|escape} : {$gui->all_reqs[row].title|escape}
 				</span>
 			</td>
-    		{assign var="req_status" value=$gui->all_reqs[row].status }
-    		<td style="padding:2px;">{$gui->reqStatusDomain.$req_status|escape}</td>
-    		{assign var="req_type" value=$gui->all_reqs[row].type }
-    		<td style="padding:2px;">{$gui->reqTypeDomain.$req_type|escape}</td>
-    		<td style="padding:2px;"><input name="testcase_count[{$gui->all_reqs[row].id}]" type="text" size="3" maxlength="3" value="1"></td>
-    		{if $gui->req_cfg->expected_coverage_management}
-  				<td align="center" style="padding:2px;">{$gui->all_reqs[row].expected_coverage}</td>
-    		{/if}  	
-    		<td align="center" style="padding:2px;">{$gui->all_reqs[row].coverage}</td>
-    		<td align="center" style="padding:2px;">{$gui->all_reqs[row].coverage_percent}%</td>
-    		
-    	</tr>
-    	{sectionelse}
-    	<tr><td></td><td><span class="bold">{$labels.req_msg_norequirement}</span></td></tr>
-    	{/section}
-     </table>
-     </div>
-     {* ------------------------------------------------------------------------------------------ *}
-    
-     {* ------------------------------------------------------------------------------------------ *}
-     {if $gui->grants->req_mgmt == "yes"}
-      <div class="groupBtn">
-       <input type="submit" name="create_tc_from_req" value="{$labels.req_select_create_tc}" 
-              onclick="return check_action_precondition('frmReqList','create','{$check_msg}');"/>
-      </div>
-     {/if}
-     {* ------------------------------------------------------------------------------------------ *}
-    
+			{assign var="req_status" value=$gui->all_reqs[row].status }
+			<td style="padding:2px;">{$gui->reqStatusDomain.$req_status|escape}</td>
+			{assign var="req_type" value=$gui->all_reqs[row].type }
+			<td style="padding:2px;">{$gui->reqTypeDomain.$req_type|escape}</td>
+			<td style="padding:2px;"><input name="testcase_count[{$gui->all_reqs[row].id}]" id="testcase_count{$gui->all_reqs[row].id}" type="text" size="3" maxlength="3" value="1"></td>
+			{if $gui->req_cfg->expected_coverage_management}
+				{* BUGID 4317 - CONTRIB FRL : add hidden field to store coverage_count with coverage values *}
+				<td align="center" style="padding:2px;">{$gui->all_reqs[row].expected_coverage}
+				<input name="coverage_count[{$gui->all_reqs[row].id}]" id="coverage_count{$gui->all_reqs[row].id}" type="hidden"
+					value="{if $gui->all_reqs[row].expected_coverage >=  $gui->all_reqs[row].coverage}{$gui->all_reqs[row].expected_coverage-$gui->all_reqs[row].coverage}{else}0{/if}"></td>
+				{* BUGID 4317 - END CONTRIB FRL *}
+			{/if}  	
+			<td align="center" style="padding:2px;">{$gui->all_reqs[row].coverage}</td>
+			<td align="center" style="padding:2px;">{$gui->all_reqs[row].coverage_percent}%</td>
+			
+		</tr>
+		{sectionelse}
+		<tr><td></td><td><span class="bold">{$labels.req_msg_norequirement}</span></td></tr>
+		{/section}
+	 </table>
+	 </div>
+	 {* ------------------------------------------------------------------------------------------ *}
+	
+	 {* ------------------------------------------------------------------------------------------ *}
+	 {if $gui->grants->req_mgmt == "yes"}
+	  <div class="groupBtn">
+	   <input type="submit" name="create_tc_from_req" value="{$labels.req_select_create_tc}" 
+			  onclick="return check_action_precondition('frmReqList','create','{$check_msg}');"/>
+	  </div>
+	 {/if}
+	 {* ------------------------------------------------------------------------------------------ *}
+	
   {/if}  
   {* ------------------------------------------------------------------------------------------ *}
 </form>

Modified: trunk/testlink/gui/templates/requirements/reqEdit.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/reqEdit.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/reqEdit.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,6 +3,8 @@
 $Id: reqEdit.tpl,v 1.33.2.7 2011/01/14 14:39:04 asimon83 Exp $
 Purpose: smarty template - create / edit a req  
 internal revision
+20110607 - Julian - BUGID 3953: Checkbox to decide whether to create another requirement or not
+20110304 - asimon - added help icon with a description of some of the "new" features
 20110114 - asimon - simplified checking for editor type by usage of $gui->editorType
 20110110 - Julian - BUGID 4153: Warning message when navigating away from changed requirement without saving
 20110106 - Julian - BUGID 4152: do not set focus on req doc id if log message window is shown
@@ -28,7 +30,7 @@
              warning_empty_reqdoc_id,expected_coverage,warning_empty_req_title,
              insert_last_req_doc_id,suggest_create_revision,revision_log_title,
              please_add_revision_log,suggest_create_revision_html,warning_suggest_create_revision,
-             warning_unsaved'}
+             warning_unsaved,stay_here_req'}
              
 {assign var="cfg_section" value=$smarty.template|basename|replace:".tpl":"" }
 {config_load file="input_dimensions.conf" section=$cfg_section}
@@ -268,6 +270,7 @@
 	{if $gui->action_descr != ''}
 		{$tlCfg->gui_title_separator_2}{$gui->action_descr|escape}
 	{/if}
+	{include file="inc_help.tpl" helptopic="hlp_req_edit" show_help_icon=true}
 </h1>
 
 {include file="inc_update.tpl" user_feedback=$gui->user_feedback}
@@ -296,6 +299,13 @@
 		<input type="button" name="go_back" value="{$labels.cancel}" 
 			onclick="javascript: show_modified_warning = false; history.back();"/>
 	</div>
+	{* BUGID 3953 - Only show checkbox to create another requirement on req creation *}
+	{if $gui->doAction == 'create' || $gui->doAction == 'doCreate'}
+	<div class="groupBtn">
+	<input type="checkbox" id="stay_here"  name="stay_here" 
+	       {if $gui->stay_here} checked="checked" {/if}/>{$labels.stay_here_req}
+	</div>
+	{/if}
 	<br />
 	
   	<div class="labelHolder"><label for="reqDocId">{$labels.req_doc_id}</label>

Modified: trunk/testlink/gui/templates/requirements/reqSpecEdit.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/reqSpecEdit.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/reqSpecEdit.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -4,6 +4,7 @@
 Purpose: smarty template - create a new req document
 
 rev:
+  20110304 - asimon - added help icon with a description of some of the "new" features
   20110114 - asimon - simplified checking for editor type by usage of $gui->editorType
   20110111 - Julian - Added Save, Cancel Button on top of the page
   20110110 - Julian - BUGID 4154: Warning message when navigating away from changed requirement
@@ -83,7 +84,7 @@
 <body>
 <h1 class="title">
 	{if $gui->action_descr != ''}{$gui->action_descr|escape}{/if} {$gui->main_descr|escape}
-	{include file="inc_help.tpl" helptopic="hlp_requirementsCoverage" show_help_icon=true}
+	{include file="inc_help.tpl" helptopic="hlp_req_spec_edit" show_help_icon=true}
 </h1>
 
 {include file="inc_update.tpl" user_feedback=$gui->user_feedback}

Modified: trunk/testlink/gui/templates/requirements/reqSpecView.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/reqSpecView.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/reqSpecView.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,23 +1,27 @@
-{* TestLink Open Source Project - http://testlink.sourceforge.net/ *}
-{* $Id: reqSpecView.tpl,v 1.45 2010/10/28 12:44:03 asimon83 Exp $ *}
-{*
-   Purpose: view a requirement specification
-   Author: Martin Havlat
+{* 
+TestLink Open Source Project - http://testlink.sourceforge.net/
 
-   rev:
-        20101028 - asimon - BUGID 3954: added contribution by Vincent to freeze all requirements
-                                        inside a req spec (recursively)
-        20101017 - franciscom - image access refactored (tlImages)
-        20101008 - asimon - BUGID 3311
-        20101006 - asimon - BUGID 3854
-        20100810 - asimon - BUGID 3317: disabled total count of requirements by default
-        20100321 - franciscom - req_spec_import/export url
-        20071226 - franciscom - fieldset class added (thanks ext je team)
-        20071106 - franciscom - added ext js library
-        20070102 - franciscom - added javascript validation of checked requirements
+Purpose: view a requirement specification
+
+ at filesource reqSpecView.tpl
+ at author: Martin Havlat
+
+ at internal revisions
+
+20101028 - asimon - BUGID 3954: added contribution by Vincent to freeze all requirements
+                                inside a req spec (recursively)
+20101017 - franciscom - image access refactored (tlImages)
+20101008 - asimon - BUGID 3311
+20101006 - asimon - BUGID 3854
+20100810 - asimon - BUGID 3317: disabled total count of requirements by default
+20100321 - franciscom - req_spec_import/export url
+20071226 - franciscom - fieldset class added (thanks ext je team)
+20071106 - franciscom - added ext js library
+20070102 - franciscom - added javascript validation of checked requirements
 *}
+
 {lang_get var="labels" s="type_not_configured,type,scope,req_total,by,title,
-							            title_last_mod,title_created,no_records_found"}
+						  title_last_mod,title_created,no_records_found"}
 
 {assign var="cfg_section" value=$smarty.template|basename|replace:".tpl":"" }
 {config_load file="input_dimensions.conf" section=$cfg_section}
@@ -106,8 +110,8 @@
 {if $gui->req_spec.id}
 {* end contribution by asimon *}
 	
-{include file="$buttons_template"}
-<table class="simple" style="width: 90%">
+{include file="$buttons_template" args_reqspec_id=$reqSpecID}
+<table class="simple">
 	<tr>
 		<th>{$gui->main_descr|escape}</th>
 	</tr>

Modified: trunk/testlink/gui/templates/requirements/reqTcAssign.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/reqTcAssign.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/reqTcAssign.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -81,7 +81,7 @@
                             id="memory_assigned_req"  value="0" />
 
     <input type="hidden" name="idSRS" value="{$gui->selectedReqSpec}" />
-    <table class="simple">
+    <table class="simple_tableruler">
     	<tr>
       		<th align="center"  style="width: 5px;background-color:#005498;">
       		    <img src="{$smarty.const.TL_THEME_IMG_DIR}/toggle_all.gif"
@@ -130,7 +130,7 @@
                             id="memory_free_req"  value="0" />
 
       <input type="hidden" name="idSRS" value="{$gui->selectedReqSpec}" />
-      <table class="simple">
+      <table class="simple_tableruler">
       	<tr>
       		<th align="center"  style="width: 5px;background-color:#005498;">
       		    <img src="{$smarty.const.TL_THEME_IMG_DIR}/toggle_all.gif"

Modified: trunk/testlink/gui/templates/requirements/reqTcBulkAssignment.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/reqTcBulkAssignment.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/reqTcBulkAssignment.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -80,7 +80,7 @@
                                   id="memory_assigned_req"  value="0" />
           
           <input type="hidden" name="idSRS" value="{$gui->selectedReqSpec}" />
-          <table class="simple">
+          <table class="simple_tableruler">
           	<tr>
             		<th align="center"  style="width: 5px;background-color:#005498;">
             		    <img src="{$smarty.const.TL_THEME_IMG_DIR}/toggle_all.gif"

Modified: trunk/testlink/gui/templates/requirements/reqViewRevisionRO.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/reqViewRevisionRO.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/reqViewRevisionRO.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -5,6 +5,7 @@
          READ ONLY
 
 rev:
+  20110309 - Julian - removed duplicate title
   20101128 - franciscom - BUGID 
 *}
 {lang_get var='labels' 
@@ -26,9 +27,6 @@
 <h1 class="title">{$gui->main_descr|escape}</h1>
 <div class="workBack">
 
-{if !$gui->show_title }
-  {$gui->item.req_doc_id|escape}:{$gui->item.title|escape}</h2>
-{/if}
 {include file="$this_template_dir/reqViewRevisionViewer.tpl" 
          args_req=$gui->item 
          args_gui=$gui

Modified: trunk/testlink/gui/templates/requirements/reqViewRevisionViewer.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/reqViewRevisionViewer.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/reqViewRevisionViewer.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -4,6 +4,7 @@
 viewer for requirement
 
 rev:
+20110308 - asimon - BUGID 4273: printing of single requirement
 20101127 - franciscom - BUGID 4056: Requirement Revisioning
 *}
 {lang_get var="labels"
@@ -11,7 +12,7 @@
              coverage,btn_delete,btn_cp,btn_edit,btn_del_this_version,btn_new_version,
              btn_del_this_version, btn_freeze_this_version, version, can_not_edit_req,
              testproject,title_last_mod,title_created,by,btn_compare_versions,showing_version,
-             btn_revisions,revision"}
+             btn_revisions,revision,btn_print_view"}
 
              
 {if $args_show_title }
@@ -25,6 +26,14 @@
 {/if}
 {assign var="warning_edit_msg" value=""}
 
+{* BUGID 4273: Option to print single requirement *}
+<div>
+	<form method="post" action="" name="reqPrinterFriendly">
+		<input type="button" name="printerFriendly" value="{$labels.btn_print_view}"
+		       onclick="javascript:openPrintPreview('req',{$args_req.id},{$args_req.version_id},
+		                                          {$args_req.revision},'lib/requirements/reqPrint.php');"/>
+	</form>
+</div>
 
 {* <div class="messages" align="center">{$labels.showing_version} {$args_req.version}</div> *}
 

Modified: trunk/testlink/gui/templates/requirements/reqViewVersions.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/reqViewVersions.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/reqViewVersions.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -5,6 +5,10 @@
          Based on work tcViewer.tpl
 
 rev:
+  20110602 - franciscom - TICKET 4536: Tree is not refreshed after editing Requirement
+  20110530 - asimon - BUGID 4298: added functionality for direct links to open specific requirement versions
+  20110525 - Julian - BUGID 4497 - show version and revision also for "Other versions"
+  20110304 - asimon - added help icon with a description of some of the "new" features
   20101212 - franciscom - BUGID 4056: Requirement Revisioning
   20101026 - franciscom - BUGID 3927: Requirement can not be deleted due to JS error -> label has to be escaped
   20101017 - franciscom - image access refactored (tlImages)
@@ -26,7 +30,7 @@
              relation_set_by, relation_delete, relations, new_relation, by, title_created,
              relation_destination_doc_id, in, btn_add, img_title_delete_relation, current_req,
              no_records_found,other_versions,version,title_test_case,match_count,warning,
-             revision_log_title,please_add_revision_log,commit_title'}
+             revision_log_title,please_add_revision_log,commit_title,current_direct_link,specific_direct_link'}
 
 
 {include file="inc_head.tpl" openHead='yes' jsValidate="yes"}
@@ -177,6 +181,7 @@
 <body onLoad="viewElement(document.getElementById('other_versions'),false);{$gui->bodyOnLoad}" onUnload="{$gui->bodyOnUnload}">
 {* fixed a little bug, here $gui->pageTitle was called instead of $gui->main_descr *}
 <h1 class="title">{$gui->main_descr|escape}{if isset($gui->show_match_count)} - {$labels.match_count}: {$gui->match_count}{/if}
+    {include file="inc_help.tpl" helptopic="hlp_req_view" show_help_icon=true}
 </h1>
 {if !isset($refresh_tree) }
   {assign var="refresh_tree" value=false}
@@ -213,7 +218,10 @@
     {if !$gui->show_title }
 	    {$gui->current_version[idx][0].req_doc_id|escape}:{$gui->current_version[idx][0].title|escape}</h2>
     {/if}
-    <div class="direct_link" style='display:none'><a href="{$gui->direct_link}" target="_blank">{$gui->direct_link}</a></div>
+    <div class="direct_link" style='display:none'>
+    <a href="{$gui->direct_link}" target="_blank">{$labels.current_direct_link}</a><br/>
+    <a href="{$gui->direct_link}&version={$gui->current_version[idx][0].version}" target="_blank">{$labels.specific_direct_link}</a><br/>
+    </div>
     
 		{include file="$this_template_dir/reqViewVersionsViewer.tpl" 
 		         args_req_coverage=$gui->req_coverage
@@ -228,9 +236,8 @@
 		         args_show_title=$gui->show_title
 		         args_cf=$gui->cfields_current_version[idx] 
 		         args_tproject_name=$gui->tproject_name
-		         args_reqspec_name=$gui->current_version[idx][0]['req_spec_title']}
+		         args_reqspec_name=$gui->current_version[idx][0]['req_spec_title']}		
 		
-		
 		{assign var="downloadOnly" value=false}
 		{if $gui->grants->req_mgmt != 'yes'}
 			{assign var="downloadOnly" value=true}
@@ -400,8 +407,8 @@
                        args_can_delete_req=false
                        args_can_delete_version=true
                        args_frozen_version=$frozen_version
-                       args_show_version=false 
-                       args_show_title=false
+                       args_show_version=true 
+                       args_show_title=true
                        args_cf=$gui->cfields_other_versions[idx][$rdx]}
   	         </div>
   	         <br />
@@ -429,6 +436,10 @@
 	{$labels.no_records_found}
 {/if}
 
+{* TICKET 4536: Tree is not refreshed after editing Requirement *}
+{if isset($gui->refreshTree) && $gui->refreshTree}
+	{include file="inc_refreshTreeWithFilters.tpl"}
+{/if}
 </div>
 </body>
 </html>

Modified: trunk/testlink/gui/templates/requirements/reqViewVersionsViewer.tpl
===================================================================
--- trunk/testlink/gui/templates/requirements/reqViewVersionsViewer.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/requirements/reqViewVersionsViewer.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -4,6 +4,8 @@
 viewer for requirement
 
 rev:
+20110530 - asimon - BUGID 4298: added functionality for direct links to open specific requirement versions
+20110308 - asimon - BUGID 4273: backported printing of single req from master
 20101127 - franciscom - BUGID 4056: Requirement Revisioning
 20101119 - asimon - BUGID 4038: clicking requirement link does not open req version
 20101111 - asimon - replaced openTCaseWindow() by openTCEditWindow() to save popup size
@@ -13,7 +15,7 @@
              coverage,btn_delete,btn_cp,btn_edit,btn_del_this_version,btn_new_version,
              btn_del_this_version, btn_freeze_this_version, version, can_not_edit_req,
              testproject,title_last_mod,title_created,by,btn_compare_versions,showing_version,
-             revision,btn_view_history,btn_new_revision,"}
+             revision,btn_view_history,btn_new_revision,btn_print_view,specific_direct_link"}
 
              
 {assign var="hrefReqSpecMgmt" value="lib/general/frmWorkArea.php?feature=reqSpecMgmt"}
@@ -27,20 +29,22 @@
 {assign var="req_version_id" value=$args_req.version_id}
 
 {if $args_show_title }
-    {if $args_tproject_name != ''}
+    {if isset($args_tproject_name) && $args_tproject_name != ''}
      <h2>{$labels.testproject} {$args_tproject_name|escape} </h2>
     {/if}
     {if $args_req_spec_name != ''}
      <h2>{$labels.req_spec} {$args_req_spec_name|escape} </h2>
     {/if}
-	  <h2>{$labels.title_test_case} {$args_req.title|escape} </h2>
+	  <h2>{$tlImages.toggle_direct_link}   {$labels.title_test_case} {$args_req.title|escape} </h2>
+	  <div class="direct_link" style='display:none'>
+		  <a href="{$gui->direct_link}&version={$args_req.version}" target="_blank">{$labels.specific_direct_link}</a><br/>
+	  </div>
 {/if}
 {assign var="warning_edit_msg" value=""}
 
+<div style="display: inline;" class="groupBtn">
 {if $args_grants->req_mgmt == "yes"}
-  <div class="groupBtn">
-  <div style="margin-bottom: 5px;">
-	  <form id="reqViewF_{$req_version_id}" name="reqViewF_{$req_version_id}" 
+	  <form style="display: inline;" id="reqViewF_{$req_version_id}" name="reqViewF_{$req_version_id}" 
 	        action="lib/requirements/reqEdit.php" method="post">
 	  	<input type="hidden" name="requirement_id" value="{$args_req.id}" />
 	  	<input type="hidden" name="req_version_id" value="{$args_req.version_id}" />
@@ -86,19 +90,24 @@
 	  	<input type="button" name="new_version" id="new_version" value="{$labels.btn_new_version}" 
 	  	       onclick="doAction.value='doCreateVersion';javascript:ask4log('reqViewF','log_message','{$req_version_id}');"/>
 	  </form>
-	</div>
+{/if}
 	
-	<div>
 	{* compare versions *}
 	{if $gui->req_has_history}
-		<form method="post" action="lib/requirements/reqCompareVersions.php" name="version_compare">
+	<form style="display: inline;" method="post" action="lib/requirements/reqCompareVersions.php" name="version_compare">
 			<input type="hidden" name="requirement_id" value="{$args_req.id}" />
 			<input type="submit" name="compare_versions" value="{$labels.btn_view_history}" />
 		</form>
 	{/if}
 
+{* BUGID 4273: Option to print single requirement *}
+<form style="display: inline;" method="post" action="" name="reqPrinterFriendly">
+	<input type="button" name="printerFriendly" value="{$labels.btn_print_view}" 
+	       onclick="javascript:openPrintPreview('req',{$args_req.id},{$args_req.version_id},
+		                                          {$args_req.revision},'lib/requirements/reqPrint.php');"/>
+</form>
   </div> {* class="groupBtn" *}
-{/if}
+<br/><br/>
 
 {* warning message when req is frozen *}
 {if $args_frozen_version neq null}
@@ -112,13 +121,7 @@
 {/if}
 
 <table class="simple">
-  {if $args_show_title}
 	<tr>
-		<th colspan="2">
-		{$args_req.req_doc_id}{$smarty.const.TITLE_SEP}{$args_req.title|escape}</th>
-	</tr>
-  {/if}
-	<tr>
     <th>{$args_req.req_doc_id|escape}{$tlCfg->gui_title_separator_1}{$args_req.title|escape}</th>
 	</tr>
 

Modified: trunk/testlink/gui/templates/results/inc_results_show_table.tpl
===================================================================
--- trunk/testlink/gui/templates/results/inc_results_show_table.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/results/inc_results_show_table.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -10,7 +10,7 @@
 {if $args_column_definition != ""}
 
 <h2>{$args_title|escape}</h2>
-<table class="simple" style="width: 100%; text-align: center; margin-left: 0px;">
+<table class="simple_tableruler sortable" style="text-align: center; margin-left: 0px;">
 	<tr>
 		<th>{$args_first_column_header|escape}</th>
 		<th>{lang_get s='trep_total'}</th>

Modified: trunk/testlink/gui/templates/results/metricsDashboard.tpl
===================================================================
--- trunk/testlink/gui/templates/results/metricsDashboard.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/results/metricsDashboard.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -4,6 +4,7 @@
  Purpose: smarty template - main page / site map                 
 
  rev:
+  20110303 - Julian - added more information to test project report
   20101014 - Julian - BUGID 3893 - Extended metrics dashboard
   20101012 - Julian - show "show metrics only for active test plans" checkbox even if there is no resultset. 
                       This is required if there are no active test plans at all
@@ -13,29 +14,30 @@
 *}
 {lang_get var="labels"
           s="generated_by_TestLink_on,testproject,test_plan,platform,show_only_active,
-             info_metrics_dashboard,test_plan_progress,project_progress"}
+             info_metrics_dashboard,test_plan_progress,project_progress, info_metrics_dashboard_progress"}
 {include file="inc_head.tpl" openHead='yes'}
+{include file="inc_ext_js.tpl" bResetEXTCss=1}
 {foreach from=$gui->tableSet key=idx item=matrix name="initializer"}
   {assign var=tableID value=$matrix->tableID}
   {if $smarty.foreach.initializer.first}
     {$matrix->renderCommonGlobals()}
     {if $matrix instanceof tlExtTable}
-        {include file="inc_ext_js.tpl" bResetEXTCss=1}
         {include file="inc_ext_table.tpl"}
     {/if}
   {/if}
   {$matrix->renderHeadSection()}
 {/foreach}
 
+{assign var=tplan_metric value=$gui->tplan_metrics}
 <script type="text/javascript">
 Ext.onReady(function() {ldelim}
 	{foreach key=key item=value from=$gui->project_metrics}
     new Ext.ProgressBar({ldelim}
-        text:'  {lang_get s=$key}: {$value} %',
+        text:'  {lang_get s=$value.label_key}: {$value.value}% [{$tplan_metric.total.$key}/{$tplan_metric.total.active}]',
         width:'400',
         cls:'left-align',
         renderTo:'{$key}',
-        value:'{$value/100}'
+        value:'{$value.value/100}'
     {rdelim});
     {/foreach}
 {rdelim});
@@ -61,11 +63,14 @@
 	<br>
 	{foreach from=$gui->project_metrics key=key item=metric}
 		<div id="{$key}"></div>
-		{if $key == "progress_absolute"}
+		{if $key == "executed"}
 		<br />
 		{/if}
 	{/foreach}
 	<br />
+	<p class="italic">{$labels.info_metrics_dashboard_progress}</p>
+	<br />
+	
 	<h2>{$labels.test_plan_progress}</h2>
 	<br />
 	{foreach from=$gui->tableSet key=idx item=matrix}

Modified: trunk/testlink/gui/templates/results/printDocOptions.tpl
===================================================================
--- trunk/testlink/gui/templates/results/printDocOptions.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/results/printDocOptions.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,9 +1,10 @@
 {* 
 TestLink Open Source Project - http://testlink.sourceforge.net/ 
-$Id: printDocOptions.tpl,v 1.20 2010/11/06 18:46:33 amkhullar Exp $ 
+$Id: printDocOptions.tpl,v 1.20.2.2 2011/02/11 10:54:40 mx-julian Exp $ 
 Purpose: show tree on print feature
 
-rev: 
+rev:
+	20110211 - Julian - BUGID 4199 - tree div has to be named different than the tree variable
 	20101106 - amitkhullar - BUGID 2738: Contribution: option to include TC Exec notes in test report
 	20101027 - asimon - BUGID 3946: reqirement specification tree size
 	20080820 - franciscom - added code to manage EXTJS tree component
@@ -19,41 +20,36 @@
 {if $gui->ajaxTree->loadFromChildren}
     {literal}
     <script type="text/javascript">
-    <!--
-    treeCfg = {tree_div_id:'tree',root_name:"",root_id:0,root_href:"",
+    treeCfg = {tree_div_id:'tree_div',root_name:"",root_id:0,root_href:"",
                loader:"", enableDD:false, dragDropBackEndUrl:'',children:""};
-    //-->
     </script>
     {/literal}
     
     <script type="text/javascript">
-    <!--
 	    treeCfg.root_name = '{$gui->ajaxTree->root_node->name|escape:'javascript'}';
 	    treeCfg.root_id = {$gui->ajaxTree->root_node->id};
 	    treeCfg.root_href = '{$gui->ajaxTree->root_node->href}';
 	    treeCfg.children = {$gui->ajaxTree->children}
 	    treeCfg.cookiePrefix = '{$gui->ajaxTree->cookiePrefix}';
-    //-->
     </script>
 
     <script type="text/javascript" src='gui/javascript/execTree.js'></script>
 {else}
     {literal}
     <script type="text/javascript">
-    	treeCfg = {tree_div_id:'tree',root_name:"",root_id:0,root_href:"",
+    	treeCfg = {tree_div_id:'tree_div',root_name:"",root_id:0,root_href:"",
                loader:"", enableDD:false, dragDropBackEndUrl:''};
     </script>
     {/literal}
     
     <script type="text/javascript">
-    <!--
 		treeCfg.loader = '{$gui->ajaxTree->loader}';
 		treeCfg.root_name = '{$gui->ajaxTree->root_node->name|escape:'javascript'}';
 		treeCfg.root_id = {$gui->ajaxTree->root_node->id};
 		treeCfg.root_href = '{$gui->ajaxTree->root_node->href}';
 		treeCfg.enableDD = '{$gui->ajaxTree->dragDrop->enabled}';
 		treeCfg.dragDropBackEndUrl = '{$gui->ajaxTree->dragDrop->BackEndUrl}';
-    //-->
+		treeCfg.cookiePrefix = '{$gui->ajaxTree->cookiePrefix}';
     </script>
     <script type="text/javascript" src='gui/javascript/treebyloader.js'></script>
 {/if} 
@@ -101,7 +97,7 @@
 </form>
 </div>
 
-<div id="tree" style="overflow:auto; height:100%;border:1px solid #c3daf9;"></div>
+<div id="tree_div" style="overflow:auto; height:100%;border:1px solid #c3daf9;"></div>
 
 </body>
 </html>
\ No newline at end of file

Modified: trunk/testlink/gui/templates/results/resultsBugs.tpl
===================================================================
--- trunk/testlink/gui/templates/results/resultsBugs.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/results/resultsBugs.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -42,7 +42,7 @@
          arg_tproject_name=$gui->tproject_name arg_tplan_name=$gui->tplan_name}	
 
 {if $gui->warning_msg == ''}
-	<table class="simple" style="width: 100%; text-align: center; margin-left: 0px;">
+	<table class="simple" style="text-align: center; margin-left: 0px;">
 	     <tr>
 	         <th>{$labels.bugs_open}</th>
 	         <th>{$labels.bugs_resolved}</th>

Modified: trunk/testlink/gui/templates/results/resultsByTesterPerBuild.tpl
===================================================================
--- trunk/testlink/gui/templates/results/resultsByTesterPerBuild.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/results/resultsByTesterPerBuild.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,17 +1,17 @@
 {* 
- * TestLink Open Source Project - http://testlink.sourceforge.net/ 
- * $Id: resultsByTesterPerBuild.tpl,v 1.3 2010/10/19 13:48:38 asimon83 Exp $
- *
- * Lists results and progress by tester per build in a grouping ExtJS table.
- * 
- * revisions:
- * 20101019 - asimon - BUGID 3911: show warning message instead of table if table is empty
- * 20100731 - asimon - initial commit
- *
+  TestLink Open Source Project - http://testlink.sourceforge.net/ 
+  $Id: resultsByTesterPerBuild.tpl,v 1.3.2.2 2011/02/11 14:51:10 asimon83 Exp $
+ 
+  Lists results and progress by tester per build in a grouping ExtJS table.
+  
+  revisions:
+  20110211 - asimon - BUGID 4192: show only open builds by default
+  20101019 - asimon - BUGID 3911: show warning message instead of table if table is empty
+  20100731 - asimon - initial commit
  *}
  
 {lang_get var="labels"
-         s="generated_by_TestLink_on,hlp_results_by_tester_per_build_table"}
+         s="generated_by_TestLink_on,hlp_results_by_tester_per_build_table,show_closed_builds_btn"}
 
 {include file="inc_head.tpl" openHead="yes"}
 
@@ -35,6 +35,19 @@
 {include file="inc_result_tproject_tplan.tpl" 
          arg_tproject_name=$gui->tproject_name arg_tplan_name=$gui->tplan_name}
 
+{* BUGID 4192 *}
+<br /><p>
+<form method="post">
+	<input type="checkbox" name="show_closed_builds" value="show_closed_builds"
+		   {if $gui->show_closed_builds} checked="checked" {/if}
+		   onclick="this.form.submit();" /> {$labels.show_closed_builds_btn}
+	<input type="hidden"
+		   name="show_closed_builds_hidden"
+		   value="{$gui->show_closed_builds}" />
+</form>
+</p>
+<br />
+
 {* BUGID 3911: show warning message instead of table if table is empty *}
 {if $gui->warning_message == ''}
 	{foreach from=$gui->tableSet key=idx item=matrix}

Modified: trunk/testlink/gui/templates/results/resultsGeneral.tpl
===================================================================
--- trunk/testlink/gui/templates/results/resultsGeneral.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/results/resultsGeneral.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,17 +1,23 @@
 {* 
 TestLink Open Source Project - http://testlink.sourceforge.net/
-$Id: resultsGeneral.tpl,v 1.25.2.1 2010/12/25 10:28:07 franciscom Exp $
+
 Purpose: smarty template - show Test Results and Metrics
-Revisions:
-    20101018 - Julian - added info for milestone progress how percentage is calculated
-                      - BUGID 2236 - Milestones Report is broken
-                      - BUGID 2770 - Start date for milestones
-                      - "Test results according to test priorities" was not shown if
-                        test plan does not use platforms
-    20100811 - asimon - removed "results by assigned testers" table,
-                        was replaced by new report "results by tester per build"
-    20100722 - asimon - BUGID 3406, 1508 - overall build status,
-                        also replaced some unnecessary lang_get() calls by $labels-usage
+
+ at filesource	resultsGeneral.tpl
+ at internal revisions:
+20110405 - Julian - BUGID 4377 - Add percentage for "Results by top level Test Suites"
+20110326 - francisco - BUGID 4355: 	General Test Plan Metrics - 
+									Build without executed test cases are not displayed.
+
+20101018 - Julian - added info for milestone progress how percentage is calculated
+                  - BUGID 2236 - Milestones Report is broken
+                  - BUGID 2770 - Start date for milestones
+                  - "Test results according to test priorities" was not shown if
+                    test plan does not use platforms
+20100811 - asimon - removed "results by assigned testers" table,
+                    was replaced by new report "results by tester per build"
+20100722 - asimon - BUGID 3406, 1508 - overall build status,
+                    also replaced some unnecessary lang_get() calls by $labels-usage
 *}
 {lang_get var="labels"
      s='trep_kw,trep_owner,trep_comp,generated_by_TestLink_on, priority,
@@ -21,7 +27,10 @@
          title_report_tc_priorities,title_report_milestones,elapsed_seconds,
          title_metrics_x_build,title_res_by_platform,th_platform,important_notice,
          report_tcase_platorm_relationship, th_tc_total, th_completed, th_goal,
-         th_build, th_tc_assigned, th_perc_completed, from, until'}
+         th_build, th_tc_assigned, th_perc_completed, from, until,
+         info_res_by_top_level_suites, info_report_tc_priorities, info_res_by_platform,
+         info_report_milestones_prio, info_report_milestones_no_prio, info_res_by_kw,
+         info_gen_test_rep'}
 
 {include file="inc_head.tpl"}
 <body>
@@ -42,7 +51,8 @@
   	{* ----- results by builds -------------------------------------- *}
 	<h2>{$labels.title_metrics_x_build}</h1>
 
-	<table class="simple" style="width: 100%; text-align: center; margin-left: 0px;">
+	{if $gui->displayBuildMetrics}
+	<table class="simple_tableruler sortable" style="text-align: center; margin-left: 0px;">
   	<tr>
   		<th style="width: 10%;">{$labels.th_build}</th>
     	{* <th>{$labels.th_tc_total}</th> *}
@@ -71,9 +81,15 @@
 	  	{/if}
   	</tr>
 	{/foreach}
+	</table>
+	{/if}
 	
-	</table>
-
+	{* Display message explaining that only Active Builds with test cases *}
+	{* assigned to tester will be displayed *}
+	{if $gui->buildMetricsFeedback != ''}
+		<p class="italic">{$gui->buildMetricsFeedback|escape}</p>
+	{/if}
+	<br />
   	{* ----- results by test suites -------------------------------------- *}
 
   	{* by TestSuite *}
@@ -81,9 +97,14 @@
            args_title=$labels.title_res_by_top_level_suites
            args_first_column_header=$labels.trep_comp
            args_first_column_key='tsuite_name'
-           args_show_percentage=false
+           args_show_percentage=true
            args_column_definition=$gui->columnsDefinition->testsuites
            args_column_data=$gui->statistics->testsuites}
+           
+    {if $gui->columnsDefinition->testsuites != ""}
+  	  <p class="italic">{$labels.info_res_by_top_level_suites}</p>
+  	  <br />
+  	{/if}
 
   
   	{* by ASSIGNED Tester that is not the same that EFFECTIVE TESTER 
@@ -103,7 +124,13 @@
              args_show_percentage=true
              args_column_definition=$gui->columnsDefinition->platform
              args_column_data=$gui->statistics->platform}
+             
+      {if $gui->columnsDefinition->platform != ""}
+        <p class="italic">{$labels.info_res_by_platform}</p>
+        <br />
+      {/if}
     {/if}
+    
     {if $session['testprojectOptions']->testPriorityEnabled}
       {include file="results/inc_results_show_table.tpl"
              args_title=$labels.title_report_tc_priorities
@@ -112,6 +139,11 @@
              args_show_percentage=true
              args_column_definition=$gui->columnsDefinition->priorities
              args_column_data=$gui->statistics->priorities}
+             
+      {if $gui->columnsDefinition->priorities != ""}
+        <p class="italic">{$labels.info_report_tc_priorities}</p>
+        <br />
+      {/if}
     {/if}
   
   	{* Keywords 
@@ -125,6 +157,11 @@
            args_show_percentage=true
            args_column_definition=$gui->columnsDefinition->keywords
            args_column_data=$gui->statistics->keywords}
+           
+    {if $gui->columnsDefinition->keywords != ""}
+      <p class="italic">{$labels.info_res_by_kw}</p>
+      <br />
+    {/if}
 
 
   	{* ----- results by milestones / priorities -------------------------------------- *}
@@ -134,7 +171,7 @@
 
 			<h2>{$labels.title_report_milestones}</h2>
 
-			<table class="simple" style="width: 100%; text-align: center; margin-left: 0px;">
+			<table class="simple_tableruler sortable" style="text-align: center; margin-left: 0px;">
 			<tr>
 				<th>{$labels.th_milestone}</th>
 				<th>{$labels.th_tc_priority_high}</th>
@@ -168,13 +205,15 @@
   			</tr>
   			{/foreach}
 		</table>
+      <p class="italic">{$labels.info_report_milestones_prio}</p>
+      <br />
 
 	{/if}
 		
 	{elseif $gui->statistics->milestones != ""}
 		<h2>{$labels.title_report_milestones}</h2>
 
-		<table class="simple" style="width: 100%; text-align: center; margin-left: 0px;">
+		<table class="simple_tableruler sortable" style="text-align: center; margin-left: 0px;">
 		<tr>
 			<th>{$labels.th_milestone}</th>
 			<th>{$labels.th_tc_total}</th>
@@ -199,8 +238,11 @@
   		</tr>
   		{/foreach}
 		</table>
+      <p class="italic">{$labels.info_report_milestones_no_prio}</p>
+      <br />
 	{/if}
 	
+	<p class="italic">{$labels.info_gen_test_rep}</p>
 	<p>{$labels.generated_by_TestLink_on} {$smarty.now|date_format:$gsmarty_timestamp_format}</p>
 	<p>{$labels.elapsed_seconds} {$gui->elapsed_time}</p>
 

Modified: trunk/testlink/gui/templates/results/resultsMoreBuilds.tpl
===================================================================
--- trunk/testlink/gui/templates/results/resultsMoreBuilds.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/results/resultsMoreBuilds.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -35,7 +35,7 @@
 
 {if $gui->display->query_params}
 	<h2>{$labels.caption_user_selected_query_parameters}</h2>
-	<table class="simple" style="width: 100%; text-align:center; margin-left: 0px;" border="0">
+	<table class="simple" style="text-align:center; margin-left: 0px;" border="0">
 		<tr>
 			<th>{$labels.th_test_plan}</th>
 			<th>{$labels.th_builds}</th>
@@ -95,7 +95,7 @@
 
 
 {if $gui->display->totals}
-	<table class="simple" style="color: blue; width: 100%; text-align:center; margin-left: 0px;" border="0">
+	<table class="simple" style="color: blue; text-align:center; margin-left: 0px;" border="0">
 		<tr>
 		  {foreach item=l18n from=$gui->totals->labels}
 			<th>{$l18n}</th>
@@ -110,7 +110,7 @@
 {/if}
 
 	{if !$gui->display->suite_summaries}
-		<table class="simple sortable" style="color:blue; width: 100%; margin-left: 0px;" border="0">
+		<table class="simple sortable" style="color:blue; margin-left: 0px;" border="0">
 			<tr>
 				<th>{$tlImages.sort_hint}{$labels.th_test_case}</th>
 				{if $gui->showPlatforms}
@@ -164,7 +164,7 @@
 
 			{if $gui->display->suite_summaries}
 			<h2>{$suiteNameText}</h2>
-			<table class="simple" style="color:blue; width: 100%; text-align:center; margin-left: 0px;" border="0">
+			<table class="simple" style="color:blue; text-align:center; margin-left: 0px;" border="0">
 				<tr>
 				  {foreach  key=status item=figure  from=$gui->mapOfSuiteSummary[$currentSuiteId]}
               {if $status == 'total'} 
@@ -203,7 +203,7 @@
 			    	{* test to make sure there are test cases to diplay before  print table and headers *}
 			    	{if $gui->suiteList[$suiteId]}
 			    		{if $gui->display->suite_summaries}
-			    			<table class="simple sortable" style="width: 100%;margin-left: 0px;" border="0">
+			    			<table class="simple sortable" style="margin-left: 0px;" border="0">
 			    		{/if}
 			    
 			    		{if $gui->display->suite_summaries}

Modified: trunk/testlink/gui/templates/results/resultsMoreBuildsGUI.tpl
===================================================================
--- trunk/testlink/gui/templates/results/resultsMoreBuildsGUI.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/results/resultsMoreBuildsGUI.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -69,7 +69,7 @@
 <form action="lib/results/resultsMoreBuilds.php?report_type={$gui->report_type}" method="post">
   <input type="hidden" id="tplan_id" name="tplan_id" value="{$gui->tplan_id}" />
   <div>
-	<table class="simple" style="width: 100%; text-align: center; margin-left: 0px;">
+	<table class="simple" style="text-align: center; margin-left: 0px;">
 		<tr>
 			<th>{$labels.select_builds_header}</th>
 			<th>{$labels.select_components_header}</th>

Modified: trunk/testlink/gui/templates/results/resultsReqs.tpl
===================================================================
--- trunk/testlink/gui/templates/results/resultsReqs.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/results/resultsReqs.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,10 +1,14 @@
 {* 
 TestLink Open Source Project - http://testlink.sourceforge.net/
-$Id: resultsReqs.tpl,v 1.25 2010/10/07 13:27:59 asimon83 Exp $
+$Id: resultsReqs.tpl,v 1.25.2.1 2011/02/11 08:28:40 mx-julian Exp $
 Purpose: report REQ coverage 
 Author : Martin Havlat 
 
 rev:
+    20110207 - asimon - BUGID 4227 - Allow to choose status of requirements to be evaluated
+    20110207 - Julian - BUGID 4228 - Add more requirement evaluation states
+    20110207 - Julian - BUGID 4206 - Jump to latest execution for linked test cases
+    20110207 - Julian - BUGID 4205 - Add Progress bars for a quick overview
     20101007 - asimon - BUGID 3856: Requirement based report should regard platforms
     20100823 - asimon - replaced "onchange" in form by "onclick" to get
                         it working in IE too
@@ -17,23 +21,45 @@
     20090111 - franciscom - BUGID 1967 + Refactoring
 *}
 {lang_get var='labels'
-          s='title_result_req_testplan, show_only_finished_reqs, 
-          generated_by_TestLink_on, info_resultsReqs, platform'}
+          s='title_result_req_testplan, show_only_finished_reqs, caption_nav_settings,
+          generated_by_TestLink_on, info_resultsReqs, platform, status, btn_apply,
+          info_resultsReqsProgress, title_resultsReqsProgress, title_resultsReqs'}
 
 {include file="inc_head.tpl" openHead="yes"}
+{include file="inc_ext_js.tpl" bResetEXTCss=1}
 
 {foreach from=$gui->tableSet key=idx item=matrix name="initializer"}
 	{assign var=tableID value=table_$idx}
 	{if $smarty.foreach.initializer.first}
 		{$matrix->renderCommonGlobals()}
 		{if $matrix instanceof tlExtTable}
-			{include file="inc_ext_js.tpl" bResetEXTCss=1}
 			{include file="inc_ext_table.tpl"}
 		{/if}
 	{/if}
 	{$matrix->renderHeadSection($tableID)}
 {/foreach}
 
+{assign var=total_reqs value=$gui->total_reqs}
+
+<script type="text/javascript">
+Ext.onReady(function() {ldelim}
+	{foreach key=key item=value from=$gui->summary}
+	{assign var=label value=$value.label}
+	{assign var=count value=$value.count}
+	{* only show progress bar if at least 1 item exists for this status *}
+	{if $count != 0}
+	    new Ext.ProgressBar({ldelim}
+	        text:'  {$label}: {$count} of {$total_reqs}',
+	        width:'400',
+	        cls:'left-align',
+	        renderTo:'{$key}',
+	        value:'{$count/$total_reqs}'
+	    {rdelim});
+	{/if}
+    {/foreach}
+{rdelim});
+</script>
+
 </head>
 
 <body>
@@ -42,23 +68,60 @@
 
 <div class="workBack" style="overflow-y: auto;">
 
+<h2 class="title">{$labels.caption_nav_settings}</h2>
+<br />
 <p><form method="post">
-{if $gui->platforms}
-{* BUGID 3856 *}
-{$labels.platform} <select name="platform" onchange="this.form.submit()">
-	{html_options options=$gui->platforms
-	              selected=$gui->selected_platform}
-</select><br/>
-{/if}
-<input type="checkbox" name="show_only_finished" value="show_only_finished"
-       {if $gui->show_only_finished} checked="checked" {/if}
-       onclick="this.form.submit();" /> {$labels.show_only_finished_reqs}
-<input type="hidden"
-       name="show_only_finished_hidden"
-       value="{$gui->show_only_finished}" />
+<table>
+	{if $gui->platforms}
+	<tr>
+		<td>
+		{* BUGID 3856 *}
+		{$labels.platform}
+		</td>
+		<td>
+		<select name="platform" onchange="this.form.submit()">
+		{html_options options=$gui->platforms
+		              selected=$gui->selected_platform}
+		</select>
+		</td>
+	</tr>
+	{/if}
+	<tr>
+		<td>{$labels.status}</td>
+		<td> <select id="states_to_show" 
+	                         name="states_to_show[]"
+	                         multiple="multiple"
+	                         size="4" >
+			{html_options options=$gui->states_to_show->items
+			              selected=$gui->states_to_show->selected}
+							</select>
+		</td>
+	</tr>
+	<tr>
+		<td>
+			<input type="submit"
+			       name="send_states_to_show"
+			       value="{$labels.btn_apply}" />       
+		</td>
+	</tr>
+</table>
 </form></p><br/>
 
 {if $gui->warning_msg == ''}
+
+	<h2>{$labels.title_resultsReqsProgress}</h2>
+	<br />
+
+	{foreach from=$gui->summary key=key item=metric}
+		<div id="{$key}"></div>
+	{/foreach}
+
+	<br />
+		<p class="italic">{$labels.info_resultsReqsProgress}</p>
+	<br />
+	
+	<h2>{$labels.title_resultsReqs}</h2>
+	<br />
 	{foreach from=$gui->tableSet key=idx item=matrix}
 		{assign var=tableID value=table_$idx}
    		{$matrix->renderBodySection($tableID)}

Modified: trunk/testlink/gui/templates/testcases/containerDelete.tpl
===================================================================
--- trunk/testlink/gui/templates/testcases/containerDelete.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/testcases/containerDelete.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -9,6 +9,9 @@
      20070213 - franciscom - BUGID 0000629: Test Case/Suite - Delete confirmation without Cancel or No option
 *}
 {include file="inc_head.tpl"}
+{lang_get var='labels'
+          s='test_case,th_link_exec_status,question_del_testsuite,
+          	 btn_yes_del_comp,btn_no'}
 
 <body>
 <h1 class="title">{$page_title}{$smarty.const.TITLE_SEP}{$objectName|escape}</h1> 
@@ -20,11 +23,15 @@
 <div class="workBack">
 
 {if $sqlResult == '' && $objectID != ''}
-	{if $warning neq ""}
+	{if $warning != ""}
+		{if $system_message != ""}
+		      <div class="user_feedback">{$system_message}</div>
+		      <br />
+		{/if}
 		<table class="link_and_exec">
 		<tr>
-			<th>{lang_get s='test_case'}</th>
-			<th>{lang_get s='th_link_exec_status'}</th>
+			<th>{$labels.test_case}</th>
+			<th>{$labels.th_link_exec_status}</th>
 		</tr>
 		{section name=idx loop=$warning}
 			<tr>
@@ -33,21 +40,20 @@
 			</tr>
 		{/section}
 		</table>
-		{if $delete_msg neq ''}  
+		{if $delete_msg != ''}  
 			<h2>{$delete_msg}</h2>
 		{/if}
 	{/if}
   
-	<p>{lang_get s='question_del_testsuite'}</p>
-		<form method="post" 
-			action="lib/testcases/containerEdit.php?sure=yes&objectID={$objectID}">
-	    
-	<input type="submit" name="delete_testsuite" value="{lang_get s='btn_yes_del_comp'}" />
+	<form method="post" action="lib/testcases/containerEdit.php?sure=yes&objectID={$objectID}">
+		{if $can_delete}
+			<p>{$labels.question_del_testsuite}</p>
+			<input type="submit" name="delete_testsuite" value="{$labels.btn_yes_del_comp}" />
 		
-	{* 20070213 - franciscom - BUGID 0000629 *}
-	<input type="button" name="cancel_delete_testsuite" value="{lang_get s='btn_no'}"
-			onclick='javascript: location.href=fRoot+
-			"lib/testcases/archiveData.php?&edit=testsuite&id={$objectID}";' />
+			<input  type="button" name="cancel_delete_testsuite" value="{$labels.btn_no}"
+					onclick='javascript: location.href=fRoot+
+					"lib/testcases/archiveData.php?&edit=testsuite&id={$objectID}";' />
+		{/if}
 	</form>
 {/if}
 

Modified: trunk/testlink/gui/templates/testcases/containerDeleteTC.tpl
===================================================================
--- trunk/testlink/gui/templates/testcases/containerDeleteTC.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/testcases/containerDeleteTC.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,11 +1,10 @@
 {*
 TestLink Open Source Project - http://testlink.sourceforge.net/
-$Id: containerDeleteTC.tpl,v 1.4 2010/11/06 11:42:47 amkhullar Exp $
 
-Purpose:
+Viewer for massive delete of test cases inside a test suite
 
-rev :
-
+ at filesource containerDeleteTC.tpl
+20110402 - franciscom - BUGID 4322: New Option to block delete of executed test cases
 20100910 - franciscom - BUGID 3047: Deleting multiple TCs
 *}
 {lang_get var='labels'
@@ -68,6 +67,10 @@
       <div class="user_feedback">{$gui->user_feedback}</div>
       <br />
     {/if}
+    {if $gui->system_message != ''}
+      <div class="user_feedback">{$gui->system_message}</div>
+      <br />
+    {/if}
 
 		{* need to do JS checks*}
     {* used as memory for the check/uncheck all checkbox javascript logic *}
@@ -87,7 +90,9 @@
         {foreach from=$gui->testCaseSet key=rowid item=tcinfo}
             <tr>
                 <td>
-                    <input type="checkbox" name="tcaseSet[]" id="tcaseSet_{$tcinfo.id}" value="{$tcinfo.id}" />
+					{if $tcinfo.draw_check}
+                    	<input type="checkbox" name="tcaseSet[]" id="tcaseSet_{$tcinfo.id}" value="{$tcinfo.id}" />
+                    {/if}	
                 </td>
                 <td>
                     {$tcinfo.external_id|escape}  
@@ -100,7 +105,7 @@
             <tr>
             <td colspan=2> </td>
             <td>
-	                      <table class="simple">
+	                      <table class="simple_tableruler">
 	                  		<tr>
 	                  			<th>{$labels.th_version}</th>
 	                  			<th>{$labels.th_linked_to_tplan}</th>

Modified: trunk/testlink/gui/templates/testcases/containerEdit.tpl
===================================================================
--- trunk/testlink/gui/templates/testcases/containerEdit.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/testcases/containerEdit.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -82,7 +82,7 @@
 {if $tlCfg->gui->checkNotSaved}
   <script type="text/javascript">
   var unload_msg = "{$labels.warning_unsaved|escape:'javascript'}";
-  var tc_editor = "{$gui->editorType}";
+  var tc_editor = "{$editorType}";
   </script>
   <script src="gui/javascript/checkmodified.js" type="text/javascript"></script>
 {/if}

Modified: trunk/testlink/gui/templates/testcases/containerNew.tpl
===================================================================
--- trunk/testlink/gui/templates/testcases/containerNew.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/testcases/containerNew.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -19,7 +19,7 @@
 *}
 {lang_get var="labels"
           s="warning_empty_testsuite_name,title_create,tc_keywords,
-             warning,btn_create_testsuite,cancel"}
+             warning,btn_create_testsuite,cancel,warning_unsaved"}
 
 {include file="inc_head.tpl" openHead='yes' jsValidate="yes"}
 

Modified: trunk/testlink/gui/templates/testcases/inc_testsuite_viewer_ro.tpl
===================================================================
--- trunk/testlink/gui/templates/testcases/inc_testsuite_viewer_ro.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/testcases/inc_testsuite_viewer_ro.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -5,7 +5,7 @@
 20060805 - franciscom - added keywords management
 20080606 - havlatm - refactorization
 *}
-<table class="simple" style="width: 90%">
+<table class="simple">
 	<tr>
 		<th colspan="2">{$labels.test_suite}{$tlCfg->gui_title_separator_1}{$gui->container_data.name|escape}</th>
 	</tr>

Modified: trunk/testlink/gui/templates/testcases/tcAssign2Tplan.tpl
===================================================================
--- trunk/testlink/gui/templates/testcases/tcAssign2Tplan.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/testcases/tcAssign2Tplan.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -48,7 +48,7 @@
 <form method="post" action="lib/testcases/tcEdit.php?testcase_id={$gui->tcase_id}&tcversion_id={$gui->tcversion_id}">
 {$gui->tcaseIdentity|escape} {$gui->item_sep} {$labels.testplan_usage} 
 <div id='checkboxes'>
-<table class="simple" style="width:50%">
+<table class="simple_tableruler" style="width:50%">
   <th> </th><th>{$labels.version}</th><th>{$labels.test_plan}</th><th>{$labels.platform}</th>
   {foreach from=$gui->tplans item=link2tplan_platform}
     {foreach from=$link2tplan_platform item=link2tplan key=platform_id}

Modified: trunk/testlink/gui/templates/testcases/tcDelete.tpl
===================================================================
--- trunk/testlink/gui/templates/testcases/tcDelete.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/testcases/tcDelete.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,24 +1,11 @@
 {*
 TestLink Open Source Project - http://testlink.sourceforge.net/
-$Id: tcDelete.tpl,v 1.14 2010/09/08 21:13:23 franciscom Exp $
-Purpose: smarty template - delete test case in test specification
 
-rev :
-    20100908 - franciscom - improvements on platform name display
-    20100808 - franciscom - typo error refresh_tree -> refreshTree
-    20080701 - franciscom - Found bug related to javascript:history.go(-1)
-                            1. create a new tcversion
-                            2. click on delete
-                            3. click on no
-                            4. A new version is created due to re-post of old data
-                            
-                            Till a good solution is found -> cancel button removed
-    
-    20070502 - franciscom - solved problems on delete due to name of local variable
-                            equal to name of variable assigned on php page.
-    
-    20070213 - franciscom - BUGID 0000629: Test Case/Suite - Delete confirmation without Cancel or No option
+delete test case in test specification
 
+ at filesource	tcDelete.tpl
+ at internal revisions
+20110529 - TICKET 4322: New Option to block delete of executed test cases.
 *}
 {lang_get var="labels"
           s='btn_yes_iw2del,btn_no,th_version,th_linked_to_tplan,title_delete_testcases,
@@ -61,6 +48,7 @@
       	{$gui->delete_message}
     {/if}
     
+    {if $gui->delete_enabled} {* TICKET 4322 *}
 	  <p>{$labels.question_del_tc}</p>
 	  <form method="post" 
 	        action="lib/testcases/tcEdit.php?testcase_id={$gui->testcase_id}&tcversion_id={$gui->tcversion_id}">
@@ -69,8 +57,9 @@
 	  	                     onclick='javascript: location.href=fRoot+"lib/testcases/archiveData.php?version_id=undefined&edit=testcase&id={$gui->testcase_id}";'
 	  	                     value="{$labels.btn_no}" />
 	  </form>
+    {/if}
+ 
   
-  
   {else}
 	  {if $gui->exec_status_quo != ''}
 	      <table class="simple" >
@@ -95,6 +84,7 @@
       	{$gui->delete_message}
     {/if}
     
+    {if $gui->delete_enabled} {* TICKET 4322 *}
 	  <p>{$labels.question_del_tc}</p>
 	  <form method="post" 
 	        action="lib/testcases/tcEdit.php?testcase_id={$gui->testcase_id}&tcversion_id={$gui->tcversion_id}">
@@ -103,7 +93,7 @@
 	  	                     onclick='javascript: location.href=fRoot+"lib/testcases/archiveData.php?version_id=undefined&edit=testcase&id={$gui->testcase_id}";'
 	  	                     value="{$labels.btn_no}" />
 	  </form>
-  
+  	{/if}
   {/if}	  
 {/if}
 </div>

Modified: trunk/testlink/gui/templates/testcases/tcNew.tpl
===================================================================
--- trunk/testlink/gui/templates/testcases/tcNew.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/testcases/tcNew.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,6 +3,7 @@
 $Id: tcNew.tpl,v 1.18.2.3 2011/01/14 14:39:04 asimon83 Exp $
 Purpose: smarty template - create new testcase
 
+20110607 - Julian - BUGID 3952 - stay here like Mantis does
 20110114 - asimon - simplified checking for editor type by usage of $editorType
 20110111 - Julian - Improved modified warning message when navigating away without saving
 20101202 - asimon - BUGID 4067: Tree refreshes after every action taken in Test Specification when update tree is disabled
@@ -23,7 +24,7 @@
 {config_load file="input_dimensions.conf" section=$cfg_section}
 
 {lang_get var='labels' s='btn_create,cancel,warning,title_new_tc,
-                          warning_empty_tc_title'}
+                          warning_empty_tc_title,warning_unsaved,stay_here_tc'}
 
 {include file="inc_head.tpl" openHead='yes' jsValidate="yes"}
 {include file="inc_del_onclick.tpl"}
@@ -143,7 +144,12 @@
 			       onclick="show_modified_warning=false;" />
 			<input type="button" name="go_back" value="{$labels.cancel}" 
 			       onclick="javascript: show_modified_warning=false; history.back();"/>
-	</div>	
+	</div>
+	<div class="groupBtn">
+	<input type="checkbox" id="stay_here"  name="stay_here" 
+	       {if $gui->stay_here} checked="checked" {/if}/>{$labels.stay_here_tc}
+	</div>
+
 	{include file="testcases/tcEdit_New_viewer.tpl"}
 
 	<div class="groupBtn">

Modified: trunk/testlink/gui/templates/testcases/tcStepEdit.tpl
===================================================================
--- trunk/testlink/gui/templates/testcases/tcStepEdit.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/testcases/tcStepEdit.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,19 +1,21 @@
 {*
 TestLink Open Source Project - http://testlink.sourceforge.net/ 
-$Id: tcStepEdit.tpl,v 1.35.2.5 2011/01/14 14:39:04 asimon83 Exp $ 
+$Id: tcStepEdit.tpl,v 1.35.2.6 2011/02/11 07:51:12 mx-julian Exp $ 
 Purpose: create/edit test case step
 
 rev:
-  20110114 - asimon - simplified checking for editor type by usage of $gui->editorType
-  20110112 - Julian - BUGID 3901 - Scroll window to step implemented for vertical layout and
-                                   newly added steps
-  20110111 - Julian - Improved modified warning message when navigating away without saving
-  20110106 - franciscom - BUGID 4136 - missing implementation on BUGID 3241
-  												layout was not used on CREATE
-  20101016 - franciscom - added id to table rows with step data 
+	20110217 - Julian - BUGID 3737, 4002, 4250 - Cancel Button was not working properly
+	20110209 - Julian - BUGID 4230 - removed old code to set focus on step
+	20110114 - asimon - simplified checking for editor type by usage of $gui->editorType
+	20110112 - Julian - BUGID 3901 - Scroll window to step implemented for vertical layout and
+	                                 newly added steps
+	20110111 - Julian - Improved modified warning message when navigating away without saving
+	20110106 - franciscom - BUGID 4136 - missing implementation on BUGID 3241
+	                                   layout was not used on CREATE
+	20101016 - franciscom - added id to table rows with step data 
              BUGID 3901: Edit Test Case STEP - scroll window to show selected step
 	20100621 - eloff - BUGID 3241 - Implement vertical layout
-  20100529 - franciscom - BUGID 3493 - using escape:'url'
+	20100529 - franciscom - BUGID 3493 - using escape:'url'
 	20100403 - franciscom - added create step button while editing existent step
 	                        BUGID 3359 - copy test case step
 	20100327 - franciscom - improvements on goback logic
@@ -38,7 +40,7 @@
 
 {assign var="tcViewAction" value="lib/testcases/archiveData.php?tcase_id=$tcase_id&show_mode=$showMode"}
 {assign var="goBackAction" value="$basehref$tcViewAction"}
-{assign var="goBackActionURLencoded" value="$goBackAction|escape:'url'"}
+{assign var="goBackActionURLencoded" value=$goBackAction|escape:'url'}
 {assign var="url_args" value="tcEdit.php?doAction=editStep&testcase_id=$tcase_id&tcversion_id=$tcversion_id"}
 {assign var="url_args" value="$url_args&goback_url=$goBackActionURLencoded&step_id="}
 {assign var="hrefEditStep"  value="$basehref$module$url_args"}
@@ -177,7 +179,7 @@
     	     {else}  onclick="show_modified_warning=false; javascript:history.back();" {/if} />
 	</div>	
 
-  <table class="simple" style="width:99%;">
+  <table class="simple">
 	{if $gui->steps_results_layout == "horizontal"}
   	<tr>
   		<th width="{$gui->tableColspan}">{$labels.step_number}</th>
@@ -328,10 +330,6 @@
 	</div>	
 </form>
 
-<script type="text/javascript" defer="1">
-   	document.forms[0].step_number.focus();
-</script>
-
 </div>
 </body>
 </html>

Modified: trunk/testlink/gui/templates/testcases/tcTree.tpl
===================================================================
--- trunk/testlink/gui/templates/testcases/tcTree.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/testcases/tcTree.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -69,6 +69,7 @@
         treeCfg.root_id={$gui->ajaxTree->root_node->id};
         treeCfg.root_href='{$gui->ajaxTree->root_node->href}';
         treeCfg.children={$gui->ajaxTree->children};
+        treeCfg.cookiePrefix='{$gui->ajaxTree->cookiePrefix}';
 	      // BUGID 0003664
 	      treeCfg.enableDD='{$gui->ajaxTree->dragDrop->enabled}';
         </script>

Modified: trunk/testlink/gui/templates/testcases/tcView.tpl
===================================================================
--- trunk/testlink/gui/templates/testcases/tcView.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/testcases/tcView.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -19,10 +19,9 @@
 
 {config_load file="input_dimensions.conf"}
 {lang_get var='labels' 
-          s='no_records_found,other_versions,show_hide_reorder,version,title_test_case,match_count'}
+          s='no_records_found,other_versions,show_hide_reorder,version,title_test_case,match_count,btn_show_exec_history'}
 
 {* Configure Actions *}
-{* BUGID 3493 *}
 {assign var="showMode" value=$gui->show_mode}
 {assign var="deleteStepAction" value="lib/testcases/tcEdit.php?show_mode=$showMode&doAction=doDeleteStep&step_id="}
 
@@ -113,7 +112,6 @@
 <h1 class="title">{$gui->pageTitle}{if $gui->show_match_count} - {$labels.match_count}:{$gui->match_count}{/if}
 </h1>
 
-{* 4067 *}
 {include file="inc_update.tpl" user_feedback=$gui->user_feedback refresh=$gui->refreshTree}
 <div class="workBack">
 
@@ -172,6 +170,13 @@
 		{if !isset($gui->loadOnCancelURL)}
  	      {assign var="loadOnCancelURL" value=""}
     {/if} 
+    
+    {* TO BE RELEASED ON 1.9.4
+    {if $gui->showExecHistory || TRUE}
+  		<input type="button" onclick="javascript:openExecHistoryWindow({$tcID});"
+   			   value="{$labels.btn_show_exec_history}" />
+    {/if} 
+    *}
 		{include file="inc_attachments.tpl" 
 		         attach_id=$tcID  
 		         attach_tableName="nodes_hierarchy"
@@ -267,7 +272,6 @@
 {/if}
 
 </div>
-{* 20100315 - franciscom *}
 {if $gui->refreshTree}
 	{include file="inc_refreshTreeWithFilters.tpl"}
 {/if}

Modified: trunk/testlink/gui/templates/testcases/tcView_viewer.tpl
===================================================================
--- trunk/testlink/gui/templates/testcases/tcView_viewer.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/testcases/tcView_viewer.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,9 +1,13 @@
 {*
 TestLink Open Source Project - http://testlink.sourceforge.net/
-$Id: tcView_viewer.tpl,v 1.85.2.1 2010/12/25 11:38:57 franciscom Exp $
+ at filesource	tcView_viewer.tpl
 viewer for test case in test specification
 
-rev:
+ at internal revisions
+	20110319 - franciscom - BUGID 4322: New Option to block delete of executed test cases
+    20110308 - asimon - BUGID 4286: moved print preview to popup to make printing independent from browser easier for the users
+	20110304 - franciscom - BUGID 4286: Option to print single test case
+    20101225 - franciscom - added warning for execution type with message ONLY in english
     20101102 - asimon - BUGID 2864: replaced old open_top() by openLinkedReqWindow()
     20100901 - franciscom - refactoring using inc_tcbody.tpl
                             added launchInsertStep()
@@ -41,7 +45,7 @@
              title_last_mod,title_created,by,expected_results,keywords,
              btn_create_step,step_number,btn_reorder_steps,step_actions,
              execution_type_short_descr,delete_step,show_hide_reorder,
-             test_plan,platform,insert_step,
+             test_plan,platform,insert_step,btn_print,btn_print_view,
              execution_type,test_importance,none,preconditions,btn_compare_versions"}
 
 {lang_get s='warning_delete_step' var="warning_msg"}
@@ -82,7 +86,9 @@
 {assign var="tcExportAction" value="lib/testcases/tcExport.php?goback_url=$goBackActionURLencoded&show_mode=$showMode"}
 {assign var="exportTestCaseAction" value="$basehref$tcExportAction"}
 
+{assign var="printTestCaseAction" value="lib/testcases/tcPrint.php?show_mode=$showMode"}
 
+
 {assign var="author_userinfo" value=$args_users[$args_testcase.author_id]}
 {assign var="updater_userinfo" value=""}
 
@@ -100,29 +106,52 @@
 	  <h2>{$tcView_viewer_labels.title_test_case} {$args_testcase.name|escape} </h2>
 {/if}
 {assign var="warning_edit_msg" value=""}
+{assign var="warning_delete_msg" value=""}
 
+<div style="display: inline;" class="groupBtn">
 {if $args_can_do->edit == "yes"}
 
   {assign var="edit_enabled" value=0}
+  {assign var="delete_enabled" value=0}
+
   {* 20070628 - franciscom - Seems logical you can disable some you have executed before *}
   {assign var="active_status_op_enabled" value=1}
   {assign var="has_been_executed" value=0}
   {lang_get s='can_not_edit_tc' var="warning_edit_msg"}
+  {lang_get s='system_blocks_delete_executed_tc' var="warning_delete_msg"}
+
   {if $args_status_quo == null || $args_status_quo[$args_testcase.id].executed == null}
       {assign var="edit_enabled" value=1}
+      {assign var="delete_enabled" value=1}
       {assign var="warning_edit_msg" value=""}
+      {assign var="warning_delete_msg" value=""}
   {else} 
-    {if isset($args_tcase_cfg) && $args_tcase_cfg->can_edit_executed eq 1}
+    {if isset($args_tcase_cfg) && $args_tcase_cfg->can_edit_executed == 1}
       {assign var="edit_enabled" value=1} 
       {assign var="has_been_executed"  value=1} 
       {lang_get s='warning_editing_executed_tc' var="warning_edit_msg"}
     {/if} 
+    
+    {* 20110319 - BUGID 4322: New Option to block delete of executed test cases *}
+    {if isset($args_tcase_cfg)}
+		{if $args_tcase_cfg->can_delete_executed == 1}
+      		{assign var="delete_enabled" value=1} 
+      		{assign var="has_been_executed"  value=1} 
+      		{assign var="warning_delete_msg" value=""}
+    	{else}
+  			{if ($args_can_do->delete_testcase == "yes" &&  
+  				 $args_can_delete_testcase == "yes") ||
+  				($args_can_do->delete_version == "yes" && 
+  				 $args_can_delete_version == "yes")}
+				{lang_get s='system_blocks_delete_executed_tc' var="warning_delete_msg"}
+    		{/if}  
+    	{/if}  
+    {/if} 
+    
   {/if}
 
-  <div class="groupBtn">
-	<div style="margin-bottom: 5px;">
 	<span style="float: left">
-	  <form id="topControls" name="topControls" method="post" action="lib/testcases/tcEdit.php">
+	  <form style="display: inline;" id="topControls" name="topControls" method="post" action="lib/testcases/tcEdit.php">
 	  <input type="hidden" name="testcase_id" value="{$args_testcase.testcase_id}" />
 	  <input type="hidden" name="tcversion_id" value="{$args_testcase.id}" />
 	  <input type="hidden" name="has_been_executed" value="{$has_been_executed}" />
@@ -136,12 +165,12 @@
 	 	           onclick="doAction.value='edit';{$gui->submitCode}" value="{$tcView_viewer_labels.btn_edit}" />
 	  {/if}
 	
-	  {* Double condition because for test case versions WE DO NOT DISPLAY this
-	     button, using $args_can_delete_testcase='no'
-	  *}
-		{if $args_can_do->delete_testcase == "yes" &&  $args_can_delete_testcase == "yes"}
+		{* Double condition because for test case versions WE DO NOT DISPLAY this
+	       button, using $args_can_delete_testcase='no'
+	  	*}
+		{if $delete_enabled && $args_can_do->delete_testcase == "yes" &&  $args_can_delete_testcase == "yes"}
 			<input type="submit" name="delete_tc" value="{$tcView_viewer_labels.btn_delete}" />
-	  {/if}
+		{/if}
 	
 	  {* Double condition because for test case versions WE DO NOT DISPLAY this
 	     button, using $args_can_move_copy='no'
@@ -151,7 +180,7 @@
 	     	{assign var="go_newline" value="<br />"}
 	  {/if}
 	
-	 	{if $args_can_do->delete_version == "yes" && $args_can_delete_version == "yes"}
+	  {if $delete_enabled && $args_can_do->delete_version == "yes" && $args_can_delete_version == "yes"}
 			 <input type="submit" name="delete_tc_version" value="{$tcView_viewer_labels.btn_del_this_version}" />
 	  {/if}
 
@@ -185,7 +214,7 @@
 	</span>
 
 	<span>
-	<form id="tcexport" name="tcexport" method="post" action="{$exportTestCaseAction}" >
+	<form style="display: inline;" id="tcexport" name="tcexport" method="post" action="{$exportTestCaseAction}" >
 		<input type="hidden" name="testcase_id" value="{$args_testcase.testcase_id}" />
 		<input type="hidden" name="tcversion_id" value="{$args_testcase.id}" />
 		<input type="submit" name="export_tc" style="margin-left: 3px;" value="{$tcView_viewer_labels.btn_export}" />
@@ -196,31 +225,45 @@
 		*}
 	</form>
 	</span>
-	
-	</div>
 {/if} {* user can edit *}
 
-	<div>
 	<span>
 	{* compare versions *}
 	{if $args_testcase.version > 1}
-	  <form id="version_compare" name="version_compare" method="post" action="lib/testcases/tcCompareVersions.php">
+	  <form style="display: inline;" id="version_compare" name="version_compare" method="post" action="lib/testcases/tcCompareVersions.php">
 	  		<input type="hidden" name="testcase_id" value="{$args_testcase.testcase_id}" />
 	  		<input type="submit" name="compare_versions" value="{$tcView_viewer_labels.btn_compare_versions}" />
 	  </form>
 	{/if}
 	</span>
+	{* 20110304 - franciscom - BUGID 4286: Option to print single test case  *}
+	<span>
+	<form style="display: inline;" id="tcprint" name="tcprint" method="post" action="" >
+		<input type="button" name="tcPrinterFriendly" style="margin-left: 3px;" value="{$tcView_viewer_labels.btn_print_view}" 
+		       onclick="javascript:openPrintPreview('tc',{$args_testcase.testcase_id},{$args_testcase.id},null,
+			                                          '{$printTestCaseAction}');"/>
+	</form>
+	</span>
   </div> {* class="groupBtn" *}
+<br/><br/>
 
 
 
 {* --------------------------------------------------------------------------------------- *}
   {if $args_testcase.active eq 0}
-    <br /><div class="messages" align="center">{$tcView_viewer_labels.tcversion_is_inactive_msg}</div>
+    <div class="messages" align="center">{$tcView_viewer_labels.tcversion_is_inactive_msg}</div>
   {/if}
- 	{if $warning_edit_msg neq ""}
- 	    <br /><div class="messages" align="center">{$warning_edit_msg}</div>
+ 	{if $warning_edit_msg != ""}
+ 	    <div class="messages" align="center">
+ 	    	{$warning_edit_msg|escape}<br>
+ 	    </div>
  	{/if}
+ 	{if $warning_delete_msg != ""}
+ 	    <div class="messages" align="center">
+ 	    	{$warning_delete_msg|escape}<br>
+ 	    </div>
+ 	{/if}
+ 	
 
 {literal}
 <script type="text/javascript">

Modified: trunk/testlink/gui/templates/usermanagement/userInfo.tpl
===================================================================
--- trunk/testlink/gui/templates/usermanagement/userInfo.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/usermanagement/userInfo.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -105,7 +105,11 @@
     return true;
 }
 
+function refreshLastUpdate (last_update) {
+	document.getElementById("last_update").firstChild.nodeValue = last_update;
+}
 
+
 </script>
 {/literal}
 </head>
@@ -127,9 +131,9 @@
 		onsubmit="return validatePersonalData(this)">
 	{/if}
 	<input type="hidden" name="doAction" value="editUser" />
-	<table class="common">
+	<table class="common" width="50%">
 		<tr>
-			<th>{$labels.th_login}</th>
+			<th width="20%">{$labels.th_login}</th>
 			<td>{$user->login}</td>
 		</tr>
 		<tr>
@@ -156,9 +160,18 @@
 		<tr>
 			<th>{$labels.th_locale}</th>
 			<td>
-				<select name="locale">
+				{* BUGID 4645 - get last_update for each locale *}
+				<script type="text/javascript">
+					js_locale = new Array();
+					{foreach key=locale item=value from=$optLocale}
+						js_locale['{$locale}'] = "{lang_get s='last_update' locale=$locale}";
+					{/foreach}
+				</script>
+				
+				<select name="locale" onchange="javascript:refreshLastUpdate(js_locale[this.options[this.selectedIndex].value]);">
 				{html_options options=$optLocale selected=$user->locale}
 				</select>
+				<span id="last_update">{lang_get s='last_update'}</span>
 			</td>
 		</tr>
 	</table>

Modified: trunk/testlink/gui/templates/usermanagement/usersView.tpl
===================================================================
--- trunk/testlink/gui/templates/usermanagement/usersView.tpl	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/templates/usermanagement/usersView.tpl	2012-04-11 09:34:31 UTC (rev 18330)
@@ -87,7 +87,7 @@
     {$labels.hide_inactive_users}
     <input name="hide_inactive_users" id="hide_inactive_users" type="checkbox" {$checked_hide_inactive_users} 
            value="on" onclick="toggleRowByClass('hide_inactive_users','inactive_user')">
-		<table class="simple" width="95%">
+		<table class="simple">
 			<tr>
 				<th {if $user_order_by == 'order_by_login'}style="background-color: #c8dce8;color: black;"{/if}>
 				    {$labels.th_login}

Copied: trunk/testlink/gui/themes/default/css/custom.css.example (from rev 18329, vendor/testlink/gui/themes/default/css/custom.css.example)
===================================================================
--- trunk/testlink/gui/themes/default/css/custom.css.example	                        (rev 0)
+++ trunk/testlink/gui/themes/default/css/custom.css.example	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,44 @@
+/*
+TestLink Open Source Project - http://testlink.sourceforge.net/
+ at filesource custom.css
+*/
+
+/* ***** Execution & Results ********************************************************* */
+
+div.my_status {
+	color: 			white;
+	margin: 		8px;
+	padding: 		6px;
+	text-align: 	center;
+	background:		#FF8C11;
+}
+
+
+/* ***** execution tree coloring ************************* */
+span.my_status
+{
+	color:				black;
+	padding:			3px;
+}
+
+
+span.light_my_status {
+	background: 		#FFE28C; 
+}
+
+
+/* ***** render test result status (coloring background) ************************* */
+
+.my_status {
+	color: 			white;
+	background:		#FF8C11;
+}
+
+/* ***** render test result status (coloring text) ************************* */
+
+.my_status_text {
+	color:       #FF8C11;
+	font-weight: bold;
+}
+
+/* ----- END ------------------------------------------------------------------------- */

Modified: trunk/testlink/gui/themes/default/css/testlink.css
===================================================================
--- trunk/testlink/gui/themes/default/css/testlink.css	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/themes/default/css/testlink.css	2012-04-11 09:34:31 UTC (rev 18330)
@@ -4,6 +4,10 @@
 
 Purpose: Default TestLink CSS
 
+20110407 - Julian - BUGID 4382 - added class simple_tableruler for tables that have single
+                                 line rows, should look like simple tables and should have
+                                 a tableruler (highlight row on hover)
+20110308 - Julian - default width for simple table is now 99%
 20101131 - Julian - added background color for "table.simple th"
 20101028 - eloff - reverted to strict table changes and added workaround for date picker
                    BUGID 3944 - do not style file uploads fields
@@ -367,7 +371,7 @@
 	padding:		5px; 
 	right:			50px; 
 	top:			50px; 
-	width: 			300px; 
+	width: 			500px; 
 	height:			auto;
 	background: 	#059;
 	color:			white;
@@ -476,7 +480,7 @@
 	min-width:		50%;
 }
 
-table.common th, table.simple th{
+table.common th, table.simple th, table.simple_tableruler th{
   	overflow:		hidden;
   	color:			#15428b;
   	font:			bold 11px tahoma,arial,verdana,sans-serif;
@@ -491,12 +495,13 @@
 	padding:		3px;
 }
 
-table.common td, table.simple td, th{
+table.common td, table.simple td, table.simple_tableruler td, th{
 	vertical-align: top;
 }
 
 /* Margin fix for paragraphs in steps table */
-table.common td p:first-child, table.simple td p:first-child {
+table.common td p:first-child, table.simple td p:first-child,
+simple_tableruler td p:first-child{
 	margin-top: 0;
 }
 
@@ -509,22 +514,26 @@
 
 
 /* ***** Simple Table (often used to show data) ***************** */
-table.simple {
+table.simple, table.simple_tableruler {
 	background:     #EEE;
 	border: 		thin solid black;
 	font-size:		90%;
 	margin:			5px;
-	width:			90%;
+	width:			99%;
 }
 
-table.simple caption {
+table.simple caption, table.simple_tableruler caption{
 	background:     #CCC;
 	border: 		thin solid black;
 	border-bottom-style: none;
 	font-weight:    bold;
 }
 
+table.simple_tableruler tr:hover{
+    background-color: #CDDEF3 !important;
+}
 
+
 /* Used for filters and options settings */
 table.smallGrey {
 	background:     #EEE;

Modified: trunk/testlink/gui/themes/default/css/tl_documents.css
===================================================================
--- trunk/testlink/gui/themes/default/css/tl_documents.css	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/gui/themes/default/css/tl_documents.css	2012-04-11 09:34:31 UTC (rev 18330)
@@ -15,6 +15,12 @@
 	font-family : 		Arial, Helvetica, sans-serif;
 }
 
+h1.general {
+	text-align: 		left;
+	font-size:			120%;
+	font-weight:		bold;
+}
+
 h1 {
 	text-align: 		left;
 	font-size:			120%;
@@ -37,7 +43,7 @@
 }
 
 
-doclevel h1 {
+h1.doclevel {
 	text-align: 		left;
 	font-size:			130%;
 	margin: 			50px 0px;
@@ -45,18 +51,18 @@
 	page-break-before: 	always;
 }
 
-doclevel h2 {
+h2.doclevel {
 	font-size:			120%;
 	text-indent:		5px;
 }
 
-doclevel h3 {
+h3.doclevel {
 	font-size:			110%;
 	background: 		#CCC;
 	text-indent:		10px;
 }
 
-doclevel h4 {
+h4.doclevel {
 	font-size:			105%;
 	text-indent:		15px;
 }

Modified: trunk/testlink/install/sql/alter_tables/1.0.4_to_1.6/build.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.0.4_to_1.6/build.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.0.4_to_1.6/build.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.5 $
 $Date: 2005/10/14 06:44:45 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 
 20051013 - fm - added Test Plan info in build name
 Migration from 1.0.4 to 1.6 POST RC1 - 20050925 - fm

Modified: trunk/testlink/install/sql/alter_tables/1.0.4_to_1.6/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.0.4_to_1.6/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.0.4_to_1.6/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.2 $
 $Date: 2005/10/14 06:44:45 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 
 Migration from 1.0.4 to 1.6 POST RC1 - 20050925 - fm
 bug correction - missing join conditions found by am

Modified: trunk/testlink/install/sql/alter_tables/1.5_to_1.6/build.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.5_to_1.6/build.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.5_to_1.6/build.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.3 $
 $Date: 2005/10/14 06:44:46 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 
 20051013 - fm - added Test Plan info in build name
 Migration from 1.5.x to 1.6 POST RC1 - 20050925 - fm

Modified: trunk/testlink/install/sql/alter_tables/1.5_to_1.6/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.5_to_1.6/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.5_to_1.6/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.2 $
 $Date: 2005/10/14 06:44:46 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 
 Migration from 1.5 to 1.6 POST RC1 - 20050925 - fm
 bug correction - missing join conditions found by am

Modified: trunk/testlink/install/sql/alter_tables/1.6/build.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.6/build.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.6/build.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.2 $
 $Date: 2005/10/14 06:44:46 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 
 20051013 - fm - added Test Plan info in build name
 Migration from 1.5.x to 1.6 POST RC1 - 20050925 - fm

Modified: trunk/testlink/install/sql/alter_tables/1.6/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.6/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.6/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.2 $
 $Date: 2005/10/14 06:44:46 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 
 Migration from 1.6BETA  to 1.6 POST RC1 - 20050925 - fm
 bug correction - missing join conditions found by am

Modified: trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_3/builds.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_3/builds.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_3/builds.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/01/22 08:31:14 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE builds ADD COLUMN active TINYINT NOT NULL DEFAULT 1 AFTER notes;
 ALTER TABLE builds ADD COLUMN open TINYINT NOT NULL DEFAULT 1 AFTER active;

Modified: trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_3/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_3/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_3/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.1 $
 $Date: 2007/01/22 08:31:14 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO db_version VALUES('1.7.0 Beta 3', CURRENT_TIMESTAMP());
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_4/requirements.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_4/requirements.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_4/requirements.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/01/31 14:14:56 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE requirements MODIFY req_doc_id varchar(32) default NULL;
 ALTER TABLE requirements DROP INDEX req_doc_id; 

Modified: trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_4/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_4/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_4/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.1 $
 $Date: 2007/01/31 14:14:56 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO db_version VALUES('1.7.0 Beta 4', CURRENT_TIMESTAMP());
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_5/priorities.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_5/priorities.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_5/priorities.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/02/05 08:06:54 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 
 ALTER TABLE priorities ADD COLUMN `risk` CHAR(1) NOT NULL DEFAULT '2' AFTER `priority`;

Modified: trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_5/risk_assignments.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_5/risk_assignments.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_5/risk_assignments.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/02/05 08:06:54 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE risk_assignments MODIFY COLUMN `risk` CHAR(1) NOT NULL DEFAULT '2';
 ALTER TABLE risk_assignments COMMENT = 'Updated to TL 1.7.0 Beta 5';
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_5/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_5/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/mysql/beta_5/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/02/05 08:06:54 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 
 UPDATE priorities

Modified: trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_2/requirements.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_2/requirements.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_2/requirements.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/04/24 14:24:50 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE requirements ADD COLUMN `node_order` INT(10) UNSIGNED DEFAULT '0' AFTER `type`;
 ALTER TABLE requirements COMMENT = 'Updated to TL 1.7.0 RC 2';
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_2/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_2/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_2/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.1 $
 $Date: 2007/04/24 14:24:50 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO db_version VALUES('1.7.0 RC 2', CURRENT_TIMESTAMP());
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_3/milestones.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_3/milestones.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_3/milestones.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/08/18 14:06:52 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE milestones CHANGE COLUMN `date` `target_date` DATE NOT NULL DEFAULT '0000-00-00';
 ALTER TABLE milestones COMMENT = 'Updated to TL 1.7.0 RC 3';
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_3/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_3/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_3/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/08/18 14:06:52 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 UPDATE rights SET description = 'testplan_user_role_assignment' WHERE id=5;
 DELETE FROM rights WHERE id=19;

Modified: trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_4/remove_redundant_indexes.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_4/remove_redundant_indexes.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/mysql/rc_4/remove_redundant_indexes.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/08/28 23:06:34 $
 $Author: asielb $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 
 # already have a unique index for these fields

Modified: trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_3/builds.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_3/builds.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_3/builds.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.2 $
 $Date: 2007/01/31 14:13:33 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE builds ADD COLUMN active INT2 NOT NULL DEFAULT 1;
 ALTER TABLE builds ADD COLUMN open INT2 NOT NULL DEFAULT 1;

Modified: trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_3/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_3/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_3/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.1 $
 $Date: 2007/01/22 08:31:14 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO db_version VALUES('1.7.0 Beta 3', now());
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_4/requirements.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_4/requirements.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_4/requirements.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/01/31 14:14:56 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE requirements ALTER COLUMN req_doc_id TYPE varchar(32);
 DROP INDEX requirements_req_doc_id; 

Modified: trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_4/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_4/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_4/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.1 $
 $Date: 2007/01/31 14:14:56 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO db_version VALUES('1.7.0 Beta 4', now());
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_5/priorities.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_5/priorities.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_5/priorities.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/02/05 08:06:54 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE priorities ADD COLUMN risk CHAR(1) NOT NULL DEFAULT '2';
 ALTER TABLE priorities ADD COLUMN importance CHAR(1) NOT NULL DEFAULT 'M';

Modified: trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_5/risk_assignments.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_5/risk_assignments.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_5/risk_assignments.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/02/05 08:06:54 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE risk_assignments ALTER COLUMN risk TYPE CHAR(1);
 ALTER TABLE risk_assignments ALTER COLUMN risk SET NOT NULL;

Modified: trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_5/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_5/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/postgres/beta_5/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/02/05 08:06:54 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 
 UPDATE priorities

Modified: trunk/testlink/install/sql/alter_tables/1.7/postgres/rc_2/requirements.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/postgres/rc_2/requirements.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/postgres/rc_2/requirements.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1 $
 $Date: 2007/04/24 14:27:19 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE requirements ADD COLUMN node_order BIGINT DEFAULT 0;
 COMMENT ON TABLE requirements IS 'Updated to TL 1.7.0 RC 2';
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7/postgres/rc_2/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/postgres/rc_2/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/postgres/rc_2/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.1 $
 $Date: 2007/04/24 14:27:19 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO db_version VALUES('1.7.0 RC 2', now());
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7/postgres/rc_3/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7/postgres/rc_3/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7/postgres/rc_3/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.1 $
 $Date: 2007/08/18 14:07:07 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO db_version VALUES('1.7.0 RC 3', CURRENT_TIMESTAMP());
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7.1/mssql/builds.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7.1/mssql/builds.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7.1/mssql/builds.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,7 +3,7 @@
 -- $Revision: 1.2 $
 -- $Date: 2007/10/19 06:53:06 $
 -- $Author: franciscom $
--- $Name: testlink_1_9_1 $
+-- $Name:  $
 -- 
 BEGIN TRANSACTION
 SET QUOTED_IDENTIFIER ON

Modified: trunk/testlink/install/sql/alter_tables/1.7.1/mssql/tcversions.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7.1/mssql/tcversions.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7.1/mssql/tcversions.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,7 +3,7 @@
 -- $Revision: 1.2 $
 -- $Date: 2007/10/19 06:53:06 $
 -- $Author: franciscom $
--- $Name: testlink_1_9_1 $
+-- $Name:  $
 -- 
 BEGIN TRANSACTION
 SET QUOTED_IDENTIFIER ON

Modified: trunk/testlink/install/sql/alter_tables/1.7.1/mssql/testplans.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7.1/mssql/testplans.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7.1/mssql/testplans.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,7 +3,7 @@
 -- $Revision: 1.2 $
 -- $Date: 2007/10/19 06:53:06 $
 -- $Author: franciscom $
--- $Name: testlink_1_9_1 $
+-- $Name:  $
 -- 
 BEGIN TRANSACTION
 SET QUOTED_IDENTIFIER ON

Modified: trunk/testlink/install/sql/alter_tables/1.7.1/mssql/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7.1/mssql/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7.1/mssql/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.2 $
 $Date: 2007/10/19 06:53:06 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO db_version VALUES('DB 1.1', GETDATE());
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7.1/mysql/builds.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7.1/mysql/builds.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7.1/mysql/builds.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.2 $
 $Date: 2007/10/19 06:53:06 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE `builds` CHANGE COLUMN `open` `is_open` TINYINT(1) NOT NULL DEFAULT 1;
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7.1/mysql/tcversions.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7.1/mysql/tcversions.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7.1/mysql/tcversions.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.2 $
 $Date: 2007/10/19 06:53:06 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE `tcversions` CHANGE COLUMN `open` `is_open` TINYINT(1) NOT NULL DEFAULT 1;
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7.1/mysql/testplans.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7.1/mysql/testplans.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7.1/mysql/testplans.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,6 +3,6 @@
 $Revision: 1.2 $
 $Date: 2007/10/19 06:53:06 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE `testplans` CHANGE COLUMN `open` `is_open` TINYINT(1) NOT NULL DEFAULT 1;

Modified: trunk/testlink/install/sql/alter_tables/1.7.1/mysql/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7.1/mysql/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7.1/mysql/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.2 $
 $Date: 2007/10/19 06:53:06 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO db_version VALUES('DB 1.1', CURRENT_TIMESTAMP());
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7.1/postgres/builds.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7.1/postgres/builds.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7.1/postgres/builds.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,6 +3,6 @@
 $Revision: 1.2 $
 $Date: 2007/10/21 15:59:50 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE builds RENAME open TO is_open;
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7.1/postgres/tcversions.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7.1/postgres/tcversions.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7.1/postgres/tcversions.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,6 +3,6 @@
 $Revision: 1.2 $
 $Date: 2007/10/21 15:59:50 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE tcversions RENAME open TO is_open;
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7.1/postgres/testplans.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7.1/postgres/testplans.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7.1/postgres/testplans.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,6 +3,6 @@
 $Revision: 1.2 $
 $Date: 2007/10/21 15:59:50 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE testplans RENAME open TO is_open;
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.7.1/postgres/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.7.1/postgres/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.7.1/postgres/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.3 $
 $Date: 2007/10/21 15:59:49 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO db_version VALUES('DB 1.1', now());
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.8/mssql/DB.1.2/db_version.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.8/mssql/DB.1.2/db_version.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.8/mssql/DB.1.2/db_version.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -4,6 +4,6 @@
 $Revision: 1.1 $
 $Date: 2008/01/02 18:55:52 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 ALTER TABLE db_version ADD notes TEXT NULL;
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.8/mssql/DB.1.2/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.8/mssql/DB.1.2/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.8/mssql/DB.1.2/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.1 $
 $Date: 2008/01/02 18:55:52 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO db_version (version,upgrade_ts,notes) VALUES ('DB 1.2',GETDATE(),'first version with API feature');
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.8/mysql/DB.1.2/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.8/mysql/DB.1.2/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.8/mysql/DB.1.2/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.1 $
 $Date: 2008/01/02 18:56:05 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO db_version (version,notes,upgrade_ts) VALUES('DB 1.2', 'first version with API feature',CURRENT_TIMESTAMP());
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.8/postgres/DB.1.2/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.8/postgres/DB.1.2/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.8/postgres/DB.1.2/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,6 +2,6 @@
 $Revision: 1.2 $
 $Date: 2009/05/08 06:46:15 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 INSERT INTO "db_version" ("version","upgrade_ts","notes") VALUES ('DB 1.3',now(),'');
\ No newline at end of file

Modified: trunk/testlink/install/sql/alter_tables/1.9/mssql/DB.1.3/stepZ/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.9/mssql/DB.1.3/stepZ/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.9/mssql/DB.1.3/stepZ/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.2.6.3 $
 $Date: 2011/01/22 13:53:26 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 
 20101119 - franciscom - fixed missing set INDENTITY_* thanks to contributor
 */

Modified: trunk/testlink/install/sql/alter_tables/1.9/mysql/DB.1.3/stepZ/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.9/mysql/DB.1.3/stepZ/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.9/mysql/DB.1.3/stepZ/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.5.6.2 $
 $Date: 2011/01/22 13:53:26 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 
 z_final_step.sql
 MySQL

Modified: trunk/testlink/install/sql/alter_tables/1.9/postgres/DB.1.3/stepZ/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.9/postgres/DB.1.3/stepZ/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.9/postgres/DB.1.3/stepZ/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.5.6.2 $
 $Date: 2011/01/22 13:53:25 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 
 /*

Modified: trunk/testlink/install/sql/alter_tables/1.9.1/mysql/DB.1.4/stepZ/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.9.1/mysql/DB.1.4/stepZ/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.9.1/mysql/DB.1.4/stepZ/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1.2.2 $
 $Date: 2011/01/22 13:47:30 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 
 z_final_step.sql
 MySQL

Modified: trunk/testlink/install/sql/alter_tables/1.9.1/postgres/DB.1.4/stepZ/z_final_step.sql
===================================================================
--- trunk/testlink/install/sql/alter_tables/1.9.1/postgres/DB.1.4/stepZ/z_final_step.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/alter_tables/1.9.1/postgres/DB.1.4/stepZ/z_final_step.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,7 +2,7 @@
 $Revision: 1.1.2.3 $
 $Date: 2011/01/22 13:47:31 $
 $Author: franciscom $
-$Name: testlink_1_9_1 $
+$Name:  $
 */
 
 -- Last step update some data

Modified: trunk/testlink/install/sql/mssql/testlink_create_tables.sql
===================================================================
--- trunk/testlink/install/sql/mssql/testlink_create_tables.sql	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/install/sql/mssql/testlink_create_tables.sql	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,7 +1,7 @@
 --  -----------------------------------------------------------------------------------
 -- TestLink Open Source Project - http://testlink.sourceforge.net/
 -- This script is distributed under the GNU General Public License 2 or later.
--- $Id: testlink_create_tables.sql,v 1.53.2.2 2010/12/12 14:55:07 franciscom Exp $
+-- @filesource testlink_create_tables.sql
 --
 -- SQL script - create db tables for TL
 -- Database Type: Microsoft SQL Server
@@ -10,8 +10,9 @@
 --            TEXTIMAGE Option can be used only tables that have fields of type:
 --            varchar(MAXSIZEALLOWED), nvarchar(MAXSIZEALLOWED), varbinary(MAXSIZEALLOWED), xml 
 -- 
--- Rev :
+-- @internal revisions
 --
+--  20110320 - franciscom - BUGID 4289 - req_revisions table missing
 --  20100911 - franciscom - updated schema to Test Link 1.9 DB
 --  20100705 - asimon - added column build_id to user_assignments
 --  20100123 - franciscom - is_open,active added to req_versions table
@@ -511,6 +512,36 @@
   ) ON [PRIMARY]
 ) ON [PRIMARY];
 
+--- Test Link 1.9.1
+CREATE TABLE /*prefix*/req_revisions(
+  parent_id int NOT NULL,
+    id int NOT NULL,
+  revision INTEGER NOT NULL DEFAULT '1',
+    req_doc_id varchar(64) NULL,
+    name varchar(100) NULL,
+  scope TEXT NULL DEFAULT NULL,
+  status CHAR(1) NOT NULL DEFAULT 'V',
+  type CHAR(1) NULL DEFAULT NULL,
+  active INT NOT NULL DEFAULT '1',
+  is_open INT NOT NULL DEFAULT '1',
+  expected_coverage INT NOT NULL DEFAULT 1,
+  log_message TEXT NULL DEFAULT NULL,
+  author_id INT NULL DEFAULT NULL,
+    creation_ts datetime NOT NULL CONSTRAINT /*prefix*/DF_req_revisions_creation_ts DEFAULT (getdate()),
+  modifier_id INT NULL DEFAULT NULL,
+    modification_ts datetime NULL,
+  CONSTRAINT /*prefix*/PK_req_revisions PRIMARY KEY CLUSTERED
+  (
+      id
+  ) ON [PRIMARY]
+) ON [PRIMARY];
+
+CREATE UNIQUE NONCLUSTERED INDEX /*prefix*/IX1_req_revisions ON /*prefix*/req_revisions
+(
+    parent_id,revision
+) ON [PRIMARY];
+
+
 CREATE TABLE /*prefix*/role_rights (
 	role_id int NOT NULL CONSTRAINT /*prefix*/DF_role_rights_role_id DEFAULT ((0)),
 	right_id int NOT NULL CONSTRAINT /*prefix*/DF_role_rights_right_id DEFAULT ((0)),

Modified: trunk/testlink/lib/ajax/getrequirementnodes.php
===================================================================
--- trunk/testlink/lib/ajax/getrequirementnodes.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/ajax/getrequirementnodes.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -19,7 +19,8 @@
 *   - Assign requirements to test cases
 *
 *	@internal revision
-*   20110113 - asimon - 4168: BUGID Requirement Specifications navigator tree empty
+*	20110311 - Julian - Replaced seperator "::" with ":" for req spec text
+*	20110113 - asimon - 4168: BUGID Requirement Specifications navigator tree empty
 *	20101010 - franciscom - added custom node attribute: testlink_node_name
 *	20100306 - franciscom - BUGID 0003003: EXTJS does not count # req's
 *	20091208 - franciscom - added management of new attribute 'forbidden_parent'
@@ -138,12 +139,12 @@
 	                $treeMgr->getAllItemsID($row['id'],$req_list,$peerTypes);
 
 	                $path['href'] = "javascript:" . $js_function[$row['node_type']]. "({$path['id']})";
-	                $path['text'] = htmlspecialchars($row['doc_id'] . "::") . $path['text'];
+	                $path['text'] = htmlspecialchars($row['doc_id'] . ":") . $path['text'];
                     $path['forbidden_parent'] = $forbidden_parent[$row['node_type']];
    	        		if(!is_null($req_list))
 	        		{
 	        			$item_qty = count($req_list);
-	        			$path['text'] .= "({$item_qty})";   
+	        			$path['text'] .= " ({$item_qty})";   
 	        		}
 					
 					

Modified: trunk/testlink/lib/ajax/gettprojectnodes.php
===================================================================
--- trunk/testlink/lib/ajax/gettprojectnodes.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/ajax/gettprojectnodes.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -162,7 +162,7 @@
 	        }
 	        if(!is_null($tcase_qty))
 	        {
-	        	$path['text'] .= "({$tcase_qty})";   
+	        	$path['text'] .= " ({$tcase_qty})";   
 	        }
           	$nodes[] = $path;                                                                        
 	    }

Modified: trunk/testlink/lib/api/APIKey.php
===================================================================
--- trunk/testlink/lib/api/APIKey.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/api/APIKey.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,28 +1,34 @@
 <?php
 /*
  * TestLink Open Source Project - http://testlink.sourceforge.net/
- * $Id: APIKey.php,v 1.6 2008/01/30 17:49:41 schlundus Exp $
- * 
+ *
  * Class that deals with API keys
  *
- * rev:
- *     20080129 - franciscom - generateKey
- *                refactoring
+ * @filesource	APIKey.php
+ * @package 	TestLink
+ * @author 		TestLink community
+ * @copyright 	2004-2011, TestLink community 
+ * @link 		http://www.teamst.org/index.php
  *
+ * @internal revisions
+ * 20110327 - kinow - BUGID 4356 - Unable to generate developer key when using prefix in table names.
+ *
  */
 require_once(dirname(__FILE__) . "/../../config.inc.php");
 require_once('common.php');
 
 class APIKey extends tlObjectWithDB
 {	
-  private $object_table="users";
-
-
+	private $object_table = "";
+	
 	public function __construct()
 	{		
 		$db = null;
 		doDBConnect($db);				
 		parent::__construct($db);	
+		
+		// BUGID 4356
+		$this->object_table = $this->tables["users"];
 	}
 	
 	/*
@@ -115,9 +121,4 @@
   }
   
 }
-
-
-
-		
-
 ?>
\ No newline at end of file

Modified: trunk/testlink/lib/api/sample_clients/php/index.php
===================================================================
--- trunk/testlink/lib/api/sample_clients/php/index.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/api/sample_clients/php/index.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,18 +3,21 @@
  * TestLink Open Source Project - http://testlink.sourceforge.net/
  * This script is distributed under the GNU General Public License 2 or later.
  *
- * Filename $RCSfile: index.php,v $
+ * Filename index.php
  *
- * @version $Revision: 1.2 $
- * @modified $Date: 2010/06/24 17:25:53 $ by $Author: asimon83 $
  * @Author: francisco.mancardi at gmail.com
  *
- * rev: 
+ * @internal revision 
+ * 20110219 - franciscom - order file list using natsort()
+ *
  */
 require_once 'util.php';
 require_once 'sample.inc.php';
 
-define('DBUG_ON',1);  // ADDED to enable ALWAYS dBug()
+if( !defined('DBUG_ON') )
+{
+	define('DBUG_ON',1);  // ADDED to enable ALWAYS dBug()
+}    
 
 $target_dir = '.';
 $examples = null;
@@ -40,6 +43,10 @@
 		}
 	}
 	closedir($handle);
+	if(!is_null($examples))
+	{
+		natsort($examples);
+	}	
 }
 
 echo '<br><br>Click on file name to launch sample client<br><br>';

Modified: trunk/testlink/lib/api/xmlrpc.class.php
===================================================================
--- trunk/testlink/lib/api/xmlrpc.class.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/api/xmlrpc.class.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,10 +3,8 @@
  * TestLink Open Source Project - http://testlink.sourceforge.net/
  * This script is distributed under the GNU General Public License 2 or later.
  *  
- * Filename $RCSfile: xmlrpc.class.php,v $
+ * @filesource 	xmlrpc.class.php
  *
- * @version $Revision: 1.23.2.5 $
- * @modified $Date: 2010/12/12 09:16:03 $ by $Author: franciscom $
  * @author 		Asiel Brumfield <asielb at users.sourceforge.net>
  * @package 	TestlinkAPI
  * 
@@ -21,90 +19,9 @@
  * @example sample_clients/python/clientSample.py python client sample
  * 
  *
- * rev : 
- *	20101212 - franciscom - BUGID 4086: Unexpected result when overwriting reportTCResult
- *							This bug is caused by an issue on get_last_execution()
- *	20101208 - franciscom - BUGID 4082 - reportTCResult() - no check on overwrite value
- *	20101120 - franciscom - getFullPath() - make user happy allowing array or simple value
- *							BUGID 3993: getFullPath can receive a list of node ids instead of one node
- *							BUGID 4041: API - getTestCasesForTestPlan() -Platform Information not provided
- *	20101110 - franciscom - BUGID 3992 - getTestCasesForTestPlan() keywords issue	 
- *							BUGID 3991 - getValidKeywordSetById() missing $this in return 
- *	20101023 - franciscom - BUGID 3916: getTestCaseCustomFieldDesignValue() - missing refactoring regarding
- *										custom field values linked to test case version
- *
- *							BUGID 3920: createTestProject() missing refactoring
- *
- * 	20100918 - franciscom - BUGID 1890 - uploadAttachment(), upload*Attachment - contribution by kinow	
- *  20100731 - asimon - BUGID 3644 (additional fix for BUGID 2607)
- *	20100715 - franciscom - BUGID 3604 - getTestCasesForTestPlan()
- *	20100711 - franciscom - BUGID 3564 - addTestCaseToTestPlan()
- *                          BUGID 2607 - UTF8 settings for MySQL
- *							BUGID 3544: deleteExecution doesn't handle missing execution id - checkExecutionID()
- *	20100705 - franciscom - BUGID  - getTestPlanPlatforms() typo error
- * 	20100704 - franciscom - BUGID 3565 - createTestPlan() typo and logic error
- *	20100618 - franciscom - contribution refactored doesUserExist(), checkDevKey()
- *  20100613 - franciscom - BUGID 2845: buildname option in reportTCResult will never be used
- *	20100610 - eloff - added getTotalsForTestPlan() method
- *	20100608 - franciscom - reportTCResult() writes always tcversion_number=1
- *	20100514 - franciscom - BUGID 3454 - Contribution refactor class to be able to be extended to create other server.
- *	20100513 - franciscom - fixed missing properties error on userHasRight()
- *							BUGID 3455 - BUGID 3456
- *							BUGID 3458
- *	20100415 - franciscom - BUGID 3385 - contribution - getTestPlanPlatforms() (refactored)
- *	20100328 - franciscom - BUGID 2645 - contribution - getTestSuitesForTestSuite()
- *	20100308 - franciscom - BUGID 3243 - checkPlatformIdentity()
- *	20100205 - franciscom - BUGID 3140 - _checkTCIDAndTPIDValid()	
- *	20091228 - franciscom - checkReqSpecQuality() - refactoring due to req versioning feature
- *	20091212 - franciscom - BUGID 2998 - contribution - getTestSuiteByID()
- *  20091128 - franciscom - getTestCaseIDBy() - added testcasepathname
- *  20091113 - franciscom - work for adding overwrite argument to reportTCResult() started.
- *  20090917 - franciscom - reportTCResult() manages platform info
- *	20090902 - franciscom - test case preconditions field
- *	20090804 - franciscom - deleteExecution() - new method (need more work)
- *	20090801 - franciscom - getTestCasesForTestPlan() allows keyword passed by name
- *	20090727 - franciscom - added contribution BUGID  - reportTCResult() accepts CF info
- *	20090726 - franciscom - added contribution BUGID 2719 - getFullPath()
- *	20090609 - franciscom - createTestPlan() - new method
- *	                        WORK TO BE DONE, limit lenght of any limited string (names, prefix, etc)
- *	
- *	20090521 - franciscom - refactoring to manage DB_TABLE_PREFIX
- *	20090521 - franciscom - getTestCase() - development started
- *	20090426 - franciscom - getLastExecutionResult(), changed return type when there is not execution.
- *	                        getTestCaseAttachments(), test case external id can be used on call
- *	                        BUGID 2441 - getTestProjectByName(), getTestPlanByName() - new methods.
- *	
- *	20090420 - franciscom - BUGID 2158 - full implementation of getTestCaseCustomFieldDesignValue()
- *	20090411 - franciscom - BUGID 2369 - changes in addTestCaseToTestPlan()
- *	20090314 - franciscom - createTestSuite()
- *	20090303 - franciscom - BUGID 2179
- *	20090218 - franciscom - Contribution by JaskaJ - BUGID 2127 - getTestCaseAttachments() Refactored 
- *	                         
- *	20090214 - franciscom - BUGID 2098 - getTestCasesForTestPlan() - added executiontype parameter
- *	20090209 - franciscom - getTestCasesForTestPlan()
- *	                        added summary,steps,expected_results,tsuite_name in returned info
- *	                        reportTCResult() - contribution by hnishiyama - optional bug id 
- *	
- *	20090209 - franciscom - getTestCasesForTestSuite() - refactoring
- *	20090208 - franciscom - reading status from configuration using config_get()
- *	                        fixed bad check on checkBuildID()
- *	20090126 - franciscom - added some contributions by hnishiyama. 
- *	20090125 - franciscom - getLastTestResult() -> getLastExecutionResult()
- *	20090122 - franciscom - assignRequirements()
- *	20090117 - franciscom - createTestProject()
- *	20090116 - franciscom - getFirstLevelTestSuitesForTestProject()
- *	                        getTestCaseIDByName() - added testprojectname param
- *	
- *	20090113 - franciscom - BUGID 1982 - addTestCaseToTestPlan()
- *	20090106 - franciscom - createTestCase() - first implementation
- *	20080409 - azl - implement using the testsuitename param with the getTestCaseIDByName method
- *	20080309 - sbouffard - contribution - BUGID 1420: added getTestCasesForTestPlan (refactored by franciscom)
- *	20080307 - franciscom - now is possible to use test case external or internal ID
- *	                        when calling reportTCResult()
- *	20080306 - franciscom - BUGID 1421
- *	20080305 - franciscom - minor code refactoring
- *	20080103 - franciscom - fixed minor bugs due to refactoring
- *	20080115 - havlatm - 0001296: API table refactoring 
+ * @internal revisions 
+ * 20110630 - franciscom - get_linked_versions() interface changes
+ * 20110309 - franciscom - BUGID 4311: typo error on uploadExecutionAttachment mapping
  */
 
 /** 
@@ -320,7 +237,7 @@
 	                            'tl.createTestPlan' => 'this:createTestPlan',
 	                            'tl.createTestProject' => 'this:createTestProject',
 	                            'tl.createTestSuite' => 'this:createTestSuite',
-	                            'tl.uploadExecutionAttachment' => 'this::uploadExecutionAttachment',
+	                            'tl.uploadExecutionAttachment' => 'this:uploadExecutionAttachment',
 	                            'tl.uploadRequirementSpecificationAttachment' => 'this:uploadRequirementSpecificationAttachment',
 	                            'tl.uploadRequirementAttachment' => 'this:uploadRequirementAttachment',
 	                            'tl.uploadTestProjectAttachment' => 'this:uploadTestProjectAttachment',
@@ -1138,9 +1055,10 @@
     	$tcase_id = $this->args[self::$testCaseIDParamName];
         $platform_id = !is_null($platformInfo) ? key($platformInfo) : null;
         
-    	$info = $this->tcaseMgr->get_linked_versions($tcase_id,"ALL","ALL",$tplan_id,$platform_id);
+        $filters = array('exec_status' => "ALL", 'active_status' => "ALL",
+        				 'tplan_id' => $tplan_id, 'platform_id' => $platform_id);
+    	$info = $this->tcaseMgr->get_linked_versions($tcase_id,$filters);
         $status_ok = !is_null($info);
-		// $this->errors[]=$info;
 		
 		        
         if( $status_ok )

Modified: trunk/testlink/lib/bugtracking/int_bugtracking.php
===================================================================
--- trunk/testlink/lib/bugtracking/int_bugtracking.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/bugtracking/int_bugtracking.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,11 +2,8 @@
 /**
  * TestLink Open Source Project - http://testlink.sourceforge.net/
  *
- * Filename $RCSfile: int_bugtracking.php,v $
+ * @filesource	int_bugtracking.php
  *
- * @version $Revision: 1.45 $
- * @modified $Date: 2010/08/23 18:02:39 $ $Author: franciscom $
- *
  * @author Andreas Morsing
  *
  * Baseclass for connection to additional bug tracking interfaces
@@ -18,7 +15,8 @@
  * class . for an example look at the bugzilla.cfg.php and mantis.cfg.php
  *
  *
- * rev:
+ * @internal revisions
+ *	20110318 - franciscom - BUGID 
  *	20100823 - franciscom - BUGID 3699
  *	20100814 - franciscom - BUGID 3681 - new BTS youtrack (www.jetbrains.com)
  *	20100616 - eloff - Show error message if bts config is broken
@@ -41,8 +39,8 @@
 // Add new bugtracking interfaces here
 // If user configures an interface not declared here, pages trying to use bts
 // will give error message
-$btslist = array('BUGZILLA','MANTIS','JIRA', 'JIRASOAP', 'TRACKPLUS', 'EVOLVIS',
-		    	 'EVENTUM','TRAC','SEAPINE','REDMINE','GFORGE','FOGBUGZ','YOUTRACK');
+$btslist = array('BUGZILLA', 'MANTIS', 'JIRA', 'JIRASOAP', 'TRACKPLUS', 'POLARION',
+    'EVOLVIS', 'EVENTUM', 'TRAC', 'SEAPINE', 'REDMINE', 'GFORGE', 'FOGBUGZ',' YOUTRACK');
 
 $bts = array_flip($btslist);
 

Modified: trunk/testlink/lib/bugtracking/int_bugzilla.php
===================================================================
--- trunk/testlink/lib/bugtracking/int_bugzilla.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/bugtracking/int_bugzilla.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -118,11 +118,6 @@
 			if ($summary)
 			{
 				$summary = array_pop ($summary);
-			
-				if(tlStringLen($summary) > 45)
-				{
-					$summary = tlSubStr($summary, 0, 42) . "...";
-				}
 			}
 			else
 				$summary = null;

Copied: trunk/testlink/lib/bugtracking/int_polarion.php (from rev 18329, vendor/testlink/lib/bugtracking/int_polarion.php)
===================================================================
--- trunk/testlink/lib/bugtracking/int_polarion.php	                        (rev 0)
+++ trunk/testlink/lib/bugtracking/int_polarion.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,210 @@
+<?php
+/**
+ * TestLink Open Source Project - http://testlink.sourceforge.net/ 
+ *
+ * @filesource	int_polarion.php
+ *
+ * @author Gregor Bonney
+ *
+ * IMPORTANT NOTICE
+ * this code has been contributed to TestLink.
+ * TestLink development team has no tested it.
+ *
+ * TestLink development team has just refactor minor parts of this code.
+ *
+**/
+/** Interface name */
+define('BUG_INTERFACE_CLASSNAME',"polarionInterface");
+
+class polarionInterface extends bugtrackingInterface
+{
+	var $svnProto = BUG_TRACK_SVN_PROTO;
+	var $svnPrjGrp = BUG_TRACK_SVN_USED_PROJECT_GRP;
+	var $svnRepo = BUG_TRACK_SVN_REPO;
+	var $svnWIDir = BUG_TRACK_SVN_WIDIR;
+	
+	var $svnUser = BUG_TRACK_SVN_USER;
+	var $svnPass = BUG_TRACK_SVN_PASS;
+	
+	var $showBugURL = BUG_TRACK_HREF;
+	var $showBugURLEnd = BUG_TRACK_HREF_END;
+	
+	var $enterBugURL = BUG_TRACK_ENTER_BUG_HREF;
+	var $enterBugURLEnd = BUG_TRACK_ENTER_BUG_HREF_END;
+	
+	var $project = "";
+	
+	private $status_color = array('open'         => '#FF4D4D', # red,
+								  'accepted'     => '#FF7E3D', # orange,
+								  'inprogress'	 =>	'#FF7E3D', # orange,
+								  'resolved'     => '#F7F74A', # light-yellow
+								  'tested'       => '#52E3E3', # ugly
+								  'delivered'    => '#42EB55', # light-green
+								  'confirmed'    => '#52E3E3', # ugly
+								  'closed'       => '#B8B8B8', # gray
+								  'held'         => '#7899F5'); # light-blue
+
+	function buildViewBugURL($id)
+	{
+		$this->idToProjectName($id);
+		return $this->showBugURL . $this->project . $this->showBugURLEnd . urlencode($id);
+	}
+	
+	function getEnterBugURL(){
+		return $this->enterBugURL . $this->enterBugURLEnd;
+	}
+
+	function connect(){
+		$this->Connected = 1;
+		$this->dbConnection = new database("mysql");
+		return $this->Connected;
+	}
+    
+    public function isConnected(){
+        return true;
+    }
+    
+	private function convertWorkItemIdToSvnPath($id)
+	{
+		$id_len = strlen($id);
+		$path = '';
+		$workPackageId = split("-",$id);
+		$tmp_id = $workPackageId[1];
+		// BUGID 4455
+		$tmp_id_len = strlen($tmp_id);
+		
+		switch ($tmp_id_len)
+		{
+				case 0:
+					die("Wrong ID!");
+					break;
+
+				case 1:
+				case 2:
+					$path="00-99/" . $id;
+					break;
+					
+				case 3:
+				case 4:
+				case 5:
+					// examples
+					// 3 -> x00-x99/CHO
+					// 4 -> x000-x999/xy00-xy99/CHO
+					// 5 -> x0000-x9999/xy000-xy999/xyz00-xyz99/CHO
+					$loop2do = $tmp_id_len-2; // MAGIC
+					$path = '';
+					for( $fdx=0; $fdx < $loop2do; $fdx++)
+					{
+						$cutLen = $fdx+1;
+						$f = mb_strcut($tmp_id,0,$cutLen);
+						$nTimes = $tmp_id_len-$cutLen;
+						$zeros = str_repeat('0',$nTimes);
+						$nines = str_repeat('9',$nTimes);
+						$path .= $f . $zeros . "-" . $f . $nines . "/";
+					}
+					$path .= $id;
+					break;
+		}
+		$path = $path . "/workitem.xml";
+		
+		return $path;
+	}
+
+
+	private function idToProjectName($id)
+	{
+		$projectId = split("-",$id);
+		$this->project = $projectId[0];
+	}
+
+
+	function getBugStatusString($id)
+	{	
+		
+		$status = $this->getBugStatus($id);
+		
+		$str = htmlspecialchars($id);
+		if ($status !== false)
+		{
+			$status = str_replace(" ", "_", $status);
+			$status_i18n = lang_get('issue_status_' . $status);
+			$str = "[" . $status_i18n . "] " . $id . "";	
+		}
+		return $str;
+	}
+
+
+	function getBugAttribute($attr,$id)
+	{
+		switch($attr)
+		{
+			case 'status':
+				$this->idToProjectName($id);
+				$ret = array(false);
+				break;
+				
+			case 'title':
+				$ret = array('error');
+				break;
+		}
+		
+		$workItemPath = $this->convertWorkItemIdToSvnPath($id);
+		$path = $this->svnProto . $this->svnUser .":". $this->svnPass ."@". $this->svnRepo;
+		if($this->svnPrjGrp <> "")
+		{
+			 $path .= $this->svnPrjGrp ."/";
+		}
+		$path .=  $this->project . $this->svnWIDir . $workItemPath;
+		
+		$content = file_get_contents($path);
+		if(strlen($content) > 25)   // MAGIC
+		{
+			$xml = new SimpleXMLElement($content);
+			$ret = $xml->xpath("/work-item/field[@id='{$attr}']");
+		}
+		
+		return $ret[0];
+		
+	}
+
+
+
+	function getBugStatus($id)
+	{
+		$ret = $this->getBugAttribute('status',$id);
+		return $ret[0];
+	}
+
+	function getBugSummaryString($id)
+	{
+		$ret = $this->getBugAttribute('title',$id);
+		return $ret[0];
+	}
+
+ 	function checkBugID($id)
+	{
+		$valid = false;
+	  	$allowed_chars = '/[A-Za-z0-9]*\-[0-9]+$/'; 
+		if (preg_match($allowed_chars, $id))
+    	{
+			$valid = true;	
+    	}
+
+      	return $valid;
+	}
+
+	function checkBugID_existence($id)
+	{
+		return 1;
+	}	
+
+	function buildViewBugLink($bugID,$bWithSummary = false)
+  	{
+      $s = parent::buildViewBugLink($bugID, $bWithSummary);
+      $status = $this->getBugStatus($bugID);
+      $color = isset($this->status_color["$status"]) ? $this->status_color["$status"] : 'white';
+      $title = lang_get('access_to_bts');  
+      return "<div  title=\"{$title}\" style=\"display: inline; background: ". $color . ";\">$s</div>";
+  	}
+}
+?>
\ No newline at end of file

Modified: trunk/testlink/lib/bugtracking/int_seapine.php
===================================================================
--- trunk/testlink/lib/bugtracking/int_seapine.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/bugtracking/int_seapine.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -2,11 +2,10 @@
 /**
  * TestLink Open Source Project - http://testlink.sourceforge.net/ 
  *
- * Filename $RCSfile: int_seapine.php,v $
+ * Filename: int_seapine.php
  *
- * @version $Revision: 1.3 $
- *
  * @author needles - 20080207 - created
+ * 20110227 - franciscom - BUGID 4266 - removed $m_ prefix from class properties
  * 20080207 - needles - created
 **/
 /** Interface name */
@@ -15,14 +14,14 @@
 class seapineInterface extends bugtrackingInterface
 {
 	//members to store the bugtracking information
-	var $m_dbHost = BUG_TRACK_DB_HOST;
-	var $m_dbProjectID = BUG_TRACK_PROJECT_ID;
-	var $m_dbName = BUG_TRACK_DB_NAME;
-	var $m_dbUser = BUG_TRACK_DB_USER;
-	var $m_dbPass = BUG_TRACK_DB_PASS;
-	var $m_dbType = BUG_TRACK_DB_TYPE;
-	var $m_showBugURL = BUG_TRACK_HREF;
-	var $m_enterBugURL = BUG_TRACK_ENTER_BUG_HREF;
+	var $dbHost = BUG_TRACK_DB_HOST;
+	var $dbProjectID = BUG_TRACK_PROJECT_ID;
+	var $dbName = BUG_TRACK_DB_NAME;
+	var $dbUser = BUG_TRACK_DB_USER;
+	var $dbPass = BUG_TRACK_DB_PASS;
+	var $dbType = BUG_TRACK_DB_TYPE;
+	var $showBugURL = BUG_TRACK_HREF;
+	var $enterBugURL = BUG_TRACK_ENTER_BUG_HREF;
 	
 	/**
 	 * Return the URL to the bugtracking page for viewing 
@@ -38,7 +37,7 @@
 	 **/
 	function buildViewBugURL($id)
 	{
-		return $this->m_showBugURL.$id;		
+		return $this->showBugURL.$id;		
 	}
 	
 	/**
@@ -53,15 +52,15 @@
 			return null;
 	
 		$status = null;
-		$query = "SELECT Name as bug_status from {$this->m_dbName}.defects, {$this->m_dbName}.states
+		$query = "SELECT Name as bug_status from {$this->dbName}.defects, {$this->dbName}.states
 				WHERE defects.status = states.idrecord AND DefectNum='" . $id."' 
-				AND states.projectid ='{$this->m_dbProjectID}' 
-				AND defects.projectid ='{$this->m_dbProjectID}'";
+				AND states.projectid ='{$this->dbProjectID}' 
+				AND defects.projectid ='{$this->dbProjectID}'";
 		
-		$result = $this->m_dbConnection->exec_query($query);
+		$result = $this->dbConnection->exec_query($query);
 		if ($result)
 		{
-			$status = $this->m_dbConnection->fetch_array($result);
+			$status = $this->dbConnection->fetch_array($result);
 			if ($status)
 			{
 				$status = $status['bug_status'];
@@ -90,14 +89,14 @@
     }
     
 		$status = null;
-		$query = "SELECT Summary as shrt_desc FROM {$this->m_dbName}.defects WHERE DefectNum='" . $id."' 
-		AND defects.projectid ='{$this->m_dbProjectID}'";
+		$query = "SELECT Summary as shrt_desc FROM {$this->dbName}.defects WHERE DefectNum='" . $id."' 
+		AND defects.projectid ='{$this->dbProjectID}'";
 
-		$result = $this->m_dbConnection->exec_query($query);
+		$result = $this->dbConnection->exec_query($query);
 		$summary = null;
 		if ($result)
 		{
-			$summary = $this->m_dbConnection->fetch_array($result);
+			$summary = $this->dbConnection->fetch_array($result);
 			if ($summary)
 			{
 				$summary = $summary[0];

Copied: trunk/testlink/lib/execute/execHistory.php (from rev 18329, vendor/testlink/lib/execute/execHistory.php)
===================================================================
--- trunk/testlink/lib/execute/execHistory.php	                        (rev 0)
+++ trunk/testlink/lib/execute/execHistory.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -0,0 +1,53 @@
+<?php
+/**
+ * TestLink Open Source Project - http://testlink.sourceforge.net/ 
+ * This script is distributed under the GNU General Public License 2 or later. 
+ *
+ * @filesource	execHistory.php
+ *
+**/
+require_once('../../config.inc.php');
+require_once('common.php');
+require_once('exec.inc.php');
+require_once("web_editor.php");
+
+testlinkInitPage($db);
+$templateCfg = templateConfiguration();
+
+$tcase_mgr = new testcase($db);
+$args = init_args();
+$gui = new stdClass();
+
+$node['basic'] = $tcase_mgr->tree_manager->get_node_hierarchy_info($args->tcase_id); 
+$node['specific'] = $tcase_mgr->getExternalID($args->tcase_id); 
+$idCard = $node['specific'][0] . ' : ' . $node['basic']['name'];
+
+// $linkedItems = $tcase_mgr->get_linked_versions($args->tcase_id,null,array('output' => 'minimal'));
+$gui->execSet = $tcase_mgr->getExecutionSet($args->tcase_id);
+$gui->execPlatformSet = null;
+if(!is_null($gui->execSet) )
+{
+	$gui->execPlatformSet = $tcase_mgr->getExecutedPlatforms($args->tcase_id);
+}
+$gui->displayPlatformCol = !is_null($gui->execPlatformSet) ? 1 : 0;
+
+$gui->main_descr = lang_get('execution_history');
+$gui->detailed_descr = lang_get('test_case') . ' ' . $idCard;
+$smarty = new TLSmarty();
+$smarty->assign('gui',$gui);  
+$smarty->display($templateCfg->template_dir . $templateCfg->default_template);
+
+
+function init_args($cfgObj)
+{
+	$args = new stdClass();
+	$_REQUEST = strings_stripSlashes($_REQUEST);
+	$iParams = array("tcase_id" => array(tlInputParameter::INT_N));
+	$pParams = R_PARAMS($iParams);
+
+	$args = new stdClass();
+	$args->tcase_id = intval($pParams["tcase_id"]);
+	
+	return $args;
+}
+?>
\ No newline at end of file

Modified: trunk/testlink/lib/execute/execSetResults.php
===================================================================
--- trunk/testlink/lib/execute/execSetResults.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/execute/execSetResults.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,1461 +1,1588 @@
-<?php
-/**
- * TestLink Open Source Project - http://testlink.sourceforge.net/ 
- *
- * Filename $RCSfile: execSetResults.php,v $
- *
- * @version $Revision: 1.172.2.2 $
- * @modified $Date: 2011/01/05 12:42:06 $ $Author: asimon83 $
- *
- * rev:
- *  20110105 - asimon - BUGID 3878: "Save and move to next" does not respect filter settings
- *  20110104 - aismon - BUGID 3643: apply filters earlier in script instead of loading unnecessary data
- *  20100927 - asimon - avoid warning in event log
- *	20100926 - franciscom - BUGID 3421: Test Case Execution feature - Add Export All test Case in TEST SUITE button
- *							added $gui->tcversionSet
- *	
- *  20100922 - asimon - let this page be functional withouth a form token too, changed init_args()
- *	20100821 - franciscom - BUGID 3431 - Custom Field values at Test Case VERSION Level
- *	20100821 - franciscom - code layout refactoring
- *  20100812 - asimon - BUGID 3672
- *  20100709 - asimon - BUGID 3590, BUGID 3574: build_id set to 0 as default instead of null
- *  20100628 - asimon - removal of constants from filter control class
- *  20100625 - asimon - added parameters $bugInterfaceOn, $bugInterface to exec_additional_info()
- *                      to avoid warnings in event log,
- *                      fixed a little bug in platform id initializing in init_args()
- *                      (now number 0 instead of value null)
- *  20100624 - asimon - CVS merge (experimental branch to HEAD)
- *  20100624 - asimon - refactoring for new filters
- *	20100527 - franciscom - BUGID 3479: Bulk Execution - Custom Fields Bulk Assignment
- *  20100527 - Julian - platform description is now shown/hidden according to setting on config
- *	20100520 - franciscom - BUGID 3478  Testcase ID not updated when using save and move next
- *  20100428 - asimon - BUGID 3301 and related, added logic to refresh tree after tc execution
- *  20100313 - franciscom - BUGID 3276
- *  20100204 - asimon - BUGID 2455 & 3026, little changes for filtering
- *  20100121 - franciscom - missing platform feature refactoring
- *	20091205 - franciscom - BUGID 0002469: CFG-Parameters to show notes/details on test-execution
- *  20091111 - franciscom - BUGID 2938 - Feature: Save and Go to next test case in test suite.
- *  20090922 - franciscom - added contribution idea, when using bulk operation
- *                          display last execution status.
- *
- *	20090913 - franciscom - fixed bug on filter_status initialization
- *                          fixed bug on bulk execution due to bad option
- *                          on get_linked_tcversions() call.
- *                         
- *	20090815 - franciscom - platform feature	
- *  20090808 - franciscom - gen_spec_view call refactoring
- *  20090526 - franciscom - now custom fields for testplan_design are managed
- *
- *  20090419 - franciscom - BUGID 2364 - added management of refreshTree
- *                          initializeRights() refactored
- *  20090409 - amkhullar - updated code not written properly.
- *  20090330 - franciscom - fixed bug on test plan custom field get.
- *  20090325 - amkhullar - BUGID 2267
- *  20090210 - amkhullar - BUGID 2068
- *  20080827 - franciscom - BUGID 1692
- *  20080811 - franciscom - BUGID 1650 (REQ)
- *  
- *  20080104 - franciscom - REQ 1232 - web editor on execution notes
- *                          added createExecNotesWebEditor()
- *
-**/
-require_once('../../config.inc.php');
-require_once('common.php');
-require_once('exec.inc.php');
-require_once("attachments.inc.php");
-require_once("specview.php");
-require_once("web_editor.php");
-
-$cfg=getCfg();
-require_once(require_web_editor($cfg->editorCfg['type']));
-
-// BUGID 3276
-// CRITIC:
-// If call to testlinkInitPage() is done AFTER require_once for BTS
-// log to event viewer fails, but log to file works ok
-testlinkInitPage($db);
-if($cfg->bts_type != 'NO')
-{
-  require_once(TL_ABS_PATH. 'lib' . DIRECTORY_SEPARATOR . 'bugtracking' . 
-               DIRECTORY_SEPARATOR . 'int_bugtracking.php');
-}
-
-
-$templateCfg = templateConfiguration();
-
-$tcversion_id = null;
-$submitResult = null;
-$args = init_args($cfg);
-
-$smarty = new TLSmarty();
-$tree_mgr = new tree($db);
-$tplan_mgr = new testplan($db);
-$tcase_mgr = new testcase($db);
-$exec_cfield_mgr = new exec_cfield_mgr($db,$args->tproject_id);
-$attachmentRepository = tlAttachmentRepository::create($db);
-$req_mgr = new requirement_mgr($db);
-
-$gui = initializeGui($db,$args,$cfg,$tplan_mgr,$tcase_mgr);
-$_SESSION['history_on'] = $gui->history_on;
-$attachmentInfos = null;
-
-$do_show_instructions = ($args->level == "" || $args->level == 'testproject') ? 1 : 0;
-if ($do_show_instructions)
-{
-    show_instructions('executeTest');
-    exit();
-}
-
-// ---------------------------------------------------------
-// Testplan executions and result archiving. Checks whether execute cases button was clicked
-//
-if($args->doExec == 1)
-{
-	/** @note get testcase ids in an array */
-	if(!is_null($args->tc_versions) && count($args->tc_versions))
-	{
-		$status_and_notes=do_remote_execution($db,$args->tc_versions);
-
-		// Need to be added to $_REQUEST, because we are using $_REQUEST as input
-		// for the function responsible of writing exec results. write_execution()
-		$status_map = $status_and_notes['status'];
-		$notes_map = $status_and_notes['notes'];
-
-		if(count($status_map))
-		{
-			foreach($status_map as $key => $value)
-			{
-				$_REQUEST['status'][$key] = $value;  
-				$_REQUEST['notes'][$key] = $notes_map[$key];  
-			} 
-		}
-	   
-	}
-}	
-// -----------------------------------------------------------
-// When nullify filter_status - 20080504 - DO NOT REMOVE -
-// 
-// May be in the following situation we do not HAVE to apply filter status:
-// 1. User have filter for Not Run on Tree
-// 2. Clicks on TC XXX
-// 3. Executes TC
-// 4. DO NOT UPDATE TREE.
-//    we do not update automatically to avoid:
-//    a) performance problems
-//    b) delays on operations due to tree redraw
-//    c) loose tree status due to lack of feature of tree engine
-//
-// 5. Clicks again on TC XXX
-// If we use filter, we will get No Data Available.
-//
-// When working on show_testsuite_contents mode (OLD MODE) when we show
-// all testcases inside a testsuite that verifies a filter criteria WE NEED TO APPLY FILTER
-//
-// We do not have this problem when this page is called after user have executed,
-// probably because filter_status is not send back.
-//
-// I will add logic to nullify filter_status on init_args()
-// 
-// 20080224 - franciscom - BUGID 1056
-// 20070306 - franciscom - BUGID 705
-// 20070914 - jbarchibald - added $cf_selected parameter
-//
-
-// 20081221 - franciscom                              
-// BUGID 3406
-$options = array('only_executed' => true, 'output' => 'mapOfArray',
-				 'include_unassigned' => $args->include_unassigned,
-                 'user_assignments_per_build' => $args->build_id);
-
-
-if(is_null($args->filter_status) || in_array($cfg->tc_status['not_run'],$args->filter_status))
-{
-    $options['only_executed'] = false;
-}
-
-// Added platform_id filter
-// BUGID 3643 - don't apply filters further down below, do the filtering already here
-//$filters = array('tcase_id' => $args->tc_id,  'keyword_id' => $args->keyword_id,
-$filters = array('tcase_id' => $args->testcases_to_show,  'keyword_id' => $args->keyword_id,
-                 'assigned_to' => $args->filter_assigned_to, 'exec_status' => $args->filter_status,
-                 'build_id' => $args->build_id, 'cf_hash' => $args->cf_selected,
-                 'platform_id' => $args->platform_id);
-
-$linked_tcversions = $tplan_mgr->get_linked_tcversions($args->tplan_id,$filters,$options);
-$tcase_id = 0;
-$userid_array = null;
-
-if(!is_null($linked_tcversions))
-{
-	$items_to_exec = array();
-	$_SESSION['s_lastAttachmentInfos'] = null;
-    if($args->level == 'testcase')
-    {
-    	// Warning!!! - $gui is passed by reference to be updated inside function
-    	$tcase = null;
-        list($tcase_id,$tcversion_id) = processTestCase($tcase,$gui,$args,$cfg,$linked_tcversions,
-                                                        $tree_mgr,$tcase_mgr,$attachmentRepository);
-    }
-    else
-    {
-        list($tcase_id,$tcversion_id) = processTestSuite($db,$gui,$args,$linked_tcversions,
-                                                         $tree_mgr,$tcase_mgr,$attachmentRepository);
-    }
-
-	// 20100927 - asimon - check if value is an array before calling implode
-	// to avoid warnings in event log
-   	$gui->tcversionSet = is_array($tcversion_id) ? implode(',',$tcversion_id) : $tcversion_id;
-
-    // will create a record even if the testcase version has not been executed (GET_NO_EXEC)
-    $gui->map_last_exec = getLastExecution($db,$tcase_id,$tcversion_id,$gui,$args,$tcase_mgr);
-    
-    // --------------------------------------------------------------------------------------------
-    // Results to DB
-    if ($args->save_results || $args->do_bulk_save || $args->save_and_next)
-    {
-    	// this has to be done to do not break logic present on write_execution()
-    	$args->save_results = $args->save_and_next ? $args->save_and_next : $args->save_results;
-    	$_REQUEST['save_results'] = $args->save_results;
-    	$submitResult = write_execution($db,$args,$_REQUEST,$gui->map_last_exec);
-        
-        // Need to re-read to update test case status
-        if ($args->save_and_next) 
-        {
-			$nextItem = $tplan_mgr->getTestCaseNextSibling($args->tplan_id,$tcversion_id,$args->platform_id);
-			
-			// BUGID 3878
-			while (!is_null($nextItem) && !in_array($nextItem['tcase_id'], $args->testcases_to_show)) {
-				$nextItem = $tplan_mgr->getTestCaseNextSibling($args->tplan_id,$nextItem['tcversion_id'],$args->platform_id);
-			}
-			
-			if( !is_null($nextItem) )
-			{
-				$tcase_id = $nextItem['tcase_id'];
-				$tcversion_id = $nextItem['tcversion_id'];
-				// BUGID 3478
-         		processTestCase($nextItem,$gui,$args,$cfg,$linked_tcversions,$tree_mgr,$tcase_mgr,$attachmentRepository);
-			}
-			
-        }
-        $gui->map_last_exec=getLastExecution($db,$tcase_id,$tcversion_id,$gui,$args,$tcase_mgr);
-    }
-
-    if ($args->doDelete)
-    {
-    	delete_execution($db,$args->exec_to_delete);
-    }
-    // --------------------------------------------------------------------------------------------
-    
-    $gui->map_last_exec_any_build = null;
-    $gui->other_execs=null;
-    $testerid = null;
-    
-    
-    if($args->level == 'testcase')
-    {
-    	// @TODO 20090815 - franciscom check what to do with platform
-    	if( $cfg->exec_cfg->show_last_exec_any_build )
-    	{
-    		// 20090716 - franciscom - get_last_execution() interface changes
-			$options=array('getNoExecutions' => 1, 'groupByBuild' => 0);
-    	    $gui->map_last_exec_any_build = $tcase_mgr->get_last_execution($tcase_id,$tcversion_id,$args->tplan_id,
-    	                                                                   testcase::ANY_BUILD,
-    	                                                                   $args->platform_id,$options);
-    	    
-    	    //Get UserID and Updater ID for current Version
-    	    $tc_current = $gui->map_last_exec_any_build;
-    	    foreach ($tc_current as $key => $value)
-    	    {
-				$testerid = $value['tester_id'];
-			    $userid_array[$testerid] = $testerid;
-    	    }	    
-    	}
-    	
-    	$gui->req_details = $req_mgr->get_all_for_tcase($tcase_id); //Bug 2068
-    	$gui->other_execs=getOtherExecutions($db,$tcase_id,$tcversion_id,$gui,$args,$cfg,$tcase_mgr);
-    	// Get attachment,bugs, etc
-    	if(!is_null($gui->other_execs))
-    	{
-    		//Get the Tester ID for all previous executions
-			  foreach ($gui->other_execs as $key => $execution)
-			  {    	
-		      	foreach ($execution as $singleExecution)
-		      	{    			  
-			  	      $testerid = $singleExecution['tester_id'];
-			  	      $userid_array[$testerid] = $testerid;
-		      	}    	
-			  }
-    	
-		  // asimon - added $g_bugInterfaceOn, $g_bugInterface
-    	  $other_info=exec_additional_info($db,$attachmentRepository,$tcase_mgr,$gui->other_execs,
-    	  $args->tplan_id,$args->tproject_id, $g_bugInterfaceOn, $g_bugInterface);
-    	  $gui->attachments=$other_info['attachment'];
-    	  $gui->bugs=$other_info['bugs'];
-    	  $gui->other_exec_cfields=$other_info['cfexec_values'];
-    	 
-    	  // this piece of code is useful to avoid error on smarty template due to undefined value   
-    	  if( is_array($tcversion_id) && (count($gui->other_execs) != count($gui->map_last_exec)) )
-    	  {
-    	    foreach($tcversion_id as $version_id)
-    	    {
-    	        if( !isset($gui->other_execs[$version_id]) )
-    	        {
-    	            $gui->other_execs[$version_id]=null;  
-    	        }  
-    	    }
-    	  }
-    	
-    	} // if(!is_null($gui->other_execs))
-    } 	
-
-} // if(!is_null($linked_tcversions))
-
-
-// Removing duplicate and NULL id's
-unset($userid_array['']);
-$userSet = null;
-if ($userid_array)
-{
-	foreach($userid_array as $value)
-	{		
-		$userSet[] = $value;
-	}
-}
-smarty_assign_tsuite_info($smarty,$_REQUEST,$db,$tree_mgr,$tcase_id,$args->tproject_id);
-
-// BUGID 3643 - don't apply filters here
-// BUGID 2455, BUGID 3026
-// BUGID 3516
-// remove testcases which shall not be displayed because they were filtered out
-//if (!is_null($args->testcases_to_show) && $args->level == 'testsuite') {
-//	foreach($gui->map_last_exec as $key => $tc) {
-//		if (!in_array($tc['testcase_id'], $args->testcases_to_show)) {
-//			unset($gui->map_last_exec[$key]); // tc shall not be displayed
-//		}
-//	}
-//	// fix indexes for smarty
-//	$gui->map_last_exec = array_values($gui->map_last_exec);
-//}
-
-// $gui->can_use_bulk_op=$args->level == 'testsuite' && (!is_null($gui->map_last_exec) && count($gui->map_last_exec) > 1) ? 1 : 0;
-$gui->can_use_bulk_op = ($args->level == 'testsuite' && count($gui->map_last_exec) > 1) ? 1 : 0;
-
-if( $gui->can_use_bulk_op )
-{
-    $gui->execStatusValues=createResultsMenu();
-    if( isset($gui->execStatusValues[$cfg->tc_status['all']]) )
-    {
-        unset($gui->execStatusValues[$cfg->tc_status['all']]);
-    }
-
-    $of=web_editor("bulk_exec_notes",$_SESSION['basehref'],$cfg->editorCfg);
-   	$of->Value = getItemTemplateContents('execution_template', $of->InstanceName, null);
-    
-    // Magic numbers that can be determined by trial and error
-    $gui->bulk_exec_notes_editor=$of->CreateHTML(10,60);         
-    unset($of);    
-}
-else
-{
-    $gui->exec_notes_editors=createExecNotesWebEditor($gui->map_last_exec,$_SESSION['basehref'],$cfg->editorCfg);
-}
-
-// To silence smarty errors
-//  future must be initialized in a right way
-$smarty->assign('test_automation_enabled',0);
-$smarty->assign('cfg',$cfg);
-$smarty->assign('users',tlUser::getByIDs($db,$userSet,'id'));
-$smarty->assign('gui',$gui);
-$smarty->assign('g_bugInterface', $g_bugInterface);
-$smarty->display($templateCfg->template_dir . $templateCfg->default_template);
-
-/*
-  function: 
-
-  args:
-  
-  returns: 
-  
-  rev:
-    20100922 - asimon - let this page be functional withouth a form token too
-	20100625 - asimon - fixed a little bug in platform id initializing when no platform is used
-	                    (now number 0 instead of value null)
-	20090913 - franciscom - fixed bug on filter_status initialization
-*/
-function init_args($cfgObj)
-{
-	$args = new stdClass();
-	$_REQUEST = strings_stripSlashes($_REQUEST);
-	
-    // BUGID 3516
-	$mode = 'execution_mode';
-	$form_token = isset($_REQUEST['form_token']) ? $_REQUEST['form_token'] : 0;
-	$session_data = isset($_SESSION[$mode]) && isset($_SESSION[$mode][$form_token]) ? $_SESSION[$mode][$form_token] : null;
-	
-	$args->doExec = isset($_REQUEST['execute_cases']) ? 1 : 0;
-	$args->doDelete = isset($_REQUEST['do_delete']) ? $_REQUEST['do_delete'] : 0;
-	$args->cf_selected = isset($_REQUEST['cfields']) ? unserialize($_REQUEST['cfields']) : null;
-	
-	// can be a list, will arrive via form POST
-	$args->tc_versions = isset($_REQUEST['tc_version']) ? $_REQUEST['tc_version'] : null;  
-  
-	// BUGID 3516,3590, 3574, 3672
-	$key2null = array('filter_status' => 'filter_result_result','filter_assigned_to' => 'filter_assigned_user', 
-					  'build_id' => 'setting_build', 'platform_id' => 'setting_platform');
-	
-	foreach($key2null as $key => $sessionKey)
-	{
-		$args->$key = isset($session_data[$sessionKey]) ? $session_data[$sessionKey] : null;
-		// let this page be functional withouth a form token too (when called from testcases assigned to me)
-		if (is_null($args->$key)) {
-			$args->$key = isset($_REQUEST[$sessionKey]) ? $_REQUEST[$sessionKey] : null;
-		}
-	}
-
-	if (is_null($args->build_id)) {
-		$args->build_id = (isset($_REQUEST['build_id']) && is_numeric($_REQUEST['build_id'])) ? $_REQUEST['build_id'] : 0;
-	}
-	
-	if (is_null($args->platform_id)) {
-		$args->platform_id = (isset($_REQUEST['platform_id']) && is_numeric($_REQUEST['platform_id'])) ? $_REQUEST['platform_id'] : 0;
-	}
-
-	$key2loop = array('level' => '','status' => null, 'do_bulk_save' => 0, 'save_results' => 0, 'save_and_next' => 0);
-	foreach($key2loop as $key => $value)
-	{
-		$args->$key = isset($_REQUEST[$key]) ? $_REQUEST[$key] : $value;
-	}
-
-    // See details on: "When nullify filter_status - 20080504" in this file
-    if(is_null($args->filter_status) || trim($args->filter_status) || $args->level == 'testcase')
-    {
-        $args->filter_status = null;  
-    }
-    else
-    {
-        $args->filter_status = unserialize($args->filter_status);
-    }
-
- 	$args->id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0;
-    $cookiePrefix = 'TL_execSetResults_';
-      
-    // IMPORTANT: logic for test suite notes CAN NOT BE IMPLEMENTED HERE
-    //            see smarty_assign_tsuite_info() in this file.  
-    $key4cookies = array('tpn_view_status' => 'testplan_notes','bn_view_status' => 'build_description',
-                         'platform_notes_view_status' => 'platform_description');
-    
-    // BUGID 3516, 3590, 3574
-	$key2loop = array('id' => 0, 'exec_to_delete' => 0, 'version_id' => 0, 'tpn_view_status' => 0, 
-					  'bn_view_status' => 0, 'bc_view_status' => 1,'platform_notes_view_status' => 0);
-	
-	foreach($key4cookies as $key => $cfgKey)
-	{
-		$cookieKey = $cookiePrefix . $key;
-		if( !isset($_REQUEST[$key]) )
-		{
-			// First time we are entered here => we can need to understand how to proceed
-		    switch($cfgObj->exec_cfg->expand_collapse->$cfgKey )
-		    {
-		    	case LAST_USER_CHOICE:
-					if (isset($_COOKIE[$cookieKey]) ) 
-    				{
-    					$key2loop[$key] = $_COOKIE[$cookieKey];
-					}
-				break;	
-
-				default:
-					$key2loop[$key] = $cfgObj->exec_cfg->expand_collapse->$cfgKey;
-				break;
-		    } 
-		}
-    }
-    				            
-	foreach($key2loop as $key => $value)
-	{
- 		$args->$key = isset($_REQUEST[$key]) ? intval($_REQUEST[$key]) : $value;
-        if( isset($key4cookies[$key]) )
-		{
-			setcookie($cookiePrefix . $key,$args->$key,TL_COOKIE_KEEPTIME, '/');
-		}
-	}
-
-	
-    switch($args->level)
-    {
-        case 'testcase':
-        $args->tc_id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null;
-        // some problems with $_GET that has impact on logic 'Save and Go to next test case';
-        if( !is_null($args->tc_versions) )
-        {
-        	$args->tc_id = current($args->tc_versions);
-        	$args->id = $args->tc_id;
-        	$args->version_id = key($args->tc_versions);
-        } 
-        $args->tsuite_id = null;
-        break;
-          
-        case 'testsuite':
-        $args->tsuite_id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null;
-        $args->tc_id = null;
-        break;
-    }
-
-
-	// BUGID 3516
-	$args->keyword_id = 0;
-	if (isset($session_data['filter_keywords'])) {
-		$args->keyword_id = $session_data['filter_keywords'];
-		if (is_array($args->keyword_id) && count($args->keyword_id) == 1) {
-			$args->keyword_id = $args->keyword_id[0];
-		}
-	}
-	
-	$args->keywordsFilterType = null;
-	if (isset($session_data['filter_keywords_filter_type'])) {
-		$args->keywordsFilterType = $session_data['filter_keywords_filter_type'];
-	}
-    
-    // Checkbox
-    $args->include_unassigned = isset($session_data['filter_assigned_user_include_unassigned']) 
-                                && $session_data['filter_assigned_user_include_unassigned'] != 0 ? 1 : 0;
-	
-	
-    // 20090419 - franciscom - BUGID
-    // BUGID 3301 and related - asimon - changed refresh tree logic 
-    // to adapt behavior of other forms (like tc edit)
-    // additionally modified to only refresh on saving of test results, not on every click
-    $args->refreshTree = isset($session_data['setting_refresh_tree_on_action'])
-                         ? $session_data['setting_refresh_tree_on_action'] : 0;
-	
-	$args->tproject_id = isset($_REQUEST['tproject_id']) ? $_REQUEST['tproject_id'] : $_SESSION['testprojectID'];
-	
-	// BUGID 2267
-	$args->tplan_id = isset($_REQUEST['tplan_id']) ? $_REQUEST['tplan_id'] : $_SESSION['testplanID'];
-	$args->user = $_SESSION['currentUser'];
-    $args->user_id = $args->user->dbID;
-
-    // BUGID 3516
-   	// BUGID 2455,BUGID 3026
-   	$args->testcases_to_show = null;
-	if (isset($session_data['testcases_to_show'])) {
-		$args->testcases_to_show = $session_data['testcases_to_show'];
-	}
-	return $args;
-}
-
-
-/*
-  function: 
-
-  args :
-  
-  returns: 
-
-*/
-function manage_history_on($hash_REQUEST,$hash_SESSION,
-                           $exec_cfg,$btn_on_name,$btn_off_name,$hidden_on_name)
-{
-    if( isset($hash_REQUEST[$btn_on_name]) )
-    {
-		    $history_on = true;
-    }
-    elseif(isset($_REQUEST[$btn_off_name]))
-    {
-		    $history_on = false;
-    }
-    elseif (isset($_REQUEST[$hidden_on_name]))
-    {
-        $history_on = $_REQUEST[$hidden_on_name];
-    }
-    elseif (isset($_SESSION[$hidden_on_name]))
-    {
-        $history_on = $_SESSION[$hidden_on_name];
-    }
-    else
-    {
-        $history_on = $exec_cfg->history_on;
-    }
-    return $history_on;
-}
-/*
-  function: get_ts_name_details
-
-  args :
-  
-  returns: map with key=TCID
-           values= assoc_array([tsuite_id => 5341
-                               [details] => my detailas ts1
-                               [tcid] => 5343
-                               [tsuite_name] => ts1)
-*/
-function get_ts_name_details(&$db,$tcase_id)
-{
-    $tables['testsuites'] = DB_TABLE_PREFIX . 'testsuites';
-    $tables['nodes_hierarchy'] = DB_TABLE_PREFIX . 'nodes_hierarchy';
-
-    
-	$rs = '';
-	$do_query = true;
-	$sql = "SELECT TS.id AS tsuite_id, TS.details, 
-	             NHA.id AS tc_id, NHB.name AS tsuite_name 
-	      FROM {$tables['testsuites']} TS, {$tables['nodes_hierarchy']} NHA, 
-	           {$tables['nodes_hierarchy']} NHB
-	      WHERE TS.id=NHA.parent_id
-	      AND   NHB.id=NHA.parent_id ";
-	if( is_array($tcase_id) && count($tcase_id) > 0)
-	{
-		$in_list = implode(",",$tcase_id);
-		$sql .= "AND NHA.id IN (" . $in_list . ")";
-	}
-	else if(!is_null($tcase_id))
-	{
-		$sql .= "AND NHA.id={$tcase_id}";
-	}
-	else
-	{
-		$do_query = false;
-	}
-	if($do_query)
-	{
-		$rs = $db->fetchRowsIntoMap($sql,'tc_id');
-	}
-	return $rs;
-}
-
-/*
-  function: 
-
-  args :
-  
-  returns: 
-
-*/
-function smarty_assign_tsuite_info(&$smarty,&$request_hash, &$db,&$tree_mgr,$tcase_id,$tproject_id)
-{
-  $fpath=$tree_mgr->get_full_path_verbose($tcase_id, array('output_format' => 'id_name'));
-  $tsuite_info = get_ts_name_details($db,$tcase_id);
-  foreach($fpath as $key => $value)
-  {
-      unset($value['name'][0]);  // Remove test plan name
-      unset($value['node_id'][0]);  // Remove test plan name
-      $str='';
-      foreach($value['name'] as $jdx => $elem)
-      {
-      	$str .= "<a href=\"javascript:openTestSuiteWindow(" . $value['node_id'][$jdx] . ")\"> ";
-      	$str .= htmlentities($elem) . '</a>/';
-      }
-      $tsuite_info[$key]['tsuite_name']=$str;  
-  }
-  $smarty->assign('tsuite_info',$tsuite_info);
-  
-  // --------------------------------------------------------------------------------
-	if(!is_null($tsuite_info))
-  	{
-        $cookieKey = 'TL_execSetResults_tsdetails_view_status';
-		$exec_cfg = config_get('exec_cfg');
-
-    	$a_tsvw=array();
-    	$a_ts=array();
-    	$a_tsval=array();
-    	
-    	$tsuite_mgr = New testsuite($db);
-    	
-    	foreach($tsuite_info as $key => $elem)
-    	{
-    	  	$main_k = 'tsdetails_view_status_' . $key;
-    	  	$a_tsvw[] = $main_k;
-    	  	$a_ts[] = 'tsdetails_' . $key;
-            $expand_collapse = 0;
-			if( !isset($request_hash[$main_k]) )
-			{
-				// First time we are entered here => we can need to understand how to proceed
-			    switch($exec_cfg->expand_collapse->testsuite_details)
-			    {
-			    	case LAST_USER_CHOICE:
-						if (isset($_COOKIE[$cookieKey]) ) 
-    					{
-    						$expand_collapse = $_COOKIE[$cookieKey];
-						}
-					break;	
-        	
-					default:
-						$expand_collapse = $exec_cfg->expand_collapse->testsuite_details;
-					break;
-			    } 
-			}
-    	  	$a_tsval[] = isset($request_hash[$main_k]) ? $request_hash[$main_k] : $expand_collapse;
-    	  	$tsuite_id = $elem['tsuite_id'];
-    	  	$tc_id = $elem['tc_id'];
-    	  	if(!isset($cached_cf[$tsuite_id]))
-    	  	{
-    	  		$cached_cf[$tsuite_id] = $tsuite_mgr->html_table_of_custom_field_values($tsuite_id,'design',null,$tproject_id);
-    	  	}
-    	  	$ts_cf_smarty[$tc_id] = $cached_cf[$tsuite_id];
-    	}
-    	if( count($a_tsval) > 0 )
-    	{
-			setcookie($cookieKey,$a_tsval[0],TL_COOKIE_KEEPTIME, '/');
-    	}
-    	
-    	$smarty->assign('tsd_div_id_list',implode(",",$a_ts));
-    	$smarty->assign('tsd_hidden_id_list',implode(",",$a_tsvw));
-    	$smarty->assign('tsd_val_for_hidden_list',implode(",",$a_tsval));
-    	
-		$smarty->assign('ts_cf_smarty',$ts_cf_smarty);
-	}
-
-}  
-// --------------------------------------------------------------------------------
-
-
-/*
-  function: 
-
-  args :
-  
-  returns: 
-
- at internal revisions:
-  20100625 - asimon - added parameters $bugInterfaceOn, $bugInterface 
-                      to get rid of warning in event log
-
-*/
-function exec_additional_info(&$db, $attachmentRepository, &$tcase_mgr, $other_execs, 
-                              $tplan_id, $tproject_id, $bugInterfaceOn, $bugInterface)
-{
-//  $bugInterfaceOn = config_get('bugInterfaceOn');
-//  $bugInterface = config_get('bugInterface');
-  $attachmentInfos = null;
-  $bugs = null;
-  $cfexec_values = null;
-
-  foreach($other_execs as $tcversion_id => $execInfo)
-  {
-    $num_elem = sizeof($execInfo);   
-  	for($idx = 0;$idx < $num_elem;$idx++)
-  	{
-  		$exec_id = $execInfo[$idx]['execution_id'];
-  		
-  		$aInfo = getAttachmentInfos($attachmentRepository,$exec_id,'executions',true,1);
-  		if ($aInfo)
-  			$attachmentInfos[$exec_id] = $aInfo;
-  		
-  		if($bugInterfaceOn)
-  		{
-			$the_bugs = get_bugs_for_exec($db,$bugInterface,$exec_id);
-			if(count($the_bugs) > 0)
-			{
-				$bugs[$exec_id] = $the_bugs;
-			}	
-  		}
-
-      // Custom fields
-      $cfexec_values[$exec_id] = $tcase_mgr->html_table_of_custom_field_values($tcversion_id,'execution',null,
-                                                                               $exec_id,$tplan_id,$tproject_id);
-  	}
-  }
-  
-  $info = array( 'attachment' => $attachmentInfos,
-                 'bugs' => $bugs,
-                 'cfexec_values' => $cfexec_values);      
-               
-  return $info;
-} //function end
-
-
-/*
-  function: 
-
-  args :
-  
-  returns: 
-
-*/
-function do_remote_execution(&$db,$tc_versions)
-{
-    $resultsCfg = config_get('results');
-    $tc_status = $resultsCfg['status_code'];
-    $tree_mgr = new tree($db);
-    $cfield_mgr = new cfield_mgr($db);
-  
-	$ret=array();
-    $ret["status"]=array();
-	$ret["notes"]=array();
-
-	$executionResults = array();
-
-	$myResult = array();
-	foreach($tc_versions as $version_id => $tcase_id)
-	{
-		// RPC call
-		$executionResults[$tcase_id] = executeTestCase($tcase_id,$tree_mgr,$cfield_mgr);
-		if($executionResults){
-			$myResult = $executionResults[$tcase_id]['result'];
-			$myNotes = $executionResults[$tcase_id]['notes'];
-			if ($myResult != -1 && $myNotes != -1) {
-				$db_now = $db->db_now();
-				$my_notes = $db->prepare_string(trim($myNotes));
-				$my_result = strtolower($myResult);
-				$my_result = $my_result{0};
-				if( $my_result != $tc_status['passed'] && 
-				    $my_result != $tc_status['failed'] && 
-				    $my_result != $tc_status['blocked'])
-				{
-					  $my_result = $tc_status['blocked'];
-				}
-				// 
-				$ret["status"][$version_id] = $myResult;
-				$ret["notes"][$version_id] = $my_notes;
-				//
-				$sql = "INSERT INTO executions (build_id,tester_id,status,testplan_id,tcversion_id,execution_ts,notes) ".
-				       "VALUES ({$build_id},{$user_id},'{$my_result}',{$tplan_id},{$version_id},{$db_now},'{$my_notes}')";
-				$db->exec_query($sql);
-			}
-		}
-
-	}
-	
-	return $ret;
-}
-
-
-/*
-  function: initializeExecMode 
-
-  args:
-  
-  returns: 
-
-*/
-function initializeExecMode(&$db,$exec_cfg,$userObj,$tproject_id,$tplan_id)
-{
-
-    $simple_tester_roles=array_flip($exec_cfg->simple_tester_roles);
-    $effective_role = $userObj->getEffectiveRole($db,$tproject_id,$tplan_id);
-    
-	// SCHLUNDUS: hmm, for user defined roles, this wont work correctly
-	// 20080104 - franciscom - Please explain why do you think will not work ok ?
-	//                         do you prefer to check for exec right ?
-	//
-	// SCHLUNDUS: jep, exactly. If a user defines it own roles than a check for the tester
-	// role will not do the desired effect of putting the logged in user in tester-view-mode
-	// instead we must check for presence (and or absence) the right(s) which mades a user a tester 
-	//
-	// 20080310 - franciscom - 
-	// Role is considered tester if:
-	// role == TL_ROLES_TESTER OR Role has Test Plan execute but not Test Plan planning
-	//
-	//
-	$can_execute = $effective_role->hasRight('testplan_execute');
-	$can_manage = $effective_role->hasRight('testplan_planning');
-    
-	// 20081217 - franciscom
-	// $use_exec_cfg = $effective_role->dbID == TL_ROLES_TESTER || ($can_execute && !$can_manage);
-    $use_exec_cfg = isset($simple_tester_roles[$effective_role->dbID]) || ($can_execute && !$can_manage);
-    
-    return  $use_exec_cfg ? $exec_cfg->exec_mode->tester : 'all';
-} // function end
-
-
-/*
-  function: setTesterAssignment 
-
-  args:
-  
-  returns: 
-  
-  rev: 20100121 - franciscom - platform refactoring
-
-*/
-function setTesterAssignment(&$db,$exec_info,&$tcase_mgr,$tplan_id,$platform_id)
-{     
-	foreach($exec_info as $version_id => $value)
-	{
-		$exec_info[$version_id]['assigned_user'] = '';
-		$exec_info[$version_id]['assigned_user_id'] = 0;
-		
-		// map of map: main key version_id, secondary key: platform_id
-		$p3 = $tcase_mgr->get_version_exec_assignment($version_id,$tplan_id);
-		$assignedTesterId = intval($p3[$version_id][$platform_id]['user_id']);
-		
-		if($assignedTesterId)
-		{
-			$user = tlUser::getByID($db,$assignedTesterId);
-			if ($user)
-			{
-				$exec_info[$version_id]['assigned_user']= $user->getDisplayName();  
-			}
-			$exec_info[$version_id]['assigned_user_id'] = $assignedTesterId;
-		}  
-	}
-	return $exec_info;
-} //function end
-
-/*
-  function: 
-           Reorder executions to mantaing correct visualization order.
-
-  args:
-  
-  returns: 
-
-*/
-function reorderExecutions(&$tcversion_id,&$exec_info)
-{
-    $dummy = array();
-    foreach($tcversion_id as $key => $value)
-    {
-       $dummy[$key] = $exec_info[$value];    
-    }
-    return $dummy;    
-}
-
-/*
-  function: setCanExecute 
-
-  args:
-  
-  returns: 
-
-*/
-function setCanExecute($exec_info,$execution_mode,$can_execute,$tester_id)
-{     
-	foreach($exec_info as $key => $tc_exec) 
-	{
-		$execution_enabled = 0;  
-		if($can_execute == 1 && $tc_exec['active'] == 1)
-		{
-			$assigned_to_me = $tc_exec['assigned_user_id'] == $tester_id ? 1 : 0;
-			$is_free = $tc_exec['assigned_user_id'] == '' ? 1 : 0;
-
-			switch($execution_mode)
-			{
-				case 'assigned_to_me':
-					$execution_enabled = $assigned_to_me;
-					break;
-
-				case 'assigned_to_me_or_free':
-					$execution_enabled = $assigned_to_me || $is_free;
-					break;
-
-				case 'all':
-					$execution_enabled = 1;
-					break;
-
-				default:
-					$execution_enabled = 0;  
-					break;
-			} // switch
-		}
-		$exec_info[$key]['can_be_executed']=$execution_enabled;
-	}
-	return $exec_info;
-} //function end
-
-
-/*
-  function: createExecNotesWebEditor
-            creates map of html needed to display web editors
-            for execution notes.
-            
-  args: tcversions: array where each element has information
-                    about testcase version that can be executed.
-                    
-        basehref: URL            
-        editorCfg:
-  
-  returns: map
-           key: testcase id
-           value: html to display web editor.
-
-  rev : 20080104 - creation  
-*/
-function createExecNotesWebEditor(&$tcversions,$basehref,$editorCfg)
-{
-  
-    if(is_null($tcversions) || count($tcversions) == 0 )
-    {
-        return null;  // nothing todo >>>------> bye!  
-    }
-     
-    // Important Notice:
-    //
-    // When using tinymce or none as web editor, we need to set rows and cols
-    // to appropriate values, to avoid an ugly ui.
-    // null => use default values defined on editor class file
-    //
-    // Rows and Cols values are useless for FCKeditor.
-    //
-    $itemTemplateValue = getItemTemplateContents('execution_template', 'notes', null);
-    foreach($tcversions as $key => $tcv)
-    {
-        $tcversion_id=$tcv['id'];
-        $tcase_id=$tcv['testcase_id'];
-
-        $of=web_editor("notes[{$tcversion_id}]",$basehref,$editorCfg) ;
-        $of->Value = $itemTemplateValue;
-       
-        // Magic numbers that can be determined by trial and error
-        $editors[$tcase_id]=$of->CreateHTML(10,60);         
-        unset($of);
-    }
-    return $editors;
-}
-
-
-
-/*
-  function: getCfg 
-
-  args:
-  
-  returns: 
-
-*/
-function getCfg()
-{
-    $cfg = new stdClass();
-    $cfg->exec_cfg = config_get('exec_cfg');
-    $cfg->gui_cfg = config_get('gui');
-    $cfg->bts_type = config_get('interface_bugs');
-    
-    $results = config_get('results');
-    $cfg->tc_status = $results['status_code'];
-    $cfg->testcase_cfg = config_get('testcase_cfg'); 
-    $cfg->editorCfg = getWebEditorCfg('execution');
-    
-    return $cfg;
-}
-
-
-/*
-  function: initializeRights 
-            create object with rights useful for this feature 
-  
-  args:
-       dbHandler: reference to db object
-       $userObj: reference to current user object
-       tproject_id:
-       tplan_id
-  
-       Warning: this is right interface for this function, but
-                has_rights() can works in a mode (that i consider a dirty one)
-                using SESSION to achieve global coupling.
-                 
-  returns: 
-
-*/
-function initializeRights(&$dbHandler,&$userObj,$tproject_id,$tplan_id)
-{
-    $exec_cfg = config_get('exec_cfg');
-    $grants = new stdClass();
-    
-    $grants->execute = $userObj->hasRight($dbHandler,"testplan_execute",$tproject_id,$tplan_id);
-    $grants->execute = $grants->execute=="yes" ? 1 : 0;
-    
-    // may be in the future this can be converted to a role right
-    $grants->delete_execution=$exec_cfg->can_delete_execution;
-    
-    
-    // may be in the future this can be converted to a role right
-    // Important:
-    // Execution right must be present to consider this configuration option.
-    $grants->edit_exec_notes = $grants->execute && $exec_cfg->edit_notes;
-    
-    // 20090419 - franciscom - BUGID 
-    $grants->edit_testcase = $userObj->hasRight($dbHandler,"mgt_modify_tc",$tproject_id,$tplan_id);
-    $grants->edit_testcase = $grants->edit_testcase=="yes" ? 1 : 0;
-    return $grants;
-}
-
-
-/*
-  function: initializeGui
-
-  args :
-  
-  returns: 
-
-  rev: 20080429 - franciscom
-*/
-function initializeGui(&$dbHandler,&$argsObj,&$cfgObj,&$tplanMgr,&$tcaseMgr)
-{
-    $buildMgr = new build_mgr($dbHandler);
-    $platformMgr = new tlPlatform($dbHandler,$argsObj->tproject_id);
-    
-    $gui = new stdClass();
-    $gui->tplan_id=$argsObj->tplan_id;
-    $gui->tproject_id=$argsObj->tproject_id;
-    $gui->build_id = $argsObj->build_id;
-    $gui->platform_id = $argsObj->platform_id;
-    
-    $gui->execStatusValues=null;
-    $gui->can_use_bulk_op=0;
-    $gui->exec_notes_editors=null;
-    $gui->bulk_exec_notes_editor=null;
-    $gui->req_details=null;
-    $gui->attachmentInfos=null;
-    $gui->bugs=null;
-    $gui->other_exec_cfields=null;
-    $gui->ownerDisplayName = null;
-    
-    $gui->editorType=$cfgObj->editorCfg['type'];
-    $gui->filter_assigned_to=$argsObj->filter_assigned_to;
-    $gui->tester_id=$argsObj->user_id;
-    $gui->include_unassigned=$argsObj->include_unassigned;
-    $gui->tpn_view_status=$argsObj->tpn_view_status;
-    $gui->bn_view_status=$argsObj->bn_view_status;
-    $gui->bc_view_status=$argsObj->bc_view_status;
-    $gui->platform_notes_view_status=$argsObj->platform_notes_view_status;
-
-    $gui->refreshTree = $argsObj->refreshTree;
-    if (!$argsObj->status || $argsObj->status == $cfgObj->tc_status['not_run']) {
-    	$gui->refreshTree = 0;
-    }
-    
-    $gui->map_last_exec_any_build=null;
-    $gui->map_last_exec=null;
-
-    	
-    // 20081122 - franciscom
-    // Just for the record:	
-    // doing this here, we avoid to do on processTestSuite() and processTestCase(),
-    // but absolutely this will not improve in ANY WAY perfomance, because we do not loop
-    // over these two functions. 	
-    $tprojectMgr = new testproject($dbHandler);
-    $gui->tcasePrefix = $tprojectMgr->getTestCasePrefix($argsObj->tproject_id);
-    $build_info = $buildMgr->get_by_id($argsObj->build_id);
-    $gui->build_notes=$build_info['notes'];
-    $gui->build_is_open=($build_info['is_open'] == 1 ? 1 : 0);
-    $gui->execution_types=$tcaseMgr->get_execution_types();
-
-    if($argsObj->filter_assigned_to)
-    {
-    	$userSet = tlUser::getByIds($dbHandler,array_values($argsObj->filter_assigned_to));
-    	if ($userSet)
-    	{
-    	    foreach($userSet as $key => $userObj) 
-    	    {
-    	        $gui->ownerDisplayName[$key] = $userObj->getDisplayName();
-    	    }    
-    	}    
-    }
-    // ------------------------------------------------------------------
-
-    $the_builds = $tplanMgr->get_builds_for_html_options($argsObj->tplan_id);
-    $gui->build_name = isset($the_builds[$argsObj->build_id]) ? $the_builds[$argsObj->build_id] : '';
-
-
-    // 20090419 - franciscom
-    $gui->grants = initializeRights($dbHandler,$argsObj->user,$argsObj->tproject_id,$argsObj->tplan_id);
-    $gui->exec_mode = initializeExecMode($dbHandler,$cfgObj->exec_cfg,
-                                         $argsObj->user,$argsObj->tproject_id,$argsObj->tplan_id);
-
-
-
-    $rs = $tplanMgr->get_by_id($argsObj->tplan_id);
-    $gui->testplan_notes = $rs['notes'];
-
-    // Important note: 
-    // custom fields for test plan can be edited ONLY on design, that's reason why we are using 
-    // scope = 'design' instead of 'execution'
-    $gui->testplan_cfields = $tplanMgr->html_table_of_custom_field_values($argsObj->tplan_id,'design',
-                                                                          array('show_on_execution' => 1));
-    
-    $gui->history_on = manage_history_on($_REQUEST,$_SESSION,$cfgObj->exec_cfg,
-                                         'btn_history_on','btn_history_off','history_on');
-    $gui->history_status_btn_name = $gui->history_on ? 'btn_history_off' : 'btn_history_on';
-
-    $dummy = $platformMgr->getLinkedToTestplan($argsObj->tplan_id);
-    $gui->has_platforms = !is_null($dummy) ? 1 : 0;
-    
-    $gui->platform_info['id']=0;
-    $gui->platform_info['name']='';
-    if(!is_null($argsObj->platform_id) && $argsObj->platform_id > 0 )
-    { 
-    	$gui->platform_info = $platformMgr->getByID($argsObj->platform_id);
-    }
-    
-    
-    $gui->node_id = $argsObj->id;
-    return $gui;
-}
-
-
-/*
-  function: processTestCase
-
-  args :
-  
-  returns: 
-
-  rev: 
-    20090913 - franciscom - changes due to platform feature
-  	20090718 - franciscom - cfield location management
-  	20080811 - franciscom - BUGID 1650 (REQ)
-  
-*/
-function processTestCase($tcase,&$guiObj,&$argsObj,&$cfgObj,$linked_tcversions,
-                         &$treeMgr,&$tcaseMgr,&$docRepository)
-{     
-
-  	// IMPORTANT due  to platform feature
-  	// every element on linked_tcversions will be an array.
-    $cf_filters=array('show_on_execution' => 1); // BUGID 1650 (REQ)
-    $locationFilters=$tcaseMgr->buildCFLocationMap();
-    $guiObj->design_time_cfields='';
-  	$guiObj->testplan_design_time_cfields='';
-  	
-  	$tcase_id = isset($tcase['tcase_id']) ? $tcase['tcase_id'] : $argsObj->id;
-
-  	$items_to_exec[$tcase_id] = $linked_tcversions[$tcase_id][0]['tcversion_id'];    
-  	// $tcversion_id = $linked_tcversions[$tcase_id][0]['tcversion_id'];
-  	$tcversion_id = isset($tcase['tcversion_id']) ? $tcase['tcversion_id'] : $items_to_exec[$tcase_id];
-  	
-  	$link_id = $linked_tcversions[$tcase_id][0]['feature_id'];
-  	$guiObj->tcAttachments[$tcase_id] = getAttachmentInfos($docRepository,$tcase_id,'nodes_hierarchy',1);
-
-	foreach($locationFilters as $locationKey => $filterValue)
-	{
-
-		// BUGID 3431 - Custom Field values at Test Case VERSION Level
-		$finalFilters=$cf_filters+$filterValue;
-    	$guiObj->design_time_cfields[$tcase_id][$locationKey] = 
-  		         $tcaseMgr->html_table_of_custom_field_values($tcase_id,'design',$finalFilters,null,null,
-  		         											  $argsObj->tproject_id,null,$tcversion_id);
-    	
-    	// 20090718 - franciscom - TO BE refactored
-    	$guiObj->testplan_design_time_cfields[$tcase_id] = 
-  		         $tcaseMgr->html_table_of_custom_field_values($tcversion_id,'testplan_design',$cf_filters,
-  		                                                      null,null,$argsObj->tproject_id,null,$link_id);
-
-    }
-
-    // BUGID 856: Guest user can execute test case
-  	if($guiObj->grants->execute)
-  	{
-  	   $guiObj->execution_time_cfields[$tcase_id] = 
-  	            $tcaseMgr->html_table_of_custom_field_inputs($tcase_id,null,'execution',"_{$tcase_id}",null,
-  	                                                         null,$argsObj->tproject_id);
-  	}
-    $tc_info=$treeMgr->get_node_hierarchy_info($tcase_id);
-	$guiObj->tSuiteAttachments[$tc_info['parent_id']] = getAttachmentInfos($docRepository,$tc_info['parent_id'],
-		                                                                   'nodes_hierarchy',true,1);
-
-
-    return array($tcase_id,$tcversion_id);
-}
-
-
-
-
-/*
-  function: getLastExecution
-
-  args :
-  
-  returns: 
-
-  rev: 
-*/
-function getLastExecution(&$dbHandler,$tcase_id,$tcversion_id,$guiObj,$argsObj,&$tcaseMgr)
-{      
-	// 20090716 - franciscom - get_last_execution() interface changes
-	$options=array('getNoExecutions' => 1, 'groupByBuild' => 0);
-    $last_exec = $tcaseMgr->get_last_execution($tcase_id,$tcversion_id,$argsObj->tplan_id,
-                                               $argsObj->build_id,$argsObj->platform_id,$options);
-    
-    if( !is_null($last_exec) )
-    {
-        $last_exec=setTesterAssignment($dbHandler,$last_exec,$tcaseMgr,
-                                       $argsObj->tplan_id,$argsObj->platform_id);
-        
-        // Warning: setCanExecute() must be called AFTER setTesterAssignment()  
-        $can_execute=$guiObj->grants->execute && ($guiObj->build_is_open);
-        $last_exec=setCanExecute($last_exec,$guiObj->exec_mode,
-                                 $can_execute,$argsObj->user_id);
-    }
-    
-    // Reorder executions to mantaing correct visualization order.
-    if( is_array($tcversion_id) )
-    {
-      $last_exec=reorderExecutions($tcversion_id,$last_exec);
-    }
-    return $last_exec;
-}
-
-
-
-/*
-  function: getOtherExecutions
-
-  args :
-  
-  returns: 
-
-  rev: 
-*/
-function getOtherExecutions(&$dbHandler,$tcase_id,$tcversion_id,$guiObj,$argsObj,&$cfgObj,&$tcaseMgr)
-{      
-    $other_execs = null;
-    if($guiObj->history_on)
-    {
-		$filters['build_id'] = $argsObj->build_id;
-      	$filters['platform_id'] = $argsObj->platform_id;
-      	
-      	if($cfgObj->exec_cfg->show_history_all_builds )
-      	{
-      	  $filters['build_id'] = ANY_BUILD;
-      	}  
-      	if($cfgObj->exec_cfg->show_history_all_platforms )
-      	{
-      	  $filters['platform_id'] = null;
-      	}  
-      	$options = array('exec_id_order' => $cfgObj->exec_cfg->history_order);
-      	$other_execs = $tcaseMgr->get_executions($tcase_id,$tcversion_id,$argsObj->tplan_id,
-      	                                         $filters['build_id'],$filters['platform_id'],$options);
-    }    
-    else
-    {
-        // Warning!!!:
-        // we can't use the data we have got with previous call to get_last_execution()
-        // because if user have asked to save results last execution data may be has changed
-        $aux_map = $tcaseMgr->get_last_execution($tcase_id,$tcversion_id,$argsObj->tplan_id,
-                                                 $argsObj->build_id,$argsObj->platform_id);
-
-        if(!is_null($aux_map))
-        {
-            $other_execs = array();
-            foreach($aux_map as $key => $value )
-            {
-               $other_execs[$key] = array($value);
-            }
-        }
-    }
-    
-    return $other_execs;
-}
-
-
-/*
-  function: processTestSuite
-
-  args :
-  
-  returns: 
-
-  rev: 20080811 - franciscom - BUGID 1650 (REQ)
-
-*/
-function processTestSuite(&$dbHandler,&$guiObj,&$argsObj,$linked_tcversions,
-                          &$treeMgr,&$tcaseMgr,&$docRepository)
-{
-    $locationFilters=$tcaseMgr->buildCFLocationMap();
-    $testSet = new stdClass();
-    $cf_filters=array('show_on_execution' => 1); // BUGID 1650 (REQ)    
-    
-    $tsuite_mgr=new testsuite($dbHandler); 
-    $tsuite_data = $tsuite_mgr->get_by_id($argsObj->id);
-    $opt = array('write_button_only_if_linked' => 1, 'prune_unlinked_tcversions' => 1);
-
-    // @TODO - 20090815 - franciscom
-    // why here we do not have filtered by tester ?
-    // same for platform_id
-    $filters = array('keywords' => $argsObj->keyword_id);
-    $out = gen_spec_view($dbHandler,'testplan',$argsObj->tplan_id,$argsObj->id,$tsuite_data['name'],
-                         $linked_tcversions,null,$filters,$opt);
-       
-    $testSet->tcase_id = array();
-    $testSet->tcversion_id = array();
-    foreach($out['spec_view'] as $key => $value)
-    {
-     if( count($value['testcases']) > 0 )
-     {
-       foreach($value['testcases'] as $xkey => $xvalue)
-       {
-         $testSet->tcase_id[]=$xkey;
-         $testSet->tcversion_id[]=$xvalue['linked_version_id'];
-       }  
-     }
-    }
-    // ---------------------------------------------------------------------------------
-   
-    // Get the path for every test case, grouping test cases that have same parent.
-    $testCaseQty = count($testSet->tcase_id);
-    if( $testCaseQty > 0 )
-    {
-		$dummy = $tcaseMgr->cfield_mgr->getLocations();
-		$verboseLocationCode = array_flip($dummy['testcase']);
-		$filters=null;
-    	foreach($verboseLocationCode as $key => $value)
-    	{
-    		$filters[$key]['location']=$value;
-    	}	     
-
-		$dummy_id = current($testSet->tcase_id);
-		$index = $testCaseQty == 1 ? $dummy_id : 0;  // 0 => BULK
-		$suffix = '_' . $index;
-		$execution_time_cfields = 
-				$tcaseMgr->html_table_of_custom_field_inputs($dummy_id,$argsObj->tproject_id,'execution',$suffix,
-	            	                               			 null,null,$argsObj->tproject_id);
-		
-		$guiObj->execution_time_cfields[$index] = $execution_time_cfields;
-        $gdx=0;
-        foreach($testSet->tcase_id as $testcase_id)
-        {
-            $path_f = $treeMgr->get_path($testcase_id,null,'full');
-            foreach($path_f as $key => $path_elem)
-            {
-            	if( $path_elem['parent_id'] == $argsObj->id )
-            	{
-            		// Can be added because is present in the branch the user wants to view
-            		// ID of branch starting node is in $argsObj->id
-            		$guiObj->tcAttachments[$testcase_id] = getAttachmentInfos($docRepository,$testcase_id,
-            		                                                            'nodes_hierarchy',true,1);
-                	
-	            	foreach($locationFilters as $locationKey => $filterValue)
-	            	{
-                        $finalFilters=$cf_filters+$filterValue;
-                        
-                        // 
-						// BUGID 3431 - Custom Field values at Test Case VERSION Level
-            			// $guiObj->design_time_cfields[$testcase_id][$locationKey] = 
-            			// 	$tcaseMgr->html_table_of_custom_field_values($testcase_id,'design',$finalFilters);
-            			$guiObj->design_time_cfields[$testcase_id][$locationKey] = 
-            				$tcaseMgr->html_table_of_custom_field_values($testcase_id,'design',$finalFilters,null,null,
-  		         											             $argsObj->tproject_id,null,$testSet->tcversion_id[$gdx]);
-
-                		$guiObj->testplan_design_time_cfields[$testcase_id] = 
-  	            		        $tcaseMgr->html_table_of_custom_field_values($testcase_id,'testplan_design',$cf_filters,
-  	            		                                                     null,null,$argsObj->tproject_id);
-            			                                                                        
-            		}	                     
-
-                	// BUGID 856: Guest user can execute test case
-                	if($guiObj->grants->execute)
-                	{
-            				$guiObj->execution_time_cfields[$testcase_id] = 
-            				$tcaseMgr->html_table_of_custom_field_inputs($testcase_id, null,'execution',   
-            				                                             "_".$testcase_id,null,null,
-            				                                             $argsObj->tproject_id);
-                	}
-            	} // if( $path_elem['parent_id'] == $argsObj->id )
-            	
-              	// We do this because do not know if some test case not yet analised will be direct
-              	// child of this test suite, then we get this info in advance.
-              	// In situations where only last test suite on branch have test cases, we are colleting
-              	// info we will never use.
-              	if($path_elem['node_table'] == 'testsuites' && !isset($guiObj->tSuiteAttachments[$path_elem['id']]))
-              	{
-              		$guiObj->tSuiteAttachments[$path_elem['id']] = 
-            	   		getAttachmentInfos($docRepository,$path_elem['id'],'nodes_hierarchy',true,1);
-            	}
-            	   
-            } //foreach($path_f as $key => $path_elem) 
-            $gdx++;
-        }  
-    }
-
-    return array($testSet->tcase_id,$testSet->tcversion_id);  
-}
-?>																																
\ No newline at end of file
+<?php
+/**
+ * TestLink Open Source Project - http://testlink.sourceforge.net/ 
+ *
+ * @filesource	execSetResults.php
+ *
+ * @internal revisions:
+ *
+ *  20110622 - asimon - TICKET 4600: Blocked execution of testcases
+ *  20110323 - Julian - BUGID 4324 - Encoding of Test Suite did not work properly
+ *  20110322 - eloff - BUGID 3643
+ *  20110308 - franciscom - remote execution
+ *  20110123 - franciscom - BUGID 3338
+ *  20110105 - asimon - BUGID 3878: "Save and move to next" does not respect filter settings
+ *  20110104 - aismon - BUGID 3643: apply filters earlier in script instead of loading unnecessary data
+ *  20100927 - asimon - avoid warning in event log
+ *	20100926 - franciscom - BUGID 3421: Test Case Execution feature - Add Export All test Case in TEST SUITE button
+ *							added $gui->tcversionSet
+ *	
+ *  20100922 - asimon - let this page be functional withouth a form token too, changed init_args()
+ *	20100821 - franciscom - BUGID 3431 - Custom Field values at Test Case VERSION Level
+ *	20100821 - franciscom - code layout refactoring
+ *  20100812 - asimon - BUGID 3672
+ *  20100709 - asimon - BUGID 3590, BUGID 3574: build_id set to 0 as default instead of null
+ *  20100628 - asimon - removal of constants from filter control class
+ *  20100625 - asimon - added parameters $bugInterfaceOn, $bugInterface to exec_additional_info()
+ *                      to avoid warnings in event log,
+ *                      fixed a little bug in platform id initializing in init_args()
+ *                      (now number 0 instead of value null)
+ *  20100624 - asimon - CVS merge (experimental branch to HEAD)
+ *  20100624 - asimon - refactoring for new filters
+ *	20100527 - franciscom - BUGID 3479: Bulk Execution - Custom Fields Bulk Assignment
+ *  20100527 - Julian - platform description is now shown/hidden according to setting on config
+ *	20100520 - franciscom - BUGID 3478  Testcase ID not updated when using save and move next
+ *  20100428 - asimon - BUGID 3301 and related, added logic to refresh tree after tc execution
+ *  20100313 - franciscom - BUGID 3276
+ *  20100204 - asimon - BUGID 2455 & 3026, little changes for filtering
+ *  20100121 - franciscom - missing platform feature refactoring
+ *	20091205 - franciscom - BUGID 0002469: CFG-Parameters to show notes/details on test-execution
+ *  20091111 - franciscom - BUGID 2938 - Feature: Save and Go to next test case in test suite.
+ *  20090922 - franciscom - added contribution idea, when using bulk operation
+ *                          display last execution status.
+ *
+ *	20090913 - franciscom - fixed bug on filter_status initialization
+ *                          fixed bug on bulk execution due to bad option
+ *                          on get_linked_tcversions() call.
+ *                         
+ *	20090815 - franciscom - platform feature	
+ *  20090808 - franciscom - gen_spec_view call refactoring
+ *  20090526 - franciscom - now custom fields for testplan_design are managed
+ *
+ *  20090419 - franciscom - BUGID 2364 - added management of refreshTree
+ *                          initializeRights() refactored
+ *  20090409 - amkhullar - updated code not written properly.
+ *  20090330 - franciscom - fixed bug on test plan custom field get.
+ *  20090325 - amkhullar - BUGID 2267
+ *  20090210 - amkhullar - BUGID 2068
+ *  20080827 - franciscom - BUGID 1692
+ *  20080811 - franciscom - BUGID 1650 (REQ)
+ *  
+ *  20080104 - franciscom - REQ 1232 - web editor on execution notes
+ *                          added createExecNotesWebEditor()
+ *
+**/
+require_once('../../config.inc.php');
+require_once('common.php');
+require_once('exec.inc.php');
+require_once("attachments.inc.php");
+require_once("specview.php");
+require_once("web_editor.php");
+
+$cfg=getCfg();
+require_once(require_web_editor($cfg->editorCfg['type']));
+
+// BUGID 3338
+if( $cfg->exec_cfg->enable_test_automation )
+{
+  require_once('remote_exec.php');
+}
+
+// BUGID 3276
+// CRITIC:
+// If call to testlinkInitPage() is done AFTER require_once for BTS
+// log to event viewer fails, but log to file works ok
+testlinkInitPage($db);
+if($cfg->bts_type != 'NO')
+{
+  require_once(TL_ABS_PATH. 'lib' . DIRECTORY_SEPARATOR . 'bugtracking' . 
+               DIRECTORY_SEPARATOR . 'int_bugtracking.php');
+}
+
+
+$templateCfg = templateConfiguration();
+
+$tcversion_id = null;
+$submitResult = null;
+$args = init_args($cfg);
+
+$smarty = new TLSmarty();
+$tree_mgr = new tree($db);
+$tplan_mgr = new testplan($db);
+$tcase_mgr = new testcase($db);
+$exec_cfield_mgr = new exec_cfield_mgr($db,$args->tproject_id);
+$attachmentRepository = tlAttachmentRepository::create($db);
+$req_mgr = new requirement_mgr($db);
+
+$gui = initializeGui($db,$args,$cfg,$tplan_mgr,$tcase_mgr);
+$_SESSION['history_on'] = $gui->history_on;
+$attachmentInfos = null;
+
+$do_show_instructions = ($args->level == "" || $args->level == 'testproject') ? 1 : 0;
+if ($do_show_instructions)
+{
+    show_instructions('executeTest');
+    exit();
+}
+
+// ---------------------------------------------------------
+// Testplan executions and result archiving. Checks whether execute cases button was clicked
+//
+if($args->doExec == 1)
+{
+
+	if(!is_null($args->tc_versions) && count($args->tc_versions))
+	{
+		// 20110129 - franciscom
+		// IMPORTANT NOTICE
+		// Remote execution will NOT use ANY of data typed by user,
+		// - notes
+		// - custom fields
+		//
+		$execContext = buildExecContext($args,$gui->tcasePrefix,$tplan_mgr,$tcase_mgr);
+		$gui->remoteExecFeedback = do_remote_execution($db,$execContext);
+		$gui->remoteExecFeedback = current($gui->remoteExecFeedback);
+		
+		// IMPORTANT NOTICE
+		// need to understand what to do with feedback provided
+		// by do_remote_execution().
+		// Right now no matter how things go, no feedback is given to user.
+		// May be this need to be improved in future.
+		//
+		// Only drawback i see is when remote exec is done on a test suite
+		// and amount of feedback can be high, then do not see what can be effect
+		// on GUI
+		
+		
+	}
+}	
+
+
+// -----------------------------------------------------------
+// When nullify filter_status - 20080504 - DO NOT REMOVE -
+// 
+// May be in the following situation we do not HAVE to apply filter status:
+// 1. User have filter for Not Run on Tree
+// 2. Clicks on TC XXX
+// 3. Executes TC
+// 4. DO NOT UPDATE TREE.
+//    we do not update automatically to avoid:
+//    a) performance problems
+//    b) delays on operations due to tree redraw
+//    c) loose tree status due to lack of feature of tree engine
+//
+// 5. Clicks again on TC XXX
+// If we use filter, we will get No Data Available.
+//
+// When working on show_testsuite_contents mode (OLD MODE) when we show
+// all testcases inside a testsuite that verifies a filter criteria WE NEED TO APPLY FILTER
+//
+// We do not have this problem when this page is called after user have executed,
+// probably because filter_status is not send back.
+//
+// I will add logic to nullify filter_status on init_args()
+// 
+// 20080224 - franciscom - BUGID 1056
+// 20070306 - franciscom - BUGID 705
+// 20070914 - jbarchibald - added $cf_selected parameter
+//
+
+// 20081221 - franciscom                              
+// BUGID 3406
+$options = array('only_executed' => true, 'output' => 'mapOfArray',
+				 'include_unassigned' => $args->include_unassigned,
+                 'user_assignments_per_build' => $args->build_id);
+
+
+if(is_null($args->filter_status) || in_array($cfg->tc_status['not_run'],$args->filter_status))
+{
+    $options['only_executed'] = false;
+}
+
+// Added platform_id filter
+// BUGID 3643 - don't apply filters further down below, do the filtering already here
+//$filters = array('tcase_id' => $args->tc_id,  'keyword_id' => $args->keyword_id,
+$filters = array('tcase_id' => $args->testcases_to_show,  'keyword_id' => $args->keyword_id,
+                 'assigned_to' => $args->filter_assigned_to, 'exec_status' => $args->filter_status,
+                 'build_id' => $args->build_id, 'cf_hash' => $args->cf_selected,
+                 'platform_id' => $args->platform_id);
+
+$linked_tcversions = $tplan_mgr->get_linked_tcversions($args->tplan_id,$filters,$options);
+$tcase_id = 0;
+$userid_array = null;
+
+if(!is_null($linked_tcversions))
+{
+	$items_to_exec = array();
+	$_SESSION['s_lastAttachmentInfos'] = null;
+    if($args->level == 'testcase')
+    {
+    	// Warning!!! - $gui is passed by reference to be updated inside function
+    	$tcase = null;
+        list($tcase_id,$tcversion_id) = processTestCase($tcase,$gui,$args,$cfg,$linked_tcversions,
+                                                        $tree_mgr,$tcase_mgr,$attachmentRepository);
+    }
+    else
+    {
+        list($tcase_id,$tcversion_id) = processTestSuite($db,$gui,$args,$linked_tcversions,
+                                                         $tree_mgr,$tcase_mgr,$attachmentRepository);
+    }
+
+	// 20100927 - asimon - check if value is an array before calling implode
+	// to avoid warnings in event log
+   	$gui->tcversionSet = is_array($tcversion_id) ? implode(',',$tcversion_id) : $tcversion_id;
+
+    // will create a record even if the testcase version has not been executed (GET_NO_EXEC)
+    //
+    // Can be DONE JUST ONCE AFTER write results to DB
+    // $gui->map_last_exec = getLastExecution($db,$tcase_id,$tcversion_id,$gui,$args,$tcase_mgr);
+    
+    // --------------------------------------------------------------------------------------------
+    // Results to DB
+    if ($args->save_results || $args->do_bulk_save || $args->save_and_next)
+    {
+		
+    	// this has to be done to do not break logic present on write_execution()
+    	$args->save_results = $args->save_and_next ? $args->save_and_next : $args->save_results;
+    	$_REQUEST['save_results'] = $args->save_results;
+    	
+    	// 20110129 - franciscom - seems $gui->map_last_exec is USELESS on write_execution()
+    	// $submitResult = write_execution($db,$args,$_REQUEST,$gui->map_last_exec);
+        write_execution($db,$args,$_REQUEST);
+        
+        // Need to re-read to update test case status
+        if ($args->save_and_next) 
+        {
+			$nextItem = $tplan_mgr->getTestCaseNextSibling($args->tplan_id,$tcversion_id,$args->platform_id);
+			
+			// BUGID 3878
+			while (!is_null($nextItem) && !in_array($nextItem['tcase_id'], $args->testcases_to_show)) {
+				$nextItem = $tplan_mgr->getTestCaseNextSibling($args->tplan_id,$nextItem['tcversion_id'],$args->platform_id);
+			}
+			
+			if( !is_null($nextItem) )
+			{
+				$tcase_id = $nextItem['tcase_id'];
+				$tcversion_id = $nextItem['tcversion_id'];
+				// BUGID 3478
+         		processTestCase($nextItem,$gui,$args,$cfg,$linked_tcversions,$tree_mgr,$tcase_mgr,$attachmentRepository);
+			}
+			
+        }
+    }
+    $gui->map_last_exec = getLastExecution($db,$tcase_id,$tcversion_id,$gui,$args,$tcase_mgr);
+    
+    if ($args->doDelete)
+    {
+    	delete_execution($db,$args->exec_to_delete);
+    }
+    // --------------------------------------------------------------------------------------------
+    
+    $gui->map_last_exec_any_build = null;
+    $gui->other_execs=null;
+    $testerid = null;
+    
+    
+    if($args->level == 'testcase')
+    {
+    	// @TODO 20090815 - franciscom check what to do with platform
+    	if( $cfg->exec_cfg->show_last_exec_any_build )
+    	{
+    		// 20090716 - franciscom - get_last_execution() interface changes
+			$options=array('getNoExecutions' => 1, 'groupByBuild' => 0);
+    	    $gui->map_last_exec_any_build = $tcase_mgr->get_last_execution($tcase_id,$tcversion_id,$args->tplan_id,
+    	                                                                   testcase::ANY_BUILD,
+    	                                                                   $args->platform_id,$options);
+    	    
+    	    //Get UserID and Updater ID for current Version
+    	    $tc_current = $gui->map_last_exec_any_build;
+    	    foreach ($tc_current as $key => $value)
+    	    {
+				$testerid = $value['tester_id'];
+			    $userid_array[$testerid] = $testerid;
+    	    }	    
+    	}
+    	
+    	$gui->req_details = $req_mgr->get_all_for_tcase($tcase_id); //Bug 2068
+    	$gui->other_execs=getOtherExecutions($db,$tcase_id,$tcversion_id,$gui,$args,$cfg,$tcase_mgr);
+    	// Get attachment,bugs, etc
+    	if(!is_null($gui->other_execs))
+    	{
+    		//Get the Tester ID for all previous executions
+			  foreach ($gui->other_execs as $key => $execution)
+			  {    	
+		      	foreach ($execution as $singleExecution)
+		      	{    			  
+			  	      $testerid = $singleExecution['tester_id'];
+			  	      $userid_array[$testerid] = $testerid;
+		      	}    	
+			  }
+    	
+		  // asimon - added $g_bugInterfaceOn, $g_bugInterface
+    	  $other_info=exec_additional_info($db,$attachmentRepository,$tcase_mgr,$gui->other_execs,
+    	  $args->tplan_id,$args->tproject_id, $g_bugInterfaceOn, $g_bugInterface);
+    	  $gui->attachments=$other_info['attachment'];
+    	  $gui->bugs=$other_info['bugs'];
+    	  $gui->other_exec_cfields=$other_info['cfexec_values'];
+    	 
+    	  // this piece of code is useful to avoid error on smarty template due to undefined value   
+    	  if( is_array($tcversion_id) && (count($gui->other_execs) != count($gui->map_last_exec)) )
+    	  {
+    	    foreach($tcversion_id as $version_id)
+    	    {
+    	        if( !isset($gui->other_execs[$version_id]) )
+    	        {
+    	            $gui->other_execs[$version_id]=null;  
+    	        }  
+    	    }
+    	  }
+    	
+    	} // if(!is_null($gui->other_execs))
+    } 	
+
+} // if(!is_null($linked_tcversions))
+
+
+// Removing duplicate and NULL id's
+unset($userid_array['']);
+$userSet = null;
+if ($userid_array)
+{
+	foreach($userid_array as $value)
+	{		
+		$userSet[] = $value;
+	}
+}
+smarty_assign_tsuite_info($smarty,$_REQUEST,$db,$tree_mgr,$tcase_id,$args->tproject_id);
+
+// BUGID 3643 - don't apply filters here
+// BUGID 2455, BUGID 3026
+// BUGID 3516
+// remove testcases which shall not be displayed because they were filtered out
+//if (!is_null($args->testcases_to_show) && $args->level == 'testsuite') {
+//	foreach($gui->map_last_exec as $key => $tc) {
+//		if (!in_array($tc['testcase_id'], $args->testcases_to_show)) {
+//			unset($gui->map_last_exec[$key]); // tc shall not be displayed
+//		}
+//	}
+//	// fix indexes for smarty
+//	$gui->map_last_exec = array_values($gui->map_last_exec);
+//}
+
+// Bulk is possible when test suite is selected (and is allowed in config)
+$gui->can_use_bulk_op = ($args->level == 'testsuite');
+
+if( $gui->can_use_bulk_op )
+{
+    $gui->execStatusValues=createResultsMenu();
+    if( isset($gui->execStatusValues[$cfg->tc_status['all']]) )
+    {
+        unset($gui->execStatusValues[$cfg->tc_status['all']]);
+    }
+
+    $of=web_editor("bulk_exec_notes",$_SESSION['basehref'],$cfg->editorCfg);
+   	$of->Value = getItemTemplateContents('execution_template', $of->InstanceName, null);
+    
+    // Magic numbers that can be determined by trial and error
+    $gui->bulk_exec_notes_editor=$of->CreateHTML(10,60);         
+    unset($of);    
+}
+else
+{
+    $gui->exec_notes_editors=createExecNotesWebEditor($gui->map_last_exec,$_SESSION['basehref'],$cfg->editorCfg);
+}
+
+// To silence smarty errors
+//  future must be initialized in a right way
+$smarty->assign('test_automation_enabled',0);
+$smarty->assign('cfg',$cfg);
+$smarty->assign('users',tlUser::getByIDs($db,$userSet,'id'));
+$smarty->assign('gui',$gui);
+$smarty->assign('g_bugInterface', $g_bugInterface);
+$smarty->display($templateCfg->template_dir . $templateCfg->default_template);
+
+/*
+  function: 
+
+  args:
+  
+  returns: 
+  
+  rev:
+    20100922 - asimon - let this page be functional withouth a form token too
+	20100625 - asimon - fixed a little bug in platform id initializing when no platform is used
+	                    (now number 0 instead of value null)
+	20090913 - franciscom - fixed bug on filter_status initialization
+*/
+function init_args($cfgObj)
+{
+	$args = new stdClass();
+	$_REQUEST = strings_stripSlashes($_REQUEST);
+	
+    // BUGID 3516
+	$mode = 'execution_mode';
+	$form_token = isset($_REQUEST['form_token']) ? $_REQUEST['form_token'] : 0;
+	$session_data = isset($_SESSION[$mode]) && isset($_SESSION[$mode][$form_token]) ? $_SESSION[$mode][$form_token] : null;
+	
+	$args->doExec = isset($_REQUEST['execute_cases']) ? 1 : 0;
+	$args->doDelete = isset($_REQUEST['do_delete']) ? $_REQUEST['do_delete'] : 0;
+	$args->cf_selected = isset($_REQUEST['cfields']) ? unserialize($_REQUEST['cfields']) : null;
+	
+	// can be a list, will arrive via form POST
+	$args->tc_versions = isset($_REQUEST['tc_version']) ? $_REQUEST['tc_version'] : null;  
+  
+	// BUGID 3516,3590, 3574, 3672
+	$key2null = array('filter_status' => 'filter_result_result','filter_assigned_to' => 'filter_assigned_user', 
+					  'build_id' => 'setting_build', 'platform_id' => 'setting_platform');
+	
+	foreach($key2null as $key => $sessionKey)
+	{
+		$args->$key = isset($session_data[$sessionKey]) ? $session_data[$sessionKey] : null;
+		// let this page be functional withouth a form token too (when called from testcases assigned to me)
+		if (is_null($args->$key)) {
+			$args->$key = isset($_REQUEST[$sessionKey]) ? $_REQUEST[$sessionKey] : null;
+		}
+	}
+
+	if (is_null($args->build_id)) {
+		$args->build_id = (isset($_REQUEST['build_id']) && is_numeric($_REQUEST['build_id'])) ? $_REQUEST['build_id'] : 0;
+	}
+	
+	if (is_null($args->platform_id)) {
+		$args->platform_id = (isset($_REQUEST['platform_id']) && is_numeric($_REQUEST['platform_id'])) ? $_REQUEST['platform_id'] : 0;
+	}
+
+	$key2loop = array('level' => '','status' => null, 'do_bulk_save' => 0, 'save_results' => 0, 'save_and_next' => 0);
+	foreach($key2loop as $key => $value)
+	{
+		$args->$key = isset($_REQUEST[$key]) ? $_REQUEST[$key] : $value;
+	}
+
+    // See details on: "When nullify filter_status - 20080504" in this file
+    if(is_null($args->filter_status) || trim($args->filter_status) || $args->level == 'testcase')
+    {
+        $args->filter_status = null;  
+    }
+    else
+    {
+        $args->filter_status = unserialize($args->filter_status);
+    }
+
+ 	$args->id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0;
+    $cookiePrefix = 'TL_execSetResults_';
+      
+    // IMPORTANT: logic for test suite notes CAN NOT BE IMPLEMENTED HERE
+    //            see smarty_assign_tsuite_info() in this file.  
+    $key4cookies = array('tpn_view_status' => 'testplan_notes','bn_view_status' => 'build_description',
+                         'platform_notes_view_status' => 'platform_description');
+    
+    // BUGID 3516, 3590, 3574
+	$key2loop = array('id' => 0, 'exec_to_delete' => 0, 'version_id' => 0, 'tpn_view_status' => 0, 
+					  'bn_view_status' => 0, 'bc_view_status' => 1,'platform_notes_view_status' => 0);
+	
+	foreach($key4cookies as $key => $cfgKey)
+	{
+		$cookieKey = $cookiePrefix . $key;
+		if( !isset($_REQUEST[$key]) )
+		{
+			// First time we are entered here => we can need to understand how to proceed
+		    switch($cfgObj->exec_cfg->expand_collapse->$cfgKey )
+		    {
+		    	case LAST_USER_CHOICE:
+					if (isset($_COOKIE[$cookieKey]) ) 
+    				{
+    					$key2loop[$key] = $_COOKIE[$cookieKey];
+					}
+				break;	
+
+				default:
+					$key2loop[$key] = $cfgObj->exec_cfg->expand_collapse->$cfgKey;
+				break;
+		    } 
+		}
+    }
+    				            
+	foreach($key2loop as $key => $value)
+	{
+ 		$args->$key = isset($_REQUEST[$key]) ? intval($_REQUEST[$key]) : $value;
+        if( isset($key4cookies[$key]) )
+		{
+			setcookie($cookiePrefix . $key,$args->$key,TL_COOKIE_KEEPTIME, '/');
+		}
+	}
+
+	
+    switch($args->level)
+    {
+        case 'testcase':
+        $args->tc_id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null;
+        // some problems with $_GET that has impact on logic 'Save and Go to next test case';
+        if( !is_null($args->tc_versions) )
+        {
+        	$args->tc_id = current($args->tc_versions);
+        	$args->id = $args->tc_id;
+        	$args->version_id = key($args->tc_versions);
+        } 
+        $args->tsuite_id = null;
+        break;
+          
+        case 'testsuite':
+        $args->tsuite_id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null;
+        $args->tc_id = null;
+        break;
+    }
+
+
+	// BUGID 3516
+	$args->keyword_id = 0;
+	if (isset($session_data['filter_keywords'])) {
+		$args->keyword_id = $session_data['filter_keywords'];
+		if (is_array($args->keyword_id) && count($args->keyword_id) == 1) {
+			$args->keyword_id = $args->keyword_id[0];
+		}
+	}
+	
+	$args->keywordsFilterType = null;
+	if (isset($session_data['filter_keywords_filter_type'])) {
+		$args->keywordsFilterType = $session_data['filter_keywords_filter_type'];
+	}
+    
+    // Checkbox
+    $args->include_unassigned = isset($session_data['filter_assigned_user_include_unassigned']) 
+                                && $session_data['filter_assigned_user_include_unassigned'] != 0 ? 1 : 0;
+	
+	
+    // 20090419 - franciscom - BUGID
+    // BUGID 3301 and related - asimon - changed refresh tree logic 
+    // to adapt behavior of other forms (like tc edit)
+    // additionally modified to only refresh on saving of test results, not on every click
+    $args->refreshTree = isset($session_data['setting_refresh_tree_on_action'])
+                         ? $session_data['setting_refresh_tree_on_action'] : 0;
+	
+	$args->tproject_id = isset($_REQUEST['tproject_id']) ? $_REQUEST['tproject_id'] : $_SESSION['testprojectID'];
+	
+	// BUGID 2267
+	$args->tplan_id = isset($_REQUEST['tplan_id']) ? $_REQUEST['tplan_id'] : $_SESSION['testplanID'];
+	$args->user = $_SESSION['currentUser'];
+    $args->user_id = $args->user->dbID;
+
+    // BUGID 3516
+   	// BUGID 2455,BUGID 3026
+   	$args->testcases_to_show = null;
+	if (isset($session_data['testcases_to_show'])) {
+		$args->testcases_to_show = $session_data['testcases_to_show'];
+	}
+	return $args;
+}
+
+
+/*
+  function: 
+
+  args :
+  
+  returns: 
+
+*/
+function manage_history_on($hash_REQUEST,$hash_SESSION,
+                           $exec_cfg,$btn_on_name,$btn_off_name,$hidden_on_name)
+{
+    if( isset($hash_REQUEST[$btn_on_name]) )
+    {
+		    $history_on = true;
+    }
+    elseif(isset($_REQUEST[$btn_off_name]))
+    {
+		    $history_on = false;
+    }
+    elseif (isset($_REQUEST[$hidden_on_name]))
+    {
+        $history_on = $_REQUEST[$hidden_on_name];
+    }
+    elseif (isset($_SESSION[$hidden_on_name]))
+    {
+        $history_on = $_SESSION[$hidden_on_name];
+    }
+    else
+    {
+        $history_on = $exec_cfg->history_on;
+    }
+    return $history_on;
+}
+/*
+  function: get_ts_name_details
+
+  args :
+  
+  returns: map with key=TCID
+           values= assoc_array([tsuite_id => 5341
+                               [details] => my detailas ts1
+                               [tcid] => 5343
+                               [tsuite_name] => ts1)
+*/
+function get_ts_name_details(&$db,$tcase_id)
+{
+	$tables = array();
+    $tables['testsuites'] = DB_TABLE_PREFIX . 'testsuites';
+    $tables['nodes_hierarchy'] = DB_TABLE_PREFIX . 'nodes_hierarchy';
+
+    
+	$rs = '';
+	$do_query = true;
+	$sql = "SELECT TS.id AS tsuite_id, TS.details, 
+	             NHA.id AS tc_id, NHB.name AS tsuite_name 
+	      FROM {$tables['testsuites']} TS, {$tables['nodes_hierarchy']} NHA, 
+	           {$tables['nodes_hierarchy']} NHB
+	      WHERE TS.id=NHA.parent_id
+	      AND   NHB.id=NHA.parent_id ";
+	if( is_array($tcase_id) && count($tcase_id) > 0)
+	{
+		$in_list = implode(",",$tcase_id);
+		$sql .= "AND NHA.id IN (" . $in_list . ")";
+	}
+	else if(!is_null($tcase_id))
+	{
+		$sql .= "AND NHA.id={$tcase_id}";
+	}
+	else
+	{
+		$do_query = false;
+	}
+	if($do_query)
+	{
+		$rs = $db->fetchRowsIntoMap($sql,'tc_id');
+	}
+	return $rs;
+}
+
+/*
+  function: 
+
+  args :
+  
+  returns: 
+
+*/
+function smarty_assign_tsuite_info(&$smarty,&$request_hash, &$db,&$tree_mgr,$tcase_id,$tproject_id)
+{
+  $fpath=$tree_mgr->get_full_path_verbose($tcase_id, array('output_format' => 'id_name'));
+  $tsuite_info = get_ts_name_details($db,$tcase_id);
+  foreach($fpath as $key => $value)
+  {
+      unset($value['name'][0]);  // Remove test plan name
+      unset($value['node_id'][0]);  // Remove test plan name
+      $str='';
+      foreach($value['name'] as $jdx => $elem)
+      {
+      	$str .= "<a href=\"javascript:openTestSuiteWindow(" . $value['node_id'][$jdx] . ")\"> ";
+      	// BUGID 4324 - Julian - Encoding did not work properly
+      	$str .= htmlspecialchars($elem,ENT_QUOTES) . '</a>/';
+      }
+      $tsuite_info[$key]['tsuite_name']=$str;  
+  }
+  $smarty->assign('tsuite_info',$tsuite_info);
+  
+  // --------------------------------------------------------------------------------
+	if(!is_null($tsuite_info))
+  	{
+        $cookieKey = 'TL_execSetResults_tsdetails_view_status';
+		$exec_cfg = config_get('exec_cfg');
+
+    	$a_tsvw=array();
+    	$a_ts=array();
+    	$a_tsval=array();
+    	
+    	$tsuite_mgr = New testsuite($db);
+    	
+    	foreach($tsuite_info as $key => $elem)
+    	{
+    	  	$main_k = 'tsdetails_view_status_' . $key;
+    	  	$a_tsvw[] = $main_k;
+    	  	$a_ts[] = 'tsdetails_' . $key;
+            $expand_collapse = 0;
+			if( !isset($request_hash[$main_k]) )
+			{
+				// First time we are entered here => we can need to understand how to proceed
+			    switch($exec_cfg->expand_collapse->testsuite_details)
+			    {
+			    	case LAST_USER_CHOICE:
+						if (isset($_COOKIE[$cookieKey]) ) 
+    					{
+    						$expand_collapse = $_COOKIE[$cookieKey];
+						}
+					break;	
+        	
+					default:
+						$expand_collapse = $exec_cfg->expand_collapse->testsuite_details;
+					break;
+			    } 
+			}
+    	  	$a_tsval[] = isset($request_hash[$main_k]) ? $request_hash[$main_k] : $expand_collapse;
+    	  	$tsuite_id = $elem['tsuite_id'];
+    	  	$tc_id = $elem['tc_id'];
+    	  	if(!isset($cached_cf[$tsuite_id]))
+    	  	{
+    	  		$cached_cf[$tsuite_id] = $tsuite_mgr->html_table_of_custom_field_values($tsuite_id,'design',null,$tproject_id);
+    	  	}
+    	  	$ts_cf_smarty[$tc_id] = $cached_cf[$tsuite_id];
+    	}
+    	if( count($a_tsval) > 0 )
+    	{
+			setcookie($cookieKey,$a_tsval[0],TL_COOKIE_KEEPTIME, '/');
+    	}
+    	
+    	$smarty->assign('tsd_div_id_list',implode(",",$a_ts));
+    	$smarty->assign('tsd_hidden_id_list',implode(",",$a_tsvw));
+    	$smarty->assign('tsd_val_for_hidden_list',implode(",",$a_tsval));
+    	
+		$smarty->assign('ts_cf_smarty',$ts_cf_smarty);
+	}
+
+}  
+// --------------------------------------------------------------------------------
+
+
+/*
+  function: 
+
+  args :
+  
+  returns: 
+
+ at internal revisions:
+  20100625 - asimon - added parameters $bugInterfaceOn, $bugInterface 
+                      to get rid of warning in event log
+
+*/
+function exec_additional_info(&$db, $attachmentRepository, &$tcase_mgr, $other_execs, 
+                              $tplan_id, $tproject_id, $bugInterfaceOn, $bugInterface)
+{
+//  $bugInterfaceOn = config_get('bugInterfaceOn');
+//  $bugInterface = config_get('bugInterface');
+  $attachmentInfos = null;
+  $bugs = null;
+  $cfexec_values = null;
+
+  foreach($other_execs as $tcversion_id => $execInfo)
+  {
+    $num_elem = sizeof($execInfo);   
+  	for($idx = 0;$idx < $num_elem;$idx++)
+  	{
+  		$exec_id = $execInfo[$idx]['execution_id'];
+  		
+  		$aInfo = getAttachmentInfos($attachmentRepository,$exec_id,'executions',true,1);
+  		if ($aInfo)
+  			$attachmentInfos[$exec_id] = $aInfo;
+  		
+  		if($bugInterfaceOn)
+  		{
+			$the_bugs = get_bugs_for_exec($db,$bugInterface,$exec_id);
+			if(count($the_bugs) > 0)
+			{
+				$bugs[$exec_id] = $the_bugs;
+			}	
+  		}
+
+      // Custom fields
+      $cfexec_values[$exec_id] = $tcase_mgr->html_table_of_custom_field_values($tcversion_id,'execution',null,
+                                                                               $exec_id,$tplan_id,$tproject_id);
+  	}
+  }
+  
+  $info = array( 'attachment' => $attachmentInfos,
+                 'bugs' => $bugs,
+                 'cfexec_values' => $cfexec_values);      
+               
+  return $info;
+} //function end
+
+
+/*
+  function: 
+
+  args : context hash with following keys
+  		 target => array('tc_versions' => array, 'version_id' =>, 'feature_id' => array) 
+  		 context => array with keys 
+  		 							tproject_id
+  		 							tplan_id
+  		 							platform_id
+  		 							build_id
+  		 							user_id
+  
+  
+  returns: 
+
+*/
+function do_remote_execution(&$dbHandler,$context)
+{
+	$debugMsg = "File:" . __FILE__ . " Function: " . __FUNCTION__;
+	
+	$tables = array();
+    $tables['executions'] = DB_TABLE_PREFIX . 'executions';
+
+    $resultsCfg = config_get('results');
+    $tc_status = $resultsCfg['status_code'];
+    $tree_mgr = new tree($dbHandler);
+    $cfield_mgr = new cfield_mgr($dbHandler);
+  
+	$ret = null;
+	$executionResults = array();
+
+	$myResult = array();
+	$sql = 	" /* $debugMsg */ INSERT INTO {$tables['executions']} " . 
+			" (testplan_id,platform_id,build_id,tester_id,execution_type," .
+			"  tcversion_id,execution_ts,status,notes) " .
+			" VALUES ({$context['context']['tplan_id']}, " . 
+			"		  {$context['context']['platform_id']}, " .
+			"		  {$context['context']['build_id']}," .
+			" {$context['context']['user_id']}," . TESTCASE_EXECUTION_TYPE_AUTO . ",";
+
+	// have we got multiple test cases to execute ?
+	$target = &$context['target'];
+	foreach($target['tc_versions'] as $version_id => $tcase_id)
+	{
+		$ret[$version_id] = array("verboseID" => null,
+								  "status" => null,"notes" => null,"system" => null,
+				 				  "scheduled" => null, "timestamp" => null);
+
+		$tcaseInfo = $tree_mgr->get_node_hierarchy_info($tcase_id);
+		$tcaseInfo['version_id'] = $version_id;
+		
+		// For each test case version we can have a different server config
+		$serverCfg = $cfield_mgr->getXMLRPCServerParams($version_id,$target['feature_id'][$version_id]);
+		$execResult[$version_id] = executeTestCase($tcaseInfo,$serverCfg,$context['context']); // RPC call
+
+		
+		$tryWrite = false;
+		switch($execResult[$version_id]['system']['status'])
+		{
+			case 'configProblems':
+				$tryWrite = false;
+			break;
+			
+			case 'connectionFailure':
+				$tryWrite = false;
+			break;
+				
+			case 'ok';
+				$tryWrite = true;
+			break;	
+		}
+		
+		if( $tryWrite )
+		{
+			$trun = &$execResult[$version_id]['execution'];
+			$ret[$version_id]["status"] = strtolower($trun['result']);
+			$ret[$version_id]["statusVerbose"] = $trun['resultVerbose'];
+			$ret[$version_id]["notes"] = trim($trun['notes']);
+			if( $trun['scheduled'] == 'now' )
+			{
+				$notes = $dbHandler->prepare_string($ret[$version_id]["notes"]);
+
+				if( $ret[$version_id]["status"] != $tc_status['passed'] && 
+					$ret[$version_id]["status"] != $tc_status['failed'] && 
+				    $ret[$version_id]["status"] != $tc_status['blocked'])
+				{
+					  $ret[$version_id]["status"] = $tc_status['blocked'];
+				}
+				
+				//
+				$sql2exec = $sql . $version_id . "," . $dbHandler->db_now() . 
+							", '{$ret[$version_id]["status"]}', '{$notes}' )"; 
+				$dbHandler->exec_query($sql2exec);
+			}
+			else
+			{
+				$ret[$version_id]["scheduled"] = $trun['scheduled'];
+				$ret[$version_id]["timestamp"]= $trun['timestampISO'];
+			}
+		}
+		else
+		{
+			$ret[$version_id]["system"] = $execResult[$version_id]['system'];
+		}
+	}
+	
+	return $ret;
+}
+
+
+/*
+  function: initializeExecMode 
+
+  args:
+  
+  returns: 
+
+*/
+function initializeExecMode(&$db,$exec_cfg,$userObj,$tproject_id,$tplan_id)
+{
+
+    $simple_tester_roles=array_flip($exec_cfg->simple_tester_roles);
+    $effective_role = $userObj->getEffectiveRole($db,$tproject_id,$tplan_id);
+    
+	// SCHLUNDUS: hmm, for user defined roles, this wont work correctly
+	// 20080104 - franciscom - Please explain why do you think will not work ok ?
+	//                         do you prefer to check for exec right ?
+	//
+	// SCHLUNDUS: jep, exactly. If a user defines it own roles than a check for the tester
+	// role will not do the desired effect of putting the logged in user in tester-view-mode
+	// instead we must check for presence (and or absence) the right(s) which mades a user a tester 
+	//
+	// 20080310 - franciscom - 
+	// Role is considered tester if:
+	// role == TL_ROLES_TESTER OR Role has Test Plan execute but not Test Plan planning
+	//
+	//
+	$can_execute = $effective_role->hasRight('testplan_execute');
+	$can_manage = $effective_role->hasRight('testplan_planning');
+    
+	// 20081217 - franciscom
+	// $use_exec_cfg = $effective_role->dbID == TL_ROLES_TESTER || ($can_execute && !$can_manage);
+    $use_exec_cfg = isset($simple_tester_roles[$effective_role->dbID]) || ($can_execute && !$can_manage);
+    
+    return  $use_exec_cfg ? $exec_cfg->exec_mode->tester : 'all';
+} // function end
+
+
+/*
+  function: setTesterAssignment 
+
+  args:
+  
+  returns: 
+  
+  rev: 20110622 - asimon - TICKET 4600: Blocked execution of testcases
+       20100121 - franciscom - platform refactoring
+
+*/
+function setTesterAssignment(&$db,$exec_info,&$tcase_mgr,$tplan_id,$platform_id, $build_id)
+{     
+	foreach($exec_info as $version_id => $value)
+	{
+		$exec_info[$version_id]['assigned_user'] = '';
+		$exec_info[$version_id]['assigned_user_id'] = 0;
+		
+		// map of map: main key version_id, secondary key: platform_id
+		// TICKET 4600: Blocked execution of testcases
+		$p3 = $tcase_mgr->get_version_exec_assignment($version_id,$tplan_id, $build_id);
+		$assignedTesterId = intval($p3[$version_id][$platform_id]['user_id']);
+		
+		if($assignedTesterId)
+		{
+			$user = tlUser::getByID($db,$assignedTesterId);
+			if ($user)
+			{
+				$exec_info[$version_id]['assigned_user']= $user->getDisplayName();  
+			}
+			$exec_info[$version_id]['assigned_user_id'] = $assignedTesterId;
+		}  
+	}
+	return $exec_info;
+} //function end
+
+/*
+  function: 
+           Reorder executions to mantaing correct visualization order.
+
+  args:
+  
+  returns: 
+
+*/
+function reorderExecutions(&$tcversion_id,&$exec_info)
+{
+    $dummy = array();
+    foreach($tcversion_id as $key => $value)
+    {
+       $dummy[$key] = $exec_info[$value];    
+    }
+    return $dummy;    
+}
+
+/*
+  function: setCanExecute 
+
+  args:
+  
+  returns: 
+
+*/
+function setCanExecute($exec_info,$execution_mode,$can_execute,$tester_id)
+{     
+	foreach($exec_info as $key => $tc_exec) 
+	{
+		$execution_enabled = 0;  
+		if($can_execute == 1 && $tc_exec['active'] == 1)
+		{
+			$assigned_to_me = $tc_exec['assigned_user_id'] == $tester_id ? 1 : 0;
+			$is_free = $tc_exec['assigned_user_id'] == '' ? 1 : 0;
+
+			switch($execution_mode)
+			{
+				case 'assigned_to_me':
+					$execution_enabled = $assigned_to_me;
+					break;
+
+				case 'assigned_to_me_or_free':
+					$execution_enabled = $assigned_to_me || $is_free;
+					break;
+
+				case 'all':
+					$execution_enabled = 1;
+					break;
+
+				default:
+					$execution_enabled = 0;  
+					break;
+			} // switch
+		}
+		$exec_info[$key]['can_be_executed']=$execution_enabled;
+	}
+	return $exec_info;
+} //function end
+
+
+/*
+  function: createExecNotesWebEditor
+            creates map of html needed to display web editors
+            for execution notes.
+            
+  args: tcversions: array where each element has information
+                    about testcase version that can be executed.
+                    
+        basehref: URL            
+        editorCfg:
+  
+  returns: map
+           key: testcase id
+           value: html to display web editor.
+
+  rev : 20080104 - creation  
+*/
+function createExecNotesWebEditor(&$tcversions,$basehref,$editorCfg)
+{
+  
+    if(is_null($tcversions) || count($tcversions) == 0 )
+    {
+        return null;  // nothing todo >>>------> bye!  
+    }
+     
+    // Important Notice:
+    //
+    // When using tinymce or none as web editor, we need to set rows and cols
+    // to appropriate values, to avoid an ugly ui.
+    // null => use default values defined on editor class file
+    //
+    // Rows and Cols values are useless for FCKeditor.
+    //
+    $itemTemplateValue = getItemTemplateContents('execution_template', 'notes', null);
+    foreach($tcversions as $key => $tcv)
+    {
+        $tcversion_id=$tcv['id'];
+        $tcase_id=$tcv['testcase_id'];
+
+        $of=web_editor("notes[{$tcversion_id}]",$basehref,$editorCfg) ;
+        $of->Value = $itemTemplateValue;
+       
+        // Magic numbers that can be determined by trial and error
+        $editors[$tcase_id]=$of->CreateHTML(10,60);         
+        unset($of);
+    }
+    return $editors;
+}
+
+
+
+/*
+  function: getCfg 
+
+  args:
+  
+  returns: 
+
+*/
+function getCfg()
+{
+    $cfg = new stdClass();
+    $cfg->exec_cfg = config_get('exec_cfg');
+    $cfg->gui_cfg = config_get('gui');
+    $cfg->bts_type = config_get('interface_bugs');
+    
+    $results = config_get('results');
+    $cfg->tc_status = $results['status_code'];
+    $cfg->testcase_cfg = config_get('testcase_cfg'); 
+    $cfg->editorCfg = getWebEditorCfg('execution');
+    
+    return $cfg;
+}
+
+
+/*
+  function: initializeRights 
+            create object with rights useful for this feature 
+  
+  args:
+       dbHandler: reference to db object
+       $userObj: reference to current user object
+       tproject_id:
+       tplan_id
+  
+       Warning: this is right interface for this function, but
+                has_rights() can works in a mode (that i consider a dirty one)
+                using SESSION to achieve global coupling.
+                 
+  returns: 
+
+*/
+function initializeRights(&$dbHandler,&$userObj,$tproject_id,$tplan_id)
+{
+    $exec_cfg = config_get('exec_cfg');
+    $grants = new stdClass();
+    
+    $grants->execute = $userObj->hasRight($dbHandler,"testplan_execute",$tproject_id,$tplan_id);
+    $grants->execute = $grants->execute=="yes" ? 1 : 0;
+    
+    // may be in the future this can be converted to a role right
+    $grants->delete_execution=$exec_cfg->can_delete_execution;
+    
+    
+    // may be in the future this can be converted to a role right
+    // Important:
+    // Execution right must be present to consider this configuration option.
+    $grants->edit_exec_notes = $grants->execute && $exec_cfg->edit_notes;
+    
+    // 20090419 - franciscom - BUGID 
+    $grants->edit_testcase = $userObj->hasRight($dbHandler,"mgt_modify_tc",$tproject_id,$tplan_id);
+    $grants->edit_testcase = $grants->edit_testcase=="yes" ? 1 : 0;
+    return $grants;
+}
+
+
+/*
+  function: initializeGui
+
+  args :
+  
+  returns: 
+
+  rev: 20080429 - franciscom
+*/
+function initializeGui(&$dbHandler,&$argsObj,&$cfgObj,&$tplanMgr,&$tcaseMgr)
+{
+    $buildMgr = new build_mgr($dbHandler);
+    $platformMgr = new tlPlatform($dbHandler,$argsObj->tproject_id);
+    
+    $gui = new stdClass();
+    $gui->remoteExecFeedback = '';
+    $gui->tplan_id=$argsObj->tplan_id;
+    $gui->tproject_id=$argsObj->tproject_id;
+    $gui->build_id = $argsObj->build_id;
+    $gui->platform_id = $argsObj->platform_id;
+    
+    $gui->execStatusValues=null;
+    $gui->can_use_bulk_op=0;
+    $gui->exec_notes_editors=null;
+    $gui->bulk_exec_notes_editor=null;
+    $gui->req_details=null;
+    $gui->attachmentInfos=null;
+    $gui->bugs=null;
+    $gui->other_exec_cfields=null;
+    $gui->ownerDisplayName = null;
+    
+    $gui->editorType=$cfgObj->editorCfg['type'];
+    $gui->filter_assigned_to=$argsObj->filter_assigned_to;
+    $gui->tester_id=$argsObj->user_id;
+    $gui->include_unassigned=$argsObj->include_unassigned;
+    $gui->tpn_view_status=$argsObj->tpn_view_status;
+    $gui->bn_view_status=$argsObj->bn_view_status;
+    $gui->bc_view_status=$argsObj->bc_view_status;
+    $gui->platform_notes_view_status=$argsObj->platform_notes_view_status;
+
+    $gui->refreshTree = $argsObj->refreshTree;
+    if (!$argsObj->status || $argsObj->status == $cfgObj->tc_status['not_run']) {
+    	$gui->refreshTree = 0;
+    }
+    
+    $gui->map_last_exec_any_build=null;
+    $gui->map_last_exec=null;
+
+    	
+    // 20081122 - franciscom
+    // Just for the record:	
+    // doing this here, we avoid to do on processTestSuite() and processTestCase(),
+    // but absolutely this will not improve in ANY WAY perfomance, because we do not loop
+    // over these two functions. 	
+    $tprojectMgr = new testproject($dbHandler);
+    $gui->tcasePrefix = $tprojectMgr->getTestCasePrefix($argsObj->tproject_id);
+    $build_info = $buildMgr->get_by_id($argsObj->build_id);
+    $gui->build_notes=$build_info['notes'];
+    $gui->build_is_open=($build_info['is_open'] == 1 ? 1 : 0);
+    $gui->execution_types=$tcaseMgr->get_execution_types();
+
+    if($argsObj->filter_assigned_to)
+    {
+    	$userSet = tlUser::getByIds($dbHandler,array_values($argsObj->filter_assigned_to));
+    	if ($userSet)
+    	{
+    	    foreach($userSet as $key => $userObj) 
+    	    {
+    	        $gui->ownerDisplayName[$key] = $userObj->getDisplayName();
+    	    }    
+    	}    
+    }
+    // ------------------------------------------------------------------
+
+    $the_builds = $tplanMgr->get_builds_for_html_options($argsObj->tplan_id);
+    $gui->build_name = isset($the_builds[$argsObj->build_id]) ? $the_builds[$argsObj->build_id] : '';
+
+
+    // 20090419 - franciscom
+    $gui->grants = initializeRights($dbHandler,$argsObj->user,$argsObj->tproject_id,$argsObj->tplan_id);
+    $gui->exec_mode = initializeExecMode($dbHandler,$cfgObj->exec_cfg,
+                                         $argsObj->user,$argsObj->tproject_id,$argsObj->tplan_id);
+
+
+
+    $rs = $tplanMgr->get_by_id($argsObj->tplan_id);
+    $gui->testplan_notes = $rs['notes'];
+
+    // Important note: 
+    // custom fields for test plan can be edited ONLY on design, that's reason why we are using 
+    // scope = 'design' instead of 'execution'
+    $gui->testplan_cfields = $tplanMgr->html_table_of_custom_field_values($argsObj->tplan_id,'design',
+                                                                          array('show_on_execution' => 1));
+    
+    $gui->history_on = manage_history_on($_REQUEST,$_SESSION,$cfgObj->exec_cfg,
+                                         'btn_history_on','btn_history_off','history_on');
+    $gui->history_status_btn_name = $gui->history_on ? 'btn_history_off' : 'btn_history_on';
+
+    $dummy = $platformMgr->getLinkedToTestplan($argsObj->tplan_id);
+    $gui->has_platforms = !is_null($dummy) ? 1 : 0;
+    
+    $gui->platform_info['id']=0;
+    $gui->platform_info['name']='';
+    if(!is_null($argsObj->platform_id) && $argsObj->platform_id > 0 )
+    { 
+    	$gui->platform_info = $platformMgr->getByID($argsObj->platform_id);
+    }
+    
+    
+    $gui->node_id = $argsObj->id;
+    return $gui;
+}
+
+
+/*
+  function: processTestCase
+
+  args :
+  
+  returns: 
+
+  rev: 
+    20090913 - franciscom - changes due to platform feature
+  	20090718 - franciscom - cfield location management
+  	20080811 - franciscom - BUGID 1650 (REQ)
+  
+*/
+function processTestCase($tcase,&$guiObj,&$argsObj,&$cfgObj,$linked_tcversions,
+                         &$treeMgr,&$tcaseMgr,&$docRepository)
+{     
+
+  	// IMPORTANT due  to platform feature
+  	// every element on linked_tcversions will be an array.
+    $cf_filters=array('show_on_execution' => 1); // BUGID 1650 (REQ)
+    $locationFilters=$tcaseMgr->buildCFLocationMap();
+    $guiObj->design_time_cfields='';
+  	$guiObj->testplan_design_time_cfields='';
+  	
+  	$tcase_id = isset($tcase['tcase_id']) ? $tcase['tcase_id'] : $argsObj->id;
+
+  	$items_to_exec[$tcase_id] = $linked_tcversions[$tcase_id][0]['tcversion_id'];    
+  	// $tcversion_id = $linked_tcversions[$tcase_id][0]['tcversion_id'];
+  	$tcversion_id = isset($tcase['tcversion_id']) ? $tcase['tcversion_id'] : $items_to_exec[$tcase_id];
+  	
+  	$link_id = $linked_tcversions[$tcase_id][0]['feature_id'];
+  	$guiObj->tcAttachments[$tcase_id] = getAttachmentInfos($docRepository,$tcase_id,'nodes_hierarchy',1);
+
+	foreach($locationFilters as $locationKey => $filterValue)
+	{
+
+		// BUGID 3431 - Custom Field values at Test Case VERSION Level
+		$finalFilters=$cf_filters+$filterValue;
+    	$guiObj->design_time_cfields[$tcase_id][$locationKey] = 
+  		         $tcaseMgr->html_table_of_custom_field_values($tcase_id,'design',$finalFilters,null,null,
+  		         											  $argsObj->tproject_id,null,$tcversion_id);
+    	
+    	// 20090718 - franciscom - TO BE refactored
+    	$guiObj->testplan_design_time_cfields[$tcase_id] = 
+  		         $tcaseMgr->html_table_of_custom_field_values($tcversion_id,'testplan_design',$cf_filters,
+  		                                                      null,null,$argsObj->tproject_id,null,$link_id);
+
+    }
+
+    // BUGID 856: Guest user can execute test case
+  	if($guiObj->grants->execute)
+  	{
+  	   $guiObj->execution_time_cfields[$tcase_id] = 
+  	            $tcaseMgr->html_table_of_custom_field_inputs($tcase_id,null,'execution',"_{$tcase_id}",null,
+  	                                                         null,$argsObj->tproject_id);
+  	}
+    $tc_info=$treeMgr->get_node_hierarchy_info($tcase_id);
+	$guiObj->tSuiteAttachments[$tc_info['parent_id']] = getAttachmentInfos($docRepository,$tc_info['parent_id'],
+		                                                                   'nodes_hierarchy',true,1);
+
+
+    return array($tcase_id,$tcversion_id);
+}
+
+
+
+
+/*
+  function: getLastExecution
+
+  args :
+  
+  returns: 
+
+  rev: 20110622 - asimon - TICKET 4600: Blocked execution of testcases
+*/
+function getLastExecution(&$dbHandler,$tcase_id,$tcversion_id,$guiObj,$argsObj,&$tcaseMgr)
+{      
+	// 20090716 - franciscom - get_last_execution() interface changes
+	$options=array('getNoExecutions' => 1, 'groupByBuild' => 0);
+    $last_exec = $tcaseMgr->get_last_execution($tcase_id,$tcversion_id,$argsObj->tplan_id,
+                                               $argsObj->build_id,$argsObj->platform_id,$options);
+    
+    if( !is_null($last_exec) )
+    {
+	    // TICKET 4600: Blocked execution of testcases
+        $last_exec=setTesterAssignment($dbHandler,$last_exec,$tcaseMgr,
+                                       $argsObj->tplan_id,$argsObj->platform_id, $argsObj->build_id);
+        
+        // Warning: setCanExecute() must be called AFTER setTesterAssignment()  
+        $can_execute=$guiObj->grants->execute && ($guiObj->build_is_open);
+        $last_exec=setCanExecute($last_exec,$guiObj->exec_mode,
+                                 $can_execute,$argsObj->user_id);
+    }
+    
+    // Reorder executions to mantaing correct visualization order.
+    if( is_array($tcversion_id) )
+    {
+      $last_exec=reorderExecutions($tcversion_id,$last_exec);
+    }
+    return $last_exec;
+}
+
+
+
+/*
+  function: getOtherExecutions
+
+  args :
+  
+  returns: 
+
+  rev: 
+*/
+function getOtherExecutions(&$dbHandler,$tcase_id,$tcversion_id,$guiObj,$argsObj,&$cfgObj,&$tcaseMgr)
+{      
+    $other_execs = null;
+    if($guiObj->history_on)
+    {
+		$filters['build_id'] = $argsObj->build_id;
+      	$filters['platform_id'] = $argsObj->platform_id;
+      	
+      	if($cfgObj->exec_cfg->show_history_all_builds )
+      	{
+      	  $filters['build_id'] = ANY_BUILD;
+      	}  
+      	if($cfgObj->exec_cfg->show_history_all_platforms )
+      	{
+      	  $filters['platform_id'] = null;
+      	}  
+      	$options = array('exec_id_order' => $cfgObj->exec_cfg->history_order);
+      	$other_execs = $tcaseMgr->get_executions($tcase_id,$tcversion_id,$argsObj->tplan_id,
+      	                                         $filters['build_id'],$filters['platform_id'],$options);
+    }    
+    else
+    {
+        // Warning!!!:
+        // we can't use the data we have got with previous call to get_last_execution()
+        // because if user have asked to save results last execution data may be has changed
+        $aux_map = $tcaseMgr->get_last_execution($tcase_id,$tcversion_id,$argsObj->tplan_id,
+                                                 $argsObj->build_id,$argsObj->platform_id);
+
+        if(!is_null($aux_map))
+        {
+            $other_execs = array();
+            foreach($aux_map as $key => $value )
+            {
+               $other_execs[$key] = array($value);
+            }
+        }
+    }
+    
+    return $other_execs;
+}
+
+
+/*
+  function: processTestSuite
+
+  args :
+  
+  returns: 
+
+  rev: 20080811 - franciscom - BUGID 1650 (REQ)
+
+*/
+function processTestSuite(&$dbHandler,&$guiObj,&$argsObj,$linked_tcversions,
+                          &$treeMgr,&$tcaseMgr,&$docRepository)
+{
+    $locationFilters=$tcaseMgr->buildCFLocationMap();
+    $testSet = new stdClass();
+    $cf_filters=array('show_on_execution' => 1); // BUGID 1650 (REQ)    
+    
+    $tsuite_mgr=new testsuite($dbHandler); 
+    $tsuite_data = $tsuite_mgr->get_by_id($argsObj->id);
+    $opt = array('write_button_only_if_linked' => 1, 'prune_unlinked_tcversions' => 1);
+
+    // @TODO - 20090815 - franciscom
+    // why here we do not have filtered by tester ?
+    // same for platform_id
+    $filters = array('keywords' => $argsObj->keyword_id);
+    $out = gen_spec_view($dbHandler,'testplan',$argsObj->tplan_id,$argsObj->id,$tsuite_data['name'],
+                         $linked_tcversions,null,$filters,$opt);
+       
+    $testSet->tcase_id = array();
+    $testSet->tcversion_id = array();
+    foreach($out['spec_view'] as $key => $value)
+    {
+     if( count($value['testcases']) > 0 )
+     {
+       foreach($value['testcases'] as $xkey => $xvalue)
+       {
+         $testSet->tcase_id[]=$xkey;
+         $testSet->tcversion_id[]=$xvalue['linked_version_id'];
+       }  
+     }
+    }
+    // ---------------------------------------------------------------------------------
+   
+    // Get the path for every test case, grouping test cases that have same parent.
+    $testCaseQty = count($testSet->tcase_id);
+    if( $testCaseQty > 0 )
+    {
+		$dummy = $tcaseMgr->cfield_mgr->getLocations();
+		$verboseLocationCode = array_flip($dummy['testcase']);
+		$filters=null;
+    	foreach($verboseLocationCode as $key => $value)
+    	{
+    		$filters[$key]['location']=$value;
+    	}	     
+
+		$dummy_id = current($testSet->tcase_id);
+		$index = $testCaseQty == 1 ? $dummy_id : 0;  // 0 => BULK
+		$suffix = '_' . $index;
+		$execution_time_cfields = 
+				$tcaseMgr->html_table_of_custom_field_inputs($dummy_id,$argsObj->tproject_id,'execution',$suffix,
+	            	                               			 null,null,$argsObj->tproject_id);
+		
+		$guiObj->execution_time_cfields[$index] = $execution_time_cfields;
+        $gdx=0;
+        foreach($testSet->tcase_id as $testcase_id)
+        {
+            $path_f = $treeMgr->get_path($testcase_id,null,'full');
+            foreach($path_f as $key => $path_elem)
+            {
+            	if( $path_elem['parent_id'] == $argsObj->id )
+            	{
+            		// Can be added because is present in the branch the user wants to view
+            		// ID of branch starting node is in $argsObj->id
+            		$guiObj->tcAttachments[$testcase_id] = getAttachmentInfos($docRepository,$testcase_id,
+            		                                                            'nodes_hierarchy',true,1);
+                	
+	            	foreach($locationFilters as $locationKey => $filterValue)
+	            	{
+                        $finalFilters=$cf_filters+$filterValue;
+                        
+                        // 
+						// BUGID 3431 - Custom Field values at Test Case VERSION Level
+            			// $guiObj->design_time_cfields[$testcase_id][$locationKey] = 
+            			// 	$tcaseMgr->html_table_of_custom_field_values($testcase_id,'design',$finalFilters);
+            			$guiObj->design_time_cfields[$testcase_id][$locationKey] = 
+            				$tcaseMgr->html_table_of_custom_field_values($testcase_id,'design',$finalFilters,null,null,
+  		         											             $argsObj->tproject_id,null,$testSet->tcversion_id[$gdx]);
+
+                		$guiObj->testplan_design_time_cfields[$testcase_id] = 
+  	            		        $tcaseMgr->html_table_of_custom_field_values($testcase_id,'testplan_design',$cf_filters,
+  	            		                                                     null,null,$argsObj->tproject_id);
+            			                                                                        
+            		}	                     
+
+                	// BUGID 856: Guest user can execute test case
+                	if($guiObj->grants->execute)
+                	{
+            				$guiObj->execution_time_cfields[$testcase_id] = 
+            				$tcaseMgr->html_table_of_custom_field_inputs($testcase_id, null,'execution',   
+            				                                             "_".$testcase_id,null,null,
+            				                                             $argsObj->tproject_id);
+                	}
+            	} // if( $path_elem['parent_id'] == $argsObj->id )
+            	
+              	// We do this because do not know if some test case not yet analised will be direct
+              	// child of this test suite, then we get this info in advance.
+              	// In situations where only last test suite on branch have test cases, we are colleting
+              	// info we will never use.
+              	if($path_elem['node_table'] == 'testsuites' && !isset($guiObj->tSuiteAttachments[$path_elem['id']]))
+              	{
+              		$guiObj->tSuiteAttachments[$path_elem['id']] = 
+            	   		getAttachmentInfos($docRepository,$path_elem['id'],'nodes_hierarchy',true,1);
+            	}
+            	   
+            } //foreach($path_f as $key => $path_elem) 
+            $gdx++;
+        }  
+    }
+
+    return array($testSet->tcase_id,$testSet->tcversion_id);  
+}
+
+
+
+
+
+function buildExecContext(&$argsObj,$tcasePrefix,&$tplanMgr,&$tcaseMgr)
+{
+	$debugMsg = "File:" . __FILE__ . "Function:" . __FUNCTION__;
+
+	$ret = array();
+	$ret['target'] = array(	'tc_versions' => null,'version_id' => null, 
+							'feature_id' => null, 'basic_info' => null);
+	$ret['context'] = array('tproject_id' => null,'tplan_id' => null, 'platform_id' => null,
+					 	 	'build_id' => null,'user_id' => null);
+	
+	
+	foreach($ret as $area => &$value)
+	{	
+		foreach($value as $key => $dummy)
+		{	
+			if( property_exists($argsObj,$key) )
+			{	
+				$value[$key] = $argsObj->$key;			
+			}
+		}	
+	}
+
+	// Now get another important information feature_id on testplan_tcversions
+	// needed to get remote execution server config if this config has been
+	// done with Custom Fields at Test Plan Design Time
+	foreach($ret['target']['tc_versions'] as $tcv_id => $tc_id)
+	{	
+		$ret['target']['feature_id'][$tcv_id] = $tplanMgr->getFeatureID($ret['context']['tplan_id'],
+																  		$ret['context']['platform_id'],
+																  		$tcv_id);
+												
+		$dummy = $tcaseMgr->get_basic_info($tc_id,array('id' => $tcv_id));
+		$dummy[0]['tcasePrefix'] = $tcasePrefix;
+		$ret['target']['basic_info'][$tcv_id] = $dummy[0];
+																  		
+	}
+	return $ret;
+}
+
+
+?>

Modified: trunk/testlink/lib/functions/assignment_mgr.class.php
===================================================================
--- trunk/testlink/lib/functions/assignment_mgr.class.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/assignment_mgr.class.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -5,14 +5,18 @@
  *
  * Manager for assignment activities
  *
+ * @filesource  assignment_mgr.class.php
  * @package 	TestLink
  * @author 		Francisco Mancardi
- * @copyright 	2007-2009, TestLink community 
- * @version    	CVS: $Id: assignment_mgr.class.php,v 1.15.2.3 2010/12/22 20:09:49 franciscom Exp $
+ * @copyright 	2007-2011, TestLink community 
  * @link 		http://www.teamst.org/index.php
  * 
  * @internal revisions:
- * 
+ * 20110326 - franciscom - new methods 	getExecAssignmentsCountByBuild($buildID)
+ *										getNotRunAssignmentsCountByBuild($buildID)
+ *
+ * 20110207 - asimon - BUGID 4203 - use build_id when updating or deleting assignments because
+ *                                  of assignments per build
  * 20101222 - franciscom - BUGID 4121: get_not_run_tc_count_per_build() crashes
  * 20101206 - asimon - introduced new query for get_not_run_tc_count_per_build(), 
  *                     proposed by Francisco per mail
@@ -82,6 +86,28 @@
 		$sql = " DELETE FROM {$this->tables['user_assignments']}  {$where_clause}"; 
 		$result = $this->db->exec_query($sql);
 	}
+	
+	// BUGID 4203 - new function to delete assignments by feature id
+	//              and build_id
+	 
+	function delete_by_feature_id_and_build_id($feature_map) 
+	{
+		$feature_id_list = implode(",",array_keys($feature_map));
+		$where_clause = " WHERE feature_id IN ($feature_id_list) ";
+	    
+		$sql = " DELETE FROM {$this->tables['user_assignments']}  {$where_clause} ";
+		
+		// build_id is the same for all entries because of assignment form
+		// -> skip foreach after first iteration
+		$build_id = 0;
+		foreach ($feature_map as $key => $feature) {
+			$build_id = $feature['build_id'];
+			break;
+		}
+		
+		$sql .= " AND build_id = {$build_id} ";
+		$result = $this->db->exec_query($sql);
+	}
 
 
   	/**
@@ -132,7 +158,9 @@
 	 *                        that have the same name of user_assignment fields
 	 * 
 	 * @internal revisions:
-	 *   20100714 - asimon - BUGID 3406: modified to include build ID
+	 *   20110207 - asimon - BUGID 4203 - added build_id to where statement because of
+	 *                                   assignments per build
+	 *   20100714 - asimon - BUGID 3406 - modified to include build ID
 	 */
 	function update($feature_map) 
 	{
@@ -142,7 +170,7 @@
 			$sepa = "";
 			$sql = "UPDATE {$this->tables['user_assignments']} SET ";
 			// BUGID 3406 - added build_id
-			$simple_fields = array('user_id','assigner_id','type','status','build_id');
+			$simple_fields = array('user_id','assigner_id','type','status');
 			$date_fields = array('deadline_ts','creation_ts');  
 		
 			foreach($simple_fields as $idx => $field)
@@ -163,7 +191,7 @@
 				}
 			}
 			
-			$sql .= "WHERE feature_id={$feature_id}";
+			$sql .= "WHERE feature_id={$feature_id} AND build_id={$elem['build_id']}";
 			
 			$this->db->exec_query($sql);
 		}
@@ -189,6 +217,8 @@
 	    $sql = " SELECT COUNT(id) AS count FROM {$this->tables['user_assignments']} " .
 		       " WHERE build_id = {$build_id} {$user_sql} {$type_sql} ";
 	    
+	    // new dBug($sql);
+	    
 	    $count = $this->db->fetchOneValue($sql);
 	    
 		return $count;
@@ -227,6 +257,7 @@
 		       "     AND E.build_id = UA.build_id " .
 		       " WHERE UA.build_id = {$build_id} AND E.status IS NULL {$type_sql} {$user_sql} ";		   
 		   
+		   
 		if (isset($build_id) && is_numeric($build_id)) {
 			$count = count($this->db->fetchRowsIntoMap($sql, 'assignment_id'));
 		}
@@ -299,5 +330,69 @@
 		
 		$this->db->exec_query($sql);
 	} // end of method
+
+
+
+	/**
+	 * get hash with build id and amount of test cases assigned to testers
+	 * 
+	 * @author Francisco Mancardi
+	 * @param mixed $buildID can be single value or array of build ID.
+	 */
+	function getExecAssignmentsCountByBuild($buildID)
+	{
+		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
+		$rs = null;
+		$types = $this->get_available_types();
+	    $execAssign = $types['testcase_execution']['id'];
+	    
+		$sql = 	"/* $debugMsg */ ".
+				" SELECT COUNT(id) AS qty, build_id " . 
+				" FROM {$this->tables['user_assignments']} " .
+				" WHERE build_id IN ( " . implode(",",(array)$buildID) . " ) " .
+				" AND type = {$execAssign} " .
+				" GROUP BY build_id ";
+	    $rs = $this->db->fetchRowsIntoMap($sql,'build_id');
+	    
+		return $rs;
+	}
+
+
+	/**
+	 * get hash with build id and amount of test cases assigned to testers,
+	 * but NOT EXECUTED.
+	 * 
+	 * 
+	 * @author Francisco Mancardi
+	 * @param mixed $buildID can be single value or array of build ID.
+	 */
+	function getNotRunAssignmentsCountByBuild($buildID)
+	{
+		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
+		$rs = null;
+		$types = $this->get_available_types();
+	    $execAssign = $types['testcase_execution']['id'];
+
+		$sql = 	"/* $debugMsg */ ".
+				" SELECT count(0) as qty, UA.build_id ".
+				" FROM {$this->tables['user_assignments']} UA " .
+				" JOIN {$this->tables['builds']}  BU ON UA.build_id = BU.id " .
+				" JOIN {$this->tables['testplan_tcversions']} TPTCV " .
+				"     ON TPTCV.testplan_id = BU.testplan_id " .
+				"     AND TPTCV.id = UA.feature_id " .
+				" LEFT OUTER JOIN {$this->tables['executions']} E " .
+				"     ON E.testplan_id = TPTCV.testplan_id " . 
+				"     AND E.tcversion_id = TPTCV.tcversion_id " .
+				"     AND E.platform_id = TPTCV.platform_id " .
+				"     AND E.build_id = UA.build_id " .
+				" WHERE UA.build_id IN ( " . implode(",",(array)$buildID) . " ) " .
+				" AND E.status IS NULL " . 		   
+				" AND type = {$execAssign} " .
+				" GROUP BY UA.build_id ";
+	    
+	    $rs = $this->db->fetchRowsIntoMap($sql,'build_id');
+	    
+		return $rs;
+	}
 }
 ?>
\ No newline at end of file

Modified: trunk/testlink/lib/functions/build_progress.class.php
===================================================================
--- trunk/testlink/lib/functions/build_progress.class.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/build_progress.class.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -6,7 +6,7 @@
  * @package TestLink
  * @author Andreas Simon
  * @copyright 2010, TestLink community
- * @version CVS: $Id: build_progress.class.php,v 1.9 2010/09/29 09:56:44 asimon83 Exp $
+ * @version CVS: $Id: build_progress.class.php,v 1.9.2.1 2011/02/11 14:51:10 asimon83 Exp $
  * 
  * @internal revisions:
  * 20100929 - asimon - corrected values for multiple platforms
@@ -33,6 +33,9 @@
  * 
  * @author Andreas Simon
  * @package TestLink
+ * 
+ * @internal revisions
+ * 20110211 - asimon - BUGID 4192: show only open builds by default
  */
 class build_progress extends tlObjectWithDB {
 	
@@ -115,12 +118,15 @@
 	 * @param Database $db reference to database object
 	 * @param int $tplan_id Testplan ID for which the table shall be generated
 	 */
-	public function __construct(&$db, $tplan_id) {
+	public function __construct(&$db, $tplan_id, $show_closed_builds) {
 		
 		parent::__construct($db);
 		
 		$this->labels = array('na' => lang_get('not_aplicable'));
 		
+		// BUGID 4192
+		$this->show_closed_builds = $show_closed_builds;
+		
 		$res_cfg = config_get('results');
 		foreach ($res_cfg['status_label_for_exec_ui'] as $status => $label) {
 			$this->status_map[$status] = $res_cfg['status_code'][$status];
@@ -148,7 +154,8 @@
 	 */
 	private function load_builds() {
 		// BUGID 3682
-		$this->build_set = $this->tplan_mgr->get_builds($this->tplan_id, testplan::GET_ACTIVE_BUILD);
+		$option = $this->show_closed_builds ? null : testplan::GET_OPEN_BUILD;
+		$this->build_set = $this->tplan_mgr->get_builds($this->tplan_id, testplan::GET_ACTIVE_BUILD, $option);
 		
 		if (is_array($this->build_set)) {
 			$keys = array_keys($this->build_set);

Modified: trunk/testlink/lib/functions/cfield_mgr.class.php
===================================================================
--- trunk/testlink/lib/functions/cfield_mgr.class.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/cfield_mgr.class.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -7,10 +7,13 @@
  * @author 		franciscom
  * @copyright 	2005-2009, TestLink community
  * @copyright 	Mantis BT team (some parts of code was reuse from the Mantis project) 
- * @version    	CVS: $Id: cfield_mgr.class.php,v 1.96.2.7 2011/01/20 15:44:05 mx-julian Exp $
+ * @version    	CVS: $Id: cfield_mgr.class.php,v 1.96.2.9 2011/02/10 21:25:25 franciscom Exp $
  * @link 		http://www.teamst.org/index.php
  *
  * @internal Revisions:
+ * 20110205 - franciscom - BUGID 4222 - added sanitize() method
+ * 20110129 - franciscom - BUGID 3338 - getXMLRPCServerParams() - refactoring
+ * 20110123 - franciscom - BUGID 3338 - getXMLServerParams() -> renamed getXMLRPCServerParams
  * 20110120 - Julian - BUGID 4164 - lists and multiselection lists do not use more space than
  *                                  necessary anymore
  * 20110118 - franciscom - BUGID 4112 - MSSQL BLOCKING error on Report "Test Cases with Execution Details" 
@@ -1193,66 +1196,114 @@
 	}
 
 
+	/*
+	 *
+	 *	keys	name	-> trim will be applied
+     *			label	-> trim will be applied
+     *	   		type	-> intval() wil be applied
+     *	   		possible_values
+     *	   		show_on_design	-> trasformation on 1/0 using intval() [*]
+     *	   		enable_on_design	-> [*]
+     *	   		show_on_execute	-> [*]
+     *	   		enable_on_execute	-> [*]
+     *	   		show_on_testplan_design	-> [*]
+     *	   		enable_on_testplan_design	-> [*]
+     *
+	 */
+	function sanitize($cf)
+	{
+		$safe = $cf;
+		
+		// remove the standard set of characters considered harmful
+		// "\0" - NULL, "\t" - tab, "\n" - new line, "\x0B" - vertical tab
+		// "\r" - carriage return
+		// and spaces
+		// fortunatelly this is trim standard behaviour
+		$k2san = array('name','label');
+		foreach($k2san as $key)
+		{	
+			$safe[$key] = $this->db->prepare_string(trim($cf[$key]));
+		}	    
+		
+		// seems here is better do not touch.
+	    $safe['possible_values'] = $this->db->prepare_string($cf['possible_values']);
+
+		$onezero = array('show_on_design','enable_on_design','show_on_testplan_design',
+						 'enable_on_testplan_design','show_on_execution','enable_on_execution');
+	
+		foreach($onezero as $key)
+	    {
+	    	$safe[$key] = intval($cf[$key]) > 0 ? 1 : 0;
+	    }
+
+	    $safe['type'] = intval($cf['type']);
+		
+		return $safe;
+	}	
+	
   /*
     function: create a custom field
 
     args: $hash:
-          keys   name
-                 label
-                 type
+          keys   name	-> trim will be applied
+                 label	-> trim will be applied
+                 type	-> intval() wil be applied
                  possible_values
-                 show_on_design
-                 enable_on_design
-                 show_on_execute
-                 enable_on_execute
-                 show_on_testplan_design
-                 enable_on_testplan_design
+                 show_on_design	-> trasformation on 1/0 using intval() [*]
+                 enable_on_design	-> [*]
+                 show_on_execute	-> [*]
+                 enable_on_execute	-> [*]
+                 show_on_testplan_design	-> [*]
+                 enable_on_testplan_design	-> [*]
                  node_type_id
 
     returns: -
 
-    rev: 20080810 - franciscom - BUGID 1650
+    rev: 
+    @internal revision
+    20110205 - franciscom - improve management of 1/0 values to manage missing values
+    						using on import.
+    						
 
   */
 	function create($cf)
-  {
-    $ret = array('status_ok' => 0, 'id' => 0, 'msg' => 'ko');
-
-    $my_name=$this->db->prepare_string($cf['name']);
-    $my_label=$this->db->prepare_string($cf['label']);
-    $my_pvalues=$this->db->prepare_string($cf['possible_values']);
-
-
-    $sql="INSERT INTO {$this->object_table} " .
-         " (name,label,type,possible_values, " .
-         "  show_on_design,enable_on_design, " .
-         "  show_on_testplan_design,enable_on_testplan_design, " .
-         "  show_on_execution,enable_on_execution) " .
-         " VALUES('{$my_name}','{$my_label}',{$cf['type']},'{$my_pvalues}', " .
-         "        {$cf['show_on_design']},{$cf['enable_on_design']}," .
-         "        {$cf['show_on_testplan_design']},{$cf['enable_on_testplan_design']}," .
-         "        {$cf['show_on_execution']},{$cf['enable_on_execution']})";
-    $result=$this->db->exec_query($sql);
-
-   	if ($result)
   	{
-  	  // at least for Postgres DBMS table name is needed.
-  	  $field_id=$this->db->insert_id($this->object_table);
+		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
+	    $ret = array('status_ok' => 0, 'id' => 0, 'msg' => 'ko');
+	
+		$safecf = $this->sanitize($cf);	
+		
+	    $sql="/* $debugMsg */ INSERT INTO {$this->object_table} " .
+	         " (name,label,type,possible_values, " .
+	         "  show_on_design,enable_on_design, " .
+	         "  show_on_testplan_design,enable_on_testplan_design, " .
+	         "  show_on_execution,enable_on_execution) " .
+	         " VALUES('" . $safecf['name'] . "','" . $safecf['label'] . "'," . 
+	         		intval($safecf['type']) . ",'" . $safecf['possible_values'] . "', " .
+	         "		{$safecf['show_on_design']},{$safecf['enable_on_design']}," .
+	         "		{$safecf['show_on_testplan_design']},{$safecf['enable_on_testplan_design']}," .
+	         "		{$safecf['show_on_execution']},{$safecf['enable_on_execution']})";
+	    $result=$this->db->exec_query($sql);
 
-      $sql="INSERT INTO {$this->tables['cfield_node_types']} " .
-           " (field_id,node_type_id) " .
-           " VALUES({$field_id},{$cf['node_type_id']}) ";
-      $result=$this->db->exec_query($sql);
-    }
+	   	if ($result)
+	  	{
+	  	  // at least for Postgres DBMS table name is needed.
+	  	  $field_id=$this->db->insert_id($this->object_table);
+	
+	      $sql="/* $debugMsg */ INSERT INTO {$this->tables['cfield_node_types']} " .
+	           " (field_id,node_type_id) " .
+	           " VALUES({$field_id},{$safecf['node_type_id']}) ";
+	      $result=$this->db->exec_query($sql);
+	    }
+	
+	    if ($result)
+		{
+	       $ret = array('status_ok' => 1, 'id' => $field_id, 'msg' => 'ok');
+	    }
+	    return $ret;
+	} //function end
 
-    if ($result)
-	  {
-       $ret = array('status_ok' => 1, 'id' => $field_id, 'msg' => 'ok');
-    }
-    return($ret);
-  } //function end
 
-
   /*
     function: update a custom field
 
@@ -1273,27 +1324,27 @@
   */
 	function update($cf)
 	{
-		$my_name = $this->db->prepare_string($cf['name']);
-		$my_label = $this->db->prepare_string($cf['label']);
-		$my_pvalues = $this->db->prepare_string($cf['possible_values']);
+		$safecf = $this->sanitize($cf);
 
-		$sql ="UPDATE {$this->tables['custom_fields']}  " .
-			 " SET name='{$my_name}',label='{$my_label}'," .
-			 "     type={$cf['type']},possible_values='{$my_pvalues}'," .
-			 "     show_on_design={$cf['show_on_design']}," .
-			 "     enable_on_design={$cf['enable_on_design']}," .
-			 "     show_on_testplan_design={$cf['show_on_testplan_design']}," .
-			 "     enable_on_testplan_design={$cf['enable_on_testplan_design']}," .
-			 "     show_on_execution={$cf['show_on_execution']}," .
-			 "     enable_on_execution={$cf['enable_on_execution']}" .
-			 " WHERE id={$cf['id']}";
+		$sql =	"UPDATE {$this->tables['custom_fields']}  " .
+			 	" SET	name='" . $safecf['name'] . "'," . 
+			 	"		label='" . $safecf['label'] . "'," .
+			 	"     	type={$safecf['type']}," .
+			 	"		possible_values='" . $safecf['possible_values'] . "'," .
+			 	"     	show_on_design={$safecf['show_on_design']}," .
+			 	"     	enable_on_design={$safecf['enable_on_design']}," .
+			 	"     	show_on_testplan_design={$safecf['show_on_testplan_design']}," .
+			 	"     	enable_on_testplan_design={$safecf['enable_on_testplan_design']}," .
+			 	"     	show_on_execution={$safecf['show_on_execution']}," .
+			 	"     	enable_on_execution={$safecf['enable_on_execution']}" .
+			 	" WHERE id={$safecf['id']}";
 		$result = $this->db->exec_query($sql);
 
 		if ($result)
 		{
-			$sql = "UPDATE {$this->tables['cfield_node_types']} " .
-				" SET node_type_id={$cf['node_type_id']}" .
-				" WHERE field_id={$cf['id']}";
+			$sql = 	"UPDATE {$this->tables['cfield_node_types']} " .
+					" SET node_type_id={$safecf['node_type_id']}" .
+					" WHERE field_id={$safecf['id']}";
 			$result = $this->db->exec_query($sql);
 		}
 		return $result ? 1 : 0;
@@ -1992,68 +2043,121 @@
 
 
 /**
- * Retrieves the XML Server Parameters specified through custom fields.
+ * Retrieves the XML-RPC Server Parameters specified through custom fields.
  * 
+ * Done searching CARVED in the stone Custom Field Names on different
+ * (AGAIN CARVED in the stone) CF value tables in this way:
+ *
+ * CF name will have 3 pieces separated by _ (underscore)
+ *
+ * RE-XMLRPC_url_tsuite
+ * RE-XMLRPC_url_tcase
+ * RE-XMLRPC_url_link
+ *
+ * Part 1: 	RE-XMLRPC_ FIXED value, used as search key to get automatically 
+ *			CF to be analised.
+ *
+ * Part 2: 	url will be key on returned hash, and is part of 'contract' with caller,
+ *			i.e. caller will use this key.
+ *			This key is a FREE choice of developer of Remote Execute modules to use
+ *			with TL.
+ *
+ * Part 3:	this part is domain (link,tcase,tsuite)
+ *			work this way:
+ *			To specify Remote Execution server parameters we have provided 3 choices
+ *			a. on test case version LINKED to Test Plan + Platform (Test Plan Design time)
+ *			b. on test case version BUT at Test Spec Design time.
+ *			   In this way if is OK to have always same parameters no matter 
+ *			   test plan + platform where test case version has been linked, we configure
+ *			   this just ONCE.
+ *			c. on test suite (can be done ONLY at Test Spec Design time), all test case versions
+ *			   contained on this test suite branch (and children Test suites) will share this
+ *			   configuration.
+ *	
+ *
+ *
  * @param integer $node_id Accepts current node id from nodes hierarchy level
  * @return mixed An array of config params if found, else returns null
  *
  * @internal rev:
- *     20071102 - franciscom - refactoring
- *     200710 - creation - Swanand
+ * 
+ * 20110123 - franciscom -	need refactoring after we have choose to link custom field
+ *							values to test case version not to test case
+ *
  **/
-function getXMLServerParams($node_id)
+function getXMLRPCServerParams($nodeID,$tplanLinkID=null)
 {
+	static $node_type;
+	static $likeTarget;
+	static $CFGKEY_IDX;
+	
+	$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
+
 	$srv_cfg = new stdClass();
 	
-	$node_type=$this->tree_manager->get_available_node_types();
-	$node_info=$this->tree_manager->get_node_hierarchy_info($node_id);
-	$ret=null;
+	if( is_null($node_type) )
+	{
+		$node_type=$this->tree_manager->get_available_node_types();
+		$likeTarget = 'RE-XMLRPC_%';
+		$CFGKEY_IDX = 1;
+	}
+		
+	$node_info = $this->tree_manager->get_node_hierarchy_info($nodeID);
+	$ret = null;
 	
 	if( !is_null($node_info) )
 	{
-		$prefix = "";
-		$ret = array( 'xml_server_host' => null,
-			'xml_server_port' => null,
-			'xml_server_path' => null);
-		
-		$node_info=$this->tree_manager->get_node_hierarchy_info($node_id);
-		
-		
-		if( $node_info['node_type_id'] == $node_type['testcase'])
-		{
-			$prefix = "tc_";
+		$server_info = null;
+				
+		// First Search at test plan design time
+		if( !is_null($tplanLinkID) )
+		{					
+			$sql = 	" /* $debugMsg */ SELECT cf.name, cfv.value " .
+					" FROM {$this->tables['cfield_testplan_design_values']} cfv " .
+					" JOIN {$this->tables['custom_fields']}  cf ON " .
+					" cfv.field_id = cf.id " .
+					" WHERE cf.name LIKE '{$likeTarget}' " . 
+					" AND cfv.link_id = " . intval($tplanLinkID);
+
+			$server_info = $this->db->fetchRowsIntoMap($sql,'name');
 		}
-		$srv_cfg->host=$prefix . "server_host";
-		$srv_cfg->port=$prefix . "server_port";
-		$srv_cfg->path=$prefix . "server_path";
+				 
+		if( is_null($server_info) )
+		{	
+			
+			$sql = 	" /* $debugMsg */ SELECT cf.name, cfv.value " .
+					" FROM {$this->tables['cfield_design_values']} cfv " .
+					" JOIN {$this->tables['custom_fields']}  cf ON " .
+					" cfv.field_id = cf.id " .
+					" WHERE cf.name LIKE '{$likeTarget}' " .
+					" AND cfv.node_id = " . intval($nodeID);
+
+			$server_info = $this->db->fetchRowsIntoMap($sql,'name');
+		}
 		
-		$sql = "SELECT cf.name, cfdv.value " .
-			"FROM {$this->tables['cfield_design_values']} cfdv," .
-			" {$this->tables['custom_fields']}  cf " .
-			"WHERE cfdv.field_id = cf.id AND cfdv.node_id = {$node_id}";
-		
-		$server_info = $this->db->fetchRowsIntoMap($sql,'name');
-		$server_cfg_is_ok=0;
-		$server_use_host_port=0;
-		$server_use_path=0;
-		
-		if( (isset($server_info[$srv_cfg->host]) && $server_info[$srv_cfg->host] != "") &&
-				(isset($server_info[$srv_cfg->port]) && $server_info[$srv_cfg->port] != "") )
+		if( is_null($server_info) )
 		{
-			$server_cfg_is_ok=1;
-			$ret['xml_server_host'] = $server_info[$srv_cfg->host];
-			$ret['xml_server_port'] = $server_info[$srv_cfg->port];
+			// Recurse
+			// 20110123 - franciscom
+			// At time of initial development this was thinked to try to get
+			// server info from Test Suite.
+			// Because with TL 1.9.x when working with test case  we will receive 
+			// Test Case Version ID, instead of Test Case ID (1.8.x), we will do 
+			// a call to reach Test Case and then another to reach Test Suite
+			// 
+			//
+			if($node_info['parent_id'] != "")
+			{
+				$ret = $this->getXMLRPCServerParams($node_info['parent_id']);
+			}
 		}
-		else if (isset($server_info[$srv_cfg->path]) && $server_info[$srv_cfg->path] != "")
-		{
-			$server_cfg_is_ok=1;
-			$ret['xml_server_path'] = $server_info[$srv_cfg->path];
-		}
 		else
 		{
-			if($node_info['parent_id'] != "")
+			$key2loop = array_keys($server_info);
+			foreach($key2loop as $target)
 			{
-				$ret=$this->getXMLServerParams($node_info['parent_id']);
+				$dummy = explode('_',$target);
+				$ret[$dummy[$CFGKEY_IDX]] = $server_info[$target]['value']; 	
 			}
 		}
 	} // if( !is_null($node_info) )

Modified: trunk/testlink/lib/functions/common.php
===================================================================
--- trunk/testlink/lib/functions/common.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/common.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -18,6 +18,8 @@
  * @since 		TestLink 1.5
  *
  * @internal Revisions:
+ *  20110415 - Julian - BUGID 4418: Clean up priority usage within Testlink
+ *                                  -> priority_to_level() uses urgencyImportance
  *  20101028 - asimon - BUGID 3951: Status and Type for requirements are not saved
  *  20101025 - Julian - BUGID 3930 - added function split_localized_date()
  *                                 - simplified function is_valid_date()
@@ -643,13 +645,15 @@
  * @return integer HIGH, MEDUIM or LOW
  */
 function priority_to_level($priority) {
-	$levels = config_get('priority_levels');
-	if ($priority >= $levels[HIGH])
+	$urgencyImportance = config_get('urgencyImportance');
+	
+	if ($priority >= $urgencyImportance->threshold['high']) {
 		return HIGH;
-	else if ($priority >= $levels[MEDIUM])
+	} else if ($priority < $urgencyImportance->threshold['low']) {
+		return LOW;
+	} else {
 		return MEDIUM;
-	else
-		return LOW;
+	}
 }
 
 

Modified: trunk/testlink/lib/functions/configCheck.php
===================================================================
--- trunk/testlink/lib/functions/configCheck.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/configCheck.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -9,12 +9,16 @@
  * @package 	TestLink
  * @author 		Martin Havlat
  * @copyright 	2007-2009, TestLink community 
- * @version    	CVS: $Id: configCheck.php,v 1.55 2010/06/24 17:25:53 asimon83 Exp $
+ * @version    	CVS: $Id: configCheck.php,v 1.55.4.1 2011/01/26 09:01:58 mx-julian Exp $
  * @link 		http://www.teamst.org/index.php
  * @see			sysinfo.php
  *
  * @internal Revisions:
  * 	
+ *  20110411 - Julian - BUGID 4398 - Prevent user-login when database scheme version does not fit 
+ *                                   required scheme
+ *  20110126 - Julian - BUGID 4186 - checkSchemaVersion() moved last_db_version to const.inc.php
+ *                                 - better log message for DB 1.3 to DB 1.4 upgrade
  *  20100617 - franciscom - domxml is not needed anymore
  *  20090713 - franciscom - tested is_writable() on windows with PHP 5.
  *                          minor refactoring
@@ -271,7 +275,9 @@
 
 	// 20070121 - needed when schemas change has been done
 	// This call can be removed when release is stable
-	$msg = checkSchemaVersion($db);
+	$res = checkSchemaVersion($db);
+	$msg = $res['msg'];
+	
 	if($msg != "")
 	{
 		$securityNotes[] = $msg;
@@ -421,18 +427,21 @@
  */
 function checkSchemaVersion(&$db)
 {
-	$last_version = 'DB 1.3';  // havlatm: updated for 1.9
+	$result = array('status' => tl::ERROR, 'msg' => null);
+	$last_version = TL_LAST_DB_VERSION;  // BUGID 4186: moved last db version to const.inc.php
 	$db_version_table= DB_TABLE_PREFIX . 'db_version';
 	
 	$sql = "SELECT * FROM {$db_version_table} ORDER BY upgrade_ts DESC";
 	$res = $db->exec_query($sql,1);  
 	if (!$res)
 	{
-		return $msg = "Failed to get Schema version from DB";
+		return $result['msg'] = "Failed to get Schema version from DB";
 	}
 		
 	$myrow = $db->fetch_array($res);
-	$msg = "";
+	
+	$upgrade_msg = "You need to upgrade your Testlink Database to {$last_version} - <br>" .
+				   '<a href="./install/index.php" style="color: white">click here access install and upgrade page </a><br>';
 	switch (trim($myrow['version']))
 	{
 		case '1.7.0 Alpha':
@@ -445,21 +454,29 @@
 		case '1.7.0 RC 3':
 		case 'DB 1.1':
 		case 'DB 1.2':
-			$msg = "You need to upgrade your Testlink Database to {$last_version} - <br>" .
-				'<a href="SCHEMA_CHANGES" style="color: white"> click here to see the Schema changes </a><br>' .
-				'<a href="./install/index.php" style="color: white">click here access install and upgrade page </a><br>';
+			$result['msg'] = $upgrade_msg;
 			break;
 
+		case 'DB 1.3':
+			// DB 1.3 to DB 1.4 requires manual steps
+			if ($last_version == 'DB 1.4') {
+				$result['msg'] = "Manual upgrade of your DB scheme necessary (1.9.0 -> {$last_version}) - Read README file!";
+			} else {
+				$result['msg'] = $upgrade_msg;
+			}
+			break;
+			
 		case $last_version:
+			$result['status'] = tl::OK;
 			break;
 		
 		default:
-			$msg = "Unknown Schema version " .  trim($myrow['version']) . 
-			       ", please upgrade your Testlink Database to " . $last_version;
+			$result['msg'] = "Unknown Schema version " .  trim($myrow['version']) . 
+			                 ", please upgrade your Testlink Database to " . $last_version;
 			break;
 	}
 	
-	return $msg;
+	return $result;
 }
 
 /**

Modified: trunk/testlink/lib/functions/csv.inc.php
===================================================================
--- trunk/testlink/lib/functions/csv.inc.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/csv.inc.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -14,6 +14,9 @@
  * @TODO havlatm: move both functions to appropriate object
  * 
  * @internal revisions
+ *	20110206 - franciscom - BUGID 4210 - importCSVData() - added more debug info
+ *										 return structure changed.
+ *
  *	20100508 - franciscom - BUGID 3447 - importCSVData() 
  *
  **/
@@ -51,15 +54,12 @@
 
 // 20061014 - franciscom
 // added [$num_fields] number of fields a line must have to be valid
-//                     if the number is not verified the line is discarded silently.
+//                     if the number is not verified the line is discarded.
 //
 /** @uses requirements.inc.php */ 
-// function importCSVData($fileName,$destKeys,$delimiter = ';',$num_fields=0,
-//                        $bWithHeader = false,$bSkipHeader = true)
-// 
-// 
 function importCSVData($fileName,$fieldMappings, $options = null)
 {
+	$debugMe = false; //true;
 	$my['options'] = array( 'delimiter' => ';', 'fieldQty' => 0, 'processHeader' => false);
     $my['options'] = array_merge($my['options'], (array)$options);
 
@@ -67,24 +67,48 @@
 	$check_syntax = $my['options']['fieldQty'] > 0;
 	$do_import = 1;
 	
-	// array where each element is a map.
-	$returnMap = null;
+	// parsedCounter: count lines on file that has been parsed => exclude comment lines
+	// syntaxError: array: index -> line number on file that has been skipped due to syntax
+	//							check problems.
+	// info: map with lines that can be processed by caller
+	//
+	$retVal = array('userFeedback' => array('parsedCounter' => 0, 'syntaxError' => array()), 
+					'info' => null);
 	
 	if ($handle)
 	{
+		$lineNumber = 0;
 		$idx = 0;
 		$isHeaderLine = true;
 		$keyMappings = $fieldMappings;
 		
+		$debugMsg = 'DEBUG::' . basename(__FILE__);
+		
+		if( $debugMe )
+		{
+			echo $debugMsg . ' OPTIONS: processHeader=' . 
+				(($my['options']['processHeader']) ? 'true' : 'false' ) . '<br>';
+		}
+		
 		while( $data = fgetcsv($handle, TL_IMPORT_ROW_MAX, $my['options']['delimiter']) )
 		{ 
+			$lineNumber++;
+
 			// ignore line that start with comment char, leading blanks are ignored
 			$firstChunk = trim($data[0]);
 			$positionCheck = strpos($firstChunk,'#');
 			$processLine = ($positionCheck === false || $positionCheck != 0);
             
+			if( $debugMe )
+			{
+            	echo $debugMsg . ':: Line: ' . $lineNumber . '=>' . 
+            		 (($processLine) ? 'OK to process' : 'Skipped') .'<br>'; 
+        	}    	
+        	
 			if( $processLine )
 			{
+				$retVal['userFeedback']['parsedCounter']++;
+				
 				if( $isHeaderLine && $my['options']['processHeader'] )
 				{
 					// Get format information from first line, and rebuild with this 
@@ -112,14 +136,27 @@
 	        	{
 					if( $check_syntax)
 					{
-					  $do_import = (count($data) == $my['options']['fieldQty'] );
+						$fieldsQty = count($data);
+						if( !($do_import = ($fieldsQty == $my['options']['fieldQty'])))
+						{
+							$msg = 'Field count:' . $fieldsQty . ' Required Field count: ' . 
+								 	$my['options']['fieldQty']; 
+							
+							$retVal['userFeedback']['syntaxError'][$lineNumber] = $msg;
+							
+							if($debugMe)
+							{
+								echo $debugMsg . 'Syntax Check Failure - Line  ' . $lineNumber . 
+									 $msg . ' - SKIPPED ' . '<br>';
+							}		 	
+						}	
 					}
 					
 					if( $do_import )
 					{ 
 						foreach($keyMappings as $fieldPos => $fieldKey)
 						{ 
-							$returnMap[$idx][$fieldKey] = $data[$fieldPos];
+							$retVal['info'][$idx][$fieldKey] = $data[$fieldPos];
 						} 
 						$idx++;
 					}
@@ -127,6 +164,6 @@
 			}
 		} // end while
 	}
-	return $returnMap;
+	return $retVal;
 }
 ?>
\ No newline at end of file

Modified: trunk/testlink/lib/functions/exec.inc.php
===================================================================
--- trunk/testlink/lib/functions/exec.inc.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/exec.inc.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -73,9 +73,10 @@
  * @internal Revisions:
  * 
  *
+ * 20110323 - Parameter map_last_exec not used within function -> removed
  * 20100522 - BUGID 3479 - Bulk Execution - Custom Fields Bulk Assignment
  */
-function write_execution(&$db,&$exec_signature,&$exec_data,$map_last_exec)
+function write_execution(&$db,&$exec_signature,&$exec_data)
 {
 	$executions_table = DB_TABLE_PREFIX . 'executions';
 	$resultsCfg = config_get('results');

Modified: trunk/testlink/lib/functions/exttable.class.php
===================================================================
--- trunk/testlink/lib/functions/exttable.class.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/exttable.class.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -168,7 +168,11 @@
 	public function __construct($columns, $data, $tableID)
 	{
 		parent::__construct($columns, $data, $tableID);
-		$this->addCustomBehaviour('status', array('render' => 'statusRenderer', 'sort' => 'statusCompare'));
+		$this->addCustomBehaviour('status', array(
+			'render' => 'statusRenderer',
+			'sort' => 'statusCompare',
+			'filter' => 'Status'
+		));
 
 		$this->showExportButton = config_get('enableTableExportButton');
 	}
@@ -237,12 +241,12 @@
 				$s .= ",filter: {type: '{$column['filter']}',options: ['";
 				$s .= implode("','",$column['filterOptions']);
 				$s .= "']}";
-			} else {
+			} else if (!isset($this->customBehaviour[$column['type']]['filter'])) {
 				// if no filter is specified use string filter
 				// string filter is the most "basic" filter
 				$s .= ",filter: {type: 'string'}"; 
 			}
-			
+
             foreach($options as $opt_str)
             {
 				if (isset($column[$opt_str])) {
@@ -250,11 +254,23 @@
 				}
 			}
 
-			if( isset($column['type']) && isset($this->customBehaviour[$column['type']]) &&
-				isset($this->customBehaviour[$column['type']]['render']) )
+			if( isset($column['type']) && isset($this->customBehaviour[$column['type']]))
 			{
-				// Attach a custom renderer
-				$s .= ",renderer: {$this->customBehaviour[$column['type']]['render']}";
+				// BUGID 4125
+				$customBehaviour = $this->customBehaviour[$column['type']];
+				if (isset($customBehaviour['filter']) && $customBehaviour['filter'] == 'Status')
+				{
+					$s .= ",filter: " . $this->buildStatusFilterOptions();
+				}
+				if (isset($customBehaviour['filter']) && $customBehaviour['filter'] == 'Priority')
+				{
+					$s .= ",filter: " . $this->buildPriorityFilterOptions();
+				}
+				if (isset($customBehaviour['render']) )
+				{
+					// Attach a custom renderer
+					$s .= ",renderer: {$customBehaviour['render']}";
+				}
 			}
 
 			$sortable = 'true';
@@ -461,4 +477,23 @@
 		$idx = $this->getColumnIdxByName($name);
 		$this->sortByColumn = $this->columns[$idx]['col_id'];
 	}
+
+	function buildStatusFilterOptions() {
+		$resultsCfg = config_get('results');
+		$statuses = array();
+		foreach ($resultsCfg["status_label"] as $status => $label) {
+			$code = $resultsCfg['status_code'][$status];
+			$statuses[] = array($code, lang_get($label));
+		}
+		return "{type: 'Status', options: " . json_encode($statuses) . "}";
+	}
+	
+	function buildPriorityFilterOptions() {
+		$urgencyCfg = config_get('urgency');
+		$priorities = array();
+		foreach ($urgencyCfg['code_label'] as $prio => $label) {
+			$priorities[] = array($prio, lang_get($label));
+		}
+		return "{type: 'Priority', options: " . json_encode($priorities) . "}";
+	}
 }

Modified: trunk/testlink/lib/functions/print.inc.php
===================================================================
--- trunk/testlink/lib/functions/print.inc.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/print.inc.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -5,15 +5,27 @@
  *
  * Library for documents generation
  *
- * @package TestLink
- * @author	Martin Havlat <havlat at users.sourceforge.net>
- * @copyright 2007-2009, TestLink community 
- * @version $Id: print.inc.php,v 1.120.2.2 2011/01/15 15:07:36 franciscom Exp $
- * @uses printDocument.php
+ * @filesource	print.inc.php
  *
+ * @package 	TestLink
+ * @author		Martin Havlat <havlat at users.sourceforge.net>
+ * @copyright 	2007-2011, TestLink community 
+ * @uses 	printDocument.php
  *
+ *
  * @internal revisions:
- * 	20110113 - franciscom - BUGID 4171: Test Report - estimated and real execution time functions made Platform aware
+ *	20110309 - franciscom - renderReqForPrinting() fixed call to get custom fields, not
+ *							refactored after addition of req REVISIONS
+ *							
+ *	20110306 - franciscom - BUGID 4273: Option to print single requirement
+ *							renderReqForPrinting()	new layout for version and revision
+ *
+ *	20110305 - franciscom - BUGID 4273: Option to print single requirement
+ *							renderReqForPrinting() - refactored to use version id.
+ *
+ *	20110304 - franciscom - BUGID 4286: Option to print single test case
+ *							renderTestCaseForPrinting() added missing info.
+ *
  *  20101106 - amitkhullar - BUGID 2738: Contribution: option to include TC Exec notes in test report
  *  20101015 - franciscom  - BUGID 3804 - contribution again
  *  20100923 - franciscom  - BUGID 3804 - contribution
@@ -73,7 +85,7 @@
  *                         Lots of controls must be developed to avoid problems 
  *                         presenting with results, when user use time with decimal part.
  *                         Example:
- *                         14.6 minuts what does means? 
+ *                         14.6 minutes what does means? 
  *                         a) 14 min and 6 seconds?  
  *                         b) 14 min and 6% of 1 minute => 14 min 3.6 seconds ?
  *
@@ -82,19 +94,11 @@
  *                         to avoid problems.
  *                         Another choice: TL must round individual times before doing sum.
  *
- *	20080819 - franciscom - renderTestCaseForPrinting() - removed mysql only code
- *	20080602 - franciscom - display testcase external id
- *	20080525 - havlatm - fixed missing test result
- *	20080505 - franciscom - renderTestCaseForPrinting() - added custom fields
- *	20080418 - franciscom - document_generation configuration .
- *                             removed tlCfg global coupling
- *	20071014 - franciscom - renderTestCaseForPrinting() added printing of test case version
- *	20070509 - franciscom - changes in renderTestSpecTreeForPrinting() interface
- *
  */ 
 
 /** uses get_bugs_for_exec() */
 require_once("exec.inc.php");
+require_once("lang_api.php");
 
 if (config_get('interface_bugs') != 'NO')
 {
@@ -109,14 +113,29 @@
  * 
  * @param resource $db
  * @param array $node the node to be printed
- * @param array $printingOptions
+ * @param array $options
+ *				displayDates: true display creation and last edit date (including hh:mm:ss)
+ *
  * @param string $tocPrefix Prefix to be printed in TOC before title of node
  * @param int $level
  * @param int $tprojectID
  * 
  * @return string $output HTML Code
+ *
+ * @internal revisions
+ *
+ * 20110306 - franciscom - 	BUGID 4273: Option to print single requirement 
+ *							added logic to manage revision number
+ *							layout changed to show revision on new row
+ *
+ * 20110305 - franciscom - 	BUGID 4273: Option to print single requirement 
+ *							added logic to manage version id
+ *
+ * 20110305 - franciscom -	BUGID 4273: Option to print single requirement
+ *							enhancements on info displayed
  */
-function renderRequirementNodeForPrinting(&$db,$node, &$printingOptions, $tocPrefix, $level, $tprojectID) {
+function renderReqForPrinting(&$db,$node, &$options, $tocPrefix, $level, $tprojectID) 
+{
 	
 	static $tableColspan;
 	static $firstColWidth;
@@ -126,94 +145,178 @@
 	static $tplan_mgr;
 	static $req_cfg;
 	static $req_spec_cfg;
-	static $reqStatusLabels;
-	static $reqTypeLabels;
+	static $decodeReq;
+    static $force = null;
 	
-	if (!$req_mgr) {
+	if (!$req_mgr) 
+	{
 		$req_cfg = config_get('req_cfg');
 		$req_spec_cfg = config_get('req_spec_cfg');
 		$firstColWidth = '20%';
 		$tableColspan = 2;
 		$labels = array('requirement' => 'requirement', 'status' => 'status', 
 		                'scope' => 'scope', 'type' => 'type', 'author' => 'author',
-		                'relations' => 'relations',
-		                'coverage' => 'coverage',
+		                'relations' => 'relations','not_aplicable' => 'not_aplicable',
+		                'coverage' => 'coverage','last_edit' => 'last_edit',
 		                'custom_field' => 'custom_field', 'relation_project' => 'relation_project',
-		                'related_tcs' => 'related_tcs');
+		                'related_tcs' => 'related_tcs', 'version' => 'version', 
+		                'revision' => 'revision');
+		                
 		$labels = init_labels($labels);
-		$reqStatusLabels = init_labels($req_cfg->status_labels);
-	    $reqTypeLabels = init_labels($req_cfg->type_labels);
+	    
+	    $decodeReq = array();
+	    $decodeReq['status'] = init_labels($req_cfg->status_labels);
+	    $decodeReq['type'] = init_labels($req_cfg->type_labels);
+	    
+	    
+	    $force['displayVersion'] = isset($options['displayVersion']) ? $options['displayVersion'] : false;
+		$force['displayLastEdit'] = isset($options['displayLastEdit']) ? $options['displayLastEdit'] : false;
+    
+	    
 		$title_separator = config_get('gui_title_separator_1');
 		$req_mgr = new requirement_mgr($db);
 		$tplan_mgr = new testplan($db);
 	}
 	
-	$arrReq = $req_mgr->get_by_id($node['id']);
-	$req = $arrReq[0];
+	$versionID = isset($node['version_id']) ? intval($node['version_id']) : requirement_mgr::LATEST_VERSION;
+	$revision = isset($node['revision']) ? intval($node['revision']) : null;
+
+	if( is_null($revision) )
+	{
+		// will get last revision of requested req version 
+		$dummy = $req_mgr->get_by_id($node['id'],$versionID);  
+	}
+	else
+	{
+		$dummy = $req_mgr->get_version_revision($versionID,array('number' => $revision));  
+		if(!is_null($dummy))
+		{
+			// do this way instead of using SQL alias on get_version_revision(), in order
+			// to avoid issues (potential not confirmed)on different DBMS.
+			$dummy[0]['id'] = $dummy[0]['req_id'];
+		}
+	}
+	
+	$req = $dummy[0];
+
+	// update with values got from req, this is needed if user did not provide it
+	$versionID = $req['version_id'];
+	$revision = $req['revision'];
+
 	$name =  htmlspecialchars($req["req_doc_id"] . $title_separator . $req['title']);
-		
-	$output = "<table class=\"req\"><tr><th colspan=\"$tableColspan\">" .
-	          "<span class=\"label\">{$labels['requirement']}:</span> " . $name . "</th></tr>\n";	
+
+	// 20110308 - asimon - change table style in case of single req printing to not be indented
+	$table_style = "";
+	if (isset($options['docType']) && $options['docType'] == SINGLE_REQ) {
+		$table_style = "style=\"margin-left: 0;\"";
+	}
+
+    $output = "<table class=\"req\" $table_style><tr><th colspan=\"$tableColspan\">" .
+              "<span class=\"label\">{$labels['requirement']}:</span> " . $name . "</th></tr>\n"; 
 	
-	if ($printingOptions['toc']) {
-		$printingOptions['tocCode'] .= '<p style="padding-left: ' . 
-	                                     (15*$level).'px;"><a href="#' . prefixToHTMLID('req'.$node['id']) . '">' .
-	       	                             $name . '</a></p>';
+	if( $force['displayVersion'] )
+	{
+		foreach(array('version','revision') as $key)
+		{
+			$output .= 	'<tr><td valign="top">' . 
+		    	     	'<span class="label">'.$labels[$key].':</span></td>' .
+        			 	'<td>' . $req[$key]. "</td></tr>\n";
+		}		
+	}
+	
+	
+	if ($options['toc']) 
+	{
+		$options['tocCode'] .= '<p style="padding-left: ' . 
+	                           (15*$level).'px;"><a href="#' . prefixToHTMLID('req'.$node['id']) . '">' .
+	    	                   $name . '</a></p>';
 		$output .= '<a name="' . prefixToHTMLID('req'.$node['id']) . '"></a>';
 	}
 
-	if ($printingOptions['req_author']) {
-		$author = tlUser::getById($db,$req['author_id']);
-		$output .=  '<tr><td width="' . $firstColWidth . '"><span class="label">' . 
-		            $labels['author'] . "</span></td><td> " . 
-		            htmlspecialchars($author->getDisplayName()) . "</td></tr>\n";
+	if ($options['req_author']) 
+	{
+		$output .= 	'<tr><td valign="top">' . 
+		         	'<span class="label">'.$labels['author'].':</span></td>' .
+        		 	'<td>' . htmlspecialchars(gendocGetUserName($db, $req['author_id']));
+
+		if(isset($options['displayDates']) && $options['displayDates'])
+		{
+			$dummy = null;
+        	$output .= ' - ' . localize_dateOrTimeStamp(null,$dummy,'timestamp_format',$req['creation_ts']);
+		}
+		$output .= "</td></tr>\n";
+
+		if ($req['modifier_id'] > 0) 
+		{
+			// add updater if available and differs from author OR forced
+			if (1 || $force['displayLastEdit'] || ($req['modifier_id'] != $req['modifier_id']) )
+			{
+				$output .= 	'<tr><td valign="top">' . 
+		    	     	 	'<span class="label">'. $labels['last_edit'] . ':</span></td>' .
+						 	'<td>' . htmlspecialchars(gendocGetUserName($db, $req['modifier_id']));
+        					 	
+				if(isset($options['displayDates']) && $options['displayDates'])
+				{
+					$dummy = null;
+					$output .= ' - ' . localize_dateOrTimeStamp(null,$dummy,'timestamp_format',
+																$req['modification_ts']);
+				}	
+				$output .= "</td></tr>\n";
+			}	
+		}
 	}
 	          	
-	if ($printingOptions['req_status']) {
-		$output .= '<tr><td width="' . $firstColWidth . '"><span class="label">' . 
-		           $labels['status'] . "</span></td>" .
-		           "<td>" . $reqStatusLabels[$req['status']] . "</td></tr>";
-	}
+	foreach(array('status','type') as $key)
+	{
+		if($options['req_' . $key])
+		{
+			$output .= '<tr><td width="' . $firstColWidth . '"><span class="label">' . 
+		    	       $labels[$key] . "</span></td>" .
+		        	   "<td>" . $decodeReq[$key][$req[$key]] . "</td></tr>";
+		}
+	}          	
 	
-	if ($printingOptions['req_type']) {
-		$output .= '<tr><td width="' . $firstColWidth . '"><span class="label">' . 
-		           $labels['type'] . "</span></td>" .
-		           "<td>" . $reqTypeLabels[$req['type']] . "</td></tr>";
-	} 
-	
-	if ($printingOptions['req_coverage']) {
+	if ($options['req_coverage']) 
+	{
 		$current = count($req_mgr->get_coverage($req['id']));
 		$expected = $req['expected_coverage'];
-    	$coverage = lang_get('not_aplicable') . " ($current/0)";
-    	if ($expected) {
+    	$coverage = $labels['not_aplicable'] . " ($current/0)";
+    	if ($expected) 
+    	{
     		$percentage = round(100 / $expected * $current, 2);
 			$coverage = "{$percentage}% ({$current}/{$expected})";
     	}
     	
-    	$output .= "<tr><td width=\"$firstColWidth\"><span class=\"label\">" . $labels['coverage'] . "</span></td>" .
-		           "<td>$coverage</td></tr>";
+    	$output .= "<tr><td width=\"$firstColWidth\"><span class=\"label\">" . $labels['coverage'] .
+    			   "</span></td>" . "<td>$coverage</td></tr>";
 	} 
 	
-	if ($printingOptions['req_scope']) {
-		$output .= "<tr><td colspan=\"$tableColspan\"><span class=\"label\">" . $labels['scope'] . 
-		           "</span><br/>" . $req['scope'] . "</td></tr>";
+	if ($options['req_scope']) {
+		// 20110530 - Julian - removed scope label
+		$output .= "<tr><td colspan=\"$tableColspan\"> <br/>" . $req['scope'] . "</td></tr>";
 	}
 		
-	if ($printingOptions['req_relations']) {
+	if ($options['req_relations']) 
+	{
 		$relations = $req_mgr->get_relations($req['id']);
 
-		if ($relations['num_relations']) {
-			$output .= "<tr><td width=\"$firstColWidth\"><span class=\"label\">" . $labels['relations'] . "</span></td>" .
-			           "<td>";
-			
-			foreach ($relations['relations'] as $rel) {
-				$output .= "{$rel['type_localized']}: <br/>     " . 
+		if ($relations['num_relations']) 
+		{
+			$output .= "<tr><td width=\"$firstColWidth\"><span class=\"label\">" . $labels['relations'] . 
+					   "</span></td><td>";
+	
+			$filler = str_repeat(' ',5); // MAGIC allowed		
+			foreach ($relations['relations'] as $rel) 
+			{
+				$output .= "{$rel['type_localized']}: <br/>{$filler}" . 
 				           htmlspecialchars($rel['related_req']['req_doc_id']) . $title_separator .
 			               htmlspecialchars($rel['related_req']['title']) . "</br>" .
-				           "     {$labels['status']}: " .
-				           "{$reqStatusLabels[$rel['related_req']['status']]} <br/>";
-				if ($req_cfg->relations->interproject_linking) {
-					$output .= "     {$labels['relation_project']}: " .
+				           "{$filler}{$labels['status']}: " .
+				           "{$decodeReq['status'][$rel['related_req']['status']]} <br/>";
+				           
+				if ($req_cfg->relations->interproject_linking) 
+				{
+					$output .= "{$filler}{$labels['relation_project']}: " .
 					           htmlspecialchars($rel['related_req']['testproject_name']) . " <br/>";
 				}
 			}
@@ -222,36 +325,37 @@
 		}
 	} 
 	
-	if ($printingOptions['req_linked_tcs']) {
+	if ($options['req_linked_tcs']) 
+	{
 		$req_coverage = $req_mgr->get_coverage($req['id']);
 		
-		if (count($req_coverage)) {
-			$output .= "<tr><td width=\"$firstColWidth\"><span class=\"label\">" . $labels['related_tcs'] . "</span></td>" .
-			           "<td>";
+		if (count($req_coverage)) 
+		{
+			$output .=	"<tr><td width=\"$firstColWidth\"><span class=\"label\">" . $labels['related_tcs'] . 
+						"</span></td>" . "<td>";
 			           
-			foreach ($req_coverage as $tc) {
-				$output .= htmlentities($tc['tc_external_id'] . $title_separator .
-				                        $tc['name']) . "<br/>";
+			foreach ($req_coverage as $tc) 
+			{
+				$output .= htmlentities($tc['tc_external_id'] . $title_separator . $tc['name']) . "<br/>";
 			}
 			           
 			$output .= "</td></tr>";
 		}
 	}
 	
-	if ($printingOptions['req_cf']) 
+	if ($options['req_cf']) 
 	{
-		//BUGID 2877 - Custom Fields linked to Req versions
-		$linked_cf = $req_mgr->get_linked_cfields($req['id'], $req['version_id']);
+		$childID = (is_null($revision) || $req['revision_id'] < 0) ? $req['version_id'] : $req['revision_id'];
+		$linked_cf = $req_mgr->get_linked_cfields($req['id'], $childID);
 		if ($linked_cf)
 		{
 			foreach ($linked_cf as $key => $cf) 
 			{
 				$cflabel = htmlspecialchars($cf['label']);
 				$value = htmlspecialchars($cf['value']);
-				
+								
 				$output .= "<tr><td width=\"$firstColWidth\"><span class=\"label\">" . 
-				           $cflabel . "</span></td>" .
-				           "<td>$value</td></tr>";
+				           $cflabel . "</span></td>" . "<td>$value</td></tr>";
 			}
 		}
 	}
@@ -269,14 +373,14 @@
  * 
  * @param resource $db
  * @param array $node the node to be printed
- * @param array $printingOptions
+ * @param array $options
  * @param string $tocPrefix Prefix to be printed in TOC before title of node
  * @param int $level
  * @param int $tprojectID
  * 
  * @return string $output HTML Code
  */
-function renderReqSpecNodeForPrinting(&$db, &$node, &$printingOptions, $tocPrefix, $level, $tprojectID) {
+function renderReqSpecNodeForPrinting(&$db, &$node, &$options, $tocPrefix, $level, $tprojectID) {
 	static $tableColspan;
 	static $firstColWidth;
 	static $labels;
@@ -294,6 +398,7 @@
 		                'scope' => 'scope', 'type' => 'type', 'author' => 'author',
 		                'relations' => 'relations', 'overwritten_count' => 'req_total',
 		                'coverage' => 'coverage',
+		                'undefined_req_spec_type' => 'undefined_req_spec_type',
 		                'custom_field' => 'custom_field', 'not_aplicable' => 'not_aplicable');
 		$labels = init_labels($labels);
 		$reqSpecTypeLabels = init_labels($req_spec_cfg->type_labels);
@@ -307,23 +412,26 @@
 	$name = htmlspecialchars($spec['doc_id'] . $title_separator . $spec['title']);
 	
 	$docHeadingNumbering = '';
-	if ($printingOptions['headerNumbering']) {
+	if ($options['headerNumbering']) {
 		$docHeadingNumbering = "$tocPrefix. ";
 	}
 	
-	$output = "<table class=\"req_spec\"><tr><th colspan=\"$tableColspan\">" .
-	        "<span class=\"label\">{$docHeadingNumbering}{$labels['requirements_spec']}:</span> " .
- 			$name . "</th></tr>\n";
+	// 20110530 - Julian - added page-break before each req spec
+	//                   - use doclevel class for req spec headings
+	$output = '<p style="page-break-before: always"></p>'.
+	        "<table class=\"req_spec\"><tr><th colspan=\"$tableColspan\">" .
+	        "<h{$level} class=\"doclevel\"> <span class=\"label\">{$docHeadingNumbering}{$labels['requirements_spec']}:</span> " .
+ 			$name . "</th></tr></h{$level}>\n";
  		
-	if ($printingOptions['toc'])
+	if ($options['toc'])
 	{
 		$spacing = ($level == 2) ? "<br>" : "";
-	 	$printingOptions['tocCode'] .= $spacing.'<b><p style="padding-left: '.(10*$level).'px;">' .
+	 	$options['tocCode'] .= $spacing.'<b><p style="padding-left: '.(10*$level).'px;">' .
 				'<a href="#' . prefixToHTMLID($tocPrefix) . '">' . $docHeadingNumbering . $name . "</a></p></b>\n";
 		$output .= "<a name='". prefixToHTMLID($tocPrefix) . "'></a>\n";
 	}
 	
-	if ($printingOptions['req_spec_author']) {
+	if ($options['req_spec_author']) {
 		// get author name for node
 		$author = tlUser::getById($db, $spec['author_id']);
 		$output .=  '<tr><td width="' . $firstColWidth . '"><span class="label">' . 
@@ -331,13 +439,23 @@
 		            htmlspecialchars($author->getDisplayName()) . "</td></tr>\n";
 	}
 	
-	if ($printingOptions['req_spec_type']) {
+	if ($options['req_spec_type']) 
+	{
 		$output .= '<tr><td width="' . $firstColWidth . '"><span class="label">' . 
-		           $labels['type'] . "</span></td>" .
-		           "<td>" . $reqSpecTypeLabels[$spec['type']] . "</td></tr>";
+		           $labels['type'] . "</span></td>" . "<td>";
+		           
+		if( isset($reqSpecTypeLabels[$spec['type']]) )
+		{	 
+			$output .= $reqSpecTypeLabels[$spec['type']];
+		}
+		else
+		{
+			$output .= sprintf($labels['undefined_req_spec_type'],$spec['type']);		
+		}
+		$output .= "</td></tr>";
 	}
 	
-	if ($printingOptions['req_spec_overwritten_count_reqs']) {
+	if ($options['req_spec_overwritten_count_reqs']) {
 		$current = $req_spec_mgr->get_requirements_count($spec['id']);
 		$expected = $spec['total_req'];
     	$coverage = $labels['not_aplicable'] . " ($current/0)";
@@ -351,12 +469,12 @@
 		           "<td>" . $coverage . "</td></tr>";
 	}
 
-	if ($printingOptions['req_spec_scope']) {
-		$output .= "<tr><td colspan=\"$tableColspan\"><span class=\"label\">" . $labels['scope'] . 
-		           "</span><br/>" . $spec['scope'] . "</td></tr>";
+	if ($options['req_spec_scope']) {
+	// 20110530 - Julian - removed scope label
+		$output .= "<tr><td colspan=\"$tableColspan\">" . $spec['scope'] . "</td></tr>";
 	}
 	
-	if ($printingOptions['req_spec_cf']) {
+	if ($options['req_spec_cf']) {
 		$linked_cf = $req_spec_mgr->get_linked_cfields($spec['id']);
 		if ($linked_cf){
 			foreach ($linked_cf as $key => $cf) {
@@ -384,7 +502,7 @@
  * 
  * @param resource $db
  * @param array $node the node to be printed
- * @param array $printingOptions
+ * @param array $options
  * @param string $tocPrefix Prefix to be printed in TOC before title of each node
  * @param int $level
  * @param int $tprojectID
@@ -392,7 +510,7 @@
  * 
  * @return string $output HTML Code
  */
-function renderReqSpecTreeForPrinting(&$db, &$node, &$printingOptions,
+function renderReqSpecTreeForPrinting(&$db, &$node, &$options,
                                        $tocPrefix, $rsCnt, $level, $user_id,
                                        $tplan_id = 0, $tprojectID = 0) {
 	
@@ -417,13 +535,13 @@
 
 		case 'requirement_spec':
             $tocPrefix .= (!is_null($tocPrefix) ? "." : '') . $rsCnt;
-            $code .= renderReqSpecNodeForPrinting($db,$node,$printingOptions,
+            $code .= renderReqSpecNodeForPrinting($db,$node,$options,
                                $tocPrefix, $level, $tprojectID);
 		break;
 
 		case 'requirement':
 			$tocPrefix .= (!is_null($tocPrefix) ? "." : '') . $rsCnt;
-			$code .= renderRequirementNodeForPrinting($db, $node, $printingOptions,
+			$code .= renderReqForPrinting($db, $node, $options,
 			                              $tocPrefix, $level, $tprojectID);
 	    break;
 	}
@@ -448,7 +566,7 @@
 			    $rsCnt++;
 			}
 			
-			$code .= renderReqSpecTreeForPrinting($db, $current, $printingOptions,
+			$code .= renderReqSpecTreeForPrinting($db, $current, $options,
 			                                       $tocPrefix, $rsCnt, $level+1, $user_id,
 			                                       $tplan_id, $tprojectID);
 		}
@@ -456,9 +574,9 @@
 	
 	if ($verbose_node_type == 'testproject')
 	{
-		if ($printingOptions['toc'])
+		if ($options['toc'])
 		{
-			$code = str_replace("{{INSERT_TOC}}",$printingOptions['tocCode'],$code);
+			$code = str_replace("{{INSERT_TOC}}",$options['tocCode'],$code);
 		}
 	}
 
@@ -475,12 +593,29 @@
  * 
  * @return string html data
  */
-function renderHTMLHeader($title,$base_href)
+function renderHTMLHeader($title,$base_href,$doc_type)
 {
 	// BUGID 3424
 	$themeDir = config_get('theme_dir');
 	$docCfg = config_get('document_generator');
-    $cssFile = $base_href . $themeDir . $docCfg->css_template;
+	
+	// BUGID 4644 - different css files for test spec docs and req docs
+	$cssFile = $base_href . $themeDir;
+	switch ($doc_type) {
+		case DOC_TEST_SPEC:
+		case DOC_TEST_PLAN:
+		case DOC_TEST_REPORT:
+		case SINGLE_TESTCASE:
+			$cssFile .= $docCfg->css_template;
+		break;
+		case DOC_REQ_SPEC:
+		case SINGLE_REQ:
+		case SINGLE_REQSPEC:
+			$cssFile .= $docCfg->requirement_css_template;
+		break;
+		default:
+			$cssFile .= $docCfg->css_template;
+	}
 
 	$output = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>\n";
 	$output .= "<html>\n<head>\n";
@@ -524,9 +659,15 @@
     
 	if ($docCfg->company_logo != '' )
 	{
+		// 20110530 - Julian - allow to configure height via config file
+		$height = '';
+		if (isset($docCfg->company_logo_height) && $docCfg->company_logo_height != '') {
+			$height = "height=\"{$docCfg->company_logo_height}\"";
+		}
+		
 		// BUGID 3804 - contribution
 		$output .= '<p style="text-align: center;"><img alt="TestLink logo" ' .
-           		   'title="configure using $tlCfg->document_generator->company_logo" height="53" '.
+           		   'title="configure using $tlCfg->document_generator->company_logo" ' . $height .
            		   ' src="' . $_SESSION['basehref'] . TL_THEME_IMG_DIR . $docCfg->company_logo . '" />';
 	}
 	$output .= "</div>\n";
@@ -535,8 +676,10 @@
 	$output .= "</div>\n";
     
 	// Print summary on the first page
+	// 20110530 - Julian - added project scope to summary
 	$output .= '<div class="summary">' .
-		         '<p id="prodname">'. lang_get('project') .": " . $doc_info->tproject_name . "</p>\n";
+		         '<p id="prodname">'. lang_get('project') .": " . $doc_info->tproject_name . "</p>\n" .
+	             '<p id="prodscope">' . lang_get('project') . " " .lang_get('scope') . ": " . $doc_info->tproject_scope . "</p>\n";
     
 	$output .= '<p id="author">' . lang_get('author').": " . $doc_info->author . "</p>\n" .
 		         '<p id="printedby">' . lang_get('printed_by_TestLink_on')." ".
@@ -588,7 +731,7 @@
        20070509 - franciscom - added $tplan_id in order to refactor and
                                add contribution BUGID
 */
-function renderTestSpecTreeForPrinting(&$db,&$node,$item_type,&$printingOptions,
+function renderTestSpecTreeForPrinting(&$db,&$node,$item_type,&$options,
                                        $tocPrefix,$tcCnt,$level,$user_id,
                                        $tplan_id = 0,$tcPrefix = null,
                                        $tprojectID = 0, $platform_id = 0)
@@ -612,24 +755,24 @@
 		    {
 		        // we are printing a test plan, get it's custom fields
                 $cfieldFormatting=array('table_css_style' => 'class="cf"');
-                if ($printingOptions['cfields'])
+                if ($options['cfields'])
         		{
 	            	$cfields = $tplan_mgr->html_table_of_custom_field_values($tplan_id,'design',null,$cfieldFormatting);
 	            	$code .= '<p>' . $cfields . '</p>';
 	       		}
 		    }
-			// platform changes - $code .= renderTOC($printingOptions);
+			// platform changes - $code .= renderTOC($options);
 		break;
 
 		case 'testsuite':
             $tocPrefix .= (!is_null($tocPrefix) ? "." : '') . $tcCnt;
-            $code .= renderTestSuiteNodeForPrinting($db,$node,$printingOptions,
+            $code .= renderTestSuiteNodeForPrinting($db,$node,$options,
                                                     $tocPrefix,$level,$tplan_id,$tprojectID);
 		break;
 
 		case 'testcase':
 			// BUGID 3459 - added $platform_id
-			$code .= renderTestCaseForPrinting($db, $node, $printingOptions, $level,
+			$code .= renderTestCaseForPrinting($db, $node, $options, $level,
 			                                   $tplan_id, $tcPrefix, $tprojectID, $platform_id);
 	    break;
 	}
@@ -654,7 +797,7 @@
 			    $tsCnt++;
 			}
 			// BUGID 3459 - added $platform_id
-			$code .= renderTestSpecTreeForPrinting($db, $current, $item_type, $printingOptions,
+			$code .= renderTestSpecTreeForPrinting($db, $current, $item_type, $options,
 			                                       $tocPrefix, $tsCnt, $level+1, $user_id,
 			                                       $tplan_id, $tcPrefix, $tprojectID, $platform_id);
 		}
@@ -662,11 +805,11 @@
 	
 	if ($verbose_node_type == 'testproject')
 	{
-		if ($printingOptions['toc'])
+		if ($options['toc'])
 		{
 			// remove for platforms feature  
-			// $printingOptions['tocCode'] .= '</div><hr />';
-			$code = str_replace("{{INSERT_TOC}}",$printingOptions['tocCode'],$code);
+			// $options['tocCode'] .= '</div><hr />';
+			$code = str_replace("{{INSERT_TOC}}",$options['tocCode'],$code);
 		}
 	}
 
@@ -718,6 +861,12 @@
  * @return string generated html code
  *
  * @internal revisions
+ * 20110304 - franciscom - BUGID 4286: Option to print single test case
+ *						   added missing info
+ *						   version number, creation date, modifier+date
+ *						   test case execution type, importance
+ *						   STEP execution type, importance
+ *	
  * 20100920 - franciscom - changed key on $cfieldFormatting
  * 20100905 - franciscom - BUGID 3431 - Custom Field values at Test Case VERSION Level
  * 20100724 - asimon - BUGID 3459 - added platform ID
@@ -727,9 +876,10 @@
  * 20071014 - franciscom - display test case version
  * 20070509 - franciscom - added Contribution
  */
-function renderTestCaseForPrinting(&$db, &$node, &$printingOptions, $level, $tplan_id = 0,
+function renderTestCaseForPrinting(&$db, &$node, &$options, $level, $tplan_id = 0,
                                    $prefix = null, $tprojectID = 0, $platform_id = 0)
 {
+	
     static $req_mgr;
 	static $tc_mgr;
 	static $labels;
@@ -738,23 +888,21 @@
     static $cfg;
     static $locationFilters;
     static $tables = null;
+    static $force = null;
     
-    if (!$tables)
-    {
-    	$tables = tlDBObject::getDBTables(array('executions','builds'));
-    }
-    
 	$code = null;
 	$tcInfo = null;
     $tcResultInfo = null;
     $tcase_pieces = null;
-    
+    $id = $node['id'];
+
     // init static elements
-    $id = $node['id'];
-	if(!$cfg)
-	{
+    if (!$tables)
+    {
+    	$tables = tlDBObject::getDBTables(array('executions','builds'));
  	    $tc_mgr = new testcase($db);
  	    list($cfg,$labels) = initRenderTestCaseCfg($tc_mgr);
+
 	    if(!is_null($prefix))
 	    {
 	        $tcase_prefix = $prefix;
@@ -764,13 +912,16 @@
 	    	list($tcase_prefix,$dummy) = $tc_mgr->getPrefix($id);
 	    }
 	    $tcase_prefix .= $cfg['testcase']->glue_character;
+
+		$force['displayVersion'] = isset($options['displayVersion']) ? $options['displayVersion'] : false;
+		$force['displayLastEdit'] = isset($options['displayLastEdit']) ? $options['displayLastEdit'] : false;
+		
 	}
 
-	// 20100920 - franciscom
 	$cspan = ' colspan = "' . ($cfg['tableColspan']-1) . '" ';
 	$cfieldFormatting = array('label_css_style' => '',  'add_table' => false, 'value_css_style' => $cspan );
 
-	$versionID = isset($node['tcversion_id']) ? $node['tcversion_id'] : testcase::LATEST_VERSION;
+	$versionID = isset($node['tcversion_id']) ? intval($node['tcversion_id']) : testcase::LATEST_VERSION;
     $tcInfo = $tc_mgr->get_by_id($id,$versionID);
     
     if ($tcInfo)
@@ -793,7 +944,7 @@
   	$cfields = array('specScope' => null, 'execScope' => null);
 
   	// get custom fields that has specification scope
-  	if ($printingOptions['cfields'])
+  	if ($options['cfields'])
 	{
 		if (!$locationFilters)
 		{
@@ -815,9 +966,9 @@
 	 */
 	$exec_info = null;
 	$bGetExecutions = false;
-	if ($printingOptions["docType"] != DOC_TEST_SPEC)
+	if ($options["docType"] != DOC_TEST_SPEC)
 	{
-		$bGetExecutions = ($printingOptions['cfields'] || $printingOptions['passfail']);
+		$bGetExecutions = ($options['cfields'] || $options['passfail']);
 	}
 	
 	if ($bGetExecutions)
@@ -833,9 +984,8 @@
 		  		" ORDER BY execution_id DESC";
 		$exec_info = $db->get_recordset($sql,null,1);
 	}
-	
 	// Added condition for the display on/off of the custom fields on test cases.
-    if ($printingOptions['cfields'] && !is_null($exec_info))
+    if ($options['cfields'] && !is_null($exec_info))
     {
     	$execution_id = $exec_info[0]['execution_id'];
         $cfields['execScope'] = $tc_mgr->html_table_of_custom_field_values($versionID,'execution',null,
@@ -843,21 +993,27 @@
                                                                            $tprojectID,$cfieldFormatting);
     }
 	  
-	if ($printingOptions['toc'])
+	if ($options['toc'])
 	{
-		$printingOptions['tocCode'] .= '<p style="padding-left: ' . 
+		$options['tocCode'] .= '<p style="padding-left: ' . 
 	                                     (15*$level).'px;"><a href="#' . prefixToHTMLID('tc'.$id) . '">' .
 	       	                             $name . '</a></p>';
 		$code .= '<a name="' . prefixToHTMLID('tc'.$id) . '"></a>';
 	}
-      
- 	$code .= '<p> </p><div> <table class="tc" width="90%">';
+    
+	// 20110308 - asimon - change table style in case of single TC printing to not be indented
+	$table_style = "";
+	if (isset($options['docType']) && $options['docType'] == SINGLE_TESTCASE) {
+		$table_style = 'style="margin-left: 0;"';
+	}
+	
+ 	$code .= '<p> </p><div> <table class="tc" width="90%" ' . $table_style . '>';
  	$code .= '<tr><th colspan="' . $cfg['tableColspan'] . '">' . $labels['test_case'] . " " . 
  			htmlspecialchars($external_id) . ": " . $name;
 
 	// add test case version 
 	$version_number = isset($node['version']) ? $node['version'] : $tcInfo['version'];
-	if($cfg['doc']->tc_version_enabled)
+	if($cfg['doc']->tc_version_enabled || $force['displayVersion'] )
 	{
 		$code .= ' <span style="font-size: 80%;">' . $cfg['gui']->role_separator_open . 
         	   	$labels['version'] . $cfg['gui']->title_separator_1 .  $version_number . 
@@ -865,33 +1021,49 @@
   	}
    	$code .= "</th></tr>\n";
 
-  	if ($printingOptions['author'])
+  	if ($options['author'])
   	{
-		$authorName = gendocGetUserName($db, $tcInfo['author_id']);
 		$code .= '<tr><td width="' . $cfg['firstColWidth'] . '" valign="top">' . 
-		         '<span class="label">'.$labels['author'].':</span></td>';
-        $code .= '<td colspan="' .  ($cfg['tableColspan']-1) . '">' . $authorName;
+		         '<span class="label">'.$labels['author'].':</span></td>' .
+        		 '<td colspan="' .  ($cfg['tableColspan']-1) . '">' . 
+        		 gendocGetUserName($db, $tcInfo['author_id']);
 
-
-		if (($tcInfo['updater_id'] > 0) && $tcInfo['updater_id'] != $tcInfo['author_id']) 
+		if(isset($options['displayDates']) && $options['displayDates'])
 		{
-		    // add updater if available and differs from author
-			$updaterName = gendocGetUserName($db, $tcInfo['updater_id']);
-			$code .= '<br />' . $labels['last_edit'] . " " . $updaterName;
+			$dummy = null;
+        	$code .= ' - ' . localize_dateOrTimeStamp(null,$dummy,'timestamp_format',$tcInfo['creation_ts']);
 		}
 		$code .= "</td></tr>\n";
+		
+		if ($tcInfo['updater_id'] > 0) 
+		{
+			// add updater if available and differs from author OR forced
+			if ($force['displayLastEdit'] > 0 || ($tcInfo['updater_id'] != $tcInfo['author_id']) )
+			{
+				$code .= '<tr><td width="' . $cfg['firstColWidth'] . '" valign="top">' . 
+		    	     	 '<span class="label">'. $labels['last_edit'] . ':</span></td>' .
+						 '<td colspan="' .  ($cfg['tableColspan']-1) . '">' . 
+        				 gendocGetUserName($db, $tcInfo['updater_id']);
+        					 	
+				if(isset($options['displayDates']) && $options['displayDates'])
+				{
+					$dummy = null;
+					$code .= ' - ' . localize_dateOrTimeStamp(null,$dummy,'timestamp_format',$tcInfo['modification_ts']);
+				}	
+				$code .= "</td></tr>\n";
+			}	
+		}
   	}
 
-    if ($printingOptions['body'] || $printingOptions['summary'])
+    if ($options['body'] || $options['summary'])
     {
         $tcase_pieces = array('summary');
     }
     
-    if ($printingOptions['body'])
+    if ($options['body'])
     {
         $tcase_pieces[] = 'preconditions';
         $tcase_pieces[] = 'steps';
-        // $tcase_pieces[] = 'expected_results';        
     }
     
     if(!is_null($tcase_pieces))
@@ -899,7 +1071,6 @@
     	// Multiple Test Case Steps Feature
         foreach($tcase_pieces as $key)
         {
-            // 20090719 - franciscom - cf location
             if( $key == 'steps' )
             {
             	if( isset($cfields['specScope']['before_steps_results']) )
@@ -937,26 +1108,46 @@
             }         
         }
     }
+
+	// 20110304 - franciscom - BUGID 4286: Option to print single test case
+	$code .= '<tr><td width="' . $cfg['firstColWidth'] . '" valign="top">' . 
+		     '<span class="label">'.$labels['execution_type'].':</span></td>' .
+        	 '<td colspan="' .  ($cfg['tableColspan']-1) . '">';
+
+    switch ($tcInfo['execution_type'])
+    {
+    	case TESTCASE_EXECUTION_TYPE_AUTO:
+			$code .= $labels['execution_type_auto'];	    		
+    	break;
+
+    	case TESTCASE_EXECUTION_TYPE_MANUAL:
+		default:
+			$code .= $labels['execution_type_manual'];	    		
+    	break;
+    }
+	$code .= "</td></tr>\n";
+
+	if( isset($options['importance']) && $options['importance'] )
+    {
+		$code .= '<tr><td width="' . $cfg['firstColWidth'] . '" valign="top">' . 
+			     '<span class="label">'.$labels['importance'].':</span></td>' .
+        		 '<td colspan="' .  ($cfg['tableColspan']-1) . '">' .
+				 $cfg['importance'][$tcInfo['importance']];
+		$code .= "</td></tr>\n";
+    }
+	
+	
+	
     // Spacer
     $code .= '<tr><td colspan="' .  $cfg['tableColspan'] . '">' . "</td></tr>";
-    
-    // 20090719 - franciscom - cf location
     $code .= $cfields['specScope']['standard_location'] . $cfields['execScope'];
 	
 	// generate test results data for test report 
-	if ($printingOptions['passfail'])
+	if ($options['passfail'])
 	{
 		if ($exec_info) 
 		{
-			if ($printingOptions['notes'])
-			{
-				$code .= buildTestExecResults($db,$cfg,$labels,$exec_info,$cfg['tableColspan']-1,1);
-			}
-			else
-			{
-				$code .= buildTestExecResults($db,$cfg,$labels,$exec_info,$cfg['tableColspan']-1);
-			}
-			
+			$code .= buildTestExecResults($db,$cfg,$labels,$exec_info,$cfg['tableColspan']-1,$options['notes']);
 		}
 		else
 		{
@@ -969,8 +1160,7 @@
 	}
 
 	// collect REQ for TC
-	// based on contribution by JMU (#1045)
-	if ($printingOptions['requirement'])
+	if ($options['requirement'])
 	{
 	    if(!$req_mgr)
 	    {
@@ -996,8 +1186,7 @@
 	}
 	  
 	// collect keywords for TC
-	// based on contribution by JMU (#1045)
-	if ($printingOptions['keyword'])
+	if ($options['keyword'])
 	{
 	  	$code .= '<tr><td width="' . $cfg['firstColWidth'] . '" valign="top"><span class="label">'. 
 	  	         $labels['keywords'].':</span>';
@@ -1017,6 +1206,10 @@
 	  	$code .= "</td></tr>\n";
 	  }
 
+
+
+
+
 	  $code .= "</table>\n</div>\n";
 	  return $code;
 }
@@ -1027,13 +1220,13 @@
  * 
  * @todo havlatm: refactor
  */
-function renderTOC(&$printingOptions)
+function renderTOC(&$options)
 {
 	$code = '';
-	$printingOptions['toc_numbers'][1] = 0;
-	if ($printingOptions['toc'])
+	$options['toc_numbers'][1] = 0;
+	if ($options['toc'])
 	{
-		$printingOptions['tocCode'] = '<h1 class="doclevel">' . lang_get('title_toc').'</h1><div class="toc">';
+		$options['tocCode'] = '<h1 class="general" style="page-break-before: always">' . lang_get('title_toc').'</h1><div class="toc">';
 		$code .= "{{INSERT_TOC}}";
 	}
 
@@ -1049,7 +1242,7 @@
   rev: 20090329 - franciscom - added ALWAYS Custom Fields
        20081207 - franciscom - refactoring using static to decrease exec time.
 */
-function renderTestSuiteNodeForPrinting(&$db,&$node,&$printingOptions,$tocPrefix,$level,$tplan_id,$tproject_id)
+function renderTestSuiteNodeForPrinting(&$db,&$node,&$options,$tocPrefix,$level,$tplan_id,$tproject_id)
 {
     static $tsuite_mgr;
     $labels = array('test_suite' => lang_get('test_suite'),'details' => lang_get('details'));
@@ -1061,14 +1254,14 @@
     $cfieldFormatting=array('table_css_style' => 'class="cf"');
     
 	$docHeadingNumbering = '';
-	if ($printingOptions['headerNumbering']) {
+	if ($options['headerNumbering']) {
 		$docHeadingNumbering = "$tocPrefix. ";
 	}
     
-	if ($printingOptions['toc'])
+	if ($options['toc'])
 	{
 		$spacing = ($level == 2 && $tocPrefix != 1) ? "<br>" : "";
-	 	$printingOptions['tocCode'] .= $spacing.'<b><p style="padding-left: '.(10*$level).'px;">' .
+	 	$options['tocCode'] .= $spacing.'<b><p style="padding-left: '.(10*$level).'px;">' .
 				'<a href="#' . prefixToHTMLID($tocPrefix) . '">' . $docHeadingNumbering . $name . "</a></p></b>\n";
 		$code .= "<a name='". prefixToHTMLID($tocPrefix) . "'></a>\n";
 	}
@@ -1078,7 +1271,7 @@
  			$title_separator . $name . "</h{$docHeadingLevel}>\n";
 
 	// ----- get Test Suite text -----------------
-	if ($printingOptions['header'])
+	if ($options['header'])
     {
         if( !$tsuite_mgr)
         { 
@@ -1118,13 +1311,13 @@
   @internal revisions:
      20100723 - asimon - BUGID 3459: added $platform_id
 */
-function renderTestPlanForPrinting(&$db, &$node, $item_type, &$printingOptions, $tocPrefix,
+function renderTestPlanForPrinting(&$db, &$node, $item_type, &$options, $tocPrefix,
                                    $tcCnt, $level, $user_id, $tplan_id, $tprojectID, $platform_id)
 
 {
 	$tProjectMgr = new testproject($db);
 	$tcPrefix = $tProjectMgr->getTestCasePrefix($tprojectID);
-	$code =  renderTestSpecTreeForPrinting($db, $node, $item_type, $printingOptions,
+	$code =  renderTestSpecTreeForPrinting($db, $node, $item_type, $options,
                                            $tocPrefix, $tcCnt, $level, $user_id,
                                            $tplan_id, $tcPrefix, $tprojectID, $platform_id);
 	return $code;
@@ -1136,18 +1329,14 @@
  * based on contribution (BUGID 1670)
  * 
  * @param array_of_strings $statistics
- * @param array_of_strings $statistics
  * @return string HTML code
- *
- * @internal revision
- * 20110113 - franciscom - BUGID 4171: Test Report - estimated and real execution time functions made Platform aware
  */
-function renderTestDuration($statistics,$platformID)
+function renderTestDuration($statistics)
 {
     $output = '';
 	$estimated_string = '';
 	$real_string = '';
-	$bEstimatedTimeAvailable = isset($statistics['estimated_execution']['platform']);
+	$bEstimatedTimeAvailable = isset($statistics['estimated_execution']);
 	$bRealTimeAvailable = isset($statistics['real_execution']);
     
 	if( $bEstimatedTimeAvailable || $bRealTimeAvailable)
@@ -1156,8 +1345,8 @@
 	    
 		if($bEstimatedTimeAvailable) 
 		{
-			$estimated_minutes = $statistics['estimated_execution']['platform'][$platformID]['minutes'];
-	    	$tcase_qty = $statistics['estimated_execution']['platform'][$platformID]['tcase_qty'];
+			$estimated_minutes = $statistics['estimated_execution']['minutes'];
+	    	$tcase_qty = $statistics['estimated_execution']['tcase_qty'];
 		         
     	   	if($estimated_minutes > 60)
     	   	{
@@ -1174,10 +1363,8 @@
 		  
 		if($bRealTimeAvailable) 
 		{
-			$real_minutes = $statistics['real_execution']['platform'][$platformID]['minutes'];
-	    	$tcase_qty = $statistics['real_execution']['platform'][$platformID]['tcase_qty'];
-
-
+			$real_minutes = $statistics['real_execution']['minutes'];
+			$tcase_qty = $statistics['real_execution']['tcase_qty'];
 			if($real_minutes > 0)
 		    {
 	        	if($real_minutes > 60)
@@ -1215,10 +1402,10 @@
  * 
  * @return string html
  */
-function buildTestPlanMetrics($statistics,$platformID)
+function buildTestPlanMetrics($statistics)
 {
     $output = '<h1 class="doclevel">'.lang_get('title_nav_results')."</h1>\n";
-    $output .= renderTestDuration($statistics,$platformID);
+    $output .= renderTestDuration($statistics);
     
 	return $output;	
 }
@@ -1240,6 +1427,7 @@
 	$config['gui'] = config_get('gui');
 	$config['testcase'] = config_get('testcase_cfg');
 	$config['results'] = config_get('results');
+
     
     foreach($config['results']['code_status'] as $key => $value)
     {
@@ -1256,12 +1444,20 @@
     $labelsKeys=array('last_exec_result', 'title_execution_notes', 'none', 'reqs','author', 'summary',
                       'steps', 'expected_results','build', 'test_case', 'keywords','version', 
                       'test_status_not_run', 'not_aplicable', 'bugs','tester','preconditions',
-                      'step_number', 'step_actions', 'last_edit');
+                      'step_number', 'step_actions', 'last_edit', 'created_on', 'execution_type',
+                      'execution_type_manual','execution_type_auto','importance',
+                      'high_importance','medium_importance','low_importance');
+                      
     $labelsQty=count($labelsKeys);         
     for($idx=0; $idx < $labelsQty; $idx++)
     {
         $labels[$labelsKeys[$idx]] = lang_get($labelsKeys[$idx]);
     }
+    
+    $config['importance'] = array(HIGH => $labels['high_importance'],
+    							  MEDIUM => $labels['medium_importance'],
+    							  LOW => $labels['low_importance']);
+    
     return array($config,$labels);
 }
 
@@ -1270,13 +1466,13 @@
  * 
  *
  */
-function buildTestExecResults(&$dbHandler,$cfg,$labels,$exec_info,$colspan,$exec_notes = null)
+function buildTestExecResults(&$dbHandler,$cfg,$labels,$exec_info,$colspan,$show_exec_notes = false)
 {
 	$out='';
 	$testStatus = $cfg['status_labels'][$exec_info[0]['status']];
 	$testerName = gendocGetUserName($dbHandler, $exec_info[0]['tester_id']);
 	
-	$executionNotes = isset($exec_notes)?$exec_info[0]['notes']:'';
+	$executionNotes = $show_exec_notes ? $exec_info[0]['notes'] : '';
 
 	$td_colspan = '';
 	if( !is_null($colspan) ) {
@@ -1321,13 +1517,13 @@
 
 /**
  * Render HTML header for a given platform. 
- * Also adds code to $printingOptions['tocCode']
+ * Also adds code to $options['tocCode']
  */
-function renderPlatformHeading($tocPrefix, $platform_id, $platform_name, &$printingOptions)
+function renderPlatformHeading($tocPrefix, $platform_id, $platform_name, &$options)
 {
 	$platformLabel = lang_get('platform');
 	$platform_name = htmlspecialchars($platform_name);
-	$printingOptions['tocCode'] .= '<p><a href="#' . prefixToHTMLID($tocPrefix) . '">' .
+	$options['tocCode'] .= '<p><a href="#' . prefixToHTMLID($tocPrefix) . '">' .
 	                               $platformLabel . ':' . $platform_name . '</a></p>';
 	return '<h1 class="doclevel" id="' . prefixToHTMLID($tocPrefix) . "\">$tocPrefix $platformLabel: $platform_name</h1>";
 }

Modified: trunk/testlink/lib/functions/remote_exec.php
===================================================================
--- trunk/testlink/lib/functions/remote_exec.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/remote_exec.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,22 +3,15 @@
  * TestLink Open Source Project - http://testlink.sourceforge.net/
  * This script is distributed under the GNU General Public License 2 or later.
  * 
- * @filesource $RCSfile: remote_exec.php,v $
- * @version $Revision: 1.3 $ $Author: franciscom $
- * @modified $Date: 2010/01/02 16:54:34 $
- * @author 	Martin Havlat, Chad Rosen
+ * @filesource	remote_exec.php
+ * @author		Francisco Mancardi <francisco.mancardi at gmail.com>
  *
- * ----------------------------------------------------------------------------------- */
-
+ * @internal revisions
+ * 20110308 - franciscom - refactoring 
+ */
 require_once("../../config.inc.php");
+require_once (TL_ABS_PATH . 'third_party'. DIRECTORY_SEPARATOR . 'xml-rpc/class-IXR.php');
 
-// Contributed code - manish
-$phpxmlrpc = TL_ABS_PATH . 'third_party'. DIRECTORY_SEPARATOR . 'phpxmlrpc' . 
-             DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR;
-require_once($phpxmlrpc . 'xmlrpc.inc');
-require_once($phpxmlrpc . 'xmlrpcs.inc');
-require_once($phpxmlrpc . 'xmlrpc_wrappers.inc');
-
 /**
 * Initiate the execution of a testcase through XML Server RPCs.
 * All the object instantiations are done here.
@@ -27,74 +20,114 @@
 * The fields are: server_host, server_port and server_path.
 * Precede 'tc_' for custom fields assigned to testcase level.
 *
-* @param $testcase_id: The testcase id of the testcase to be executed
-* @param $tree_manager: The tree manager object to read node values and testcase and parent ids.
-* @param $cfield_manager: Custom Field manager object, to read the XML-RPC server params.
+* @param $tcaseInfo: 
+* @param $serverCfg:
+* @param $context
+*
 * @return map:
 *         keys: 'result','notes','message'
 *         values: 'result' -> (Pass, Fail or Blocked)
 *                 'notes' -> Notes text
 *                 'message' -> Message from server
 */
-function executeTestCase($testcase_id,$tree_manager,$cfield_manager)
+function executeTestCase($tcaseInfo,$serverCfg,$context)
 {
+	// system: to give info about conection to remote execution server
+	// execution:
+	// 	scheduled: domain 'now', 'future'
+	//			   caller will use this attribute to write exec result (only if now)
+	//	timestampISO: can be used by server to say the scheduled time.
+	//				  To be used only if scheduled = 'future'
+	//
+	//   Complete date plus hours, minutes and seconds:
+	//      YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
+	//
+	// where:
+	//
+	//     YYYY = four-digit year
+	//     MM   = two-digit month (01=January, etc.)
+	//     DD   = two-digit day of month (01 through 31)
+	//     hh   = two digits of hour (00 through 23) (am/pm NOT allowed)
+	//     mm   = two digits of minute (00 through 59)
+	//     ss   = two digits of second (00 through 59)
+	//     TZD  = time zone designator (Z or +hh:mm or -hh:mm)
 
-	//Fetching required params from the entire node hierarchy
-	$server_params = $cfield_manager->getXMLServerParams($testcase_id);
+	
+	$ret = array('system' => array('status' => 'ok', 'msg' => 'ok'),
+				 'execution' => array('scheduled' => '', 
+				 					  'result' => '',
+				 					  'resultVerbose' => '',
+				 					  'notes' => '',
+				 					  'timestampISO' => '') );
+  
 
-  $ret=array('result'=>AUTOMATION_RESULT_KO,
-             'notes'=>AUTOMATION_NOTES_KO, 'message'=>'');
-
-	$server_host = "";
-	$server_port = "";
-	$server_path = "";
-  $do_it=false;
-  
-	if( ($server_params != null) or $server_params != ""){
-		$server_host = $server_params["xml_server_host"];
-		$server_port = $server_params["xml_server_port"];
-		$server_path = $server_params["xml_server_path"];
+	$labels = init_labels(array('remoteExecServerConfigProblems' => null,
+						 		'remoteExecServerConnectionFailure' => null));
+						  
 	
-	  if( !is_null($server_host) ||  !is_null($server_path) )
-	  {
-	      $do_it=true;
-	  }    
+	$do_it = (!is_null($serverCfg) && !is_null($serverCfg["url"]) );
+	if(!$do_it)
+	{ 
+		$ret['system']['status'] = 'configProblems';
+		$ret['system']['msg'] = $labels['remoteExecServerConfigProblems'];						
 	}
+	
+  	if($do_it)
+  	{
+		$xmlrpcClient = new IXR_Client($serverCfg["url"]);
+		if( is_null($xmlrpcClient) )
+		{
+			$do_it = false;
+			$ret['system']['status'] = 'connectionFailure';
+			$ret['system']['msg'] = $labels['remoteExecServerConnectionFailure'];						
+		}
+	}
+	
+ 	if($do_it)
+  	{
+  		$args4call = array();
+  		
+  		// Execution Target
+  		$args4call['testCaseName'] = $tcaseInfo['name'];
+  		$args4call['testCaseID'] = $tcaseInfo['id'];
+  		$args4call['testCaseVersionID'] = $tcaseInfo['version_id'];
+  		
+  		// Context
+  		$args4call['testProjectID'] = $context['tproject_id'];
+  		$args4call['testPlanID'] = $context['tplan_id'];
+  		$args4call['platformID'] = $context['platform_id'];
+  		$args4call['buildID'] = $context['build_id'];
+  		$args4call['executionMode'] = 'now'; // domain: deferred,now
+		
+		$xmlrpcClient->query('executeTestCase',$args4call);
+		$response = $xmlrpcClient->getResponse();
 
-  if($do_it)
-  {
-  	// Make an object to represent our server.
-  	// If server config objects are null, it returns an array with appropriate values
-  	// (-1 for executions results, and fault code and error message for message.
-  	$xmlrpc_client = new xmlrpc_client($server_path,$server_host,$server_port);
+		if( is_null($response) )
+		{
+			// Houston we have a problem!!! (Apollo 13)
+			$ret['system']['status'] = 'connectionFailure';
+			$ret['system']['msg'] = $labels['remoteExecServerConnectionFailure'];						
+			$ret['execution'] = null;
+		}
+		else
+		{
+			$ret['execution'] = $response;
+			$ret['execution']['resultVerbose'] = '';
+			
+			if(!is_null($response['result']))
+			{	
+				$code = trim($response['result']);
+				if( $code != '')
+				{
+					$resultsCfg = config_get('results');
+					$codeStatus = array_flip($resultsCfg['status_code']);
+					$dummy = trim($codeStatus[$code]);
+					$ret['execution']['resultVerbose'] = lang_get($resultsCfg['status_label'][$dummy]);
+				}
+			}
+		}
+  	} 
 
-  	$tc_info = $tree_manager->get_node_hierarchy_info($testcase_id);
-  	$testcase_name = $tc_info['name'];
-
-  	//Create XML-RPC Objects to pass on to the the servers
-  	$myVar1 = new xmlrpcval($testcase_name,'string');
-  	$myvar2 = new xmlrpcval($testcase_id,'string');
-
-  	$messageToServer = new xmlrpcmsg('ExecuteTest', array($myVar1,$myvar2));
-  	$serverResp = $xmlrpc_client->send($messageToServer);
-
-  	$myResult=AUTOMATION_RESULT_KO;
-  	$myNotes=AUTOMATION_NOTES_KO;
-
-  	if(!$serverResp) {
-  		$message = lang_get('test_automation_server_conn_failure');
-  	} elseif ($serverResp->faultCode()) {
-  		$message = lang_get("XMLRPC_error_number") . $serverResp->faultCode() . ": ".$serverResp->faultString();
-  	}
-  	else {
-  		$message = lang_get('test_automation_exec_ok');
-  		$arrayVal = $serverResp->value();
-  		$myResult = $arrayVal->arraymem(0)->scalarval();
-  		$myNotes = $arrayVal->arraymem(1)->scalarval();
-  	}
-  	$ret = array('result'=>$myResult, 'notes'=>$myNotes, 'message'=>$message);
-  } //$do_it
-
 	return $ret;
 } // function end
-?>
+?>
\ No newline at end of file

Modified: trunk/testlink/lib/functions/requirement_mgr.class.php
===================================================================
--- trunk/testlink/lib/functions/requirement_mgr.class.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/requirement_mgr.class.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,18 +3,22 @@
  * TestLink Open Source Project - http://testlink.sourceforge.net/
  * This script is distributed under the GNU General Public License 2 or later.
  *
- * Filename $RCSfile: requirement_mgr.class.php,v $
+ * @filesource	requirement_mgr.class.php
+ * @package  	TestLink
+ * @author 	 	Francisco Mancardi <francisco.mancardi at gmail.com>
+ * @copyright 	2007-2011, TestLink community 
  *
- * @version $Revision: 1.114.2.15 $
- * @modified $Date: 2011/01/16 17:41:17 $ by $Author: franciscom $
- * @author Francisco Mancardi
- *
  * Manager for requirements.
  * Requirements are children of a requirement specification (requirements container)
  *
- * rev:
+ * @internal revisions:
+ *	20110331 - franciscom - BUGID 4366: Custom Field when requirements reports is generated was empty
+ *							get_by_id()
+ *
+ *	20110308 - aismon - backported method get_version_revision() from master to branch 1.9
  *	20110116 - franciscom - fixed Crash on MSSQL due to column name with MIXED case
  *  						BUGID 4172 - MSSQL UNION text field issue
+ * 	20110115 - franciscom - create_new_revision() - fixed insert of null on timestamp field
  *	20110108 - franciscom - createFromMap() - check improvements
  *						  	BUGID 4150 check for duplicate req title
  *	20110106 - Julian - update() - set author,modifier,creation_ts,modifier_ts depending on creation of new revision
@@ -191,6 +195,9 @@
   returns: null if query fails
            map with requirement info
 
+	@internal revisions
+	20110331 - franciscom - BUGID 4366	
+
 */
 function get_by_id($id,$version_id=self::ALL_VERSIONS,$version_number=1,$options=null,$filters=null)
 {
@@ -246,12 +253,16 @@
 		    }
 		}
     }
+
+  	// 20110331 - BUGID 4366
+  	// added -1 AS revision_id to make some process easier 
   
 	$sql = " /* $debugMsg */ SELECT REQ.id,REQ.srs_id,REQ.req_doc_id," . 
 		   " REQV.scope,REQV.status,REQV.type,REQV.active," . 
            " REQV.is_open,REQV.author_id,REQV.version,REQV.id AS version_id," .
            " REQV.expected_coverage,REQV.creation_ts,REQV.modifier_id," .
-           " REQV.modification_ts,REQV.revision,NH_REQ.name AS title, REQ_SPEC.testproject_id, " .
+           " REQV.modification_ts,REQV.revision, -1 AS revision_id, " .
+           " NH_REQ.name AS title, REQ_SPEC.testproject_id, " .
 	       " NH_RSPEC.name AS req_spec_title, REQ_SPEC.doc_id AS req_spec_doc_id, NH_REQ.node_order " .
 	       " FROM {$this->object_table} REQ " .
 	       " JOIN {$this->tables['nodes_hierarchy']} NH_REQ ON NH_REQ.id = REQ.id " .
@@ -675,8 +686,10 @@
     returns: map
              keys: status_ok
                    msg
+                   failure_reason
 
 	 @internal revision
+	 20110206 - franciscom - add new key on retval 'failure_reason'
 	 20110108 - franciscom - check on duplicate title under same parent
   */
   function check_basic_data($srs_id,$tproject_id,$title,$reqdoc_id,$id = null)
@@ -684,6 +697,7 @@
 
   	$ret['status_ok'] = 1;
   	$ret['msg'] = '';
+  	$ret['failure_reason'] = '';
 
 	$title = trim($title);
 	$reqdoc_id = trim($reqdoc_id);
@@ -692,12 +706,14 @@
   	{
   		$ret['status_ok'] = 0;
   		$ret['msg'] = lang_get("warning_empty_req_title");
+  		$ret['failure_reason'] = 'empty_req_title';
   	}
 
   	if ($reqdoc_id == "")
   	{
   		$ret['status_ok'] = 0;
   		$ret['msg'] .=  " " . lang_get("warning_empty_reqdoc_id");
+  		$ret['failure_reason'] = 'empty_reqdoc_id';
   	}
 
   	if($ret['status_ok'])
@@ -708,6 +724,7 @@
   		{
   			$ret['msg'] = sprintf(lang_get("warning_duplicate_reqdoc_id"),$reqdoc_id);
   			$ret['status_ok'] = 0;
+  			$ret['failure_reason'] = 'duplicate_reqdoc_id';
   		}
   	}
   	
@@ -721,6 +738,7 @@
 		$rs = $this->getByAttribute($target,$tproject_id,$srs_id,$getOptions);
  		if(!is_null($rs) && (is_null($id) || !isset($rs[$id])))
   		{
+  			$ret['failure_reason'] = 'sibling_req_with_same_title';
   			$ret['msg'] = sprintf(lang_get("warning_sibling_req_with_same_title"),$title);
   			$ret['status_ok'] = 0;
   		}
@@ -1347,7 +1365,7 @@
 						'frozen_req_unable_to_import' => '', 'requirement' => '', 
 						'import_req_new_version_created' => '',
 						'import_req_update_last_version_failed' => '',
-						'import_req_new_version_failed' => '');
+						'import_req_new_version_failed' => '', 'import_req_skipped_plain' => '');
 		foreach($labels as $key => $dummy)
 		{
 			$labels[$key] = lang_get($key);
@@ -1388,6 +1406,14 @@
     // with requested operation
 	$check_in_reqspec = $this->getByAttribute($target,$tproject_id,$parent_id,$getOptions);
 
+
+	// 20110206 - franciscom
+	// while working on BUGID 4210, new details came to light.
+	//
+	// In addition to hit criteria there are also the criteria taht we use 
+	// when creating/update item using GUI, and these criteria have to be
+	// checked abd fullfilled.
+	//
 	if(is_null($check_in_reqspec))
 	{
 		$check_in_tproject = $this->getByAttribute($target,$tproject_id,null,$getOptions);
@@ -1396,7 +1422,17 @@
 			$newReq = $this->create($parent_id,$req['docid'],$req['title'],$req['description'],
 		    		         		$author_id,$req['status'],$req['type'],$req['expected_coverage'],
 		    		         		$req['node_order']);
-			$msgID = 'import_req_created';
+		
+			if( ($status_ok = ($newReq['status_ok'] == 1)) )
+			{
+				$msgID = 'import_req_created';
+			}
+			else
+			{
+				$msgID = 'import_req_skipped_plain';
+				$result['msg'] = $newReq['msg'];  // done to use what2add logic far below
+			}
+				
 		}             		 
         else
         {
@@ -1487,7 +1523,6 @@
     $user_feedback[] = array('doc_id' => $req['docid'],'title' => $req['title'], 
     				 	     'import_status' => sprintf($labels[$msgID],$what2add));
 
-    // 20100907 - Custom Fields import
     if( $status_ok && $doProcessCF && isset($req['custom_fields']) && !is_null($req['custom_fields']) )
     {
 		$req_version_id = !is_null($newReq) ? $newReq['version_id'] : $last_version['id'];
@@ -2571,6 +2606,8 @@
 	/**
 	 * 
  	 *
+ 	 * @internal revision
+ 	 * 20110115 - franciscom - fixed insert of null on timestamp field
  	 */
 	function create_new_revision($parent_id,$user_id,$tproject_id,$req = null,$log_msg = null)
 	{
@@ -2825,6 +2862,9 @@
 	/**
 	 * 
 	 *
+	 * @internal revision
+	 * 20110306 - franciscom - fixed wrong mapping for REQREV ID on output recordset.
+	 *
  	 */
 	function get_revision($revision_id)
 	{
@@ -2832,9 +2872,10 @@
 
 		$sql = 	" /* $debugMsg */ SELECT REQ.id,REQ.srs_id,REQ.req_doc_id," . 
 		   		" REQRV.scope,REQRV.status,REQRV.type,REQRV.active," . 
-           		" REQRV.is_open,REQRV.author_id,REQV.version,REQRV.id AS version_id," .
+           		" REQRV.is_open,REQRV.author_id,REQV.version,REQRV.parent_id AS version_id," .
            		" REQRV.expected_coverage,REQRV.creation_ts,REQRV.modifier_id," .
-           		" REQRV.modification_ts,REQRV.revision,NH_REQ.name AS title, REQ_SPEC.testproject_id, " .
+           		" REQRV.modification_ts,REQRV.revision, REQRV.id AS revision_id," .
+           		" NH_REQ.name AS title, REQ_SPEC.testproject_id, " .
 	       		" NH_RSPEC.name AS req_spec_title, REQ_SPEC.doc_id AS req_spec_doc_id, NH_REQ.node_order " .
 	       		" FROM {$this->tables['req_revisions']} REQRV " .
 	       		" JOIN {$this->tables['req_versions']} REQV ON REQV.id = REQRV.parent_id ".
@@ -2855,7 +2896,85 @@
 	}	
 
 	
+	/**
+	 * get info regarding a req version, using also revision as access criteria.
+	 *
+	 * @int version_id
+	 * @array revision_access possible keys 'id', 'number'
+	 *
+	 * @uses print.inc.php
+	 * @uses renderReqForPrinting()
+	 *
+	 * @internal revision
+	 * 20110306 - franciscom - created
+	 *
+ 	 */
+	function get_version_revision($version_id,$revision_access)
+	{
+		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
+		$sql = 	"/* $debugMsg */";
+		
+		if( isset($revision_access['number']) )
+		{	
+			$rev_number = intval($revision_access['number']);
+
+			// we have to tables to search on
+			// Req Versions -> holds LATEST revision
+			// Req Revisions -> holds other revisions
+			$sql .= " SELECT NH_REQV.parent_id AS req_id, REQV.id AS version_id, REQV.version," .
+    				"		 REQV.creation_ts, REQV.author_id, " .
+					"		 REQV.modification_ts, REQV.modifier_id, " . 
+    						 self::NO_REVISION . " AS revision_id, " .
+    				" 		 REQV.revision, REQV.scope, " .
+    				" 		 REQV.status,REQV.type,REQV.expected_coverage,NH_REQ.name, REQ.req_doc_id, " .
+    				" COALESCE(REQV.log_message,'') AS log_message, NH_REQ.name AS title " .
+    				" FROM {$this->tables['req_versions']}  REQV " .
+					" JOIN {$this->tables['nodes_hierarchy']} NH_REQV ON NH_REQV.id = REQV.id " .
+					" JOIN {$this->tables['nodes_hierarchy']} NH_REQ ON NH_REQ.id = NH_REQV.parent_id " .
+					" JOIN {$this->tables['requirements']} REQ ON REQ.id = NH_REQ.id " .
+					" WHERE NH_REQV.id = {$version_id} AND REQV.revision = {$rev_number} "; 
+
+			$sql .=	" UNION ALL ( " .
+    				" SELECT NH_REQV.parent_id AS req_id, REQV.id AS version_id, REQV.version, " .
+    				"		 REQRV.creation_ts, REQRV.author_id, " .
+					"		 REQRV.modification_ts, REQRV.modifier_id, " . 
+					"		 REQRV.id AS revision_id, " .
+					"		 REQRV.revision,REQRV.scope,REQRV.status,REQRV.type, " .
+    				"		 REQRV.expected_coverage,REQRV.name,REQRV.req_doc_id, " .
+    				"		 COALESCE(REQRV.log_message,'') as log_message, NH_REQ.name AS title " .
+					" FROM {$this->tables['req_versions']} REQV " .
+					" JOIN {$this->tables['nodes_hierarchy']} NH_REQV ON NH_REQV.id = REQV.id " .
+					" JOIN {$this->tables['nodes_hierarchy']} NH_REQ ON NH_REQ.id = NH_REQV.parent_id " .
+					" JOIN {$this->tables['requirements']} REQ ON REQ.id = NH_REQ.id " .
+					" JOIN {$this->tables['req_revisions']} REQRV " .
+					" ON REQRV.parent_id = REQV.id " . 
+					" WHERE NH_REQV.id = {$version_id} AND REQRV.revision = {$rev_number} ) ";
+		
+		}	
+		else
+		{	
+			// revision_id is present ONLY on req revisions table, then we do not need UNION
+ 			$sql .=	" SELECT NH_REQV.parent_id AS req_id, REQV.id AS version_id, REQV.version, " .
+    				"		 REQRV.creation_ts, REQRV.author_id, " .
+					"		 REQRV.modification_ts, REQRV.modifier_id, " . 
+					"		 REQRV.id AS revision_id, " .
+					"		 REQRV.revision,REQRV.scope,REQRV.status,REQRV.type, " .
+    				"		 REQRV.expected_coverage,REQRV.name,REQRV.req_doc_id, " .
+    				"		 COALESCE(REQRV.log_message,'') as log_message, NH_REQ.name AS title " .
+					" FROM {$this->tables['req_versions']} REQV " .
+					" JOIN {$this->tables['nodes_hierarchy']} NH_REQV ON NH_REQV.id = REQV.id " .
+					" JOIN {$this->tables['nodes_hierarchy']} NH_REQ ON NH_REQ.id = NH_REQV.parent_id " .
+					" JOIN {$this->tables['requirements']} REQ ON REQ.id = NH_REQ.id " .
+					" JOIN {$this->tables['req_revisions']} REQRV " .
+					" ON REQRV.parent_id = REQV.id " . 
+					" WHERE NH_REQV.id = {$version_id} AND REQRV.revision_id = " . intval($revision_access['id']);
+		}
+		$rs = $this->db->get_recordset($sql);
+		return $rs;
+	}
+
 	
+	
 	/**
 	 * 
  	 *

Modified: trunk/testlink/lib/functions/requirement_spec_mgr.class.php
===================================================================
--- trunk/testlink/lib/functions/requirement_spec_mgr.class.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/requirement_spec_mgr.class.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -12,6 +12,8 @@
  * Manager for requirement specification (requirement container)
  *
  * @internal revision:  
+ *  20110223 - asimon BUGID 4239: wrong last parameter of a function call in copy_to()  
+ *                                caused duplicated links between reqs and testcases when copying testproject
  *  20101109 - asimon - BUGID 3989: now it is configurable if custom fields without values are shown
  *	20100908 - franciscom - BUGID 3762 Import Req Spec - custom fields values are ignored
  *							createFromXML()
@@ -1660,8 +1662,12 @@
 					switch ($elem['node_type_id'])
 					{
 						case $this->node_types_descr_id['requirement']:
+							// BUGID 4239: wrong last parameter here caused duplicated links 
+							//             between reqs and testcases when copying testproject
+							//$ret = $reqMgr->copy_to($elem['id'],$the_parent_id,$user_id,
+							//                              $tproject_id,$my['options']['copy_also']);
 							$ret = $reqMgr->copy_to($elem['id'],$the_parent_id,$user_id,
-							                              $tproject_id,$my['options']['copy_also']);
+							                              $tproject_id,$my['options']);
 							$op['status_ok'] = $ret['status_ok'];    
 							$op['mappings'] += $ret['mappings'];
 							break;

Modified: trunk/testlink/lib/functions/requirements.inc.php
===================================================================
--- trunk/testlink/lib/functions/requirements.inc.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/requirements.inc.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -8,13 +8,15 @@
  * @package 	TestLink
  * @author 		Martin Havlat
  * @copyright 	2007-2009, TestLink community 
- * @version    	CVS: $Id: requirements.inc.php,v 1.115 2010/11/06 18:46:33 amkhullar Exp $
+ * @version    	CVS: $Id: requirements.inc.php,v 1.115.2.1 2011/02/10 21:25:25 franciscom Exp $
  * @link 		http://www.teamst.org/index.php
  *
  * @internal Revisions:
  *
+ * 20110525 - Julian - req_link_replace() - BUGID 4487 - allow to specify requirement version 
+ * for internal links
  * 20100919 - franciscom - importReqDataFromCSV() refactoring
- *						   importReqDataFromDocBook() added missing keys on generated map	
+ *                         importReqDataFromDocBook() added missing keys on generated map	
  * 20100904 - franciscom - BUGID 0003745: CSV Requirements Import Updates Frozen Requirement
  * 20100828 - franciscom - deprecated functions removed
  * 20100508 - franciscom - BUGID 3447: CVS Import - add new column type 
@@ -233,7 +235,7 @@
  */
 function loadImportedReq($fileName, $importType)
 {
-	$data = null;
+	$retVal = null;
 	switch($importType)
 	{
 		case 'csv':
@@ -248,11 +250,24 @@
 			$pfn = "importReqDataFromDocBook";
 			break;
 	}
+	
 	if ($pfn)
 	{
-		$data = $pfn($fileName);
+		$retVal = $pfn($fileName);
+		if($importType == 'DocBook')
+		{
+			// this structure if useful when importing from CSV
+    		// $retVal = array('userFeedback' => arra(),'info' => null);
+			//
+			// But we need to return same data structure ALWAYS
+			// for DocBook we do not use 'parsedCounter' and 'syntaxError'
+			//
+			$dummy = array('userFeedback' => null, 'info' => $retVal);
+			$retval = $dummy;			   
+		}
 	}
-	return $data;
+	 
+	return $retVal;
 
 }
 
@@ -262,15 +277,14 @@
  */
 function importReqDataFromCSV($fileName)
 {
-  	
   	// CSV line format
-	// $fieldMappings = array("req_doc_id","title","description","type","status","expected_coverage","order");
 	$fieldMappings = array("docid","title","description","type","status","expected_coverage","node_order");
   	
 
 	$options = array('delimiter' => ',' , 'fieldQty' => count($fieldMappings));
-	$reqData = importCSVData($fileName,$fieldMappings,$options);
-
+	$impData = importCSVData($fileName,$fieldMappings,$options);
+	
+	$reqData = &$impData['info'];
 	if($reqData)
 	{
   		// lenght will be adjusted to these values
@@ -289,7 +303,6 @@
 				// Adjust Lenght 
 				if( isset($fieldLength[$fieldKey]) )
 				{
-	       			// $reqData[$ddx][$fieldKey] = trim_and_limit($reqData[$ddx][$fieldKey],$fieldLength[$fieldKey]);
 	       			$fieldValue = trim_and_limit($fieldValue,$fieldLength[$fieldKey]);
 				}
 				else if(isset($fieldDefault[$fieldKey]))
@@ -305,12 +318,15 @@
 			}
 		}
 	}
-	return $reqData;
+	return $impData;
 }
 
 /**
  * importReqDataFromCSVDoors
  *
+ * @internal revision
+ * 20110206 - franciscom - return data structure changed.
+ *
  */
 function importReqDataFromCSVDoors($fileName)
 {
@@ -319,9 +335,9 @@
 					       "Created By","Created On","Last Modified By","Last Modified On");
 	
 	$options = array('delimiter' => ',', 'fieldQty' => count($fieldMappings), 'processHeader' => true);
-	$reqData = importCSVData($fileName,$fieldMappings,$options);
+	$impData = importCSVData($fileName,$fieldMappings,$options);
 
-	return $reqData;
+	return $impData;
 }
 
 /**
@@ -519,6 +535,7 @@
 
 		$idx++;
 	}
+	
 	return $xmlData;
 }
 
@@ -818,6 +835,7 @@
  * replace BBCode-link tagged links in req/reqspec scope with actual links
  *
  * @internal revisions:
+ * 20110525 - Julian - BUGID 4487 - allow to specify requirement version for internal links
  * 20100301 - asimon - added anchor and tproj parameters to tags
  * 
  * @param resource $dbHandler database handle
@@ -829,6 +847,7 @@
 {
 	$tree_mgr = new tree($dbHandler);
 	$tproject_mgr = new testproject($dbHandler);
+	$req_mgr = new requirement_mgr($dbHandler);
 	$prefix = $tproject_mgr->getTestCasePrefix($tprojectID);
 	$tables = tlObjectWithDB::getDBTables(array('requirements', 'req_specs'));
 	$cfg = config_get('internal_links');
@@ -843,7 +862,7 @@
 	{
 		case 'popup':
 			// use javascript to open popup window
-			$string2replace['req'] = '<a href="javascript:openLinkedReqWindow(%s,\'%s\')">%s%s</a>';
+			$string2replace['req'] = '<a href="javascript:openLinkedReqVersionWindow(%s,%s,\'%s\')">%s%s%s</a>';
 			$string2replace['req_spec'] = '<a href="javascript:openLinkedReqSpecWindow(%s,\'%s\')">%s%s</a>';
 		break;
 		
@@ -851,7 +870,7 @@
 	    case 'frame':// open in same frame
 			$target = ($cfg->target == 'window') ? 'target="_blank"' : 'target="_self"';
 			$string2replace['req'] = '<a ' . $target . ' href="lib/requirements/reqView.php?' .
-						             'item=requirement&requirement_id=%s#%s">%s%s</a>';
+						             'item=requirement&requirement_id=%s&req_version_id=%s#%s">%s%s%s</a>';
 			$string2replace['req_spec'] = '<a ' . $target . ' href="lib/requirements/reqSpecView.php?' .
 						                  'item=req_spec&req_spec_id=%s#%s">%s%s</a>';
 		break;
@@ -863,6 +882,8 @@
 	$title['req'] = lang_get('requirement') . ": "; 
 	// default: use short item type as name (localized name for req spec)
 	$title['req_spec'] = lang_get('req_spec_short') . ": ";
+	
+	$version_indicator = lang_get('tcversion_indicator');
 
 	if ($cfg->req_link_title->type == 'string' && $cfg->req_link_title->value != '') {
 		$title['req'] = lang_get($cfg->req_link_title->value);
@@ -880,11 +901,19 @@
 
 	// now the actual replacing
 	$patterns2search = array();
-	$patterns2search['req'] =
-		"#\[req[\s]*(tproj=([\w]+))*[\s]*(anchor=([\w]+))*[\s]*(tproj=([\w]+))*\](.*)\[/req\]#iU";
-	$patterns2search['req_spec'] =
-		"#\[req_spec[\s]*(tproj=([\w]+))*[\s]*(anchor=([\w]+))*[\s]*(tproj=([\w]+))*\](.*)\[/req_spec\]#iU";
-
+	$patterns2search['req'] = "#\[req(.*)\](.*)\[/req\]#iU";
+	$patterns2search['req_spec'] = "#\[req_spec(.*)\](.*)\[/req_spec\]#iU";
+	
+	$patternPositions = array('complete_string' => 0,
+	                          'attributes' => 1,
+	                          'doc_id' => 2);
+	
+	$items2search['req'] = array('tproj','anchor','version');
+	$items2search['req_spec'] = array('tproj','anchor');
+	
+	$itemPositions = array ('item' => 0,
+	                        'item_value' => 1);
+	
 	$sql2exec = array();
 	$sql2exec['req'] = " SELECT id, req_doc_id AS doc_id " .
 	                   " FROM {$tables['requirements']} WHERE req_doc_id=";
@@ -896,39 +925,69 @@
 	{
 		$matches = array();
 		preg_match_all($pattern, $scope, $matches);
-
-		if( count($matches[7]) == 0 )
+		
+		// if no req_doc_id is set skip loop
+		if( count($matches[$patternPositions['doc_id']]) == 0 )
 		{
 			continue;
 		}
-
-		foreach ($matches[0] as $key => $matched_string) {
-
-			// get testproject prefix, if that was found with regex
-			// if not, get prefix of current project
-			if ($matches[2][$key] != '') {
-				$matched_prefix = $matches[2][$key];
-			} else if ($matches[6][$key] != '') {
-				$matched_prefix = $matches[6][$key];
-			} else {
-				$matched_prefix = $prefix;
+		
+		foreach ($matches[$patternPositions['complete_string']] as $key => $matched_string) {
+			
+			$matched = array ();
+			$matched['tproj'] = '';
+			$matched['anchor'] = '';
+			$matched['version'] = '';
+			
+			// only look for attributes if any found
+			if ($matches[$patternPositions['attributes']][$key] != '') {
+				foreach ($items2search[$accessKey] as $item) {
+					$matched_item = array();
+					preg_match('/'.$item.'=([\w]+)/',$matched_string,$matched_item);
+					$matched[$item] = (isset($matched_item[$itemPositions['item_value']])) ? 
+					                  $matched_item[$itemPositions['item_value']] : '';
+				}
 			}
+			// set tproj to current project if tproj is not specified in attributes
+			if (!isset($matched['tproj']) || $matched['tproj'] == '') {
+				$matched['tproj'] = $prefix;
+			}
 			
-			$matched_anchor = $matches[4][$key];
-			$matched_doc_id = $matches[7][$key];
-			
-			$sql = $sql2exec[$accessKey] . "'{$matched_doc_id}'";
+			// get all reqs / req specs with the specified doc_id
+			$sql = $sql2exec[$accessKey] . "'{$matches[$patternPositions['doc_id']][$key]}'";
 			$rs = $dbHandler->get_recordset($sql);
 			
-			if (count($rs)) {
-				//20100818 - Julian - fixed error if same doc_id exists in multiple projects
+			if (count($rs) > 0) {
 				foreach($rs as $key => $value) {
 					// get root of linked node and check
 					$real_root = $tree_mgr->getTreeRoot($value['id']);
-					$matched_root_info = $tproject_mgr->get_by_prefix($matched_prefix);
+					$matched_root_info = $tproject_mgr->get_by_prefix($matched['tproj']);
+					// do only continue if project with the specified project exists and
+					// if the requirement really belongs to the specified project (requirements
+					// with the same doc_id may exist within different projects)
 					if ($real_root == $matched_root_info['id']) {
-						$urlString = sprintf($string2replace[$accessKey], $value['id'],
-											$matched_anchor, $title[$accessKey], $value['doc_id']);
+						if($accessKey == 'req') {
+							// add version to link title if set
+							$version = '';
+							$req_version_id = 'null';
+							if ($matched['version'] != '') {
+								// get requirement version_id of the specified version
+								$req_version = $req_mgr->get_by_id($value['id'],null,$matched['version']);
+								// if version is not set or wrong version was set 
+								// -> show latest version by setting version_id to null
+								$req_version_id = isset($req_version[0]['version_id']) ? $req_version[0]['version_id'] :'null';
+								// if req_version_id exists set the version to show on hyperlink text
+								if ($req_version_id != 'null') {
+									$version = sprintf($version_indicator,$matched['version']);
+								}
+							}
+							$urlString = sprintf($string2replace[$accessKey], $value['id'], $req_version_id,
+							                     $matched['anchor'], $title[$accessKey], $value['doc_id'], $version);
+						} else {
+							// build urlString for req specs which do not have a version
+							$urlString = sprintf($string2replace[$accessKey], $value['id'],
+							                     $matched['anchor'], $title[$accessKey], $value['doc_id']);
+						}
 						$scope = str_replace($matched_string,$urlString,$scope);
 					}
 				}

Modified: trunk/testlink/lib/functions/results.class.php
===================================================================
--- trunk/testlink/lib/functions/results.class.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/results.class.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -3,15 +3,25 @@
  * TestLink Open Source Project - http://testlink.sourceforge.net/
  * This script is distributed under the GNU General Public License 2 or later.
  *
+ * @filesource	results.class.php
  * @package 	TestLink
  * @author 		Kevin Levy, franciscom
- * @copyright 	2004-2009, TestLink community 
- * @version    	CVS: $Id: results.class.php,v 1.163.2.2 2010/12/24 14:12:44 franciscom Exp $
+ * @copyright 	2004-2011, TestLink community 
  * @link 		http://www.teamst.org/index.php
  * @uses		config.inc.php 
  * @uses		common.php 
  *
- * @internal Revisions:
+ * @internal revisions
+ * 20110415 - Julian - BUGID 4418 - Clean up priority usage within Testlink
+ * 20110408 - BUGID 4363: General Test Plan Metrics - Overall Build Status -> 
+ * 20110407 - BUGID 4363: General Test Plan Metrics - Overall Build Status -> 
+ *						  empty line for a build shown with no test cases assigned to user
+ *
+ * 20110329 - kinow - 	tallyBuildResults()
+ *						BUGID 4333: General Test Plan Metrics % complete did not roundgetAggregateBuildResults
+ * 20110326 - franciscom - BUGID 4355: 	General Test Plan Metrics - Build without executed 
+ *										test cases are not displayed.
+ *
  * 20101019 - eloff - BUGID 3794 - added contribution by rtessier
  * 20100821 - asimon - BUGID 3682
  * 20100721 - asimon - BUGID 3406, 1508: changed for user assignments per build:
@@ -86,7 +96,6 @@
 	private	$tprojectID = -1;
 	private	$testCasePrefix='';
 
-	private $priorityLevelsCfg='';
 	private $resultsCfg;
 	private $testCaseCfg='';
 	private $map_tc_status;
@@ -250,9 +259,8 @@
 							&$suiteStructure = null, &$flatArray = null, &$linked_tcversions = null)
 	{
 		$tstartOn = microtime(true);
-		echo ($tstartOn) . '<br>';
+		//echo ($tstartOn) . '<br>';
 
-		$this->priorityLevelsCfg = config_get('priority_levels');
 		$this->resultsCfg = config_get('results');
 		$this->testCaseCfg = config_get('testcase_cfg');
 
@@ -330,16 +338,15 @@
 			$all_results = $this->latest_results;
 			
 			$tstart = microtime(true);
-			echo ($tstart) . '<br>';
+			//echo ($tstart) . '<br>';
 			$this->executionsMap = $this->buildExecutionsMap($builds_to_query, $platforms_to_query, 'a', $keywordId,
 			                                                 $owner, $startTime, $endTime, $executor,
 			                                                 $search_notes_string, $linkExecutionBuild,
 			                                                 $all_results);
 
 			$tend = microtime(true);
-			echo ($tend) . '<br>';
-            echo ($tend - $tstart) . ' seconds<br>';
-            
+			//echo ($tend) . '<br>';
+            //echo ($tend - $tstart) . ' seconds<br>';
             // new dBug($this->executionsMap);
             
 			$this->createMapOfLastResult($this->suiteStructure, $this->executionsMap, $lastResult);
@@ -359,9 +366,7 @@
 			// BUGID 3682
    			$arrBuilds = $tplan_mgr->get_builds($this->testPlanID, testplan::GET_ACTIVE_BUILD);
 			
-			// 3406, 1508 - we need the totals per build here, not for the whole plan anymore
-			//$this->aggregateBuildResults = $this->tallyBuildResults($this->mapOfLastResultByBuild,
-			//                                                        $arrBuilds, $this->totalsForPlan);
+			// BUGID 3406, BUGID 1508 - we need the totals per build here, not for the whole plan anymore
 			$this->totalsForBuilds = $this->createTotalsForBuilds($arrBuilds);
 			$this->aggregateBuildResults = $this->tallyBuildResults($this->mapOfLastResultByBuild,
 			                                                        $arrBuilds, $this->totalsForBuilds);
@@ -370,8 +375,8 @@
 		} // end if block
 
 			$tendOn = microtime(true);
-			echo ($tendOn) . '<br>';
-            echo ($tendOn - $tstartOn) . ' seconds<br>';
+			//echo ($tendOn) . '<br>';
+            //echo ($tendOn - $tstartOn) . ' seconds<br>';
 	} // end results constructor
 
 
@@ -542,57 +547,60 @@
 
 	/**
 	 *
-	 * parameter1 format:
-	 * Array ([owner id] => Array ( [test case id] => result ))
-	 *
-	 * @return array map
-	 * <code>Array ( [owner id] => Array ( total, passed, failed, blocked, not run))</code>
 	 * 
 	 * @internal revisions:
-	 *     20100721 - asimon - BUGID 3406, 1508
+	 * 20110407 - BUGID 4363: General Test Plan Metrics - Overall Build Status -> 
+	 *						  empty line for a build shown with no test cases assigned to user
+	 * 20110329 - franciscom - BUGID 4333: General Test Plan Metrics % complete did not round
+	 * 20110326 - franciscom - BUGID 4355
+	 * 20100721 - asimon - BUGID 3406, 1508
 	 */
-	private function tallyBuildResults($buildResults, $arrBuilds, $finalResults)
+	private function tallyBuildResults($lastExecByBuild, $arrBuilds, $execTotalsByBuild)
 	{                     
-		if ($buildResults == null)
-		{
-			return null;
-		}
+		// if ($lastExecByBuild == null)
+		// {
+		// 	return null;
+		// }
 		
-		// OK go ahead
-		
-		// 3406, 1508
-		//$totalCases = $finalResults['total'];
 		$na_string = lang_get('not_aplicable');
-		
 		$rValue = null;
 		foreach($arrBuilds as $buildId => $buildInfo)
 		{
 			$item_name='build_name';
-			$results = isset($buildResults[$buildId]) ? $buildResults[$buildId] : array();
-			
-			// 3406, 1508 - total cases is now an array with totals for each build ID
-			$totalCases = $finalResults[$buildId]['total'];
-			
-			$element=$this->tallyResults($results,$totalCases,$item_name);
-			if (!is_null ($element))
+			$results = array();
+			$totalCases = $execTotalsByBuild[$buildId]['total'];
+			if( isset($lastExecByBuild[$buildId]) && $totalCases > 0 )
 			{
+				$results = $lastExecByBuild[$buildId];
+			}
+
+			$element = $this->tallyResults($results,$totalCases,$item_name);
+			if (!is_null($element))
+			{
 				$element[$item_name]=$buildInfo['name'];
 				$rValue[$buildId] = $element;
 				
-				// 3406, 1508: here we need to insert the correct "not run" value now
-				// and the percentages need to be re-calculated after that of course
-				$not_run_count = $this->tplanMgr->assignment_mgr->get_not_run_tc_count_per_build($buildId);
-				$not_run_percentage = ($totalCases != 0) ? 
-				                      number_format($not_run_count / $totalCases * 100, 2) : $na_string;
-				$rValue[$buildId]['details']['not_run']['qty'] = $not_run_count;
-				$rValue[$buildId]['details']['not_run']['percentage'] = $not_run_percentage;
-				$rValue[$buildId]['percentage_completed'] = 100 - $not_run_percentage;
+				$not_run_percentage = $na_string;
+				$rValue[$buildId]['percentage_completed'] = $na_string;
+				if( $totalCases > 0 )
+				{
+					// BUGID 3406 - BUGID 1508 
+					// here we need to insert the correct "not run" value now
+					// and the percentages need to be re-calculated after that of course
+					$not_run_count = $execTotalsByBuild[$buildId]['not_run'];
+					$not_run_percentage = number_format($not_run_count / $totalCases * 100, 2);
+					                      
+					$rValue[$buildId]['details']['not_run']['qty'] = $not_run_count;
+					$rValue[$buildId]['details']['not_run']['percentage'] = $not_run_percentage;
+                	
+					// BUGID 4333: General Test Plan Metrics % complete did not round
+					$rValue[$buildId]['percentage_completed'] = number_format( 100 - $not_run_percentage);
+				}
 			}
 		} // end  foreach
 		
 		unset($element);       
 		unset($results);
-		
 		return $rValue;
 	}
 
@@ -803,42 +811,58 @@
 	private function tallyResults($results,$totalCases,$item_name=null)
 	{
 		
-		if ($results == null)
+		static $na_string;
+		static $code_verbose;
+		if( is_null($na_string) ) 
 		{
-			return null;
+			$na_string = lang_get('not_aplicable');
+			$code_verbose = array_flip($this->tc_status_for_statistics);
 		}
-		
-		// OK go ahead
-		
-		// 3406
-		$na_string = lang_get('not_aplicable');
-		
-		$code_verbose=array_flip($this->tc_status_for_statistics);
-		$element = null;
+
+		// initalization area
+		// Because I want to have this as first key on map, just for easy reading.
+		// Value will be setted by caller.
+		if( !is_null($item_name) )
+		{
+			$element[$item_name]='';
+		}
+		$element['total_tc'] = $totalCases;
+		$element['percentage_completed'] = 0;
+		$element['details']=array();
+
 		foreach($this->tc_status_for_statistics as $status_verbose => $status_code)
 		{
 			$total[$status_verbose]=0;
 			$percentage[$status_verbose]=0;
+
+			$element['details'][$status_verbose]['qty'] = 0;
+			$element['details'][$status_verbose]['percentage'] = 0;
 		}
+
+		if ($results == null)
+		{
+			// 20110326 - return a clean structure with all members
+			return $element;  // >>-----> Brute force bye bye. 
+		}
 		
+		// Normal processing
 		$dummy=0;
 		foreach($results as $tc_id => $tc_info)
 		{
-			foreach((array)$tc_info as $platform_id => $result_code) {
-			$status_verbose=$code_verbose[$result_code];
-			
-			// Check if user has configured and add not_run.
-			// Standard TestLink behavior:
-			// 1. do not show not_run as a choice on execute pages
-			// 2. do not save on DB not_run executions
-			//
-			if( $status_verbose !='' && $status_verbose != 'not_run')
+			foreach((array)$tc_info as $platform_id => $result_code) 
 			{
-				$total[$status_verbose]++;
-				$dummy++;
+				// Check if user has configured and add not_run.
+				// Standard TestLink behavior:
+				// 1. do not show not_run as a choice on execute pages
+				// 2. do not save on DB not_run executions
+				//
+				if( $code_verbose[$result_code] !='' && $code_verbose[$result_code] != 'not_run')
+				{
+					$total[$code_verbose[$result_code]]++;
+					$dummy++;
+				}
 			}
 		}
-		}
 		
 		// not_run is an special status
 		$total['not_run'] = abs($totalCases - $dummy);
@@ -858,12 +882,6 @@
 		}
 		$percentCompleted = number_format($percentCompleted,2);
 		
-		// Because I want to have this as first key on map, just for easy reading.
-		// Value will be setted by caller.
-		if( !is_null($item_name) )
-		{
-			$element[$item_name]='';
-		}
 		$element['total_tc']=$totalCases;
 		$element['percentage_completed']=$percentCompleted;
 		
@@ -877,6 +895,9 @@
 		return $element;
 	} // end function
 
+
+
+
 	function tallyResults2($results,$totalCases)
 	{
 		if ($results == null)
@@ -956,9 +977,14 @@
 		$buildNumber = $exec['build_id'];
 		$result = $exec['status'];
 		$tcversion_id = $exec['tcversion_id'];
-		// echo __FUNCTION__ . 'tcversion id ' . $tcversion_id . '<br>';
+		$execution_ts = $exec['execution_ts'];
+		$notes = $exec['notes'];
+		$executions_id = $exec['executions_id'];
+		$name = $exec['name'];
+		$tester_id = $exec['tester_id'];
+		$feature_id = $exec['feature_id'];
+		$assigner_id = $exec['assigner_id'];
 		
-		// 20080602 - franciscom
 		// Maybe this check is not more needed, because $exec has been changed using same logic
 		if( isset($exec['tcversion_number']) && !is_null($exec['tcversion_number']) )
 		{
@@ -969,17 +995,16 @@
 			$version=$exec['version'];
 		}
 		
-		$execution_ts=$exec['execution_ts'];
-		$notes=$exec['notes'];
-		$executions_id=$exec['executions_id'];
-		$name=$exec['name'];
-		$tester_id=$exec['tester_id'];
-		$feature_id=$exec['feature_id'];
-		$assigner_id=$exec['assigner_id'];
+		// new dBug($testcase_id);
+		// new dBug($platform_id);
+		
+		//echo '$exec <br>';		new dBug($exec);
 		if ($buildNumber)
 		{
 			$this->mapOfLastResultByBuild[$buildNumber][$testcase_id][$platform_id] = $result;
 		}
+		
+		
 		$owner_id = $this->getUserForFeature($feature_id);
 		$associatedKeywords = null;
 		if ($this->keywordData != null && array_key_exists($testcase_id, $this->keywordData))
@@ -987,10 +1012,11 @@
 			$associatedKeywords = $this->keywordData[$testcase_id];
 		}
 		
-		$doInsert = false;
+		$doInsert = true;
 		// handle case where suite has already been added to mapOfLastResult
 		if ($this->mapOfLastResult && array_key_exists($suiteId, $this->mapOfLastResult))
 		{
+			$doInsert = false;
 			// handle case where both suite and test case have been added to elmapOfLastResult
 			if (array_key_exists($testcase_id, $this->mapOfLastResult[$suiteId]))
 			{
@@ -1014,18 +1040,10 @@
 				$doInsert = true;
 			}
 		}
-		else 
-		{
-			$doInsert = true;
-		}
 		
 		if ($doInsert)
 		{
 			$this->mapOfLastResultByOwner[$owner_id][$testcase_id][$platform_id] = $result;
-
-			// priorities
-			// echo __FUNCTION__ . ' LINE::' . __LINE__  .'<br> - tcversion_id=' . $tcversion_id . '<br>';
-		
 			$prio = $this->getPriority($this->testPlanID, $tcversion_id);
 			
 			$this->mapOfLastResultByPrio[$prio][$testcase_id][$platform_id] = $result;
@@ -1056,6 +1074,10 @@
 				"name" => $name,
 				"tester_id" => $tester_id);
 		}
+		
+		// echo '$this->mapOfLastResultByBuild'; new dBug($this->mapOfLastResultByBuild);
+		
+		
 	} // end function
 
 	/**
@@ -1169,29 +1191,60 @@
 	} // end function
 
 	/**
+	 * Important Notice:
+	 * Totals are created using ONLY test cases that HAVE TESTER ASSIGNED.
+	 *
+	 * Example:
+	 * Create Test Plan with 6 test cases
+	 * Create Build B1 (DBID=3), assign to testers just 4.
+	 * Create Build B2 (DBID=5), assign to testers just 2.
+	 * DO NOT EXECUTE test cases in ANY BUILD.	
+	 *
+	 * output will be
+	 * counter[3] = array('total' => 4,'not_run' => 4,'passed' => 0,'failed' => 0,'blocked' => 0)
+	 * counter[5] = array('total' => 2,'not_run' => 2,'passed' => 0,'failed' => 0,'blocked' => 0)
+	 *
+	 *
+	 * IMPORTANT QUESTION: 
+	 * How this have to work when there are platforms defined ?
+	 *
+	 *
 	 * For BUGID 3406, 1508: New function to get counts on build level instead of testplan level
 	 * 
 	 * @author Andreas Simon
 	 * @param array $arrBuilds Array with information about the builds for this testplan.
 	 * @return array $counters Array similar to $this->totalsForPlan, but with correct numbers per build 
+	 *
+	 * @internal revisions
+	 * 20110407 - franciscom - BUGID 4363
 	 */
-	private function createTotalsForBuilds($arrBuilds) {
-		
+	private function createTotalsForBuilds($arrBuilds) 
+	{
 		$counters = array();
-		
-		// first get totals from plan, then replace "wrong" values
-		foreach ($arrBuilds as $build_id => $build_info) {
+		$buildSet = array_keys($arrBuilds);
+		$qty['exec'] = $this->tplanMgr->assignment_mgr->getExecAssignmentsCountByBuild($buildSet);
+		$qty['notRun'] = $this->tplanMgr->assignment_mgr->getNotRunAssignmentsCountByBuild($buildSet);
+
+		$allZero = true;
+		foreach($qty as $key => $value)
+		{
+			$fZero[$key] = is_null($value);
+			$allZero = $allZero && $fZero[$key];
+		}
+
+		foreach($buildSet as $build_id)
+		{
 			$counters[$build_id] = $this->totalsForPlan;
-			
-			// replace "total" value
-			$total = $this->tplanMgr->assignment_mgr->get_count_of_assignments_for_build_id($build_id);
-			$counters[$build_id]['total'] = $total;
-			
-			// replace "not run" value
-			$not_run = $this->tplanMgr->assignment_mgr->get_not_run_tc_count_per_build($build_id);
-			$counters[$build_id]['not_run'] = $not_run;
+			if($allZero)
+			{
+				foreach($counters[$build_id] as &$cc)
+				{
+					$cc = 0;
+				}
+			}
+			$counters[$build_id]['total'] = isset($qty['exec'][$build_id]['qty']) ? $qty['exec'][$build_id]['qty'] : 0;
+			$counters[$build_id]['not_run'] = isset($qty['notRun'][$build_id]['qty']) ? $qty['notRun'][$build_id]['qty'] : 0;
 		}
-		
 		return $counters;
 	} // end of method
 	
@@ -1471,7 +1524,7 @@
 					$execQuery = $this->db->fetchArrayRowsIntoMap($sql,'id');
 					if( $queryCounter == 0)
 					{
-					  echo "<br>debug - <b><i>" . __FUNCTION__ . "</i></b><br><b>" . $sql . "</b><br>";
+					  //echo "<br>debug - <b><i>" . __FUNCTION__ . "</i></b><br><b>" . $sql . "</b><br>";
 					}
 					$queryCounter++;
 					
@@ -1524,7 +1577,7 @@
 		
 		unset($infoToSave);
 		
-		echo 'Query Counter:' . $queryCounter . '<br>';
+		//echo 'Query Counter:' . $queryCounter . '<br>';
 		return $executionsMap;
 	} // end function
 
@@ -1828,22 +1881,9 @@
 
 				$tmpResult = $this->db->fetchOneValue($sql);
 
-				// parse results into three levels of priority
-				if (($urgency*$importance) >= $this->priorityLevelsCfg[HIGH])
-				{
-					$output[HIGH] = $output[HIGH] + $tmpResult;
-					tLog("getPrioritizedTestCases> Result-priority HIGH: $urgency, $importance = " . $output[HIGH]);
-				}
-				elseif (($urgency*$importance) >= $this->priorityLevelsCfg[MEDIUM])
-				{
-					$output[MEDIUM] = $output[MEDIUM] + $tmpResult;	
-					tLog("getPrioritizedTestCases> Result-priority MEDIUM: $urgency, $importance = " . $output[MEDIUM]);
-				}
-				else
-				{
-					$output[LOW] = $output[LOW] + $tmpResult;
-					tLog("getPrioritizedTestCases> Result-priority LOW: $urgency, $importance = " . $output[LOW]);
-				}	
+				//BUGID 4418 - clean up priority usage
+				$priority = priority_to_level($urgency*$importance);
+				$output[$priority] = $output[$priority] + $tmpResult;
 			}
 		}
 					
@@ -1957,7 +1997,7 @@
 	public function getPriority($tplan_id, $tcversion_id)
 	{
 		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
-		$ret = LOW;
+		
 		$sql = "/* $debugMsg */ ";
 		$sql .=	" SELECT (urgency * importance) AS priority " .
 		        " FROM {$this->tables['testplan_tcversions']} TPTCV " .
@@ -1965,15 +2005,8 @@
 			    " WHERE TPTCV.testplan_id = {$tplan_id} AND TPTCV.tcversion_id = {$tcversion_id}";
 		$prio = $this->db->fetchOneValue($sql);
 		
-		if ($prio >= $this->priorityLevelsCfg[HIGH])
-		{
-			$ret = HIGH;
-		}
-		else if ($prio >= $this->priorityLevelsCfg[MEDIUM])
-		{
-			$ret = MEDIUM;
-		}
-        return $ret;
+		//BUGID 4418 - clean up priority usage
+		return priority_to_level($prio);
 	}
 
 

Modified: trunk/testlink/lib/functions/specview.php
===================================================================
--- trunk/testlink/lib/functions/specview.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/specview.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1082,6 +1082,7 @@
 			$outRef['tcversions_active_status'][$testCase['id']] = 1;
 			$outRef['external_id'] = $testCase['tc_external_id'];
 			$outRef['tcversions_execution_type'][$testCase['id']] = $testCase['execution_type'];
+			$outRef['importance'][$testCase['id']] = $testCase['importance'];
 			
 			if (!isset($outRef['tcversions_qty']))  
 			{
@@ -1104,6 +1105,7 @@
 						$outRef['tcversions_active_status'][$testCase['id']] = 0;
 						$outRef['external_id'] = $testCase['tc_external_id'];
 						$outRef['tcversions_execution_type'][$testCase['id']] = $testCase['execution_type'];
+						$outRef['importance'][$testCase['id']] = $testCase['importance'];
 					}
 					$exec_order= isset($linked_testcase[0]['execution_order'])? $linked_testcase[0]['execution_order']:0;
 					$outRef['execution_order'] = $exec_order;

Modified: trunk/testlink/lib/functions/testPlanUrgency.class.php
===================================================================
--- trunk/testlink/lib/functions/testPlanUrgency.class.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/testPlanUrgency.class.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -10,6 +10,8 @@
  * @link 		http://www.teamst.org/index.php
  *
  * @internal Revisions:
+ *  20110415 - Julian - BUGID 4418 - Clean up priority usage within Testlink
+ *                    - BUGID 4419 - Added priority to output of getSuiteUrgency()
  *	20100204 - eloff - fixed typo error $break => break
  *	20091017 - franciscom - moved method getPriority() from result.class.php
  *	20081212 - BUGID 1922 - franciscom 
@@ -121,7 +123,8 @@
 		$tcprefix = $this->db->prepare_string($tcprefix);
 		
 		$sql = " SELECT DISTINCT '{$tcprefix}' AS tcprefix, NHB.name, NHB.node_order," .
-			   " NHA.parent_id AS testcase_id, TCV.tc_external_id, testplan_tcversions.tcversion_id, testplan_tcversions.urgency".
+			   " NHA.parent_id AS testcase_id, TCV.tc_external_id, testplan_tcversions.tcversion_id,".
+			   " testplan_tcversions.urgency, TCV.importance, (TCV.importance * testplan_tcversions.urgency) AS priority" .
 			   " FROM {$this->tables['nodes_hierarchy']} NHA " .
 			   " JOIN {$this->tables['nodes_hierarchy']} NHB ON NHA.parent_id = NHB.id " .
 			   " JOIN {$this->tables['testplan_tcversions']} testplan_tcversions " .
@@ -146,9 +149,6 @@
 	 */
 	public function getPriority($testplan_id, $filters=null, $options=null)
 	{
-		// Order is important for algorithm
-		$level2check=array(HIGH,MEDIUM);
-		$priorityLevelsCfg = config_get('priority_levels');
 		
 		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
 		$rs = null;
@@ -198,14 +198,8 @@
 				case 'tcversion':
 					foreach($key2loop as $key)
 					{
-		                foreach( $level2check as $level)
-		                {
-		                	if($rs[$key]['priority'] >= $priorityLevelsCfg[$level])
-		                	{
-		                		$rs[$key]['priority_level']=$level;
-		                		break;
-		                	}
-		                }
+						//BUGID 4418 - clean up priority usage
+						$rs[$key]['priority_level'] = priority_to_level($rs[$key]['priority']);
 					}
 				break;
 
@@ -215,14 +209,8 @@
 						$platformSet = array_keys($rs[$key]);
 						foreach($platformSet as $platform_id) 
 						{
-		                	foreach( $level2check as $level)
-		                	{
-								if ( $rs[$key][$platform_id]['priority'] >= $priorityLevelsCfg[$level])
-								{
-									$rs[$key][$platform_id]['priority_level'] = $level;
-									break;
-								}
-                            } 
+							//BUGID 4418 - clean up priority usage
+							$rs[$key][$platform_id]['priority_level'] = priority_to_level($rs[$key][$platform_id]['priority']);
 						}
 					}
 				break;

Modified: trunk/testlink/lib/functions/testcase.class.php
===================================================================
--- trunk/testlink/lib/functions/testcase.class.php	2012-04-11 09:25:46 UTC (rev 18329)
+++ trunk/testlink/lib/functions/testcase.class.php	2012-04-11 09:34:31 UTC (rev 18330)
@@ -1,5064 +1,5162 @@
-<?php
-/** 
- * TestLink Open Source Project - http://testlink.sourceforge.net/
- * This script is distributed under the GNU General Public License 2 or later. 
- *
- * @package 	TestLink
- * @author 		Francisco Mancardi (francisco.mancardi at gmail.com)
- * @copyright 	2005-2009, TestLink community 
- * @version    	CVS: $Id: testcase.class.php,v 1.331.2.6 2011/01/09 09:25:57 franciscom Exp $
- * @link 		http://www.teamst.org/index.php
- *
- * @internal Revisions:
- * 20101212 - franciscom - internal bug get_last_execution() empty where clause -> do not use $id
- +						   added new options getSteps	
- * 20101202 - asimon - BUGID 4067: refresh tree problems
- * 20101118 - amitkhullar - BUGID 3995 Custom Field Filters not working properly since the cf_hash is array
- * 20101109 - asimon - BUGID 3989: now it is configurable if custom fields without values are shown
- * 20101030 - franciscom - get_by_external() interface changes
- *						   get_basic_info()  interface changes
- *	
- * 20101025 - franciscom - get_last_active_version() - interface changes
- *						   BUGID 3889: Add Test Cases to Test plan - Right pane does not honor custom field filter
- * 20101024 - franciscom - new method filter_tcversions_by_cfields()	
- * 20101016 - franciscom - update_last_modified() refixed BUGID 3849
- * 20101012 - franciscom - html_table_of_custom_field_inputs() refactoring to use new method on cfield_mgr class	
- * 20101011 - franciscom - html_table_of_custom_field_inputs() ADDED CRITIC DOCUMENTATION
- * 20101010 - franciscom - get_by_id() - added testsuite_id on output recordset
- * 20101009 - franciscom - exportTestCaseDataToXML() - better checks on $optExport
- * 20101009 - franciscom - BUGID 3868: Importing exported XML results - custom fields have unexpected NEW LINES		
- * 20101008 - franciscom - BUGID 3849
- * 20101008 - asimon - BUGID 3311
- * 20101005 - amitkhullar - BUGID 3849, alias name not supported in Update stmts in postgres.
- * 20101001 - asimon - custom fields do not lose entered values on errors
- * 20100926 - franciscom - exportTestCaseDataToXML() a new management for tcase_id
- * 20100920 - franciscom - html_table_of_custom_field_values() changed keys on $formatOptions
- * 20100915 - amitkhullar - BUGID 3776
- * 20100910 - franciscom - getExternalID() improvements
- * 20100908 - franciscom - exportTestCaseDataToXML() - testcase::LATEST_VERSION has problems
- *						   get_exec_status() - changes in output
- * 		
- * 20100906 - asimon -  BUGID 3749
- * 20100905 - franciscom -	BUGID 3431 - Custom Field values at Test Case VERSION Level
- *							changes to methods: 
- *							copy_tcversion(),_blind_delete(),show(),copy_to(),create_new_version()
- *							get_linked_cfields_at_design(),html_table_of_custom_field_inputs()
- *							html_table_of_custom_field_values(),copy_cfields_design_values()
- *							exportTestCaseDataToXML()
- *
- * 20100905 - franciscom - create() - added new key on ret value 'tcversion_id'
- *
- * 20100902 - franciscom - BUGID 3736 - update_last_modified()
- * 20100901 - franciscom - get_by_id() - new output option
- * 20100831 - franciscom - BUGID 3729 - get_by_name() 
- * 20100825 - franciscom - BUGID 3702 - _blind_delete() issue
- * 20100821 - franciscom - BUGID 3695 - Test Case Steps - Export/Import - missing attribute execution type
- *						   create_step() - fixed issue when execution_type was NULL.
- *						   new method - update_tcversion_steps() needed for BUGID 3634	
- *	
- * 20100814 - franciscom - getInternalID() - removed unused code and minor code rearrangement
- *						   changes in returned value when internal ID can not be found.	
- * 20100813 - asimon - deactivated last slash on full path in get_assigned_to_user()
- *                     to remove it from test suite name in "tc assigned to user" tables
- * 20100802 - asimon - BUGID 3647 - filtering by build id in get_assigned_to_user() 
- * 20100731 - asimon - more modifications to get_assigned_to_user()
- * 20100722 - asimon - BUGID 3406 - modified statement to get build name in get_assigned_to_user()
- * 20100714 - Julian - BUGID 3575 -  get_assigned_to_user() added priority in output set
- * 20100712 - asimon - inserted missing semicolon after break in get_assigned_to_user()
- * 20100711 - franciscom - BUGID 3575 -  get_assigned_to_user() added $filters as optional arg
- * 20100708 - franciscom - BUGID 3575 -  get_assigned_to_user() add plaftorm in output set
- * 20100706 - franciscom - BUGID 3573 - _blind_delete() with alias has problems with MySQL
- * 20100521 - franciscom - BUGID 3481 - copy_tcversion() - preconditions are not copied
- * 20100516 - franciscom - BUGID 3465: Delete Test Project - User Execution Assignment is not deleted
- * 20100514 - franciscom - get_by_id() interface changes and improvements
- * 20100503 - franciscom - create_tcase_only() - BUGID 3374
- * 20100502 - franciscom - show() fixed error due to non existent variable $info
- * 20100417 - franciscom - new method - filter_tcversions()
- *						   get_last_active_version() - changes on output data 
- * 20100411 - franciscom - BUGID 3387 - changes in show()
- * 20100411 - franciscom - new methods: get_last_active_version(),filter_tcversions_by_exec_type()
- * 20100409 - franciscom - BUGID 3367: Error after trying to copy a test case that the name is in the size limit.
- * 20100330 - eloff - BUGID 3329 - fixes test plan usage with platforms
- * 20100323 - asimon - fixed BUGID 3316 in show()
- * 20100317 - franciscom - new method get_by_external()
- * 20100315 - amitkhullar - Added  options for Requirements and CFields for Export.
- * 20100309 - franciscom - get_by_id() - improvements on control to apply when LATEST_VERSION is requested.
- * 20100309 - franciscom - get_exec_status() - interface changes
- *						   get_linked_versions() - interface changes                        
- *						   BUGID 0003253
- *
- * 20100301	- franciscom - changes on show() to solve 
- *                         BUGID 3181: From test case specification, after adding the test case 
- *                         to test a plan with platforms, platforms are not displayed
- *                                     
- * 20100210	- franciscom - keywords XML export refactored
- * 20100204 - franciscom - copyKeywordsTo(),copyReqAssignmentTo() - interface changes
- * 20100201 - franciscom - getExternalID(), refactored to improve performance when used on loops
- * 20100124 - franciscom - BUGID 3090 - problems when trying to delete a test case that has 0 steps.
- * 20100111 - franciscom - get_version_exec_assignment() - refactoring due to platforms feature.
- *                         get_linked_versions() - refactoring due to platforms feature.
- * 20100107 - franciscom - Multiple Test Case Steps Feature
- *                         Affected methods: delete(), _blind_delete()
- *
- * 20100106 - franciscom - Multiple Test Case Steps Feature
- *                         Affected methods: get_by_id(), create(), update()
- *                         get_last_version_info(), get_linked_versions(), copy_to()
- *                         copy_tcversion(),exportTestCaseDataToXML()
- *
- * 20100105 - franciscom - fixed missing copy of preconditions on copy_tcversion()
- *                         exportTestCaseDataToXML() - added execution_type, importance
- *
- * 20100104 - franciscom - create_new_version() - interface changes
- *                         new method get_basic_info()
- *                         fixed bug in show()  regarding $gui->can_do->add2tplan
- *                         get_last_version_info() - interface changes
- * 20100103 - franciscom - getPrefix() - interface changes & refactoring
- *                         new methods - buildDirectWebLink(), getExternalID()
- * 20091229 - eloff - BUGID 3021  - getInternalID() - fixed error when tc prefix contains glue character
- * 20091220 - franciscom - copy_attachments() refactoring
- * 20091217 - franciscom - getDuplicatesByName() - new argument added
- * 20091215 - franciscom - getPrefix() - changed in return type, to avoid in some situations
- *                                       a double call.
- * 20091207 - franciscom - get_last_execution() - internal bug 
- * 20091127 - franciscom - getByPathName() new method
- * 20091118 - franciscom - get_last_execution() - still working ond fixing bug when using self::ALL_VERSIONS
- * 20091113 - franciscom - get_last_execution() - fixed bug when using self::ALL_VERSIONS
- * 20091003 - franciscom - show() changes in template get logic
- * 20090927 - franciscom - new methods: getPathLayered(),getPathTopSuite()
- * 20090922 - franciscom - get_last_execution() - used COALESCE() to return code
- *                                                also code for NOT RUN status.
- * 20090831 - franciscom - added management of new field: preconditions
- *                         create(),update(),exportTestCaseDataToXML()
- *
- * 20090815 - franciscom - get_executions() - added platform related info
- *                                            interface changes.
- *                         get_last_execution() - added platform related info
- *
- * 20090720 - franciscom - found bug in get_linked_cfields_at_execution()
- *                         when calling cfield_mgr class method
- *
- * 20090718 - franciscom - new method buildCFLocationMap();
- * 20090716 - franciscom - get_last_execution() - BUGID 2692 - interface changes.
- * 20090713 - franciscom - solved bug on get_executions() (bad SQL statement).
- * 20090530 - franciscom - html_table_of_custom_field_inputs() changes in interface
- * 20090526 - franciscom - html_table_of_custom_field_values() - added scope 'testplan_design'
- * 20090521 - franciscom - get_by_id() added version_number argument
- * 20090419 - franciscom - BUGID 2364 - show() changes on edit enabled logic
- * 20090414 - franciscom - BUGID 2378
- * 20090401 - franciscom - BUGID 2316 - changes to copy_to()
- * 20090308 - franciscom - BUGID 2204 - create() fixed return of new version number
- * 20090220 - franciscom - BUGID 2129
- * 20090106 - franciscom - BUGID - exportTestCaseDataToXML() - added export of custom fields values
- * 20081103 - franciscom - new method setKeywords() - added by schlundus
- *                         removed useless code from getTestProjectFromTestCase()
- * 20081015 - franciscom - delete() - improve controls to avoid bug if no children
- * 20080812 - franciscom - BUGID 1650 (REQ)
- *                         html_table_of_custom_field_inputs() interface changes
- *                         to manage custom fields with scope='testplan_design'
- *
- * 20080602 - franciscom - get_linked_versions() - internal changes due to BUG1504
- *                         get_exec_status() - interface and internal changes due to BUG1504
- *
- * 20080126 - franciscom - BUGID 1313
- */
-
-/** related functionality */
-require_once( dirname(__FILE__) . '/requirement_mgr.class.php' );
-require_once( dirname(__FILE__) . '/assignment_mgr.class.php' );
-require_once( dirname(__FILE__) . '/attachments.inc.php' );
-require_once( dirname(__FILE__) . '/users.inc.php' );
-
-/** list of supported format for Test case import/export */
-$g_tcFormatStrings = array ("XML" => lang_get('the_format_tc_xml_import'));
-
-/**
- * class for Test case CRUD
- * @package 	TestLink
- */
-class testcase extends tlObjectWithAttachments
-{
-    const AUTOMATIC_ID=0;
-    const DEFAULT_ORDER=0;
-    const ALL_VERSIONS=0;
-    const LATEST_VERSION=-1;
-    const AUDIT_OFF=0;
-    const AUDIT_ON=1;
-    const CHECK_DUPLICATE_NAME=1;
-    const DONT_CHECK_DUPLICATE_NAME=0;
-    const ENABLED=1;
-    const ALL_TESTPLANS=null;
-    const ANY_BUILD=null;
-    const GET_NO_EXEC=1; 
-    const ANY_PLATFORM=null;
-	const NOXMLHEADER=true;    
-        
-    
-	/** @var database handler */
-	var $db;
-	var $tree_manager;
-	var $tproject_mgr;
-
-	var $node_types_descr_id;
-	var $node_types_id_descr;
-	var $my_node_type;
-
-	var $assignment_mgr;
-	var $assignment_types;
-	var $assignment_status;
-
-	var $cfield_mgr;
-
-	var $import_file_types = array("XML" => "XML", "XLS" => "XLS" );
-	var $export_file_types = array("XML" => "XML");
-	var $execution_types = array();
-
-	/**
-	 * testplan class constructor
-	 * 
-	 * @param resource &$db reference to database handler
-	 */
-	function __construct(&$db)
-	{
-		$this->db = &$db;
-		$this->tproject_mgr = new testproject($this->db);
-		$this->tree_manager = &$this->tproject_mgr->tree_manager;
-
-		$this->node_types_descr_id=$this->tree_manager->get_available_node_types();
-		$this->node_types_id_descr=array_flip($this->node_types_descr_id);
-		$this->my_node_type=$this->node_types_descr_id['testcase'];
-
-		$this->assignment_mgr=New assignment_mgr($this->db);
-		$this->assignment_types=$this->assignment_mgr->get_available_types();
-		$this->assignment_status=$this->assignment_mgr->get_available_status();
-
-		$this->cfield_mgr = new cfield_mgr($this->db);
-
-		$this->execution_types = array(TESTCASE_EXECUTION_TYPE_MANUAL => lang_get('manual'),
-                                       TESTCASE_EXECUTION_TYPE_AUTO => lang_get('automated'));
-
-		// ATTENTION:
-		// second argument is used to set $this->attachmentTableName,property that this calls
-		// get from his parent
-		parent::__construct($this->db,"nodes_hierarchy");
-	}
-
-
-	/*
-	  function: get_export_file_types
-	            getter
-	
-	  args: -
-	
-	  returns: map
-	           key: export file type code
-	           value: export file type verbose description
-	
-	*/
-	function get_export_file_types()
-	{
-	    return $this->export_file_types;
-	}
-	
-	/*
-	  function: get_impor_file_types
-	            getter
-	
-	  args: -
-	
-	  returns: map
-	           key: import file type code
-	           value: import file type verbose description
-	
-	*/
-	function get_import_file_types()
-	{
-	    return $this->import_file_types;
-	}
-	
-	/*
-	   function: get_execution_types
-	             getter
-	
-	   args: -
-	
-	   returns: map
-	            key: execution type code
-	            value: execution type verbose description
-	
-	*/
-	function get_execution_types()
-	{
-	    return $this->execution_types;
-	}
-
-
-	/**
-	 * create a test case
-	 *
-	 * @internal revisions
-	 *
-	 * 20100905 - franciscom - added new key on ret value 'tcversion_id';
-	 */
-	function create($parent_id,$name,$summary,$preconditions,$steps,$author_id,
-	                $keywords_id='',$tc_order=self::DEFAULT_ORDER,$id=self::AUTOMATIC_ID,
-                    $execution_type=TESTCASE_EXECUTION_TYPE_MANUAL,
-                    $importance=2,$options=null)
-	{
-		$status_ok = 1;
-
-	    $my['options'] = array( 'check_duplicate_name' => self::DONT_CHECK_DUPLICATE_NAME, 
-	                            'action_on_duplicate_name' => 'generate_new');
-	    $my['options'] = array_merge($my['options'], (array)$options);
-		
-		$ret = $this->create_tcase_only($parent_id,$name,$tc_order,$id,$my['options']);
-		if($ret["status_ok"])
-		{
-			if(trim($keywords_id) != "")
-			{
-				$a_keywords = explode(",",$keywords_id);
-				$this->addKeywords($ret['id'],$a_keywords);
-			}
-			
-			$version_number = 1;
-			if(isset($ret['version_number']) && $ret['version_number'] < 0)
-			{
-				// We are in the special situation we are only creating a new version,
-				// useful when importing test cases. Need to get last version number.
-				// I do not use create_new_version() because it does a copy ot last version
-				// and do not allow to set new values in different fields while doing this operation.
-				$last_version_info = $this->get_last_version_info($ret['id'],array('output' => 'minimun'));
-				$version_number = $last_version_info['version']+1;
-				$ret['msg'] = sprintf($ret['msg'],$version_number);       
-				
-				// BUGID 2204
-				$ret['version_number']=$version_number;
-			}
-			// Multiple Test Case Steps Feature
-			$op = $this->create_tcversion($ret['id'],$ret['external_id'],$version_number,$summary,
-			                              $preconditions,$steps,$author_id,$execution_type,$importance);
-			
-			$ret['msg'] = $op['status_ok'] ? $ret['msg'] : $op['msg'];
-			$ret['tcversion_id'] = $op['status_ok'] ? $op['id'] : -1;
-		}
-		return $ret;
-	}
-
-	/*
-	20061008 - franciscom
-	           added [$check_duplicate_name]
-	                 [$action_on_duplicate_name]
-	
-	20060725 - franciscom - interface changes
-	           [$order]
-	
-	           [$id]
-	           0 -> the id will be assigned by dbms
-	           x -> this will be the id
-	                Warning: no check is done before insert => can got error.
-	
-	return:
-	       $ret['id']
-	       $ret['external_id']
-	       $ret['status_ok']
-	       $ret['msg'] = 'ok';
-		     $ret['new_name']
-		     
-	rev: 
-		20100503 - franciscom - BUGID 3374
-		20100409 - franciscom - improved check on name len.
-								BUGID 3367: Error after trying to copy a test case that 
-								the name is in the size limit.
-		20090120 - franciscom - added new action_on_duplicate_name	     
-	*/
-	function create_tcase_only($parent_id,$name,$order=self::DEFAULT_ORDER,$id=self::AUTOMATIC_ID,
-	                           $options=null)
-	{
-		$dummy = config_get('field_size');
-		$name_max_len = $dummy->testcase_name;
-		$name = trim($name);
-        $originalNameLen = tlStringLen($name);
-
-        $getOptions = array();
-		$ret = array('id' => -1,'external_id' => 0, 'status_ok' => 1,'msg' => 'ok', 
-		             'new_name' => '', 'version_number' => 1, 'has_duplicate' => false);
-
-	    $my['options'] = array( 'check_duplicate_name' => self::DONT_CHECK_DUPLICATE_NAME, 
-	                            'action_on_duplicate_name' => 'generate_new'); 
-	                            
-	    $my['options'] = array_merge($my['options'], (array)$options);
-       
-	    $doCreate=true;
-	 	if ($my['options']['check_duplicate_name'])
-		{
-			$algo_cfg = config_get('testcase_cfg')->duplicated_name_algorithm;
-			$getOptions['check_criteria'] = ($algo_cfg->type == 'counterSuffix') ? 'like' : '='; 
-			$getOptions['access_key'] = ($algo_cfg->type == 'counterSuffix') ? 'name' : 'id'; 
-	        $itemSet = $this->getDuplicatesByName($name,$parent_id,$getOptions);	
-	        
-			if( !is_null($itemSet) && ($siblingQty=count($itemSet)) > 0 )
-			{
-		      $ret['has_duplicate'] = true;
-			  switch($my['options']['action_on_duplicate_name'])
-			  {
-				    case 'block':
-		            	$doCreate=false;
-				   		$ret['status_ok'] = 0;
-				    	$ret['msg'] = sprintf(lang_get('testcase_name_already_exists'),$name);
-				    break;
-				    
-				    case 'generate_new':
-				        $doCreate=true;
-				        
-			            switch($algo_cfg->type)
-			            {
-			            	case 'stringPrefix':
-			            		$name = $algo_cfg->text . " " . $name ;
-			            		$final_len = strlen($name);
-			            		if( $final_len > $name_max_len)
-			            		{
-			            			$name = substr($name,0,$name_max_len);
-			            		}
-			            	break;
-			            	
-			            	case 'counterSuffix':
-			            	    $mask =  !is_null($algo_cfg->text) ? $algo_cfg->text : '#%s';
-            	            	$nameSet = array_flip(array_keys($itemSet));
-            	            	
-            	            	// 20110109 - franciscom
-            	            	// does not understand why I've choosen time ago
-            	            	// to increment $siblingQty before using it
-            	            	// This way if TC X exists on target parent
-            	            	// I will create TC X [2] insteand of TC X [1]
-            	            	// Anyway right now I will not change.
-			            		$target = $name . ($suffix = sprintf($mask,++$siblingQty));
-								// BUGID 3367
-			            		$final_len = strlen($target);
-			            		if( $final_len > $name_max_len)
-			            		{
-			            			$target = substr($target,strlen($suffix),$name_max_len);
-			            		}
-                                
-                                // Need to recheck if new generated name does not crash with existent name
-                                // why? Suppose you have created:
-            					// TC [1]
-            					// TC [2]
-            					// TC [3]
-            					// Then you delete TC [2].
-            					// When I got siblings  il will got 2 siblings, if I create new progressive using next,
-            					// it will be 3 => I will get duplicated name.
-            					while( isset($nameSet[$target]) )
-            					{
-			            			$target = $name . ($suffix = sprintf($mask,++$siblingQty));
-									// BUGID 3367
-			            			$final_len = strlen($target);
-			            			if( $final_len > $name_max_len)
-			            			{
-			            				$target = substr($target,strlen($suffix),$name_max_len);
-			            			}
-            					}
-                                $name = $target;
-			            	break;
-			            } 
-						
-				        $ret['status_ok'] = 1;
-						$ret['new_name'] = $name;
-						$ret['msg'] = sprintf(lang_get('created_with_title'),$name);
-						break;
-				        
-				    case 'create_new_version':
-				        $doCreate=false;
-				        
-				        // If we found more that one with same name and same parent,
-				        // will take the first one.
-				        // BUGID 3374
-				        $xx = current($itemSet);
-	                    $ret['id'] = $xx['id'];            
-		                $ret['external_id']=$xx['tc_external_id'];
-				        $ret['status_ok'] = 1;
-						$ret['new_name'] = $name;
-		            	$ret['version_number'] = -1;
-						$ret['msg'] = lang_get('create_new_version');
-				    break;
-				    
-				    default:
-				    break;
-				}
-			}
-		}
-	
-	  if( $ret['status_ok'] && $doCreate)
-	  {
-	  	
-	  	$safeLenName = tlSubStr($name, 0, $name_max_len);
-	  	
-	    // Get tproject id
-	    $path2root=$this->tree_manager->get_path($parent_id);
-	    $tproject_id=$path2root[0]['parent_id'];
-	    $tcaseNumber=$this->tproject_mgr->generateTestCaseNumber($tproject_id);
-	    $tcase_id = $this->tree_manager->new_node($parent_id,$this->my_node_type,$safeLenName,$order,$id);
-	    $ret['id'] = $tcase_id;
-	    $ret['external_id'] = $tcaseNumber;
-		if( !$ret['has_duplicate'] && ($originalNameLen > $name_max_len) )
-		{
-			$ret['new_name'] = $safeLenName;
-			$ret['msg'] = sprintf(lang_get('testcase_name_length_exceeded'),$originalNameLen,$name_max_len);
-		}
-		
-
-	  }
-	
-	  return $ret;
-	}
-	
-	/*
-	  function: create_tcversion
-	
-	  args:
-	
-	  returns:
-	
-	  rev: 
-	  	   20100821 - franciscom - BUGID 3696 - test case step execution type ignored	
-	  	   20100106 - franciscom - Multiple Test Case Steps Feature
-	  	   20080113 - franciscom - interface changes added tc_ext_id
-	
-	*/
-	function create_tcversion($id,$tc_ext_id,$version,$summary,$preconditions,$steps,
-	                          $author_id,$execution_type=TESTCASE_EXECUTION_TYPE_MANUAL,$importance=2)
-	{
-		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
-		$tcase_version_id = $this->tree_manager->new_node($id,$this->node_types_descr_id['testcase_version']);
-		$sql = "/* $debugMsg */ INSERT INTO {$this->tables['tcversions']} " .
-		       " (id,tc_external_id,version,summary,preconditions," . 
-		       "author_id,creation_ts,execution_type,importance) " . 
-	  	       " VALUES({$tcase_version_id},{$tc_ext_id},{$version},'" .
-	  	       $this->db->prepare_string($summary) . "','" . $this->db->prepare_string($preconditions) . "'," . 
-	  	       $this->db->prepare_int($author_id) . "," . $this->db->db_now() . 
-	  	       ", {$execution_type},{$importance} )";
-		
-		$result = $this->db->exec_query($sql);
-		$ret['msg']='ok';
-		$ret['id']=$tcase_version_id;
-		$ret['status_ok']=1;
-
-		if ($result && ( !is_null($steps) && is_array($steps) ) )
-		{
-			$steps2create = count($steps);
-			$op['status_ok'] = 1;
-			for($jdx=0 ; ($jdx < $steps2create && $op['status_ok']); $jdx++)
-			{
-				$op = $this->create_step($tcase_version_id,$steps[$jdx]['step_number'],$steps[$jdx]['actions'],
-										 $steps[$jdx]['expected_results'],$steps[$jdx]['execution_type']);
-			}	 
-		}
-	
-		if (!$result)
-		{
-			$ret['msg'] = $this->db->error_msg();
-		  	$ret['status_ok']=0;
-		  	$ret['id']=-1;
-		}
-	
-		return $ret;
-	}
-	
-	
-	/*
-	  function: getDuplicatesByname
-	
-	  args: $name
-	        $parent_id
-	
-	  returns: hash
-	*/
-	function getDuplicatesByName($name, $parent_id, $options=null)
-	{
-		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
-
-	    $my['options'] = array( 'check_criteria' => '=', 'access_key' => 'id');
-	    $my['options'] = array_merge($my['options'], (array)$options);
-	    
-	    $target = $this->db->prepare_string($name);
-	    switch($my['options']['check_criteria'])
-	    {
-	    	case '=':
-	    	default:
-	    		$check_criteria = " AND NHA.name = '{$target}' ";
-	    	break;
-	    	
-	    	case 'like':
-	    		$check_criteria = " AND NHA.name LIKE '{$target}%' ";
-	    	break;
-	    	
-	    }
-			
-	    $sql = " SELECT DISTINCT NHA.id,NHA.name,TCV.tc_external_id" .
-			   " FROM {$this->tables['nodes_hierarchy']} NHA, " .
-			   " {$this->tables['nodes_hierarchy']} NHB, {$this->tables['tcversions']} TCV  " .
-			   " WHERE NHA.node_type_id = {$this->my_node_type} " .
-			   " AND NHB.parent_id=NHA.id " .
-			   " AND TCV.id=NHB.id " .
-			   " AND NHB.node_type_id = {$this->node_types_descr_id['testcase_version']} " .
-			   " AND NHA.parent_id={$parent_id} {$check_criteria}";
-	
-		$rs = $this->db->fetchRowsIntoMap($sql,$my['options']['access_key']);
-	    if( is_null($rs) || count($rs) == 0 )
-	    {
-	        $rs=null;   
-	    }
-	    return $rs;
-	}
-	
-	
-	
-	
-	/*
-	  function: get_by_name
-	
-	  args: $name
-	        [$tsuite_name]: name of parent test suite
-	        [$tproject_name]
-	
-	  returns: hash
-	  
-	  @internal revisions
-	  20100831 - franciscom - BUGID 3729
-	  
-	*/
-	function get_by_name($name, $tsuite_name = '', $tproject_name = '')
-	{
-
-		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
-
-	    $recordset = null;
-	    $filters_on = array('tsuite_name' => false, 'tproject_name' => false);
-	
-		// BUGID 3729 - limit all names
-		$field_size = config_get('field_size');
-	    $tsuite_name = tlSubStr(trim($tsuite_name),0, $field_size->testsuite_name);
-	    $tproject_name = tlSubStr(trim($tproject_name),0,$field_size->testproject_name);
-	    $name = tlSubStr(trim($name), 0, $field_size->testcase_name);
-	    
-		$sql = "/* $debugMsg */ " . 	    
-	           " SELECT DISTINCT NH_TCASE.id,NH_TCASE.name,NH_TCASE_PARENT.id AS parent_id," .
-	           " NH_TCASE_PARENT.name AS tsuite_name, TCV.tc_external_id " .
-			   " FROM {$this->tables['nodes_hierarchy']} NH_TCASE, " .
-			   " {$this->tables['nodes_hierarchy']} NH_TCASE_PARENT, " .
-			   " {$this->tables['nodes_hierarchy']} NH_TCVERSIONS," .
-			   " {$this->tables['tcversions']}  TCV  " .
-			   " WHERE NH_TCASE.node_type_id = {$this->my_node_type} " .
-			   " AND NH_TCASE.name = '{$this->db->prepare_string($name)}' " .
-			   " AND TCV.id=NH_TCVERSIONS.id " .
-			   " AND NH_TCVERSIONS.parent_id=NH_TCASE.id " .
-			   " AND NH_TCASE_PARENT.id=NH_TCASE.parent_id ";
-	   
-		if($tsuite_name != "")
-		{
-			$sql .= " AND NH_TCASE_PARENT.name = '{$this->db->prepare_string($tsuite_name)}' " .
-		            " AND NH_TCASE_PARENT.node_type_id = {$this->node_types_descr_id['testsuite']} ";
-		}
-		$recordset = $this->db->get_recordset($sql);
-	    if(count($recordset) && $tproject_name != "")
-	    {    
-			list($tproject_info)=$this->tproject_mgr->get_by_name($tproject_name);
-	        foreach($recordset as $idx => $tcase_info)
-	        { 
-	        	if( $this->get_testproject($tcase_info['id']) != $tproject_info['id'] )
-	            {
-	            	unset($recordset[$idx]);  
-				}        
-			}    
-	    }
-	
-	    return $recordset;
-	}
-	
-	
-	/*
-	get array of info for every test case
-	without any kind of filter.
-	Every array element contains an assoc array with testcase info
-	
-	*/
-	function get_all()
-	{
-		$sql = " SELECT nodes_hierarchy.name, nodes_hierarchy.id
-		         FROM  {$this->tables['nodes_hierarchy']} nodes_hierarchy
-		         WHERE nodes_hierarchy.node_type_id={$my_node_type}";
-		$recordset = $this->db->get_recordset($sql);
-	
-		return $recordset;
-	}
-	
-	
-	/**
-	 * Show Test Case logic
-	 * 
-	 * @param object $smarty reference to smarty object (controls viewer).
-	 * @param integer $id Test case unique identifier
-	 * @param integer $version_id (optional) you can work on ONE test case version, 
-	 * 				or on ALL; default: ALL
-	 * 
-	 * @internal
-	
-	        [viewer_args]: map with keys
-	                       action
-	                       msg_result
-	                       refresh_tree: controls if tree view is refreshed after every operation.
-	                                     default: yes
-	                       user_feedback
-	                       disable_edit: used to overwrite user rights
-	                                        default: 0 -> no
-	
-	  returns:
-	
-	  rev :
-	       20090215 - franciscom - added info about links to test plans
-	       
-	       20081114 - franciscom -
-	       added arguments and options that are useful when this method is
-	       used to display test case search results.
-	       path_info: map: key: testcase id
-	                       value: array with path to test case, where:
-	                              element 0 -> test project name
-	                              other elements test suites name
-	       
-	       new options on viewer_args: hilite_testcase_name,show_match_count
-	       
-	       20070930 - franciscom - REQ - BUGID 1078
-	       added disable_edit argument
-	
-	*/
-	function show(&$smarty,$guiObj,$template_dir,$id,$version_id = self::ALL_VERSIONS,
-	              $viewer_args = null,$path_info=null,$mode=null)
-	{
-
-	    $status_ok = 1;
-	
-	    $gui = is_null($guiObj) ? new stdClass() : $guiObj;
-	    $gui->parentTestSuiteName='';
-	    $gui->path_info=$path_info;
-		$gui->tprojectName='';
-	    $gui->linked_versions=null;
-		$gui->tc_current_version = array();
-	    $gui->bodyOnLoad="";
-	    // 20101008 - asimon - BUGID 3311
-	    $gui->bodyOnUnload = "storeWindowSize('TCEditPopup')";
-	    $gui->submitCode="";
-	    $gui->dialogName = '';
-	    $gui->platforms = null;
-		$gui->tableColspan = 5; // sorry magic related to table to display steps
-		$gui->opt_requirements = false;
-	
-		$gui_cfg = config_get('gui');
-		$the_tpl = config_get('tpl');
-		$my_template = isset($the_tpl['tcView']) ? $the_tpl['tcView'] : 'tcView.tpl'; 
-
-		$tcase_cfg = config_get('testcase_cfg');
-	
-		$req_mgr = new requirement_mgr($this->db);
-
-		$tc_other_versions = array();
-		$status_quo_map = array();
-		$keywords_map = array();
-		$arrReqs = array();
-	    $userid_array = array();
-
-	    
-	    // 20090718 - franciscom
-	    $cf_smarty = null;
-	    $formatOptions=null;
-        $cfPlaces = $this->buildCFLocationMap();
-	    if( !is_null($mode) && $mode=='editOnExec' )
-	    {
-	        // refers to two javascript functions present in testlink_library.js
-	        // and logic used to refresh both frames when user call this
-	        // method to edit a test case while executing it.
-	        $gui->dialogName='tcview_dialog';
-	        $gui->bodyOnLoad="dialog_onLoad($gui->dialogName)";
-	        $gui->bodyOnUnload="dialog_onUnload($gui->dialogName)";
-	        $gui->submitCode="return dialog_onSubmit($gui->dialogName)";
-	    }
-	
-	    $viewer_defaults=array('title' => lang_get('title_test_case'),'show_title' => 'no',
-	                           'action' => '', 'msg_result' => '','user_feedback' => '',
-	                           'refreshTree' => 1, 'disable_edit' => 0,
-	                           'display_testproject' => 0,'display_parent_testsuite' => 0,
-	                           'hilite_testcase_name' => 0,'show_match_count' => 0);
-	
-	    if( !is_null($viewer_args) && is_array($viewer_args) )
-	    {
-	        foreach($viewer_defaults as $key => $value)
-	        {
-	            if(isset($viewer_args[$key]) )
-	            {
-	                  $viewer_defaults[$key]=$viewer_args[$key];
-	            }
-	        }
-	    }
-	 
-	    $gui->show_title=$viewer_defaults['show_title'];
-	    $gui->display_testcase_path=!is_null($path_info);
-	    $gui->hilite_testcase_name=$viewer_defaults['hilite_testcase_name'];
-	    $gui->pageTitle=$viewer_defaults['title'];
-	    $gui->show_match_count=$viewer_defaults['show_match_count'];
-	    if($gui->show_match_count && $gui->display_testcase_path )
-	    {
-	        $gui->match_count=count($path_info);  
-	    }
-	
-	    // fine grain control of operations
-	    // if( $viewer_defaults['disable_edit'] == 1 || has_rights($this->db,"mgt_modify_tc") == 'no' )
-		// BUGID 3387
-	    if( $viewer_defaults['disable_edit'] == 1 || has_rights($this->db,"mgt_modify_tc") == false)
-	    {
-	        $mode = 'editDisabled';
-	    }
-	    $gui->show_mode = $mode;
-	    $gui->can_do = $this->getShowViewerActions($mode);
-	    
-		if(is_array($id))
-		{
-			$a_id = $id;
-		}
-		else
-		{
-		    $status_ok = $id > 0 ? 1 : 0;
-			$a_id = array($id);
-		}
-		if($status_ok)
-	    {
-	        $path2root = $this->tree_manager->get_path($a_id[0]);
-	        $tproject_id = $path2root[0]['parent_id'];
-	        $info = $this->tproject_mgr->get_by_id($tproject_id);
-			$gui->opt_requirements = $info['opt']->requirementsEnabled;
-			
-			$platformMgr = new tlPlatform($this->db,$tproject_id);
-	        $gui->platforms = $platformMgr->getAllAsMap();
-	        
-	        // BUGID 2378
-	        $testplans = $this->tproject_mgr->get_all_testplans($tproject_id,array('plan_status' =>1) );
-	        $gui->has_testplans = !is_null($testplans) && count($testplans) > 0 ? 1 : 0;
-	        
-	        if( $viewer_defaults['display_testproject'] )
-	        {
-	            $gui->tprojectName=$info['name'];
-	        }
-	    
-	        if( $viewer_defaults['display_parent_testsuite'] )
-	        {
-	            $parent_idx = count($path2root)-2;
-	            $gui->parentTestSuiteName = $path2root[$parent_idx]['name'];
-	        }
-	    
-	        $tcasePrefix = $this->tproject_mgr->getTestCasePrefix($tproject_id);
-	        if(trim($tcasePrefix) != "")
-	        {
-	        	// Add To Testplan button will be disabled if the testcase doesn't belong to the current selected testproject
-	        	// $gui->can_do->add2tplan = 'no';
-	        	if ($_SESSION['testprojectPrefix'] == $tcasePrefix)
-	        	{
-		    		$gui->can_do->add2tplan = $gui->can_do->add2tplan == 'yes' ? has_rights($this->db,"testplan_planning") : 'no';
-				}
-				else
-				{
-					$gui->can_do->add2tplan = 'no';
-				}
-
-				$tcasePrefix .= $tcase_cfg->glue_character;
-		   	}
-	    }
-	    
-	    if($status_ok && sizeof($a_id))
-	    {
-	    	$cfx=0;
-	    	$cf_current_version = null;
-	    	$cf_other_versions = null;
-		  	$allTCKeywords = $this->getKeywords($a_id,null,'testcase_id',' ORDER BY keyword ASC ');
-		  	$allReqs = $req_mgr->get_all_for_tcase($a_id);
-		  	foreach($a_id as $key => $tc_id)
-		  	{
-		  		$tc_array = $this->get_by_id($tc_id,$version_id);
-		  		if (!$tc_array)
-		  		{
-		  			continue;
-		  		}
-		  		
-		  		$tc_array[0]['tc_external_id'] = $tcasePrefix . $tc_array[0]['tc_external_id'];
-
-		  		// get the status quo of execution and links of tc versions
-		  		$status_quo_map[] = $this->get_versions_status_quo($tc_id);
-
-		  		$gui->linked_versions[] = $this->get_linked_versions($tc_id);
-		  		$keywords_map[] = isset($allTCKeywords[$tc_id]) ? $allTCKeywords[$tc_id] : null;
-		  		$tc_current = $tc_array[0];
-		  		$tcversion_id_current = $tc_array[0]['id']; 
-		  		$gui->tc_current_version[] = array($tc_current);
-		  		
-		  		//Get UserID and Updater ID for current Version
-		  		$userid_array[$tc_current['author_id']] = null;
-		  		$userid_array[$tc_current['updater_id']] = null;
-	    
-	    		// BUGID 3431
-	      		foreach($cfPlaces as $locationKey => $locationFilter)
-		  		{ 
-		  			// BUGID 3431
-		  			$cf_current_version[$cfx][$locationKey] = 
-		  				$this->html_table_of_custom_field_values($tc_id,'design',$locationFilter,
-		  			 	                                         null,null,$tproject_id,null,$tcversion_id_current);
-		  		}	
-  			
-	    
-				// Other versions (if exists)	    
-		  		if(count($tc_array) > 1)
-		  		{
-		  			$tc_other_versions[] = array_slice($tc_array,1);
-					
-					$target_idx = count($tc_other_versions) - 1;
-					
-					// BUGID 3431
-					$loop2do = count($tc_other_versions[$target_idx]);
-					for($qdx=0; $qdx < $loop2do; $qdx++)
-					{
-						$target_tcversion = $tc_other_versions[$target_idx][$qdx]['id'];
-	      				foreach($cfPlaces as $locationKey => $locationFilter)
-		  				{ 
-		  					// BUGID 3431
-		  					$cf_other_versions[$cfx][$qdx][$locationKey] = 
-		  						$this->html_table_of_custom_field_values($tc_id,'design',$locationFilter,
-		  					 	                                         null,null,$tproject_id,null,$target_tcversion);
-		  				}	
-					}
-		  		}
-		  		else
-		  		{
-		  			$tc_other_versions[] = null;
-		  			$cf_other_versions[$cfx]=null;
-		  		}	
-		  		$cfx++;
-		  		
-		  		// Get author and updater id for each version
-		  		if ($tc_other_versions[0])
-		  		{
-		  			foreach($tc_other_versions[0] as $key => $version)
-		  			{				
-		  	  			$userid_array[$version['author_id']] = null;
-		  	  			$userid_array[$version['updater_id']] = null;				
-		  			}
-		  		}
-		  		$tcReqs = isset($allReqs[$tc_id]) ? $allReqs[$tc_id] : null;
-		  		$arrReqs[] = $tcReqs;
-
-		  	} // foreach($a_id as $key => $tc_id)
-	    } // if (sizeof($a_id))
-
-	    // Removing duplicate and NULL id's
-		unset($userid_array['']);
-		$passeduserarray = array_keys($userid_array);
-
-		$gui->cf = null; // $cf_current_version; // $cf_smarty;
-		$gui->cf_current_version = $cf_current_version; // $cf_smarty;
-		$gui->cf_other_versions = $cf_other_versions; // $cf_smarty;
-		$gui->refreshTree = isset($gui->refreshTree) ? $gui->refreshTree : $viewer_defaults['refreshTree'];
-		$gui->sqlResult = $viewer_defaults['msg_result'];
-		$gui->action = $viewer_defaults['action'];
-		$gui->user_feedback = $viewer_defaults['user_feedback'];
-		$gui->execution_types = $this->execution_types;
-		$gui->tcase_cfg = $tcase_cfg;
-		$gui->users = tlUser::getByIDs($this->db,$passeduserarray,'id');
-		$gui->status_quo = $status_quo_map;
-		$gui->testcase_other_versions = $tc_other_versions;
-		$gui->arrReqs = $arrReqs;
-		$gui->view_req_rights =  has_rights($this->db,"mgt_view_req");
-		$gui->keywords_map = $keywords_map;
-		$smarty->assign('gui',$gui);
-		$smarty->display($template_dir . $my_template);
-	}
-	
-	
-	
-	/**
-	 * update test case specification
-	 * 
-	 * @param integer $id Test case unique identifier (node_hierarchy table)
-	 * @param integer $tcversion_id Test Case Version unique ID (node_hierarchy table)
-	 * @param string $name name/title
-	 * @param string $summary
-	 * @param string $preconditions
-	 * @param array $steps steps + expected results
-	 * @param integer $user_id who is doing the update
-	 * @param string $keywords_id optional list of keyword id to be linked to test case
-	 *				 this list will override previous keyword links (delete + insert).
-	 *
-	 * @param integer $tc_order optional order inside parent test suite
-	 * @param integer $execution_type optional
-	 * @param integer $importance optional
-	 * 
-	 *
-	 *
-	 */
-	function update($id,$tcversion_id,$name,$summary,$preconditions,$steps,
-	                $user_id,$keywords_id='',$tc_order=self::DEFAULT_ORDER,
-	                $execution_type=TESTCASE_EXECUTION_TYPE_MANUAL,$importance=2)
-	{
-		$ret['status_ok'] = 1;
-		$ret['msg'] = '';
-		
-		
-		tLog("TC UPDATE ID=($id): exec_type=$execution_type importance=$importance");
-		
-		// Check if new name will be create a duplicate testcase under same parent
-		$checkDuplicates = config_get('check_names_for_duplicates');
-		if ($checkDuplicates)
-		{  	
-			$check = $this->tree_manager->nodeNameExists($name,$this->my_node_type,$id);
-			$ret['status_ok'] = !$check['status']; 
-			$ret['msg'] = $check['msg']; 
-		}    
-	
-		if($ret['status_ok'])
-		{    
-			$sql=array();
-			$sql[] = " UPDATE {$this->tables['nodes_hierarchy']} SET name='" .
-					 $this->db->prepare_string($name) . "' WHERE id= {$id}";
-		
-			// test case version 
-			// BUGID - 3849
-		   	$sql[] = " UPDATE {$this->tables['tcversions']} " .
-		             " SET summary='" . $this->db->prepare_string($summary) . "'," .
-		   		 	 " updater_id=" . $this->db->prepare_int($user_id) . ", " .
-		   		 	 " modification_ts = " . $this->db->db_now() . "," .
-		   		 	 " execution_type=" . $this->db->prepare_int($execution_type) . ", " . 
-		   		 	 " importance=" . $this->db->prepare_int($importance) . "," .
-		   		 	 " preconditions='" . $this->db->prepare_string($preconditions) . "' " .
-		   		 	 " WHERE id = " . $this->db->prepare_int($tcversion_id); 
-		
-			foreach($sql as $stm)
-			{
-			    $result = $this->db->exec_query($stm);
-			    if( !$result )
-			    {
-					$ret['status_ok'] = 0;
-					$ret['msg'] = $this->db->error_msg;
-					break;
-			    }
-			}
-		    
-		    // BUGID 3634 - missing update.
-		    if( $ret['status_ok'] && !is_null($steps) )
-		    {
-		    	$this->update_tcversion_steps($tcversion_id,$steps);
-		    }
-		    
-			if( $ret['status_ok'] )
-		    {      
-		       $this->updateKeywordAssignment($id,$keywords_id);
-		   	}
-		}
-	      
-		return $ret;
-	}
-	
-	
-	/*
-	  function: updateKeywordAssignment
-	
-	  args:
-	  
-	  returns: 
-	
-	*/
-	private function updateKeywordAssignment($id,$keywords_id)
-	{
-		
-		// To avoid false loggings, check is delete is needed
-		$items = array();
-		$items['stored'] = $this->get_keywords_map($id);
-		if (is_null($items['stored']))
-			$items['stored'] = array();
-		$items['requested'] = array();
-		
-		if(trim($keywords_id) != "")
-		{
-			$a_keywords = explode(",",trim($keywords_id));
-			$sql = " SELECT id,keyword " .
-		       " FROM {$this->tables['keywords']} " .
-		       " WHERE id IN (" . implode(',',$a_keywords) . ")";
-		       
-			$items['requested'] = $this->db->fetchColumnsIntoMap($sql,'id','keyword');
-		}
-		
-		$items['common'] = array_intersect_assoc($items['stored'],$items['requested']);
-		$items['new'] = array_diff_assoc($items['requested'],$items['common']);
-		$items['todelete'] = array_diff_assoc($items['stored'],$items['common']);   
-		
-		if(!is_null($items['todelete']) && count($items['todelete']))
-		{
-			$this->deleteKeywords($id,array_keys($items['todelete']),self::AUDIT_ON);
-		}
-		
-		if(!is_null($items['new']) && count($items['new']))
-		{
-			$this->addKeywords($id,array_keys($items['new']),self::AUDIT_ON);
-		}
-	}
-	
-	/*
-	  function: logKeywordChanges
-	
-	  args:
-	  
-	  returns: 
-	
-	*/
-	function logKeywordChanges($old,$new)
-	{
-	
-	   // try to understand the really new
-	  
-	}
-	
-	
-	
-	
-	
-	
-	
-	/*
-	  function: check_link_and_exec_status
-	            Fore every version of testcase (id), do following checks:
-	
-		          1. testcase is linked to one of more test plans ?
-		          2. if anwser is yes then,check if has been executed => has records on executions table
-	
-	  args : id: testcase id
-	
-	  returns: string with following values:
-	           no_links: testcase is not linked to any testplan
-	           linked_but_not_executed: testcase is linked at least to a testplan
-	                                    but has not been executed.
-	
-	           linked_and_executed: testcase is linked at least to a testplan and
-	                                has been executed => has records on executions table.
-	
-	
-	*/
-	function check_link_and_exec_status($id)
-	{
-		$status = 'no_links';
-	
-		// get linked versions
-		// ATTENTION TO PLATFORMS
-		$linked_tcversions = $this->get_linked_versions($id);
-		$has_links_to_testplans = is_null($linked_tcversions) ? 0 : 1;
-	
-		if($has_links_to_testplans)
-		{
-			// check if executed
-			$linked_not_exec = $this->get_linked_versions($id,"NOT_EXECUTED");
-	
-			$status='linked_and_executed';
-			if(count($linked_tcversions) == count($linked_not_exec))
-			{
-				$status = 'linked_but_not_executed';
-			}
-		}
-		return $status;
-	}
-	
-	
-	/* 
-	 
-	rev:
-		20100107 - franciscom - Multiple Test Case Step Feature 
-		20081015 - franciscom - added check to avoid bug due to no children
-	
-	*/
-	function delete($id,$version_id = self::ALL_VERSIONS)
-	{
-		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
-	  	$children=null;
-	  	$do_it=true;
-	  	
-	  	// I'm trying to speedup the next deletes
-	  	$sql="/* $debugMsg */ " . 
-	  	     " SELECT NH_TCV.id AS tcversion_id, NH_TCSTEPS.id AS step_id " .
-	  	     " FROM {$this->tables['nodes_hierarchy']} NH_TCV " .
-	  	     " LEFT OUTER JOIN {$this->tables['nodes_hierarchy']} NH_TCSTEPS " . 
-	  	     " ON NH_TCSTEPS.parent_id = NH_TCV.id ";
-
-	  	if($version_id == self::ALL_VERSIONS)
-	  	{
-	  		if( is_array($id) )
-	  		{
-	  		  $sql .= " WHERE NH_TCV.parent_id IN (" .implode(',',$id) . ") ";
-	  		}
-	  		else
-	  		{
-	  		  $sql .= " WHERE NH_TCV.parent_id={$id} ";
-	  		}
-	  	}                       
-	  	else
-	  	{
-	  		  $sql .= " WHERE NH_TCV.parent_id={$id} AND NH_TCV.id = {$version_id}";
-	  	}
-
-	  	$children_rs=$this->db->get_recordset($sql);
-	  	$do_it = !is_null($children_rs);
-	  	if($do_it)
-	  	{
-	  		foreach($children_rs as $value)
-	  		{
-	  		  $children['tcversion'][]=$value['tcversion_id'];
-	  		  $children['step'][]=$value['step_id'];
-	  		}
-			$this->_execution_delete($id,$version_id,$children);
-			$this->_blind_delete($id,$version_id,$children);
-	  	}
-
-	
-		return 1;
-	}
-	
-	/*
-	  function: get_linked_versions
-	            For a test case get information about versions linked to testplans.
-	            Filters can be applied on:
-	                                      execution status
-	                                      active status
-	
-	  args : id: testcase id
-	         [exec_status]: default: ALL, range: ALL,EXECUTED,NOT_EXECUTED
-	         [active_status]: default: ALL, range: ALL,ACTIVE,INACTIVE
-	         [tplan_id]
-	
-	    returns: map.
-	           key: version id
-	           value: map with following structure:
-	                  key: testplan id
-	                  value: map with following structure:
-	
-	                  testcase_id
-	                  tcversion_id
-	                  id -> tcversion_id (node id)
-	                  version
-	                  summary
-	                  importance
-	                  author_id
-	                  creation_ts
-	                  updater_id
-	                  modification_ts
-	                  active
-	                  is_open
-	                  testplan_id
-	                  tplan_name
-	*/
-	function get_linked_versions($id,$exec_status="ALL",$active_status='ALL',$tplan_id=null,$platform_id=null)
-	{
-		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
-	  	$active_filter='';
-	  	$active_status=strtoupper($active_status);
-		if($active_status !='ALL')
-		{
-		  $active_filter=' AND tcversions.active=' . $active_status=='ACTIVE' ? 1 : 0;
-	  	}
-	
-		switch ($exec_status)
-		{
-			case "ALL":
-		        $sql = "/* $debugMsg */ " . 	    
-				       " SELECT NH.parent_id AS testcase_id, NH.id AS tcversion_id, " .
-					   " tcversions.*, TTC.testplan_id, TTC.tcversion_id, TTC.platform_id," . 
-					   " NHB.name AS tplan_name " .
-					   " FROM   {$this->tables['nodes_hierarchy']} NH," .
-					   " {$this->tables['tcversions']} tcversions," .
-					   " {$this->tables['testplan_tcversions']} TTC, " .
-					   " {$this->tables['nodes_hierarchy']} NHB    " .
-					   " WHERE  TTC.tcversion_id = tcversions.id {$active_filter} " .
-					   " AND    tcversions.id = NH.id " . 
-					   " AND    NHB.id = TTC.testplan_id " .
-					   " AND    NH.parent_id = {$id}";
-						    
-	      		if(!is_null($tplan_id))
-	      		{
-	      		    $sql .= " AND TTC.testplan_id = {$tplan_id} ";  
-	      		}  					    
-	      		
-	      		// 20100308 - franciscom
-	      		if(!is_null($platform_id))
-	      		{
-	      		    $sql .= " AND TTC.platform_id = {$platform_id} ";  
-	      		}  					    
-	      		
-	        	$recordset = $this->db->fetchMapRowsIntoMap($sql,'tcversion_id','testplan_id',database::CUMULATIVE);
-				// 20100330 - eloff - BUGID 3329
-				if( !is_null($recordset) )
-				{
-					// changes third access key from sequential index to platform_id
-					foreach ($recordset as $accessKey => $testplan)
-					{
-						foreach ($testplan as $tplanKey => $testcases)
-						{
-							// Use a temporary array to avoid key collisions
-							$newArray = array();
-							foreach ($testcases as $elemKey => $element)
-							{
-								$platform_id = $element['platform_id'];
-								$newArray[$platform_id] = $element;
-							}
-							$recordset[$accessKey][$tplanKey] = $newArray;
-					    }
-					}
-				}	
-		  break;
-	
-	     case "EXECUTED":
-		      $recordset=$this->get_exec_status($id,$exec_status,$active_status,$tplan_id,$platform_id);
-		  break;
-	
-		  case "NOT_EXECUTED":
-		      $recordset=$this->get_exec_status($id,$exec_status,$active_status,$tplan_id,$platform_id);
-	      break;
-	  }
-
-	  // Multiple Test Case Steps
-		if( !is_null($recordset) )
-		{
-			$version2loop = array_keys($recordset);
-			foreach( $version2loop as $accessKey)
-			{	
-				$step_set = $this->get_steps($accessKey);
-				$tplan2loop = array_keys($recordset[$accessKey]);
-				foreach( $tplan2loop as $tplanKey)
-				{	
-					$elem2loop = array_keys($recordset[$accessKey][$tplanKey]);
-					foreach( $elem2loop as $elemKey)
-					{	
-						$recordset[$accessKey][$tplanKey][$elemKey]['steps'] = $step_set;
-					}
-				}
-				
-			} 
-		}
-	    
-	  return $recordset;
-	}
-	
-	/*
-		Delete the following info:
-		req_coverage
-		risk_assignment
-		custom fields
-		keywords
-		links to test plans
-		tcversions
-		nodes from hierarchy
-	
-		rev:
-			 20100825 - BUGID 3702 
-		     20070602 - franciscom - delete attachments
-	*/
-	function _blind_delete($id,$version_id=self::ALL_VERSIONS,$children=null)
-	{
-		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
-	    $sql = array();
-
-		$destroyTC = false;
-	    $item_id = $version_id;
-		$tcversion_list = $version_id;
-	   	$target_nodes = $version_id;
-	    if( $version_id == self::ALL_VERSIONS)
-	    {
-	    	$destroyTC = true;
-	        $item_id = $id;
-		    $tcversion_list=implode(',',$children['tcversion']);
-	   	 	$target_nodes = $children['tcversion'];
-	    }
-
-	    // BUGID 3431
-	    $this->cfield_mgr->remove_all_design_values_from_node($target_nodes);
-
-		// BUGID 3465: Delete Test Project - User Execution Assignment is not deleted
-		// BUGID 3573: MySQL does not like ALIAS
-		$sql[]="/* $debugMsg */ DELETE FROM {$this->tables['user_assignments']} " .
-			   " WHERE feature_id in (" .
-			   " SELECT id FROM {$this->tables['testplan_tcversions']}  " .
-		       " WHERE tcversion_id IN ({$tcversion_list}))";
-		
-		$sql[]="/* $debugMsg */ DELETE FROM {$this->tables['testplan_tcversions']}  " .
-		       " WHERE tcversion_id IN ({$tcversion_list})";
-	
-		// Multiple Test Case Steps Feature
-		
-		// BUGID 3702
-		if( !is_null($children['step']) )
-		{
-			// remove null elements
-			foreach($children['step'] as $key => $value)
-			{
-				if(is_null($value))
-				{
-					unset($children['step'][$key]);
-				}
-			}
-			
-	    	if( count($children['step']) > 0)
-	    	{ 
-				$step_list=trim(implode(',',$children['step']));
-	    		$sql[]="/* $debugMsg */ DELETE FROM {$this->tables['tcsteps']}  " .
-				       " WHERE id IN ({$step_list})";
-	    	}
-	    }
-	    $sql[]="/* $debugMsg */ DELETE FROM {$this->tables['tcversions']}  " .
-		       " WHERE id IN ({$tcversion_list})";
-
-	    foreach ($sql as $the_stm)
-	    {
-			$result = $this->db->exec_query($the_stm);
-	    }
-    
-	    if($destroyTC)
-	    {
-			// Remove data that is related to Test Case => must be deleted when there is no more trace
-			// of test case => when all version are deleted
-		    $sql = null;
-		    $sql[]="/* $debugMsg */ DELETE FROM {$this->tables['testcase_keywords']} WHERE testcase_id = {$id}";
-		    $sql[]="/* $debugMsg */ DELETE FROM {$this->tables['req_coverage']}  WHERE testcase_id = {$id}";
-
-	    	foreach ($sql as $the_stm)
-	    	{
-				  $result = $this->db->exec_query($the_stm);
-	    	}
-
-	        $this->deleteAttachments($id);
-	        // BUGID 3431
-	        // $this->cfield_mgr->remove_all_design_values_from_node($id);
-	    
-	    }
-	    
-	    // Attention:
-	    // After addition of test case steps feature, a test case version can be root of
-	    // a subtree that contains the steps.
-	    $this->tree_manager->delete_subtree($item_id);
-	}
-	
-	
-	/*
-	Delete the following info:
-		bugs
-		executions
-	  cfield_execution_values
-	*/
-	function _execution_delete($id,$version_id=self::ALL_VERSIONS,$children=null)
-	{
-		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
-		$sql = array();
-
-		if( $version_id	== self::ALL_VERSIONS )
-		{
-			$tcversion_list=implode(',',$children['tcversion']);
-			
-			$sql[]="/* $debugMsg */ DELETE FROM {$this->tables['execution_bugs']} " .
-		  		   " WHERE execution_id IN (SELECT id FROM {$this->tables['executions']} " .
-    		       " WHERE tcversion_id IN ({$tcversion_list}))";
-
-	      	$sql[]="/* $debugMsg */ DELETE FROM {$this->tables['cfield_execution_values']}  " .
-	      		   " WHERE tcversion_id IN ({$tcversion_list})";
-
-	      	$sql[]="/* $debugMsg */ DELETE FROM {$this->tables['executions']}  " .
-	      		   " WHERE tcversion_id IN ({$tcversion_list})";
-	
-	    }
-	    else
-	    {
-			$sql[]="/* $debugMsg */  DELETE FROM {$this->tables['execution_bugs']} " .
-	        	   " WHERE execution_id IN (SELECT id FROM {$this->tables['executions']} " .
-	               " WHERE tcversion_id = {$version_id})";
-	
-	        $sql[]="/* $debugMsg */ DELETE FROM {$this->tables['cfield_execution_values']} " .
-	        	   " WHERE tcversion_id = {$version_id}";
-	
-	        $sql[]="/* $debugMsg */ DELETE FROM {$this->tables['executions']} " .
-	        	   " WHERE tcversion_id = {$version_id}";
-	    }
-	
-	    foreach ($sql as $the_stm)
-	    {
-	    		$result = $this->db->exec_query($the_stm);
-	    }
-	}
-	
-	
-	/*
-	  function: formatTestCaseIdentity
-	
-	  args: id: testcase id
-	        external_id
-	
-	  returns: testproject id
-	
-	*/
-	function formatTestCaseIdentity($id,$external_id)
-	{
-	    $path2root=$this->tree_manager->get_path($tc_id);
-	    $tproject_id=$path2root[0]['parent_id'];
-	    $tcasePrefix=$this->tproject_mgr->getTestCasePrefix($tproject_id);
-	}
-	
-	
-	/*
-	  function: getPrefix
-	
-	  args: id: testcase id
-	        [$tproject_id]
-	
-	  returns: array(prefix,testproject id)
-	
-	*/
-	function getPrefix($id, $tproject_id=null)
-	{
-		$root = $tproject_id;
-		if( is_null($root) )
-		{
-	    	$path2root=$this->tree_manager->get_path($id);
-	    	$root=$path2root[0]['parent_id'];
-	    }
-	    $tcasePrefix=$this->tproject_mgr->getTestCasePrefix($root);
-	    return array($tcasePrefix,$root);
-	}
-	
-	
-	
-	
-	/*
-	  function: get_testproject
-	            Given a testcase id get node id of testproject to which testcase belongs.
-	  args :id: testcase id
-	
-	  returns: testproject id
-	  
-	
-	*/
-	function get_testproject($id)
-	{
-	  $a_path = $this->tree_manager->get_path($id);
-	  return ($a_path[0]['parent_id']);
-	}
-	
-	/*
-	20061008 - franciscom - added
-	                        [$check_duplicate_name]
-	                        [$action_on_duplicate_name]
-	
-	                        changed return type
-	
-		BUGID 3431
-	*/
-	function copy_to($id,$parent_id,$user_id,$options=null,$mappings=null)
-	{
-	    $newTCObj = array('id' => -1, 'status_ok' => 0, 'msg' => 'ok', 'mappings' => null);
-	    $my['options'] = array( 'check_duplicate_name' => self::DONT_CHECK_DUPLICATE_NAME,
-	                            'action_on_duplicate_name' => 'generate_new', 'copy_also' => null);
-
-        // needed when Test Case is copied to a DIFFERENT Test Project,
-        // added during Test Project COPY Feature implementation
-        $my['mappings']['keywords'] = null;
-        $my['mappings']['requirements'] = null;
-
-	    $my['mappings'] = array_merge($my['mappings'], (array)$mappings);
-	    $my['options'] = array_merge($my['options'], (array)$options);
-	
-	
-	    if( is_null($my['options']['copy_also']) )
-	    {
-	        $my['options']['copy_also'] = array('keyword_assignments' => true,'requirement_assignments' => true);   
-	    }
-	    
-		$tcase_info = $this->get_by_id($id);
-		if ($tcase_info)
-		{
-			$newTCObj = $this->create_tcase_only($parent_id,$tcase_info[0]['name'],
-			                                     $tcase_info[0]['node_order'],self::AUTOMATIC_ID,
-	                                             $my['options']);
-			if($newTCObj['status_ok'])
-			{
-		        $ret['status_ok']=1;
-		        $newTCObj['mappings'][$id] = $newTCObj['id'];
-		        
-	 			foreach($tcase_info as $tcversion)
-				{
-					
-					// 20100221 - franciscom - 
-					// IMPORTANT NOTICE:
-					// In order to implement COPY to another test project, WE CAN NOT ASK
-					// to method create_tcversion() to create inside itself THE STEPS.
-					// Passing NULL as steps we instruct create_tcversion() TO DO NOT CREATE STEPS
-					// 
-					$op = $this->create_tcversion($newTCObj['id'],$newTCObj['external_id'],$tcversion['version'],
-					                              $tcversion['summary'],$tcversion['preconditions'],null,
-					                              $tcversion['author_id'],$tcversion['execution_type'],$tcversion['importance']);
-					
-	    			if( $op['status_ok'] )
-	    			{
-	    				$newTCObj['mappings'][$tcversion['id']] = $op['id'];
-
-						// ATTENTION:  NEED TO UNDERSTAND HOW TO MANAGE COPY TO OTHER TEST PROJECTS
-						// 
-						// BUGID 3431
-						$this->copy_cfields_design_values(array('id' => $id, 'tcversion_id' => $tcversion['id']),
-						  								  array('id' => $newTCObj['id'], 'tcversion_id' => $op['id']));
-
-	    				
-	    				// Need to get all steps
-	    				$stepsSet = $this->get_steps($tcversion['id']);
-	    				$to_tcversion_id = $op['id'];
-	    				if( !is_null($stepsSet) )
-	    				{
-	    					foreach($stepsSet as $key => $step)
-	    					{
-        						$op = $this->create_step($to_tcversion_id,$step['step_number'],$step['actions'],
-        						                         $step['expected_results'],$step['execution_type']);			
-	    					}
-	    				}
-					}                       
-				}
-				
-				// Conditional copies
-				if( isset($my['options']['copy_also']['keyword_assignments']) && 
-				    $my['options']['copy_also']['keyword_assignments'])
-				{
-					$this->copyKeywordsTo($id,$newTCObj['id'],$my['mappings']['keywords']);
-				}
-				
-				if (isset($my['options']['copy_also']['requirement_assignments']) && 
-				    $my['options']['copy_also']['requirement_assignments'])
-				{
-					$this->copyReqAssignmentTo($id,$newTCObj['id'],$my['mappings']['requirements']);
-				}
-				
-				// BUGID 3431 
-				// $this->copy_cfields_design_values($id,$newTCObj['id']);
-				// $this->copy_cfields_design_values(array('id' => $id, 'tcversion_id' =>),
-				// 								  array('id' => $newTCObj['id'],));
-	            
-	            $this->copy_attachments($id,$newTCObj['id']);
-			}
-		}
-		return($newTCObj);
-	}
-	
-	
-	/*
-	  function: create_new_version()
-	            create a new test case version, 
-	            doing a copy of source test case version
-	            
-	
-	  args : $id: testcase id
-	         $user_id: who is doing this operation.
-	         [$source_version_id]: default null -> source is LATEST TCVERSION 
-	
-	  returns:
-	          map:  id: node id of created tcversion
-	                version: version number (i.e. 5)
-	                msg
-	
-	  rev : 20070701 - franciscom - added version key on return map.
-	*/
-	// BUGID 3431
-	function create_new_version($id,$user_id,$source_version_id=null, $options=null)
-	{
-	  $tcversion_id = $this->tree_manager->new_node($id,$this->node_types_descr_id['testcase_version']);
-	
-	  // get last version for this test case (need to get new version number)
-	  $last_version_info =  $this->get_last_version_info($id, array('output' => 'minimun'));
-	  $from = $source_version_id;
-	  if( is_null($source_version_id) || $source_version_id <= 0)
-	  {
-	  	$from = $last_version_info['id'];
-	  }
-	  $this->copy_tcversion($id,$from,$tcversion_id,$last_version_info['version']+1,$user_id);
-	
-	  $ret['id'] = $tcversion_id;
-	  $ret['version'] = $last_version_info['version']+1;
-	  $ret['msg'] = 'ok';
-	  return $ret;
-	}
-	
-	
-	
-	/*
-	  function: get_last_version_info
-	            Get information about last version (greater number) of a testcase.
-	
-	  args : id: testcase id
-	         [options]
-	
-	  returns: map with keys  that depends of options['output']:
-	
-		  			 id -> tcversion_id
-					   version
-					   summary
-					   importance
-					   author_id
-					   creation_ts
-					   updater_id
-					   modification_ts
-					   active
-					   is_open
-	
-	*/
-	function get_last_version_info($id,$options=null)
-	{
-		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
-	    $my['options'] = array( 'get_steps' => false, 'output' => 'full');
-	    $my['options'] = array_merge($my['options'], (array)$options);
-		$tcInfo = null;
-		switch($my['options']['output'])
-		{
-			case 'minimun':
-			default:
-				$fields2get = " TCV.id, TCV.version, TCV.tc_external_id ";
-			break;		
-
-			case 'full':
-			default:
-				$fields2get = " TCV.* ";
-			break;		
-		}
-		
-		
-		$sql = "/* $debugMsg */ SELECT MAX(version) AS version " .
-		       " FROM {$this->tables['tcversions']} TCV," .
-		       " {$this->tables['nodes_hierarchy']} NH WHERE ".
-		       " NH.id = TCV.id ".
-		       " AND NH.parent_id = {$id} ";
-	
-		$max_version = $this->db->fetchFirstRowSingleColumn($sql,'version');
-	
-		$tcInfo = null;
-		if ($max_version)
-		{
-			$sql = "SELECT {$fields2get}  FROM {$this->tables['tcversions']} TCV," .
-			       " {$this->tables['nodes_hierarchy']} NH ".
-			       " WHERE TCV.version = {$max_version} AND NH.id = TCV.id".
-				   " AND NH.parent_id = {$id}";
-	
-			$tcInfo = $this->db->fetchFirstRow($sql);
-		}
-
-		// Multiple Test Case Steps Feature
-	    if( !is_null($tcInfo) && $my['options']['get_steps'] )
-	    {
-    		$step_set = $this->get_steps($tcInfo['id']);
-    		$tcInfo['steps'] = $step_set;
-	    }
-		return $tcInfo;
-	}
-	
-	
-	/*
-	  function: copy_tcversion
-	
-	  args:
-	
-	  returns:
-	
-	  rev: 
-	  		20100521 - franciscom - BUGID 3481 - preconditions are not copied
-	  		20080119 - franciscom - tc_external_id management
-	
-	*/
-	// // BUGID 3431
-	function copy_tcversion($id,$from_tcversion_id,$to_tcversion_id,$as_version_number,$user_id)
-	{
-		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
-	    $now = $this->db->db_now();
-	    $sql="/* $debugMsg */ " . 
-	         " INSERT INTO {$this->tables['tcversions']} " . 
-	         " (id,version,tc_external_id,author_id,creation_ts,summary, " . 
-	         "  importance,execution_type,preconditions) " .
-	         " SELECT {$to_tcversion_id} AS id, {$as_version_number} AS version, " .
-	         "        tc_external_id, " .
-	         "        {$user_id} AS author_id, {$now} AS creation_ts," .
-	         "        summary,importance,execution_type, preconditions" .
-	         " FROM {$this->tables['tcversions']} " .
-	         " WHERE id={$from_tcversion_id} ";
-		$result = $this->db->exec_query($sql);	
-	   
-	    // BUGID 3431
-	    // copy custom fields values JUST DESIGN AREA
-	    $this->copy_cfields_design_values(array('id' => $id, 'tcversion_id' => $from_tcversion_id),
-						  				  array('id' => $id, 'tcversion_id' => $to_tcversion_id));
-    
-	    
-	    // Need to get all steps
-	    $stepsSet = $this->get_steps($from_tcversion_id);
-		if( !is_null($stepsSet) && count($stepsSet) > 0)
-		{
-	    	foreach($stepsSet as $key => $step)
-	    	{
-        		$op = $this->create_step($to_tcversion_id,$step['step_number'],$step['actions'],
-        		                         $step['expected_results'],$step['execution_type']);			
-	    	}
-	    }
-	}
-	
-	
-	/*
-	  function: get_by_id_bulk
-	
-	            IMPORTANT CONSIDERATION: 
-	            how may elements can be used in an SQL IN CLAUSE?
-	            Think there is a limit ( on MSSQL 1000 ?)
-	                                      
-	  args :
-	
-	  returns:
-	
-	*/
-	function get_by_id_bulk($id,$version_id=self::ALL_VERSIONS, $get_active=0, $get_open=0)
-	{
-		$debugMsg = 'Class:' . __CLASS__ . ' - Method: ' . __FUNCTION__;
-		$where_clause="";
-		$where_clause_names="";
-		$tcid_list ="";
-		$tcversion_id_filter="";
-		$sql = "";
-		$the_names = null;
-		if( is_array($id) )
-		{
-			$tcid_list = implode(",",$id);
-			$where_clause = " WHERE nodes_hierarchy.parent_id IN ($tcid_list) ";
-			$where_clause_names = " WHERE nodes_hierarchy.id IN ($tcid_list) ";
-		}
-		else
-		{
-			$where_clause = " WHERE nodes_hierarchy.parent_id = {$id} ";
-			$where_clause_names = " WHERE nodes_hierarchy.id = {$id} ";
-		}
-	  	if( $version_id != self::ALL_VERSIONS )
-	  	{
-	  	    $tcversion_id_filter=" AND tcversions.id IN (" . implode(",",(array)$version_id) . ") ";
-	  	}
-	
-		$sql = " /* $debugMsg */ SELECT nodes_hierarchy.parent_id AS testcase