diff --git a/src/main/scala/app/ControllerBase.scala b/src/main/scala/app/ControllerBase.scala index d7d7171..b4c39ed 100644 --- a/src/main/scala/app/ControllerBase.scala +++ b/src/main/scala/app/ControllerBase.scala @@ -143,6 +143,9 @@ lazy val currentPath = request.getRequestURI.substring(request.getContextPath.length) + lazy val baseURL = request.getRequestURL.substring(0, request.getRequestURL.length - request.getRequestURI.length) + path + lazy val host = request.getServerName + /** * Get object from cache. * diff --git a/src/main/scala/app/IndexController.scala b/src/main/scala/app/IndexController.scala index 426ec63..3bc6620 100644 --- a/src/main/scala/app/IndexController.scala +++ b/src/main/scala/app/IndexController.scala @@ -46,6 +46,11 @@ redirect("/") } + get("/activities.atom"){ + contentType = "application/atom+xml; type=feed" + xml.feed(getRecentActivities()) + } + /** * Set account information into HttpSession and redirect. */ diff --git a/src/main/scala/view/helpers.scala b/src/main/scala/view/helpers.scala index 8dc2adf..7b9f949 100644 --- a/src/main/scala/view/helpers.scala +++ b/src/main/scala/view/helpers.scala @@ -16,6 +16,11 @@ def datetime(date: Date): String = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date) /** + * Format java.util.Date to "yyyy-MM-dd'T'hh:mm:ss'Z'". + */ + def datetimeRFC3339(date: Date): String = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'").format(date).replaceAll("(\\d\\d)(\\d\\d)$","$1:$2") + + /** * Format java.util.Date to "yyyy-MM-dd". */ def date(date: Date): String = new SimpleDateFormat("yyyy-MM-dd").format(date) diff --git a/src/main/twirl/feed.scala.xml b/src/main/twirl/feed.scala.xml new file mode 100644 index 0000000..f870ca3 --- /dev/null +++ b/src/main/twirl/feed.scala.xml @@ -0,0 +1,30 @@ +@(activities: List[model.Activity])(implicit context: app.Context) +@import context._ +@import view.helpers._ + + @header(activities) + @activities.map { activity => @item(activity) } + + +@header(activities: List[model.Activity]) = {tag:@context.host,2013:gitbucket + Gitbucket's activities + + + Gitbucket + @context.baseURL + + @datetimeRFC3339(activities.map(_.activityDate).max)} + +@item(activity: model.Activity) = { + + tag:@context.host,@date(activity.activityDate):activity:@activity.activityId + @datetimeRFC3339(activity.activityDate) + @datetimeRFC3339(activity.activityDate) + + @activity.activityType + + @activity.activityUserName + @url(activity.activityUserName) + + @activityMessage(activity.message) + } diff --git a/src/main/twirl/helper/activities.scala.html b/src/main/twirl/helper/activities.scala.html index 6e7f324..e145868 100644 --- a/src/main/twirl/helper/activities.scala.html +++ b/src/main/twirl/helper/activities.scala.html @@ -5,6 +5,9 @@ @if(activities.isEmpty){ No activity } else { +
+ activities +
@activities.map { activity =>
@(activity.activityType match { diff --git a/src/main/webapp/assets/common/images/feed.png b/src/main/webapp/assets/common/images/feed.png new file mode 100644 index 0000000..315c4f4 --- /dev/null +++ b/src/main/webapp/assets/common/images/feed.png Binary files differ