diff options
-rw-r--r-- | actions/photos/image/tag.php (renamed from actions/addtag.php) | 50 | ||||
-rw-r--r-- | languages/en.php | 4 | ||||
-rw-r--r-- | pages/photos/image/view.php | 5 | ||||
-rw-r--r-- | start.php | 23 | ||||
-rw-r--r-- | views/default/forms/photos/image/tag.php | 33 | ||||
-rw-r--r-- | views/default/js/photos/tagging.php | 73 | ||||
-rw-r--r-- | views/default/object/image/full.php | 4 | ||||
-rw-r--r-- | views/default/photos/css.php | 56 | ||||
-rw-r--r-- | views/default/photos/tagging/help.php | 19 | ||||
-rw-r--r-- | views/default/photos/tagging/select.php | 16 |
10 files changed, 244 insertions, 39 deletions
diff --git a/actions/addtag.php b/actions/photos/image/tag.php index 97418f495..0c7ce06ae 100644 --- a/actions/addtag.php +++ b/actions/photos/image/tag.php @@ -1,36 +1,32 @@ <?php /** - * Tidypics Add Photo Tag + * Add photo tag action * + * @author Cash Costello + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License v2 */ -gatekeeper(); -action_gatekeeper(); - $coordinates_str = get_input('coordinates'); - -$user_id = get_input('user_id'); -$image_guid = get_input('image_guid'); -$word = get_input('word'); +$username = get_input('username'); +$image_guid = get_input('guid'); if ($image_guid == 0) { register_error(elgg_echo("tidypics:phototagging:error")); - forward($_SERVER['HTTP_REFERER']); + forward(REFERER); } $image = get_entity($image_guid); if (!$image) { register_error(elgg_echo("tidypics:phototagging:error")); - forward($_SERVER['HTTP_REFERER']); + forward(REFERER); } -// test for empty tag -if ($user_id == 0 && empty($word)) { +if (empty($username)) { register_error(elgg_echo("tidypics:phototagging:error")); - forward($_SERVER['HTTP_REFERER']); + forward(REFERER); } - +/* $new_word_tag = false; if ($user_id != 0) { $relationships_type = 'user'; @@ -60,24 +56,21 @@ if ($new_word_tag) { $image->clearMetadata('tags'); $image->tags = $tagarray; } +*/ -// create string for javascript tag object +$tag = new stdClass(); $tag->coords = $coordinates_str; -$tag->type = $relationships_type; -$tag->value = $value; - +$tag->type = 'user'; +$tag->value = get_user_by_username($username)->getGUID(); $access_id = $image->getAccessID(); -$owner_id = get_loggedin_userid(); -$tagger = get_loggedin_user(); -//Save annotation -$annotation_id = $image->annotate('phototag', serialize($tag), $access_id, $owner_id); +$annotation_id = $image->annotate('phototag', serialize($tag), $access_id); if ($annotation_id) { // if tag is a user id, add relationship for searching (find all images with user x) - if ($relationships_type === 'user') { - if (!check_entity_relationship($user_id, 'phototag', $image_guid)) { - add_entity_relationship($user_id, 'phototag', $image_guid); - + if ($tag->type === 'user') { + if (!check_entity_relationship($tag->value, 'phototag', $image_guid)) { + add_entity_relationship($tag->value, 'phototag', $image_guid); +/* // also add this to the river - subject is image, object is the tagged user add_to_river('river/object/image/tag', 'tag', $tagger->guid, $user_id, $access_id, 0, $annotation_id); @@ -95,11 +88,12 @@ if ($annotation_id) { ) ); } + * + */ } } system_message(elgg_echo("tidypics:phototagging:success")); } - -forward($_SERVER['HTTP_REFERER']); +forward(REFERER); diff --git a/languages/en.php b/languages/en.php index ec65d0622..2276e4b12 100644 --- a/languages/en.php +++ b/languages/en.php @@ -45,7 +45,7 @@ $english = array( 'tidypics:friendmostviewed' => "%s's most viewed images", 'tidypics:friendmostrecent' => "%s's most recent images", 'tidypics:highestrated' => "Highest rated images", - 'tidypics:views' => "Views: %s", + 'tidypics:views' => "%s views", 'tidypics:viewsbyowner' => "by %s users (not including you)", 'tidypics:viewsbyothers' => "(%s by you)", 'tidypics:administration' => 'Tidypics Administration', @@ -129,7 +129,7 @@ $english = array( 'image:index' => "%u of %u", // tagging - 'tidypics:taginstruct' => 'Select area that you want to tag', + 'tidypics:taginstruct' => 'Select the area that you want to tag or %s', 'tidypics:deltag_title' => 'Select tags to delete', 'tidypics:finish_tagging' => 'Stop tagging', 'tidypics:tagthisphoto' => 'Tag this photo', diff --git a/pages/photos/image/view.php b/pages/photos/image/view.php index f9157a900..6db9ff529 100644 --- a/pages/photos/image/view.php +++ b/pages/photos/image/view.php @@ -17,6 +17,11 @@ if (!$photo) { $photo->addView(); +if (elgg_get_plugin_setting('tagging', 'tidypics')) { + elgg_load_js('tidypics:tagging'); + elgg_load_js('jquery.imgareaselect'); +} + // set page owner based on owner of photo album $album = $photo->getContainerEntity(); if ($album) { @@ -34,6 +34,9 @@ function tidypics_init() { $js = elgg_get_simplecache_url('js', 'photos/tidypics'); elgg_register_simplecache_view('js/photos/tidypics'); elgg_register_js('tidypics', $js, 'footer'); + $js = elgg_get_simplecache_url('js', 'photos/tagging'); + elgg_register_simplecache_view('js/photos/tagging'); + elgg_register_js('tidypics:tagging', $js, 'footer'); elgg_register_js('tidypics:slideshow', 'mod/tidypics/vendors/PicLensLite/piclens_optimized.js', 'footer'); // Add photos link to owner block/hover menus @@ -93,7 +96,7 @@ function tidypics_init() { //register_action("tidypics/ajax_upload", true, "$base_dir/ajax_upload.php"); //register_action("tidypics/ajax_upload_complete", true, "$base_dir/ajax_upload_complete.php"); //register_action("tidypics/sortalbum", false, "$base_dir/sortalbum.php"); - //register_action("tidypics/addtag", false, "$base_dir/addtag.php"); + elgg_register_action("photos/image/tag", "$base_dir/image/tag.php"); //register_action("tidypics/deletetag", false, "$base_dir/deletetag.php"); elgg_register_action("photos/admin/settings", "$base_dir/admin/settings.php", 'admin'); @@ -284,15 +287,27 @@ function tidypics_entity_menu_setup($hook, $type, $return, $params) { if (elgg_instanceof($entity, 'object', 'image')) { if (elgg_get_plugin_setting('view_count', 'tidypics')) { $view_info = $entity->getViewInfo(); - $status_text = (int)$view_info['total'] . ' views'; + $text = elgg_echo('tidypics:views', array((int)$view_info['total'])); $options = array( - 'name' => 'published_status', - 'text' => "<span>$status_text</span>", + 'name' => 'views', + 'text' => "<span>$text</span>", 'href' => false, 'priority' => 90, ); $return[] = ElggMenuItem::factory($options); } + + if (elgg_get_plugin_setting('tagging', 'tidypics')) { + $options = array( + 'name' => 'tagging', + 'text' => elgg_echo('tidypics:actiontag'), + 'href' => '#', + 'title' => elgg_echo('tidypics:tagthisphoto'), + 'rel' => 'photo-tagging', + 'priority' => 80, + ); + $return[] = ElggMenuItem::factory($options); + } } if (elgg_instanceof($entity, 'object', 'album')) { diff --git a/views/default/forms/photos/image/tag.php b/views/default/forms/photos/image/tag.php new file mode 100644 index 000000000..31869be9e --- /dev/null +++ b/views/default/forms/photos/image/tag.php @@ -0,0 +1,33 @@ +<?php +/** + * Tag select form body + * + * @uses $vars['entity'] + * + * @author Cash Costello + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License v2 + */ + +echo '<div class="elgg-col elgg-col-4of5">'; + +echo elgg_view('input/autocomplete', array( + 'name' => 'username', + 'match_on' => 'friends', +)); + +echo elgg_view('input/hidden', array( + 'name' => 'guid', + 'value' => $vars['entity']->getGUID(), +)); + +echo elgg_view('input/hidden', array( + 'name' => 'coordinates', +)); + +echo '</div>'; + +echo '<div class="elgg-col elgg-col-1of5 center">'; +echo elgg_view('input/submit', array( + 'value' => elgg_echo('tidypics:actiontag'), +)); +echo '</div>'; diff --git a/views/default/js/photos/tagging.php b/views/default/js/photos/tagging.php new file mode 100644 index 000000000..f831200e7 --- /dev/null +++ b/views/default/js/photos/tagging.php @@ -0,0 +1,73 @@ +<?php +/** + * Photo tagging JavaScript + * + * @author Cash Costello + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License v2 + */ + +?> + +elgg.provide('elgg.tidypics.tagging'); + +elgg.tidypics.tagging.init = function() { + $('[rel=photo-tagging]').click(elgg.tidypics.tagging.start); + + $('#tidypics-tagging-quit').click(elgg.tidypics.tagging.stop); +} + +/** + * Start a tagging session + */ +elgg.tidypics.tagging.start = function(event) { + + $('.tidypics-photo').imgAreaSelect({ + disable : false, + hide : false, + classPrefix : 'tidypics-tagging', + onSelectEnd : elgg.tidypics.tagging.startSelect, + onSelectStart: function() { + $('#tidypics-tagging-select').hide(); + } + }); + + $('.tidypics-photo').css({"cursor" : "crosshair"}); + + $('#tidypics-tagging-help').toggle(); + + event.preventDefault(); +} + +/** + * Stop tagging + * + * A tagging session could be completed or the user could have quit. + */ +elgg.tidypics.tagging.stop = function(event) { + $('#tidypics-tagging-help').toggle(); + $('#tidypics-tagging-select').hide(); + + $('.tidypics-photo').imgAreaSelect({hide: true, disable: true}); + $('.tidypics-photo').css({"cursor" : "pointer"}); + + event.preventDefault(); +} + +/** + * Start the selection stage of tagging + */ +elgg.tidypics.tagging.startSelect = function(img, selection) { + + var coords = '"x1":"' + selection.x1 + '",'; + coords += '"y1":"' + selection.y1 + '",'; + coords += '"width":"' + selection.width + '",'; + coords += '"height":"' + selection.height + '"'; + $("input[name=coordinates]").val(coords); + + $('#tidypics-tagging-select').show().css({ + 'top' : selection.y2 + 10, + 'left' : selection.x2 + }); +} + +elgg.register_hook_handler('init', 'system', elgg.tidypics.tagging.init); diff --git a/views/default/object/image/full.php b/views/default/object/image/full.php index e3a2c7003..33ba49739 100644 --- a/views/default/object/image/full.php +++ b/views/default/object/image/full.php @@ -51,8 +51,8 @@ echo $summary; echo '<div class="tidypics-wrapper-photo">'; echo elgg_view('object/image/navigation', $vars); -//echo elgg_view('tidypics/tagging/help'); -//echo elgg_view('tidypics/tagging/select', array('photo' => $photo)); +echo elgg_view('photos/tagging/help', $vars); +echo elgg_view('photos/tagging/select', $vars); echo $img; echo '</div>'; diff --git a/views/default/photos/css.php b/views/default/photos/css.php index 18f225131..31e3d9b53 100644 --- a/views/default/photos/css.php +++ b/views/default/photos/css.php @@ -1,9 +1,15 @@ <?php - /** - * tidypics CSS extender - */ +/** + * Tidypics CSS + * + * @author Cash Costello + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License v2 + */ ?> +/* *************************************** + TIDYPICS +*************************************** */ .elgg-module-tidypics-album, .elgg-module-tidypics-image { width: 161px; @@ -23,6 +29,10 @@ display: block; } +.tidypics-wrapper-photo { + position: relative; +} + .tidypics-heading { color: #0054A7; } @@ -66,6 +76,46 @@ vertical-align: top; } +/* *************************************** + Tagging +*************************************** */ +.tidypics-tagging-border1 { + border: solid 2px white; +} + +.tidypics-tagging-border1, .tidypics-tagging-border2, +.tidypics-tagging-border3, .tidypics-tagging-border4 { + filter: alpha(opacity=50); + opacity: 0.5; +} + +.tidypics-tagging-handle { + background-color: #fff; + border: solid 1px #000; + filter: alpha(opacity=50); + opacity: 0.5; +} + +.tidypics-tagging-outer { + background-color: #000; + filter: alpha(opacity=50); + opacity: 0.5; +} + +.tidypics-tagging-help { + position: absolute; + left: 50%; + top: -25px; + width: 250px; + margin-left: -125px; + text-align: center; +} + +.tidypics-tagging-select { + position: absolute; + max-width: 300px; +} + <?php return true; ?> diff --git a/views/default/photos/tagging/help.php b/views/default/photos/tagging/help.php new file mode 100644 index 000000000..a7f437e51 --- /dev/null +++ b/views/default/photos/tagging/help.php @@ -0,0 +1,19 @@ +<?php +/** + * Instructions on how to peform photo tagging + * + * @author Cash Costello + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License v2 + */ + +$button = elgg_view('output/url', array( + 'text' => elgg_echo('quit'), + 'href' => '#', + 'id' => 'tidypics-tagging-quit', +)); + +$instructions = elgg_echo('tidypics:taginstruct', array($button)); +?> +<div id="tidypics-tagging-help" class="elgg-module elgg-module-popup tidypics-tagging-help pam hidden"> + <?php echo $instructions; ?> +</div> diff --git a/views/default/photos/tagging/select.php b/views/default/photos/tagging/select.php new file mode 100644 index 000000000..8894af63a --- /dev/null +++ b/views/default/photos/tagging/select.php @@ -0,0 +1,16 @@ +<?php +/** + * Tag select view + * + * @uses $vars['entity'] + * + * @author Cash Costello + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License v2 + */ + +$body = elgg_view_form('photos/image/tag', array(), $vars); + +echo elgg_view_module('popup', elgg_echo('tidypics:tagthisphoto'), $body, array( + 'class' => 'tidypics-tagging-select pam hidden', + 'id' => 'tidypics-tagging-select', +)); |