fore.st - Panama Red (v1)
changelist: -pseudo-random name colors -layout fixes(moved chat after the video on the .pug. also disabled said feature in fcyp.js) -theme updates(tokebot flair, changed modflair, more compact layout, unfucked cytube provided css (srsly, WTF calzoneman? Why?) link decorations, made things moar unified) -added image embedding, disabling fcyp image embed (nothing new from a user standpoint, simply slowly stripping fcyp.js out) -moved emote button to chatbar, added send button as well -chatpaste & chatsmack functions allowing clickable usernames/ -fixed raw video controls -ripped out chat processing logic from fcyp.js, it was breaking a lot of shit and everything it did has been implemented by this update and moar devnotes: Biggest update yet, also made some good steps towards fully ripping fcyp.js out completely. Played around with an image upload button. I might have to setup a cors relay to get that working, I'll have to play around more :p
This commit is contained in:
parent
1148f63959
commit
9455fd8964
10
README.md
10
README.md
|
|
@ -1,7 +1,7 @@
|
||||||
fore.st
|
fore.st - Panama Red(v1)
|
||||||
======
|
======
|
||||||
|
|
||||||
fore.st is the server software for ourfore.st, a streaming service tailored to service
|
fore.st is the server software for ourfore.st, a community based chat & video embedding site tailored to service
|
||||||
the TTN community post-shutdown. The softwre is made freely available both for legal reasons
|
the TTN community post-shutdown. The softwre is made freely available both for legal reasons
|
||||||
but also as it seems as that is what is best for the community in the advant of another shutdown.
|
but also as it seems as that is what is best for the community in the advant of another shutdown.
|
||||||
|
|
||||||
|
|
@ -11,7 +11,7 @@ being made to make the platform a more familiar place for TTN users. Contributio
|
||||||
are welcome.
|
are welcome.
|
||||||
|
|
||||||
Current dev goals:
|
Current dev goals:
|
||||||
- chat overhaul(semi-random name colors, custom tokebot css, command hiding, imgur upload/paste button, image embedding w/o fcyp.js)
|
- image upload button/ audio(maybe? Autoplay disabled.) & mp4/webm embed support
|
||||||
- basic library features(add to lib without queueing, show videos from other channels)
|
- basic library features(add to lib without queueing, show videos from other channels)
|
||||||
- add 3 columns to lib table: type(show,movie,video), genre(comedy,food,horror,etc...), tags(stupidbullshit, etc...), sort or search by type/genre/tags
|
- add 3 columns to lib table: type(show,movie,video), genre(comedy,food,horror,etc...), tags(stupidbullshit, etc...), sort or search by type/genre/tags
|
||||||
- improved profiles (profile pages, badges, stats)
|
- improved profiles (profile pages, badges, stats)
|
||||||
|
|
@ -24,7 +24,6 @@ Current dev goals:
|
||||||
- fix gdrive support(we'll probably be moving hosts at some point...)
|
- fix gdrive support(we'll probably be moving hosts at some point...)
|
||||||
- continue w/ development goals and exist with the d00dz
|
- continue w/ development goals and exist with the d00dz
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
There is currently no installation guide for the software, however since not much has
|
There is currently no installation guide for the software, however since not much has
|
||||||
changed in the backend, you should be fine with official [cytube docs](https://github.com/calzoneman/sync/wiki/CyTube-3.0-Installation-Guide).
|
changed in the backend, you should be fine with official [cytube docs](https://github.com/calzoneman/sync/wiki/CyTube-3.0-Installation-Guide).
|
||||||
|
|
@ -34,9 +33,8 @@ You can reach out by bugging rainbownapkin on the ttn discord or ourfore.st, you
|
||||||
|
|
||||||
## Shoutouts
|
## Shoutouts
|
||||||
- Thanks to Simon for making TTN, we wouldn't be here if it wheren't that shit.
|
- Thanks to Simon for making TTN, we wouldn't be here if it wheren't that shit.
|
||||||
- Thanks to jaredlego-aka-goops for helping with moderation and content aggregation for ourfore.st, we'll be set fer fackin dayz lol.
|
- Thanks to jaredlego-aka-goops, Rongtern, n' Sassy for helping with moderation and content aggregation for ourfore.st, we'll be set fer fackin dayz lol.
|
||||||
- Thanks to etchingham for being a community contact while TTN's been winding down, I think all of us see you as a pillar of the community so your support means a lot.
|
- Thanks to etchingham for being a community contact while TTN's been winding down, I think all of us see you as a pillar of the community so your support means a lot.
|
||||||
- Thanks to Sassy and Rongtern for helping out with moderation, and help with the queue
|
|
||||||
- Thanks to calzoneman for making [cytube](https://github.com/calzoneman/sync), that saved our asses.
|
- Thanks to calzoneman for making [cytube](https://github.com/calzoneman/sync), that saved our asses.
|
||||||
- Thanks to the core TTN community and everyone else who's ever used it, I was only there for the last handful of years but it was an absolute fuckin' ride. You guys are the best, it isn't TTN but I hope this at least help fills the gap.
|
- Thanks to the core TTN community and everyone else who's ever used it, I was only there for the last handful of years but it was an absolute fuckin' ride. You guys are the best, it isn't TTN but I hope this at least help fills the gap.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -391,8 +391,9 @@ ChatModule.prototype.filterMessage = function (msg) {
|
||||||
if (filtered !== link) {
|
if (filtered !== link) {
|
||||||
return filtered;
|
return filtered;
|
||||||
} else if (convertLinks) {
|
} else if (convertLinks) {
|
||||||
return "<a href=\"" + link + "\" target=\"_blank\" " +
|
//return "<a href=\"" + link + "\" target=\"_blank\" " +
|
||||||
"rel=\"noopener noreferrer\">" + link + "</a>";
|
// "rel=\"noopener noreferrer\">" + link + "</a>";
|
||||||
|
return link;
|
||||||
} else {
|
} else {
|
||||||
return link;
|
return link;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,3 +19,4 @@ block content
|
||||||
| No spamming submit channel or chat
|
| No spamming submit channel or chat
|
||||||
p.
|
p.
|
||||||
Comments? Questions? Feature requests? DMCA Notices? <a href="mailto:ourforest@420blaze.it">Email us!</a>
|
Comments? Questions? Feature requests? DMCA Notices? <a href="mailto:ourforest@420blaze.it">Email us!</a>
|
||||||
|
h4 fore.st version: Panama Red (v1)
|
||||||
|
|
|
||||||
|
|
@ -16,18 +16,11 @@ html(lang="en")
|
||||||
+navdefaultlinks()
|
+navdefaultlinks()
|
||||||
li: a(href="javascript:void(0)", onclick="javascript:showUserOptions()") Options
|
li: a(href="javascript:void(0)", onclick="javascript:showUserOptions()") Options
|
||||||
li: a#showchansettings(href="javascript:void(0)", onclick="javascript:showChannelSettings()") Channel Settings
|
li: a#showchansettings(href="javascript:void(0)", onclick="javascript:showChannelSettings()") Channel Settings
|
||||||
li.dropdown
|
|
||||||
a.dropdown-toggle(href="#", data-toggle="dropdown") Layout
|
|
||||||
b.caret
|
|
||||||
ul.dropdown-menu
|
|
||||||
li: a(href="#" onclick="javascript:chatOnly()") Chat Only
|
|
||||||
li: a(href="#" onclick="javascript:removeVideo(event)") Remove Video
|
|
||||||
+navsuperadmin(true)
|
+navsuperadmin(true)
|
||||||
+navloginlogout()
|
+navloginlogout()
|
||||||
section#mainpage
|
section#mainpage
|
||||||
.container
|
.container
|
||||||
#motdrow.row
|
#motdrow.row
|
||||||
.col-lg-12.col-md-12
|
|
||||||
#motdwrap.well
|
#motdwrap.well
|
||||||
button#togglemotd.close.pull-right(type="button")
|
button#togglemotd.close.pull-right(type="button")
|
||||||
span.glyphicon.glyphicon-minus
|
span.glyphicon.glyphicon-minus
|
||||||
|
|
@ -38,29 +31,30 @@ html(lang="en")
|
||||||
#drinkbar.col-lg-12.col-md-12
|
#drinkbar.col-lg-12.col-md-12
|
||||||
h1#drinkcount
|
h1#drinkcount
|
||||||
#main.row
|
#main.row
|
||||||
#chatwrap.col-lg-5.col-md-5
|
|
||||||
#chatheader
|
|
||||||
i#userlisttoggle.glyphicon.glyphicon-chevron-down.pull-left.pointer(title="Show/Hide Userlist")
|
|
||||||
span#usercount.pointer Not Connected
|
|
||||||
span#modflair.label.label-default.pull-right.pointer Name Color
|
|
||||||
#userlist
|
|
||||||
#messagebuffer.linewrap
|
|
||||||
form(action="javascript:void(0)")
|
|
||||||
input#chatline.form-control(type="text", maxlength="320", style="display: none")
|
|
||||||
#guestlogin.input-group
|
|
||||||
span.input-group-addon Registration Required!
|
|
||||||
//input#guestname.form-control(type="text", placeholder="Name")
|
|
||||||
#videowrap.col-lg-7.col-md-7
|
#videowrap.col-lg-7.col-md-7
|
||||||
p#videowrap-header
|
p#videowrap-header
|
||||||
span#resize-video-smaller.glyphicon.glyphicon-minus.pointer(title="Make the video smaller")
|
|
||||||
span#resize-video-larger.glyphicon.glyphicon-plus.pointer(title="Make the video larger")
|
span#resize-video-larger.glyphicon.glyphicon-plus.pointer(title="Make the video larger")
|
||||||
|
span#resize-video-smaller.glyphicon.glyphicon-minus.pointer(title="Make the video smaller")
|
||||||
span#currenttitle Nothing Playing
|
span#currenttitle Nothing Playing
|
||||||
.embed-responsive.embed-responsive-16by9
|
.embed-responsive.embed-responsive-16by9
|
||||||
#ytapiplayer.embed-responsive-item
|
#ytapiplayer.embed-responsive-item
|
||||||
#controlsrow.row
|
#chatwrap.col-lg-5.col-md-5
|
||||||
#leftcontrols.col-lg-5.col-md-5
|
#chatheader
|
||||||
button#newpollbtn.btn.btn-sm.btn-default New Poll
|
span#modflair.label.label-default.pull-right.pointer Name Color
|
||||||
button#emotelistbtn.btn.btn-sm.btn-default Emote List
|
span(style="flex-grow: 2;")
|
||||||
|
span#usercount.pointer Not Connected
|
||||||
|
i#userlisttoggle.glyphicon.glyphicon-chevron-down.pull-left.pointer(title="Show/Hide Userlist")
|
||||||
|
#chatmain
|
||||||
|
#userlist
|
||||||
|
#messagebuffer.linewrap
|
||||||
|
#chatbar(style="display: flex;")
|
||||||
|
button#emotelistbtn.btn.btn-sm.btn-default(title="emotes") ;)
|
||||||
|
form(action="javascript:void(0)" style="display: flex; flex-grow: 1;")
|
||||||
|
input#chatline.form-control(type="text", maxlength="320", style="display: none")
|
||||||
|
#guestlogin.input-group
|
||||||
|
span.input-group-addon Registration Required!
|
||||||
|
//input#guestname.form-control(type="text", placeholder="Name")
|
||||||
|
button#chatsend.btn.btn-sm.btn-default Send
|
||||||
#rightcontrols.col-lg-7.col-md-7
|
#rightcontrols.col-lg-7.col-md-7
|
||||||
#plcontrol.btn-group
|
#plcontrol.btn-group
|
||||||
button#showsearch.btn.btn-sm.btn-default(title="Search for a video", data-toggle="collapse", data-target="#searchcontrol")
|
button#showsearch.btn.btn-sm.btn-default(title="Search for a video", data-toggle="collapse", data-target="#searchcontrol")
|
||||||
|
|
@ -86,12 +80,10 @@ html(lang="en")
|
||||||
span.glyphicon.glyphicon-link
|
span.glyphicon.glyphicon-link
|
||||||
button#voteskip.btn.btn-sm.btn-default(title="Voteskip")
|
button#voteskip.btn.btn-sm.btn-default(title="Voteskip")
|
||||||
span.glyphicon.glyphicon-step-forward
|
span.glyphicon.glyphicon-step-forward
|
||||||
|
#leftcontrols.col-lg-5.col-md-5
|
||||||
|
button#newpollbtn.btn.btn-sm.btn-default New Poll
|
||||||
|
|
||||||
#playlistrow.row
|
#playlistrow.row
|
||||||
#leftpane.col-lg-5.col-md-5
|
|
||||||
#leftpane-inner.row
|
|
||||||
#pollwrap.col-lg-12.col-md-12
|
|
||||||
#playlistmanagerwrap.col-lg-12.col-md-12
|
|
||||||
#rightpane.col-lg-7.col-md-7
|
#rightpane.col-lg-7.col-md-7
|
||||||
#rightpane-inner.row
|
#rightpane-inner.row
|
||||||
#searchcontrol.collapse.plcontrol-collapse.col-lg-12.col-md-12
|
#searchcontrol.collapse.plcontrol-collapse.col-lg-12.col-md-12
|
||||||
|
|
@ -153,6 +145,10 @@ html(lang="en")
|
||||||
#plmeta
|
#plmeta
|
||||||
span#plcount 0 items
|
span#plcount 0 items
|
||||||
span#pllength 00:00:00
|
span#pllength 00:00:00
|
||||||
|
#leftpane.col-lg-5.col-md-5
|
||||||
|
#leftpane-inner.row
|
||||||
|
#pollwrap.col-lg-12.col-md-12
|
||||||
|
#playlistmanagerwrap.col-lg-12.col-md-12
|
||||||
#resizewrap.row
|
#resizewrap.row
|
||||||
.col-lg-5.col-md-5
|
.col-lg-5.col-md-5
|
||||||
#videowidth.col-lg-7.col-md-7
|
#videowidth.col-lg-7.col-md-7
|
||||||
|
|
@ -243,6 +239,8 @@ html(lang="en")
|
||||||
+footer()
|
+footer()
|
||||||
script(id="socketio-js", src=sioSource)
|
script(id="socketio-js", src=sioSource)
|
||||||
script(src="/js/data.js")
|
script(src="/js/data.js")
|
||||||
|
script(src="/js/fembed.js")
|
||||||
|
script(src="/js/fchat.js")
|
||||||
script(src="/js/util.js")
|
script(src="/js/util.js")
|
||||||
script(src="/js/tabcomplete.js")
|
script(src="/js/tabcomplete.js")
|
||||||
script(src="/js/player.js")
|
script(src="/js/player.js")
|
||||||
|
|
|
||||||
|
|
@ -30,20 +30,12 @@ mixin us-general
|
||||||
label.control-label.col-sm-4(for="#us-theme") Theme
|
label.control-label.col-sm-4(for="#us-theme") Theme
|
||||||
.col-sm-8
|
.col-sm-8
|
||||||
select#us-theme.form-control
|
select#us-theme.form-control
|
||||||
|
option(value="/css/themes/fore.st.css") fore.st
|
||||||
option(value="/css/themes/light.css") Light
|
option(value="/css/themes/light.css") Light
|
||||||
option(value="/css/themes/bootstrap-theme.min.css") Bootstrap
|
option(value="/css/themes/bootstrap-theme.min.css") Bootstrap
|
||||||
option(value="/css/themes/slate.css") Slate
|
option(value="/css/themes/slate.css") Slate
|
||||||
option(value="/css/themes/cyborg.css") Cyborg
|
option(value="/css/themes/cyborg.css") Cyborg
|
||||||
option(value="/css/themes/modern.css") Modern
|
option(value="/css/themes/modern.css") Modern
|
||||||
.form-group
|
|
||||||
label.control-label.col-sm-4(for="#us-layout") Layout
|
|
||||||
.col-sm-8
|
|
||||||
select#us-layout.form-control
|
|
||||||
option(value="default") Compact
|
|
||||||
option(value="synchtube") Synchtube (flipped)
|
|
||||||
option(value="fluid") Fluid
|
|
||||||
option(value="synchtube-fluid") Synchtube + Fluid
|
|
||||||
option(value="hd") HD
|
|
||||||
.col-sm-4
|
.col-sm-4
|
||||||
.col-sm-8
|
.col-sm-8
|
||||||
p.text-danger Changing layouts may require refreshing to take effect.
|
p.text-danger Changing layouts may require refreshing to take effect.
|
||||||
|
|
@ -123,9 +115,7 @@ mixin us-chat
|
||||||
option(value="never") Never
|
option(value="never") Never
|
||||||
option(value="onlyping") Only when I am mentioned or PMed
|
option(value="onlyping") Only when I am mentioned or PMed
|
||||||
option(value="always") Always
|
option(value="always") Always
|
||||||
+rcheckbox("us-sendbtn", "Add a send button to chat")
|
|
||||||
+rcheckbox("us-no-emotes", "Disable chat emotes")
|
+rcheckbox("us-no-emotes", "Disable chat emotes")
|
||||||
+rcheckbox("us-strip-image", "Remove images from chat")
|
|
||||||
.form-group
|
.form-group
|
||||||
label.control-label.col-sm-4(for="#us-chat-tab-method") Tab completion method
|
label.control-label.col-sm-4(for="#us-chat-tab-method") Tab completion method
|
||||||
.col-sm-8
|
.col-sm-8
|
||||||
|
|
@ -139,4 +129,4 @@ mixin us-mod
|
||||||
form.form-horizontal(action="javascript:void(0)")
|
form.form-horizontal(action="javascript:void(0)")
|
||||||
+rcheckbox("us-modflair", "Show name color")
|
+rcheckbox("us-modflair", "Show name color")
|
||||||
+rcheckbox("us-shadowchat", "Show shadowmuted messages")
|
+rcheckbox("us-shadowchat", "Show shadowmuted messages")
|
||||||
+rcheckbox("us-show-ip-in-tooltip", "Show IP addresses in profile tooltip")
|
+rcheckbox("us-show-ip-in-tooltip", "Show IP addresses in profile tooltip")
|
||||||
|
|
|
||||||
|
|
@ -30,12 +30,11 @@
|
||||||
|
|
||||||
#usercount {
|
#usercount {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
flex-grow: 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#userlist {
|
#userlist {
|
||||||
width: 120px;
|
width: 120px;
|
||||||
float: left;
|
float: right;
|
||||||
border-right: 0;
|
border-right: 0;
|
||||||
font-size: 9pt;
|
font-size: 9pt;
|
||||||
list-style: none outside none;
|
list-style: none outside none;
|
||||||
|
|
|
||||||
|
|
@ -26,5 +26,5 @@ body {
|
||||||
}
|
}
|
||||||
|
|
||||||
#mainpage {
|
#mainpage {
|
||||||
padding-top: 60px;
|
padding-top: 0px;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -68,7 +68,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
// If you need more explanations, go to https://github.com/zimny-lech/CyTube-Plus/wiki/FAQ
|
// If you need more explanations, go to https://github.com/zimny-lech/CyTube-Plus/wiki/FAQ
|
||||||
|
|
||||||
UI_DefaultSynchtube = 1; // default old Synchtube layout (player and playlist on the left)
|
UI_DefaultSynchtube = 0; // default old Synchtube layout (player and playlist on the left)
|
||||||
UI_Favicon = 0; // [&] channel favicon
|
UI_Favicon = 0; // [&] channel favicon
|
||||||
UI_MiniLogo = 0; // [&] small channel logo/avatar in the top navbar
|
UI_MiniLogo = 0; // [&] small channel logo/avatar in the top navbar
|
||||||
UI_ChannelName =0; // [&] channel custom brand name
|
UI_ChannelName =0; // [&] channel custom brand name
|
||||||
|
|
@ -92,7 +92,7 @@ UI_UserCommands = 1; // [&] additional commands in the chat window
|
||||||
UI_UserMarks = 0; // [&] special signs/avatars before every message for defined users
|
UI_UserMarks = 0; // [&] special signs/avatars before every message for defined users
|
||||||
UI_Squavatars = 0; // automatic squavatars (2-colored square avatars) before every message
|
UI_Squavatars = 0; // automatic squavatars (2-colored square avatars) before every message
|
||||||
// [ REQUIRE: UI_UserMarks enabled ]
|
// [ REQUIRE: UI_UserMarks enabled ]
|
||||||
UI_UsernameMark = 1; // [&] custom mark after username (default ":")
|
UI_UsernameMark = 0; // [&] custom mark after username (default ":")
|
||||||
UI_MessagesSuffix = 0; // [&] text added to random chat messages
|
UI_MessagesSuffix = 0; // [&] text added to random chat messages
|
||||||
UI_CustomPingSound = 1; // [&] custom sound for chat notifications
|
UI_CustomPingSound = 1; // [&] custom sound for chat notifications
|
||||||
UI_SoundFilters = 0; // [&] chat sounds played after sending certain words
|
UI_SoundFilters = 0; // [&] chat sounds played after sending certain words
|
||||||
|
|
@ -115,7 +115,7 @@ UI_ChannelDatabase = 1; // [&] box with embed additional media database
|
||||||
UI_ChannelGalleries = 0; // [&] box with embed galleries
|
UI_ChannelGalleries = 0; // [&] box with embed galleries
|
||||||
UI_DisplayModeSel = 1; // selector with player display modes
|
UI_DisplayModeSel = 1; // selector with player display modes
|
||||||
UI_ChannelTheme = 1; // [&] additional default channel theme
|
UI_ChannelTheme = 1; // [&] additional default channel theme
|
||||||
UI_EmbeddingMedia = 1; // [&] possibility to embedding (displaying) images and .webm videos on the chat
|
UI_EmbeddingMedia = 0; // [&] possibility to embedding (displaying) images and .webm videos on the chat
|
||||||
UI_MediaControls = 1; // embedded video preloaded controls
|
UI_MediaControls = 1; // embedded video preloaded controls
|
||||||
// [ REQUIRE: UI_EmbeddingMedia enabled ]
|
// [ REQUIRE: UI_EmbeddingMedia enabled ]
|
||||||
UI_QuickCommandsBtns = 1; // buttons with '/clear' and '/afk' functions
|
UI_QuickCommandsBtns = 1; // buttons with '/clear' and '/afk' functions
|
||||||
|
|
@ -651,16 +651,16 @@ function customCSS(a) {
|
||||||
// set global layout according to user preferences
|
// set global layout according to user preferences
|
||||||
|
|
||||||
function setLayout() {
|
function setLayout() {
|
||||||
playerLocation(USERCONFIG.player);
|
// playerLocation(USERCONFIG.player);
|
||||||
userlistLocation(USERCONFIG.userlist);
|
// userlistLocation(USERCONFIG.userlist);
|
||||||
queueLocation(USERCONFIG.queue);
|
// queueLocation(USERCONFIG.queue);
|
||||||
queueSize(USERCONFIG.qsize);
|
// queueSize(USERCONFIG.qsize);
|
||||||
mainLocation(USERCONFIG.main);
|
// mainLocation(USERCONFIG.main);
|
||||||
motdLocation(USERCONFIG.motd);
|
// motdLocation(USERCONFIG.motd);
|
||||||
logoInsert(USERCONFIG.logo);
|
// logoInsert(USERCONFIG.logo);
|
||||||
headerMode(USERCONFIG.header);
|
// headerMode(USERCONFIG.header);
|
||||||
customCSS(USERCONFIG.css);
|
// customCSS(USERCONFIG.css);
|
||||||
refreshPlayer();
|
// refreshPlayer();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----STOP BREAKIN SHIT!
|
//-----STOP BREAKIN SHIT!
|
||||||
|
|
@ -929,7 +929,7 @@ function createSquavatar(str) {
|
||||||
// format chat messages before sending and execute commands
|
// format chat messages before sending and execute commands
|
||||||
|
|
||||||
function prepareMessage(msg) {
|
function prepareMessage(msg) {
|
||||||
if (UI_MessagesSuffix=="1") {
|
/*if (UI_MessagesSuffix=="1") {
|
||||||
if ((typeof MessagesSuffix_Percentage!=="number") || MessagesSuffix_Percentage<0) {
|
if ((typeof MessagesSuffix_Percentage!=="number") || MessagesSuffix_Percentage<0) {
|
||||||
MessagesSuffix_Percentage='10';
|
MessagesSuffix_Percentage='10';
|
||||||
}
|
}
|
||||||
|
|
@ -1085,7 +1085,7 @@ function prepareMessage(msg) {
|
||||||
} else {
|
} else {
|
||||||
COMMAND=false;
|
COMMAND=false;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2292,7 +2292,7 @@ zerorow = $('<div id="zerorow" class="row" />').insertBefore("#motdrow");
|
||||||
|
|
||||||
// adding top logo row
|
// adding top logo row
|
||||||
|
|
||||||
azukirow = $('<div id="azukirow" class="row" />').insertBefore(zerorow);
|
//azukirow = $('<div id="azukirow" class="row" />').insertBefore(zerorow);
|
||||||
|
|
||||||
// adding video wrap if user has enabled "Hide Player" option
|
// adding video wrap if user has enabled "Hide Player" option
|
||||||
|
|
||||||
|
|
@ -2347,7 +2347,7 @@ $("#rightpane").prepend($("#videocontrols").detach());
|
||||||
$("#rightpane").prepend($("#plcontrol").detach());
|
$("#rightpane").prepend($("#plcontrol").detach());
|
||||||
$("#leftpane").prepend($("#newpollbtn").detach());
|
$("#leftpane").prepend($("#newpollbtn").detach());
|
||||||
$("#plcontrol").prepend($("#showmediaurl").detach());
|
$("#plcontrol").prepend($("#showmediaurl").detach());
|
||||||
$("#leftpane").prepend($("#emotelistbtn").detach());
|
//$("#leftpane").prepend($("#emotelistbtn").detach());
|
||||||
|
|
||||||
// header and footer links open in a new tab
|
// header and footer links open in a new tab
|
||||||
|
|
||||||
|
|
@ -3342,16 +3342,16 @@ if (UI_UserStatistics=="1") {
|
||||||
// alter chat messages formatting
|
// alter chat messages formatting
|
||||||
// DEV NOTE: this is extended function from CyTube "util.js" file
|
// DEV NOTE: this is extended function from CyTube "util.js" file
|
||||||
|
|
||||||
if (ALTERCHATFORMAT) {
|
/*if (ALTERCHATFORMAT) {
|
||||||
function formatChatMessage(data, last) {
|
function formatChatMessage(data, last) {
|
||||||
if (!data.meta || data.msgclass) {
|
if (!data.meta || data.msgclass) {
|
||||||
data.meta = {addClass:data.msgclass, addClassToNameAndTimestamp:data.msgclass};
|
data.meta = {addClass:data.msgclass, addClassToNameAndTimestamp:data.msgclass};
|
||||||
}
|
}
|
||||||
|
|
||||||
skip=data.username===last.name;
|
skip=data.username===last.name;
|
||||||
data.meta.addClass==="server-whisper" ? skip=true : '';
|
data.meta.addClass==="server-whisper" ? skip=true : '';*/
|
||||||
data.msg.match(/^\s*<strong>\w+\s*:\s*<\/strong>\s*/) ? skip=false : '';
|
//*data.msg.match(/^\s*<strong>\w+\s*:\s*<\/strong>\s*/) ? skip=false : '';/*
|
||||||
data.meta.forceShowName ? skip=false : '';
|
/*data.meta.forceShowName ? skip=false : '';
|
||||||
data.msg=execEmotes(data.msg);
|
data.msg=execEmotes(data.msg);
|
||||||
|
|
||||||
last.name = data.username;
|
last.name = data.username;
|
||||||
|
|
@ -3473,7 +3473,7 @@ if (ALTERCHATFORMAT) {
|
||||||
|
|
||||||
return div;
|
return div;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// client-side chat buffer for playing sounds
|
// client-side chat buffer for playing sounds
|
||||||
|
|
||||||
|
|
@ -3507,7 +3507,7 @@ addChatMessage=function(data) {
|
||||||
|
|
||||||
// fix formatting and sending chat messages
|
// fix formatting and sending chat messages
|
||||||
// DEV NOTE: this are extended events from CyTube "util.js" file
|
// DEV NOTE: this are extended events from CyTube "util.js" file
|
||||||
|
/*
|
||||||
$("#chatline, #chatbtn").unbind();
|
$("#chatline, #chatbtn").unbind();
|
||||||
|
|
||||||
$("#chatline").on("keydown", function(ev) {
|
$("#chatline").on("keydown", function(ev) {
|
||||||
|
|
@ -3580,7 +3580,7 @@ $("#chatbtn").on("click", function() {
|
||||||
$("#chatline").val('');
|
$("#chatline").val('');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
// fix layout behaviour after resizing
|
// fix layout behaviour after resizing
|
||||||
// DEV NOTE: this is extended function from CyTube "util.js" file
|
// DEV NOTE: this is extended function from CyTube "util.js" file
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -647,6 +647,7 @@ Callbacks = {
|
||||||
userLeave: function(data) {
|
userLeave: function(data) {
|
||||||
var user = findUserlistItem(data.name);
|
var user = findUserlistItem(data.name);
|
||||||
if(user !== null)
|
if(user !== null)
|
||||||
|
freeColor(data.name);
|
||||||
user.remove();
|
user.remove();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
74
www/js/fchat.js
Normal file
74
www/js/fchat.js
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
//var colorList = ["#ff2e2e", "#5f5cff", "#4de024", "#f4861f", "##b88e8e", "#8f8eb8", "#8eb1b8", "#8eb897", "#abb88e"];
|
||||||
|
var colorList = ["userlist_color0", "userlist_color1", "userlist_color2", "userlist_color3", "userlist_color4", "userlist_color5", "userlist_color6"];
|
||||||
|
|
||||||
|
var usrColors = ([[],[]]);
|
||||||
|
|
||||||
|
function assignColors(name){
|
||||||
|
if(!usrColors[0].includes(name)){
|
||||||
|
color = colorList[Math.floor(Math.random()*colorList.length)];
|
||||||
|
usrColors[0].push(name);
|
||||||
|
usrColors[1].push(color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function freeColor(name){
|
||||||
|
if(usrColors[0].includes(name)){
|
||||||
|
let itemi = usrColors[0].indexOf(name);
|
||||||
|
usrColors[0].splice(itemi, 1);
|
||||||
|
usrColors[1].splice(itemi, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getColor(name){
|
||||||
|
if((usrColors[0].indexOf(name)) != null){
|
||||||
|
return usrColors[1][usrColors[0].indexOf(name)];
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function chatpaste(str){
|
||||||
|
var chatline = $("#chatline")[0];
|
||||||
|
if(chatline.value === ''){
|
||||||
|
chatline.value = str;
|
||||||
|
}else{
|
||||||
|
chatline.value += ' ' + str;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function storeToke(toke){//process and store chats that start with ! for local toke tab completion dictionary
|
||||||
|
//let temptoke = JSON.parse(localStorage.getItem("localTokes"));
|
||||||
|
let temptoke = loadTokes();//load current toaks into temp var
|
||||||
|
if(temptoke === null || temptoke === undefined){//if its babbies first tokem
|
||||||
|
temptoke = [];//create var
|
||||||
|
if(toke != "!toke"){
|
||||||
|
temptoke.push("!toke");//push that shit
|
||||||
|
}
|
||||||
|
temptoke.push(toke);//push that shit
|
||||||
|
}else{//otherwise
|
||||||
|
if(!temptoke.includes(toke)){//if it isn't there
|
||||||
|
temptoke.push(toke);//add it my d00d
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
localStorage.setItem("localTokes", JSON.stringify(temptoke));//slap that sum' bitch back inta the closet
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadTokes(){
|
||||||
|
return JSON.parse(localStorage.getItem("localTokes"));//load current toaks into temp var
|
||||||
|
}
|
||||||
|
|
||||||
|
function chatsmack(str){
|
||||||
|
var chatline = $("#chatline")[0];
|
||||||
|
let buf = chatline.value;
|
||||||
|
chatline.value = str;
|
||||||
|
callChat();
|
||||||
|
chatline.value = buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
Storage.prototype.setObj = function(key, obj) {
|
||||||
|
return this.setItem(key, JSON.stringify(obj))
|
||||||
|
}
|
||||||
|
Storage.prototype.getObj = function(key) {
|
||||||
|
return JSON.parse(this.getItem(key))
|
||||||
|
}
|
||||||
53
www/js/fembed.js
Normal file
53
www/js/fembed.js
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
img_ext = ['jpg', 'jpg:large', 'jpeg', 'png', 'tiff', 'gif'];
|
||||||
|
vid_ext = ['webm', 'gifv', 'mp4'];
|
||||||
|
proto = ['http', 'https'];
|
||||||
|
|
||||||
|
function checkMedia(fname){//check if link points ot media
|
||||||
|
var fext = fname.split('.').pop().toLowerCase();//pop file ext
|
||||||
|
if(img_ext.includes(fext)){//if its an img
|
||||||
|
return 1;
|
||||||
|
}else if(vid_ext.includes(fext)){//if its a vid
|
||||||
|
return 2;
|
||||||
|
}else{//nada
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkEmbed(word, isEmote){
|
||||||
|
let regex = /[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/g;//symbol mask for username
|
||||||
|
let tregex = /["#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/g;//symbol mask for tokes
|
||||||
|
let stripd = word.replace(regex, '');//stripped word for username detection
|
||||||
|
let tstripd = word.replace(tregex, '');//stripeed word for !toke command detection
|
||||||
|
if(word.includes(proto[0]) || word.includes(proto[1])){//check if it starts with a supported proto
|
||||||
|
if(checkMedia(word) != 0){//check if media
|
||||||
|
return '<img src="' + word + '" style="max-height: 13em">';//embed media
|
||||||
|
}else if(!isEmote){
|
||||||
|
return '<a href="' + word + '">' + word + '</a>';//embed link
|
||||||
|
}else{
|
||||||
|
return word;
|
||||||
|
}
|
||||||
|
}else if(usrColors[0].includes(stripd)){//if username
|
||||||
|
|
||||||
|
let usersplit = word.split(stripd,2);//split word by stripd, array of before and after name
|
||||||
|
|
||||||
|
return usersplit[0] + '<span id="' + getColor(stripd) + '" onclick="chatpaste(\'' + stripd + '\')">' + stripd + '</span>' + usersplit[1];//decorate name
|
||||||
|
}else if(tstripd.charAt(0) === '!'){//if !toke command(same logic as above)
|
||||||
|
let tokesplit = word.split(tstripd,2);
|
||||||
|
return tokesplit[0] + '<a id="toke" onclick="chatsmack(\'' + tstripd + '\')">' + tstripd + '</a>' + tokesplit[1];
|
||||||
|
}else{
|
||||||
|
return word;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function findEmbed(str){//check entire string for embeds
|
||||||
|
let isEmote = str.includes('class="channel-emote"');
|
||||||
|
var splts = str.split(/\s/g);//split string by whitespace
|
||||||
|
let baked = checkEmbed(splts[0], isEmote) + ' ';//work string, set first item to checkEmbed of first word
|
||||||
|
for(i = 1; i < splts.length; i++){//run through words
|
||||||
|
baked += checkEmbed(splts[i], isEmote) + ' ';//checkEmbed() and add to baked with a space after it
|
||||||
|
}
|
||||||
|
return baked;//return baked ;p
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -142,7 +142,7 @@ CyTube.tabCompleteMethods['Cycle options'] = function (input, position, options,
|
||||||
context.matches = matches;
|
context.matches = matches;
|
||||||
context.tabIndex = 0;
|
context.tabIndex = 0;
|
||||||
return {
|
return {
|
||||||
text: input.substring(0, start) + matches[0] + ' ' + input.substring(position),
|
text: input.substring(0, start) + matches[0] + input.substring(position),
|
||||||
newPosition: start + matches[0].length + 1
|
newPosition: start + matches[0].length + 1
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
45
www/js/ui.js
45
www/js/ui.js
|
|
@ -15,8 +15,8 @@ $(window).focus(CyTube.ui.onPageFocus).blur(CyTube.ui.onPageBlur);
|
||||||
$(".modal").focus(CyTube.ui.onPageFocus);
|
$(".modal").focus(CyTube.ui.onPageFocus);
|
||||||
|
|
||||||
$("#togglemotd").click(function () {
|
$("#togglemotd").click(function () {
|
||||||
var hidden = $("#motd")[0].style.display === "none";
|
var hidden = $("#motdwrap")[0].style.display === "none";
|
||||||
$("#motd").toggle();
|
$("#motdwrap").toggle();
|
||||||
if (hidden) {
|
if (hidden) {
|
||||||
$("#togglemotd").find(".glyphicon-plus")
|
$("#togglemotd").find(".glyphicon-plus")
|
||||||
.removeClass("glyphicon-plus")
|
.removeClass("glyphicon-plus")
|
||||||
|
|
@ -60,7 +60,7 @@ $("#usercount").mouseenter(function (ev) {
|
||||||
var popup = $("<div/>")
|
var popup = $("<div/>")
|
||||||
.addClass("profile-box")
|
.addClass("profile-box")
|
||||||
.css("top", (ev.clientY + 5) + "px")
|
.css("top", (ev.clientY + 5) + "px")
|
||||||
.css("left", (ev.clientX) + "px")
|
.css("left", (ev.clientX - 120) + "px")
|
||||||
.appendTo($("#usercount"));
|
.appendTo($("#usercount"));
|
||||||
|
|
||||||
var contents = "";
|
var contents = "";
|
||||||
|
|
@ -78,7 +78,7 @@ $("#usercount").mousemove(function (ev) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
popup.css("top", (ev.clientY + 5) + "px");
|
popup.css("top", (ev.clientY + 5) + "px");
|
||||||
popup.css("left", (ev.clientX) + "px");
|
popup.css("left", (ev.clientX - 120) + "px");
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#usercount").mouseleave(function () {
|
$("#usercount").mouseleave(function () {
|
||||||
|
|
@ -138,12 +138,22 @@ function chatTabComplete(chatline) {
|
||||||
var userlistElems = document.getElementById("userlist").children;
|
var userlistElems = document.getElementById("userlist").children;
|
||||||
for (var i = 0; i < userlistElems.length; i++) {
|
for (var i = 0; i < userlistElems.length; i++) {
|
||||||
var username = userlistElems[i].children[1].textContent;
|
var username = userlistElems[i].children[1].textContent;
|
||||||
if (firstWord) {
|
//if (firstWord) {
|
||||||
username += ':';
|
// username += ':';
|
||||||
}
|
//}
|
||||||
options.push(username);
|
options.push(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let tokeList = loadTokes();
|
||||||
|
if(tokeList === undefined || tokeList === null){
|
||||||
|
tokeList = [];//create var
|
||||||
|
tokeList.push("!toke");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < tokeList.length; i++) {
|
||||||
|
options.push(tokeList[i]);
|
||||||
|
}
|
||||||
|
|
||||||
CHANNEL.emotes.forEach(function (emote) {
|
CHANNEL.emotes.forEach(function (emote) {
|
||||||
options.push(emote.name);
|
options.push(emote.name);
|
||||||
});
|
});
|
||||||
|
|
@ -165,10 +175,8 @@ function chatTabComplete(chatline) {
|
||||||
chatline.setSelectionRange(result.newPosition, result.newPosition);
|
chatline.setSelectionRange(result.newPosition, result.newPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#chatline").keydown(function(ev) {
|
function callChat(){
|
||||||
// Enter/return
|
if (CHATTHROTTLE) {
|
||||||
if(ev.keyCode == 13) {
|
|
||||||
if (CHATTHROTTLE) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var msg = $("#chatline").val();
|
var msg = $("#chatline").val();
|
||||||
|
|
@ -185,6 +193,10 @@ $("#chatline").keydown(function(ev) {
|
||||||
meta.modflair = CLIENT.rank;
|
meta.modflair = CLIENT.rank;
|
||||||
msg = msg.substring(3);
|
msg = msg.substring(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (msg.charAt(0) === '!' && msg != "!toke"){
|
||||||
|
storeToke(msg);
|
||||||
|
}
|
||||||
|
|
||||||
socket.emit("chatMsg", {
|
socket.emit("chatMsg", {
|
||||||
msg: msg,
|
msg: msg,
|
||||||
|
|
@ -195,6 +207,12 @@ $("#chatline").keydown(function(ev) {
|
||||||
$("#chatline").val("");
|
$("#chatline").val("");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#chatline").keydown(function(ev) {
|
||||||
|
// Enter/return
|
||||||
|
if(ev.keyCode == 13) {
|
||||||
|
callChat();
|
||||||
}
|
}
|
||||||
else if(ev.keyCode == 9) { // Tab completion
|
else if(ev.keyCode == 9) { // Tab completion
|
||||||
try {
|
try {
|
||||||
|
|
@ -228,6 +246,11 @@ $("#chatline").keydown(function(ev) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$("#chatsend").click(function () {
|
||||||
|
callChat();
|
||||||
|
});
|
||||||
|
|
||||||
/* poll controls */
|
/* poll controls */
|
||||||
$("#newpollbtn").click(showPollMenu);
|
$("#newpollbtn").click(showPollMenu);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
function makeAlert(title, text, klass, textOnly) {
|
function makeAlert(title, text, klass, textOnly) {
|
||||||
if(!klass) {
|
if(!klass) {
|
||||||
klass = "alert-info";
|
klass = "alert-info";
|
||||||
}
|
}
|
||||||
|
|
@ -749,7 +749,7 @@ function applyOpts() {
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#chatbtn").remove();
|
$("#chatbtn").remove();
|
||||||
if(USEROPTS.chatbtn) {
|
if(false) {
|
||||||
var btn = $("<button/>").addClass("btn btn-default btn-block")
|
var btn = $("<button/>").addClass("btn btn-default btn-block")
|
||||||
.text("Send")
|
.text("Send")
|
||||||
.attr("id", "chatbtn")
|
.attr("id", "chatbtn")
|
||||||
|
|
@ -1530,6 +1530,10 @@ function formatChatMessage(data, last) {
|
||||||
addClassToNameAndTimestamp: data.msgclass
|
addClassToNameAndTimestamp: data.msgclass
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
//break if toke command
|
||||||
|
if(data.msg.charAt() === '!'){
|
||||||
|
return;
|
||||||
|
}
|
||||||
// Phase 1: Determine whether to show the username or not
|
// Phase 1: Determine whether to show the username or not
|
||||||
var skip = data.username === last.name;
|
var skip = data.username === last.name;
|
||||||
if(data.meta.addClass === "server-whisper")
|
if(data.meta.addClass === "server-whisper")
|
||||||
|
|
@ -1553,7 +1557,7 @@ function formatChatMessage(data, last) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add timestamps (unless disabled)
|
// Add timestamps (unless disabled)
|
||||||
if (USEROPTS.show_timestamps) {
|
if (USEROPTS.show_timestamps && data.meta.modflair != 4) {
|
||||||
var time = $("<span/>").addClass("timestamp").appendTo(div);
|
var time = $("<span/>").addClass("timestamp").appendTo(div);
|
||||||
var timestamp = new Date(data.time).toTimeString().split(" ")[0];
|
var timestamp = new Date(data.time).toTimeString().split(" ")[0];
|
||||||
time.text("["+timestamp+"] ");
|
time.text("["+timestamp+"] ");
|
||||||
|
|
@ -1567,25 +1571,34 @@ function formatChatMessage(data, last) {
|
||||||
if (!skip) {
|
if (!skip) {
|
||||||
name.appendTo(div);
|
name.appendTo(div);
|
||||||
}
|
}
|
||||||
$("<strong/>").addClass("username").text(data.username + ": ").appendTo(name);
|
assignColors(data.username);
|
||||||
if (data.meta.modflair) {
|
|
||||||
name.addClass(getNameColor(data.meta.modflair));
|
|
||||||
}
|
|
||||||
if (data.meta.addClass && data.meta.addClassToNameAndTimestamp) {
|
|
||||||
name.addClass(data.meta.addClass);
|
|
||||||
}
|
|
||||||
if (data.meta.superadminflair) {
|
if (data.meta.superadminflair) {
|
||||||
|
$("<strong/>").addClass("username").attr('onclick',"chatpaste('" + data.username + "')").text(data.username + "> ").appendTo(name);
|
||||||
name.addClass("label")
|
name.addClass("label")
|
||||||
.addClass(data.meta.superadminflair.labelclass);
|
.addClass(data.meta.superadminflair.labelclass);
|
||||||
$("<span/>").addClass(data.meta.superadminflair.icon)
|
$("<span/>").addClass(data.meta.superadminflair.icon)
|
||||||
.addClass("glyphicon")
|
.addClass("glyphicon")
|
||||||
.css("margin-right", "3px")
|
.css("margin-right", "3px")
|
||||||
.prependTo(name);
|
.prependTo(name);
|
||||||
|
}else if (data.meta.modflair) {
|
||||||
|
if(data.meta.modflair === 4){
|
||||||
|
$("<strong/>").addClass("username").attr('onclick',"chatpaste('" + data.username + "')").text(data.username + "\n").appendTo(name);
|
||||||
|
}else{
|
||||||
|
$("<strong/>").addClass("username").attr('onclick',"chatpaste('" + data.username + "')").text(data.username + "> ").appendTo(name);
|
||||||
|
}
|
||||||
|
name.addClass(getNameColor(data.meta.modflair));
|
||||||
|
}else{
|
||||||
|
$("<strong/>").addClass("username").attr('onclick',"chatpaste('" + data.username + "')").attr('id',getColor(data.username)).text(data.username + "> ").appendTo(name);
|
||||||
}
|
}
|
||||||
|
if (data.meta.addClass && data.meta.addClassToNameAndTimestamp) {
|
||||||
|
name.addClass(data.meta.addClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Add the message itself
|
// Add the message itself
|
||||||
var message = $("<span/>").appendTo(div);
|
var message = $("<span/>").appendTo(div);
|
||||||
message[0].innerHTML = data.msg;
|
message[0].innerHTML = findEmbed(data.msg);
|
||||||
|
|
||||||
|
|
||||||
// For /me the username is part of the message
|
// For /me the username is part of the message
|
||||||
if (data.meta.action) {
|
if (data.meta.action) {
|
||||||
|
|
@ -1614,6 +1627,9 @@ function addChatMessage(data) {
|
||||||
// a message, it highlights messages from that user
|
// a message, it highlights messages from that user
|
||||||
var safeUsername = data.username.replace(/[^\w-]/g, '\\$');
|
var safeUsername = data.username.replace(/[^\w-]/g, '\\$');
|
||||||
div.addClass("chat-msg-" + safeUsername);
|
div.addClass("chat-msg-" + safeUsername);
|
||||||
|
if(data.meta.modflair === 4){
|
||||||
|
div.attr("id", "botmsg");
|
||||||
|
}
|
||||||
div.appendTo(msgBuf);
|
div.appendTo(msgBuf);
|
||||||
div.mouseover(function() {
|
div.mouseover(function() {
|
||||||
$(".chat-msg-" + safeUsername).addClass("nick-hover");
|
$(".chat-msg-" + safeUsername).addClass("nick-hover");
|
||||||
|
|
@ -3442,8 +3458,9 @@ CyTube._internal_do_not_use_or_you_will_be_banned.addUserToList = function (data
|
||||||
if(user !== null)
|
if(user !== null)
|
||||||
user.remove();
|
user.remove();
|
||||||
}
|
}
|
||||||
|
assignColors(data.name);
|
||||||
var div = $("<div/>")
|
var div = $("<div/>")
|
||||||
.addClass("userlist_item");
|
.addClass("userlist_item").attr('id', getColor(data.name));
|
||||||
var icon = $("<span/>").appendTo(div);
|
var icon = $("<span/>").appendTo(div);
|
||||||
var nametag = $("<span/>").text(data.name).appendTo(div);
|
var nametag = $("<span/>").text(data.name).appendTo(div);
|
||||||
div.data("name", data.name);
|
div.data("name", data.name);
|
||||||
|
|
|
||||||
|
|
@ -10222,7 +10222,7 @@ var Player = (function (_Component) {
|
||||||
// Original tag settings stored in options
|
// Original tag settings stored in options
|
||||||
// now remove immediately so native controls don't flash.
|
// now remove immediately so native controls don't flash.
|
||||||
// May be turned back on by HTML5 tech if nativeControlsForTouch is true
|
// May be turned back on by HTML5 tech if nativeControlsForTouch is true
|
||||||
tag.controls = false;
|
tag.controls = true;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Store the internal state of scrubbing
|
* Store the internal state of scrubbing
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue