From ec8bab7784b531299150ddb2c18ede40d5c5df6c Mon Sep 17 00:00:00 2001 From: marijus Date: Tue, 28 Oct 2014 11:56:00 +0100 Subject: change the way tagrm works to allow tag removal on the fly --- mod/photos.php | 2 +- mod/tagrm.php | 91 ++++++++++++++++++++++++++++++++++--------------- view/tpl/photo_view.tpl | 2 +- 3 files changed, 66 insertions(+), 29 deletions(-) diff --git a/mod/photos.php b/mod/photos.php index 26a2bf50b..796613e3d 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -918,7 +918,7 @@ function photos_content(&$a) { foreach($link_item['term'] as $t) { $tags[$cnt] = array(0 => format_term_for_display($t)); if($can_post && ($ph[0]['uid'] == $owner_uid)) { - $tags[$cnt][1] = 'tagrm?f=&item=' . $link_item['id']; + $tags[$cnt][1] = 'tagrm/drop/' . $link_item['id'] . '/' . bin2hex($t['term']); //?f=&item=' . $link_item['id']; $tags[$cnt][2] = t('Remove'); } $cnt ++; diff --git a/mod/tagrm.php b/mod/tagrm.php index 930d449b7..38787cb0b 100644 --- a/mod/tagrm.php +++ b/mod/tagrm.php @@ -52,53 +52,90 @@ function tagrm_post(&$a) { function tagrm_content(&$a) { - $o = ''; - if(! local_user()) { goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']); // NOTREACHED } - $item = intval($_GET['item']); - if(! $item) { + // remove tag on the fly if item and tag are provided + if((argc() == 4) && (argv(1) === 'drop') && intval(argv(2))) { + + $item = intval(argv(2)); + $tag = argv(3); + + $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($item), + intval(local_user()) + ); + + if(! $r) + goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']); + + $r = fetch_post_tags($r,true); + + $item = $r[0]; + + $new_tags = array(); + + if($item['term']) { + for($x = 0; $x < count($item['term']); $x ++) { + if($item['term'][$x]['term'] !== hex2bin($tag)) + $new_tags[] = $item['term'][$x]; + } + } + + if($new_tags) + $item['term'] = $new_tags; + else + unset($item['term']); + + item_store_update($item); + + info( t('Tag removed') . EOL ); goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']); - // NOTREACHED + } + //if we got only the item print a list of tags to select + if((argc() == 3) && (argv(1) === 'drop') && intval(argv(2))) { - $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($item), - intval(local_user()) - ); + $o = ''; + $item = intval(argv(2)); - if(! $r) - goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']); + $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($item), + intval(local_user()) + ); - $r = fetch_post_tags($r,true); + if(! $r) + goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']); + $r = fetch_post_tags($r,true); - if(! count($r[0]['term'])) - goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']); + if(! count($r[0]['term'])) + goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']); - $o .= '

' . t('Remove Item Tag') . '

'; + $o .= '

' . t('Remove Item Tag') . '

'; - $o .= '

' . t('Select a tag to remove: ') . '

'; + $o .= '

' . t('Select a tag to remove: ') . '

'; - $o .= '
'; - $o .= ''; - $o .= '
'; - $o .= ''; - $o .= ''; - $o .= ''; + return $o; - return $o; + } } diff --git a/view/tpl/photo_view.tpl b/view/tpl/photo_view.tpl index 54e15de74..c79cd7d56 100755 --- a/view/tpl/photo_view.tpl +++ b/view/tpl/photo_view.tpl @@ -85,7 +85,7 @@
{{$tag_hdr}} {{foreach $tags as $t}} - {{$t.0}}{{if $edit}}  {{/if}} + {{$t.0}}{{if $edit}}  {{/if}} {{/foreach}}
{{/if}} -- cgit v1.2.3