Project

General

Profile

Download (21.4 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
34 1df0159c Erik Kristensen
	## Load Essential Includes
35
	require_once('guiconfig.inc');
36
	require_once('notices.inc');
37 d772ac32 Erik Kristensen
38 1df0159c Erik Kristensen
	## Load Functions Files
39
	require_once('includes/functions.inc.php');
40 d772ac32 Erik Kristensen
41
42 1df0159c Erik Kristensen
	## Load AJAX, Initiate Class ###############################################
43
	require_once('includes/sajax.class.php');
44 d772ac32 Erik Kristensen
45 1df0159c Erik Kristensen
	## Initiate Class and Set location of ajax file containing 
46
	## the information that we need for this page. Also set functions
47
	## that SAJAX will be using.
48
	$oSajax = new sajax();
49
	$oSajax->sajax_remote_uri = 'sajax/index.sajax.php';
50
	$oSajax->sajax_request_type = 'POST';
51 477361c7 Erik Kristensen
	$oSajax->sajax_export("get_stats");
52 1df0159c Erik Kristensen
	$oSajax->sajax_handle_client_request();
53
	############################################################################
54 65d4de2e Scott Dale
	
55
	
56 1df0159c Erik Kristensen
	## Check to see if we have a swap space,
57
	## if true, display, if false, hide it ...
58 746ca58a Scott Ullrich
	if(file_exists("/usr/sbin/swapinfo")) {
59
		$swapinfo = `/usr/sbin/swapinfo`;
60
		if(stristr($swapinfo,'%') == true) $showswap=true;
61
	}
62 d772ac32 Erik Kristensen
63 f3e2c205 Scott Ullrich
64 1df0159c Erik Kristensen
	## User recently restored his config.
65
	## If packages are installed lets resync
66 1abb04ea Scott Ullrich
	if(file_exists('/conf/needs_package_sync')) {
67 1df0159c Erik Kristensen
		if($config['installedpackages'] <> '') {
68
			conf_mount_rw();
69 1abb04ea Scott Ullrich
			unlink('/conf/needs_package_sync');
70 1df0159c Erik Kristensen
			header('Location: pkg_mgr_install.php?mode=reinstallall');
71
			exit;
72
		}
73
	}
74 8fecad11 Scott Ullrich
75 1df0159c Erik Kristensen
76 709cc6e0 Bill Marquette
	## If it is the first time webConfigurator has been
77 1df0159c Erik Kristensen
	## accessed since initial install show this stuff.
78 1abb04ea Scott Ullrich
	if(file_exists('/conf/trigger_initial_wizard')) {
79 1df0159c Erik Kristensen
80 36d0358b Scott Ullrich
		$pgtitle = array("{$g['product_name']} first time setup");
81 1df0159c Erik Kristensen
		include('head.inc');
82
83
		echo "<body link=\"#0000CC\" vlink=\"#0000CC\" alink=\"#0000CC\">\n";
84
		echo "<form>\n";
85
		echo "<center>\n";
86
		echo "<img src=\"/themes/{$g['theme']}/images/logo.gif\" border=\"0\"><p>\n";
87
		echo "<div \" style=\"width:700px;background-color:#ffffff\" id=\"nifty\">\n";
88 36d0358b Scott Ullrich
		echo "Welcome to {$g['product_name']}!<p>\n";
89 1df0159c Erik Kristensen
		echo "One moment while we start the initial setup wizard.<p>\n";
90 42b8d9fb Chris Buechler
		echo "Embedded platform users: Please be patient, the wizard takes a little longer to run than the normal GUI.<p>\n";
91
		echo "To bypass the wizard, click on the {$g['product_name']} logo on the initial page.\n";
92 1df0159c Erik Kristensen
		echo "</div>\n";
93
		echo "<meta http-equiv=\"refresh\" content=\"1;url=wizard.php?xml=setup_wizard.xml\">\n";
94
		echo "<script type=\"text/javascript\">\n";
95
		echo "NiftyCheck();\n";
96
		echo "Rounded(\"div#nifty\",\"all\",\"#000\",\"#FFFFFF\",\"smooth\");\n";
97
		echo "</script>\n";
98 1ca54f04 Scott Ullrich
		exit;
99
	}
100
101 bf787c0a Scott Ullrich
102 1df0159c Erik Kristensen
	## Find out whether there's hardware encryption or not
103
	unset($hwcrypto);
104
	$fd = @fopen("{$g['varlog_path']}/dmesg.boot", "r");
105
	if ($fd) {
106
		while (!feof($fd)) {
107
			$dmesgl = fgets($fd);
108
			if (preg_match("/^hifn.: (.*?),/", $dmesgl, $matches)) {
109
				$hwcrypto = $matches[1];
110
				break;
111
			}
112 5b237745 Scott Ullrich
		}
113 1df0159c Erik Kristensen
		fclose($fd);
114 5b237745 Scott Ullrich
	}
115 bf5ad142 Scott Dale
	
116
//build list of widgets
117
$directory = "widgets/widgets/";
118
$dirhandle  = opendir($directory);
119
$filename = "";
120 775d112b Scott Dale
$widgetnames = array ();
121 bf5ad142 Scott Dale
$widgetfiles = array();
122
123
while (false !== ($filename = readdir($dirhandle))) {
124
	$periodpos = strpos($filename, ".");
125 775d112b Scott Dale
	$widgetname = substr($filename, 0, $periodpos);
126
	$widgetnames[] = $widgetname;
127
	if ($widgetname != "system_information")
128 bf5ad142 Scott Dale
		$widgetfiles[] = $filename;   		
129
}
130
sort($widgetfiles);
131 775d112b Scott Dale
array_unshift($widgetfiles, "system_information.widget.php");
132
133 bf5ad142 Scott Dale
134
if (!is_array($config['widgets'])) {
135
	$config['widgets'] = array();
136
}
137 5b237745 Scott Ullrich
138 bf5ad142 Scott Dale
$pconfig['sequence'] = $config['widgets']['sequence'];
139 f5cfdc98 Scott Dale
	
140 1db766df Scott Dale
if ($_POST){
141 bf5ad142 Scott Dale
	$config['widgets']['sequence'] = $_POST['sequence'];
142 3e4e94ce Scott Dale
	
143 bf5ad142 Scott Dale
	foreach ($widgetnames as $widget){
144
		if ($_POST[$widget . '-config']){
145
			$config['widgets'][$widget . '-config'] = $_POST[$widget . '-config'];
146
		}
147
	}
148
	
149
	write_config();
150
	header("Location: index.php");
151
	exit;
152 1db766df Scott Dale
}
153 bf5ad142 Scott Dale
154 3e4e94ce Scott Dale
	
155 1db766df Scott Dale
if ($config['widgets'])
156
{
157 bf5ad142 Scott Dale
	$widgetlist = $pconfig['sequence'];
158
	
159
	$colpos = array();
160
	$savedwidgetfiles = array();
161
	$widgetname = "";
162
	$widgetlist = explode(",",$widgetlist);
163
	foreach ($widgetlist as $widget){
164
		$dashpos = strpos($widget, "-");		
165
		$widgetname = substr($widget, 0, $dashpos);
166
		$colposition = strpos($widget, ":");		
167
		$displayposition = strrpos($widget, ":");
168
		$colpos[] = substr($widget,$colposition+1, $displayposition - $colposition-1);
169
		$displayarray[] = substr($widget,$displayposition+1);
170
		$savedwidgetfiles[] = $widgetname . ".widget.php";
171 1db766df Scott Dale
	}
172 bf5ad142 Scott Dale
	foreach ($widgetnames as $widget){
173
		if ($config['widgets'][$widget . '-config']){
174
			$pconfig[$widget . '-config'] = $config['widgets'][$widget . '-config'];
175
		}
176
	}	
177 3e4e94ce Scott Dale
}
178
179 bf5ad142 Scott Dale
180
//build list of php include files
181
$phpincludefiles = Array();
182
$directory = "widgets/include/";
183
$dirhandle  = opendir($directory);
184
$filename = "";
185
while (false !== ($filename = readdir($dirhandle))) {
186
	$phpincludefiles[] = $filename;
187
}
188
foreach($phpincludefiles as $includename) {
189
	if(!stristr($includename, ".inc"))
190
		continue;	
191
	include($directory . $includename);
192
}
193 81db9b7b Scott Dale
194 1db766df Scott Dale
$jscriptstr = <<<EOD
195
<script language="javascript" type="text/javascript">
196
197 65d4de2e Scott Dale
198
function widgetAjax(widget) {	
199 34eac803 Scott Dale
	uri = "widgets/widgets/" + widget + ".widget.php";
200
	var opt = {
201
	    // Use GET
202
	    method: 'get',
203
		evalScripts: 'true',
204
	    asynchronous: true,
205
	    // Handle 404
206
	    on404: function(t) {
207
	        alert('Error 404: location "' + t.statusText + '" was not found.');
208
	    },
209
	    // Handle other errors
210
	    onFailure: function(t) {
211
	        alert('Error ' + t.status + ' -- ' + t.statusText);
212
	    },
213
		onSuccess: function(t) {
214
			widget2 = widget + "-loader";
215
			Effect.Fade(widget2, {queue:'front'});
216
			Effect.Appear(widget, {queue:'end'});			
217
	    }	
218
	}
219
	new Ajax.Updater(widget, uri, opt);
220
}
221 65d4de2e Scott Dale
222
223 5eafc6de Scott Dale
function addDiv(selectedDiv){	
224 65d4de2e Scott Dale
	selectedDiv2 = selectedDiv + "-container";
225
	d = document;
226
	textlink = d.getElementById(selectedDiv2);
227 34eac803 Scott Dale
	Effect.Appear(selectedDiv2, {duration:1});
228 5eafc6de Scott Dale
	if (textlink.style.display != "none")
229
	{
230 65d4de2e Scott Dale
		Effect.Shake(selectedDiv2);	
231 5eafc6de Scott Dale
	}
232
	else
233
	{
234 65d4de2e Scott Dale
		widgetAjax(selectedDiv);
235
		selectIntLink = selectedDiv2 + "-input";
236 5eafc6de Scott Dale
		textlink = d.getElementById(selectIntLink);
237
		textlink.value = "show";	
238
		showSave();
239
	}
240 bf5ad142 Scott Dale
}
241 1db766df Scott Dale
242 25d2d037 Scott Dale
function configureDiv(selectedDiv){
243
	selectIntLink = selectedDiv + "-settings";	
244
	d = document;
245
	textlink = d.getElementById(selectIntLink);
246
	if (textlink.style.display == "none")
247
		Effect.BlindDown(selectIntLink, {duration:1});
248
	else
249
		Effect.BlindUp(selectIntLink, {duration:1});
250
}
251
252 1db766df Scott Dale
function showDiv(selectedDiv,swapButtons){
253 65d4de2e Scott Dale
	//appear element
254 1db766df Scott Dale
    Effect.BlindDown(selectedDiv, {duration:1});      
255 bf5ad142 Scott Dale
    showSave();    
256
	d = document;	
257 1db766df Scott Dale
    if (swapButtons){
258
	    selectIntLink = selectedDiv + "-min";
259
		textlink = d.getElementById(selectIntLink);
260
		textlink.style.display = "inline";
261
	    
262
	    
263
	    selectIntLink = selectedDiv + "-open";
264
		textlink = d.getElementById(selectIntLink);
265
		textlink.style.display = "none";
266 bf5ad142 Scott Dale
267 1db766df Scott Dale
    }
268 65d4de2e Scott Dale
	selectIntLink = selectedDiv + "-container-input";
269 bf5ad142 Scott Dale
	textlink = d.getElementById(selectIntLink);
270
	textlink.value = "show";	
271
    
272 f5cfdc98 Scott Dale
}
273
	
274 1db766df Scott Dale
function minimizeDiv(selectedDiv,swapButtons){
275
	//fade element
276
    Effect.BlindUp(selectedDiv, {duration:1});      
277 bf5ad142 Scott Dale
    showSave();
278
	d = document;	
279 1db766df Scott Dale
    if (swapButtons){
280
	    selectIntLink = selectedDiv + "-open";
281
		textlink = d.getElementById(selectIntLink);
282
		textlink.style.display = "inline";	    
283
	    
284
	    selectIntLink = selectedDiv + "-min";
285
		textlink = d.getElementById(selectIntLink);
286
		textlink.style.display = "none";
287 bf5ad142 Scott Dale
    }  		
288 65d4de2e Scott Dale
	selectIntLink = selectedDiv + "-container-input";
289 bf5ad142 Scott Dale
	textlink = d.getElementById(selectIntLink);
290
	textlink.value = "hide";	  
291
    
292 1db766df Scott Dale
}
293
294 bf5ad142 Scott Dale
function closeDiv(selectedDiv){	
295
	showSave();
296 65d4de2e Scott Dale
	selectedDiv = selectedDiv + "-container";
297 bf5ad142 Scott Dale
	Effect.Fade(selectedDiv, {duration:1});
298
	d = document;
299 1db766df Scott Dale
	selectIntLink = selectedDiv + "-input";
300
	textlink = d.getElementById(selectIntLink);
301
	textlink.value = "close";	
302
}
303
304 bf5ad142 Scott Dale
function showSave(){
305
	d = document;
306
	selectIntLink = "submit";
307
	textlink = d.getElementById(selectIntLink);
308
	textlink.style.display = "inline";	
309 1db766df Scott Dale
}
310
311 bf5ad142 Scott Dale
function updatePref(){	
312
	var widgets = document.getElementsByClassName('widgetdiv');
313
	var widgetSequence = "";
314
	var firstprint = false;	
315
	d = document;
316
	for (i=0; i<widgets.length; i++){
317
		if (firstprint)
318
			widgetSequence += ",";
319
		var widget = widgets[i].id;
320
		widgetSequence += widget + ":" + widgets[i].parentNode.id + ":";
321
		widget = widget + "-input";
322
		textlink = d.getElementById(widget).value;
323
		widgetSequence += textlink;
324
		firstprint = true;		
325
	}
326
	selectLink = "sequence";
327
	textlink = d.getElementById(selectLink);
328
	textlink.value = widgetSequence;
329
	return true;	
330
}
331 1db766df Scott Dale
332 5eafc6de Scott Dale
function hideAllWidgets(){		
333
		Effect.Fade('niftyOutter', {to: 0.2});
334
}
335
336
function showAllWidgets(){		
337
		Effect.Fade('niftyOutter', {to: 1.0});
338
}
339
340 b9b45ddb Scott Dale
341
function changeTabDIV(selectedDiv){
342
	var dashpos = selectedDiv.indexOf("-");
343
	var tabclass = selectedDiv.substring(0,dashpos);
344
	d = document;
345
346
	//get deactive tabs first
347
	tabclass = tabclass + "-class-tabdeactive"; 
348
	var tabs = document.getElementsByClassName(tabclass);
349
	var incTabSelected = selectedDiv + "-deactive";
350
	for (i=0; i<tabs.length; i++){
351
		var tab = tabs[i].id;
352
		dashpos = tab.lastIndexOf("-");
353
		var tab2 = tab.substring(0,dashpos) + "-deactive";
354
		if (tab2 == incTabSelected){
355
			tablink = d.getElementById(tab2);
356
			tablink.style.display = "none";
357
			tab2 = tab.substring(0,dashpos) + "-active";
358
			tablink = d.getElementById(tab2);
359
			tablink.style.display = "table-cell";
360
			
361
			//now show main div associated with link clicked
362
			tabmain = d.getElementById(selectedDiv);
363
			tabmain.style.display = "block";
364
		}
365
		else
366
		{	
367
			tab2 = tab.substring(0,dashpos) + "-deactive";
368
			tablink = d.getElementById(tab2);
369
			tablink.style.display = "table-cell";
370
			tab2 = tab.substring(0,dashpos) + "-active";
371
			tablink = d.getElementById(tab2);
372
			tablink.style.display = "none";		
373
			
374
			//hide sections we don't want to see
375
			tab2 = tab.substring(0,dashpos);
376
			tabmain = d.getElementById(tab2);
377
			tabmain.style.display = "none";
378
				
379
		}
380
	}	
381
}
382
383 f5cfdc98 Scott Dale
</script>
384
EOD;
385 1db766df Scott Dale
$closehead = false;
386 3e4e94ce Scott Dale
387 1db766df Scott Dale
## Set Page Title and Include Header
388 36d0358b Scott Ullrich
$pgtitle = array("{$g['product_name']} Dashboard");
389 1db766df Scott Dale
include("head.inc");
390
	
391
	
392
echo "<script type=\"text/javascript\" language=\"javascript\" src=\"/javascript/domTT/domLib.js\"></script>";
393
echo "<script type=\"text/javascript\" language=\"javascript\" src=\"/javascript/domTT/domTT.js\"></script>";
394
echo "<script type=\"text/javascript\" language=\"javascript\" src=\"/javascript/domTT/behaviour.js\"></script>";
395
echo "<script type=\"text/javascript\" language=\"javascript\" src=\"/javascript/domTT/fadomatic.js\"></script>";
396 a8726a3d Scott Ullrich
?>
397 8dbbc3ed Scott Ullrich
398 5b237745 Scott Ullrich
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
399 1db766df Scott Dale
<form action="index.php" method="post">
400
<script language="javascript" type="text/javascript">
401
// <![CDATA[
402
columns = ['col1','col2'];
403
// ]]>
404
405 670fe849 Scott Ullrich
</script>
406 1db766df Scott Dale
407
408
<script src="/javascript/scriptaculous/prototype.js" type="text/javascript"></script>
409
<script src="/javascript/scriptaculous/scriptaculous.js" type="text/javascript"></script>
410
411 5ffe7500 Scott Ullrich
<?php
412
include("fbegin.inc");
413 f5cfdc98 Scott Dale
echo $jscriptstr;
414 5e237c18 Erik Kristensen
	if(!file_exists("/usr/local/www/themes/{$g['theme']}/no_big_logo"))
415
		echo "<center><img src=\"./themes/".$g['theme']."/images/logobig.jpg\"></center><br>";
416 0682e26b Colin Smith
?>
417 1db766df Scott Dale
<div id="widgetcontainer" style="display:none">
418
		<div id="content1"><h1>Available Widgets</h1><p><?php
419 16f556c5 Scott Dale
			$widgetfiles_add = $widgetfiles;
420
			sort($widgetfiles_add);
421
			foreach($widgetfiles_add as $widget) {			
422 1db766df Scott Dale
				if(!stristr($widget, "widget.php"))
423
					continue;		
424
				
425
				$periodpos = strpos($widget, ".");
426
				$widgetname = substr($widget, 0, $periodpos);
427
				$nicename = $widgetname;
428 f69aa687 Scott Dale
				$nicename = str_replace("_", " ", $nicename);
429 1db766df Scott Dale
				//make the title look nice
430 16f556c5 Scott Dale
				$nicename = ucwords($nicename);
431
				
432
				$widgettitle = $widgetname . "_title";
433
				$widgettitlelink = $widgetname . "_title_link";
434
					if ($$widgettitle != "")
435
					{
436 88f71068 Scott Dale
						//echo widget title 
437
						?>
438 16f556c5 Scott Dale
						<span style="cursor: pointer;" onclick='return addDiv("<?php echo $widgetname; ?>")'>
439
						<u><?php echo $$widgettitle; ?></u></span><br>
440
						<?php 
441
					}
442
					else {?>
443
						<span style="cursor: pointer;" onclick='return addDiv("<?php echo $widgetname; ?>")'>
444
						<u><?php echo $nicename; ?></u></span><br><?php
445
					}
446 1db766df Scott Dale
			}
447 f5cfdc98 Scott Dale
		?>
448 1db766df Scott Dale
		</p>
449
	</div>
450
</div>
451
452 d72fc17b Scott Dale
<div id="welcomecontainer" style="display:none">
453 65d4de2e Scott Dale
		<div id="welcome-container">
454 d72fc17b Scott Dale
			<h1>
455 16f556c5 Scott Dale
				<div style="float:left;width:80%;padding: 2px">
456 ea298b82 Scott Dale
					Welcome to the Dashboard page!
457 d72fc17b Scott Dale
				</div>
458 16f556c5 Scott Dale
				<div onclick="domTT_close(this);showAllWidgets();" style="float:right;width:8%; cursor:pointer;padding: 5px;" >
459 d72fc17b Scott Dale
					<img src="./themes/<?= $g['theme']; ?>/images/icons/icon_close.gif" />
460
				</div>
461
				<div style="clear:both;"></div>
462
			</h1>
463
			<p>
464
			This page allows you to customize the information you want to be displayed!<br/>
465 5eafc6de Scott Dale
			To get started click the <img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif"> icon to add widgets.<br/>
466 d72fc17b Scott Dale
			<br/>
467
			You can move any widget around by clicking and dragging the title.			
468
			</p>
469
	</div>
470
</div>
471
472
473
474 bf5ad142 Scott Dale
<input type="hidden" value="" name="sequence" id="sequence">
475 5eafc6de Scott Dale
<img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" alt="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');" />
476
477 65d4de2e Scott Dale
<img src="./themes/<?= $g['theme']; ?>/images/icons/icon_info_pkg.gif" alt="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');" />
478 5eafc6de Scott Dale
479
480 bf5ad142 Scott Dale
&nbsp;&nbsp;&nbsp;
481
		<input id="submit" name="submit" type="submit" style="display:none" onclick="return updatePref();" class="formbtn" value="Save Settings" />
482
</p>
483 1db766df Scott Dale
484
<div id="niftyOutter">
485
	<?php
486
	$totalwidgets = count($widgetfiles);
487 bf5ad142 Scott Dale
	$halftotal = $totalwidgets / 2 -1;
488
	$widgetcounter = 0;
489 1db766df Scott Dale
	$directory = "widgets/widgets/";
490
	$printed = false;
491
	$firstprint = false;
492
	?> 
493 ea298b82 Scott Dale
	<div id="col1" style="float:left;width:49%;padding-bottom:40px">		
494 1db766df Scott Dale
	<?php
495
	
496 3ee9cb77 Scott Dale
	if ($config['widgets']){
497 bf5ad142 Scott Dale
		$widgetlist = $savedwidgetfiles;
498 3ee9cb77 Scott Dale
		
499
		//add widgets that may not be in the saved configuration, in case they want to be added later
500
		foreach ($widgetfiles as $defaultwidgets){
501
			
502
			if (!in_array($defaultwidgets, $savedwidgetfiles)){
503
				$widgetlist[] = $defaultwidgets;
504
			}
505
		}		
506
		
507
	}
508 bf5ad142 Scott Dale
	else
509 3ee9cb77 Scott Dale
		$widgetlist = $widgetfiles;	
510 bf5ad142 Scott Dale
	
511
	foreach($widgetlist as $widget) {
512 1db766df Scott Dale
	
513
		if(!stristr($widget, "widget.php"))
514
			continue;		
515
		
516
		$periodpos = strpos($widget, ".");
517
		$widgetname = substr($widget, 0, $periodpos);	
518 bf5ad142 Scott Dale
		if ($widgetname != ""){
519 1db766df Scott Dale
		$nicename = $widgetname;
520 f69aa687 Scott Dale
		$nicename = str_replace("_", " ", $nicename);
521 1db766df Scott Dale
			
522
		//make the title look nice
523
		$nicename = ucwords($nicename);
524
		
525 775d112b Scott Dale
		if ($config['widgets']){
526
			if ($displayarray[$widgetcounter] == "show"){
527
				$divdisplay = "block";
528
				$display = "block";
529
				$inputdisplay = "show";					
530
				$showdiv = "none";
531
				$mindiv = "inline";
532
			}
533
			else if ($displayarray[$widgetcounter] == "hide") {
534
				$divdisplay = "block";
535
				$display = "none";
536
				$inputdisplay = "hide";		
537
				$showdiv = "inline";
538
				$mindiv = "none";
539
			}
540
			else if ($displayarray[$widgetcounter] == "close"){
541
				$divdisplay = "none";
542
				$display = "block";
543
				$inputdisplay = "close";			
544
				$showdiv = "none";
545
				$mindiv = "inline";
546
			}
547
			else{
548 3ee9cb77 Scott Dale
				$divdisplay = "none";
549 775d112b Scott Dale
				$display = "block";
550 3ee9cb77 Scott Dale
				$inputdisplay = "none";
551 775d112b Scott Dale
				$showdiv = "none";
552
				$mindiv = "inline";
553
			}
554 bf5ad142 Scott Dale
		}
555 775d112b Scott Dale
		else
556
		{
557
			if ($firstprint == false){
558
				$divdisplay = "block";
559
				$display = "block";
560
				$inputdisplay = "show";					
561
				$showdiv = "none";
562
				$mindiv = "inline";
563
				$firstprint = true;
564
			}
565
			else
566
			{
567
				$divdisplay = "none";
568
				$display = "block";
569
				$inputdisplay = "close";			
570
				$showdiv = "none";
571
				$mindiv = "inline";
572
			}
573 bf5ad142 Scott Dale
		}
574
			
575 1db766df Scott Dale
		
576 bf5ad142 Scott Dale
		if ($config['widgets']){
577
			if ($colpos[$widgetcounter] == "col2" && $printed == false)
578
			{
579
				$printed = true;
580
				?>
581
				</div>
582 ea298b82 Scott Dale
				<div id="col2" style="float:right;width:49%;padding-bottom:40px">		
583 bf5ad142 Scott Dale
				<?php
584
			}
585
		}
586
		else if ($widgetcounter >= $halftotal && $printed == false){
587 1db766df Scott Dale
			$printed = true;
588
			?>
589
			</div>
590 34eac803 Scott Dale
			<div id="col2" style="float:right;width:50%;padding-bottom:40px">		
591 1db766df Scott Dale
			<?php
592 bf5ad142 Scott Dale
		}
593 16f556c5 Scott Dale
		
594
		?>
595 1db766df Scott Dale
		<div style="clear:both;"></div>
596 65d4de2e Scott Dale
		<div  id="<?php echo $widgetname;?>-container" class="widgetdiv" style="display:<?php echo $divdisplay; ?>;">
597
			<input type="hidden" value="<?php echo $inputdisplay;?>" id="<?php echo $widgetname;?>-container-input" name="<?php echo $widgetname;?>-container-input">
598 3da0d006 Scott Dale
			<div id="<?php echo $widgetname;?>-topic" class="widgetheader" style="cursor:move">
599 1db766df Scott Dale
				<div style="float:left;">
600 16f556c5 Scott Dale
					<?php 
601
					
602
					$widgettitle = $widgetname . "_title";
603
					$widgettitlelink = $widgetname . "_title_link";
604
					if ($$widgettitle != "")
605
					{
606
						//only show link if defined
607
						if ($$widgettitlelink != "") {?>						
608
						<u><span onClick="location.href='/<?php echo $$widgettitlelink;?>'" style="cursor:pointer">
609
						<?php }
610
							//echo widget title
611
							echo $$widgettitle; 
612
						if ($$widgettitlelink != "") { ?>
613
						</span></u>						
614
						<?php }
615
					}
616
					else{		
617
						if ($$widgettitlelink != "") {?>						
618
						<u><span onClick="location.href='/<?php echo $$widgettitlelink;?>'" style="cursor:pointer">
619
						<?php }
620
						echo $nicename;
621
							if ($$widgettitlelink != "") { ?>
622
						</span></u>						
623
						<?php }
624
					}
625
					?>
626 1db766df Scott Dale
				</div>
627 bf5ad142 Scott Dale
				<div align="right" style="float:right;">	
628 25d2d037 Scott Dale
					<div id="<?php echo $widgetname;?>-configure" onclick='return configureDiv("<?php echo $widgetname;?>")' style="display:none; cursor:pointer" ><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_configure.gif" /></div>									
629 bf5ad142 Scott Dale
					<div id="<?php echo $widgetname;?>-open" onclick='return showDiv("<?php echo $widgetname;?>",true)' style="display:<?php echo $showdiv;?>; cursor:pointer" ><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_open.gif" /></div>	
630
					<div id="<?php echo $widgetname;?>-min" onclick='return minimizeDiv("<?php echo $widgetname;?>",true)' style="display:<?php echo $mindiv;?>; cursor:pointer" ><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_minus.gif"/></div>												
631 1db766df Scott Dale
					<div id="<?php echo $widgetname;?>-close" onclick='return closeDiv("<?php echo $widgetname;?>",true)' style="display:inline; cursor:pointer" ><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_close.gif" /></div>	
632
				</div>
633
				<div style="clear:both;"></div>
634
			</div>
635 3da0d006 Scott Dale
			<?php if ($divdisplay != "block") { ?>
636
			<div id="<?php echo $widgetname;?>-loader" style="display:<?php echo $display; ?>;">
637
				<br>	
638
					<center>
639
						<img src="./themes/<?= $g['theme']; ?>/images/misc/widget_loader.gif" width=25 height=25 alt="Loading selected widget...">
640
					</center>	
641
				<br>
642
			</div> <?php } if ($divdisplay != "block") $display = none; ?>
643 34eac803 Scott Dale
			<div id="<?php echo $widgetname;?>" style="display:<?php echo $display; ?>;">				
644 b9b45ddb Scott Dale
				<?php 
645 3da0d006 Scott Dale
					if ($divdisplay == "block")
646 b9b45ddb Scott Dale
					{
647
						include($directory . $widget);
648 34eac803 Scott Dale
					}	
649 b9b45ddb Scott Dale
				 ?>
650 1db766df Scott Dale
			</div>
651
			<div style="clear:both;"></div>
652
		</div>
653
		<?php 	
654
	$widgetcounter++;
655 bf5ad142 Scott Dale
		}
656 1db766df Scott Dale
	}//end foreach	
657
	?>			
658
	</div><!-- end col -->
659 bf5ad142 Scott Dale
	<?php  if ($printed == false){
660
			$printed = true;
661
			?>
662
			</div>
663 34eac803 Scott Dale
			<div id="col2" style="float:right;width:50%;padding-bottom:40px"></div>
664 bf5ad142 Scott Dale
		
665
			<?php } ?>
666 1db766df Scott Dale
	<div style="clear:both;"></div>
667 d772ac32 Erik Kristensen
</div>
668 561d55ff Erik Kristensen
669 d72fc17b Scott Dale
670
671 d772ac32 Erik Kristensen
<?php include("fend.inc"); ?>
672 7f1f5492 Scott Ullrich
	    
673
<script type="text/javascript">
674
675 d72fc17b Scott Dale
	<?php if (!$config['widgets']){ ?>
676
	window.onload = function(in_event)
677 5eafc6de Scott Dale
	{		
678
			hideAllWidgets();		    
679 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');		
680 d72fc17b Scott Dale
	}
681
	<?php } ?>
682 1db766df Scott Dale
	// <![CDATA[
683 bf5ad142 Scott Dale
	Sortable.create("col1", {tag:'div',dropOnEmpty:true,containment:columns,handle:'widgetheader',constraint:false,only:'widgetdiv',onChange:showSave});	
684
	Sortable.create("col2", {tag:'div',dropOnEmpty:true,containment:columns,handle:'widgetheader',constraint:false,only:'widgetdiv',onChange:showSave});		
685 1db766df Scott Dale
	// ]]>	
686
	
687
	<?php
688
	//build list of javascript include files
689 775d112b Scott Dale
	$jsincludefiles = array();
690 1db766df Scott Dale
	$directory = "widgets/javascript/";
691
	$dirhandle  = opendir($directory);
692
	$filename = "";
693
	while (false !== ($filename = readdir($dirhandle))) {
694
   		$jsincludefiles[] = $filename;
695
	}
696
	foreach($jsincludefiles as $jsincludename) {
697
		if(!stristr($jsincludename, ".js"))
698
			continue;	
699
		include($directory . $jsincludename);
700
	}
701
	?>
702
</script>
703
</form>
704 5b237745 Scott Ullrich
</body>
705 1db766df Scott Dale
</html>