From dda51954185ef5a1801ef2b9a2b99cb796399a91 Mon Sep 17 00:00:00 2001 From: Mike Macgirvin Date: Wed, 29 Sep 2010 22:11:26 -0700 Subject: [PATCH] show members of locked conversations --- include/main.js | 51 +++++++++++++++++++++++++-- include/nav.php | 2 ++ index.php | 3 +- mod/display.php | 3 +- mod/lockview.php | 67 ++++++++++++++++++++++++++++++++++++ mod/network.php | 4 +-- mod/profile.php | 5 +-- view/theme/default/style.css | 13 +++++++ 8 files changed, 135 insertions(+), 13 deletions(-) create mode 100644 mod/lockview.php diff --git a/include/main.js b/include/main.js index fcb6677d32..6d743c4f49 100644 --- a/include/main.js +++ b/include/main.js @@ -135,9 +135,9 @@ $(node).css('height',16); } - // Since ajax is asynchronous, we will give a few seconds for - // the first ajax call (setting like/dislike), then run the - // updater to pick up any changes and display on the page. + // Since our ajax calls are asynchronous, we will give a few + // seconds for the first ajax call (setting like/dislike), then + // run the updater to pick up any changes and display on the page. // The updater will turn any rotators off when it's done. // This function will have returned long before any of these // events have completed and therefore there won't be any @@ -151,3 +151,48 @@ if(timer) clearTimeout(timer); timer = setTimeout(NavUpdate,3000); } + + function getPosition(e) { + e = e || window.event; + var cursor = {x:0, y:0}; + if ( e.pageX > 0 || e.pageY > 0 ) { + cursor.x = e.pageX; + cursor.y = e.pageY; + } + else { + if( e.clientX > 0 || e.clientY > 0 ) { + cursor.x = e.clientX; + cursor.y = e.clientY; + } + else { + if( e.x > 0 || e.y > 0 ) { + cursor.x = e.x; + cursor.y = e.y; + } + } + } + return cursor; + } + + var lockvisible = false; + + function lockview(event,id) { + if(lockvisible) { + lockviewhide(); + } + else { + lockvisible = true; + $.get('lockview/' + id, function(data) { + cursor = getPosition(event); + $('#panel').html(data); + $('#panel').css({ 'left': cursor.x + 5 , 'top': cursor.y + 5}); + $('#panel').show(); + }); + } + } + + function lockviewhide() { + lockvisible = false; + $('#panel').hide(); + } + diff --git a/include/nav.php b/include/nav.php index 7f6aea17f4..48b935aae3 100644 --- a/include/nav.php +++ b/include/nav.php @@ -1,5 +1,7 @@ page['nav'] .= '' ; + if(x($_SESSION['uid'])) { $a->page['nav'] .= '' . t('Logout') . "\r\n"; } diff --git a/index.php b/index.php index 898a1c37a3..f86fbe1384 100644 --- a/index.php +++ b/index.php @@ -86,7 +86,8 @@ if(x($_SESSION,'sysmsg')) { // Feel free to comment out this line on production sites. $a->page['content'] .= $debug_text; -$a->page['content'] .= '
'; + +$a->page['content'] .= '
'; // build page diff --git a/mod/display.php b/mod/display.php index d0bbf54bf0..451b9d6443 100644 --- a/mod/display.php +++ b/mod/display.php @@ -151,10 +151,9 @@ function display_content(&$a) { $lock = (($item['uid'] == get_uid()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])) - ? '
Private Message
' + ? '
' . t('Private Message') . '
' : '
'); - if(can_write_wall($a,$a->profile['uid'])) { if($item['last-child']) { $comment = replace_macros($cmnt_tpl,array( diff --git a/mod/lockview.php b/mod/lockview.php new file mode 100644 index 0000000000..b8f4318df1 --- /dev/null +++ b/mod/lockview.php @@ -0,0 +1,67 @@ +argc > 1) ? intval($a->argv[1]) : 0); + if(! $item_id) + killme(); + + $r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1", + intval($item_id) + ); + if(! count($r)) + killme(); + $item = $r[0]; + if($item['uid'] != local_user()) + killme(); + + + $allowed_users = expand_acl($item['allow_cid']); + $allowed_groups = expand_acl($item['allow_gid']); + $deny_users = expand_acl($item['deny_cid']); + $deny_groups = expand_acl($item['deny_gid']); + + $o = t('Visible to:') . '
'; + $l = array(); + + if(count($allowed_groups)) { + $r = q("SELECT `name` FROM `group` WHERE `id` IN ( %s )", + dbesc(implode(', ', $allowed_groups)) + ); + if(count($r)) + foreach($r as $rr) + $l[] = '' . $rr['name'] . ''; + } + if(count($allowed_users)) { + $r = q("SELECT `name` FROM `contact` WHERE `id` IN ( %s )", + dbesc(implode(', ',$allowed_users)) + ); + if(count($r)) + foreach($r as $rr) + $l[] = $rr['name']; + + } + + if(count($deny_groups)) { + $r = q("SELECT `name` FROM `group` WHERE `id` IN ( %s )", + dbesc(implode(', ', $deny_groups)) + ); + if(count($r)) + foreach($r as $rr) + $l[] = '' . $rr['name'] . ''; + } + if(count($deny_users)) { + $r = q("SELECT `name` FROM `contact` WHERE `id` IN ( %s )", + dbesc(implode(', ',$deny_users)) + ); + if(count($r)) + foreach($r as $rr) + $l[] = '' . $rr['name'] . ''; + + } + + echo $o . implode(', ', $l); + killme(); + +} diff --git a/mod/network.php b/mod/network.php index b0daecac43..ac5664b4fc 100644 --- a/mod/network.php +++ b/mod/network.php @@ -173,13 +173,11 @@ function network_content(&$a, $update = 0) { if((($item['verb'] == ACTIVITY_LIKE) || ($item['verb'] == ACTIVITY_DISLIKE)) && ($item['id'] != $item['parent'])) continue; - $lock = (($item['uid'] == get_uid()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])) - ? '
Private Message
' + ? '
' . t('Private Message') . '
' : '
'); - // Top-level wall post not written by the wall owner (wall-to-wall) // First figure out who owns it. diff --git a/mod/profile.php b/mod/profile.php index bf9c0f7583..de0ae5745a 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -309,12 +309,9 @@ function profile_content(&$a, $update = 0) { $lock = (($item['uid'] == get_uid()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])) - ? '
Private Message
' + ? '
' . t('Private Message') . '
' : '
'); - - - if(can_write_wall($a,$a->profile['profile_uid'])) { if($item['id'] == $item['parent']) { $likebuttons = replace_macros($like_tpl,array('$id' => $item['id'])); diff --git a/view/theme/default/style.css b/view/theme/default/style.css index 90bd3f8c22..bd147131cd 100644 --- a/view/theme/default/style.css +++ b/view/theme/default/style.css @@ -16,6 +16,9 @@ a:hover { margin-top: 15px; margin-bottom: 15px; } +.lockview { + cursor: pointer; +} .fakelink:hover { color: #0000FF; @@ -46,6 +49,16 @@ img { top: 12px; left: 42%; } + +#panel { + background-color: ivory; + position: absolute; + z-index: 2; + width: 30%; + padding: 25px; + border: 1px solid #444; +} + code { font-family: monospace; white-space: pre;