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 26$this->includeJsFile('administration.iconmap.edit.js.php'); 27 28$widget = (new CWidget()) 29 ->setTitle(_('Icon mapping')) 30 ->setTitleSubmenu(getAdministrationGeneralSubmenu()); 31 32$form_list = new CFormList(); 33 34$name = (new CTextBox('iconmap[name]', $data['iconmap']['name'])) 35 ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH) 36 ->setAttribute('maxlength', 64) 37 ->setAriaRequired() 38 ->setAttribute('autofocus', 'autofocus'); 39 40$form_list->addRow((new CLabel(_('Name'), 'iconmap[name]'))->setAsteriskMark(), $name); 41 42$form = (new CForm()) 43 ->setId('iconmap') 44 ->setAction((new CUrl('zabbix.php')) 45 ->setArgument('action', ($data['iconmapid'] != 0) ? 'iconmap.update' : 'iconmap.create') 46 ->getUrl() 47 ) 48 ->setAttribute('aria-labeledby', ZBX_STYLE_PAGE_TITLE) 49 ->addVar('form', 1); 50 51if ($data['iconmapid'] != 0) { 52 $form->addVar('iconmapid', $data['iconmapid']); 53} 54 55$table = (new CTable()) 56 ->setAttribute('style', 'width: 100%;') 57 ->setId('iconMapTable') 58 ->setHeader(['', '', _('Inventory field'), _('Expression'), _('Icon'), '', _('Action')]); 59 60$i = 0; 61foreach ($data['iconmap']['mappings'] as $mapping) { 62 $table->addRow( 63 (new CRow([ 64 (new CCol( 65 (new CDiv())->addClass(ZBX_STYLE_DRAG_ICON) 66 ))->addClass(ZBX_STYLE_TD_DRAG_ICON), 67 (new CSpan(($i + 1).':'))->addClass('rowNum'), 68 (new CSelect('iconmap[mappings]['.$i.'][inventory_link]')) 69 ->setValue($mapping['inventory_link']) 70 ->addOptions(CSelect::createOptionsFromArray($data['inventory_list'])), 71 (new CTextBox('iconmap[mappings]['.$i.'][expression]', $mapping['expression'])) 72 ->setWidth(ZBX_TEXTAREA_SMALL_WIDTH) 73 ->setAriaRequired() 74 ->setAttribute('maxlength', 64), 75 (new CSelect('iconmap[mappings]['.$i.'][iconid]')) 76 ->setValue($mapping['iconid']) 77 ->addOptions(CSelect::createOptionsFromArray($data['icon_list'])) 78 ->addClass('js-mapping-icon'), 79 (new CCol( 80 (new CImg('imgstore.php?iconid='.$mapping['iconid'].'&width='.ZBX_ICON_PREVIEW_WIDTH. 81 '&height='.ZBX_ICON_PREVIEW_HEIGHT, _('Preview'), null, null 82 )) 83 ->addClass('preview') 84 ->addClass(ZBX_STYLE_CURSOR_POINTER) 85 ->setAttribute('data-image-full', 'imgstore.php?iconid='.$mapping['iconid']) 86 ))->setAttribute('style', 'vertical-align: middle;'), 87 (new CCol( 88 (new CButton('remove', _('Remove'))) 89 ->addClass(ZBX_STYLE_BTN_LINK) 90 ->addClass('remove_mapping') 91 ->removeId() 92 ))->addClass(ZBX_STYLE_NOWRAP) 93 ])) 94 ->addClass('sortable') 95 ->setId('iconmapidRow_'.$i) 96 ); 97 98 $i++; 99} 100 101$table 102 ->addRow((new CRow([ 103 (new CCol( 104 (new CButton('addMapping', _('Add')))->addClass(ZBX_STYLE_BTN_LINK) 105 ))->setColSpan(7) 106 ]))->setId('iconMapListFooter')) 107 ->addRow([ 108 (new CCol(_('Default')))->setColSpan(4), 109 (new CSelect('iconmap[default_iconid]')) 110 ->setValue($data['iconmap']['default_iconid']) 111 ->addOptions(CSelect::createOptionsFromArray($data['icon_list'])) 112 ->addClass('js-mapping-icon'), 113 (new CCol( 114 (new CImg('imgstore.php?iconid='.$data['iconmap']['default_iconid']. 115 '&width='.ZBX_ICON_PREVIEW_WIDTH.'&height='.ZBX_ICON_PREVIEW_HEIGHT, _('Preview'), null, null 116 )) 117 ->addClass(ZBX_STYLE_CURSOR_POINTER) 118 ->addClass('preview') 119 ->setAttribute('data-image-full', 'imgstore.php?iconid='.$data['iconmap']['default_iconid']) 120 ))->setAttribute('style', 'vertical-align: middle;') 121 ]); 122 123$form_list->addRow( 124 (new CLabel(_('Mappings'), 'iconmap_list'))->setAsteriskMark(), 125 (new CDiv($table)) 126 ->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR) 127 ->setAttribute('style', 'min-width: '.ZBX_TEXTAREA_BIG_WIDTH.'px;') 128 ->setId('iconmap_list') 129); 130 131$tab = new CTabView(); 132$tab->addTab('iconmap_edit', _('Icon map'), $form_list); 133 134if ($data['iconmapid'] != 0) { 135 $tab->setFooter(makeFormFooter( 136 new CSubmit('update', _('Update')), 137 [ 138 (new CSimpleButton(_('Clone')))->setId('clone'), 139 (new CRedirectButton(_('Delete'), (new CUrl('zabbix.php')) 140 ->setArgument('action', 'iconmap.delete') 141 ->setArgument('iconmapid', $data['iconmapid']) 142 ->setArgumentSID(), 143 _('Delete icon map?') 144 ))->setId('delete'), 145 (new CRedirectButton(_('Cancel'), (new CUrl('zabbix.php')) 146 ->setArgument('action', 'iconmap.list') 147 ))->setId('cancel') 148 ] 149 )); 150} 151else { 152 $tab->setFooter(makeFormFooter( 153 new CSubmit('add', _('Add')), 154 [ 155 (new CRedirectButton(_('Cancel'), (new CUrl('zabbix.php')) 156 ->setArgument('action', 'iconmap.list') 157 ))->setId('cancel') 158 ] 159 )); 160} 161 162$form->addItem($tab); 163 164$widget->addItem($form)->show(); 165