$form->addVar('regexpid', $this->data['regexpid']);
/*
 * Expressions tab
 */
$exprTab = new CFormList('exprTab');
$nameTextBox = new CTextBox('name', $this->get('name'), ZBX_TEXTBOX_STANDARD_SIZE, false, 128);
$nameTextBox->attr('autofocus', 'autofocus');
$exprTab->addRow(_('Name'), $nameTextBox);
$exprTable = new CTable(null, 'formElementTable formWideTable');
$exprTable->attr('id', 'exprTable');
$exprTable->setHeader(array(_('Expression'), new CCol(_('Expression type'), 'nowrap'), new CCol(_('Case sensitive'), 'nowrap'), SPACE));
$exprTable->setFooter(new CButton('add', _('Add'), null, 'link_menu exprAdd'));
$exprTab->addRow(_('Expressions'), new CDiv($exprTable, 'inlineblock border_dotted objectgroup'));
$exprForm = new CTable(null, 'formElementTable');
$exprForm->addRow(array(_('Expression'), new CTextBox('expressionNew', null, ZBX_TEXTBOX_STANDARD_SIZE)));
$exprForm->addRow(array(_('Expression type'), new CComboBox('typeNew', null, null, expression_type2str())));
$exprForm->addRow(array(_('Delimiter'), new CComboBox('delimiterNew', null, null, expressionDelimiters())), null, 'delimiterNewRow');
$exprForm->addRow(array(_('Case sensitive'), new CCheckBox('case_sensitiveNew')));
$exprFormFooter = array(new CButton('saveExpression', _('Add'), null, 'link_menu'), SPACE, new CButton('cancelExpression', _('Cancel'), null, 'link_menu'));
$exprTab->addRow(null, new CDiv(array($exprForm, $exprFormFooter), 'objectgroup inlineblock border_dotted'), true, 'exprForm');
/*
 * Test tab
 */
$testTab = new CFormList('testTab');
$testTab->addRow(_('Test string'), new CTextArea('test_string', $this->get('test_string')));
$preloaderDiv = new CDiv(null, 'preloader', 'testPreloader');
$preloaderDiv->addStyle('display: none');
$testTab->addRow(SPACE, array(new CButton('testExpression', _('Test expressions')), $preloaderDiv));
$tabExp = new CTableInfo(null);
$tabExp->attr('id', 'testResultTable');
$tabExp->setHeader(array(_('Expression'), _('Expression type'), _('Result')));
Example #2
0
function get_expression_form()
{
    $tblExp = new CTable();
    /* init new_timeperiod variable */
    $new_expression = get_request('new_expression', array());
    if (is_array($new_expression) && isset($new_expression['id'])) {
        $tblExp->addItem(new Cvar('new_expression[id]', $new_expression['id']));
    }
    if (!is_array($new_expression)) {
        $new_expression = array();
    }
    if (!isset($new_expression['expression'])) {
        $new_expression['expression'] = '';
    }
    if (!isset($new_expression['expression_type'])) {
        $new_expression['expression_type'] = EXPRESSION_TYPE_INCLUDED;
    }
    if (!isset($new_expression['case_sensitive'])) {
        $new_expression['case_sensitive'] = 0;
    }
    if (!isset($new_expression['exp_delimiter'])) {
        $new_expression['exp_delimiter'] = ',';
    }
    $tblExp->addRow(array(S_EXPRESSION, new CTextBox('new_expression[expression]', $new_expression['expression'], 60)));
    $cmbType = new CComboBox('new_expression[expression_type]', $new_expression['expression_type'], 'javascript: submit();');
    $cmbType->addItem(EXPRESSION_TYPE_INCLUDED, expression_type2str(EXPRESSION_TYPE_INCLUDED));
    $cmbType->addItem(EXPRESSION_TYPE_ANY_INCLUDED, expression_type2str(EXPRESSION_TYPE_ANY_INCLUDED));
    $cmbType->addItem(EXPRESSION_TYPE_NOT_INCLUDED, expression_type2str(EXPRESSION_TYPE_NOT_INCLUDED));
    $cmbType->addItem(EXPRESSION_TYPE_TRUE, expression_type2str(EXPRESSION_TYPE_TRUE));
    $cmbType->addItem(EXPRESSION_TYPE_FALSE, expression_type2str(EXPRESSION_TYPE_FALSE));
    $tblExp->addRow(array(S_EXPRESSION_TYPE, $cmbType));
    if (EXPRESSION_TYPE_ANY_INCLUDED == $new_expression['expression_type']) {
        $cmbDelimiter = new CComboBox('new_expression[exp_delimiter]', $new_expression['exp_delimiter']);
        $cmbDelimiter->addItem(',', ',');
        $cmbDelimiter->addItem('.', '.');
        $cmbDelimiter->addItem('/', '/');
        $tblExp->addRow(array(S_DELIMITER, $cmbDelimiter));
    } else {
        $tblExp->addItem(new Cvar('new_expression[exp_delimiter]', $new_expression['exp_delimiter']));
    }
    $chkbCase = new CCheckBox('new_expression[case_sensitive]', $new_expression['case_sensitive'], null, 1);
    $tblExp->addRow(array(S_IGNORE_CASE, $chkbCase));
    $tblExpFooter = new CTableInfo($tblExp);
    $oper_buttons = array();
    $oper_buttons[] = new CButton('add_expression', isset($new_expression['id']) ? S_SAVE : S_ADD);
    $oper_buttons[] = new CButton('cancel_new_expression', S_CANCEL);
    $td = new CCol($oper_buttons);
    $td->addOption('colspan', 2);
    $td->addOption('style', 'text-align: right;');
    $tblExpFooter->setFooter($td);
    // end of condition list preparation
    return $tblExpFooter;
}
$regExpForm = new CForm();
$regExpForm->setName('regularExpressionsForm');
$regExpForm->addItem(BR());
$regExpTable = new CTableInfo(_('No regular expressions found.'));
$regExpTable->setHeader(array(new CCheckBox('all_regexps', null, "checkAll('regularExpressionsForm', 'all_regexps', 'regexpids');"), $this->data['displayNodes'] ? _('Node') : null, _('Name'), _('Expressions')));
$expressions = array();
$values = array();
foreach ($this->data['db_exps'] as $exp) {
    if (!isset($expressions[$exp['regexpid']])) {
        $values[$exp['regexpid']] = 1;
    } else {
        $values[$exp['regexpid']]++;
    }
    if (!isset($expressions[$exp['regexpid']])) {
        $expressions[$exp['regexpid']] = new CTable();
    }
    $expressions[$exp['regexpid']]->addRow(array($values[$exp['regexpid']], ' » ', $exp['expression'], ' [' . expression_type2str($exp['expression_type']) . ']'));
}
foreach ($this->data['regexps'] as $regexpid => $regexp) {
    $regExpTable->addRow(array(new CCheckBox('regexpids[' . $regexp['regexpid'] . ']', null, null, $regexp['regexpid']), $this->data['displayNodes'] ? $regexp['nodename'] : null, new CLink($regexp['name'], 'adm.regexps.php?form=update' . '&regexpid=' . $regexp['regexpid']), isset($expressions[$regexpid]) ? $expressions[$regexpid] : '-'));
}
$goBox = new CComboBox('go');
$goOption = new CComboItem('delete', _('Delete selected'));
$goOption->setAttribute('confirm', _('Delete selected regular expressions?'));
$goBox->addItem($goOption);
$goButton = new CSubmit('goButton', _('Go') . ' (0)');
$goButton->setAttribute('id', 'goButton');
zbx_add_post_js('chkbxRange.pageGoName = "regexpids";');
$regExpTable->setFooter(new CCol(array($goBox, $goButton)));
$regExpForm->addItem($regExpTable);
return $regExpForm;
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
**/
$widget = (new CWidget())->setTitle(_('Regular expressions'))->setControls((new CForm())->cleanItems()->addItem((new CList())->addItem(makeAdministrationGeneralMenu('adm.regexps.php'))->addItem(new CSubmit('form', _('New regular expression')))));
$form = (new CForm())->setName('regularExpressionsForm');
$regExpTable = (new CTableInfo())->setHeader([(new CColHeader((new CCheckBox('all_regexps'))->onClick("checkAll('" . $form->getName() . "', 'all_regexps', 'regexpids');")))->addClass(ZBX_STYLE_CELL_WIDTH), _('Name'), _('Expressions')]);
$expressions = [];
$values = [];
foreach ($data['db_exps'] as $exp) {
    if (!isset($expressions[$exp['regexpid']])) {
        $values[$exp['regexpid']] = 1;
    } else {
        $values[$exp['regexpid']]++;
    }
    if (!isset($expressions[$exp['regexpid']])) {
        $expressions[$exp['regexpid']] = new CTable();
    }
    $expressions[$exp['regexpid']]->addRow([new CCol($values[$exp['regexpid']]), new CCol(' » '), new CCol($exp['expression']), new CCol(' [' . expression_type2str($exp['expression_type']) . ']')]);
}
foreach ($data['regexps'] as $regexpid => $regexp) {
    $regExpTable->addRow([new CCheckBox('regexpids[' . $regexp['regexpid'] . ']', $regexp['regexpid']), new CLink($regexp['name'], 'adm.regexps.php?form=update' . '&regexpid=' . $regexp['regexpid']), isset($expressions[$regexpid]) ? $expressions[$regexpid] : '']);
}
// append table to form
$form->addItem([$regExpTable, new CActionButtonList('action', 'regexpids', ['regexp.massdelete' => ['name' => _('Delete'), 'confirm' => _('Delete selected regular expressions?')]])]);
// append form to widget
$widget->addItem($form);
return $widget;
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
**/
require_once dirname(__FILE__) . '/js/adm.regexprs.edit.js.php';
$widget = (new CWidget())->setTitle(_('Regular expressions'))->setControls((new CForm())->cleanItems()->addItem((new CList())->addItem(makeAdministrationGeneralMenu('adm.regexps.php'))));
$form = (new CForm())->setId('zabbixRegExpForm')->addVar('form', 1)->addVar('regexpid', $data['regexpid']);
/*
 * Expressions tab
 */
$exprTable = (new CTable())->setId('tbl_expr')->setAttribute('style', 'width: 100%;')->setHeader([_('Expression type'), _('Expression'), _('Delimiter'), _('Case sensitive'), _('Action')]);
foreach ($data['expressions'] as $i => $expression) {
    $exp_delimiter = new CComboBox('expressions[' . $i . '][exp_delimiter]', $expression['exp_delimiter'], null, expressionDelimiters());
    if ($expression['expression_type'] != EXPRESSION_TYPE_ANY_INCLUDED) {
        $exp_delimiter->addStyle('display: none;');
    }
    $row = [(new CComboBox('expressions[' . $i . '][expression_type]', $expression['expression_type'], null, expression_type2str()))->onChange('onChangeExpressionType(this, ' . $i . ')'), (new CTextBox('expressions[' . $i . '][expression]', $expression['expression'], false, 255))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH), $exp_delimiter, (new CCheckBox('expressions[' . $i . '][case_sensitive]', '1'))->setChecked($expression['case_sensitive'])];
    $button_cell = [(new CButton('expressions[' . $i . '][remove]', _('Remove')))->addClass(ZBX_STYLE_BTN_LINK)->addClass('element-table-remove')];
    if (array_key_exists('expressionid', $expression)) {
        $button_cell[] = new CVar('expressions[' . $i . '][expressionid]', $expression['expressionid']);
    }
    $row[] = (new CCol($button_cell))->addClass(ZBX_STYLE_NOWRAP);
    $exprTable->addRow((new CRow($row))->addClass('form_row')->setAttribute('data-index', $i));
}
$exprTable->setFooter((new CButton('expression_add', _('Add')))->addClass(ZBX_STYLE_BTN_LINK)->addClass('element-table-add'));
$exprTab = (new CFormList('exprTab'))->addRow(_('Name'), (new CTextBox('name', $data['name'], false, 128))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)->setAttribute('autofocus', 'autofocus'))->addRow(_('Expressions'), (new CDiv($exprTable))->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR)->setAttribute('style', 'min-width: ' . ZBX_TEXTAREA_BIG_WIDTH . 'px;'));
/*
 * Test tab
 */
$testTab = (new CFormList())->addRow(_('Test string'), (new CTextArea('test_string', $data['test_string']))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH))->addRow('', (new CButton('testExpression', _('Test expressions')))->addClass(ZBX_STYLE_BTN_ALT))->addRow(_('Result'), (new CDiv((new CTable())->setId('testResultTable')->setAttribute('style', 'width: 100%;')->setHeader([_('Expression type'), _('Expression'), _('Result')])))->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR)->setAttribute('style', 'min-width: ' . ZBX_TEXTAREA_BIG_WIDTH . 'px;'));
$regExpView = new CTabView();
if (!$data['form_refresh']) {
function get_expression_form()
{
    $tblExp = new CTable();
    /* init new_timeperiod variable */
    $new_expression = get_request('new_expression', array());
    if (is_array($new_expression) && isset($new_expression['id'])) {
        $tblExp->addItem(new Cvar('new_expression[id]', $new_expression['id']));
    }
    if (!is_array($new_expression)) {
        $new_expression = array();
    }
    if (isset($new_expression['expressionid'])) {
        $tblExp->addItem(new CVar('new_expression[expressionid]', $new_expression['expressionid']));
    }
    if (!isset($new_expression['expression'])) {
        $new_expression['expression'] = '';
    }
    if (!isset($new_expression['expression_type'])) {
        $new_expression['expression_type'] = EXPRESSION_TYPE_INCLUDED;
    }
    if (!isset($new_expression['case_sensitive'])) {
        $new_expression['case_sensitive'] = 0;
    }
    if (!isset($new_expression['exp_delimiter'])) {
        $new_expression['exp_delimiter'] = ',';
    }
    $tblExp->addRow(array(_('Expression'), new CTextBox('new_expression[expression]', $new_expression['expression'], 60)));
    $cmbType = new CComboBox('new_expression[expression_type]', $new_expression['expression_type'], 'javascript: submit();');
    $cmbType->addItem(EXPRESSION_TYPE_INCLUDED, expression_type2str(EXPRESSION_TYPE_INCLUDED));
    $cmbType->addItem(EXPRESSION_TYPE_ANY_INCLUDED, expression_type2str(EXPRESSION_TYPE_ANY_INCLUDED));
    $cmbType->addItem(EXPRESSION_TYPE_NOT_INCLUDED, expression_type2str(EXPRESSION_TYPE_NOT_INCLUDED));
    $cmbType->addItem(EXPRESSION_TYPE_TRUE, expression_type2str(EXPRESSION_TYPE_TRUE));
    $cmbType->addItem(EXPRESSION_TYPE_FALSE, expression_type2str(EXPRESSION_TYPE_FALSE));
    $tblExp->addRow(array(_('Expression type'), $cmbType));
    if (EXPRESSION_TYPE_ANY_INCLUDED == $new_expression['expression_type']) {
        $cmbDelimiter = new CComboBox('new_expression[exp_delimiter]', $new_expression['exp_delimiter']);
        $cmbDelimiter->addItem(',', ',');
        $cmbDelimiter->addItem('.', '.');
        $cmbDelimiter->addItem('/', '/');
        $tblExp->addRow(array(_('Delimiter'), $cmbDelimiter));
    } else {
        $tblExp->addItem(new Cvar('new_expression[exp_delimiter]', $new_expression['exp_delimiter']));
    }
    $chkbCase = new CCheckBox('new_expression[case_sensitive]', $new_expression['case_sensitive'], null, 1);
    $tblExp->addRow(array(_('Case sensitive'), $chkbCase));
    $tblExpFooter = new CTableInfo($tblExp);
    $oper_buttons = array();
    $oper_buttons[] = new CSubmit('add_expression', isset($new_expression['id']) ? _('Save') : _('Add'));
    $oper_buttons[] = new CSubmit('cancel_new_expression', _('Cancel'));
    $td = new CCol($oper_buttons);
    $td->setAttribute('colspan', 2);
    $td->setAttribute('style', 'text-align: right;');
    $tblExpFooter->setFooter($td);
    return $tblExpFooter;
}
$regExpForm = new CForm();
$regExpForm->setName('regularExpressionsForm');
$regExpForm->addItem(BR());
$regExpTable = new CTableInfo(_('No regular expressions found.'));
$regExpTable->setHeader(array(new CCheckBox('all_regexps', null, "checkAll('regularExpressionsForm', 'all_regexps', 'regexpids');"), _('Name'), _('Expressions')));
$expressions = array();
$values = array();
foreach ($this->data['db_exps'] as $exp) {
    if (!isset($expressions[$exp['regexpid']])) {
        $values[$exp['regexpid']] = 1;
    } else {
        $values[$exp['regexpid']]++;
    }
    if (!isset($expressions[$exp['regexpid']])) {
        $expressions[$exp['regexpid']] = new CTable();
    }
    $expressions[$exp['regexpid']]->addRow(array(new CCol($values[$exp['regexpid']], 'top'), new CCol(' » ', 'top'), new CCol($exp['expression'], 'pre-wrap  break-lines'), new CCol(' [' . expression_type2str($exp['expression_type']) . ']', 'top')));
}
foreach ($this->data['regexps'] as $regexpid => $regexp) {
    $regExpTable->addRow(array(new CCheckBox('regexpids[' . $regexp['regexpid'] . ']', null, null, $regexp['regexpid']), new CLink($regexp['name'], 'adm.regexps.php?form=update' . '&regexpid=' . $regexp['regexpid']), isset($expressions[$regexpid]) ? $expressions[$regexpid] : '-'));
}
$goBox = new CComboBox('action');
$goOption = new CComboItem('regexp.massdelete', _('Delete selected'));
$goOption->setAttribute('confirm', _('Delete selected regular expressions?'));
$goBox->addItem($goOption);
$goButton = new CSubmit('goButton', _('Go') . ' (0)');
$goButton->setAttribute('id', 'goButton');
zbx_add_post_js('chkbxRange.pageGoName = "regexpids";');
$regExpTable->setFooter(new CCol(array($goBox, $goButton)));
$regExpForm->addItem($regExpTable);
return $regExpForm;
<script type="text/x-jquery-tmpl" id="row_expr">
	<?php 
echo (new CRow([(new CComboBox('expressions[#{rowNum}][expression_type]', null, null, expression_type2str()))->onChange('onChangeExpressionType(this, #{rowNum})'), (new CTextBox('expressions[#{rowNum}][expression]', '', false, 255))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH), (new CComboBox('expressions[#{rowNum}][exp_delimiter]', null, null, expressionDelimiters()))->addStyle('display: none;'), new CCheckBox('expressions[#{rowNum}][case_sensitive]'), (new CCol((new CButton('expressions[#{rowNum}][remove]', _('Remove')))->addClass(ZBX_STYLE_BTN_LINK)->addClass('element-table-remove')))->addClass(ZBX_STYLE_NOWRAP)]))->addClass('form_row')->setAttribute('data-index', '#{rowNum}')->toString();
?>
</script>

<script type="text/x-jquery-tmpl" id="testTableRow">
	<?php 
echo (new CRow(['#{type}', '#{expression}', (new CSpan('#{result}'))->addClass('#{resultClass}')]))->addClass('test_row')->toString();
?>
</script>

<script type="text/x-jquery-tmpl" id="testCombinedTableRow">
	<?php 
echo (new CRow([(new CCol(_('Combined result')))->setColspan(2), (new CSpan('#{result}'))->addClass('#{resultClass}')]))->addClass('test_row')->toString();
?>
</script>

<script>
	function onChangeExpressionType(obj, index) {
		if (obj.value === '<?php 
echo EXPRESSION_TYPE_ANY_INCLUDED;
?>
') {
			jQuery('#expressions_' + index + '_exp_delimiter').show();
		}
		else {
			jQuery('#expressions_' + index + '_exp_delimiter').hide();
		}
	}