view release on metacpan or search on metacpan
META.yml
MYMETA.yml
share/buffer.db
share/buffer.sql
share/static/alice-dark.css
share/static/alice-default.css
share/static/alice-solarized.css
share/static/alice.js
share/static/beep.mp3
share/static/favicon.ico
share/static/image/alice.png
share/static/image/aquaTabClose.png
share/static/image/arrow.png
share/static/image/background-self.png
share/static/image/background.png
share/static/image/config.png
share/static/image/external.png
share/static/image/formatting.png
share/static/image/loading.gif
share/static/image/logo.png
share/static/image/logo2x.png
share/static/image/logo2x.txt
share/static/image/overflow-active.png
share/static/image/overflow.png
share/static/image/pause.png
share/static/image/play.png
share/static/image/privateChatTab.png
share/static/image/privateChatTabNewMessage.png
share/static/image/roomTab.png
share/static/image/roomTabDisabled.png
share/static/image/roomTabNewHighlightMessage.png
share/static/image/roomTabNewMessage.png
share/static/image/shadow-bottom.png
share/static/image/shadow-top.png
share/static/image/slider-right.png
share/static/image/slider.png
share/static/image/smartTranscriptTab.png
share/static/image/smartTranscriptTabActivity.png
share/static/image/speech.png
share/static/image/sprites.png
share/static/image/terminal.png
share/static/WebSocketMain.swf
share/templates/alice_menu.html
share/templates/avatargrid.html
share/templates/config.html
share/templates/event.html
share/templates/help.html
share/templates/index_footer.html
share/templates/index_head.html
share/templates/join.html
share/templates/login.html
lib/Alice/IRC.pm view on Meta::CPAN
use AnyEvent;
use AnyEvent::IRC::Client;
use AnyEvent::IRC::Util qw/parse_irc_msg/;
use List::MoreUtils qw/any/;
use Digest::MD5 qw/md5_hex/;
use Any::Moose;
use Encode;
my $email_re = qr/([^<\s]+@[^\s>]+\.[^\s>]+)/;
my $image_re = qr/(https?:\/\/\S+(?:jpe?g|png|gif))/i;
{
no warnings;
# YUCK!!!
*AnyEvent::IRC::Connection::_feed_irc_data = sub {
my ($self, $line) = @_;
my $m = parse_irc_msg (decode ("utf8", $line));
$self->event (read => $m);
$self->event ('irc_*' => $m);
share/static/alice-dark.css view on Meta::CPAN
width: 24px;
height: 24px;
z-index: 905; }
div#join_button {
position: absolute;
bottom: 0px;
right: 12px;
width: 24px;
height: 24px;
background: url(image/sprites.png) -32px -36px no-repeat;
cursor: pointer; }
div#join_button:hover {
background: url(image/sprites.png) -32px -56px no-repeat; }
div#tab_bar div#tabset_dropdown {
position: absolute;
bottom: 0px;
left: 0px;
background: url(image/sprites.png) -29px 4px no-repeat;
opacity: 1;
cursor: pointer; }
div#tab_bar div#tabset_dropdown:hover {
background: url(image/sprites.png) -29px -16px no-repeat; }
div#tab_bar .dropdown.active {
opacity: 1;
cursor: pointer; }
div#tab_menu_left {
position: absolute;
left: 24px;
bottom: 0px;
border-right: 1px solid #222222; }
share/static/alice-dark.css view on Meta::CPAN
div#tab_menu_right ul {
right: -1px;
left: auto; }
.dropdown li.selectedset,
.dropdown li.unread {
font-weight: bold; }
.tab_menu.active {
background: url(image/sprites.png) 4px -275px no-repeat; }
#tab_menu_left.tab_menu.active {
background: url(image/sprites.png) -29px -275px no-repeat; }
.tab_menu:hover,
.tab_menu.open {
background: url(image/sprites.png) 4px -175px no-repeat; }
#tab_menu_left.tab_menu:hover,
#tab_menu_left.tab_menu.open {
background: url(image/sprites.png) -29px -175px no-repeat; }
.tab_menu.unread {
background: url(image/sprites.png) 4px -195px no-repeat; }
#tab_menu_left.tab_menu.unread {
background: url(image/sprites.png) -29px -195px no-repeat; }
.tab_menu.highlight {
background: url(image/sprites.png) 4px -236px no-repeat; }
#tab_menu_left.tab_menu.highlight {
background: url(image/sprites.png) -29px -236px no-repeat; }
div#config_menu {
top: 0px;
left: 0px;
height: 17px;
border: #fff;
border: 1px solid #999999;
border-bottom: 1px solid #333333;
border-right: 1px solid #333333;
cursor: pointer;
position: absolute;
z-index: 902;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAaCAYAAAADiYpyAAADG0lEQVRYw+2ZS0hVURSGr9qVBipGDysaZUIRRQ9u70FlgwYZFTRp0ItIgqKixEERBE2i6A1FWUjSKKGoBiVZEEnRw8oKa9KLoIcQZWqW5teg/8DicM6596gHruiBhey19tp7r+/svfY61xgQGxBiAxAiBpEJtLpkRn...
background-color: #555555;
background-size: 33px 13px;
width: 50px; }
div#config_menu > ul {
margin-left: -1px; }
@media screen and (-webkit-device-pixel-ratio: 2) {
div#config_menu {
top: 0px;
left: 0px;
height: 17px;
border: #fff;
border: 1px solid #999999;
border-bottom: 1px solid #333333;
border-right: 1px solid #333333;
cursor: pointer;
position: absolute;
z-index: 902;
background: url(image/logo2x.png) center center no-repeat;
-webkit-background-size: 33px 13px;
background-color: #555555;
width: 53px; } }
div#config_menu ul ul {
left: 100%;
right: auto;
margin-left: -2px; }
div#config_menu.open,
div#config_menu:hover {
share/static/alice-dark.css view on Meta::CPAN
right: 0px; }
div#nicklist_toggle {
position: absolute;
text-align: center;
width: 0px;
height: 50px;
margin-top: -25px;
top: 50%;
right: 15px;
background: url(image/slider.png) center center no-repeat;
background-color: #444444;
border: 1px solid #222222;
-webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);
-webkit-transition-property: opacity, width;
-webkit-transition-duration: 0.3s, 0.2s;
-webkit-transition-timing-function: ease-in-out;
-moz-transition-property: opacity, width;
-moz-transition-duration: 0.3s, 0.2s;
-moz-transition-timing-function: ease-in-out;
border-radius: 2px;
color: white;
font-size: 14px;
z-index: 902;
cursor: pointer;
opacity: 0; }
div#nicklist_toggle:hover {
background-color: #3a3a3a; }
div#windows.nicklist div#nicklist_toggle {
background-image: url(image/slider-right.png); }
div#nicklist_toggle.visible,
div#nicklist_toggle:hover,
div#nicklist_toggle:active {
opacity: 1;
width: 12px; }
div#windows.nicklist div#nicklist_toggle {
right: 135px; }
share/static/alice-dark.css view on Meta::CPAN
width: 5000px;
-webkit-transition: left 0.25s ease-in-out;
-moz-transition: left 0.25s ease-in-out; }
div#tab_bar {
bottom: 0px;
left: 0px;
right: 0px;
height: 25px;
position: absolute;
background: url(image/sprites.png) 0px -300px repeat-x #444444; }
div#tabs_container {
position: absolute;
top: 0px;
bottom: 0px;
right: 60px;
left: 48px;
overflow: hidden; }
ul#tabs li {
float: left;
margin: 0;
margin-left: -1px;
color: white;
background: url(image/sprites.png) 0px -300px repeat-x #444444;
opacity: 1 !important; }
ul#tabs li.hidden {
display: none; }
ul#tabs li.visible {
display: block; }
ul#tabs li div.hit_area {
border: 1px solid #222222;
share/static/alice-dark.css view on Meta::CPAN
ul#tabs li.active {
height: 25px;
z-index: 903;
background: #444444; }
ul#tabs li.active:hover div.hit_area {
background: #333333; }
ul#tabs li:hover div.hit_area {
background: #3a3a3a;
background: url(image/sprites.png) 0px -300px repeat-x #3a3a3a; }
div#topic {
position: absolute;
top: 0px;
left: 0px;
right: 0px;
background: #3a3a3a;
text-align: center;
border-top: 1px solid #666666;
border-bottom: 1px solid #333333;
share/static/alice-dark.css view on Meta::CPAN
color: white;
text-decoration: none; }
div.tab_button {
width: 16px;
height: 16px;
float: left;
margin-right: 6px; }
li.channel_tab div.tab_button {
background: url(image/sprites.png) 0px -80px no-repeat; }
li.loading.channel_tab div.tab_button {
background: url(image/sprites.png) -38px -80px no-repeat; }
li.privmsg_tab div.tab_button {
background: url(image/sprites.png) 0px -120px no-repeat; }
li.loading.privmsg_tab div.tab_button {
background: url(image/sprites.png) -38px -140px no-repeat; }
li.info_tab div.tab_button {
background: url(image/sprites.png) 0px 0px no-repeat; }
li.loading.info_tab div.tab_button {
background: url(image/sprites.png) -39px -160px no-repeat; }
ul#tabs li.disabled.channel_tab div.tab_button:hover,
ul#tabs li.active div.tab_button:hover {
background: url(image/sprites.png) 1px -260px no-repeat; }
ul#tabs li.unread.channel_tab div.tab_button {
background: url(image/sprites.png) 0px -20px no-repeat; }
ul#tabs li.highlight.privmsg_tab div.tab_button,
ul#tabs li.unread.privmsg_tab div.tab_button {
background: url(image/sprites.png) 0 -100px no-repeat; }
ul#tabs li.highlight.channel_tab div.tab_button {
background: url(image/sprites.png) 0 -40px no-repeat; }
ul#tabs li.disabled.channel_tab div.tab_button {
background: url(image/sprites.png) 0 -60px no-repeat; }
div#help {
position: absolute;
z-index: 980;
background: rgba(0, 0, 0, 0.8);
color: #fff;
left: 20px;
right: 20px;
top: 25px;
bottom: 60px;
share/static/alice-dark.css view on Meta::CPAN
bottom: auto; }
.dropdown.bottom > ul ul {
bottom: -1px;
top: auto; }
.dropdown li.separate-bottom {
border-bottom: 1px solid #3a3a3a; }
.dropdown li.submenu {
background: url(image/arrow.png) center right no-repeat; }
.dropdown li.submenu:hover {
background: url(image/arrow.png) #3a3a3a center right no-repeat; }
.dropdown > ul li.submenu:hover ul {
display: block; }
body > div.copybuffer {
overflow: hidden;
position: absolute;
top: -500px;
height: 1px; }
share/static/alice-default.css view on Meta::CPAN
width: 24px;
height: 24px;
z-index: 905; }
div#join_button {
position: absolute;
bottom: 0px;
right: 12px;
width: 24px;
height: 24px;
background: url(image/sprites.png) -32px -36px no-repeat;
cursor: pointer; }
div#join_button:hover {
background: url(image/sprites.png) -32px -56px no-repeat; }
div#tab_bar div#tabset_dropdown {
position: absolute;
bottom: 0px;
left: 0px;
background: url(image/sprites.png) -29px 4px no-repeat;
opacity: 1;
cursor: pointer; }
div#tab_bar div#tabset_dropdown:hover {
background: url(image/sprites.png) -29px -16px no-repeat; }
div#tab_bar .dropdown.active {
opacity: 1;
cursor: pointer; }
div#tab_menu_left {
position: absolute;
left: 24px;
bottom: 0px;
border-right: 1px solid #999999; }
share/static/alice-default.css view on Meta::CPAN
div#tab_menu_right ul {
right: -1px;
left: auto; }
.dropdown li.selectedset,
.dropdown li.unread {
font-weight: bold; }
.tab_menu.active {
background: url(image/sprites.png) 4px -275px no-repeat; }
#tab_menu_left.tab_menu.active {
background: url(image/sprites.png) -29px -275px no-repeat; }
.tab_menu:hover,
.tab_menu.open {
background: url(image/sprites.png) 4px -175px no-repeat; }
#tab_menu_left.tab_menu:hover,
#tab_menu_left.tab_menu.open {
background: url(image/sprites.png) -29px -175px no-repeat; }
.tab_menu.unread {
background: url(image/sprites.png) 4px -195px no-repeat; }
#tab_menu_left.tab_menu.unread {
background: url(image/sprites.png) -29px -195px no-repeat; }
.tab_menu.highlight {
background: url(image/sprites.png) 4px -236px no-repeat; }
#tab_menu_left.tab_menu.highlight {
background: url(image/sprites.png) -29px -236px no-repeat; }
div#config_menu {
top: 0px;
left: 0px;
height: 17px;
border: #fff;
border: 1px solid #cccccc;
border-bottom: 1px solid #555555;
border-right: 1px solid #555555;
cursor: pointer;
position: absolute;
z-index: 902;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAaCAYAAAADiYpyAAADG0lEQVRYw+2ZS0hVURSGr9qVBipGDysaZUIRRQ9u70FlgwYZFTRp0ItIgqKixEERBE2i6A1FWUjSKKGoBiVZEEnRw8oKa9KLoIcQZWqW5teg/8DicM6596gHruiBhey19tp7r+/svfY61xgQGxBiAxAiBpEJtLpkRn...
background-color: #999999;
background-size: 33px 13px;
width: 50px; }
div#config_menu > ul {
margin-left: -1px; }
@media screen and (-webkit-device-pixel-ratio: 2) {
div#config_menu {
top: 0px;
left: 0px;
height: 17px;
border: #fff;
border: 1px solid #cccccc;
border-bottom: 1px solid #555555;
border-right: 1px solid #555555;
cursor: pointer;
position: absolute;
z-index: 902;
background: url(image/logo2x.png) center center no-repeat;
-webkit-background-size: 33px 13px;
background-color: #999999;
width: 53px; } }
div#config_menu ul ul {
left: 100%;
right: auto;
margin-left: -2px; }
div#config_menu.open,
div#config_menu:hover {
share/static/alice-default.css view on Meta::CPAN
right: 0px; }
div#nicklist_toggle {
position: absolute;
text-align: center;
width: 0px;
height: 50px;
margin-top: -25px;
top: 50%;
right: 15px;
background: url(image/slider.png) center center no-repeat;
background-color: #dddddd;
border: 1px solid #999999;
-webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);
-webkit-transition-property: opacity, width;
-webkit-transition-duration: 0.3s, 0.2s;
-webkit-transition-timing-function: ease-in-out;
-moz-transition-property: opacity, width;
-moz-transition-duration: 0.3s, 0.2s;
-moz-transition-timing-function: ease-in-out;
border-radius: 2px;
color: #222222;
font-size: 14px;
z-index: 902;
cursor: pointer;
opacity: 0; }
div#nicklist_toggle:hover {
background-color: #cccccc; }
div#windows.nicklist div#nicklist_toggle {
background-image: url(image/slider-right.png); }
div#nicklist_toggle.visible,
div#nicklist_toggle:hover,
div#nicklist_toggle:active {
opacity: 1;
width: 12px; }
div#windows.nicklist div#nicklist_toggle {
right: 135px; }
share/static/alice-default.css view on Meta::CPAN
width: 5000px;
-webkit-transition: left 0.25s ease-in-out;
-moz-transition: left 0.25s ease-in-out; }
div#tab_bar {
bottom: 0px;
left: 0px;
right: 0px;
height: 25px;
position: absolute;
background: url(image/sprites.png) 0px -300px repeat-x #dddddd; }
div#tabs_container {
position: absolute;
top: 0px;
bottom: 0px;
right: 60px;
left: 48px;
overflow: hidden; }
ul#tabs li {
float: left;
margin: 0;
margin-left: -1px;
color: #222222;
background: url(image/sprites.png) 0px -300px repeat-x #dddddd;
opacity: 1 !important; }
ul#tabs li.hidden {
display: none; }
ul#tabs li.visible {
display: block; }
ul#tabs li div.hit_area {
border: 1px solid #999999;
share/static/alice-default.css view on Meta::CPAN
ul#tabs li.active {
height: 25px;
z-index: 903;
background: #dddddd; }
ul#tabs li.active:hover div.hit_area {
background: #efefef; }
ul#tabs li:hover div.hit_area {
background: #cccccc;
background: url(image/sprites.png) 0px -300px repeat-x #cccccc; }
div#topic {
position: absolute;
top: 0px;
left: 0px;
right: 0px;
background: #efefef;
text-align: center;
border-top: 1px solid white;
border-bottom: 1px solid #aaaaaa;
share/static/alice-default.css view on Meta::CPAN
color: black;
text-decoration: none; }
div.tab_button {
width: 16px;
height: 16px;
float: left;
margin-right: 6px; }
li.channel_tab div.tab_button {
background: url(image/sprites.png) 0px -80px no-repeat; }
li.loading.channel_tab div.tab_button {
background: url(image/sprites.png) -38px -80px no-repeat; }
li.privmsg_tab div.tab_button {
background: url(image/sprites.png) 0px -120px no-repeat; }
li.loading.privmsg_tab div.tab_button {
background: url(image/sprites.png) -38px -140px no-repeat; }
li.info_tab div.tab_button {
background: url(image/sprites.png) 0px 0px no-repeat; }
li.loading.info_tab div.tab_button {
background: url(image/sprites.png) -39px -160px no-repeat; }
ul#tabs li.disabled.channel_tab div.tab_button:hover,
ul#tabs li.active div.tab_button:hover {
background: url(image/sprites.png) 1px -260px no-repeat; }
ul#tabs li.unread.channel_tab div.tab_button {
background: url(image/sprites.png) 0px -20px no-repeat; }
ul#tabs li.highlight.privmsg_tab div.tab_button,
ul#tabs li.unread.privmsg_tab div.tab_button {
background: url(image/sprites.png) 0 -100px no-repeat; }
ul#tabs li.highlight.channel_tab div.tab_button {
background: url(image/sprites.png) 0 -40px no-repeat; }
ul#tabs li.disabled.channel_tab div.tab_button {
background: url(image/sprites.png) 0 -60px no-repeat; }
div#help {
position: absolute;
z-index: 980;
background: rgba(0, 0, 0, 0.8);
color: #fff;
left: 20px;
right: 20px;
top: 25px;
bottom: 60px;
share/static/alice-default.css view on Meta::CPAN
bottom: auto; }
.dropdown.bottom > ul ul {
bottom: -1px;
top: auto; }
.dropdown li.separate-bottom {
border-bottom: 1px solid #cccccc; }
.dropdown li.submenu {
background: url(image/arrow.png) center right no-repeat; }
.dropdown li.submenu:hover {
background: url(image/arrow.png) #cccccc center right no-repeat; }
.dropdown > ul li.submenu:hover ul {
display: block; }
body > div.copybuffer {
overflow: hidden;
position: absolute;
top: -500px;
height: 1px; }
share/static/alice-solarized.css view on Meta::CPAN
width: 24px;
height: 24px;
z-index: 905; }
div#join_button {
position: absolute;
bottom: 0px;
right: 12px;
width: 24px;
height: 24px;
background: url(image/sprites.png) -32px -36px no-repeat;
cursor: pointer; }
div#join_button:hover {
background: url(image/sprites.png) -32px -56px no-repeat; }
div#tab_bar div#tabset_dropdown {
position: absolute;
bottom: 0px;
left: 0px;
background: url(image/sprites.png) -29px 4px no-repeat;
opacity: 1;
cursor: pointer; }
div#tab_bar div#tabset_dropdown:hover {
background: url(image/sprites.png) -29px -16px no-repeat; }
div#tab_bar .dropdown.active {
opacity: 1;
cursor: pointer; }
div#tab_menu_left {
position: absolute;
left: 24px;
bottom: 0px;
border-right: 1px solid #44555a; }
share/static/alice-solarized.css view on Meta::CPAN
div#tab_menu_right ul {
right: -1px;
left: auto; }
.dropdown li.selectedset,
.dropdown li.unread {
font-weight: bold; }
.tab_menu.active {
background: url(image/sprites.png) 4px -275px no-repeat; }
#tab_menu_left.tab_menu.active {
background: url(image/sprites.png) -29px -275px no-repeat; }
.tab_menu:hover,
.tab_menu.open {
background: url(image/sprites.png) 4px -175px no-repeat; }
#tab_menu_left.tab_menu:hover,
#tab_menu_left.tab_menu.open {
background: url(image/sprites.png) -29px -175px no-repeat; }
.tab_menu.unread {
background: url(image/sprites.png) 4px -195px no-repeat; }
#tab_menu_left.tab_menu.unread {
background: url(image/sprites.png) -29px -195px no-repeat; }
.tab_menu.highlight {
background: url(image/sprites.png) 4px -236px no-repeat; }
#tab_menu_left.tab_menu.highlight {
background: url(image/sprites.png) -29px -236px no-repeat; }
div#config_menu {
top: 0px;
left: 0px;
height: 17px;
border: #fff;
border: 1px solid #93a1a1;
border-bottom: 1px solid #002b36;
border-right: 1px solid #002b36;
cursor: pointer;
position: absolute;
z-index: 902;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAaCAYAAAADiYpyAAADG0lEQVRYw+2ZS0hVURSGr9qVBipGDysaZUIRRQ9u70FlgwYZFTRp0ItIgqKixEERBE2i6A1FWUjSKKGoBiVZEEnRw8oKa9KLoIcQZWqW5teg/8DicM6596gHruiBhey19tp7r+/svfY61xgQGxBiAxAiBpEJtLpkRn...
background-color: #657b83;
background-size: 33px 13px;
width: 50px; }
div#config_menu > ul {
margin-left: -1px; }
@media screen and (-webkit-device-pixel-ratio: 2) {
div#config_menu {
top: 0px;
left: 0px;
height: 17px;
border: #fff;
border: 1px solid #93a1a1;
border-bottom: 1px solid #002b36;
border-right: 1px solid #002b36;
cursor: pointer;
position: absolute;
z-index: 902;
background: url(image/logo2x.png) center center no-repeat;
-webkit-background-size: 33px 13px;
background-color: #657b83;
width: 53px; } }
div#config_menu ul ul {
left: 100%;
right: auto;
margin-left: -2px; }
div#config_menu.open,
div#config_menu:hover {
share/static/alice-solarized.css view on Meta::CPAN
right: 0px; }
div#nicklist_toggle {
position: absolute;
text-align: center;
width: 0px;
height: 50px;
margin-top: -25px;
top: 50%;
right: 15px;
background: url(image/slider.png) center center no-repeat;
background-color: #586e75;
border: 1px solid transparent;
-webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);
-webkit-transition-property: opacity, width;
-webkit-transition-duration: 0.3s, 0.2s;
-webkit-transition-timing-function: ease-in-out;
-moz-transition-property: opacity, width;
-moz-transition-duration: 0.3s, 0.2s;
-moz-transition-timing-function: ease-in-out;
border-radius: 2px;
color: white;
font-size: 14px;
z-index: 902;
cursor: pointer;
opacity: 0; }
div#nicklist_toggle:hover {
background-color: #4b5e64; }
div#windows.nicklist div#nicklist_toggle {
background-image: url(image/slider-right.png); }
div#nicklist_toggle.visible,
div#nicklist_toggle:hover,
div#nicklist_toggle:active {
opacity: 1;
width: 12px; }
div#windows.nicklist div#nicklist_toggle {
right: 135px; }
share/static/alice-solarized.css view on Meta::CPAN
width: 5000px;
-webkit-transition: left 0.25s ease-in-out;
-moz-transition: left 0.25s ease-in-out; }
div#tab_bar {
bottom: 0px;
left: 0px;
right: 0px;
height: 25px;
position: absolute;
background: url(image/sprites.png) 0px -300px repeat-x #586e75; }
div#tabs_container {
position: absolute;
top: 0px;
bottom: 0px;
right: 60px;
left: 48px;
overflow: hidden; }
ul#tabs li {
float: left;
margin: 0;
margin-left: -1px;
color: white;
background: url(image/sprites.png) 0px -300px repeat-x #586e75;
opacity: 1 !important; }
ul#tabs li.hidden {
display: none; }
ul#tabs li.visible {
display: block; }
ul#tabs li div.hit_area {
border: 1px solid transparent;
share/static/alice-solarized.css view on Meta::CPAN
ul#tabs li.active {
height: 25px;
z-index: 903;
background: #586e75; }
ul#tabs li.active:hover div.hit_area {
background: #657b83; }
ul#tabs li:hover div.hit_area {
background: #4b5e64;
background: url(image/sprites.png) 0px -300px repeat-x #4b5e64; }
div#topic {
position: absolute;
top: 0px;
left: 0px;
right: 0px;
background: #839496;
text-align: center;
border-top: 1px solid #93a1a1;
border-bottom: 1px solid #073642;
share/static/alice-solarized.css view on Meta::CPAN
color: #073642;
text-decoration: none; }
div.tab_button {
width: 16px;
height: 16px;
float: left;
margin-right: 6px; }
li.channel_tab div.tab_button {
background: url(image/sprites.png) 0px -80px no-repeat; }
li.loading.channel_tab div.tab_button {
background: url(image/sprites.png) -38px -80px no-repeat; }
li.privmsg_tab div.tab_button {
background: url(image/sprites.png) 0px -120px no-repeat; }
li.loading.privmsg_tab div.tab_button {
background: url(image/sprites.png) -38px -140px no-repeat; }
li.info_tab div.tab_button {
background: url(image/sprites.png) 0px 0px no-repeat; }
li.loading.info_tab div.tab_button {
background: url(image/sprites.png) -39px -160px no-repeat; }
ul#tabs li.disabled.channel_tab div.tab_button:hover,
ul#tabs li.active div.tab_button:hover {
background: url(image/sprites.png) 1px -260px no-repeat; }
ul#tabs li.unread.channel_tab div.tab_button {
background: url(image/sprites.png) 0px -20px no-repeat; }
ul#tabs li.highlight.privmsg_tab div.tab_button,
ul#tabs li.unread.privmsg_tab div.tab_button {
background: url(image/sprites.png) 0 -100px no-repeat; }
ul#tabs li.highlight.channel_tab div.tab_button {
background: url(image/sprites.png) 0 -40px no-repeat; }
ul#tabs li.disabled.channel_tab div.tab_button {
background: url(image/sprites.png) 0 -60px no-repeat; }
div#help {
position: absolute;
z-index: 980;
background: rgba(0, 0, 0, 0.8);
color: #fff;
left: 20px;
right: 20px;
top: 25px;
bottom: 60px;
share/static/alice-solarized.css view on Meta::CPAN
bottom: auto; }
.dropdown.bottom > ul ul {
bottom: -1px;
top: auto; }
.dropdown li.separate-bottom {
border-bottom: 1px solid #4b5e64; }
.dropdown li.submenu {
background: url(image/arrow.png) center right no-repeat; }
.dropdown li.submenu:hover {
background: url(image/arrow.png) #4b5e64 center right no-repeat; }
.dropdown > ul li.submenu:hover ul {
display: block; }
body > div.copybuffer {
overflow: hidden;
position: absolute;
top: -500px;
height: 1px; }
share/static/alice.js view on Meta::CPAN
});
}
}
})();
var Alice = { };
Object.extend(Alice, {
RE: {
img: /^http[^\s]*\.(?:jpe?g|gif|png|bmp|svg)[^\/]*$/i,
audio: /^http[^\s]*\.(?:wav|mp3|ogg|aiff?|m4[ar])[^\/]*$/i,
url: /(https?:\/\/[^\s<"]*)/ig
},
cleanupCopy: function(node) {
if (!node.select("li.message").length) return;
var lines = [];
node.select("li.message").each(function(line) {
var left = line.down("div.left span.nick");
share/static/alice.js view on Meta::CPAN
title: message.subject,
description: message.body,
priority: 1,
sticky: false,
identifier: message.msgid
});
}
else if (window.webkitNotifications) {
if (window.webkitNotifications.checkPermission() == 0) {
var popup = window.webkitNotifications.createNotification(
"http://static.usealice.org/image/alice.png",
message.subject,
message.body
);
popup.ondisplay = function() {
setTimeout(function () {popup.cancel();}, 5000);
};
popup.show();
}
share/static/alice.js view on Meta::CPAN
isSpecialKey: function(keyCode) {
var special_keys = [
16,27,9,32,13,8,145,20,144,19,45,36,46,35,33,34,37,38,39,
40,17,18,91,112,113,114,115,116,117,118,119,120,121,122,123,
224
];
return special_keys.indexOf(keyCode) > -1;
},
playAudio: function(image, audio) {
image.src = '/static/image/pause.png';
if (! audio) {
var url = image.nextSibling.href;
audio = new Audio(url);
audio.addEventListener('ended', function () {
image.src = '/static/image/play.png';
image.onclick = function () { Alice.playAudio(image, audio) };
});
}
audio.play();
image.onclick = function() {
audio.pause();
this.src = '/static/image/play.png';
this.onclick = function () { Alice.playAudio(this, audio) };
};
},
joinChannel: function() {
var network = $('join_network').value;
var channel = $('join_channel').value;
if (!network || !channel) {
alert("Must select a channel and network!");
return;
share/static/alice.js view on Meta::CPAN
}
});
if (alice.isMobile) return;
alice.addFilters([
function(msg, win) {
msg.select("a").filter(function(a) {
return Alice.RE.audio.match(a.href);
}).each(function(a) {
var img = new Element("IMG", {"class": "audio", src: "/static/image/play.png"});
img.onclick = function(){ Alice.playAudio(img) };
a.insert({before: img})
});
},
function (msg, win) {
if (alice.options.images == "show") {
var matches = msg.select("a").inject(0, function(acc, a) {
var oembed = alice.oembeds.find(function(service) {
return service.match(a.href);
});
share/templates/index_head.html view on Meta::CPAN
? my ($app, @windows) = @_;
? my $titlewin = @windows > 1 ? $windows[1] : $windows[0];
<!DOCTYPE html>
<html>
<head>
<title><?= $titlewin->title ?></title>
<script type="text/javascript" src="<?= $app->static_url("alice.js") ?>?v=4"></script>
<link rel="shortcut icon" href="<?= $app->static_url("favicon.ico") ?>">
<link type="text/css" rel="stylesheet" href="<?= $app->static_url("alice-".$app->config->style.".css") ?>?v=5" />
<link type="text/css" rel="stylesheet" href="https://noembed.com/noembed.css" />
<link rel="apple-touch-icon" href="<?= $app->static_url("image/alice.png") ?>" />
<link rel="apple-touch-startup-image" href="<?= $app->static_url("image/alice.png") ?>" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
</head>
<body>
<img style="position:absolute;top:-100px;left:-100px" src="<?= $app->static_url("image/sprites.png") ?>" />
<div class="dropdown top" id="config_menu">
<?= $_mt->render_file("alice_menu.html", $app) ?>
</div>
<div id="topic">No topic set.</div>
<div id="windows" class="compact-scroll">
<div id="nicklist_toggle"></div>
share/templates/login.html view on Meta::CPAN
font-size: 16px;
margin-bottom: 0;
margin-top: 30px;
}
.error {
color: #d00b0b;
display: block;
margin-top: 15px;
}
</style>
<link rel="apple-touch-icon" href="<?= $app->static_url("image/alice.png") ?>" />
<link rel="apple-touch-startup-image" href="<?= $app->static_url("image/alice.png") ?>" />
<meta name="viewport" content="width=device-width; initial-scale=1; maximum-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
</head>
<body>
<form action="/login" method="post">
<input type="hidden" name="dest" value="<?= $dest || "/" ?>" />
<label for="username">User Name:</label>
<input type="text" name="username" value="" id="username" />