mirror of
https://github.com/wbbaddons/Tims-Chat.git
synced 2024-10-31 14:10:08 +00:00
parent
a30a922a64
commit
a2a1a86324
@ -318,8 +318,30 @@ Handle toggling of the toggleable buttons.
|
|||||||
|
|
||||||
do $('#timsChatInput').focus
|
do $('#timsChatInput').focus
|
||||||
|
|
||||||
|
Handle saving of persistent toggleable buttons
|
||||||
|
|
||||||
|
$('.timsChatToggle.persists').click (event) ->
|
||||||
|
do event.preventDefault
|
||||||
|
|
||||||
|
new WCF.Action.Proxy
|
||||||
|
autoSend: true
|
||||||
|
data:
|
||||||
|
actionName: 'updateOption'
|
||||||
|
className: 'chat\\data\\user\\UserAction'
|
||||||
|
parameters:
|
||||||
|
optionName: "chatButton#{$(@).attr('id').replace /^timsChat/, ''}"
|
||||||
|
optionValue: $(@).data 'status'
|
||||||
|
showLoadingOverlay: false
|
||||||
|
suppressErrors: true
|
||||||
|
|
||||||
|
|
||||||
Mark smilies as disabled when they are disabled.
|
Mark smilies as disabled when they are disabled.
|
||||||
|
|
||||||
|
if $('#timsChatSmilies').data('status') is 0
|
||||||
|
$('#smilies').addClass 'invisible'
|
||||||
|
else
|
||||||
|
$('#smilies').removeClass 'invisible'
|
||||||
|
|
||||||
$('#timsChatSmilies').click (event) ->
|
$('#timsChatSmilies').click (event) ->
|
||||||
if $(@).data 'status'
|
if $(@).data 'status'
|
||||||
$('#smilies').removeClass 'invisible'
|
$('#smilies').removeClass 'invisible'
|
||||||
@ -328,11 +350,9 @@ Mark smilies as disabled when they are disabled.
|
|||||||
|
|
||||||
Toggle fullscreen mode.
|
Toggle fullscreen mode.
|
||||||
|
|
||||||
$('#timsChatFullscreen').click (event) ->
|
do ->
|
||||||
# Force dropdowns to reorientate
|
fullscreen = (status = true) ->
|
||||||
$('.dropdownMenu').data 'orientationX', ''
|
if status
|
||||||
|
|
||||||
if $(@).data 'status'
|
|
||||||
messageContainerSize = $('.timsChatMessageContainer').height()
|
messageContainerSize = $('.timsChatMessageContainer').height()
|
||||||
|
|
||||||
$('html').addClass 'fullscreen'
|
$('html').addClass 'fullscreen'
|
||||||
@ -343,6 +363,22 @@ Toggle fullscreen mode.
|
|||||||
$('html').removeClass 'fullscreen'
|
$('html').removeClass 'fullscreen'
|
||||||
do $(window).resize
|
do $(window).resize
|
||||||
|
|
||||||
|
$('#timsChatFullscreen').click (event) ->
|
||||||
|
# Force dropdowns to reorientate
|
||||||
|
$('.dropdownMenu').data 'orientationX', ''
|
||||||
|
|
||||||
|
if $(@).data 'status'
|
||||||
|
fullscreen on
|
||||||
|
else
|
||||||
|
fullscreen off
|
||||||
|
|
||||||
|
Switch to fullscreen mode on mobile devices or if fullscreen is active on boot
|
||||||
|
|
||||||
|
if $('#timsChatFullscreen').data('status') is 1
|
||||||
|
fullscreen on
|
||||||
|
else
|
||||||
|
do $('#timsChatFullscreen').click if WCF.System.Mobile.UX._enabled
|
||||||
|
|
||||||
Toggle checkboxes.
|
Toggle checkboxes.
|
||||||
|
|
||||||
$('#timsChatMark').click (event) ->
|
$('#timsChatMark').click (event) ->
|
||||||
@ -433,12 +469,20 @@ Enable duplicate tab detection.
|
|||||||
Ask for permissions to use Desktop notifications when notifications are activated.
|
Ask for permissions to use Desktop notifications when notifications are activated.
|
||||||
|
|
||||||
if window.Notification?
|
if window.Notification?
|
||||||
$('#timsChatNotify').click (event) ->
|
do ->
|
||||||
return unless $(@).data 'status'
|
askForPermission = ->
|
||||||
unless window.Notification.permission is 'granted'
|
unless window.Notification.permission is 'granted'
|
||||||
window.Notification.requestPermission (permission) ->
|
window.Notification.requestPermission (permission) ->
|
||||||
window.Notification.permission ?= permission
|
window.Notification.permission ?= permission
|
||||||
|
|
||||||
|
if $('#timsChatNotify').data('status') is 1
|
||||||
|
do askForPermission
|
||||||
|
|
||||||
|
$('#timsChatNotify').click (event) ->
|
||||||
|
return unless $(@).data 'status'
|
||||||
|
|
||||||
|
do askForPermission
|
||||||
|
|
||||||
events.newMessage.add notify
|
events.newMessage.add notify
|
||||||
|
|
||||||
Initialize the `PeriodicalExecuter`s
|
Initialize the `PeriodicalExecuter`s
|
||||||
@ -466,10 +510,6 @@ load messages if the appropriate event arrives.
|
|||||||
be.bastelstu.wcf.push.onMessage 'be.bastelstu.chat.join', refreshRoomList
|
be.bastelstu.wcf.push.onMessage 'be.bastelstu.chat.join', refreshRoomList
|
||||||
be.bastelstu.wcf.push.onMessage 'be.bastelstu.chat.leave', refreshRoomList
|
be.bastelstu.wcf.push.onMessage 'be.bastelstu.chat.leave', refreshRoomList
|
||||||
|
|
||||||
Switch to fullscreen mode on mobile devices
|
|
||||||
|
|
||||||
do $('#timsChatFullscreen').click if WCF.System.Mobile.UX._enabled
|
|
||||||
|
|
||||||
Finished! Enable the input now and join the chat.
|
Finished! Enable the input now and join the chat.
|
||||||
|
|
||||||
join roomID
|
join roomID
|
||||||
|
45
file/lib/data/user/UserAction.class.php
Normal file
45
file/lib/data/user/UserAction.class.php
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
namespace chat\data\user;
|
||||||
|
use wcf\system\WCF;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User related chat actions.
|
||||||
|
*
|
||||||
|
* @author Maximilian Mader
|
||||||
|
* @copyright 2010-2014 Tim Düsterhus
|
||||||
|
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
|
||||||
|
* @package be.bastelstu.chat
|
||||||
|
* @subpackage data.user
|
||||||
|
*/
|
||||||
|
class UserAction extends \wcf\data\AbstractDatabaseObjectAction {
|
||||||
|
/**
|
||||||
|
* @see \wcf\data\AbstractDatabaseObjectAction::$className
|
||||||
|
*/
|
||||||
|
protected $className = 'wcf\data\user\UserEditor';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validates updating of chat user options
|
||||||
|
*/
|
||||||
|
public function validateUpdateOption() {
|
||||||
|
$this->readString('optionName');
|
||||||
|
$this->readBoolean('optionValue');
|
||||||
|
|
||||||
|
if (!preg_match('~^chat[A-Z]~', $this->parameters['optionName'])) throw new \wcf\system\exception\UserInputException('optionName');
|
||||||
|
|
||||||
|
$this->optionID = \wcf\data\user\User::getUserOptionID($this->parameters['optionName']);
|
||||||
|
|
||||||
|
if (!$this->optionID) throw new \wcf\system\exception\UserInputException('optionName');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates chat user options
|
||||||
|
*/
|
||||||
|
public function updateOption() {
|
||||||
|
$userAction = new \wcf\data\user\UserAction(array(WCF::getUser()), 'update', array(
|
||||||
|
'options' => array(
|
||||||
|
$this->optionID => $this->parameters['optionValue'] ? 1 : 0
|
||||||
|
)
|
||||||
|
));
|
||||||
|
$userAction->executeAction();
|
||||||
|
}
|
||||||
|
}
|
@ -34,6 +34,7 @@
|
|||||||
<instruction type="pageMenu">pageMenu.xml</instruction>
|
<instruction type="pageMenu">pageMenu.xml</instruction>
|
||||||
<instruction type="aclOption">aclOption.xml</instruction>
|
<instruction type="aclOption">aclOption.xml</instruction>
|
||||||
<instruction type="acpMenu">acpMenu.xml</instruction>
|
<instruction type="acpMenu">acpMenu.xml</instruction>
|
||||||
|
<instruction type="userOption">userOption.xml</instruction>
|
||||||
<instruction type="userGroupOption">userGroupOption.xml</instruction>
|
<instruction type="userGroupOption">userGroupOption.xml</instruction>
|
||||||
<instruction type="eventListener">eventListener.xml</instruction>
|
<instruction type="eventListener">eventListener.xml</instruction>
|
||||||
<instruction type="dashboardBox">dashboardBox.xml</instruction>
|
<instruction type="dashboardBox">dashboardBox.xml</instruction>
|
||||||
|
@ -153,14 +153,14 @@
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a id="timsChatFullscreen" accesskey="f" class="button timsChatToggle jsTooltip" title="{lang}chat.global.fullscreen{/lang}" data-status="0">
|
<a id="timsChatFullscreen" accesskey="f" class="button{if $__wcf->getUser()->chatButtonFullscreen} active{/if} timsChatToggle persists jsTooltip" title="{lang}chat.global.fullscreen{/lang}" data-status="{@$__wcf->getUser()->chatButtonFullscreen}">
|
||||||
<span class="icon icon16 icon-fullscreen"></span>
|
<span class="icon icon16 icon-fullscreen"></span>
|
||||||
<span class="invisible">{lang}chat.global.fullscreen{/lang}</span>
|
<span class="invisible">{lang}chat.global.fullscreen{/lang}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a id="timsChatNotify" accesskey="n" class="button timsChatToggle jsTooltip" title="{lang}chat.global.notify{/lang}" data-status="0">
|
<a id="timsChatNotify" accesskey="n" class="button{if $__wcf->getUser()->chatButtonNotify} active{/if} timsChatToggle persists jsTooltip" title="{lang}chat.global.notify{/lang}" data-status="{@$__wcf->getUser()->chatButtonNotify}">
|
||||||
<span class="icon icon16 icon-bell-alt"></span>
|
<span class="icon icon16 icon-bell-alt"></span>
|
||||||
<span class="invisible">{lang}chat.global.notify{/lang}</span>
|
<span class="invisible">{lang}chat.global.notify{/lang}</span>
|
||||||
</a>
|
</a>
|
||||||
@ -168,7 +168,7 @@
|
|||||||
|
|
||||||
{if MODULE_SMILEY && $smileyCategories|count}
|
{if MODULE_SMILEY && $smileyCategories|count}
|
||||||
<li>
|
<li>
|
||||||
<a id="timsChatSmilies" accesskey="e" class="button{if ENABLE_SMILIES_DEFAULT_VALUE} active{/if} timsChatToggle jsTooltip" title="{lang}chat.global.smilies{/lang}" data-status="{@ENABLE_SMILIES_DEFAULT_VALUE}">
|
<a id="timsChatSmilies" accesskey="e" class="button{if $__wcf->getUser()->chatButtonSmilies} active{/if} timsChatToggle persists jsTooltip" title="{lang}chat.global.smilies{/lang}" data-status="{@$__wcf->getUser()->chatButtonSmilies}">
|
||||||
<span class="icon icon16 icon-smile"></span>
|
<span class="icon icon16 icon-smile"></span>
|
||||||
<span class="invisible">{lang}chat.global.smilies{/lang}</span>
|
<span class="invisible">{lang}chat.global.smilies{/lang}</span>
|
||||||
</a>
|
</a>
|
||||||
|
24
userOption.xml
Normal file
24
userOption.xml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/userOption.xsd">
|
||||||
|
<import>
|
||||||
|
<options>
|
||||||
|
<option name="chatButtonFullscreen">
|
||||||
|
<categoryname>hidden</categoryname>
|
||||||
|
<optiontype>boolean</optiontype>
|
||||||
|
<defaultvalue>0</defaultvalue>
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option name="chatButtonNotify">
|
||||||
|
<categoryname>hidden</categoryname>
|
||||||
|
<optiontype>boolean</optiontype>
|
||||||
|
<defaultvalue>0</defaultvalue>
|
||||||
|
</option>
|
||||||
|
|
||||||
|
<option name="chatButtonSmilies">
|
||||||
|
<categoryname>hidden</categoryname>
|
||||||
|
<optiontype>boolean</optiontype>
|
||||||
|
<defaultvalue>1</defaultvalue>
|
||||||
|
</option>
|
||||||
|
</options>
|
||||||
|
</import>
|
||||||
|
</data>
|
Loading…
Reference in New Issue
Block a user