1<?php 2/* 3** Zabbix 4** Copyright (C) 2001-2021 Zabbix SIA 5** 6** This program is free software; you can redistribute it and/or modify 7** it under the terms of the GNU General Public License as published by 8** the Free Software Foundation; either version 2 of the License, or 9** (at your option) any later version. 10** 11** This program is distributed in the hope that it will be useful, 12** but WITHOUT ANY WARRANTY; without even the implied warranty of 13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14** GNU General Public License for more details. 15** 16** You should have received a copy of the GNU General Public License 17** along with this program; if not, write to the Free Software 18** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19**/ 20 21 22/** 23 * @var CView $this 24 */ 25 26require_once dirname(__FILE__).'/js/configuration.trigger.massupdate.js.php'; 27 28$widget = (new CWidget())->setTitle(_('Triggers')); 29 30// Append host summary to widget header. 31if ($data['hostid'] != 0) { 32 $widget->addItem(get_header_host_table('triggers', $data['hostid'])); 33} 34 35// Create form. 36$form = (new CForm()) 37 ->setName('triggersForm') 38 ->setAttribute('aria-labeledby', ZBX_STYLE_PAGE_TITLE) 39 ->addVar('hostid', $data['hostid']) 40 ->addVar('action', $data['action']); 41 42foreach ($data['g_triggerid'] as $triggerid) { 43 $form->addVar('g_triggerid['.$triggerid.']', $triggerid); 44} 45 46/* 47 * Trigger tab 48 */ 49$trigger_form_list = (new CFormList('trigger-form-list')) 50 ->addRow( 51 (new CVisibilityBox('visible[priority]', 'priority-div', _('Original'))) 52 ->setLabel(_('Severity')) 53 ->setChecked(array_key_exists('priority', $data['visible'])) 54 ->setAttribute('autofocus', 'autofocus'), 55 (new CDiv( 56 new CSeverity([ 57 'name' => 'priority', 58 'value' => (int) $data['priority'] 59 ]) 60 ))->setId('priority-div') 61 ) 62 ->addRow( 63 (new CVisibilityBox('visible[manual_close]', 'manual-close-div', _('Original'))) 64 ->setLabel(_('Allow manual close')) 65 ->setChecked(array_key_exists('manual_close', $data['visible'])), 66 (new CDiv( 67 (new CRadioButtonList('manual_close', (int) $data['manual_close'])) 68 ->addValue(_('No'), ZBX_TRIGGER_MANUAL_CLOSE_NOT_ALLOWED) 69 ->addValue(_('Yes'), ZBX_TRIGGER_MANUAL_CLOSE_ALLOWED) 70 ->setModern(true) 71 ))->setId('manual-close-div') 72 ); 73 74/* 75 * Tags tab 76 */ 77$tags_form_list = (new CFormList('tags-form-list')) 78 ->addRow( 79 (new CVisibilityBox('visible[tags]', 'tags-div', _('Original'))) 80 ->setLabel(_('Tags')) 81 ->setChecked(array_key_exists('tags', $data['visible'])), 82 (new CDiv([ 83 (new CRadioButtonList('mass_update_tags', (int) $data['mass_update_tags'])) 84 ->addValue(_('Add'), ZBX_ACTION_ADD) 85 ->addValue(_('Replace'), ZBX_ACTION_REPLACE) 86 ->addValue(_('Remove'), ZBX_ACTION_REMOVE) 87 ->setModern(true) 88 ->addStyle('margin-bottom: 10px;'), 89 renderTagTable($data['tags']) 90 ->setHeader([_('Name'), _('Value'), _('Action')]) 91 ->setId('tags-table') 92 ]))->setId('tags-div') 93 ); 94 95/* 96 * Dependencies tab 97 */ 98$dependencies_form_list = new CFormList('dependencies-form-list'); 99 100$dependencies_table = (new CTable()) 101 ->addStyle('width: 100%;') 102 ->setHeader([_('Name'), _('Action')]); 103 104foreach ($data['dependencies'] as $dependency) { 105 $dependencies_form_list->addVar('dependencies[]', $dependency['triggerid'], 'dependencies_'.$dependency['triggerid']); 106 107 $dependency_description = CHtml::encode( 108 implode(', ', zbx_objectValues($dependency['hosts'], 'name')).NAME_DELIMITER.$dependency['description'] 109 ); 110 111 if ($dependency['flags'] == ZBX_FLAG_DISCOVERY_NORMAL) { 112 $description = (new CLink($dependency_description, 113 'triggers.php?form=update&triggerid='.$dependency['triggerid'] 114 ))->setTarget('_blank'); 115 } 116 else { 117 $description = $dependency_description; 118 } 119 120 $dependencies_table->addRow( 121 (new CRow([ 122 $description, 123 (new CCol( 124 (new CButton('remove', _('Remove'))) 125 ->onClick('javascript: removeDependency(\''.$dependency['triggerid'].'\');') 126 ->addClass(ZBX_STYLE_BTN_LINK) 127 ->removeId() 128 ))->addClass(ZBX_STYLE_NOWRAP) 129 ]))->setId('dependency_'.$dependency['triggerid']) 130 ); 131} 132 133$dependencies_form_list->addRow( 134 (new CVisibilityBox('visible[dependencies]', 'dependencies-div', _('Original'))) 135 ->setLabel(_('Replace dependencies')) 136 ->setChecked(array_key_exists('dependencies', $data['visible'])), 137 (new CDiv([ 138 $dependencies_table, 139 (new CButton('btn1', _('Add'))) 140 ->onClick('return PopUp("popup.generic",'. 141 json_encode([ 142 'srctbl' => 'triggers', 143 'srcfld1' => 'triggerid', 144 'dstfrm' => 'massupdate', 145 'dstfld1' => 'new_dependency', 146 'dstact' => 'add_dependency', 147 'reference' => 'deptrigger', 148 'objname' => 'triggers', 149 'multiselect' => '1', 150 'with_triggers' => '1', 151 'noempty' => '1' 152 ]).', null, this);' 153 ) 154 ->addClass(ZBX_STYLE_BTN_LINK) 155 ])) 156 ->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR) 157 ->addStyle('min-width: '.ZBX_TEXTAREA_BIG_WIDTH.'px;') 158 ->setId('dependencies-div') 159); 160 161// Append tabs to the form. 162$tabs = (new CTabView()) 163 ->addTab('trigger_tab', _('Trigger'), $trigger_form_list) 164 ->addTab('tags_tab', _('Tags'), $tags_form_list) 165 ->addTab('dependencies_tab', _('Dependencies'), $dependencies_form_list); 166 167if (!hasRequest('massupdate') && !hasRequest('add_dependency')) { 168 $tabs->setSelected(0); 169} 170 171// Append buttons to the form. 172$tabs->setFooter(makeFormFooter( 173 new CSubmit('massupdate', _('Update')), 174 [new CButtonCancel(url_param('hostid'))] 175)); 176 177$form->addItem($tabs); 178 179$widget->addItem($form); 180 181$widget->show(); 182