From 9ac841f26e05af3515643e44eb5fde30bcfb1b75 Mon Sep 17 00:00:00 2001 From: cash Date: Sat, 18 Dec 2010 20:15:24 +0000 Subject: moved the avatar forms and actions into core from profile plugin git-svn-id: http://code.elgg.org/elgg/trunk@7670 36083f99-b078-4883-b0ff-0f9b5a30f544 --- actions/avatar/crop.php | 69 ++++++++++++++++ actions/avatar/upload.php | 55 +++++++++++++ engine/lib/users.php | 3 + languages/en.php | 10 +++ mod/groups/start.php | 2 +- mod/profile/actions/cropicon.php | 73 ----------------- mod/profile/actions/iconupload.php | 62 --------------- mod/profile/views/default/profile/editicon.php | 106 +------------------------ views/default/forms/avatar/crop.php | 71 +++++++++++++++++ views/default/forms/avatar/upload.php | 15 ++++ 10 files changed, 228 insertions(+), 238 deletions(-) create mode 100644 actions/avatar/crop.php create mode 100644 actions/avatar/upload.php delete mode 100644 mod/profile/actions/cropicon.php delete mode 100644 mod/profile/actions/iconupload.php create mode 100644 views/default/forms/avatar/crop.php create mode 100644 views/default/forms/avatar/upload.php diff --git a/actions/avatar/crop.php b/actions/avatar/crop.php new file mode 100644 index 000000000..ed5faecfa --- /dev/null +++ b/actions/avatar/crop.php @@ -0,0 +1,69 @@ +canEdit()) { + register_error(elgg_echo('avatar:crop:fail')); + forward(REFERER); +} + +$x1 = (int) get_input('x1', 0); +$y1 = (int) get_input('y1', 0); +$x2 = (int) get_input('x2', 0); +$y2 = (int) get_input('y2', 0); + +$filehandler = new ElggFile(); +$filehandler->owner_guid = $owner->getGUID(); +$filehandler->setFilename("profile/" . $owner->guid . "master" . ".jpg"); +$filename = $filehandler->getFilenameOnFilestore(); + +//@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) +); + +// 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_existing_file($filename, $size_info['w'], $size_info['h'], $size_info['square'], $x1, $y1, $x2, $y2, $size_info['upscale']); + + if ($resized) { + //@todo Make these actual entities. See exts #348. + $file = new ElggFile(); + $file->owner_guid = $guid; + $file->setFilename("profile/{$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('avatar:resize:fail')); + forward(REFERER); + } +} + +$owner->icontime = time(); + +$owner->x1 = $x1; +$owner->x2 = $x2; +$owner->y1 = $y1; +$owner->y2 = $y2; + +system_message(elgg_echo('avatar:crop:success')); + +forward(REFERER); diff --git a/actions/avatar/upload.php b/actions/avatar/upload.php new file mode 100644 index 000000000..052212e97 --- /dev/null +++ b/actions/avatar/upload.php @@ -0,0 +1,55 @@ +canEdit()) { + register_error(elgg_echo('avatar:upload:fail')); + forward(REFERER); +} + +//@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'=>550, 'h'=>550, '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('avatar', $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 = $guid; + $file->setFilename("profile/{$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('avatar:resize:fail')); + forward(REFERER); + } +} + +$owner->icontime = time(); +if (elgg_trigger_event('profileiconupdate', $owner->type, $owner)) { + system_message(elgg_echo("avatar:upload:success")); +} + +forward(REFERER); diff --git a/engine/lib/users.php b/engine/lib/users.php index d69461c2b..b9bf2058f 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -1535,6 +1535,9 @@ function users_init() { elgg_register_action("useradd", '', 'public'); elgg_register_action("friends/add"); elgg_register_action("friends/remove"); + elgg_register_action('avatar/upload'); + elgg_register_action('avatar/crop'); + //elgg_register_action('friends/addcollection'); //elgg_register_action('friends/deletecollection'); //elgg_register_action('friends/editcollection'); diff --git a/languages/en.php b/languages/en.php index 2d406d3be..2168845b4 100644 --- a/languages/en.php +++ b/languages/en.php @@ -364,6 +364,16 @@ $english = array( 'friendspicker:chararray' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + 'avatar' => 'Avatar', + 'avatar:create' => 'Create your avatar', + 'avatar:preview' => 'Preview', + 'avatar:create: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.', + 'avatar:upload:success' => 'Avatar successfully uploaded', + 'avatar:upload:fail' => 'Avatar upload failed', + 'avatar:resize:fail' => 'Resize of the avatar failed', + 'avatar:crop:success' => 'Cropping the avatar succeeded', + 'avatar:crop:fail' => 'Avatar cropping failed', + /** * Feeds */ diff --git a/mod/groups/start.php b/mod/groups/start.php index aaaaa3f45..c2b3dc35b 100644 --- a/mod/groups/start.php +++ b/mod/groups/start.php @@ -39,7 +39,7 @@ elgg_register_action("groups/invite", $CONFIG->pluginspath . "groups/actions/invite.php"); // Add a page owner handler - elgg_register_plugin_hook_handler('page_owner', 'system', 'groups_page_owner_handler'); + //elgg_register_plugin_hook_handler('page_owner', 'system', 'groups_page_owner_handler'); // Add some widgets elgg_register_widget_type('a_users_groups',elgg_echo('groups:widget:membership'), elgg_echo('groups:widgets:description')); diff --git a/mod/profile/actions/cropicon.php b/mod/profile/actions/cropicon.php deleted file mode 100644 index c65b5f56d..000000000 --- a/mod/profile/actions/cropicon.php +++ /dev/null @@ -1,73 +0,0 @@ -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->guid . "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); -$large = get_resized_image_from_existing_file($filename, 550, 550, true, $x1, $y1, $x2, $y2); - -if ($tiny !== FALSE && $small !== FALSE && $medium !== FALSE && $large !== FALSE) { - $filehandler = new ElggFile(); - $filehandler->owner_guid = $profile_owner->getGUID(); - $filehandler->setFilename("profile/" . $profile_owner->guid . "large.jpg"); - $filehandler->open("write"); - $filehandler->write($large); - $filehandler->close(); - $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/iconupload.php b/mod/profile/actions/iconupload.php deleted file mode 100644 index 546aa0e9c..000000000 --- a/mod/profile/actions/iconupload.php +++ /dev/null @@ -1,62 +0,0 @@ -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'=>550, 'h'=>550, '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 (elgg_trigger_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/views/default/profile/editicon.php b/mod/profile/views/default/profile/editicon.php index 9eeaecb4a..878ec504b 100644 --- a/mod/profile/views/default/profile/editicon.php +++ b/mod/profile/views/default/profile/editicon.php @@ -12,8 +12,6 @@ $currentuser = get_loggedin_user(); ?>
- -

@@ -30,112 +28,16 @@ $currentuser = get_loggedin_user();
-
- - -


- - 'profileicon')); - ?> -
" /> -

-
+ 'multipart/form-data'), array('entity' => $currentuser)); +?>

-

-getIcon('master'); - + get_loggedin_user())); ?> -

- - -

-<?php echo elgg_echo(" /> -

- -
- -
- - - - - - - " /> -
diff --git a/views/default/forms/avatar/crop.php b/views/default/forms/avatar/crop.php new file mode 100644 index 000000000..1082ab803 --- /dev/null +++ b/views/default/forms/avatar/crop.php @@ -0,0 +1,71 @@ +getIcon('master'); + +?> +

+ +

+

+ <?php echo elgg_echo('avatar'); ?> +

+ +
+ $coord, 'value' => $vars['entity']->$coord)); +} + +echo elgg_view('input/hidden', array('internalname' => 'guid', 'value' => $vars['entity']->guid)); + +echo elgg_view('input/submit', array('value' => elgg_echo('avatar:create'))); + +?> + + + + diff --git a/views/default/forms/avatar/upload.php b/views/default/forms/avatar/upload.php new file mode 100644 index 000000000..733e2996c --- /dev/null +++ b/views/default/forms/avatar/upload.php @@ -0,0 +1,15 @@ + 'guid', 'value' => $vars['entity']->guid)); +?> +

+
+ 'avatar')); ?> +
+ elgg_echo('upload'))); ?> +

-- cgit v1.2.3