ping(); $group_values = $ITSM->getGroups(); $priority_values = $ITSM->getPriorities(); $status_values = $ITSM->getStatus(); $object_types_values = $ITSM->getObjectypes(); } catch (\Throwable $th) { $error = $th->getMessage(); $has_connection = false; } if ($has_connection === false && $config['ITSM_enabled']) { ui_print_error_message(__('ITSM API is not reachable, %s', $error)); } $table_enable = new StdClass(); $table_enable->data = []; $table_enable->width = '100%'; $table_enable->id = 'itsm-enable-setup'; $table_enable->class = 'databox filters'; $table_enable->size['name'] = '30%'; $table_enable->style['name'] = 'font-weight: bold'; // Enable Pandora ITSM. $row = []; $row['name'] = __('Enable Pandora ITSM'); $row['control'] = html_print_checkbox_switch('ITSM_enabled', 1, $config['ITSM_enabled'], true); $table_enable->data['ITSM_enabled'] = $row; // Remote config table. $table_remote = new StdClass(); $table_remote->data = []; $table_remote->width = '100%'; $table_remote->styleTable = 'margin-bottom: 10px;'; $table_remote->id = 'ITSM-remote-setup'; $table_remote->class = 'databox filters filter-table-adv'; $table_remote->size['hostname'] = '50%'; $table_remote->size['api_pass'] = '50%'; // Enable ITSM user configuration. $row = []; $row['user_level'] = html_print_label_input_block( __('Pandora ITSM configuration at user level'), html_print_checkbox_switch( 'ITSM_user_level_conf', 1, $config['ITSM_user_level_conf'], true ) ); $table_remote->data['ITSM_user_level_conf'] = $row; // ITSM hostname. $row = []; $row['hostname'] = html_print_label_input_block( __('URL to Pandora ITSM setup').ui_print_help_tip(__('Full URL to your Pandora ITSM setup (e.g., http://192.168.1.20/integria/api/v1).'), true), html_print_input_text( 'ITSM_hostname', $config['ITSM_hostname'], '', 30, 100, true ), ['div_class' => 'ITSM-remote-setup-ITSM_hostname'] ); // ITSM token. $row['password'] = html_print_label_input_block( __('Token'), html_print_input_password( 'ITSM_token', io_output_password($config['ITSM_token']), '', 30, 100, true ), ['div_class' => 'ITSM-remote-setup-ITSM_token'] ); $table_remote->data['ITSM_token'] = $row; $row = []; $row['control'] = __('Inventory'); $row['control'] .= html_print_button( __('Sync inventory'), 'sync-inventory', false, '', [ 'icon' => 'cog', 'mode' => 'secondary mini', ], true ); $row['control'] .= ' '.html_print_image('images/spinner.gif', true).''; $row['control'] .= ' '.html_print_image('images/status_sets/default/severity_normal.png', true).' '.__('Connection its OK').''; $row['control'] .= ' '.html_print_image('images/status_sets/default/severity_critical.png', true).' '.__('Connection failed').''; $row['control'] .= ' '; $table_remote->data['ITSM_test'] = $row; // Print. echo '
'; $row['control'] .= ' '; $row['control'] .= ' '; $table_remote->data['ITSM_sync_inventory'] = $row; // Alert settings. $table_alert_settings = new StdClass(); $table_alert_settings->data = []; $table_alert_settings->rowspan = []; $table_alert_settings->width = '100%'; $table_alert_settings->styleTable = 'margin-bottom: 10px;'; $table_alert_settings->id = 'ITSM-settings-setup'; $table_alert_settings->class = 'databox filters filter-table-adv'; $table_alert_settings->size[0] = '50%'; $table_alert_settings->size[1] = '50%'; // Alert incident title. $table_alert_settings->data[0][0] = html_print_label_input_block( __('Title'), html_print_input_text( 'incident_title', $config['incident_title'], __('Name'), 50, 100, true, false, false ) ); // Alert incident description. $table_alert_settings->rowspan[0][1] = 3; $table_alert_settings->data[0][1] = html_print_label_input_block( __('Ticket body'), html_print_textarea( 'incident_content', 9, 25, $config['incident_content'], '', true ) ); // Alert default group. $table_alert_settings->data[1][0] = html_print_label_input_block( __('Group'), html_print_select( $group_values, 'default_group', $config['default_group'], '', '', 0, true, false, true, '', false ) ); // Alert default owner. $table_alert_settings->data[2][0] = html_print_label_input_block( __('Owner'), html_print_autocomplete_users_from_pandora_itsm( 'default_owner', $config['default_owner'], true, '30', false, false, 'w100p' ), ['div_class' => 'inline'] ); // Alert default incident status. $table_alert_settings->data[3][0] = html_print_label_input_block( __('Status'), html_print_select( $status_values, 'incident_status', $config['incident_status'], '', __('Select'), 0, true, false, true, '', false ) ); // Alert default criticity. $table_alert_settings->data[3][1] = html_print_label_input_block( __('Priority'), html_print_select( $priority_values, 'default_criticity', $config['default_criticity'], '', __('Select'), 0, true, false, true, '', false ) ); // Alert default incident type. $table_alert_settings->data[4][0] = html_print_label_input_block( __('Type'), html_print_select( $object_types_values, 'incident_type', $config['incident_type'], '', __('Select'), 0, true, false, true, '', false ) ); // Custom response settings. $table_cr_settings = new StdClass(); $table_cr_settings->data = []; $table_cr_settings->width = '100%'; $table_cr_settings->styleTable = 'margin-bottom: 10px;'; $table_cr_settings->id = 'ITSM-cr-settings-setup'; $table_cr_settings->class = 'databox filters filter-table-adv'; $table_cr_settings->size[0] = '50%'; $table_cr_settings->size[1] = '50%'; // Custom response incident title. $table_cr_settings->data[0][0] = html_print_label_input_block( __('Title'), html_print_input_text( 'cr_incident_title', $config['cr_incident_title'], __('Name'), 50, 100, true, false, false ) ); // Custom response incident description. $table_cr_settings->rowspan[0][1] = 3; $table_cr_settings->data[0][1] = html_print_label_input_block( __('Ticket body'), html_print_textarea( 'cr_incident_content', 9, 25, $config['cr_incident_content'], '', true ) ); // Custom response default group. $table_cr_settings->data[1][0] = html_print_label_input_block( __('Group'), html_print_select( $group_values, 'cr_default_group', $config['cr_default_group'], '', __('Select'), 0, true, false, true, '', false ) ); // Custom response default owner. $table_cr_settings->data[2][0] = html_print_label_input_block( __('Owner'), html_print_autocomplete_users_from_pandora_itsm( 'cr_default_owner', $config['cr_default_owner'], true, '30', false, false, 'w100p' ), ['div_class' => 'inline'] ); // Custom response default incident status. $row = []; $table_cr_settings->data[3][0] = html_print_label_input_block( __('Status'), html_print_select( $status_values, 'cr_incident_status', $config['cr_incident_status'], '', __('Select'), 0, true, false, true, '', false ) ); // Custom response default criticity. $table_cr_settings->data[3][1] = html_print_label_input_block( __('Priority'), html_print_select( $priority_values, 'cr_default_criticity', $config['cr_default_criticity'], '', __('Select'), 0, true, false, true, '', false ) ); // Custom response default incident type. $table_cr_settings->data[4][0] = html_print_label_input_block( __('Type'), html_print_select( $object_types_values, 'cr_incident_type', $config['cr_incident_type'], '', __('Select'), 0, true, false, true, '', false ) ); // Test. $row = []; $row['control'] = __('Test connection'); $row['control'] .= html_print_button( __('Test'), 'ITSM', false, '', [ 'icon' => 'cog', 'mode' => 'secondary mini', ], true ); $row['control'] .= '