make chat honour the pause key (but we still need to ping the server to maintain the in_room status), also the recent change to pull css out of the template file used classes instead of ids so none of the styles were sticking

This commit is contained in:
friendica 2014-02-02 15:50:07 -08:00
parent 02e4527de6
commit 67899677db
3 changed files with 55 additions and 51 deletions

View File

@ -56,6 +56,7 @@ function chatsvc_content(&$a) {
$status = strip_tags($_REQUEST['status']); $status = strip_tags($_REQUEST['status']);
$room_id = intval($a->data['chat']['room_id']); $room_id = intval($a->data['chat']['room_id']);
$stopped = ((x($_REQUEST,'stopped') && intval($_REQUEST['stopped'])) ? true : false);
if($status && $room_id) { if($status && $room_id) {
@ -74,58 +75,60 @@ function chatsvc_content(&$a) {
goaway(z_root() . '/chat/' . $x[0]['channel_address'] . '/' . $room_id); goaway(z_root() . '/chat/' . $x[0]['channel_address'] . '/' . $room_id);
} }
if(! $stopped) {
$lastseen = intval($_REQUEST['last']); $lastseen = intval($_REQUEST['last']);
$ret = array('success' => false); $ret = array('success' => false);
$sql_extra = permissions_sql($a->data['chat']['uid']); $sql_extra = permissions_sql($a->data['chat']['uid']);
$r = q("select * from chatroom where cr_uid = %d and cr_id = %d $sql_extra", $r = q("select * from chatroom where cr_uid = %d and cr_id = %d $sql_extra",
intval($a->data['chat']['uid']), intval($a->data['chat']['uid']),
intval($a->data['chat']['room_id']) intval($a->data['chat']['room_id'])
); );
if(! $r) if(! $r)
json_return_and_die($ret); json_return_and_die($ret);
$inroom = array(); $inroom = array();
$r = q("select * from chatpresence left join xchan on xchan_hash = cp_xchan where cp_room = %d order by xchan_name", $r = q("select * from chatpresence left join xchan on xchan_hash = cp_xchan where cp_room = %d order by xchan_name",
intval($a->data['chat']['room_id']) intval($a->data['chat']['room_id'])
); );
if($r) { if($r) {
foreach($r as $rr) { foreach($r as $rr) {
switch($rr['cp_status']) { switch($rr['cp_status']) {
case 'away': case 'away':
$status = t('Away'); $status = t('Away');
break; break;
case 'online': case 'online':
default: default:
$status = t('Online'); $status = t('Online');
break; break;
}
$inroom[] = array('img' => zid($rr['xchan_photo_m']), 'img_type' => $rr['xchan_photo_mimetype'],'name' => $rr['xchan_name'], status => $status);
} }
$inroom[] = array('img' => zid($rr['xchan_photo_m']), 'img_type' => $rr['xchan_photo_mimetype'],'name' => $rr['xchan_name'], status => $status);
} }
}
$chats = array(); $chats = array();
$r = q("select * from chat left join xchan on chat_xchan = xchan_hash where chat_room = %d and chat_id > %d", $r = q("select * from chat left join xchan on chat_xchan = xchan_hash where chat_room = %d and chat_id > %d",
intval($a->data['chat']['room_id']), intval($a->data['chat']['room_id']),
intval($lastseen) intval($lastseen)
); );
if($r) { if($r) {
foreach($r as $rr) { foreach($r as $rr) {
$chats[] = array( $chats[] = array(
'id' => $rr['chat_id'], 'id' => $rr['chat_id'],
'img' => zid($rr['xchan_photo_m']), 'img' => zid($rr['xchan_photo_m']),
'img_type' => $rr['xchan_photo_mimetype'], 'img_type' => $rr['xchan_photo_mimetype'],
'name' => $rr['xchan_name'], 'name' => $rr['xchan_name'],
'isotime' => datetime_convert('UTC', date_default_timezone_get(), $rr['created'], 'c'), 'isotime' => datetime_convert('UTC', date_default_timezone_get(), $rr['created'], 'c'),
'localtime' => datetime_convert('UTC', date_default_timezone_get(), $rr['created'], 'r'), 'localtime' => datetime_convert('UTC', date_default_timezone_get(), $rr['created'], 'r'),
'text' => smilies(bbcode($rr['chat_text'])) 'text' => smilies(bbcode($rr['chat_text']))
); );
}
} }
} }
@ -137,9 +140,10 @@ function chatsvc_content(&$a) {
); );
$ret['success'] = true; $ret['success'] = true;
$ret['inroom'] = $inroom; if(! $stopped) {
$ret['chats'] = $chats; $ret['inroom'] = $inroom;
$ret['chats'] = $chats;
}
json_return_and_die($ret); json_return_and_die($ret);
} }

View File

@ -1,23 +1,23 @@
.chatContainer { #chatContainer {
height: 100%; height: 100%;
width: 100%; width: 100%;
} }
.chatTopBar { #chatTopBar {
float: left; float: left;
height: 400px; height: 400px;
width: 650px; width: 650px;
overflow-y: auto; overflow-y: auto;
} }
.chatUsers { #chatUsers {
float: right; float: right;
width: 120px; width: 120px;
height: 100%; height: 100%;
border: 1px solid #000; border: 1px solid #000;
} }
.chatBottomBar { #chatBottomBar {
position: relative; position: relative;
bottom: 0; bottom: 0;
height: 150px; height: 150px;

View File

@ -47,8 +47,8 @@ $('#chat-form').submit(function(ev) {
function load_chats() { function load_chats() {
$.get("chatsvc?f=&room_id=" + room_id + '&last=' + last_chat,function(data) { $.get("chatsvc?f=&room_id=" + room_id + '&last=' + last_chat + ((stopped) ? '&stopped=1' : ''),function(data) {
if(data.success) { if(data.success && (! stopped)) {
update_inroom(data.inroom); update_inroom(data.inroom);
update_chats(data.chats); update_chats(data.chats);
} }