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 ? "⌥" : "&lt;Alt&gt;",
        "[Mod1]":   isMac ? "⌘" : "&lt;Ctrl&gt;",
        "[Shift]":  isMac ? "⇧" : "&lt;Shift&gt;",
        "[Up]":     isMac ? "↑" : "&lt;Up&gt;",
        "[Down]":   isMac ? "↓" : "&lt;Down&gt;",
        "[Return]": isMac ? "↵" : "&lt;Return&gt;",



( run in 1.024 second using v1.01-cache-2.11-cpan-49f99fa48dc )