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  565ad9f70ef3d78eb311ddc44f57db11e8eaa8bf (commit)
       via  1aff208d96e3b4a374632dbd8a449cec6fc3bb6c (commit)
      from  12d8b01f07383926182f88855290f5afe4680af4 (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=565ad9f70ef3d78eb311ddc44f57db11e8eaa8bf

commit 565ad9f70ef3d78eb311ddc44f57db11e8eaa8bf
Author: Stéphane-Eymeric Bredthauer <[email protected]>
Date:   Thu Mar 9 17:29:29 2017 +0100

    Tracker: formula improvement 2 Fix 2

diff --git a/src/common/tracker/Artifact.class.php 
b/src/common/tracker/Artifact.class.php
index 527eda3..d0c70b6 100644
--- a/src/common/tracker/Artifact.class.php
+++ b/src/common/tracker/Artifact.class.php
@@ -1629,7 +1629,7 @@ class Artifact extends FFObject {
                                $type=$ef[$efid]['field_type'];
                                //special treatment for DATETIME
                                if ($type == ARTIFACT_EXTRAFIELDTYPE_DATETIME 
&& $extra_fields[$efid]!='' ) {
-                                       $dateTime = 
DateTime::createFromFormat('Y-m-d H:i', $extra_fields[$efid]);
+                                       $dateTime = 
DateTime::createFromFormat(_('Y-m-d H:i'), $extra_fields[$efid]);
                                        $extra_fields[$efid] = 
$dateTime->format('U');
                                }
                                //determine the type of field and whether it 
should have multiple rows supporting it

https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=1aff208d96e3b4a374632dbd8a449cec6fc3bb6c

commit 1aff208d96e3b4a374632dbd8a449cec6fc3bb6c
Author: Stéphane-Eymeric Bredthauer <[email protected]>
Date:   Thu Mar 9 17:29:05 2017 +0100

    Tracker: formula improvement 2 Fix 2

diff --git a/src/common/tracker/ArtifactExpression.class.php 
b/src/common/tracker/ArtifactExpression.class.php
index 4f348ef..423f437 100644
--- a/src/common/tracker/ArtifactExpression.class.php
+++ b/src/common/tracker/ArtifactExpression.class.php
@@ -61,11 +61,12 @@ class ArtifactExpression extends FFError {
        public function __construct()
        {
                $this->functionsDescription = array('in_array'=>_('Test if a 
value is in an (json) array'));
-
+               $this->functionsDescription = array('datetime_add'=>_('Add to a 
date/time a duration (duration in ISO 8601 Format)'));
                $this->expression = new Expression;
                $this->expression->suppress_errors = true;
                $this->expression->fb = array();
                $this->expression->functions ['in_array'] = 'expr_in_array';
+               $this->expression->functions ['datetime_add'] = 
'expr_datetime_add';
        }
 
        public function evaluate($expression) {
@@ -110,8 +111,28 @@ class ArtifactExpression extends FFError {
        public function getFunctionDescription($function) {
                return $this->functionsDescription[$function];
        }
+
+       public function setConstant($name,$value) {
+               $return = null;
+               $this->clearError();
+               if (is_integer($value)) {
+                       $expression = $name.'='.$value;
+               } else {
+                       $expression = $name.'=\''.$value.'\'';
+               }
+               $result = $this->expression->evaluate($expression);
+               $result = $this->vb[] = $name;
+       }
 }
+
 function expr_in_array($value, $jsonArray) {
        $array = json_decode($jsonArray, true);
        return in_array($value, $array);
 }
+
+function expr_datetime_add($datetime, $interval) {
+       $dateTimeObj = DateTime::createFromFormat(_('Y-m-d H:i'), $datetime);
+       $intervalObj = new DateInterval($interval);
+       $dateTimeObj->add($intervalObj);
+       return $dateTimeObj->format(_('Y-m-d H:i'));
+}
diff --git a/src/common/tracker/actions/ajax.php 
b/src/common/tracker/actions/ajax.php
index 38c8952..5311762 100644
--- a/src/common/tracker/actions/ajax.php
+++ b/src/common/tracker/actions/ajax.php
@@ -38,7 +38,12 @@ switch ($function) {
                break;
        case 'get_formulas_results':
                $extra_fields = getArrayFromRequest('extra_fields');
-               echo get_formulas_results($group, $atid, $extra_fields);
+               $status = getStringFromRequest('status');
+               $assigned_to = getStringFromRequest('assigned_to');
+               $priority = getStringFromRequest('priority');
+               $summary = getStringFromRequest('summary');
+               $description = getStringFromRequest('description');
+               echo get_formulas_results($group, $atid, $extra_fields, 
$status, $assigned_to, $priority, $summary, $description);
                break;
        default:
                echo '';
@@ -56,7 +61,7 @@ function get_canned_response($id) {
        }
 }
 
-function get_formulas_results($group, $atid, $extra_fields=array()){
+function get_formulas_results($group, $atid, $extra_fields=array(), 
$status='', $assigned_to='', $priority=0, $summary='', $description=''){
        $ret = array('message' => '');
        $at = new ArtifactType($group, $atid);
        if (!$at || !is_object($at)) {
@@ -72,22 +77,57 @@ function get_formulas_results($group, $atid, 
$extra_fields=array()){
 
        $expr = new ArtifactExpression();
 
-       // Variable assignment
+       // Constants assignment
+       // Internal Fields
+       if (!$at->usesCustomStatuses()) {
+               $expr->setConstant('status', $status);
+               if ($expr->isError()) {
+                       $ret['message'] = $expr->getErrorMessage()._(':').' 
status=\''.$status.'\'';
+                       return json_encode($ret);
+                       exit();
+               }
+       }
+       $expr->setConstant('assigned_to', $assigned_to);
+       if ($expr->isError()) {
+               $ret['message'] = $expr->getErrorMessage()._(':').' 
assigned_to=\''.$assigned_to.'\'';
+               return json_encode($ret);
+               exit();
+       }
+       $expr->setConstant('priority', $priority);
+       if ($expr->isError()) {
+               $ret['message'] = $expr->getErrorMessage()._(':').' 
priority=\''.$priority.'\'';
+               return json_encode($ret);
+               exit();
+       }
+       $expr->setConstant('summary', $summary);
+       if ($expr->isError()) {
+               $ret['message'] = $expr->getErrorMessage()._(':').' 
summary=\''.$summary.'\'';
+               return json_encode($ret);
+               exit();
+       }
+       $expr->setConstant('description', $description);
+       if ($expr->isError()) {
+               $ret['message'] = $expr->getErrorMessage()._(':').' 
description=\''.$description.'\'';
+               return json_encode($ret);
+               exit();
+       }
+       // Extra Fields
        $extraFields = $at->getExtraFields();
        foreach ($extraFields as $extraField) {
                if (isset($extra_fields[$extraField['extra_field_id']])) {
-                       $varAss = false;
+                       $value = '';
                        $type = $extraField['field_type'];
                        if ($type==ARTIFACT_EXTRAFIELDTYPE_INTEGER) {
-                               $varAss = 
$extraField['alias'].'='.$extra_fields[$extraField['extra_field_id']];
+                               $value = 
(integer)$extra_fields[$extraField['extra_field_id']];
                        } elseif ($type==ARTIFACT_EXTRAFIELDTYPE_TEXT ||
                                        $type==ARTIFACT_EXTRAFIELDTYPE_TEXTAREA 
||
-                                       
$type==ARTIFACT_EXTRAFIELDTYPE_RELATION) {
-                               $varAss = 
$extraField['alias'].'="'.addslashes($extra_fields[$extraField['extra_field_id']]).'"';
+                                       $type==ARTIFACT_EXTRAFIELDTYPE_RELATION 
||
+                                       
$type==ARTIFACT_EXTRAFIELDTYPE_DATETIME) {
+                               $value = 
addslashes($extra_fields[$extraField['extra_field_id']]);
                        } elseif (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPEGROUP_SINGLECHOICE))) {
                                $ef = new ArtifactExtraField($at, 
$extraField['extra_field_id']);
                                $efe = new 
ArtifactExtraFieldElement($ef,$extra_fields[$extraField['extra_field_id']] );
-                               $varAss =  
$extraField['alias'].'="'.addslashes($efe->getName()).'"';
+                               $value = addslashes($efe->getName());
                        } elseif (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPEGROUP_MULTICHOICE))) {
                                $var = array();
                                $ef = new ArtifactExtraField($at, 
$extraField['extra_field_id']);
@@ -95,15 +135,13 @@ function get_formulas_results($group, $atid, 
$extra_fields=array()){
                                        $efe = new 
ArtifactExtraFieldElement($ef,$element_id);
                                        $var[]=  $efe->getName();
                                }
-                               $varAss =  $extraField['alias'].'=\''. 
json_encode($var).'\'';
+                               $value = json_encode($var);
                        }
-                       if ($varAss) {
-                               $expr->evaluate($varAss);
-                               if ($expr->isError()) {
-                                       $ret['message'] = 
$expr->getErrorMessage()._(':').' '.$varAss;
-                                       return json_encode($ret);
-                                       exit();
-                               }
+                       $expr->setConstant($extraField['alias'], $value);
+                       if ($expr->isError()) {
+                               $ret['message'] = 
$expr->getErrorMessage()._(':').' 
'.$extraField['alias'].'='.($type==ARTIFACT_EXTRAFIELDTYPE_INTEGER?'':'\'').$value.($type==ARTIFACT_EXTRAFIELDTYPE_INTEGER?'':'\'');
+                               return json_encode($ret);
+                               exit();
                        }
                }
        }
diff --git a/src/common/tracker/include/ArtifactTypeHtml.class.php 
b/src/common/tracker/include/ArtifactTypeHtml.class.php
index 456c822..1c76f67 100644
--- a/src/common/tracker/include/ArtifactTypeHtml.class.php
+++ b/src/common/tracker/include/ArtifactTypeHtml.class.php
@@ -1146,7 +1146,12 @@ class ArtifactTypeHtml extends ArtifactType {
                        $datetime_format = _('Y-m-d H:i');
                        $datetime = date($datetime_format, $datetime);
                }
-               return html_e('input', array_merge(array('type'=>'text', 
'name'=>'extra_fields['.$extra_field_id.']', 'class'=>'datetimepicker', 
'value'=>$datetime), $attrs));
+               if (isset($attrs['class'])) {
+                       $attrs['class'] = $attrs['class'] . ' datetimepicker';
+               } else {
+                       $attrs['class'] = 'datetimepicker';
+               }
+               return html_e('input', array_merge(array('type'=>'text', 
'name'=>'extra_fields['.$extra_field_id.']', 'value'=>$datetime), $attrs));
        }
 
        function renderDateRange($extra_field_id, $dateRange, $attrs = array()) 
{
@@ -1372,10 +1377,11 @@ class ArtifactTypeHtml extends ArtifactType {
                if(event.keyCode !== 9) return false;
        });
        $(".in-formula[name^='extra_fields']").on('change', function(){
+               
console.log('rtype=ajax&function=get_formulas_results&group_id='+groupId+'&atid='+atId+'&status='+$("select[name='status_id']
 option:selected").text()+'&assigned_to='+$("select[name='assigned_to'] 
option:selected").text()+'&priority='+$("select[name='priority'] 
option:selected").text()+'&summary='+$('input#tracker-summary').val()+'&description='+$('textarea#tracker-description').val()+'&'+$("[name^='extra_fields']"
 ).serialize());
                $.ajax({
                        type: 'POST',
                        url: 'index.php',
-                       data: 
'rtype=ajax&function=get_formulas_results&group_id='+groupId+'&atid='+atId+'&'+$("[name^='extra_fields']"
 ).serialize(),
+                       data: 
'rtype=ajax&function=get_formulas_results&group_id='+groupId+'&atid='+atId+'&status='+$("select[name='status_id']
 option:selected").text()+'&assigned_to='+$("select[name='assigned_to'] 
option:selected").text()+'&priority='+$("select[name='priority'] 
option:selected").text()+'&summary='+$('input#tracker-summary').val()+'&description='+$('textarea#tracker-description').val()+'&'+$("[name^='extra_fields']"
 ).serialize(),
                        async: false,
                        dataType: 'json',
                        success: function(answer){
diff --git a/src/common/tracker/views/form-editformula.php 
b/src/common/tracker/views/form-editformula.php
index e1032ee..1ef8926 100644
--- a/src/common/tracker/views/form-editformula.php
+++ b/src/common/tracker/views/form-editformula.php
@@ -59,6 +59,19 @@ if (!$efe_id) {
 }
 
 $efarr = $ath->getExtraFields(array(),false,true);
+$efarr [] = array('field_name'=>'Assigned to','alias'=>'assigned_to', 
'field_type'=>ARTIFACT_EXTRAFIELDTYPE_USER,'extra_field_id'=>0);
+$efarr [] = array('field_name'=>'Priority','alias'=>'priority', 
'field_type'=>ARTIFACT_EXTRAFIELDTYPE_SELECT, 'extra_field_id'=>0);
+$efarr [] = array('field_name'=>'Summary','alias'=>'summary', 
'field_type'=>ARTIFACT_EXTRAFIELDTYPE_TEXT ,'extra_field_id'=>0);
+$efarr [] = array('field_name'=>'Detailed description','alias'=>'description', 
'field_type'=>ARTIFACT_EXTRAFIELDTYPE_TEXTAREA, 'extra_field_id'=>0);
+
+if (!$ath->usesCustomStatuses()) {
+       $efarr [] = array('field_name'=>'Status','alias'=>'status', 
'field_type'=>'');
+}
+
+usort($efarr, function($a, $b) {
+       return strcasecmp($a['field_name'],$b['field_name']);
+});
+
 $eftypes=ArtifactExtraField::getAvailableTypes();
 $keys=array_keys($efarr);
 $rows=count($keys);
@@ -71,7 +84,7 @@ echo html_e('p',array(),_('Variable'));
 if ($rows > 0) {
        $title_arr = array();
        $classth = array();
-       $title_arr[] = _('Custom Fields');
+       $title_arr[] = _('Fields');
        $classth[]   = '';
        $title_arr[] = _('Variable');
        $classth[]   = '';
@@ -90,52 +103,69 @@ if ($rows > 0) {
                $cells[] = 
array(html_e('span',array('class'=>'insert'),$efarr[$i]['alias']), 
'class'=>'align-right');
                $cells[] = array($eftypes[$efarr[$i]['field_type']], 
'class'=>'align-right');
 
-               //$id=str_replace('@','',$efarr[$i]['alias']);
-
-                               /*
-                                List of possible options for a user built 
Selection Box
-                                */
-
-                               $elearray = 
$ath->getExtraFieldElements($efarr[$i]['extra_field_id']);
-/*
-                               if ($efarr[$i]['field_type'] == 
ARTIFACT_EXTRAFIELDTYPE_USER && !isset($roles)) {
-                                       $rolesarray = array();
-                                       $roles = $ath->getGroup()->getRoles();
-                                       foreach ($roles as $role) {
-                                               
$rolesarray[$role->getID()]=$role->getName();
+               switch ($efarr[$i]['field_name']) {
+                       case 'Status':
+                               if (!$ath->usesCustomStatuses()) {
+                                       $statuses = 
util_result_column_to_array($ath->getStatuses(),1);
+                                       $elearray = array();
+                                       $i=0;
+                                       foreach ($statuses as $status) {
+                                               $elearray [$i++] = 
array('element_name'=>$status);
                                        }
+                               } else {
+                                       $elearray = 
$ath->getExtraFieldElements($efarr[$i]['extra_field_id']);
                                }
-                               if ($efarr[$i]['field_type'] == 
ARTIFACT_EXTRAFIELDTYPE_RELEASE && !isset($packages)) {
-                                       $packagesarray = array();
-                                       $packages = $packages = 
get_frs_packages($ath->getGroup());
-                                       foreach ($packages as $package) {
-                                               
$packagesarray[$package->getID()]=$package->getName();
-                                       }
+                               break;
+                       case 'Priority':
+                               $elearray = array();
+                               for ($i = 0; $i < 5; $i++) {
+                                       $elearray[$i] = 
array('element_name'=>$i+1);
                                }
+                               break;
+                       case 'Summary':
+                       case 'Detailed description':
+                       case 'Assigned to':
+                               $elearray = array();
+                               break;
+                       default:
+                               $elearray = 
$ath->getExtraFieldElements($efarr[$i]['extra_field_id']);
+               }
+/*
+               if ($efarr[$i]['field_type'] == ARTIFACT_EXTRAFIELDTYPE_USER && 
!isset($roles)) {
+                       $rolesarray = array();
+                       $roles = $ath->getGroup()->getRoles();
+                       foreach ($roles as $role) {
+                               $rolesarray[$role->getID()]=$role->getName();
+                       }
+               }
+               if ($efarr[$i]['field_type'] == ARTIFACT_EXTRAFIELDTYPE_RELEASE 
&& !isset($packages)) {
+                       $packagesarray = array();
+                       $packages = $packages = 
get_frs_packages($ath->getGroup());
+                       foreach ($packages as $package) {
+                               
$packagesarray[$package->getID()]=$package->getName();
+                       }
+               }
 */
+               $content = '';
+               if (!empty($elearray)) {
+                       $optrows=count($elearray);
 
-                               $content = '';
-                               if (!empty($elearray)) {
-                                       $optrows=count($elearray);
-
-                                       for ($j=0; $j <$optrows; $j++) {
-                                               switch 
($efarr[$i]['field_type']) {
-                                                       case 
ARTIFACT_EXTRAFIELDTYPE_USER:
-                                                               $content .= 
$rolesarray[$elearray[$j]['element_name']];
-                                                               break;
-                                                       case 
ARTIFACT_EXTRAFIELDTYPE_RELEASE:
-                                                               $content .= 
$packagesarray[$elearray[$j]['element_name']];
-                                                               break;
-                                                       default:
-                                                               $content .= 
html_e('span',array('class'=>'insert'),$elearray[$j]['element_name']);
-                                               }
-                                               $content .= html_e('br');
-                                       }
+                       for ($j=0; $j <$optrows; $j++) {
+                               switch ($efarr[$i]['field_type']) {
+                                       case ARTIFACT_EXTRAFIELDTYPE_USER:
+                                               $content .= 
$rolesarray[$elearray[$j]['element_name']];
+                                               break;
+                                       case ARTIFACT_EXTRAFIELDTYPE_RELEASE:
+                                               $content .= 
$packagesarray[$elearray[$j]['element_name']];
+                                               break;
+                                       default:
+                                               $content .= 
html_e('span',array('class'=>'insert'),$elearray[$j]['element_name']);
                                }
-
-                               $cells[] = array($content, 
'class'=>'align-right');
-
-                               echo $HTML->multiTableRow($row_attrs, $cells);
+                               $content .= html_e('br');
+                       }
+               }
+               $cells[] = array($content, 'class'=>'align-right');
+               echo $HTML->multiTableRow($row_attrs, $cells);
        }
        echo $HTML->listTableBottom();
 } else {
@@ -251,5 +281,22 @@ echo html_e('p', array(), _('The instructions have to be 
terminated with a semic
 echo html_e('p', array(), _('The instructions must be separated by carriage 
returns'));
 echo html_e('p', array(), _('Each line that begins with a hash mark is a 
comment'));
 echo html_e('p', array(), _('The last line must be the value to be calculated 
from the field'));
-
+if (!$efe_id) {
+       echo html_e('p', array(), _('Example to define wished_date in function 
of priority, submit_date and severity')._(':'));
+       echo html_ao('code');
+       echo '(priority==1)'.html_e('br');
+       echo '&nbsp&nbsp&nbsp&nbsp? 
datetime_add(submit_date,\'P1D\')'.html_e('br');
+       echo '&nbsp&nbsp&nbsp&nbsp: (priority == 2)'.html_e('br');
+       echo '&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp? 
datetime_add(submit_date,\'P3D\')'.html_e('br');
+       echo '&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp: (priority == 3 || 
severity == \'Low\')'.html_e('br');
+       echo '&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp? 
datetime_add(submit_date,\'P5D\')'.html_e('br');
+       echo '&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp: 
datetime_add(submit_date,\'P7D\');';
+       echo html_ac(html_ap() - 1);
+} else {
+       echo html_e('p', array(), _('Example to define priority value according 
to impact and severity matrix').' '._('(formula for priority is not yet 
available)'));
+       echo html_e('p', array(), _('For the element \'3\' of the priority 
field')._(':'));
+       echo html_ao('code');
+       echo 'impact == \'high\' && severity == \'Low\'';
+       echo html_ac(html_ap() - 1);
+}
 $ath->footer();
diff --git a/src/common/tracker/views/form-updateextrafield.php 
b/src/common/tracker/views/form-updateextrafield.php
index 5341079..2f2e05c 100644
--- a/src/common/tracker/views/form-updateextrafield.php
+++ b/src/common/tracker/views/form-updateextrafield.php
@@ -197,7 +197,7 @@ if (!$ac || !is_object($ac)) {
                        break;
        }
 
-       if (in_array($efType, array(ARTIFACT_EXTRAFIELDTYPE_TEXT, 
ARTIFACT_EXTRAFIELDTYPE_INTEGER, ARTIFACT_EXTRAFIELDTYPE_TEXTAREA))) {
+       if (in_array($efType, array(ARTIFACT_EXTRAFIELDTYPE_TEXT, 
ARTIFACT_EXTRAFIELDTYPE_INTEGER, ARTIFACT_EXTRAFIELDTYPE_TEXTAREA, 
ARTIFACT_EXTRAFIELDTYPE_DATE, ARTIFACT_EXTRAFIELDTYPE_DATETIME))) {
                echo html_ao('p');
                echo html_e('label', array('for'=>'formula'), _('Formula to 
calculate field value'));
                echo html_e('br');
diff --git a/src/www/include/expression.php b/src/www/include/expression.php
index 01b502e..e95d2b7 100644
--- a/src/www/include/expression.php
+++ b/src/www/include/expression.php
@@ -185,7 +185,7 @@ class Expression {
                // $ops_p = 
array('+'=>4,'-'=>4,'*'=>4,'/'=>4,'_'=>4,'%'=>4,'^'=>5,'>'=>2,'<'=>2,
                // 
'>='=>2,'<='=>2,'=='=>2,'!='=>2,'=~'=>2,'&&'=>1,'||'=>1,'!'=>5); // operator 
precedence
                $ops_p = array (
-                               ':' => 0, ':?' => 0,
+                               ':' => 0, '?:' => 0,
                                '?' => 1,
                                '&&' => 2, '||' => 2,
                                '>' => 3, '<' => 3, '>=' => 3, '<=' => 3, '==' 
=> 3, '!=' => 3, '=~' => 3,

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

Summary of changes:
 src/common/tracker/Artifact.class.php              |   2 +-
 src/common/tracker/ArtifactExpression.class.php    |  23 +++-
 src/common/tracker/actions/ajax.php                |  70 ++++++++---
 .../tracker/include/ArtifactTypeHtml.class.php     |  10 +-
 src/common/tracker/views/form-editformula.php      | 131 ++++++++++++++-------
 src/common/tracker/views/form-updateextrafield.php |   2 +-
 src/www/include/expression.php                     |   2 +-
 7 files changed, 176 insertions(+), 64 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