* Save the developer settings
*/
+$site = elgg_get_site_entity();
+
+if (get_input('simple_cache')) {
+ elgg_enable_simplecache();
+} else {
+ elgg_disable_simplecache();
+}
+
+if (get_input('view_path_cache')) {
+ elgg_enable_filepath_cache();
+} else {
+ elgg_disable_filepath_cache();
+}
+
+elgg_set_plugin_setting('display_errors', get_input('display_errors'), 'developers');
+
+$debug = get_input('debug_level');
+if ($debug) {
+ set_config('debug', $debug, $site->getGUID());
+} else {
+ unset_config('debug', $site->getGUID());
+}
+
forward(REFERER);
// settings
'developers:label:simple_cache' => 'Use simple cache',
- 'developers:help:simple_cache' => 'Turn off this file cache when developing',
- 'developers:label:views_cache' => 'Use view path cache',
- 'developers:help:views_cache' => 'Turn this off when developing',
+ 'developers:help:simple_cache' => 'Turn off the file cache when developing. Otherwise, changes to your views (including css) will be ignored.',
+ 'developers:label:view_path_cache' => 'Use view path cache',
+ 'developers:help:view_path_cache' => 'Turn this off when developing. Otherwise, new views in your plugins will not be registered.',
'developers:label:debug_level' => "Trace level",
- 'developers:help:debug_level' => "",
- 'developers:label:' => '',
- 'developers:help:' => '',
+ 'developers:help:debug_level' => "This controls the amount of information logged. See elgg_log() for more information.",
+ 'developers:label:display_errors' => 'Display fatal PHP errors',
+ 'developers:help:display_errors' => "By default, Elgg's .htaccess file supresses the display of fatal errors.",
+
+ 'developers:debug:off' => 'Off',
+ 'developers:debug:error' => 'Error',
+ 'developers:debug:warning' => 'Warning',
+ 'developers:debug:notice' => 'Notice',
// theme preview
'theme_preview:general' => 'General',
<version>1.0</version>
<category>bundled</category>
<category>development</category>
- <blurb>Developer tools</blurb>
- <description>A set of tools for writing plugins and themes.</description>
+ <blurb>Developer tools for Elgg</blurb>
+ <description>A set of tools for writing plugins and themes. It is recommended that you have this plugin at the top of the plugin list.</description>
<website>http://www.elgg.org/</website>
<copyright>See COPYRIGHT.txt</copyright>
<license>GNU Public License version 2</license>
* Elgg developer tools
*/
+// we want to run this as soon as possible - other plugins should not need to do this
+developers_process_settings();
+
elgg_register_event_handler('init', 'system', 'developers_init');
function developers_init() {
elgg_register_action('developers/settings', "$action_base/settings.php", 'admin');
}
+function developers_process_settings() {
+ if (elgg_get_plugin_setting('display_errors', 'developers') == 1) {
+ ini_set('display_errors', 1);
+ } else {
+ ini_set('display_errors', 0);
+ }
+}
+
function developers_setup_menu() {
if (elgg_in_context('admin')) {
elgg_register_admin_menu_item('develop', 'settings', 'developers');
* Developer settings
*/
+$sections = array(
+ 'simple_cache' => 'checkbox',
+ 'view_path_cache' => 'checkbox',
+ 'display_errors' => 'checkbox',
+ 'debug_level' => 'pulldown',
+);
+
+$data = array(
+ 'simple_cache' => array(
+ 'type' => 'checkbox',
+ 'value' => 1,
+ 'checked' => elgg_get_config('simplecache_enabled') == 1,
+ ),
+
+ 'view_path_cache' => array(
+ 'type' => 'checkbox',
+ 'value' => 1,
+ 'checked' => elgg_get_config('viewpath_cache_enabled') == 1,
+ ),
+
+ 'display_errors' => array(
+ 'type' => 'checkbox',
+ 'value' => 1,
+ 'checked' => elgg_get_plugin_setting('display_errors', 'developers') == 1,
+ ),
+
+ 'debug_level' => array(
+ 'type' => 'dropdown',
+ 'value' => elgg_get_config('debug'),
+ 'options_values' => array(
+ false => elgg_echo('developers:debug:off'),
+ 'ERROR' => elgg_echo('developers:debug:error'),
+ 'WARNING' => elgg_echo('developers:debug:warning'),
+ 'NOTICE' => elgg_echo('developers:debug:notice'),
+ ),
+ ),
+);
+
$form_vars = array('id' => 'developer-settings-form');
-echo elgg_view_form('developers/settings', $form_vars, array());
\ No newline at end of file
+$body_vars = array('data' => $data);
+echo elgg_view_form('developers/settings', $form_vars, $body_vars);
/**
* Settings form body
*
- * @uses $vars['values'] Array of current values
- * @uses $vars['options'] Array of possible options
+ * @uses $vars['values']
*/
$form_body = '<p>' . elgg_echo('elgg_dev_tools:settings:explanation') . '</p>';
-$sections = array(
- 'simple_cache' => 'checkbox',
- 'views_cache' => 'checkbox',
- //'display_errors' => 'checkbox',
- 'debug_level' => 'pulldown',
-);
-
-foreach ($sections as $name => $type) {
- echo '<p>';
- if ($type == 'checkbox') {
- echo elgg_view("input/$type", array(
- 'internalname' => $name,
- 'value' => $vars['settings'][$name],
+foreach ($vars['data'] as $name => $info) {
+ echo '<div>';
+ if ($info['type'] == 'checkbox') {
+ echo elgg_view("input/checkbox", array(
+ 'name' => $name,
+ 'value' => $info['value'],
+ 'checked' => $info['checked'],
));
echo '<label>' . elgg_echo("developers:label:$name") . '</label>';
echo '<span class="elgg-text-help">' . elgg_echo("developers:help:$name") . '</span>';
} else {
echo '<label>' . elgg_echo("developers:label:$name") . '</label>';
- echo elgg_view("input/$type", array(
- 'internalname' => $name,
- 'value' => $vars['settings'][$name],
- 'options' => $vars['options'][$name],
+ echo elgg_view("input/{$info['type']}", array(
+ 'name' => $name,
+ 'value' => $info['value'],
+ 'options_values' => $info['options_values'],
));
echo '<span class="elgg-text-help">' . elgg_echo("developers:help:$name") . '</span>';
}
- echo '</p>';
+ echo '</div>';
}
-echo '<p>';
+echo '<div>';
echo elgg_view('input/submit', array('value' => elgg_echo('save')));
-echo '</p>';
\ No newline at end of file
+echo '</div>';