public static function OnMenuCreation() { if (UserRights::IsAdministrator()) { $oAdminMenu = new MenuGroup('AdminTools', 80); new WebPageMenuNode('ConfigEditor', utils::GetAbsoluteUrlModulesRoot() . 'itop-config/config.php', $oAdminMenu->GetIndex(), 18); } }
public function DisplayLoginHeader($bMainAppLogo = false) { if ($bMainAppLogo) { $sLogo = 'itop-logo.png'; $sBrandingLogo = 'main-logo.png'; } else { $sLogo = 'itop-logo-external.png'; $sBrandingLogo = 'login-logo.png'; } $sVersionShort = Dict::Format('UI:iTopVersion:Short', ITOP_VERSION); $sIconUrl = Utils::GetConfig()->Get('app_icon_url'); $sDisplayIcon = utils::GetAbsoluteUrlAppRoot() . 'images/' . $sLogo . '?itopversion=' . ITOP_VERSION; if (file_exists(MODULESROOT . 'branding/' . $sBrandingLogo)) { $sDisplayIcon = utils::GetAbsoluteUrlModulesRoot() . 'branding/' . $sBrandingLogo . '?itopversion=' . ITOP_VERSION; } $this->add("<div id=\"login-logo\"><a href=\"" . htmlentities($sIconUrl, ENT_QUOTES, 'UTF-8') . "\"><img title=\"{$sVersionShort}\" src=\"{$sDisplayIcon}\"></a></div>\n"); }
public static function Init() { $aParams = array('category' => 'bizmodel,searchable,changemgmt', 'key_type' => 'autoincrement', 'name_attcode' => 'ref', 'state_attcode' => 'status', 'reconc_keys' => array('ref'), 'db_table' => 'ticket_change', 'db_key_field' => 'id', 'db_finalclass_field' => '', 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-change-mgmt/images/change.png', 'order_by_default' => array('ref' => false)); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values" => new ValueSetEnum("new,assigned,planned,approved,closed,rejected"), "display_style" => 'list', "sql" => 'status', "default_value" => 'new', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("category", array("allowed_values" => new ValueSetEnum("hardware,software,system,network,application,other"), "display_style" => 'list', "sql" => 'category', "default_value" => 'hardware', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeText("reject_reason", array("allowed_values" => null, "sql" => 'reject_reason', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("changemanager_id", array("targetclass" => 'Person', "allowed_values" => null, "sql" => 'changemanager_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("changemanager_email", array("allowed_values" => null, "extkey_attcode" => 'changemanager_id', "target_attcode" => 'email', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("parent_id", array("targetclass" => 'Change', "allowed_values" => new ValueSetObjects("SELECT Change WHERE id != :this->id"), "sql" => 'parent_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("parent_name", array("allowed_values" => null, "extkey_attcode" => 'parent_id', "target_attcode" => 'ref', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeDateTime("creation_date", array("allowed_values" => null, "sql" => 'creation_date', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeDateTime("approval_date", array("allowed_values" => null, "sql" => 'approval_date', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeText("fallback_plan", array("allowed_values" => null, "sql" => 'fallback_plan', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("outage", array("allowed_values" => new ValueSetEnum("yes,no"), "display_style" => 'list', "sql" => 'outage', "default_value" => 'no', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeLinkedSet("related_request_list", array("linked_class" => 'UserRequest', "ext_key_to_me" => 'parent_change_id', "count_min" => 0, "count_max" => 0, "edit_mode" => LINKSET_EDITMODE_ADDREMOVE, "allowed_values" => null, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeLinkedSet("related_incident_list", array("linked_class" => 'Incident', "ext_key_to_me" => 'parent_change_id', "count_min" => 0, "count_max" => 0, "edit_mode" => LINKSET_EDITMODE_ADDREMOVE, "allowed_values" => null, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeLinkedSet("related_problems_list", array("linked_class" => 'Problem', "ext_key_to_me" => 'related_change_id', "count_min" => 0, "count_max" => 0, "edit_mode" => LINKSET_EDITMODE_ADDREMOVE, "allowed_values" => null, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeLinkedSet("child_changes_list", array("linked_class" => 'Change', "ext_key_to_me" => 'parent_id', "count_min" => 0, "count_max" => 0, "edit_mode" => LINKSET_EDITMODE_ADDREMOVE, "allowed_values" => new ValueSetObjects("SELECT Change WHERE id != :this->id"), "depends_on" => array(), "always_load_in_tables" => false))); // Lifecycle (status attribute: status) // MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_assign", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_plan", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_reject", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_reopen", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_approve", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_finish", array())); MetaModel::Init_DefineState("new", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_MANDATORY, 'title' => OPT_ATT_MANDATORY, 'description' => OPT_ATT_MANDATORY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'reject_reason' => OPT_ATT_HIDDEN, 'creation_date' => OPT_ATT_READONLY, 'approval_date' => OPT_ATT_HIDDEN, 'caller_id' => OPT_ATT_MANDATORY, 'team_id' => OPT_ATT_HIDDEN, 'agent_id' => OPT_ATT_HIDDEN, 'changemanager_id' => OPT_ATT_HIDDEN, 'outage' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state" => "assigned", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineState("assigned", array("attribute_inherit" => 'new', "attribute_list" => array('team_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'agent_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'changemanager_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'caller_id' => OPT_ATT_NORMAL))); MetaModel::Init_DefineTransition("assigned", "ev_plan", array("target_state" => "planned", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineState("planned", array("attribute_inherit" => 'assigned', "attribute_list" => array('start_date' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'end_date' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'fallback_plan' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'caller_id' => OPT_ATT_MANDATORY, 'outage' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT))); MetaModel::Init_DefineTransition("planned", "ev_reject", array("target_state" => "rejected", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("planned", "ev_approve", array("target_state" => "approved", "actions" => array(array('verb' => 'SetCurrentDate', 'params' => array(array('type' => 'attcode', 'value' => "approval_date"))), array('verb' => 'Reset', 'params' => array(array('type' => 'attcode', 'value' => "reject_reason")))), "user_restriction" => null)); MetaModel::Init_DefineState("rejected", array("attribute_inherit" => 'assigned', 'highlight' => array('code' => 'rejected'), "attribute_list" => array('start_date' => OPT_ATT_READONLY, 'end_date' => OPT_ATT_READONLY, 'private_log' => OPT_ATT_READONLY, 'caller_id' => OPT_ATT_READONLY, 'fallback_plan' => OPT_ATT_READONLY, 'category' => OPT_ATT_READONLY, 'parent_id' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_READONLY, 'title' => OPT_ATT_READONLY, 'description' => OPT_ATT_READONLY, 'reject_reason' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'approval_date' => OPT_ATT_READONLY, 'team_id' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_READONLY, 'changemanager_id' => OPT_ATT_READONLY, 'outage' => OPT_ATT_READONLY))); MetaModel::Init_DefineTransition("rejected", "ev_reopen", array("target_state" => "assigned", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineState("approved", array("attribute_inherit" => 'planned', 'highlight' => array('code' => 'approved'), "attribute_list" => array('private_log' => OPT_ATT_NORMAL, 'category' => OPT_ATT_NORMAL, 'parent_id' => OPT_ATT_NORMAL, 'org_id' => OPT_ATT_READONLY, 'title' => OPT_ATT_READONLY, 'description' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'end_date' => OPT_ATT_READONLY, 'reject_reason' => OPT_ATT_READONLY, 'creation_date' => OPT_ATT_HIDDEN, 'approval_date' => OPT_ATT_READONLY, 'caller_id' => OPT_ATT_READONLY, 'team_id' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_READONLY, 'changemanager_id' => OPT_ATT_READONLY, 'fallback_plan' => OPT_ATT_NORMAL, 'outage' => OPT_ATT_READONLY))); MetaModel::Init_DefineTransition("approved", "ev_finish", array("target_state" => "closed", "actions" => array(array('verb' => 'SetCurrentDate', 'params' => array(array('type' => 'attcode', 'value' => "close_date")))), "user_restriction" => null)); MetaModel::Init_DefineState("closed", array("attribute_inherit" => 'approved', 'highlight' => array('code' => 'closed'), "attribute_list" => array('close_date' => OPT_ATT_READONLY, 'creation_date' => OPT_ATT_READONLY, 'private_log' => OPT_ATT_READONLY, 'fallback_plan' => OPT_ATT_READONLY, 'category' => OPT_ATT_READONLY, 'parent_id' => OPT_ATT_READONLY))); // Higlight Scale MetaModel::Init_DefineHighlightScale(array('approved' => array('rank' => 1, 'color' => HILIGHT_CLASS_NONE, 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-change-mgmt/images/change-approved.png'), 'rejected' => array('rank' => 2, 'color' => HILIGHT_CLASS_NONE, 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-change-mgmt/images/change-rejected.png'), 'closed' => array('rank' => 3, 'color' => HILIGHT_CLASS_NONE, 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-change-mgmt/images/change-closed.png'))); MetaModel::Init_SetZListItems('details', array(0 => 'functionalcis_list', 1 => 'contacts_list', 2 => 'workorders_list', 3 => 'related_request_list', 4 => 'related_incident_list', 5 => 'related_problems_list', 6 => 'child_changes_list', 'col:col1' => array('fieldset:Ticket:baseinfo' => array(0 => 'ref', 1 => 'org_id', 2 => 'status', 3 => 'title', 4 => 'description'), 'fieldset:Ticket:contact' => array(0 => 'caller_id', 1 => 'team_id', 2 => 'agent_id', 3 => 'changemanager_id')), 'col:col2' => array('fieldset:Ticket:resolution' => array(0 => 'category', 1 => 'outage', 2 => 'reject_reason', 3 => 'fallback_plan'), 'fieldset:Ticket:relation' => array(0 => 'parent_id')), 'col:col3' => array('fieldset:Ticket:date' => array(0 => 'creation_date', 1 => 'start_date', 2 => 'end_date', 3 => 'last_update', 4 => 'approval_date', 5 => 'close_date')))); MetaModel::Init_SetZListItems('standard_search', array(0 => 'ref', 1 => 'title', 2 => 'org_id', 3 => 'status', 4 => 'start_date', 5 => 'end_date', 6 => 'creation_date', 7 => 'last_update', 8 => 'close_date', 9 => 'team_id', 10 => 'agent_id', 11 => 'changemanager_id')); MetaModel::Init_SetZListItems('list', array(0 => 'title', 1 => 'org_id', 2 => 'start_date', 3 => 'end_date', 4 => 'status', 5 => 'category', 6 => 'agent_id')); }
public static function Init() { $aParams = array('category' => 'bizmodel,searchable,problemmgmt', 'key_type' => 'autoincrement', 'name_attcode' => 'ref', 'state_attcode' => 'status', 'reconc_keys' => array('ref'), 'db_table' => 'ticket_problem', 'db_key_field' => 'id', 'db_finalclass_field' => '', 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-problem-mgmt/images/problem.png', 'order_by_default' => array('ref' => false)); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values" => new ValueSetEnum("new,assigned,resolved,closed"), "display_style" => 'list', "sql" => 'status', "default_value" => 'new', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("service_id", array("targetclass" => 'Service', "allowed_values" => new ValueSetObjects("SELECT Service"), "sql" => 'service_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array('org_id'), "allow_target_creation" => false, "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("service_name", array("allowed_values" => null, "extkey_attcode" => 'service_id', "target_attcode" => 'name', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("servicesubcategory_id", array("targetclass" => 'ServiceSubcategory', "allowed_values" => new ValueSetObjects("SELECT ServiceSubcategory WHERE service_id = :this->service_id"), "sql" => 'servicesubcategory_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array('service_id'), "allow_target_creation" => false, "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("servicesubcategory_name", array("allowed_values" => null, "extkey_attcode" => 'servicesubcategory_id', "target_attcode" => 'name', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeString("product", array("allowed_values" => null, "sql" => 'product', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("impact", array("allowed_values" => new ValueSetEnum("1,2,3"), "display_style" => 'list', "sql" => 'impact', "default_value" => '1', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("urgency", array("allowed_values" => new ValueSetEnum("1,2,3,4"), "display_style" => 'list', "sql" => 'urgency', "default_value" => '1', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("priority", array("allowed_values" => new ValueSetEnum("1,2,3,4"), "display_style" => 'list', "sql" => 'priority', "default_value" => '1', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("related_change_id", array("targetclass" => 'Change', "allowed_values" => new ValueSetObjects("SELECT Change WHERE status != \"closed\""), "sql" => 'related_change_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("related_change_ref", array("allowed_values" => null, "extkey_attcode" => 'related_change_id', "target_attcode" => 'ref', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeDateTime("assignment_date", array("allowed_values" => null, "sql" => 'assignment_date', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeDateTime("resolution_date", array("allowed_values" => null, "sql" => 'resolution_date', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeLinkedSet("knownerrors_list", array("linked_class" => 'KnownError', "ext_key_to_me" => 'problem_id', "count_min" => 0, "count_max" => 0, "edit_mode" => LINKSET_EDITMODE_ADDONLY, "allowed_values" => null, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeLinkedSet("related_request_list", array("linked_class" => 'UserRequest', "ext_key_to_me" => 'parent_problem_id', "count_min" => 0, "count_max" => 0, "edit_mode" => LINKSET_EDITMODE_ADDREMOVE, "allowed_values" => null, "depends_on" => array(), "always_load_in_tables" => false))); // Lifecycle (status attribute: status) // MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_assign", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_reassign", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_resolve", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_close", array())); MetaModel::Init_DefineState("new", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_MUSTCHANGE, 'team_id' => OPT_ATT_HIDDEN, 'agent_id' => OPT_ATT_HIDDEN, 'description' => OPT_ATT_MUSTCHANGE, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'impact' => OPT_ATT_MUSTCHANGE, 'urgency' => OPT_ATT_MUSTCHANGE, 'priority' => OPT_ATT_READONLY, 'assignment_date' => OPT_ATT_HIDDEN, 'resolution_date' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state" => "assigned", "actions" => array('SetAssignedDate'), "user_restriction" => null)); MetaModel::Init_DefineState("assigned", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'team_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'agent_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'priority' => OPT_ATT_READONLY, 'assignment_date' => OPT_ATT_READONLY, 'resolution_date' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("assigned", "ev_reassign", array("target_state" => "assigned", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("assigned", "ev_resolve", array("target_state" => "resolved", "actions" => array('SetResolveDate'), "user_restriction" => null)); MetaModel::Init_DefineState("resolved", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_READONLY, 'team_id' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_READONLY, 'caller_id' => OPT_ATT_READONLY, 'title' => OPT_ATT_READONLY, 'description' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'service_id' => OPT_ATT_MANDATORY, 'servicesubcategory_id' => OPT_ATT_MUSTPROMPT, 'product' => OPT_ATT_MUSTPROMPT, 'impact' => OPT_ATT_READONLY, 'urgency' => OPT_ATT_READONLY, 'priority' => OPT_ATT_READONLY, 'assignment_date' => OPT_ATT_READONLY, 'resolution_date' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("resolved", "ev_reassign", array("target_state" => "assigned", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("resolved", "ev_close", array("target_state" => "closed", "actions" => array('SetClosureDate'), "user_restriction" => null)); MetaModel::Init_DefineState("closed", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_READONLY, 'team_id' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_READONLY, 'caller_id' => OPT_ATT_READONLY, 'title' => OPT_ATT_READONLY, 'description' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_READONLY, 'private_log' => OPT_ATT_READONLY, 'service_id' => OPT_ATT_READONLY, 'servicesubcategory_id' => OPT_ATT_READONLY, 'product' => OPT_ATT_READONLY, 'impact' => OPT_ATT_READONLY, 'urgency' => OPT_ATT_READONLY, 'priority' => OPT_ATT_READONLY, 'assignment_date' => OPT_ATT_READONLY, 'resolution_date' => OPT_ATT_HIDDEN, 'related_change_id' => OPT_ATT_READONLY))); MetaModel::Init_SetZListItems('details', array(0 => 'functionalcis_list', 1 => 'contacts_list', 2 => 'knownerrors_list', 3 => 'workorders_list', 4 => 'related_request_list', 'col:col1' => array('fieldset:Ticket:baseinfo' => array(0 => 'ref', 1 => 'title', 2 => 'org_id', 3 => 'status', 4 => 'priority', 5 => 'service_id', 6 => 'servicesubcategory_id', 7 => 'product'), 'fieldset:Ticket:moreinfo' => array(0 => 'impact', 1 => 'urgency', 2 => 'description')), 'col:col2' => array('fieldset:Ticket:date' => array(0 => 'start_date', 1 => 'last_update', 2 => 'assignment_date', 3 => 'resolution_date', 4 => 'close_date'), 'fieldset:Ticket:contact' => array(0 => 'caller_id', 1 => 'team_id', 2 => 'agent_id'), 'fieldset:Ticket:relation' => array(0 => 'related_change_id')))); MetaModel::Init_SetZListItems('standard_search', array(0 => 'ref', 1 => 'title', 2 => 'org_id', 3 => 'start_date', 4 => 'status', 5 => 'service_id', 6 => 'servicesubcategory_id', 7 => 'product', 8 => 'impact', 9 => 'urgency', 10 => 'priority', 11 => 'caller_id', 12 => 'team_id', 13 => 'agent_id', 14 => 'close_date')); MetaModel::Init_SetZListItems('list', array(0 => 'title', 1 => 'org_id', 2 => 'start_date', 3 => 'status', 4 => 'service_id', 5 => 'priority')); }
public static function Init() { $aParams = array('category' => 'bizmodel,searchable,configmgmt', 'key_type' => 'autoincrement', 'name_attcode' => 'name', 'state_attcode' => '', 'reconc_keys' => array('name', 'org_id', 'owner_name'), 'db_table' => 'group', 'db_key_field' => 'id', 'db_finalclass_field' => '', 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-config-mgmt/images/group.png'); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values" => null, "sql" => 'name', "default_value" => '', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values" => new ValueSetEnum("production,implementation,obsolete"), "display_style" => 'list', "sql" => 'status', "default_value" => 'implementation', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass" => 'Organization', "allowed_values" => null, "sql" => 'org_id', "is_null_allowed" => false, "on_target_delete" => DEL_MANUAL, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("owner_name", array("allowed_values" => null, "extkey_attcode" => 'org_id', "target_attcode" => 'name', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values" => null, "sql" => 'description', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeString("type", array("allowed_values" => null, "sql" => 'type', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeHierarchicalKey("parent_id", array("allowed_values" => null, "sql" => 'parent_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array('org_id'), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("parent_name", array("allowed_values" => null, "extkey_attcode" => 'parent_id', "target_attcode" => 'name', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ci_list", array("linked_class" => 'lnkGroupToCI', "ext_key_to_me" => 'group_id', "ext_key_to_remote" => 'ci_id', "allowed_values" => null, "count_min" => 0, "count_max" => 0, "duplicates" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_SetZListItems('details', array(0 => 'name', 1 => 'status', 2 => 'org_id', 3 => 'type', 4 => 'description', 5 => 'parent_id', 6 => 'ci_list')); MetaModel::Init_SetZListItems('standard_search', array(0 => 'name', 1 => 'status', 2 => 'org_id', 3 => 'type')); MetaModel::Init_SetZListItems('list', array(0 => 'status', 1 => 'org_id', 2 => 'type', 3 => 'parent_id')); }
public static function Init() { $aParams = array('category' => 'bizmodel,searchable,changemgmt', 'key_type' => 'autoincrement', 'name_attcode' => 'ref', 'state_attcode' => 'status', 'reconc_keys' => array('ref'), 'db_table' => 'change_emergency', 'db_key_field' => 'id', 'db_finalclass_field' => '', 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-change-mgmt-itil/images/change.png', 'order_by_default' => array('ref' => false)); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); // Lifecycle (status attribute: status) // MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_assign", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_reopen", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_plan", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_approve", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_replan", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_notapprove", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_implement", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_monitor", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_finish", array())); MetaModel::Init_DefineState("new", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_HIDDEN, 'team_id' => OPT_ATT_HIDDEN, 'title' => OPT_ATT_MANDATORY, 'start_date' => OPT_ATT_HIDDEN, 'end_date' => OPT_ATT_HIDDEN, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'reason' => OPT_ATT_HIDDEN, 'requestor_id' => OPT_ATT_MANDATORY, 'creation_date' => OPT_ATT_READONLY, 'impact' => OPT_ATT_HIDDEN, 'supervisor_group_id' => OPT_ATT_HIDDEN, 'supervisor_id' => OPT_ATT_HIDDEN, 'manager_group_id' => OPT_ATT_HIDDEN, 'manager_id' => OPT_ATT_HIDDEN, 'outage' => OPT_ATT_HIDDEN, 'fallback' => OPT_ATT_HIDDEN, 'approval_date' => OPT_ATT_HIDDEN, 'approval_comment' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state" => "assigned", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineState("validated", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_HIDDEN, 'title' => OPT_ATT_MANDATORY, 'description' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_HIDDEN, 'end_date' => OPT_ATT_HIDDEN, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'reason' => OPT_ATT_READONLY, 'requestor_id' => OPT_ATT_READONLY, 'creation_date' => OPT_ATT_READONLY, 'impact' => OPT_ATT_HIDDEN, 'team_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'supervisor_group_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'supervisor_id' => OPT_ATT_HIDDEN, 'manager_group_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'manager_id' => OPT_ATT_HIDDEN, 'outage' => OPT_ATT_HIDDEN, 'fallback' => OPT_ATT_HIDDEN, 'approval_date' => OPT_ATT_HIDDEN, 'approval_comment' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineState("rejected", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_HIDDEN, 'title' => OPT_ATT_MANDATORY, 'start_date' => OPT_ATT_HIDDEN, 'end_date' => OPT_ATT_HIDDEN, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'reason' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'requestor_id' => OPT_ATT_MANDATORY, 'creation_date' => OPT_ATT_READONLY, 'impact' => OPT_ATT_HIDDEN, 'supervisor_group_id' => OPT_ATT_HIDDEN, 'supervisor_id' => OPT_ATT_HIDDEN, 'manager_group_id' => OPT_ATT_HIDDEN, 'manager_id' => OPT_ATT_HIDDEN, 'outage' => OPT_ATT_HIDDEN, 'fallback' => OPT_ATT_HIDDEN, 'approval_date' => OPT_ATT_HIDDEN, 'approval_comment' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineState("assigned", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'team_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'title' => OPT_ATT_MANDATORY, 'description' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_HIDDEN, 'end_date' => OPT_ATT_HIDDEN, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'reason' => OPT_ATT_READONLY, 'requestor_id' => OPT_ATT_READONLY, 'creation_date' => OPT_ATT_READONLY, 'impact' => OPT_ATT_HIDDEN, 'supervisor_group_id' => OPT_ATT_MANDATORY, 'supervisor_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'manager_group_id' => OPT_ATT_MANDATORY, 'manager_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'outage' => OPT_ATT_HIDDEN, 'fallback' => OPT_ATT_HIDDEN, 'approval_date' => OPT_ATT_HIDDEN, 'approval_comment' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("assigned", "ev_plan", array("target_state" => "plannedscheduled", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineState("plannedscheduled", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_MANDATORY, 'team_id' => OPT_ATT_MANDATORY, 'title' => OPT_ATT_MANDATORY, 'description' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'end_date' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'reason' => OPT_ATT_READONLY, 'requestor_id' => OPT_ATT_READONLY, 'creation_date' => OPT_ATT_READONLY, 'impact' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'supervisor_group_id' => OPT_ATT_MANDATORY, 'supervisor_id' => OPT_ATT_MANDATORY, 'manager_group_id' => OPT_ATT_MANDATORY, 'manager_id' => OPT_ATT_MANDATORY, 'outage' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'fallback' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'approval_date' => OPT_ATT_HIDDEN, 'approval_comment' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("plannedscheduled", "ev_approve", array("target_state" => "approved", "actions" => array('ResetRejectReason'), "user_restriction" => null)); MetaModel::Init_DefineTransition("plannedscheduled", "ev_notapprove", array("target_state" => "notapproved", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineState("approved", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_MANDATORY, 'team_id' => OPT_ATT_MANDATORY, 'title' => OPT_ATT_MANDATORY, 'description' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_MANDATORY, 'end_date' => OPT_ATT_MANDATORY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'reason' => OPT_ATT_READONLY, 'requestor_id' => OPT_ATT_READONLY, 'creation_date' => OPT_ATT_READONLY, 'impact' => OPT_ATT_READONLY, 'supervisor_group_id' => OPT_ATT_READONLY, 'supervisor_id' => OPT_ATT_READONLY, 'manager_group_id' => OPT_ATT_READONLY, 'manager_id' => OPT_ATT_READONLY, 'outage' => OPT_ATT_READONLY, 'fallback' => OPT_ATT_MANDATORY, 'approval_date' => OPT_ATT_MANDATORY, 'approval_comment' => OPT_ATT_MANDATORY))); MetaModel::Init_DefineTransition("approved", "ev_implement", array("target_state" => "implemented", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineState("notapproved", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_MANDATORY, 'team_id' => OPT_ATT_MANDATORY, 'title' => OPT_ATT_MANDATORY, 'description' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_MANDATORY, 'end_date' => OPT_ATT_MANDATORY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'reason' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'requestor_id' => OPT_ATT_READONLY, 'creation_date' => OPT_ATT_READONLY, 'impact' => OPT_ATT_READONLY, 'supervisor_group_id' => OPT_ATT_READONLY, 'supervisor_id' => OPT_ATT_READONLY, 'manager_group_id' => OPT_ATT_READONLY, 'manager_id' => OPT_ATT_READONLY, 'outage' => OPT_ATT_MANDATORY, 'fallback' => OPT_ATT_MANDATORY, 'approval_date' => OPT_ATT_HIDDEN, 'approval_comment' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("notapproved", "ev_replan", array("target_state" => "plannedscheduled", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineState("implemented", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_MANDATORY, 'team_id' => OPT_ATT_MANDATORY, 'title' => OPT_ATT_READONLY, 'description' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'end_date' => OPT_ATT_MANDATORY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'reason' => OPT_ATT_READONLY, 'requestor_id' => OPT_ATT_READONLY, 'creation_date' => OPT_ATT_READONLY, 'impact' => OPT_ATT_READONLY, 'supervisor_group_id' => OPT_ATT_READONLY, 'supervisor_id' => OPT_ATT_READONLY, 'manager_group_id' => OPT_ATT_READONLY, 'manager_id' => OPT_ATT_READONLY, 'outage' => OPT_ATT_READONLY, 'fallback' => OPT_ATT_MANDATORY, 'approval_date' => OPT_ATT_READONLY, 'approval_comment' => OPT_ATT_READONLY))); MetaModel::Init_DefineTransition("implemented", "ev_monitor", array("target_state" => "monitored", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("implemented", "ev_finish", array("target_state" => "closed", "actions" => array('SetClosureDate'), "user_restriction" => null)); MetaModel::Init_DefineState("monitored", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_READONLY, 'team_id' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_READONLY, 'title' => OPT_ATT_READONLY, 'caller_id' => OPT_ATT_READONLY, 'team_id' => OPT_ATT_READONLY, 'parent_id' => OPT_ATT_READONLY, 'description' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'end_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'reason' => OPT_ATT_READONLY, 'requestor_id' => OPT_ATT_READONLY, 'creation_date' => OPT_ATT_READONLY, 'impact' => OPT_ATT_READONLY, 'supervisor_group_id' => OPT_ATT_READONLY, 'supervisor_id' => OPT_ATT_READONLY, 'manager_group_id' => OPT_ATT_READONLY, 'manager_id' => OPT_ATT_READONLY, 'outage' => OPT_ATT_READONLY, 'fallback' => OPT_ATT_READONLY, 'approval_date' => OPT_ATT_READONLY, 'approval_comment' => OPT_ATT_READONLY))); MetaModel::Init_DefineTransition("monitored", "ev_finish", array("target_state" => "closed", "actions" => array('SetClosureDate'), "user_restriction" => null)); MetaModel::Init_DefineState("closed", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_READONLY, 'team_id' => OPT_ATT_READONLY, 'caller_id' => OPT_ATT_READONLY, 'title' => OPT_ATT_READONLY, 'description' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'end_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_READONLY, 'reason' => OPT_ATT_READONLY, 'requestor_id' => OPT_ATT_READONLY, 'creation_date' => OPT_ATT_READONLY, 'impact' => OPT_ATT_READONLY, 'team_id' => OPT_ATT_READONLY, 'supervisor_group_id' => OPT_ATT_READONLY, 'supervisor_id' => OPT_ATT_READONLY, 'manager_group_id' => OPT_ATT_READONLY, 'manager_id' => OPT_ATT_READONLY, 'outage' => OPT_ATT_READONLY, 'fallback' => OPT_ATT_READONLY, 'private_log' => OPT_ATT_READONLY, 'approval_date' => OPT_ATT_READONLY, 'approval_comment' => OPT_ATT_READONLY, 'parent_id' => OPT_ATT_READONLY))); MetaModel::Init_SetZListItems('details', array(0 => 'functionalcis_list', 1 => 'contacts_list', 2 => 'workorders_list', 3 => 'related_request_list', 4 => 'related_incident_list', 5 => 'related_problems_list', 6 => 'child_changes_list', 'col:col1' => array('fieldset:Ticket:baseinfo' => array(0 => 'ref', 1 => 'org_id', 2 => 'status', 3 => 'title', 4 => 'description', 5 => 'approval_comment'), 'fieldset:Ticket:contact' => array(0 => 'caller_id', 1 => 'team_id', 2 => 'agent_id', 3 => 'supervisor_group_id', 4 => 'supervisor_id', 5 => 'manager_group_id', 6 => 'manager_id')), 'col:col2' => array('fieldset:Ticket:resolution' => array(0 => 'reason', 1 => 'impact', 2 => 'outage', 3 => 'fallback'), 'fieldset:Ticket:relation' => array(0 => 'parent_id')), 'col:col3' => array('fieldset:Ticket:date' => array(0 => 'creation_date', 1 => 'start_date', 2 => 'end_date', 3 => 'last_update', 4 => 'approval_date', 5 => 'close_date')))); MetaModel::Init_SetZListItems('standard_search', array(0 => 'ref', 1 => 'org_id', 2 => 'status', 3 => 'title', 4 => 'description', 5 => 'caller_id', 6 => 'team_id', 7 => 'agent_id', 8 => 'supervisor_group_id', 9 => 'supervisor_id', 10 => 'manager_group_id', 11 => 'manager_id', 12 => 'reason', 13 => 'impact', 14 => 'outage', 15 => 'parent_id', 16 => 'creation_date', 17 => 'start_date', 18 => 'end_date', 19 => 'last_update', 20 => 'approval_date', 21 => 'close_date')); MetaModel::Init_SetZListItems('list', array(0 => 'finalclass', 1 => 'title', 2 => 'org_id', 3 => 'start_date', 4 => 'end_date', 5 => 'status', 6 => 'agent_id')); }
public static function Init() { $aParams = array('category' => 'bizmodel,searchable,knownerrormgmt', 'key_type' => 'autoincrement', 'name_attcode' => 'title', 'state_attcode' => '', 'reconc_keys' => array('title'), 'db_table' => 'faq', 'db_key_field' => 'id', 'db_finalclass_field' => '', 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-knownerror-mgmt/images/faq.png'); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); MetaModel::Init_AddAttribute(new AttributeString("title", array("allowed_values" => null, "sql" => 'title', "default_value" => '', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeText("summary", array("allowed_values" => null, "sql" => 'summary', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeHTML("description", array("allowed_values" => null, "sql" => 'description', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("category_id", array("targetclass" => 'FAQCategory', "allowed_values" => null, "sql" => 'category_id', "is_null_allowed" => false, "on_target_delete" => DEL_MANUAL, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("category_name", array("allowed_values" => null, "extkey_attcode" => 'category_id', "target_attcode" => 'name', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeString("error_code", array("allowed_values" => null, "sql" => 'error_code', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeString("key_words", array("allowed_values" => null, "sql" => 'key_words', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_SetZListItems('details', array(0 => 'category_id', 1 => 'title', 2 => 'error_code', 3 => 'key_words', 4 => 'summary', 5 => 'description')); MetaModel::Init_SetZListItems('standard_search', array(0 => 'category_id', 1 => 'title', 2 => 'summary', 3 => 'error_code', 4 => 'key_words')); MetaModel::Init_SetZListItems('list', array(0 => 'category_id', 1 => 'error_code', 2 => 'key_words')); }
public function GetAbsoluteUrlModulesRoot() { return utils::GetAbsoluteUrlModulesRoot(); }
public static function Init() { $aParams = array('category' => 'bizmodel,searchable', 'key_type' => 'autoincrement', 'name_attcode' => 'name', 'state_attcode' => '', 'reconc_keys' => array('name', 'org_id', 'organization_name'), 'db_table' => 'peripheral', 'db_key_field' => 'id', 'db_finalclass_field' => '', 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-endusers-devices/images/peripherals.png'); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); MetaModel::Init_SetZListItems('details', array(0 => 'name', 1 => 'org_id', 2 => 'status', 3 => 'business_criticity', 4 => 'location_id', 5 => 'brand_id', 6 => 'model_id', 7 => 'serialnumber', 8 => 'asset_number', 9 => 'move2production', 10 => 'purchase_date', 11 => 'end_of_warranty', 12 => 'description', 13 => 'contacts_list', 14 => 'documents_list', 15 => 'providercontracts_list', 16 => 'services_list')); MetaModel::Init_SetZListItems('standard_search', array(0 => 'name', 1 => 'org_id', 2 => 'status', 3 => 'business_criticity', 4 => 'location_id', 5 => 'brand_id', 6 => 'model_id', 7 => 'serialnumber', 8 => 'asset_number', 9 => 'move2production', 10 => 'purchase_date', 11 => 'end_of_warranty')); MetaModel::Init_SetZListItems('list', array(0 => 'org_id', 1 => 'status', 2 => 'business_criticity', 3 => 'location_id', 4 => 'brand_id', 5 => 'model_id', 6 => 'serialnumber')); }
/** * Replaces all the parameters by the values passed in the hash array */ public static function ApplyParams($sInput, $aParams) { // Declare magic parameters $aParams['APP_URL'] = utils::GetAbsoluteUrlAppRoot(); $aParams['MODULES_URL'] = utils::GetAbsoluteUrlModulesRoot(); $aSearches = array(); $aReplacements = array(); foreach ($aParams as $sSearch => $replace) { // Some environment parameters are objects, we just need scalars if (is_object($replace)) { $iPos = strpos($sSearch, '->object()'); if ($iPos !== false) { // Expand the parameters for the object $sName = substr($sSearch, 0, $iPos); if (preg_match_all('/\\$' . $sName . '->([^\\$]+)\\$/', $sInput, $aMatches)) { foreach ($aMatches[1] as $sPlaceholderAttCode) { try { $sReplacement = $replace->GetForTemplate($sPlaceholderAttCode); if ($sReplacement !== null) { $aReplacements[] = $sReplacement; $aSearches[] = '$' . $sName . '->' . $sPlaceholderAttCode . '$'; } } catch (Exception $e) { // No replacement will occur } } } } else { continue; // Ignore this non-scalar value } } $aSearches[] = '$' . $sSearch . '$'; $aReplacements[] = (string) $replace; } return str_replace($aSearches, $aReplacements, $sInput); }
public static function Init() { $aParams = array('category' => 'bizmodel,searchable,requestmgmt', 'key_type' => 'autoincrement', 'name_attcode' => 'ref', 'state_attcode' => 'status', 'reconc_keys' => array('ref'), 'db_table' => 'ticket_request', 'db_key_field' => 'id', 'db_finalclass_field' => '', 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-request-mgmt-itil/images/user-request.png', 'order_by_default' => array('ref' => false)); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values" => new ValueSetEnum("new,waiting_for_approval,approved,rejected,assigned,pending,escalated_tto,escalated_ttr,resolved,closed"), "display_style" => 'list', "sql" => 'status', "default_value" => 'new', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => true))); MetaModel::Init_AddAttribute(new AttributeEnum("request_type", array("allowed_values" => new ValueSetEnum("service_request"), "display_style" => 'list', "sql" => 'request_type', "default_value" => 'service_request', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("impact", array("allowed_values" => new ValueSetEnum("1,2,3"), "display_style" => 'list', "sql" => 'impact', "default_value" => '1', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("priority", array("allowed_values" => new ValueSetEnum("1,2,3,4"), "display_style" => 'list', "sql" => 'priority', "default_value" => '4', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("urgency", array("allowed_values" => new ValueSetEnum("1,2,3,4"), "display_style" => 'list', "sql" => 'urgency', "default_value" => '4', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("origin", array("allowed_values" => new ValueSetEnum("mail,phone,portal"), "display_style" => 'list', "sql" => 'origin', "default_value" => 'phone', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("approver_id", array("targetclass" => 'Person', "allowed_values" => new ValueSetObjects("SELECT Person WHERE org_id= :this->org_id"), "sql" => 'approver_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array('org_id'), "allow_target_creation" => false, "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("approver_email", array("allowed_values" => null, "extkey_attcode" => 'approver_id', "target_attcode" => 'email', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("service_id", array("targetclass" => 'Service', "allowed_values" => new ValueSetObjects("SELECT Service AS s JOIN lnkCustomerContractToService AS l1 ON l1.service_id=s.id JOIN CustomerContract AS cc ON l1.customercontract_id=cc.id WHERE cc.org_id = :this->org_id AND s.status != 'obsolete'"), "sql" => 'service_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array('org_id'), "allow_target_creation" => false, "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("service_name", array("allowed_values" => null, "extkey_attcode" => 'service_id', "target_attcode" => 'name', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("servicesubcategory_id", array("targetclass" => 'ServiceSubcategory', "allowed_values" => new ValueSetObjects("SELECT ServiceSubcategory WHERE service_id = :this->service_id AND request_type = :this->request_type AND status != 'obsolete'"), "sql" => 'servicesubcategory_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array('service_id', 'request_type'), "allow_target_creation" => false, "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("servicesubcategory_name", array("allowed_values" => null, "extkey_attcode" => 'servicesubcategory_id', "target_attcode" => 'name', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("escalation_flag", array("allowed_values" => new ValueSetEnum("yes,no"), "display_style" => 'list', "sql" => 'escalation_flag', "default_value" => 'no', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeString("escalation_reason", array("allowed_values" => null, "sql" => 'escalation_reason', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeDateTime("assignment_date", array("allowed_values" => null, "sql" => 'assignment_date', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeDateTime("resolution_date", array("allowed_values" => null, "sql" => 'resolution_date', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeDateTime("last_pending_date", array("allowed_values" => null, "sql" => 'last_pending_date', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeStopWatch("cumulatedpending", array("states" => array("pending"), "goal_computing" => 'DefaultMetricComputer', "working_time_computing" => '', "thresholds" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeStopWatch("tto", array("states" => array("new", "escalated_tto"), "goal_computing" => 'ResponseTicketTTO', "working_time_computing" => '', "thresholds" => array(75 => array('percent' => 75, 'actions' => array()), 100 => array('percent' => 100, 'actions' => array(array('verb' => 'ApplyStimulus', 'params' => array("ev_timeout"))))), "always_load_in_tables" => true))); MetaModel::Init_AddAttribute(new AttributeStopWatch("ttr", array("states" => array("new", "escalated_tto", "assigned", "approved", "escalated_ttr"), "goal_computing" => 'ResponseTicketTTR', "working_time_computing" => '', "thresholds" => array(75 => array('percent' => 75, 'actions' => array()), 100 => array('percent' => 100, 'actions' => array(array('verb' => 'ApplyStimulus', 'params' => array("ev_timeout"))))), "always_load_in_tables" => true))); MetaModel::Init_AddAttribute(new AttributeSubItem("tto_escalation_deadline", array("target_attcode" => 'tto', "item_code" => '100_deadline', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeSubItem("sla_tto_passed", array("target_attcode" => 'tto', "item_code" => '100_triggered', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeSubItem("sla_tto_over", array("target_attcode" => 'tto', "item_code" => '100_overrun', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeSubItem("ttr_escalation_deadline", array("target_attcode" => 'ttr', "item_code" => '100_deadline', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeSubItem("sla_ttr_passed", array("target_attcode" => 'ttr', "item_code" => '100_triggered', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeSubItem("sla_ttr_over", array("target_attcode" => 'ttr', "item_code" => '100_overrun', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeDuration("time_spent", array("allowed_values" => null, "sql" => 'time_spent', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("resolution_code", array("allowed_values" => new ValueSetEnum("assistance,other,software patch,training,hardware repair,system update,bug fixed"), "display_style" => 'list', "sql" => 'resolution_code', "default_value" => 'assistance', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeText("solution", array("allowed_values" => null, "sql" => 'solution', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeText("pending_reason", array("allowed_values" => null, "sql" => 'pending_reason', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("parent_request_id", array("targetclass" => 'UserRequest', "allowed_values" => new ValueSetObjects("SELECT UserRequest WHERE id != :this->id AND status NOT IN ('rejected','resolved','closed')"), "sql" => 'parent_request_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("parent_request_ref", array("allowed_values" => null, "extkey_attcode" => 'parent_request_id', "target_attcode" => 'ref', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("parent_incident_id", array("targetclass" => 'Incident', "allowed_values" => new ValueSetObjects("SELECT Incident WHERE status != \"closed\""), "sql" => 'parent_incident_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("parent_incident_ref", array("allowed_values" => null, "extkey_attcode" => 'parent_incident_id', "target_attcode" => 'ref', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("parent_problem_id", array("targetclass" => 'Problem', "allowed_values" => null, "sql" => 'parent_problem_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("parent_problem_ref", array("allowed_values" => null, "extkey_attcode" => 'parent_problem_id', "target_attcode" => 'ref', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("parent_change_id", array("targetclass" => 'Change', "allowed_values" => new ValueSetObjects("SELECT Change WHERE status != \"closed\""), "sql" => 'parent_change_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("parent_change_ref", array("allowed_values" => null, "extkey_attcode" => 'parent_change_id', "target_attcode" => 'ref', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeLinkedSet("related_request_list", array("linked_class" => 'UserRequest', "ext_key_to_me" => 'parent_request_id', "count_min" => 0, "count_max" => 0, "edit_mode" => LINKSET_EDITMODE_ADDREMOVE, "allowed_values" => null, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeCaseLog("public_log", array("allowed_values" => null, "sql" => 'public_log', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("user_satisfaction", array("allowed_values" => new ValueSetEnum("1,2,3,4"), "display_style" => 'list', "sql" => 'user_satisfaction', "default_value" => '1', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeText("user_comment", array("allowed_values" => null, "sql" => 'user_commment', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); // Lifecycle (status attribute: status) // MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_assign", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_reassign", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_approve", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_reject", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_pending", array())); MetaModel::Init_DefineStimulus(new StimulusInternal("ev_timeout", array())); MetaModel::Init_DefineStimulus(new StimulusInternal("ev_autoresolve", array())); MetaModel::Init_DefineStimulus(new StimulusInternal("ev_autoclose", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_resolve", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_close", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_reopen", array())); MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_wait_for_approval", array())); MetaModel::Init_DefineState("new", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_MANDATORY, 'caller_id' => OPT_ATT_MANDATORY, 'team_id' => OPT_ATT_HIDDEN, 'agent_id' => OPT_ATT_HIDDEN, 'priority' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'approver_id' => OPT_ATT_HIDDEN, 'request_type' => OPT_ATT_READONLY, 'escalation_flag' => OPT_ATT_HIDDEN, 'escalation_reason' => OPT_ATT_HIDDEN, 'assignment_date' => OPT_ATT_HIDDEN, 'resolution_date' => OPT_ATT_HIDDEN, 'last_pending_date' => OPT_ATT_HIDDEN, 'time_spent' => OPT_ATT_HIDDEN, 'resolution_code' => OPT_ATT_HIDDEN, 'solution' => OPT_ATT_HIDDEN, 'pending_reason' => OPT_ATT_HIDDEN, 'user_satisfaction' => OPT_ATT_HIDDEN, 'user_comment' => OPT_ATT_HIDDEN, 'tto_escalation_deadline' => OPT_ATT_READONLY, 'sla_tto_passed' => OPT_ATT_HIDDEN, 'sla_tto_over' => OPT_ATT_HIDDEN, 'sla_ttr_passed' => OPT_ATT_HIDDEN, 'ttr_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_ttr_over' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("new", "ev_assign", array("target_state" => "assigned", "actions" => array('SetAssignedDate'), "user_restriction" => null)); MetaModel::Init_DefineTransition("new", "ev_timeout", array("target_state" => "escalated_tto", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("new", "ev_wait_for_approval", array("target_state" => "waiting_for_approval", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("new", "ev_autoresolve", array("target_state" => "resolved", "actions" => array('SetResolveDate', 'resolveChilds'), "user_restriction" => null)); MetaModel::Init_DefineState("escalated_tto", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_MANDATORY, 'caller_id' => OPT_ATT_MANDATORY, 'agent_id' => OPT_ATT_HIDDEN, 'priority' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'approver_id' => OPT_ATT_HIDDEN, 'request_type' => OPT_ATT_READONLY, 'escalation_flag' => OPT_ATT_HIDDEN, 'escalation_reason' => OPT_ATT_HIDDEN, 'assignment_date' => OPT_ATT_HIDDEN, 'resolution_date' => OPT_ATT_HIDDEN, 'last_pending_date' => OPT_ATT_HIDDEN, 'time_spent' => OPT_ATT_HIDDEN, 'resolution_code' => OPT_ATT_HIDDEN, 'solution' => OPT_ATT_HIDDEN, 'pending_reason' => OPT_ATT_HIDDEN, 'user_satisfaction' => OPT_ATT_HIDDEN, 'user_comment' => OPT_ATT_HIDDEN, 'tto_escalation_deadline' => OPT_ATT_READONLY, 'sla_tto_passed' => OPT_ATT_HIDDEN, 'sla_tto_over' => OPT_ATT_HIDDEN, 'sla_ttr_passed' => OPT_ATT_HIDDEN, 'ttr_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_ttr_over' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("escalated_tto", "ev_assign", array("target_state" => "assigned", "actions" => array('SetAssignedDate'), "user_restriction" => null)); MetaModel::Init_DefineState("assigned", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_MANDATORY, 'team_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'agent_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'priority' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'request_type' => OPT_ATT_READONLY, 'approver_id' => OPT_ATT_READONLY, 'assignment_date' => OPT_ATT_READONLY, 'resolution_date' => OPT_ATT_HIDDEN, 'last_pending_date' => OPT_ATT_HIDDEN, 'time_spent' => OPT_ATT_HIDDEN, 'resolution_code' => OPT_ATT_HIDDEN, 'solution' => OPT_ATT_HIDDEN, 'pending_reason' => OPT_ATT_HIDDEN, 'user_satisfaction' => OPT_ATT_HIDDEN, 'user_comment' => OPT_ATT_HIDDEN, 'tto_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_tto_passed' => OPT_ATT_READONLY, 'sla_tto_over' => OPT_ATT_READONLY, 'sla_ttr_passed' => OPT_ATT_HIDDEN, 'ttr_escalation_deadline' => OPT_ATT_READONLY, 'sla_ttr_over' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("assigned", "ev_pending", array("target_state" => "pending", "actions" => array('SetLastPendingDate'), "user_restriction" => null)); MetaModel::Init_DefineTransition("assigned", "ev_resolve", array("target_state" => "resolved", "actions" => array('SetResolveDate', 'resolveChilds'), "user_restriction" => null)); MetaModel::Init_DefineTransition("assigned", "ev_reassign", array("target_state" => "assigned", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("assigned", "ev_timeout", array("target_state" => "escalated_ttr", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("assigned", "ev_autoresolve", array("target_state" => "resolved", "actions" => array('SetResolveDate', 'resolveChilds'), "user_restriction" => null)); MetaModel::Init_DefineState("escalated_ttr", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_MANDATORY, 'team_id' => OPT_ATT_MANDATORY, 'agent_id' => OPT_ATT_MANDATORY, 'priority' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'request_type' => OPT_ATT_READONLY, 'approver_id' => OPT_ATT_READONLY, 'assignment_date' => OPT_ATT_READONLY, 'resolution_date' => OPT_ATT_HIDDEN, 'last_pending_date' => OPT_ATT_HIDDEN, 'time_spent' => OPT_ATT_HIDDEN, 'resolution_code' => OPT_ATT_HIDDEN, 'solution' => OPT_ATT_HIDDEN, 'pending_reason' => OPT_ATT_HIDDEN, 'user_satisfaction' => OPT_ATT_HIDDEN, 'user_comment' => OPT_ATT_HIDDEN, 'tto_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_tto_passed' => OPT_ATT_READONLY, 'sla_tto_over' => OPT_ATT_READONLY, 'sla_ttr_passed' => OPT_ATT_HIDDEN, 'ttr_escalation_deadline' => OPT_ATT_READONLY, 'sla_ttr_over' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("escalated_ttr", "ev_pending", array("target_state" => "pending", "actions" => array('SetLastPendingDate'), "user_restriction" => null)); MetaModel::Init_DefineTransition("escalated_ttr", "ev_resolve", array("target_state" => "resolved", "actions" => array('SetResolveDate', 'resolveChilds'), "user_restriction" => null)); MetaModel::Init_DefineTransition("escalated_ttr", "ev_reassign", array("target_state" => "assigned", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("escalated_ttr", "ev_autoresolve", array("target_state" => "resolved", "actions" => array('SetResolveDate', 'resolveChilds'), "user_restriction" => null)); MetaModel::Init_DefineState("waiting_for_approval", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_MANDATORY, 'caller_id' => OPT_ATT_MANDATORY, 'agent_id' => OPT_ATT_HIDDEN, 'priority' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'approver_id' => OPT_ATT_MUSTPROMPT, 'request_type' => OPT_ATT_READONLY, 'escalation_flag' => OPT_ATT_HIDDEN, 'escalation_reason' => OPT_ATT_HIDDEN, 'assignment_date' => OPT_ATT_HIDDEN, 'resolution_date' => OPT_ATT_HIDDEN, 'last_pending_date' => OPT_ATT_HIDDEN, 'time_spent' => OPT_ATT_HIDDEN, 'resolution_code' => OPT_ATT_HIDDEN, 'solution' => OPT_ATT_HIDDEN, 'pending_reason' => OPT_ATT_HIDDEN, 'user_satisfaction' => OPT_ATT_HIDDEN, 'user_comment' => OPT_ATT_HIDDEN, 'tto_escalation_deadline' => OPT_ATT_READONLY, 'sla_tto_passed' => OPT_ATT_HIDDEN, 'sla_tto_over' => OPT_ATT_HIDDEN, 'sla_ttr_passed' => OPT_ATT_HIDDEN, 'ttr_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_ttr_over' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("waiting_for_approval", "ev_approve", array("target_state" => "approved", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("waiting_for_approval", "ev_reject", array("target_state" => "rejected", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineState("approved", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_MANDATORY, 'caller_id' => OPT_ATT_MANDATORY, 'agent_id' => OPT_ATT_HIDDEN, 'priority' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'approver_id' => OPT_ATT_READONLY, 'request_type' => OPT_ATT_READONLY, 'escalation_flag' => OPT_ATT_HIDDEN, 'escalation_reason' => OPT_ATT_HIDDEN, 'assignment_date' => OPT_ATT_HIDDEN, 'resolution_date' => OPT_ATT_HIDDEN, 'last_pending_date' => OPT_ATT_HIDDEN, 'time_spent' => OPT_ATT_HIDDEN, 'resolution_code' => OPT_ATT_HIDDEN, 'solution' => OPT_ATT_HIDDEN, 'pending_reason' => OPT_ATT_HIDDEN, 'user_satisfaction' => OPT_ATT_HIDDEN, 'user_comment' => OPT_ATT_HIDDEN, 'tto_escalation_deadline' => OPT_ATT_READONLY, 'sla_tto_passed' => OPT_ATT_HIDDEN, 'sla_tto_over' => OPT_ATT_HIDDEN, 'sla_ttr_passed' => OPT_ATT_HIDDEN, 'ttr_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_ttr_over' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("approved", "ev_timeout", array("target_state" => "escalated_tto", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("approved", "ev_assign", array("target_state" => "assigned", "actions" => array('SetAssignedDate'), "user_restriction" => null)); MetaModel::Init_DefineTransition("approved", "ev_autoresolve", array("target_state" => "resolved", "actions" => array('SetResolveDate', 'resolveChilds'), "user_restriction" => null)); MetaModel::Init_DefineState("rejected", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_MANDATORY, 'caller_id' => OPT_ATT_MANDATORY, 'agent_id' => OPT_ATT_HIDDEN, 'priority' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'approver_id' => OPT_ATT_HIDDEN, 'request_type' => OPT_ATT_READONLY, 'escalation_flag' => OPT_ATT_HIDDEN, 'escalation_reason' => OPT_ATT_HIDDEN, 'assignment_date' => OPT_ATT_HIDDEN, 'resolution_date' => OPT_ATT_HIDDEN, 'last_pending_date' => OPT_ATT_HIDDEN, 'time_spent' => OPT_ATT_HIDDEN, 'resolution_code' => OPT_ATT_HIDDEN, 'solution' => OPT_ATT_HIDDEN, 'pending_reason' => OPT_ATT_HIDDEN, 'user_satisfaction' => OPT_ATT_HIDDEN, 'user_comment' => OPT_ATT_HIDDEN, 'tto_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_tto_passed' => OPT_ATT_HIDDEN, 'sla_tto_over' => OPT_ATT_HIDDEN, 'sla_ttr_passed' => OPT_ATT_HIDDEN, 'ttr_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_ttr_over' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("rejected", "ev_reopen", array("target_state" => "new", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineState("pending", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_MANDATORY, 'team_id' => OPT_ATT_MANDATORY, 'agent_id' => OPT_ATT_MANDATORY, 'priority' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'request_type' => OPT_ATT_READONLY, 'approver_id' => OPT_ATT_READONLY, 'assignment_date' => OPT_ATT_READONLY, 'resolution_date' => OPT_ATT_HIDDEN, 'last_pending_date' => OPT_ATT_READONLY, 'time_spent' => OPT_ATT_HIDDEN, 'resolution_code' => OPT_ATT_HIDDEN, 'solution' => OPT_ATT_HIDDEN, 'pending_reason' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'user_satisfaction' => OPT_ATT_HIDDEN, 'user_comment' => OPT_ATT_HIDDEN, 'tto_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_tto_passed' => OPT_ATT_READONLY, 'sla_tto_over' => OPT_ATT_READONLY, 'sla_ttr_passed' => OPT_ATT_HIDDEN, 'ttr_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_ttr_over' => OPT_ATT_HIDDEN))); MetaModel::Init_DefineTransition("pending", "ev_assign", array("target_state" => "assigned", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("pending", "ev_autoresolve", array("target_state" => "resolved", "actions" => array('SetResolveDate', 'resolveChilds'), "user_restriction" => null)); MetaModel::Init_DefineState("resolved", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_READONLY, 'caller_id' => OPT_ATT_READONLY, 'origin' => OPT_ATT_READONLY, 'team_id' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_READONLY, 'impact' => OPT_ATT_READONLY, 'urgency' => OPT_ATT_READONLY, 'priority' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_HIDDEN, 'request_type' => OPT_ATT_READONLY, 'approver_id' => OPT_ATT_READONLY, 'service_id' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'servicesubcategory_id' => OPT_ATT_MUSTPROMPT, 'escalation_flag' => OPT_ATT_READONLY, 'escalation_reason' => OPT_ATT_READONLY, 'assignment_date' => OPT_ATT_READONLY, 'resolution_date' => OPT_ATT_READONLY, 'last_pending_date' => OPT_ATT_HIDDEN, 'time_spent' => OPT_ATT_READONLY, 'resolution_code' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'solution' => OPT_ATT_MANDATORY | OPT_ATT_MUSTPROMPT, 'pending_reason' => OPT_ATT_READONLY, 'user_satisfaction' => OPT_ATT_HIDDEN, 'user_comment' => OPT_ATT_HIDDEN, 'parent_request_id' => OPT_ATT_READONLY, 'parent_change_id' => OPT_ATT_READONLY, 'parent_problem_id' => OPT_ATT_READONLY, 'title' => OPT_ATT_READONLY, 'description' => OPT_ATT_READONLY, 'tto_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_tto_passed' => OPT_ATT_READONLY, 'sla_tto_over' => OPT_ATT_READONLY, 'sla_ttr_passed' => OPT_ATT_READONLY, 'ttr_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_ttr_over' => OPT_ATT_READONLY))); MetaModel::Init_DefineTransition("resolved", "ev_close", array("target_state" => "closed", "actions" => array('SetClosureDate'), "user_restriction" => null)); MetaModel::Init_DefineTransition("resolved", "ev_reopen", array("target_state" => "assigned", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineTransition("resolved", "ev_autoresolve", array("target_state" => "resolved", "actions" => array('SetResolveDate', 'resolveChilds'), "user_restriction" => null)); MetaModel::Init_DefineState("closed", array("attribute_inherit" => '', "attribute_list" => array('ref' => OPT_ATT_READONLY, 'org_id' => OPT_ATT_READONLY, 'caller_id' => OPT_ATT_READONLY, 'origin' => OPT_ATT_READONLY, 'team_id' => OPT_ATT_READONLY, 'agent_id' => OPT_ATT_READONLY, 'start_date' => OPT_ATT_READONLY, 'last_update' => OPT_ATT_READONLY, 'private_log' => OPT_ATT_READONLY, 'request_type' => OPT_ATT_READONLY, 'impact' => OPT_ATT_READONLY, 'urgency' => OPT_ATT_READONLY, 'priority' => OPT_ATT_READONLY, 'approver_id' => OPT_ATT_READONLY, 'service_id' => OPT_ATT_READONLY, 'servicesubcategory_id' => OPT_ATT_READONLY, 'escalation_flag' => OPT_ATT_READONLY, 'escalation_reason' => OPT_ATT_READONLY, 'assignment_date' => OPT_ATT_READONLY, 'resolution_date' => OPT_ATT_READONLY, 'close_date' => OPT_ATT_READONLY, 'last_pending_date' => OPT_ATT_HIDDEN, 'time_spent' => OPT_ATT_READONLY, 'resolution_code' => OPT_ATT_READONLY, 'solution' => OPT_ATT_READONLY, 'pending_reason' => OPT_ATT_READONLY, 'public_log' => OPT_ATT_READONLY, 'user_satisfaction' => OPT_ATT_MUSTPROMPT, 'user_comment' => OPT_ATT_MUSTPROMPT, 'pending_reason' => OPT_ATT_READONLY, 'parent_request_id' => OPT_ATT_READONLY, 'parent_change_id' => OPT_ATT_READONLY, 'parent_problem_id' => OPT_ATT_READONLY, 'title' => OPT_ATT_READONLY, 'description' => OPT_ATT_READONLY, 'tto_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_tto_passed' => OPT_ATT_READONLY, 'sla_tto_over' => OPT_ATT_READONLY, 'sla_ttr_passed' => OPT_ATT_READONLY, 'ttr_escalation_deadline' => OPT_ATT_HIDDEN, 'sla_ttr_over' => OPT_ATT_READONLY, 'functionalcis_list' => OPT_ATT_READONLY, 'contacts_list' => OPT_ATT_READONLY))); MetaModel::Init_SetZListItems('details', array(0 => 'functionalcis_list', 1 => 'contacts_list', 2 => 'related_request_list', 3 => 'workorders_list', 'col:col1' => array('fieldset:Ticket:baseinfo' => array(0 => 'org_id', 1 => 'caller_id', 2 => 'status', 3 => 'origin', 4 => 'title', 5 => 'description'), 'fieldset:Ticket:moreinfo' => array(0 => 'service_id', 1 => 'servicesubcategory_id', 2 => 'escalation_flag', 3 => 'escalation_reason', 4 => 'pending_reason')), 'col:col2' => array('fieldset:Ticket:Type' => array(0 => 'request_type', 1 => 'impact', 2 => 'urgency', 3 => 'priority'), 'fieldset:Ticket:contact' => array(0 => 'team_id', 1 => 'agent_id', 2 => 'approver_id'), 'fieldset:Ticket:date' => array(0 => 'start_date', 1 => 'last_update', 2 => 'assignment_date', 3 => 'tto_escalation_deadline', 4 => 'ttr_escalation_deadline', 5 => 'last_pending_date', 6 => 'resolution_date', 7 => 'close_date')), 'col:col3' => array('fieldset:Ticket:relation' => array(0 => 'parent_request_id', 1 => 'parent_incident_id', 2 => 'parent_problem_id', 3 => 'parent_change_id'), 'fieldset:Ticket:resolution' => array(0 => 'resolution_code', 1 => 'solution', 2 => 'time_spent', 3 => 'user_satisfaction', 4 => 'user_comment'), 'fieldset:Ticket:SLA' => array(0 => 'sla_tto_passed', 1 => 'sla_tto_over', 2 => 'sla_ttr_passed', 3 => 'sla_ttr_over')))); MetaModel::Init_SetZListItems('standard_search', array(0 => 'ref', 1 => 'org_id', 2 => 'title', 3 => 'description', 4 => 'start_date', 5 => 'resolution_date', 6 => 'close_date', 7 => 'status', 8 => 'caller_id', 9 => 'origin', 10 => 'request_type', 11 => 'impact', 12 => 'urgency', 13 => 'priority', 14 => 'service_id', 15 => 'servicesubcategory_id', 16 => 'team_id', 17 => 'agent_id', 18 => 'escalation_flag', 19 => 'resolution_code', 20 => 'user_satisfaction', 21 => 'sla_tto_passed', 22 => 'sla_ttr_passed')); MetaModel::Init_SetZListItems('list', array(0 => 'title', 1 => 'org_id', 2 => 'caller_id', 3 => 'start_date', 4 => 'status', 5 => 'agent_id')); }
public function GetDefaultValue($sClass = 'Contact') { $sIconPath = MetaModel::GetClassIcon($sClass, false); $sIcon = str_replace(utils::GetAbsoluteUrlModulesRoot(), '', $sIconPath); return $sIcon; }
public static function Init() { $aParams = array('category' => 'bizmodel,searchable,incidentmgmt,requestmgmt,changemgmt,m2prequest', 'key_type' => 'autoincrement', 'name_attcode' => 'name', 'state_attcode' => 'status', 'reconc_keys' => array('name', 'ticket_id'), 'db_table' => 'workorder', 'db_key_field' => 'id', 'db_finalclass_field' => '', 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-tickets/images/workorder.png'); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values" => null, "sql" => 'name', "default_value" => '', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values" => new ValueSetEnum("open,closed"), "display_style" => 'list', "sql" => 'status', "default_value" => 'open', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values" => null, "sql" => 'description', "default_value" => '', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("ticket_id", array("targetclass" => 'Ticket', "allowed_values" => null, "sql" => 'ticket_id', "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("ticket_ref", array("allowed_values" => null, "extkey_attcode" => 'ticket_id', "target_attcode" => 'ref', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("team_id", array("targetclass" => 'Team', "allowed_values" => new ValueSetObjects("SELECT Team"), "sql" => 'team_id', "is_null_allowed" => false, "on_target_delete" => DEL_MANUAL, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("team_name", array("allowed_values" => null, "extkey_attcode" => 'team_id', "target_attcode" => 'email', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("agent_id", array("targetclass" => 'Person', "allowed_values" => new ValueSetObjects("SELECT Person AS p JOIN lnkPersonToTeam AS l ON l.person_id=p.id JOIN Team AS t ON l.team_id=t.id WHERE t.id = :this->team_id"), "sql" => 'owner_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array('team_id'), "allow_target_creation" => false, "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("agent_email", array("allowed_values" => null, "extkey_attcode" => 'agent_id', "target_attcode" => 'email', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeDateTime("start_date", array("allowed_values" => null, "sql" => 'start_date', "default_value" => '', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeDateTime("end_date", array("allowed_values" => null, "sql" => 'end_date', "default_value" => '', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeCaseLog("log", array("allowed_values" => null, "sql" => 'log', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); // Lifecycle (status attribute: status) // MetaModel::Init_DefineStimulus(new StimulusUserAction("ev_close", array())); MetaModel::Init_DefineState("open", array("attribute_inherit" => '', "attribute_list" => array())); MetaModel::Init_DefineTransition("open", "ev_close", array("target_state" => "closed", "actions" => array(), "user_restriction" => null)); MetaModel::Init_DefineState("closed", array("attribute_inherit" => '', "attribute_list" => array())); MetaModel::Init_SetZListItems('details', array(0 => 'name', 1 => 'status', 2 => 'ticket_id', 3 => 'team_id', 4 => 'agent_id', 5 => 'description', 6 => 'start_date', 7 => 'end_date')); MetaModel::Init_SetZListItems('standard_search', array(0 => 'name', 1 => 'status', 2 => 'ticket_id', 3 => 'team_id', 4 => 'agent_id', 5 => 'start_date', 6 => 'end_date')); MetaModel::Init_SetZListItems('list', array(0 => 'status', 1 => 'ticket_id', 2 => 'start_date', 3 => 'end_date', 4 => 'team_id', 5 => 'agent_id')); }
public static function Init() { $aParams = array('category' => 'bizmodel,searchable', 'key_type' => 'autoincrement', 'name_attcode' => 'name', 'state_attcode' => '', 'reconc_keys' => array('name', 'org_id', 'organization_name'), 'db_table' => 'pdu', 'db_key_field' => 'id', 'db_finalclass_field' => '', 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-datacenter-mgmt/images/pdu.png'); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); MetaModel::Init_AddAttribute(new AttributeExternalKey("rack_id", array("targetclass" => 'Rack', "allowed_values" => new ValueSetObjects("SELECT Rack WHERE location_id= :this->location_id"), "sql" => 'rack_id', "is_null_allowed" => false, "on_target_delete" => DEL_MANUAL, "depends_on" => array('location_id'), "allow_target_creation" => false, "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("rack_name", array("allowed_values" => null, "extkey_attcode" => 'rack_id', "target_attcode" => 'name', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("powerstart_id", array("targetclass" => 'PowerConnection', "allowed_values" => new ValueSetObjects("SELECT PowerConnection WHERE id != :this->id AND location_id = :this->location_id"), "sql" => 'powerstart_id', "is_null_allowed" => true, "on_target_delete" => DEL_MANUAL, "depends_on" => array('location_id'), "allow_target_creation" => false, "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("powerstart_name", array("allowed_values" => null, "extkey_attcode" => 'powerstart_id', "target_attcode" => 'name', "always_load_in_tables" => false))); MetaModel::Init_SetZListItems('details', array(0 => 'name', 1 => 'org_id', 2 => 'status', 3 => 'business_criticity', 4 => 'location_id', 5 => 'rack_id', 6 => 'powerstart_id', 7 => 'brand_id', 8 => 'model_id', 9 => 'serialnumber', 10 => 'asset_number', 11 => 'move2production', 12 => 'purchase_date', 13 => 'end_of_warranty', 14 => 'description', 15 => 'contacts_list', 16 => 'documents_list', 17 => 'providercontracts_list', 18 => 'services_list')); MetaModel::Init_SetZListItems('standard_search', array(0 => 'name', 1 => 'org_id', 2 => 'status', 3 => 'business_criticity', 4 => 'location_id', 5 => 'powerstart_id', 6 => 'brand_id', 7 => 'model_id', 8 => 'serialnumber', 9 => 'asset_number', 10 => 'move2production', 11 => 'purchase_date', 12 => 'end_of_warranty')); MetaModel::Init_SetZListItems('list', array(0 => 'org_id', 1 => 'status', 2 => 'business_criticity', 3 => 'location_id', 4 => 'brand_id', 5 => 'model_id', 6 => 'serialnumber')); }
public function __construct($sTitle, $sAlternateStyleSheet = '') { $this->m_sWelcomeMsg = ''; $this->m_aMenuButtons = array(); parent::__construct($sTitle); $this->add_header("Content-type: text/html; charset=utf-8"); $this->add_header("Cache-control: no-cache"); $this->add_linked_stylesheet("../css/jquery.treeview.css"); $this->add_linked_stylesheet("../css/jquery.autocomplete.css"); $this->add_linked_stylesheet("../css/jquery.multiselect.css"); $sAbsURLAppRoot = addslashes(utils::GetAbsoluteUrlAppRoot()); // Pass it to Javascript scripts $sAbsURLModulesRoot = addslashes(utils::GetAbsoluteUrlModulesRoot()); // Pass it to Javascript scripts $oAppContext = new ApplicationContext(); $sAppContext = addslashes($oAppContext->GetForLink()); $this->add_dict_entry('UI:FillAllMandatoryFields'); if ($sAlternateStyleSheet != '') { $this->add_linked_stylesheet("../portal/{$sAlternateStyleSheet}/portal.css"); } else { $this->add_linked_stylesheet("../portal/portal.css"); } $this->add_linked_script('../js/jquery.layout.min.js'); $this->add_linked_script('../js/jquery.ba-bbq.min.js'); $this->add_linked_script("../js/jquery.tablehover.js"); $this->add_linked_script("../js/jquery.treeview.js"); $this->add_linked_script("../js/jquery.autocomplete.js"); $this->add_linked_script("../js/jquery.positionBy.js"); $this->add_linked_script("../js/jquery.popupmenu.js"); $this->add_linked_script("../js/date.js"); $this->add_linked_script("../js/jquery.tablesorter.min.js"); $this->add_linked_script("../js/jquery.tablesorter.pager.js"); $this->add_linked_script("../js/jquery.blockUI.js"); $this->add_linked_script("../js/utils.js"); $this->add_linked_script("../js/forms-json-utils.js"); $this->add_linked_script("../js/swfobject.js"); $this->add_linked_script("../js/jquery.qtip-1.0.min.js"); $this->add_linked_script('../js/jquery.multiselect.min.js'); $this->add_linked_script("../js/ajaxfileupload.js"); $this->add_ready_script(<<<EOF try { \t//add new widget called TruncatedList to properly display truncated lists when they are sorted \t\$.tablesorter.addWidget({ \t // give the widget a id \t id: "truncatedList", \t // format is called when the on init and when a sorting has finished \t format: function(table) \t { \t\t\t// Check if there is a "truncated" line \t\t\tthis.truncatedList = false; \t\t\tif (\$("tr td.truncated",table).length > 0) \t\t\t{ \t\t\t\tthis.truncatedList = true; \t\t\t} \t\t\tif (this.truncatedList) \t\t\t{ \t\t\t\t\$("tr td",table).removeClass('truncated'); \t\t\t\t\$("tr:last td",table).addClass('truncated'); \t\t\t} \t } \t}); \t\t \t \t\$.tablesorter.addWidget({ \t // give the widget a id \t id: "myZebra", \t // format is called when the on init and when a sorting has finished \t format: function(table) \t { \t \t// Replace the 'red even' lines by 'red_even' since most browser do not support 2 classes selector in CSS, etc.. \t\t\t\$("tbody tr:even",table).addClass('even'); \t\t\t\$("tbody tr.red:even",table).removeClass('red').removeClass('even').addClass('red_even'); \t\t\t\$("tbody tr.orange:even",table).removeClass('orange').removeClass('even').addClass('orange_even'); \t\t\t\$("tbody tr.green:even",table).removeClass('green').removeClass('even').addClass('green_even'); \t } \t}); \t\t \t\$(".date-pick").datepicker({ \t\t\tshowOn: 'button', \t\t\tbuttonImage: '../images/calendar.png', \t\t\tbuttonImageOnly: true, \t\t\tdateFormat: 'yy-mm-dd', \t\t\tconstrainInput: false, \t\t\tchangeMonth: true, \t\t\tchangeYear: true \t\t}); \t\$(".datetime-pick").datepicker({ \t\tshowOn: 'button', \t\tbuttonImage: '../images/calendar.png', \t\tbuttonImageOnly: true, \t\tdateFormat: 'yy-mm-dd 00:00:00', \t\tconstrainInput: false, \t\tchangeMonth: true, \t\tchangeYear: true \t\t}); \t//\$('.resizable').resizable(); // Make resizable everything that claims to be resizable ! \t\$('.caselog_header').click( function () { \$(this).toggleClass('open').next('.caselog_entry').toggle(); }); } catch(err) { \t// Do something with the error ! \talert(err); } EOF ); $this->add_script(<<<EOF \tfunction CheckSelection(sMessage, sInputId) \t{ \t\tvar bResult; \t\tif (sInputId.length > 0) \t\t{ \t\t\tbResult = (\$('input[name='+sInputId+']:checked').length > 0); \t\t} \t\telse \t\t{ \t\t\t// First select found... \t\t\tbResult = (\$('input:checked').length > 0); \t\t} \t\tif (!bResult) \t\t{ \t\t\talert(sMessage); \t\t} \t\treturn bResult; \t} \t\t \tfunction GetAbsoluteUrlAppRoot() \t{ \t\treturn '{$sAbsURLAppRoot}'; \t} \t \tfunction GetAbsoluteUrlModulesRoot() \t{ \t\treturn '{$sAbsURLModulesRoot}'; \t} \tfunction AddAppContext(sURL) \t{ \t\tvar sContext = '{$sAppContext}'; \t\tif (sContext.length > 0) \t\t{ \t\t\tif (sURL.indexOf('?') == -1) \t\t\t{ \t\t\t\treturn sURL+'?'+sContext; \t\t\t}\t\t\t\t \t\t\treturn sURL+'&'+sContext; \t\t} \t\treturn sURL; \t} \t \tfunction GoBack(sFormId) \t{ \t\tvar form = \$('#'+sFormId); \t\tvar step_back = \$('input[name=step_back]'); \t\tform.unbind('submit'); // De-activate validation \t\tstep_back.val(1); \t\tform.submit(); // Go \t} \tfunction GoHome() \t{ \t\tvar form = \$('FORM'); \t\tform.unbind('submit'); // De-activate validation \t\twindow.location.href = '?operation='; \t\treturn false; \t} \tfunction SetWizardNextStep(sStep) \t{ \t\tvar next_step = \$('input[id=next_step]'); \t\tnext_step.val(sStep); \t} EOF ); // For Wizard helper to process the ajax replies $this->add('<div id="ajax_content"></div>'); // Customize the logo (unless a customer CSS has been defined) if ($sAlternateStyleSheet == '') { if (file_exists(MODULESROOT . 'branding/portal-logo.png')) { $sDisplayIcon = utils::GetAbsoluteUrlModulesRoot() . 'branding/portal-logo.png'; $this->add_style("div#portal #logo {background: url(\"{$sDisplayIcon}\") no-repeat scroll 0 0 transparent;}"); } } }
public static function Init() { $aParams = array('category' => 'bizmodel,searchable', 'key_type' => 'autoincrement', 'name_attcode' => array('name', 'virtualmachine_name'), 'state_attcode' => '', 'reconc_keys' => array('name', 'virtualmachine_id', 'virtualmachine_name'), 'db_table' => 'logicalinterface', 'db_key_field' => 'id', 'db_finalclass_field' => '', 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-virtualization-mgmt/images/interface.png'); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); MetaModel::Init_AddAttribute(new AttributeExternalKey("virtualmachine_id", array("targetclass" => 'VirtualMachine', "allowed_values" => null, "sql" => 'virtualmachine_id', "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("virtualmachine_name", array("allowed_values" => null, "extkey_attcode" => 'virtualmachine_id', "target_attcode" => 'name', "always_load_in_tables" => false))); MetaModel::Init_SetZListItems('details', array(0 => 'name', 1 => 'ipaddress', 2 => 'macaddress', 3 => 'comment', 4 => 'ipgateway', 5 => 'ipmask', 6 => 'speed', 7 => 'virtualmachine_id')); MetaModel::Init_SetZListItems('standard_search', array(0 => 'name', 1 => 'ipaddress', 2 => 'macaddress', 3 => 'ipgateway', 4 => 'ipmask')); MetaModel::Init_SetZListItems('list', array(0 => 'ipaddress', 1 => 'macaddress', 2 => 'comment', 3 => 'ipgateway', 4 => 'ipmask', 5 => 'speed')); }
/** * Outputs (via some echo) the complete HTML page by assembling all its elements */ public function output() { $sAbsURLAppRoot = addslashes($this->m_sRootUrl); //$this->set_base($this->m_sRootUrl.'pages/'); $sForm = $this->GetSiloSelectionForm(); $this->DisplayMenu(); // Compute the menu // Call the extensions to add content to the page, so that they can also add styles or scripts $sBannerExtraHtml = ''; foreach (MetaModel::EnumPlugins('iPageUIExtension') as $oExtensionInstance) { $sBannerExtraHtml .= $oExtensionInstance->GetBannerHtml($this); } $sNorthPane = ''; foreach (MetaModel::EnumPlugins('iPageUIExtension') as $oExtensionInstance) { $sNorthPane .= $oExtensionInstance->GetNorthPaneHtml($this); } if (UserRights::IsAdministrator() && ExecutionKPI::IsEnabled()) { $sNorthPane .= '<div id="admin-banner"><span style="padding:5px;">' . ExecutionKPI::GetDescription() . '<span></div>'; } //$sSouthPane = '<p>Peak memory Usage: '.sprintf('%.3f MB', memory_get_peak_usage(true) / (1024*1024)).'</p>'; $sSouthPane = ''; foreach (MetaModel::EnumPlugins('iPageUIExtension') as $oExtensionInstance) { $sSouthPane .= $oExtensionInstance->GetSouthPaneHtml($this); } // Put here the 'ready scripts' that must be executed after all others $aMultiselectOptions = array('header' => true, 'checkAllText' => Dict::S('UI:SearchValue:CheckAll'), 'uncheckAllText' => Dict::S('UI:SearchValue:UncheckAll'), 'noneSelectedText' => Dict::S('UI:SearchValue:Any'), 'selectedText' => Dict::S('UI:SearchValue:NbSelected'), 'selectedList' => 1); $sJSMultiselectOptions = json_encode($aMultiselectOptions); $this->add_ready_script(<<<EOF \t\t// Since the event is only triggered when the hash changes, we need to trigger \t\t// the event now, to handle the hash the page may have loaded with. \t\t\$(window).trigger( 'hashchange' ); \t\t \t\t// Some table are sort-able, some are not, let's fix this \t\t\$('table.listResults').each( function() { FixTableSorter(\$(this)); } ); \t\t \t\t\$('.multiselect').multiselect({$sJSMultiselectOptions}); \t\tFixSearchFormsDisposition(); EOF ); if ($this->GetOutputFormat() == 'html') { foreach ($this->a_headers as $s_header) { header($s_header); } } $s_captured_output = $this->ob_get_clean_safe(); $sHtml = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"; $sHtml .= "<html>\n"; $sHtml .= "<head>\n"; // Make sure that Internet Explorer renders the page using its latest/highest/greatest standards ! $sHtml .= "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n"; $sHtml .= "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n"; $sHtml .= "<title>" . htmlentities($this->s_title, ENT_QUOTES, 'UTF-8') . "</title>\n"; $sHtml .= $this->get_base_tag(); // Stylesheets MUST be loaded before any scripts otherwise // jQuery scripts may face some spurious problems (like failing on a 'reload') foreach ($this->a_linked_stylesheets as $a_stylesheet) { if ($a_stylesheet['condition'] != "") { $sHtml .= "<!--[if {$a_stylesheet['condition']}]>\n"; } $sHtml .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"{$a_stylesheet['link']}\" />\n"; if ($a_stylesheet['condition'] != "") { $sHtml .= "<![endif]-->\n"; } } // special stylesheet for printing, hides the navigation gadgets $sHtml .= "<link rel=\"stylesheet\" media=\"print\" type=\"text/css\" href=\"../css/print.css\" />\n"; if ($this->GetOutputFormat() == 'html') { $sHtml .= $this->output_dict_entries(true); // before any script so that they can benefit from the translations foreach ($this->a_linked_scripts as $s_script) { // Make sure that the URL to the script contains the application's version number // so that the new script do NOT get reloaded from the cache when the application is upgraded if (strpos($s_script, '?') === false) { $s_script .= "?itopversion=" . ITOP_VERSION; } else { $s_script .= "&itopversion=" . ITOP_VERSION; } $sHtml .= "<script type=\"text/javascript\" src=\"{$s_script}\"></script>\n"; } $this->add_script("var iPaneVisWatchDog = window.setTimeout('FixPaneVis()',5000);\n\$(document).ready(function() {\n{$this->m_sInitScript};\nwindow.setTimeout('onDelayedReady()',10)\n});"); if (count($this->m_aReadyScripts) > 0) { $this->add_script("\nonDelayedReady = function() {\n" . implode("\n", $this->m_aReadyScripts) . "\n}\n"); } if (count($this->a_scripts) > 0) { $sHtml .= "<script type=\"text/javascript\">\n"; foreach ($this->a_scripts as $s_script) { $sHtml .= "{$s_script}\n"; } $sHtml .= "</script>\n"; } } if (count($this->a_styles) > 0) { $sHtml .= "<style>\n"; foreach ($this->a_styles as $s_style) { $sHtml .= "{$s_style}\n"; } $sHtml .= "</style>\n"; } $sHtml .= "<link rel=\"search\" type=\"application/opensearchdescription+xml\" title=\"iTop\" href=\"" . utils::GetAbsoluteUrlAppRoot() . "pages/opensearch.xml.php\" />\n"; $sHtml .= "<link rel=\"shortcut icon\" href=\"" . utils::GetAbsoluteUrlAppRoot() . "images/favicon.ico\" />\n"; $sHtml .= "</head>\n"; $sHtml .= "<body>\n"; // Render the revision number if (ITOP_REVISION == '$WCREV$') { // This is NOT a version built using the buil system, just display the main version $sVersionString = Dict::Format('UI:iTopVersion:Short', ITOP_VERSION); } else { // This is a build made from SVN, let display the full information $sVersionString = Dict::Format('UI:iTopVersion:Long', ITOP_VERSION, ITOP_REVISION, ITOP_BUILD_DATE); } // Render the text of the global search form $sText = htmlentities(utils::ReadParam('text', '', false, 'raw_data'), ENT_QUOTES, 'UTF-8'); $sOnClick = ""; if (empty($sText)) { // if no search text is supplied then // 1) the search text is filled with "your search" // 2) clicking on it will erase it $sText = Dict::S("UI:YourSearch"); $sOnClick = " onclick=\"this.value='';this.onclick=null;\""; } // Render the tabs in the page (if any) $this->s_content = $this->m_oTabs->RenderIntoContent($this->s_content); if ($this->GetOutputFormat() == 'html') { $oAppContext = new ApplicationContext(); $sUserName = UserRights::GetUser(); $sIsAdmin = UserRights::IsAdministrator() ? '(Administrator)' : ''; if (UserRights::IsAdministrator()) { $sLogonMessage = Dict::Format('UI:LoggedAsMessage+Admin', $sUserName); } else { $sLogonMessage = Dict::Format('UI:LoggedAsMessage', $sUserName); } $sLogOffMenu = "<span id=\"logOffBtn\"><ul><li><img src=\"../images/onOffBtn.png\"><ul>"; $sLogOffMenu .= "<li><span>{$sLogonMessage}</span></li>\n"; $aActions = array(); $oPrefs = new URLPopupMenuItem('UI:Preferences', Dict::S('UI:Preferences'), utils::GetAbsoluteUrlAppRoot() . "pages/preferences.php?" . $oAppContext->GetForLink()); $aActions[$oPrefs->GetUID()] = $oPrefs->GetMenuItem(); if (utils::CanLogOff()) { $oLogOff = new URLPopupMenuItem('UI:LogOffMenu', Dict::S('UI:LogOffMenu'), utils::GetAbsoluteUrlAppRoot() . 'pages/logoff.php?operation=do_logoff'); $aActions[$oLogOff->GetUID()] = $oLogOff->GetMenuItem(); } if (UserRights::CanChangePassword()) { $oChangePwd = new URLPopupMenuItem('UI:ChangePwdMenu', Dict::S('UI:ChangePwdMenu'), utils::GetAbsoluteUrlAppRoot() . 'pages/UI.php?loginop=change_pwd'); $aActions[$oChangePwd->GetUID()] = $oChangePwd->GetMenuItem(); } utils::GetPopupMenuItems($this, iPopupMenuExtension::MENU_USER_ACTIONS, null, $aActions); $oAbout = new JSPopupMenuItem('UI:AboutBox', Dict::S('UI:AboutBox'), 'return ShowAboutBox();'); $aActions[$oAbout->GetUID()] = $oAbout->GetMenuItem(); $sLogOffMenu .= $this->RenderPopupMenuItems($aActions); $sRestrictions = ''; if (!MetaModel::DBHasAccess(ACCESS_ADMIN_WRITE)) { if (!MetaModel::DBHasAccess(ACCESS_ADMIN_WRITE)) { $sRestrictions = Dict::S('UI:AccessRO-All'); } } elseif (!MetaModel::DBHasAccess(ACCESS_USER_WRITE)) { $sRestrictions = Dict::S('UI:AccessRO-Users'); } $sApplicationBanner = ''; if (strlen($sRestrictions) > 0) { $sAdminMessage = trim(MetaModel::GetConfig()->Get('access_message')); $sApplicationBanner .= '<div id="admin-banner">'; $sApplicationBanner .= '<img src="../images/locked.png" style="vertical-align:middle;">'; $sApplicationBanner .= ' <b>' . $sRestrictions . '</b>'; if (strlen($sAdminMessage) > 0) { $sApplicationBanner .= ' <b>' . $sAdminMessage . '</b>'; } $sApplicationBanner .= '</div>'; } if (strlen($this->m_sMessage)) { $sApplicationBanner .= '<div id="admin-banner"><span style="padding:5px;">' . $this->m_sMessage . '<span></div>'; } $sApplicationBanner .= $sBannerExtraHtml; if (!empty($sNorthPane)) { $sNorthPane = '<div id="bottom-pane" class="ui-layout-north">' . $sNorthPane . '</div>'; } if (!empty($sSouthPane)) { $sSouthPane = '<div id="bottom-pane" class="ui-layout-south">' . $sSouthPane . '</div>'; } $sIconUrl = Utils::GetConfig()->Get('app_icon_url'); $sOnlineHelpUrl = MetaModel::GetConfig()->Get('online_help'); //$sLogOffMenu = "<span id=\"logOffBtn\" style=\"height:55px;padding:0;margin:0;\"><img src=\"../images/onOffBtn.png\"></span>"; $sDisplayIcon = utils::GetAbsoluteUrlAppRoot() . 'images/itop-logo.png'; if (file_exists(MODULESROOT . 'branding/main-logo.png')) { $sDisplayIcon = utils::GetAbsoluteUrlModulesRoot() . 'branding/main-logo.png'; } $sHtml .= $sNorthPane; $sHtml .= '<div id="left-pane" class="ui-layout-west">'; $sHtml .= '<!-- Beginning of the left pane -->'; $sHtml .= ' <div class="ui-layout-north">'; $sHtml .= ' <div id="header-logo">'; $sHtml .= ' <div id="top-left"></div><div id="logo"><a href="' . htmlentities($sIconUrl, ENT_QUOTES, 'UTF-8') . '"><img src="' . $sDisplayIcon . '" title="' . htmlentities($sVersionString, ENT_QUOTES, 'UTF-8') . '" style="border:0; margin-top:16px; margin-right:40px;"/></a></div>'; $sHtml .= ' </div>'; $sHtml .= ' <div class="header-menu">'; if (!MetaModel::GetConfig()->Get('demo_mode')) { $sHtml .= ' <div class="icon ui-state-default ui-corner-all"><span id="tPinMenu" class="ui-icon ui-icon-pin-w">pin</span></div>'; } $sHtml .= ' <div style="text-align:center;">' . self::FilterXSS($sForm) . '</div>'; $sHtml .= ' </div>'; $sHtml .= ' </div>'; $sHtml .= ' <div id="menu" class="ui-layout-center">'; $sHtml .= ' <div id="inner_menu">'; $sHtml .= ' <div id="accordion">'; $sHtml .= self::FilterXSS($this->m_sMenu); $sHtml .= ' <!-- Beginning of the accordion menu -->'; $sHtml .= ' <!-- End of the accordion menu-->'; $sHtml .= ' </div>'; $sHtml .= ' </div> <!-- /inner menu -->'; $sHtml .= ' </div> <!-- /menu -->'; $sHtml .= ' <div class="footer ui-layout-south"><div id="combodo_logo"><a href="http://www.combodo.com" title="www.combodo.com" target="_blank"><img src="../images/logo-combodo.png"/></a></div></div>'; $sHtml .= '<!-- End of the left pane -->'; $sHtml .= '</div>'; $sHtml .= '<div class="ui-layout-center">'; $sHtml .= ' <div id="top-bar" style="width:100%">'; $sHtml .= self::FilterXSS($sApplicationBanner); $sHtml .= ' <div id="global-search"><form action="' . utils::GetAbsoluteUrlAppRoot() . 'pages/UI.php"><table><tr><td></td><td id="g-search-input"><input type="text" name="text" value="' . $sText . '"' . $sOnClick . '/></td>'; $sHtml .= '<td><input type="image" src="../images/searchBtn.png"/></a></td>'; $sHtml .= '<td><a style="background:transparent;" href="' . $sOnlineHelpUrl . '" target="_blank"><img style="border:0;padding-left:20px;padding-right:10px;" title="' . Dict::S('UI:Help') . '" src="../images/help.png"/></td>'; $sHtml .= '<td style="padding-right:20px;padding-left:10px;">' . self::FilterXSS($sLogOffMenu) . '</td><td><input type="hidden" name="operation" value="full_text"/></td></tr></table></form></div>'; //echo '<td> <input type="hidden" name="operation" value="full_text"/></td></tr></table></form></div>'; $sHtml .= ' </div>'; $sHtml .= ' <div class="ui-layout-content" style="overflow:auto;">'; $sHtml .= ' <!-- Beginning of page content -->'; $sHtml .= self::FilterXSS($this->s_content); $sHtml .= ' <!-- End of page content -->'; $sHtml .= ' </div>'; $sHtml .= '</div>'; $sHtml .= $sSouthPane; // Add the captured output if (trim($s_captured_output) != "") { $sHtml .= "<div id=\"rawOutput\" title=\"Debug Output\"><div style=\"height:500px; overflow-y:auto;\">" . self::FilterXSS($s_captured_output) . "</div></div>\n"; } $sHtml .= "<div id=\"at_the_end\">" . self::FilterXSS($this->s_deferred_content) . "</div>"; $sHtml .= "<div style=\"display:none\" title=\"ex2\" id=\"ex2\">Please wait...</div>\n"; // jqModal Window $sHtml .= "<div style=\"display:none\" title=\"dialog\" id=\"ModalDlg\"></div>"; $sHtml .= "<div style=\"display:none\" id=\"ajax_content\"></div>"; } else { $sHtml .= self::FilterXSS($this->s_content); } $sHtml .= "</body>\n"; $sHtml .= "</html>\n"; if ($this->GetOutputFormat() == 'html') { $oKPI = new ExecutionKPI(); echo $sHtml; $oKPI->ComputeAndReport('Echoing (' . round(strlen($sHtml) / 1024) . ' Kb)'); } else { if ($this->GetOutputFormat() == 'pdf' && $this->IsOutputFormatAvailable('pdf')) { if (@is_readable(APPROOT . 'lib/MPDF/mpdf.php')) { require_once APPROOT . 'lib/MPDF/mpdf.php'; $oMPDF = new mPDF('c'); $oMPDF->mirroMargins = false; if ($this->a_base['href'] != '') { $oMPDF->setBasePath($this->a_base['href']); // Seems that the <BASE> tag is not recognized by mPDF... } $oMPDF->showWatermarkText = true; if ($this->GetOutputOption('pdf', 'template_path')) { $oMPDF->setImportUse(); // Allow templates $oMPDF->SetDocTemplate($this->GetOutputOption('pdf', 'template_path'), 1); } $oMPDF->WriteHTML($sHtml); $sOutputName = $this->s_title . '.pdf'; if ($this->GetOutputOption('pdf', 'output_name')) { $sOutputName = $this->GetOutputOption('pdf', 'output_name'); } $oMPDF->Output($sOutputName, 'I'); } } } DBSearch::RecordQueryTrace(); ExecutionKPI::ReportStats(); }
public static function Init() { $aParams = array('category' => 'bizmodel,searchable,configmgmt', 'key_type' => 'autoincrement', 'name_attcode' => array('storagesystem_name', 'name'), 'state_attcode' => '', 'reconc_keys' => array('lun_id', 'name', 'storagesystem_id', 'storagesystem_name'), 'db_table' => 'logicalvolume', 'db_key_field' => 'id', 'db_finalclass_field' => '', 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-storage-mgmt/images/volume.png'); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values" => null, "sql" => 'name', "default_value" => '', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeString("lun_id", array("allowed_values" => null, "sql" => 'lun_id', "default_value" => '', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values" => null, "sql" => 'description', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeString("raid_level", array("allowed_values" => null, "sql" => 'raid_level', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeString("size", array("allowed_values" => null, "sql" => 'size', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("storagesystem_id", array("targetclass" => 'StorageSystem', "allowed_values" => null, "sql" => 'storagesystem_id', "is_null_allowed" => false, "on_target_delete" => DEL_AUTO, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("storagesystem_name", array("allowed_values" => null, "extkey_attcode" => 'storagesystem_id', "target_attcode" => 'name', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("servers_list", array("linked_class" => 'lnkServerToVolume', "ext_key_to_me" => 'volume_id', "ext_key_to_remote" => 'server_id', "allowed_values" => null, "count_min" => 0, "count_max" => 0, "duplicates" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("virtualdevices_list", array("linked_class" => 'lnkVirtualDeviceToVolume', "ext_key_to_me" => 'volume_id', "ext_key_to_remote" => 'virtualdevice_id', "allowed_values" => null, "count_min" => 0, "count_max" => 0, "duplicates" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_SetZListItems('details', array(0 => 'name', 1 => 'lun_id', 2 => 'description', 3 => 'storagesystem_id', 4 => 'raid_level', 5 => 'size', 6 => 'servers_list', 7 => 'virtualdevices_list')); MetaModel::Init_SetZListItems('standard_search', array(0 => 'name', 1 => 'lun_id', 2 => 'storagesystem_id', 3 => 'raid_level')); MetaModel::Init_SetZListItems('list', array(0 => 'lun_id', 1 => 'storagesystem_id', 2 => 'raid_level', 3 => 'size')); }
public function __construct($sTitle, $sAlternateStyleSheet = '') { $this->m_sWelcomeMsg = ''; $this->m_aMenuButtons = array(); parent::__construct($sTitle); $this->add_header("Content-type: text/html; charset=utf-8"); $this->add_header("Cache-control: no-cache"); $this->add_linked_stylesheet("../css/jquery.treeview.css"); $this->add_linked_stylesheet("../css/jquery.autocomplete.css"); $this->add_linked_stylesheet("../css/jquery.multiselect.css"); $sAbsURLAppRoot = addslashes(utils::GetAbsoluteUrlAppRoot()); // Pass it to Javascript scripts $sAbsURLModulesRoot = addslashes(utils::GetAbsoluteUrlModulesRoot()); // Pass it to Javascript scripts $oAppContext = new ApplicationContext(); $sAppContext = addslashes($oAppContext->GetForLink()); $this->add_dict_entry('UI:FillAllMandatoryFields'); if ($sAlternateStyleSheet != '') { $this->add_linked_stylesheet("../portal/{$sAlternateStyleSheet}/portal.css"); } else { $this->add_linked_stylesheet("../portal/portal.css"); } $this->add_linked_script('../js/jquery.layout.min.js'); $this->add_linked_script('../js/jquery.ba-bbq.min.js'); $this->add_linked_script("../js/jquery.tablehover.js"); $this->add_linked_script("../js/jquery.treeview.js"); $this->add_linked_script("../js/jquery.autocomplete.js"); $this->add_linked_script("../js/jquery.positionBy.js"); $this->add_linked_script("../js/jquery.popupmenu.js"); $this->add_linked_script("../js/date.js"); $this->add_linked_script("../js/jquery.tablesorter.min.js"); $this->add_linked_script("../js/jquery.tablesorter.pager.js"); $this->add_linked_script("../js/jquery.blockUI.js"); $this->add_linked_script("../js/utils.js"); $this->add_linked_script("../js/forms-json-utils.js"); $this->add_linked_script("../js/swfobject.js"); $this->add_linked_script("../js/jquery.qtip-1.0.min.js"); $this->add_linked_script('../js/jquery.multiselect.js'); $this->add_linked_script("../js/ajaxfileupload.js"); $this->add_linked_script("../js/ckeditor/ckeditor.js"); $this->add_linked_script("../js/ckeditor/adapters/jquery.js"); $sJSDisconnectedMessage = json_encode(Dict::S('UI:DisconnectedDlgMessage')); $sJSTitle = json_encode(Dict::S('UI:DisconnectedDlgTitle')); $sJSLoginAgain = json_encode(Dict::S('UI:LoginAgain')); $sJSStayOnThePage = json_encode(Dict::S('UI:StayOnThePage')); $sJSDaysMin = json_encode(array(Dict::S('DayOfWeek-Sunday-Min'), Dict::S('DayOfWeek-Monday-Min'), Dict::S('DayOfWeek-Tuesday-Min'), Dict::S('DayOfWeek-Wednesday-Min'), Dict::S('DayOfWeek-Thursday-Min'), Dict::S('DayOfWeek-Friday-Min'), Dict::S('DayOfWeek-Saturday-Min'))); $sJSMonthsShort = json_encode(array(Dict::S('Month-01-Short'), Dict::S('Month-02-Short'), Dict::S('Month-03-Short'), Dict::S('Month-04-Short'), Dict::S('Month-05-Short'), Dict::S('Month-06-Short'), Dict::S('Month-07-Short'), Dict::S('Month-08-Short'), Dict::S('Month-09-Short'), Dict::S('Month-10-Short'), Dict::S('Month-11-Short'), Dict::S('Month-12-Short'))); $iFirstDayOfWeek = (int) Dict::S('Calendar-FirstDayOfWeek'); $this->add_ready_script(<<<EOF try { \t//add new widget called TruncatedList to properly display truncated lists when they are sorted \t\$.tablesorter.addWidget({ \t // give the widget a id \t id: "truncatedList", \t // format is called when the on init and when a sorting has finished \t format: function(table) \t { \t\t\t// Check if there is a "truncated" line \t\t\tthis.truncatedList = false; \t\t\tif (\$("tr td.truncated",table).length > 0) \t\t\t{ \t\t\t\tthis.truncatedList = true; \t\t\t} \t\t\tif (this.truncatedList) \t\t\t{ \t\t\t\t\$("tr td",table).removeClass('truncated'); \t\t\t\t\$("tr:last td",table).addClass('truncated'); \t\t\t} \t } \t}); \t\t \t \t\$.tablesorter.addWidget({ \t // give the widget a id \t id: "myZebra", \t // format is called when the on init and when a sorting has finished \t format: function(table) \t { \t \t// Replace the 'red even' lines by 'red_even' since most browser do not support 2 classes selector in CSS, etc.. \t\t\t\$("tbody tr:even",table).addClass('even'); \t\t\t\$("tbody tr.red:even",table).removeClass('red').removeClass('even').addClass('red_even'); \t\t\t\$("tbody tr.orange:even",table).removeClass('orange').removeClass('even').addClass('orange_even'); \t\t\t\$("tbody tr.green:even",table).removeClass('green').removeClass('even').addClass('green_even'); \t } \t}); \t\t \t\$(".date-pick").datepicker({ \t\tshowOn: 'button', \t\tbuttonImage: '../images/calendar.png', \t\tbuttonImageOnly: true, \t\tdateFormat: 'yy-mm-dd', \t\tconstrainInput: false, \t\tchangeMonth: true, \t\tchangeYear: true, \t\tdayNamesMin: {$sJSDaysMin}, \t\tmonthNamesShort: {$sJSMonthsShort}, \t\tfirstDay: {$iFirstDayOfWeek}\t\t \t}); \t\$(".datetime-pick").datepicker({ \t\tshowOn: 'button', \t\tbuttonImage: '../images/calendar.png', \t\tbuttonImageOnly: true, \t\tdateFormat: 'yy-mm-dd 00:00:00', \t\tconstrainInput: false, \t\tchangeMonth: true, \t\tchangeYear: true, \t\tdayNamesMin: {$sJSDaysMin}, \t\tmonthNamesShort: {$sJSMonthsShort}, \t\tfirstDay: {$iFirstDayOfWeek} \t}); \t//\$('.resizable').resizable(); // Make resizable everything that claims to be resizable ! \t\$('.caselog_header').click( function () { \$(this).toggleClass('open').next('.caselog_entry').toggle(); }); \t\t\t \t\$(document).ajaxSend(function(event, jqxhr, options) { \t\tjqxhr.setRequestHeader('X-Combodo-Ajax', 'true'); \t}); \t\$(document).ajaxError(function(event, jqxhr, options) { \t\tif (jqxhr.status == 401) \t\t{ \t\t\t\$('<div>'+{$sJSDisconnectedMessage}+'</div>').dialog({ \t\t\t\tmodal:true, \t\t\t\ttitle: {$sJSTitle}, \t\t\t\tclose: function() { \$(this).remove(); }, \t\t\t\tminWidth: 400, \t\t\t\tbuttons: [ \t\t\t\t{ text: {$sJSLoginAgain}, click: function() { window.location.href= GetAbsoluteUrlAppRoot()+'pages/UI.php' } }, \t\t\t\t{ text: {$sJSStayOnThePage}, click: function() { \$(this).dialog('close'); } } \t\t\t\t] \t\t\t}); \t\t} \t}); } catch(err) { \t// Do something with the error ! \talert(err); } EOF ); $this->add_script(<<<EOF \tfunction CheckSelection(sMessage, sInputId) \t{ \t\tvar bResult; \t\tif (sInputId.length > 0) \t\t{ \t\t\tbResult = (\$('input[name='+sInputId+']:checked').length > 0); \t\t} \t\telse \t\t{ \t\t\t// First select found... \t\t\tbResult = (\$('input:checked').length > 0); \t\t} \t\tif (!bResult) \t\t{ \t\t\talert(sMessage); \t\t} \t\treturn bResult; \t} \t\t \tfunction GetAbsoluteUrlAppRoot() \t{ \t\treturn '{$sAbsURLAppRoot}'; \t} \t \tfunction GetAbsoluteUrlModulesRoot() \t{ \t\treturn '{$sAbsURLModulesRoot}'; \t} \tfunction AddAppContext(sURL) \t{ \t\tvar sContext = '{$sAppContext}'; \t\tif (sContext.length > 0) \t\t{ \t\t\tif (sURL.indexOf('?') == -1) \t\t\t{ \t\t\t\treturn sURL+'?'+sContext; \t\t\t}\t\t\t\t \t\t\treturn sURL+'&'+sContext; \t\t} \t\treturn sURL; \t} \t \tfunction GoBack(sFormId) \t{ \t\tvar form = \$('#'+sFormId); \t\tvar step_back = \$('input[name=step_back]'); \t\tform.unbind('submit'); // De-activate validation \t\tstep_back.val(1); \t\tform.submit(); // Go \t} \tfunction GoHome() \t{ \t\tvar form = \$('FORM'); \t\tform.unbind('submit'); // De-activate validation \t\twindow.location.href = window.location.href.replace(/[&?]operation=[^&]*/, ''); \t\treturn false; \t} \tfunction SetWizardNextStep(sStep) \t{ \t\tvar next_step = \$('input[id=next_step]'); \t\tnext_step.val(sStep); \t} \t\t \t// For disabling the CKEditor at init time when the corresponding textarea is disabled ! \tCKEDITOR.plugins.add( 'disabler', \t{ \t\tinit : function( editor ) \t\t{ \t\t\teditor.on( 'instanceReady', function(e) \t\t\t{ \t\t\t\te.removeListener(); \t\t\t\t\$('#'+ editor.name).trigger('update'); \t\t\t}); \t\t} \t\t \t}); EOF ); // For Wizard helper to process the ajax replies $this->add('<div id="ajax_content"></div>'); // Customize the logo (unless a customer CSS has been defined) if ($sAlternateStyleSheet == '') { if (file_exists(MODULESROOT . 'branding/portal-logo.png')) { $sDisplayIcon = utils::GetAbsoluteUrlModulesRoot() . 'branding/portal-logo.png'; $this->add_style("div#portal #logo {background: url(\"{$sDisplayIcon}\") no-repeat scroll 0 0 transparent;}"); } } }
public static function Init() { $aParams = array('category' => 'bizmodel,searchable', 'key_type' => 'autoincrement', 'name_attcode' => 'name', 'state_attcode' => '', 'reconc_keys' => array('name', 'org_id', 'organization_name'), 'db_table' => 'deliverymodel', 'db_key_field' => 'id', 'db_finalclass_field' => '', 'icon' => utils::GetAbsoluteUrlModulesRoot() . 'itop-service-mgmt/images/service.png'); MetaModel::Init_Params($aParams); MetaModel::Init_InheritAttributes(); MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values" => null, "sql" => 'name', "default_value" => '', "is_null_allowed" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass" => 'Organization', "allowed_values" => null, "sql" => 'org_id', "is_null_allowed" => false, "on_target_delete" => DEL_MANUAL, "depends_on" => array(), "display_style" => 'select', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeExternalField("organization_name", array("allowed_values" => null, "extkey_attcode" => 'org_id', "target_attcode" => 'name', "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values" => null, "sql" => 'description', "default_value" => '', "is_null_allowed" => true, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("contacts_list", array("linked_class" => 'lnkDeliveryModelToContact', "ext_key_to_me" => 'deliverymodel_id', "ext_key_to_remote" => 'contact_id', "allowed_values" => null, "count_min" => 0, "count_max" => 0, "duplicates" => false, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_AddAttribute(new AttributeLinkedSet("customers_list", array("linked_class" => 'Organization', "ext_key_to_me" => 'deliverymodel_id', "count_min" => 0, "count_max" => 0, "edit_mode" => LINKSET_EDITMODE_NONE, "allowed_values" => null, "depends_on" => array(), "always_load_in_tables" => false))); MetaModel::Init_SetZListItems('details', array(0 => 'name', 1 => 'org_id', 2 => 'description', 3 => 'contacts_list', 4 => 'customers_list')); MetaModel::Init_SetZListItems('standard_search', array(0 => 'name', 1 => 'org_id', 2 => 'description')); MetaModel::Init_SetZListItems('list', array(0 => 'org_id')); }
/** * Replaces all the parameters by the values passed in the hash array */ public static function ApplyParams($aInput, $aParams) { // Declare magic parameters $aParams['APP_URL'] = utils::GetAbsoluteUrlAppRoot(); $aParams['MODULES_URL'] = utils::GetAbsoluteUrlModulesRoot(); $aSearches = array(); $aReplacements = array(); foreach ($aParams as $sSearch => $replace) { // Some environment parameters are objects, we just need scalars if (is_object($replace)) { continue; } $aSearches[] = '$' . $sSearch . '$'; $aReplacements[] = (string) $replace; } return str_replace($aSearches, $aReplacements, $aInput); }
/** * Renders (in PDF) the key (legend) of the graphics vertically to the left of the specified zone (xmin,ymin, xmax,ymax), * and the comment (if any) at the bottom of the page. Returns the position of remaining area. * @param TCPDF $oPdf * @param string $sComments * @param float $xMin * @param float $yMin * @param float $xMax * @param float $yMax * @param hash $aContextDefs * @return hash An array ('xmin' => , 'xmax' => ,'ymin' => , 'ymax' => ) of the remaining available area to paint the graph */ protected function RenderKey(TCPDF $oPdf, $sComments, $xMin, $yMin, $xMax, $yMax, $aContextDefs) { $fFontSize = 7; // in mm $fIconSize = 6; // in mm $fPadding = 1; // in mm $oIterator = new RelationTypeIterator($this, 'Node'); $fMaxWidth = max($oPdf->GetStringWidth(Dict::S('UI:Relation:Key')) - $fIconSize, $oPdf->GetStringWidth(Dict::S('UI:Relation:Comments')) - $fIconSize); $aClasses = array(); $aIcons = array(); $aContexts = array(); $aContextIcons = array(); $oPdf->SetFont('dejavusans', '', $fFontSize, '', true); foreach ($oIterator as $sId => $oNode) { if ($sClass = $oNode->GetObjectClass()) { if (!array_key_exists($sClass, $aClasses)) { $sClassLabel = MetaModel::GetName($sClass); $width = $oPdf->GetStringWidth($sClassLabel); $fMaxWidth = max($width, $fMaxWidth); $aClasses[$sClass] = $sClassLabel; $sIconUrl = $oNode->GetProperty('icon_url'); $sIconPath = str_replace(utils::GetAbsoluteUrlModulesRoot(), APPROOT . 'env-' . utils::GetCurrentEnvironment() . '/', $sIconUrl); $aIcons[$sClass] = $sIconPath; } } $aContextRootCauses = $oNode->GetProperty('context_root_causes'); if (!is_null($aContextRootCauses)) { foreach ($aContextRootCauses as $key => $aObjects) { $aContexts[$key] = Dict::S($aContextDefs[$key]['dict']); $aContextIcons[$key] = APPROOT . 'env-' . utils::GetCurrentEnvironment() . '/' . $aContextDefs[$key]['icon']; } } } $oPdf->SetXY($xMin + $fPadding, $yMin + $fPadding); $yPos = $yMin + $fPadding; $oPdf->SetFillColor(225, 225, 225); $oPdf->Cell($fIconSize + $fPadding + $fMaxWidth, $fIconSize + $fPadding, Dict::S('UI:Relation:Key'), 0, 1, 'C', true); $yPos += $fIconSize + 2 * $fPadding; foreach ($aClasses as $sClass => $sLabel) { $oPdf->SetX($xMin + $fIconSize + $fPadding); $oPdf->Cell(0, $fIconSize + 2 * $fPadding, $sLabel, 0, 1); $oPdf->Image($aIcons[$sClass], $xMin + 1, $yPos, $fIconSize, $fIconSize); $yPos += $fIconSize + 2 * $fPadding; } foreach ($aContexts as $key => $sLabel) { $oPdf->SetX($xMin + $fIconSize + $fPadding); $oPdf->Cell(0, $fIconSize + 2 * $fPadding, $sLabel, 0, 1); $oPdf->Image($aContextIcons[$key], $xMin + 1 + $fIconSize * 0.125, $yPos + $fIconSize * 0.125, $fIconSize * 0.75, $fIconSize * 0.75); $yPos += $fIconSize + 2 * $fPadding; } $oPdf->Rect($xMin, $yMin, $fMaxWidth + $fIconSize + 3 * $fPadding, $yMax - $yMin, 'D'); if ($sComments != '') { // Draw the comment text (surrounded by a rectangle) $xPos = $xMin + $fMaxWidth + $fIconSize + 4 * $fPadding; $w = $xMax - $xPos - 2 * $fPadding; $iNbLines = 1; $sText = '<p>' . str_replace("\n", '<br/>', htmlentities($sComments, ENT_QUOTES, 'UTF-8'), $iNbLines) . '</p>'; $fLineHeight = $oPdf->getStringHeight($w, $sText); $h = (1 + $iNbLines) * $fLineHeight; $yPos = $yMax - 2 * $fPadding - $h; $oPdf->writeHTMLCell($w, $h, $xPos + $fPadding, $yPos + $fPadding, $sText, 0, 1); $oPdf->Rect($xPos, $yPos, $w + 2 * $fPadding, $h + 2 * $fPadding, 'D'); $yMax = $yPos - $fPadding; } return array('xmin' => $xMin + $fMaxWidth + $fIconSize + 4 * $fPadding, 'xmax' => $xMax, 'ymin' => $yMin, 'ymax' => $yMax); }