This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "FusionForge".

The branch, master has been updated
       via  886fae9d10ad0fb36f327f862f3286eb89cf419b (commit)
      from  9fdbeb4a2316a337c217efbcfd7158115be3a727 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=886fae9d10ad0fb36f327f862f3286eb89cf419b

commit 886fae9d10ad0fb36f327f862f3286eb89cf419b
Author: Stéphane-Eymeric Bredthauer <[email protected]>
Date:   Thu Feb 2 09:28:31 2017 +0100

    Tracker: Formula fix 1

diff --git a/src/common/tracker/actions/ajax.php 
b/src/common/tracker/actions/ajax.php
index b916e4c..db4b48b 100644
--- a/src/common/tracker/actions/ajax.php
+++ b/src/common/tracker/actions/ajax.php
@@ -57,31 +57,43 @@ function get_canned_response($id) {
 }
 
 function get_formulas_results($group, $atid, $extra_fields=array()){
-       $ret = array('messages' => '');
+       $ret = array('message' => '');
        $at = new ArtifactType($group, $atid);
        if (!$at || !is_object($at)) {
-               $ret['messages'] = _('ArtifactType could not be created');
+               $ret['message'] = _('ArtifactType could not be created');
                return json_encode($ret);
                exit();
        }
        if ($at->isError()) {
-               $ret['messages'] = $at->getErrorMessage();
+               $ret['message'] = $at->getErrorMessage();
                return json_encode($ret);
                exit();
        }
 
        $expr = new Expression();
+       $expr->suppress_errors = true;
 
        // Variable assignment
        $extraFields = $at->getExtraFields();
        foreach ($extraFields as $extraField) {
                if (isset($extra_fields[$extraField['extra_field_id']])) {
+                       $varAss = false;
                        if 
($extraField['field_type']==ARTIFACT_EXTRAFIELDTYPE_INTEGER) {
                                $varAss = 
$extraField['alias'].'='.$extra_fields[$extraField['extra_field_id']];
-                               $expr->evaluate($varAss);
                        } elseif 
($extraField['field_type']==ARTIFACT_EXTRAFIELDTYPE_TEXT) {
                                $varAss = 
$extraField['alias'].'="'.$extra_fields[$extraField['extra_field_id']].'"';
+                       } elseif 
($extraField['field_type']==ARTIFACT_EXTRAFIELDTYPE_SELECT) {
+                               $ef = new ArtifactExtraField($at, 
$extraField['extra_field_id']);
+                               $efe = new 
ArtifactExtraFieldElement($ef,$extra_fields[$extraField['extra_field_id']] );
+                               $varAss =  
$extraField['alias'].'="'.$efe->getName().'"';
+                       }
+                       if ($varAss) {
                                $expr->evaluate($varAss);
+                               if ($expr->last_error) {
+                                       $ret['message'] = $expr->last_error;
+                                       return json_encode($ret);
+                                       exit();
+                               }
                        }
                }
        }
@@ -91,35 +103,47 @@ function get_formulas_results($group, $atid, 
$extra_fields=array()){
        foreach ($extraFields as $extraField) {
                $ef = new ArtifactExtraField($at,$extraField['extra_field_id']);
                if (!$ef || !is_object($ef)) {
-                       $ret['messages'] = _('ArtifactExtraField could not be 
created');
+                       $ret['message'] = _('ArtifactExtraField could not be 
created');
                        return json_encode($ret);
                        exit();
                }
                if ($ef->isError()) {
-                       $ret['messages'] = $ef->getErrorMessage();
+                       $ret['message'] = $ef->getErrorMessage();
                        return json_encode($ret);
                        exit();
                }
                $formula = $ef->getFormula();
-               if (in_array($extraField['field_type'], 
unserialize(ARTIFACT_EXTRAFIELDTYPEGROUP_VALUE))) {
-                       if (!empty($formula)) {
-                               $value = $expr->evaluate($formula);
-                               $result [] = array( 
'id'=>$extraField['extra_field_id'], 'value'=>$value, 
'error'=>$expr->last_error );
-                       }
-               } elseif (in_array($extraField['field_type'], 
unserialize(ARTIFACT_EXTRAFIELDTYPEGROUP_CHOICE))) {
-                       if (is_array($formula)) {
-                               $formulas = $formula;
-                               $valueArr = array();
-                               foreach ($formulas as $key=>$formula) {
+               if ($formula) {
+                       if (in_array($extraField['field_type'], 
unserialize(ARTIFACT_EXTRAFIELDTYPEGROUP_VALUE))) {
+                               if (!empty($formula)) {
                                        $value = $expr->evaluate($formula);
-                                       if ($value) {
-                                               $valueArr[]=$key;
-                                               if 
(in_array($extraField['field_type'], 
unserialize(ARTIFACT_EXTRAFIELDTYPEGROUP_SINGLECHOICE))) {
-                                                       breack;
+                                       if ($expr->last_error) {
+                                               $ret['message'] = 
$expr->last_error;
+                                               return json_encode($ret);
+                                               exit();
+                                       }
+                                       $result [] = array( 
'id'=>$extraField['extra_field_id'], 'value'=>$value, 
'error'=>$expr->last_error );
+                               }
+                       } elseif (in_array($extraField['field_type'], 
unserialize(ARTIFACT_EXTRAFIELDTYPEGROUP_CHOICE))) {
+                               if (is_array($formula)) {
+                                       $formulas = $formula;
+                                       $valueArr = array();
+                                       foreach ($formulas as $key=>$formula) {
+                                               $value = 
$expr->evaluate($formula);
+                                               if ($expr->last_error) {
+                                                       $ret['message'] = 
$expr->last_error;
+                                                       return 
json_encode($ret);
+                                                       exit();
+                                               }
+                                               if ($value) {
+                                                       $valueArr[]=$key;
+                                                       if 
(in_array($extraField['field_type'], 
unserialize(ARTIFACT_EXTRAFIELDTYPEGROUP_SINGLECHOICE))) {
+                                                               break;
+                                                       }
                                                }
                                        }
+                                       $result [] = array( 
'id'=>$extraField['extra_field_id'], 'value'=>$valueArr, 
'error'=>$expr->last_error);
                                }
-                               $result [] = array( 
'id'=>$extraField['extra_field_id'], 'value'=>$valueArr, 
'error'=>$expr->last_error);
                        }
                }
        }
diff --git a/src/common/tracker/include/ArtifactTypeHtml.class.php 
b/src/common/tracker/include/ArtifactTypeHtml.class.php
index c7705a3..b99ff6b 100644
--- a/src/common/tracker/include/ArtifactTypeHtml.class.php
+++ b/src/common/tracker/include/ArtifactTypeHtml.class.php
@@ -1350,6 +1350,9 @@ class ArtifactTypeHtml extends ArtifactType {
        var groupId =".$this->Group->getID().";
        var atId = ".$this->getID().";";
                $javascript = <<<'EOS'
+       function showMessage( msg_text, msg_class) {
+               $("div#maindiv h1").append($("<p>", { "class": msg_class 
}).html( msg_text )).show();
+       };
        $.expr[':'].invalid = function(elem, index, match) {
                for (let invalid of document.querySelectorAll(':invalid') )  {
                        if (elem === invalid) { return true; }
@@ -1382,6 +1385,9 @@ class ArtifactTypeHtml extends ArtifactType {
                                }
                                fields = answer['fields'];
                                $.each(fields, function (index, field) {
+                                       if (field.error!=null){
+                                               showMessage(field.error, 
'error');
+                                       }
                                        fieldObj = 
$("[name^='extra_fields["+field.id+"]']");
                                        if 
(fieldObj.is("input[type='checkbox']")){
                                                fieldObj.each(function() {

-----------------------------------------------------------------------

Summary of changes:
 src/common/tracker/actions/ajax.php                | 66 +++++++++++++++-------
 .../tracker/include/ArtifactTypeHtml.class.php     |  6 ++
 2 files changed, 51 insertions(+), 21 deletions(-)


hooks/post-receive
-- 
FusionForge

_______________________________________________
Fusionforge-commits mailing list
[email protected]
http://lists.fusionforge.org/cgi-bin/mailman/listinfo/fusionforge-commits

Reply via email to