diff --git a/file/js/be.bastelstu.Chat.litcoffee b/file/js/be.bastelstu.Chat.litcoffee
index 27368ab..a5468c7 100644
--- a/file/js/be.bastelstu.Chat.litcoffee
+++ b/file/js/be.bastelstu.Chat.litcoffee
@@ -84,7 +84,7 @@ exposed by a function if necessary.
Initialize **Tims Chat**. Bind needed DOM events and initialize data structures.
initialized = false
- init = (roomID, config, titleTemplate, messageTemplate, userTemplate, userMenuTemplate) ->
+ init = (roomID, config, titleTemplate, messageTemplate, userTemplate, userMenuTemplate, userInviteDialogTemplate) ->
return false if initialized
initialized = true
@@ -95,6 +95,17 @@ Initialize **Tims Chat**. Bind needed DOM events and initialize data structures.
v.messageTemplate = messageTemplate
v.userTemplate = userTemplate
v.userMenuTemplate = userMenuTemplate
+ v.userInviteDialogTemplate = userInviteDialogTemplate
+ v.userInviteDialogUserListEntryTemplate = new WCF.Template """
+
+
+ -
+
+
+
+ """
console.log 'Initializing'
@@ -246,7 +257,7 @@ The the word the caret is in will be passed to `autocomplete` and replaced if a
toComplete = autocomplete.value.substring lastSpace + 1
nextSpace = toComplete.indexOf ' '
if nextSpace is -1
- afterComplete = '';
+ afterComplete = ''
else
afterComplete = toComplete.substring nextSpace + 1
toComplete = toComplete.substring 0, nextSpace
@@ -361,12 +372,47 @@ Show invite dialog.
data:
actionName: 'prepareInvite'
className: 'chat\\data\\user\\UserAction'
- showLoadingOverlay: true
- suppressErrors: false
success: (data) ->
$('').appendTo 'body' unless $.wcfIsset 'timsChatInviteDialog'
- $('#timsChatInviteDialog').html(data.returnValues.template).wcfDialog
+ timsChatInviteDialog = $ '#timsChatInviteDialog'
+
+ # Remove old event listeners
+ do timsChatInviteDialog.find('#userInviteDialogUsernameInput').off().remove
+
+ timsChatInviteDialog.html v.userInviteDialogTemplate.fetch
+ users: data.returnValues.users
+
+ new WCF.Search.User '#userInviteDialogUsernameInput', (user) ->
+ if $.wcfIsset "userInviteDialogUserID-#{user.objectID}"
+ $("#userInviteDialogUserID-#{user.objectID}").prop 'checked', true
+ else
+ $('#userInviteDialogUserList').append v.userInviteDialogUserListEntryTemplate.fetch
+ user: user
+
+ $('#userInviteDialogUsernameInput').val ""
+ , false, [ WCF.User.username ], false
+
+ $('#userInviteDialogFormSubmit').on 'click', (event) ->
+ checked = $ '#userInviteDialogUserList input[type=checkbox]:checked, #userInviteDialogFollowingList input[type=checkbox]:checked'
+ inviteUserList = [ ]
+
+ checked.each (k, v) -> inviteUserList.push do $(v).val
+
+ if inviteUserList.length
+ new WCF.Action.Proxy
+ autoSend: true
+ data:
+ actionName: 'invite'
+ className: 'chat\\data\\user\\UserAction'
+ parameters:
+ recipients: inviteUserList
+ success: (data) ->
+ do new WCF.System.Notification(WCF.Language.get 'wcf.global.success').show
+
+ $('#timsChatInviteDialog').wcfDialog 'close'
+
+ timsChatInviteDialog.wcfDialog
title: WCF.Language.get 'chat.global.invite'
diff --git a/file/lib/data/user/UserAction.class.php b/file/lib/data/user/UserAction.class.php
index 7153c1d..ad7b847 100644
--- a/file/lib/data/user/UserAction.class.php
+++ b/file/lib/data/user/UserAction.class.php
@@ -33,12 +33,16 @@ public function prepareInvite() {
$followingList->readObjects();
$users = $followingList->getObjects();
- WCF::getTPL()->assign(array(
- 'users' => $users
- ));
+ $json = array();
+ foreach ($users as $user) {
+ $json[] = array(
+ 'userID' => $user->userID,
+ 'username' => $user->username
+ );
+ }
return array(
- 'template' => WCF::getTPL()->fetch('userInviteDialog', 'chat')
+ 'users' => $json
);
}
diff --git a/template/chat.tpl b/template/chat.tpl
index d87d259..0d8e9c9 100644
--- a/template/chat.tpl
+++ b/template/chat.tpl
@@ -52,6 +52,7 @@
{capture assign='messageTemplate'}{include application='chat' file='message'}{/capture}
{capture assign='userTemplate'}{include application='chat' file='userListUser'}{/capture}
{capture assign='userMenuTemplate'}{include application='chat' file='userListUserMenu'}{/capture}
+ {capture assign='userInviteDialogTemplate'}{include application='chat' file='userInviteDialog'}{/capture}
var config = {
reloadTime: {@CHAT_RELOADTIME},
@@ -68,7 +69,8 @@
new WCF.Template('{literal}{if $newMessageCount}({#$newMessageCount}) {/if}{$title} - {/literal}{"chat.global.title"|language|encodeJS} - {PAGE_TITLE|language|encodeJS}'),
new WCF.Template('{@$messageTemplate|encodeJS}'),
new WCF.Template('{@$userTemplate|encodeJS}'),
- new WCF.Template('{@$userMenuTemplate|encodeJS}')
+ new WCF.Template('{@$userMenuTemplate|encodeJS}'),
+ new WCF.Template('{@$userInviteDialogTemplate|encodeJS}')
);
{event name='afterInit'}
diff --git a/template/userInviteDialog.tpl b/template/userInviteDialog.tpl
index 4e7e9d3..e373984 100644
--- a/template/userInviteDialog.tpl
+++ b/template/userInviteDialog.tpl
@@ -1,86 +1,39 @@
-
-
+
+{/literal}
\ No newline at end of file