chatroom management front-end stuff

This commit is contained in:
friendica 2014-01-29 21:29:48 -08:00
parent 7b60978262
commit 080928f214
5 changed files with 119 additions and 1 deletions

View File

@ -587,4 +587,5 @@ function widget_chatroom_list($arr) {
'$nickname' => $channel['channel_address'],
'$items' => $r,
));
}
}

View File

@ -36,6 +36,46 @@ function chat_init(&$a) {
}
function chat_post(&$a) {
if($_POST['room_name'])
$room = strip_tags(trim($_POST['room_name']));
if((! $room) || (! local_user()))
return;
$channel = $a->get_channel();
if($_POST['action'] === 'drop') {
chatroom_destroy($channel,array('cr_name' => $room));
goaway(z_root() . '/chat/' . $channel['channel_address']);
}
$arr = array('name' => $room);
$arr['allow_gid'] = perms2str($_REQUEST['group_allow']);
$arr['allow_cid'] = perms2str($_REQUEST['contact_allow']);
$arr['deny_gid'] = perms2str($_REQUEST['group_deny']);
$arr['deny_cid'] = perms2str($_REQUEST['contact_deny']);
chatroom_create($channel,$arr);
$x = q("select cr_id from chatroom where cr_name = '%s' and cr_uid = %d limit 1",
dbesc($room),
intval(local_user())
);
if($x)
goaway(z_root() . '/chat/' . $channel['channel_address'] . '/' . $x[0]['cr_id']);
// that failed. Try again perhaps?
goaway(z_root() . '/chat/' . $channel['channel_address'] . '/new');
}
function chat_content(&$a) {
@ -62,11 +102,44 @@ function chat_content(&$a) {
if(! $x)
return;
$o = replace_macros(get_markup_template('chat.tpl'),array(
'$room_name' => '', // should we get this from the API?
'$room_id' => $room_id,
'$submit' => t('Submit')
));
return $o;
}
if(local_user() && argc() > 2 && argv(2) === 'new') {
$channel = $a->get_channel();
$channel_acl = array(
'allow_cid' => $channel['channel_allow_cid'],
'allow_gid' => $channel['channel_allow_gid'],
'deny_cid' => $channel['channel_deny_cid'],
'deny_gid' => $channel['channel_deny_gid']
);
require_once('include/acl_selectors.php');
$o = replace_macros(get_markup_template('chatroom_new.tpl'),array(
'$header' => t('New Chatroom'),
'$name' => array('room_name',t('Chatroom Name'),'', ''),
'$acl' => populate_acl($channel_acl),
'$submit' => t('Submit')
));
return $o;
}
require_once('include/widgets.php');
return widget_chatroom_list(array());

16
view/js/mod_chat.js Normal file
View File

@ -0,0 +1,16 @@
$(document).ready(function() {
$('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
var selstr;
$('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
selstr = $(this).text();
$('#jot-perms-icon').removeClass('unlock').addClass('lock');
$('#jot-public').hide();
});
if(selstr == null) {
$('#jot-perms-icon').removeClass('lock').addClass('unlock');
$('#jot-public').show();
}
}).trigger('change');
});

View File

@ -0,0 +1,16 @@
$(document).ready(function() {
$('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
var selstr;
$('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
selstr = $(this).text();
$('#jot-perms-icon').removeClass('unlock').addClass('lock');
$('#jot-public').hide();
});
if(selstr == null) {
$('#jot-perms-icon').removeClass('lock').addClass('unlock');
$('#jot-public').show();
}
}).trigger('change');
});

12
view/tpl/chatroom_new.tpl Normal file
View File

@ -0,0 +1,12 @@
<h1>{{$header}}</h1>
<form action="chat" method="post" >
{{include file="field_input.tpl" field=$name}}
<br />
<br />
{{$acl}}
<div class="clear"></div>
<input type="submit" name="submit" value="{{$submit}}" />
</form>