Merge pull request #3225 from techAPJ/patch-3

UX: unified About / Privacy / ToS / FAQ topnav
This commit is contained in:
Robin Ward 2015-02-23 11:51:55 -05:00
commit 0f4693b7eb
7 changed files with 116 additions and 74 deletions

View file

@ -1,6 +1,8 @@
import ObjectController from 'discourse/controllers/object';
export default ObjectController.extend({
faqOverriden: Ember.computed.gt('siteSettings.faq_url.length', 0),
contactInfo: function() {
if (Discourse.SiteSettings.contact_email) {
return I18n.t('about.contact_info', {contact_email: Discourse.SiteSettings.contact_email});

View file

@ -1,82 +1,97 @@
<div class='container body-page'>
<section class='about'>
<h2>{{i18n 'about.title' title=title}}</h2>
<p>{{description}}</p>
</section>
<div class='container'>
<div class='contents clearfix body-page'>
{{#if admins}}
<section class='about admins'>
<h3>{{i18n 'about.our_admins'}}</h3>
{{#each a in admins}}
{{user-small user=a}}
{{/each}}
<div class='clearfix'></div>
<ul class="nav-pills">
<li class="nav-item-about">{{#link-to 'about' class="active"}}{{i18n 'about.simple_title'}}{{/link-to}}</li>
{{#if faqOverriden}}
<li class="nav-item-guidelines">{{#link-to 'guidelines'}}{{i18n 'guidelines'}}{{/link-to}}</li>
<li class="nav-item-faq">{{#link-to 'faq'}}{{i18n 'faq'}}{{/link-to}}</li>
{{else}}
<li class="nav-item-faq">{{#link-to 'faq'}}{{i18n 'faq'}}{{/link-to}}</li>
{{/if}}
<li class="nav-item-tos">{{#link-to 'tos'}}{{i18n 'terms_of_service'}}{{/link-to}}</li>
<li class="nav-item-privacy">{{#link-to 'privacy'}}{{i18n 'privacy'}}{{/link-to}}</li>
</ul>
<section class='about'>
<h2>{{i18n 'about.title' title=title}}</h2>
<p>{{description}}</p>
</section>
{{/if}}
{{#if moderators}}
<section class='about moderators'>
<h3>{{i18n 'about.our_moderators'}}</h3>
{{#if admins}}
<section class='about admins'>
<h3>{{i18n 'about.our_admins'}}</h3>
<div class='users'>
{{#each m in moderators}}
{{user-small user=m}}
{{#each a in admins}}
{{user-small user=a}}
{{/each}}
</div>
<div class='clearfix'></div>
<div class='clearfix'></div>
</section>
{{/if}}
{{#if moderators}}
<section class='about moderators'>
<h3>{{i18n 'about.our_moderators'}}</h3>
<div class='users'>
{{#each m in moderators}}
{{user-small user=m}}
{{/each}}
</div>
<div class='clearfix'></div>
</section>
{{/if}}
<section class='about stats'>
<h3>{{i18n 'about.stats'}}</h3>
<table class='table'>
<tr>
<th>&nbsp;</th>
<th>{{i18n 'about.stat.all_time'}}</th>
<th>{{i18n 'about.stat.last_7_days'}}</th>
<th>{{i18n 'about.stat.last_30_days'}}</th>
</tr>
<tr>
<td class='title'>{{i18n 'about.topic_count'}}</td>
<td>{{number stats.topic_count}}</td>
<td>{{number stats.topics_7_days}}</td>
<td>{{number stats.topics_30_days}}</td>
</tr>
<tr>
<td>{{i18n 'about.post_count'}}</td>
<td>{{number stats.post_count}}</td>
<td>{{number stats.posts_7_days}}</td>
<td>{{number stats.posts_30_days}}</td>
</tr>
<tr>
<td>{{i18n 'about.user_count'}}</td>
<td>{{number stats.user_count}}</td>
<td>{{number stats.users_7_days}}</td>
<td>{{number stats.users_30_days}}</td>
</tr>
<tr>
<td>{{i18n 'about.active_user_count'}}</td>
<td>&mdash;</td>
<td>{{number stats.active_users_7_days}}</td>
<td>{{number stats.active_users_30_days}}</td>
</tr>
<tr>
<td>{{i18n 'about.like_count'}}</td>
<td>{{number stats.like_count}}</td>
<td>{{number stats.likes_7_days}}</td>
<td>{{number stats.likes_30_days}}</td>
</tr>
</table>
</section>
{{/if}}
<section class='about stats'>
<h3>{{i18n 'about.stats'}}</h3>
<table class='table'>
<tr>
<th>&nbsp;</th>
<th>{{i18n 'about.stat.all_time'}}</th>
<th>{{i18n 'about.stat.last_7_days'}}</th>
<th>{{i18n 'about.stat.last_30_days'}}</th>
</tr>
<tr>
<td class='title'>{{i18n 'about.topic_count'}}</td>
<td>{{number stats.topic_count}}</td>
<td>{{number stats.topics_7_days}}</td>
<td>{{number stats.topics_30_days}}</td>
</tr>
<tr>
<td>{{i18n 'about.post_count'}}</td>
<td>{{number stats.post_count}}</td>
<td>{{number stats.posts_7_days}}</td>
<td>{{number stats.posts_30_days}}</td>
</tr>
<tr>
<td>{{i18n 'about.user_count'}}</td>
<td>{{number stats.user_count}}</td>
<td>{{number stats.users_7_days}}</td>
<td>{{number stats.users_30_days}}</td>
</tr>
<tr>
<td>{{i18n 'about.active_user_count'}}</td>
<td>&mdash;</td>
<td>{{number stats.active_users_7_days}}</td>
<td>{{number stats.active_users_30_days}}</td>
</tr>
<tr>
<td>{{i18n 'about.like_count'}}</td>
<td>{{number stats.like_count}}</td>
<td>{{number stats.likes_7_days}}</td>
<td>{{number stats.likes_30_days}}</td>
</tr>
</table>
</section>
{{#if contactInfo}}
<section class='about contact'>
<h3>{{i18n 'about.contact'}}</h3>
<p>{{contactInfo}}</p>
</section>
{{/if}}
{{#if contactInfo}}
<section class='about contact'>
<h3>{{i18n 'about.contact'}}</h3>
<p>{{contactInfo}}</p>
</section>
{{/if}}
</div>
</div>

View file

@ -1,4 +1,7 @@
{{#link-to 'user' user.username}}
{{avatar user imageSize="tiny"}}
{{user.username}}
{{#if user.name}}
({{user.name}})
{{/if}}
{{/link-to}}

View file

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

View file

@ -0,0 +1,20 @@
class UserNameSerializer < ApplicationSerializer
attributes :id, :username, :name, :uploaded_avatar_id, :avatar_template
def include_name?
SiteSetting.enable_names?
end
def avatar_template
if Hash === object
User.avatar_template(user[:username], user[:uploaded_avatar_id])
else
object.avatar_template
end
end
def user
object[:user] || object
end
end

View file

@ -1,4 +1,5 @@
<ul class="nav-pills">
<li class="nav-item-about"><%= link_to t('about'), '/about' %></a></li>
<% if @faq_overriden %>
<li class="nav-item-guidelines"><a class="<%= @page == 'faq' ? 'active' : '' %>" href="<%=guidelines_path%>"><%=t "guidelines" %></a></li>
<li class="nav-item-faq"><a href="<%=faq_path%>"><%=t "js.faq" %></a></li>

View file

@ -1955,6 +1955,7 @@ en:
color_schemes:
base_theme_name: "Base"
about: "About"
guidelines: "Guidelines"
privacy: "Privacy"