protected function lstTramorField_Change($strFormId, $strControlId, $strParameter) { $objControl = QForm::GetControl($strControlId); if ($objControl->SelectedValue != null) { $search = strtolower($objControl->SelectedValue); if ($this->in_array_nocase($search, $this->arrTracmorField)) { $objControl->Warning = "This value has already been selected."; $objControl->SelectedIndex = 0; unset($this->arrTracmorField[substr($objControl->Name, 3)]); } else { $objControl->Warning = ""; $txtDefault = $this->txtMapDefaultValueArray[substr($objControl->Name, 3)]; $lstDefault = $this->lstMapDefaultValueArray[substr($objControl->Name, 3)]; $dtpDefault = $this->dtpDateArray[substr($objControl->Name, 3)]; $this->arrTracmorField[substr($objControl->Name, 3)] = $search; if (substr($objControl->SelectedValue, 0, 8) == "contact_") { $objCustomField = CustomField::LoadByCustomFieldId(substr($objControl->SelectedValue, 8)); // type = Text or TextBox if ($objCustomField->CustomFieldQtypeId != 2) { $txtDefault->Required = $objCustomField->RequiredFlag; // If it is a required text field, then assign the default text for a new entity only if ($objCustomField->RequiredFlag && $objCustomField->DefaultCustomFieldValueId) { $txtDefault->Text = $objCustomField->DefaultCustomFieldValue->ShortDescription; } else { $txtDefault->Text = ""; } $txtDefault->Display = true; $lstDefault->Display = false; $dtpDefault->Display = false; } else { $lstDefault->RemoveAllItems(); $lstDefault->AddItem('- Select One -', null); $lstDefault->Required = true; $objCustomFieldValueArray = CustomFieldValue::LoadArrayByCustomFieldId(substr($objControl->SelectedValue, 8), QQ::Clause(QQ::OrderBy(QQN::CustomFieldValue()->ShortDescription))); if ($objCustomFieldValueArray) { foreach ($objCustomFieldValueArray as $objCustomFieldValue) { $objListItem = new QListItem($objCustomFieldValue->__toString(), $objCustomFieldValue->CustomFieldValueId); // If it is a required field, then select the value on new entities by default if ($objCustomField->RequiredFlag && $objCustomField->DefaultCustomFieldValueId && $objCustomField->DefaultCustomFieldValueId == $objCustomFieldValue->CustomFieldValueId) { $objListItem->Selected = true; } $lstDefault->AddItem($objListItem); } } $txtDefault->Display = false; $lstDefault->Display = true; $dtpDefault->Display = false; } } $txtDefault->Display = true; $lstDefault->Display = false; $dtpDefault->Display = false; } } else { unset($this->arrTracmorField[substr($objControl->Name, 3)]); } }
/** * Gets all associated CustomFieldValues as an array of CustomFieldValue objects * @param QQClause[] $objOptionalClauses additional optional QQClause objects for this query * @return CustomFieldValue[] */ public function GetCustomFieldValueArray($objOptionalClauses = null) { if (is_null($this->intCustomFieldId)) { return array(); } try { return CustomFieldValue::LoadArrayByCustomFieldId($this->intCustomFieldId, $objOptionalClauses); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } }
protected function UpdateCustomFieldFields() { // If switching from select to text or textarea, delete any CustomFieldValues that may exist if ($this->blnEditMode && $this->objCustomField->CustomFieldQtypeId == 2 && ($this->lstCustomFieldQtype->SelectedValue == 1 || $this->lstCustomFieldQtype->SelectedValue == 3)) { $objCustomFieldValueArray = CustomFieldValue::LoadArrayByCustomFieldId($this->objCustomField->CustomFieldId); if ($objCustomFieldValueArray) { foreach ($objCustomFieldValueArray as $objCustomFieldValue) { $objCustomFieldValue->Delete(); } } } // If changing the short_description, we need to change all of the values in the DatagridColumnPreference table if ($this->blnEditMode && $this->objCustomField->ShortDescription != $this->txtShortDescription->Text) { $strQuery = sprintf("UPDATE datagrid_column_preference SET column_name = '%s' WHERE column_name = '%s'", addslashes($this->txtShortDescription->Text), addslashes($this->objCustomField->ShortDescription)); $objDatabase = QApplication::$Database[1]; $objDatabase->NonQuery($strQuery); } // Assign the object variables from the form controls $this->objCustomField->CustomFieldQtypeId = $this->lstCustomFieldQtype->SelectedValue; $this->objCustomField->ShortDescription = $this->txtShortDescription->Text; $this->objCustomField->ActiveFlag = $this->chkActiveFlag->Checked; $this->objCustomField->RequiredFlag = $this->chkRequiredFlag->Checked; $this->objCustomField->SearchableFlag = $this->chkSearchableFlag->Checked; if ($this->blnAssetEntityType && $this->rblAllAssetModels->SelectedValue == 1) { $this->objCustomField->AllAssetModelsFlag = true; } else { $this->objCustomField->AllAssetModelsFlag = false; } }
/** * Deletes all associated CustomFieldValues * @return void */ public function DeleteAllCustomFieldValues() { if (is_null($this->intCustomFieldId)) { throw new QUndefinedPrimaryKeyException('Unable to call UnassociateCustomFieldValue on this unsaved CustomField.'); } // Get the Database Object for this Class $objDatabase = CustomField::GetDatabase(); // Journaling if ($objDatabase->JournalingDatabase) { foreach (CustomFieldValue::LoadArrayByCustomFieldId($this->intCustomFieldId) as $objCustomFieldValue) { $objCustomFieldValue->Journal('DELETE'); } } // Perform the SQL Query $objDatabase->NonQuery(' DELETE FROM `custom_field_value` WHERE `custom_field_id` = ' . $objDatabase->SqlVariable($this->intCustomFieldId) . ' '); }
/** * Creates the custom field controls while looping through an array of CustomField objects * * @param array $objCustomFieldArray of CustomField objects * @param bool $blnEditMode if creating a new entity or editing an existing one * @param QForm $objForm e.g., AssetEditForm * @return array $arrCustomFields of labels and inputs for all custom field controls */ public static function CustomFieldControlsCreate($objCustomFieldArray, $blnEditMode, $objForm, $blnLabels = true, $blnInputs = true, $blnSearch = false) { $arrCustomFields = array(); for ($i = 0; $i < count($objCustomFieldArray); $i++) { if ($blnLabels) { // Create Label for each custom field if (CustomFieldQtype::ToString($objCustomFieldArray[$i]->CustomFieldQtypeId) == 'text area') { $arrCustomFields[$i]['lbl'] = new QPanel($objForm); if ($blnEditMode) { $arrCustomFields[$i]['lbl']->CssClass = 'scrollBox'; } } else { $arrCustomFields[$i]['lbl'] = new QLabel($objForm); } $arrCustomFields[$i]['lbl']->Name = $objCustomFieldArray[$i]->ShortDescription; if ($blnEditMode && $objCustomFieldArray[$i]->CustomFieldSelection && $objCustomFieldArray[$i]->CustomFieldSelection->CustomFieldValue && $objCustomFieldArray[$i]->CustomFieldSelection->CustomFieldValue->ShortDescription != null) { $arrCustomFields[$i]['lbl']->Text = nl2br($objCustomFieldArray[$i]->CustomFieldSelection->CustomFieldValue->ShortDescription); } elseif ($blnEditMode && (!$objCustomFieldArray[$i]->CustomFieldSelection || empty($objCustomFieldArray[$i]->CustomFieldSelection->CustomFieldValue->ShortDescription) && $objCustomFieldArray[$i]->CustomFieldQtypeId == 2)) { $arrCustomFields[$i]['lbl']->Text = 'None'; } } if ($blnInputs) { // Create input for each custom field (either text or list) // Create text inputs if (CustomFieldQtype::ToString($objCustomFieldArray[$i]->CustomFieldQtypeId) == 'text' || CustomFieldQtype::ToString($objCustomFieldArray[$i]->CustomFieldQtypeId) == 'text area') { $arrCustomFields[$i]['input'] = new QTextBox($objForm, $blnSearch ? null : "cf" . $objCustomFieldArray[$i]->CustomFieldId); $arrCustomFields[$i]['input']->Name = $objCustomFieldArray[$i]->ShortDescription; $arrCustomFields[$i]['input']->Required = false; $arrCustomFields[$i]['input']->CausesValidation = true; if (CustomFieldQtype::ToString($objCustomFieldArray[$i]->CustomFieldQtypeId) == 'text area' && !$blnSearch) { $arrCustomFields[$i]['input']->TextMode = QTextMode::MultiLine; } // This is so that the browser doesn't form.submit() when the user presses the enter key on a text input if (!$blnSearch && CustomFieldQtype::ToString($objCustomFieldArray[$i]->CustomFieldQtypeId) != 'text area') { if ($objForm instanceof QControl) { $arrCustomFields[$i]['input']->AddAction(new QEnterKeyEvent(), new QAjaxControlAction($objForm, 'btnSave_Click')); } else { $arrCustomFields[$i]['input']->AddAction(new QEnterKeyEvent(), new QAjaxAction('btnSave_Click')); } $arrCustomFields[$i]['input']->AddAction(new QEnterKeyEvent(), new QTerminateAction()); } elseif ($blnSearch) { if ($objForm instanceof QControl) { $arrCustomFields[$i]['input']->AddAction(new QEnterKeyEvent(), new QServerControlAction($objForm, 'btnSearch_Click')); } else { $arrCustomFields[$i]['input']->AddAction(new QEnterKeyEvent(), new QServerAction('btnSearch_Click')); } $arrCustomFields[$i]['input']->AddAction(new QEnterKeyEvent(), new QTerminateAction()); } if ($blnEditMode && $objCustomFieldArray[$i]->CustomFieldSelection) { $arrCustomFields[$i]['input']->Text = $objCustomFieldArray[$i]->CustomFieldSelection->CustomFieldValue->ShortDescription; } elseif (!$blnEditMode && !$blnSearch && $objCustomFieldArray[$i]->RequiredFlag && $objCustomFieldArray[$i]->DefaultCustomFieldValueId) { $arrCustomFields[$i]['input']->Text = $objCustomFieldArray[$i]->DefaultCustomFieldValue->ShortDescription; } } elseif (CustomFieldQtype::ToString($objCustomFieldArray[$i]->CustomFieldQtypeId) == 'select') { $arrCustomFields[$i]['input'] = new QListBox($objForm, $blnSearch ? null : "cf" . $objCustomFieldArray[$i]->CustomFieldId); $arrCustomFields[$i]['input']->Name = $objCustomFieldArray[$i]->ShortDescription; $arrCustomFields[$i]['input']->Required = false; $objCustomFieldValueArray = CustomFieldValue::LoadArrayByCustomFieldId($objCustomFieldArray[$i]->CustomFieldId, QQ::Clause(QQ::OrderBy(QQN::CustomFieldValue()->ShortDescription))); if ($objCustomFieldValueArray) { // The - Select One - item cannot be removed without also updating CustomField::UpdateControls() $arrCustomFields[$i]['input']->AddItem('- Select One -', null); foreach ($objCustomFieldValueArray as $objCustomFieldValue) { $objListItem = new QListItem($objCustomFieldValue->__toString(), $objCustomFieldValue->CustomFieldValueId); if ($blnEditMode && $objCustomFieldArray[$i]->CustomFieldSelection && $objCustomFieldArray[$i]->CustomFieldSelection->CustomFieldValueId == $objCustomFieldValue->CustomFieldValueId) { $objListItem->Selected = true; } elseif (!$blnEditMode && !$blnSearch && $objCustomFieldArray[$i]->RequiredFlag && $objCustomFieldArray[$i]->DefaultCustomFieldValueId && $objCustomFieldArray[$i]->DefaultCustomFieldValueId == $objCustomFieldValue->CustomFieldValueId) { $objListItem->Selected = true; } $arrCustomFields[$i]['input']->AddItem($objListItem); } } } if ($objCustomFieldArray[$i]->RequiredFlag && !$blnSearch) { $arrCustomFields[$i]['input']->Required = true; } } // Set reference IDs for btnSave_Click() for each custom field $arrCustomFields[$i]['CustomFieldId'] = $objCustomFieldArray[$i]->CustomFieldId; if ($blnEditMode && $objCustomFieldArray[$i]->CustomFieldSelection) { $arrCustomFields[$i]['CustomFieldSelectionId'] = $objCustomFieldArray[$i]->CustomFieldSelection->CustomFieldSelectionId; } //Set an RoleEntityQtypeCustomFieldAuthorization object of View Authorization and for Edit Authorization for each custom field $arrCustomFields[$i]['ViewAuth'] = $objCustomFieldArray[$i]->objRoleAuthView; $arrCustomFields[$i]['EditAuth'] = $objCustomFieldArray[$i]->objRoleAuthEdit; // Set all reference booleans for display logic //set if the custom field must show or not if ($objCustomFieldArray[$i]->objRoleAuthView && $objCustomFieldArray[$i]->objRoleAuthView->AuthorizedFlag || !$objCustomFieldArray[$i]->objRoleAuthView) { $arrCustomFields[$i]['blnView'] = true; } else { $arrCustomFields[$i]['blnView'] = false; } // set if the custom field is editable or not if ($objCustomFieldArray[$i]->objRoleAuthEdit && $objCustomFieldArray[$i]->objRoleAuthEdit->AuthorizedFlag || !$objCustomFieldArray[$i]->objRoleAuthEdit) { $arrCustomFields[$i]['blnEdit'] = true; } else { $arrCustomFields[$i]['blnEdit'] = false; } //set if the custom field is requiered or not if ($objCustomFieldArray[$i]->objRoleAuthEdit && $objCustomFieldArray[$i]->objRoleAuthEdit->EntityQtypeCustomField->CustomField->RequiredFlag) { $arrCustomFields[$i]['blnRequired'] = true; } else { $arrCustomFields[$i]['blnRequired'] = false; } } return $arrCustomFields; }