Skip to content

Commit

Permalink
pretty date added
Browse files Browse the repository at this point in the history
  • Loading branch information
ignatov committed Jul 20, 2011
1 parent 11d70b9 commit a4078c6
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ package model.mapper

import net.liftweb.mapper._
import net.liftweb.common.Full
import lib.util.DateUtils.dateFormatter
import lib.util.DateUtils.{atomDateFormatter, dateFormatter}

/**
* Comment of discussion thread.
Expand Down Expand Up @@ -61,6 +61,10 @@ class Discussion extends LongKeyedMapper[Discussion] with IdPK {

/** Get change author's username and date. */
def userNameDate: String = "%s by %s".format(dateFormatter(dateTime.is), userName)

def atomDateTime: String = atomDateFormatter(dateTime.is).toString

def humanDateTime: String = dateFormatter(dateTime.is).toString
}

object Discussion extends Discussion with LongKeyedMetaMapper[Discussion] {
Expand Down
8 changes: 6 additions & 2 deletions src/main/scala/scala/tools/colladoc/page/Template.scala
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,12 @@ class Template(tpl: DocTemplateEntity) extends tools.nsc.doc.html.page.Template(
/** Render discussion comment. */
private def discussionToHtml(d: Discussion) =
<li class="discussion_comment">
<span class="discussion_content">{bodyToHtml(parseWiki(d.comment.is, NoPosition))}</span>
<span class="discussion_info">{d.userNameDate}</span>
<div class="discussion_content">{bodyToHtml(parseWiki(d.comment.is, NoPosition))}</div>
<div class="discussion_info">
<span class="datetime" title={d.atomDateTime}>{d.humanDateTime}</span>
by
<span class="author">{d.userName}</span>
</div>
</li>

/** Render add comment button. */
Expand Down
5 changes: 0 additions & 5 deletions src/main/webapp/cotemplate.css
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,6 @@ background-color: #E5E5E5;
list-style: none;
}

.discussion_content {
display: block;
}

.discussion_info {
display: block;
color: #999999;
}
4 changes: 4 additions & 0 deletions src/main/webapp/scripts/cotemplate.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,4 +127,8 @@ function confirm(message, callback, options) {

$("#discussion_header").live("click", function(){
$("#discussion_wrapper").slideToggle(100);
});

$(document).ready(function() {
$(".datetime").prettyDate();
});
100 changes: 100 additions & 0 deletions src/main/webapp/scripts/jquery.prettydate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
/*
* jQuery pretty date plug-in 1.0.0
*
* http://bassistance.de/jquery-plugins/jquery-plugin-prettydate/
*
* Based on John Resig's prettyDate http://ejohn.org/blog/javascript-pretty-date
*
* Copyright (c) 2009 Jörn Zaefferer
*
* $Id: jquery.validate.js 6096 2009-01-12 14:12:04Z joern.zaefferer $
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
(function() {
$.prettyDate = {

template: function(source, params) {
if (arguments.length == 1)
return function() {
var args = $.makeArray(arguments);
args.unshift(source);
return $.prettyDate.template.apply(this, args);
};
if (arguments.length > 2 && params.constructor != Array) {
params = $.makeArray(arguments).slice(1);
}
if (params.constructor != Array) {
params = [ params ];
}
$.each(params, function(i, n) {
source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
});
return source;
},

now: function() {
return new Date();
},

// Takes an ISO time and returns a string representing how
// long ago the date represents.
format: function(time) {
var date = new Date((time || "").replace(/-/g, "/").replace(/[TZ]/g, " ")),
diff = ($.prettyDate.now().getTime() - date.getTime()) / 1000,
day_diff = Math.floor(diff / 86400);

if (isNaN(day_diff) || day_diff < 0 || day_diff >= 2) // We use only today and yesterday
return;

var messages = $.prettyDate.messages;
return day_diff == 0 && (
diff < 60 && messages.now ||
diff < 120 && messages.minute ||
diff < 3600 && messages.minutes(Math.floor(diff / 60)) ||
diff < 7200 && messages.hour ||
diff < 86400 && messages.hours(Math.floor(diff / 3600))) ||
day_diff == 1 && messages.yesterday ||
day_diff < 7 && messages.days(day_diff) ||
day_diff < 31 && messages.weeks(Math.ceil(day_diff / 7));
}

};

$.prettyDate.messages = {
now: "just now",
minute: "1 minute ago",
minutes: $.prettyDate.template("{0} minutes ago"),
hour: "1 hour ago",
hours: $.prettyDate.template("{0} hours ago"),
yesterday: "Yesterday",
days: $.prettyDate.template("{0} days ago"),
weeks: $.prettyDate.template("{0} weeks ago")
};

$.fn.prettyDate = function(options) {
options = $.extend({
value: function() {
return $(this).attr("title");
},
interval: 10000
}, options);
var elements = this;

function format() {
elements.each(function() {
var date = $.prettyDate.format(options.value.apply(this));
if (date && $(this).text() != date)
$(this).text(date);
});
}

format();
if (options.interval)
setInterval(format, options.interval);
return this;
};

})();
1 change: 1 addition & 0 deletions src/main/webapp/template.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<script src="/scripts/markitup/jquery.markitup.js" type="text/javascript" />
<script src="/scripts/markitup/jquery.markitup.set.js" type="text/javascript" />
<script src="/scripts/cotemplate.js" type="text/javascript"/>
<script src="/scripts/jquery.prettydate.js" type="text/javascript"/>
<link href="/lib/template.css" media="screen" type="text/css" rel="stylesheet" />
<link href="/scripts/markitup/jquery.markitup.css" media="screen" type="text/css" rel="stylesheet"/>
<link href="/scripts/markitup/jquery.markitup.set.css" media="screen" type="text/css" rel="stylesheet"/>
Expand Down

0 comments on commit a4078c6

Please sign in to comment.