From b1177c028d19aef4abd18e87ffdb398df0f6f24a Mon Sep 17 00:00:00 2001 From: ben Date: Mon, 21 Apr 2008 17:26:51 +0000 Subject: Introduced profile plugin git-svn-id: https://code.elgg.org/elgg/trunk@511 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/profile/actions/edit.php | 40 +++++++++++++++ mod/profile/edit.php | 36 +++++++++++++ mod/profile/index.php | 34 +++++++++++++ mod/profile/languages/en.php | 47 +++++++++++++++++ mod/profile/start.php | 79 +++++++++++++++++++++++++++++ mod/profile/views/default/profile/edit.php | 59 ++++++++++++++++++++++ mod/profile/views/default/user/user.php | 81 ++++++++++++++++++++++++++++++ 7 files changed, 376 insertions(+) create mode 100644 mod/profile/actions/edit.php create mode 100644 mod/profile/edit.php create mode 100644 mod/profile/index.php create mode 100644 mod/profile/languages/en.php create mode 100644 mod/profile/start.php create mode 100644 mod/profile/views/default/profile/edit.php create mode 100644 mod/profile/views/default/user/user.php diff --git a/mod/profile/actions/edit.php b/mod/profile/actions/edit.php new file mode 100644 index 000000000..4bcecdb56 --- /dev/null +++ b/mod/profile/actions/edit.php @@ -0,0 +1,40 @@ + + * @copyright Curverider Ltd 2008 + * @link http://elgg.com/ + */ + + // Get profile fields + $aboutme = get_input('aboutme'); + $location = string_to_tag_array(get_input('location')); + $skills = string_to_tag_array(get_input('skills')); + $interests = string_to_tag_array(get_input('interests')); + + // Save stuff if we can, and forward to the user's profile + $user = $_SESSION['user']; + if ($user->canEdit()) { + + // Save stuff + $user->description = $aboutme; + $user->save(); + $user->location = $location; + $user->skills = $skills; + $user->interests = $interests; + system_message(elgg_echo("profile:saved")); + + // Forward to the user's profile + forward($user->getUrl()); + + } else { + // If we can't, display an error + + system_message(elgg_echo("profile:cantedit")); + } + +?> \ No newline at end of file diff --git a/mod/profile/edit.php b/mod/profile/edit.php new file mode 100644 index 000000000..046c9716f --- /dev/null +++ b/mod/profile/edit.php @@ -0,0 +1,36 @@ + + * @copyright Curverider Ltd 2008 + * @link http://elgg.com/ + */ + + // Get the Elgg engine + require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + + // If we're not logged on, forward the user elsewhere + if (!isloggedin()) forward(); + + // Get current user for now + $user = $_SESSION['user']; + + // Get form, if we're allowed to edit + if ($user->canEdit()) { + + $body = elgg_view("profile/edit",array('entity' => $user)); + + } else { + + $body = elgg_echo("profile:noaccess"); + + } + + // Draw the page + page_draw(elgg_echo("profile:edit"),$body); + +?> \ No newline at end of file diff --git a/mod/profile/index.php b/mod/profile/index.php new file mode 100644 index 000000000..e346740af --- /dev/null +++ b/mod/profile/index.php @@ -0,0 +1,34 @@ + + * @copyright Curverider Ltd 2008 + * @link http://elgg.com/ + */ + + // Get the Elgg engine + require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); + + // Get the username + $username = get_input('username'); + + // Try and get the user from the username and set the page body accordingly + if ($user = get_user_by_username($username)) { + + $body = elgg_view_entity($user,"",true); + $title = $user->name; + + } else { + + $body = elgg_echo("profile:notfound"); + $title = elgg_echo("profile"); + + } + + page_draw($title, $body); + +?> \ No newline at end of file diff --git a/mod/profile/languages/en.php b/mod/profile/languages/en.php new file mode 100644 index 000000000..8459c41af --- /dev/null +++ b/mod/profile/languages/en.php @@ -0,0 +1,47 @@ + + * @copyright Curverider Ltd 2008 + * @link http://elgg.com/ + */ + + $english = array( + + /** + * Menu items and titles + */ + + 'profile' => "Profile", + 'profile:yours' => "Your profile", + 'profile:user' => "%s's profile", + + 'profile:edit' => "Edit profile", + + 'profile:aboutme' => "About me", + 'profile:location' => "Location", + 'profile:skills' => "Skills", + 'profile:interests' => "Interests", + + /** + * Status messages + */ + + 'profile:saved' => "Your profile was successfully saved.", + + /** + * Error messages + */ + + 'profile:notfound' => "Sorry; we could not find the specified profile.", + 'profile:cantedit' => "Sorry; you do not have permission to edit this profile.", + + ); + + add_translation("en",$english); + +?> \ No newline at end of file diff --git a/mod/profile/start.php b/mod/profile/start.php new file mode 100644 index 000000000..baebf802f --- /dev/null +++ b/mod/profile/start.php @@ -0,0 +1,79 @@ + + * @copyright Curverider Ltd 2008 + * @link http://elgg.com/ + */ + + /** + * Profile init function; sets up the profile functions + * + */ + function profile_init() { + + // Get config + global $CONFIG; + + // Load the language file + register_translations($CONFIG->pluginspath . "profile/languages/"); + + // Register a URL handler for users - this means that profile_url() + // will dictate the URL for all ElggUser objects + register_entity_url_handler('profile_url','user','all'); + + // Set up menu for logged in users + if (isloggedin()) { + add_menu(elgg_echo('profile'), $CONFIG->wwwroot . "pg/profile/" . $_SESSION['user']->username,array( + menu_item(elgg_echo('profile:yours'),$CONFIG->wwwroot . "pg/profile/" . $_SESSION['user']->username), + menu_item(elgg_echo('profile:edit'),$CONFIG->wwwroot."mod/profile/edit.php"), + )); + } + + // Register a page handler, so we can have nice URLs + register_page_handler('profile','profile_page_handler'); + + } + + /** + * Profile page handler + * + * @param array $page Array of page elements, forwarded by the page handling mechanism + */ + function profile_page_handler($page) { + + global $CONFIG; + + // The username should be the file we're getting + if (isset($page[0])) { + set_input('username',$page[0]); + } + // Include the standard profile index + include($CONFIG->pluginspath . "profile/index.php"); + + } + + /** + * Profile URL generator for $user->getUrl(); + * + * @param ElggUser $user + * @return string User URL + */ + function profile_url($user) { + global $CONFIG; + return $CONFIG->wwwroot . "pg/profile/" . $user->username; + } + + // Make sure the profile initialisation function is called on initialisation + register_event_handler('init','system','profile_init',1); + + // Register actions + global $CONFIG; + register_action("profile/edit",false,$CONFIG->pluginspath . "profile/actions/edit.php"); + + +?> \ No newline at end of file diff --git a/mod/profile/views/default/profile/edit.php b/mod/profile/views/default/profile/edit.php new file mode 100644 index 000000000..0cd648bf6 --- /dev/null +++ b/mod/profile/views/default/profile/edit.php @@ -0,0 +1,59 @@ + + * @copyright Curverider Ltd 2008 + * @link http://elgg.com/ + * + * @uses $vars['entity'] The user entity + */ + +?> + +
+ +

+ +

+

+ +

+

+ +

+

+ +

+

+ " /> +

+ +
\ No newline at end of file diff --git a/mod/profile/views/default/user/user.php b/mod/profile/views/default/user/user.php new file mode 100644 index 000000000..2c64ac0df --- /dev/null +++ b/mod/profile/views/default/user/user.php @@ -0,0 +1,81 @@ + + * @copyright Curverider Ltd 2008 + * @link http://elgg.com/ + * + * @uses $vars['entity'] The user entity + */ + +?> + +

name; ?>

+

+ *** USER ICON TO COME *** +

+ +

+

description); ?>

+ +

+ : + $vars['entity']->location)); + + ?> +

+

+ : + $vars['entity']->skills)); + + ?> +

+

+ : + $vars['entity']->interests)); + + ?> +

+ canEdit()) { + + ?> +

+ +

+ \ No newline at end of file -- cgit v1.2.3