From: cash Date: Sat, 18 Dec 2010 20:15:24 +0000 (+0000) Subject: moved the avatar forms and actions into core from profile plugin X-Git-Url: https://gitweb.fluxo.info/?a=commitdiff_plain;h=9ac841f26e05af3515643e44eb5fde30bcfb1b75;p=lorea%2Felgg.git 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 --- 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'))); ?> +