diff --git a/Dockerfile b/Dockerfile
index c10a1a693b..c5a2c3d6a5 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -8,3 +8,8 @@ RUN /etc/init.d/mysql 'start'
WORKDIR /var/www/public
COPY . ./
+
+RUN mkdir /var/testlink/logs -p &&\
+ mkdir /var/testlink/upload_area -p &&\
+ chmod a+rw /var/www/public/gui/templates_c &&\
+ chmod a+rw /var/testlink -R
diff --git a/config.inc.php b/config.inc.php
index aa2cc70d27..ba8d29cea1 100644
--- a/config.inc.php
+++ b/config.inc.php
@@ -1081,6 +1081,12 @@
// 'latest' => latest execution notes.
$tlCfg->exec_cfg->steps_exec_status_default = 'empty';
+/**
+ * Concatenate execution steps note in the execution notes (the later is attached to the test run)
+ **/
+
+$tlCfg->exec_cfg->steps_notes_concat = false;
+
// Parameters to show notes/details when entering test execution feature
// EXPAND: show expanded/open
// COLLAPSE: show collapsed/closede
diff --git a/gui/javascript/execSetResults.js b/gui/javascript/execSetResults.js
index b7a4f55585..307c611d72 100644
--- a/gui/javascript/execSetResults.js
+++ b/gui/javascript/execSetResults.js
@@ -23,25 +23,48 @@ function doSubmitForHTML5() {
/**
* Submit Executions status.
* Used
- *
+ * @param tcvID int test case id
+ * @param status test status
+ * @param notesConcat concatenate step note in exec notes
+ * @param goNext open next test case
+ *
*/
-function saveExecStatus(tcvID, status, msg, goNext) {
-
+function saveExecStatus(tcvID, status, notesConcat, goNext) {
/* Init */
jQuery('#save_and_next').val(0);
- jQuery('#save_results').val(0);
- jQuery('#save_partial_steps_exec').val(0);
+ jQuery('#save_results').val(0);
+ jQuery('#save_partial_steps_exec').val(0);
jQuery('#save_button_clicked').val(tcvID);
jQuery('#statusSingle_' + tcvID).val(status);
+ if(notesConcat == true){
+ // Get all steps status
+ var myRegexp = /step_row_(\d+)/g;
+ var stepresult = document.querySelectorAll('[id^=step_row_]');
+ var tcNotes = document.getElementById('notes['+tcvID+']');
+ stepresult.forEach(function(item){
+ match = myRegexp.exec(item.id);
+ myRegexp.lastIndex = 0;
+ stepNum = document.getElementById('tcstep_'+match[1]);
+ var row = stepNum.innerHTML;
+ var note = '';
+ var statusTc = ''
+ if ( item.getElementsByClassName('step_status').length > 0 )
+ statusTc = item.getElementsByClassName('step_status')[0].value;
+ if ( item.getElementsByClassName('step_note_textarea').length > 0 )
+ note = item.getElementsByClassName('step_note_textarea')[0].value;
+ if (statusTc == 'f' ||statusTc == 'b' || note != ''){
+ tcNotes.value = tcNotes.value + '\nStep '+ row + ' ('+ statusTc+'):' + note ;
+ }
+ })
+ }
if( goNext == undefined || goNext == 0 ) {
- jQuery('#save_results').val(1);
+ jQuery('#save_results').val(1);
} else {
- if( goNext == 1 ) {
- jQuery('#save_and_next').val(1);
- }
+ if( goNext == 1 ) {
+ jQuery('#save_and_next').val(1);
+ }
}
-
doSubmitForHTML5();
}
@@ -152,4 +175,4 @@ function checkSubmitForStatusCombo(oid,statusCode2block) {
saveStepsPartialExecClicked = false;
$("#saveStepsPartialExec").click(function() {
saveStepsPartialExecClicked = true;
-});
\ No newline at end of file
+});
diff --git a/gui/templates/tl-classic/execute/inc_exec_img_controls.tpl b/gui/templates/tl-classic/execute/inc_exec_img_controls.tpl
index 553d62c757..aed72cfdfb 100644
--- a/gui/templates/tl-classic/execute/inc_exec_img_controls.tpl
+++ b/gui/templates/tl-classic/execute/inc_exec_img_controls.tpl
@@ -109,7 +109,7 @@ Author : franciscom
+ onclick="javascript:saveExecStatus({$tcvID},'{$kode}',{$tlCfg->exec_cfg->steps_notes_concat});">
{/foreach}
@@ -121,7 +121,7 @@ Author : franciscom
+ onclick="javascript:saveExecStatus({$tcvID},'{$kode}',{$tlCfg->exec_cfg->steps_notes_concat},1);">
{/foreach}
diff --git a/gui/templates/tl-classic/requirements/reqTcAssign.tpl b/gui/templates/tl-classic/requirements/reqTcAssign.tpl
index a9fb0e1011..266cb352dd 100644
--- a/gui/templates/tl-classic/requirements/reqTcAssign.tpl
+++ b/gui/templates/tl-classic/requirements/reqTcAssign.tpl
@@ -58,8 +58,6 @@ function refreshAndClose(tcase_id,callback) {
{$msgReqLinkingEnabled = $labels.reqLinkingDisabledAfterExec}
{/if}
-
-
{$labels.req_spec} -
{if $gui->showCloseButton} {/if} + + -