Version 4.0.13.1
This commit is contained in:
1 parent
f9e857d255
commit
c6a86f0d9b
7517 files changed
+597400
-668041
No files matched your search
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"chat": {
|
||||
"logs": {
|
||||
"tab": "community",
|
||||
"controller": "logs",
|
||||
"do": "",
|
||||
"restriction": "logs_manage"
|
||||
},
|
||||
"settings": {
|
||||
"tab": "community",
|
||||
"controller": "settings",
|
||||
"do": "",
|
||||
"restriction": "settings_manage"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"chat": {
|
||||
"settings": {
|
||||
"settings_manage": "settings_manage"
|
||||
},
|
||||
"logs": {
|
||||
"logs_manage": "logs_manage"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"application_title": "Chat",
|
||||
"app_author": "Invision Power Services, Inc.",
|
||||
"app_directory": "chat",
|
||||
"app_protected": 0,
|
||||
"app_website": null,
|
||||
"app_update_check": null
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<emails/>
|
||||
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Friendly URL Structure @todo check 3.x URLs and add alias for any that need redirecting to new 4.x equivalents. See blog entry record for example.
|
||||
*
|
||||
* For each value in the $furl array:
|
||||
* The key should be the "SEO Template" - an identifier which you'll use when displaying a URL.
|
||||
* The value should be an associative array with two or three elements: 'friendly' and 'real', and optionally 'verify':
|
||||
* 'friendly'
|
||||
* The friendly URL to use - encase variables in {curly braces} containing a symbol, followed by the name of the parameter that matches in the "real" URL
|
||||
* The symbol should be # for numbers or @ for strings
|
||||
* For example, if the "real" URL contains id=XXX, where XXX is a number, you should include {#id} somewhere in the friendly URL.
|
||||
* You can also use the tag {?} for the "SEO Title" (that is, any variables that shouldn't be part of the real URL, such as the name of the topipc being viewed).
|
||||
* If you want to support more than one SEO Title, you can give them zero-indexed keys like so: {?0} {?1} {?2}
|
||||
* 'real'
|
||||
* This should be the base of the real URL. You should not include parameters which will be parsed out from the friendly URL.
|
||||
* 'verify'
|
||||
* This should be the name of a class that contains a loadFromUrl() and an url() method. The dynamic URL (i.e. app=core&...) will be passed to loadFromUrl(), and the url()
|
||||
* method will subsequently be called to retrieve the correct URL, ideal with ActiveRecord pattern classes.
|
||||
*
|
||||
* IMPORTANT: Ensure values are listed with the most specific ones first. This is to ensure that non-FURL redirects are done correctly. For example, if you have these FURLs:
|
||||
* /index.php?app=myapp&module=mymodule&controller=mycontroller&do=myaction -> /myfolder/myaction
|
||||
* /index.php?app=myapp&module=mymodule&controller=mycontroller -> /myfolder
|
||||
* They must be provided in that order, otherwise the former will redirec to /myfolder/?do=myaction rather than /myfolder/myaction
|
||||
*/
|
||||
{
|
||||
"topLevel": "chat",
|
||||
"pages": {
|
||||
"chat": {
|
||||
"friendly": "",
|
||||
"real": "app=chat&module=chat&controller=view"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"tabCountLoad": {
|
||||
"type": "C",
|
||||
"class": "\\IPS\\Data\\Store\\Database"
|
||||
},
|
||||
"tabNewWindow": {
|
||||
"type": "C",
|
||||
"class": "\\IPS\\Dispatcher\\Front"
|
||||
},
|
||||
"tabCount": {
|
||||
"type": "C",
|
||||
"class": "\\IPS\\Dispatcher\\Front"
|
||||
}
|
||||
}
|
||||
Whitespace-only changes.
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<language>
|
||||
<app key="chat" version="100045">
|
||||
<word key="__app_chat" js="0">Chat</word>
|
||||
<word key="frontnavigation_chat" js="0">Chat</word>
|
||||
<word key="chat_title" js="0">Chat</word>
|
||||
<word key="module__chat_chat" js="0">Chat</word>
|
||||
<word key="menu__chat_chat" js="0">Chat</word>
|
||||
<word key="time_pm" js="0">PM</word>
|
||||
<word key="time_am" js="0">AM</word>
|
||||
<word key="chat_insert_emoticon" js="0">Insert Emoticon</word>
|
||||
<word key="no_users_chatting" js="0">0 users chatting</word>
|
||||
<word key="menu__chat_chat_settings" js="0">Settings</word>
|
||||
<word key="menu__chat_chat_logs" js="0">Logs</word>
|
||||
<word key="r__logs" js="0">Logs</word>
|
||||
<word key="r__logs_manage" js="0">Can view chat logs?</word>
|
||||
<word key="chat_banned" js="0">Can access chat?</word>
|
||||
<word key="chat_access" js="0">Can access chat?</word>
|
||||
<word key="chat_moderate" js="0">Can moderate chats?</word>
|
||||
<word key="chat_private" js="0">Can send private chats?</word>
|
||||
<word key="group__chat_ChatAccess" js="0">Chat</word>
|
||||
<word key="member__chat_ChatBanned" js="0">Chat</word>
|
||||
<word key="ipchat_24hour" js="0">Time format</word>
|
||||
<word key="chat_12hour" js="0">Show times with AM/PM</word>
|
||||
<word key="chat_24hour" js="0">Show times with 24 hour format</word>
|
||||
<word key="ipchat_hide_usermessage" js="0">Show room join messages</word>
|
||||
<word key="ipchat_hide_usermessage_desc" js="0">Shows a message in the chat window when users enter and leave the room</word>
|
||||
<word key="ipchat_inactive_minutes" js="0">Inactivity period</word>
|
||||
<word key="ipchat_inactive_minutes_desc" js="0">When the user has been inactive for this amount of time, they will be automatically kicked from the room</word>
|
||||
<word key="ipchat_max_messages" js="0">Maximum number of displayed chats</word>
|
||||
<word key="ipchat_new_window" js="0">Open in a new window</word>
|
||||
<word key="ipchat_no_buffer" js="0">Show chat history upon joining a room</word>
|
||||
<word key="ipschat_enable_rules" js="0">Show chat rules</word>
|
||||
<word key="ipschat_enable_rules_desc" js="0">The user will be prompted to agree to the rules before being allowed to join the room</word>
|
||||
<word key="ipschat_rules_text" js="0">Chat rules</word>
|
||||
<word key="chat_timeplaceholder" js="0">HH:MM</word>
|
||||
<word key="acplogs__chat_settings" js="0">Updated chat settings</word>
|
||||
<word key="ipschat_online" js="0">Online times</word>
|
||||
<word key="ipschat_online_desc" js="0">Optionally specify a time period that chat will be available</word>
|
||||
<word key="ipschat_no_license" js="0">The chat room is not presently available</word>
|
||||
<word key="ipschat_no_license_admin" js="0">You must supply a license key in order to enable the chat room</word>
|
||||
<word key="ipschat_no_license_access" js="0">Your license does not include access to the chat room</word>
|
||||
<word key="ipschat_no_group_access" js="0">Your group does not have permission to access the chat room</word>
|
||||
<word key="ipschat_no_access" js="0">You do not have permission to access the chat room</word>
|
||||
<word key="ipschat_no_ignore" js="0">This user cannot be ignored</word>
|
||||
<word key="ipschat_no_ban" js="0">You do not have permission to ban users in chat</word>
|
||||
<word key="ipschat_log_archive" js="0">Chat Logs</word>
|
||||
<word key="acplog__chatlog_settings" js="0">Edited chat log prune settings</word>
|
||||
<word key="ipchat_log_prune" js="0">Prune chat logs</word>
|
||||
<word key="chatlog_log_time" js="0">Date</word>
|
||||
<word key="chatlog_log_user" js="0">User</word>
|
||||
<word key="chatlog_log_message" js="0">Message</word>
|
||||
<word key="chatlog__hasentered" js="0">%s entered the room</word>
|
||||
<word key="chatlog__hasleft" js="0">%s left the room</word>
|
||||
<word key="chatlog__kicked" js="0">Kicked: %s</word>
|
||||
<word key="chatlog__private" js="0">Private chat with %s: %s</word>
|
||||
<word key="chat_toggle_sound" js="0">Toggle sound notifications</word>
|
||||
<word key="chat_leave_room" js="0">Leave Chatroom</word>
|
||||
<word key="ipschat_confirm" js="0">I agree to the terms</word>
|
||||
<word key="generic_chatconnect_error" js="0">There was an error joining the chat room. Please try again or contact us.</word>
|
||||
<word key="chat_currently_offline" js="0">The chat room is currently offline but will be back at %s.</word>
|
||||
<word key="chat_offline_admin" js="0"><![CDATA[The chat room is currently offline based upon the ACP configuration available at Community -> Chat -> Settings]]></word>
|
||||
<word key="leave_chat_room" js="0">You have left the chat room</word>
|
||||
<word key="ipchat_private_chat" js="0">Start private chat</word>
|
||||
<word key="ipchat_ignore_chats" js="0">Ignore private chats</word>
|
||||
<word key="ipchat_unignore_chats" js="0">Stop ignoring private chats</word>
|
||||
<word key="ipchat_kick" js="0">Kick user from room</word>
|
||||
<word key="ipchat_ban" js="0">Ban user from room</word>
|
||||
<word key="ipchat_profile" js="0">View user profile</word>
|
||||
<word key="connect_error_1" js="0">The license key used was invalid, or is not correctly associated with a chat account.</word>
|
||||
<word key="connect_error_2" js="0">No username was supplied to connect to the chat room. Please contact technical support for assistance.</word>
|
||||
<word key="connect_error_3" js="0">No room number was supplied to connect to the chat room. Please contact technical support for assistance.</word>
|
||||
<word key="connect_error_5" js="0">The room id supplied is invalid. Please contact technical support for assistance.</word>
|
||||
<word key="connect_error_6" js="0">The license key used was invalid, or is not correctly associated with a chat account. Please contact technical support for assistance.</word>
|
||||
<word key="connect_error_8" js="0">The server the chat room was hosted on is no longer online. Please wait a few moments and try again or contact technical support for assistance.</word>
|
||||
<word key="connect_error_10" js="0">The chat server is offline. Please contact technical support for assistance.</word>
|
||||
<word key="chat_room_full" js="0">The chat room limit has been reached. You will not be able to join the chat room until some users first leave.</word>
|
||||
<word key="license_no_chat" js="0">Your license does not include Chat or has expired. Please contact customer services for assistance.</word>
|
||||
<word key="connect_gw_error_0" js="0">Your server was unable to communicate with our chat servers. Please contact technical support for assistance.</word>
|
||||
<word key="connect_gw_error_1" js="0">The license key used was invalid, or is not correctly associated with a chat account. Please contact technical support for assistance.</word>
|
||||
<word key="connect_gw_error_2" js="0">No username was supplied to connect to the chat room. Please contact technical support for assistance.</word>
|
||||
<word key="connect_gw_error_4" js="0">The room ID supplied was invalid. Please wait a few moments and try again or contact technical support for assistance.</word>
|
||||
<word key="connect_gw_error_5" js="0">The chat room key has expired. Please wait a few moments and try again or contact technical support for assistance.</word>
|
||||
<word key="connect_gw_error_6" js="0">The license key did not match the key for the chat room. Please wait a few moments and try again or contact technical support for assistance.</word>
|
||||
<word key="block_chatwhoschatting" js="0">Who's Chatting</word>
|
||||
<word key="block_chatwhoschatting_desc" js="0">Show the users currently in the chat room</word>
|
||||
<word key="chatters_list_empty" js="0">There are no users currently in the chat room</word>
|
||||
<word key="accept_rules" js="0">Accept and enter chatroom</word>
|
||||
<word key="chatroom_rules" js="0">Chatroom Rules</word>
|
||||
<word key="modcp_members_chatBanned" js="0">Chat Banned</word>
|
||||
<word key="leftRoom" js="1">{{username}} left the room</word>
|
||||
<word key="enteredRoom" js="1">{{username}} entered the room</word>
|
||||
<word key="privateChatWith" js="1">Private chat with {{user}}</word>
|
||||
<word key="privateChat" js="1">Private Chat</word>
|
||||
<word key="soundEnabled" js="1">Notification sounds have been enabled</word>
|
||||
<word key="soundDisabled" js="1">Notification sounds have been disabled</word>
|
||||
<word key="usersChatting" js="1">{# [1:user][?:users]} chatting</word>
|
||||
<word key="cantChatWithSelf" js="1">You can't start a private chat with yourself!</word>
|
||||
<word key="cantIgnoreUser" js="1">{{user}} can't be ignored</word>
|
||||
<word key="closeThisTab" js="1">Close this chat</word>
|
||||
<word key="insertEmoticon" js="1">Insert Emoticon</word>
|
||||
<word key="sendChat" js="1">Send</word>
|
||||
<word key="noUsersChatting" js="1">No users chatting</word>
|
||||
<word key="chatroom" js="1">Chat</word>
|
||||
<word key="chatroomTooltip" js="1">Public Chat</word>
|
||||
<word key="system" js="1">System</word>
|
||||
<word key="kickedFromServer" js="1">You have been kicked from the chatroom.</word>
|
||||
<word key="time_am" js="1">AM</word>
|
||||
<word key="time_pm" js="1">PM</word>
|
||||
<word key="hideImage" js="1">Toggle image</word>
|
||||
<word key="imageHidden" js="1">Image hidden</word>
|
||||
</app>
|
||||
</language>
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"admin": {
|
||||
"chat": {
|
||||
"default_controller": "",
|
||||
"protected": false
|
||||
}
|
||||
},
|
||||
"front": {
|
||||
"chat": {
|
||||
"default_controller": "view",
|
||||
"protected": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
{
|
||||
"chat_log_archive": {
|
||||
"name": "chat_log_archive",
|
||||
"columns": {
|
||||
"log_id": {
|
||||
"allow_null": false,
|
||||
"auto_increment": true,
|
||||
"binary": false,
|
||||
"comment": "",
|
||||
"decimals": null,
|
||||
"default": null,
|
||||
"length": 11,
|
||||
"name": "log_id",
|
||||
"type": "INT",
|
||||
"unsigned": false,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"log_room_id": {
|
||||
"allow_null": false,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "",
|
||||
"decimals": null,
|
||||
"default": "0",
|
||||
"length": 11,
|
||||
"name": "log_room_id",
|
||||
"type": "INT",
|
||||
"unsigned": false,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"log_time": {
|
||||
"allow_null": false,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "",
|
||||
"decimals": null,
|
||||
"default": "0",
|
||||
"length": 11,
|
||||
"name": "log_time",
|
||||
"type": "INT",
|
||||
"unsigned": false,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"log_code": {
|
||||
"allow_null": false,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "",
|
||||
"decimals": null,
|
||||
"default": "0",
|
||||
"length": 6,
|
||||
"name": "log_code",
|
||||
"type": "SMALLINT",
|
||||
"unsigned": false,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"log_user": {
|
||||
"allow_null": true,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "",
|
||||
"decimals": null,
|
||||
"default": null,
|
||||
"length": 255,
|
||||
"name": "log_user",
|
||||
"type": "VARCHAR",
|
||||
"unsigned": false,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"log_message": {
|
||||
"allow_null": true,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "",
|
||||
"decimals": null,
|
||||
"default": null,
|
||||
"length": 0,
|
||||
"name": "log_message",
|
||||
"type": "TEXT",
|
||||
"unsigned": false,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"log_extra": {
|
||||
"allow_null": true,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "",
|
||||
"decimals": null,
|
||||
"default": null,
|
||||
"length": 255,
|
||||
"name": "log_extra",
|
||||
"type": "VARCHAR",
|
||||
"unsigned": false,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
}
|
||||
},
|
||||
"indexes": {
|
||||
"PRIMARY": {
|
||||
"type": "primary",
|
||||
"name": "PRIMARY",
|
||||
"length": [
|
||||
null
|
||||
],
|
||||
"columns": [
|
||||
"log_id"
|
||||
]
|
||||
},
|
||||
"log_time": {
|
||||
"type": "key",
|
||||
"name": "log_time",
|
||||
"columns": [
|
||||
"log_time"
|
||||
],
|
||||
"length": [
|
||||
null
|
||||
]
|
||||
}
|
||||
},
|
||||
"collation": "latin1_swedish_ci",
|
||||
"engine": "MyISAM"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
[
|
||||
{
|
||||
"key": "ipchat_24hour",
|
||||
"default": "12"
|
||||
},
|
||||
{
|
||||
"key": "ipchat_hide_usermessage",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "ipchat_inactive_minutes",
|
||||
"default": "360"
|
||||
},
|
||||
{
|
||||
"key": "ipchat_log_prune",
|
||||
"default": "30"
|
||||
},
|
||||
{
|
||||
"key": "ipchat_new_window",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "ipchat_no_buffer",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "ipschat_enable_rules",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "ipschat_online",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "ipschat_rules",
|
||||
"default": ""
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1 @@
|
||||
{"chatlogprune":"P0Y0M1DT0H0M0S","chatlogrefresh":"P0Y0M0DT0H30M0S"}
|
||||
@@ -0,0 +1,467 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<theme name="Default" author_name="Invision Power Services, Inc" author_url="http://www.invisionpower.com">
|
||||
<template template_group="global" template_name="tabCount" template_data="$count" template_location="front" template_app="chat"><![CDATA[{{if $count}}
|
||||
<script type='text/javascript'>
|
||||
$('.elNavigation_app_chat_Chat').append( $('<span/>').addClass('ipsNotificationCount').text('{$count}') );
|
||||
</script>
|
||||
{{endif}}]]></template>
|
||||
<template template_group="global" template_name="tabNewWindow" template_data="" template_location="front" template_app="chat"><![CDATA[<script type='text/javascript'>
|
||||
$('.elNavigation_app_chat_Chat').click( function( e ){
|
||||
e.preventDefault();
|
||||
|
||||
var joinWith = '?';
|
||||
|
||||
if ( $( e.currentTarget ).attr('href').indexOf('?') != -1 )
|
||||
{
|
||||
joinWith = '&';
|
||||
}
|
||||
|
||||
window.open( $( e.currentTarget ).attr('href') + joinWith + '_popup=1', '_blank', "height=480,width=1200,location=0,menubar=0,toolbar=0" );
|
||||
return false;
|
||||
});
|
||||
</script>]]></template>
|
||||
<template template_group="settings" template_name="chatOnline" template_data="$value" template_location="admin" template_app="chat"><![CDATA[<div>
|
||||
<input type='time' class='ipsField_short' placeholder='{lang="chat_timeplaceholder"}' value="{$value[0]}" name="ipschat_online[0]">
|
||||
{lang="to"}
|
||||
<input type='time' class='ipsField_short' placeholder='{lang="chat_timeplaceholder"}' value="{$value[1]}" name="ipschat_online[1]">
|
||||
</div>]]></template>
|
||||
<template template_group="view" template_name="acceptRules" template_data="$form" template_location="front" template_app="chat"><![CDATA[
|
||||
<div class='ipsAreaBackground_light ipsPad'>
|
||||
<h1 class='ipsType_pageTitle'>{lang="chatroom_rules"}</h1>
|
||||
<div class='ipsType_normal ipsType_richText ipsContained ipsType_break ipsSpacer_both'>
|
||||
{lang="ipschat_rules"}
|
||||
</div>
|
||||
{$form|raw}
|
||||
</div>]]></template>
|
||||
<template template_group="view" template_name="chat" template_data="$chatters" template_location="front" template_app="chat"><![CDATA[
|
||||
{{if !\IPS\Settings::i()->ipchat_new_window}}
|
||||
<div class="ipsPageHeader ipsClearfix ipsSpacer_bottom">
|
||||
<h1 class="ipsType_pageTitle">{lang="chat_title"}</h1>
|
||||
<p id='chatDebug'></p>
|
||||
</div>
|
||||
{{endif}}
|
||||
|
||||
<div data-controller='chat.front.chatcompat.main'>
|
||||
<div id='elChatWrapper'>
|
||||
<div class="ipsTabs ipsClearfix" id='elChatTabs'>
|
||||
<ul class='ipsPos_right ipsList_inline ipsList_noSpacing ipsResponsive_hidePhone'>
|
||||
<li>
|
||||
<a href='#' class='ipsPos_right ipsButton ipsButton_verySmall ipsButton_overlaid' data-action='toggleSound' data-ipsTooltip title='{lang="chat_toggle_sound"}'><i class='fa fa-volume-up'></i></a>
|
||||
</li>
|
||||
<li>
|
||||
{{$leave = \IPS\Request::i()->_popup ? '&_popup=' . \IPS\Request::i()->_popup : '';}}
|
||||
<a href='{url="app=chat&module=chat&controller=view&do=leave{$leave}" seoTemplate="chat" csrf="true"}' class='ipsPos_right ipsButton ipsButton_verySmall ipsButton_overlaid' data-action='leaveChat' data-ipsTooltip title='{lang="chat_leave_room"}'>{lang="chat_leave_room"}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a href="#elChatTabs" data-action="expandTabs"><i class="fa fa-caret-down"></i></a>
|
||||
<ul role="tablist" class="ipsList_reset" id='elChatTabBar'>
|
||||
</ul>
|
||||
</div>
|
||||
<section id='elChatTabsContent'>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<div id='elChatIFrame'></div>
|
||||
<ul id='elInitialUserList' class='ipsHide'>
|
||||
{{foreach $chatters as $chatter}}
|
||||
{template="userRow" group="view" app="chat" params="$chatter"}
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
<div class='ipsAreaBackground_light ipsPad ipsResponsive_showPhone ipsResponsive_block ipsSpacer_top ipsType_center'>
|
||||
<ul class='ipsList_inline ipsList_noSpacing'>
|
||||
<li>
|
||||
<a href='#' class='ipsPos_right ipsButton ipsButton_verySmall ipsButton_light' data-action='toggleSound' data-ipsTooltip title='{lang="chat_toggle_sound"}'><i class='fa fa-volume-up'></i></a>
|
||||
</li>
|
||||
<li>
|
||||
{{$leave = \IPS\Request::i()->_popup ? '&_popup=' . \IPS\Request::i()->_popup : '';}}
|
||||
<a href='{url="app=chat&module=chat&controller=view&do=leave{$leave}" seoTemplate="chat" csrf="true"}' class='ipsPos_right ipsButton ipsButton_verySmall ipsButton_light' data-action='leaveChat' data-ipsTooltip title='{lang="chat_leave_room"}'>{lang="chat_leave_room"}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>]]></template>
|
||||
<template template_group="view" template_name="chatvars" template_data="$options, $forumIdMap, $groups, $badwords, $ignored, $emoticons" template_location="front" template_app="chat"><![CDATA[
|
||||
<script type='text/javascript'>
|
||||
// System vars
|
||||
ips.setSetting( 'roomID', {$options['roomId']} );
|
||||
ips.setSetting( 'userID', {$options['userId']} );
|
||||
ips.setSetting( 'forumUserID', {expression="intval( \IPS\Member::loggedIn()->member_id )"} );
|
||||
ips.setSetting( 'username', '{{if \IPS\Member::loggedIn()->member_id}}{expression="\IPS\Member::loggedIn()->name"}{{else}}{expression="\IPS\Member::loggedIn()->language()->get('guest')"}_{$options['userId']}{{endif}}' );
|
||||
ips.setSetting( 'accessKey', '{$options['accessKey']}' );
|
||||
ips.setSetting( 'serverHost', '{$options['serverHost']}' );
|
||||
ips.setSetting( 'serverPath', '{$options['serverPath']}' );
|
||||
ips.setSetting( 'ourURL', "{expression="urlencode(\IPS\Settings::i()->base_url)"}" );
|
||||
|
||||
ips.setSetting( 'chatEmoticons',
|
||||
{expression="json_encode( $emoticons )" raw="true"}
|
||||
);
|
||||
|
||||
ips.setSetting( 'ignoredChats',
|
||||
{expression="json_encode( $ignored )" raw="true"}
|
||||
);
|
||||
|
||||
ips.setSetting( 'forumIDMap',
|
||||
{expression="json_encode( $forumIdMap )" raw="true"}
|
||||
);
|
||||
|
||||
ips.setSetting( 'groups',
|
||||
{expression="json_encode( $groups )" raw="true"}
|
||||
);
|
||||
|
||||
ips.setSetting( 'badwords',
|
||||
{expression="json_encode( $badwords )" raw="true"}
|
||||
);
|
||||
|
||||
// Sounds in MP3 format
|
||||
ips.setSetting( 'sounds', {
|
||||
'enter': 'enter',
|
||||
'leave': 'leave',
|
||||
'message': 'message'
|
||||
});
|
||||
|
||||
// Settings
|
||||
ips.setSetting( 'condenseTime', true );
|
||||
ips.setSetting( 'maxMessages', 100 );
|
||||
ips.setSetting( 'moderator', {{if \IPS\Member::loggedIn()->group['chat_moderate']}}true{{else}}false{{endif}} );
|
||||
ips.setSetting( 'private', {{if \IPS\Member::loggedIn()->group['chat_private']}}true{{else}}false{{endif}} );
|
||||
ips.setSetting( 'hideEnterExit', '{expression="(bool) \IPS\Settings::i()->ipchat_hide_usermessage"}' );
|
||||
ips.setSetting( 'noBuffer', '{expression="(bool) \IPS\Settings::i()->ipchat_no_buffer"}' );
|
||||
ips.setSetting( 'inactiveKick', parseInt( {expression="\IPS\Settings::i()->ipchat_inactive_minutes"} * 60 ) );
|
||||
ips.setSetting( 'user24hour', {{if \IPS\Settings::i()->ipchat_24hour == '24'}}true{{else}}false{{endif}} );
|
||||
ips.setSetting( 'soundEnabled', ips.utils.db.get( 'chat', 'sounds' ) );
|
||||
</script>]]></template>
|
||||
<template template_group="view" template_name="userInfo" template_data="$member" template_location="front" template_app="chat"><![CDATA[{{$group = \IPS\Member\Group::load( $member->member_group_id );}}
|
||||
|
||||
<div class='ipsType_center ipsSpacer_top'>
|
||||
<h3 class='ipsType_sectionHead ipsSpacer_bottom'>
|
||||
{$group->formatName( $member->name )|raw}
|
||||
</h3>
|
||||
<br>
|
||||
|
||||
{template="userPhoto" group="global" app="core" params="$member, 'medium'"}
|
||||
</div>]]></template>
|
||||
<template template_group="view" template_name="userRow" template_data="$data" template_location="front" template_app="chat"><![CDATA[
|
||||
<li id='elChatUserRow_{$data['user_id']}'>
|
||||
{{if $data['forumUserID'] or \IPS\Member::loggedIn()->member_id !== $data['forumUserID']}}
|
||||
<a href='#' class='ipsPhotoPanel ipsPhotoPanel_tiny ipsFaded_withHover cChatUserRow ipsType_blendLinks ipsPad_half' id='elChatUser_{$data['user_id']}' data-userID='{$data['user_id']}' data-forumUserID='{$data['forumUserID']}' data-username="{$data['username']}" data-ipsMenu data-ipsMenu-activeClass='cChatUserRow_hover' data-ipsMenu-appendTo='#elChatUserRow_{$data['user_id']}' >
|
||||
<img src='{$data['photo']}' alt='' class='ipsUserPhoto ipsUserPhoto_tiny'>
|
||||
<div class='cChatUsername'>
|
||||
{$data['formattedUsername']|raw} <i class='fa fa-caret-down ipsFaded ipsFaded_more'></i>
|
||||
</div>
|
||||
</a>
|
||||
<ul id='elChatUser_{$data['user_id']}_menu' class='ipsHide ipsMenu ipsMenu_auto cChatUserMenu' data-userID='{$data['user_id']}' data-forumUserID='{$data['forumUserID']}'>
|
||||
{{if \IPS\Member::loggedIn()->member_id !== $data['forumUserID']}}
|
||||
<li class='ipsMenu_item' data-ipsMenuValue='private'>
|
||||
<a href='#'>{lang="ipchat_private_chat"}</a>
|
||||
</li>
|
||||
<li class='ipsMenu_sep' data-role='privateSep'><hr></li>
|
||||
<li class='ipsMenu_item' data-ipsMenuValue='ignore'>
|
||||
<a href='#'>{lang="ipchat_ignore_chats"}</a>
|
||||
</li>
|
||||
<li class='ipsMenu_item' data-ipsMenuValue='unignore'>
|
||||
<a href='#'>{lang="ipchat_unignore_chats"}</a>
|
||||
</li>
|
||||
{{if \IPS\Member::loggedIn()->group['chat_moderate']}} <!-- if moderator... -->
|
||||
<li class='ipsMenu_sep' data-role='modSep'><hr></li>
|
||||
<li class='ipsMenu_item' data-ipsMenuValue='kick'>
|
||||
<a href='#'>{lang="ipchat_kick"}</a>
|
||||
</li>
|
||||
<li class='ipsMenu_item' data-ipsMenuValue='ban'>
|
||||
<a href='#'>{lang="ipchat_ban"}</a>
|
||||
</li>
|
||||
{{endif}}
|
||||
<li class='ipsMenu_sep'><hr></li>
|
||||
{{endif}}
|
||||
{{if $data['forumUserID']}}
|
||||
<li class='ipsMenu_item'>
|
||||
<a href='{$data['profileUrl']}' target='_blank'>{lang="ipchat_profile"}</a>
|
||||
</li>
|
||||
{{endif}}
|
||||
</ul>
|
||||
{{else}}
|
||||
<span class='ipsPhotoPanel ipsPhotoPanel_tiny ipsFaded_withHover cChatUserRow ipsType_blendLinks ipsPad_half' id='elChatUser_{$data['user_id']}' data-userID='{$data['user_id']}' data-forumUserID='{$data['forumUserID']}' data-username="{$data['username']}">
|
||||
<img src='{$data['photo']}' alt='' class='ipsUserPhoto ipsUserPhoto_tiny'>
|
||||
<div class='cChatUsername'>
|
||||
{$data['formattedUsername']|raw}
|
||||
</div>
|
||||
</span>
|
||||
{{endif}}
|
||||
</li>]]></template>
|
||||
<template template_group="widgets" template_name="chatwhoschatting" template_data="$chatters, $orientation='vertical'" template_location="front" template_app="chat"><![CDATA[<h3 class='ipsType_reset ipsWidget_title'>
|
||||
{lang="block_chatwhoschatting"}
|
||||
</h3>
|
||||
<div class='ipsWidget_inner {{if $orientation == 'vertical'}}ipsPad{{endif}}'>
|
||||
{{if count( $chatters )}}
|
||||
<ul class='ipsList_inline ipsList_csv ipsList_noSpacing'>
|
||||
{{foreach $chatters as $row}}
|
||||
<li>{template="userLinkFromData" group="global" app="core" params="$row['forumUserID'], $row['username'], $row['seo_name'], $row['groupID']"}</li>
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
{{else}}
|
||||
<p class='ipsType_reset ipsType_medium ipsType_light'>{lang="chatters_list_empty"}</p>
|
||||
{{endif}}
|
||||
</div>]]></template>
|
||||
<css css_location="front" css_app="chat" css_attributes="" css_path="." css_name="chat_responsive.css"><![CDATA[/* PHONES */
|
||||
@media screen and (max-width: 767px) {
|
||||
|
||||
.cChatContainer {
|
||||
height: 315px;
|
||||
}
|
||||
|
||||
#elChatTabBar {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
#elChatTabsContent > .ipsTabs_panel {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
#elChatTabBar .ipsTabs_item [data-action="closeTab"] {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.cEmoticonsButton, .cSendButton {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.cEmoticonsButton {
|
||||
width: 25% !important;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.cSendButton {
|
||||
width: 71% !important;
|
||||
float: left;
|
||||
margin-left: 4% !important;
|
||||
}
|
||||
|
||||
/* Row stuff */
|
||||
.cChatRow {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.cChatRow_date {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.cChatRow_responsiveDate {
|
||||
float: right;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.cChatRow_notice {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.cChatRow .cChatRow_user {
|
||||
text-align: left;
|
||||
background: #f5f5f5;
|
||||
width: 100%;
|
||||
border-bottom: 0;
|
||||
min-width: 0;
|
||||
max-width: 100%;
|
||||
font-size: 13px;
|
||||
padding: 7px 10px;
|
||||
}
|
||||
|
||||
.cChatRow_own .cChatRow_user {
|
||||
background: #d0dbe7;
|
||||
}
|
||||
|
||||
.cChatRow .cChatRow_user:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cChatRow .cChatRow_user, .cChatRow .cChatRow_content, .cChatRow .cChatRow_date {
|
||||
display: block;
|
||||
}
|
||||
}]]></css>
|
||||
<css css_location="front" css_app="chat" css_attributes="" css_path="." css_name="chat.css"><![CDATA[#elChatTabs {
|
||||
background: #262e33;
|
||||
}
|
||||
|
||||
/*#elChatTabs .ipsTabs_item {
|
||||
font-weight: normal;
|
||||
}*/
|
||||
|
||||
#elChatWrapper {
|
||||
border: 1px solid rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
#elChatTabsContent > .ipsTabs_panel {
|
||||
height: 430px;
|
||||
}
|
||||
|
||||
#elChatTabBar {
|
||||
margin-right: 190px;
|
||||
}
|
||||
|
||||
#elChatTabBar > li > a:not( .ipsTabs_activeItem ) {
|
||||
background: rgba(225,225,225,0.3);
|
||||
}
|
||||
|
||||
@media screen and (min-width: 767px) {
|
||||
#elChatTabBar > li > a:not( .ipsTabs_activeItem ) {
|
||||
color: rgba(255,255,255,0.5);
|
||||
}
|
||||
}
|
||||
|
||||
#elUserList {
|
||||
max-height: 395px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.cChatCompose {
|
||||
|
||||
}
|
||||
|
||||
.ipsApp .cMessageTextarea {
|
||||
width: 100%;
|
||||
height: 44px;
|
||||
resize: none;
|
||||
}
|
||||
|
||||
.cChatTab {
|
||||
position: relative;
|
||||
height: 430px;
|
||||
border-right: 1px solid rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.cChatCompose {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.cChatCompose .ipsColumn_veryNarrow {
|
||||
width: 58px;
|
||||
}
|
||||
|
||||
.cChatCompose .ipsColumn_veryNarrow .ipsButton {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.cChatUserRow {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.cChatUserRow:hover, .cChatUserRow_hover {
|
||||
background: #fafafa;
|
||||
}
|
||||
|
||||
.cChatUsername {
|
||||
font-size: 14px;
|
||||
line-height: 28px;
|
||||
}
|
||||
|
||||
#elUserList .ipsUserPhoto_tiny img,
|
||||
#elUserList img.ipsUserPhoto_tiny,
|
||||
#elUserList .ipsUserPhoto_tiny:after {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
|
||||
.cChatUserInfo {
|
||||
min-height: 150px;
|
||||
}
|
||||
|
||||
#elChatTabs [data-action='toggleSound'] {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
/* Message styles */
|
||||
.cChatContainer {
|
||||
width: 100%;
|
||||
height: 355px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.cChatRow {
|
||||
font-size: 14px;
|
||||
overflow: auto;
|
||||
display: table-row;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.cChatRow .cChatRow_user,
|
||||
.cChatRow .cChatRow_content,
|
||||
.cChatRow .cChatRow_date {
|
||||
display: table-cell;
|
||||
padding: 10px;
|
||||
border-bottom: 1px solid #efefef;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.cChatRow .cChatRow_user {
|
||||
text-align: right;
|
||||
color: #898989;
|
||||
min-width: 130px;
|
||||
max-width: 150px;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.cChatRow_date {
|
||||
padding: 0 10px;
|
||||
font-size: 12px;
|
||||
color: #939393;
|
||||
min-width: 75px; /* Wide enough for AM/PM */
|
||||
width: 75px;
|
||||
}
|
||||
/*.cChatRow.cChatRow_date {
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.cChatRow.cChatRow_date .cChatRow_user,
|
||||
.cChatRow.cChatRow_date .cChatRow_content {
|
||||
padding: 5px 10px 0;
|
||||
border-bottom: 0px;
|
||||
}*/
|
||||
|
||||
.cChatRow.cChatRow_notice {
|
||||
color: #939393;
|
||||
}
|
||||
|
||||
.cChatRow.cChatRow_me {
|
||||
color: #898989;
|
||||
}
|
||||
|
||||
.cChatRow .cChatRow_content {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.cChatRow_system {
|
||||
background: #f9e4e1;
|
||||
}
|
||||
|
||||
.cChatRow_own {
|
||||
background: #e1eaf5;
|
||||
}
|
||||
|
||||
.cChatRow_own .cChatRow_user,
|
||||
.cChatRow_own .cChatRow_content,
|
||||
.cChatRow_own .cChatRow_date {
|
||||
border-color: #cdd8e6;
|
||||
}
|
||||
|
||||
|
||||
.cChatParsedImage img {
|
||||
max-width: 100px;
|
||||
max-height: 100px;
|
||||
}
|
||||
|
||||
.cChatParsedImage a {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.cChatParsedImage a:last-child {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.cChatParsedImage .ipsButton {
|
||||
line-height: 14px;
|
||||
padding: 0 5px;
|
||||
}]]></css>
|
||||
</theme>
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"11004": "1.1.0 Alpha 5",
|
||||
"11005": "1.1.0 Beta 1",
|
||||
"11008": "1.1.0",
|
||||
"13000": "1.3.0 Beta 1",
|
||||
"40000": "4.0.0",
|
||||
"100000": "4.0.0 Beta 0",
|
||||
"100001": "4.0.0 Beta 1",
|
||||
"100002": "4.0.0 Beta 2",
|
||||
"100003": "4.0.0 Beta 3",
|
||||
"100004": "4.0.0 Beta 3a",
|
||||
"100005": "4.0.0 Beta 4",
|
||||
"100006": "4.0.0 Beta 4a",
|
||||
"100007": "4.0.0 Beta 4b",
|
||||
"100008": "4.0.0 Beta 5",
|
||||
"100009": "4.0.0 Beta 5a",
|
||||
"100010": "4.0.0 Beta 6",
|
||||
"100011": "4.0.0 Beta 7",
|
||||
"100012": "4.0.0 Beta 7a",
|
||||
"100013": "4.0.0 Beta 8",
|
||||
"100014": "4.0.0 RC1",
|
||||
"100015": "4.0.0 RC2",
|
||||
"100016": "4.0.0 RC3",
|
||||
"100017": "4.0.0 RC4",
|
||||
"100018": "4.0.0 RC5",
|
||||
"100019": "4.0.0 RC5a",
|
||||
"100020": "4.0.0 RC6",
|
||||
"10000": "1.0.0 Alpha 1",
|
||||
"10001": "1.0.0 Alpha 2",
|
||||
"10002": "1.0.0 Alpha 3",
|
||||
"10003": "1.0.0 Alpha 4",
|
||||
"10004": "1.0.0 Alpha 5",
|
||||
"10005": "1.0.0 Alpha 6",
|
||||
"10006": "1.0.0 Alpha 7",
|
||||
"10007": "1.0.0 Alpha 8",
|
||||
"10008": "1.0.0 Beta 1",
|
||||
"10009": "1.0.0 Beta 2",
|
||||
"10010": "1.0.0 Beta 3",
|
||||
"10011": "1.0.0 Beta 4",
|
||||
"10012": "1.0.0 RC 1",
|
||||
"10013": "1.0.0 RC 2",
|
||||
"10014": "1.0.0",
|
||||
"11000": "1.1.0 Alpha 1",
|
||||
"11001": "1.1.0 Alpha 2",
|
||||
"11002": "1.1.0 Alpha 3",
|
||||
"11003": "1.1.0 Alpha 4",
|
||||
"11006": "1.1.0 Beta 2",
|
||||
"11007": "1.1.0 Beta 3",
|
||||
"11009": "1.1.1",
|
||||
"11010": "1.1.2",
|
||||
"12000": "1.2.0 Beta 1",
|
||||
"12001": "1.2.0 RC 1",
|
||||
"12002": "1.2.0",
|
||||
"13001": "1.3.0 Beta 2",
|
||||
"13002": "1.3.0",
|
||||
"13003": "1.3.1",
|
||||
"14000": "1.4.0 Beta 1",
|
||||
"14001": "1.4.0 Beta 2",
|
||||
"14002": "1.4.0",
|
||||
"14003": "1.4.1",
|
||||
"14004": "1.4.2",
|
||||
"14005": "1.4.3",
|
||||
"14006": "1.4.4",
|
||||
"100021": "4.0.0 RC7",
|
||||
"100022": "4.0.0 RC7a",
|
||||
"100023": "4.0.0",
|
||||
"100024": "4.0.1",
|
||||
"100025": "4.0.2",
|
||||
"100026": "4.0.3",
|
||||
"100027": "4.0.4",
|
||||
"100028": "4.0.5",
|
||||
"100029": "4.0.5.1",
|
||||
"100030": "4.0.6",
|
||||
"100031": "4.0.6.1",
|
||||
"100032": "4.0.7",
|
||||
"100033": "4.0.8",
|
||||
"100034": "4.0.8.1",
|
||||
"100035": "4.0.9",
|
||||
"100036": "4.0.9.1",
|
||||
"100037": "4.0.9.2",
|
||||
"100038": "4.0.10",
|
||||
"100039": "4.0.10.1",
|
||||
"100040": "4.0.10.2",
|
||||
"100041": "4.0.11",
|
||||
"100042": "4.0.12",
|
||||
"100043": "4.0.12.1",
|
||||
"100044": "4.0.13",
|
||||
"100045": "4.0.13.1"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"chatwhoschatting":{"class":"\\IPS\\Widget\\StaticCache","restrict":["sidebar","cms"],"default_area":"","allow_reuse":false,"menu_style":"menu","embeddable":true}}
|
||||
Reference in new issue
Block a user