aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/chat.php2
-rw-r--r--include/nav.php4
-rw-r--r--include/widgets.php15
-rw-r--r--mod/chat.php48
-rw-r--r--mod/lockview.php30
-rw-r--r--view/css/mod_chat.css23
-rw-r--r--view/js/mod_chat.js2
-rw-r--r--view/pdl/mod_chat.pdl3
-rw-r--r--view/theme/redbasic/css/style.css1
-rw-r--r--view/tpl/chat.tpl2
-rw-r--r--view/tpl/chatroom_new.tpl24
-rw-r--r--view/tpl/chatroomlist.tpl16
-rw-r--r--view/tpl/chatrooms.tpl47
13 files changed, 142 insertions, 75 deletions
diff --git a/include/chat.php b/include/chat.php
index 81c5c5d62..8a5970cca 100644
--- a/include/chat.php
+++ b/include/chat.php
@@ -202,7 +202,7 @@ function chatroom_list($uid) {
require_once('include/security.php');
$sql_extra = permissions_sql($uid);
- $r = q("select cr_name, cr_id, count(cp_id) as cr_inroom from chatroom left join chatpresence on cr_id = cp_room where cr_uid = %d $sql_extra group by cr_name, cr_id order by cr_name",
+ $r = q("select allow_cid, allow_gid, deny_cid, deny_gid, cr_name, cr_id, count(cp_id) as cr_inroom from chatroom left join chatpresence on cr_id = cp_room where cr_uid = %d $sql_extra group by cr_name, cr_id order by cr_name",
intval($uid)
);
diff --git a/include/nav.php b/include/nav.php
index 5f630745c..4e9a8ab19 100644
--- a/include/nav.php
+++ b/include/nav.php
@@ -92,10 +92,8 @@ EOT;
$nav['usermenu'][] = Array('photos/' . $channel['channel_address'], t('Photos'), "", t('Your photos'),'photos_nav_btn');
$nav['usermenu'][] = Array('cloud/' . $channel['channel_address'],t('Files'),"",t('Your files'),'cloud_nav_btn');
- require_once('include/chat.php');
- $has_chats = chatroom_list_count(local_channel());
if(! UNO)
- $nav['usermenu'][] = Array('chat/' . $channel['channel_address'] . (($has_chats) ? '' : '/new'), t('Chat'),"",t('Your chatrooms'),'chat_nav_btn');
+ $nav['usermenu'][] = Array('chat/' . $channel['channel_address'], t('Chat'),"",t('Your chatrooms'),'chat_nav_btn');
require_once('include/menu.php');
diff --git a/include/widgets.php b/include/widgets.php
index ac0b6a84f..2aa3dccf1 100644
--- a/include/widgets.php
+++ b/include/widgets.php
@@ -797,12 +797,15 @@ function widget_chatroom_list($arr) {
require_once("include/chat.php");
$r = chatroom_list($a->profile['profile_uid']);
- return replace_macros(get_markup_template('chatroomlist.tpl'), array(
- '$header' => t('Chat Rooms'),
- '$baseurl' => z_root(),
- '$nickname' => $a->profile['channel_address'],
- '$items' => $r,
- ));
+
+ if($r) {
+ return replace_macros(get_markup_template('chatroomlist.tpl'), array(
+ '$header' => t('Chat Rooms'),
+ '$baseurl' => z_root(),
+ '$nickname' => $a->profile['channel_address'],
+ '$items' => $r,
+ ));
+ }
}
function widget_bookmarkedchats($arr) {
diff --git a/mod/chat.php b/mod/chat.php
index f219bde73..6c0a61880 100644
--- a/mod/chat.php
+++ b/mod/chat.php
@@ -194,42 +194,38 @@ function chat_content(&$a) {
}
+ require_once('include/conversation.php');
+ $o = profile_tabs($a,((local_channel() && local_channel() == $a->profile['profile_uid']) ? true : false),$a->profile['channel_address']);
+ $acl = new Zotlabs\Access\AccessList($channel);
+ $channel_acl = $acl->get();
- if(local_channel() && argc() > 2 && argv(2) === 'new') {
-
- $acl = new Zotlabs\Access\AccessList($channel);
- $channel_acl = $acl->get();
-
- 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'),'', ''),
- '$chat_expire' => array('chat_expire',t('Expiration of chats (minutes)'),120,''),
- '$permissions' => t('Permissions'),
- '$acl' => populate_acl($channel_acl,false),
- '$submit' => t('Submit')
- ));
- return $o;
- }
-
-
+ $lockstate = (($channel_acl['allow_cid'] || $channel_acl['allow_gid'] || $channel_acl['deny_cid'] || $channel_acl['deny_gid']) ? 'lock' : 'unlock');
+ require_once('include/acl_selectors.php');
- require_once('include/conversation.php');
+ $chatroom_new = replace_macros(get_markup_template('chatroom_new.tpl'),array(
+ '$header' => t('New Chatroom'),
+ '$name' => array('room_name',t('Chatroom name'),'', ''),
+ '$chat_expire' => array('chat_expire',t('Expiration of chats (minutes)'),120,''),
+ '$permissions' => t('Permissions'),
+ '$acl' => populate_acl($channel_acl,false),
+ '$lockstate' => $lockstate,
+ '$submit' => t('Submit')
- $o = profile_tabs($a,((local_channel() && local_channel() == $a->profile['profile_uid']) ? true : false),$a->profile['channel_address']);
+ ));
- require_once('include/widgets.php');
+ $rooms = chatroom_list($a->profile['profile_uid']);
$o .= replace_macros(get_markup_template('chatrooms.tpl'), array(
'$header' => sprintf( t('%1$s\'s Chatrooms'), $a->profile['name']),
'$baseurl' => z_root(),
- '$nickname' => $channel['channel_address'],
- '$rooms' => widget_chatroom_list(array()),
- '$newroom' => t('New Chatroom'),
- '$is_owner' => ((local_channel() && local_channel() == $a->profile['profile_uid']) ? 1 : 0)
+ '$nickname' => $a->profile['channel_address'],
+ '$rooms' => $rooms,
+ '$norooms' => t('No chatrooms available'),
+ '$newroom' => t('Create New'),
+ '$is_owner' => ((local_channel() && local_channel() == $a->profile['profile_uid']) ? 1 : 0),
+ '$chatroom_new' => $chatroom_new
));
return $o;
diff --git a/mod/lockview.php b/mod/lockview.php
index 84c16f658..d4a626a11 100644
--- a/mod/lockview.php
+++ b/mod/lockview.php
@@ -14,11 +14,21 @@ function lockview_content(&$a) {
if(! $item_id)
killme();
- if (!in_array($type, array('item','photo','event', 'menu_item')))
+ if (!in_array($type, array('item','photo','event', 'menu_item', 'chatroom')))
killme();
- //we have different naming in in menu_item table
- $id = (($type == 'menu_item') ? 'mitem_id' : 'id');
+ //we have different naming in in menu_item table and chatroom table
+ switch($type) {
+ case 'menu_item':
+ $id = 'mitem_id';
+ break;
+ case 'chatroom':
+ $id = 'cr_id';
+ break;
+ default:
+ $id = 'id';
+ break;
+ }
$r = q("SELECT * FROM %s WHERE $id = %d LIMIT 1",
dbesc($type),
@@ -30,8 +40,18 @@ function lockview_content(&$a) {
$item = $r[0];
- //we have different naming in in menu_item table
- $uid = (($type == 'menu_item') ? $item['mitem_channel_id'] : $item['uid']);
+ //we have different naming in in menu_item table and chatroom table
+ switch($type) {
+ case 'menu_item':
+ $uid = $item['mitem_channel_id'];
+ break;
+ case 'chatroom':
+ $uid = $item['cr_uid'];
+ break;
+ default:
+ $uid = $item['uid'];
+ break;
+ }
if($uid != local_channel()) {
echo '<li>' . t('Remote privacy information not available.') . '</li>';
diff --git a/view/css/mod_chat.css b/view/css/mod_chat.css
index ded4b0ceb..c59d8d459 100644
--- a/view/css/mod_chat.css
+++ b/view/css/mod_chat.css
@@ -1,3 +1,26 @@
+#chatroom-new {
+ display: none;
+}
+
+#chatrooms-index {
+ width: 100%;
+}
+
+#chatrooms-index th:nth-child(1),
+#chatrooms-index td:nth-child(1){
+ padding: 7px 3px 7px 10px;
+}
+
+#chatrooms-index th:nth-child(3),
+#chatrooms-index td:nth-child(3){
+ padding: 7px 10px 7px 7px;
+}
+
+.chatrooms-index-tool {
+ padding: 7px 10px;
+}
+
+
#chatContainer {
height: 100%;
width: 100%;
diff --git a/view/js/mod_chat.js b/view/js/mod_chat.js
index 6c432742f..0d47e3e77 100644
--- a/view/js/mod_chat.js
+++ b/view/js/mod_chat.js
@@ -15,4 +15,4 @@ $(document).ready(function() {
$('#jot-public').show();
}
}).trigger('change');
-}); \ No newline at end of file
+});
diff --git a/view/pdl/mod_chat.pdl b/view/pdl/mod_chat.pdl
index cdc66dd3d..564199bed 100644
--- a/view/pdl/mod_chat.pdl
+++ b/view/pdl/mod_chat.pdl
@@ -1,5 +1,6 @@
[region=aside]
-[widget=profile][/widget]
+[widget=vcard][/widget]
+[widget=chatroom_list][/widget]
[widget=bookmarkedchats][/widget]
[widget=suggestedchats][/widget]
[/region]
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index 424055fbf..b92fe5afe 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -1510,6 +1510,7 @@ nav .dropdown-menu {
word-wrap: break-word;
}
+.chatroom-index-row:hover td,
.locs-index-row:hover td,
[id^="cloud-index-"]:hover td,
.cloud-index-active {
diff --git a/view/tpl/chat.tpl b/view/tpl/chat.tpl
index 18576fd56..5ea1ae22e 100644
--- a/view/tpl/chat.tpl
+++ b/view/tpl/chat.tpl
@@ -5,7 +5,7 @@
<form id="chat-destroy" method="post" action="chat">
<input type="hidden" name="room_name" value="{{$room_name}}" />
<input type="hidden" name="action" value="drop" />
- <input type="submit" name="submit" value="{{$drop}}" onclick="return confirmDelete();"/>
+ <input type="submit" name="submit" value="{{$drop}}" onclick="return confirmDelete();"/>
</form>
</div>
{{/if}}
diff --git a/view/tpl/chatroom_new.tpl b/view/tpl/chatroom_new.tpl
index c64f21c97..8acff2ff5 100644
--- a/view/tpl/chatroom_new.tpl
+++ b/view/tpl/chatroom_new.tpl
@@ -1,14 +1,12 @@
-<div class="generic-content-wrapper-styled">
-<h1>{{$header}}</h1>
-
-<form action="chat" method="post" >
-{{include file="field_input.tpl" field=$name}}
-{{include file="field_input.tpl" field=$chat_expire}}
-<button id="dbtn-acl" class="btn btn-default" data-toggle="modal" data-target="#aclModal" onclick="return false;" >{{$permissions}}</button>
-{{$acl}}
-<div class="clear"></div>
-<br />
-<br />
-<input id="dbtn-submit" type="submit" name="submit" value="{{$submit}}" />
-</form>
+<div id="chatroom-new" class="section-content-tools-wrapper">
+ <form action="chat" method="post" >
+ {{include file="field_input.tpl" field=$name}}
+ {{include file="field_input.tpl" field=$chat_expire}}
+ {{$acl}}
+ <div class="btn-group pull-right">
+ <button id="dbtn-acl" class="btn btn-default" data-toggle="modal" data-target="#aclModal" title="{{$permissions}}" onclick="return false;" ><i id="jot-perms-icon" class="icon-{{$lockstate}}"></i></button>
+ <button id="dbtn-submit" class="btn btn-primary" type="submit" name="submit" value="{{$submit}}">{{$submit}}</button>
+ </div>
+ <div class="clear"></div>
+ </form>
</div>
diff --git a/view/tpl/chatroomlist.tpl b/view/tpl/chatroomlist.tpl
index 71fec8200..ac0f7cf9b 100644
--- a/view/tpl/chatroomlist.tpl
+++ b/view/tpl/chatroomlist.tpl
@@ -1,11 +1,11 @@
<div class="widget">
-<h3>{{$header}}</h3>
-{{if $items}}
-<table class="chatroomlist">
-{{foreach $items as $item}}
-<tr><td align="left"><a href="{{$baseurl}}/chat/{{$nickname}}/{{$item.cr_id}}">{{$item.cr_name}}</a></td><td align="right">{{$item.cr_inroom}}</td></tr>
-{{/foreach}}
-</table>
-{{/if}}
+ <h3>{{$header}}</h3>
+ {{if $items}}
+ <ul class="nav nav-pills nav-stacked">
+ {{foreach $items as $item}}
+ <li><a href="{{$baseurl}}/chat/{{$nickname}}/{{$item.cr_id}}"><span class="badge pull-right">{{$item.cr_inroom}}</span>{{$item.cr_name}}</a></li>
+ {{/foreach}}
+ </ul>
+ {{/if}}
</div>
diff --git a/view/tpl/chatrooms.tpl b/view/tpl/chatrooms.tpl
index 570aef1c7..c7333efcf 100644
--- a/view/tpl/chatrooms.tpl
+++ b/view/tpl/chatrooms.tpl
@@ -1,12 +1,39 @@
-<div class="generic-content-wrapper-styled">
-<h2>{{$header}}</h2>
-
-{{if $is_owner}}
-<p>
-<span class="btn btn-default"><a href="{{$baseurl}}/chat/{{$nickname}}/new">{{$newroom}}</a></span>
-</p>
-{{/if}}
-
-{{$rooms}}
+<div class="generic-content-wrapper">
+ <div class="section-title-wrapper">
+ {{if $is_owner}}
+ <button type="button" class="btn btn-success btn-xs pull-right" onclick="openClose('chatroom-new');"><i class="icon-plus-sign"></i>&nbsp;{{$newroom}}</button>
+ {{/if}}
+ <h2>{{$header}}</h2>
+ </div>
+ {{if $is_owner}}
+ {{$chatroom_new}}
+ {{/if}}
+ {{if $rooms}}
+ <div class="section-content-wrapper-np">
+ <table id="chatrooms-index">
+ <tr>
+ <th width="98%">name</th>
+ <th width="1%" class="chatrooms-index-tool"></th>
+ <th width="1%"></th>
+ </tr>
+ {{foreach $rooms as $room}}
+ <tr class="chatroom-index-row">
+ <td><a href="{{$baseurl}}/chat/{{$nickname}}/{{$room.cr_id}}">{{$room.cr_name}}</a></td>
+ <td class="chatrooms-index-tool dropdown">
+ {{if $room.allow_cid || $room.allow_gid || $room.deny_cid || $room.deny_gid}}
+ <i class="icon-lock lockview dropdown-toggle" data-toggle="dropdown" onclick="lockview('chatroom',{{$room.cr_id}});"></i>
+ <ul id="panel-{{$room.cr_id}}" class="lockview-panel dropdown-menu"></ul>
+ {{/if}}
+ </td>
+ <td><span class="badge">{{$room.cr_inroom}}</span></td>
+ </tr>
+ {{/foreach}}
+ </table>
+ </div>
+ {{else}}
+ <div class="section-content-wrapper">
+ {{$norooms}}
+ </div>
+ {{/if}}
</div>