Project

General

Profile

Download (19 KB) Statistics
| Branch: | Tag: | Revision:
1 a7f908db Scott Ullrich
<?php
2 b46bfcf5 Bill Marquette
/* $Id$ */
3 a7f908db Scott Ullrich
/*
4 f8ac4407 Phil Davis
	pkg.php
5
	Copyright (C) 2013-2015 Electric Sheep Fencing, LP
6
	Copyright (C) 2004-2012 Scott Ullrich <sullrich@gmail.com>
7
	All rights reserved.
8
9
	Redistribution and use in source and binary forms, with or without
10
	modification, are permitted provided that the following conditions are met:
11
12
	1. Redistributions of source code must retain the above copyright notice,
13
	   this list of conditions and the following disclaimer.
14
15
	2. Redistributions in binary form must reproduce the above copyright
16
	   notice, this list of conditions and the following disclaimer in the
17
	   documentation and/or other materials provided with the distribution.
18
19
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
20
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
21
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
23
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28
	POSSIBILITY OF SUCH DAMAGE.
29 a7f908db Scott Ullrich
*/
30 1d333258 Scott Ullrich
/*
31
	pfSense_MODULE:	pkgs
32
*/
33 a7f908db Scott Ullrich
34 6b07c15a Matthew Grooms
##|+PRIV
35
##|*IDENT=page-package-settings
36
##|*NAME=Package: Settings page
37
##|*DESCR=Allow access to the 'Package: Settings' page.
38
##|*MATCH=pkg.php*
39
##|-PRIV
40
41 e4bf1c19 Colin Smith
require_once("guiconfig.inc");
42
require_once("pkg-utils.inc");
43 a7f908db Scott Ullrich
44
function gentitle_pkg($pgname) {
45 e3c4b6b7 Scott Ullrich
	global $config;
46
	return $config['system']['hostname'] . "." . $config['system']['domain'] . " - " . $pgname;
47 a7f908db Scott Ullrich
}
48
49 f8ac4407 Phil Davis
function domTT_title($title_msg) {
50 05a42cce Marcello Coutinho
	print "onmouseout=\"this.style.color = ''; domTT_mouseout(this, event);\" onmouseover=\"domTT_activate(this, event, 'content', '".gettext($title_msg)."', 'trail', true, 'delay', 0, 'fade', 'both', 'fadeMax', 93, 'styleClass', 'niceTitle');\"";
51
}
52
53 98bcf1f8 Scott Ullrich
$xml = $_REQUEST['xml'];
54 a7f908db Scott Ullrich
55 f8ac4407 Phil Davis
if ($xml == "") {
56 ef2029df Scott Ullrich
	print_info_box_np(gettext("ERROR: No package defined."));
57 b000f96f Scott Ullrich
	exit;
58 a7f908db Scott Ullrich
} else {
59 f8ac4407 Phil Davis
	if (file_exists("/usr/local/pkg/" . $xml)) {
60 b000f96f Scott Ullrich
		$pkg = parse_xml_config_pkg("/usr/local/pkg/" . $xml, "packagegui");
61 f8ac4407 Phil Davis
	} else {
62 98bcf1f8 Scott Ullrich
		echo "File not found " . htmlspecialchars($xml);
63
		exit;
64
	}
65 a7f908db Scott Ullrich
}
66
67 f8ac4407 Phil Davis
if ($pkg['donotsave'] <> "") {
68 6f3d2063 Renato Botelho
	header("Location: pkg_edit.php?xml=" . $xml);
69 b000f96f Scott Ullrich
	exit;
70 3eaeb703 Scott Ullrich
}
71
72 7c172009 Scott Ullrich
if ($pkg['include_file'] != "") {
73
	require_once($pkg['include_file']);
74
}
75
76 f8ac4407 Phil Davis
if ($_REQUEST['startdisplayingat']) {
77 32c477c5 Scott Ullrich
	$startdisplayingat = $_REQUEST['startdisplayingat'];
78 f8ac4407 Phil Davis
}
79 32c477c5 Scott Ullrich
80 f8ac4407 Phil Davis
if ($_REQUEST['display_maximum_rows']) {
81
	if ($_REQUEST['display_maximum_rows']) {
82 3ca50a15 Scott Ullrich
		$display_maximum_rows = $_REQUEST['display_maximum_rows'];
83 f8ac4407 Phil Davis
	}
84
}
85 3ca50a15 Scott Ullrich
86 ce696feb Colin Smith
$evaledvar = $config['installedpackages'][xml_safe_fieldname($pkg['name'])]['config'];
87 e3c4b6b7 Scott Ullrich
88 05a42cce Marcello Coutinho
if ($_GET['act'] == "update") {
89 f8ac4407 Phil Davis
90
	if (is_array($config['installedpackages'][$pkg['name']]) && $pkg['name'] != "" && $_REQUEST['ids'] !="") {
91
		#get current values
92
		$current_values=$config['installedpackages'][$pkg['name']]['config'];
93
		#get updated ids
94
		parse_str($_REQUEST['ids'], $update_list);
95
		#sort ids to know what to change
96
		#useful to do not lose data when using sorting and paging
97
		$sort_list=$update_list['ids'];
98
		sort($sort_list);
99
		#apply updates
100
		foreach ($update_list['ids'] as $key=> $value) {
101
			$config['installedpackages'][$pkg['name']]['config'][$sort_list[$key]]=$current_values[$update_list['ids'][$key]];
102
		}
103
		#save current config
104
		write_config();
105
		#sync package
106
		eval ("{$pkg['custom_php_resync_config_command']}");
107
	}
108
	#function called via jquery, no need to continue after save changes.
109
	exit;
110 05a42cce Marcello Coutinho
}
111 e3c4b6b7 Scott Ullrich
if ($_GET['act'] == "del") {
112 f8ac4407 Phil Davis
	// loop through our fieldnames and automatically setup the fieldnames
113
	// in the environment.  ie: a fieldname of username with a value of
114
	// testuser would automatically eval $username = "testuser";
115
	foreach ($evaledvar as $ip) {
116
		if ($pkg['adddeleteeditpagefields']['columnitem']) {
117
			foreach ($pkg['adddeleteeditpagefields']['columnitem'] as $column) {
118
				${xml_safe_fieldname($column['fielddescr'])} = $ip[xml_safe_fieldname($column['fieldname'])];
119
			}
120 ef2029df Scott Ullrich
		}
121 f8ac4407 Phil Davis
	}
122 e3c4b6b7 Scott Ullrich
123 f8ac4407 Phil Davis
	$a_pkg = &$config['installedpackages'][xml_safe_fieldname($pkg['name'])]['config'];
124 e3c4b6b7 Scott Ullrich
125 f8ac4407 Phil Davis
	if ($a_pkg[$_GET['id']]) {
126
		unset($a_pkg[$_GET['id']]);
127
		write_config();
128
		if ($pkg['custom_delete_php_command'] <> "") {
129
			if ($pkg['custom_php_command_before_form'] <> "") {
130
				eval($pkg['custom_php_command_before_form']);
131 8060d89a Scott Ullrich
			}
132 f8ac4407 Phil Davis
			eval($pkg['custom_delete_php_command']);
133
		}
134
		header("Location:  pkg.php?xml=" . $xml);
135
		exit;
136
	}
137 e3c4b6b7 Scott Ullrich
}
138
139 4b5976b5 Scott Ullrich
ob_start();
140
141 d3ab36dc Ermal Lu?i
$iflist = get_configured_interface_with_descr(false, true);
142 ce696feb Colin Smith
$evaledvar = $config['installedpackages'][xml_safe_fieldname($pkg['name'])]['config'];
143 a7f908db Scott Ullrich
144 f8ac4407 Phil Davis
if ($pkg['custom_php_global_functions'] <> "") {
145 ef2029df Scott Ullrich
	eval($pkg['custom_php_global_functions']);
146 f8ac4407 Phil Davis
}
147 194b4e0a Colin Smith
148 f8ac4407 Phil Davis
if ($pkg['custom_php_command_before_form'] <> "") {
149 194b4e0a Colin Smith
	eval($pkg['custom_php_command_before_form']);
150 f8ac4407 Phil Davis
}
151 f9a91638 Scott Ullrich
152 10da4aea k-paulius
$pgtitle = array($pkg['title']);
153 83ddedcd Scott Ullrich
include("head.inc");
154
155 a7f908db Scott Ullrich
?>
156
157
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
158 44507df4 Colin Fleming
<?php include("fbegin.inc"); ?>
159
<script type="text/javascript" src="javascript/domTT/domLib.js"></script>
160
<script type="text/javascript" src="javascript/domTT/domTT.js"></script>
161
<script type="text/javascript" src="javascript/domTT/behaviour.js"></script>
162
<script type="text/javascript" src="javascript/domTT/fadomatic.js"></script>
163
<script type="text/javascript">
164
//<![CDATA[
165
	function setFilter(filtertext) {
166
		jQuery('#pkg_filter').val(filtertext);
167
		document.pkgform.submit();
168 f8ac4407 Phil Davis
	}
169 44507df4 Colin Fleming
170
	<?php
171 f8ac4407 Phil Davis
		if ($pkg['adddeleteeditpagefields']['movable']) {
172 44507df4 Colin Fleming
	?>
173 f8ac4407 Phil Davis
			jQuery(document).ready(function() {
174 44507df4 Colin Fleming
				jQuery('#mainarea table tbody').sortable({
175
					items: 'tr.sortable',
176
					cursor: 'move',
177
					distance: 10,
178
					opacity: 0.8,
179 6c07db48 Phil Davis
					helper: function(e, ui) {
180 f8ac4407 Phil Davis
						ui.children().each(function() {
181
							jQuery(this).width(jQuery(this).width());
182 44507df4 Colin Fleming
						});
183 f8ac4407 Phil Davis
					return ui;
184 44507df4 Colin Fleming
					},
185
				});
186
			});
187
			function save_changes_to_xml(xml) {
188 6c07db48 Phil Davis
				var ids=jQuery('#mainarea table tbody').sortable('serialize', {key:"ids[]"});
189
				var strloading="<img src='/themes/<?= $g['theme']; ?>/images/misc/loader.gif' alt='loader' /> " + "<?=gettext('Saving changes...');?>";
190 f8ac4407 Phil Davis
				if (confirm("<?=gettext("Do you really want to save changes?");?>")) {
191
					jQuery.ajax({
192
						type: 'get',
193
						cache: false,
194
						url: "<?=$_SERVER['SCRIPT_NAME'];?>",
195
						data: {xml:'<?=$xml?>', act:'update', ids: ids},
196
						beforeSend: function() {
197
							jQuery('#savemsg').empty().html(strloading);
198
						},
199
						error: function(data) {
200
							jQuery('#savemsg').empty().html('Error:' + data);
201
						},
202
						success: function(data) {
203
							jQuery('#savemsg').empty().html(data);
204
						}
205
					});
206
				}
207 44507df4 Colin Fleming
			}
208 f8ac4407 Phil Davis
	<?php
209 44507df4 Colin Fleming
		}
210
	?>
211
//]]>
212
</script>
213 5aa9a4f2 Scott Ullrich
<form action="pkg.php" name="pkgform" method="get">
214 44507df4 Colin Fleming
<input type='hidden' name='xml' value='<?=$_REQUEST['xml']?>' />
215 f8ac4407 Phil Davis
<?php if ($_GET['savemsg'] <> "") $savemsg = htmlspecialchars($_GET['savemsg']); ?>
216 05a42cce Marcello Coutinho
<div id="savemsg"></div>
217 a7f908db Scott Ullrich
<?php if ($savemsg) print_info_box($savemsg); ?>
218 44507df4 Colin Fleming
<table width="100%" border="0" cellpadding="0" cellspacing="0" summary="package settings">
219 7c061036 Scott Ullrich
<?php
220 f8ac4407 Phil Davis
	if ($pkg['tabs'] <> "") {
221
		$tab_array = array();
222
		foreach ($pkg['tabs']['tab'] as $tab) {
223
			if ($tab['tab_level']) {
224
				$tab_level = $tab['tab_level'];
225
			} else {
226
				$tab_level = 1;
227
			}
228
			if (isset($tab['active'])) {
229
				$active = true;
230
			} else {
231
				$active = false;
232
			}
233
			if (isset($tab['no_drop_down'])) {
234
				$no_drop_down = true;
235
			}
236
			$urltmp = "";
237
			if ($tab['url'] <> "") {
238
				$urltmp = $tab['url'];
239
			}
240
			if ($tab['xml'] <> "") {
241
				$urltmp = "pkg_edit.php?xml=" . $tab['xml'];
242
			}
243
244
			$addresswithport = getenv("HTTP_HOST");
245
			$colonpos = strpos($addresswithport, ":");
246
			if ($colonpos !== False) {
247
				//my url is actually just the IP address of the pfsense box
248
				$myurl = substr($addresswithport, 0, $colonpos);
249
			} else {
250
				$myurl = $addresswithport;
251
			}
252
			// eval url so that above $myurl item can be processed if need be.
253
			$url = str_replace('$myurl', $myurl, $urltmp);
254
255
			$tab_array[$tab_level][] = array(
256
				$tab['text'],
257
				$active,
258
				$url
259
			);
260
		}
261
262
		ksort($tab_array);
263
		foreach ($tab_array as $tab) {
264
			echo '<tr><td>';
265
			display_top_tabs($tab, $no_drop_down);
266
			echo '</td></tr>';
267
		}
268
	}
269 7c061036 Scott Ullrich
?>
270 44507df4 Colin Fleming
<tr><td><div id="mainarea"><table width="100%" border="0" cellpadding="0" cellspacing="0" summary="main area">
271 32c477c5 Scott Ullrich
	<tr>
272
		<td class="tabcont">
273 44507df4 Colin Fleming
			<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="tabs">
274 32c477c5 Scott Ullrich
<?php
275 f8ac4407 Phil Davis
	/* Handle filtering bar A-Z */
276
	$include_filtering_inputbox = false;
277
	$colspan = 0;
278
	if ($pkg['adddeleteeditpagefields']['columnitem'] <> "") {
279
		foreach ($pkg['adddeleteeditpagefields']['columnitem'] as $column) {
280
			$colspan++;
281
		}
282
	}
283
	if ($pkg['fields']['field']) {
284
		// First find the sorting type field if it exists
285
		foreach ($pkg['fields']['field'] as $field) {
286
			if ($field['type'] == "sorting") {
287
				if (isset($field['include_filtering_inputbox'])) {
288
					$include_filtering_inputbox = true;
289
				}
290
				if ($display_maximum_rows < 1) {
291
					if ($field['display_maximum_rows']) {
292
						$display_maximum_rows = $field['display_maximum_rows'];
293
					}
294
				}
295
				echo "<tr><td class='listhdrr' colspan='$colspan' align='center'>";
296
				echo "Filter by: ";
297
				$isfirst = true;
298
				for ($char = 65; $char < 91; $char++) {
299
					if (!$isfirst) {
300
						echo " | ";
301
					}
302
					echo "<a href=\"#\" onclick=\"setFilter('" . chr($char) . "');\">" . chr($char) . "</a>";
303
					$isfirst = false;
304
				}
305
				echo "</td></tr>";
306
				echo "<tr><td class='listhdrr' colspan='$colspan' align='center'>";
307
				if ($field['sortablefields']) {
308
					echo "Filter field: <select name='pkg_filter_type'>";
309
					foreach ($field['sortablefields']['item'] as $si) {
310
						if ($si['name'] == $_REQUEST['pkg_filter_type']) {
311
							$SELECTED = "selected=\"selected\"";
312
						} else {
313
							$SELECTED = "";
314 32c477c5 Scott Ullrich
						}
315 f8ac4407 Phil Davis
						echo "<option value='{$si['name']}' {$SELECTED}>{$si['name']}</option>";
316 32c477c5 Scott Ullrich
					}
317 f8ac4407 Phil Davis
					echo "</select>";
318 32c477c5 Scott Ullrich
				}
319 f8ac4407 Phil Davis
				if ($include_filtering_inputbox) {
320
					echo "&nbsp;&nbsp;Filter text: <input id='pkg_filter' name='pkg_filter' value='" . $_REQUEST['pkg_filter'] . "' /> <input type='submit' value='Filter' />";
321
				}
322
				echo "</td></tr><tr><td><font size='-3'>&nbsp;</font></td></tr>";
323
			}
324
		}
325
	}
326 32c477c5 Scott Ullrich
?>
327
				<tr>
328
<?php
329 f8ac4407 Phil Davis
	if ($display_maximum_rows) {
330 6c07db48 Phil Davis
		$totalpages = ceil(round((count($evaledvar) / $display_maximum_rows), 9));
331 f8ac4407 Phil Davis
		$page = 1;
332
		$tmpcount = 0;
333
		$tmppp = 0;
334
		if (is_array($evaledvar)) {
335
			foreach ($evaledvar as $ipa) {
336
				if ($tmpcount == $display_maximum_rows) {
337
					$page++;
338 37da0c50 Scott Ullrich
					$tmpcount = 0;
339
				}
340 f8ac4407 Phil Davis
				if ($tmppp == $startdisplayingat) {
341
					break;
342 32c477c5 Scott Ullrich
				}
343 f8ac4407 Phil Davis
				$tmpcount++;
344
				$tmppp++;
345
			}
346
		}
347
		echo "<tr><td colspan='" . count($pkg['adddeleteeditpagefields']['columnitem']) . "'>";
348
		echo "<table width='100%' summary=''>";
349
		echo "<tr>";
350
		echo "<td align='left'>Displaying page $page of $totalpages</b></td>";
351
		echo "<td align='right'>Rows per page: <select onchange='document.pkgform.submit();' name='display_maximum_rows'>";
352 6c07db48 Phil Davis
		for ($x = 0; $x < 250; $x++) {
353 f8ac4407 Phil Davis
			if ($x == $display_maximum_rows) {
354
				$SELECTED = "selected=\"selected\"";
355
			} else {
356
				$SELECTED = "";
357
			}
358
			echo "<option value='$x' $SELECTED>$x</option>\n";
359
			$x = $x + 4;
360
		}
361
		echo "</select></td></tr>";
362
		echo "</table>";
363
		echo "</td></tr>";
364
	}
365
	$cols = 0;
366
	if ($pkg['adddeleteeditpagefields']['columnitem'] <> "") {
367
		foreach ($pkg['adddeleteeditpagefields']['columnitem'] as $column) {
368
			echo "<td class=\"listhdrr\">" . $column['fielddescr'] . "</td>";
369
			$cols++;
370
		}
371
	}
372
?>
373
				</tr>
374
<?php
375
	$i = 0;
376 6c07db48 Phil Davis
	$pagination_counter = 0;
377 f8ac4407 Phil Davis
	if ($evaledvar) {
378
		foreach ($evaledvar as $ip) {
379
			if ($startdisplayingat) {
380
				if ($i < $startdisplayingat) {
381
					$i++;
382
					continue;
383 32c477c5 Scott Ullrich
				}
384 f8ac4407 Phil Davis
			}
385
			if ($_REQUEST['pkg_filter']) {
386
				// Handle filtered items
387
				if ($pkg['fields']['field'] && !$filter_regex) {
388
					// First find the sorting type field if it exists
389
					foreach ($pkg['fields']['field'] as $field) {
390
						if ($field['type'] == "sorting") {
391
							if ($field['sortablefields']['item']) {
392
								foreach ($field['sortablefields']['item'] as $sf) {
393
									if ($sf['name'] == $_REQUEST['pkg_filter_type']) {
394
										$filter_fieldname = $sf['fieldname'];
395
										#Use a default regex on sortable fields when none is declared
396
										if ($sf['regex']) {
397
											$filter_regex = str_replace("%FILTERTEXT%", $_REQUEST['pkg_filter'], trim($sf['regex']));
398
										} else {
399
											$filter_regex = "/{$_REQUEST['pkg_filter']}/i";
400 32c477c5 Scott Ullrich
										}
401
									}
402
								}
403
							}
404
						}
405
					}
406 f8ac4407 Phil Davis
				}
407
				// Do we have something to filter on?
408
				unset($filter_matches);
409
				if ($pkg['adddeleteeditpagefields']['columnitem'] <> "") {
410
					foreach ($pkg['adddeleteeditpagefields']['columnitem'] as $column) {
411
						$fieldname = $ip[xml_safe_fieldname($column['fieldname'])];
412
						if ($column['fieldname'] == $filter_fieldname) {
413
							if ($filter_regex) {
414
								//echo "$filter_regex - $fieldname<p/>";
415
								preg_match($filter_regex, $fieldname, $filter_matches);
416
								break;
417 32c477c5 Scott Ullrich
							}
418
						}
419
					}
420
				}
421 f8ac4407 Phil Davis
				if (!$filter_matches) {
422
					$i++;
423
					continue;
424
				}
425
			}
426
			if ($pkg['adddeleteeditpagefields']['movable']) {
427
				echo "<tr valign=\"top\" class=\"sortable\" id=\"id_{$i}\">\n";
428
			} else {
429
				echo "<tr valign=\"top\">\n";
430
			}
431
			if ($pkg['adddeleteeditpagefields']['columnitem'] <> "") {
432
				foreach ($pkg['adddeleteeditpagefields']['columnitem'] as $column) {
433
					if ($column['fieldname'] == "description") {
434
						$class = "listbg";
435
					} else {
436
						$class = "listlr";
437
					}
438 32c477c5 Scott Ullrich
?>
439 f8ac4407 Phil Davis
					<td class="<?=$class;?>" ondblclick="document.location='pkg_edit.php?xml=<?=$xml?>&amp;act=edit&amp;id=<?=$i;?>';">
440 32c477c5 Scott Ullrich
<?php
441 f8ac4407 Phil Davis
					$fieldname = $ip[xml_safe_fieldname($column['fieldname'])];
442
					#Check if columnitem has a type field declared
443
					if ($column['type'] == "checkbox") {
444
						if ($fieldname == "") {
445
							echo gettext("No");
446
						} else {
447
							echo gettext("Yes");
448
						}
449
					} else if ($column['type'] == "interface") {
450 6c07db48 Phil Davis
						echo $column['prefix'] . $iflist[$fieldname] . $column['suffix'];
451 f8ac4407 Phil Davis
					} else {
452
						#Check if columnitem has an encoding field declared
453
						if ($column['encoding'] == "base64") {
454 6c07db48 Phil Davis
							echo $column['prefix'] . base64_decode($fieldname) . $column['suffix'];
455 f8ac4407 Phil Davis
						#Check if there is a custom info to show when $fieldname is not empty
456
						} else if ($column['listmodeon'] && $fieldname != "") {
457
							echo $column['prefix'] . gettext($column['listmodeon']). $column['suffix'];
458
						#Check if there is a custom info to show when $fieldname is empty
459
						} else if ($column['listmodeoff'] && $fieldname == "") {
460
							echo $column['prefix'] .gettext($column['listmodeoff']). $column['suffix'];
461
						} else {
462
							echo $column['prefix'] . $fieldname ." ". $column['suffix'];
463
						}
464 32c477c5 Scott Ullrich
					}
465
?>
466 f8ac4407 Phil Davis
					</td>
467 32c477c5 Scott Ullrich
<?php
468 f8ac4407 Phil Davis
				} // foreach columnitem
469
			} // if columnitem
470
?>
471
					<td valign="middle" class="list nowrap">
472
						<table border="0" cellspacing="0" cellpadding="1" summary="icons">
473
							<tr>
474
<?php
475
			#Show custom description to edit button if defined
476
			$edit_msg=($pkg['adddeleteeditpagefields']['edittext']?$pkg['adddeleteeditpagefields']['edittext']:"Edit this item");
477
?>
478
								<td valign="middle"><a href="pkg_edit.php?xml=<?=$xml?>&amp;act=edit&amp;id=<?=$i;?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0" <?=domTT_title($edit_msg)?> alt="edit" /></a></td>
479
<?php
480
			#Show custom description to delete button if defined
481
			$delete_msg=($pkg['adddeleteeditpagefields']['deletetext']?$pkg['adddeleteeditpagefields']['deletetext']:"Delete this item");
482
?>
483
								<td valign="middle"><a href="pkg.php?xml=<?=$xml?>&amp;act=del&amp;id=<?=$i;?>" onclick="return confirm('<?=gettext("Do you really want to delete this item?");?>')"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" <?=domTT_title($delete_msg)?> alt="delete" /></a></td>
484
							</tr>
485
						</table>
486
					</td>
487
<?php
488
			echo "</tr>\n"; // Pairs with an echo tr some way above 
489
			// Handle pagination and display_maximum_rows
490
			if ($display_maximum_rows) {
491
				if ($pagination_counter == ($display_maximum_rows-1) or
492 8141416f k-paulius
				    $i == (count($evaledvar)-1)) {
493 f8ac4407 Phil Davis
					$colcount = count($pkg['adddeleteeditpagefields']['columnitem']);
494
					$final_footer = "";
495
					$final_footer .= "<tr><td colspan='$colcount'>";
496 6c07db48 Phil Davis
					$final_footer .= "<table width='100%' summary=''><tr>";
497
					$final_footer .= "<td align='left'>";
498 f8ac4407 Phil Davis
					$startingat = $startdisplayingat - $display_maximum_rows;
499
					if ($startingat > -1) {
500 6c07db48 Phil Davis
						$final_footer .= "<a href='pkg.php?xml=" . $_REQUEST['xml'] . "&amp;startdisplayingat={$startingat}&amp;display_maximum_rows={$display_maximum_rows}'>";
501 f8ac4407 Phil Davis
					} else if ($startdisplayingat > 1) {
502 6c07db48 Phil Davis
						$final_footer .= "<a href='pkg.php?xml=" . $_REQUEST['xml'] . "&amp;startdisplayingat=0&amp;display_maximum_rows={$display_maximum_rows}'>";
503 32c477c5 Scott Ullrich
					}
504 6c07db48 Phil Davis
					$final_footer .= "<font size='2'><< Previous page</font></a>";
505 f8ac4407 Phil Davis
					if ($tmppp + $display_maximum_rows > count($evaledvar)) {
506
						$endingrecord = count($evaledvar);
507
					} else {
508
						$endingrecord = $tmppp + $display_maximum_rows;
509
					}
510 6c07db48 Phil Davis
					$final_footer .= "</td><td align='center'>";
511 f8ac4407 Phil Davis
					$tmppp++;
512 6c07db48 Phil Davis
					$final_footer .= "<font size='2'>Displaying {$tmppp} - {$endingrecord} / " . count($evaledvar) . " records";
513
					$final_footer .= "</font></td><td align='right'>&nbsp;";
514 f8ac4407 Phil Davis
					if (($i+1) < count($evaledvar)) {
515 6c07db48 Phil Davis
						$final_footer .= "<a href='pkg.php?xml=" . $_REQUEST['xml'] . "&amp;startdisplayingat=" . ($startdisplayingat + $display_maximum_rows) . "&amp;display_maximum_rows={$display_maximum_rows}'>";
516 f8ac4407 Phil Davis
					}
517 6c07db48 Phil Davis
					$final_footer .= "<font size='2'>Next page >></font></a>";
518
					$final_footer .= "</td></tr></table></td></tr>";
519 f8ac4407 Phil Davis
					$i = count($evaledvar);
520
					break;
521 549912e3 Scott Ullrich
				}
522 f8ac4407 Phil Davis
			}
523
			$i++;
524
			$pagination_counter++;
525
		} // foreach evaledvar
526
	} // if evaledvar
527 32c477c5 Scott Ullrich
?>
528
				<tr>
529
					<td colspan="<?=$cols?>"></td>
530
					<td>
531 44507df4 Colin Fleming
						<table border="0" cellspacing="0" cellpadding="1" summary="icons">
532 32c477c5 Scott Ullrich
							<tr>
533 f8ac4407 Phil Davis
<?php
534
	#Show custom description to add button if defined
535
	$add_msg=($pkg['adddeleteeditpagefields']['addtext']?$pkg['adddeleteeditpagefields']['addtext']:"Add a new item");
536
?>
537 44507df4 Colin Fleming
								<td valign="middle"><a href="pkg_edit.php?xml=<?=$xml?>&amp;id=<?=$i?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" <?=domTT_title($add_msg)?> alt="add" /></a></td>
538 f8ac4407 Phil Davis
<?php
539
	#Show description button and info if defined
540
	if ($pkg['adddeleteeditpagefields']['description']) {
541
?>
542 44507df4 Colin Fleming
								<td valign="middle"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_info_pkg.gif" width="17" height="17" border="0" <?=domTT_title($pkg['adddeleteeditpagefields']['description'])?> alt="info" /></td>
543 f8ac4407 Phil Davis
<?php
544
	}
545
?>
546 32c477c5 Scott Ullrich
							</tr>
547
						</table>
548
					</td>
549
				</tr>
550 37da0c50 Scott Ullrich
				<?=$final_footer?>
551 f8ac4407 Phil Davis
<?php
552
	#Show save button only when movable is defined
553
	if ($pkg['adddeleteeditpagefields']['movable']) {
554
?>
555
				<tr>
556
					<td><input class="formbtn" type="button" value="Save" name="Submit" onclick="save_changes_to_xml('<?=$xml?>')" /></td>
557
				</tr>
558
<?php
559
	}
560
?>
561
			</table>
562
		</td>
563
	</tr>
564
</table></div></td></tr>
565 a7f908db Scott Ullrich
</table>
566 3d335c4d Scott Ullrich
567 a7f908db Scott Ullrich
</form>
568
<?php include("fend.inc"); ?>
569 323d040b Scott Ullrich
570 b000f96f Scott Ullrich
<?php
571
	echo "<!-- filter_fieldname: {$filter_fieldname} -->";
572
	echo "<!-- filter_regex: {$filter_regex} -->";
573
?>
574
575 a7f908db Scott Ullrich
</body>
576
</html>