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$this->includeJSfile('app/views/administration.mediatype.edit.js.php'); 23 24$widget = (new CWidget())->setTitle(_('Media types')); 25 26// create form 27$mediaTypeForm = (new CForm()) 28 ->setId('media_type_form') 29 ->addVar('form', 1) 30 ->addVar('mediatypeid', $data['mediatypeid']) 31 ->addVar('exec_params_count', $data['exec_params_count']); 32 33// create form list 34$nameTextBox = (new CTextBox('description', $data['description'], false, 100)) 35 ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH) 36 ->setAttribute('autofocus', 'autofocus'); 37$mediaTypeFormList = (new CFormList()) 38 ->addRow(_('Name'), $nameTextBox); 39 40// append type to form list 41$cmbType = new CComboBox('type', $data['type'], null, [ 42 MEDIA_TYPE_EMAIL => _('Email'), 43 MEDIA_TYPE_EXEC => _('Script'), 44 MEDIA_TYPE_SMS => _('SMS'), 45 MEDIA_TYPE_JABBER => _('Jabber') 46]); 47$cmbType->addItemsInGroup(_('Commercial'), [MEDIA_TYPE_EZ_TEXTING => _('Ez Texting')]); 48$cmbTypeRow = [$cmbType]; 49$ez_texting_link = (new CLink('https://app.eztexting.com', 'https://app.eztexting.com/')) 50 ->setId('eztext_link') 51 ->setTarget('_blank'); 52$cmbTypeRow[] = $ez_texting_link; 53 54$mediaTypeFormList 55 ->addRow(_('Type'), $cmbTypeRow) 56 ->addRow(_('SMTP server'), 57 (new CTextBox('smtp_server', $data['smtp_server']))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH) 58 ) 59 ->addRow(_('SMTP server port'), 60 (new CNumericBox('smtp_port', $data['smtp_port'], 5, false, false, false))->setWidth(ZBX_TEXTAREA_TINY_WIDTH) 61 ) 62 ->addRow(_('SMTP helo'), (new CTextBox('smtp_helo', $data['smtp_helo']))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)) 63 ->addRow(_('SMTP email'), (new CTextBox('smtp_email', $data['smtp_email']))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)) 64 ->addRow(_('Connection security'), 65 (new CRadioButtonList('smtp_security', (int) $data['smtp_security'])) 66 ->addValue(_('None'), SMTP_CONNECTION_SECURITY_NONE) 67 ->addValue(_('STARTTLS'), SMTP_CONNECTION_SECURITY_STARTTLS) 68 ->addValue(_('SSL/TLS'), SMTP_CONNECTION_SECURITY_SSL_TLS) 69 ->setModern(true) 70 ) 71 ->addRow(_('SSL verify peer'), (new CCheckBox('smtp_verify_peer'))->setChecked($data['smtp_verify_peer'])) 72 ->addRow(_('SSL verify host'), (new CCheckBox('smtp_verify_host'))->setChecked($data['smtp_verify_host'])) 73 ->addRow(_('Authentication'), 74 (new CRadioButtonList('smtp_authentication', (int) $data['smtp_authentication'])) 75 ->addValue(_('None'), SMTP_AUTHENTICATION_NONE) 76 ->addValue(_('Username and password'), SMTP_AUTHENTICATION_NORMAL) 77 ->setModern(true) 78 ) 79 ->addRow(_('Username'), (new CTextBox('smtp_username', $data['smtp_username']))->setWidth(ZBX_TEXTAREA_SMALL_WIDTH)) 80 ->addRow(_('Script name'), (new CTextBox('exec_path', $data['exec_path']))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)); 81 82$exec_params_table = (new CTable()) 83 ->setId('exec_params_table') 84 ->setHeader([_('Parameter'), _('Action')]) 85 ->setAttribute('style', 'width: 100%;'); 86 87if ($data['exec_params_count'] != 0) { 88 foreach ($data['exec_params'] as $i => $exec_param) { 89 $exec_params_table->addRow([ 90 (new CTextBox('exec_params['.$i.'][exec_param]', $exec_param['exec_param'], false, 255)) 91 ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH), 92 (new CButton('exec_params['.$i.'][remove]', _('Remove'))) 93 ->addClass(ZBX_STYLE_BTN_LINK) 94 ->addClass('element-table-remove') 95 ], 96 'form_row' 97 ); 98 } 99} 100 101$exec_params_table->addRow([(new CButton('exec_param_add', _('Add'))) 102 ->addClass(ZBX_STYLE_BTN_LINK) 103 ->addClass('element-table-add')]); 104 105$mediaTypeFormList->addRow(_('Script parameters'), 106 (new CDiv($exec_params_table)) 107 ->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR) 108 ->setAttribute('style', 'min-width: '.ZBX_TEXTAREA_STANDARD_WIDTH.'px;'), 109 'row_exec_params' 110); 111 112$mediaTypeFormList->addRow(_('GSM modem'), 113 (new CTextBox('gsm_modem', $data['gsm_modem']))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH) 114); 115 116// create password field 117if ($data['passwd'] !== '' && !$data['change_passwd']) { 118 // Disabling 'passwd' field prevents stored passwords autofill by browser. 119 $passwdField = [ 120 (new CButton('chPass_btn', _('Change password'))), 121 (new CPassBox('passwd', '')) 122 ->setWidth(ZBX_TEXTAREA_SMALL_WIDTH) 123 ->addStyle('display: none;') 124 ->setAttribute('disabled', 'disabled') 125 ]; 126} 127else { 128 $passwdField = (new CPassBox('passwd', $data['passwd']))->setWidth(ZBX_TEXTAREA_SMALL_WIDTH); 129} 130 131// append password field to form list 132$mediaTypeFormList 133 ->addRow(_('Jabber identifier'), 134 (new CTextBox('jabber_username', $data['jabber_username']))->setWidth(ZBX_TEXTAREA_SMALL_WIDTH) 135 ) 136 ->addRow(_('Username'), 137 (new CTextBox('eztext_username', $data['eztext_username']))->setWidth(ZBX_TEXTAREA_SMALL_WIDTH) 138 ) 139 ->addRow(_('Password'), $passwdField) 140 ->addRow(_('Message text limit'), new CComboBox('eztext_limit', $data['eztext_limit'], null, [ 141 EZ_TEXTING_LIMIT_USA => _('USA (160 characters)'), 142 EZ_TEXTING_LIMIT_CANADA => _('Canada (136 characters)') 143 ])) 144 ->addRow(_('Enabled'), 145 (new CCheckBox('status', MEDIA_TYPE_STATUS_ACTIVE))->setChecked(MEDIA_TYPE_STATUS_ACTIVE == $data['status']) 146 ); 147 148// append form list to tab 149$mediaTypeTab = (new CTabView())->addTab('mediaTypeTab', _('Media type'), $mediaTypeFormList); 150 151// append buttons to form 152$cancelButton = (new CRedirectButton(_('Cancel'), 'zabbix.php?action=mediatype.list'))->setId('cancel'); 153 154if ($data['mediatypeid'] == 0) { 155 $addButton = (new CSubmitButton(_('Add'), 'action', 'mediatype.create'))->setId('add'); 156 157 $mediaTypeTab->setFooter(makeFormFooter( 158 $addButton, 159 [$cancelButton] 160 )); 161} 162else { 163 $updateButton = (new CSubmitButton(_('Update'), 'action', 'mediatype.update'))->setId('update'); 164 $cloneButton = (new CSimpleButton(_('Clone')))->setId('clone'); 165 $deleteButton = (new CRedirectButton(_('Delete'), 166 'zabbix.php?action=mediatype.delete&sid='.$data['sid'].'&mediatypeids[]='.$data['mediatypeid'], 167 _('Delete media type?') 168 )) 169 ->setId('delete'); 170 171 $mediaTypeTab->setFooter(makeFormFooter( 172 $updateButton, 173 [ 174 $cloneButton, 175 $deleteButton, 176 $cancelButton 177 ] 178 )); 179} 180 181// append tab to form 182$mediaTypeForm->addItem($mediaTypeTab); 183 184// append form to widget 185$widget->addItem($mediaTypeForm)->show(); 186