eGroupware Installation Issues [message #34206] |
Fri, 13 October 2006 18:11 |
mbeazley
Messages: 10 Registered: September 2006
Karma: 0
|
Junior Member |
|
|
Have FUDForum up & running within eGroupware. I'm running Ubuntu with XAMP providing my Apache, MySQL, PHP, & Perl. Overall I'm very pleased.
When I try to access Theme Management through the Admin Control Panel I get the following WARNING:
Warning: file_get_contents(/var/lib/egroupware/default/files/fudforum/3814588639//th m/default/i18n/.svn/locale) [function.file-get-contents]: failed to open stream: No such file or directory in /opt/lampp/htdocs/egroupware/fudforum/3814588639/adm/admthemes.php on line 244
Here's the content of admthemes.php:
<?php
/************************************************************************** *
* copyright : (C) 2001-2003 Advanced Internet Designs Inc.
* email : forum(at)prohost(dot)org
* $Id: admthemes.php 15658 2004-07-08 14:25:47Z iliaa $
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*************************************************************************** /
function get_func_usage(&$toks)
{
foreach ($toks as $k => $tok) {
if (is_array($tok) && $tok[0] == T_FUNCTION) {
$fc = is_array($toks[$k+2]) ? $toks[$k+2][1] : $toks[$k+3][1];
$func[$fc] = -1;
$func_pos[$fc] = $k;
}
}
if (!isset($func)) {
return 0;
}
foreach ($toks as $tok) {
if (is_array($tok) && $tok[0] == T_STRING && isset($func[$tok[1]])) {
$func[$tok[1]]++;
}
}
krsort($func);
$job = 0;
foreach ($func as $k => $v) {
if ($v) {
break;
}
$job = 1;
$i = 0;
$j = $func_pos[$k];
$n = count($toks);
for ($j; $j < $n; $j++) {
if ($toks[$j] === '{') {
++$i;
} else if ($toks[$j] === '}') {
--$i;
if ($i < 1) {
break;
}
}
unset($toks[$j]);
}
unset($toks[$j]);
}
return $job;
}
function clean_code($path, $toks)
{
$old_size = filesize($path);
$r = '';
foreach ($toks as $k => $tok) {
if (is_array($tok)) {
switch ($tok[0]) {
case T_COMMENT:
case T_ML_COMMENT:
case T_WHITESPACE:
break;
case T_FUNCTION:
case T_CLASS:
case T_NEW:
case T_ECHO:
case T_RETURN:
$r .= $tok[1].' ';
break;
case T_AS:
case T_LOGICAL_OR:
case T_EXTENDS:
$r .= ' '.$tok[1].' ';
break;
default:
$r .= $tok[1];
}
} else {
$r .= $tok;
}
}
if (!($fp = fopen($path, 'w'))) {
exit("unable to write to ".$path."<br>\n");
}
fwrite($fp, $r);
fclose($fp);
$saved = ($old_size - strlen($r));
return $saved;
}
$is_tok = extension_loaded('tokenizer');
require('./GLOBALS.php'); fud_egw();
fud_use('widgets.inc', true);
fud_use('adm.inc', true);
fud_use('compiler.inc', true);
fud_use('theme.inc', true);
$edit = isset($_GET['edit']) ? (int)$_GET['edit'] : (isset($_POST['edit']) ? (int)$_POST['edit'] : '');
/* Limit theme names to sane characters */
if (isset($_POST['newname'])) {
$_POST['newname'] = preg_replace('![^A-Za-z0-9_]!', '_', $_POST['newname']);
}
if (isset($_POST['newname']) && !q_singleval("SELECT id FROM ".$DBHOST_TBL_PREFIX."themes WHERE name='".addslashes($_POST['newname'])."'")) {
$root = $DATA_DIR . 'thm/';
$root_nn = $root . preg_replace('![^A-Za-z0-9_]!', '_', $_POST['newname']);
$u = umask(0);
if (!@is_dir($root_nn) && !@mkdir($root_nn, 0777)) {
exit('can\'t create ('.$root_nn.')<br>');
}
$ts = $_POST['base_template_set'] == 'path_info' ? 'path_info/' : 'default/';
fudcopy($root . $ts, $root_nn, '!.*!', true);
umask($u);
}
if (isset($_POST['thm_theme']) && !$edit) {
$thm = new fud_theme;
$thm->add();
compile_all($thm->theme, $thm->lang, $thm->name);
} else if (isset($_POST['edit'])) {
$thm = new fud_theme;
if ($edit == 1) {
$thm->name = 'default';
}
$thm->sync((int)$_POST['edit']);
compile_all($thm->theme, $thm->lang, $thm->name);
$edit = '';
} else if (isset($_GET['rebuild']) && ($data = db_saq('SELECT theme, lang, name FROM '.$DBHOST_TBL_PREFIX.'themes WHERE id='.(int)$_GET['rebuild']))) {
compile_all($data[0], $data[1], $data[2]);
} else if (isset($_GET['edit']) && ($c = db_arr_assoc('SELECT * FROM '.$DBHOST_TBL_PREFIX.'themes WHERE id='.$edit))) {
foreach ($c as $k => $v) {
${'thm_'.$k} = $v;
}
$thm_t_default = $c['theme_opt'] & 2;
$thm_enabled = $c['theme_opt'] & 1;
} else if (isset($_GET['del']) && (int)$_GET['del'] > 1) {
fud_theme::delete((int)$_GET['del']);
} else if (isset($_GET['optimize']) && $is_tok && ($t_name = q_singleval('SELECT name FROM '.$DBHOST_TBL_PREFIX.'themes WHERE id='.(int)$_GET['optimize']))) {
/* optimize *.php files */
$path = $WWW_ROOT_DISK . 'theme/' . $t_name;
$dir = opendir($path);
$path .= '/';
while ($f = readdir($dir)) {
if ($f == '.' || $f == '..') continue;
if (@is_file($path . $f) && substr($f, -4) == '.php') {
$toks = token_get_all(file_get_contents($path . $f));
while (get_func_usage($toks));
clean_code($path . $f, $toks);
}
}
closedir($dir);
/* optimize *.inc files */
$path = $WWW_ROOT_DISK . 'include/theme/' . $t_name;
$dir = opendir($path);
$path .= '/';
while ($f = readdir($dir)) {
if ($f == '.' || $f == '..') continue;
if (@is_file($path . $f) && substr($f, -4) == '.inc') {
clean_code($path . $f, token_get_all(file_get_contents($path . $f)));
}
}
closedir($dir);
}
if (!$edit) {
$tmp = new fud_theme;
$c = get_object_vars($tmp);
foreach ($c as $k => $v) {
${'thm_'.$k} = '';
}
$thm_locale = 'english';
$thm_pspell_lang = 'en';
$thm_t_default = $thm_enabled = 0;
}
require($WWW_ROOT_DISK . 'adm/admpanel.php');
?>
<h2>Theme Management</h2>
<form name="admthm" action="admthemes.php" method="post">
<?php echo _hs; ?>
<table class="datatable solidtable">
<tr class="field">
<td>Name:</td>
<td>
<?php
if ($edit && $edit == 1) {
echo htmlspecialchars($thm_name);
} else {
echo '<input type="text" name="thm_name" value="'.htmlspecialchars($thm_name).'">';
}
?>
</td>
</tr>
<tr class="field">
<td valign=top>Template Set:</td>
<td>
<select name="thm_theme">
<?php
$dp = opendir($DATA_DIR . '/thm');
while ($de = readdir($dp)) {
if ($de == '.' || $de == '..') continue;
$dr = $DATA_DIR . '/thm/' . $de;
if ($de == 'CVS' || !@is_dir($dr) || !@is_dir($dr.'/tmpl')) {
continue;
}
echo '<option'.($thm_theme == $de ? ' selected' : '').'>'.$de.'</option>';
}
closedir($dp);
?></select>
</td>
</tr>
<tr class="field">
<td>Language</td>
<td>
<?php
$dp = opendir($DATA_DIR . '/thm/default/i18n');
$selopt = '';
if (!$thm_lang) {
$thm_lang = 'english';
}
while ($de = readdir($dp)) {
if ($de == '.' || $de == '..') continue;
$dr = $DATA_DIR . '/thm/default/i18n/' . $de;
if ($de == 'CVS' || !@is_dir($dr)) {
continue;
}
$selopt .= '<option'.($thm_lang == $de ? ' selected' : '').'>'.$de.'</option>';
$locales[$de]['locale'] = trim(file_get_contents($dr . '/locale'));
$pspell_file = $dr . '/pspell_lang';
$locales[$de]['pspell_lang'] = @file_exists($pspell_file) ? trim(file_get_contents($pspell_file)) : 'en';
}
closedir($dp);
$cases = '';
foreach($locales as $k => $v) {
$cases .= "case '$k': document.admthm.thm_locale.value = '".$v['locale']."'; ";
$cases .= "document.admthm.thm_pspell_lang.value='".$v['pspell_lang']."'; ";
$cases .= "break;\n";
}
?>
<script>
function update_locale()
{
switch (document.admthm.thm_lang.value) {
<?php echo $cases; ?>
}
}
</script>
<select name="thm_lang" onChange="javascript: update_locale();">
<?php echo $selopt; ?>
</select>
</td>
</tr>
<tr class="field">
<td>Locale:</td>
<td><input type="text" name="thm_locale" value="<?php echo htmlspecialchars($thm_locale); ?>" size=7></td>
</tr>
<tr class="field">
<td>pSpell Language:</td>
<td>
<input type="text" name="thm_pspell_lang" value="<?php echo htmlspecialchars($thm_pspell_lang); ?>" size=4>
[<a href="javascript://" onClick="javascript: document.admthm.thm_pspell_lang.value=''">disable</a>]
</td>
</tr>
<tr class="field">
<td colspan=2>
<?php draw_checkbox('thm_t_default', '2', $thm_t_default);?> Default <?php draw_checkbox('thm_enabled', '1', $thm_enabled); ?> Enabled
</td>
</tr>
<tr class="fieldaction">
<?php if (!$edit) { ?>
<td colspan=2 align=right><input type="submit" name="btn_submit" value="Add"></td>
<?php } else { ?>
<td colspan=2 align=right>
<input type="submit" name="btn_cancel" value="Cancel">
<input type="submit" name="btn_update" value="Update">
</td>
<?php } ?>
</tr>
</table>
<input type="hidden" name="prevloaded" value="1">
<input type="hidden" name="edit" value="<?php echo $edit; ?>">
</form>
<form method="post">
<table class="datatable solidtable">
<tr class="field"><td colspan=2>Create New Template Set</td></tr>
<tr class="field">
<td>Base Template Set:</td>
<td>
<select name="base_template_set">
<option value="default">Default</option>
<option value="path_info">Path Info</option>
</select></td>
</tr>
<tr class="field">
<td>Name</td>
<td><input type="text" name="newname"></td>
</tr>
<tr class="fieldaction">
<td colspan=2 align=right><input type="submit" name="btn_submit" value="Create"></td>
</tr>
</table>
<?php echo _hs; ?>
</form>
<table class="resulttable fulltable">
<tr class="resulttopic">
<td>Name</td>
<td>Theme</td>
<td>Language</td>
<td>Locale</td>
<td>pSpell Lang</td>
<td>Enabled</td>
<td>Default</td>
<td>Action</td>
</tr>
<?php
$i = 1;
$c = uq('SELECT * FROM '.$DBHOST_TBL_PREFIX.'themes ORDER BY id');
while ($r = db_rowobj($c)) {
if ($edit == $r->id) {
$bgcolor = ' class="resultrow1"';
} else {
$bgcolor = ($i++%2) ? ' class="resultrow2"' : ' class="resultrow1"';
}
echo '<tr '.$bgcolor.'>
<td>'.htmlspecialchars($r->name).'</td>
<td>'.htmlspecialchars($r->theme).'</td>
<td>'.htmlspecialchars($r->lang).'</td>
<td>'.htmlspecialchars($r->locale).'</td>
<td>'.(!$r->pspell_lang ? '<font color="green">disabled</font> ' : htmlspecialchars($r->pspell_lang)).'</td>
<td>'.($r->theme_opt & 1 ? 'Yes' : '<font color="green">No</font>').'</td>
<td>'.($r->theme_opt & 2 ? 'Yes' : '<font color="green">No</font>').'</td>
<td nowrap>[<a href="admthemes.php?'._rsidl.'&edit='.$r->id.'">Edit</a>] [<a href="admthemes.php?'._rsidl.'&rebuild='.$r->id.'">Rebuild Theme</a>]
'.($is_tok ? '[<a href="admthemes.php?'._rsidl.'&optimize='.$r->id.'">Optimize Theme</a>]' : '').'
'.($r->id != 1 ? '[<a href="admthemes.php?'._rsid.'&del='.$r->id.'">Delete</a>]' : '').'
</td>
</tr>';
}
?>
</table>
<?php require($WWW_ROOT_DISK . 'adm/admclose.php'); ?>
When I access the Template Editor and try to edit 'tmpl' I get the following WARNING:
Warning: opendir(/var/lib/egroupware/default/files/fudforum/3814588639/thm/tmpl/tmpl ) [function.opendir]: failed to open dir: No such file or directory in /opt/lampp/htdocs/egroupware/fudforum/3814588639/adm/tmpllist.php on line 207
Unable to open template directory at: "/var/lib/egroupware/default/files/fudforum/3814588639/thm/tmpl/tmpl"
Here's the contents of /opt/lampp/htdocs/egroupware/fudforum/3814588639/adm/tmpllist.php
<?php
/************************************************************************** *
* copyright : (C) 2001-2003 Advanced Internet Designs Inc.
* email : forum(at)prohost(dot)org
* $Id: tmpllist.php 15658 2004-07-08 14:25:47Z iliaa $
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*************************************************************************** /
@set_time_limit(6000);
require('./GLOBALS.php'); fud_egw();
fud_use('adm.inc', true);
function minimize($file, $maxl)
{
if ($file == $maxl) {
return '';
} else if (($p = strpos($maxl, $file)) !== false) {
return ($p ? str_replace(':'. $file, '', $maxl) : str_replace($file. ':', '', $maxl));
}
return $maxl;
}
function maximize($file, $maxl)
{
return ($maxl ? $maxl . ':' . urlencode($file) : urlencode($file)) . '#'. $file;
}
function fetch_section($data, $file, $section, $type)
{
if ($type == 'MAIN') {
if (($p = strpos($data, '{PAGE: '.$section)) === false) {
$p = strpos($data, '{MAIN_SECTION: '.$section);
$end = '{MAIN_SECTION: END}';
} else {
$end = '{PAGE: END}';
}
} else {
$p = 0;
while (1) {
$p = strpos($data, '{SECTION: '.$section, $p);
if ($p === false) {
exit("Cannot find section '{$section}' inside '{$file}'<br />\n");
}
$p += strlen('{SECTION: '.$section);
if ($data[$p] == ' ' || $data[$p] == '}') {
break;
}
}
$end = '{SECTION: END}';
}
if ($p === false) {
return false;
}
if (($te = strpos($data, '}', $p)) === false) {
return false;
}
$ti = explode(' ', substr($data, $p, ($te - $p)), 3);
if (($ef = strpos($data, $end, $te)) === false) {
return false;
}
$ret['offset'] = ++$te;
$ret['len'] = $ef - $ret['offset'];
$ret['data'] = substr($data, $te, $ret['len']);
if (isset($ti[2]) && ($ti[2] = trim($ti[2]))) {
$ret['comment'] = $ti[2];
}
return $ret;
}
function goto_tmpl($tmpl)
{
global $max_list;
if( !preg_match('!(^|:)'.$tmpl.'!', $max_list) ) $max_list .= ':'.$tmpl;
return $max_list.'#'.$tmpl;
}
$tname = isset($_POST['tname']) ? $_POST['tname'] : (isset($_GET['tname']) ? $_GET['tname'] : '');
$tlang = isset($_POST['tlang']) ? $_POST['tlang'] : (isset($_GET['tlang']) ? $_GET['tlang'] : '');
$edit = isset($_POST['edit']) ? $_POST['edit'] : (isset($_GET['edit']) ? $_GET['edit'] : '');
if (!$tname || !$tlang) {
header('Location: admthemesel.php?ret=tmpllist&'._rsidl);
exit;
}
if (isset($_GET['max_list'])) {
$max_opts[strtok($_GET['max_list'], ':')] = 1;
while (($v = strtok(':'))) {
$max_opts[$v] = 1;
}
$max_list = $_GET['max_list'];
} else {
$max_list = '';
}
if (isset($_GET['fl'])) {
$fl = $_GET['fl'];
$sec = isset($_GET['sec']) ? $_GET['sec'] : '';
$msec = isset($_GET['msec']) ? $_GET['msec'] : '';
} else if (isset($_POST['fl'])) {
$fl = $_POST['fl'];
$sec = isset($_POST['sec']) ? $_POST['sec'] : '';
$msec = isset($_POST['msec']) ? $_POST['msec'] : '';
}
if ($edit) {
if (!isset($fl)) {
exit('Missing template name<br>');
}
$f_path = $GLOBALS['DATA_DIR'].'thm/'.$tname.'/tmpl/'.$fl;
if (!@file_exists($f_path)) {
exit('Non-existent template<br>');
} else if (!($data = @file_get_contents($f_path))) {
exit('Could not open template<br>');
}
$tmpl = $sec ? $sec : $msec;
$tmpl_type = $sec ? 'SECTION' : 'MAIN';
if (!$tmpl) {
exit('Section parameter not avaliable<br>');
}
if (($sdata = fetch_section($data, $f_path, $tmpl, $tmpl_type)) === false) {
exit('Couldn\'t locate template "'.$tmpl.'" inside "'.$f_path.'"<br>');
}
if (!isset($_POST['submitted'])) {
$tmpl_data = $sdata['data'];
} else {
$tmpl_data = $_POST['tmpl_data'];
$data = substr_replace($data, str_replace("\r", '', $tmpl_data), $sdata['offset'], $sdata['len']);
if (!($fp = fopen($f_path, 'wb'))) {
exit('unable to save modifications to "'.$f_path.'"');
}
fwrite($fp, $data);
fclose($fp);
fud_use('compiler.inc', true);
$c = q("SELECT theme FROM ".$GLOBALS['DBHOST_TBL_PREFIX']."themes WHERE theme='".addslashes($tname)."' AND lang='".addslashes($tlang)."'");
while ($r = db_rowarr($c)) {
compile_all($tname, $tlang, $r[0]);
}
unset($c);
$update_ok = 1;
}
$p = 0;
while (($p = strpos($tmpl_data, '{MSG: ', $p)) !== false) {
$p += 6;
$e = strpos($tmpl_data, '}', $p);
$msg_list[] = substr($tmpl_data, $p, ($e - $p));
$p = $e;
}
if (isset($msg_list)) {
$msg_list = ' <font size="-1">[ <a href="#" onClick="javascript: window_open(\'msglist.php?tname='.$tname.'&tlang='.$tlang.'&'._rsid l.'&NO_TREE_LIST=1&msglist='.urlencode(implode(':', $msg_list)).'\', \'tmpl_msg\', 600,300);">Edit Text Messages</a> ]</font>';
}
}
require($WWW_ROOT_DISK . 'adm/admpanel.php');
?>
<script language="JavaScript" src="../lib.js"></script>
<style>
.file_name {
font-weight: bold;
color: #ff0000;
font-size: small;
text-decoration: none;
}
.msec {
color: #bb0088;
font-size: small;
text-decoration: underline;
}
.sec {
color: #446644;
font-size: small;
text-decoration: underline;
}
.deps {
color: #00AA00;
font-size: small;
text-decoration: dashed;
}
.depson {
color: #CC6600;
font-size: small;
text-decoration: dashed;
}
</style>
<table width="100%" border=1 cellspacing=2 cellpadding=2>
<tr>
<td nowrap>
<?php
$path = $DATA_DIR . 'thm/' . $tname . '/tmpl';
$pathl = $path . '/';
if (!($dp = opendir($path))) {
exit('Unable to open template directory at: "'.$path.'"<br>');
}
while ($f = readdir($dp)) {
if ($f == '.' || $f == '..') continue;
if (substr($f, -5) != '.tmpl') {
continue;
}
$data = file_get_contents($pathl . $f);
if ($f == 'footer.tmpl' || $f == 'header.tmpl') {
$file = $f;
} else {
/* fetch file name */
if (($p = strpos($data, '{PHP_FILE: input: ')) === false) {
continue;
}
$p = strpos($data, '; output: ', $p) + 10;
if ($data[$p] == '@' || $data[$p] == '!') {
++$p;
}
$file = substr($data, $p, (strpos($data, ';', $p) - $p));
if ($file != 'forum.css') {
$file = substr($file, 0, strrpos($file, '.'));
}
$file .= '.tmpl';
}
/* build dependency list */
$p = 0;
while (($p = strpos($data, '{REF: ', $p)) !== false) {
$p += 5;
$deps[$file][substr($data, $p, (strpos($data, '}', $p) - $p))] = 1;
}
/* parse sections */
if (($p = strpos($data, '{PAGE: ')) === false && ($p = strpos($data, '{MAIN_SECTION: ') === false)) {
/* the file has not templetable data, skipping */
continue;
}
if (isset($max_opts[$file])) { /* we need to show sections inside this file */
$p = 0;
while (($p = strpos($data, '{', $p)) !== false) {
$e = strpos($data, ':', ++$p);
$tag = substr($data, $p, ($e - $p));
switch ($tag) {
case 'SECTION':
case 'PAGE':
case 'MAIN_SECTION':
$e = strpos($data, '}', $p);
$e2 = strpos($data, '{'.$tag.': END}', $e);
if ($e === false || $e2 === false) {
exit('broken template file "'.$file.'"');
}
$d = explode(' ', substr($data, $p, ($e - $p)), 3);
if (!isset($file_info_array[$file])) {
$file_info_array[$file] = '<a class="file_name" href=" tmpllist.php?tname='.$tname.'&tlang='.$tlang.'&'._rsidl.'&max_l ist='.minimize($file, $max_list).'" title="minimize">[ - ]</a> <b>'.$file.'</b> <a name="'.$file.'"> </a><br>';
}
if ($tag != 'SECTION') {
$file_info_array[$file] .= ' <font size="-1">»</font> <a class="msec" href=" tmpllist.php?tname='.$tname.'&tlang='.$tlang.'&'._rsidl.'&edit= 1&fl='.$file.'&msec='.urlencode($d[1]).'&max_list='.$max_list.' ">'.$d[1].'</a>';
} else {
$file_info_array[$file] .= ' & ;nbsp; <font size="-1">»</font> <a class="sec" href=" tmpllist.php?tname='.$tname.'&tlang='.$tlang.'&'._rsidl.'&edit= 1&fl='.$file.'&sec='.urlencode($d[1]).'&max_list='.$max_list.' ">'.$d[1].'</a>';
}
if (isset($d[2]) && ($d[2] = trim($d[2]))) {
if (!$edit) {
$file_info_array[$file] .= '<font size="-1" color="#008800"> -> '.htmlspecialchars($d[2]). ' </font>';
}
$file_info_help[$d[1]] = $d[2];
}
$file_info_array[$file] .= '<br>';
$p = $e2 + 6;
break;
default:
++$p;
break;
}
}
} else { /* just parse the title & help if avaliable */
$file_info_array[$file] = '<a class="file_name" href=" tmpllist.php?tname='.$tname.'&tlang='.$tlang.'&'._rsidl.'&max_l ist='.maximize($file, $max_list).'" title="maximize">[ + ]</a> <b>'.$file.'</b> <a name="'.$file.'"> </a>';
}
}
closedir($dp);
foreach($deps as $k => $v) {
foreach ($v as $k2 => $v2) {
if (isset($deps[$k2])) {
$deps[$k] = array_merge($v, $deps[$k2]);
}
}
}
$php_deps =& $deps;
$deps_on = array();
foreach($php_deps as $k => $v) {
foreach($v as $k2 => $v2) $deps_on[$k2][] = $k;
}
reset($deps_on);
if( !empty($fl) ) {
$tmp = $file_info_array;
$file_info_array = array();
$tmp2[$fl] = $tmp[$fl];
unset($tmp[$fl]);
$file_info_array = array_merge($tmp2, $tmp);
}
sort($file_info_array);
foreach($file_info_array as $k => $v) {
echo $v;
if(isset($max_opts[$k]) && (isset($php_deps[$k]) || isset($deps_on[$k])) ) {
if( is_array($php_deps[$k]) ) {
$deps = '';
foreach($php_deps[$k] as $k2 => $v2) {
if( $file_info_array[$k2] ) $deps .= ' & ;nbsp; <font size="-1">»</font> <a href=" tmpllist.php?tname='.$tname.'&tlang='.$tlang.'&'._rsid.'&max_li st='.goto_tmpl($k2).' " class="deps">'.$k2.'</a><br>';
}
if( !empty($deps) ) echo ' <font size="-1">»</font> <font size="-1" color="#00AA00"><b>Dependencies</b></font><br>'.$deps;
}
if( is_array($deps_on[$k]) ) {
$dp = '';
foreach($deps_on[$k] as $k2) {
if( $file_info_array[$k2] ) $dp .= ' & ;nbsp; <font size="-1">»</font> <a href=" tmpllist.php?tname='.$tname.'&tlang='.$tlang.'&'._rsid.'&max_li st='.goto_tmpl($k2).' " class="depson">'.$k2.'</a><br>';
}
if( !empty($dp) ) echo ' <font size="-1">»</font> <font size="-1" color="#CC6600"><b>Used By</b></font><br>'.$dp;
}
}
echo '<br>';
}
?>
</td>
<?php if($edit) { ?>
<td width="100%" valign="top">
<?php
if (isset($update_ok)) {
echo '<font color="black"><b>***Theme was successfully updated.***</b></font><br><br>';
}
?>
<font color="#008800"><b>Explanation:</b>
<?php
if (isset($file_info_help[$msec.$sec])) {
echo $file_info_help[$msec.$sec];
} else if (isset($sdata['comment'])) {
echo $sdata['comment'];
}
?>
</font><br>
<table cellspacing=2 cellpadding=1 border=0>
<form method="post" action="tmpllist.php?tname=<?php echo $tname; ?>&tlang=<?php echo $tlang; ?>" name="tmpledit">
<?php echo _hs; ?>
<tr>
<td>
<b><?php echo $tmpl; ?></b>:<?php echo (isset($msg_list) ? $msg_list : ''); ?><br>
<textarea rows="20" cols="60" name="tmpl_data"><?php echo htmlspecialchars($tmpl_data); ?></textarea>
</td>
</tr>
<tr>
<td align="right"><input type="reset" name="reset" value="Undo Changes"> <input type="Submit" name="Submit" value="Save Changes"></td>
</tr>
<input type="hidden" name="msec" value="<?php echo $msec; ?>">
<input type="hidden" name="max_list" value="<?php echo $max_list; ?>">
<input type="hidden" name="sec" value="<?php echo $sec; ?>">
<input type="hidden" name="submitted" value="1">
<input type="hidden" name="edit" value="1">
<input type="hidden" name="fl" value="<?php echo $fl; ?>">
</form>
</table>
</td>
</tr>
<?php } ?>
</table>
<?php require($WWW_ROOT_DISK . 'adm/admclose.php'); ?>
I suspect these issues have to do with XAMP installing all eGroupware stuff in the /opt/lampp/htdocs/egroupware root.
Any help would be greatly appreciated.
Mark
|
|
|