First stab at About page

This commit is contained in:
Robin Ward 2014-08-11 16:59:00 -04:00
parent fdea828ed4
commit c103398e9a
11 changed files with 165 additions and 0 deletions

View File

@ -0,0 +1,3 @@
export default Ember.Component.extend({
classNames: ['user-small']
});

View File

@ -0,0 +1,8 @@
export default Ember.Route.extend({
model: function() {
return Discourse.ajax("/about.json").then(function(result) {
return result.about;
});
}
});

View File

@ -10,6 +10,8 @@ Discourse.Route.buildRoutes(function() {
// Error page // Error page
this.route('exception', { path: '/exception' }); this.route('exception', { path: '/exception' });
this.resource('about', { path: '/about' });
// Topic routes // Topic routes
this.resource('topic', { path: '/t/:slug/:id' }, function() { this.resource('topic', { path: '/t/:slug/:id' }, function() {
this.route('fromParams', { path: '/' }); this.route('fromParams', { path: '/' });

View File

@ -0,0 +1,62 @@
<div class='container'>
<h2>{{i18n about.title}}</h2>
{{#if admins}}
<section class='about admins'>
<h3>Our Admins</h3>
{{#each admins}}
{{user-small user=this}}
{{/each}}
<div class='clearfix'></div>
</section>
{{/if}}
{{#if moderators}}
<section class='about admins'>
<h3>Our Moderators</h3>
<div class='users'>
{{#each moderators}}
{{user-small user=this}}
{{/each}}
</div>
<div class='clearfix'></div>
</section>
{{/if}}
<section class='about stats'>
<h3>{{i18n about.stats}}</h3>
<table class='table'>
<tr>
<td class='title'>{{i18n about.topic_count}}</td>
<td>{{stats.topic_count}}</td>
</tr>
<tr>
<td>{{i18n about.topics_7_days}}</td>
<td>{{stats.topics_7_days}}</td>
</tr>
<tr>
<td>{{i18n about.post_count}}</td>
<td>{{stats.post_count}}</td>
</tr>
<tr>
<td>{{i18n about.posts_7_days}}</td>
<td>{{stats.posts_7_days}}</td>
</tr>
<tr>
<td>{{i18n about.user_count}}</td>
<td>{{stats.user_count}}</td>
</tr>
<tr>
<td>{{i18n about.users_7_days}}</td>
<td>{{stats.users_7_days}}</td>
</tr>
</table>
</section>
</div>

View File

@ -0,0 +1,4 @@
{{#link-to 'user' user.username}}
{{avatar user imageSize="tiny"}}
{{user.username}}
{{/link-to}}

View File

@ -0,0 +1,34 @@
section.about {
margin-top: 20px;
h3 {
margin-bottom: 10px;
}
.user-small {
padding: 5px;
width: 200px;
float: left;
img {
padding-right: 4px;
}
}
padding-bottom: 10px;
table {
margin-top: 20px;
width: 100%;
td, th {
padding: 10px 5px 5px 5px;
border-bottom: 1px solid lighten($primary, 70%);
}
td.title {
width: 30%;
}
}
}

View File

@ -0,0 +1,8 @@
class AboutController < ApplicationController
skip_before_filter :check_xhr, only: [:show]
def index
@about = About.new
render_serialized(@about, AboutSerializer)
end
end

26
app/models/about.rb Normal file
View File

@ -0,0 +1,26 @@
class About
include ActiveModel::Serialization
attr_accessor :moderators,
:admins
def moderators
@moderators ||= User.where(moderator: true)
end
def admins
@admins ||= User.where(admin: true)
end
def stats
@stats ||= {
topic_count: Topic.listable_topics.count,
post_count: Post.count,
user_count: User.count,
topics_7_days: Topic.listable_topics.where('created_at > ?', 7.days.ago).count,
posts_7_days: Post.where('created_at > ?', 7.days.ago).count,
users_7_days: User.where('created_at > ?', 7.days.ago).count
}
end
end

View File

@ -0,0 +1,6 @@
class AboutSerializer < ApplicationSerializer
has_many :moderators, serializer: BasicUserSerializer, embed: :objects
has_many :admins, serializer: BasicUserSerializer, embed: :objects
attributes :stats
end

View File

@ -144,6 +144,16 @@ en:
suggested_topics: suggested_topics:
title: "Suggested Topics" title: "Suggested Topics"
about:
title: "About"
stats: "Site Statistics"
topic_count: "Topic Count"
topics_7_days: "Topic Count (last 7 days)"
post_count: "Post Count"
posts_7_days: "Post Count (last 7 days)"
user_count: "User Count"
users_7_days: "User Count (last 7 days)"
bookmarks: bookmarks:
not_logged_in: "sorry, you must be logged in to bookmark posts" not_logged_in: "sorry, you must be logged in to bookmark posts"
created: "you've bookmarked this post" created: "you've bookmarked this post"

View File

@ -22,6 +22,8 @@ Discourse::Application.routes.draw do
mount Logster::Web => "/logs", constraints: AdminConstraint.new mount Logster::Web => "/logs", constraints: AdminConstraint.new
end end
resources :about
get "site" => "site#index" get "site" => "site#index"
resources :forums resources :forums