Alice
view release on metacpan or search on metacpan
share/static/alice.js view on Meta::CPAN
Alice.Application = Class.create({
initialize: function() {
this.options = {};
this.isFocused = true;
this.window_map = new Hash();
this.previousFocus = 0;
this.selectedSet = '';
this.tabs = $('tabs');
this.topic = $('topic');
this.nicklist = $('nicklist');
this.overlayVisible = false;
this.lastnotify = 0;
this.topic_height = "14px";
this.beep = new Audio("/static/beep.mp3");
this.oembeds = [];
this.jsonp_callbacks = {};
this.connection = window.WebSocket && !window.location.search.match(/&?stream=xhr/) ?
new Alice.Connection.WebSocket(this)
: new Alice.Connection.XHR(this);
share/static/alice.js view on Meta::CPAN
if (remove) {
stamp.remove();
}
else {
stamp.update(Alice.epochToLocal(seconds, this.options.timeformat));
stamp.style.opacity = 1;
}
},
function(li, win) {
if (!this.overlayVisible || !li.hasClassName("avatar")) return;
var nick = li.down('span.nick');
if (nick) nick.style.opacity = 1;
},
function(li, win) {
if (win.bulk_insert) return;
if (li.hasClassName("message") && !win.active && win.title != "info") {
if (li.hasClassName("highlight") || win.type == "privmsg")
share/static/alice.js view on Meta::CPAN
this.beep.play();
}
}
this.addMissed();
}
}
];
},
toggleOverlay: function () {
this.overlayVisible = !this.overlayVisible;
var opacity = this.overlayVisible ? 1 : 0;
$$("li.avatar span.nick").each(function(span){
span.style.opacity = opacity;
});
}
});
Alice.Connection = {
gotoLogin: function() {
window.location = "/login";
share/static/alice.js view on Meta::CPAN
addFold: function() {
this.messages.select("li.fold").invoke("removeClassName", "fold");
var last = this.messages.childElements().last();
if (last) last.addClassName("fold");
},
showNick: function (e) {
var li = e.findElement("li.message");
if (li && li.hasClassName("avatar")) {
if (this.application.overlayVisible || li == this.visibleNick) return;
clearTimeout(this.visibleNickTimeout);
this.visibleNick = li;
var nick;
if (li.hasClassName("consecutive")) {
var stem = li.previous("li:not(.consecutive)");
if (!stem) return;
nick = stem.down("span.nick");
} else {
nick = li.down("span.nick");
}
if (nick) {
this.visibleNickTimeout = setTimeout(function(nick) {
if (nick) nick.style.opacity = 1;
setTimeout(function(){
if (this.application.overlayVisible) return;
if (nick) nick.style.opacity = 0;
}.bind(this, nick) , 1000);
}.bind(this, nick), 500);
}
}
else {
this.visibleNick = "";
clearTimeout(this.visibleNickTimeout);
}
},
share/templates/help.html view on Meta::CPAN
<dd>Cycle through previous message</dd>
<dt>[Meta] [Down]</dt>
<dd>Cycle to next message</dd>
<dt>[Meta] [Return]</dt>
<dd>Insert a newline</dd>
<dt >[Mod1] [Shift] M</dt>
<dd>Mark all tabs as read</dd>
<dt>[Mod1] [Shift] J</dt>
<dd>Jump to bottom of tab</dd>
<dt>[Mod1] [Shift] K</dt>
<dd>Toggle nick overlay above avatars</dd>
</dl>
<script type="text/javascript">
var isMac = navigator.platform.match(/mac/i);
var modmap = {
"[Meta]": isMac ? "â¥" : "<Alt>",
"[Mod1]": isMac ? "â" : "<Ctrl>",
"[Shift]": isMac ? "â§" : "<Shift>",
"[Up]": isMac ? "â" : "<Up>",
"[Down]": isMac ? "â" : "<Down>",
"[Return]": isMac ? "âµ" : "<Return>",
( run in 1.024 second using v1.01-cache-2.11-cpan-49f99fa48dc )