Project

General

Profile

Download (24.1 KB) Statistics
| Branch: | Tag: | Revision:
1 2cd6010c Scott Ullrich
<?php
2 b46bfcf5 Bill Marquette
/* $Id$ */
3 5b237745 Scott Ullrich
/*
4 b49448ac Scott Ullrich
    index.php
5
    Copyright (C) 2004, 2005 Scott Ullrich
6
    All rights reserved.
7
8
    Originally part of m0n0wall (http://m0n0.ch/wall)
9
    Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
10
    All rights reserved.
11
12
    Redistribution and use in source and binary forms, with or without
13
    modification, are permitted provided that the following conditions are met:
14
15
    1. Redistributions of source code must retain the above copyright notice,
16
       this list of conditions and the following disclaimer.
17
18
    2. Redistributions in binary form must reproduce the above copyright
19
       notice, this list of conditions and the following disclaimer in the
20
       documentation and/or other materials provided with the distribution.
21
22
    THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
23
    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
24
    AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
    AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
26 0682e26b Colin Smith
    oR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 b49448ac Scott Ullrich
    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28
    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29
    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30
    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
    POSSIBILITY OF SUCH DAMAGE.
32 5b237745 Scott Ullrich
*/
33 7ac5a4cb Scott Ullrich
/*
34
	pfSense_BUILDER_BINARIES:	/sbin/ifconfig
35
	pfSense_MODULE:	interfaces
36
*/
37 5b237745 Scott Ullrich
38 6b07c15a Matthew Grooms
##|+PRIV
39
##|*IDENT=page-system-login/logout
40 b7ccf315 Erik Fonnesbeck
##|*NAME=System: Login / Logout page / Dashboard
41
##|*DESCR=Allow access to the 'System: Login / Logout' page and Dashboard.
42 6b07c15a Matthew Grooms
##|*MATCH=index.php*
43
##|-PRIV
44
45 a1d3953f Scott Ullrich
// Turn off csrf for the dashboard
46
$nocsrf = true; 
47
48 acc5dd59 jim-p
// Turn on buffering to speed up rendering
49
ini_set('output_buffering','true');
50
51
// Start buffering with a cache size of 100000
52
ob_start(null, "1000");
53 880637d2 Scott Ullrich
54 acc5dd59 jim-p
## Load Essential Includes
55
require_once('functions.inc');
56
require_once('guiconfig.inc');
57
require_once('notices.inc');
58
59 36365f49 Scott Ullrich
if($g['disablecrashreporter'] != true) {
60
	// Check to see if we have a crash report
61 eac584f3 Scott Ullrich
	$x = 0;
62 a9ee006d Scott Ullrich
	if(file_exists("/tmp/PHP_errors.log")) {
63
		$total = `/bin/cat /tmp/PHP_errors.log | /usr/bin/grep -vi warning | wc -l | awk '{ print $1 }'`;
64
		if($total > 0) 
65
			$x++;
66
	}
67
	$crash = glob("/var/crash/*");
68 36365f49 Scott Ullrich
	$skip_files = array(".", "..", "minfree", "");
69
	if(is_array($crash)) {
70
		foreach($crash as $c) {
71
			if (!in_array(basename($c), $skip_files))
72
				$x++;
73
		}
74
		if($x > 0) 
75 a9ee006d Scott Ullrich
			$savemsg = "{$g['product_name']} has detected a crash report or programming bug.  Click <a href='crash_reporter.php'>here</a> for more information.";
76 104faa07 Scott Ullrich
	}
77
}
78
79 acc5dd59 jim-p
##build list of widgets
80
$directory = "/usr/local/www/widgets/widgets/";
81
$dirhandle  = opendir($directory);
82
$filename = "";
83
$widgetnames = array();
84
$widgetfiles = array();
85
$widgetlist = array();
86
87
while (false !== ($filename = readdir($dirhandle))) {
88
	$periodpos = strpos($filename, ".");
89
	$widgetname = substr($filename, 0, $periodpos);
90
	$widgetnames[] = $widgetname;
91
	if ($widgetname != "system_information")
92
		$widgetfiles[] = $filename;
93
}
94
95
##sort widgets alphabetically
96
sort($widgetfiles);
97
98
##insert the system information widget as first, so as to be displayed first
99
array_unshift($widgetfiles, "system_information.widget.php");
100
101
##if no config entry found, initialize config entry
102
if (!is_array($config['widgets'])) {
103
	$config['widgets'] = array();
104
}
105 d772ac32 Erik Kristensen
106 8191b36e Scott Ullrich
	if ($_POST && $_POST['submit']) {
107
		$config['widgets']['sequence'] = $_POST['sequence'];
108
109
		foreach ($widgetnames as $widget){
110
			if ($_POST[$widget . '-config']){
111
				$config['widgets'][$widget . '-config'] = $_POST[$widget . '-config'];
112
			}
113
		}
114
115 5493fad2 Rafael Lucas
		write_config(gettext("Widget configuration has been changed."));
116 8191b36e Scott Ullrich
		header("Location: index.php");
117
		exit;
118
	}
119
120 1df0159c Erik Kristensen
	## Load Functions Files
121
	require_once('includes/functions.inc.php');
122 65d4de2e Scott Dale
	
123 1df0159c Erik Kristensen
	## Check to see if we have a swap space,
124
	## if true, display, if false, hide it ...
125 746ca58a Scott Ullrich
	if(file_exists("/usr/sbin/swapinfo")) {
126
		$swapinfo = `/usr/sbin/swapinfo`;
127
		if(stristr($swapinfo,'%') == true) $showswap=true;
128
	}
129 d772ac32 Erik Kristensen
130 1df0159c Erik Kristensen
	## User recently restored his config.
131
	## If packages are installed lets resync
132 1abb04ea Scott Ullrich
	if(file_exists('/conf/needs_package_sync')) {
133 f9626e57 Erik Fonnesbeck
		if($config['installedpackages'] <> '' && is_array($config['installedpackages']['package'])) {
134 dc7c57ac Ermal Lu?i
			if($g['platform'] == "pfSense" || $g['platform'] == "nanobsd") {
135 6cc843c3 Scott Ullrich
				header('Location: pkg_mgr_install.php?mode=reinstallall');
136
				exit;
137
			}
138 f9626e57 Erik Fonnesbeck
		} else {
139
			conf_mount_rw();
140
			@unlink('/conf/needs_package_sync');
141
			conf_mount_ro();
142 1df0159c Erik Kristensen
		}
143
	}
144 8fecad11 Scott Ullrich
145 709cc6e0 Bill Marquette
	## If it is the first time webConfigurator has been
146 1df0159c Erik Kristensen
	## accessed since initial install show this stuff.
147 1abb04ea Scott Ullrich
	if(file_exists('/conf/trigger_initial_wizard')) {
148 702b324e Scott Ullrich
		echo <<<EOF
149
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
150
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
151
<html>
152
<head>
153 f99c6a23 Erik Fonnesbeck
	<title>{$g['product_name']}.localdomain - {$g['product_name']} first time setup</title>
154 702b324e Scott Ullrich
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
155
	<link rel="stylesheet" type="text/css" href="/niftycssprintCode.css" media="print" />
156
	<script type="text/javascript">var theme = "nervecenter"</script>
157
	<script type="text/javascript" src="/themes/nervecenter/loader.js"></script>
158
		
159
EOF;
160 1df0159c Erik Kristensen
161
		echo "<body link=\"#0000CC\" vlink=\"#0000CC\" alink=\"#0000CC\">\n";
162 5d9f9191 Scott Ullrich
163
		if(file_exists("/usr/local/www/themes/{$g['theme']}/wizard.css")) 
164
			echo "<link rel=\"stylesheet\" href=\"/themes/{$g['theme']}/wizard.css\" media=\"all\" />\n";
165
		else 
166
			echo "<link rel=\"stylesheet\" href=\"/themes/{$g['theme']}/all.css\" media=\"all\" />";
167
168 1df0159c Erik Kristensen
		echo "<form>\n";
169
		echo "<center>\n";
170
		echo "<img src=\"/themes/{$g['theme']}/images/logo.gif\" border=\"0\"><p>\n";
171
		echo "<div \" style=\"width:700px;background-color:#ffffff\" id=\"nifty\">\n";
172 fffbf46d Carlos Eduardo Ramos
		echo sprintf(gettext("Welcome to %s!\n"),$g['product_name']) . "<p>";
173
		echo gettext("One moment while we start the initial setup wizard.") . "<p>\n";
174
		echo gettext("Embedded platform users: Please be patient, the wizard takes a little longer to run than the normal GUI.") . "<p>\n";
175 c0686139 Carlos Eduardo Ramos
		echo sprintf(gettext("To bypass the wizard, click on the %s logo on the initial page."),$g['product_name']) . "\n";
176 1df0159c Erik Kristensen
		echo "</div>\n";
177
		echo "<meta http-equiv=\"refresh\" content=\"1;url=wizard.php?xml=setup_wizard.xml\">\n";
178
		echo "<script type=\"text/javascript\">\n";
179
		echo "NiftyCheck();\n";
180 702b324e Scott Ullrich
		echo "Rounded(\"div#nifty\",\"all\",\"#AAA\",\"#FFFFFF\",\"smooth\");\n";
181 1df0159c Erik Kristensen
		echo "</script>\n";
182 1ca54f04 Scott Ullrich
		exit;
183
	}
184
185 bf787c0a Scott Ullrich
186 a5e9c284 Renato Botelho
	## Find out whether there's hardware encryption or not
187 1df0159c Erik Kristensen
	unset($hwcrypto);
188
	$fd = @fopen("{$g['varlog_path']}/dmesg.boot", "r");
189
	if ($fd) {
190
		while (!feof($fd)) {
191
			$dmesgl = fgets($fd);
192 6aa9ddce jim-p
			if (preg_match("/^hifn.: (.*?),/", $dmesgl, $matches) or preg_match("/.*(VIA Padlock)/", $dmesgl, $matches) or preg_match("/^safe.: (\w.*)/", $dmesgl, $matches) or preg_match("/^ubsec.: (.*?),/", $dmesgl, $matches) or preg_match("/^padlock.: <(.*?)>,/", $dmesgl, $matches) or preg_match("/^glxsb.: (.*?),/", $dmesgl, $matches)) {
193 1df0159c Erik Kristensen
				$hwcrypto = $matches[1];
194
				break;
195
			}
196 5b237745 Scott Ullrich
		}
197 1df0159c Erik Kristensen
		fclose($fd);
198 5b237745 Scott Ullrich
	}
199 45ee90ed Matthew Grooms
200 7abf7db5 Scott Dale
##build widget saved list information
201 019a94df Scott Dale
if ($config['widgets'] && $config['widgets']['sequence'] != "") {
202
	$pconfig['sequence'] = $config['widgets']['sequence'];
203 3e4e94ce Scott Dale
	
204 bf5ad142 Scott Dale
	$widgetlist = $pconfig['sequence'];
205
	$colpos = array();
206
	$savedwidgetfiles = array();
207
	$widgetname = "";
208
	$widgetlist = explode(",",$widgetlist);
209 019a94df Scott Dale
	
210
	##read the widget position and display information
211 bf5ad142 Scott Dale
	foreach ($widgetlist as $widget){
212
		$dashpos = strpos($widget, "-");		
213
		$widgetname = substr($widget, 0, $dashpos);
214
		$colposition = strpos($widget, ":");		
215
		$displayposition = strrpos($widget, ":");
216
		$colpos[] = substr($widget,$colposition+1, $displayposition - $colposition-1);
217
		$displayarray[] = substr($widget,$displayposition+1);
218
		$savedwidgetfiles[] = $widgetname . ".widget.php";
219 1db766df Scott Dale
	}
220 019a94df Scott Dale
	
221 7abf7db5 Scott Dale
	##add widgets that may not be in the saved configuration, in case they are to be displayed later
222
    foreach ($widgetfiles as $defaultwidgets){         
223
         if (!in_array($defaultwidgets, $savedwidgetfiles)){
224
             $savedwidgetfiles[] = $defaultwidgets;
225
         }
226
     }   
227
	
228 019a94df Scott Dale
	##find custom configurations of a particular widget and load its info to $pconfig
229
	foreach ($widgetnames as $widget){
230
        if ($config['widgets'][$widget . '-config']){
231
            $pconfig[$widget . '-config'] = $config['widgets'][$widget . '-config'];
232
        }
233
    }   
234
	
235 f617ecbd Scott Dale
	$widgetlist = $savedwidgetfiles;	
236 483e6de8 Scott Ullrich
} else{
237
	// no saved widget sequence found, build default list.
238 8b06c9ff Scott Dale
	$widgetlist = $widgetfiles;
239 3e4e94ce Scott Dale
}
240
241 019a94df Scott Dale
##build list of php include files
242 8b06c9ff Scott Dale
$phpincludefiles = array();
243
$directory = "/usr/local/www/widgets/include/";
244 bf5ad142 Scott Dale
$dirhandle  = opendir($directory);
245
$filename = "";
246
while (false !== ($filename = readdir($dirhandle))) {
247
	$phpincludefiles[] = $filename;
248
}
249
foreach($phpincludefiles as $includename) {
250
	if(!stristr($includename, ".inc"))
251
		continue;	
252
	include($directory . $includename);
253
}
254 81db9b7b Scott Dale
255 019a94df Scott Dale
##begin AJAX
256 1db766df Scott Dale
$jscriptstr = <<<EOD
257
<script language="javascript" type="text/javascript">
258
259 65d4de2e Scott Dale
260
function widgetAjax(widget) {	
261 34eac803 Scott Dale
	uri = "widgets/widgets/" + widget + ".widget.php";
262
	var opt = {
263
	    // Use GET
264
	    method: 'get',
265
		evalScripts: 'true',
266
	    asynchronous: true,
267
	    // Handle 404
268
	    on404: function(t) {
269
	        alert('Error 404: location "' + t.statusText + '" was not found.');
270
	    },
271
	    // Handle other errors
272
	    onFailure: function(t) {
273
	        alert('Error ' + t.status + ' -- ' + t.statusText);
274
	    },
275
		onSuccess: function(t) {
276
			widget2 = widget + "-loader";
277
			Effect.Fade(widget2, {queue:'front'});
278
			Effect.Appear(widget, {queue:'end'});			
279
	    }	
280
	}
281
	new Ajax.Updater(widget, uri, opt);
282
}
283 65d4de2e Scott Dale
284
285 7abf7db5 Scott Dale
function addWidget(selectedDiv){	
286 65d4de2e Scott Dale
	selectedDiv2 = selectedDiv + "-container";
287
	d = document;
288
	textlink = d.getElementById(selectedDiv2);
289 34eac803 Scott Dale
	Effect.Appear(selectedDiv2, {duration:1});
290 5eafc6de Scott Dale
	if (textlink.style.display != "none")
291
	{
292 65d4de2e Scott Dale
		Effect.Shake(selectedDiv2);	
293 5eafc6de Scott Dale
	}
294
	else
295
	{
296 65d4de2e Scott Dale
		widgetAjax(selectedDiv);
297
		selectIntLink = selectedDiv2 + "-input";
298 5eafc6de Scott Dale
		textlink = d.getElementById(selectIntLink);
299
		textlink.value = "show";	
300
		showSave();
301
	}
302 bf5ad142 Scott Dale
}
303 1db766df Scott Dale
304 7abf7db5 Scott Dale
function configureWidget(selectedDiv){
305 25d2d037 Scott Dale
	selectIntLink = selectedDiv + "-settings";	
306
	d = document;
307
	textlink = d.getElementById(selectIntLink);
308
	if (textlink.style.display == "none")
309
		Effect.BlindDown(selectIntLink, {duration:1});
310
	else
311
		Effect.BlindUp(selectIntLink, {duration:1});
312
}
313
314 7abf7db5 Scott Dale
function showWidget(selectedDiv,swapButtons){
315 65d4de2e Scott Dale
	//appear element
316 1db766df Scott Dale
    Effect.BlindDown(selectedDiv, {duration:1});      
317 bf5ad142 Scott Dale
    showSave();    
318
	d = document;	
319 1db766df Scott Dale
    if (swapButtons){
320
	    selectIntLink = selectedDiv + "-min";
321
		textlink = d.getElementById(selectIntLink);
322
		textlink.style.display = "inline";
323
	    
324
	    
325
	    selectIntLink = selectedDiv + "-open";
326
		textlink = d.getElementById(selectIntLink);
327
		textlink.style.display = "none";
328 bf5ad142 Scott Dale
329 1db766df Scott Dale
    }
330 65d4de2e Scott Dale
	selectIntLink = selectedDiv + "-container-input";
331 bf5ad142 Scott Dale
	textlink = d.getElementById(selectIntLink);
332
	textlink.value = "show";	
333
    
334 f5cfdc98 Scott Dale
}
335
	
336 7abf7db5 Scott Dale
function minimizeWidget(selectedDiv,swapButtons){
337 1db766df Scott Dale
	//fade element
338
    Effect.BlindUp(selectedDiv, {duration:1});      
339 bf5ad142 Scott Dale
    showSave();
340
	d = document;	
341 1db766df Scott Dale
    if (swapButtons){
342
	    selectIntLink = selectedDiv + "-open";
343
		textlink = d.getElementById(selectIntLink);
344
		textlink.style.display = "inline";	    
345
	    
346
	    selectIntLink = selectedDiv + "-min";
347
		textlink = d.getElementById(selectIntLink);
348
		textlink.style.display = "none";
349 bf5ad142 Scott Dale
    }  		
350 65d4de2e Scott Dale
	selectIntLink = selectedDiv + "-container-input";
351 bf5ad142 Scott Dale
	textlink = d.getElementById(selectIntLink);
352
	textlink.value = "hide";	  
353
    
354 1db766df Scott Dale
}
355
356 7abf7db5 Scott Dale
function closeWidget(selectedDiv){	
357 bf5ad142 Scott Dale
	showSave();
358 65d4de2e Scott Dale
	selectedDiv = selectedDiv + "-container";
359 bf5ad142 Scott Dale
	Effect.Fade(selectedDiv, {duration:1});
360
	d = document;
361 1db766df Scott Dale
	selectIntLink = selectedDiv + "-input";
362
	textlink = d.getElementById(selectIntLink);
363
	textlink.value = "close";	
364
}
365
366 bf5ad142 Scott Dale
function showSave(){
367
	d = document;
368
	selectIntLink = "submit";
369
	textlink = d.getElementById(selectIntLink);
370
	textlink.style.display = "inline";	
371 1db766df Scott Dale
}
372
373 bf5ad142 Scott Dale
function updatePref(){	
374
	var widgets = document.getElementsByClassName('widgetdiv');
375
	var widgetSequence = "";
376
	var firstprint = false;	
377
	d = document;
378
	for (i=0; i<widgets.length; i++){
379
		if (firstprint)
380
			widgetSequence += ",";
381
		var widget = widgets[i].id;
382
		widgetSequence += widget + ":" + widgets[i].parentNode.id + ":";
383
		widget = widget + "-input";
384
		textlink = d.getElementById(widget).value;
385
		widgetSequence += textlink;
386
		firstprint = true;		
387
	}
388
	selectLink = "sequence";
389
	textlink = d.getElementById(selectLink);
390
	textlink.value = widgetSequence;
391
	return true;	
392
}
393 1db766df Scott Dale
394 5eafc6de Scott Dale
function hideAllWidgets(){		
395
		Effect.Fade('niftyOutter', {to: 0.2});
396
}
397
398
function showAllWidgets(){		
399
		Effect.Fade('niftyOutter', {to: 1.0});
400
}
401
402 b9b45ddb Scott Dale
403
function changeTabDIV(selectedDiv){
404
	var dashpos = selectedDiv.indexOf("-");
405
	var tabclass = selectedDiv.substring(0,dashpos);
406
	d = document;
407
408
	//get deactive tabs first
409
	tabclass = tabclass + "-class-tabdeactive"; 
410
	var tabs = document.getElementsByClassName(tabclass);
411
	var incTabSelected = selectedDiv + "-deactive";
412
	for (i=0; i<tabs.length; i++){
413
		var tab = tabs[i].id;
414
		dashpos = tab.lastIndexOf("-");
415
		var tab2 = tab.substring(0,dashpos) + "-deactive";
416
		if (tab2 == incTabSelected){
417
			tablink = d.getElementById(tab2);
418
			tablink.style.display = "none";
419
			tab2 = tab.substring(0,dashpos) + "-active";
420
			tablink = d.getElementById(tab2);
421
			tablink.style.display = "table-cell";
422
			
423
			//now show main div associated with link clicked
424
			tabmain = d.getElementById(selectedDiv);
425
			tabmain.style.display = "block";
426
		}
427
		else
428
		{	
429
			tab2 = tab.substring(0,dashpos) + "-deactive";
430
			tablink = d.getElementById(tab2);
431
			tablink.style.display = "table-cell";
432
			tab2 = tab.substring(0,dashpos) + "-active";
433
			tablink = d.getElementById(tab2);
434
			tablink.style.display = "none";		
435
			
436
			//hide sections we don't want to see
437
			tab2 = tab.substring(0,dashpos);
438
			tabmain = d.getElementById(tab2);
439
			tabmain.style.display = "none";
440
				
441
		}
442
	}	
443
}
444
445 f5cfdc98 Scott Dale
</script>
446
EOD;
447 1db766df Scott Dale
$closehead = false;
448 3e4e94ce Scott Dale
449 1db766df Scott Dale
## Set Page Title and Include Header
450 a6e0e07b Scott Ullrich
$pgtitle = array(gettext("Status: Dashboard"));
451 1db766df Scott Dale
include("head.inc");
452 f6f6947e Scott Ullrich
453
echo "\t<script type=\"text/javascript\" src=\"javascript/domTT/domLib.js\"></script>\n";
454
echo "\t<script type=\"text/javascript\" src=\"javascript/domTT/domTT.js\"></script>\n";
455
echo "\t<script type=\"text/javascript\" src=\"javascript/domTT/behaviour.js\"></script>\n";
456
echo "\t<script type=\"text/javascript\" src=\"javascript/domTT/fadomatic.js\"></script>\n";
457
458 a8726a3d Scott Ullrich
?>
459 8dbbc3ed Scott Ullrich
460 5b237745 Scott Ullrich
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
461 1db766df Scott Dale
<form action="index.php" method="post">
462
<script language="javascript" type="text/javascript">
463
// <![CDATA[
464
columns = ['col1','col2'];
465
// ]]>
466
467 670fe849 Scott Ullrich
</script>
468 1db766df Scott Dale
469 5ffe7500 Scott Ullrich
<?php
470
include("fbegin.inc");
471 f5cfdc98 Scott Dale
echo $jscriptstr;
472 5e237c18 Erik Kristensen
	if(!file_exists("/usr/local/www/themes/{$g['theme']}/no_big_logo"))
473
		echo "<center><img src=\"./themes/".$g['theme']."/images/logobig.jpg\"></center><br>";
474 fca795f8 Scott Ullrich
475
if ($savemsg) 
476
	print_info_box($savemsg); 
477
478 810a11bc Scott Ullrich
pfSense_handle_custom_code("/usr/local/pkg/dashboard/pre_dashboard");
479
	
480 0682e26b Colin Smith
?>
481 1db766df Scott Dale
<div id="widgetcontainer" style="display:none">
482 fffbf46d Carlos Eduardo Ramos
		<div id="content1"><h1><?=gettext("Available Widgets"); ?></h1><p><?php
483 16f556c5 Scott Dale
			$widgetfiles_add = $widgetfiles;
484
			sort($widgetfiles_add);
485
			foreach($widgetfiles_add as $widget) {			
486 1db766df Scott Dale
				if(!stristr($widget, "widget.php"))
487
					continue;		
488
				
489
				$periodpos = strpos($widget, ".");
490
				$widgetname = substr($widget, 0, $periodpos);
491
				$nicename = $widgetname;
492 f69aa687 Scott Dale
				$nicename = str_replace("_", " ", $nicename);
493 1db766df Scott Dale
				//make the title look nice
494 16f556c5 Scott Dale
				$nicename = ucwords($nicename);
495
				
496
				$widgettitle = $widgetname . "_title";
497
				$widgettitlelink = $widgetname . "_title_link";
498
					if ($$widgettitle != "")
499
					{
500 88f71068 Scott Dale
						//echo widget title 
501
						?>
502 7abf7db5 Scott Dale
						<span style="cursor: pointer;" onclick='return addWidget("<?php echo $widgetname; ?>")'>
503 16f556c5 Scott Dale
						<u><?php echo $$widgettitle; ?></u></span><br>
504
						<?php 
505
					}
506
					else {?>
507 7abf7db5 Scott Dale
						<span style="cursor: pointer;" onclick='return addWidget("<?php echo $widgetname; ?>")'>
508 16f556c5 Scott Dale
						<u><?php echo $nicename; ?></u></span><br><?php
509
					}
510 1db766df Scott Dale
			}
511 f5cfdc98 Scott Dale
		?>
512 1db766df Scott Dale
		</p>
513
	</div>
514
</div>
515
516 d72fc17b Scott Dale
<div id="welcomecontainer" style="display:none">
517 65d4de2e Scott Dale
		<div id="welcome-container">
518 d72fc17b Scott Dale
			<h1>
519 16f556c5 Scott Dale
				<div style="float:left;width:80%;padding: 2px">
520 fffbf46d Carlos Eduardo Ramos
					<?=gettext("Welcome to the Dashboard page"); ?>!
521 d72fc17b Scott Dale
				</div>
522 16f556c5 Scott Dale
				<div onclick="domTT_close(this);showAllWidgets();" style="float:right;width:8%; cursor:pointer;padding: 5px;" >
523 d72fc17b Scott Dale
					<img src="./themes/<?= $g['theme']; ?>/images/icons/icon_close.gif" />
524
				</div>
525
				<div style="clear:both;"></div>
526
			</h1>
527
			<p>
528 5493fad2 Rafael Lucas
			<?=gettext("This page allows you to customize the information you want to be displayed!");?><br/>
529
			<?=gettext("To get started click the");?> <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif"> <?=gettext("icon to add widgets.");?><br/>
530 d72fc17b Scott Dale
			<br/>
531 5493fad2 Rafael Lucas
			<?=gettext("You can move any widget around by clicking and dragging the title.");?>			
532 d72fc17b Scott Dale
			</p>
533
	</div>
534
</div>
535
536 bf5ad142 Scott Dale
<input type="hidden" value="" name="sequence" id="sequence">
537 fffbf46d Carlos Eduardo Ramos
<img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" alt="<?=gettext("Click here to add widgets"); ?>" style="cursor: pointer;" onmouseup="domTT_activate(this, event, 'content', document.getElementById('content1'), 'type', 'velcro', 'delay', 0, 'fade', 'both', 'fadeMax', 100, 'styleClass', 'niceTitle');" />
538 5eafc6de Scott Dale
539 fffbf46d Carlos Eduardo Ramos
<img src="./themes/<?= $g['theme']; ?>/images/icons/icon_info_pkg.gif" alt="<?=gettext("Click here for help"); ?>" style="cursor: help;" onmouseup="hideAllWidgets();domTT_activate(this, event, 'content', document.getElementById('welcome-container'), 'type', 'sticky', 'closeLink', '','delay', 0, 'fade', 'both', 'fadeMax', 100, 'styleClass', 'niceTitle');" />
540 5eafc6de Scott Dale
541
542 bf5ad142 Scott Dale
&nbsp;&nbsp;&nbsp;
543 5493fad2 Rafael Lucas
		<input id="submit" name="submit" type="submit" style="display:none" onclick="return updatePref();" class="formbtn" value="<?=gettext("Save Settings");?>" />
544 bf5ad142 Scott Dale
</p>
545 1db766df Scott Dale
546
<div id="niftyOutter">
547
	<?php
548
	$totalwidgets = count($widgetfiles);
549 c9cfb807 Scott Dale
	$halftotal = $totalwidgets / 2 - 2;
550
	$widgetcounter = 0;
551 8b06c9ff Scott Dale
	$directory = "/usr/local/www/widgets/widgets/";
552 1db766df Scott Dale
	$printed = false;
553
	$firstprint = false;
554
	?> 
555 ea298b82 Scott Dale
	<div id="col1" style="float:left;width:49%;padding-bottom:40px">		
556 8b06c9ff Scott Dale
	<?php	
557 135e9b3b Scott Dale
		
558 bf5ad142 Scott Dale
	foreach($widgetlist as $widget) {
559 c9cfb807 Scott Dale
		
560 1db766df Scott Dale
		if(!stristr($widget, "widget.php"))
561 3f304727 Scott Dale
					continue;
562 1db766df Scott Dale
		$periodpos = strpos($widget, ".");
563
		$widgetname = substr($widget, 0, $periodpos);	
564 bf5ad142 Scott Dale
		if ($widgetname != ""){
565 3f304727 Scott Dale
			$nicename = $widgetname;
566
			$nicename = str_replace("_", " ", $nicename);
567
			
568
			//make the title look nice
569
			$nicename = ucwords($nicename);
570 8b06c9ff Scott Dale
		}
571 1db766df Scott Dale
		
572 135e9b3b Scott Dale
		if ($config['widgets'] && $pconfig['sequence'] != ""){
573 01da41cf Bill Marquette
			switch($displayarray[$widgetcounter]){
574
				case "show":
575 8b06c9ff Scott Dale
					$divdisplay = "block";
576
					$display = "block";
577
					$inputdisplay = "show";					
578 7abf7db5 Scott Dale
					$showWidget = "none";
579 8b06c9ff Scott Dale
					$mindiv = "inline";
580 01da41cf Bill Marquette
					break;
581
				case "hide":
582 8b06c9ff Scott Dale
					$divdisplay = "block";
583 01da41cf Bill Marquette
					$display = "none";
584
					$inputdisplay = "hide";		
585
					$showWidget = "inline";
586
					$mindiv = "none";
587 a6efee26 jim-p
					break;
588 01da41cf Bill Marquette
				case "close":
589
					$divdisplay = "none";
590 8b06c9ff Scott Dale
					$display = "block";
591 01da41cf Bill Marquette
					$inputdisplay = "close";			
592 7abf7db5 Scott Dale
					$showWidget = "none";
593 8b06c9ff Scott Dale
					$mindiv = "inline";
594 01da41cf Bill Marquette
					break;
595
				default:
596 8b06c9ff Scott Dale
					$divdisplay = "none";
597
					$display = "block";
598 01da41cf Bill Marquette
					$inputdisplay = "none";
599 7abf7db5 Scott Dale
					$showWidget = "none";
600 8b06c9ff Scott Dale
					$mindiv = "inline";
601 01da41cf Bill Marquette
					break;
602
			}
603
		} else {
604
			if ($firstprint == false){
605
				$divdisplay = "block";
606
				$display = "block";
607
				$inputdisplay = "show";
608
				$showWidget = "none";
609
				$mindiv = "inline";
610
				$firstprint = true;
611
			} else {
612
				switch ($widget) {
613
					case "interfaces.widget.php":
614
					case "traffic_graphs.widget.php":
615
						$divdisplay = "block";
616
						$display = "block";
617
						$inputdisplay = "show";
618
						$showWidget = "none";
619
						$mindiv = "inline";
620
						break;
621
					default:
622
						$divdisplay = "none";
623
						$display = "block";
624
						$inputdisplay = "close";
625
						$showWidget = "none";
626
						$mindiv = "inline";
627
						break;
628 8b06c9ff Scott Dale
				}
629 775d112b Scott Dale
			}
630 bf5ad142 Scott Dale
		}
631 1db766df Scott Dale
		
632 135e9b3b Scott Dale
		if ($config['widgets'] && $pconfig['sequence'] != ""){
633 bf5ad142 Scott Dale
			if ($colpos[$widgetcounter] == "col2" && $printed == false)
634
			{
635
				$printed = true;
636
				?>
637
				</div>
638 ea298b82 Scott Dale
				<div id="col2" style="float:right;width:49%;padding-bottom:40px">		
639 bf5ad142 Scott Dale
				<?php
640
			}
641
		}
642
		else if ($widgetcounter >= $halftotal && $printed == false){
643 1db766df Scott Dale
			$printed = true;
644
			?>
645
			</div>
646 8b06c9ff Scott Dale
			<div id="col2" style="float:right;width:49%;padding-bottom:40px">		
647 1db766df Scott Dale
			<?php
648 bf5ad142 Scott Dale
		}
649 16f556c5 Scott Dale
		
650
		?>
651 1db766df Scott Dale
		<div style="clear:both;"></div>
652 65d4de2e Scott Dale
		<div  id="<?php echo $widgetname;?>-container" class="widgetdiv" style="display:<?php echo $divdisplay; ?>;">
653
			<input type="hidden" value="<?php echo $inputdisplay;?>" id="<?php echo $widgetname;?>-container-input" name="<?php echo $widgetname;?>-container-input">
654 3da0d006 Scott Dale
			<div id="<?php echo $widgetname;?>-topic" class="widgetheader" style="cursor:move">
655 1db766df Scott Dale
				<div style="float:left;">
656 16f556c5 Scott Dale
					<?php 
657
					
658
					$widgettitle = $widgetname . "_title";
659
					$widgettitlelink = $widgetname . "_title_link";
660
					if ($$widgettitle != "")
661
					{
662
						//only show link if defined
663
						if ($$widgettitlelink != "") {?>						
664
						<u><span onClick="location.href='/<?php echo $$widgettitlelink;?>'" style="cursor:pointer">
665
						<?php }
666
							//echo widget title
667
							echo $$widgettitle; 
668
						if ($$widgettitlelink != "") { ?>
669
						</span></u>						
670
						<?php }
671
					}
672
					else{		
673
						if ($$widgettitlelink != "") {?>						
674
						<u><span onClick="location.href='/<?php echo $$widgettitlelink;?>'" style="cursor:pointer">
675
						<?php }
676
						echo $nicename;
677
							if ($$widgettitlelink != "") { ?>
678
						</span></u>						
679
						<?php }
680
					}
681
					?>
682 1db766df Scott Dale
				</div>
683 bf5ad142 Scott Dale
				<div align="right" style="float:right;">	
684 7abf7db5 Scott Dale
					<div id="<?php echo $widgetname;?>-configure" onclick='return configureWidget("<?php echo $widgetname;?>")' style="display:none; cursor:pointer" ><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_configure.gif" /></div>									
685
					<div id="<?php echo $widgetname;?>-open" onclick='return showWidget("<?php echo $widgetname;?>",true)' style="display:<?php echo $showWidget;?>; cursor:pointer" ><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_open.gif" /></div>	
686
					<div id="<?php echo $widgetname;?>-min" onclick='return minimizeWidget("<?php echo $widgetname;?>",true)' style="display:<?php echo $mindiv;?>; cursor:pointer" ><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_minus.gif"/></div>												
687
					<div id="<?php echo $widgetname;?>-close" onclick='return closeWidget("<?php echo $widgetname;?>",true)' style="display:inline; cursor:pointer" ><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_close.gif" /></div>	
688 1db766df Scott Dale
				</div>
689
				<div style="clear:both;"></div>
690
			</div>
691 3da0d006 Scott Dale
			<?php if ($divdisplay != "block") { ?>
692
			<div id="<?php echo $widgetname;?>-loader" style="display:<?php echo $display; ?>;">
693
				<br>	
694
					<center>
695 fffbf46d Carlos Eduardo Ramos
						<img src="./themes/<?= $g['theme']; ?>/images/misc/widget_loader.gif" width=25 height=25 alt="<?=gettext("Loading selected widget"); ?>...">
696 3da0d006 Scott Dale
					</center>	
697
				<br>
698
			</div> <?php } if ($divdisplay != "block") $display = none; ?>
699 34eac803 Scott Dale
			<div id="<?php echo $widgetname;?>" style="display:<?php echo $display; ?>;">				
700 b9b45ddb Scott Dale
				<?php 
701 3da0d006 Scott Dale
					if ($divdisplay == "block")
702 b9b45ddb Scott Dale
					{
703
						include($directory . $widget);
704 34eac803 Scott Dale
					}	
705 b9b45ddb Scott Dale
				 ?>
706 1db766df Scott Dale
			</div>
707
			<div style="clear:both;"></div>
708
		</div>
709
		<?php 	
710
	$widgetcounter++;
711 8b06c9ff Scott Dale
		
712 1db766df Scott Dale
	}//end foreach	
713
	?>			
714 8b06c9ff Scott Dale
		</div>
715 1db766df Scott Dale
	<div style="clear:both;"></div>
716 d772ac32 Erik Kristensen
</div>
717 561d55ff Erik Kristensen
718 d772ac32 Erik Kristensen
<?php include("fend.inc"); ?>
719 7f1f5492 Scott Ullrich
	    
720
<script type="text/javascript">
721 8bf02470 Bill Marquette
	document.observe('dom:loaded', function(in_event)
722 5eafc6de Scott Dale
	{		
723 24f53f5c Scott Ullrich
			Sortable.create("col1", {tag:'div',dropOnEmpty:true,containment:columns,handle:'widgetheader',constraint:false,only:'widgetdiv',onChange:showSave});	
724
			Sortable.create("col2", {tag:'div',dropOnEmpty:true,containment:columns,handle:'widgetheader',constraint:false,only:'widgetdiv',onChange:showSave});		
725
	<?php if (!$config['widgets']  && $pconfig['sequence'] != ""){ ?>
726 5eafc6de Scott Dale
			hideAllWidgets();		    
727 65d4de2e Scott Dale
			domTT_activate('welcome1', null, 'x', 287, 'y', 107, 'content', document.getElementById('welcome-container'), 'type', 'sticky', 'closeLink', '','delay', 1000, 'fade', 'both', 'fadeMax', 100, 'styleClass', 'niceTitle');		
728 d72fc17b Scott Dale
	<?php } ?>
729 8bf02470 Bill Marquette
	});
730 838fa668 Scott Ullrich
</script>
731
<?php
732 1db766df Scott Dale
	//build list of javascript include files
733 775d112b Scott Dale
	$jsincludefiles = array();
734 1db766df Scott Dale
	$directory = "widgets/javascript/";
735
	$dirhandle  = opendir($directory);
736
	$filename = "";
737
	while (false !== ($filename = readdir($dirhandle))) {
738
   		$jsincludefiles[] = $filename;
739
	}
740
	foreach($jsincludefiles as $jsincludename) {
741
		if(!stristr($jsincludename, ".js"))
742 838fa668 Scott Ullrich
			continue;
743
		echo "<script src='{$directory}{$jsincludename}' type='text/javascript'></script>\n";	
744 1db766df Scott Dale
	}
745 838fa668 Scott Ullrich
?>
746 1db766df Scott Dale
</script>
747
</form>
748 5b237745 Scott Ullrich
</body>
749 dc7c57ac Ermal Lu?i
</html>