Skip to content

Commit

Permalink
updated bootstrap added avatars and modified design
Browse files Browse the repository at this point in the history
  • Loading branch information
chrismatthieu committed Aug 1, 2012
1 parent a0394a1 commit 39943f8
Show file tree
Hide file tree
Showing 11 changed files with 327 additions and 463 deletions.
Binary file added .DS_Store
Binary file not shown.
Binary file added assets/.DS_Store
Binary file not shown.
412 changes: 2 additions & 410 deletions assets/css/bootstrap.min.css

Large diffs are not rendered by default.

19 changes: 14 additions & 5 deletions assets/css/subway.css
Expand Up @@ -8,7 +8,7 @@ html { overflow: hidden; }
position: absolute;
zoom: 1;
padding: 0;
font-size: 12px;
font-size: 14px;
}
.container-fluid:before, .container-fluid:after {
display: table;
Expand Down Expand Up @@ -140,14 +140,14 @@ html { overflow: hidden; }

#channels {
position: absolute;
top: 255px;
top: 0px;
bottom: 0;
overflow: auto;
width: 100%;
}

#channels > .channel {
padding: 5% 5% 5% 20%;
padding: 3% 3% 3% 20%;
color: #333333;
border-bottom: 1px solid #CCCCCC;
}
Expand Down Expand Up @@ -227,6 +227,7 @@ html { overflow: hidden; }
min-height: 100%;
height: 100%;
width: 80%;
margin-left: 20%;
position: absolute;
box-sizing: border-box;
-moz-box-sizing: border-box; /* for Mozilla */
Expand Down Expand Up @@ -297,6 +298,10 @@ html { overflow: hidden; }
font-size: 1.3em;
}

#chat-input {
font-size: 25px;
}

.message-box {
border-bottom: 1px solid #DDDDDD;
display: table;
Expand Down Expand Up @@ -391,7 +396,7 @@ html { overflow: hidden; }
height: 100%;
width: 20%;
position: absolute;
margin-left: 80%;
margin-left: 0%;
background: #E7E9ED;
}

Expand Down Expand Up @@ -449,4 +454,8 @@ html { overflow: hidden; }
.userlist_user_time{
margin-left: 5px;
color: #666666;
}
}

.instagroto,.tweet,.place,.your-location{display:block;cursor:pointer;text-decoration:none;color:#444;background-color:#e7e7e7;background-image:-moz-linear-gradient(top,#eee,#ddd);background-image:-ms-linear-gradient(top,#eee,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#eee),to(#ddd));background-image:-webkit-linear-gradient(top,#eee,#ddd);background-image:-o-linear-gradient(top,#eee,#ddd);background-image:linear-gradient(top,#eee,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFEEEEEE,endColorstr=#FFDDDDDD);border-bottom:1px #bbb solid;}
.instagroto:hover,.tweet:hover,.place:hover,.your-location:hover{background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#ddd,#ccc);background-image:-ms-linear-gradient(top,#ddd,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ddd),to(#ccc));background-image:-webkit-linear-gradient(top,#ddd,#ccc);background-image:-o-linear-gradient(top,#ddd,#ccc);background-image:linear-gradient(top,#ddd,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFDDDDDD,endColorstr=#FFCCCCCC)}
.instagroto:active,.tweet:active,.place:active,.your-location:active{background-color:#d2d2d2;background-image:-moz-linear-gradient(top,#ccc,#ddd);background-image:-ms-linear-gradient(top,#ccc,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ccc),to(#ddd));background-image:-webkit-linear-gradient(top,#ccc,#ddd);background-image:-o-linear-gradient(top,#ccc,#ddd);background-image:linear-gradient(top,#ccc,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFCCCCCC,endColorstr=#FFDDDDDD)}
6 changes: 5 additions & 1 deletion assets/js/client.js
Expand Up @@ -8,6 +8,8 @@
//= require 'utils.js'
//= require 'models.js'
//= require 'collections.js'
//= require 'helpers.js'
//= require 'jquery.timeago.js'
//= require_tree 'views'


Expand Down Expand Up @@ -264,12 +266,14 @@ $(function() {
user: message.user,
content: message.message.substr(8),
renderedTime: utils.formatDate(message.date)
// renderedTime: iso8601(message.date)
}, true);
} else {
message_html = ich.message({
user: message.user,
content: message.message,
renderedTime: utils.formatDate(message.date)
// renderedTime: iso8601(message.date)
}, true);
}

Expand All @@ -281,7 +285,7 @@ $(function() {
}

message_html = utils.linkify(message_html);
message_html = "<div id=\"" + message._id + "\" class=\"message-box " + type + "\">" + message_html + "</div>";
message_html = "<div id=\"" + message._id + "\" class=\"message-box tweet" + type + "\">" + message_html + "</div>";
output += message_html;
});
var old_height = channel.view.$('#chat-contents')[0].scrollHeight;
Expand Down
109 changes: 109 additions & 0 deletions assets/js/helpers.js
@@ -0,0 +1,109 @@
var zeropad = function (num) {
return ((num < 10) ? '0' : '') + num;
};
var iso8601 = function (date) {
return date.getUTCFullYear()
+ "-" + zeropad(date.getUTCMonth()+1)
+ "-" + zeropad(date.getUTCDate())
+ "T" + zeropad(date.getUTCHours())
+ ":" + zeropad(date.getUTCMinutes())
+ ":" + zeropad(date.getUTCSeconds()) + "Z";
};

function prepareDynamicDates() {
$('abbr.loaded').attr("title", iso8601(new Date()));
$('abbr.modified').attr("title", iso8601(new Date(document.lastModified)));
}

function loadNumbers() {
jQuery.timeago.settings.strings.numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
}
function unloadNumbers() {
jQuery.timeago.settings.strings.numbers = [];
}

function loadPigLatin() {
jQuery.timeago.settings.strings = {
suffixAgo: "ago-hay",
suffixFromNow: "omNow-fray",
seconds: "ess-lay an-thay a-hay inute-may",
minute: "about-hay a-hay inute-may",
minutes: "%d inutes-may",
hour: "about-hay an-hay hour-hay",
hours: "about-hay %d hours-hay",
day: "a-hay ay-day",
days: "%d ays-day",
month: "about-hay a-hay onth-may",
months: "%d onths-may",
year: "about-hay a-hay ear-yay",
years: "%d years-yay"
};
}

function loadRussian() {
(function() {
function numpf(n, f, s, t) {
// f - 1, 21, 31, ...
// s - 2-4, 22-24, 32-34 ...
// t - 5-20, 25-30, ...
var n10 = n % 10;
if ( (n10 == 1) && ( (n == 1) || (n > 20) ) ) {
return f;
} else if ( (n10 > 1) && (n10 < 5) && ( (n > 20) || (n < 10) ) ) {
return s;
} else {
return t;
}
}

jQuery.timeago.settings.strings = {
prefixAgo: null,
prefixFromNow: "через",
suffixAgo: "назад",
suffixFromNow: null,
seconds: "меньше минуты",
minute: "минуту",
minutes: function(value) { return numpf(value, "%d минута", "%d минуты", "%d минут"); },
hour: "час",
hours: function(value) { return numpf(value, "%d час", "%d часа", "%d часов"); },
day: "день",
days: function(value) { return numpf(value, "%d день", "%d дня", "%d дней"); },
month: "месяц",
months: function(value) { return numpf(value, "%d месяц", "%d месяца", "%d месяцев"); },
year: "год",
years: function(value) { return numpf(value, "%d год", "%d года", "%d лет"); }
};
})();
}

function loadMillis() {
var millisSubstitution = function(number, millis) { return millis + " milliseconds"; };
jQuery.timeago.settings.strings = {
suffixAgo: "ago",
suffixFromNow: "from now",
seconds: millisSubstitution,
minute: millisSubstitution,
minutes: millisSubstitution,
hour: millisSubstitution,
hours: millisSubstitution,
day: millisSubstitution,
days: millisSubstitution,
month: millisSubstitution,
months: millisSubstitution,
year: millisSubstitution,
years: millisSubstitution
};
}

function loadNoSpaces() {
jQuery.extend(jQuery.timeago.settings.strings, {
minutes: "%dminutes",
wordSeparator: ""
});
}

function loadYoungOldYears() {
jQuery.extend(jQuery.timeago.settings.strings, {
years: function(value) { return (value < 21) ? "%d young years" : "%d old years"; }
});
}
152 changes: 152 additions & 0 deletions assets/js/jquery.timeago.js
@@ -0,0 +1,152 @@
/**
* Timeago is a jQuery plugin that makes it easy to support automatically
* updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
*
* @name timeago
* @version 0.11.4
* @requires jQuery v1.2.3+
* @author Ryan McGeary
* @license MIT License - http://www.opensource.org/licenses/mit-license.php
*
* For usage and examples, visit:
* http://timeago.yarp.com/
*
* Copyright (c) 2008-2012, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org)
*/
(function($) {
$.timeago = function(timestamp) {
if (timestamp instanceof Date) {
return inWords(timestamp);
} else if (typeof timestamp === "string") {
return inWords($.timeago.parse(timestamp));
} else if (typeof timestamp === "number") {
return inWords(new Date(timestamp));
} else {
return inWords($.timeago.datetime(timestamp));
}
};
var $t = $.timeago;

$.extend($.timeago, {
settings: {
refreshMillis: 60000,
allowFuture: false,
strings: {
prefixAgo: null,
prefixFromNow: null,
suffixAgo: "ago",
suffixFromNow: "from now",
seconds: "less than a minute",
minute: "about a minute",
minutes: "%d minutes",
hour: "about an hour",
hours: "about %d hours",
day: "a day",
days: "%d days",
month: "about a month",
months: "%d months",
year: "about a year",
years: "%d years",
wordSeparator: " ",
numbers: []
}
},
inWords: function(distanceMillis) {
var $l = this.settings.strings;
var prefix = $l.prefixAgo;
var suffix = $l.suffixAgo;
if (this.settings.allowFuture) {
if (distanceMillis < 0) {
prefix = $l.prefixFromNow;
suffix = $l.suffixFromNow;
}
}

var seconds = Math.abs(distanceMillis) / 1000;
var minutes = seconds / 60;
var hours = minutes / 60;
var days = hours / 24;
var years = days / 365;

function substitute(stringOrFunction, number) {
var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
var value = ($l.numbers && $l.numbers[number]) || number;
return string.replace(/%d/i, value);
}

var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
seconds < 90 && substitute($l.minute, 1) ||
minutes < 45 && substitute($l.minutes, Math.round(minutes)) ||
minutes < 90 && substitute($l.hour, 1) ||
hours < 24 && substitute($l.hours, Math.round(hours)) ||
hours < 42 && substitute($l.day, 1) ||
days < 30 && substitute($l.days, Math.round(days)) ||
days < 45 && substitute($l.month, 1) ||
days < 365 && substitute($l.months, Math.round(days / 30)) ||
years < 1.5 && substitute($l.year, 1) ||
substitute($l.years, Math.round(years));

var separator = $l.wordSeparator === undefined ? " " : $l.wordSeparator;
return $.trim([prefix, words, suffix].join(separator));
},
parse: function(iso8601) {
var s = $.trim(iso8601);
s = s.replace(/\.\d+/,""); // remove milliseconds
s = s.replace(/-/,"/").replace(/-/,"/");
s = s.replace(/T/," ").replace(/Z/," UTC");
s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
return new Date(s);
},
datetime: function(elem) {
var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
return $t.parse(iso8601);
},
isTime: function(elem) {
// jQuery's `is()` doesn't play well with HTML5 in IE
return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
}
});

$.fn.timeago = function() {
var self = this;
self.each(refresh);

var $s = $t.settings;
if ($s.refreshMillis > 0) {
setInterval(function() { self.each(refresh); }, $s.refreshMillis);
}
return self;
};

function refresh() {
var data = prepareData(this);
if (!isNaN(data.datetime)) {
$(this).text(inWords(data.datetime));
}
return this;
}

function prepareData(element) {
element = $(element);
if (!element.data("timeago")) {
element.data("timeago", { datetime: $t.datetime(element) });
var text = $.trim(element.text());
if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
element.attr("title", text);
}
}
return element.data("timeago");
}

function inWords(date) {
return $t.inWords(distance(date));
}

function distance(date) {
return (new Date().getTime() - date.getTime());
}

// fix for IE6 suckage
document.createElement("abbr");
document.createElement("time");
}(jQuery));

0 comments on commit 39943f8

Please sign in to comment.