From aede006970fb9124161b4732b9f44002a35d17ef Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 4 Feb 2014 17:12:13 -0800 Subject: bookmarks - mop up and go home --- include/ItemObject.php | 10 ++++++++++ include/bookmarks.php | 2 +- include/conversation.php | 8 ++++++++ include/menu.php | 2 +- mod/bookmarks.php | 34 ++++++++++++++++++++++++++++++++++ view/js/mod_connedit.js | 2 +- view/js/mod_settings.js | 2 +- view/tpl/conv_item.tpl | 3 +++ view/tpl/jot-header.tpl | 8 +++++++- 9 files changed, 66 insertions(+), 5 deletions(-) diff --git a/include/ItemObject.php b/include/ItemObject.php index e9a0b65c0..9b1a6fbcd 100644 --- a/include/ItemObject.php +++ b/include/ItemObject.php @@ -171,6 +171,15 @@ class Item extends BaseObject { ); } + $has_bookmarks = false; + if(is_array($item['term'])) { + foreach($item['term'] as $t) { + if($t['type'] == TERM_BOOKMARK) + $has_bookmarks = true; + } + } + + if($this->is_commentable()) { $like = array( t("I like this \x28toggle\x29"), t("like")); $dislike = array( t("I don't like this \x28toggle\x29"), t("dislike")); @@ -237,6 +246,7 @@ class Item extends BaseObject { 'star' => ((feature_enabled($conv->get_profile_owner(),'star_posts')) ? $star : ''), 'tagger' => ((feature_enabled($conv->get_profile_owner(),'commtag')) ? $tagger : ''), 'filer' => ((feature_enabled($conv->get_profile_owner(),'filing')) ? $filer : ''), + 'bookmark' => (($conv->get_profile_owner() == local_user() && $has_bookmarks) ? t('Bookmark Links') : ''), 'drop' => $drop, 'multidrop' => ((feature_enabled($conv->get_profile_owner(),'multi_delete')) ? $multidrop : ''), // end toolbar buttons diff --git a/include/bookmarks.php b/include/bookmarks.php index 62ec9fcab..3ca8ee1c1 100644 --- a/include/bookmarks.php +++ b/include/bookmarks.php @@ -29,7 +29,7 @@ function bookmark_add($channel,$sender,$taxonomy,$private) { $arr = array(); $arr['menu_name'] = substr($sender['xchan_hash'],0,16) . ' ' . $sender['xchan_name']; $arr['menu_desc'] = sprintf( t('%1$s\'s bookmarks'), $sender['xchan_name']); - $arr['menu_flags'] = MENU_SYSTEM|MENU_BOOKMARK; + $arr['menu_flags'] = (($sender['xchan_hash'] === $channel['channel_hash']) ? MENU_BOOKMARK : MENU_SYSTEM|MENU_BOOKMARK); $arr['menu_channel_id'] = $channel_id; $x = menu_list($arr['menu_channel_id'],$arr['menu_name'],$arr['menu_flags']); diff --git a/include/conversation.php b/include/conversation.php index 316bc1612..633435871 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1496,6 +1496,14 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){ 'title' => t('Events and Calendar'), 'id' => 'events-tab', ); + + $tabs[] = array( + 'label' => t('Bookmarks'), + 'url' => $a->get_baseurl() . '/bookmarks', + 'sel' => ((argv(0) == 'bookmarks') ? 'active' : ''), + 'title' => t('Saved Bookmarks'), + 'id' => 'bookmarks-tab', + ); } if($is_owner && feature_enabled($a->profile['profile_uid'],'webpages')) { diff --git a/include/menu.php b/include/menu.php index e5bd4a680..105e4216b 100644 --- a/include/menu.php +++ b/include/menu.php @@ -110,7 +110,7 @@ function menu_create($arr) { function menu_list($channel_id, $name = '', $flags = 0) { $sel_options = ''; - $sel_options .= (($name) ? " and name = '" . protect_sprintf(dbesc($name)) . "' " : ''); + $sel_options .= (($name) ? " and menu_name = '" . protect_sprintf(dbesc($name)) . "' " : ''); $sel_options .= (($flags) ? " and menu_flags = " . intval($flags) . " " : ''); $r = q("select * from menu where menu_channel_id = %d $sel_options order by menu_name", diff --git a/mod/bookmarks.php b/mod/bookmarks.php index 25bf39a7a..fe5ec1e19 100644 --- a/mod/bookmarks.php +++ b/mod/bookmarks.php @@ -1,5 +1,39 @@ get_channel(); + + $i = q("select * from item where id = %d and uid = %d limit 1", + intval($item_id), + intval(local_user()) + ); + if(! $i) + return; + + $i = fetch_post_tags($i); + + $item = $i[0]; + + $terms = get_terms_oftype($item['term'],TERM_BOOKMARK); + + if($terms && (! $i[0]['item_restrict'])) { + require_once('include/bookmarks.php'); + require_once('include/Contact.php'); + $s = channelx_by_hash($i[0]['author_xchan']); + foreach($terms as $t) { + bookmark_add($u,$s[0],$t,$i[0]['item_private']); + notice( t('Bookmark(s) added') . EOL); + } + } + killme(); +} + function bookmarks_content(&$a) { if(! local_user()) { notice( t('Permission denied.') . EOL); diff --git a/view/js/mod_connedit.js b/view/js/mod_connedit.js index 6bb39fb7a..7a33952dc 100644 --- a/view/js/mod_connedit.js +++ b/view/js/mod_connedit.js @@ -17,7 +17,7 @@ function connectFullShare() { $('#me_id_perms_chat').attr('checked','checked'); $('#me_id_perms_view_storage').attr('checked','checked'); $('#me_id_perms_republish').attr('checked','checked'); - $('#me_id_perms_bookmark').attr('checked','checked'); + } function connectCautiousShare() { diff --git a/view/js/mod_settings.js b/view/js/mod_settings.js index 7ede7fb73..16101db57 100644 --- a/view/js/mod_settings.js +++ b/view/js/mod_settings.js @@ -66,7 +66,7 @@ function channel_privacy_macro(n) { $('#id_write_pages option').eq(1).attr('selected','selected'); $('#id_delegate option').eq(0).attr('selected','selected'); $('#id_republish option').eq(0).attr('selected','selected'); - $('#id_bookmark option').eq(0).attr('selected','selected'); + $('#id_bookmark option').eq(1).attr('selected','selected'); $('#id_profile_in_directory_onoff .off').removeClass('hidden'); $('#id_profile_in_directory_onoff .on').addClass('hidden'); $('#id_profile_in_directory').val(0); diff --git a/view/tpl/conv_item.tpl b/view/tpl/conv_item.tpl index 50a243ff4..869692bfa 100755 --- a/view/tpl/conv_item.tpl +++ b/view/tpl/conv_item.tpl @@ -85,6 +85,9 @@ {{/if}} {{if $item.filer}} + {{/if}} + {{if $item.bookmark}} + {{/if}}
diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl index 878e1e7da..80421d552 100755 --- a/view/tpl/jot-header.tpl +++ b/view/tpl/jot-header.tpl @@ -185,7 +185,6 @@ function enableOnUser(){ } } - function jotGetLocation() { reply = prompt("{{$whereareu}}", $('#jot-location').val()); if(reply && reply.length) { @@ -295,6 +294,13 @@ function enableOnUser(){ } + function itemBookmark(id) { + $.get('{{$baseurl}}/bookmarks?f=&item=' + id); + if(timer) clearTimeout(timer); + timer = setTimeout(NavUpdate,1000); + } + + function jotClearLocation() { $('#jot-coord').val(''); $('#profile-nolocation-wrapper').hide(); -- cgit v1.2.3