diff options
Diffstat (limited to 'mod/profile')
73 files changed, 411 insertions, 3448 deletions
diff --git a/mod/profile/actions/addcomment.php b/mod/profile/actions/addcomment.php deleted file mode 100644 index 07f72ef8e..000000000 --- a/mod/profile/actions/addcomment.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php -/** - * Elgg profile commentwall: add message action - */ - -// Make sure we're logged in; forward to the front page if not -if (!isloggedin()) forward(); - -// Get input -$message_content = get_input('message_content'); // the actual message -$page_owner = get_input("pageOwner"); // the message board owner -$message_owner = get_input("guid"); // the user posting the message -$user = get_entity($page_owner); // the commentwall owner details - -// Let's see if we can get a user entity from the specified page_owner -if ($user && !empty($message_content)) { - - // If posting the comment was successful, say so - if ($user->annotate('commentwall',$message_content,$user->access_id, get_loggedin_userid())) { - - global $CONFIG; - - if ($user->getGUID() != get_loggedin_userid()) - notify_user($user->getGUID(), get_loggedin_userid(), elgg_echo('profile:comment:subject'), - elgg_echo('profile:comment:body', array( - get_loggedin_user()->name, - $message_content, - elgg_get_site_url() . "pg/profile/" . $user->username, - get_loggedin_user()->name, - get_loggedin_user()->getURL() - )) - ); - - system_message(elgg_echo("profile:commentwall:posted")); - // add to river - add_to_river('river/object/profile/commentwall/create','commentwall',get_loggedin_userid(),$user->guid); - - } else { - register_error(elgg_echo("profile:commentwall:failure")); - } - -} else { - register_error(elgg_echo("profile:commentwall:blank")); -} - -// Forward back to the messageboard -forward(REFERER);
\ No newline at end of file diff --git a/mod/profile/actions/cropicon.php b/mod/profile/actions/cropicon.php deleted file mode 100644 index 1212e8bab..000000000 --- a/mod/profile/actions/cropicon.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php -/** - * Elgg profile plugin upload new user icon action - * - * @package ElggProfile - */ - -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(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, TRUE); -$tiny = get_resized_image_from_existing_file($filename, 25, 25, true, $x1, $y1, $x2, $y2, TRUE); -$small = get_resized_image_from_existing_file($filename, 40, 40, true, $x1, $y1, $x2, $y2, TRUE); -$medium = get_resized_image_from_existing_file($filename, 100, 100, true, $x1, $y1, $x2, $y2, TRUE); - -if ($small !== FALSE && $medium !== FALSE && $tiny !== FALSE) { - $filehandler = new ElggFile(); - $filehandler->owner_guid = $profile_owner->getGUID(); - $filehandler->setFilename("profile/" . $profile_owner->guid . "medium.jpg"); - $filehandler->open("write"); - $filehandler->write($medium); - $filehandler->close(); - $filehandler->setFilename("profile/" . $profile_owner->guid . "small.jpg"); - $filehandler->open("write"); - $filehandler->write($small); - $filehandler->close(); - $filehandler->setFilename("profile/" . $profile_owner->guid . "tiny.jpg"); - $filehandler->open("write"); - $filehandler->write($tiny); - $filehandler->close(); - $filehandler->setFilename("profile/" . $profile_owner->guid . "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 = elgg_get_site_url()."pg/profile/{$profile_owner->username}/edit/icon"; - -if (isloggedin()) { - forward($url); -} diff --git a/mod/profile/actions/deletecomment.php b/mod/profile/actions/deletecomment.php deleted file mode 100644 index 233d53069..000000000 --- a/mod/profile/actions/deletecomment.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -/** - * Elgg profile commentwall: delete message action - */ - -// Ensure we're logged in -if (!isloggedin()) forward(); - -// Make sure we can get the comment in question -$annotation_id = (int) get_input('annotation_id'); - -//make sure that there is a message on the commentwall matching the passed id -if ($message = get_annotation($annotation_id)) { - //grab the user or group entity - $entity = get_entity($message->entity_guid); - //check to make sure the current user can actually edit the commentwall - if ($message->canEdit()) { - //delete the comment - $message->delete(); - //display message - system_message(elgg_echo("profile:commentwall:deleted")); - forward(REFERER); - } - -} else { - system_message(elgg_echo("profile:commentwall:notdeleted")); -} - -forward(REFERER);
\ No newline at end of file diff --git a/mod/profile/actions/deletedefaultprofileitem.php b/mod/profile/actions/deletedefaultprofileitem.php deleted file mode 100644 index f3880954f..000000000 --- a/mod/profile/actions/deletedefaultprofileitem.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php -/** - * Elgg profile plugin edit default profile action removal - * - * @package ElggProfile - */ - -global $CONFIG; - -admin_gatekeeper(); - -$id = get_input('id'); - -$fieldlist = get_plugin_setting('user_defined_fields', 'profile'); -if (!$fieldlist) { - $fieldlist = ''; -} - -$fieldlist = str_replace("{$id},", "", $fieldlist); -$fieldlist = str_replace(",{$id}", "", $fieldlist); -$fieldlist = str_replace("{$id}", "", $fieldlist); - -if (($id) && (set_plugin_setting("admin_defined_profile_$id", '', 'profile')) && - (set_plugin_setting("admin_defined_profile_type_$id", '', 'profile')) && - set_plugin_setting('user_defined_fields',$fieldlist,'profile')) { - system_message(elgg_echo('profile:editdefault:delete:success')); -} else { - register_error(elgg_echo('profile:editdefault:delete:fail')); -} - -forward(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 f3c928cef..000000000 --- a/mod/profile/actions/edit.php +++ /dev/null @@ -1,111 +0,0 @@ -<?php -/** - * Elgg profile plugin edit action - * - * @package ElggProfile - */ - -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(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(); -} - -/** - * wrapper for recursive array walk decoding - */ -function profile_array_decoder(&$v) { - $v = html_entity_decode($v, ENT_COMPAT, 'UTF-8'); -} - - -foreach($CONFIG->profile as $shortname => $valuetype) { - // the decoding is a stop gag to prevent && 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 = get_input($shortname); - if (is_array($value)) { - array_walk_recursive($value, 'profile_array_decoder'); - } else { - $value = html_entity_decode($value, ENT_COMPAT, 'UTF-8'); - } - - // limit to reasonable sizes. - if (!is_array($value) && $valuetype != 'longtext' && elgg_strlen($value) > 250) { - $error = elgg_echo('profile:field_too_long', array(elgg_echo("profile:{$shortname}"))); - register_error($error); - forward(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')); - } elseif ($profile_owner->name != $name) { - $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 if edited by self - if (get_loggedin_userid() == $user->guid) { - add_to_river('river/user/default/profileupdate','update',get_loggedin_userid(),get_loggedin_userid(),get_default_access(get_loggedin_user())); - } - - system_message(elgg_echo("profile:saved")); -} - -forward($profile_owner->getUrl() . "/details"); diff --git a/mod/profile/actions/editdefault.php b/mod/profile/actions/editdefault.php deleted file mode 100644 index 1d50f432a..000000000 --- a/mod/profile/actions/editdefault.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php -/** - * Elgg profile plugin edit default profile action - * - * @package ElggProfile - */ - -global $CONFIG; -admin_gatekeeper(); - -$label = sanitise_string(get_input('label')); -$type = sanitise_string(get_input('type')); - -$fieldlist = get_plugin_setting('user_defined_fields', 'profile'); -if (!$fieldlist) { - $fieldlist = ''; -} - -if (($label) && ($type)){ - // Assign a random name - $n = md5(time().rand(0,9999)); - - if (!empty($fieldlist)) { - $fieldlist .= ','; - } - $fieldlist .= $n; - - if ((set_plugin_setting("admin_defined_profile_$n", $label, 'profile')) && - (set_plugin_setting("admin_defined_profile_type_$n", $type, 'profile')) && - set_plugin_setting('user_defined_fields',$fieldlist,'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(REFERER);
\ No newline at end of file diff --git a/mod/profile/actions/editfield.php b/mod/profile/actions/editfield.php deleted file mode 100644 index 7df7dd9cc..000000000 --- a/mod/profile/actions/editfield.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php -/** - * Elgg profile plugin edit default profile action - * - * @package ElggProfile - */ - -admin_gatekeeper(); - -$field = get_input('field'); -$text = get_input('value'); - -set_plugin_setting("admin_defined_profile_{$field}",$text,'profile'); - -echo $text; - -exit;
\ 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 cd842752f..000000000 --- a/mod/profile/actions/iconupload.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php -/** - * Elgg profile plugin upload new user icon action - * - * @package ElggProfile - */ - -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(REFERER); -} - -$profile_owner_guid = $profile_owner->getGUID(); - -//@todo make this configurable? -$icon_sizes = array( - 'topbar' => array('w'=>16, 'h'=>16, 'square'=>TRUE, 'upscale'=>TRUE), - 'tiny' => array('w'=>25, 'h'=>25, 'square'=>TRUE, 'upscale'=>TRUE), - 'small' => array('w'=>40, 'h'=>40, 'square'=>TRUE, 'upscale'=>TRUE), - 'medium' => array('w'=>100, 'h'=>100, 'square'=>TRUE, 'upscale'=>TRUE), - 'large' => array('w'=>200, 'h'=>200, 'square'=>FALSE, 'upscale'=>FALSE), - 'master' => array('w'=>1600, 'h'=>1600, 'square'=>FALSE, 'upscale'=>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'], $size_info['upscale']); - - if ($resized) { - //@todo Make these actual entities. See exts #348. - $file = new ElggFile(); - $file->owner_guid = $profile_owner_guid; - $file->setFilename("profile/{$profile_owner_guid}{$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(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(REFERER); diff --git a/mod/profile/actions/reorder.php b/mod/profile/actions/reorder.php deleted file mode 100644 index dfb2bfb3d..000000000 --- a/mod/profile/actions/reorder.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php -/** - * Elgg profile plugin reorder fields - * - * @package ElggProfile - */ - -admin_gatekeeper(); -$ordering = get_input('fieldorder'); -//if (!empty($ordering)) -$result = set_plugin_setting('user_defined_fields',$ordering,'profile'); - -exit;
\ No newline at end of file diff --git a/mod/profile/actions/resetdefaultprofile.php b/mod/profile/actions/resetdefaultprofile.php deleted file mode 100644 index facc82f71..000000000 --- a/mod/profile/actions/resetdefaultprofile.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php -/** - * Elgg profile plugin edit default profile action - * - * @package ElggProfile - */ - -global $CONFIG; -admin_gatekeeper(); - -if ($fieldlist = get_plugin_setting('user_defined_fields', 'profile')) { - $fieldlistarray = explode(',', $fieldlist); - foreach($fieldlistarray as $listitem) { - set_plugin_setting("admin_defined_profile_{$listitem}", '', 'profile'); - set_plugin_setting("admin_defined_profile_type_{$listitem}", '', 'profile'); - } -} - -set_plugin_setting('user_defined_fields', FALSE, 'profile'); - -system_message(elgg_echo('profile:defaultprofile:reset')); - -forward(REFERER);
\ No newline at end of file diff --git a/mod/profile/edit.php b/mod/profile/edit.php deleted file mode 100644 index 12ce8564a..000000000 --- a/mod/profile/edit.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -/** - * Elgg profile editor - * - * @package ElggProfile - */ - -// 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 = elgg_get_page_owner(); -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)); - -elgg_set_context('profile_edit'); - -// get the required canvas area -$body = elgg_view_layout("one_column_with_sidebar", $area1); - -// Draw the page -echo elgg_view_page(elgg_echo("profile:edit"),$body); diff --git a/mod/profile/editicon.php b/mod/profile/editicon.php deleted file mode 100644 index 4c19937b2..000000000 --- a/mod/profile/editicon.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php -/** - * Elgg upload new profile icon - * - * @package ElggProfile - */ - -// 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 = elgg_get_page_owner(); -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)); - -elgg_set_context('profile_edit'); - -// Get the form and correct canvas area -$body = elgg_view_layout("one_column_with_sidebar", $area1); - -// Draw the page -echo elgg_view_page(elgg_echo("profile:editicon"), $body); diff --git a/mod/profile/graphics/defaultlarge.gif b/mod/profile/graphics/defaultlarge.gif Binary files differdeleted file mode 100644 index 6ea3bd4cd..000000000 --- a/mod/profile/graphics/defaultlarge.gif +++ /dev/null diff --git a/mod/profile/graphics/defaultmaster.gif b/mod/profile/graphics/defaultmaster.gif Binary files differdeleted file mode 100644 index 5bfd67a2d..000000000 --- a/mod/profile/graphics/defaultmaster.gif +++ /dev/null diff --git a/mod/profile/graphics/defaultmedium.gif b/mod/profile/graphics/defaultmedium.gif Binary files differdeleted file mode 100644 index c6b2e6a6d..000000000 --- a/mod/profile/graphics/defaultmedium.gif +++ /dev/null diff --git a/mod/profile/graphics/defaultsmall.gif b/mod/profile/graphics/defaultsmall.gif Binary files differdeleted file mode 100644 index 661d72f04..000000000 --- a/mod/profile/graphics/defaultsmall.gif +++ /dev/null diff --git a/mod/profile/graphics/defaulttiny.gif b/mod/profile/graphics/defaulttiny.gif Binary files differdeleted file mode 100644 index 1775346bc..000000000 --- a/mod/profile/graphics/defaulttiny.gif +++ /dev/null diff --git a/mod/profile/graphics/defaulttopbar.gif b/mod/profile/graphics/defaulttopbar.gif Binary files differdeleted file mode 100644 index c3616aeb5..000000000 --- a/mod/profile/graphics/defaulttopbar.gif +++ /dev/null diff --git a/mod/profile/graphics/drag_handle.png b/mod/profile/graphics/drag_handle.png Binary files differdeleted file mode 100644 index 2e9bc42be..000000000 --- a/mod/profile/graphics/drag_handle.png +++ /dev/null diff --git a/mod/profile/graphics/speech_bubble_tail.gif b/mod/profile/graphics/speech_bubble_tail.gif Binary files differdeleted file mode 100644 index 31d1bc90d..000000000 --- a/mod/profile/graphics/speech_bubble_tail.gif +++ /dev/null diff --git a/mod/profile/graphics/twitter16px.png b/mod/profile/graphics/twitter16px.png Binary files differdeleted file mode 100644 index de51c6953..000000000 --- a/mod/profile/graphics/twitter16px.png +++ /dev/null diff --git a/mod/profile/icon.php b/mod/profile/icon.php deleted file mode 100644 index 48ccc16c2..000000000 --- a/mod/profile/icon.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php -/** -* Elgg profile icon -* -* @package ElggProfile -*/ - -require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - -// Get the owning user -$user = elgg_get_page_owner(); - -// Get the size -$size = strtolower(get_input('size')); -if (!in_array($size,array('large','medium','small','tiny','master','topbar'))) - $size = "medium"; - -// If user doesn't exist, return default icon -if (!$user) { - $path = elgg_view("icon/user/default/$size"); - header("Location: $path"); - exit; -} - -// Try and get the icon -$filehandler = new ElggFile(); -$filehandler->owner_guid = $user->getGUID(); -$filehandler->setFilename("profile/" . $user->getGUID() . $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 fe4726d1a..5f1599e0d 100644 --- a/mod/profile/icondirect.php +++ b/mod/profile/icondirect.php @@ -1,38 +1,47 @@ <?php - /** * Elgg profile icon cache/bypass * + * * @package ElggProfile */ - // Get DB settings require_once(dirname(dirname(dirname(__FILE__))). '/engine/settings.php'); global $CONFIG; -$joindate = (int)$_GET['joindate']; +// 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'))) { +if (!in_array($size, array('large', 'medium', 'small', 'tiny', 'master', 'topbar'))) { $size = "medium"; } -$mysql_dblink = @mysql_connect($CONFIG->dbhost,$CONFIG->dbuser,$CONFIG->dbpass, true); +$mysql_dblink = @mysql_connect($CONFIG->dbhost, $CONFIG->dbuser, $CONFIG->dbpass, true); if ($mysql_dblink) { - 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; + 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); } @@ -40,23 +49,21 @@ if ($mysql_dblink) { @mysql_close($mysql_dblink); - // if the simplecache is enabled, we get icon directly - if ($simplecache_enabled) { + if (isset($data_root)) { - // first try to read icon directly - $user_path = date('Y/m/d/', $joindate) . $guid; - $filename = "$dataroot$user_path/profile/{$guid}{$size}.jpg"; - $contents = @file_get_contents($filename); - if (!empty($contents)) { + // 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: ' . date('r',time() + 864000)); + 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: " . strlen($contents)); - $splitString = str_split($contents, 1024); - foreach($splitString as $chunk) { - echo $chunk; - } + header("Content-Length: $filesize"); + header("ETag: \"$etag\""); + readfile($filename); exit; } } @@ -64,8 +71,7 @@ if ($mysql_dblink) { } -// simplecache is not turned on or something went wrong so load engine and try that way +// something went wrong so load engine and try to forward to default icon require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); -$user = get_entity($guid); -set_input('username', $user->username); -require_once(dirname(__FILE__).'/icon.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 bf47d670c..000000000 --- a/mod/profile/index.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php -/** - * Elgg profile index - * - * @package ElggProfile - */ - -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 'groups': - $body .= elgg_view('profile/profile_contents/groups', 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); -echo elgg_view_page($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 cb783f7da..000000000 --- a/mod/profile/javascript.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php -/** - * Elgg profile JS - * - * @package ElggProfile - */ - -// 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 6017a590c..50f04bb33 100644 --- a/mod/profile/languages/en.php +++ b/mod/profile/languages/en.php @@ -4,121 +4,8 @@ */ $english = array( - -/** - * Profile - */ - - 'profile' => "Profile", - 'profile:edit:default' => '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. <br /><br />Give the new profile field a label, for example, \'Favorite team\', then select the field type (eg. text, url, tags), and click the \'Add\' button. To re-order the fields drag on the handle next to the field label. To edit a field label - click on the label\'s text to make it editable. <br />At any time you can revert back to the default profile set up, but you will loose any information already entered into custom fields on profile pages.', - - -/** - * Profile status messages - */ - - 'profile:saved' => "Your profile was successfully saved.", - 'profile:icon:uploaded' => "Your profile picture was successfully uploaded.", - -/** - * Profile comment wall - **/ - 'profile:commentwall:add' => "Add to the wall", - 'profile:commentwall' => "Comment Wall", - 'profile:commentwall:posted' => "You successfully posted on the comment wall.", - 'profile:commentwall:deleted' => "You successfully deleted the message.", - 'profile:commentwall:blank' => "Sorry; you need to actually put something in the message area before we can save it.", - 'profile:commentwall:notfound' => "Sorry; we could not find the specified item.", - 'profile:commentwall:notdeleted' => "Sorry; we could not delete this message.", - 'profile:commentwall:none' => "No comment wall posts found.", - 'profile:commentwall:somethingwentwrong' => "Something went wrong when trying to save your message, make sure you actually wrote a message.", - 'profile:commentwall:failure' => "An unexpected error occurred when adding your message. Please try again.", - -/** - * Email messages commentwall - */ - - 'profile:comment:subject' => 'You have a new message on your comment wall!', - 'profile:comment:body' => "You have a new message on your comment wall from %s. It reads: - - -%s - - -To view your message board comments, click here: - - %s - -To view %s's profile, click here: - - %s - -You cannot reply to this email.", - -/** - * Profile error messages - */ - - 'profile:no_friends' => 'This person hasn\'t added any friends yet!', - 'profile:no_groups' => 'This user has not joined any groups yet.', - '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 a1307f24d..86fbc7b7b 100644 --- a/mod/profile/manifest.xml +++ b/mod/profile/manifest.xml @@ -1,14 +1,17 @@ <?xml version="1.0" encoding="UTF-8"?> -<plugin_manifest> - <field key="author" value="Curverider ltd" /> - <field key="version" value="1.8" /> - <field key="category" value="bundled" /> - <field key="category" value="social" /> - <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" /> - <field key="elgg_install_state" value="enabled" /> - <field key="admin_interface" value="advanced" /> +<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 d80d02cb3..000000000 --- a/mod/profile/profile_lib.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php -/** - * Elgg profile index - * - * @package ElggProfile - */ - -/** - * 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. - * - * @todo - This should really use a plugin hook to get the list of plugin tabs - * - * @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); - - if ($section == 'commentwall') { - $comments = $user->getAnnotations('commentwall', 200, 0, 'desc'); - $view_options['comments'] = $comments; - } - - $content = elgg_view("profile/profile_contents/$section", $view_options); - - $body .= elgg_view('profile/profile_content', array('content' => $content)); - - $body .= elgg_view('profile/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 dab12b12d..ab596f235 100644 --- a/mod/profile/start.php +++ b/mod/profile/start.php @@ -5,208 +5,89 @@ * @package ElggProfile */ +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 - elgg_extend_view('elgg_topbar/extend', 'profile/topbar_extend'); - //if (isloggedin()) { - // add_menu(elgg_echo('profile:yours'), get_loggedin_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('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'); - - // Now override icons - register_plugin_hook('entity:icon:url', 'user', 'profile_usericon_hook'); + elgg_extend_view('page/elements/head', 'profile/metatags'); + elgg_extend_view('css/elgg', 'profile/css'); + elgg_extend_view('js/elgg', 'profile/js'); // allow ECML in parts of the profile - register_plugin_hook('get_views', 'ecml', 'profile_ecml_views_hook'); - - // default profile fields admin item - elgg_add_admin_submenu_item('defaultprofile', elgg_echo('profile:edit:default'), 'appearance'); -} - -/** - * 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' - ); - - $loaded_default = array(); - if ($fieldlist = get_plugin_setting('user_defined_fields','profile')) { - if (!empty($fieldlist)) { - $fieldlistarray = explode(',',$fieldlist); - $loaded_defaults = array(); - foreach($fieldlistarray as $listitem) { - if ($translation = get_plugin_setting("admin_defined_profile_{$listitem}", 'profile')) { - $type = get_plugin_setting("admin_defined_profile_type_{$listitem}", 'profile'); - $loaded_defaults["admin_defined_profile_{$listitem}"] = $type; - add_translation(get_current_language(), array("profile:admin_defined_profile_{$listitem}" => $translation)); - } - } - } - } - - if (count($loaded_defaults)) { - $CONFIG->profile_using_custom = true; - $profile_defaults = $loaded_defaults; - } - - $CONFIG->profile = trigger_plugin_hook('profile:fields', 'profile', NULL, $profile_defaults); + elgg_register_plugin_hook_handler('get_views', 'ecml', 'profile_ecml_views_hook'); - // 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; - $action = NULL; - - // short circuit if invalid or banned username if (isset($page[0])) { $username = $page[0]; $user = get_user_by_username($username); - set_input('username', $page[0]); + 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())) { + // 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; } - echo elgg_view_page($title, $content); - return; -} - -/** - * Pagesetup function - * - */ -function profile_pagesetup() -{ - global $CONFIG; - - //add submenu options - if (elgg_get_context() == "profile") { - $page_owner = elgg_get_page_owner(); - if ($page_owner && $page_owner->canEdit()) { - add_submenu_item(elgg_echo('profile:editdetails'), "pg/profile/{$page_owner->username}/edit/details"); - add_submenu_item(elgg_echo('profile:editicon'), "pg/profile/{$page_owner->username}/edit/icon"); - } - } -} - -/** - * Profile icon page handler - * - * @param array $page Array of page elements, forwarded by the page handling mechanism - */ -function profile_icon_handler($page) { - global $CONFIG; - - // The username should be the file we're getting - if (isset($page[0])) { - set_input('username',$page[0]); - } - if (isset($page[1])) { - set_input('size',$page[1]); - } - // Include the standard profile index - include($CONFIG->pluginspath . "profile/icon.php"); -} + // main profile page + $params = array( + 'content' => elgg_view('profile/wrapper'), + 'num_columns' => 3, + ); + $content = elgg_view_layout('widgets', $params); -/** - * Icon JS - */ -function profile_iconjs_handler($page) { - global $CONFIG; - include($CONFIG->pluginspath . "profile/javascript.php"); + $body = elgg_view_layout('one_column', array('content' => $content)); + echo elgg_view_page($user->name, $body); + return true; } /** @@ -216,81 +97,92 @@ function profile_iconjs_handler($page) { * @return string User URL */ function profile_url($user) { - global $CONFIG; - return elgg_get_site_url() . "pg/profile/" . $user->username; + return elgg_get_site_url() . "profile/" . $user->username; } /** - * This hooks into the getIcon API and provides nice user icons for users where possible. + * Use a URL for avatars that avoids loading Elgg engine for better performance * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params - * @return unknown + * @param string $hook + * @param string $entity_type + * @param string $return_value + * @param array $params + * @return string */ -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"; - } +function profile_override_avatar_url($hook, $entity_type, $return_value, $params) { - if ($entity->isBanned()) { - return elgg_view('icon/user/default/'.$size); - } + // if someone already set this, quit + if ($return_value) { + return null; + } + + $user = $params['entity']; + $size = $params['size']; + + if (!elgg_instanceof($user, 'user')) { + return null; + } + + $user_guid = $user->getGUID(); + $icon_time = $user->icontime; + + if (!$icon_time) { + return "_graphics/icons/user/default{$size}.gif"; + } + + if ($user->isBanned()) { + return null; + } - $filehandler = new ElggFile(); - $filehandler->owner_guid = $entity->getGUID(); - $filehandler->setFilename("profile/" . $entity->guid . $size . ".jpg"); + $filehandler = new ElggFile(); + $filehandler->owner_guid = $user_guid; + $filehandler->setFilename("profile/{$user_guid}{$size}.jpg"); + try { if ($filehandler->exists()) { - //$url = "pg/icon/$username/$size/$icontime.jpg"; - return 'mod/profile/icondirect.php?lastcache='.$icontime.'&joindate=' . $entity->time_created . '&guid=' . $entity->guid . '&size='.$size; + $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; } /** * Parse ECML on parts of the profile * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $return_value - * @param unknown_type $params + * @param string $hook + * @param string $entity_type + * @param array $return_value + * @return array */ -function profile_ecml_views_hook($hook, $entity_type, $return_value, $params) { +function profile_ecml_views_hook($hook, $entity_type, $return_value) { $return_value['profile/profile_content'] = elgg_echo('profile'); return $return_value; } -// 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); -register_action("profile/editdefault/reorder",false,$CONFIG->pluginspath . "profile/actions/reorder.php", true); -register_action("profile/editdefault/editfield",false,$CONFIG->pluginspath . "profile/actions/editfield.php", true); -register_action("profile/addcomment",false,$CONFIG->pluginspath . "profile/actions/addcomment.php"); -register_action("profile/deletecomment",false,$CONFIG->pluginspath . "profile/actions/deletecomment.php"); +/** + * Register profile widgets with default widgets + * + * @param string $hook + * @param string $type + * @param array $return + * @return array + */ +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, + ); + + return $return; +} diff --git a/mod/profile/vendor/jquery.jeditable.mini.js b/mod/profile/vendor/jquery.jeditable.mini.js deleted file mode 100644 index 6c867383a..000000000 --- a/mod/profile/vendor/jquery.jeditable.mini.js +++ /dev/null @@ -1,38 +0,0 @@ -// http://www.appelsiini.net/projects/jeditable -(function($){$.fn.editable=function(target,options){if('disable'==target){$(this).data('disabled.editable',true);return;} -if('enable'==target){$(this).data('disabled.editable',false);return;} -if('destroy'==target){$(this).unbind($(this).data('event.editable')).removeData('disabled.editable').removeData('event.editable');return;} -var settings=$.extend({},$.fn.editable.defaults,{target:target},options);var plugin=$.editable.types[settings.type].plugin||function(){};var submit=$.editable.types[settings.type].submit||function(){};var buttons=$.editable.types[settings.type].buttons||$.editable.types['defaults'].buttons;var content=$.editable.types[settings.type].content||$.editable.types['defaults'].content;var element=$.editable.types[settings.type].element||$.editable.types['defaults'].element;var reset=$.editable.types[settings.type].reset||$.editable.types['defaults'].reset;var callback=settings.callback||function(){};var onedit=settings.onedit||function(){};var onsubmit=settings.onsubmit||function(){};var onreset=settings.onreset||function(){};var onerror=settings.onerror||reset;if(settings.tooltip){$(this).attr('title',settings.tooltip);} -settings.autowidth='auto'==settings.width;settings.autoheight='auto'==settings.height;return this.each(function(){var self=this;var savedwidth=$(self).width();var savedheight=$(self).height();$(this).data('event.editable',settings.event);if(!$.trim($(this).html())){$(this).html(settings.placeholder);} -$(this).bind(settings.event,function(e){if(true===$(this).data('disabled.editable')){return;} -if(self.editing){return;} -if(false===onedit.apply(this,[settings,self])){return;} -e.preventDefault();e.stopPropagation();if(settings.tooltip){$(self).removeAttr('title');} -if(0==$(self).width()){settings.width=savedwidth;settings.height=savedheight;}else{if(settings.width!='none'){settings.width=settings.autowidth?$(self).width():settings.width;} -if(settings.height!='none'){settings.height=settings.autoheight?$(self).height():settings.height;}} -if($(this).html().toLowerCase().replace(/(;|")/g,'')==settings.placeholder.toLowerCase().replace(/(;|")/g,'')){$(this).html('');} -self.editing=true;self.revert=$(self).html();$(self).html('');var form=$('<form />');if(settings.cssclass){if('inherit'==settings.cssclass){form.attr('class',$(self).attr('class'));}else{form.attr('class',settings.cssclass);}} -if(settings.style){if('inherit'==settings.style){form.attr('style',$(self).attr('style'));form.css('display',$(self).css('display'));}else{form.attr('style',settings.style);}} -var input=element.apply(form,[settings,self]);var input_content;if(settings.loadurl){var t=setTimeout(function(){input.disabled=true;content.apply(form,[settings.loadtext,settings,self]);},100);var loaddata={};loaddata[settings.id]=self.id;if($.isFunction(settings.loaddata)){$.extend(loaddata,settings.loaddata.apply(self,[self.revert,settings]));}else{$.extend(loaddata,settings.loaddata);} -$.ajax({type:settings.loadtype,url:settings.loadurl,data:loaddata,async:false,success:function(result){window.clearTimeout(t);input_content=result;input.disabled=false;}});}else if(settings.data){input_content=settings.data;if($.isFunction(settings.data)){input_content=settings.data.apply(self,[self.revert,settings]);}}else{input_content=self.revert;} -content.apply(form,[input_content,settings,self]);input.attr('name',settings.name);buttons.apply(form,[settings,self]);$(self).append(form);plugin.apply(form,[settings,self]);$(':input:visible:enabled:first',form).focus();if(settings.select){input.select();} -input.keydown(function(e){if(e.keyCode==27){e.preventDefault();reset.apply(form,[settings,self]);}});var t;if('cancel'==settings.onblur){input.blur(function(e){t=setTimeout(function(){reset.apply(form,[settings,self]);},500);});}else if('submit'==settings.onblur){input.blur(function(e){t=setTimeout(function(){form.submit();},200);});}else if($.isFunction(settings.onblur)){input.blur(function(e){settings.onblur.apply(self,[input.val(),settings]);});}else{input.blur(function(e){});} -form.submit(function(e){if(t){clearTimeout(t);} -e.preventDefault();if(false!==onsubmit.apply(form,[settings,self])){if(false!==submit.apply(form,[settings,self])){if($.isFunction(settings.target)){var str=settings.target.apply(self,[input.val(),settings]);$(self).html(str);self.editing=false;callback.apply(self,[self.innerHTML,settings]);if(!$.trim($(self).html())){$(self).html(settings.placeholder);}}else{var submitdata={};submitdata[settings.name]=input.val();submitdata[settings.id]=self.id;if($.isFunction(settings.submitdata)){$.extend(submitdata,settings.submitdata.apply(self,[self.revert,settings]));}else{$.extend(submitdata,settings.submitdata);} -if('PUT'==settings.method){submitdata['_method']='put';} -$(self).html(settings.indicator);var ajaxoptions={type:'POST',data:submitdata,dataType:'html',url:settings.target,success:function(result,status){if(ajaxoptions.dataType=='html'){$(self).html(result);} -self.editing=false;callback.apply(self,[result,settings]);if(!$.trim($(self).html())){$(self).html(settings.placeholder);}},error:function(xhr,status,error){onerror.apply(form,[settings,self,xhr]);}};$.extend(ajaxoptions,settings.ajaxoptions);$.ajax(ajaxoptions);}}} -$(self).attr('title',settings.tooltip);return false;});});this.reset=function(form){if(this.editing){if(false!==onreset.apply(form,[settings,self])){$(self).html(self.revert);self.editing=false;if(!$.trim($(self).html())){$(self).html(settings.placeholder);} -if(settings.tooltip){$(self).attr('title',settings.tooltip);}}}};});};$.editable={types:{defaults:{element:function(settings,original){var input=$('<input type="hidden"></input>');$(this).append(input);return(input);},content:function(string,settings,original){$(':input:first',this).val(string);},reset:function(settings,original){original.reset(this);},buttons:function(settings,original){var form=this;if(settings.submit){if(settings.submit.match(/>$/)){var submit=$(settings.submit).click(function(){if(submit.attr("type")!="submit"){form.submit();}});}else{var submit=$('<button type="submit" />');submit.html(settings.submit);} -$(this).append(submit);} -if(settings.cancel){if(settings.cancel.match(/>$/)){var cancel=$(settings.cancel);}else{var cancel=$('<button type="cancel" />');cancel.html(settings.cancel);} -$(this).append(cancel);$(cancel).click(function(event){if($.isFunction($.editable.types[settings.type].reset)){var reset=$.editable.types[settings.type].reset;}else{var reset=$.editable.types['defaults'].reset;} -reset.apply(form,[settings,original]);return false;});}}},text:{element:function(settings,original){var input=$('<input />');if(settings.width!='none'){input.width(settings.width);} -if(settings.height!='none'){input.height(settings.height);} -input.attr('autocomplete','off');$(this).append(input);return(input);}},textarea:{element:function(settings,original){var textarea=$('<textarea />');if(settings.rows){textarea.attr('rows',settings.rows);}else if(settings.height!="none"){textarea.height(settings.height);} -if(settings.cols){textarea.attr('cols',settings.cols);}else if(settings.width!="none"){textarea.width(settings.width);} -$(this).append(textarea);return(textarea);}},select:{element:function(settings,original){var select=$('<select />');$(this).append(select);return(select);},content:function(data,settings,original){if(String==data.constructor){eval('var json = '+data);}else{var json=data;} -for(var key in json){if(!json.hasOwnProperty(key)){continue;} -if('selected'==key){continue;} -var option=$('<option />').val(key).append(json[key]);$('select',this).append(option);} -$('select',this).children().each(function(){if($(this).val()==json['selected']||$(this).text()==$.trim(original.revert)){$(this).attr('selected','selected');}});}}},addInputType:function(name,input){$.editable.types[name]=input;}};$.fn.editable.defaults={name:'value',id:'id',type:'text',width:'auto',height:'auto',event:'click.editable',onblur:'cancel',loadtype:'GET',loadtext:'Loading...',placeholder:'Click to edit',loaddata:{},submitdata:{},ajaxoptions:{}};})(jQuery); diff --git a/mod/profile/views/default/admin/appearance/defaultprofile.php b/mod/profile/views/default/admin/appearance/defaultprofile.php deleted file mode 100644 index b935797fb..000000000 --- a/mod/profile/views/default/admin/appearance/defaultprofile.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php -/** - * Elgg profile - Admin area: edit default profile fields - * - * @package ElggProfile - */ - -$title = elgg_view_title(elgg_echo('profile:edit:default')); -$form = elgg_view('profile/editdefaultprofile'); - -// List form elements -$n = 0; -$loaded_defaults = array(); -$items = array(); -if ($fieldlist = get_plugin_setting('user_defined_fields', 'profile')) { - $fieldlistarray = explode(',', $fieldlist); - foreach($fieldlistarray as $listitem) { - if ($translation = get_plugin_setting("admin_defined_profile_{$listitem}", 'profile')) { - $item = new stdClass; - $item->translation = $translation; - $item->shortname = $listitem; - $item->name = "admin_defined_profile_{$listitem}"; - $item->type = get_plugin_setting("admin_defined_profile_type_{$listitem}", 'profile'); - $items[] = $item; - } - } -} - -$listing = elgg_view('profile/editdefaultprofileitems',array('items' => $items, 'fieldlist' => $fieldlist)); - -$resetlisting = elgg_view('input/form', - array ( - 'body' => elgg_view('input/submit', array('value' => elgg_echo('profile:resetdefault'), 'class' => 'action_button disabled')), - 'action' => 'action/profile/editdefault/reset' - ) - ); - -$body = <<<__HTML -$title -$form -$listing -<div class="default_profile_reset"> - $resetlisting -</div> -__HTML; - -echo $body; 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 ac28f8e9a..000000000 --- a/mod/profile/views/default/icon/user/default/large.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php - echo elgg_get_site_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 129b0d375..000000000 --- a/mod/profile/views/default/icon/user/default/master.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php - echo elgg_get_site_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 8815a65bc..000000000 --- a/mod/profile/views/default/icon/user/default/medium.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php - echo elgg_get_site_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 895aa15cc..000000000 --- a/mod/profile/views/default/icon/user/default/small.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php - echo elgg_get_site_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 866c61533..000000000 --- a/mod/profile/views/default/icon/user/default/tiny.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php - echo elgg_get_site_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 0ff3dbaaa..000000000 --- a/mod/profile/views/default/icon/user/default/topbar.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php - echo elgg_get_site_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 99ed3a4f5..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 (get_loggedin_userid()!=elgg_get_page_owner_guid()){ - $user = get_user(elgg_get_page_owner_guid()); - $url = elgg_get_site_url(); - $ts = time(); - $token = generate_action_token($ts); - -?> -<div class="owner_block_links clearfix"> -<ul class="admin_menu"> -<li><a href="#" onclick="elgg_slide_toggle(this,'.owner_block_links','.admin_menu_options');">Admin options…</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' => "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' => "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' => "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' => "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' => "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' => "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/commentwall/commentwall.php b/mod/profile/views/default/profile/commentwall/commentwall.php deleted file mode 100644 index a45c3adde..000000000 --- a/mod/profile/views/default/profile/commentwall/commentwall.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php -/** - * Elgg Commentwall display page - */ -//start the div which will wrap all the message board contents -echo "<div id='comment_wall_display'>"; - -// If there is any content to view, view it -if (is_array($vars['annotation']) && sizeof($vars['annotation']) > 0) { - //loop through all annotations and display - foreach($vars['annotation'] as $content) { - echo elgg_view("profile/commentwall/commentwall_content", array('annotation' => $content)); - } -} else { - echo "<p class='margin_top'>" . elgg_echo("profile:commentwall:none") . "</p>"; -} -//close the wrapper div -echo "</div>";
\ No newline at end of file diff --git a/mod/profile/views/default/profile/commentwall/commentwall_content.php b/mod/profile/views/default/profile/commentwall/commentwall_content.php deleted file mode 100644 index 15cb2584e..000000000 --- a/mod/profile/views/default/profile/commentwall/commentwall_content.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -/** -* Elgg Message board individual item display page - */ -?> -<div class="entity_listing clearfix"> - <!-- display the user icon of the user that posted the message --> - <div class="entity_listing_icon"> - <?php - echo elgg_view("profile/icon",array('entity' => get_entity($vars['annotation']->owner_guid), 'size' => 'tiny')); - ?> - </div> - - <div class="entity_listing_info"> - <?php - // if the user looking at the comment can edit, show the delete link - if ($vars['annotation']->canEdit()) { - echo "<div class='entity_metadata'><span class='delete_button'>" . elgg_view("output/confirmlink",array( - 'href' => "action/profile/deletecomment?annotation_id=" . $vars['annotation']->id, - 'text' => elgg_echo('delete'), - 'confirm' => elgg_echo('deleteconfirm'), - )) . "</span></div>"; - } //end of can edit if statement - ?> - <!-- display the user's name who posted and the date/time --> - <p class="entity_subtext"> - <?php echo get_entity($vars['annotation']->owner_guid)->name . " " . elgg_view_friendly_time($vars['annotation']->time_created); ?> - </p> - <!-- output the actual comment --> - <?php echo elgg_view("output/longtext",array("value" => parse_urls($vars['annotation']->value))); ?> - </div> -</div> diff --git a/mod/profile/views/default/profile/commentwall/commentwalladd.php b/mod/profile/views/default/profile/commentwall/commentwalladd.php deleted file mode 100644 index dcb520ea1..000000000 --- a/mod/profile/views/default/profile/commentwall/commentwalladd.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php -/** - * Elgg profile comment wall add - */ -?> -<div id="comment_wall_add"> -<form action="<?php echo elgg_get_site_url(); ?>action/profile/addcomment" method="post" name="messageboardForm"> - <!-- textarea for the contents --> - <textarea name="message_content" value="" class="commentwall"></textarea><br /> - <!-- the person posting an item on the message board --> - <input type="hidden" name="guid" value="<?php echo get_loggedin_userid(); ?>" /> - <!-- the page owner, this will be the profile owner --> - <input type="hidden" name="pageOwner" value="<?php echo elgg_get_page_owner_guid(); ?>" /> - <?php echo elgg_view('input/securitytoken'); ?> - <!-- submit messages input --> - <input type="submit" id="postit" value="<?php echo elgg_echo('profile:commentwall:add'); ?>"> -</form> -</div> diff --git a/mod/profile/views/default/profile/css.php b/mod/profile/views/default/profile/css.php index 22ebaa8f1..e24f555a9 100644 --- a/mod/profile/views/default/profile/css.php +++ b/mod/profile/views/default/profile/css.php @@ -1,490 +1,126 @@ <?php /** - * Elgg Profile + * Elgg Profile CSS * * @package Profile */ ?> /* *************************************** - 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, -img.tiny { - width:25px; - height:25px; - /* remove the border-radius if you don't want rounded avatars in supported browsers */ - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -moz-background-clip: border; - - -o-background-size: 25px; - -webkit-background-size: 25px; - -khtml-background-size: 25px; - -moz-background-size: 25px; +.profile { + float: left; + margin-bottom: 15px; } -.usericon.small, -img.small { - width:40px; - height:40px; - /* remove the border-radius if you don't want rounded avatars in supported browsers */ - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -moz-background-clip: border; +.profile .elgg-inner { + margin: 0 5px; + border: 2px solid #eee; - -o-background-size: 40px; - -webkit-background-size: 40px; - -khtml-background-size: 40px; - -moz-background-size: 40px; -} -img.large { - width:200px; - height:200px; -} -img.medium { - width:100px; - height:100px; -} - -/* *************************************** - ownerblock in sidebar -*************************************** */ -#profile_sidebar #owner_block { - background-color: #eeeeee; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - padding:15px; - min-height:270px; -} -#elgg_sidebar #owner_block { - background-color: white; - -webkit-border-radius: 8px; + -webkit-border-radius: 8px; -moz-border-radius: 8px; - padding:5px; - margin-bottom:10px; -} -#owner_block .owner_block_icon { - float:left; - padding:0; - margin:0; + border-radius: 8px; } -#owner_block .owner_block_icon.large { - width:200px; - height:200px; - overflow: hidden; - float:none; +#profile-details { + padding: 15px; } -#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; -} -#owner_block .owner_block_contents p.profile_info { - margin:0; - padding:0; - color: #666666; -} -#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 .owners_content_links { - border-top:1px dotted #cccccc; - margin-top:4px; - padding-top:2px; -} -#owner_block .owners_content_links ul { - margin:0; - padding:0; -} -#owner_block .owners_content_links ul li { - display:block; - float:left; - width:95px; - font-size: 90%; -} -/* profile pages - 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; -} -.owner_block_links ul.admin_menu li a { + border-radius: 8px; + background-color: white; - color:red; - margin-bottom:0; + margin: 3px 0 5px 0; + padding: 2px 4px 2px 8px; } -.owner_block_links ul.admin_menu li a:hover { - color:black; +.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; -} - - -/* *************************************** - commentwall within profile -*************************************** */ -#comment_wall_add textarea { - width:685px; -} -#comment_wall_add #postit { - float:right; -} - - -/* *************************************** - twitter panel within profile -*************************************** */ -ul#twitter_update_list { - padding-left:0; -} -ul#twitter_update_list li { - background-image: url(<?php echo elgg_get_site_url(); ?>mod/profile/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 elgg_get_site_url(); ?>mod/profile/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; + border-radius: 4px; + + margin: 0; + padding: 2px 4px; } - - -/* *************************************** - 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; +.profile-aboutme-contents { + padding: 2px 0 0 3px; } - - -/* *************************************** - banned user -*************************************** */ -/* banned user full profile panel */ -#profile_content .banned_user { - border:2px solid red; - padding:4px 8px; +.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; -} -/* field re-order */ -#sortable_profile_fields { - list-style: none; - padding:0; - margin:0; - border-top:1px solid #cccccc; -} -#sortable_profile_fields li { - padding:5px 0 5px 0; - border-bottom:1px solid #cccccc; -} -#sortable_profile_fields li img.handle { - margin-right: 7px; - cursor: move; -} -#sortable_profile_fields .ui-sortable-helper { - background: #eeeeee; - color:#333333; - padding: 5px 0 5px 0; - margin: 0; - width:100%; -} - - -/* *************************************** - 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 elgg_get_site_url(); ?>_graphics/elgg_sprites.png) no-repeat -150px top; - width:15px; - height:15px; -} -.avatar_menu_arrow_on { - background: url(<?php echo elgg_get_site_url(); ?>_graphics/elgg_sprites.png) no-repeat -150px -16px; - width:15px; - height:15px; -} -.avatar_menu_arrow_hover { - background: url(<?php echo elgg_get_site_url(); ?>_graphics/elgg_sprites.png) no-repeat -150px -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); - font-size:14px; -} -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; - font-weight: normal; -} -.usericon .sub_menu a:hover { - background:#cccccc; - text-decoration:none; -} -.usericon .sub_menu .displayname { - padding:0 !important; - margin:0 !important; - border-bottom:solid 1px #dddddd !important; - font-size:14px !important; -} -.usericon .sub_menu .displayname a { - padding:3px 3px 3px 8px; - font-size:14px; - font-weight: bold; -} -.usericon .sub_menu .displayname a .username { - display:block; - font-weight: normal; - font-size:12px; - text-align: left; - margin:0; -} -.sub_menu ul.sub_menu_list { - list-style: none; - margin-bottom:0; - padding-left:0; -} -.usericon .sub_menu a { - padding:2px 3px 2px 8px; - font-size:12px; -} -/* 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 5e9cef774..000000000 --- a/mod/profile/views/default/profile/edit.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php -/** - * Elgg profile edit form - * - * @package ElggProfile - * - * @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 elgg_get_site_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' => elgg_get_page_owner()->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; - } - - if ($shortname == 'description') { // change label positioning to allow for additional longtext field controls -?> - <p> - <label> - <?php echo elgg_echo("profile:{$shortname}") ?></label> - <?php echo elgg_view("input/{$valtype}",array( - 'internalname' => $shortname, - 'value' => $value, - )); ?> - - <?php echo elgg_view('input/access',array('internalname' => 'accesslevel['.$shortname.']', 'value' => $access_id)); ?> - </p> -<?php - } else { -?> - - <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 elgg_get_page_owner()->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 4993e1c7f..000000000 --- a/mod/profile/views/default/profile/editdefaultprofile.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -/** - * Elgg profile index - * - * @package ElggProfile - */ - -$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('add'), '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' => 'action/profile/editdefault')); diff --git a/mod/profile/views/default/profile/editdefaultprofileitems.php b/mod/profile/views/default/profile/editdefaultprofileitems.php deleted file mode 100644 index 368529118..000000000 --- a/mod/profile/views/default/profile/editdefaultprofileitems.php +++ /dev/null @@ -1,65 +0,0 @@ -<script language="javascript" type="text/javascript" src="<?php echo elgg_get_site_url()?>mod/profile/vendor/jquery.jeditable.mini.js"></script> -<script language="javascript" type="text/javascript"> -var reorderURL = '<?php echo elgg_add_action_tokens_to_url(elgg_get_site_url() . 'action/profile/editdefault/reorder', FALSE); ?>'; -function sortCallback(event, ui) { - var orderArr = $('#sortable_profile_fields').sortable('toArray'); - var orderStr = orderArr.join(','); - jQuery.post(reorderURL, {'fieldorder': orderStr}); -} - -$(document).ready(function() { - $('#sortable_profile_fields').sortable({ - items: 'li', - handle: '.handle', - stop: sortCallback - }); -}); - -</script> - -<div id="list"> - <ul id="sortable_profile_fields"> -<?php - - $save = elgg_echo('save'); - $cancel = elgg_echo('cancel'); - $edit_url = elgg_add_action_tokens_to_url(elgg_get_site_url()."action/profile/editdefault/editfield", FALSE); - - foreach($vars['items'] as $item) { - echo <<< END - -<script language="javascript" type="text/javascript"> - - $(function() { - $(".{$item->shortname}_editable").editable("$edit_url ", { - type : 'text', - submitdata: { _method: "post", 'field': '{$item->shortname}' }, - onblur: 'submit', - width:'300px', - height:'none', - style:'display:inline;', - tooltip:'Click to edit label' - }); - }); - -</script> - -END; - - echo elgg_view("profile/", array('value' => $item->translation)); - - //$even_odd = ( 'odd' != $even_odd ) ? 'odd' : 'even'; - $url = elgg_add_action_tokens_to_url(elgg_get_site_url()."action/profile/editdefault/delete?id={$item->shortname}"); - echo "<li id=\"{$item->shortname}\"><div class='delete_button'><a href=\"$url\">" . elgg_echo('delete') . "</a></div>"; - echo "<img width='16' height='16' class='handle' alt='move' title='Drag here to reorder this item' src='".elgg_get_site_url()."mod/profile/graphics/drag_handle.png'/>"; - echo "<b class=\"profile_field_editable\"><span class=\"{$item->shortname}_editable\">$item->translation</span></b>: [".elgg_echo($item->type)."]"; - echo "</li>"; - - } - -?> - </ul> -</div> -<div id="tempList"></div> - -<input name="sortableListOrder" type="hidden" id="sortableListOrder" value="<?php echo $vars['fieldlist']; ?>" /> diff --git a/mod/profile/views/default/profile/editicon.php b/mod/profile/views/default/profile/editicon.php deleted file mode 100644 index cdfa68a8a..000000000 --- a/mod/profile/views/default/profile/editicon.php +++ /dev/null @@ -1,141 +0,0 @@ -<?php -/** - * Elgg profile icon edit form - * - * @package ElggProfile - * - * @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 = get_loggedin_user(); -?> -<div id="edit_profile_avatar"> -<!-- grab the required js for icon cropping --> -<script type="text/javascript" src="<?php echo elgg_get_site_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 elgg_get_site_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 elgg_get_site_url(); ?>action/profile/cropicon" method="post" /> - <?php echo elgg_view('input/securitytoken'); ?> - <input type="hidden" name="username" value="<?php echo get_loggedin_user()->username; ?>" /> - <input type="hidden" name="x_1" value="<?php echo get_loggedin_user()->x1; ?>" id="x_1" /> - <input type="hidden" name="x_2" value="<?php echo get_loggedin_user()->x2; ?>" id="x_2" /> - <input type="hidden" name="y_1" value="<?php echo get_loggedin_user()->y1; ?>" id="y_1" /> - <input type="hidden" name="y_2" value="<?php echo get_loggedin_user()->y2; ?>" id="y_2" /> - <input type="submit" name="submit" value="<?php echo elgg_echo("profile:createicon"); ?>" /> -</form> - -</div> -</div> diff --git a/mod/profile/views/default/profile/hoverover.php b/mod/profile/views/default/profile/hoverover.php deleted file mode 100644 index 172ef5d3d..000000000 --- a/mod/profile/views/default/profile/hoverover.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php -/** - * Elgg profile icon hover over - * - * @package ElggProfile - * - * @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 71b25fe6c..000000000 --- a/mod/profile/views/default/profile/icon.php +++ /dev/null @@ -1,111 +0,0 @@ -<?php - -/** - * Elgg profile icon - * - * @package ElggProfile - * - * @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'] = get_loggedin_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 elgg_get_site_url(); ?>_graphics/spacer.gif" border="0" width="15" height="15" /></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() != get_loggedin_userid()) { - - // 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 elgg_get_site_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 elgg_get_site_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() && (get_loggedin_userid()!=$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 - } - - } - - // Rounded avatar corners - CSS3 method - users avatar as background image so we can clip it with border-radius in supported browsers - ?> - <img src="<?php echo elgg_get_site_url(); ?>_graphics/spacer.gif" 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']; ?> style="background: url(<?php echo $vars['entity']->getIcon($vars['size']); ?>) no-repeat;" class="<?php echo $vars['size']; ?>" /> - <?php - /* - original avatar method - <img src="<?php echo elgg_format_url($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']; ?> /> - */ - - 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 96b57fb95..000000000 --- a/mod/profile/views/default/profile/javascript.php +++ /dev/null @@ -1,137 +0,0 @@ -<?php - -/** - * Elgg profile image Javascript - * - * @package ElggProfile - * - * @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(parent) { - if (!parent) { - parent = document; - } - - // avatar image menu link - $(parent).find("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 6dc8e0948..000000000 --- a/mod/profile/views/default/profile/listing.php +++ /dev/null @@ -1,44 +0,0 @@ -<?php -/** - * Elgg user display (small) - * - * @package ElggProfile - * - * @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 (elgg_get_page_owner_guid() == $vars['entity']->guid) - $rel = 'me'; -else if (check_entity_relationship(elgg_get_page_owner_guid(), '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 39807764a..000000000 --- a/mod/profile/views/default/profile/menu/adminlinks.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php -/** - * Profile admin context links - * - * @package ElggProfile - * - * @uses $vars['entity'] The user entity - */ - -if (isadminloggedin()){ - if (get_loggedin_userid()!=$vars['entity']->guid){ -?> - <a href="<?php echo elgg_get_site_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' => "action/admin/user/ban?guid={$vars['entity']->guid}")); - } else { - echo elgg_view('output/confirmlink', array('text' => elgg_echo("unban"), 'href' => "action/admin/user/unban?guid={$vars['entity']->guid}")); - } - echo elgg_view('output/confirmlink', array('text' => elgg_echo("delete"), 'href' => "action/admin/user/delete?guid={$vars['entity']->guid}")); - echo elgg_view('output/confirmlink', array('text' => elgg_echo("resetpassword"), 'href' => "action/admin/user/resetpassword?guid={$vars['entity']->guid}")); - if (!$vars['entity']->isAdmin()) { - echo elgg_view('output/confirmlink', array('text' => elgg_echo("makeadmin"), 'href' => "action/admin/user/makeadmin?guid={$vars['entity']->guid}")); - } else { - echo elgg_view('output/confirmlink', array('text' => elgg_echo("removeadmin"), 'href' => "action/admin/user/removeadmin?guid={$vars['entity']->guid}")); - } - } - } 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 ed13edb8b..000000000 --- a/mod/profile/views/default/profile/menu/friendlinks.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php -/** - * Elgg profile icon avatar menu: Add / Remove friend links - * - * @package ElggProfile - * - * @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' => "action/friends/remove?friend={$vars['entity']->getGUID()}", - 'text' => elgg_echo('friend:remove'), - 'class' => 'remove_friend' - )); -} else { - echo elgg_view('output/confirmlink', array( - 'href' => "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 4233d7ec5..000000000 --- a/mod/profile/views/default/profile/menu/links.php +++ /dev/null @@ -1,9 +0,0 @@ -<?php -/** - * Elgg profile icon avatar menu: view for plugins to extend - * - * @package ElggProfile - * - * @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 a90b12494..52048b8a7 100644 --- a/mod/profile/views/default/profile/metatags.php +++ b/mod/profile/views/default/profile/metatags.php @@ -1,11 +1,16 @@ <?php /** - * Adds metatags to load Javascript required for the profile + * FOAF * * @package ElggProfile * */ -if ($owner = elgg_get_page_owner()) { ?> - <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…</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_content.php b/mod/profile/views/default/profile/profile_content.php deleted file mode 100644 index 4fb43e7c9..000000000 --- a/mod/profile/views/default/profile/profile_content.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php -/** - * Wrapper for profile content - * - * @uses string $vars['content'] - Profile body - */ - -$content = elgg_get_array_value('content', $vars, ''); - -?> -<div id="profile_content"> - <?php echo $content; ?> -</div>
\ No newline at end of file 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 ccd2a3915..000000000 --- a/mod/profile/views/default/profile/profile_contents/activity.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -/** - * Elgg user display (details) - * @uses $vars['entity'] The user entity - * - * @todo this needs to recieve a list of activity or HTML in $vars that's generated by a plugin hook. - * None of this logic should be here. - */ -$limit = 20; - -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')) { - //select the correct river - if (get_plugin_setting('activitytype', 'riverdashboard') == 'classic') { - echo elgg_view_river_items($vars['entity']->getGuid(), 0, '', '', '', '', $limit,0,0,false,true); - } else { - echo elgg_view_river_items($vars['entity']->getGuid(), 0, '', '', '', '', $limit,0,0,false,false); - echo elgg_view('riverdashboard/js'); - } -} else { - // @todo this should not be here. - echo "Riverdashboard not loaded"; -}
\ No newline at end of file diff --git a/mod/profile/views/default/profile/profile_contents/commentwall.php b/mod/profile/views/default/profile/profile_contents/commentwall.php deleted file mode 100644 index 7e8a1d97d..000000000 --- a/mod/profile/views/default/profile/profile_contents/commentwall.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * Elgg profile comment wall - */ - -if (isloggedin()) { - echo elgg_view("profile/commentwall/commentwalladd"); -} - -echo elgg_view("profile/commentwall/commentwall", array('annotation' => $vars['comments'])); 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 360ea0f9e..000000000 --- a/mod/profile/views/default/profile/profile_contents/details.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php -/** - * Elgg user display (details) - * @uses $vars['entity'] The user entity - */ - -// Simple XFN -$rel = ""; -if (elgg_get_page_owner_guid() == $vars['entity']->guid) { - $rel = 'me'; -} else if (check_entity_relationship(elgg_get_page_owner_guid(), '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 - } - } - } -} - -if (!get_plugin_setting('user_defined_fields', 'profile')) { - 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>"; - } - } -}
\ 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 9195629e5..000000000 --- a/mod/profile/views/default/profile/profile_contents/friends.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -/** - * Profile friends - **/ - -$friends = list_entities_from_relationship('friend', $vars['entity']->getGUID(), FALSE, 'user', '', 0, 10, FALSE); - -if(!$friends) { - $friends = '<p>' . elgg_echo('profile:no_friends') . '</p>'; -} - -echo $friends;
\ No newline at end of file diff --git a/mod/profile/views/default/profile/profile_contents/groups.php b/mod/profile/views/default/profile/profile_contents/groups.php deleted file mode 100644 index 323bb61f1..000000000 --- a/mod/profile/views/default/profile/profile_contents/groups.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php
-/**
- * Profile groups
- **/
-$groups = list_entities_from_relationship('member',$vars['entity']->getGUID(),false,'group','',0, $limit,false, false);
-
-if(!$groups) {
- $groups = '<p>' . elgg_echo('profile:no_groups') . '</p>';
-}
-
-echo $groups;
\ 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 06a0551d4..000000000 --- a/mod/profile/views/default/profile/profile_contents/twitter.php +++ /dev/null @@ -1,17 +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){ -?> -<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> - -<?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 a27cf789d..000000000 --- a/mod/profile/views/default/profile/profile_navigation.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -$section = 'activity'; -if (isset($vars['section'])) { - $section = $vars['section']; -} - -$user = $vars['entity']; -if (!$user) { - // no user so no profile - echo elgg_echo('viewfailure', array(__FILE__)); - return TRUE; -} - - -$activity = ''; -$friends = ''; -$extend = ''; -$twitter = ''; - -$url = "{$user->getURL()}/"; - -//select section -switch($section){ - case 'friends': - $friends = 'class="selected"'; - break; - - case 'details': - $details = 'class="selected"'; - break; - case 'groups': - $groups = 'class="selected"'; - break; - case 'twitter': - $twitter = 'class="selected"'; - break; - - case 'commentwall': - $commentwall = 'class="selected"'; - break; - case 'activity': - default: - $activity = 'class="selected"'; - break; -} -?> -<div class="elgg_horizontal_tabbed_nav profile"> -<div class="profile_name"><h2><?php echo $user->name; ?></h2></div> -<ul> - <li <?php echo $activity; ?>><a href="<?php echo $url; ?>"><?php echo elgg_echo('activity'); ?></a></li> - <li <?php echo $details; ?>><a href="<?php echo $url . 'details'; ?>"><?php echo elgg_echo('Details'); ?></a></li> - <li <?php echo $friends; ?>><a href="<?php echo $url . 'friends'; ?>"><?php echo elgg_echo('friends'); ?></a></li> - <li <?php echo $groups; ?>><a href="<?php echo $url . 'groups'; ?>"><?php echo elgg_echo('groups'); ?></a></li> - <li <?php echo $commentwall; ?>><a href="<?php echo $url . 'commentwall'; ?>"><?php echo elgg_echo('profile:commentwall'); ?></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 - } - - //insert a view which others can extend - echo elgg_view('profile_navigation/extend', array('entity' => $user)); - ?> -</ul> -</div>
\ No newline at end of file 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 bfed3aec1..000000000 --- a/mod/profile/views/default/profile/profile_ownerblock.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php - -/** - * A simple owner block which houses info about the user whose 'stuff' you are looking at - */ - -// get the user who owns this profile -if ($vars['entity']) { - if ($vars['context'] == 'edit') { - $user = get_entity($vars['entity']->container_guid); - } else { - $user = get_entity($vars['entity']->guid); - } -} else { - $user = elgg_get_page_owner(); -} -if (!$user) { - // no user so we quit view - echo elgg_echo('viewfailure', array(__FILE__)); - return TRUE; -} - -$more_info = ''; - -$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 clearfix'>"; - $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 (isloggedin() && (get_loggedin_userid() == elgg_get_page_owner_guid())) { - $profile_actions = "<div class='clearfix profile_actions'>"; - $profile_actions .= "<a href='".elgg_get_site_url()."pg/profile/{$user->username}/edit/details' class='action_button'>". elgg_echo('profile:edit') ."</a>"; - $profile_actions .= "<a href='".elgg_get_site_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 (get_loggedin_userid() != $user->getGUID()) { - if ($user->isFriend()) { - $url = elgg_get_site_url()."action/friends/remove?friend={$user->getGUID()}"; - $url = elgg_add_action_tokens_to_url($url); - $profile_actions .= "<a href=\"$url\" class='action_button'>" . elgg_echo('friend:remove') . "</a>"; - } else { - $url = elgg_get_site_url()."action/friends/add?friend={$user->getGUID()}"; - $url = elgg_add_action_tokens_to_url($url); - $profile_actions .= "<a href=\"$url\" class='action_button'>" . elgg_echo('friend:add') . "</a>"; - } - } - } - if (is_plugin_enabled('messages') && isloggedin()) { - $profile_actions .= "<a href=\"".elgg_get_site_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; - - -//if admin display admin links -if (isadminloggedin()) { - $admin_links = elgg_view('profile/admin_menu'); -} else { - $admin_links = ''; -} - - -//check tools are enabled - hard-coded for phase1 -// @todo - provide a view to extend for profile pages ownerblock tool-links -if(is_plugin_enabled('blog')){ - $blog_link = "<li><a href=\"".elgg_get_site_url()."pg/blog/{$username}\">Blog</a></li>"; -}else{ - $blog_link = ""; -} -if(is_plugin_enabled('bookmarks')){ - $bookmark_link = "<li><a href=\"".elgg_get_site_url()."pg/bookmarks/{$username}\">Bookmarks</a></li>"; -}else{ - $bookmark_link = ""; -} -if(is_plugin_enabled('document')){ - $docs_link = "<li><a href=\"".elgg_get_site_url()."pg/document/{$username}\">Documents</a></li>"; -}else{ - $docs_link = ""; -} -if(is_plugin_enabled('feeds')){ - $feeds_link = "<li><a href=\"".elgg_get_site_url()."pg/feeds/{$username}\">Feeds</a></li>"; -}else{ - $feeds_link = ""; -} -if(is_plugin_enabled('tidypics')){ - $tidypics_link = "<li><a href=\"".elgg_get_site_url()."pg/photos/owned/{$username}\">Photos</a></li>"; -}else{ - $tidypics_link = ""; -} -if(is_plugin_enabled('videolist')){ - $video_link = "<li><a href=\"".elgg_get_site_url()."pg/videolist/owned/{$username}\">Videos</a></li>"; -}else{ - $video_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> - {$blog_link} - {$bookmark_link} - {$docs_link} - {$feeds_link} - {$tidypics_link} - {$video_link} - </ul> - </div> - <!-- if admin user --> - {$admin_links} -</div> - -EOT; - -echo $display; diff --git a/mod/profile/views/default/profile/sidebar.php b/mod/profile/views/default/profile/sidebar.php deleted file mode 100644 index 96b4a1955..000000000 --- a/mod/profile/views/default/profile/sidebar.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php -/** - * Elgg profile icon edit form - * - * @package ElggProfile - */ -?> -<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/topbar_extend.php b/mod/profile/views/default/profile/topbar_extend.php deleted file mode 100644 index dd38b9557..000000000 --- a/mod/profile/views/default/profile/topbar_extend.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * - */ - -$user = get_loggedin_user(); - -if (($user instanceof ElggUser) && ($user->guid > 0)) { - $friends = elgg_echo('friends'); - echo "<a class='myfriends' href=\"".elgg_get_site_url()."pg/friends/{$user->username}\" title=\"$friends\">$friends</a>"; -} 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 9e617573b..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 = elgg_echo("profile:river:update", array($url)) ." <span class='entity_subtext'>" . elgg_view_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 156aa8b1b..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 = elgg_echo("profile:river:update", array($url)) ." <span class='entity_subtext'>" . elgg_view_friendly_time($vars['item']->posted) . "</span>"; - -?> - -<?php echo $string; ?>
\ No newline at end of file |
