From 2ef8c58d3139ec931a75185a32ede7a7663c735f Mon Sep 17 00:00:00 2001 From: patdenice Date: Sat, 1 Mar 2008 14:49:11 +0000 Subject: New: plugin LocalFiles Editor. Corrected: $id in smarty comment style in intro.tpl git-svn-id: http://piwigo.org/svn/trunk@2235 68402e56-0260-453c-a942-63ccdbb3a9ee --- plugins/LocalFilesEditor/admin.php | 313 +++++++++++++++++++++ plugins/LocalFilesEditor/admin.tpl | 37 +++ plugins/LocalFilesEditor/index.php | 33 +++ plugins/LocalFilesEditor/language/en_UK/index.php | 33 +++ .../language/en_UK/plugin.lang.php | 47 ++++ plugins/LocalFilesEditor/language/es_ES/index.php | 33 +++ .../language/es_ES/plugin.lang.php | 47 ++++ plugins/LocalFilesEditor/language/fr_FR/index.php | 33 +++ .../language/fr_FR/plugin.lang.php | 47 ++++ plugins/LocalFilesEditor/language/index.php | 33 +++ plugins/LocalFilesEditor/main.inc.php | 47 ++++ plugins/LocalFilesEditor/show_default.php | 56 ++++ plugins/LocalFilesEditor/show_default.tpl | 3 + 13 files changed, 762 insertions(+) create mode 100644 plugins/LocalFilesEditor/admin.php create mode 100644 plugins/LocalFilesEditor/admin.tpl create mode 100644 plugins/LocalFilesEditor/index.php create mode 100644 plugins/LocalFilesEditor/language/en_UK/index.php create mode 100644 plugins/LocalFilesEditor/language/en_UK/plugin.lang.php create mode 100644 plugins/LocalFilesEditor/language/es_ES/index.php create mode 100644 plugins/LocalFilesEditor/language/es_ES/plugin.lang.php create mode 100644 plugins/LocalFilesEditor/language/fr_FR/index.php create mode 100644 plugins/LocalFilesEditor/language/fr_FR/plugin.lang.php create mode 100644 plugins/LocalFilesEditor/language/index.php create mode 100644 plugins/LocalFilesEditor/main.inc.php create mode 100644 plugins/LocalFilesEditor/show_default.php create mode 100644 plugins/LocalFilesEditor/show_default.tpl (limited to 'plugins') diff --git a/plugins/LocalFilesEditor/admin.php b/plugins/LocalFilesEditor/admin.php new file mode 100644 index 000000000..551e124ee --- /dev/null +++ b/plugins/LocalFilesEditor/admin.php @@ -0,0 +1,313 @@ +'), '', $code); + $b = 0; + foreach (token_get_all($code) as $token) + { + if ('{' == $token) ++$b; + else if ('}' == $token) --$b; + } + if ($b) return false; + else + { + ob_start(); + $eval = eval('if(0){' . $code . '}'); + ob_end_clean(); + if ($eval === false) return false; + else return ''; + } +} + + +// +-----------------------------------------------------------------------+ +// | 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.'&tab=localconf'); +$tabsheet->add('css', + l10n('locfiledit_onglet_css'), + $my_base_url.'&tab=css'); +$tabsheet->add('tpl', + l10n('locfiledit_onglet_tpl'), + $my_base_url.'&tab=tpl'); +$tabsheet->add('lang', + l10n('locfiledit_onglet_lang'), + $my_base_url.'&tab=lang'); +$tabsheet->add('plug', + l10n('locfiledit_onglet_plug'), + $my_base_url.'&tab=plug'); +$tabsheet->select($page['tab']); +$tabsheet->assign(); + + +// +-----------------------------------------------------------------------+ +// | Variables init +// +-----------------------------------------------------------------------+ +$edited_file = ''; +$content_file = ''; +$new_file['localconf'] = ""; +$new_file['css'] = l10n('locfiledit_newfile') . "\n\n"; +$new_file['lang'] = ""; +$new_file['plug'] = ""; + +// 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'))); + 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)); + 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)); + 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)); + 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']; + 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); + } +} + +$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content'); + +?> \ No newline at end of file diff --git a/plugins/LocalFilesEditor/admin.tpl b/plugins/LocalFilesEditor/admin.tpl new file mode 100644 index 000000000..d8a228d67 --- /dev/null +++ b/plugins/LocalFilesEditor/admin.tpl @@ -0,0 +1,37 @@ +
+

LocalFiles Editor

+ {$TABSHEET} +
+ +
+
+ +{if isset ($css_lang_tpl)} +{html_options name=file_to_edit options=$css_lang_tpl.OPTIONS selected=$css_lang_tpl.SELECTED} + +
+
+{/if} + +{foreach from=$show_default item=file} +{'locfiledit_show_default'|@translate} "{$file.FILE}" +
+{/foreach} + +{if isset ($zone_edit)} +
+ +{$zone_edit.FILE_NAME} +
+ +
{'locfiledit_save_bak'|@translate} +

+ +{if isset ($restore)} + +{/if} +{/if} + +
+
+
diff --git a/plugins/LocalFilesEditor/index.php b/plugins/LocalFilesEditor/index.php new file mode 100644 index 000000000..61741e9cb --- /dev/null +++ b/plugins/LocalFilesEditor/index.php @@ -0,0 +1,33 @@ + diff --git a/plugins/LocalFilesEditor/language/en_UK/index.php b/plugins/LocalFilesEditor/language/en_UK/index.php new file mode 100644 index 000000000..61741e9cb --- /dev/null +++ b/plugins/LocalFilesEditor/language/en_UK/index.php @@ -0,0 +1,33 @@ + diff --git a/plugins/LocalFilesEditor/language/en_UK/plugin.lang.php b/plugins/LocalFilesEditor/language/en_UK/plugin.lang.php new file mode 100644 index 000000000..d0d3fb395 --- /dev/null +++ b/plugins/LocalFilesEditor/language/en_UK/plugin.lang.php @@ -0,0 +1,47 @@ + \ No newline at end of file diff --git a/plugins/LocalFilesEditor/language/es_ES/index.php b/plugins/LocalFilesEditor/language/es_ES/index.php new file mode 100644 index 000000000..61741e9cb --- /dev/null +++ b/plugins/LocalFilesEditor/language/es_ES/index.php @@ -0,0 +1,33 @@ + diff --git a/plugins/LocalFilesEditor/language/es_ES/plugin.lang.php b/plugins/LocalFilesEditor/language/es_ES/plugin.lang.php new file mode 100644 index 000000000..efaeb82d0 --- /dev/null +++ b/plugins/LocalFilesEditor/language/es_ES/plugin.lang.php @@ -0,0 +1,47 @@ + \ No newline at end of file diff --git a/plugins/LocalFilesEditor/language/fr_FR/index.php b/plugins/LocalFilesEditor/language/fr_FR/index.php new file mode 100644 index 000000000..61741e9cb --- /dev/null +++ b/plugins/LocalFilesEditor/language/fr_FR/index.php @@ -0,0 +1,33 @@ + diff --git a/plugins/LocalFilesEditor/language/fr_FR/plugin.lang.php b/plugins/LocalFilesEditor/language/fr_FR/plugin.lang.php new file mode 100644 index 000000000..1d4eb1714 --- /dev/null +++ b/plugins/LocalFilesEditor/language/fr_FR/plugin.lang.php @@ -0,0 +1,47 @@ + \ No newline at end of file diff --git a/plugins/LocalFilesEditor/language/index.php b/plugins/LocalFilesEditor/language/index.php new file mode 100644 index 000000000..61741e9cb --- /dev/null +++ b/plugins/LocalFilesEditor/language/index.php @@ -0,0 +1,33 @@ + diff --git a/plugins/LocalFilesEditor/main.inc.php b/plugins/LocalFilesEditor/main.inc.php new file mode 100644 index 000000000..e2dad5f05 --- /dev/null +++ b/plugins/LocalFilesEditor/main.inc.php @@ -0,0 +1,47 @@ + 'LocalFiles Editor', + 'URL' => get_admin_plugin_menu_link(LOCALEDIT_PATH . 'admin.php'))); + return $menu; +} + +add_event_handler('get_admin_plugin_menu_links', 'localfiles_admin_menu'); + +?> \ No newline at end of file diff --git a/plugins/LocalFilesEditor/show_default.php b/plugins/LocalFilesEditor/show_default.php new file mode 100644 index 000000000..22e74630b --- /dev/null +++ b/plugins/LocalFilesEditor/show_default.php @@ -0,0 +1,56 @@ +set_filename('show_default', dirname(__FILE__) . '/show_default.tpl'); + + $file = file_get_contents(PHPWG_ROOT_PATH . $path); + + $template->assign(array('DEFAULT_CONTENT' => nl2br($file))); + + $title = $path; + $page['page_banner'] = '

'.str_replace('/', ' / ', $path).'

'; + $page['body_id'] = 'thePopuphelpPage'; + + include(PHPWG_ROOT_PATH.'include/page_header.php'); + + $template->pparse('show_default'); + + include(PHPWG_ROOT_PATH.'include/page_tail.php'); +} + +?> \ No newline at end of file diff --git a/plugins/LocalFilesEditor/show_default.tpl b/plugins/LocalFilesEditor/show_default.tpl new file mode 100644 index 000000000..c101e351a --- /dev/null +++ b/plugins/LocalFilesEditor/show_default.tpl @@ -0,0 +1,3 @@ +
+{$DEFAULT_CONTENT} +
\ No newline at end of file -- cgit v1.2.3