diff options
author | marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2008-06-23 16:27:05 +0000 |
---|---|---|
committer | marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2008-06-23 16:27:05 +0000 |
commit | 737394eb15a2ef0c1f5a085d7f5958d2f3e66b89 (patch) | |
tree | d3d3d9f880e9ffd63b73d9f3ab83c1ce0fda825f | |
parent | dc28ff0bed2216d97e24b1286c68190c843cb684 (diff) | |
download | elgg-737394eb15a2ef0c1f5a085d7f5958d2f3e66b89.tar.gz elgg-737394eb15a2ef0c1f5a085d7f5958d2f3e66b89.tar.bz2 |
Refs #76: User settings page (to Elgg Classic standard). Committing some work before shutting down for the day.
git-svn-id: https://code.elgg.org/elgg/trunk@1068 36083f99-b078-4883-b0ff-0f9b5a30f544
-rw-r--r-- | engine/lib/plugins.php | 36 | ||||
-rw-r--r-- | engine/lib/usersettings.php | 51 | ||||
-rw-r--r-- | engine/start.php | 1 | ||||
-rw-r--r-- | languages/en.php | 20 | ||||
-rw-r--r-- | usersettings/index.php | 26 | ||||
-rw-r--r-- | usersettings/plugins/index.php | 22 | ||||
-rw-r--r-- | usersettings/statistics/index.php | 22 | ||||
-rw-r--r-- | usersettings/user/index.php | 22 | ||||
-rw-r--r-- | views/default/admin/main_opt/plugins.php | 2 | ||||
-rw-r--r-- | views/default/admin/main_opt/site.php | 2 | ||||
-rw-r--r-- | views/default/admin/main_opt/statistics.php | 2 | ||||
-rw-r--r-- | views/default/admin/main_opt/user.php | 2 | ||||
-rw-r--r-- | views/default/object/plugin.php | 5 | ||||
-rw-r--r-- | views/default/usersettings/main.php | 16 | ||||
-rw-r--r-- | views/default/usersettings/main_opt/plugins.php | 19 | ||||
-rw-r--r-- | views/default/usersettings/main_opt/statistics.php | 17 | ||||
-rw-r--r-- | views/default/usersettings/main_opt/user.php | 17 | ||||
-rw-r--r-- | views/default/usersettings/plugins.php | 43 | ||||
-rw-r--r-- | views/default/usersettings/plugins_opt/plugin.php | 38 | ||||
-rw-r--r-- | views/default/usersettings/statistics.php | 16 | ||||
-rw-r--r-- | views/default/usersettings/user.php | 3 |
21 files changed, 375 insertions, 7 deletions
diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index c3f1d0d25..073869a52 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -171,6 +171,42 @@ return false; } + + /** + * Find the plugin settings for a user. + * + * @param string $plugin_name Plugin name. + * @param int $user_guid The guid who's settings to retrieve. + */ + function find_plugin_usersettings($plugin_name = "", $user_guid = 0) + { + $plugin_name = sanitise_string($plugin_name); + $user_guid = (int)$user_guid; + + if (!$plugin_name) + $plugin_name = get_plugin_name(); + + if ($user_guid == 0) $user_guid = $_SESSION['user']->guid; + + + + + + + + + + + + + + + + + + + return false; + } /** * Set a setting for a plugin. diff --git a/engine/lib/usersettings.php b/engine/lib/usersettings.php new file mode 100644 index 000000000..487ea9230 --- /dev/null +++ b/engine/lib/usersettings.php @@ -0,0 +1,51 @@ +<?php + /** + * Elgg user settings functions. + * Functions for adding and manipulating options on the user settings panel. + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Marcus Povey + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + /** + * Register a user settings page with the admin panel. + * This function extends the view "usersettings/main" with the provided view. This view should provide a description + * and either a control or a link to. + * + * Usage: + * - To add a control to the main admin panel then extend usersettings/main + * - To add a control to a new page create a page which renders a view usersettings/subpage (where subpage is your new page - + * nb. some pages already exist that you can extend), extend the main view to point to it, and add controls to your + * new view. + * + * At the moment this is essentially a wrapper around extend_view. + * + * @param string $new_settings_view The view associated with the control you're adding + * @param string $view The view to extend, by default this is 'usersettings/main'. + * @param int $priority Optional priority to govern the appearance in the list. + */ + function extend_elgg_settings_page( $new_settings_view, $view = 'usersettings/main', $priority = 500) + { + return extend_view($view, $new_settings_view, $priority); + } + + /** + * Initialise the admin page. + */ + function usersettings_init() + { + // Add plugin main menu option (last) + extend_elgg_settings_page('usersettings/main_opt/statistics', 'usersettings/main'); + extend_elgg_settings_page('usersettings/main_opt/user', 'usersettings/main'); + extend_elgg_settings_page('usersettings/main_opt/plugins', 'usersettings/main', 999); // Always last + + } + + /// Register init function + register_elgg_event_handler('init','system','usersettings_init'); + +?>
\ No newline at end of file diff --git a/engine/start.php b/engine/start.php index 3d59b1894..174c8f8b4 100644 --- a/engine/start.php +++ b/engine/start.php @@ -119,7 +119,6 @@ asort($files);
// Include them
-
foreach($files as $file) { if (isset($CONFIG->debug) && $CONFIG->debug) error_log("Loading $file...");
if (!@include_once($file))
diff --git a/languages/en.php b/languages/en.php index fbeb84678..d5f45176d 100644 --- a/languages/en.php +++ b/languages/en.php @@ -281,6 +281,26 @@ 'admin:user:ban:yes' => "User banned.", 'admin:user:delete:no' => "Can not delete user", 'admin:user:delete:yes' => "User deleted",
+ + /** + * User settings + */ + 'usersettings:description' => "The user settings panel allows you to control all your personal settings, from user management to how plugins behave. Choose an option below to get started.", + + 'usersettings:statistics' => "Your statistics", + 'usersettings:statistics:description' => "This panel will allow you to view statistics about you.", + 'usersettings:statistics:opt:description' => "View statistical information about users and objects on your site.", + 'usersettings:statistics:opt:linktext' => "View statistics...", + + 'usersettings:user' => "Your settings", + 'usersettings:user:opt:description' => "This allows you to control user settings.", + 'usersettings:user:opt:linktext' => "Configure your user settings...", + + 'usersettings:plugins' => "Tools", + 'usersettings:plugins:opt:description' => "Configure settings for your active tools.", + 'usersettings:plugins:opt:linktext' => "Configure your tools...", + + 'usersettings:plugins:description' => "This panel allows you to control and configure the personal settings for the tools installed by your system administrator.", /**
diff --git a/usersettings/index.php b/usersettings/index.php new file mode 100644 index 000000000..47cf9caba --- /dev/null +++ b/usersettings/index.php @@ -0,0 +1,26 @@ +<?php + /** + * Elgg user settings system index + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + // Get the Elgg framework + require_once(dirname(dirname(__FILE__)) . "/engine/start.php"); + + // Make sure only valid users can see this + gatekeeper(); + + + + /// Default settings + + + // Display main admin menu + page_draw(elgg_echo("admin"),elgg_view_layout("one_column", elgg_view("usersettings/main"))); +?>
\ No newline at end of file diff --git a/usersettings/plugins/index.php b/usersettings/plugins/index.php new file mode 100644 index 000000000..d9c5de6fb --- /dev/null +++ b/usersettings/plugins/index.php @@ -0,0 +1,22 @@ +<?php + /** + * Elgg user settings functions. + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Marcus Povey + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + // Get the Elgg framework + require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + + // Make sure only valid admin users can see this + gatekeeper(); + + + // Display main admin menu + page_draw(elgg_echo("usersettings:plugins"),elgg_view_layout("one_column",elgg_view("usersettings/plugins"))); +?>
\ No newline at end of file diff --git a/usersettings/statistics/index.php b/usersettings/statistics/index.php new file mode 100644 index 000000000..303838a81 --- /dev/null +++ b/usersettings/statistics/index.php @@ -0,0 +1,22 @@ +<?php + /** + * Elgg user settings functions. + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Marcus Povey + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + // Get the Elgg framework + require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + + // Make sure only valid admin users can see this + gatekeeper(); + + + // Display main admin menu + page_draw(elgg_echo("usersettings:statistics"),elgg_view_layout("one_column",elgg_view("usersettings/statistics"))); +?>
\ No newline at end of file diff --git a/usersettings/user/index.php b/usersettings/user/index.php new file mode 100644 index 000000000..274e86e9b --- /dev/null +++ b/usersettings/user/index.php @@ -0,0 +1,22 @@ +<?php + /** + * Elgg user settings functions. + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Marcus Povey + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + // Get the Elgg framework + require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + + // Make sure only valid admin users can see this + gatekeeper(); + + + // Display main admin menu + page_draw(elgg_echo("usersettings:user"),elgg_view_layout("one_column",elgg_view("usersettings/user"))); +?>
\ No newline at end of file diff --git a/views/default/admin/main_opt/plugins.php b/views/default/admin/main_opt/plugins.php index f110007a8..64b6dade9 100644 --- a/views/default/admin/main_opt/plugins.php +++ b/views/default/admin/main_opt/plugins.php @@ -15,5 +15,5 @@ <div class="admin-menu-option"> <h2><?php echo elgg_echo('admin:plugins'); ?> </h2> <p><?php echo elgg_echo('admin:plugins:opt:description'); ?><br /> - <a href="<?php echo $CONFIG->wwwroot . "admin/plugins/"; ?>"><?php echo elgg_echo('admin:plugins:opt:linktext'); ?></a></p> + <a href="<?php echo $CONFIG->wwwroot . "pg/admin/plugins/"; ?>"><?php echo elgg_echo('admin:plugins:opt:linktext'); ?></a></p> </div>
\ No newline at end of file diff --git a/views/default/admin/main_opt/site.php b/views/default/admin/main_opt/site.php index 40373e647..258c6647a 100644 --- a/views/default/admin/main_opt/site.php +++ b/views/default/admin/main_opt/site.php @@ -13,5 +13,5 @@ <div class="admin-menu-option"> <h2><?php echo elgg_echo('admin:site'); ?> </h2> <p><?php echo elgg_echo('admin:site:opt:description'); ?><br /> - <a href="<?php echo $CONFIG->wwwroot . "admin/site/"; ?>"><?php echo elgg_echo('admin:site:opt:linktext'); ?></a></p> + <a href="<?php echo $CONFIG->wwwroot . "pg/admin/site/"; ?>"><?php echo elgg_echo('admin:site:opt:linktext'); ?></a></p> </div>
\ No newline at end of file diff --git a/views/default/admin/main_opt/statistics.php b/views/default/admin/main_opt/statistics.php index da37decf6..524fe2963 100644 --- a/views/default/admin/main_opt/statistics.php +++ b/views/default/admin/main_opt/statistics.php @@ -13,5 +13,5 @@ <div class="admin-menu-option"> <h2><?php echo elgg_echo('admin:statistics'); ?> </h2> <p><?php echo elgg_echo('admin:statistics:opt:description'); ?><br /> - <a href="<?php echo $CONFIG->wwwroot . "admin/statistics/"; ?>"><?php echo elgg_echo('admin:statistics:opt:linktext'); ?></a></p> + <a href="<?php echo $CONFIG->wwwroot . "pg/admin/statistics/"; ?>"><?php echo elgg_echo('admin:statistics:opt:linktext'); ?></a></p> </div> diff --git a/views/default/admin/main_opt/user.php b/views/default/admin/main_opt/user.php index 8505098fd..416cca6ea 100644 --- a/views/default/admin/main_opt/user.php +++ b/views/default/admin/main_opt/user.php @@ -13,5 +13,5 @@ <div class="admin-menu-option"> <h2><?php echo elgg_echo('admin:user'); ?> </h2> <p><?php echo elgg_echo('admin:user:opt:description'); ?><br /> - <a href="<?php echo $CONFIG->wwwroot . "admin/user/"; ?>"><?php echo elgg_echo('admin:user:opt:linktext'); ?></a></p> + <a href="<?php echo $CONFIG->wwwroot . "pg/admin/user/"; ?>"><?php echo elgg_echo('admin:user:opt:linktext'); ?></a></p> </div>
\ No newline at end of file diff --git a/views/default/object/plugin.php b/views/default/object/plugin.php index edaf1f0db..12e22bd15 100644 --- a/views/default/object/plugin.php +++ b/views/default/object/plugin.php @@ -12,13 +12,14 @@ $entity = $vars['entity']; $plugin = $vars['plugin']; - + $prefix = $vars['prefix']; // Do we want to show admin settings (default) or user settings + ?> <div> <form action="<?php echo $vars['url']; ?>action/plugins/settings/save" method="post"> <?php - echo elgg_view("settings/{$plugin}/edit",$vars); + echo elgg_view("{$prefix}settings/{$plugin}/edit",$vars); ?> <p> diff --git a/views/default/usersettings/main.php b/views/default/usersettings/main.php new file mode 100644 index 000000000..1b0ed11e8 --- /dev/null +++ b/views/default/usersettings/main.php @@ -0,0 +1,16 @@ +<?php + /** + * Elgg user main settings page. + * Functions for adding and manipulating options on the user settings panel. + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Marcus Povey + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + // Description of what's going on + echo "<p>" . nl2br(elgg_echo("usersettings:description")) . "</p>"; +?>
\ No newline at end of file diff --git a/views/default/usersettings/main_opt/plugins.php b/views/default/usersettings/main_opt/plugins.php new file mode 100644 index 000000000..7a5030579 --- /dev/null +++ b/views/default/usersettings/main_opt/plugins.php @@ -0,0 +1,19 @@ +<?php + /** + * Elgg plugin sub-component on the main menu. + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Marcus Povey + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + global $CONFIG; +?> +<div class="admin-menu-option"> + <h2><?php echo elgg_echo('usersettings:plugins'); ?> </h2> + <p><?php echo elgg_echo('usersettings:plugins:opt:description'); ?><br /> + <a href="<?php echo $CONFIG->wwwroot . "pg/usersettings/plugins/"; ?>"><?php echo elgg_echo('usersettings:plugins:opt:linktext'); ?></a></p> +</div>
\ No newline at end of file diff --git a/views/default/usersettings/main_opt/statistics.php b/views/default/usersettings/main_opt/statistics.php new file mode 100644 index 000000000..973c4f7ce --- /dev/null +++ b/views/default/usersettings/main_opt/statistics.php @@ -0,0 +1,17 @@ +<?php + /** + * Elgg satistics sub-component on the main menu. + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Marcus Povey + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ +?> +<div class="admin-menu-option"> + <h2><?php echo elgg_echo('usersettings:statistics'); ?> </h2> + <p><?php echo elgg_echo('usersettings:statistics:opt:description'); ?><br /> + <a href="<?php echo $CONFIG->wwwroot . "pg/usersettings/statistics/"; ?>"><?php echo elgg_echo('usersettings:statistics:opt:linktext'); ?></a></p> +</div> diff --git a/views/default/usersettings/main_opt/user.php b/views/default/usersettings/main_opt/user.php new file mode 100644 index 000000000..77d3340e3 --- /dev/null +++ b/views/default/usersettings/main_opt/user.php @@ -0,0 +1,17 @@ +<?php + /** + * Elgg user sub-component on the main menu. + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Marcus Povey + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ +?> +<div class="admin-menu-option"> + <h2><?php echo elgg_echo('usersettings:user'); ?> </h2> + <p><?php echo elgg_echo('usersettings:user:opt:description'); ?><br /> + <a href="<?php echo $CONFIG->wwwroot . "pg/usersettings/user/"; ?>"><?php echo elgg_echo('usersettings:user:opt:linktext'); ?></a></p> +</div>
\ No newline at end of file diff --git a/views/default/usersettings/plugins.php b/views/default/usersettings/plugins.php new file mode 100644 index 000000000..730950178 --- /dev/null +++ b/views/default/usersettings/plugins.php @@ -0,0 +1,43 @@ +<?php + /** + * Elgg plugin specific user settings. + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Marcus Povey + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + // Description of what's going on + echo "<p>" . nl2br(elgg_echo("usersettings:plugins:description")) . "</p>"; + + $limit = get_input('limit', 10); + $offset = get_input('offset', 0); + + + // Get the installed plugins + $installed_plugins = $vars['installed_plugins']; + $count = count($installed_plugins); + + // Display list of plugins + $n = 0; + foreach ($installed_plugins as $plugin => $data) + { + if (($n>=$offset) && ($n < $offset+$limit)) + echo elgg_view("usersettings/plugins_opt/plugin", array('plugin' => $plugin, 'details' => $data)); + + $n++; + } + + // Diplay nav + if ($count) + { + echo elgg_view('navigation/pagination',array( + 'baseurl' => $_SERVER['REQUEST_URI'], + 'offset' => $offset, + 'count' => $count, + )); + } +?>
\ No newline at end of file diff --git a/views/default/usersettings/plugins_opt/plugin.php b/views/default/usersettings/plugins_opt/plugin.php new file mode 100644 index 000000000..228245efd --- /dev/null +++ b/views/default/usersettings/plugins_opt/plugin.php @@ -0,0 +1,38 @@ +<?php + /** + * Elgg plugin manifest class + * + * This file renders a plugin for the admin screen, including active/deactive, manifest details & display plugin + * settings. + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Marcus Povey + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + + $plugin = $vars['plugin']; + $details = $vars['details']; + + $active = $details['active']; + $manifest = $details['manifest']; + + $user_guid = $details['user_guid']; + if ($user_guid) $user_guid = $_SESSION['user']->guid; +?> +<div id="plugin_details" class="<?php if ($active) echo "active"; else "not-active" ?>"> + <div><h2><?php echo $plugin; ?></h2></div> + + <?php if ($manifest) { ?> + <div><?php echo $manifest['description'] ?></div> + <?php } ?> + + <?php if (elgg_view("usersettings/{$plugin}/edit")) { ?> + <div id="<?php echo $plugin; ?>_settings"> + <?php echo elgg_view("object/plugin", array('plugin' => $plugin, 'entity' => find_plugin_usersettings($plugin, $user_guid), 'prefix' => 'user')) ?> + </div> + <?php } ?> +</div>
\ No newline at end of file diff --git a/views/default/usersettings/statistics.php b/views/default/usersettings/statistics.php new file mode 100644 index 000000000..f01e48bc8 --- /dev/null +++ b/views/default/usersettings/statistics.php @@ -0,0 +1,16 @@ +<?php + /** + * Elgg settings specific user settings. + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Marcus Povey + * @copyright Curverider Ltd 2008 + * @link http://elgg.org/ + */ + + global $CONFIG; + + echo "<p>" . nl2br(elgg_echo("usersettings:statistics:description")) . "</p>"; +?>
\ No newline at end of file diff --git a/views/default/usersettings/user.php b/views/default/usersettings/user.php new file mode 100644 index 000000000..15c5adc7f --- /dev/null +++ b/views/default/usersettings/user.php @@ -0,0 +1,3 @@ +<?php + +?>
\ No newline at end of file |