Storage of edited templates ... guess some users may find this handy ... hhmm

git-svn-id: file:///svn/phpbb/trunk@4347 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Paul S. Owen 2003-08-07 01:30:44 +00:00
parent 80688a477b
commit 52ec6f8706

View file

@ -1058,8 +1058,6 @@ switch ($mode)
'login' => array( 'login' => array(
'login_body.html', 'login_forum.html', 'login_body.html', 'login_forum.html',
), ),
'bbcode' => array(
'b', 'u', 'i', 'color', 'size', 'flash', 'img', 'url', 'email', 'code', 'quote', 'quote_username', 'listitem', 'olist', 'ulist'),
'custom' => array(), 'custom' => array(),
); );
@ -1404,8 +1402,8 @@ function viewsource(url)
$tplcols = (isset($_POST['tplcols'])) ? max(20, intval($_POST['tplcols'])) : 76; $tplcols = (isset($_POST['tplcols'])) ? max(20, intval($_POST['tplcols'])) : 76;
$tplrows = (isset($_POST['tplrows'])) ? max(5, intval($_POST['tplrows'])) : 20; $tplrows = (isset($_POST['tplrows'])) ? max(5, intval($_POST['tplrows'])) : 20;
$tplname = (isset($_POST['tplname'])) ? $_POST['tplname'] : ''; $tplname = (isset($_POST['tplname'])) ? $_POST['tplname'] : '';
$tpldata = (!empty($_POST['tpldata'])) ? stripslashes($_POST['tpldata']) : ''; // NB : STRIPSLASHED!
$tpldata = '';
if ($template_id) if ($template_id)
{ {
$sql = 'SELECT * $sql = 'SELECT *
@ -1419,32 +1417,73 @@ function viewsource(url)
} }
$db->sql_freeresult($result); $db->sql_freeresult($result);
// User wants to submit data ...
if (!empty($_POST['update']))
{
// Where is the template stored?
if (!$template_storedb && is_writeable("{$phpbb_root_path}styles/$template_path/template/$tplname"))
{
// Grab template data
if (!($fp = fopen("{$phpbb_root_path}styles/$template_path/template/$tplname", 'wb')))
{
trigger_error($user->lang['NO_TEMPLATE']);
}
$stylesheet = fwrite($fp, stripslashes($stylesheet));
fclose($fp);
}
else
{
$db->sql_transaction('begin');
if (!$template_storedb)
{
// We change the path to one relative to the root rather than the theme folder
$sql = 'UPDATE ' . STYLES_TPL_TABLE . '
SET template_storedb = 1
WHERE template_id = ' . $template_id;
$db->sql_query($sql);
$filelist = filelist("{$phpbb_root_path}styles/$template_path/template");
$filelist = array('/template' => $filelist['']);
store_templates('insert', $template_id, $template_path, $filelist);
}
$sql = 'UPDATE ' . STYLES_TPLDATA_TABLE . "
SET template_data = '" . $db->sql_escape($tpldata) . "'
WHERE template_id = $template_id
AND template_filename = '" . $db->sql_escape($tplname) . "'";
$db->sql_query($sql);
$db->sql_transaction('commit');
}
@unlink("{$phpbb_root_path}cache/tpl_{$template_name}_$tplname.$phpEx");
$error[] = $user->lang['TEMPLATE_UPDATED'];
add_log('admin', 'LOG_EDIT_TEMPLATE', $template_name);
}
$test_ary = array(); $test_ary = array();
foreach ($tpllist as $category => $tpl_ary) foreach ($tpllist as $category => $tpl_ary)
{ {
$test_ary += $tpl_ary; $test_ary = array_merge($test_ary, $tpl_ary);
} }
if (!$template_storedb) if (!$template_storedb)
{ {
$dp = @opendir("{$phpbb_root_path}styles/$template_path/template"); $dp = @opendir("{$phpbb_root_path}styles/$template_path/template");
while ($file = readdir($dp)) while ($file = readdir($dp))
{ {
if (!strstr($file, 'bbcode.') && strstr($file, '.html') && is_file("{$phpbb_root_path}styles/$template_path/template/$file")) if (!strstr($file, 'bbcode.') && strstr($file, '.html') && !in_array($file, $test_ary) && is_file("{$phpbb_root_path}styles/$template_path/template/$file"))
{ {
if (!in_array($file, $test_ary)) $tpllist['custom'][] = $file;
{
// $tpllist['custom'][] = $file;
}
} }
} }
closedir($dp); closedir($dp);
unset($matches); unset($matches);
unset($test_ary); unset($test_ary);
if ($tplname) if ($tplname && !$tpldata)
{ {
if (!($fp = fopen("{$phpbb_root_path}styles/$template_path/template/$tplname", 'r'))) if (!($fp = fopen("{$phpbb_root_path}styles/$template_path/template/$tplname", 'r')))
{ {
@ -1466,10 +1505,10 @@ function viewsource(url)
{ {
if (!strstr($row['template_filename'], 'bbcode.') && !in_array($row['template_filename'], $test_ary)) if (!strstr($row['template_filename'], 'bbcode.') && !in_array($row['template_filename'], $test_ary))
{ {
// $tpllist['custom'][] = $row['template_filename']; $tpllist['custom'][] = $row['template_filename'];
} }
if ($row['template_filename'] == $tplname) if ($row['template_filename'] == $tplname && !$tpldata)
{ {
$tpldata = $row['template_data']; $tpldata = $row['template_data'];
} }
@ -1477,47 +1516,31 @@ function viewsource(url)
$db->sql_freeresult($result); $db->sql_freeresult($result);
} }
// List of included templates
if ($tplname) if ($tplname)
{ {
preg_match_all('#<!\-\- INCLUDE (.*?) \-\->#', $tpldata, $included_tpls); preg_match_all('#<!\-\- INCLUDE (.*?) \-\->#', $tpldata, $included_tpls);
$included_tpls = $included_tpls[1]; $included_tpls = $included_tpls[1];
} }
} }
unset($test_ary);
// Generate list of template options // Generate list of template options
$tpl_options = ''; $tpl_options = '';
ksort($tpllist); ksort($tpllist);
foreach ($tpllist as $category => $tpl_ary) foreach ($tpllist as $category => $tpl_ary)
{ {
if (sizeof($tpl_ary)) sort($tpl_ary);
{ $tpl_options .= '<option class="sep">' . $category . '</option>';
sort($tpl_ary);
$tpl_options .= '<option class="sep">' . $category . '</option>';
foreach ($tpl_ary as $tpl_file) foreach ($tpl_ary as $tpl_file)
{ {
$selected = ($tpl_file == $tplname) ? ' selected="selected"' : ''; $selected = ($tpl_file == $tplname) ? ' selected="selected"' : '';
$tpl_options .= '<option value="' . $tpl_file . '"' . $selected . '>' . (($category == 'custom') ? $tpl_file : $tpl_file) . '</option>'; $tpl_options .= '<option value="' . $tpl_file . '"' . $selected . '>' . (($category == 'custom') ? $tpl_file : $tpl_file) . '</option>';
}
} }
} }
$tplname_options = '';
$dp = @opendir("{$phpbb_root_path}styles/$template_path/template");
while ($file = readdir($dp))
{
if (strstr($file, '.html') && is_file("{$phpbb_root_path}styles/$template_path/template/$file"))
{
$tpl = substr($file, 0, strpos($file, '.'));
$selected = ($tplname == $tpl) ? ' selected="selected"' : '';
$tplname_options .= '<option value="' . $tpl . '"' . $selected . '>' . $tpl . '</option>';
}
}
closedir($dp);
// Output page // Output page
adm_page_header($user->lang['EDIT_TEMPLATE']); adm_page_header($user->lang['EDIT_TEMPLATE']);
@ -1540,7 +1563,7 @@ function viewsource(url)
<th>Raw HTML</th> <th>Raw HTML</th>
</tr> </tr>
<tr> <tr>
<td class="row2" align="center"><textarea class="post" style="font-family:'Courier New', monospace;font-size:10pt;line-height:125%;" cols="<?php echo $tplcols; ?>" rows="<?php echo $tplrows; ?>" name="decompile"><?php echo htmlentities($tpldata); ?></textarea></td> <td class="row2" align="center"><textarea class="post" style="font-family:'Courier New', monospace;font-size:10pt;line-height:125%;" cols="<?php echo $tplcols; ?>" rows="<?php echo $tplrows; ?>" name="tpldata"><?php echo htmlentities($tpldata); ?></textarea></td>
</tr> </tr>
<tr> <tr>
<td class="cat" align="center"><input class="btnlite" type="submit" name="update" value="<?php echo $user->lang['SUBMIT']; ?>" />&nbsp;&nbsp;<input class="btnlite" type="reset" value="<?php echo $user->lang['RESET']; ?>" /></td> <td class="cat" align="center"><input class="btnlite" type="submit" name="update" value="<?php echo $user->lang['SUBMIT']; ?>" />&nbsp;&nbsp;<input class="btnlite" type="reset" value="<?php echo $user->lang['RESET']; ?>" /></td>
@ -1726,7 +1749,6 @@ function viewsource(url)
$stylesheet = preg_replace('#^(' . $class . ' {).*?(})#m', '\1 ' . $updated_element . ' \2', $stylesheet); $stylesheet = preg_replace('#^(' . $class . ' {).*?(})#m', '\1 ' . $updated_element . ' \2', $stylesheet);
} }
// Where is the CSS stored? // Where is the CSS stored?
if (!$storedb && is_writeable("{$phpbb_root_path}styles/$theme_path/theme/stylesheet.css")) if (!$storedb && is_writeable("{$phpbb_root_path}styles/$theme_path/theme/stylesheet.css"))
{ {