public function build(Tracker_FormElement $field, $type, array $permissions) { $this->field_id = JsonCast::toInt($field->getId()); $this->name = $field->getName(); $this->label = $field->getLabel(); if ($field instanceof Tracker_FormElement_Field) { $this->required = JsonCast::toBoolean($field->isRequired()); $this->collapsed = false; } else { $this->required = false; $this->collapsed = (bool) $field->isCollapsed(); } $this->default_value = $field->getDefaultValue(); $this->type = $type; $this->values = null; if ($field->getRESTAvailableValues()) { $this->values = $field->getRESTAvailableValues(); } $bindings = $field->getSoapBindingProperties(); $this->bindings = array(self::BIND_TYPE => $bindings[Tracker_FormElement_Field_List_Bind::SOAP_TYPE_KEY], self::BIND_LIST => array_map(function ($binding) { return array(Tracker_REST_FieldRepresentation::BIND_ID => $binding[Tracker_FormElement_Field_List_Bind_Users::SOAP_BINDING_LIST_ID], Tracker_REST_FieldRepresentation::BIND_LABEL => $binding[Tracker_FormElement_Field_List_Bind_Users::SOAP_BINDING_LIST_LABEL]); }, $bindings[Tracker_FormElement_Field_List_Bind::SOAP_LIST_KEY])); $this->permissions = array_map(function ($permission) { switch ($permission) { case Tracker_FormElement::SOAP_PERMISSION_READ: return Tracker_REST_FieldRepresentation::PERM_READ; case Tracker_FormElement::SOAP_PERMISSION_UPDATE: return Tracker_REST_FieldRepresentation::PERM_UPDATE; case Tracker_FormElement::SOAP_PERMISSION_SUBMIT: return Tracker_REST_FieldRepresentation::PERM_CREATE; } }, $permissions); }
/** * html form for the label * * @return string html */ public function fetchLabelForShared() { $html = ''; $html .= '<p>'; $html .= '<label>' . $GLOBALS['Language']->getText('plugin_tracker_include_report', 'field_label') . '</label>'; $html .= $this->formElement->getLabel(); $html .= '<input type="hidden" name="formElement_data[use_it]" value="1" />'; $html .= '</p>'; $html .= $this->fetchCustomHelp(); return $html; }
private function saveValuesMapping(array $mapping_tracker_info, Tracker $mapping_tracker, Tracker_FormElement $field) { if (empty($mapping_tracker_info['values']) || !is_array($mapping_tracker_info['values'])) { return; } $nb_changes = 0; $mapping_changed = false; foreach ($mapping_tracker_info['values'] as $column_id => $values) { if ($this->mappingValuesChanged($mapping_tracker, $column_id, $values)) { $mapping_changed = true; $this->value_dao->deleteAllFieldValues($this->tracker->getId(), $mapping_tracker->getId(), $field->getId(), $column_id); foreach ($values as $value_id) { $nb_changes += $this->value_dao->save($this->tracker->getId(), $mapping_tracker->getId(), $field->getId(), (int) $value_id, $column_id); } } } if ($mapping_changed && $nb_changes > 0) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_cardwall', 'on_top_mapping_values_changed', array($field->getLabel()))); } }