aboutsummaryrefslogtreecommitdiff
path: root/mod/profile
diff options
context:
space:
mode:
Diffstat (limited to 'mod/profile')
-rw-r--r--mod/profile/actions/cropicon.php74
-rw-r--r--mod/profile/actions/deletedefaultprofileitem.php25
-rw-r--r--mod/profile/actions/edit.php100
-rw-r--r--mod/profile/actions/editdefault.php35
-rw-r--r--mod/profile/actions/iconupload.php68
-rw-r--r--mod/profile/actions/resetdefaultprofile.php27
-rw-r--r--mod/profile/defaultprofile.php49
-rw-r--r--mod/profile/edit.php44
-rw-r--r--mod/profile/editicon.php43
-rw-r--r--mod/profile/graphics/defaultlarge.gifbin2924 -> 0 bytes
-rw-r--r--mod/profile/graphics/defaultmaster.gifbin43 -> 0 bytes
-rw-r--r--mod/profile/graphics/defaultmedium.gifbin2855 -> 0 bytes
-rw-r--r--mod/profile/graphics/defaultsmall.gifbin1027 -> 0 bytes
-rw-r--r--mod/profile/graphics/defaulttiny.gifbin745 -> 0 bytes
-rw-r--r--mod/profile/graphics/defaulttopbar.gifbin599 -> 0 bytes
-rw-r--r--mod/profile/icon.php52
-rw-r--r--mod/profile/icondirect.php168
-rw-r--r--mod/profile/index.php50
-rw-r--r--mod/profile/javascript.php19
-rw-r--r--mod/profile/languages/en.php86
-rw-r--r--mod/profile/manifest.xml23
-rw-r--r--mod/profile/profile_lib.php70
-rw-r--r--mod/profile/start.php345
-rw-r--r--mod/profile/views/default/icon/user/default/large.php3
-rw-r--r--mod/profile/views/default/icon/user/default/master.php3
-rw-r--r--mod/profile/views/default/icon/user/default/medium.php3
-rw-r--r--mod/profile/views/default/icon/user/default/small.php3
-rw-r--r--mod/profile/views/default/icon/user/default/tiny.php3
-rw-r--r--mod/profile/views/default/icon/user/default/topbar.php3
-rw-r--r--mod/profile/views/default/js/jquery.imgareaselect-0.8.js635
-rw-r--r--mod/profile/views/default/js/jquery.imgareaselect-0.8.min.js1
-rwxr-xr-xmod/profile/views/default/profile/admin_menu.php42
-rw-r--r--mod/profile/views/default/profile/css.php444
-rw-r--r--mod/profile/views/default/profile/details.php68
-rw-r--r--mod/profile/views/default/profile/edit.php69
-rw-r--r--mod/profile/views/default/profile/editdefaultprofile.php33
-rw-r--r--mod/profile/views/default/profile/editicon.php144
-rw-r--r--mod/profile/views/default/profile/hoverover.php20
-rw-r--r--mod/profile/views/default/profile/icon.php109
-rw-r--r--mod/profile/views/default/profile/javascript.php138
-rw-r--r--mod/profile/views/default/profile/js.php9
-rw-r--r--mod/profile/views/default/profile/listing.php48
-rw-r--r--mod/profile/views/default/profile/menu/adminlinks.php32
-rw-r--r--mod/profile/views/default/profile/menu/friendlinks.php27
-rw-r--r--mod/profile/views/default/profile/menu/links.php13
-rw-r--r--mod/profile/views/default/profile/metatags.php17
-rw-r--r--mod/profile/views/default/profile/owner_block.php66
-rwxr-xr-xmod/profile/views/default/profile/profile_contents/activity.php24
-rwxr-xr-xmod/profile/views/default/profile/profile_contents/details.php56
-rwxr-xr-xmod/profile/views/default/profile/profile_contents/friends.php15
-rw-r--r--mod/profile/views/default/profile/profile_contents/sidebar.php17
-rwxr-xr-xmod/profile/views/default/profile/profile_contents/twitter.php19
-rwxr-xr-xmod/profile/views/default/profile/profile_navigation.php51
-rwxr-xr-xmod/profile/views/default/profile/profile_ownerblock.php125
-rw-r--r--mod/profile/views/default/profile/wrapper.php12
-rw-r--r--mod/profile/views/default/river/user/default/profileiconupdate.php8
-rw-r--r--mod/profile/views/default/river/user/default/profileupdate.php10
57 files changed, 445 insertions, 3103 deletions
diff --git a/mod/profile/actions/cropicon.php b/mod/profile/actions/cropicon.php
deleted file mode 100644
index 70b8e9288..000000000
--- a/mod/profile/actions/cropicon.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-/**
- * Elgg profile plugin upload new user icon action
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-gatekeeper();
-
-$profile_username = get_input('username');
-$profile_owner = get_user_by_username($profile_username);
-
-if (!$profile_owner || !($profile_owner instanceof ElggUser) || !$profile_owner->canEdit()) {
- register_error(elgg_echo('profile:icon:fail'));
- forward($_SERVER['HTTP_REFERER']);
-}
-
-$x1 = (int) get_input('x_1',0);
-$y1 = (int) get_input('y_1',0);
-$x2 = (int) get_input('x_2',0);
-$y2 = (int) get_input('y_2',0);
-
-$filehandler = new ElggFile();
-$filehandler->owner_guid = $profile_owner->getGUID();
-$filehandler->setFilename("profile/" . $profile_owner->username . "master" . ".jpg");
-$filename = $filehandler->getFilenameOnFilestore();
-
-$topbar = get_resized_image_from_existing_file($filename, 16, 16, true, $x1, $y1, $x2, $y2);
-$tiny = get_resized_image_from_existing_file($filename, 25, 25, true, $x1, $y1, $x2, $y2);
-$small = get_resized_image_from_existing_file($filename, 40, 40, true, $x1, $y1, $x2, $y2);
-$medium = get_resized_image_from_existing_file($filename, 100, 100, true, $x1, $y1, $x2, $y2);
-
-if ($small !== FALSE && $medium !== FALSE && $tiny !== FALSE) {
- $filehandler = new ElggFile();
- $filehandler->owner_guid = $profile_owner->getGUID();
- $filehandler->setFilename("profile/" . $profile_owner->username . "medium.jpg");
- $filehandler->open("write");
- $filehandler->write($medium);
- $filehandler->close();
- $filehandler->setFilename("profile/" . $profile_owner->username . "small.jpg");
- $filehandler->open("write");
- $filehandler->write($small);
- $filehandler->close();
- $filehandler->setFilename("profile/" . $profile_owner->username . "tiny.jpg");
- $filehandler->open("write");
- $filehandler->write($tiny);
- $filehandler->close();
- $filehandler->setFilename("profile/" . $profile_owner->username . "topbar.jpg");
- $filehandler->open("write");
- $filehandler->write($topbar);
- $filehandler->close();
-
- $profile_owner->x1 = $x1;
- $profile_owner->x2 = $x2;
- $profile_owner->y1 = $y1;
- $profile_owner->y2 = $y2;
-
- $profile_owner->icontime = time();
-
- system_message(elgg_echo("profile:icon:uploaded"));
-} else {
- register_error(elgg_echo("profile:icon:notfound"));
-}
-
-//forward the user back to the upload page to crop
-$url = "{$vars['url']}pg/profile/{$profile_owner->username}/edit/icon";
-
-if (isloggedin()) {
- forward($url);
-}
diff --git a/mod/profile/actions/deletedefaultprofileitem.php b/mod/profile/actions/deletedefaultprofileitem.php
deleted file mode 100644
index b5b2eba84..000000000
--- a/mod/profile/actions/deletedefaultprofileitem.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/**
- * Elgg profile plugin edit default profile action removal
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-global $CONFIG;
-
-admin_gatekeeper();
-
-$id = (int)get_input('id');
-
-if ( ($id) && (set_plugin_setting("admin_defined_profile_$id", '', 'profile')) &&
- (set_plugin_setting("admin_defined_profile_type_$id", '', 'profile'))) {
- system_message(elgg_echo('profile:editdefault:delete:success'));
-} else {
- register_error(elgg_echo('profile:editdefault:delete:fail'));
-}
-
-forward($_SERVER['HTTP_REFERER']); \ No newline at end of file
diff --git a/mod/profile/actions/edit.php b/mod/profile/actions/edit.php
deleted file mode 100644
index 4afe4cd47..000000000
--- a/mod/profile/actions/edit.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/**
- * Elgg profile plugin edit action
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-global $CONFIG;
-gatekeeper();
-
-$profile_username = get_input('username');
-$profile_owner = get_user_by_username($profile_username);
-
-if (!$profile_owner || !$profile_owner->canEdit()) {
- system_message(elgg_echo("profile:noaccess"));
- forward($_SERVER['HTTP_REFERER']);
-}
-
-// grab the defined profile field names and their load the values from POST.
-// each field can have its own access, so sort that too.
-$input = array();
-$accesslevel = get_input('accesslevel');
-
-if (!is_array($accesslevel)) {
- $accesslevel = array();
-}
-
-foreach($CONFIG->profile as $shortname => $valuetype) {
- // the decoding is a stop gag to prevent &amp;&amp; showing up in profile fields
- // because it is escaped on both input (get_input()) and output (view:output/text). see #561 and #1405.
- // must decode in utf8 or string corruption occurs. see #1567.
- $value = html_entity_decode(get_input($shortname), ENT_COMPAT, 'UTF-8');
-
- // limit to reasonable sizes.
- if ($valuetype != 'longtext' && elgg_strlen($value) > 250) {
- $error = sprintf(elgg_echo('profile:field_too_long'), elgg_echo("profile:{$shortname}"));
- register_error($error);
- forward($_SERVER['HTTP_REFERER']);
- }
-
- if ($valuetype == 'tags') {
- $value = string_to_tag_array($value);
- }
-
- $input[$shortname] = $value;
-}
-
-// display name is handled separately
-if ($name = strip_tags(get_input('name'))) {
- if (elgg_strlen($name) > 50) {
- register_error(elgg_echo('user:name:fail'));
- } else {
- $profile_owner->name = $name;
- // @todo this is weird...giving two notifications?
- if ($profile_owner->save()) {
- system_message(elgg_echo('user:name:success'));
- } else {
- register_error(elgg_echo('user:name:fail'));
- }
- }
-}
-
-// go through custom fields
-if (sizeof($input) > 0) {
- foreach($input as $shortname => $value) {
- remove_metadata($profile_owner->guid, $shortname);
- if (isset($accesslevel[$shortname])) {
- $access_id = (int) $accesslevel[$shortname];
- } else {
- // this should never be executed since the access level should always be set
- $access_id = ACCESS_DEFAULT;
- }
- if (is_array($value)) {
- $i = 0;
- foreach($value as $interval) {
- $i++;
- $multiple = ($i > 1) ? TRUE : FALSE;
- create_metadata($profile_owner->guid, $shortname, $interval, 'text', $profile_owner->guid, $access_id, $multiple);
- }
- } else {
- create_metadata($profile_owner->getGUID(), $shortname, $value, 'text', $profile_owner->getGUID(), $access_id);
- }
- }
-
- $profile_owner->save();
-
- // Notify of profile update
- trigger_elgg_event('profileupdate',$user->type,$user);
-
- //add to river
- add_to_river('river/user/default/profileupdate','update',$_SESSION['user']->guid,$_SESSION['user']->guid,get_default_access($_SESSION['user']));
-
- system_message(elgg_echo("profile:saved"));
-}
-
-forward($profile_owner->getUrl()); \ No newline at end of file
diff --git a/mod/profile/actions/editdefault.php b/mod/profile/actions/editdefault.php
deleted file mode 100644
index 7f5fe0004..000000000
--- a/mod/profile/actions/editdefault.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/**
- * Elgg profile plugin edit default profile action
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-global $CONFIG;
-admin_gatekeeper();
-
-$label = sanitise_string(get_input('label'));
-$type = sanitise_string(get_input('type'));
-
-if (($label) && ($type)){
- // find next index for new field
- $n = 0;
- while (get_plugin_setting("admin_defined_profile_$n", 'profile')) {
- $n++;
- }
-
- if ( (set_plugin_setting("admin_defined_profile_$n", $label, 'profile')) &&
- (set_plugin_setting("admin_defined_profile_type_$n", $type, 'profile'))) {
- system_message(elgg_echo('profile:editdefault:success'));
- } else {
- register_error(elgg_echo('profile:editdefault:fail'));
- }
-} else {
- register_error(elgg_echo('profile:editdefault:fail'));
-}
-
-forward($_SERVER['HTTP_REFERER']); \ No newline at end of file
diff --git a/mod/profile/actions/iconupload.php b/mod/profile/actions/iconupload.php
deleted file mode 100644
index a0cb24c3d..000000000
--- a/mod/profile/actions/iconupload.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/**
- * Elgg profile plugin upload new user icon action
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-gatekeeper();
-
-$profile_username = get_input('username');
-$profile_owner = get_user_by_username($profile_username);
-
-if (!$profile_owner || !($profile_owner instanceof ElggUser) || !$profile_owner->canEdit()) {
- register_error(elgg_echo('profile:icon:fail'));
- forward($_SERVER['HTTP_REFERER']);
-}
-
-$profile_owner_guid = $profile_owner->getGUID();
-
-//@todo make this configurable?
-$icon_sizes = array(
- 'topbar' => array('w'=>16, 'h'=>16, 'square'=>TRUE),
- 'tiny' => array('w'=>25, 'h'=>25, 'square'=>TRUE),
- 'small' => array('w'=>40, 'h'=>40, 'square'=>TRUE),
- 'medium' => array('w'=>100, 'h'=>100, 'square'=>TRUE),
- 'large' => array('w'=>200, 'h'=>200, 'square'=>FALSE),
- 'master' => array('w'=>1600, 'h'=>1600, 'square'=>FALSE)
-);
-
-// get the images and save their file handlers into an array
-// so we can do clean up if one fails.
-$files = array();
-foreach ($icon_sizes as $name => $size_info) {
- $resized = get_resized_image_from_uploaded_file('profileicon', $size_info['w'], $size_info['h'], $size_info['square']);
-
- if ($resized) {
- //@todo Make these actual entities. See exts #348.
- $file = new ElggFile();
- $file->owner_guid = $profile_owner_guid;
- $file->setFilename("profile/{$profile_username}{$name}.jpg");
- $file->open('write');
- $file->write($resized);
- $file->close();
- $files[] = $file;
- } else {
- // cleanup on fail
- foreach ($files as $file) {
- $file->delete();
- }
-
- system_message(elgg_echo('profile:icon:notfound'));
- forward($_SERVER['HTTP_REFERER']);
- }
-}
-
-$profile_owner->icontime = time();
-if (trigger_elgg_event('profileiconupdate', $profile_owner->type, $profile_owner)) {
- // pull this out into the river plugin.
- //add_to_river('river/user/default/profileiconupdate','update',$user->guid,$user->guid);
- system_message(elgg_echo("profile:icon:uploaded"));
-}
-
-//forward the user back to the upload page to crop
-forward($_SERVER['HTTP_REFERER']);
diff --git a/mod/profile/actions/resetdefaultprofile.php b/mod/profile/actions/resetdefaultprofile.php
deleted file mode 100644
index a6c90d4b7..000000000
--- a/mod/profile/actions/resetdefaultprofile.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/**
- * Elgg profile plugin edit default profile action
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-global $CONFIG;
-admin_gatekeeper();
-
-$n = 0;
-while (get_plugin_setting("admin_defined_profile_$n", 'profile')) {
- set_plugin_setting("admin_defined_profile_$n", '', 'profile');
- set_plugin_setting("admin_defined_profile_type_$n", '', 'profile');
-
- $n++;
-}
-
-set_plugin_setting('user_defined_fields', FALSE, 'profile');
-
-system_message(elgg_echo('profile:defaultprofile:reset'));
-
-forward($_SERVER['HTTP_REFERER']); \ No newline at end of file
diff --git a/mod/profile/defaultprofile.php b/mod/profile/defaultprofile.php
deleted file mode 100644
index 55638ba02..000000000
--- a/mod/profile/defaultprofile.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * Elgg profile index
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
-
-admin_gatekeeper();
-set_context('admin');
-
-$title = elgg_view_title(elgg_echo('profile:edit:default'));
-$form = elgg_view('profile/editdefaultprofile');
-
-set_context('search');
-
-
-// List form elements
-$n = 0;
-$loaded_defaults = array();
-while ($translation = get_plugin_setting("admin_defined_profile_$n", 'profile'))
-{
- $type = get_plugin_setting("admin_defined_profile_type_$n", 'profile');
- $listing .= elgg_view("profile/", array('value' => $translation));
-
- $even_odd = ( 'odd' != $even_odd ) ? 'odd' : 'even';
-
- $listing .= "<p class=\"{$even_odd}\"><b>$translation: </b>";
- $listing .= elgg_view("output/{$type}",array('value' => " [$type]"));
- $listing .= "</p>";
-
- $n++;
-}
-
-$listing .= "<div class='default_profile_reset'>" . elgg_view('input/form',
- array(
- 'body' => elgg_view('input/submit', array('value' => elgg_echo('profile:resetdefault'),'class' => 'action_button disabled')),
- 'action' => $CONFIG->wwwroot . 'action/profile/editdefault/reset'
- )
-) . "</div>";
-
-set_context('admin');
-
-page_draw(elgg_echo('profile:edit:default'),elgg_view_layout("one_column_with_sidebar", $title . $form . $listing)); \ No newline at end of file
diff --git a/mod/profile/edit.php b/mod/profile/edit.php
deleted file mode 100644
index 91db99a2e..000000000
--- a/mod/profile/edit.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * Elgg profile editor
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @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 owner of profile - set in page handler
-$user = page_owner_entity();
-if (!$user) {
- register_error(elgg_echo("profile:notfound"));
- forward();
-}
-
-// check if logged in user can edit this profile
-if (!$user->canEdit()) {
- register_error(elgg_echo("profile:noaccess"));
- forward();
-}
-
-// Get edit form
-$area1 = elgg_view_title(elgg_echo('profile:edit'));
-$area1 .= elgg_view("profile/edit",array('entity' => $user));
-
-set_context('profile_edit');
-
-// get the required canvas area
-$body = elgg_view_layout("one_column_with_sidebar", $area1);
-
-// Draw the page
-page_draw(elgg_echo("profile:edit"),$body);
diff --git a/mod/profile/editicon.php b/mod/profile/editicon.php
deleted file mode 100644
index 0e73c8d81..000000000
--- a/mod/profile/editicon.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * Elgg upload new profile icon
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-// Load the Elgg framework
-require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
-
-// Make sure we're logged in
-if (!isloggedin()) {
- forward();
-}
-
-// Get owner of profile - set in page handler
-$user = page_owner_entity();
-if (!$user) {
- register_error(elgg_echo("profile:notfound"));
- forward();
-}
-
-// check if logged in user can edit this profile icon
-if (!$user->canEdit()) {
- register_error(elgg_echo("profile:icon:noaccess"));
- forward();
-}
-
-// set title
-$area1 = elgg_view_title(elgg_echo('profile:createicon:header'));
-$area1 .= elgg_view("profile/edit_icon", array('user' => $user));
-
-set_context('profile_edit');
-
-// Get the form and correct canvas area
-$body = elgg_view_layout("one_column_with_sidebar", $area1);
-
-// Draw the page
-page_draw(elgg_echo("profile:editicon"), $body);
diff --git a/mod/profile/graphics/defaultlarge.gif b/mod/profile/graphics/defaultlarge.gif
deleted file mode 100644
index 6ea3bd4cd..000000000
--- a/mod/profile/graphics/defaultlarge.gif
+++ /dev/null
Binary files differ
diff --git a/mod/profile/graphics/defaultmaster.gif b/mod/profile/graphics/defaultmaster.gif
deleted file mode 100644
index 5bfd67a2d..000000000
--- a/mod/profile/graphics/defaultmaster.gif
+++ /dev/null
Binary files differ
diff --git a/mod/profile/graphics/defaultmedium.gif b/mod/profile/graphics/defaultmedium.gif
deleted file mode 100644
index c6b2e6a6d..000000000
--- a/mod/profile/graphics/defaultmedium.gif
+++ /dev/null
Binary files differ
diff --git a/mod/profile/graphics/defaultsmall.gif b/mod/profile/graphics/defaultsmall.gif
deleted file mode 100644
index 661d72f04..000000000
--- a/mod/profile/graphics/defaultsmall.gif
+++ /dev/null
Binary files differ
diff --git a/mod/profile/graphics/defaulttiny.gif b/mod/profile/graphics/defaulttiny.gif
deleted file mode 100644
index 1775346bc..000000000
--- a/mod/profile/graphics/defaulttiny.gif
+++ /dev/null
Binary files differ
diff --git a/mod/profile/graphics/defaulttopbar.gif b/mod/profile/graphics/defaulttopbar.gif
deleted file mode 100644
index c3616aeb5..000000000
--- a/mod/profile/graphics/defaulttopbar.gif
+++ /dev/null
Binary files differ
diff --git a/mod/profile/icon.php b/mod/profile/icon.php
deleted file mode 100644
index 463eb3db5..000000000
--- a/mod/profile/icon.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
-* Elgg profile icon
-*
-* @package ElggProfile
-* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
-* @author Curverider Ltd <info@elgg.com>
-* @copyright Curverider Ltd 2008-2010
-* @link http://elgg.com/
-*/
-
-require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
-
-// Get the owning user
-$user = page_owner_entity();
-$username = $user->username;
-
-// Get the size
-$size = strtolower(get_input('size'));
-if (!in_array($size,array('large','medium','small','tiny','master','topbar')))
- $size = "medium";
-
-// Try and get the icon
-$filehandler = new ElggFile();
-$filehandler->owner_guid = $user->getGUID();
-$filehandler->setFilename("profile/" . $username . $size . ".jpg");
-
-$success = false;
-if ($filehandler->open("read")) {
- if ($contents = $filehandler->read($filehandler->size())) {
- $success = true;
- }
-}
-
-if (!$success) {
- global $CONFIG;
- $path = elgg_view('icon/user/default/'.$size);
- header("Location: {$path}");
- exit;
-}
-
-header("Content-type: image/jpeg");
-header('Expires: ' . date('r',time() + 864000));
-header("Pragma: public");
-header("Cache-Control: public");
-header("Content-Length: " . strlen($contents));
-
-$splitString = str_split($contents, 1024);
-
-foreach($splitString as $chunk) {
- echo $chunk;
-} \ No newline at end of file
diff --git a/mod/profile/icondirect.php b/mod/profile/icondirect.php
index a9aed2eea..5f1599e0d 100644
--- a/mod/profile/icondirect.php
+++ b/mod/profile/icondirect.php
@@ -1,125 +1,77 @@
<?php
/**
- * Elgg profile icon
+ * Elgg profile icon cache/bypass
+ *
*
* @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
-*/
+ */
+// Get DB settings
require_once(dirname(dirname(dirname(__FILE__))). '/engine/settings.php');
-/**
- * UTF safe str_split.
- * This is only used here since we don't have access to the file store code.
- * TODO: This is a horrible hack, so clean this up!
- */
-function __id_mb_str_split($string, $charset = 'UTF8'){
- if (is_callable('mb_substr')){
- $length = mb_strlen($string);
- $array = array();
-
- while ($length){
- $array[] = mb_substr($string, 0, 1, $charset);
- $string = mb_substr($string, 1, $length, $charset);
- $length = mb_strlen($string);
- }
-
- return $array;
- } else {
- return str_split($string);
- }
-
- return FALSE;
-}
-
global $CONFIG;
-$contents = '';
-
-if ($mysql_dblink = @mysql_connect($CONFIG->dbhost,$CONFIG->dbuser,$CONFIG->dbpass, true)) {
- $username = $_GET['username'];
- //$username = preg_replace('/[^A-Za-z0-9\_\-]/i','',$username);
- $blacklist = '/[' .
- '\x{0080}-\x{009f}' . # iso-8859-1 control chars
- '\x{00a0}' . # non-breaking space
- '\x{2000}-\x{200f}' . # various whitespace
- '\x{2028}-\x{202f}' . # breaks and control chars
- '\x{3000}' . # ideographic space
- '\x{e000}-\x{f8ff}' . # private use
- ']/u';
- if (
- preg_match($blacklist, $username) ||
- (strpos($username, '/')!==false) ||
- (strpos($username, '\\')!==false) ||
- (strpos($username, '"')!==false) ||
- (strpos($username, '\'')!==false) ||
- (strpos($username, '*')!==false) ||
- (strpos($username, '&')!==false) ||
- (strpos($username, ' ')!==false)
- ) exit;
-
- $userarray = __id_mb_str_split($username);
-
- $matrix = '';
- $length = 5;
- if (sizeof($userarray) < $length) $length = sizeof($userarray);
- for ($n = 0; $n < $length; $n++) {
- $matrix .= $userarray[$n] . "/";
- }
-
- // Get the size
- $size = strtolower($_GET['size']);
- if (!in_array($size,array('large','medium','small','tiny','master','topbar')))
- $size = "medium";
-
- // Try and get the icon
- if (@mysql_select_db($CONFIG->dbname,$mysql_dblink)) {
- // get dataroot and simplecache_enabled in one select for efficiency
- if ($result = mysql_query("select name, value from {$CONFIG->dbprefix}datalists where name in ('dataroot','simplecache_enabled')",$mysql_dblink)) {
- $simplecache_enabled = true;
+
+// won't be able to serve anything if no joindate or guid
+if (!isset($_GET['joindate']) || !isset($_GET['guid'])) {
+ header("HTTP/1.1 404 Not Found");
+ exit;
+}
+
+$join_date = (int)$_GET['joindate'];
+$last_cache = (int)$_GET['lastcache']; // icontime
+$guid = (int)$_GET['guid'];
+
+// If is the same ETag, content didn't changed.
+$etag = $last_cache . $guid;
+if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == "\"$etag\"") {
+ header("HTTP/1.1 304 Not Modified");
+ exit;
+}
+
+$size = strtolower($_GET['size']);
+if (!in_array($size, array('large', 'medium', 'small', 'tiny', 'master', 'topbar'))) {
+ $size = "medium";
+}
+
+$mysql_dblink = @mysql_connect($CONFIG->dbhost, $CONFIG->dbuser, $CONFIG->dbpass, true);
+if ($mysql_dblink) {
+ if (@mysql_select_db($CONFIG->dbname, $mysql_dblink)) {
+ $result = mysql_query("select name, value from {$CONFIG->dbprefix}datalists where name='dataroot'", $mysql_dblink);
+ if ($result) {
$row = mysql_fetch_object($result);
while ($row) {
if ($row->name == 'dataroot') {
- $dataroot = $row->value;
- } else if ($row->name == 'simplecache_enabled') {
- $simplecache_enabled = $row->value;
+ $data_root = $row->value;
}
$row = mysql_fetch_object($result);
}
}
+
+ @mysql_close($mysql_dblink);
+
+ if (isset($data_root)) {
+
+ // this depends on ElggDiskFilestore::makeFileMatrix()
+ $user_path = date('Y/m/d/', $join_date) . $guid;
+
+ $filename = "$data_root$user_path/profile/{$guid}{$size}.jpg";
+ $filesize = @filesize($filename);
+ if ($filesize) {
+ header("Content-type: image/jpeg");
+ header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+6 months")), true);
+ header("Pragma: public");
+ header("Cache-Control: public");
+ header("Content-Length: $filesize");
+ header("ETag: \"$etag\"");
+ readfile($filename);
+ exit;
+ }
+ }
}
+
}
- //@todo forcing through the framework to ensure the matrix
- // is created the same way.
- //if ($simplecache_enabled) {
- if (false) {
- $filename = $dataroot . $matrix . "{$username}/profile/" . $username . $size . ".jpg";
- $contents = @file_get_contents($filename);
- if (empty($contents)) {
- global $viewinput;
- $viewinput['view'] = 'icon/user/default/'.$size;
- ob_start();
- include(dirname(dirname(dirname(__FILE__))).'/simplecache/view.php');
- $loc = ob_get_clean();
- header('Location: ' . $loc);
- exit;
- //$contents = @file_get_contents(dirname(__FILE__) . "/graphics/default{$size}.jpg");
- } else {
- header("Content-type: image/jpeg");
- header('Expires: ' . date('r',time() + 864000));
- header("Pragma: public");
- header("Cache-Control: public");
- header("Content-Length: " . strlen($contents));
- $splitString = str_split($contents, 1024);
- foreach($splitString as $chunk)
- echo $chunk;
- }
- } else {
- mysql_close($mysql_dblink);
- require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
- set_input('username',$username);
- set_input('size',$size);
- require_once(dirname(__FILE__).'/icon.php');
- } \ No newline at end of file
+
+// something went wrong so load engine and try to forward to default icon
+require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+elgg_log("Profile icon direct failed.", "WARNING");
+forward("_graphics/icons/user/default{$size}.gif");
diff --git a/mod/profile/index.php b/mod/profile/index.php
deleted file mode 100644
index 41552602d..000000000
--- a/mod/profile/index.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * Elgg profile index
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
-
-$username = get_input('username');
-$option = get_input('option', 'activity');
-$body = '';
-
-// Try and get the user from the username and set the page body accordingly
-if ($user = get_user_by_username($username)) {
- if ($user->isBanned() && !isadminloggedin()) {
- forward(); exit;
- }
- $body = elgg_view('profile/profile_navigation', array("option" => $option,"entity" => $user));
- switch($option){
- case 'activity':
- $body .= elgg_view('profile/profile_contents/details', array("entity" => $user));
- break;
-
- case 'friends':
- $body .= elgg_view('profile/profile_contents/friends', array("entity" => $user));
- break;
- case 'extend':
- $body .= elgg_view('profile/profile_contents/extend', array("entity" => $user));
- break;
-
- case 'twitter':
- $body .= elgg_view('profile/profile_contents/twitter', array("entity" => $user));
- break;
-
- case 'default':
- $body .= elgg_view('profile/profile_contents/details', array("entity" => $user));
- break;
- }
- $title = $user->name;
-} else {
- $body = elgg_echo("profile:notfound");
- $title = elgg_echo("profile");
-}
-$body = elgg_view_layout("one_column", $body);
-page_draw($title, $body); \ No newline at end of file
diff --git a/mod/profile/javascript.php b/mod/profile/javascript.php
deleted file mode 100644
index 62a934c15..000000000
--- a/mod/profile/javascript.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Elgg profile JS
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-// Get engine
-require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
-
-header("Content-type: text/javascript");
-header('Expires: ' . date('r',time() + 864000));
-header("Pragma: public");
-header("Cache-Control: public");
-echo elgg_view('profile/javascript'); \ No newline at end of file
diff --git a/mod/profile/languages/en.php b/mod/profile/languages/en.php
index ee1c20115..50f04bb33 100644
--- a/mod/profile/languages/en.php
+++ b/mod/profile/languages/en.php
@@ -1,93 +1,11 @@
<?php
/**
* Elgg profile plugin language pack
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
*/
$english = array(
-
-/**
- * Profile
- */
-
- 'profile' => "Profile",
- 'profile:edit:default' => 'Replace profile fields',
- 'profile:preview' => 'Preview',
-
-/**
- * Profile menu items and titles
- */
-
- 'profile:yours' => "My profile",
- 'profile:user' => "%s's profile",
-
- 'profile:edit' => "Edit profile",
- 'profile:profilepictureinstructions' => "Your avatar is the image that's displayed on your profile page. <br /> You can change it as often as you'd like. (File formats accepted: GIF, JPG or PNG)",
- 'profile:icon' => "Avatar",
- 'profile:createicon' => "Create your avatar",
- 'profile:currentavatar' => "Current avatar",
- 'profile:createicon:header' => "Profile picture",
- 'profile:profilepicturecroppingtool' => "Avatar cropping tool",
- 'profile:createicon:instructions' => "Click and drag a square below to match how you want your avatar cropped. A preview will appear in the box on the right. When you are happy with the preview, click 'Create your avatar'. This cropped version will be used throughout the site as your avatar. ",
-
- 'profile:editdetails' => "Edit profile",
- 'profile:editicon' => "Edit avatar",
-
- 'profile:aboutme' => "About me",
- 'profile:description' => "About me",
- 'profile:briefdescription' => "Brief description",
- 'profile:location' => "Location",
- 'profile:skills' => "Skills",
- 'profile:interests' => "Interests",
- 'profile:contactemail' => "Contact email",
- 'profile:phone' => "Telephone",
- 'profile:mobile' => "Mobile phone",
- 'profile:website' => "Website",
-
- 'profile:banned' => 'This user account has been suspended.',
- 'profile:deleteduser' => 'Deleted user',
-
- 'profile:river:update' => "%s updated their profile",
- 'profile:river:iconupdate' => "%s updated their profile icon",
-
- 'profile:label' => "Profile label",
- 'profile:type' => "Profile type",
- 'profile:twitter' => "Twitter username",
- 'twitter:visit' => "Visit this Twitter account",
- 'profile:editdefault:fail' => 'Default profile could not be saved',
- 'profile:editdefault:success' => 'Item successfully added to default profile',
-
-
- 'profile:editdefault:delete:fail' => 'Removed default profile item field failed',
- 'profile:editdefault:delete:success' => 'Default profile item deleted!',
-
- 'profile:defaultprofile:reset' => 'Default system profile reset',
-
- 'profile:resetdefault' => 'Reset default profile',
- 'profile:explainchangefields' => 'You can replace the existing profile fields with your own using the form below. First you give the new profile field a label, for example, \'Favorite team\'. Next you need to select the field type, for example, tags, url, text and so on. At any time you can revert back to the default profile set up.',
-
-
-/**
- * Profile status messages
- */
-
- 'profile:saved' => "Your profile was successfully saved.",
- 'profile:icon:uploaded' => "Your profile picture was successfully uploaded.",
-
-/**
- * Profile error messages
- */
-
- 'profile:noaccess' => "You do not have permission to edit this profile.",
- 'profile:notfound' => "Sorry, we could not find the specified profile.",
- 'profile:icon:notfound' => "Sorry, there was a problem uploading your profile picture.",
- 'profile:icon:noaccess' => 'You cannot change this profile icon',
- 'profile:field_too_long' => 'Cannot save your profile information because the "%s" section is too long.',
+ 'profile' => 'Profile',
+ 'profile:notfound' => 'Sorry. We could not find the requested profile.',
);
diff --git a/mod/profile/manifest.xml b/mod/profile/manifest.xml
index 2f53eae0d..86fbc7b7b 100644
--- a/mod/profile/manifest.xml
+++ b/mod/profile/manifest.xml
@@ -1,10 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
-<plugin_manifest>
- <field key="author" value="Curverider ltd" />
- <field key="version" value="1.7" />
- <field key="description" value="Elgg profile plugin." />
- <field key="website" value="http://www.elgg.org/" />
- <field key="copyright" value="(C) Curverider 2008-2010" />
- <field key="licence" value="GNU Public License version 2" />
- <field key="elgg_version" value="2010030101" />
+<plugin_manifest xmlns="http://www.elgg.org/plugin_manifest/1.8">
+ <name>Profile</name>
+ <description>The default profile plugin.</description>
+ <author>Core developers</author>
+ <version>1.8</version>
+ <category>bundled</category>
+ <category>social</category>
+ <website>http://elgg.org/</website>
+ <copyright>See COPYRIGHT.txt</copyright>
+ <license>GNU General Public License Version 2</license>
+ <activate_on_install>true</activate_on_install>
+ <requires>
+ <type>elgg_release</type>
+ <version>1.8</version>
+ </requires>
</plugin_manifest>
diff --git a/mod/profile/profile_lib.php b/mod/profile/profile_lib.php
deleted file mode 100644
index 7e092c003..000000000
--- a/mod/profile/profile_lib.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/**
- * Elgg profile index
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-/**
- * Returns the html for a user profile.
- *
- * @param string $username The username of the profile to display
- * @param string $section Which section is currently selected.
- *
- * return mixed FALSE or html for the profile.
- */
-function profile_get_user_profile_html($user, $section = 'activity') {
- $body = elgg_view('profile/profile_navigation', array('section' => $section, 'entity' => $user));
- $view_options = array('entity' => $user);
-
- switch($section){
- case 'friends':
- $body .= elgg_view('profile/profile_contents/friends', $view_options);
- break;
-
- case 'twitter':
- $body .= elgg_view('profile/profile_contents/twitter', $view_options);
- break;
-
- case 'details':
- $body .= elgg_view('profile/profile_contents/details', $view_options);
- break;
-
- default:
- case 'activity':
- $body .= elgg_view('profile/profile_contents/activity', $view_options);
- break;
- }
-
- $body .= elgg_view('profile/profile_contents/sidebar', array('section' => $section));
- return $body;
-}
-
-/**
- * Dispatch the html for the edit section
- *
- * @param unknown_type $user
- * @param unknown_type $page
- * @return string
- */
-function profile_get_user_edit_content($user, $page) {
- $section = (isset($page[2])) ? $page[2] : 'details';
-
- switch ($section) {
- case 'icon':
- $content .= elgg_view_title(elgg_echo('profile:edit'));
- $content .= elgg_view("profile/editicon", array('entity' => $user));
- break;
- default:
- case 'details':
- $content = elgg_view_title(elgg_echo('profile:edit'));
- $content .= elgg_view("profile/edit", array('entity' => $user));
- break;
- }
-
- return $content;
-} \ No newline at end of file
diff --git a/mod/profile/start.php b/mod/profile/start.php
index e66554d08..ab596f235 100644
--- a/mod/profile/start.php
+++ b/mod/profile/start.php
@@ -3,295 +3,186 @@
* Elgg profile plugin
*
* @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
*/
+elgg_register_event_handler('init', 'system', 'profile_init', 1);
+
+// Metadata on users needs to be independent
+// outside of init so it happens earlier in boot. See #3316
+register_metadata_as_independent('user');
+
/**
- * Profile init function; sets up the profile functions
- *
+ * Profile init function
*/
function profile_init() {
- global $CONFIG;
-
- require_once 'profile_lib.php';
// 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');
+ elgg_register_entity_url_handler('user', 'all', 'profile_url');
- // Set up the menu for logged-in users
- if (isloggedin()) {
- add_menu(elgg_echo('profile:yours'), $_SESSION['user']->getURL() . '/extend');
- }
+ elgg_register_plugin_hook_handler('entity:icon:url', 'user', 'profile_override_avatar_url');
+ elgg_unregister_plugin_hook_handler('entity:icon:url', 'user', 'user_avatar_hook');
- // Metadata on users needs to be independent
- register_metadata_as_independent('user');
- elgg_view_register_simplecache('icon/user/default/tiny');
- elgg_view_register_simplecache('icon/user/default/topbar');
- elgg_view_register_simplecache('icon/user/default/small');
- elgg_view_register_simplecache('icon/user/default/medium');
- elgg_view_register_simplecache('icon/user/default/large');
- elgg_view_register_simplecache('icon/user/default/master');
+ elgg_register_simplecache_view('icon/user/default/tiny');
+ elgg_register_simplecache_view('icon/user/default/topbar');
+ elgg_register_simplecache_view('icon/user/default/small');
+ elgg_register_simplecache_view('icon/user/default/medium');
+ elgg_register_simplecache_view('icon/user/default/large');
+ elgg_register_simplecache_view('icon/user/default/master');
- // Register a page handler, so we can have nice URLs
- register_page_handler('profile', 'profile_page_handler');
- register_page_handler('defaultprofile', 'profileedit_page_handler');
- register_page_handler('icon', 'profile_icon_handler');
- register_page_handler('iconjs', 'profile_iconjs_handler');
+ elgg_register_page_handler('profile', 'profile_page_handler');
- // Add Javascript reference to the page header
- elgg_extend_view('metatags', 'profile/metatags');
- elgg_extend_view('css', 'profile/css');
- elgg_extend_view('js/initialise_elgg', 'profile/javascript');
+ elgg_extend_view('page/elements/head', 'profile/metatags');
+ elgg_extend_view('css/elgg', 'profile/css');
+ elgg_extend_view('js/elgg', 'profile/js');
- // Now override icons
- register_plugin_hook('entity:icon:url', 'user', 'profile_usericon_hook');
+ // allow ECML in parts of the profile
+ elgg_register_plugin_hook_handler('get_views', 'ecml', 'profile_ecml_views_hook');
-}
-
-/**
- * This function loads a set of default fields into the profile, then triggers a hook letting other plugins to edit
- * add and delete fields.
- *
- * Note: This is a secondary system:init call and is run at a super low priority to guarantee that it is called after all
- * other plugins have initialised.
- */
-function profile_fields_setup() {
- global $CONFIG;
-
- $profile_defaults = array (
- 'description' => 'longtext',
- 'briefdescription' => 'text',
- 'location' => 'tags',
- 'interests' => 'tags',
- 'skills' => 'tags',
- 'contactemail' => 'email',
- 'phone' => 'text',
- 'mobile' => 'text',
- 'website' => 'url',
- 'twitter' => 'text'
- );
-
- // TODO: Have an admin interface for this
- $n = 0;
- $loaded_defaults = array();
- while ($translation = get_plugin_setting("admin_defined_profile_$n", 'profile')){
- // Add a translation
- add_translation(get_current_language(), array("profile:admin_defined_profile_$n" => $translation));
-
- // Detect type
- $type = get_plugin_setting("admin_defined_profile_type_$n", 'profile');
- if (!$type) $type = 'text';
-
- // Set array
- $loaded_defaults["admin_defined_profile_$n"] = $type;
-
- $n++;
- }
- if (count($loaded_defaults)) {
- $CONFIG->profile_using_custom = true;
- $profile_defaults = $loaded_defaults;
- }
-
- $CONFIG->profile = trigger_plugin_hook('profile:fields', 'profile', NULL, $profile_defaults);
-
- // register any tag metadata names
- foreach ($CONFIG->profile as $name => $type) {
- if ($type == 'tags') {
- elgg_register_tag_metadata_name($name);
- // register a tag name translation
- add_translation(get_current_language(), array("tag_names:$name" => elgg_echo("profile:$name")));
- }
- }
+ // allow admins to set default widgets for users on profiles
+ elgg_register_plugin_hook_handler('get_list', 'default_widgets', 'profile_default_widgets_hook');
}
/**
* Profile page handler
*
- * @param array $page Array of page elements, forwarded by the page handling mechanism
+ * @param array $page Array of URL segments passed by the page handling mechanism
+ * @return bool
*/
function profile_page_handler($page) {
- global $CONFIG;
- $username = $action = NULL;
-
- // short circuit if invalid or banned username
if (isset($page[0])) {
$username = $page[0];
$user = get_user_by_username($username);
+ elgg_set_page_owner_guid($user->guid);
+ } elseif (elgg_is_logged_in()) {
+ forward(elgg_get_logged_in_user_entity()->getURL());
+ }
- if (!$user || ($user->isBanned() && !isadminloggedin())) {
- return elgg_echo('profile:notfound');
- } else {
- set_input('username', $page[0]);
- }
+ // short circuit if invalid or banned username
+ if (!$user || ($user->isBanned() && !elgg_is_admin_logged_in())) {
+ register_error(elgg_echo('profile:notfound'));
+ forward();
}
+ $action = NULL;
if (isset($page[1])) {
$action = $page[1];
}
- switch ($action) {
- case 'edit':
- $layout = 'one_column_with_sidebar';
-
- if (!$user || !$user->canEdit()) {
- register_error(elgg_echo("profile:noaccess"));
- forward();
- }
-
- $content = profile_get_user_edit_content($user, $page);
- $content = elgg_view_layout($layout, $content);
- break;
-
- default:
- $layout = 'one_column';
- if (isset($page[1])) {
- $section = $page[1];
- } else {
- $section = 'activity';
- }
- $content = profile_get_user_profile_html($user, $section);
- $content = elgg_view_layout($layout, $content);
- break;
+ if ($action == 'edit') {
+ // use the core profile edit page
+ $base_dir = elgg_get_root_path();
+ require "{$base_dir}pages/profile/edit.php";
+ return true;
}
- page_draw($title, $content);
- return;
+ // main profile page
+ $params = array(
+ 'content' => elgg_view('profile/wrapper'),
+ 'num_columns' => 3,
+ );
+ $content = elgg_view_layout('widgets', $params);
+
+ $body = elgg_view_layout('one_column', array('content' => $content));
+ echo elgg_view_page($user->name, $body);
+ return true;
}
/**
- * Profile edit page handler
+ * Profile URL generator for $user->getUrl();
*
- * @param array $page Array of page elements, forwarded by the page handling mechanism
+ * @param ElggUser $user
+ * @return string User URL
*/
-function profileedit_page_handler($page) {
- global $CONFIG;
-
- // The username should be the file we're getting
- if (isset($page[0])) {
- switch ($page[0]) {
- default:
- include($CONFIG->pluginspath . "profile/defaultprofile.php");
- break;
- }
- }
+function profile_url($user) {
+ return elgg_get_site_url() . "profile/" . $user->username;
}
/**
- * Pagesetup function
+ * Use a URL for avatars that avoids loading Elgg engine for better performance
*
+ * @param string $hook
+ * @param string $entity_type
+ * @param string $return_value
+ * @param array $params
+ * @return string
*/
-function profile_pagesetup()
-{
- global $CONFIG;
- if (get_context() == 'admin' && isadminloggedin()) {
- add_submenu_item(elgg_echo('profile:edit:default'), $CONFIG->wwwroot . 'pg/defaultprofile/edit/');
+function profile_override_avatar_url($hook, $entity_type, $return_value, $params) {
+
+ // if someone already set this, quit
+ if ($return_value) {
+ return null;
}
- //add submenu options
- if (get_context() == "profile") {
- $page_owner = page_owner_entity();
- add_submenu_item(elgg_echo('profile:editdetails'), $CONFIG->wwwroot . "pg/profile/{$page_owner->username}/edit/details");
- add_submenu_item(elgg_echo('profile:editicon'), $CONFIG->wwwroot . "pg/profile/{$page_owner->username}/edit/icon");
+ $user = $params['entity'];
+ $size = $params['size'];
+
+ if (!elgg_instanceof($user, 'user')) {
+ return null;
}
-}
-/**
- * Profile icon page handler
- *
- * @param array $page Array of page elements, forwarded by the page handling mechanism
- */
-function profile_icon_handler($page) {
- global $CONFIG;
+ $user_guid = $user->getGUID();
+ $icon_time = $user->icontime;
- // The username should be the file we're getting
- if (isset($page[0])) {
- set_input('username',$page[0]);
+ if (!$icon_time) {
+ return "_graphics/icons/user/default{$size}.gif";
}
- if (isset($page[1])) {
- set_input('size',$page[1]);
+
+ if ($user->isBanned()) {
+ return null;
}
- // Include the standard profile index
- include($CONFIG->pluginspath . "profile/icon.php");
-}
-/**
- * Icon JS
- */
-function profile_iconjs_handler($page) {
- global $CONFIG;
- include($CONFIG->pluginspath . "profile/javascript.php");
+ $filehandler = new ElggFile();
+ $filehandler->owner_guid = $user_guid;
+ $filehandler->setFilename("profile/{$user_guid}{$size}.jpg");
+
+ try {
+ if ($filehandler->exists()) {
+ $join_date = $user->getTimeCreated();
+ return "mod/profile/icondirect.php?lastcache=$icon_time&joindate=$join_date&guid=$user_guid&size=$size";
+ }
+ } catch (InvalidParameterException $e) {
+ elgg_log("Unable to get profile icon for user with GUID $user_guid", 'ERROR');
+ return "_graphics/icons/default/$size.png";
+ }
+
+ return null;
}
/**
- * Profile URL generator for $user->getUrl();
+ * Parse ECML on parts of the profile
*
- * @param ElggUser $user
- * @return string User URL
+ * @param string $hook
+ * @param string $entity_type
+ * @param array $return_value
+ * @return array
*/
-function profile_url($user) {
- global $CONFIG;
- return $CONFIG->wwwroot . "pg/profile/" . $user->username;
+function profile_ecml_views_hook($hook, $entity_type, $return_value) {
+ $return_value['profile/profile_content'] = elgg_echo('profile');
+
+ return $return_value;
}
/**
- * This hooks into the getIcon API and provides nice user icons for users where possible.
+ * Register profile widgets with default widgets
*
- * @param unknown_type $hook
- * @param unknown_type $entity_type
- * @param unknown_type $returnvalue
- * @param unknown_type $params
- * @return unknown
+ * @param string $hook
+ * @param string $type
+ * @param array $return
+ * @return array
*/
-function profile_usericon_hook($hook, $entity_type, $returnvalue, $params){
- global $CONFIG;
- if ((!$returnvalue) && ($hook == 'entity:icon:url') && ($params['entity'] instanceof ElggUser)){
- $entity = $params['entity'];
- $type = $entity->type;
- $subtype = get_subtype_from_id($entity->subtype);
- $viewtype = $params['viewtype'];
- $size = $params['size'];
- $username = $entity->username;
-
- if ($icontime = $entity->icontime) {
- $icontime = "{$icontime}";
- } else {
- $icontime = "default";
- }
-
- if ($entity->isBanned()) {
- return elgg_view('icon/user/default/'.$size);
- }
-
- $filehandler = new ElggFile();
- $filehandler->owner_guid = $entity->getGUID();
- $filehandler->setFilename("profile/" . $username . $size . ".jpg");
+function profile_default_widgets_hook($hook, $type, $return) {
+ $return[] = array(
+ 'name' => elgg_echo('profile'),
+ 'widget_context' => 'profile',
+ 'widget_columns' => 3,
+
+ 'event' => 'create',
+ 'entity_type' => 'user',
+ 'entity_subtype' => ELGG_ENTITIES_ANY_VALUE,
+ );
- if ($filehandler->exists()) {
- //$url = $CONFIG->url . "pg/icon/$username/$size/$icontime.jpg";
- return $CONFIG->wwwroot . 'mod/profile/icondirect.php?lastcache='.$icontime.'&amp;username='.$entity->username.'&amp;size='.$size;
- }
- }
+ return $return;
}
-
-// Make sure the profile initialisation function is called on initialisation
-register_elgg_event_handler('init','system','profile_init',1);
-register_elgg_event_handler('init','system','profile_fields_setup', 10000); // Ensure this runs after other plugins
-
-register_elgg_event_handler('pagesetup','system','profile_pagesetup');
-register_elgg_event_handler('profileupdate','all','object_notifications');
-
-
-// Register actions
-global $CONFIG;
-register_action("profile/edit",false,$CONFIG->pluginspath . "profile/actions/edit.php");
-register_action("profile/iconupload",false,$CONFIG->pluginspath . "profile/actions/iconupload.php");
-register_action("profile/cropicon",false,$CONFIG->pluginspath . "profile/actions/cropicon.php");
-register_action("profile/editdefault",false,$CONFIG->pluginspath . "profile/actions/editdefault.php", true);
-register_action("profile/editdefault/delete",false,$CONFIG->pluginspath . "profile/actions/deletedefaultprofileitem.php", true);
-register_action("profile/editdefault/reset",false,$CONFIG->pluginspath . "profile/actions/resetdefaultprofile.php", true); \ No newline at end of file
diff --git a/mod/profile/views/default/icon/user/default/large.php b/mod/profile/views/default/icon/user/default/large.php
deleted file mode 100644
index 3ce382532..000000000
--- a/mod/profile/views/default/icon/user/default/large.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
- echo $vars['url'] . "mod/profile/graphics/defaultlarge.gif";
-?> \ No newline at end of file
diff --git a/mod/profile/views/default/icon/user/default/master.php b/mod/profile/views/default/icon/user/default/master.php
deleted file mode 100644
index 7c5ea847c..000000000
--- a/mod/profile/views/default/icon/user/default/master.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
- echo $vars['url'] . "mod/profile/graphics/defaultmaster.gif";
-?> \ No newline at end of file
diff --git a/mod/profile/views/default/icon/user/default/medium.php b/mod/profile/views/default/icon/user/default/medium.php
deleted file mode 100644
index d5f6db343..000000000
--- a/mod/profile/views/default/icon/user/default/medium.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
- echo $vars['url'] . "mod/profile/graphics/defaultmedium.gif";
-?> \ No newline at end of file
diff --git a/mod/profile/views/default/icon/user/default/small.php b/mod/profile/views/default/icon/user/default/small.php
deleted file mode 100644
index 55f113c41..000000000
--- a/mod/profile/views/default/icon/user/default/small.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
- echo $vars['url'] . "mod/profile/graphics/defaultsmall.gif";
-?> \ No newline at end of file
diff --git a/mod/profile/views/default/icon/user/default/tiny.php b/mod/profile/views/default/icon/user/default/tiny.php
deleted file mode 100644
index e47cdd3da..000000000
--- a/mod/profile/views/default/icon/user/default/tiny.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
- echo $vars['url'] . "mod/profile/graphics/defaulttiny.gif";
-?> \ No newline at end of file
diff --git a/mod/profile/views/default/icon/user/default/topbar.php b/mod/profile/views/default/icon/user/default/topbar.php
deleted file mode 100644
index ad11588fa..000000000
--- a/mod/profile/views/default/icon/user/default/topbar.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
- echo $vars['url'] . "mod/profile/graphics/defaulttopbar.gif";
-?> \ No newline at end of file
diff --git a/mod/profile/views/default/js/jquery.imgareaselect-0.8.js b/mod/profile/views/default/js/jquery.imgareaselect-0.8.js
deleted file mode 100644
index 456114755..000000000
--- a/mod/profile/views/default/js/jquery.imgareaselect-0.8.js
+++ /dev/null
@@ -1,635 +0,0 @@
-/*
- * imgAreaSelect jQuery plugin
- * version 0.8
- *
- * Copyright (c) 2008-2009 Michal Wojciechowski (odyniec.net)
- *
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * http://odyniec.net/projects/imgareaselect/
- *
- */
-
-(function($) {
-
-$.imgAreaSelect = { onKeyPress: null };
-
-$.imgAreaSelect.init = function (img, options) {
- var $img = $(img), imgLoaded, $box = $('<div />'), $area = $('<div />'),
- $border1 = $('<div />'), $border2 = $('<div />'), $areaOpera,
- $outLeft = $('<div />'), $outTop = $('<div />'),
- $outRight = $('<div />'), $outBottom = $('<div />'),
- $handles = $([]), handleWidth, handles = [ ], left, top, M = Math,
- imgOfs, imgWidth, imgHeight, $parent, parOfs,
- zIndex = 0, position = 'absolute', $p, startX, startY,
- scaleX = 1, scaleY = 1, resizeMargin = 10, resize = [ ], V = 0, H = 1,
- d, aspectRatio, x1, x2, y1, y2, x, y, adjusted, shown, i,
- selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 };
-
- var $o = $outLeft.add($outTop).add($outRight).add($outBottom);
-
- function viewX(x)
- {
- return x + imgOfs.left - parOfs.left;
- }
-
- function viewY(y)
- {
- return y + imgOfs.top - parOfs.top;
- }
-
- function selX(x)
- {
- return x - imgOfs.left + parOfs.left;
- }
-
- function selY(y)
- {
- return y - imgOfs.top + parOfs.top;
- }
-
- function evX(event)
- {
- return event.pageX - parOfs.left;
- }
-
- function evY(event)
- {
- return event.pageY - parOfs.top;
- }
-
- function trueSelection()
- {
- return { x1: M.round(selection.x1 * scaleX),
- y1: M.round(selection.y1 * scaleY),
- x2: M.round(selection.x2 * scaleX),
- y2: M.round(selection.y2 * scaleY),
- width: M.round(selection.x2 * scaleX) - M.round(selection.x1 * scaleX),
- height: M.round(selection.y2 * scaleY) - M.round(selection.y1 * scaleY) };
- }
-
- function getZIndex()
- {
- $p = $img;
-
- while ($p.length && !$p.is('body')) {
- if (!isNaN($p.css('z-index')) && $p.css('z-index') > zIndex)
- zIndex = $p.css('z-index');
- if ($p.css('position') == 'fixed')
- position = 'fixed';
-
- $p = $p.parent();
- }
-
- if (!isNaN(options.zIndex))
- zIndex = options.zIndex;
- }
-
- function adjust()
- {
- imgOfs = { left: M.round($img.offset().left), top: M.round($img.offset().top) };
- imgWidth = $img.width();
- imgHeight = $img.height();
-
- if ($().jquery == '1.3.2' && $.browser.safari && position == 'fixed') {
- imgOfs.top += M.max(document.documentElement.scrollTop, $('body').scrollTop());
- imgOfs.left += M.max(document.documentElement.scrollLeft, $('body').scrollLeft());
- }
-
- parOfs = $.inArray($parent.css('position'), ['absolute', 'relative']) != -1 ?
- { left: M.round($parent.offset().left) - $parent.scrollLeft(),
- top: M.round($parent.offset().top) - $parent.scrollTop() } :
- position == 'fixed' ?
- { left: $(document).scrollLeft(), top: $(document).scrollTop() } :
- { left: 0, top: 0 };
-
- left = viewX(0);
- top = viewY(0);
- }
-
- function update(resetKeyPress)
- {
- if (!shown) return;
-
- $box.css({
- left: viewX(selection.x1) + 'px', top: viewY(selection.y1) + 'px',
- width: selection.width + 'px', height: selection.height + 'px'
- });
- $area.add($border1).add($border2).css({
- left: '0px', top: '0px',
- width: M.max(selection.width - options.borderWidth * 2, 0) + 'px',
- height: M.max(selection.height - options.borderWidth * 2, 0) + 'px'
- });
- $border1.css({ borderStyle: 'solid', borderColor: options.borderColor1 });
- $border2.css({ borderStyle: 'dashed', borderColor: options.borderColor2 });
- $border1.add($border2).css({ opacity: options.borderOpacity });
- $outLeft.css({ left: left + 'px', top: top + 'px',
- width: selection.x1 + 'px', height: imgHeight + 'px' });
- $outTop.css({ left: left + selection.x1 + 'px', top: top + 'px',
- width: selection.width + 'px', height: selection.y1 + 'px' });
- $outRight.css({ left: left + selection.x2 + 'px', top: top + 'px',
- width: imgWidth - selection.x2 + 'px', height: imgHeight + 'px' });
- $outBottom.css({ left: left + selection.x1 + 'px', top: top + selection.y2 + 'px',
- width: selection.width + 'px', height: imgHeight - selection.y2 + 'px' });
-
- if (handles.length) {
- handles[1].css({ left: selection.width - handleWidth + 'px' });
- handles[2].css({ left: selection.width - handleWidth + 'px',
- top: selection.height - handleWidth + 'px' });
- handles[3].css({ top: selection.height - handleWidth + 'px' });
-
- if (handles.length == 8) {
- handles[4].css({ left: (selection.width - handleWidth) / 2 + 'px' });
- handles[5].css({ left: selection.width - handleWidth + 'px',
- top: (selection.height - handleWidth) / 2 + 'px' });
- handles[6].css({ left: (selection.width - handleWidth) / 2 + 'px',
- top: selection.height - handleWidth + 'px' });
- handles[7].css({ top: (selection.height - handleWidth) / 2 + 'px' });
- }
- }
-
- if (resetKeyPress !== false) {
- if ($.imgAreaSelect.keyPress != docKeyPress)
- $(document).unbind($.imgAreaSelect.keyPress,
- $.imgAreaSelect.onKeyPress);
-
- if (options.keys)
- $(document).bind($.imgAreaSelect.keyPress,
- $.imgAreaSelect.onKeyPress = docKeyPress);
- }
-
- if ($.browser.msie && options.borderWidth == 1 && options.borderOpacity < 1) {
- $border1.add($border2).css('margin', '0');
- setTimeout(function () { $border1.add($border2).css('margin', 'auto'); }, 0);
- }
- }
-
- function areaMouseMove(event)
- {
- if (!adjusted) {
- adjust();
- adjusted = true;
-
- $box.one('mouseout', function () { adjusted = false; });
- }
-
- x = selX(evX(event)) - selection.x1;
- y = selY(evY(event)) - selection.y1;
-
- resize = [ ];
-
- if (options.resizable) {
- if (y <= resizeMargin)
- resize[V] = 'n';
- else if (y >= selection.height - resizeMargin)
- resize[V] = 's';
- if (x <= resizeMargin)
- resize[H] = 'w';
- else if (x >= selection.width - resizeMargin)
- resize[H] = 'e';
- }
-
- $box.css('cursor', resize.length ? resize.join('') + '-resize' :
- options.movable ? 'move' : '');
- if ($areaOpera)
- $areaOpera.toggle();
- }
-
- function docMouseUp(event)
- {
- resize = [ ];
-
- $('body').css('cursor', '');
-
- if (options.autoHide || selection.width * selection.height == 0)
- $box.add($o).hide();
-
- options.onSelectEnd(img, trueSelection());
-
- $(document).unbind('mousemove', selectingMouseMove);
- $box.mousemove(areaMouseMove);
- }
-
- function areaMouseDown(event)
- {
- if (event.which != 1) return false;
-
- adjust();
-
- if (options.resizable && resize.length > 0) {
- $('body').css('cursor', resize.join('') + '-resize');
-
- x1 = viewX(selection[resize[H] == 'w' ? 'x2' : 'x1']);
- y1 = viewY(selection[resize[V] == 'n' ? 'y2' : 'y1']);
-
- $(document).mousemove(selectingMouseMove)
- .one('mouseup', docMouseUp);
- $box.unbind('mousemove', areaMouseMove);
- }
- else if (options.movable) {
- startX = left + selection.x1 - evX(event);
- startY = top + selection.y1 - evY(event);
-
- $box.unbind('mousemove', areaMouseMove);
-
- $(document).mousemove(movingMouseMove)
- .one('mouseup', function () {
- options.onSelectEnd(img, trueSelection());
-
- $(document).unbind('mousemove', movingMouseMove);
- $box.mousemove(areaMouseMove);
- });
- }
- else
- $img.mousedown(event);
-
- return false;
- }
-
- function aspectRatioXY()
- {
- x2 = M.max(left, M.min(left + imgWidth,
- x1 + M.abs(y2 - y1) * aspectRatio * (x2 < x1 ? -1 : 1)));
- y2 = M.round(M.max(top, M.min(top + imgHeight,
- y1 + M.abs(x2 - x1) / aspectRatio * (y2 < y1 ? -1 : 1))));
- x2 = M.round(x2);
- }
-
- function aspectRatioYX()
- {
- y2 = M.max(top, M.min(top + imgHeight,
- y1 + M.abs(x2 - x1) / aspectRatio * (y2 < y1 ? -1 : 1)));
- x2 = M.round(M.max(left, M.min(left + imgWidth,
- x1 + M.abs(y2 - y1) * aspectRatio * (x2 < x1 ? -1 : 1))));
- y2 = M.round(y2);
- }
-
- function doResize()
- {
- if (options.minWidth && M.abs(x2 - x1) < options.minWidth) {
- x2 = x1 - options.minWidth * (x2 < x1 ? 1 : -1);
-
- if (x2 < left)
- x1 = left + options.minWidth;
- else if (x2 > left + imgWidth)
- x1 = left + imgWidth - options.minWidth;
- }
-
- if (options.minHeight && M.abs(y2 - y1) < options.minHeight) {
- y2 = y1 - options.minHeight * (y2 < y1 ? 1 : -1);
-
- if (y2 < top)
- y1 = top + options.minHeight;
- else if (y2 > top + imgHeight)
- y1 = top + imgHeight - options.minHeight;
- }
-
- x2 = M.max(left, M.min(x2, left + imgWidth));
- y2 = M.max(top, M.min(y2, top + imgHeight));
-
- if (aspectRatio)
- if (M.abs(x2 - x1) / aspectRatio > M.abs(y2 - y1))
- aspectRatioYX();
- else
- aspectRatioXY();
-
- if (options.maxWidth && M.abs(x2 - x1) > options.maxWidth) {
- x2 = x1 - options.maxWidth * (x2 < x1 ? 1 : -1);
- if (aspectRatio) aspectRatioYX();
- }
-
- if (options.maxHeight && M.abs(y2 - y1) > options.maxHeight) {
- y2 = y1 - options.maxHeight * (y2 < y1 ? 1 : -1);
- if (aspectRatio) aspectRatioXY();
- }
-
- selection = { x1: selX(M.min(x1, x2)), x2: selX(M.max(x1, x2)),
- y1: selY(M.min(y1, y2)), y2: selY(M.max(y1, y2)),
- width: M.abs(x2 - x1), height: M.abs(y2 - y1) };
-
- update();
-
- options.onSelectChange(img, trueSelection());
- }
-
- function selectingMouseMove(event)
- {
- x2 = !resize.length || resize[H] || aspectRatio ? evX(event) : viewX(selection.x2);
- y2 = !resize.length || resize[V] || aspectRatio ? evY(event) : viewY(selection.y2);
-
- doResize();
-
- return false;
- }
-
- function doMove(newX1, newY1)
- {
- x2 = (x1 = newX1) + selection.width;
- y2 = (y1 = newY1) + selection.height;
-
- selection = $.extend(selection, { x1: selX(x1), y1: selY(y1),
- x2: selX(x2), y2: selY(y2) });
-
- update();
-
- options.onSelectChange(img, trueSelection());
- }
-
- function movingMouseMove(event)
- {
- x1 = M.max(left, M.min(startX + evX(event), left + imgWidth - selection.width));
- y1 = M.max(top, M.min(startY + evY(event), top + imgHeight - selection.height));
-
- doMove(x1, y1);
-
- event.preventDefault();
- return false;
- }
-
- function startSelection(event)
- {
- adjust();
-
- x2 = x1;
- y2 = y1;
- doResize();
-
- resize = [ ];
-
- $box.add($o.is(':visible') ? null : $o).show();
- shown = true;
-
- $(document).unbind('mouseup', cancelSelection)
- .mousemove(selectingMouseMove).one('mouseup', docMouseUp);
- $box.unbind('mousemove', areaMouseMove);
-
- options.onSelectStart(img, trueSelection());
- }
-
- function cancelSelection()
- {
- $(document).unbind('mousemove', startSelection);
- $box.add($o).hide();
-
- selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 };
-
- options.onSelectChange(img, selection);
- options.onSelectEnd(img, selection);
- }
-
- function imgMouseDown(event)
- {
- if (event.which != 1) return false;
-
- adjust();
- startX = x1 = evX(event);
- startY = y1 = evY(event);
-
- $(document).one('mousemove', startSelection)
- .one('mouseup', cancelSelection);
-
- return false;
- }
-
- function parentScroll()
- {
- adjust();
- update(false);
- x1 = viewX(selection.x1); y1 = viewY(selection.y1);
- x2 = viewX(selection.x2); y2 = viewY(selection.y2);
- }
-
- function imgLoad()
- {
- imgLoaded = true;
-
- if (options.show) {
- shown = true;
- adjust();
- update();
- $box.add($o).show();
- }
-
- $box.add($o).css({ visibility: '' });
- }
-
- var docKeyPress = function(event) {
- var k = options.keys, d, t, key = event.keyCode || event.which;
-
- d = !isNaN(k.alt) && (event.altKey || event.originalEvent.altKey) ? k.alt :
- !isNaN(k.ctrl) && event.ctrlKey ? k.ctrl :
- !isNaN(k.shift) && event.shiftKey ? k.shift :
- !isNaN(k.arrows) ? k.arrows : 10;
-
- if (k.arrows == 'resize' || (k.shift == 'resize' && event.shiftKey) ||
- (k.ctrl == 'resize' && event.ctrlKey) ||
- (k.alt == 'resize' && (event.altKey || event.originalEvent.altKey)))
- {
- switch (key) {
- case 37:
- d = -d;
- case 39:
- t = M.max(x1, x2);
- x1 = M.min(x1, x2);
- x2 = M.max(t + d, x1);
- if (aspectRatio) aspectRatioYX();
- break;
- case 38:
- d = -d;
- case 40:
- t = M.max(y1, y2);
- y1 = M.min(y1, y2);
- y2 = M.max(t + d, y1);
- if (aspectRatio) aspectRatioXY();
- break;
- default:
- return;
- }
-
- doResize();
- }
- else {
- x1 = M.min(x1, x2);
- y1 = M.min(y1, y2);
-
- switch (key) {
- case 37:
- doMove(M.max(x1 - d, left), y1);
- break;
- case 38:
- doMove(x1, M.max(y1 - d, top));
- break;
- case 39:
- doMove(x1 + M.min(d, imgWidth - selX(x2)), y1);
- break;
- case 40:
- doMove(x1, y1 + M.min(d, imgHeight - selY(y2)));
- break;
- default:
- return;
- }
- }
-
- return false;
- };
-
- this.setOptions = function(newOptions)
- {
- if (newOptions.parent)
- ($parent = $(newOptions.parent)).append($box.add($o));
-
- adjust();
- getZIndex();
-
- if (newOptions.x1 != null) {
- selection = { x1: newOptions.x1, y1: newOptions.y1,
- x2: newOptions.x2, y2: newOptions.y2 };
- newOptions.show = !newOptions.hide;
-
- x1 = viewX(selection.x1); y1 = viewY(selection.y1);
- x2 = viewX(selection.x2); y2 = viewY(selection.y2);
- selection.width = x2 - x1;
- selection.height = y2 - y1;
- }
-
- if (newOptions.handles != null) {
- $handles.remove();
- $handles = $(handles = [ ]);
-
- i = newOptions.handles ? newOptions.handles == 'corners' ? 4 : 8 : 0;
-
- while (i--)
- $handles = $handles.add(handles[i] = $('<div />'));
-
- handleWidth = 4 + options.borderWidth;
-
- $handles.css({ position: 'absolute', borderWidth: options.borderWidth + 'px',
- borderStyle: 'solid', borderColor: options.borderColor1,
- opacity: options.borderOpacity, backgroundColor: options.borderColor2,
- width: handleWidth + 'px', height: handleWidth + 'px',
- fontSize: '0px', zIndex: zIndex > 0 ? zIndex + 1 : '1' })
- .addClass(options.classPrefix + '-handle');
-
- handleWidth += options.borderWidth * 2;
- }
-
- update();
-
- options = $.extend(options, newOptions);
-
- if (options.imageWidth || options.imageHeight) {
- scaleX = (parseInt(options.imageWidth) || imgWidth) / imgWidth;
- scaleY = (parseInt(options.imageHeight) || imgHeight) / imgHeight;
- }
-
- if (newOptions.keys)
- options.keys = $.extend({ shift: 1, ctrl: 'resize' },
- newOptions.keys === true ? { } : newOptions.keys);
-
- $o.addClass(options.classPrefix + '-outer');
- $area.addClass(options.classPrefix + '-selection');
- $border1.addClass(options.classPrefix + '-border1');
- $border2.addClass(options.classPrefix + '-border2');
-
- $box.add($area).add($border1).add($border2).css({ borderWidth: options.borderWidth + 'px' });
- $area.css({ backgroundColor: options.selectionColor, opacity: options.selectionOpacity });
- $border1.css({ borderStyle: 'solid', borderColor: options.borderColor1 });
- $border2.css({ borderStyle: 'dashed', borderColor: options.borderColor2 });
- $border1.add($border2).css({ opacity: options.borderOpacity });
- $o.css({ opacity: options.outerOpacity, backgroundColor: options.outerColor });
-
- $box.append($area.add($border1).add($border2).add($handles).add($areaOpera));
-
- if (newOptions.hide)
- $box.add($o).hide();
- else if (newOptions.show && imgLoaded) {
- shown = true;
- update();
- $box.add($o).show();
- }
-
- aspectRatio = options.aspectRatio && (d = options.aspectRatio.split(/:/)) ?
- d[0] / d[1] : null;
-
- if (aspectRatio)
- if (options.minWidth)
- options.minHeight = parseInt(options.minWidth / aspectRatio);
- else if (options.minHeight)
- options.minWidth = parseInt(options.minHeight * aspectRatio);
-
- if (options.disable || options.enable === false) {
- $box.unbind('mousemove', areaMouseMove).unbind('mousedown', areaMouseDown);
- $img.add($o).unbind('mousedown', imgMouseDown);
- $(window).unbind('resize', parentScroll);
- $img.add($img.parents()).unbind('scroll', parentScroll);
- }
- else if (options.enable || options.disable === false) {
- if (options.resizable || options.movable)
- $box.mousemove(areaMouseMove).mousedown(areaMouseDown);
-
- if (!options.persistent)
- $img.add($o).mousedown(imgMouseDown);
- $(window).resize(parentScroll);
- $img.add($img.parents()).scroll(parentScroll);
- }
-
- options.enable = options.disable = undefined;
- };
-
- if ($.browser.msie)
- $img.attr('unselectable', 'on');
-
- $.imgAreaSelect.keyPress = $.browser.msie ||
- $.browser.safari ? 'keydown' : 'keypress';
-
- if ($.browser.opera)
- ($areaOpera = $('<div style="width: 100%; height: 100%; position: absolute;" />'))
- .css({ zIndex: zIndex > 0 ? zIndex + 2 : '2' });
-
- this.setOptions(options = $.extend({
- borderColor1: '#000',
- borderColor2: '#fff',
- borderWidth: 1,
- borderOpacity: .5,
- classPrefix: 'imgareaselect',
- movable: true,
- resizable: true,
- selectionColor: '#fff',
- selectionOpacity: 0,
- outerColor: '#000',
- outerOpacity: .4,
- parent: 'body',
- onSelectStart: function () {},
- onSelectChange: function () {},
- onSelectEnd: function () {}
- }, options));
-
- $box.add($o).css({ visibility: 'hidden', position: position,
- overflow: 'hidden', zIndex: zIndex > 0 ? zIndex : '0' });
- $area.css({ borderStyle: 'solid' });
- $box.css({ position: position, zIndex: zIndex > 0 ? zIndex + 2 : '2' });
- $area.add($border1).add($border2).css({ position: 'absolute' });
-
- img.complete || img.readyState == 'complete' || !$img.is('img') ?
- imgLoad() : $img.one('load', imgLoad);
-};
-
-$.fn.imgAreaSelect = function (options) {
- options = options || {};
-
- this.each(function () {
- if ($(this).data('imgAreaSelect'))
- $(this).data('imgAreaSelect').setOptions(options);
- else {
- if (options.enable === undefined && options.disable === undefined)
- options.enable = true;
-
- $(this).data('imgAreaSelect', new $.imgAreaSelect.init(this, options));
- }
- });
-
- return this;
-};
-
-})(jQuery);
diff --git a/mod/profile/views/default/js/jquery.imgareaselect-0.8.min.js b/mod/profile/views/default/js/jquery.imgareaselect-0.8.min.js
deleted file mode 100644
index d9605de1d..000000000
--- a/mod/profile/views/default/js/jquery.imgareaselect-0.8.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function($){$.imgAreaSelect={onKeyPress:null};$.imgAreaSelect.init=function(img,options){var $img=$(img),imgLoaded,$box=$('<div />'),$area=$('<div />'),$border1=$('<div />'),$border2=$('<div />'),$areaOpera,$outLeft=$('<div />'),$outTop=$('<div />'),$outRight=$('<div />'),$outBottom=$('<div />'),$handles=$([]),handleWidth,handles=[],left,top,M=Math,imgOfs,imgWidth,imgHeight,$parent,parOfs,zIndex=0,position='absolute',$p,startX,startY,scaleX=1,scaleY=1,resizeMargin=10,resize=[],V=0,H=1,d,aspectRatio,x1,x2,y1,y2,x,y,adjusted,shown,i,selection={x1:0,y1:0,x2:0,y2:0,width:0,height:0};var $o=$outLeft.add($outTop).add($outRight).add($outBottom);function viewX(x){return x+imgOfs.left-parOfs.left}function viewY(y){return y+imgOfs.top-parOfs.top}function selX(x){return x-imgOfs.left+parOfs.left}function selY(y){return y-imgOfs.top+parOfs.top}function evX(event){return event.pageX-parOfs.left}function evY(event){return event.pageY-parOfs.top}function trueSelection(){return{x1:M.round(selection.x1*scaleX),y1:M.round(selection.y1*scaleY),x2:M.round(selection.x2*scaleX),y2:M.round(selection.y2*scaleY),width:M.round(selection.x2*scaleX)-M.round(selection.x1*scaleX),height:M.round(selection.y2*scaleY)-M.round(selection.y1*scaleY)}}function getZIndex(){$p=$img;while($p.length&&!$p.is('body')){if(!isNaN($p.css('z-index'))&&$p.css('z-index')>zIndex)zIndex=$p.css('z-index');if($p.css('position')=='fixed')position='fixed';$p=$p.parent()}if(!isNaN(options.zIndex))zIndex=options.zIndex}function adjust(){imgOfs={left:M.round($img.offset().left),top:M.round($img.offset().top)};imgWidth=$img.width();imgHeight=$img.height();if($().jquery=='1.3.2'&&$.browser.safari&&position=='fixed'){imgOfs.top+=M.max(document.documentElement.scrollTop,$('body').scrollTop());imgOfs.left+=M.max(document.documentElement.scrollLeft,$('body').scrollLeft())}parOfs=$.inArray($parent.css('position'),['absolute','relative'])!=-1?{left:M.round($parent.offset().left)-$parent.scrollLeft(),top:M.round($parent.offset().top)-$parent.scrollTop()}:position=='fixed'?{left:$(document).scrollLeft(),top:$(document).scrollTop()}:{left:0,top:0};left=viewX(0);top=viewY(0)}function update(resetKeyPress){if(!shown)return;$box.css({left:viewX(selection.x1)+'px',top:viewY(selection.y1)+'px',width:selection.width+'px',height:selection.height+'px'});$area.add($border1).add($border2).css({left:'0px',top:'0px',width:M.max(selection.width-options.borderWidth*2,0)+'px',height:M.max(selection.height-options.borderWidth*2,0)+'px'});$border1.css({borderStyle:'solid',borderColor:options.borderColor1});$border2.css({borderStyle:'dashed',borderColor:options.borderColor2});$border1.add($border2).css({opacity:options.borderOpacity});$outLeft.css({left:left+'px',top:top+'px',width:selection.x1+'px',height:imgHeight+'px'});$outTop.css({left:left+selection.x1+'px',top:top+'px',width:selection.width+'px',height:selection.y1+'px'});$outRight.css({left:left+selection.x2+'px',top:top+'px',width:imgWidth-selection.x2+'px',height:imgHeight+'px'});$outBottom.css({left:left+selection.x1+'px',top:top+selection.y2+'px',width:selection.width+'px',height:imgHeight-selection.y2+'px'});if(handles.length){handles[1].css({left:selection.width-handleWidth+'px'});handles[2].css({left:selection.width-handleWidth+'px',top:selection.height-handleWidth+'px'});handles[3].css({top:selection.height-handleWidth+'px'});if(handles.length==8){handles[4].css({left:(selection.width-handleWidth)/2+'px'});handles[5].css({left:selection.width-handleWidth+'px',top:(selection.height-handleWidth)/2+'px'});handles[6].css({left:(selection.width-handleWidth)/2+'px',top:selection.height-handleWidth+'px'});handles[7].css({top:(selection.height-handleWidth)/2+'px'})}}if(resetKeyPress!==false){if($.imgAreaSelect.keyPress!=docKeyPress)$(document).unbind($.imgAreaSelect.keyPress,$.imgAreaSelect.onKeyPress);if(options.keys)$(document).bind($.imgAreaSelect.keyPress,$.imgAreaSelect.onKeyPress=docKeyPress)}if($.browser.msie&&options.borderWidth==1&&options.borderOpacity<1){$border1.add($border2).css('margin','0');setTimeout(function(){$border1.add($border2).css('margin','auto')},0)}}function areaMouseMove(event){if(!adjusted){adjust();adjusted=true;$box.one('mouseout',function(){adjusted=false})}x=selX(evX(event))-selection.x1;y=selY(evY(event))-selection.y1;resize=[];if(options.resizable){if(y<=resizeMargin)resize[V]='n';else if(y>=selection.height-resizeMargin)resize[V]='s';if(x<=resizeMargin)resize[H]='w';else if(x>=selection.width-resizeMargin)resize[H]='e'}$box.css('cursor',resize.length?resize.join('')+'-resize':options.movable?'move':'');if($areaOpera)$areaOpera.toggle()}function docMouseUp(event){resize=[];$('body').css('cursor','');if(options.autoHide||selection.width*selection.height==0)$box.add($o).hide();options.onSelectEnd(img,trueSelection());$(document).unbind('mousemove',selectingMouseMove);$box.mousemove(areaMouseMove)}function areaMouseDown(event){if(event.which!=1)return false;adjust();if(options.resizable&&resize.length>0){$('body').css('cursor',resize.join('')+'-resize');x1=viewX(selection[resize[H]=='w'?'x2':'x1']);y1=viewY(selection[resize[V]=='n'?'y2':'y1']);$(document).mousemove(selectingMouseMove).one('mouseup',docMouseUp);$box.unbind('mousemove',areaMouseMove)}else if(options.movable){startX=left+selection.x1-evX(event);startY=top+selection.y1-evY(event);$box.unbind('mousemove',areaMouseMove);$(document).mousemove(movingMouseMove).one('mouseup',function(){options.onSelectEnd(img,trueSelection());$(document).unbind('mousemove',movingMouseMove);$box.mousemove(areaMouseMove)})}else $img.mousedown(event);return false}function aspectRatioXY(){x2=M.max(left,M.min(left+imgWidth,x1+M.abs(y2-y1)*aspectRatio*(x2<x1?-1:1)));y2=M.round(M.max(top,M.min(top+imgHeight,y1+M.abs(x2-x1)/aspectRatio*(y2<y1?-1:1))));x2=M.round(x2)}function aspectRatioYX(){y2=M.max(top,M.min(top+imgHeight,y1+M.abs(x2-x1)/aspectRatio*(y2<y1?-1:1)));x2=M.round(M.max(left,M.min(left+imgWidth,x1+M.abs(y2-y1)*aspectRatio*(x2<x1?-1:1))));y2=M.round(y2)}function doResize(){if(options.minWidth&&M.abs(x2-x1)<options.minWidth){x2=x1-options.minWidth*(x2<x1?1:-1);if(x2<left)x1=left+options.minWidth;else if(x2>left+imgWidth)x1=left+imgWidth-options.minWidth}if(options.minHeight&&M.abs(y2-y1)<options.minHeight){y2=y1-options.minHeight*(y2<y1?1:-1);if(y2<top)y1=top+options.minHeight;else if(y2>top+imgHeight)y1=top+imgHeight-options.minHeight}x2=M.max(left,M.min(x2,left+imgWidth));y2=M.max(top,M.min(y2,top+imgHeight));if(aspectRatio)if(M.abs(x2-x1)/aspectRatio>M.abs(y2-y1))aspectRatioYX();else aspectRatioXY();if(options.maxWidth&&M.abs(x2-x1)>options.maxWidth){x2=x1-options.maxWidth*(x2<x1?1:-1);if(aspectRatio)aspectRatioYX()}if(options.maxHeight&&M.abs(y2-y1)>options.maxHeight){y2=y1-options.maxHeight*(y2<y1?1:-1);if(aspectRatio)aspectRatioXY()}selection={x1:selX(M.min(x1,x2)),x2:selX(M.max(x1,x2)),y1:selY(M.min(y1,y2)),y2:selY(M.max(y1,y2)),width:M.abs(x2-x1),height:M.abs(y2-y1)};update();options.onSelectChange(img,trueSelection())}function selectingMouseMove(event){x2=!resize.length||resize[H]||aspectRatio?evX(event):viewX(selection.x2);y2=!resize.length||resize[V]||aspectRatio?evY(event):viewY(selection.y2);doResize();return false}function doMove(newX1,newY1){x2=(x1=newX1)+selection.width;y2=(y1=newY1)+selection.height;selection=$.extend(selection,{x1:selX(x1),y1:selY(y1),x2:selX(x2),y2:selY(y2)});update();options.onSelectChange(img,trueSelection())}function movingMouseMove(event){x1=M.max(left,M.min(startX+evX(event),left+imgWidth-selection.width));y1=M.max(top,M.min(startY+evY(event),top+imgHeight-selection.height));doMove(x1,y1);event.preventDefault();return false}function startSelection(event){adjust();x2=x1;y2=y1;doResize();resize=[];$box.add($o.is(':visible')?null:$o).show();shown=true;$(document).unbind('mouseup',cancelSelection).mousemove(selectingMouseMove).one('mouseup',docMouseUp);$box.unbind('mousemove',areaMouseMove);options.onSelectStart(img,trueSelection())}function cancelSelection(){$(document).unbind('mousemove',startSelection);$box.add($o).hide();selection={x1:0,y1:0,x2:0,y2:0,width:0,height:0};options.onSelectChange(img,selection);options.onSelectEnd(img,selection)}function imgMouseDown(event){if(event.which!=1)return false;adjust();startX=x1=evX(event);startY=y1=evY(event);$(document).one('mousemove',startSelection).one('mouseup',cancelSelection);return false}function parentScroll(){adjust();update(false);x1=viewX(selection.x1);y1=viewY(selection.y1);x2=viewX(selection.x2);y2=viewY(selection.y2)}function imgLoad(){imgLoaded=true;if(options.show){shown=true;adjust();update();$box.add($o).show()}$box.add($o).css({visibility:''})}var docKeyPress=function(event){var k=options.keys,d,t,key=event.keyCode||event.which;d=!isNaN(k.alt)&&(event.altKey||event.originalEvent.altKey)?k.alt:!isNaN(k.ctrl)&&event.ctrlKey?k.ctrl:!isNaN(k.shift)&&event.shiftKey?k.shift:!isNaN(k.arrows)?k.arrows:10;if(k.arrows=='resize'||(k.shift=='resize'&&event.shiftKey)||(k.ctrl=='resize'&&event.ctrlKey)||(k.alt=='resize'&&(event.altKey||event.originalEvent.altKey))){switch(key){case 37:d=-d;case 39:t=M.max(x1,x2);x1=M.min(x1,x2);x2=M.max(t+d,x1);if(aspectRatio)aspectRatioYX();break;case 38:d=-d;case 40:t=M.max(y1,y2);y1=M.min(y1,y2);y2=M.max(t+d,y1);if(aspectRatio)aspectRatioXY();break;default:return}doResize()}else{x1=M.min(x1,x2);y1=M.min(y1,y2);switch(key){case 37:doMove(M.max(x1-d,left),y1);break;case 38:doMove(x1,M.max(y1-d,top));break;case 39:doMove(x1+M.min(d,imgWidth-selX(x2)),y1);break;case 40:doMove(x1,y1+M.min(d,imgHeight-selY(y2)));break;default:return}}return false};this.setOptions=function(newOptions){if(newOptions.parent)($parent=$(newOptions.parent)).append($box.add($o));adjust();getZIndex();if(newOptions.x1!=null){selection={x1:newOptions.x1,y1:newOptions.y1,x2:newOptions.x2,y2:newOptions.y2};newOptions.show=!newOptions.hide;x1=viewX(selection.x1);y1=viewY(selection.y1);x2=viewX(selection.x2);y2=viewY(selection.y2);selection.width=x2-x1;selection.height=y2-y1}if(newOptions.handles!=null){$handles.remove();$handles=$(handles=[]);i=newOptions.handles?newOptions.handles=='corners'?4:8:0;while(i--)$handles=$handles.add(handles[i]=$('<div />'));handleWidth=4+options.borderWidth;$handles.css({position:'absolute',borderWidth:options.borderWidth+'px',borderStyle:'solid',borderColor:options.borderColor1,opacity:options.borderOpacity,backgroundColor:options.borderColor2,width:handleWidth+'px',height:handleWidth+'px',fontSize:'0px',zIndex:zIndex>0?zIndex+1:'1'}).addClass(options.classPrefix+'-handle');handleWidth+=options.borderWidth*2}update();options=$.extend(options,newOptions);if(options.imageWidth||options.imageHeight){scaleX=(parseInt(options.imageWidth)||imgWidth)/imgWidth;scaleY=(parseInt(options.imageHeight)||imgHeight)/imgHeight}if(newOptions.keys)options.keys=$.extend({shift:1,ctrl:'resize'},newOptions.keys===true?{}:newOptions.keys);$o.addClass(options.classPrefix+'-outer');$area.addClass(options.classPrefix+'-selection');$border1.addClass(options.classPrefix+'-border1');$border2.addClass(options.classPrefix+'-border2');$box.add($area).add($border1).add($border2).css({borderWidth:options.borderWidth+'px'});$area.css({backgroundColor:options.selectionColor,opacity:options.selectionOpacity});$border1.css({borderStyle:'solid',borderColor:options.borderColor1});$border2.css({borderStyle:'dashed',borderColor:options.borderColor2});$border1.add($border2).css({opacity:options.borderOpacity});$o.css({opacity:options.outerOpacity,backgroundColor:options.outerColor});$box.append($area.add($border1).add($border2).add($handles).add($areaOpera));if(newOptions.hide)$box.add($o).hide();else if(newOptions.show&&imgLoaded){shown=true;update();$box.add($o).show()}aspectRatio=options.aspectRatio&&(d=options.aspectRatio.split(/:/))?d[0]/d[1]:null;if(aspectRatio)if(options.minWidth)options.minHeight=parseInt(options.minWidth/aspectRatio);else if(options.minHeight)options.minWidth=parseInt(options.minHeight*aspectRatio);if(options.disable||options.enable===false){$box.unbind('mousemove',areaMouseMove).unbind('mousedown',areaMouseDown);$img.add($o).unbind('mousedown',imgMouseDown);$(window).unbind('resize',parentScroll);$img.add($img.parents()).unbind('scroll',parentScroll)}else if(options.enable||options.disable===false){if(options.resizable||options.movable)$box.mousemove(areaMouseMove).mousedown(areaMouseDown);if(!options.persistent)$img.add($o).mousedown(imgMouseDown);$(window).resize(parentScroll);$img.add($img.parents()).scroll(parentScroll)}options.enable=options.disable=undefined};if($.browser.msie)$img.attr('unselectable','on');$.imgAreaSelect.keyPress=$.browser.msie||$.browser.safari?'keydown':'keypress';if($.browser.opera)($areaOpera=$('<div style="width: 100%; height: 100%; position: absolute;" />')).css({zIndex:zIndex>0?zIndex+2:'2'});this.setOptions(options=$.extend({borderColor1:'#000',borderColor2:'#fff',borderWidth:1,borderOpacity:.5,classPrefix:'imgareaselect',movable:true,resizable:true,selectionColor:'#fff',selectionOpacity:0,outerColor:'#000',outerOpacity:.4,parent:'body',onSelectStart:function(){},onSelectChange:function(){},onSelectEnd:function(){}},options));$box.add($o).css({visibility:'hidden',position:position,overflow:'hidden',zIndex:zIndex>0?zIndex:'0'});$area.css({borderStyle:'solid'});$box.css({position:position,zIndex:zIndex>0?zIndex+2:'2'});$area.add($border1).add($border2).css({position:'absolute'});img.complete||img.readyState=='complete'||!$img.is('img')?imgLoad():$img.one('load',imgLoad)};$.fn.imgAreaSelect=function(options){options=options||{};this.each(function(){if($(this).data('imgAreaSelect'))$(this).data('imgAreaSelect').setOptions(options);else{if(options.enable===undefined&&options.disable===undefined)options.enable=true;$(this).data('imgAreaSelect',new $.imgAreaSelect.init(this,options))}});return this}})(jQuery); \ No newline at end of file
diff --git a/mod/profile/views/default/profile/admin_menu.php b/mod/profile/views/default/profile/admin_menu.php
deleted file mode 100755
index c89505673..000000000
--- a/mod/profile/views/default/profile/admin_menu.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
- * This is the admin menu that appears on a user's profile page
- **/
-global $CONFIG;
-
-if (isadminloggedin()){
- if ($_SESSION['id']!=page_owner()){
- $user = get_user(page_owner());
- $url = $vars['url'];
- $ts = time();
- $token = generate_action_token($ts);
-
-?>
-<div class="owner_block_links">
-<ul class="admin_menu">
-<li><a href="#" onclick="elgg_slide_toggle(this,'.owner_block_links','.admin_menu_options');">Admin options&hellip;</a>
-
- <ul class="admin_menu_options">
- <li><a href="<?php echo $url; ?>pg/settings/user/<?php echo $user->username; ?>/"><?php echo elgg_echo('profile:editdetails'); ?></a></li>
- <?php
- if (!$user->isBanned()) {
- echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("ban"), 'href' => "{$url}action/admin/user/ban?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
- } else {
- echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("unban"), 'href' => "{$url}action/admin/user/unban?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
- }
- echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("delete"), 'href' => "{$url}action/admin/user/delete?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
- echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("resetpassword"), 'href' => "{$url}action/admin/user/resetpassword?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
- if (!$vars['entity']->admin) {
- echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("makeadmin"), 'href' => "{$url}action/admin/user/makeadmin?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
- } else {
- echo "<li>".elgg_view('output/confirmlink', array('text' => elgg_echo("removeadmin"), 'href' => "{$url}action/admin/user/removeadmin?guid={$user->guid}&__elgg_token=$token&__elgg_ts=$ts")) . "</li>";
- }
- ?>
- </ul>
-</li>
-</ul>
-</div>
-<?php
- }
-}
-?>
diff --git a/mod/profile/views/default/profile/css.php b/mod/profile/views/default/profile/css.php
index 7a82b2bec..e24f555a9 100644
--- a/mod/profile/views/default/profile/css.php
+++ b/mod/profile/views/default/profile/css.php
@@ -1,398 +1,126 @@
<?php
/**
- * Elgg Profile
+ * Elgg Profile CSS
*
* @package Profile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
*/
?>
/* ***************************************
- main layout blocks
+ Profile
*************************************** */
-#profile_content {
- float:right;
- width:700px;
- position: relative;
-}
-#profile_sidebar {
- width:230px;
- float:left;
-}
-.elgg_horizontal_tabbed_nav.profile {
- margin-top:0px;
- margin-bottom:25px;
- position:relative;
-}
-.elgg_horizontal_tabbed_nav.profile .profile_name {
- display:block;
- width:265px;
- position:absolute;
-}
-.elgg_horizontal_tabbed_nav.profile .profile_name h2 {
- margin:0;
- padding:0;
- border:none;
-}
-.elgg_horizontal_tabbed_nav.profile ul {
- margin-left:260px;
-}
-
-/* ***************************************
- default avatar icons
-*************************************** */
-.usericon {
- position:relative;
-}
-.usericon.tiny {
- width:25px;
- height:25px;
-}
-.usericon.small {
- width:40px;
- height:40px;
+.profile {
+ float: left;
+ margin-bottom: 15px;
}
-
-/* ***************************************
- ownerblock in sidebar
-*************************************** */
-#profile_sidebar #owner_block {
- background-color: #eeeeee;
- -webkit-border-radius: 8px;
+.profile .elgg-inner {
+ margin: 0 5px;
+ border: 2px solid #eee;
+
+ -webkit-border-radius: 8px;
-moz-border-radius: 8px;
- padding:15px;
- min-height:270px;
-}
-#elgg_sidebar #owner_block {
- background-color: white;
- padding:5px;
- margin-bottom:10px;
-}
-#owner_block .owner_block_icon {
- float:left;
- padding:0;
- margin:0;
-}
-#owner_block .owner_block_icon.large {
- width:200px;
- height:200px;
- overflow: hidden;
- float:none;
-}
-#owner_block .owner_block_contents {
- margin-left: 50px;
-}
-#elgg_sidebar #owner_block .owner_block_contents {
- margin-left: 34px;
-}
-#owner_block .owner_block_contents h3 {
- margin-top:-4px;
- border-bottom:none;
- margin-bottom:0;
- padding-bottom:0;
+ border-radius: 8px;
}
-#owner_block .owner_block_contents p.profile_info {
- margin:0;
- padding:0;
- color: #666666;
+#profile-details {
+ padding: 15px;
}
-#owner_block .owner_block_contents p.profile_info.briefdescription {
- font-size: 90%;
- line-height:1.2em;
- font-style: italic;
-}
-#owner_block .owner_block_contents p.profile_info.location {
- font-size: 90%;
+/*** ownerblock ***/
+#profile-owner-block {
+ width: 200px;
+ float: left;
+ background-color: #eee;
+ padding: 15px;
}
-#owner_block .profile_actions {
- margin-top:10px;
+#profile-owner-block .large {
+ margin-bottom: 10px;
}
-#owner_block .profile_actions a.action_button {
- margin-bottom:4px;
+#profile-owner-block a.elgg-button-action {
+ margin-bottom: 4px;
display: table;
}
-/* ownerblock links to owners tools */
-.owner_block_links {
- margin-top:5px;
-}
-.owner_block_links ul {
- margin:0;
- padding:0;
- list-style: none;
-}
-.owner_block_links ul li.selected a {
- background: #4690D6;
- color:white;
-}
-.owner_block_links ul li a {
- display:block;
- -webkit-border-radius: 8px;
+.profile-content-menu a {
+ display: block;
+
+ -webkit-border-radius: 8px;
-moz-border-radius: 8px;
- background-color:white;
- margin:3px 0 5px 0;
- padding:2px 4px 2px 8px;
+ border-radius: 8px;
+
+ background-color: white;
+ margin: 3px 0 5px 0;
+ padding: 2px 4px 2px 8px;
}
-.owner_block_links ul li a:hover {
- background:#0054A7;
- color:white;
- text-decoration:none;
+.profile-content-menu a:hover {
+ background: #0054A7;
+ color: white;
+ text-decoration: none;
}
-
-
-/* ***************************************
- admin menu in sidebar
-*************************************** */
-.owner_block_links .admin_menu_options {
+.profile-admin-menu {
display: none;
}
-.owner_block_links ul.admin_menu {
- background-color:white;
+.profile-admin-menu-wrapper a {
+ display: block;
+
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
- cursor:pointer;
+ border-radius: 8px;
+
+ background-color: white;
+ margin: 3px 0 5px 0;
+ padding: 2px 4px 2px 8px;
}
-.owner_block_links ul.admin_menu li a {
- background-color: red;
- color:white;
- margin-bottom:0;
+.profile-admin-menu-wrapper {
+ background-color: white;
+
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+ border-radius: 8px;
}
-.owner_block_links ul.admin_menu li ul.admin_menu_options li a {
- color:red;
- background-color:white;
- display:block;
- margin:0px;
- padding:2px 4px 2px 13px;
+.profile-admin-menu-wrapper li a {
+ background-color: white;
+ color: red;
+ margin-bottom: 0;
}
-.owner_block_links ul.admin_menu li ul.admin_menu_options li a:hover {
- color:black;
- background:none;
- text-decoration: underline;
+.profile-admin-menu-wrapper a:hover {
+ color: black;
}
-
-
-/* ***************************************
- full profile info panel
-*************************************** */
-#profile_content .odd {
- background-color:#f4f4f4;
+/*** profile details ***/
+#profile-details .odd {
+ background-color: #f4f4f4;
+
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
- margin:0 0 7px 0;
- padding:2px 4px 2px 4px;
+ border-radius: 4px;
+
+ margin: 0 0 7px;
+ padding: 2px 4px;
}
-#profile_content .even {
+#profile-details .even {
background-color:#f4f4f4;
+
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
- margin:0 0 7px 0;
- padding:2px 4px 2px 4px;
+ border-radius: 4px;
+
+ margin: 0 0 7px;
+ padding: 2px 4px;
}
-#profile_content .aboutme_title {
+.profile-aboutme-title {
background-color:#f4f4f4;
+
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
- margin:0 0 0px 0;
- padding:2px 4px 2px 4px;
-}
-#profile_content .aboutme_contents {
- padding:2px 0 0 3px;
-}
-
-
-/* ***************************************
- friends panel within profile
-*************************************** */
-#profile_content .entity_listing .entity_listing_info {
- width:664px;
-}
-
-
-/* ***************************************
- twitter panel within profile
-*************************************** */
-ul#twitter_update_list li {
- background-image: url(<?php echo $vars['url']; ?>mod/elgg_layout/graphics/speech_bubble_tail.gif);
- background-position:right bottom;
- background-repeat: no-repeat;
- list-style-image:none;
- list-style-position:outside;
- list-style-type:none;
- margin:0 0 5px 0;
- padding:0;
- overflow-x: hidden;
-}
-ul#twitter_update_list li span {
- color:#666666;
- background:#ececec;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- padding:3px 5px 4px 5px;
- display:block;
-}
-ul#twitter_update_list li a {
- display:block;
- margin:-2px 0 0 4px;
-}
-ul#twitter_update_list li span a {
- display:inline !important;
-}
-p.visit_twitter a {
- background:url(<?php echo $vars['url']; ?>mod/elgg_layout/graphics/twitter16px.png) left no-repeat;
- padding:0 0 0 20px;
- margin:0;
-}
-.visit_twitter {
- padding:5px 0;
- margin:0 0 0 0;
- border-top:1px solid #dedede;
-}
-
-
-/* ***************************************
- user avatar upload & crop page
-*************************************** */
-#avatar_upload {
- height:145px;
-}
-#current_user_avatar {
- float:left;
- width:160px;
- height:130px;
- border-right:1px solid #cccccc;
- margin:0 20px 0 0;
-}
-#avatar_croppingtool {
- border-top: 1px solid #cccccc;
- margin:20px 0 0 0;
- padding:10px 0 0 0;
-}
-#user_avatar {
- float: left;
- margin-right: 20px;
-}
-#user_avatar_preview {
- float: left;
- position: relative;
- overflow: hidden;
- width: 100px;
- height: 100px;
-}
-
-
-/* ***************************************
- banned user
-*************************************** */
-/* banned user full profile panel */
-#profile_content .banned_user {
- border:2px solid red;
- padding:4px 8px;
+ border-radius: 4px;
+
+ margin: 0;
+ padding: 2px 4px;
+}
+.profile-aboutme-contents {
+ padding: 2px 0 0 3px;
+}
+.profile-banned-user {
+ border: 2px solid red;
+ padding: 4px 8px;
+
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
-}
-/* banned user in friends lists */
-.entity_listing_info p.entity_title.user.banned {
- text-decoration: line-through;
-}
-.entity_listing_info p.entity_title.user.banned a {
- color:red;
-}
-
-
-/* ***************************************
- admin area - custom profile fields
-*************************************** */
-.default_profile_reset {
- border-top: 1px solid #dedede;
- margin-top:30px;
-}
-.default_profile_reset .action_button {
- float:right;
-}
-
-
-/* ***************************************
- avatar drop-down menu
-*************************************** */
-.avatar_menu_button {
- width:15px;
- height:15px;
- position:absolute;
- cursor:pointer;
- display:none;
- right:0;
- bottom:0;
-}
-.avatar_menu_arrow {
- background: url(<?php echo $vars['url']; ?>_graphics/avatar_menu_arrows.gif) no-repeat left top;
- width:15px;
- height:15px;
-}
-.avatar_menu_arrow_on {
- background: url(<?php echo $vars['url']; ?>_graphics/avatar_menu_arrows.gif) no-repeat left -16px;
- width:15px;
- height:15px;
-}
-.avatar_menu_arrow_hover {
- background: url(<?php echo $vars['url']; ?>_graphics/avatar_menu_arrows.gif) no-repeat left -32px;
- width:15px;
- height:15px;
-}
-/* user avatar submenu options */
-.usericon .sub_menu {
- display:none;
- position:absolute;
- padding:0;
- margin:0;
- border-top:solid 1px #E5E5E5;
- border-left:solid 1px #E5E5E5;
- border-right:solid 1px #999999;
- border-bottom:solid 1px #999999;
- width:164px;
- background:#FFFFFF;
- text-align:left;
- -webkit-box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.50);
- -moz-box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.50);
-}
-div.usericon a.icon img {
- z-index:10;
-}
-.usericon .sub_menu a:link,
-.usericon .sub_menu a:visited,
-.usericon .sub_menu a:hover {
- display:block;
-}
-.usericon .sub_menu a:hover {
- background:#cccccc;
- text-decoration:none;
-}
-.usericon .sub_menu h3.displayname {
- font-size:1.3em !important; /* make sure nothing overrides our sub menu h3 */
- line-height: 1.1em !important;
- padding:0 !important;
- margin:0 !important;
- border-bottom:solid 1px #dddddd !important;
-}
-.usericon .sub_menu h3.displayname a {
- padding:3px 3px 3px 8px;
-}
-.usericon .sub_menu h3.displayname a .username {
- display:block;
- font-weight: normal;
- font-size: 0.8em;
-}
-.usericon .sub_menu a {
- padding:2px 3px 2px 8px;
-}
-/* admin menu options in avatar submenu */
-.user_menu_admin {
- border-top:solid 1px #dddddd;
-}
-.usericon .sub_menu li.user_menu_admin a {
- color:red;
-}
-.usericon .sub_menu li.user_menu_admin a:hover {
- color:white;
- background:red;
+ border-radius: 6px;
}
diff --git a/mod/profile/views/default/profile/details.php b/mod/profile/views/default/profile/details.php
new file mode 100644
index 000000000..da4e95690
--- /dev/null
+++ b/mod/profile/views/default/profile/details.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Elgg user display (details)
+ * @uses $vars['entity'] The user entity
+ */
+
+$user = elgg_get_page_owner_entity();
+
+$profile_fields = elgg_get_config('profile_fields');
+
+echo '<div id="profile-details" class="elgg-body pll">';
+echo "<h2>{$user->name}</h2>";
+
+echo elgg_view("profile/status", array("entity" => $user));
+
+$even_odd = null;
+if (is_array($profile_fields) && sizeof($profile_fields) > 0) {
+ foreach ($profile_fields as $shortname => $valtype) {
+ if ($shortname == "description") {
+ // skip about me and put at bottom
+ continue;
+ }
+ $value = $user->$shortname;
+
+ if (!empty($value)) {
+
+ // fix profile URLs populated by https://github.com/Elgg/Elgg/issues/5232
+ // @todo Replace with upgrade script, only need to alter users with last_update after 1.8.13
+ if ($valtype == 'url' && $value == 'http://') {
+ $user->$shortname = '';
+ continue;
+ }
+
+ // validate urls
+ if ($valtype == 'url' && !preg_match('~^https?\://~i', $value)) {
+ $value = "http://$value";
+ }
+
+ // this controls the alternating class
+ $even_odd = ( 'odd' != $even_odd ) ? 'odd' : 'even';
+ ?>
+ <div class="<?php echo $even_odd; ?>">
+ <b><?php echo elgg_echo("profile:{$shortname}"); ?>: </b>
+ <?php
+ echo elgg_view("output/{$valtype}", array('value' => $value));
+ ?>
+ </div>
+ <?php
+ }
+ }
+}
+
+if (!elgg_get_config('profile_custom_fields')) {
+ if ($user->isBanned()) {
+ echo "<p class='profile-banned-user'>";
+ echo elgg_echo('banned');
+ echo "</p>";
+ } else {
+ if ($user->description) {
+ echo "<p class='profile-aboutme-title'><b>" . elgg_echo("profile:aboutme") . "</b></p>";
+ echo "<div class='profile-aboutme-contents'>";
+ echo elgg_view('output/longtext', array('value' => $user->description, 'class' => 'mtn'));
+ echo "</div>";
+ }
+ }
+}
+
+echo '</div>'; \ No newline at end of file
diff --git a/mod/profile/views/default/profile/edit.php b/mod/profile/views/default/profile/edit.php
deleted file mode 100644
index 7b918b000..000000000
--- a/mod/profile/views/default/profile/edit.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-/**
- * Elgg profile edit form
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- *
- * @uses $vars['entity'] The user entity
- * @uses $vars['profile'] Profile items from $CONFIG->profile, defined in profile/start.php for now
- */
-?>
-<form action="<?php echo $vars['url']; ?>action/profile/edit" method="post" id="edit_profile" class="margin_top">
-<?php echo elgg_view('input/securitytoken') ?>
-
- <p><label>
- <?php echo elgg_echo('user:name:label'); ?></label>
- <?php
- echo elgg_view('input/text',array('internalname' => 'name', 'value' => page_owner_entity()->name));
- ?>
- </p>
-
-<?php
- if (is_array($vars['config']->profile) && sizeof($vars['config']->profile) > 0)
- foreach($vars['config']->profile as $shortname => $valtype) {
- if ($metadata = get_metadata_byname($vars['entity']->guid, $shortname)) {
- if (is_array($metadata)) {
- $value = '';
- foreach($metadata as $md) {
- if (!empty($value)) $value .= ', ';
- $value .= $md->value;
- $access_id = $md->access_id;
- }
- } else {
- $value = $metadata->value;
- $access_id = $metadata->access_id;
- }
- } else {
- $value = '';
- $access_id = ACCESS_DEFAULT;
- }
-
-?>
-
- <p>
- <label>
- <?php echo elgg_echo("profile:{$shortname}") ?><br />
- <?php echo elgg_view("input/{$valtype}",array(
- 'internalname' => $shortname,
- 'value' => $value,
- )); ?>
- </label>
- <?php echo elgg_view('input/access',array('internalname' => 'accesslevel['.$shortname.']', 'value' => $access_id)); ?>
- </p>
-
-<?php
-
- }
-
-?>
-
- <p>
- <input type="hidden" name="username" value="<?php echo page_owner_entity()->username; ?>" />
- <input type="submit" class="submit_button" value="<?php echo elgg_echo("save"); ?>" />
- </p>
-
-</form> \ No newline at end of file
diff --git a/mod/profile/views/default/profile/editdefaultprofile.php b/mod/profile/views/default/profile/editdefaultprofile.php
deleted file mode 100644
index 338204d36..000000000
--- a/mod/profile/views/default/profile/editdefaultprofile.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * Elgg profile index
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-
-$label_text = elgg_echo('profile:label');
-$type_text = elgg_echo('profile:type');
-
-$label_control = elgg_view('input/text', array('internalname' => 'label'));
-$type_control = elgg_view('input/pulldown', array('internalname' => 'type', 'options_values' => array(
- 'text' => elgg_echo('text'),
- 'longtext' => elgg_echo('longtext'),
- 'tags' => elgg_echo('tags'),
- 'url' => elgg_echo('url'),
- 'email' => elgg_echo('email')
-)));
-
-$submit_control = elgg_view('input/submit', array('internalname' => elgg_echo('save'), 'value' => elgg_echo('Add')));
-
-$formbody = <<< END
- <p>$label_text: $label_control
- $type_text: $type_control
- $submit_control</p>
-END;
-
-echo "<p class='margin_top'>" . elgg_echo('profile:explainchangefields') . "</p>";
-echo elgg_view('input/form', array('body' => $formbody, 'action' => $vars['url'] . 'action/profile/editdefault'));
diff --git a/mod/profile/views/default/profile/editicon.php b/mod/profile/views/default/profile/editicon.php
deleted file mode 100644
index 4e921bc6b..000000000
--- a/mod/profile/views/default/profile/editicon.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-/**
- * Elgg profile icon edit form
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- *
- * @uses $vars['entity'] The user entity
- * @uses $vars['profile'] Profile items from $CONFIG->profile, defined in profile/start.php for now
- */
-
-// user is passed to view and set by caller (normally the page editicon)
-$currentuser = $vars['user'];
-?>
-<!-- grab the required js for icon cropping -->
-<script type="text/javascript" src="<?php echo $vars['url']; ?>mod/profile/views/default/js/jquery.imgareaselect-0.8.min.js"></script>
-
-<p class="margin_top"><?php echo elgg_echo('profile:profilepictureinstructions'); ?></p>
-
-<div id="current_user_avatar">
-
- <label><?php echo elgg_echo('profile:currentavatar'); ?></label>
- <?php
-
- $user_avatar = $currentuser->getIcon('medium');
- echo "<img src=\"{$user_avatar}\" alt=\"avatar\" />";
-
- ?>
-
-</div>
-
-<div id="avatar_upload">
- <form action="<?php echo $vars['url']; ?>action/profile/iconupload" method="post" enctype="multipart/form-data">
- <?php echo elgg_view('input/securitytoken'); ?>
- <input type="hidden" name="username" value="<?php echo $currentuser->username; ?>" />
- <p><label><?php echo elgg_echo("profile:editicon"); ?></label><br />
-
- <?php
-
- echo elgg_view("input/file",array('internalname' => 'profileicon'));
- ?>
- <br /><input type="submit" class="submit_button" value="<?php echo elgg_echo("upload"); ?>" />
- </p>
- </form>
-</div>
-
-<div id="avatar_croppingtool">
-<label><?php echo elgg_echo('profile:profilepicturecroppingtool'); ?></label><br />
-<p>
-<?php
-
- echo elgg_echo("profile:createicon:instructions");
-
- //display the current user photo
-
- $user_master_image = $currentuser->getIcon('master');
-
-?>
-</p>
-<script type="text/javascript">
-
- //function to display a preview of the users cropped section
- function preview(img, selection) {
- // catch for the first click on the image
- if (selection.width == 0 || selection.height == 0) {
- return;
- }
-
- var origWidth = $("#user_avatar").width(); //get the width of the users master photo
- var origHeight = $("#user_avatar").height(); //get the height of the users master photo
- var scaleX = 100 / selection.width;
- var scaleY = 100 / selection.height;
- $('#user_avatar_preview > img').css({
- width: Math.round(scaleX * origWidth) + 'px',
- height: Math.round(scaleY * origHeight) + 'px',
- marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px',
- marginTop: '-' + Math.round(scaleY * selection.y1) + 'px'
- });
- }
-
- //variables for the newly cropped avatar
- //var $x1, $y1, $x2, $y2, $w, $h;
-
- function selectChange(img, selection){
-
- //populate the form with the correct coordinates once a user has cropped their image
- $('#x_1').val(selection.x1);
- $('#x_2').val(selection.x2);
- $('#y_1').val(selection.y1);
- $('#y_2').val(selection.y2);
-
- }
-
- $(document).ready(function () {
-
- //get the coordinates from the form
- /*
- var x_1 = $('#x_1').val();
- var x_2 = $('#x_2').val();
- var y_1 = $('#y_1').val();
- var y_2 = $('#y_2').val();
- var w = x_2 - x_1;
- var h = y_2 - y_1;
- selection = { x1: x_1, y1: y_1, x2: x_2, y2: y_2, width: w, height: h };
- */
-
- $('<div id="user_avatar_preview"><img src="<?php echo $user_master_image; ?>" /></div>')
- .insertAfter($('#user_avatar'));
-
- $('<div id="user_avatar_preview_title"><label><?php echo elgg_echo('profile:preview'); ?></label></div>').insertBefore($('#user_avatar_preview'));
- });
-
- $(window).load(function () {
-
- //this produces the coordinates
- $('#user_avatar').imgAreaSelect({ selectionOpacity: 0, onSelectEnd: selectChange });
- //show the preview
- $('#user_avatar').imgAreaSelect({ aspectRatio: '1:1', onSelectChange: preview });
-
- });
-
-</script>
-
-<p>
-<img id="user_avatar" src="<?php echo $user_master_image; ?>" alt="<?php echo elgg_echo("profile:icon"); ?>" />
-</p>
-
-<div class="clearfloat"></div>
-
-<form action="<?php echo $vars['url']; ?>action/profile/cropicon" method="post" />
- <?php echo elgg_view('input/securitytoken'); ?>
- <input type="hidden" name="username" value="<?php echo $vars['user']->username; ?>" />
- <input type="hidden" name="x_1" value="<?php echo $vars['user']->x1; ?>" id="x_1" />
- <input type="hidden" name="x_2" value="<?php echo $vars['user']->x2; ?>" id="x_2" />
- <input type="hidden" name="y_1" value="<?php echo $vars['user']->y1; ?>" id="y_1" />
- <input type="hidden" name="y_2" value="<?php echo $vars['user']->y2; ?>" id="y_2" />
- <input type="submit" name="submit" value="<?php echo elgg_echo("profile:createicon"); ?>" />
-</form>
-
-</div>
-
diff --git a/mod/profile/views/default/profile/hoverover.php b/mod/profile/views/default/profile/hoverover.php
deleted file mode 100644
index 5250377a1..000000000
--- a/mod/profile/views/default/profile/hoverover.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-/**
- * Elgg profile icon hover over
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- *
- * @uses $vars['entity'] The user entity. If none specified, the current user is assumed.
- */
-?>
-<li class="user_menu_name">
- <?php echo $vars['entity']->name; ?>
-</li>
-<?php
- echo elgg_view('profile/hoverover/actions', $vars);
- echo elgg_view('profile/hoverover/links', $vars);
-?> \ No newline at end of file
diff --git a/mod/profile/views/default/profile/icon.php b/mod/profile/views/default/profile/icon.php
deleted file mode 100644
index d5623e0c8..000000000
--- a/mod/profile/views/default/profile/icon.php
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-/**
- * Elgg profile icon
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- *
- * @uses $vars['entity'] The user entity. If none specified, the current user is assumed.
- * @uses $vars['size'] The size - small, medium or large. If none specified, medium is assumed.
- */
-
-// Get entity
-if (empty($vars['entity'])) {
- $vars['entity'] = $vars['user'];
-}
-
-if ($vars['entity'] instanceof ElggUser) {
- $name = htmlentities($vars['entity']->name, ENT_QUOTES, 'UTF-8');
- $username = $vars['entity']->username;
-
- if ($icontime = $vars['entity']->icontime) {
- $icontime = "{$icontime}";
- } else {
- $icontime = "default";
- }
-
- // Get size
- if (!in_array($vars['size'],array('small','medium','large','tiny','master','topbar'))) {
- $vars['size'] = 'medium';
- }
-
- // Get any align and js
- if (!empty($vars['align'])) {
- $align = " align=\"{$vars['align']}\" ";
- } else {
- $align = '';
- }
-
- // Override
- if (isset($vars['override']) && $vars['override'] == true) {
- $override = true;
- } else {
- $override = false;
- }
- // profile avatar drop-down menu
- if (!$override) {
- ?>
- <div class="usericon <?php echo $vars['size']; ?>">
- <div class="avatar_menu_button"><img src="<?php echo $vars['url']; ?>_graphics/spacer.gif" border="0" width="15px" height="15px" /></div>
- <div class="sub_menu">
- <h3 class="displayname"><a href="<?php echo $vars['entity']->getURL(); ?>"><?php echo $vars['entity']->name; ?>
- <span class="username"><?php echo "@".$vars['entity']->username; ?></span>
- </a></h3>
- <?php
- echo "<ul class='sub_menu_list'>";
- if (isloggedin()) {
- // if not looking at your own avatar menu
- if ($vars['entity']->getGUID() != $vars['user']->getGUID()) {
-
- // Add / Remove friend link
- $friendlinks = elgg_view('profile/menu/friendlinks',$vars);
- if (!empty($friendlinks)) {
- echo "<li class='user_menu_profile'>{$friendlinks}</li>";
- }
- // view for plugins to extend
- echo elgg_view('profile/menu/links',$vars);
- } else {
- // if looking at your own avatar menu - provide a couple of handy links
- ?>
- <li class="user_menu_profile">
- <a class="edit_profile" href="<?php echo $vars['url']?>pg/profile/<?php echo $vars['entity']->username; ?>/edit/details"><?php echo elgg_echo("profile:edit"); ?></a>
- </li>
- <li class="user_menu_profile">
- <a class="edit_avatar" href="<?php echo $vars['url']?>pg/profile/<?php echo $vars['entity']->username; ?>/edit/icon"><?php echo elgg_echo("profile:editicon"); ?></a>
- </li>
- <?php
- }
-
- // if Admin is logged in, and not looking at admins own avatar menu
- if (isadminloggedin() && ($_SESSION['id']!=$vars['entity']->guid) ){
- $adminlinks = elgg_view('profile/menu/adminlinks', $vars);
- if (!empty($adminlinks)) {
- echo "<li class='user_menu_admin'>{$adminlinks}</li>";
- }
- }
-
- }
- echo "</ul>";
- ?>
- </div>
- <?php
- if ((isadminloggedin()) || (!$vars['entity']->isBanned())) {
- ?><a href="<?php echo $vars['entity']->getURL(); ?>" class="icon" ><?php
- }
-
- }
-
- ?><img src="<?php echo $vars['entity']->getIcon($vars['size']); ?>" border="0" <?php echo $align; ?> alt="<?php echo htmlentities($vars['entity']->name, ENT_QUOTES, 'UTF-8'); ?>" title="<?php echo htmlentities($vars['entity']->name, ENT_QUOTES, 'UTF-8'); ?>" <?php echo $vars['js']; ?> /><?php
-
- if (!$override) {
- ?>
- </a></div>
- <?php
- }
-} \ No newline at end of file
diff --git a/mod/profile/views/default/profile/javascript.php b/mod/profile/views/default/profile/javascript.php
deleted file mode 100644
index a408d1c84..000000000
--- a/mod/profile/views/default/profile/javascript.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?php
-
-/**
- * Elgg profile image Javascript
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- *
- * @uses $vars['entity'] The user entity
- */
-
-// header("Content-type: text/javascript");
-// header("Pragma: public");
-// header("Cache-Control: public");
-
-?>
-
-var submenuLayer = 1000;
-
-function setup_avatar_menu() {
-
- // avatar image menu link
- $("div.usericon img").mouseover(function() {
- // find nested avatar_menu_button and show
- $(this.parentNode.parentNode).children(".avatar_menu_button").show();
- $(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow");
- //$(this.parentNode.parentNode).css("z-index", submenuLayer);
- })
- .mouseout(function() {
- if($(this).parent().parent().find("div.sub_menu").css('display')!="block") {
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_on");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
- $(this.parentNode.parentNode).children(".avatar_menu_button").hide();
- }
- else {
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_on");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
- $(this.parentNode.parentNode).children(".avatar_menu_button").show();
- $(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow");
- }
- });
-
-
- // avatar contextual menu
- $(".avatar_menu_button img").click(function(e) {
-
- var submenu = $(this).parent().parent().find("div.sub_menu");
-
- // close submenu if arrow is clicked & menu already open
- if(submenu.css('display') == "block") {
- //submenu.hide();
- }
- else {
- // get avatar dimensions
- var avatar = $(this).parent().parent().parent().find("div.usericon");
- //alert( "avatarWidth: " + avatar.width() + ", avatarHeight: " + avatar.height() );
-
- // move submenu position so it aligns with arrow graphic
- if (e.pageX < 840) { // popup menu to left of arrow if we're at edge of page
- submenu.css("top",(avatar.height()) + "px")
- .css("left",(avatar.width()-15) + "px")
- .fadeIn('normal');
- }
- else {
- submenu.css("top",(avatar.height()) + "px")
- .css("left",(avatar.width()-166) + "px")
- .fadeIn('normal');
- }
-
- // force z-index - workaround for IE z-index bug
- avatar.css("z-index", submenuLayer);
- avatar.find("a.icon img").css("z-index", submenuLayer);
- submenu.css("z-index", submenuLayer+1);
-
- submenuLayer++;
-
- // change arrow to 'on' state
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow_on");
- }
-
- // hide any other open submenus and reset arrows
- $("div.sub_menu:visible").not(submenu).hide();
- $(".avatar_menu_button").removeClass("avatar_menu_arrow");
- $(".avatar_menu_button").removeClass("avatar_menu_arrow_on");
- $(".avatar_menu_button").removeClass("avatar_menu_arrow_hover");
- $(".avatar_menu_button").hide();
- $(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow_on");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").show();
- //alert("submenuLayer = " +submenu.css("z-index"));
- })
- // hover arrow each time mouseover enters arrow graphic (eg. when menu is already shown)
- .mouseover(function() {
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_on");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow_hover");
- })
- // if menu not shown revert arrow, else show 'menu open' arrow
- .mouseout(function() {
- if($(this).parent().parent().find("div.sub_menu").css('display')!="block"){
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow");
- }
- else {
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow_hover");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").removeClass("avatar_menu_arrow");
- $(this.parentNode.parentNode).children("div.avatar_menu_button").addClass("avatar_menu_arrow_on");
- }
- });
-
- // hide avatar menu if click occurs outside of menu
- // and hide arrow button
- $(document).click(function(event) {
- var target = $(event.target);
- if (target.parents(".usericon").length == 0) {
- $(".usericon div.sub_menu").fadeOut();
- $(".avatar_menu_button").removeClass("avatar_menu_arrow");
- $(".avatar_menu_button").removeClass("avatar_menu_arrow_on");
- $(".avatar_menu_button").removeClass("avatar_menu_arrow_hover");
- $(".avatar_menu_button").hide();
- }
- });
-
-
-}
-
-$(document).ready(function() {
-
- setup_avatar_menu();
-
-});
diff --git a/mod/profile/views/default/profile/js.php b/mod/profile/views/default/profile/js.php
new file mode 100644
index 000000000..5a08a90bd
--- /dev/null
+++ b/mod/profile/views/default/profile/js.php
@@ -0,0 +1,9 @@
+
+// force the first column to at least be as large as the profile box in cols 2 and 3
+// we also want to run before the widget init happens so priority is < 500
+elgg.register_hook_handler('init', 'system', function() {
+ // only do this on the profile page's widget canvas.
+ if ($('.profile').length) {
+ $('#elgg-widget-col-1').css('min-height', $('.profile').outerHeight(true) + 1);
+ }
+}, 400);
diff --git a/mod/profile/views/default/profile/listing.php b/mod/profile/views/default/profile/listing.php
deleted file mode 100644
index e53f9df75..000000000
--- a/mod/profile/views/default/profile/listing.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/**
- * Elgg user display (small)
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- *
- * @uses $vars['entity'] The user entity
- */
-
-$icon = elgg_view(
- "profile/icon", array(
- 'entity' => $vars['entity'],
- 'size' => 'tiny',
- )
-);
-
-$banned = $vars['entity']->isBanned();
-
-// Simple XFN
-$rel = "";
-if (page_owner() == $vars['entity']->guid)
- $rel = 'me';
-else if (check_entity_relationship(page_owner(), 'friend', $vars['entity']->guid))
- $rel = 'friend';
-
-if (!$banned) {
- $info .= "<p class='entity_title user'><a href=\"" . $vars['entity']->getUrl() . "\" rel=\"$rel\">" . $vars['entity']->name . "</a></p>";
- $location = $vars['entity']->location;
- if (!empty($location)) {
- $info .= "<p class='entity_subtext user'>" . elgg_echo("profile:location") . ": " . elgg_view("output/tags",array('value' => $vars['entity']->location)) . "</p>";
- }
- //create a view that a status plugin could extend - in the default case, this is the wire
- $info .= elgg_view("profile/status", array("entity" => $vars['entity']));
-}else{
- $info .= "<p class='entity_title user banned'>";
- if (isadminloggedin())
- $info .= "<a href=\"" . $vars['entity']->getUrl() . "\">";
- $info .= $vars['entity']->name;
- if (isadminloggedin())
- $info .= "</a>";
- $info .= "</p>";
-}
-
-echo elgg_view_listing($icon, $info); \ No newline at end of file
diff --git a/mod/profile/views/default/profile/menu/adminlinks.php b/mod/profile/views/default/profile/menu/adminlinks.php
deleted file mode 100644
index a88f96816..000000000
--- a/mod/profile/views/default/profile/menu/adminlinks.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * Profile admin context links
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- *
- * @uses $vars['entity'] The user entity
- */
-
-if (isadminloggedin()){
- if ($_SESSION['id']!=$vars['entity']->guid){
-?>
- <a href="<?php echo $vars['url']; ?>pg/settings/user/<?php echo $vars['entity']->username; ?>/"><?php echo elgg_echo('profile:editdetails'); ?></a>
-<?php
- if (!$vars['entity']->isBanned()) {
- echo elgg_view('output/confirmlink', array('text' => elgg_echo("ban"), 'href' => "{$vars['url']}action/admin/user/ban?guid={$vars['entity']->guid}"));
- } else {
- echo elgg_view('output/confirmlink', array('text' => elgg_echo("unban"), 'href' => "{$vars['url']}action/admin/user/unban?guid={$vars['entity']->guid}"));
- }
- echo elgg_view('output/confirmlink', array('text' => elgg_echo("delete"), 'href' => "{$vars['url']}action/admin/user/delete?guid={$vars['entity']->guid}"));
- echo elgg_view('output/confirmlink', array('text' => elgg_echo("resetpassword"), 'href' => "{$vars['url']}action/admin/user/resetpassword?guid={$vars['entity']->guid}"));
- if (!$vars['entity']->admin) {
- echo elgg_view('output/confirmlink', array('text' => elgg_echo("makeadmin"), 'href' => "{$vars['url']}action/admin/user/makeadmin?guid={$vars['entity']->guid}"));
- } else {
- echo elgg_view('output/confirmlink', array('text' => elgg_echo("removeadmin"), 'href' => "{$vars['url']}action/admin/user/removeadmin?guid={$vars['entity']->guid}"));
- }
- }
- } \ No newline at end of file
diff --git a/mod/profile/views/default/profile/menu/friendlinks.php b/mod/profile/views/default/profile/menu/friendlinks.php
deleted file mode 100644
index f7ca3c2fd..000000000
--- a/mod/profile/views/default/profile/menu/friendlinks.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-/**
- * Elgg profile icon avatar menu: Add / Remove friend links
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- *
- * @uses $vars['entity'] The user entity. If none specified, the current user is assumed.
- */
-$ts = time();
-$token = generate_action_token($ts);
-if ($vars['entity']->isFriend()) {
- echo elgg_view('output/confirmlink', array(
- 'href' => "{$vars['url']}action/friends/remove?friend={$vars['entity']->getGUID()}",
- 'text' => elgg_echo('friend:remove'),
- 'class' => 'remove_friend'
- ));
-} else {
- echo elgg_view('output/confirmlink', array(
- 'href' => "{$vars['url']}action/friends/add?friend={$vars['entity']->getGUID()}",
- 'text' => elgg_echo('friend:add'),
- 'class' => 'add_friend'
- ));
-} \ No newline at end of file
diff --git a/mod/profile/views/default/profile/menu/links.php b/mod/profile/views/default/profile/menu/links.php
deleted file mode 100644
index de2b28926..000000000
--- a/mod/profile/views/default/profile/menu/links.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-/**
- * Elgg profile icon avatar menu: view for plugins to extend
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- *
- * @uses $vars['entity'] The user entity. If none specified, the current user is assumed.
- */
-?>
diff --git a/mod/profile/views/default/profile/metatags.php b/mod/profile/views/default/profile/metatags.php
index 0039281f0..52048b8a7 100644
--- a/mod/profile/views/default/profile/metatags.php
+++ b/mod/profile/views/default/profile/metatags.php
@@ -1,15 +1,16 @@
<?php
/**
- * Adds metatags to load Javascript required for the profile
+ * FOAF
*
* @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider Ltd <info@elgg.com>
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
*
*/
-if ($owner = page_owner_entity()) { ?>
- <link rel="meta" type="application/rdf+xml" title="FOAF" href="<?php echo full_url(); ?>?view=foaf" />
-<?php } ?> \ No newline at end of file
+$owner = elgg_get_page_owner_entity();
+
+if (elgg_instanceof($owner, 'user')) {
+?>
+ <link rel="meta" type="application/rdf+xml" title="FOAF" href="<?php echo current_page_url(); ?>?view=foaf" />
+<?php
+
+}
diff --git a/mod/profile/views/default/profile/owner_block.php b/mod/profile/views/default/profile/owner_block.php
new file mode 100644
index 000000000..63cb5391a
--- /dev/null
+++ b/mod/profile/views/default/profile/owner_block.php
@@ -0,0 +1,66 @@
+<?php
+/**
+ * Profile owner block
+ */
+
+$user = elgg_get_page_owner_entity();
+
+if (!$user) {
+ // no user so we quit view
+ echo elgg_echo('viewfailure', array(__FILE__));
+ return TRUE;
+}
+
+$icon = elgg_view_entity_icon($user, 'large', array(
+ 'use_hover' => false,
+ 'use_link' => false,
+));
+
+// grab the actions and admin menu items from user hover
+$menu = elgg_trigger_plugin_hook('register', "menu:user_hover", array('entity' => $user), array());
+$builder = new ElggMenuBuilder($menu);
+$menu = $builder->getMenu();
+$actions = elgg_extract('action', $menu, array());
+$admin = elgg_extract('admin', $menu, array());
+
+$profile_actions = '';
+if (elgg_is_logged_in() && $actions) {
+ $profile_actions = '<ul class="elgg-menu profile-action-menu mvm">';
+ foreach ($actions as $action) {
+ $profile_actions .= '<li>' . $action->getContent(array('class' => 'elgg-button elgg-button-action')) . '</li>';
+ }
+ $profile_actions .= '</ul>';
+}
+
+// if admin, display admin links
+$admin_links = '';
+if (elgg_is_admin_logged_in() && elgg_get_logged_in_user_guid() != elgg_get_page_owner_guid()) {
+ $text = elgg_echo('admin:options');
+
+ $admin_links = '<ul class="profile-admin-menu-wrapper">';
+ $admin_links .= "<li><a rel=\"toggle\" href=\"#profile-menu-admin\">$text&hellip;</a>";
+ $admin_links .= '<ul class="profile-admin-menu" id="profile-menu-admin">';
+ foreach ($admin as $menu_item) {
+ $admin_links .= elgg_view('navigation/menu/elements/item', array('item' => $menu_item));
+ }
+ $admin_links .= '</ul>';
+ $admin_links .= '</li>';
+ $admin_links .= '</ul>';
+}
+
+// content links
+$content_menu = elgg_view_menu('owner_block', array(
+ 'entity' => elgg_get_page_owner_entity(),
+ 'class' => 'profile-content-menu',
+));
+
+echo <<<HTML
+
+<div id="profile-owner-block">
+ $icon
+ $profile_actions
+ $content_menu
+ $admin_links
+</div>
+
+HTML;
diff --git a/mod/profile/views/default/profile/profile_contents/activity.php b/mod/profile/views/default/profile/profile_contents/activity.php
deleted file mode 100755
index c767d5ad7..000000000
--- a/mod/profile/views/default/profile/profile_contents/activity.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-/**
- * Elgg user display (details)
- * @uses $vars['entity'] The user entity
- */
-?>
-<div id="profile_content">
- <?php
- if(is_plugin_enabled('thewire')) {
- // users last status msg, if they posted one
- echo elgg_view("profile/status", array("entity" => $vars['entity']));
- }
- if(is_plugin_enabled('conversations')) {
- // users last status msg, if they posted one
- echo elgg_view("profile/status", array("entity" => $vars['entity']));
- }
- if(is_plugin_enabled('riverdashboard')) {
- // users last 10 activites
- echo elgg_view_river_items($vars['entity']->getGuid(), 0, '', '', '', '', $limit,0,0,false,false);
- } else {
- echo "Riverdashboard not loaded";
- }
- ?>
-</div>
diff --git a/mod/profile/views/default/profile/profile_contents/details.php b/mod/profile/views/default/profile/profile_contents/details.php
deleted file mode 100755
index d040cef75..000000000
--- a/mod/profile/views/default/profile/profile_contents/details.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-/**
- * Elgg user display (details)
- * @uses $vars['entity'] The user entity
- */
-?>
-<div id="profile_content">
-<?php
- // Simple XFN
- $rel = "";
- if (page_owner() == $vars['entity']->guid)
- $rel = 'me';
- else if (check_entity_relationship(page_owner(), 'friend', $vars['entity']->guid))
- $rel = 'friend';
-
- $even_odd = null;
- if (is_array($vars['config']->profile) && sizeof($vars['config']->profile) > 0)
- foreach($vars['config']->profile as $shortname => $valtype) {
- if ($shortname != "description") {
- $value = $vars['entity']->$shortname;
- if (!empty($value)) {
- //This function controls the alternating class
- $even_odd = ( 'odd' != $even_odd ) ? 'odd' : 'even';
-?>
- <p class="<?php echo $even_odd; ?>">
- <b><?php
- echo elgg_echo("profile:{$shortname}");
- ?>: </b>
- <?php
- echo elgg_view("output/{$valtype}",array('value' => $vars['entity']->$shortname));
- ?>
- </p>
- <?php
- }
- }
- }
-?>
-<?php
- if (!get_plugin_setting('user_defined_fields', 'profile')) {
-?>
-<?php
- if ($vars['entity']->isBanned()) {
- echo "<div class='banned_user'>";
- echo elgg_echo('profile:banned');
- echo "</div>";
- }else{
- if($vars['entity']->description){
- echo "<p class='aboutme_title'><b>" . elgg_echo("profile:aboutme") . "</b></p>";
- echo "<div class='aboutme_contents'>" .elgg_view('output/longtext', array('value' => $vars['entity']->description))."</div>";
- }
- ?>
-<?php } ?>
- <?php
- }
-
- echo "</div>"; \ No newline at end of file
diff --git a/mod/profile/views/default/profile/profile_contents/friends.php b/mod/profile/views/default/profile/profile_contents/friends.php
deleted file mode 100755
index a097f3830..000000000
--- a/mod/profile/views/default/profile/profile_contents/friends.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-/**
- * Profile friends
- **/
-
-$friends = list_entities_from_relationship('friend',$vars['entity']->getGUID(),false,'user','',0,10,false);
-if(!$friends)
- $friends = "<p>This user has not made any friends yet.</p>";
-
-?>
-<div id="profile_content">
- <?php
- echo $friends;
- ?>
-</div> \ No newline at end of file
diff --git a/mod/profile/views/default/profile/profile_contents/sidebar.php b/mod/profile/views/default/profile/profile_contents/sidebar.php
deleted file mode 100644
index 43e3d1087..000000000
--- a/mod/profile/views/default/profile/profile_contents/sidebar.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * Elgg profile icon edit form
- *
- * @package ElggProfile
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @author Curverider
- * @copyright Curverider Ltd 2008-2010
- * @link http://elgg.com/
- */
-?>
-<div id="profile_sidebar">
-<?php
- $section = $vars['section'];
- echo elgg_view('profile/profile_ownerblock', array('section' => $section));
-?>
-</div> \ No newline at end of file
diff --git a/mod/profile/views/default/profile/profile_contents/twitter.php b/mod/profile/views/default/profile/profile_contents/twitter.php
deleted file mode 100755
index f9b6f5d54..000000000
--- a/mod/profile/views/default/profile/profile_contents/twitter.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Elgg twitter view page
- */
-
-$twitter_username = $vars['entity']->twitter;
-
-// if the twitter username is empty, then do not show
-if($twitter_username){
-?>
-<div id="profile_content">
- <ul id="twitter_update_list"></ul>
- <p class="visit_twitter"><a href="http://twitter.com/<?php echo $twitter_username; ?>" target="_blank"><?php echo elgg_echo("twitter:visit"); ?></a></p>
- <script type="text/javascript" src="http://twitter.com/javascripts/blogger.js"></script>
- <script type="text/javascript" src="http://twitter.com/statuses/user_timeline/<?php echo $twitter_username; ?>.json?callback=twitterCallback2&count=10"></script>
-</div>
-
-<?php
-} \ No newline at end of file
diff --git a/mod/profile/views/default/profile/profile_navigation.php b/mod/profile/views/default/profile/profile_navigation.php
deleted file mode 100755
index b322066bf..000000000
--- a/mod/profile/views/default/profile/profile_navigation.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-$section = 'activity';
-if (isset($vars['section'])) {
- $section = $vars['section'];
-}
-
-$profile = $vars['entity'];
-$activity = '';
-$friends = '';
-$extend = '';
-$twitter = '';
-
-$url = "{$profile->getURL()}/";
-
-//select section
-switch($section){
- case 'friends':
- $friends = 'class="selected"';
- break;
-
- case 'details':
- $details = 'class="selected"';
- break;
-
- case 'twitter':
- $twitter = 'class="selected"';
- break;
-
- case 'activity':
- default:
- $activity = 'class="selected"';
- break;
-}
-?>
-<div class="elgg_horizontal_tabbed_nav profile">
-<div class="profile_name"><h2><?php echo $profile->name; ?></h2></div>
-<ul>
- <li <?php echo $activity; ?>><a href="<?php echo $url; ?>">Activity</a></li>
- <li <?php echo $details; ?>><a href="<?php echo $url . 'details'; ?>">Details</a></li>
- <li <?php echo $friends; ?>><a href="<?php echo $url . 'friends'; ?>">Friends</a></li>
- <?php
- //check to see if the twitter username is set
- if($vars['entity']->twitter){
- ?>
- <li <?php echo $twitter; ?>><a href="<?php echo $url . 'twitter'; ?>">Twitter</a></li>
- <?php
- }
- ?>
-</ul>
-</div>
diff --git a/mod/profile/views/default/profile/profile_ownerblock.php b/mod/profile/views/default/profile/profile_ownerblock.php
deleted file mode 100755
index 4a6622fc8..000000000
--- a/mod/profile/views/default/profile/profile_ownerblock.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-/**
- * A simple owner block which houses info about the user whose 'stuff' you are looking at
- */
-
-//get the page owner
-if($vars['entity']){
- if($vars['context'] == 'edit')
- $user = get_entity($vars['entity']->container_guid);
- else
- $user = get_entity($vars['entity']->guid);
-}else{
- $user = page_owner_entity();
-}
-$more_info = '';
-//set some variables
-$location = elgg_view("output/tags",array('value' => $user->location));
-$section = $vars['section'];
-if($section == 'details'){
- $icon = elgg_view("profile/icon",array('entity' => $user, 'size' => 'large', 'override' => 'true'));
- $icon_class = "large";
-}else{
- $icon = elgg_view("profile/icon",array('entity' => $user, 'size' => 'small'));
- $more_info = "<div class='owner_block_contents clearfloat'>";
- $more_info .= "<h3><a href='{$url}'>{$user->name}</a></h3>";
- $more_info .= "<p class='profile_info briefdescription'>{$user->briefdescription}</p>";
- $more_info .= "<p class='profile_info location'>{$location}</p>";
- $more_info .= "</div>";
-}
-$profile_actions = "";
-if(get_loggedin_user()->getGuid() == page_owner()){
- $profile_actions = "<div class='clearfloat profile_actions'>";
- $profile_actions .= "<a href='{$vars['url']}pg/profile/{$user->username}/edit/details' class='action_button'>". elgg_echo('profile:edit') ."</a>";
- $profile_actions .= "<a href='{$vars['url']}pg/profile/{$user->username}/edit/icon' class='action_button'>". elgg_echo('profile:editicon') ."</a>";
- $profile_actions .= "</div>";
-}else{
- $profile_actions = "<div class='profile_actions'>";
- if (isloggedin()) {
- if ($_SESSION['user']->getGUID() != $user->getGUID()) {
- $ts = time();
- $token = generate_action_token($ts);
-
- if ($user->isFriend()) {
- $profile_actions .= "<a href=\"{$vars['url']}action/friends/remove?friend={$user->getGUID()}&__elgg_token=$token&__elgg_ts=$ts\" class='action_button'>" . elgg_echo('friend:remove') . "</a>";
- } else {
- $profile_actions .= "<a href=\"{$vars['url']}action/friends/add?friend={$user->getGUID()}&__elgg_token=$token&__elgg_ts=$ts\" class='action_button'>" . elgg_echo('friend:add') . "</a>";
- }
- }
- }
- if(is_plugin_enabled('messages')){
- $profile_actions .= "<a href=\"{$vars['url']}mod/messages/send.php?send_to={$user->guid}\" class='action_button'>". elgg_echo('messages:send') ."</a>";
- }
- $profile_actions .= "</div>";
-}
-
-$username = $user->username;
-$email = $user->email;
-$phone = $user->phone;
-
-//get correct links
-$url = $vars['url'];
-
-//if admin display admin links
-if(isadminloggedin()){
- $admin_links = elgg_view('profile/admin_menu');
-}else{
- $admin_links = '';
-}
-
-
-//check tools are enabled
-if(is_plugin_enabled('file')){
- $file_link = "<li {$file_highlight}><a href=\"{$vars['url']}pg/file/{$username}\">Files</a></li>";
-}else{
- $file_link = "";
-}
-if(is_plugin_enabled('blog')){
- $blog_link = "<li {$blog_highlight}><a href=\"{$vars['url']}pg/blog/{$username}\">Blog</a></li>";
-}else{
- $blog_link = "";
-}
-if(is_plugin_enabled('video')){
- $video_link = "<li {$video_highlight}><a href=\"{$vars['url']}pg/video/{$username}\">Videos</a></li>";
-}else{
- $video_link = "";
-}
-if(is_plugin_enabled('pages')){
- $pages_link = "<li {$pages_highlight}><a href=\"{$vars['url']}pg/pages/owned/{$username}\">Pages</a></li>";
-}else{
- $pages_link = "";
-}
-if(is_plugin_enabled('bookmarks')){
- $bookmark_link = "<li {$bookmarks_highlight}><a href=\"{$vars['url']}pg/bookmarks/{$username}\">Bookmarks</a></li>";
-}else{
- $bookmark_link = "";
-}
-
-
-
-//contruct the display
-$display = <<<EOT
-
-<div id="owner_block">
- <div class="owner_block_icon {$icon_class}">
- {$icon}
- </div>
- {$more_info}
- {$profile_actions}
- <div class="owner_block_links">
- <ul>
- {$file_link}
- {$blog_link}
- {$video_link}
- {$bookmark_link}
- {$pages_link}
- </ul>
- </div>
- <!-- if admin user -->
- {$admin_links}
-</div>
-
-EOT;
-
-echo $display;
diff --git a/mod/profile/views/default/profile/wrapper.php b/mod/profile/views/default/profile/wrapper.php
new file mode 100644
index 000000000..73b7934f2
--- /dev/null
+++ b/mod/profile/views/default/profile/wrapper.php
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Profile info box
+ */
+
+?>
+<div class="profile elgg-col-2of3">
+ <div class="elgg-inner clearfix">
+ <?php echo elgg_view('profile/owner_block'); ?>
+ <?php echo elgg_view('profile/details'); ?>
+ </div>
+</div> \ No newline at end of file
diff --git a/mod/profile/views/default/river/user/default/profileiconupdate.php b/mod/profile/views/default/river/user/default/profileiconupdate.php
deleted file mode 100644
index 1dca77df6..000000000
--- a/mod/profile/views/default/river/user/default/profileiconupdate.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
- $performed_by = get_entity($vars['item']->subject_guid); // $statement->getSubject();
-
- $url = "<a href=\"{$performed_by->getURL()}\">{$performed_by->name}</a>";
- $string = sprintf(elgg_echo("profile:river:update"),$url) ." <span class='entity_subtext'>" . friendly_time($vars['item']->posted) . "</span>";
-
- echo $string; \ No newline at end of file
diff --git a/mod/profile/views/default/river/user/default/profileupdate.php b/mod/profile/views/default/river/user/default/profileupdate.php
deleted file mode 100644
index e609e1a40..000000000
--- a/mod/profile/views/default/river/user/default/profileupdate.php
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
- $performed_by = get_entity($vars['item']->subject_guid); // $statement->getSubject();
-
- $url = "<a href=\"{$performed_by->getURL()}\">{$performed_by->name}</a>";
- $string = sprintf(elgg_echo("profile:river:update"),$url) ." <span class='entity_subtext'>" . friendly_time($vars['item']->posted) . "</span>";
-
-?>
-
-<?php echo $string; ?> \ No newline at end of file