Пример #1
0
 public static function DisplayFromAttCode($oPage, $sAttCode, $sClass, $sTitle, $oAllowedValues, $value, $iInputId, $bMandatory, $sFieldName = '', $sFormPrefix = '', $aArgs, $bSearchMode = false)
 {
     $oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
     $sTargetClass = $oAttDef->GetTargetClass();
     $iMaxComboLength = $oAttDef->GetMaximumComboLength();
     $bAllowTargetCreation = $oAttDef->AllowTargetCreation();
     if (!$bSearchMode) {
         $sDisplayStyle = $oAttDef->GetDisplayStyle();
     } else {
         $sDisplayStyle = 'select';
         // In search mode, always use a drop-down list
     }
     $oWidget = new UIExtKeyWidget($sTargetClass, $iInputId, $sAttCode, $bSearchMode);
     return $oWidget->Display($oPage, $iMaxComboLength, $bAllowTargetCreation, $sTitle, $oAllowedValues, $value, $iInputId, $bMandatory, $sFieldName, $sFormPrefix, $aArgs, null, $sDisplayStyle);
 }
 protected function DisplaySearchField($sClass, $sAttSpec, $aExtraParams, $sPrefix, $sFieldName = null, $aFilterParams = array())
 {
     if (is_null($sFieldName)) {
         $sFieldName = str_replace('->', PARAM_ARROW_SEP, $sAttSpec);
     }
     $iPos = strpos($sAttSpec, '->');
     if ($iPos !== false) {
         $sAttCode = substr($sAttSpec, 0, $iPos);
         $sSubSpec = substr($sAttSpec, $iPos + 2);
         if (!MetaModel::IsValidAttCode($sClass, $sAttCode)) {
             throw new Exception("Invalid attribute code '{$sClass}/{$sAttCode}' in search specification '{$sAttSpec}'");
         }
         $oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode);
         if ($oAttDef->IsLinkSet()) {
             $sTargetClass = $oAttDef->GetLinkedClass();
         } elseif ($oAttDef->IsExternalKey(EXTKEY_ABSOLUTE)) {
             $sTargetClass = $oAttDef->GetTargetClass(EXTKEY_ABSOLUTE);
         } else {
             throw new Exception("Attribute specification '{$sAttSpec}', '{$sAttCode}' should be either a link set or an external key");
         }
         $this->DisplaySearchField($sTargetClass, $sSubSpec, $aExtraParams, $sPrefix, $sFieldName, $aFilterParams);
     } else {
         // $sAttSpec is an attribute code
         //
         $this->add('<span style="white-space: nowrap;padding:5px;display:inline-block;">');
         $sFilterValue = '';
         $sFilterValue = utils::ReadParam($sPrefix . $sFieldName, '', false, 'raw_data');
         $sFilterOpCode = null;
         // Use the default 'loose' OpCode
         $oAttDef = MetaModel::GetAttributeDef($sClass, $sAttSpec);
         if ($oAttDef->IsExternalKey()) {
             $sTargetClass = $oAttDef->GetTargetClass();
             $sFilterDefName = 'PORTAL_TICKETS_SEARCH_FILTER_' . $sAttSpec;
             if (defined($sFilterDefName)) {
                 try {
                     $oFitlerWithParams = DBObjectSearch::FromOQL(constant($sFilterDefName));
                     $sFilterOQL = $oFitlerWithParams->ToOQL(true, $aFilterParams);
                     $oAllowedValues = new DBObjectSet(DBObjectSearch::FromOQL($sFilterOQL), array(), $aFilterParams);
                 } catch (OQLException $e) {
                     throw new Exception("Incorrect filter '{$sFilterDefName}' for attribute '{$sAttcode}': " . $e->getMessage());
                 }
             } else {
                 $oAllowedValues = new DBObjectSet(new DBObjectSearch($sTargetClass));
             }
             $iFieldSize = $oAttDef->GetMaxSize();
             $iMaxComboLength = $oAttDef->GetMaximumComboLength();
             $this->add("<label>" . MetaModel::GetFilterLabel($sClass, $sAttSpec) . ":</label>&nbsp;");
             //$oWidget = UIExtKeyWidget::DIsplayFromAttCode($sAttSpec, $sClass, $oAttDef->GetLabel(), $oAllowedValues, $sFilterValue, $sPrefix.$sFieldName, false, '', $sPrefix, '');
             //$this->add($oWidget->Display($this, $aExtraParams, true /* bSearchMode */));
             $aExtKeyParams = $aExtraParams;
             $aExtKeyParams['iFieldSize'] = $oAttDef->GetMaxSize();
             $aExtKeyParams['iMinChars'] = $oAttDef->GetMinAutoCompleteChars();
             //	                      DisplayFromAttCode($this, $sAttCode, $sClass, $sTitle,              $oAllowedValues, $value,        $iInputId,            $bMandatory, $sFieldName = '', $sFormPrefix = '', $aArgs, $bSearchMode = false)
             $sHtml = UIExtKeyWidget::DisplayFromAttCode($this, $sAttSpec, $sClass, $oAttDef->GetLabel(), $oAllowedValues, $sFilterValue, $sPrefix . $sFieldName, false, $sPrefix . $sFieldName, $sPrefix, $aExtKeyParams, true);
             $this->add($sHtml);
         } else {
             $aAllowedValues = MetaModel::GetAllowedValues_flt($sClass, $sAttSpec, $aExtraParams);
             if (is_null($aAllowedValues)) {
                 // Any value is possible, display an input box
                 $sSanitizedValue = htmlentities($sFilterValue, ENT_QUOTES, 'UTF-8');
                 $this->add("<label>" . MetaModel::GetFilterLabel($sClass, $sAttSpec) . ":</label>&nbsp;<input class=\"textSearch\" name=\"{$sPrefix}{$sFieldName}\" value=\"{$sSanitizedValue}\"/>\n");
             } else {
                 //Enum field or external key, display a combo
                 $sValue = "<select name=\"{$sPrefix}{$sFieldName}\">\n";
                 $sValue .= "<option value=\"\">" . Dict::S('UI:SearchValue:Any') . "</option>\n";
                 foreach ($aAllowedValues as $key => $value) {
                     if ($sFilterValue == $key) {
                         $sSelected = ' selected';
                     } else {
                         $sSelected = '';
                     }
                     $sValue .= "<option value=\"{$key}\"{$sSelected}>{$value}</option>\n";
                 }
                 $sValue .= "</select>\n";
                 $this->add("<label>" . MetaModel::GetFilterLabel($sClass, $sAttSpec) . ":</label>&nbsp;{$sValue}\n");
             }
         }
         unset($aExtraParams[$sFieldName]);
         $this->add('</span> ');
         $sTip = $oAttDef->GetHelpOnSmartSearch();
         if (strlen($sTip) > 0) {
             $sTip = addslashes($sTip);
             $sTip = str_replace(array("\n", "\r"), " ", $sTip);
             // :input does represent in form visible input (INPUT, SELECT, TEXTAREA)
             $this->add_ready_script("\$(':input[name={$sPrefix}{$sFieldName}]').qtip( { content: '{$sTip}', show: 'mouseover', hide: 'mouseout', style: { name: 'dark', tip: 'leftTop' }, position: { corner: { target: 'rightMiddle', tooltip: 'leftTop' }} } );");
         }
     }
 }
 public static function GetFormElementForField($oPage, $sClass, $sAttCode, $oAttDef, $value = '', $sDisplayValue = '', $iId = '', $sNameSuffix = '', $iFlags = 0, $aArgs = array())
 {
     static $iInputId = 0;
     $sFieldPrefix = '';
     $sFormPrefix = isset($aArgs['formPrefix']) ? $aArgs['formPrefix'] : '';
     $sFieldPrefix = isset($aArgs['prefix']) ? $sFormPrefix . $aArgs['prefix'] : $sFormPrefix;
     if ($sDisplayValue == '') {
         $sDisplayValue = $value;
     }
     if (isset($aArgs[$sAttCode]) && empty($value)) {
         // default value passed by the context (either the app context of the operation)
         $value = $aArgs[$sAttCode];
     }
     if (!empty($iId)) {
         $iInputId = $iId;
     } else {
         $iInputId = $oPage->GetUniqueId();
     }
     if (!$oAttDef->IsExternalField()) {
         $bMandatory = 'false';
         if (!$oAttDef->IsNullAllowed() || $iFlags & OPT_ATT_MANDATORY) {
             $bMandatory = 'true';
         }
         $sValidationField = "<span class=\"form_validation\" id=\"v_{$iId}\"></span>";
         $sHelpText = htmlentities($oAttDef->GetHelpOnEdition(), ENT_QUOTES, 'UTF-8');
         $aEventsList = array();
         switch ($oAttDef->GetEditClass()) {
             case 'Date':
                 $aEventsList[] = 'validate';
                 $aEventsList[] = 'keyup';
                 $aEventsList[] = 'change';
                 if ($iFlags & OPT_ATT_MANDATORY && empty($sDisplayValue)) {
                     $sDisplayValue = date($oAttDef->GetDateFormat());
                 }
                 $sHTMLValue = "<input title=\"{$sHelpText}\" class=\"date-pick\" type=\"text\" size=\"12\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" value=\"" . htmlentities($sDisplayValue, ENT_QUOTES, 'UTF-8') . "\" id=\"{$iId}\"/>&nbsp;{$sValidationField}";
                 break;
             case 'DateTime':
                 $aEventsList[] = 'validate';
                 $aEventsList[] = 'keyup';
                 $aEventsList[] = 'change';
                 if ($iFlags & OPT_ATT_MANDATORY && empty($sDisplayValue)) {
                     $sDisplayValue = date($oAttDef->GetDateFormat());
                 }
                 $sHTMLValue = "<input title=\"{$sHelpText}\" class=\"datetime-pick\" type=\"text\" size=\"20\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" value=\"" . htmlentities($sDisplayValue, ENT_QUOTES, 'UTF-8') . "\" id=\"{$iId}\"/>&nbsp;{$sValidationField}";
                 break;
             case 'Duration':
                 $aEventsList[] = 'validate';
                 $aEventsList[] = 'change';
                 $oPage->add_ready_script("\$('#{$iId}_d').bind('keyup change', function(evt, sFormId) { return UpdateDuration('{$iId}'); });");
                 $oPage->add_ready_script("\$('#{$iId}_h').bind('keyup change', function(evt, sFormId) { return UpdateDuration('{$iId}'); });");
                 $oPage->add_ready_script("\$('#{$iId}_m').bind('keyup change', function(evt, sFormId) { return UpdateDuration('{$iId}'); });");
                 $oPage->add_ready_script("\$('#{$iId}_s').bind('keyup change', function(evt, sFormId) { return UpdateDuration('{$iId}'); });");
                 $aVal = AttributeDuration::SplitDuration($value);
                 $sDays = "<input title=\"{$sHelpText}\" type=\"text\" style=\"text-align:right\" size=\"3\" name=\"attr_{$sFieldPrefix}{$sAttCode}[d]{$sNameSuffix}\" value=\"{$aVal['days']}\" id=\"{$iId}_d\"/>";
                 $sHours = "<input title=\"{$sHelpText}\" type=\"text\" style=\"text-align:right\" size=\"2\" name=\"attr_{$sFieldPrefix}{$sAttCode}[h]{$sNameSuffix}\" value=\"{$aVal['hours']}\" id=\"{$iId}_h\"/>";
                 $sMinutes = "<input title=\"{$sHelpText}\" type=\"text\" style=\"text-align:right\" size=\"2\" name=\"attr_{$sFieldPrefix}{$sAttCode}[m]{$sNameSuffix}\" value=\"{$aVal['minutes']}\" id=\"{$iId}_m\"/>";
                 $sSeconds = "<input title=\"{$sHelpText}\" type=\"text\" style=\"text-align:right\" size=\"2\" name=\"attr_{$sFieldPrefix}{$sAttCode}[s]{$sNameSuffix}\" value=\"{$aVal['seconds']}\" id=\"{$iId}_s\"/>";
                 $sHidden = "<input type=\"hidden\" id=\"{$iId}\" value=\"" . htmlentities($value, ENT_QUOTES, 'UTF-8') . "\"/>";
                 $sHTMLValue = Dict::Format('UI:DurationForm_Days_Hours_Minutes_Seconds', $sDays, $sHours, $sMinutes, $sSeconds) . $sHidden . "&nbsp;" . $sValidationField;
                 $oPage->add_ready_script("\$('#{$iId}').bind('update', function(evt, sFormId) { return ToggleDurationField('{$iId}'); });");
                 break;
             case 'Password':
                 $aEventsList[] = 'validate';
                 $aEventsList[] = 'keyup';
                 $aEventsList[] = 'change';
                 $sHTMLValue = "<input title=\"{$sHelpText}\" type=\"password\" size=\"30\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" value=\"" . htmlentities($value, ENT_QUOTES, 'UTF-8') . "\" id=\"{$iId}\"/>&nbsp;{$sValidationField}";
                 break;
             case 'OQLExpression':
             case 'Text':
                 $aEventsList[] = 'validate';
                 $aEventsList[] = 'keyup';
                 $aEventsList[] = 'change';
                 $sEditValue = $oAttDef->GetEditValue($value);
                 $aStyles = array();
                 $sStyle = '';
                 $sWidth = $oAttDef->GetWidth('width', '');
                 if (!empty($sWidth)) {
                     $aStyles[] = 'width:' . $sWidth;
                 }
                 $sHeight = $oAttDef->GetHeight('height', '');
                 if (!empty($sHeight)) {
                     $aStyles[] = 'height:' . $sHeight;
                 }
                 if (count($aStyles) > 0) {
                     $sStyle = 'style="' . implode('; ', $aStyles) . '"';
                 }
                 if ($oAttDef->GetEditClass() == 'OQLExpression') {
                     $sTestResId = 'query_res_' . $sFieldPrefix . $sAttCode . $sNameSuffix;
                     //$oPage->GetUniqueId();
                     $sBaseUrl = utils::GetAbsoluteUrlAppRoot() . 'pages/run_query.php?expression=';
                     $sInitialUrl = $sBaseUrl . urlencode($sEditValue);
                     $sAdditionalStuff = "<a id=\"{$sTestResId}\" target=\"_blank\" href=\"{$sInitialUrl}\">" . Dict::S('UI:Edit:TestQuery') . "</a>";
                     $oPage->add_ready_script("\$('#{$iId}').bind('change keyup', function(evt, sFormId) { \$('#{$sTestResId}').attr('href', '{$sBaseUrl}'+encodeURIComponent(\$(this).val())); } );");
                 } else {
                     $sAdditionalStuff = "";
                 }
                 // Ok, the text area is drawn here
                 $sHTMLValue = "<table><tr><td><textarea class=\"resizable\" title=\"{$sHelpText}\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" rows=\"8\" cols=\"40\" id=\"{$iId}\" {$sStyle}>" . htmlentities($sEditValue, ENT_QUOTES, 'UTF-8') . "</textarea>{$sAdditionalStuff}</td><td>{$sValidationField}</td></tr></table>";
                 break;
             case 'CaseLog':
                 $aStyles = array();
                 $sStyle = '';
                 $sWidth = $oAttDef->GetWidth('width', '');
                 if (!empty($sWidth)) {
                     $aStyles[] = 'width:' . $sWidth;
                 }
                 $sHeight = $oAttDef->GetHeight('height', '');
                 if (!empty($sHeight)) {
                     $aStyles[] = 'height:' . $sHeight;
                 }
                 if (count($aStyles) > 0) {
                     $sStyle = 'style="' . implode('; ', $aStyles) . '"';
                 }
                 $sHeader = '<div class="caselog_input_header">&nbsp;' . Dict::S('UI:CaseLogTypeYourTextHere') . '</div>';
                 $sEditValue = $oAttDef->GetEditValue($value);
                 $sPreviousLog = is_object($value) ? $value->GetAsHTML($oPage, true, array('AttributeText', 'RenderWikiHtml')) : '';
                 $iEntriesCount = is_object($value) ? count($value->GetIndex()) : 0;
                 $sHidden = "<input type=\"hidden\" id=\"{$iId}_count\" value=\"{$iEntriesCount}\"/>";
                 // To know how many entries the case log already contains
                 $sHTMLValue = "<div class=\"caselog\" {$sStyle}><table style=\"width:100%;\"><tr><td>{$sHeader}<textarea style=\"border:0;width:100%\" title=\"{$sHelpText}\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" rows=\"8\" cols=\"40\" id=\"{$iId}\">" . htmlentities($sEditValue, ENT_QUOTES, 'UTF-8') . "</textarea>{$sPreviousLog}</td><td>{$sValidationField}</td></tr></table>{$sHidden}</div>";
                 $oPage->add_ready_script("\$('#{$iId}').bind('keyup change validate', function(evt, sFormId) { return ValidateCaseLogField('{$iId}', {$bMandatory}, sFormId) } );");
                 // Custom validation function
                 break;
             case 'HTML':
                 $oWidget = new UIHTMLEditorWidget($iId, $oAttDef, $sNameSuffix, $sFieldPrefix, $sHelpText, $sValidationField, $value, $bMandatory);
                 $sHTMLValue = $oWidget->Display($oPage, $aArgs);
                 break;
             case 'LinkedSet':
                 if ($oAttDef->IsIndirect()) {
                     $oWidget = new UILinksWidget($sClass, $sAttCode, $iId, $sNameSuffix, $oAttDef->DuplicatesAllowed(), $aArgs);
                 } else {
                     $oWidget = new UILinksWidgetDirect($sClass, $sAttCode, $iId, $sNameSuffix, $aArgs);
                 }
                 $aEventsList[] = 'validate';
                 $aEventsList[] = 'change';
                 $oObj = isset($aArgs['this']) ? $aArgs['this'] : null;
                 $sHTMLValue = $oWidget->Display($oPage, $value, array(), $sFormPrefix, $oObj);
                 break;
             case 'Document':
                 $aEventsList[] = 'validate';
                 $aEventsList[] = 'change';
                 $oDocument = $value;
                 // Value is an ormDocument object
                 $sFileName = '';
                 if (is_object($oDocument)) {
                     $sFileName = $oDocument->GetFileName();
                 }
                 $iMaxFileSize = utils::ConvertToBytes(ini_get('upload_max_filesize'));
                 $sHTMLValue = "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"{$iMaxFileSize}\" />\n";
                 $sHTMLValue .= "<input name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}[filename]\" type=\"hidden\" id=\"{$iId}\" \" value=\"" . htmlentities($sFileName, ENT_QUOTES, 'UTF-8') . "\"/>\n";
                 $sHTMLValue .= "<span id=\"name_{$iInputId}\">{$sFileName}</span><br/>\n";
                 $sHTMLValue .= "<input title=\"{$sHelpText}\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}[fcontents]\" type=\"file\" id=\"file_{$iId}\" onChange=\"UpdateFileName('{$iId}', this.value)\"/>&nbsp;{$sValidationField}\n";
                 break;
             case 'StopWatch':
                 $sHTMLValue = "The edition of a stopwatch is not allowed!!!";
                 break;
             case 'List':
                 // Not editable for now...
                 $sHTMLValue = '';
                 break;
             case 'One Way Password':
                 $aEventsList[] = 'validate';
                 $oWidget = new UIPasswordWidget($sAttCode, $iId, $sNameSuffix);
                 $sHTMLValue = $oWidget->Display($oPage, $aArgs);
                 // Event list & validation is handled  directly by the widget
                 break;
             case 'ExtKey':
                 $aEventsList[] = 'validate';
                 $aEventsList[] = 'change';
                 $oAllowedValues = MetaModel::GetAllowedValuesAsObjectSet($sClass, $sAttCode, $aArgs);
                 $sFieldName = $sFieldPrefix . $sAttCode . $sNameSuffix;
                 $aExtKeyParams = $aArgs;
                 $aExtKeyParams['iFieldSize'] = $oAttDef->GetMaxSize();
                 $aExtKeyParams['iMinChars'] = $oAttDef->GetMinAutoCompleteChars();
                 $sHTMLValue = UIExtKeyWidget::DisplayFromAttCode($oPage, $sAttCode, $sClass, $oAttDef->GetLabel(), $oAllowedValues, $value, $iId, $bMandatory, $sFieldName, $sFormPrefix, $aExtKeyParams);
                 $sHTMLValue .= "<!-- iFlags: {$iFlags} bMandatory: {$bMandatory} -->\n";
                 break;
             case 'RedundancySetting':
                 $sHTMLValue = '<table>';
                 $sHTMLValue .= '<tr>';
                 $sHTMLValue .= '<td>';
                 $sHTMLValue .= '<div id="' . $iId . '">';
                 $sHTMLValue .= $oAttDef->GetDisplayForm($value, $oPage, true);
                 $sHTMLValue .= '</div>';
                 $sHTMLValue .= '</td>';
                 $sHTMLValue .= '<td>' . $sValidationField . '</td>';
                 $sHTMLValue .= '</tr>';
                 $sHTMLValue .= '</table>';
                 $oPage->add_ready_script("\$('#{$iId} :input').bind('keyup change validate', function(evt, sFormId) { return ValidateRedundancySettings('{$iId}',sFormId); } );");
                 // Custom validation function
                 break;
             case 'String':
             default:
                 $aEventsList[] = 'validate';
                 // #@# todo - add context information (depending on dimensions)
                 $aAllowedValues = MetaModel::GetAllowedValues_att($sClass, $sAttCode, $aArgs);
                 $iFieldSize = $oAttDef->GetMaxSize();
                 if ($aAllowedValues !== null) {
                     // Discrete list of values, use a SELECT or RADIO buttons depending on the config
                     $sDisplayStyle = $oAttDef->GetDisplayStyle();
                     switch ($sDisplayStyle) {
                         case 'radio':
                         case 'radio_horizontal':
                         case 'radio_vertical':
                             $sHTMLValue = '';
                             $bVertical = $sDisplayStyle != 'radio_horizontal';
                             $sHTMLValue = $oPage->GetRadioButtons($aAllowedValues, $value, $iId, "attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}", $bMandatory, $bVertical, $sValidationField);
                             $aEventsList[] = 'change';
                             break;
                         case 'select':
                         default:
                             $sHTMLValue = "<select title=\"{$sHelpText}\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" id=\"{$iId}\">\n";
                             $sHTMLValue .= "<option value=\"\">" . Dict::S('UI:SelectOne') . "</option>\n";
                             foreach ($aAllowedValues as $key => $display_value) {
                                 if (count($aAllowedValues) == 1 && $bMandatory == 'true') {
                                     // When there is only once choice, select it by default
                                     $sSelected = ' selected';
                                 } else {
                                     $sSelected = $value == $key ? ' selected' : '';
                                 }
                                 $sHTMLValue .= "<option value=\"{$key}\"{$sSelected}>{$display_value}</option>\n";
                             }
                             $sHTMLValue .= "</select>&nbsp;{$sValidationField}\n";
                             $aEventsList[] = 'change';
                     }
                 } else {
                     $sHTMLValue = "<input title=\"{$sHelpText}\" type=\"text\" size=\"30\" maxlength=\"{$iFieldSize}\" name=\"attr_{$sFieldPrefix}{$sAttCode}{$sNameSuffix}\" value=\"" . htmlentities($sDisplayValue, ENT_QUOTES, 'UTF-8') . "\" id=\"{$iId}\"/>&nbsp;{$sValidationField}";
                     $aEventsList[] = 'keyup';
                     $aEventsList[] = 'change';
                 }
                 break;
         }
         $sPattern = addslashes($oAttDef->GetValidationPattern());
         //'^([0-9]+)$';
         if (!empty($aEventsList)) {
             $sNullValue = $oAttDef->GetNullValue();
             if (!is_numeric($sNullValue)) {
                 $sNullValue = "'{$sNullValue}'";
                 // Add quotes to turn this into a JS string if it's not a number
             }
             $sOriginalValue = $iFlags & OPT_ATT_MUSTCHANGE ? json_encode($value) : 'undefined';
             $oPage->add_ready_script("\$('#{$iId}').bind('" . implode(' ', $aEventsList) . "', function(evt, sFormId) { return ValidateField('{$iId}', '{$sPattern}', {$bMandatory}, sFormId, {$sNullValue}, {$sOriginalValue}) } );\n");
             // Bind to a custom event: validate
         }
         $aDependencies = MetaModel::GetDependentAttributes($sClass, $sAttCode);
         // List of attributes that depend on the current one
         if (count($aDependencies) > 0) {
             // Unbind first to avoid duplicate event handlers in case of reload of the whole (or part of the) form
             $oPage->add_ready_script("\$('#{$iId}').unbind('change.dependencies').bind('change.dependencies', function(evt, sFormId) { return oWizardHelper{$sFormPrefix}.UpdateDependentFields(['" . implode("','", $aDependencies) . "']) } );\n");
             // Bind to a custom event: validate
         }
     }
     $oPage->add_dict_entry('UI:ValueMustBeSet');
     $oPage->add_dict_entry('UI:ValueMustBeChanged');
     $oPage->add_dict_entry('UI:ValueInvalidFormat');
     return "<div>{$sHTMLValue}</div>";
 }
Пример #4
0
 case 'displayHierarchy':
     $oPage->SetContentType('text/html');
     $sTargetClass = utils::ReadParam('sTargetClass', '', false, 'class');
     $sInputId = utils::ReadParam('sInputId', '');
     $sFilter = utils::ReadParam('sFilter', '', false, 'raw_data');
     $sJson = utils::ReadParam('json', '', false, 'raw_data');
     $currValue = utils::ReadParam('value', '');
     $bSearchMode = utils::ReadParam('bSearchMode', 'false') == 'true';
     if (!empty($sJson)) {
         $oWizardHelper = WizardHelper::FromJSON($sJson);
         $oObj = $oWizardHelper->GetTargetObject();
     } else {
         // Search form: no current object
         $oObj = null;
     }
     $oWidget = new UIExtKeyWidget($sTargetClass, $sInputId, '', $bSearchMode);
     $oWidget->DisplayHierarchy($oPage, $sFilter, $currValue, $oObj);
     break;
     ////////////////////////////////////////////////////
     // ui.linkswidget
 ////////////////////////////////////////////////////
 // ui.linkswidget
 case 'doAddObjects':
     $oPage->SetContentType('text/html');
     $sAttCode = utils::ReadParam('sAttCode', '');
     $iInputId = utils::ReadParam('iInputId', '');
     $sSuffix = utils::ReadParam('sSuffix', '');
     $sRemoteClass = utils::ReadParam('sRemoteClass', $sClass, false, 'class');
     $bDuplicates = utils::ReadParam('bDuplicates', 'false') == 'false' ? false : true;
     $sJson = utils::ReadParam('json', '', false, 'raw_data');
     $oWizardHelper = WizardHelper::FromJSON($sJson);
Пример #5
0
 public function GetSiloSelectionForm()
 {
     // List of visible Organizations
     $iCount = 0;
     $oSet = null;
     if (MetaModel::IsValidClass('Organization')) {
         // Display the list of *favorite* organizations... but keeping in mind what is the real number of organizations
         $aFavoriteOrgs = appUserPreferences::GetPref('favorite_orgs', null);
         $oSearchFilter = new DBObjectSearch('Organization');
         $oSearchFilter->SetModifierProperty('UserRightsGetSelectFilter', 'bSearchMode', true);
         $oSet = new CMDBObjectSet($oSearchFilter);
         $iCount = $oSet->Count();
         // total number of existing Orgs
         // Now get the list of Orgs to be displayed in the menu
         $oSearchFilter = DBObjectSearch::FromOQL(ApplicationMenu::GetFavoriteSiloQuery());
         $oSearchFilter->SetModifierProperty('UserRightsGetSelectFilter', 'bSearchMode', true);
         if (!empty($aFavoriteOrgs)) {
             $oSearchFilter->AddCondition('id', $aFavoriteOrgs, 'IN');
         }
         $oSet = new CMDBObjectSet($oSearchFilter);
         // List of favorite orgs
     }
     switch ($iCount) {
         case 0:
             // No such dimension/silo => nothing to select
             $sHtml = '<div id="SiloSelection"><!-- nothing to select --></div>';
             break;
         case 1:
             // Only one possible choice... no selection, but display the value
             $oOrg = $oSet->Fetch();
             $sHtml = '<div id="SiloSelection">' . $oOrg->GetName() . '</div>';
             $sHtml .= '';
             break;
         default:
             $sHtml = '';
             $oAppContext = new ApplicationContext();
             $iCurrentOrganization = $oAppContext->GetCurrentValue('org_id');
             $sHtml = '<div id="SiloSelection">';
             $sHtml .= '<form style="display:inline" action="' . utils::GetAbsoluteUrlAppRoot() . 'pages/UI.php">';
             //<select class="org_combo" name="c[org_id]" title="Pick an organization" onChange="this.form.submit();">';
             $sFavoriteOrgs = '';
             $oWidget = new UIExtKeyWidget('Organization', 'org_id', '', true);
             $sHtml .= $oWidget->Display($this, 50, false, '', $oSet, $iCurrentOrganization, 'org_id', false, 'c[org_id]', '', array('iFieldSize' => 20, 'iMinChars' => MetaModel::GetConfig()->Get('min_autocomplete_chars'), 'sDefaultValue' => Dict::S('UI:AllOrganizations')), null, 'select', false);
             $this->add_ready_script('$("#org_id").bind("extkeychange", function() { $("#SiloSelection form").submit(); } )');
             $this->add_ready_script("\$('#label_org_id').click( function() { \$(this).val(''); \$('#org_id').val(''); return true; } );\n");
             // Add other dimensions/context information to this form
             $oAppContext->Reset('org_id');
             // org_id is handled above and we want to be able to change it here !
             $oAppContext->Reset('menu');
             // don't pass the menu, since a menu may expect more parameters
             $sHtml .= $oAppContext->GetForForm();
             // Pass what remains, if anything...
             $sHtml .= '</form>';
             $sHtml .= '</div>';
     }
     return $sHtml;
 }