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  0bd0ec1194263c87b03f76bd6dda244b2d2559c4 (commit)
       via  1491d0c053cdda2a00378d26810d03eacffe629a (commit)
      from  77678810b6f354ff145bb151294d967f34885838 (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=0bd0ec1194263c87b03f76bd6dda244b2d2559c4

commit 0bd0ec1194263c87b03f76bd6dda244b2d2559c4
Author: Stéphane-Eymeric Bredthauer <[email protected]>
Date:   Mon Oct 24 20:26:14 2016 +0200

    Tracker: Extra fields default value

diff --git a/src/common/tracker/ArtifactExtraField.class.php 
b/src/common/tracker/ArtifactExtraField.class.php
index c7215fa..c875c11 100644
--- a/src/common/tracker/ArtifactExtraField.class.php
+++ b/src/common/tracker/ArtifactExtraField.class.php
@@ -43,6 +43,12 @@ define('ARTIFACT_EXTRAFIELDTYPE_DATETIME',12);
 /* reserved */
 define('ARTIFACT_EXTRAFIELDTYPE_USER',14);
 
+define ("ARTIFACT_EXTRAFIELDTYPE_SINGLECHOICETYPE", serialize (array 
(ARTIFACT_EXTRAFIELDTYPE_SELECT, ARTIFACT_EXTRAFIELDTYPE_RADIO, 
ARTIFACT_EXTRAFIELDTYPE_STATUS)));
+define ("ARTIFACT_EXTRAFIELDTYPE_MULTICHOICETYPE", serialize (array 
(ARTIFACT_EXTRAFIELDTYPE_CHECKBOX, ARTIFACT_EXTRAFIELDTYPE_MULTISELECT)));
+define ("ARTIFACT_EXTRAFIELDTYPE_CHOICETYPE", serialize 
(array_merge(unserialize(ARTIFACT_EXTRAFIELDTYPE_SINGLECHOICETYPE), 
unserialize(ARTIFACT_EXTRAFIELDTYPE_MULTICHOICETYPE))));
+define ("ARTIFACT_EXTRAFIELDTYPE_SPECALCHOICETYPE", serialize(array( 
ARTIFACT_EXTRAFIELDTYPE_USER )));
+define ("ARTIFACT_EXTRAFIELDTYPE_VALUETYPE", serialize (array 
(ARTIFACT_EXTRAFIELDTYPE_TEXT,ARTIFACT_EXTRAFIELDTYPE_TEXTAREA,ARTIFACT_EXTRAFIELDTYPE_RELATION,ARTIFACT_EXTRAFIELDTYPE_INTEGER,ARTIFACT_EXTRAFIELDTYPE_FORMULA,ARTIFACT_EXTRAFIELDTYPE_DATETIME)));
+
 class ArtifactExtraField extends FFError {
 
        /**
@@ -476,6 +482,158 @@ class ArtifactExtraField extends FFError {
        }
 
        /**
+        * setDefaultValues - set default value(s) for this field.
+        *
+        * @param       string|integer|array    $default        default value, 
default id value, or array of default values.
+        * @return      boolean
+        */
+       function setDefaultValues($default) {
+               $type = $this->getType();
+               $return = true;
+               if (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_MULTICHOICETYPE))) {
+                       if (is_array($default)) {
+                               $efValues = $this->getAvailableValues();
+                               foreach ($efValues as $efValue) {
+                                       if 
(isset($default[$efValue['element_id']]) && $default[$efValue['element_id']] && 
$efValue['is_default']==0) {
+                                               $efe = new 
ArtifactExtraFieldElement($this, $efValue['element_id']);
+                                               if (!$efe || !is_object($efe)) {
+                                                       if (is_object($efe)) {
+                                                               
$this->setError(_('Unable to create extra field element').' 
'.$efValue['element_name'].' '._(':').$efe->getErrorMessage());
+                                                       } else {
+                                                               
$this->setError(_('Unable to create extra field element').' 
'.$efValue['element_name']);
+                                                       }
+                                                       $return = false;
+                                               } elseif 
(!$efe->update($efValue['element_name'], $efValue['status_id'], 
$efValue['auto_assign_to'], true)) {
+                                                       
$this->setError(_('Unable to update extra field element').' 
'.$efValue['element_name'].' '._(':').$efe->getErrorMessage());
+                                                       $return = false;
+                                               }
+                                       } elseif 
(((isset($default[$efValue['element_id']]) && 
!$default[$efValue['element_id']]) || !isset($default[$efValue['element_id']])) 
 && $efValue['is_default']==1) {
+                                               $efe = new 
ArtifactExtraFieldElement($this, $efValue['element_id']);
+                                               if (!$efe || !is_object($efe)) {
+                                                       if (is_object($efe)) {
+                                                               
$this->setError(_('Unable to create extra field element').' 
'.$efValue['element_name'].' '._(':').$efe->getErrorMessage());
+                                                       } else {
+                                                               
$this->setError(_('Unable to create extra field element'.' 
'.$efValue['element_name']));
+                                                       }
+                                                       $return = false;
+                                               } elseif 
(!$efe->update($efValue['element_name'], $efValue['status_id'], 
$efValue['auto_assign_to'], false)) {
+                                                       
$this->setError(_('Unable to update extra field element').' 
'.$efValue['element_name'].' '._(':').$efe->getErrorMessage());
+                                                       $return = false;
+                                               }
+                                       }
+                               }
+                       } elseif (is_integer($default)) {
+                               $efe = new ArtifactExtraFieldElement($this, 
$default);
+                               if (!$efe || !is_object($efe)) {
+                                       if (is_object($efe)) {
+                                               $this->setError(_('Unable to 
create extra field element').' (id='.$default.') 
'._(':').$efe->getErrorMessage());
+                                       } else {
+                                               $this->setError(_('Unable to 
create extra field element'.' (id='.$default.')'));
+                                       }
+                                       $return = false;
+                               } elseif (!$efe->update($efe->getName(), 
$efe->getStatusID(), $efe->getAutoAssignto(), true)) {
+                                       $this->setError(_('Unable to update 
extra field element').' '.$efe->getName().' '._(':').$efe->getErrorMessage());
+                                       $return = false;
+                               }
+                       } else {
+                               $this->setError(_('Unable to set default 
value')._(':').$default);
+                               $return = false;
+                       }
+               } elseif (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_SINGLECHOICETYPE))) {
+                       if (is_integer($default)) {
+                               $efe = new ArtifactExtraFieldElement($this, 
$default);
+                               if (!$efe || !is_object($efe)) {
+                                       if (is_object($efe)) {
+                                               $this->setError(_('Unable to 
create extra field element').' (id='.$default.') 
'._(':').$efe->getErrorMessage());
+                                       } else {
+                                               $this->setError(_('Unable to 
create extra field element'.' (id='.$default.')'));
+                                       }
+                                       $return = false;
+                               } elseif (!$efe->update($efe->getName(), 
$efe->getStatusID(), $efe->getAutoAssignto(), true)) {
+                                       $this->setError(_('Unable to update 
extra field element').' '.$efe->getName().' '._(':').$efe->getErrorMessage());
+                                       $return = false;
+                               }
+                       } else {
+                               $this->setError(_('Unable to set default 
value')._(':').$default);
+                               $return = false;
+                       }
+               } elseif (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_VALUETYPE)) || $type == 
ARTIFACT_EXTRAFIELDTYPE_USER) {
+                       $efID = $this->getID();
+                       $res = db_query_params ('SELECT default_value FROM 
artifact_extra_field_default WHERE extra_field_id=$1',
+                                       array ($efID)) ;
+                       if (db_numrows($res) > 0) {
+                               $res = db_query_params ('UPDATE 
artifact_extra_field_default SET default_value = $1 WHERE extra_field_id=$2',
+                                               array ($default, $efID));
+                       } else {
+                               $res = db_query_params ('INSERT INTO 
artifact_extra_field_default (extra_field_id, default_value) VALUES ($1,$2)',
+                                               array ($efID, $default)) ;
+                       }
+                       if (!$res) {
+                               $this->setError(db_error());
+                               $return = false;
+                       }
+               }
+               return $return;
+       }
+
+       /**
+        * resetDefaultValues - reset default value(s) for this field.
+        *
+        * @return      boolean
+        */
+       function resetDefaultValues() {
+               $type = $this->getType();
+               $return = true;
+               if (in_array($type, ARTIFACT_EXTRAFIELDTYPE_SPECALCHOICETYPE)) {
+                       //drop fake artifact_extra_field_elements set with 
is_default = 1
+               } elseif (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_MULTICHOICETYPE)) || in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_SINGLECHOICETYPE))) {
+                       $result = db_query_params ('DELETE FROM 
artifact_extra_field_default WHERE extra_field_id = $1',
+                                       array ($this->getID()));
+                       if (!$result) {
+                               $this->setError(db_error());
+                               $return = false;
+                       }
+               } elseif (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_VALUETYPE))) {
+                       //drop fake artifact_extra_field_elements set with 
is_default = 1
+               }
+               return $return;
+       }
+
+       /**
+        * getDefaultValues - Get default value, id of default value or list of 
id of default values for this extra field
+        *
+        * @return      string|integer|array
+        */
+       function getDefaultValues() {
+               $res = db_query_params ('SELECT default_value FROM 
artifact_extra_field_default WHERE extra_field_id=$1',
+                               array ($this->getID()));
+               $type = $this->getType();
+               if (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_VALUETYPE))) {
+                       $row = db_fetch_array($res);
+                       $return = $row['default_value'];
+                       if ($type == ARTIFACT_EXTRAFIELDTYPE_INTEGER && 
is_null($return)) {
+                               $return = 0;
+                       }
+               } elseif ($type == ARTIFACT_EXTRAFIELDTYPE_USER) {
+                       $row = db_fetch_array($res);
+                       if (!$row) {
+                               $return = 100;
+                       } else {
+                               $return = (integer)$row['default_value'];
+                       }
+               } elseif (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_SINGLECHOICETYPE))) {
+                       $row = db_fetch_array($res);
+                       $return = (integer)$row['default_value'];
+               } elseif (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_MULTICHOICETYPE))) {
+                       $return = array();
+                       while ($row = db_fetch_array($res)) {
+                               $return[] = $row['default_value'];
+                       }
+               }
+               return $return;
+       }
+
+       /**
         * getAvailableTypes - the types of text fields and their names 
available.
         *
         * @return      array   types.
@@ -510,11 +668,46 @@ class ArtifactExtraField extends FFError {
         * @return      array
         */
        function getAvailableValues() {
-               $res = db_query_params ('SELECT * FROM 
artifact_extra_field_elements WHERE extra_field_id=$1',
-                                       array ($this->getID()));
-               $return = array();
-               while ($row = db_fetch_array($res)) {
-                       $return[] = $row;
+               $type = $this->getType();
+               if (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_VALUETYPE))) {
+                       $return = array();;
+               } else {
+                       $res = db_query_params ('SELECT *, 0 AS is_default
+                                               FROM 
artifact_extra_field_elements
+                                               WHERE extra_field_id=$1
+                                               ORDER BY element_pos ASC, 
element_id ASC',
+                                               array ($this->getID()));
+                       $default = $this->getDefaultValues();
+                       $return = array();
+                       if (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_SINGLECHOICETYPE))) {
+                               while ($row = db_fetch_array($res)) {
+                                       if ($row['element_id']==$default) {
+                                               $row['is_default']=1;
+                                       }
+                                       $return[] = $row;
+                               }
+                       } elseif (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_MULTICHOICETYPE))) {
+                               while ($row = db_fetch_array($res)) {
+                                       if 
(in_array($row['element_id'],$default)) {
+                                               $row['is_default']=1;
+                                       }
+                                       $return[] = $row;
+                               }
+                       } elseif ($type == ARTIFACT_EXTRAFIELDTYPE_USER) {
+                               while ($row = db_fetch_array($res)) {
+                                       if ($row['element_id']==$default) {
+                                               $row['is_default']=1;
+                                       }
+                                       $return[] = $row;
+                               }
+                       } else {
+                               while ($row = db_fetch_array($res)) {
+                                       if 
(in_array($row['element_id'],$default)) {
+                                               $row['is_default']=1;
+                                       }
+                                       $return[] = $row;
+                               }
+                       }
                }
                return $return;
        }
diff --git a/src/common/tracker/ArtifactExtraFieldElement.class.php 
b/src/common/tracker/ArtifactExtraFieldElement.class.php
index 616d2a6..1a18ba2 100644
--- a/src/common/tracker/ArtifactExtraFieldElement.class.php
+++ b/src/common/tracker/ArtifactExtraFieldElement.class.php
@@ -101,7 +101,7 @@ class ArtifactExtraFieldElement extends FFError {
         * @param       int     $status_id      Id the box that contains the 
choice (optional).
         * @return      bool    true on success / false on failure.
         */
-       function create($name,$status_id=0,$auto_assign_to=100) {
+       function create($name,$status_id=0,$auto_assign_to=100,$is_default=0) {
                //
                //      data validation
                //
@@ -137,6 +137,26 @@ class ArtifactExtraFieldElement extends FFError {
                if ($result && db_affected_rows($result) > 0) {
                        $this->clearError();
                        
$id=db_insertid($result,'artifact_extra_field_elements','element_id');
+
+                       if ($is_default) {
+                               $type = $this->ArtifactExtraField->getType();
+                               if (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_SINGLECHOICETYPE))) {
+                                       $result = db_query_params ('DELETE FROM 
artifact_extra_field_default WHERE extra_field_id = $1',
+                                                       array 
($this->ArtifactExtraField->getID()));
+                                       if (!$result) {
+                                               $this->setError(db_error());
+                                               db_rollback();
+                                               return false;
+                                       }
+                               }
+                               $result = db_query_params ('INSERT INTO 
artifact_extra_field_default (extra_field_id, default_value) VALUES ($1,$2)',
+                                               array 
($this->ArtifactExtraField->getID(),$id));
+                               if (!$result) {
+                                       $this->setError(db_error());
+                                       db_rollback();
+                                       return false;
+                               }
+                       }
                        //
                        //      Now set up our internal data structures
                        //
@@ -167,7 +187,7 @@ class ArtifactExtraFieldElement extends FFError {
         * @return      boolean success.
         */
        function fetchData($id) {
-               $res = db_query_params ('SELECT * FROM 
artifact_extra_field_elements WHERE element_id=$1',
+               $res = db_query_params ('SELECT *, 0 AS is_default FROM 
artifact_extra_field_elements WHERE element_id=$1',
                                        array ($id)) ;
                if (!$res || db_numrows($res) < 1) {
                        $this->setError('ArtifactExtraField: Invalid 
ArtifactExtraFieldElement ID');
@@ -175,6 +195,16 @@ class ArtifactExtraFieldElement extends FFError {
                }
                $this->data_array = db_fetch_array($res);
                db_free_result($res);
+               $default = db_query_params ('SELECT 1 FROM 
artifact_extra_field_default WHERE default_value=$1',
+                               array ($id)) ;
+               if (!$default) {
+                       $this->setError('ArtifactExtraField: Invalid 
ArtifactExtraFieldElement ID');
+                       return false;
+               }
+               if (db_numrows($default) >= 1) {
+                       $this->data_array['is_default'] = true;
+               }
+               db_free_result($default);
                return true;
        }
 
@@ -250,6 +280,15 @@ class ArtifactExtraFieldElement extends FFError {
        }
 
        /**
+        * isDefault - whether this field element is default value or not.
+        *
+        * @return      boolean
+        */
+       function isDefault() {
+               return $this->data_array['is_default'];
+       }
+
+       /**
         * getChildrenElements - return the array of the elements of children 
fields who depend on current element
         *
         * @return      array of parent elements
@@ -347,9 +386,10 @@ class ArtifactExtraFieldElement extends FFError {
         *
         * @param       string  $name           Name of the choice in a box.
         * @param       int     $status_id      Optional for status box - maps 
to either open/closed.
+        * @param       boolean $is_default     Set this element as default 
value
         * @return      bool    success.
         */
-       function update($name, $status_id=0, $auto_assign_to=100) {
+       function update($name, $status_id=0, $auto_assign_to=100, 
$is_default=false) {
                if (!forge_check_perm ('tracker_admin', 
$this->ArtifactExtraField->ArtifactType->Group->getID())) {
                        $this->setPermissionDeniedError();
                        return false;
@@ -381,12 +421,43 @@ class ArtifactExtraFieldElement extends FFError {
                                                  $status_id,
                                                  $auto_assign_to,
                                                  $this->getID())) ;
-               if ($result && db_affected_rows($result) > 0) {
-                       return true;
-               } else {
+               if (!$result || db_affected_rows($result) == 0) {
                        $this->setError(db_error());
                        return false;
                }
+
+               $default = db_query_params ('SELECT 1 FROM 
artifact_extra_field_default WHERE default_value=$1',
+                               array ($this->getID())) ;
+               if (!$default) {
+                       $this->setError('ArtifactExtraField: Invalid 
ArtifactExtraFieldElement ID');
+                       return false;
+               }
+               if (db_numrows($default) >= 1 && !$is_default) {
+                       $result = db_query_params ('DELETE FROM 
artifact_extra_field_default WHERE extra_field_id = $1 AND default_value = $2',
+                                       array 
($this->ArtifactExtraField->getID(), $this->getID()));
+                       if (!$result) {
+                               $this->setError(db_error());
+                               return false;
+                       }
+               }
+               if (db_numrows($default) == 0 && $is_default) {
+                       if (in_array($this->ArtifactExtraField->getType(), 
unserialize(ARTIFACT_EXTRAFIELDTYPE_SINGLECHOICETYPE))) {
+                               $result = db_query_params ('DELETE FROM 
artifact_extra_field_default WHERE extra_field_id = $1',
+                                               array 
($this->ArtifactExtraField->getID()));
+                               if (!$result) {
+                                       $this->setError(db_error());
+                                       $return = false;
+                               }
+                       }
+                       $result = db_query_params ('INSERT INTO 
artifact_extra_field_default (extra_field_id, default_value) VALUES ($1,$2)',
+                                       array 
($this->ArtifactExtraField->getID(), $this->getID()));
+                       if (!$result) {
+                               $this->setError(db_error());
+                               return false;
+                       }
+               }
+               db_free_result($default);
+               return true;
        }
 
        /**
diff --git a/src/common/tracker/ArtifactType.class.php 
b/src/common/tracker/ArtifactType.class.php
index b784921..7cb2198 100644
--- a/src/common/tracker/ArtifactType.class.php
+++ b/src/common/tracker/ArtifactType.class.php
@@ -611,11 +611,15 @@ class ArtifactType extends FFError {
         */
        function getExtraFields($types = array(), $get_is_disabled = false, 
$get_is_hidden_on_submit = true) {
                $where ='';
+               $use_cache = true;
                if (!$get_is_disabled) {
                        $where = ' AND is_disabled = 0';
+               } else {
+                       $use_cache = false;
                }
                if (!$get_is_hidden_on_submit) {
                        $where = ' AND is_hidden_on_submit = 0';
+                       $use_cache = false;
                }
                if (count($types)) {
                        $filter = implode(',', $types);
@@ -623,8 +627,8 @@ class ArtifactType extends FFError {
                } else {
                        $filter = '';
                }
-               if (!isset($this->extra_fields[$filter])) {
-                       $this->extra_fields[$filter] = array();
+               if (!isset($this->extra_fields[$filter]) || !$use_cache) {
+                       $extra_fields = array();
                        if (count($types)) {
                                $res = db_query_params('SELECT *
                                FROM artifact_extra_field_list
@@ -643,11 +647,41 @@ class ArtifactType extends FFError {
                                        array($this->getID()));
                        }
                        while ($arr = db_fetch_array($res)) {
-                               
$this->extra_fields[$filter][$arr['extra_field_id']] = $arr;
+                               $extra_fields[$arr['extra_field_id']] = $arr;
                        }
                }
+               if (!isset($this->extra_fields[$filter])) {
+                       $this->extra_fields[$filter] = $extra_fields;
+               }
+               if ($use_cache) {
+                       $extra_fields = $this->extra_fields[$filter];
+               }
+               return $extra_fields;
+       }
 
-               return $this->extra_fields[$filter];
+       /**
+        * getExtraFieldsDefaultValue - Get array of extra fields default value
+        *
+        * @param       array   $types
+        * @param       bool    $get_is_disabled
+        * @param       bool    $get_is_hidden_on_submit
+        * @return      array   arrays of data;
+        */
+       function getExtraFieldsDefaultValue($types = array(), $get_is_disabled 
= false, $get_is_hidden_on_submit = true) {
+               $extra_fields = $this->getExtraFields($types, $get_is_disabled, 
$get_is_hidden_on_submit);
+               $efDefaultValue = array();
+               foreach ($extra_fields as $efID=>$efArr) {
+                       $ef = new ArtifactExtraField($this, $efID);
+                       $defaultValue = $ef->getDefaultValues();
+                       if (!is_null($defaultValue)) {
+                               $efDefaultValue [$efID] = $defaultValue;
+                       } else {
+                               if 
(in_array($efArr['field_type'],unserialize(ARTIFACT_EXTRAFIELDTYPE_SINGLECHOICETYPE)))
 {
+                                       $efDefaultValue [$efID] = '';
+                               }
+                       }
+               }
+               return $efDefaultValue;
        }
 
        /**
@@ -708,11 +742,6 @@ class ArtifactType extends FFError {
                        }
                        $newEFIds[$ef['extra_field_id']] = $nef->getID();
                        $newEFElIds[$ef['extra_field_id']] = array();
-                       //
-                       //      Iterate the elements
-                       //
-                       $resel = db_query_params('SELECT * FROM 
artifact_extra_field_elements WHERE extra_field_id=$1',
-                                               array($ef['extra_field_id']));
 
                        //by default extrafield status is created with default 
values: 'Open' & 'Closed'
                        if ($nef->getType() == ARTIFACT_EXTRAFIELDTYPE_STATUS) {
@@ -722,21 +751,79 @@ class ArtifactType extends FFError {
                                        $existingElement->delete();
                                }
                        }
-                       while ($el = db_fetch_array($resel)) {
-                               //new element
-                               $nel = new ArtifactExtraFieldElement($nef);
-                               if 
(!$nel->create(util_unconvert_htmlspecialchars($el['element_name']), 
$el['status_id'])) {
-                                       db_rollback();
-                                       $this->setError(_('Error Creating New 
Extra Field Element')._(':').' '.$nel->getErrorMessage());
-                                       return false;
+
+                       //
+                       //      Iterate the elements
+                       //
+                       if (in_array($ef['field_type'], 
unserialize(ARTIFACT_EXTRAFIELDTYPE_CHOICETYPE))) {
+                               $elements = 
$this->getExtraFieldElements($ef['extra_field_id']);
+                               foreach ($elements as $el) {
+                                       //new element
+                                       $nel = new 
ArtifactExtraFieldElement($nef);
+                                       if 
(!$nel->create(util_unconvert_htmlspecialchars($el['element_name']), 
$el['status_id'], $el['auto_assign_to'], $el['is_default'])) {
+                                               db_rollback();
+                                               $this->setError(_('Error 
Creating New Extra Field Element')._(':').' '.$nel->getErrorMessage());
+                                               return false;
+                                       }
+                                       
$newEFElIds[$ef['extra_field_id']][$el['element_id']] = $nel->getID();
+                               }
+                       } elseif ($ef['field_type'] == 
ARTIFACT_EXTRAFIELDTYPE_USER) {
+                               $elements = 
$this->getExtraFieldElements($ef['extra_field_id']);
+                               $newRoles = $this->getGroup()->getRoles();
+                               foreach ($elements as $el) {
+                                       $oldRole = 
RBACEngine::getInstance()->getRoleById($el['element_name']);
+                                       if ($oldRole && is_object($oldRole)) {
+                                               if ($oldRole->isPublic()) {
+                                                       foreach ($newRoles as 
$newRole) {
+                                                               if 
($oldRole->getID() == $newRole->getID()) {
+                                                                       if 
(!$nel->create($el['element_name'])) {
+                                                                               
db_rollback();
+                                                                               
$this->setError(_('Error Creating New Extra Field Element')._(':').' 
'.$nel->getErrorMessage());
+                                                                               
return false;
+                                                                       }
+                                                                       
$newEFElIds[$ef['extra_field_id']][$el['element_id']] = $nel->getID();
+                                                                       break;
+                                                               }
+                                                       }
+                                               } else {
+                                                       foreach ($newRoles as 
$newRole) {
+                                                               if 
($oldRole->getName() == $newRole->getName()) {
+                                                                       if 
(!$nel->create($newRole->getID())) {
+                                                                               
db_rollback();
+                                                                               
$this->setError(_('Error Creating New Extra Field Element')._(':').' 
'.$nel->getErrorMessage());
+                                                                               
return false;
+                                                                       }
+                                                                       
$newEFElIds[$ef['extra_field_id']][$el['element_id']] = $nel->getID();
+                                                                       break;
+                                                               }
+                                                       }
+                                               }
+                                       }
                                }
-                               
$newEFElIds[$ef['extra_field_id']][$el['element_id']] = $nel->getID();
                        }
                }
-
                foreach ($newEFIds as $oldEFId => $newEFId) {
                        $oef = new ArtifactExtraField($at, $oldEFId);
                        $nef = new ArtifactExtraField($this, $newEFId);
+                       // clone default value
+                       $type = $oef->getType();
+                       if (in_array($type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_VALUETYPE)) || $type == 
ARTIFACT_EXTRAFIELDTYPE_USER) {
+                               $default = $oef->getDefaultValues();
+                               if (($type==ARTIFACT_EXTRAFIELDTYPE_INTEGER && 
$default != 0)) {
+                                       $nef->setDefaultValues($default);
+                               } elseif ($type==ARTIFACT_EXTRAFIELDTYPE_USER 
&& $default != 100) {
+                                       $roleEls = 
$this->getExtraFieldElements($newEFId);
+                                       $defaultUser = 
UserManager::instance()->getUserById($default);
+                                       foreach ($roleEls as $roleEl) {
+                                               $role = 
RBACEngine::getInstance()->getRoleById($roleEl['element_name']);
+                                               if ( 
$role->hasUser($defaultUser)) {
+                                                       
$nef->setDefaultValues($default);
+                                               }
+                                       }
+                               } else {
+                                       $nef->setDefaultValues($default);
+                               }
+                       }
                        // update Dependency between extrafield
                        if ($oef->getParent() != 100) {
                                if (!$nef->update($nef->getName(), 
$nef->getAttribute1(), $nef->getAttribute2(), $nef->isRequired(), 
$nef->getAlias(), $nef->getShow100(), $nef->getShow100label(), 
$nef->getDescription(), $nef->getPattern(), $newEFIds[$oef->getParent()], 
$nef->isAutoAssign(), $nef->isHiddenOnSubmit(), $nef->isDisabled())) {
@@ -744,7 +831,6 @@ class ArtifactType extends FFError {
                                        $this->setError(_('Error Updating New 
Extra Field Parent')._(':').' '.$nef->getErrorMessage());
                                        return false;
                                }
-
                                foreach ($newEFElIds[$oldEFId] as $oldEFElId => 
$newEFElId) {
                                        $oel = new 
ArtifactExtraFieldElement($oef,$oldEFElId);
                                        if ($oel->isError()) {
@@ -840,18 +926,12 @@ class ArtifactType extends FFError {
                }
                if (!isset($this->extra_field[$id])) {
                        $this->extra_field[$id] = array();
-                       $res = db_query_params('SELECT element_id, 
element_name, status_id
-                               FROM artifact_extra_field_elements
-                               WHERE extra_field_id = $1
-                               ORDER BY element_pos ASC, element_id ASC',
-                               array($id));
-                       $i = 0;
-                       while ($arr = db_fetch_array($res)) {
-                               $this->extra_field[$id][$i++] = $arr;
+                       $ef = new ArtifactExtraField($this,$id);
+                       if (!$ef || $ef->isError()) {
+                               return false;
                        }
-//                     if (count($this->extra_field[$id]) == 0) {
-//                             return;
-//                     }
+                       $efValues = $ef->getAvailableValues();
+                       $this->extra_field[$id] = $efValues;
                }
 
                return $this->extra_field[$id];
diff --git a/src/common/tracker/actions/admin-updates.php 
b/src/common/tracker/actions/admin-updates.php
index e14c442..db5c1bf 100644
--- a/src/common/tracker/actions/admin-updates.php
+++ b/src/common/tracker/actions/admin-updates.php
@@ -245,6 +245,7 @@ if (getStringFromRequest('add_extrafield')) {
        $autoassign = getStringFromRequest('autoassign');
        $is_hidden_on_submit = getStringFromRequest('is_hidden_on_submit');
        $is_disabled = getStringFromRequest('is_disabled');
+       $default = getStringFromRequest('default');
        $ac = new ArtifactExtraField($ath, $id);
        if (!$ac || !is_object($ac)) {
                $error_msg .= _('Unable to create ArtifactExtraField Object');
@@ -260,8 +261,13 @@ if (getStringFromRequest('add_extrafield')) {
                        $error_msg .= _('Update failed')._(': 
').$ac->getErrorMessage();
                        $ac->clearError();
                } else {
-                       $feedback .= _('Custom Field updated');
-                       $next = 'add_extrafield';
+                       if(!$ac->setDefaultValues($default)){
+                               $error_msg .= _('Update failed')._(': 
').$ac->getErrorMessage();
+                               $ac->clearError();
+                       } else {
+                               $feedback .= _('Custom Field updated');
+                               $next = 'add_extrafield';
+                       }
                }
        }
 
@@ -270,6 +276,7 @@ if (getStringFromRequest('add_extrafield')) {
 //
 } elseif (getStringFromRequest('update_opt')) {
        $boxid = getStringFromRequest('boxid');
+       $is_default = getStringFromRequest('is_default');
        $ac = new ArtifactExtraField($ath,$boxid);
        if (!$ac || !is_object($ac)) {
                $error_msg .= _('Unable to create ArtifactExtraField Object');
@@ -286,7 +293,7 @@ if (getStringFromRequest('add_extrafield')) {
                        $name = getStringFromRequest('name');
                        $status_id = getIntFromRequest('status_id');
                        $autoAssignTo = getStringFromRequest('auto_assign_to');
-                       if (!$ao->update($name,$status_id,$autoAssignTo)) {
+                       if 
(!$ao->update($name,$status_id,$autoAssignTo,$is_default)) {
                                $error_msg .= _('Update failed')._(': 
').$ao->getErrorMessage();
                                $ao->clearError();
                        } else {
@@ -613,6 +620,40 @@ if (getStringFromRequest('add_extrafield')) {
                }
        }
 
+} elseif (getStringFromRequest('post_changes_default')) {
+       $boxid = getStringFromRequest('boxid');
+       $ac = new ArtifactExtraField($ath,$boxid);
+       if (!$ac || !is_object($ac)) {
+               $error_msg .= _('Unable to create ArtifactExtraField Object');
+       } elseif ($ac->isError()) {
+               $error_msg .= $ac->getErrorMessage();
+       } else {
+               $updated_flag = 0;
+               if (in_array($ac->getType(), 
unserialize(ARTIFACT_EXTRAFIELDTYPE_SINGLECHOICETYPE))) {
+                       $id = getIntFromRequest('is_default');
+                       if ($id == 100) {
+                               if (!$ac->resetDefaultValues()) {
+                                       $feedback .= _('Tracker Updated');
+                               } else {
+                                       $error_msg .= _('Update failed')._(': 
').$ac->getErrorMessage();
+                               }
+                       } else {
+                               if ($ac->setDefaultValues($id)) {
+                                       $feedback .= _('Tracker Updated');
+                               } else {
+                                       $error_msg .= _('Update failed')._(': 
').$ac->getErrorMessage();
+                               }
+                       }
+               } else {
+                       $is_default =  getArrayFromRequest('is_default');
+                       if ($ac->setDefaultValues($is_default)) {
+                               $feedback .= _('Tracker Updated');
+                       } else {
+                               $error_msg .= _('Update failed')._(': 
').$ac->getErrorMessage();
+                       }
+               }
+       }
+
 //
 // Configure workflow
 //
diff --git a/src/common/tracker/include/ArtifactTypeHtml.class.php 
b/src/common/tracker/include/ArtifactTypeHtml.class.php
index c38e885..c03ef5c 100644
--- a/src/common/tracker/include/ArtifactTypeHtml.class.php
+++ b/src/common/tracker/include/ArtifactTypeHtml.class.php
@@ -578,7 +578,11 @@ EOS;
         * @return      string  HTML template.
         */
        function generateRenderHTML($types=array(), $mode) {
-               $efarr = $this->getExtraFields($types);
+               if ($mode == 'NEW') {
+                       $efarr = $this->getExtraFields($types, false, false);
+               } else {
+                       $efarr = $this->getExtraFields($types);
+               }
                //each two columns, we'll reset this and start a new row
 
                $return = '
diff --git a/src/common/tracker/include/build_submission_form.php 
b/src/common/tracker/include/build_submission_form.php
index ccb5b12..9186a17 100644
--- a/src/common/tracker/include/build_submission_form.php
+++ b/src/common/tracker/include/build_submission_form.php
@@ -50,6 +50,10 @@ function artifact_submission_form($ath, $group, $summary='', 
$details='', $assig
        $cells[] = array(html_e('input', array('type'=>'submit', 
'name'=>'submit', 'value'=>_('Submit'))), 'class'=>'top');
        echo $HTML->multiTableRow(array(), $cells);
 
+       if (empty($extra_fields)) {
+               $extra_fields = $ath->getExtraFieldsDefaultValue();
+       }
+
        
$ath->renderExtraFields($extra_fields,true,'none',false,'Any',array(),false,'NEW');
 
        if (forge_check_perm ('tracker', $ath->getID(), 'manager')) {
diff --git a/src/common/tracker/views/form-addextrafield.php 
b/src/common/tracker/views/form-addextrafield.php
index 780e630..fb7855e 100644
--- a/src/common/tracker/views/form-addextrafield.php
+++ b/src/common/tracker/views/form-addextrafield.php
@@ -251,6 +251,10 @@ echo html_e('label', array('for'=>'attribute2'), 
_('Maxlength')._(':'));
 echo html_e('input', array('type'=>'text', 'name'=>'attribute2', 
'value'=>'80', 'size'=>'2', 'maxlength'=>'2')).html_e('br');
 echo html_ac(html_ap() - 1);
 
+echo html_ao('p', array('class'=>'for-text for-textarea for-integer'));
+
+echo html_ac(html_ap() - 1);
+
 echo html_ao('p', array('class'=>'for-text'));
 echo _('Pattern');
 echo html_e('input', array('type'=>'text', 'name'=>'pattern', 'value'=>'', 
'size'=>'50', 'maxlength'=>'255')).html_e('br');
diff --git a/src/common/tracker/views/form-addextrafieldoption.php 
b/src/common/tracker/views/form-addextrafieldoption.php
index 06e1e4d..41a15fb 100644
--- a/src/common/tracker/views/form-addextrafieldoption.php
+++ b/src/common/tracker/views/form-addextrafieldoption.php
@@ -35,7 +35,8 @@ if (!$ac || !is_object($ac)) {
 } elseif ($ac->isError()) {
        exit_error($ac->getErrorMessage(),'tracker');
 } else {
-       $efearr=$ath->getExtraFieldElements($boxid);
+//     $efearr=$ath->getExtraFieldElements($boxid);
+       $efearr=$ac->getAvailableValues();
        $title = sprintf(_('Add/Update Custom Field Elements in %s'), 
$ath->getName());
        $ath->adminHeader(array('title'=>$title, 'modal'=>1));
        echo html_e('h2', array(), _('Custom Field Name')._(': 
').$ac->getName());
@@ -51,8 +52,25 @@ if (!$ac || !is_object($ac)) {
                        }
                        $title_arr[]=_('Up/Down positions');
                        $title_arr[]=_('Elements Defined');
+                       if (in_array($efType, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_CHOICETYPE))) {
+                               $title_arr[]=_('Default');
+                       }
                        $title_arr[]='';
                        echo $HTML->listTableTop ($title_arr,false, ' ');
+                       if (in_array($efType, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_SINGLECHOICETYPE))) {
+                               $row_attrs = 
array('class'=>$HTML->boxGetAltRowStyle(-1,true));
+                               $cells = array();
+                               $cells[] = array('', 'class'=>'align-right');
+                               if ($efType == ARTIFACT_EXTRAFIELDTYPE_STATUS) {
+                                       $cells[] = array('');
+                               }
+                               $cells[] = array('', 'class'=>'align-center');
+                               $cells[] = array(_('None'));
+                               $content = 
html_build_radio_button('is_default', 100, true);
+                               $cells[] = array($content, 
'class'=>'align-center');
+                               $cells[] = array('', 'class'=>'align-center');
+                               echo $HTML->multiTableRow($row_attrs, $cells);
+                       }
                        for ($i=0; $i < $rows; $i++) {
                                $row_attrs = 
array('class'=>$HTML->boxGetAltRowStyle($i,true));
                                $cells = array();
@@ -65,6 +83,15 @@ if (!$ac || !is_object($ac)) {
                                $content .= 
util_make_link('/tracker/admin/?group_id='.$group_id.'&atid='.$ath->getID().'&boxid='.$boxid.'&id='.$efearr[$i]['element_id'].'&updownorder_opt=1&new_pos='.(($i
 == $rows - 1)? $i + 1 : $i + 2), 
html_image('ic/btn_down.png','19','18',array('alt'=>'Down', 'title'=>_('Move 
Down this custom field element'))));
                                $cells[] = array($content, 
'class'=>'align-center');
                                $cells[] = array($efearr[$i]['element_name']);
+
+                               if (in_array($efType, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_MULTICHOICETYPE))) {
+                                       $content = 
html_build_checkbox('is_default['. $efearr[$i]['element_id'] .']', false, 
$efearr[$i]['is_default']);
+                                       $cells[] = array($content, 
'class'=>'align-center');
+                               } elseif (in_array($efType, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_SINGLECHOICETYPE))) {
+                                       $content = 
html_build_radio_button('is_default', $efearr[$i]['element_id'], 
$efearr[$i]['is_default']);
+                                       $cells[] = array($content, 
'class'=>'align-center');
+                               }
+
                                $content = 
util_make_link('/tracker/admin/?update_opt=1&id='.$efearr[$i]['element_id'].'&boxid='.$boxid.'&group_id='.$group_id.'&atid='.
 $ath->getID(), html_image('ic/configure.png','22','22',array('alt'=>_('Edit'), 
'title'=>_('Edit custom field element'))));
                                $cells[] = array($content, 
'class'=>'align-center');
                                echo $HTML->multiTableRow($row_attrs, $cells);
@@ -79,6 +106,10 @@ if (!$ac || !is_object($ac)) {
                        }
                        $content = html_e('input', array('type'=>'submit', 
'name'=>'post_changes_alphaorder', 'value'=>_('Alphabetical order')));
                        $cells[] = array($content, 'class'=>'align-left');
+                       if (in_array($efType, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_CHOICETYPE))) {
+                               $content = html_e('input', 
array('type'=>'submit', 'name'=>'post_changes_default', 'value'=>_('Update 
default')));
+                               $cells[] = array($content, 
'class'=>'align-center');
+                       }
                        echo $HTML->multiTableRow($row_attrs, $cells);
                        echo $HTML->listTableBottom();
                        echo $HTML->closeForm();
@@ -105,7 +136,9 @@ if (!$ac || !is_object($ac)) {
                $g=$ath->getGroup();
                $roles = $g->getRoles();
                foreach ($roles as $role) {
-                       $vals[$role->getID()]=$role->getName();
+                       if (!in_array(get_class($role), 
array('RoleLoggedIn','RoleAnonymous'))){
+                               $vals[$role->getID()]=$role->getName();
+                       }
                }
                // end
                asort($vals,SORT_FLAG_CASE);
diff --git a/src/common/tracker/views/form-updateextrafield.php 
b/src/common/tracker/views/form-updateextrafield.php
index 81048f8..9bca1e7 100644
--- a/src/common/tracker/views/form-updateextrafield.php
+++ b/src/common/tracker/views/form-updateextrafield.php
@@ -152,6 +152,62 @@ if (!$ac || !is_object($ac)) {
                echo html_e('input', array('type'=>'hidden', 
'name'=>'autoassign', 'value'=>0));
        }
 
+       switch ($efType) {
+               case ARTIFACT_EXTRAFIELDTYPE_TEXT:
+                       echo html_ao('p');
+                       echo html_e('label', array('for'=>'default'),_('Default 
value'));
+                       $attrs = array('type'=>'text', 'id'=>'default', 
'name'=>'default', 'value'=>$ac->getDefaultValues(), 
'size'=>$ac->getAttribute1(), 'maxlength'=>$ac->getAttribute2());
+                       if ($ac->getPattern() != '') {
+                               $attrs['pattern'] = $ac->getPattern();
+                       }
+                       echo html_e('input', $attrs);
+                       echo html_ac(html_ap() - 1);
+                       break;
+               case ARTIFACT_EXTRAFIELDTYPE_TEXTAREA:
+                       echo html_ao('p');
+                       echo html_e('label', array('for'=>'default'),_('Default 
value'));
+                       echo html_e('textarea', array('id'=>'default', 
'name'=>'default', 'value'=>$ac->getDefaultValues(), 
'rows'=>$ac->getAttribute1(), 'cols'=>$ac->getAttribute2()));
+                       echo html_ac(html_ap() - 1);
+                       break;
+               case ARTIFACT_EXTRAFIELDTYPE_INTEGER:
+                       echo html_ao('p');
+                       echo html_e('label', array('for'=>'default'),_('Default 
value'));
+                       $attrs = array('type'=>'number', 'id'=>'default', 
'name'=>'default', 'value'=>$ac->getDefaultValues(), 
'size'=>$ac->getAttribute1(), 'maxlength'=>$ac->getAttribute2(), 'min'=>0);
+                       if ($ac->getPattern() != '') {
+                               $attrs['pattern'] = $ac->getPattern();
+                       }
+                       echo html_e('input', $attrs);
+                       echo html_ac(html_ap() - 1);
+                       break;
+//             case ARTIFACT_EXTRAFIELDTYPE_DATETIME:
+               case ARTIFACT_EXTRAFIELDTYPE_USER:
+                       echo html_ao('p');
+                       echo html_e('label', array('for'=>'default'),_('Default 
value'));
+                       $arr = $ac->getAvailableValues();
+                       $selectedRolesId = array();
+                       for ($i=0; $i<count($arr); $i++) {
+                               $selectedRolesId[$i]=$arr[$i]['element_name'];
+                       }
+                       $roles = $ac->getArtifactType()->getGroup()->getRoles();
+                       $userArray = array();
+                       foreach ($roles as $role) {
+                               if (in_array($role->getID(), $selectedRolesId)) 
{
+                                       foreach ($role->getUsers() as $user) {
+                                               $userArray[$user->getID()] = 
$user->getRealName().(($user->getStatus()=='S') ? ' '._('[SUSPENDED]') : '');
+                                       }
+                               }
+                       }
+                       $default = $ac->getDefaultValues();
+                       if (is_integer($default) && 
!isset($userArray[$default]) && $default!=100) {
+                               $checkedUser = user_get_object($default);
+                               $userArray[$checkedUser->getID()] = 
$checkedUser->getRealName().' '._('[DELETED]');
+                       }
+                       asort($userArray,SORT_FLAG_CASE | SORT_STRING);
+                       $keys = array_keys($userArray);
+                       $vals = array_values($userArray);
+                       echo html_build_select_box_from_arrays 
($keys,$vals,'default',$default,true,'nobody');
+                       echo html_ac(html_ap() - 1);
+       }
 
        echo $HTML->warning_msg(_('It is not recommended that you change the 
custom field name because other things are dependent upon it. When you change 
the custom field name, all related items will be changed to the new name.'));
 
diff --git a/src/common/tracker/views/form-updateextrafieldelement.php 
b/src/common/tracker/views/form-updateextrafieldelement.php
index b8b04d1..744396d 100644
--- a/src/common/tracker/views/form-updateextrafieldelement.php
+++ b/src/common/tracker/views/form-updateextrafieldelement.php
@@ -33,6 +33,7 @@ global $HTML;
 */
 $boxid = getIntFromRequest('boxid');
 $ac = new ArtifactExtraField($ath,$boxid);
+$ef_type = $ac->getType();
 if (!$ac || !is_object($ac)) {
        exit_error(_('Unable to create ArtifactExtraField Object'),'tracker');
 } elseif ($ac->isError()) {
@@ -55,6 +56,10 @@ if (!$ac || !is_object($ac)) {
                echo html_ao('p');
                echo html_e('label', array('for'=>'name'), html_e('strong', 
array(), _('Element')._(':')).html_e('br'));
                echo html_e('input', array('type'=>'text', 'id'=>'name', 
'name'=>'name', 'value'=>$ao->getName()));
+               if (in_array($ef_type, 
unserialize(ARTIFACT_EXTRAFIELDTYPE_CHOICETYPE))) {
+                       echo html_build_checkbox('is_default', false, 
$ao->isDefault());
+                       echo html_e('label', array('for'=>'is_default'), 
_('Default value'));
+               }
                echo html_ac(html_ap()-1);
                // Show a pop-up box to choose the possible statuses that this 
element will map to
                if ($ac->getType() == ARTIFACT_EXTRAFIELDTYPE_STATUS) {
diff --git a/src/db/20161018-tracker-field-default-values.sql 
b/src/db/20161018-tracker-field-default-values.sql
new file mode 100644
index 0000000..56de0c1
--- /dev/null
+++ b/src/db/20161018-tracker-field-default-values.sql
@@ -0,0 +1,9 @@
+CREATE TABLE artifact_extra_field_default (
+    default_id serial NOT NULL,
+    extra_field_id integer NOT NULL,
+    default_value text NOT NULL,
+    CONSTRAINT artifact_extra_field_default_pkey PRIMARY KEY (default_id),
+    CONSTRAINT artifact_extra_field_default_extra_field_id_fkey FOREIGN KEY 
(extra_field_id)
+      REFERENCES artifact_extra_field_list (extra_field_id) MATCH SIMPLE
+      ON UPDATE NO ACTION ON DELETE CASCADE
+);
\ No newline at end of file
diff --git a/src/www/include/html.php b/src/www/include/html.php
index 5b2de59..ed9e28a 100644
--- a/src/www/include/html.php
+++ b/src/www/include/html.php
@@ -289,6 +289,27 @@ function html_build_select_box_from_array($vals, 
$select_name, $checked_val = 'x
 }
 
 /**
+ * html_build_radio_button() - Render radio button control
+ *
+ * @param      string          $name           name of control
+ * @param      bool|string     $value          value of control (if false then 
no attribute value)
+ * @param      bool            $checked        true if control should be 
selected
+ * @param      array           $attrs          Array of other attributes for 
this element
+ * @return     html code for radio button control
+ */
+function html_build_radio_button($name, $value, $checked, $attrs=array()) {
+       if ($value === false) {
+               $attrs = array_merge(array('id' => $name, 'name' => $name, 
'type' => 'radio'), $attrs);
+       } else {
+               $attrs = array_merge(array('id' => $name, 'name' => $name, 
'value' => $value, 'type' => 'radio'), $attrs);
+       }
+       if ($checked) {
+               $attrs['checked'] = 'checked';
+       }
+       return html_e('input', $attrs);
+}
+
+/**
  * html_build_radio_buttons_from_arrays() - Takes two arrays, with the first 
array being the "id" or value and the other
  * array being the text you want displayed.
  *
diff --git a/src/www/tracker/admin/index.php b/src/www/tracker/admin/index.php
index 152edc4..cd1779d 100644
--- a/src/www/tracker/admin/index.php
+++ b/src/www/tracker/admin/index.php
@@ -80,6 +80,7 @@ if ($group_id && $atid) {
        if (getStringFromRequest('post_changes') ||
                getStringFromRequest('updownorder_opt') ||
                getStringFromRequest('post_changes_order') ||
+               getStringFromRequest('post_changes_default') ||
                getStringFromRequest('post_changes_alphaorder')) {
                include $gfcommon.'tracker/actions/admin-updates.php';
 
@@ -116,7 +117,7 @@ if ($group_id && $atid) {
                $action = $next;
        } else {
                $actions = array('add_extrafield', 'customize_list', 
'workflow', 'workflow_roles', 'workflow_required_fields', 'add_opt',
-                       'updownorder_opt', 'post_changes_order', 
'post_changes_alphaorder', 'copy_opt', 'add_canned',
+                       'updownorder_opt', 'post_changes_order', 
'post_changes_alphaorder', 'post_changes_default', 'copy_opt', 'add_canned',
                        'clone_tracker', 'edittemplate',
                        'update_canned', 'delete_canned', 'update_box', 
'update_opt', 'delete', 'delete_opt', 'deleteextrafield','update_type');
                $action = '';
@@ -155,6 +156,7 @@ if ($group_id && $atid) {
        } elseif ($action == 'add_opt' ||
                          $action == 'updownorder_opt' ||
                          $action == 'post_changes_order' ||
+                         $action == 'post_changes_default' ||
                          $action == 'post_changes_alphaorder') {
 
                include $gfcommon.'tracker/views/form-addextrafieldoption.php';

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

commit 1491d0c053cdda2a00378d26810d03eacffe629a
Author: Stéphane-Eymeric Bredthauer <[email protected]>
Date:   Tue Oct 18 09:38:51 2016 +0200

    Tracker: methods naming convention

diff --git a/src/common/tracker/ArtifactExtraField.class.php 
b/src/common/tracker/ArtifactExtraField.class.php
index 3b5cf4d..c7215fa 100644
--- a/src/common/tracker/ArtifactExtraField.class.php
+++ b/src/common/tracker/ArtifactExtraField.class.php
@@ -426,20 +426,20 @@ class ArtifactExtraField extends FFError {
        }
 
        /**
-        * is_hidden_on_submit - whether this field is hidden on a new 
submission or not.
+        * isHiddenOnSubmit - whether this field is hidden on a new submission 
or not.
         *
         * @return      boolean required.
         */
-       function is_hidden_on_submit() {
+       function isHiddenOnSubmit() {
                return $this->data_array['is_hidden_on_submit'];
        }
 
        /**
-        * is_disabled - whether this field is disabled or not.
+        * isDisabled - whether this field is disabled or not.
         *
         * @return      boolean required.
         */
-       function is_disabled() {
+       function isDisabled() {
                return $this->data_array['is_disabled'];
        }
 
diff --git a/src/common/tracker/ArtifactType.class.php 
b/src/common/tracker/ArtifactType.class.php
index 910bda3..b784921 100644
--- a/src/common/tracker/ArtifactType.class.php
+++ b/src/common/tracker/ArtifactType.class.php
@@ -739,7 +739,7 @@ class ArtifactType extends FFError {
                        $nef = new ArtifactExtraField($this, $newEFId);
                        // update Dependency between extrafield
                        if ($oef->getParent() != 100) {
-                               if (!$nef->update($nef->getName(), 
$nef->getAttribute1(), $nef->getAttribute2(), $nef->isRequired(), 
$nef->getAlias(), $nef->getShow100(), $nef->getShow100label(), 
$nef->getDescription(), $nef->getPattern(), $newEFIds[$oef->getParent()], 
$nef->isAutoAssign(), $nef->is_hidden_on_submit(), $nef->is_disabled())) {
+                               if (!$nef->update($nef->getName(), 
$nef->getAttribute1(), $nef->getAttribute2(), $nef->isRequired(), 
$nef->getAlias(), $nef->getShow100(), $nef->getShow100label(), 
$nef->getDescription(), $nef->getPattern(), $newEFIds[$oef->getParent()], 
$nef->isAutoAssign(), $nef->isHiddenOnSubmit(), $nef->isDisabled())) {
                                        db_rollback();
                                        $this->setError(_('Error Updating New 
Extra Field Parent')._(':').' '.$nef->getErrorMessage());
                                        return false;
diff --git a/src/common/tracker/views/form-updateextrafield.php 
b/src/common/tracker/views/form-updateextrafield.php
index 9d64679..81048f8 100644
--- a/src/common/tracker/views/form-updateextrafield.php
+++ b/src/common/tracker/views/form-updateextrafield.php
@@ -65,7 +65,7 @@ if (!$ac || !is_object($ac)) {
        echo html_ac(html_ap() - 1);
 
        echo html_ao('p');
-       echo html_build_checkbox('is_disabled', false, $ac->is_disabled());
+       echo html_build_checkbox('is_disabled', false, $ac->isDisabled());
        echo html_e('label', array('for'=>'is_disabled'), _('Field is 
disabled'));
        echo html_ac(html_ap() - 1);
 
@@ -75,7 +75,7 @@ if (!$ac || !is_object($ac)) {
        echo html_ac(html_ap() - 1);
 
        echo html_ao('p');
-       echo html_build_checkbox('is_hidden_on_submit', false, 
$ac->is_hidden_on_submit());
+       echo html_build_checkbox('is_hidden_on_submit', false, 
$ac->isHiddenOnSubmit());
        echo html_e('label', array('for'=>'is_hidden_on_submit'), _('Hide this 
Field on a new submission'));
        echo html_ac(html_ap() - 1);
 

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

Summary of changes:
 src/common/tracker/ArtifactExtraField.class.php    | 211 ++++++++++++++++++++-
 .../tracker/ArtifactExtraFieldElement.class.php    |  83 +++++++-
 src/common/tracker/ArtifactType.class.php          | 142 +++++++++++---
 src/common/tracker/actions/admin-updates.php       |  47 ++++-
 .../tracker/include/ArtifactTypeHtml.class.php     |   6 +-
 .../tracker/include/build_submission_form.php      |   4 +
 src/common/tracker/views/form-addextrafield.php    |   4 +
 .../tracker/views/form-addextrafieldoption.php     |  37 +++-
 src/common/tracker/views/form-updateextrafield.php |  60 +++++-
 .../tracker/views/form-updateextrafieldelement.php |   5 +
 src/db/20161018-tracker-field-default-values.sql   |   9 +
 src/www/include/html.php                           |  21 ++
 src/www/tracker/admin/index.php                    |   4 +-
 13 files changed, 578 insertions(+), 55 deletions(-)
 create mode 100644 src/db/20161018-tracker-field-default-values.sql


hooks/post-receive
-- 
FusionForge

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

Reply via email to