Nagvis WuiViewEditMainCfg.php error

This support forum board is for support questions relating to Nagios XI, our flagship commercial network monitoring solution.
stf_792
Posts: 48
Joined: Fri Jul 17, 2015 12:55 pm

Re: Nagvis WuiViewEditMainCfg.php error

Post by stf_792 »

Great,

I changed cfg file as described in https://bugs.debian.org/cgi-bin/bugrepo ... 6235;msg=5

and now it looks like this

Code: Select all

<?php
/*****************************************************************************
 *
 * WuiViewEditMainCfg.php - Class to render the main configuration edit dialog
 *
 * Copyright (c) 2004-2010 NagVis Project (Contact: [email protected])
 *
 * License:
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *****************************************************************************/
 
/**
 * @author	Lars Michelsen <[email protected]>
 */
class WuiViewEditMainCfg {
	private $CORE;
	private $AUTHENTICATION;
	private $AUTHORISATION;
	
	/**
	 * Class Constructor
	 *
	 * @param 	GlobalCore 	$CORE
	 * @author 	Lars Michelsen <[email protected]>
	 */
	public function __construct(CoreAuthHandler $AUTHENTICATION, CoreAuthorisationHandler $AUTHORISATION) {
		$this->CORE = GlobalCore::getInstance();
		$this->AUTHENTICATION = $AUTHENTICATION;
		$this->AUTHORISATION = $AUTHORISATION;
	}
	
	/**
	 * Parses the information in html format
	 *
	 * @return	String 	String with Html Code
	 * @author 	Lars Michelsen <[email protected]>
	 */
	public function parse() {
		// Initialize template system
		$TMPL = New CoreTemplateSystem($this->CORE);
		$TMPLSYS = $TMPL->getTmplSys();
		
		$aData = Array(
			'htmlBase' => $this->CORE->getMainCfg()->getValue('paths', 'htmlbase'),
			'formContents' => $this->getFields(),
			'langSave' => $this->CORE->getLang()->getText('save')
		);
		
		// Build page based on the template file and the data array
		return $TMPLSYS->get($TMPL->getTmplFile('default', 'wuiEditMainCfg'), $aData);
	}
	
	/**
	 * Parses the Form fields
	 *
	 * @return	Array Html
	 * @author 	Lars Michelsen <[email protected]>
	 * FIXME: Recode to have all the HTML code in the template
	 */
	function getFields() {
		global $CORE;
		$ret = '';
		
		$i = 1;
		foreach($this->CORE->getMainCfg()->getValidConfig() AS $cat => $arr) {
			// don't display backend,rotation and internal options
			if(!preg_match("/^(backend|internal|rotation|auth)/i", $cat)) {
				$ret .= '<tr><th class="cat" colspan="3"><h2>'.$cat.'</h2></th></tr>';
				
				foreach($arr AS $propname => $prop) {
					$class = '';
					$style = '';
					$isDefaultValue = false;

					// Skip deprecated options
					if(isset($prop['deprecated']) && $prop['deprecated'] == 1)
						continue;
					
					// Set field type to show
					$fieldType = 'text';
					if(isset($prop['field_type'])) {
						$fieldType = $prop['field_type'];
					}
					
					// Don't show anything for hidden options
					if($fieldType !== 'hidden') {
						// Only get the really set value
						$val2 = $this->CORE->getMainCfg()->getValue($cat, $propname, true);
						
						// Check if depends_on and depends_value are defined and if the value
						// is equal. If not equal hide the field
						if(isset($prop['depends_on']) && isset($prop['depends_value'])
							&& $this->CORE->getMainCfg()->getValue($cat, $prop['depends_on'], false) != $prop['depends_value']) {
							
							$class = ' class="child-row"';
							$style = ' style="display:none;"';
						} elseif(isset($prop['depends_on']) && isset($prop['depends_value'])
							&& $this->CORE->getMainCfg()->getValue($cat, $prop['depends_on'], false) == $prop['depends_value']) {
							
							//$style .= 'display:;';
							$class = ' class="child-row"';
						}
						
						// Create a "helper" field which contains the real applied value
						if($val2 === false) {
							$defaultValue = $this->CORE->getMainCfg()->getValue($cat, $propname, false);
							
							if(is_array($defaultValue)) {
								$defaultValue = implode(',', $defaultValue);
							}
							
							$ret .= '<input type="hidden" id="_'.$cat.'_'.$propname.'" name="_'.$cat.'_'.$propname.'" value="'.$defaultValue.'" />';
						} else {
							$ret .= '<input type="hidden" id="_'.$cat.'_'.$propname.'" name="_'.$cat.'_'.$propname.'" value="" />';
						}
						
						# we add a line in the form
						$ret .= '<tr'.$class.$style.'>';
						$ret .= '<td class="tdlabel">'.$propname.'</td>';
						
						if(preg_match('/^TranslationNotFound:/', $this->CORE->getLang()->getText($propname)) > 0) {
							$ret .= '<td class="tdfield"></td>';
						} else {
							$ret .= '<td class="tdfield">';
							#$ret .= "<img style=\"cursor:help\" src=\"./images/help_icon.png\" onclick=\"javascript:alert('".$this->CORE->getLang()->getText($propname)." (".$this->CORE->getLang()->getText('defaultValue').": ".$arr[$propname]['default'].")')\" />";
                            $default_str = is_array($arr[$propname]['default']) ? implode(',', $arr[$propname]['default']) : $arr[$propname]['default'];
                            $ret .= "<img style=\"cursor:help\" src=\"./images/help_icon.png\" "
                                   ."onclick=\"javascript:alert('".l($propname)." (".l('defaultValue').": ".$default_str.")')\" />";							
							$ret .= '</td>';
						}
						
						$ret .= '<td class="tdfield">';
						switch($fieldType) {
							case 'dropdown':
								switch($propname) {
									case 'language':
										$arrOpts = $this->CORE->getAvailableLanguages();
									break;
									case 'backend':
										$arrOpts = $this->CORE->getDefinedBackends();
									break;
									case 'icons':
										$arrOpts = $this->CORE->getAvailableIconsets();
									break;
									case 'headertemplate':
										# $arrOpts = $this->CORE->getAvailableHeaderTemplates();
										$arrOpts = $CORE->getAvailableHeaderTemplates();
									break;
									#case 'autoupdatefreq':
									#	$arrOpts = Array(Array('value'=>'0','label'=>$this->CORE->getLang()->getText('disabled')),
									#					 Array('value'=>'2','label'=>'2'),
									#					 Array('value'=>'5','label'=>'5'),
									#					 Array('value'=>'10','label'=>'10'),
									#					 Array('value'=>'25','label'=>'25'),
									#					 Array('value'=>'50','label'=>'50'));
									#break;
								}
								
								$ret .= '<select id="'.$cat.'_'.$propname.'" name="'.$cat.'_'.$propname.'" onBlur="validateMainConfigFieldValue(this, 0)">';
								$ret .= '<option value=""></option>';
								
								foreach($arrOpts AS $val) {
									if(is_array($val)) {
										$ret .= '<option value="'.$val['value'].'">'.$val['label'].'</option>';
									} else {
										$ret .= '<option value="'.$val.'">'.$val.'</option>';
									}
								}
								
								$ret .= '</select>';
								
								$ret .= '<script>document.edit_config.elements[\''.$cat.'_'.$propname.'\'].value = \''.$val2.'\';</script>';
							break;
							case 'boolean':
								$ret .= '<select id="'.$cat.'_'.$propname.'" name="'.$cat.'_'.$propname.'" onBlur="validateMainConfigFieldValue(this)">';
								$ret .= '<option value=""></option>';
								$ret .= '<option value="1">'.$this->CORE->getLang()->getText('yes').'</option>';
								$ret .= '<option value="0">'.$this->CORE->getLang()->getText('no').'</option>';
								$ret .= '</select>';
								
								$ret .= '<script>document.edit_config.elements[\''.$cat.'_'.$propname.'\'].value = \''.$val2.'\';</script>';
							break;
							case 'text':
								if(is_array($val2)) {
									$val2 = implode(',', $val2);
								}
								
								$ret .= '<input id="'.$cat.'_'.$propname.'" type="text" name="'.$cat.'_'.$propname.'" value="'.$val2.'" onBlur="validateMainConfigFieldValue(this)" />';
								
								if(isset($prop['locked']) && $prop['locked'] == 1) {
									$ret .= "<script>document.edit_config.elements['".$cat."_".$propname."'].disabled=true;</script>";
								}
							break;
						}
						
						// Initially toggle the depending fields
						$ret .= '<script>validateMainConfigFieldValue(document.getElementById("'.$cat.'_'.$propname.'"));</script>';
					
						$ret .= '</td>';
						$ret .= '</tr>';
					}
				}
	
				if($i % 3 == 0) {
					$ret .= '</table><table class="mytable" style="width:300px;float:left">';
				}			
			
				$i++;

			}
		}
		
		return $ret;
	}
}
?>
But I am not sure what it should be fixing. Now clicking "General Configuration" does nothing.
rkennedy
Posts: 6579
Joined: Mon Oct 05, 2015 11:45 am

Re: Nagvis WuiViewEditMainCfg.php error

Post by rkennedy »

At this point, we can't support any changes you're going to make on your own.

The bug report has been filed internally, and it should be fixed with the next XI release.
Former Nagios Employee
stf_792
Posts: 48
Joined: Fri Jul 17, 2015 12:55 pm

Re: Nagvis WuiViewEditMainCfg.php error

Post by stf_792 »

Understood, Thanks for help and explanation.
User avatar
lmiltchev
Bugs find me
Posts: 13589
Joined: Mon May 23, 2011 12:15 pm

Re: Nagvis WuiViewEditMainCfg.php error

Post by lmiltchev »

You are welcome!
Be sure to check out our Knowledgebase for helpful articles and solutions!
Locked