コード例 #1
0
/**
 * Creates nodes that can be used to display the service configuration tree using the CTree class.
 *
 * @see CTree
 *
 * @param array $services
 * @param array $parentService
 * @param array $service
 * @param array $dependency
 * @param array $tree
 */
function createServiceConfigurationTree(array $services, &$tree, array $parentService = [], array $service = [], array $dependency = [])
{
    if (!$service) {
        $serviceNode = ['id' => 0, 'parentid' => 0, 'caption' => _('root'), 'trigger' => [], 'action' => new CHorList([(new CLink(_('Add child'), 'services.php?form=1&parentname=' . _('root')))->addClass(ZBX_STYLE_LINK_ACTION)]), 'algorithm' => SPACE, 'description' => SPACE];
        $service = $serviceNode;
        $service['serviceid'] = 0;
        $service['dependencies'] = [];
        $service['trigger'] = [];
        // add all top level services as children of "root"
        foreach ($services as $topService) {
            if (!$topService['parent']) {
                $service['dependencies'][] = ['servicedownid' => $topService['serviceid'], 'soft' => 0, 'linkid' => 0];
            }
        }
        $tree = [$serviceNode];
    } else {
        // service is deletable only if it has no hard dependency
        $deletable = true;
        foreach ($service['dependencies'] as $dep) {
            if ($dep['soft'] == 0) {
                $deletable = false;
                break;
            }
        }
        $serviceNode = ['id' => $service['serviceid'], 'caption' => new CLink($service['name'], 'services.php?form=1&serviceid=' . $service['serviceid']), 'action' => new CHorList([(new CLink(_('Add child'), 'services.php?form=1&parentid=' . $service['serviceid'] . '&parentname=' . $service['name']))->addClass(ZBX_STYLE_LINK_ACTION), $deletable ? (new CLink(_('Delete'), 'services.php?delete=1&serviceid=' . $service['serviceid']))->addClass(ZBX_STYLE_LINK_ACTION)->addConfirmation(_s('Delete service "%1$s"?', $service['name']))->addSID() : null]), 'description' => $service['trigger'] ? $service['trigger']['description'] : '', 'parentid' => $parentService ? $parentService['serviceid'] : 0, 'algorithm' => serviceAlgorithm($service['algorithm'])];
    }
    if (!$dependency || !$dependency['soft']) {
        $tree[$serviceNode['id']] = $serviceNode;
        foreach ($service['dependencies'] as $dependency) {
            $childService = $services[$dependency['servicedownid']];
            createServiceConfigurationTree($services, $tree, $service, $childService, $dependency);
        }
    } else {
        $serviceNode['caption'] = (new CSpan($serviceNode['caption']))->addClass('service-caption-soft');
        $tree[$serviceNode['id'] . '.' . $dependency['linkid']] = $serviceNode;
    }
}
コード例 #2
0
$servicesParentForm = (new CForm())->setName('servicesForm');
if (!empty($this->data['service'])) {
    $servicesParentForm->addVar('serviceid', $this->data['service']['serviceid']);
}
// create table
$servicesParentTable = (new CTableInfo())->setHeader([_('Service'), _('Status calculation'), _('Trigger')]);
$prefix = null;
// root
$description = (new CLink(_('root'), '#'))->onClick('javascript:
		jQuery(\'#parent_name\', window.opener.document).val(' . zbx_jsvalue(_('root')) . ');
		jQuery(\'#parentname\', window.opener.document).val(' . zbx_jsvalue(_('root')) . ');
		jQuery(\'#parentid\', window.opener.document).val(' . zbx_jsvalue(0) . ');
		self.close();
		return false;');
$servicesParentTable->addRow([[$prefix, $description], _('Note'), '-']);
// others
foreach ($this->data['db_pservices'] as $db_service) {
    $description = (new CSpan($db_service['name']))->addClass('link')->onClick('javascript:
			jQuery(\'#parent_name\', window.opener.document).val(' . zbx_jsvalue($db_service['name']) . ');
			jQuery(\'#parentname\', window.opener.document).val(' . zbx_jsvalue($db_service['name']) . ');
			jQuery(\'#parentid\', window.opener.document).val(' . zbx_jsvalue($db_service['serviceid']) . ');
			self.close();
			return false;');
    $servicesParentTable->addRow([[$prefix, $description], serviceAlgorithm($db_service['algorithm']), $db_service['trigger']]);
}
$servicesParentTable->setFooter(new CCol((new CButton('cancel', _('Cancel')))->onClick('javascript: self.close();')->setAttribute('style', 'text-align:right;')));
// append table to form
$servicesParentForm->addItem($servicesParentTable);
// append form to widget
$widget->addItem($servicesParentForm);
return $widget;
コード例 #3
0
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
**/
include 'include/views/js/configuration.services.edit.js.php';
$service = $this->data['service'];
$widget = (new CWidget())->setTitle(_('IT services'));
// create form
$servicesForm = (new CForm())->setName('servicesForm')->addVar('form', $this->data['form'])->addVar('parentid', $this->data['parentid'])->addVar('parentname', $this->data['parentname'])->addVar('triggerid', $this->data['triggerid']);
if (isset($this->data['service'])) {
    $servicesForm->addVar('serviceid', $this->data['service']['serviceid']);
}
// create form list
$servicesFormList = (new CFormList('servicesFormList'))->addRow(_('Name'), (new CTextBox('name', $this->data['name'], false, 128))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)->setAttribute('autofocus', 'autofocus'));
// append parent link to form list
$servicesFormList->addRow(_('Parent service'), [(new CTextBox('parent_name', $this->data['parentname'], true, 128))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH), (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), (new CButton('select_parent', _('Change')))->addClass(ZBX_STYLE_BTN_GREY)->onClick("javascript: openWinCentered('services.php?pservices=1" . url_param('serviceid') . "', " . "'ZBX_Services_List', 740, 420, 'scrollbars=1, toolbar=0, menubar=0, resizable=1, dialog=0');")]);
// append algorithm to form list
$servicesFormList->addRow(_('Status calculation algorithm'), new CComboBox('algorithm', $this->data['algorithm'], null, serviceAlgorithm()));
// append SLA to form list
$showslaCheckbox = (new CCheckBox('showsla'))->setChecked($this->data['showsla'] == 1);
$goodslaTextBox = (new CTextBox('goodsla', $this->data['goodsla'], false, 8))->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
if (!$this->data['showsla']) {
    $goodslaTextBox->setAttribute('disabled', 'disabled');
}
$servicesFormList->addRow(_('Calculate SLA, acceptable SLA (in %)'), [$showslaCheckbox, (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), $goodslaTextBox]);
// append trigger to form list
$servicesFormList->addRow(_('Trigger'), [(new CTextBox('trigger', $this->data['trigger'], true))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH), (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN), (new CButton('btn1', _('Select')))->addClass(ZBX_STYLE_BTN_GREY)->onClick('return PopUp("popup.php?' . 'dstfrm=' . $servicesForm->getName() . '&dstfld1=triggerid' . '&dstfld2=trigger' . '&srctbl=triggers' . '&srcfld1=triggerid' . '&srcfld2=description' . '&real_hosts=1' . '&with_triggers=1");')]);
$servicesFormList->addRow(_('Sort order (0->999)'), (new CTextBox('sortorder', $this->data['sortorder'], false, 3))->setWidth(ZBX_TEXTAREA_TINY_WIDTH));
/*
 * Dependencies tab
 */
$servicesChildTable = (new CTable())->setAttribute('style', 'width: 100%;')->setId('service_children')->setHeader([_('Services'), _('Soft'), _('Trigger'), _('Action')]);
foreach ($this->data['children'] as $child) {
コード例 #4
0
ファイル: CService.php プロジェクト: jbfavre/debian-zabbix
 /**
  * Validates the "algorithm" field. Assumes the "name" field is valid.
  *
  * @throws APIException if the name is missing or invalid
  *
  * @param array $service
  *
  * @return void
  */
 protected function checkAlgorithm(array $service)
 {
     if (!isset($service['algorithm']) || !serviceAlgorithm($service['algorithm'])) {
         self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect algorithm for service "%1$s".', $service['name']));
     }
 }
コード例 #5
0
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** 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.
**/
include dirname(__FILE__) . '/js/configuration.services.child.list.js.php';
$servicesChildWidget = (new CWidget())->setTitle(_('IT service dependencies'));
// create form
$servicesChildForm = (new CForm())->setName('servicesForm');
if (!empty($this->data['service'])) {
    $servicesChildForm->addVar('serviceid', $this->data['service']['serviceid']);
}
// create table
$servicesChildTable = (new CTableInfo())->setHeader([(new CColHeader((new CCheckBox('all_services'))->onClick("javascript: checkAll('" . $servicesChildForm->getName() . "', 'all_services', 'services');")))->addClass(ZBX_STYLE_CELL_WIDTH), _('Service'), _('Status calculation'), _('Trigger')]);
$prefix = null;
foreach ($this->data['db_cservices'] as $service) {
    $description = (new CLink($service['name'], '#'))->addClass('service-name')->setId('service-name-' . $service['serviceid'])->setAttribute('data-name', $service['name'])->setAttribute('data-serviceid', $service['serviceid'])->setAttribute('data-trigger', $service['trigger']);
    $cb = (new CCheckBox('services[' . $service['serviceid'] . ']', $service['serviceid']))->addClass('service-select');
    $servicesChildTable->addRow([$cb, [$prefix, $description], serviceAlgorithm($service['algorithm']), $service['trigger']]);
}
$servicesChildTable->setFooter(new CCol(new CButton('select', _('Select'))));
// append table to form
$servicesChildForm->addItem($servicesChildTable);
// append form to widget
$servicesChildWidget->addItem($servicesChildForm);
return $servicesChildWidget;