Пример #1
0
                 $oWizardHelper->SetAllowedValuesHtml($sAttCode, $sHTMLValue);
             }
         }
     }
     $oPage->add_script("oWizardHelper{$sFormPrefix}.m_oData=" . $oWizardHelper->ToJSON() . ";\noWizardHelper{$sFormPrefix}.UpdateFields();\n");
     break;
 case 'obj_creation_form':
     $oPage->SetContentType('text/html');
     $sJson = utils::ReadParam('json_obj', '', false, 'raw_data');
     $oWizardHelper = WizardHelper::FromJSON($sJson);
     $oObj = $oWizardHelper->GetTargetObject();
     $sClass = $oWizardHelper->GetTargetClass();
     $sTargetState = utils::ReadParam('target_state', '');
     $iTransactionId = utils::ReadParam('transaction_id', '');
     $oObj->Set(MetaModel::GetStateAttributeCode($sClass), $sTargetState);
     cmdbAbstractObject::DisplayCreationForm($oPage, $sClass, $oObj, array(), array('action' => utils::GetAbsoluteUrlAppRoot() . 'pages/UI.php', 'transaction_id' => $iTransactionId));
     break;
     // DisplayBlock
 // DisplayBlock
 case 'ajax':
     $oPage->SetContentType('text/html');
     if ($sFilter != "") {
         $sExtraParams = stripslashes(utils::ReadParam('extra_params', '', false, 'raw_data'));
         $aExtraParams = array();
         if (!empty($sExtraParams)) {
             $aExtraParams = json_decode(str_replace("'", '"', $sExtraParams), true);
         }
         // Restore the app context from the ExtraParams
         $oAppContext = new ApplicationContext(false);
         // false => don't read the context yet !
         $aContext = array();
Пример #2
0
             //Workaround: reload the object so that the linkedset are displayed properly
             $sNextAction = utils::ReadPostedParam('next_action', '');
             if (!empty($sNextAction)) {
                 $oP->add("<h1>{$sMessage}</h1>");
                 ApplyNextAction($oP, $oObj, $sNextAction);
             } else {
                 // Nothing more to do
                 ReloadAndDisplay($oP, $oObj, 'create', $sMessage, 'ok');
             }
         } else {
             // Found issues, explain and give the user a second chance
             //
             $oP->set_title(Dict::Format('UI:CreationPageTitle_Class', $sClassLabel));
             $oP->add("<h1>" . MetaModel::GetClassIcon($sClass) . "&nbsp;" . Dict::Format('UI:CreationTitle_Class', $sClassLabel) . "</h1>\n");
             $oP->add("<div class=\"wizContainer\">\n");
             cmdbAbstractObject::DisplayCreationForm($oP, $sClass, $oObj);
             $oP->add("</div>\n");
             $sIssueDesc = Dict::Format('UI:ObjectCouldNotBeWritten', implode(', ', $aIssues));
             $oP->add_ready_script("alert('" . addslashes($sIssueDesc) . "');");
         }
     }
     break;
     ///////////////////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////////////////
 case 'select_bulk_stimulus':
     // Form displayed when applying a stimulus to many objects
     $sFilter = utils::ReadParam('filter', '', false, 'raw_data');
     $sStimulus = utils::ReadParam('stimulus', '');
     $sState = utils::ReadParam('state', '');
     if (empty($sFilter) || empty($sStimulus) || empty($sState)) {
         throw new ApplicationException(Dict::Format('UI:Error:3ParametersMissing', 'filter', 'stimulus', 'state'));
Пример #3
0
 /**
  * Get the form to create a new object of the 'target' class
  */
 public function GetObjectCreationForm(WebPage $oPage, $oCurrObject)
 {
     // Set all the default values in an object and clone this "default" object
     $oNewObj = MetaModel::NewObject($this->sTargetClass);
     // 1st - set context values
     $oAppContext = new ApplicationContext();
     $oAppContext->InitObjectFromContext($oNewObj);
     // 2nd set the default values from the constraint on the external key... if any
     if ($oCurrObject != null && $this->sAttCode != '') {
         $oAttDef = MetaModel::GetAttributeDef(get_class($oCurrObject), $this->sAttCode);
         $aParams = array('this' => $oCurrObject);
         $oSet = $oAttDef->GetAllowedValuesAsObjectSet($aParams);
         $aConsts = $oSet->ListConstantFields();
         $sClassAlias = $oSet->GetFilter()->GetClassAlias();
         if (isset($aConsts[$sClassAlias])) {
             foreach ($aConsts[$sClassAlias] as $sAttCode => $value) {
                 $oNewObj->Set($sAttCode, $value);
             }
         }
     }
     // 3rd - set values from the page argument 'default'
     $oNewObj->UpdateObjectFromArg('default');
     $sDialogTitle = '';
     $oPage->add('<div id="ac_create_' . $this->iId . '"><div class="wizContainer" style="vertical-align:top;"><div id="dcr_' . $this->iId . '">');
     $oPage->add("<h1>" . MetaModel::GetClassIcon($this->sTargetClass) . "&nbsp;" . Dict::Format('UI:CreationTitle_Class', MetaModel::GetName($this->sTargetClass)) . "</h1>\n");
     cmdbAbstractObject::DisplayCreationForm($oPage, $this->sTargetClass, $oNewObj, array(), array('formPrefix' => $this->iId, 'noRelations' => true));
     $oPage->add('</div></div></div>');
     //		$oPage->add_ready_script("\$('#ac_create_$this->iId').dialog({ width: $(window).width()*0.8, height: 'auto', autoOpen: false, modal: true, title: '$sDialogTitle'});\n");
     $oPage->add_ready_script("\$('#ac_create_{$this->iId}').dialog({ width: 'auto', height: 'auto', maxHeight: \$(window).height() - 50, autoOpen: false, modal: true, title: '{$sDialogTitle}'});\n");
     $oPage->add_ready_script("\$('#dcr_{$this->iId} form').removeAttr('onsubmit');");
     $oPage->add_ready_script("\$('#dcr_{$this->iId} form').bind('submit.uilinksWizard', oACWidget_{$this->iId}.DoCreateObject);");
 }
 public function GetObjectCreationDlg(WebPage $oPage, $sProposedRealClass = '')
 {
     // For security reasons: check that the "proposed" class is actually a subclass of the linked class
     // and that the current user is allowed to create objects of this class
     $sRealClass = '';
     $oPage->add('<div class="wizContainer" style="vertical-align:top;"><div>');
     $aSubClasses = MetaModel::EnumChildClasses($this->sLinkedClass, ENUM_CHILD_CLASSES_ALL);
     // Including the specified class itself
     $aPossibleClasses = array();
     foreach ($aSubClasses as $sCandidateClass) {
         if (!MetaModel::IsAbstract($sCandidateClass) && UserRights::IsActionAllowed($sCandidateClass, UR_ACTION_MODIFY) == UR_ALLOWED_YES) {
             if ($sCandidateClass == $sProposedRealClass) {
                 $sRealClass = $sProposedRealClass;
             }
             $aPossibleClasses[$sCandidateClass] = MetaModel::GetName($sCandidateClass);
         }
     }
     // Only one of the subclasses can be instantiated...
     if (count($aPossibleClasses) == 1) {
         $aKeys = array_keys($aPossibleClasses);
         $sRealClass = $aKeys[0];
     }
     if ($sRealClass != '') {
         $oPage->add("<h1>" . MetaModel::GetClassIcon($sRealClass) . "&nbsp;" . Dict::Format('UI:CreationTitle_Class', MetaModel::GetName($sRealClass)) . "</h1>\n");
         $oLinksetDef = MetaModel::GetAttributeDef($this->sClass, $this->sAttCode);
         $sExtKeyToMe = $oLinksetDef->GetExtKeyToMe();
         $aFieldFlags = array($sExtKeyToMe => OPT_ATT_HIDDEN);
         cmdbAbstractObject::DisplayCreationForm($oPage, $sRealClass, null, array(), array('formPrefix' => $this->sInputid, 'noRelations' => true, 'fieldsFlags' => $aFieldFlags));
     } else {
         $sClassLabel = MetaModel::GetName($this->sLinkedClass);
         $oPage->add('<p>' . Dict::Format('UI:SelectTheTypeOf_Class_ToCreate', $sClassLabel));
         $oPage->add('<nobr><select name="class">');
         asort($aPossibleClasses);
         foreach ($aPossibleClasses as $sClassName => $sClassLabel) {
             $oPage->add("<option value=\"{$sClassName}\">{$sClassLabel}</option>");
         }
         $oPage->add('</select>');
         $oPage->add('&nbsp; <button type="button" onclick="$(\'#' . $this->sInputid . '\').directlinks(\'subclassSelected\');">' . Dict::S('UI:Button:Apply') . '</button><span class="indicator" style="display:inline-block;width:16px"></span></nobr></p>');
     }
     $oPage->add('</div></div>');
 }