diff options
49 files changed, 1532 insertions, 17 deletions
diff --git a/mod/profile/start.php b/mod/profile/start.php index d7dd0e3e0..2f817b644 100644 --- a/mod/profile/start.php +++ b/mod/profile/start.php @@ -70,25 +70,21 @@ function profile_page_handler($page) { $action = $page[1]; } - switch ($action) { - case 'edit': - // use for the core profile edit page - require $CONFIG->path . 'pages/profile/edit.php'; - return; - break; - - default: - if (isset($page[1])) { - $section = $page[1]; - } else { - $section = 'activity'; - } - $content = profile_get_user_profile_html($user, $section); - $content = elgg_view_layout('one_column', array('content' => $content)); - break; + if ($action == 'edit') { + // use for the core profile edit page + require $CONFIG->path . 'pages/profile/edit.php'; + return; } - echo elgg_view_page($title, $content); + // main profile page + $params = array( + 'box' => elgg_view('profile/box'), + 'num_columns' => 3, + ); + $content = elgg_view_layout('widgets', $params); + + $body = elgg_view_layout('one_column', array('content' => $content)); + echo elgg_view_page($title, $body); } /** diff --git a/mod/profile/views/default/profile/box.php b/mod/profile/views/default/profile/box.php new file mode 100644 index 000000000..9d97ddc35 --- /dev/null +++ b/mod/profile/views/default/profile/box.php @@ -0,0 +1,12 @@ +<?php +/** + * Profile info box + */ + +?> +<div class="profile"> +<?php + echo elgg_view('profile/sidebar'); + echo elgg_view('profile/details', array('entity' => elgg_get_page_owner())); +?> +</div>
\ No newline at end of file diff --git a/mod/profile/views/default/profile/css.php b/mod/profile/views/default/profile/css.php index 812daf16d..4522f7f6e 100644 --- a/mod/profile/views/default/profile/css.php +++ b/mod/profile/views/default/profile/css.php @@ -8,6 +8,16 @@ /* *************************************** main layout blocks *************************************** */ +.profile { + float: left; + width: 625px; + margin: 0 5px 15px; + padding: 5px; + border: 2px solid #dedede; +} +#widget-col-1 { + min-height: 300px; +} #profile_content { float:right; width:700px; diff --git a/mod/profile/views/default/profile/tabs/details.php b/mod/profile/views/default/profile/details.php index 27b0f943b..27b0f943b 100755..100644 --- a/mod/profile/views/default/profile/tabs/details.php +++ b/mod/profile/views/default/profile/details.php diff --git a/mod/profile/actions/addcomment.php b/mod/tabbed_profile/actions/addcomment.php index 07f72ef8e..07f72ef8e 100644 --- a/mod/profile/actions/addcomment.php +++ b/mod/tabbed_profile/actions/addcomment.php diff --git a/mod/profile/actions/deletecomment.php b/mod/tabbed_profile/actions/deletecomment.php index 233d53069..233d53069 100644 --- a/mod/profile/actions/deletecomment.php +++ b/mod/tabbed_profile/actions/deletecomment.php diff --git a/mod/tabbed_profile/graphics/defaultlarge.gif b/mod/tabbed_profile/graphics/defaultlarge.gif Binary files differnew file mode 100644 index 000000000..6ea3bd4cd --- /dev/null +++ b/mod/tabbed_profile/graphics/defaultlarge.gif diff --git a/mod/tabbed_profile/graphics/defaultmaster.gif b/mod/tabbed_profile/graphics/defaultmaster.gif Binary files differnew file mode 100644 index 000000000..5bfd67a2d --- /dev/null +++ b/mod/tabbed_profile/graphics/defaultmaster.gif diff --git a/mod/tabbed_profile/graphics/defaultmedium.gif b/mod/tabbed_profile/graphics/defaultmedium.gif Binary files differnew file mode 100644 index 000000000..c6b2e6a6d --- /dev/null +++ b/mod/tabbed_profile/graphics/defaultmedium.gif diff --git a/mod/tabbed_profile/graphics/defaultsmall.gif b/mod/tabbed_profile/graphics/defaultsmall.gif Binary files differnew file mode 100644 index 000000000..661d72f04 --- /dev/null +++ b/mod/tabbed_profile/graphics/defaultsmall.gif diff --git a/mod/tabbed_profile/graphics/defaulttiny.gif b/mod/tabbed_profile/graphics/defaulttiny.gif Binary files differnew file mode 100644 index 000000000..1775346bc --- /dev/null +++ b/mod/tabbed_profile/graphics/defaulttiny.gif diff --git a/mod/tabbed_profile/graphics/defaulttopbar.gif b/mod/tabbed_profile/graphics/defaulttopbar.gif Binary files differnew file mode 100644 index 000000000..c3616aeb5 --- /dev/null +++ b/mod/tabbed_profile/graphics/defaulttopbar.gif diff --git a/mod/tabbed_profile/graphics/drag_handle.png b/mod/tabbed_profile/graphics/drag_handle.png Binary files differnew file mode 100644 index 000000000..2e9bc42be --- /dev/null +++ b/mod/tabbed_profile/graphics/drag_handle.png diff --git a/mod/tabbed_profile/graphics/speech_bubble_tail.gif b/mod/tabbed_profile/graphics/speech_bubble_tail.gif Binary files differnew file mode 100644 index 000000000..31d1bc90d --- /dev/null +++ b/mod/tabbed_profile/graphics/speech_bubble_tail.gif diff --git a/mod/tabbed_profile/graphics/twitter16px.png b/mod/tabbed_profile/graphics/twitter16px.png Binary files differnew file mode 100644 index 000000000..de51c6953 --- /dev/null +++ b/mod/tabbed_profile/graphics/twitter16px.png diff --git a/mod/tabbed_profile/icon.php b/mod/tabbed_profile/icon.php new file mode 100644 index 000000000..48ccc16c2 --- /dev/null +++ b/mod/tabbed_profile/icon.php @@ -0,0 +1,54 @@ +<?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/tabbed_profile/icondirect.php b/mod/tabbed_profile/icondirect.php new file mode 100644 index 000000000..fe4726d1a --- /dev/null +++ b/mod/tabbed_profile/icondirect.php @@ -0,0 +1,71 @@ +<?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']; +$guid = (int)$_GET['guid']; + +$size = strtolower($_GET['size']); +if (!in_array($size,array('large','medium','small','tiny','master','topbar'))) { + $size = "medium"; +} + +$mysql_dblink = @mysql_connect($CONFIG->dbhost,$CONFIG->dbuser,$CONFIG->dbpass, true); +if ($mysql_dblink) { + if (@mysql_select_db($CONFIG->dbname,$mysql_dblink)) { + + // 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; + $row = mysql_fetch_object($result); + while ($row) { + if ($row->name == 'dataroot') { + $dataroot = $row->value; + } else if ($row->name == 'simplecache_enabled') { + $simplecache_enabled = $row->value; + } + $row = mysql_fetch_object($result); + } + } + + @mysql_close($mysql_dblink); + + // if the simplecache is enabled, we get icon directly + if ($simplecache_enabled) { + + // 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)) { + 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; + } + exit; + } + } + } + +} + +// simplecache is not turned on or something went wrong so load engine and try that way +require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); +$user = get_entity($guid); +set_input('username', $user->username); +require_once(dirname(__FILE__).'/icon.php'); diff --git a/mod/tabbed_profile/languages/en.php b/mod/tabbed_profile/languages/en.php new file mode 100644 index 000000000..6017a590c --- /dev/null +++ b/mod/tabbed_profile/languages/en.php @@ -0,0 +1,125 @@ +<?php +/** + * Elgg profile plugin language pack + */ + +$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.', + +); + +add_translation('en', $english);
\ No newline at end of file diff --git a/mod/tabbed_profile/manifest.xml b/mod/tabbed_profile/manifest.xml new file mode 100644 index 000000000..a1307f24d --- /dev/null +++ b/mod/tabbed_profile/manifest.xml @@ -0,0 +1,14 @@ +<?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> diff --git a/mod/tabbed_profile/start.php b/mod/tabbed_profile/start.php new file mode 100644 index 000000000..08b2ed5bd --- /dev/null +++ b/mod/tabbed_profile/start.php @@ -0,0 +1,138 @@ +<?php +/** + * Elgg profile plugin + * + * @package ElggProfile + */ + +elgg_register_event_handler('init', 'system', 'profile_init', 1); + +/** + * Profile init function; sets up the profile functions + * + */ +function profile_init() { + global $CONFIG; + + // 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'); + + // 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'); + + // Register a page handler, so we can have nice URLs + register_page_handler('profile', 'profile_page_handler'); + + elgg_extend_view('html_head/extend', 'profile/metatags'); + elgg_extend_view('css/screen', 'profile/css'); + elgg_extend_view('js/elgg', 'profile/javascript'); + + // Register actions + elgg_register_action("profile/addcomment", $CONFIG->pluginspath . "tabbed_profile/actions/addcomment.php"); + elgg_register_action("profile/deletecomment", $CONFIG->pluginspath . "tabbed_profile/actions/deletecomment.php"); + + elgg_register_event_handler('profileupdate', 'all', 'object_notifications'); + + // allow ECML in parts of the profile + elgg_register_plugin_hook_handler('get_views', 'ecml', 'profile_ecml_views_hook'); +} + +/** + * Profile page handler + * + * @param array $page Array of page elements, forwarded by the page handling mechanism + */ +function profile_page_handler($page) { + global $CONFIG; + + if (isset($page[0])) { + $username = $page[0]; + $user = get_user_by_username($username); + elgg_set_page_owner_guid($user->guid); + } + + // short circuit if invalid or banned username + if (!$user || ($user->isBanned() && !isadminloggedin())) { + register_error(elgg_echo('profile:notfound')); + forward(); + } + + $action = NULL; + if (isset($page[1])) { + $action = $page[1]; + } + + switch ($action) { + case 'edit': + // use for the core profile edit page + require $CONFIG->path . 'pages/profile/edit.php'; + return; + break; + + default: + if (isset($page[1])) { + $section = $page[1]; + } else { + $section = 'activity'; + } + $content = profile_get_user_profile_html($user, $section); + $content = elgg_view_layout('one_column', array('content' => $content)); + break; + } + + echo elgg_view_page($title, $content); +} + +/** + * 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/tab_navigation', array('section' => $section, 'entity' => $user)); + $view_options = array('entity' => $user); + + $content = elgg_view("profile/tabs/$section", $view_options); + + $body .= elgg_view('profile/content_wrapper', array('content' => $content)); + + $body .= elgg_view('profile/sidebar', array('section' => $section)); + return $body; +} + +/** + * Profile URL generator for $user->getUrl(); + * + * @param ElggUser $user + * @return string User URL + */ +function profile_url($user) { + return elgg_get_site_url() . "pg/profile/" . $user->username; +} + +/** + * 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 + */ +function profile_ecml_views_hook($hook, $entity_type, $return_value, $params) { + $return_value['profile/profile_content'] = elgg_echo('profile'); + + return $return_value; +} diff --git a/mod/tabbed_profile/views/default/icon/user/default/large.php b/mod/tabbed_profile/views/default/icon/user/default/large.php new file mode 100644 index 000000000..ac28f8e9a --- /dev/null +++ b/mod/tabbed_profile/views/default/icon/user/default/large.php @@ -0,0 +1,3 @@ +<?php + echo elgg_get_site_url() . "mod/profile/graphics/defaultlarge.gif"; +?>
\ No newline at end of file diff --git a/mod/tabbed_profile/views/default/icon/user/default/master.php b/mod/tabbed_profile/views/default/icon/user/default/master.php new file mode 100644 index 000000000..129b0d375 --- /dev/null +++ b/mod/tabbed_profile/views/default/icon/user/default/master.php @@ -0,0 +1,3 @@ +<?php + echo elgg_get_site_url() . "mod/profile/graphics/defaultmaster.gif"; +?>
\ No newline at end of file diff --git a/mod/tabbed_profile/views/default/icon/user/default/medium.php b/mod/tabbed_profile/views/default/icon/user/default/medium.php new file mode 100644 index 000000000..8815a65bc --- /dev/null +++ b/mod/tabbed_profile/views/default/icon/user/default/medium.php @@ -0,0 +1,3 @@ +<?php + echo elgg_get_site_url() . "mod/profile/graphics/defaultmedium.gif"; +?>
\ No newline at end of file diff --git a/mod/tabbed_profile/views/default/icon/user/default/small.php b/mod/tabbed_profile/views/default/icon/user/default/small.php new file mode 100644 index 000000000..895aa15cc --- /dev/null +++ b/mod/tabbed_profile/views/default/icon/user/default/small.php @@ -0,0 +1,3 @@ +<?php + echo elgg_get_site_url() . "mod/profile/graphics/defaultsmall.gif"; +?>
\ No newline at end of file diff --git a/mod/tabbed_profile/views/default/icon/user/default/tiny.php b/mod/tabbed_profile/views/default/icon/user/default/tiny.php new file mode 100644 index 000000000..866c61533 --- /dev/null +++ b/mod/tabbed_profile/views/default/icon/user/default/tiny.php @@ -0,0 +1,3 @@ +<?php + echo elgg_get_site_url() . "mod/profile/graphics/defaulttiny.gif"; +?>
\ No newline at end of file diff --git a/mod/tabbed_profile/views/default/icon/user/default/topbar.php b/mod/tabbed_profile/views/default/icon/user/default/topbar.php new file mode 100644 index 000000000..0ff3dbaaa --- /dev/null +++ b/mod/tabbed_profile/views/default/icon/user/default/topbar.php @@ -0,0 +1,3 @@ +<?php + echo elgg_get_site_url() . "mod/profile/graphics/defaulttopbar.gif"; +?>
\ No newline at end of file diff --git a/mod/tabbed_profile/views/default/profile/admin_menu.php b/mod/tabbed_profile/views/default/profile/admin_menu.php new file mode 100755 index 000000000..99ed3a4f5 --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/admin_menu.php @@ -0,0 +1,42 @@ +<?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/tabbed_profile/views/default/profile/commentwall/commentwall.php index 56670dcf0..56670dcf0 100644 --- a/mod/profile/views/default/profile/commentwall/commentwall.php +++ b/mod/tabbed_profile/views/default/profile/commentwall/commentwall.php diff --git a/mod/profile/views/default/profile/commentwall/commentwall_content.php b/mod/tabbed_profile/views/default/profile/commentwall/commentwall_content.php index a0785b565..a0785b565 100644 --- a/mod/profile/views/default/profile/commentwall/commentwall_content.php +++ b/mod/tabbed_profile/views/default/profile/commentwall/commentwall_content.php diff --git a/mod/profile/views/default/profile/commentwall/commentwalladd.php b/mod/tabbed_profile/views/default/profile/commentwall/commentwalladd.php index dcb520ea1..dcb520ea1 100644 --- a/mod/profile/views/default/profile/commentwall/commentwalladd.php +++ b/mod/tabbed_profile/views/default/profile/commentwall/commentwalladd.php diff --git a/mod/profile/views/default/profile/content_wrapper.php b/mod/tabbed_profile/views/default/profile/content_wrapper.php index 4fb43e7c9..4fb43e7c9 100644 --- a/mod/profile/views/default/profile/content_wrapper.php +++ b/mod/tabbed_profile/views/default/profile/content_wrapper.php diff --git a/mod/tabbed_profile/views/default/profile/css.php b/mod/tabbed_profile/views/default/profile/css.php new file mode 100644 index 000000000..812daf16d --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/css.php @@ -0,0 +1,458 @@ +<?php +/** + * Elgg Profile + * + * @package Profile + */ +?> +/* *************************************** + main layout blocks +*************************************** */ +#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; +} +.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; + + -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; + -moz-border-radius: 8px; + padding:5px; + margin-bottom:10px; +} +#owner_block .owner_block_icon { + float:left; + padding:0; + margin:0; +} +#owner_block .owner_block_icon.large { + width:200px; + height:200px; + overflow: hidden; + float:none; +} +#owner_block .owner_block_contents { + margin-left: 50px; +} +#elgg-sidebar #owner_block .owner_block_contents { + margin-left: 34px; +} +#owner_block .owner_block_contents h3 { + margin-top:-4px; + border-bottom:none; + margin-bottom:0; + padding-bottom:0; +} +#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%; +} +#owner_block .profile_actions { + margin-top:10px; +} +#owner_block .profile_actions a.action-button { + 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; + -moz-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; +} + + +/* *************************************** + admin menu in sidebar +*************************************** */ +.owner_block_links .admin_menu_options { + display: none; +} +.owner_block_links ul.admin_menu { + background-color:white; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + cursor:pointer; +} +.owner_block_links ul.admin_menu li a { + background-color: white; + color:red; + margin-bottom:0; +} +.owner_block_links ul.admin_menu li a:hover { + color:black; +} +.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; +} +.owner_block_links ul.admin_menu li ul.admin_menu_options li a:hover { + color:black; + background:none; + text-decoration: underline; +} + + +/* *************************************** + full profile info panel +*************************************** */ +#profile_content .odd { + background-color:#f4f4f4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + margin:0 0 7px 0; + padding:2px 4px 2px 4px; +} +#profile_content .even { + background-color:#f4f4f4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + margin:0 0 7px 0; + padding:2px 4px 2px 4px; +} +#profile_content .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; +} + +/* *************************************** + banned user +*************************************** */ +/* banned user full profile panel */ +#profile_content .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; +} diff --git a/mod/tabbed_profile/views/default/profile/hoverover.php b/mod/tabbed_profile/views/default/profile/hoverover.php new file mode 100644 index 000000000..172ef5d3d --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/hoverover.php @@ -0,0 +1,16 @@ +<?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/tabbed_profile/views/default/profile/icon.php b/mod/tabbed_profile/views/default/profile/icon.php new file mode 100644 index 000000000..71b25fe6c --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/icon.php @@ -0,0 +1,111 @@ +<?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/tabbed_profile/views/default/profile/javascript.php b/mod/tabbed_profile/views/default/profile/javascript.php new file mode 100644 index 000000000..96b57fb95 --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/javascript.php @@ -0,0 +1,137 @@ +<?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/tabbed_profile/views/default/profile/listing.php b/mod/tabbed_profile/views/default/profile/listing.php new file mode 100644 index 000000000..0622264b8 --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/listing.php @@ -0,0 +1,49 @@ +<?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_type = ""; +if (get_loggedin_userid() == $vars['entity']->guid) { + $rel_type = 'me'; +} elseif (check_entity_relationship(get_loggedin_userid(), 'friend', $vars['entity']->guid)) { + $rel_type = 'friend'; +} + +if ($rel_type) { + $rel = "rel=\"$rel_type\""; +} + +if (!$banned) { + $info .= "<p class='entity-title user'><a href=\"" . $vars['entity']->getUrl() . "\" $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); diff --git a/mod/tabbed_profile/views/default/profile/menu/adminlinks.php b/mod/tabbed_profile/views/default/profile/menu/adminlinks.php new file mode 100644 index 000000000..39807764a --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/menu/adminlinks.php @@ -0,0 +1,28 @@ +<?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/tabbed_profile/views/default/profile/menu/friendlinks.php b/mod/tabbed_profile/views/default/profile/menu/friendlinks.php new file mode 100644 index 000000000..ed13edb8b --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/menu/friendlinks.php @@ -0,0 +1,23 @@ +<?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/tabbed_profile/views/default/profile/menu/links.php b/mod/tabbed_profile/views/default/profile/menu/links.php new file mode 100644 index 000000000..4233d7ec5 --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/menu/links.php @@ -0,0 +1,9 @@ +<?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/tabbed_profile/views/default/profile/metatags.php b/mod/tabbed_profile/views/default/profile/metatags.php new file mode 100644 index 000000000..1197a2e0a --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/metatags.php @@ -0,0 +1,14 @@ +<?php +/** + * FOAF + * + * @package ElggProfile + * + */ + +if (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 diff --git a/mod/tabbed_profile/views/default/profile/ownerblock.php b/mod/tabbed_profile/views/default/profile/ownerblock.php new file mode 100755 index 000000000..3fb5f509e --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/ownerblock.php @@ -0,0 +1,136 @@ +<?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/avatar/edit/{$user->username}' class='action-button'>". elgg_echo('avatar:edit') ."</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/tabbed_profile/views/default/profile/sidebar.php b/mod/tabbed_profile/views/default/profile/sidebar.php new file mode 100644 index 000000000..525a2da81 --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/sidebar.php @@ -0,0 +1,13 @@ +<?php +/** + * Elgg profile icon edit form + * + * @package ElggProfile + */ +?> +<div id="profile_sidebar"> +<?php + $section = $vars['section']; + echo elgg_view('profile/ownerblock', array('section' => $section)); +?> +</div>
\ No newline at end of file diff --git a/mod/profile/views/default/profile/tab_navigation.php b/mod/tabbed_profile/views/default/profile/tab_navigation.php index ca0873ebd..ca0873ebd 100755 --- a/mod/profile/views/default/profile/tab_navigation.php +++ b/mod/tabbed_profile/views/default/profile/tab_navigation.php diff --git a/mod/profile/views/default/profile/tabs/activity.php b/mod/tabbed_profile/views/default/profile/tabs/activity.php index ccd2a3915..ccd2a3915 100755 --- a/mod/profile/views/default/profile/tabs/activity.php +++ b/mod/tabbed_profile/views/default/profile/tabs/activity.php diff --git a/mod/profile/views/default/profile/tabs/commentwall.php b/mod/tabbed_profile/views/default/profile/tabs/commentwall.php index bf54bd7e7..bf54bd7e7 100644 --- a/mod/profile/views/default/profile/tabs/commentwall.php +++ b/mod/tabbed_profile/views/default/profile/tabs/commentwall.php diff --git a/mod/tabbed_profile/views/default/profile/tabs/details.php b/mod/tabbed_profile/views/default/profile/tabs/details.php new file mode 100755 index 000000000..27b0f943b --- /dev/null +++ b/mod/tabbed_profile/views/default/profile/tabs/details.php @@ -0,0 +1,41 @@ +<?php +/** + * Elgg user display (details) + * @uses $vars['entity'] The user entity + */ + +$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>"; + } + } +} diff --git a/mod/profile/views/default/profile/tabs/friends.php b/mod/tabbed_profile/views/default/profile/tabs/friends.php index 9195629e5..9195629e5 100755 --- a/mod/profile/views/default/profile/tabs/friends.php +++ b/mod/tabbed_profile/views/default/profile/tabs/friends.php diff --git a/mod/profile/views/default/profile/tabs/groups.php b/mod/tabbed_profile/views/default/profile/tabs/groups.php index 323bb61f1..323bb61f1 100644 --- a/mod/profile/views/default/profile/tabs/groups.php +++ b/mod/tabbed_profile/views/default/profile/tabs/groups.php diff --git a/mod/profile/views/default/profile/tabs/twitter.php b/mod/tabbed_profile/views/default/profile/tabs/twitter.php index 06a0551d4..06a0551d4 100755 --- a/mod/profile/views/default/profile/tabs/twitter.php +++ b/mod/tabbed_profile/views/default/profile/tabs/twitter.php |