aboutsummaryrefslogtreecommitdiffstats
path: root/BSF/plugins/LocalFilesEditor/admin.php
diff options
context:
space:
mode:
authorvdigital <vdigital@piwigo.org>2008-05-23 21:05:41 +0000
committervdigital <vdigital@piwigo.org>2008-05-23 21:05:41 +0000
commit77fd1f51a3c5f5a52f72ef8a299fe368228e2285 (patch)
treea67ede42904657ccf3349ecdaef1cec8b8e36ff8 /BSF/plugins/LocalFilesEditor/admin.php
parent553727dffacc48e8337c1d141f2a25af359e74b1 (diff)
git-svn-id: http://piwigo.org/svn/trunk@2357 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'BSF/plugins/LocalFilesEditor/admin.php')
-rw-r--r--BSF/plugins/LocalFilesEditor/admin.php304
1 files changed, 304 insertions, 0 deletions
diff --git a/BSF/plugins/LocalFilesEditor/admin.php b/BSF/plugins/LocalFilesEditor/admin.php
new file mode 100644
index 000000000..209855904
--- /dev/null
+++ b/BSF/plugins/LocalFilesEditor/admin.php
@@ -0,0 +1,304 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | 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 |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU General Public License |
+// | along with this program; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+include_once(LOCALEDIT_PATH.'functions.inc.php');
+load_language('plugin.lang', LOCALEDIT_PATH);
+$my_base_url = get_admin_plugin_menu_link(__FILE__);
+
+// +-----------------------------------------------------------------------+
+// | Tabssheet
+// +-----------------------------------------------------------------------+
+if (!isset($_GET['tab']))
+ $page['tab'] = 'localconf';
+else
+ $page['tab'] = $_GET['tab'];
+
+$tabsheet = new tabsheet();
+$tabsheet->add('localconf',
+ l10n('locfiledit_onglet_localconf'),
+ $my_base_url.'&amp;tab=localconf');
+$tabsheet->add('css',
+ l10n('locfiledit_onglet_css'),
+ $my_base_url.'&amp;tab=css');
+$tabsheet->add('tpl',
+ l10n('locfiledit_onglet_tpl'),
+ $my_base_url.'&amp;tab=tpl');
+$tabsheet->add('lang',
+ l10n('locfiledit_onglet_lang'),
+ $my_base_url.'&amp;tab=lang');
+$tabsheet->add('plug',
+ l10n('locfiledit_onglet_plug'),
+ $my_base_url.'&amp;tab=plug');
+$tabsheet->select($page['tab']);
+$tabsheet->assign();
+
+
+// +-----------------------------------------------------------------------+
+// | Variables init
+// +-----------------------------------------------------------------------+
+$edited_file = '';
+$content_file = '';
+$new_file['localconf'] = "<?php\n\n".l10n('locfiledit_newfile')."\n\n\n\n\n?>";
+$new_file['css'] = l10n('locfiledit_newfile') . "\n\n";
+$new_file['lang'] = "<?php\n\n" . l10n('locfiledit_newfile') . "\n\n\n\n\n?>";
+$new_file['plug'] = "<?php\n/*
+Plugin Name: " . l10n('locfiledit_onglet_plug') . "
+Version: 1.0
+Description: " . l10n('locfiledit_onglet_plug') . "
+Plugin URI: http://www.phpwebgallery.net
+Author:
+Author URI:
+*/\n\n\n\n\n?>";
+
+// Editarea options
+$editarea = array(
+ 'start_highlight' => true,
+ 'language' => substr($user['language'], 0, 2),
+ 'toolbar' => 'search,fullscreen, |,select_font, |, undo, redo, change_smooth_selection, highlight, reset_highlight, |, help');
+if (isset($conf['editarea_options']) and is_array($conf['editarea_options']))
+{
+ $editarea = array_merge($editarea, $conf['editarea_options']);
+}
+
+// Edit selected file for CSS, template and language
+if ((isset($_POST['edit'])) and !is_numeric($_POST['file_to_edit']))
+{
+ $edited_file = $_POST['file_to_edit'];
+ $content_file = file_exists($edited_file) ?
+ file_get_contents($edited_file) : $new_file[$page['tab']];
+}
+
+
+// +-----------------------------------------------------------------------+
+// | Process tabsheet
+// +-----------------------------------------------------------------------+
+$options[] = l10n('locfiledit_choose_file');
+$selected = 0;
+
+switch ($page['tab'])
+{
+ case 'localconf':
+ $edited_file = PHPWG_ROOT_PATH . "include/config_local.inc.php";
+ $content_file = file_exists($edited_file) ?
+ file_get_contents($edited_file) : $new_file['localconf'];
+
+ $template->assign('show_default' , array(
+ array('SHOW_DEFAULT' => LOCALEDIT_PATH
+ . 'show_default.php?file=include/config_default.inc.php',
+ 'FILE' => 'config_default.inc.php')));
+ $editarea['syntax'] = 'php';
+ break;
+
+ case 'css':
+ $template_dir = PHPWG_ROOT_PATH . 'template';
+ $options[] = '----------------------';
+ $value = PHPWG_ROOT_PATH . "template-common/local-layout.css";
+ $options[$value] = 'template-common / local-layout.css';
+ if ($edited_file == $value) $selected = $value;
+
+ foreach (get_dirs($template_dir) as $pwg_template)
+ {
+ $options[] = '----------------------';
+ $value = $template_dir . '/' . $pwg_template . '/local-layout.css';
+ $options[$value] = $pwg_template . ' / local-layout.css';
+ if ($edited_file == $value) $selected = $value;
+ $options[] = '----------------------';
+ foreach (get_dirs($template_dir.'/'.$pwg_template.'/theme') as $theme)
+ {
+ $value = $template_dir.'/'.$pwg_template.'/theme/'.$theme.'/theme.css';
+ $options[$value] = $pwg_template . ' / ' . $theme . ' / theme.css';
+ if ($edited_file == $value) $selected = $value;
+ }
+ }
+ $template->assign('css_lang_tpl', array(
+ 'OPTIONS' => $options,
+ 'SELECTED' => $selected));
+ $editarea['syntax'] = 'css';
+ break;
+
+ case 'tpl':
+ $template_dir = PHPWG_ROOT_PATH . 'template';
+ foreach (get_dirs($template_dir) as $pwg_template)
+ {
+ $dir = $template_dir . '/' . $pwg_template . '/';
+ $options[] = '----------------------';
+ if (is_dir($dir) and $content = opendir($dir))
+ {
+ while ($node = readdir($content))
+ {
+ if (is_file($dir . $node)
+ and strtolower(get_extension($node)) == 'tpl'
+ and !strpos($node , '.bak.tpl'))
+ {
+ $value = $dir . $node;
+ $options[$value] = $pwg_template . ' / ' . $node;
+ if ($edited_file == $value) $selected = $value;
+ }
+ }
+ }
+ }
+ $template->assign('css_lang_tpl', array(
+ 'OPTIONS' => $options,
+ 'SELECTED' => $selected));
+ $editarea['syntax'] = 'html';
+ break;
+
+ case 'lang':
+ $options[] = '----------------------';
+ foreach (get_languages() as $language_code => $language_name)
+ {
+ $value = PHPWG_ROOT_PATH.'language/'.$language_code.'/local.lang.php';
+ if ($edited_file == $value)
+ {
+ $selected = $value;
+ $template->assign('show_default', array(
+ array('SHOW_DEFAULT' => LOCALEDIT_PATH
+ . 'show_default.php?file='
+ . 'language/'.$language_code.'/common.lang.php',
+ 'FILE' => 'common.lang.php'),
+ array('SHOW_DEFAULT' => LOCALEDIT_PATH
+ . 'show_default.php?file='
+ . 'language/'.$language_code.'/admin.lang.php',
+ 'FILE' => 'admin.lang.php')));
+ }
+ $options[$value] = $language_name;
+ }
+ $template->assign('css_lang_tpl', array(
+ 'OPTIONS' => $options,
+ 'SELECTED' => $selected));
+ $editarea['syntax'] = 'php';
+ break;
+
+ case 'plug':
+ $edited_file = PHPWG_PLUGINS_PATH . "PersonalPlugin/main.inc.php";
+ $content_file = file_exists($edited_file) ?
+ file_get_contents($edited_file) : $new_file['plug'];
+ $editarea['syntax'] = 'php';
+ break;
+}
+
+
+// +-----------------------------------------------------------------------+
+// | Load backup file
+// +-----------------------------------------------------------------------+
+if (isset($_POST['restore']) and !is_adviser())
+{
+ $edited_file = $_POST['edited_file'];
+ $content_file = file_get_contents(
+ substr_replace($edited_file , '.bak' , strrpos($edited_file ,'.') , 0));
+
+ array_push($page['infos'],
+ l10n('locfiledit_bak_loaded1'),
+ l10n('locfiledit_bak_loaded2'));
+}
+
+
+// +-----------------------------------------------------------------------+
+// | Save file
+// +-----------------------------------------------------------------------+
+if (isset($_POST['submit']) and !is_adviser())
+{
+ $edited_file = $_POST['edited_file'];
+ $content_file = stripslashes($_POST['text']);
+ if (get_extension($edited_file) == 'php')
+ {
+ $content_file = eval_syntax($content_file);
+ }
+ if ($content_file === false)
+ {
+ array_push($page['errors'], l10n('locfiledit_syntax_error'));
+ }
+ else
+ {
+ if ($page['tab'] == 'plug'
+ and !is_dir(PHPWG_PLUGINS_PATH . 'PersonalPlugin'))
+ {
+ @mkdir(PHPWG_PLUGINS_PATH . "PersonalPlugin");
+ }
+ if (file_exists($edited_file))
+ {
+ @copy($edited_file,
+ substr_replace($edited_file,
+ '.bak',
+ strrpos($edited_file , '.'),
+ 0)
+ );
+ }
+
+ if ($file = @fopen($edited_file , "w"))
+ {
+ @fwrite($file , $content_file);
+ @fclose($file);
+ array_push($page['infos'],
+ l10n('locfiledit_save_config'),
+ sprintf(l10n('locfiledit_saved_bak'),
+ substr(substr_replace($edited_file,
+ '.bak',
+ strrpos($edited_file , '.'),
+ 0),
+ 2)));
+ }
+ else
+ {
+ array_push($page['errors'], l10n('locfiledit_cant_save'));
+ }
+ }
+}
+
+
+// +-----------------------------------------------------------------------+
+// | template initialization
+// +-----------------------------------------------------------------------+
+$template->set_filenames(array(
+ 'plugin_admin_content' => dirname(__FILE__) . '/admin.tpl'));
+
+if (!empty($edited_file))
+{
+ if (!empty($page['errors']))
+ {
+ $content_file = stripslashes($_POST['text']);
+ }
+ $template->assign('zone_edit',
+ array('EDITED_FILE' => $edited_file,
+ 'CONTENT_FILE' => htmlspecialchars($content_file),
+ 'FILE_NAME' => trim($edited_file, './\\')));
+ if (file_exists(
+ substr_replace($edited_file ,'.bak',strrpos($edited_file , '.'),0)))
+ {
+ $template->assign('restore', true);
+ }
+}
+
+// Editarea
+if (!isset($conf['editarea_options']) or $conf['editarea_options'] !== false)
+{
+ $template->assign('editarea', array(
+ 'URL' => LOCALEDIT_PATH . 'editarea/edit_area_full.js',
+ 'OPTIONS' => $editarea));
+}
+
+$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
+
+?> \ No newline at end of file