mirror of
https://github.com/discourse/discourse.git
synced 2024-11-26 20:46:18 +08:00
Lots of bugfixes
BUGFIX: navigation bar should always activate the right tab (even when diging into a top period) BUGFIX: /top pages titles BUGFIX: no "edit category" button on /top page after visiting a category BUGFIX: properly hide category columns when there is no children category (on both filter + top pages) BUGFIX: promises not caught when scrolling down a topic list to load more of them BUGFIX: CSS on category dropdowns Updated `top_menu` i18n with available filters
This commit is contained in:
parent
4981525047
commit
129617b415
|
@ -27,7 +27,7 @@ Discourse.NavigationItemComponent = Ember.Component.extend({
|
||||||
|
|
||||||
active: function() {
|
active: function() {
|
||||||
return this.get('content.filterMode') === this.get('filterMode') ||
|
return this.get('content.filterMode') === this.get('filterMode') ||
|
||||||
(this.get('filterMode') === 'top' && this.get('content.filterMode').indexOf('top') >= 0);
|
this.get('filterMode').indexOf(this.get('content.filterMode')) === 0;
|
||||||
}.property('content.filterMode', 'filterMode'),
|
}.property('content.filterMode', 'filterMode'),
|
||||||
|
|
||||||
name: function() {
|
name: function() {
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
@module Discourse
|
@module Discourse
|
||||||
**/
|
**/
|
||||||
Discourse.DiscoveryTopController = Discourse.ObjectController.extend({
|
Discourse.DiscoveryTopController = Discourse.ObjectController.extend({
|
||||||
category:null,
|
category: null,
|
||||||
|
|
||||||
redirectedToTopPageReason: function() {
|
redirectedToTopPageReason: function() {
|
||||||
// no need for a reason if the default homepage is "top"
|
// no need for a reason if the default homepage is "top"
|
||||||
|
|
|
@ -46,7 +46,7 @@ Discourse.DiscoveryTopicsController = Discourse.ObjectController.extend({
|
||||||
|
|
||||||
hasTopics: Em.computed.gt('topics.length', 0),
|
hasTopics: Em.computed.gt('topics.length', 0),
|
||||||
showTable: Em.computed.or('hasTopics', 'topicTrackingState.hasIncoming'),
|
showTable: Em.computed.or('hasTopics', 'topicTrackingState.hasIncoming'),
|
||||||
latest: Ember.computed.equal('filter', 'latest'),
|
latest: Em.computed.equal('filter', 'latest'),
|
||||||
allLoaded: Em.computed.empty('more_topics_url'),
|
allLoaded: Em.computed.empty('more_topics_url'),
|
||||||
|
|
||||||
updateTitle: function(){
|
updateTitle: function(){
|
||||||
|
|
|
@ -28,13 +28,13 @@ Discourse.NavigationDefaultController = Discourse.Controller.extend({
|
||||||
|
|
||||||
navItems: function() {
|
navItems: function() {
|
||||||
return Discourse.NavItem.buildList();
|
return Discourse.NavItem.buildList();
|
||||||
}.property()
|
}.property()
|
||||||
});
|
});
|
||||||
|
|
||||||
Discourse.NavigationCategoryController = Discourse.NavigationDefaultController.extend({
|
Discourse.NavigationCategoryController = Discourse.NavigationDefaultController.extend({
|
||||||
navItems: function() {
|
navItems: function() {
|
||||||
return Discourse.NavItem.buildList(this.get('category'), { noSubcategories: this.get('noSubcategories') });
|
return Discourse.NavItem.buildList(this.get('category'), { noSubcategories: this.get('noSubcategories') });
|
||||||
}.property('category', 'noSubcategories')
|
}.property('category', 'noSubcategories')
|
||||||
});
|
});
|
||||||
|
|
||||||
Discourse.NavigationCategoriesController = Discourse.NavigationDefaultController.extend({});
|
Discourse.NavigationCategoriesController = Discourse.NavigationDefaultController.extend({});
|
||||||
|
|
|
@ -88,8 +88,6 @@ Discourse.computed = {
|
||||||
})));
|
})));
|
||||||
});
|
});
|
||||||
return computed.property.apply(computed, args);
|
return computed.property.apply(computed, args);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,15 +10,12 @@
|
||||||
Discourse.TopList = Discourse.Model.extend({});
|
Discourse.TopList = Discourse.Model.extend({});
|
||||||
|
|
||||||
Discourse.TopList.reopenClass({
|
Discourse.TopList.reopenClass({
|
||||||
find: function(period, category) {
|
find: function(filter) {
|
||||||
return PreloadStore.getAndRemove("top_lists", function() {
|
return PreloadStore.getAndRemove("top_lists", function() {
|
||||||
var url = "";
|
var url = Discourse.getURL("/") + (filter || "top") + ".json";
|
||||||
if (category) { url += category.get("url") + "/l"; }
|
return Discourse.ajax(url);
|
||||||
url += "/top";
|
|
||||||
if (period) { url += "/" + period; }
|
|
||||||
return Discourse.ajax(url + ".json");
|
|
||||||
}).then(function (result) {
|
}).then(function (result) {
|
||||||
var topList = Discourse.TopList.create({});
|
var topList = Discourse.TopList.create({ can_create_topic: result.can_create_topic });
|
||||||
|
|
||||||
Discourse.Site.currentProp('periods').forEach(function(period) {
|
Discourse.Site.currentProp('periods').forEach(function(period) {
|
||||||
// if there is a list for that period
|
// if there is a list for that period
|
||||||
|
|
|
@ -78,7 +78,7 @@ Discourse.TopicList = Discourse.Model.extend({
|
||||||
}.observes('sortOrder.order', 'sortOrder.descending'),
|
}.observes('sortOrder.order', 'sortOrder.descending'),
|
||||||
|
|
||||||
loadMore: function() {
|
loadMore: function() {
|
||||||
if (this.get('loadingMore')) { return Ember.RSVP.reject(); }
|
if (this.get('loadingMore')) { return Ember.RSVP.resolve(); }
|
||||||
|
|
||||||
var moreUrl = this.get('more_topics_url');
|
var moreUrl = this.get('more_topics_url');
|
||||||
if (moreUrl) {
|
if (moreUrl) {
|
||||||
|
@ -105,7 +105,7 @@ Discourse.TopicList = Discourse.Model.extend({
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Return a promise indicating no more results
|
// Return a promise indicating no more results
|
||||||
return Ember.RSVP.reject();
|
return Ember.RSVP.resolve();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ Discourse.Route.buildRoutes(function() {
|
||||||
this.resource('discovery', { path: '/' }, function() {
|
this.resource('discovery', { path: '/' }, function() {
|
||||||
|
|
||||||
router = this;
|
router = this;
|
||||||
|
|
||||||
// top
|
// top
|
||||||
this.route('top');
|
this.route('top');
|
||||||
this.route('topCategory', { path: '/category/:slug/l/top' });
|
this.route('topCategory', { path: '/category/:slug/l/top' });
|
||||||
|
@ -56,9 +56,7 @@ Discourse.Route.buildRoutes(function() {
|
||||||
|
|
||||||
// default filter for a category
|
// default filter for a category
|
||||||
this.route('category', { path: '/category/:slug' });
|
this.route('category', { path: '/category/:slug' });
|
||||||
this.route('category', { path: '/category/:slug/more' });
|
|
||||||
this.route('categoryNone', { path: '/category/:slug/none' });
|
this.route('categoryNone', { path: '/category/:slug/none' });
|
||||||
this.route('categoryNone', { path: '/category/:slug/none/more' });
|
|
||||||
this.route('category', { path: '/category/:parentSlug/:slug' });
|
this.route('category', { path: '/category/:parentSlug/:slug' });
|
||||||
|
|
||||||
// homepage
|
// homepage
|
||||||
|
|
|
@ -6,11 +6,6 @@
|
||||||
**/
|
**/
|
||||||
function buildTopicRoute(filter) {
|
function buildTopicRoute(filter) {
|
||||||
return Discourse.Route.extend({
|
return Discourse.Route.extend({
|
||||||
renderTemplate: function() {
|
|
||||||
this.render('navigation/default', { outlet: 'navigation-bar' });
|
|
||||||
this.render('discovery/topics', { controller: 'discoveryTopics', outlet: 'list-container' });
|
|
||||||
},
|
|
||||||
|
|
||||||
beforeModel: function() {
|
beforeModel: function() {
|
||||||
this.controllerFor('navigationDefault').set('filterMode', filter);
|
this.controllerFor('navigationDefault').set('filterMode', filter);
|
||||||
},
|
},
|
||||||
|
@ -27,10 +22,15 @@ function buildTopicRoute(filter) {
|
||||||
},
|
},
|
||||||
|
|
||||||
setupController: function(controller, model) {
|
setupController: function(controller, model) {
|
||||||
var filterText = I18n.t('filters.' + filter + '.title', {count: 0});
|
var filterText = I18n.t('filters.' + filter.replace('/', '.') + '.title', {count: 0});
|
||||||
Discourse.set('title', I18n.t('filters.with_topics', {filter: filterText}));
|
Discourse.set('title', I18n.t('filters.with_topics', {filter: filterText}));
|
||||||
this.controllerFor('discoveryTopics').set('model', model);
|
this.controllerFor('discoveryTopics').set('model', model);
|
||||||
this.controllerFor('navigationDefault').set('canCreateTopic', model.get('can_create_topic'));
|
this.controllerFor('navigationDefault').set('canCreateTopic', model.get('can_create_topic'));
|
||||||
|
},
|
||||||
|
|
||||||
|
renderTemplate: function() {
|
||||||
|
this.render('navigation/default', { outlet: 'navigation-bar' });
|
||||||
|
this.render('discovery/topics', { controller: 'discoveryTopics', outlet: 'list-container' });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -44,11 +44,6 @@ function buildTopicRoute(filter) {
|
||||||
**/
|
**/
|
||||||
function buildCategoryRoute(filter, params) {
|
function buildCategoryRoute(filter, params) {
|
||||||
return Discourse.Route.extend({
|
return Discourse.Route.extend({
|
||||||
renderTemplate: function() {
|
|
||||||
this.render('navigation/category', { outlet: 'navigation-bar' });
|
|
||||||
this.render('discovery/topics', { controller: 'discoveryTopics', outlet: 'list-container' });
|
|
||||||
},
|
|
||||||
|
|
||||||
model: function(params) {
|
model: function(params) {
|
||||||
return Discourse.Category.findBySlug(params.slug, params.parentSlug);
|
return Discourse.Category.findBySlug(params.slug, params.parentSlug);
|
||||||
},
|
},
|
||||||
|
@ -74,10 +69,8 @@ function buildCategoryRoute(filter, params) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If all the categories are the same, we can hide them
|
// If all the categories are the same, we can hide them
|
||||||
var diffCat = list.get('topics').find(function (t) {
|
var hideCategory = !list.get('topics').find(function (t) { return t.get('category') !== model; });
|
||||||
return t.get('category') !== model;
|
list.set('hideCategory', hideCategory);
|
||||||
});
|
|
||||||
if (!diffCat) { list.set('hideCategory', true); }
|
|
||||||
self.set('topics', list);
|
self.set('topics', list);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -85,13 +78,18 @@ function buildCategoryRoute(filter, params) {
|
||||||
setupController: function(controller, model) {
|
setupController: function(controller, model) {
|
||||||
var topics = this.get('topics');
|
var topics = this.get('topics');
|
||||||
|
|
||||||
var filterText = I18n.t('filters.' + filter + '.title', {count: 0});
|
var filterText = I18n.t('filters.' + filter.replace('/', '.') + '.title', {count: 0});
|
||||||
Discourse.set('title', I18n.t('filters.with_category', {filter: filterText, category: model.get('name').capitalize()}));
|
Discourse.set('title', I18n.t('filters.with_category', {filter: filterText, category: model.get('name').capitalize()}));
|
||||||
this.controllerFor('discoveryTopics').set('model', topics);
|
this.controllerFor('discoveryTopics').set('model', topics);
|
||||||
this.controllerFor('navigationCategory').set('canCreateTopic', topics.get('can_create_topic'));
|
this.controllerFor('navigationCategory').set('canCreateTopic', topics.get('can_create_topic'));
|
||||||
this.set('topics', null);
|
this.set('topics', null);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
renderTemplate: function() {
|
||||||
|
this.render('navigation/category', { outlet: 'navigation-bar' });
|
||||||
|
this.render('discovery/topics', { controller: 'discoveryTopics', outlet: 'list-container' });
|
||||||
|
},
|
||||||
|
|
||||||
deactivate: function() {
|
deactivate: function() {
|
||||||
this._super();
|
this._super();
|
||||||
this.controllerFor('search').set('searchContext', null);
|
this.controllerFor('search').set('searchContext', null);
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
/**
|
|
||||||
Handles the routes related to "Top"
|
|
||||||
|
|
||||||
@class DiscoveryTopRoute
|
|
||||||
@extends Discourse.Route
|
|
||||||
@namespace Discourse
|
|
||||||
@module Discourse
|
|
||||||
**/
|
|
||||||
Discourse.DiscoveryTopRoute = Discourse.Route.extend({
|
|
||||||
model: function(params) {
|
|
||||||
return Discourse.Category.findBySlug(params.slug, params.parentSlug);
|
|
||||||
},
|
|
||||||
|
|
||||||
beforeModel: function() {
|
|
||||||
this.controllerFor('navigationCategory').set('filterMode', 'top');
|
|
||||||
},
|
|
||||||
|
|
||||||
afterModel: function(model) {
|
|
||||||
var self = this;
|
|
||||||
return Discourse.TopList.find(null, model).then(function(list) {
|
|
||||||
self.set('topics', list);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
renderTemplate: function() {
|
|
||||||
this.render('navigation/category', { outlet: 'navigation-bar' });
|
|
||||||
this.render('discovery/top', { outlet: 'list-container' });
|
|
||||||
},
|
|
||||||
|
|
||||||
setupController: function(controller, model) {
|
|
||||||
this.controllerFor('discoveryTop').set('model', this.get('topics'));
|
|
||||||
this.controllerFor('discoveryTop').set('category', model);
|
|
||||||
this.controllerFor('navigationCategory').set('category', model);
|
|
||||||
Discourse.set('title', I18n.t('filters.top.title'));
|
|
||||||
this.set('topics', null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Discourse.DiscoveryTopCategoryRoute = Discourse.DiscoveryTopRoute.extend({});
|
|
||||||
Discourse.DiscoveryTopCategoryNoneRoute = Discourse.DiscoveryTopRoute.extend({});
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
/**
|
||||||
|
Handles the routes related to "Top"
|
||||||
|
|
||||||
|
@class DiscoveryTopRoute
|
||||||
|
@extends Discourse.Route
|
||||||
|
@namespace Discourse
|
||||||
|
@module Discourse
|
||||||
|
**/
|
||||||
|
Discourse.DiscoveryTopRoute = Discourse.Route.extend({
|
||||||
|
beforeModel: function() {
|
||||||
|
this.controllerFor('navigationDefault').set('filterMode', 'top');
|
||||||
|
},
|
||||||
|
|
||||||
|
model: function() {
|
||||||
|
return Discourse.TopList.find();
|
||||||
|
},
|
||||||
|
|
||||||
|
setupController: function(controller, model) {
|
||||||
|
var filterText = I18n.t('filters.top.title');
|
||||||
|
Discourse.set('title', I18n.t('filters.with_topics', {filter: filterText}));
|
||||||
|
this.controllerFor('discoveryTop').setProperties({ model: model, category: null });
|
||||||
|
this.controllerFor('navigationDefault').set('canCreateTopic', model.get('can_create_topic'));
|
||||||
|
},
|
||||||
|
|
||||||
|
renderTemplate: function() {
|
||||||
|
this.render('navigation/default', { outlet: 'navigation-bar' });
|
||||||
|
this.render('discovery/top', { outlet: 'list-container' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
Handles the routes related to "Top" within a category
|
||||||
|
|
||||||
|
@class DiscoveryTopCategoryRoute
|
||||||
|
@extends Discourse.Route
|
||||||
|
@namespace Discourse
|
||||||
|
@module Discourse
|
||||||
|
**/
|
||||||
|
Discourse.DiscoveryTopCategoryRoute = Discourse.Route.extend({
|
||||||
|
model: function(params) {
|
||||||
|
return Discourse.Category.findBySlug(params.slug, params.parentSlug);
|
||||||
|
},
|
||||||
|
|
||||||
|
afterModel: function(model) {
|
||||||
|
var self = this,
|
||||||
|
noSubcategories = this.get('no_subcategories'),
|
||||||
|
filterMode = "category/" + Discourse.Category.slugFor(model) + (noSubcategories ? "/none" : "") + "/l/top";
|
||||||
|
|
||||||
|
this.controllerFor('search').set('searchContext', model);
|
||||||
|
|
||||||
|
var opts = { category: model, filterMode: filterMode};
|
||||||
|
opts.noSubcategories = noSubcategories;
|
||||||
|
opts.canEditCategory = Discourse.User.current('staff');
|
||||||
|
this.controllerFor('navigationCategory').setProperties(opts);
|
||||||
|
|
||||||
|
return Discourse.TopList.find(filterMode).then(function(list) {
|
||||||
|
// If all the categories are the same, we can hide them
|
||||||
|
var hideCategory = !_.any(Discourse.Site.currentProp('periods'), function(period){
|
||||||
|
if (list[period]) {
|
||||||
|
return list[period].get('topics').find(function(t) { return t.get('category') !== model; });
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
list.set('hideCategory', hideCategory);
|
||||||
|
self.set('topList', list);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
setupController: function(controller, model) {
|
||||||
|
var topList = this.get('topList');
|
||||||
|
var filterText = I18n.t('filters.top.title');
|
||||||
|
Discourse.set('title', I18n.t('filters.with_category', {filter: filterText, category: model.get('name').capitalize()}));
|
||||||
|
this.controllerFor('discoveryTop').setProperties({ model: topList, category: model });
|
||||||
|
this.controllerFor('navigationCategory').set('canCreateTopic', topList.get('can_create_topic'));
|
||||||
|
this.set('topList', null);
|
||||||
|
},
|
||||||
|
|
||||||
|
renderTemplate: function() {
|
||||||
|
this.render('navigation/category', { outlet: 'navigation-bar' });
|
||||||
|
this.render('discovery/top', { controller: 'discoveryTop', outlet: 'list-container' });
|
||||||
|
},
|
||||||
|
|
||||||
|
deactivate: function() {
|
||||||
|
this._super();
|
||||||
|
this.controllerFor('search').set('searchContext', null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Discourse.DiscoveryTopCategoryNoneRoute = Discourse.DiscoveryTopCategoryRoute.extend({no_subcategories: true});
|
|
@ -5,9 +5,11 @@
|
||||||
{{#sortable-heading sortBy="default" sortOrder=sortOrder}}
|
{{#sortable-heading sortBy="default" sortOrder=sortOrder}}
|
||||||
{{i18n topic.title}}
|
{{i18n topic.title}}
|
||||||
{{/sortable-heading}}
|
{{/sortable-heading}}
|
||||||
{{#sortable-heading sortBy="category" sortOrder=sortOrder}}
|
{{#unless controller.hideCategory}}
|
||||||
{{i18n category_title}}
|
{{#sortable-heading sortBy="category" sortOrder=sortOrder}}
|
||||||
{{/sortable-heading}}
|
{{i18n category_title}}
|
||||||
|
{{/sortable-heading}}
|
||||||
|
{{/unless}}
|
||||||
{{#sortable-heading sortBy="posts" number=true sortOrder=sortOrder}}
|
{{#sortable-heading sortBy="posts" number=true sortOrder=sortOrder}}
|
||||||
{{i18n posts}}
|
{{i18n posts}}
|
||||||
{{/sortable-heading}}
|
{{/sortable-heading}}
|
||||||
|
@ -38,9 +40,11 @@
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
|
{{#unless controller.hideCategory}}
|
||||||
<td class="category">
|
<td class="category">
|
||||||
{{categoryLink topic.category}}
|
{{categoryLink topic.category}}
|
||||||
</td>
|
</td>
|
||||||
|
{{/unless}}
|
||||||
|
|
||||||
<td class='num posts'><a href="{{unbound topic.lastUnreadUrl}}" class='badge-posts'>{{number topic.posts_count numberKey="posts_long"}}</a></td>
|
<td class='num posts'><a href="{{unbound topic.lastUnreadUrl}}" class='badge-posts'>{{number topic.posts_count numberKey="posts_long"}}</a></td>
|
||||||
|
|
||||||
|
|
|
@ -7,28 +7,28 @@
|
||||||
{{#if content.yearly}}
|
{{#if content.yearly}}
|
||||||
<div class="clearfix">
|
<div class="clearfix">
|
||||||
<h2>{{i18n filters.top.this_year}}</h2>
|
<h2>{{i18n filters.top.this_year}}</h2>
|
||||||
{{basic-topic-list topicList=content.yearly}}
|
{{basic-topic-list topicList=content.yearly hideCategory=hideCategory}}
|
||||||
{{#if content.yearly.topics.length}}<a href="{{unbound showMoreYearlyUrl}}" class='btn pull-right'>{{i18n show_more}}</a>{{/if}}
|
{{#if content.yearly.topics.length}}<a href="{{unbound showMoreYearlyUrl}}" class='btn pull-right'>{{i18n show_more}}</a>{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if content.monthly}}
|
{{#if content.monthly}}
|
||||||
<div class="clearfix">
|
<div class="clearfix">
|
||||||
<h2>{{i18n filters.top.this_month}}</h2>
|
<h2>{{i18n filters.top.this_month}}</h2>
|
||||||
{{basic-topic-list topicList=content.monthly}}
|
{{basic-topic-list topicList=content.monthly hideCategory=hideCategory}}
|
||||||
{{#if content.monthly.topics.length}}<a href="{{unbound showMoreMonthlyUrl}}" class='btn pull-right'>{{i18n show_more}}</a>{{/if}}
|
{{#if content.monthly.topics.length}}<a href="{{unbound showMoreMonthlyUrl}}" class='btn pull-right'>{{i18n show_more}}</a>{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if content.weekly}}
|
{{#if content.weekly}}
|
||||||
<div class="clearfix">
|
<div class="clearfix">
|
||||||
<h2>{{i18n filters.top.this_week}}</h2>
|
<h2>{{i18n filters.top.this_week}}</h2>
|
||||||
{{basic-topic-list topicList=content.weekly}}
|
{{basic-topic-list topicList=content.weekly hideCategory=hideCategory}}
|
||||||
{{#if content.weekly.topics.length}}<a href="{{unbound showMoreWeeklyUrl}}" class='btn pull-right'>{{i18n show_more}}</a>{{/if}}
|
{{#if content.weekly.topics.length}}<a href="{{unbound showMoreWeeklyUrl}}" class='btn pull-right'>{{i18n show_more}}</a>{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if content.daily}}
|
{{#if content.daily}}
|
||||||
<div class="clearfix">
|
<div class="clearfix">
|
||||||
<h2>{{i18n filters.top.today}}</h2>
|
<h2>{{i18n filters.top.today}}</h2>
|
||||||
{{basic-topic-list topicList=content.daily}}
|
{{basic-topic-list topicList=content.daily hideCategory=hideCategory}}
|
||||||
{{#if content.daily.topics.length}}<a href="{{unbound showMoreDailyUrl}}" class='btn pull-right'>{{i18n show_more}}</a>{{/if}}
|
{{#if content.daily.topics.length}}<a href="{{unbound showMoreDailyUrl}}" class='btn pull-right'>{{i18n show_more}}</a>{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
{{#sortable-heading sortBy="default" sortOrder=sortOrder}}
|
{{#sortable-heading sortBy="default" sortOrder=sortOrder}}
|
||||||
{{i18n topic.title}}
|
{{i18n topic.title}}
|
||||||
{{/sortable-heading}}
|
{{/sortable-heading}}
|
||||||
{{#unless category}}
|
{{#unless controller.hideCategory}}
|
||||||
{{#sortable-heading sortBy="category" sortOrder=sortOrder}}
|
{{#sortable-heading sortBy="category" sortOrder=sortOrder}}
|
||||||
{{i18n category_title}}
|
{{i18n category_title}}
|
||||||
{{/sortable-heading}}
|
{{/sortable-heading}}
|
||||||
|
@ -59,7 +59,7 @@
|
||||||
{{footerMessage}}
|
{{footerMessage}}
|
||||||
{{#if allLoaded}}
|
{{#if allLoaded}}
|
||||||
{{#if latest}}
|
{{#if latest}}
|
||||||
{{#if canCreateTopic}}
|
{{#if can_create_topic}}
|
||||||
<a href='#' {{action createTopic}}>{{i18n topic.suggest_create_topic}}</a>
|
<a href='#' {{action createTopic}}>{{i18n topic.suggest_create_topic}}</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
|
|
|
@ -20,7 +20,7 @@ Discourse.DiscoveryTopicsView = Discourse.View.extend(Discourse.LoadMore, {
|
||||||
loadMore: function() {
|
loadMore: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
Discourse.notifyTitle(0);
|
Discourse.notifyTitle(0);
|
||||||
self.get('controller').loadMoreTopics().then(function (hasMoreResults) {
|
this.get('controller').loadMoreTopics().then(function (hasMoreResults) {
|
||||||
Em.run.schedule('afterRender', function() {
|
Em.run.schedule('afterRender', function() {
|
||||||
self.saveScrollPosition();
|
self.saveScrollPosition();
|
||||||
});
|
});
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
float: left;
|
float: left;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
float: right;
|
float: right;
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
|
@ -21,23 +22,20 @@
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.badge-category {padding: 3px 12px; font-size: 16px;
|
a.badge-category {
|
||||||
|
padding: 3px 12px;
|
||||||
|
font-size: 16px;
|
||||||
|
|
||||||
&.category-dropdown-button {
|
&.category-dropdown-button {
|
||||||
padding: 3px 9px 2px 9px;
|
padding: 3px 9px;
|
||||||
|
i { height: 20px; }
|
||||||
i {height: 20px;}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge-category {
|
.badge-category {
|
||||||
|
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
text-transform: capitalize;
|
text-transform: capitalize;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ class ListController < ApplicationController
|
||||||
:top_lists, TopTopic.periods.map { |p| "top_#{p}".to_sym }
|
:top_lists, TopTopic.periods.map { |p| "top_#{p}".to_sym }
|
||||||
].flatten
|
].flatten
|
||||||
|
|
||||||
before_filter :set_category, only: [:category, :category_feed]
|
before_filter :set_category, only: [:category_feed]
|
||||||
skip_before_filter :check_xhr
|
skip_before_filter :check_xhr
|
||||||
|
|
||||||
# Create our filters
|
# Create our filters
|
||||||
|
@ -151,19 +151,19 @@ class ListController < ApplicationController
|
||||||
private
|
private
|
||||||
|
|
||||||
def set_category
|
def set_category
|
||||||
slug = params.fetch(:category)
|
slug_or_id = params.fetch(:category)
|
||||||
parent_slug = params[:parent_category]
|
parent_slug_or_id = params[:parent_category]
|
||||||
|
|
||||||
parent_category_id = nil
|
parent_category_id = nil
|
||||||
if parent_slug.present?
|
if parent_slug.present?
|
||||||
parent_category_id = Category.where(slug: parent_slug).pluck(:id).first ||
|
parent_category_id = Category.where(slug: parent_slug_or_id).pluck(:id).first ||
|
||||||
Category.where(id: parent_slug.to_i).pluck(:id).first
|
Category.where(id: parent_slug_or_id.to_i).pluck(:id).first
|
||||||
|
|
||||||
raise Discourse::NotFound.new if parent_category_id.blank?
|
raise Discourse::NotFound.new if parent_category_id.blank?
|
||||||
end
|
end
|
||||||
|
|
||||||
@category = Category.where(slug: slug, parent_category_id: parent_category_id).includes(:featured_users).first ||
|
@category = Category.where(slug: slug_or_id, parent_category_id: parent_category_id).includes(:featured_users).first ||
|
||||||
Category.where(id: slug.to_i, parent_category_id: parent_category_id).includes(:featured_users).first
|
Category.where(id: slug_or_id.to_i, parent_category_id: parent_category_id).includes(:featured_users).first
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_topic_list_options
|
def build_topic_list_options
|
||||||
|
@ -172,7 +172,7 @@ class ListController < ApplicationController
|
||||||
menu_item = menu_items.select { |item| item.query_should_exclude_category?(action_name, params[:format]) }.first
|
menu_item = menu_items.select { |item| item.query_should_exclude_category?(action_name, params[:format]) }.first
|
||||||
|
|
||||||
# exclude_category = 1. from params / 2. parsed from top menu / 3. nil
|
# exclude_category = 1. from params / 2. parsed from top menu / 3. nil
|
||||||
result = {
|
options = {
|
||||||
page: params[:page],
|
page: params[:page],
|
||||||
topic_ids: param_to_integer_list(:topic_ids),
|
topic_ids: param_to_integer_list(:topic_ids),
|
||||||
exclude_category: (params[:exclude_category] || menu_item.try(:filter)),
|
exclude_category: (params[:exclude_category] || menu_item.try(:filter)),
|
||||||
|
@ -181,8 +181,9 @@ class ListController < ApplicationController
|
||||||
sort_descending: params[:sort_descending],
|
sort_descending: params[:sort_descending],
|
||||||
status: params[:status]
|
status: params[:status]
|
||||||
}
|
}
|
||||||
result[:no_subcategories] = true if params[:no_subcategories] == 'true'
|
options[:no_subcategories] = true if params[:no_subcategories] == 'true'
|
||||||
result
|
|
||||||
|
options
|
||||||
end
|
end
|
||||||
|
|
||||||
def list_target_user
|
def list_target_user
|
||||||
|
|
|
@ -607,7 +607,7 @@ class User < ActiveRecord::Base
|
||||||
private
|
private
|
||||||
|
|
||||||
def previous_visit_at_update_required?(timestamp)
|
def previous_visit_at_update_required?(timestamp)
|
||||||
seen_before? && last_seen_at < (timestamp - SiteSetting.previous_visit_timeout_hours.hours)
|
seen_before? && (last_seen_at < (timestamp - SiteSetting.previous_visit_timeout_hours.hours))
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_previous_visit(timestamp)
|
def update_previous_visit(timestamp)
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
class TopListSerializer < ApplicationSerializer
|
class TopListSerializer < ApplicationSerializer
|
||||||
|
|
||||||
|
attribute :can_create_topic
|
||||||
|
|
||||||
|
def can_create_topic
|
||||||
|
scope.can_create?(Topic)
|
||||||
|
end
|
||||||
|
|
||||||
TopTopic.periods.each do |period|
|
TopTopic.periods.each do |period|
|
||||||
attribute period
|
attribute period
|
||||||
|
|
||||||
|
|
|
@ -1118,6 +1118,14 @@ en:
|
||||||
top:
|
top:
|
||||||
title: "Top"
|
title: "Top"
|
||||||
help: "a selection of the best topics"
|
help: "a selection of the best topics"
|
||||||
|
yearly:
|
||||||
|
title: "Top Yearly"
|
||||||
|
monthly:
|
||||||
|
title: "Top Monthly"
|
||||||
|
weekly:
|
||||||
|
title: "Top Weekly"
|
||||||
|
daily:
|
||||||
|
title: "Top Daily"
|
||||||
this_year: "This year"
|
this_year: "This year"
|
||||||
this_month: "This month"
|
this_month: "This month"
|
||||||
this_week: "This week"
|
this_week: "This week"
|
||||||
|
|
|
@ -540,7 +540,7 @@ cs:
|
||||||
ga_domain_name: "Doménové jméno pro Google analytics, např. mysite.com; viz http://google.com/analytics"
|
ga_domain_name: "Doménové jméno pro Google analytics, např. mysite.com; viz http://google.com/analytics"
|
||||||
enable_escaped_fragments: "Povolit alternativní řešení, které pomůže starým webovým robotům indexovat váš web. VAROVÁNÍ: povolte pouze v případě, že to opravdu potřebujete."
|
enable_escaped_fragments: "Povolit alternativní řešení, které pomůže starým webovým robotům indexovat váš web. VAROVÁNÍ: povolte pouze v případě, že to opravdu potřebujete."
|
||||||
enable_noscript_support: "Povolit podporu <noscript> tagu"
|
enable_noscript_support: "Povolit podporu <noscript> tagu"
|
||||||
top_menu: "Určuje, které položky se zobrazí v navigaci na hlavní stránce a v jakém pořadí. Příklad: latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "Určuje, které položky se zobrazí v navigaci na hlavní stránce a v jakém pořadí. Příklad: latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "Určuje, které položky se zobrazí v menu u příspěvku a v jakém pořadí. Příklad: like|edit|flag|delete|share|bookmark|reply"
|
post_menu: "Určuje, které položky se zobrazí v menu u příspěvku a v jakém pořadí. Příklad: like|edit|flag|delete|share|bookmark|reply"
|
||||||
share_links: "Určuje, které položky se zobrazí ve sdílecím dialogu a v jakém pořadí. Příklad: twitter|facebook|google+"
|
share_links: "Určuje, které položky se zobrazí ve sdílecím dialogu a v jakém pořadí. Příklad: twitter|facebook|google+"
|
||||||
track_external_right_clicks: "Počítat kliknutí na externí odkazy pravým tlačítkem (např. otevření do nové záložky); defaultně zakázáno kvůli přepisu URL"
|
track_external_right_clicks: "Počítat kliknutí na externí odkazy pravým tlačítkem (např. otevření do nové záložky); defaultně zakázáno kvůli přepisu URL"
|
||||||
|
|
|
@ -599,7 +599,7 @@ da:
|
||||||
ga_domain_name: "Google analytics domænenavn, f.eks.: example.com; se http://google.com/analytics."
|
ga_domain_name: "Google analytics domænenavn, f.eks.: example.com; se http://google.com/analytics."
|
||||||
enable_escaped_fragments: "Aktivér workaround som kan hjælpe ældre webcrawlers med at indeksere sitet. ADVARSEL: aktivér kun hvis du har behov for det."
|
enable_escaped_fragments: "Aktivér workaround som kan hjælpe ældre webcrawlers med at indeksere sitet. ADVARSEL: aktivér kun hvis du har behov for det."
|
||||||
enable_noscript_support: "Aktivér standard webcrawler søgemaskineunderstøttelse vha. noscript-tagget"
|
enable_noscript_support: "Aktivér standard webcrawler søgemaskineunderstøttelse vha. noscript-tagget"
|
||||||
top_menu: "Angiv hvilke elementer der skal vises i hjemmesidenavigationen, og i hvilken rækkefølge. Eksempel: latest|hot|read|starred|unread|new|posted|categories."
|
top_menu: "Angiv hvilke elementer der skal vises i hjemmesidenavigationen, og i hvilken rækkefølge. Eksempel: latest|new|unread|starred|categories|top|read|posted."
|
||||||
post_menu: "Angiv hvilke elementer der skal vises i indlægsmenuen, og i hvilken rækkefølge. Eksempel: like|edit|flag|delete|share|bookmark|reply."
|
post_menu: "Angiv hvilke elementer der skal vises i indlægsmenuen, og i hvilken rækkefølge. Eksempel: like|edit|flag|delete|share|bookmark|reply."
|
||||||
share_links: "Angiv hvilke elementer der skal vises i “del“-dialogboksen og i hvilken rækkefølge. Eksempel twitter|facebook|google+|email."
|
share_links: "Angiv hvilke elementer der skal vises i “del“-dialogboksen og i hvilken rækkefølge. Eksempel twitter|facebook|google+|email."
|
||||||
track_external_right_clicks: "Spor højreklik på eksterne links (f.eks.: åbn i ny tab); deaktiveret som standard fordi den omskriver URLer"
|
track_external_right_clicks: "Spor højreklik på eksterne links (f.eks.: åbn i ny tab); deaktiveret som standard fordi den omskriver URLer"
|
||||||
|
|
|
@ -513,7 +513,7 @@ de:
|
||||||
ga_domain_name: "Google Analytics Domänenname, zum Beispiel: mysite.com; siehe http://google.com/analytics"
|
ga_domain_name: "Google Analytics Domänenname, zum Beispiel: mysite.com; siehe http://google.com/analytics"
|
||||||
enable_escaped_fragments: "Aktiviere Umgehungslösung um älteren Suchmaschinen-Webcrawler zu helfen die Seite zu indexieren. ACHTUNG: Nur aktivieren falls wirklich nötig."
|
enable_escaped_fragments: "Aktiviere Umgehungslösung um älteren Suchmaschinen-Webcrawler zu helfen die Seite zu indexieren. ACHTUNG: Nur aktivieren falls wirklich nötig."
|
||||||
enable_noscript_support: "Aktiviere standard Suchmaschinen-Webcrawler Unterstützung durch den noscript Tag"
|
enable_noscript_support: "Aktiviere standard Suchmaschinen-Webcrawler Unterstützung durch den noscript Tag"
|
||||||
top_menu: "Bestimme, welche Navigationselemente in welcher Reihenfolge auftauchen. Beispiel: latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "Bestimme, welche Navigationselemente in welcher Reihenfolge auftauchen. Beispiel: latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "Bestimme, welche Funktionen in welcher Reihenfolge im Beitragsmenü auftauchen. Beispiel: like|edit|flag|delete|share|bookmark|reply"
|
post_menu: "Bestimme, welche Funktionen in welcher Reihenfolge im Beitragsmenü auftauchen. Beispiel: like|edit|flag|delete|share|bookmark|reply"
|
||||||
share_links: "Bestimme, welche Dienste in welcher Reihenfolge im Teilen-Dialog auftauchen. Beispiel: twitter|facebook|google+|email"
|
share_links: "Bestimme, welche Dienste in welcher Reihenfolge im Teilen-Dialog auftauchen. Beispiel: twitter|facebook|google+|email"
|
||||||
track_external_right_clicks: "Verfolge, welche externen Links per Rechtsklick geöffnet werden (zum Beispiel in einem neuen Browser-Tab). Standardmäßig deaktiviert, da dies URL-Rewrites erfordert."
|
track_external_right_clicks: "Verfolge, welche externen Links per Rechtsklick geöffnet werden (zum Beispiel in einem neuen Browser-Tab). Standardmäßig deaktiviert, da dies URL-Rewrites erfordert."
|
||||||
|
|
|
@ -600,7 +600,7 @@ en:
|
||||||
ga_domain_name: "Google analytics domain name, eg: mysite.com; see http://google.com/analytics"
|
ga_domain_name: "Google analytics domain name, eg: mysite.com; see http://google.com/analytics"
|
||||||
enable_escaped_fragments: "Enable workaround solution to help older search engine webcrawlers index your site. WARNING: enable only if you have to."
|
enable_escaped_fragments: "Enable workaround solution to help older search engine webcrawlers index your site. WARNING: enable only if you have to."
|
||||||
enable_noscript_support: "Enable standard webcrawler search engine support via the noscript tag"
|
enable_noscript_support: "Enable standard webcrawler search engine support via the noscript tag"
|
||||||
top_menu: "Determine which items appear in the homepage navigation, and in what order. Example latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "Determine which items appear in the homepage navigation, and in what order. Example latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "Determine which items appear on the post menu, and in what order. Example like|edit|flag|delete|share|bookmark|reply"
|
post_menu: "Determine which items appear on the post menu, and in what order. Example like|edit|flag|delete|share|bookmark|reply"
|
||||||
share_links: "Determine which items appear on the share dialog, and in what order. Example twitter|facebook|google+|email"
|
share_links: "Determine which items appear on the share dialog, and in what order. Example twitter|facebook|google+|email"
|
||||||
track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs"
|
track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs"
|
||||||
|
|
|
@ -331,7 +331,7 @@ es:
|
||||||
post_undo_action_window_mins: "Número de segundos en los que a los usuarios se les permite revertir la acción en un post (like, flag, etc)"
|
post_undo_action_window_mins: "Número de segundos en los que a los usuarios se les permite revertir la acción en un post (like, flag, etc)"
|
||||||
must_approve_users: "Los administradores deben aprovar a todos los usuarios antes de tener acceso"
|
must_approve_users: "Los administradores deben aprovar a todos los usuarios antes de tener acceso"
|
||||||
ga_tracking_code: "Código de Google Analytics, ej: UA-12345678-9; visita http://google.com/analytics"
|
ga_tracking_code: "Código de Google Analytics, ej: UA-12345678-9; visita http://google.com/analytics"
|
||||||
top_menu: "Determinar que items aparecen en la navegación de la home y en qué orden. Ejemplo latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "Determinar que items aparecen en la navegación de la home y en qué orden. Ejemplo latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "Determinar que items aparecen en el menú de post y en qué orden. Ejemplo like|edit|flag|delete|share|bookmark|reply"
|
post_menu: "Determinar que items aparecen en el menú de post y en qué orden. Ejemplo like|edit|flag|delete|share|bookmark|reply"
|
||||||
track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs"
|
track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs"
|
||||||
topics_per_page: "Cuantos topics son cargados por defecto en la página de lista de topics"
|
topics_per_page: "Cuantos topics son cargados por defecto en la página de lista de topics"
|
||||||
|
|
|
@ -551,7 +551,7 @@ fr:
|
||||||
ga_domain_name: "Domaine suivi par Google Analytics, par exemple : monsite.com, voir: http://google.com/analytics"
|
ga_domain_name: "Domaine suivi par Google Analytics, par exemple : monsite.com, voir: http://google.com/analytics"
|
||||||
enable_escaped_fragments: "Activer une solution de contournement afin d'aider d'ancien moteurs de recherche d'indexer votre site. ATTENTION : à activer seulement si vous le devez."
|
enable_escaped_fragments: "Activer une solution de contournement afin d'aider d'ancien moteurs de recherche d'indexer votre site. ATTENTION : à activer seulement si vous le devez."
|
||||||
enable_noscript_support: "Activer le support des moteurs de recherches standards via le tag noscript"
|
enable_noscript_support: "Activer le support des moteurs de recherches standards via le tag noscript"
|
||||||
top_menu: "L'ordre des éléments dans le menu du haut. Exemple latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "L'ordre des éléments dans le menu du haut. Exemple latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "L'ordre des éléments dans le menu de rédaction. Exemple like|edit|flag|delete|share|bookmark|reply"
|
post_menu: "L'ordre des éléments dans le menu de rédaction. Exemple like|edit|flag|delete|share|bookmark|reply"
|
||||||
share_links: "Liste ordonnée des boutons de partage. Exemple : twitter|facebook|google+|email"
|
share_links: "Liste ordonnée des boutons de partage. Exemple : twitter|facebook|google+|email"
|
||||||
track_external_right_clicks: "Suivi des clics sur les liens externes (ex: ouverture dans un nouvel onglet) désactivé par défaut car nécessite une ré-écrite de toutes les urls"
|
track_external_right_clicks: "Suivi des clics sur les liens externes (ex: ouverture dans un nouvel onglet) désactivé par défaut car nécessite une ré-écrite de toutes les urls"
|
||||||
|
|
|
@ -342,7 +342,7 @@ id:
|
||||||
post_undo_action_window_mins: "Number of seconds users are allowed to reverse actions on a post (like, flag, etc)"
|
post_undo_action_window_mins: "Number of seconds users are allowed to reverse actions on a post (like, flag, etc)"
|
||||||
must_approve_users: "Admins must approve all users before they gain access"
|
must_approve_users: "Admins must approve all users before they gain access"
|
||||||
ga_tracking_code: "Google analytics tracking code code, eg: UA-12345678-9; see http://google.com/analytics"
|
ga_tracking_code: "Google analytics tracking code code, eg: UA-12345678-9; see http://google.com/analytics"
|
||||||
top_menu: "Determine which items appear in the homepage navigation, and in what order. Example latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "Determine which items appear in the homepage navigation, and in what order. Example latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "Determine which items appear on the post menu, and in what order. Example like|edit|flag|delete|share|bookmark|reply"
|
post_menu: "Determine which items appear on the post menu, and in what order. Example like|edit|flag|delete|share|bookmark|reply"
|
||||||
track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs"
|
track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs"
|
||||||
topics_per_page: "How many topics are loaded by default on the topics list page"
|
topics_per_page: "How many topics are loaded by default on the topics list page"
|
||||||
|
|
|
@ -462,7 +462,7 @@ it:
|
||||||
must_approve_users: "Gli amministratori devono autorizzare ogni utente prima che esso abbia accesso"
|
must_approve_users: "Gli amministratori devono autorizzare ogni utente prima che esso abbia accesso"
|
||||||
ga_tracking_code: "Codice Google Analytics per il tracking, es: UA-12345678-9; per informazioni http://google.com/analytics"
|
ga_tracking_code: "Codice Google Analytics per il tracking, es: UA-12345678-9; per informazioni http://google.com/analytics"
|
||||||
ga_domain_name: "Nome del Dominio Google analytics, esempio: miosito.com; see http://google.com/analytics"
|
ga_domain_name: "Nome del Dominio Google analytics, esempio: miosito.com; see http://google.com/analytics"
|
||||||
top_menu: "Determina quali elementi vengono mostrati nella navigazione in homepage, ed in quale ordine. Esempio latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "Determina quali elementi vengono mostrati nella navigazione in homepage, ed in quale ordine. Esempio latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "Determina quali elementi vengono mostrati nel menù del post, ed in quale ordine. Esempio like|edit|flag|delete|share|bookmark|reply"
|
post_menu: "Determina quali elementi vengono mostrati nel menù del post, ed in quale ordine. Esempio like|edit|flag|delete|share|bookmark|reply"
|
||||||
share_links: "Determina quali elementi vengono mostrati nella dialog di condivisione e in quale ordine. Esempio twitter|facebook|google+"
|
share_links: "Determina quali elementi vengono mostrati nella dialog di condivisione e in quale ordine. Esempio twitter|facebook|google+"
|
||||||
track_external_right_clicks: "Traccia i link esterni sui quali viene fatto click destro (es: apri in una nuova tab). Disabilitato di default perché viene fatto il rewrite delle URL"
|
track_external_right_clicks: "Traccia i link esterni sui quali viene fatto click destro (es: apri in una nuova tab). Disabilitato di default perché viene fatto il rewrite delle URL"
|
||||||
|
|
|
@ -533,7 +533,7 @@ ja:
|
||||||
ga_domain_name: "Google analytics のドメイン名。例: mysite.com; 参考 http://google.com/analytics"
|
ga_domain_name: "Google analytics のドメイン名。例: mysite.com; 参考 http://google.com/analytics"
|
||||||
enable_escaped_fragments: "古いサーチエンジンクローラがあなたのサイトのインデックスを構築するのをサポートするワークアラウンドを有効にする。注意: 必要な場合のみ有効にすることを推奨。"
|
enable_escaped_fragments: "古いサーチエンジンクローラがあなたのサイトのインデックスを構築するのをサポートするワークアラウンドを有効にする。注意: 必要な場合のみ有効にすることを推奨。"
|
||||||
enable_noscript_support: "noscript タグ経由でアクセスしてきた標準サーチエンジンクローラのサポートを有効にする"
|
enable_noscript_support: "noscript タグ経由でアクセスしてきた標準サーチエンジンクローラのサポートを有効にする"
|
||||||
top_menu: "ホームページナビゲーションに表示する項目を指定。例 latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "ホームページナビゲーションに表示する項目を指定。例 latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "ポストメニューに表示する項目を指定。例 like|edit|flag|delete|share|bookmark|reply"
|
post_menu: "ポストメニューに表示する項目を指定。例 like|edit|flag|delete|share|bookmark|reply"
|
||||||
share_links: "シェアダイアログに表示する項目を指定。例 twitter|facebook|google+|email"
|
share_links: "シェアダイアログに表示する項目を指定。例 twitter|facebook|google+|email"
|
||||||
track_external_right_clicks: "右クリックされた外部リンクをトラックする (例: 新しいタブで開く)。URL のリライトを要するためデフォルトでは無効化されています"
|
track_external_right_clicks: "右クリックされた外部リンクをトラックする (例: 新しいタブで開く)。URL のリライトを要するためデフォルトでは無効化されています"
|
||||||
|
|
|
@ -552,7 +552,7 @@ ko:
|
||||||
ga_domain_name: "Google analytics domain name, eg: mysite.com; see http://google.com/analytics"
|
ga_domain_name: "Google analytics domain name, eg: mysite.com; see http://google.com/analytics"
|
||||||
enable_escaped_fragments: "당신의 사이트의 오래된 정보를 검색하기 위한 웹크롤러 Workaround 솔루션을 활성. 주의: 꼭 필요할 때만 활성화"
|
enable_escaped_fragments: "당신의 사이트의 오래된 정보를 검색하기 위한 웹크롤러 Workaround 솔루션을 활성. 주의: 꼭 필요할 때만 활성화"
|
||||||
enable_noscript_support: "당신의 사이트를 검색하기 위한 noscript 테그를 이용한 일반적인 웹 크롤러를 활성화"
|
enable_noscript_support: "당신의 사이트를 검색하기 위한 noscript 테그를 이용한 일반적인 웹 크롤러를 활성화"
|
||||||
top_menu: "Determine which items appear in the homepage navigation, and in what order. Example latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "Determine which items appear in the homepage navigation, and in what order. Example latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "게시물 메뉴에 어떤 사항들이 무슨 순서로 올라올지 결정합니다. 예: 좋아요|수정|신고|삭제|공유|북마크|답글"
|
post_menu: "게시물 메뉴에 어떤 사항들이 무슨 순서로 올라올지 결정합니다. 예: 좋아요|수정|신고|삭제|공유|북마크|답글"
|
||||||
share_links: "Determine which items appear on the share dialog, and in what order. Example twitter|facebook|google+"
|
share_links: "Determine which items appear on the share dialog, and in what order. Example twitter|facebook|google+"
|
||||||
track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs"
|
track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs"
|
||||||
|
|
|
@ -564,7 +564,7 @@ nl:
|
||||||
ga_domain_name: "Google analytics domeinnaam, bijv. mijnsite.nl; zie http://google.com/analytics"
|
ga_domain_name: "Google analytics domeinnaam, bijv. mijnsite.nl; zie http://google.com/analytics"
|
||||||
enable_escaped_fragments: "Schakel workaround in om oude crawlers je site te kunnen laten indexeren. WAARSCHUWING: gebruik dit alleen als je het echt nodig hebt."
|
enable_escaped_fragments: "Schakel workaround in om oude crawlers je site te kunnen laten indexeren. WAARSCHUWING: gebruik dit alleen als je het echt nodig hebt."
|
||||||
enable_noscript_support: "Ondersteun <noscript> tag"
|
enable_noscript_support: "Ondersteun <noscript> tag"
|
||||||
top_menu: "De volgorde en selectie van items in het hoofdmenu. Bijvoorbeeld latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "De volgorde en selectie van items in het hoofdmenu. Bijvoorbeeld latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "De volgorde en selectie van items in het berichtmenu. Bijvoorbeeld like|edit|flag|delete|share|bookmark|reply"
|
post_menu: "De volgorde en selectie van items in het berichtmenu. Bijvoorbeeld like|edit|flag|delete|share|bookmark|reply"
|
||||||
share_links: "De volgorde en selectie van items in het deelmenu. Bijvoorbeeld twitter|facebook|google+"
|
share_links: "De volgorde en selectie van items in het deelmenu. Bijvoorbeeld twitter|facebook|google+"
|
||||||
track_external_right_clicks: "Houd bij welke externe links met de rechtermuisknop worden aangeklikt (bijv: open in nieuwe tab). Dit staat standaard uit, gezien het de URLs moet herschrijven, waardoor het gebruiksgemak afneemt"
|
track_external_right_clicks: "Houd bij welke externe links met de rechtermuisknop worden aangeklikt (bijv: open in nieuwe tab). Dit staat standaard uit, gezien het de URLs moet herschrijven, waardoor het gebruiksgemak afneemt"
|
||||||
|
|
|
@ -283,7 +283,7 @@ pt:
|
||||||
post_undo_action_window_mins: "The window in which someone can reverse an action on a post (such as liking)"
|
post_undo_action_window_mins: "The window in which someone can reverse an action on a post (such as liking)"
|
||||||
must_approve_users: "The owners of the forum must approve users before they gain access."
|
must_approve_users: "The owners of the forum must approve users before they gain access."
|
||||||
ga_tracking_code: "Google analytics tracking code, see: http://google.com/analytics"
|
ga_tracking_code: "Google analytics tracking code, see: http://google.com/analytics"
|
||||||
top_menu: "The order of the items in the top menu. Example latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "The order of the items in the top menu. Example latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "The order of the items on the post menu."
|
post_menu: "The order of the items on the post menu."
|
||||||
max_length_show_reply: "Embedded replies to posts won't be shown if they directly below and are below this length."
|
max_length_show_reply: "Embedded replies to posts won't be shown if they directly below and are below this length."
|
||||||
track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default cause it has to re-write urls, hurting usability"
|
track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default cause it has to re-write urls, hurting usability"
|
||||||
|
|
|
@ -544,7 +544,7 @@ pt_BR:
|
||||||
ga_domain_name: "Nome de domínio no Google Analytics, exemplo: meusite.com; see http://google.com/analytics"
|
ga_domain_name: "Nome de domínio no Google Analytics, exemplo: meusite.com; see http://google.com/analytics"
|
||||||
enable_escaped_fragments: "Ativa solução alternativa que ajuda os mecanismos de busca antigos a indexarem o seu site. ALERTA: apenas ative se você realmente precisa disto."
|
enable_escaped_fragments: "Ativa solução alternativa que ajuda os mecanismos de busca antigos a indexarem o seu site. ALERTA: apenas ative se você realmente precisa disto."
|
||||||
enable_noscript_support: "Ativar suporte a tag <noscript>"
|
enable_noscript_support: "Ativar suporte a tag <noscript>"
|
||||||
top_menu: "A ordem dos items no menu de cima. Exemplo latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "A ordem dos items no menu de cima. Exemplo latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "A ordem dos items no menu da postagem."
|
post_menu: "A ordem dos items no menu da postagem."
|
||||||
share_links: "Determine quais ítens aparecerem no diálogo de compartilhar, e em que ordem. Por exemplo: twitter|facebook|google+|email"
|
share_links: "Determine quais ítens aparecerem no diálogo de compartilhar, e em que ordem. Por exemplo: twitter|facebook|google+|email"
|
||||||
track_external_right_clicks: "Rastrear cliques externos que são clicados com o botão direito (ex: abrir em nova aba) desativado por padrão, pois tem que reescrever urls, quebrando a usabilidade"
|
track_external_right_clicks: "Rastrear cliques externos que são clicados com o botão direito (ex: abrir em nova aba) desativado por padrão, pois tem que reescrever urls, quebrando a usabilidade"
|
||||||
|
|
|
@ -552,7 +552,7 @@ ru:
|
||||||
ga_domain_name: 'Доменное имя для Google analytics, например: mysite.com; смотрите http://google.com/analytics'
|
ga_domain_name: 'Доменное имя для Google analytics, например: mysite.com; смотрите http://google.com/analytics'
|
||||||
enable_escaped_fragments: 'Включить поддержку escaped_fragments для устаревших поисковых роботов (типа Яндекс). Внимание: включайте только при крайней необходимости.'
|
enable_escaped_fragments: 'Включить поддержку escaped_fragments для устаревших поисковых роботов (типа Яндекс). Внимание: включайте только при крайней необходимости.'
|
||||||
enable_noscript_support: 'Включить поддержку тэга noscript для поисковых роботов'
|
enable_noscript_support: 'Включить поддержку тэга noscript для поисковых роботов'
|
||||||
top_menu: 'Определите, как должны располагаться элементы в навигации на главной странице. Пример: latest|hot|read|starred|unread|new|posted|categories'
|
top_menu: 'Определите, как должны располагаться элементы в навигации на главной странице. Пример: latest|new|unread|starred|categories|top|read|posted'
|
||||||
post_menu: 'Определите, какие элементы должны отображаться в меню у сообщения и в какой последовательности. Пример: like|edit|flag|delete|share|bookmark|reply'
|
post_menu: 'Определите, какие элементы должны отображаться в меню у сообщения и в какой последовательности. Пример: like|edit|flag|delete|share|bookmark|reply'
|
||||||
share_links: 'Определите, какие элементы должны отображаться в меню «Поделиться» и в какой последовательности. Пример: twitter|facebook|google+'
|
share_links: 'Определите, какие элементы должны отображаться в меню «Поделиться» и в какой последовательности. Пример: twitter|facebook|google+'
|
||||||
track_external_right_clicks: 'Отслеживать внешние ссылки, открытые правой кнопкой мыши (например: открыть в новой вкладке), по умолчанию отключено, так как это перезаписывает пути'
|
track_external_right_clicks: 'Отслеживать внешние ссылки, открытые правой кнопкой мыши (например: открыть в новой вкладке), по умолчанию отключено, так как это перезаписывает пути'
|
||||||
|
|
|
@ -384,7 +384,7 @@ sv:
|
||||||
post_undo_action_window_mins: "Number of seconds users are allowed to reverse actions on a post (like, flag, etc)"
|
post_undo_action_window_mins: "Number of seconds users are allowed to reverse actions on a post (like, flag, etc)"
|
||||||
must_approve_users: "Admins must approve all users before they gain access"
|
must_approve_users: "Admins must approve all users before they gain access"
|
||||||
ga_tracking_code: "Google analytics tracking code code, eg: UA-12345678-9; see http://google.com/analytics"
|
ga_tracking_code: "Google analytics tracking code code, eg: UA-12345678-9; see http://google.com/analytics"
|
||||||
top_menu: "Determine which items appear in the homepage navigation, and in what order. Example latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "Determine which items appear in the homepage navigation, and in what order. Example latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "Determine which items appear on the post menu, and in what order. Example like|edit|flag|delete|share|bookmark|reply"
|
post_menu: "Determine which items appear on the post menu, and in what order. Example like|edit|flag|delete|share|bookmark|reply"
|
||||||
share_links: "Determine which items appear on the share dialog, and in what order. Example twitter|facebook|google+|email"
|
share_links: "Determine which items appear on the share dialog, and in what order. Example twitter|facebook|google+|email"
|
||||||
track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs"
|
track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs"
|
||||||
|
|
|
@ -482,7 +482,7 @@ zh_CN:
|
||||||
must_approve_users: "用户必须获得管理员批准方能访问"
|
must_approve_users: "用户必须获得管理员批准方能访问"
|
||||||
ga_tracking_code: "谷歌分析追踪代码,例如:UA-12345678-9。参考 http://google.com/analytics"
|
ga_tracking_code: "谷歌分析追踪代码,例如:UA-12345678-9。参考 http://google.com/analytics"
|
||||||
ga_domain_name: "谷歌分析域名,例如:mysite.com;参考 http://google.com/analytics"
|
ga_domain_name: "谷歌分析域名,例如:mysite.com;参考 http://google.com/analytics"
|
||||||
top_menu: "确定在主页导航条包含哪些条目,以及排列顺序。例如:latest|hot|read|starred|unread|new|posted|categories"
|
top_menu: "确定在主页导航条包含哪些条目,以及排列顺序。例如:latest|new|unread|starred|categories|top|read|posted"
|
||||||
post_menu: "确定在帖子菜单条包含哪些条目,以及排列顺序。例如:like|edit|flag|delete|share|bookmark|reply"
|
post_menu: "确定在帖子菜单条包含哪些条目,以及排列顺序。例如:like|edit|flag|delete|share|bookmark|reply"
|
||||||
share_links: "确定在分享对话框里显示哪些条目、以什么顺序显示。例如 twitter|facebook|google+"
|
share_links: "确定在分享对话框里显示哪些条目、以什么顺序显示。例如 twitter|facebook|google+"
|
||||||
track_external_right_clicks: "追踪外部链接的右键点击(例如:在浏览器新标签打开),缺省是禁用的,因为它会重写URL"
|
track_external_right_clicks: "追踪外部链接的右键点击(例如:在浏览器新标签打开),缺省是禁用的,因为它会重写URL"
|
||||||
|
|
|
@ -203,14 +203,12 @@ Discourse::Application.routes.draw do
|
||||||
post "category/:category_id/move" => "categories#move", as: "category_move"
|
post "category/:category_id/move" => "categories#move", as: "category_move"
|
||||||
get "category/:category.rss" => "list#category_feed", format: :rss, as: "category_feed"
|
get "category/:category.rss" => "list#category_feed", format: :rss, as: "category_feed"
|
||||||
get "category/:category" => "list#category"
|
get "category/:category" => "list#category"
|
||||||
get "category/:category/more" => "list#category"
|
|
||||||
get "category/:category/none" => "list#category_none"
|
get "category/:category/none" => "list#category_none"
|
||||||
get "category/:category/none/more" => "list#category_none"
|
|
||||||
get "category/:parent_category/:category" => "list#category"
|
get "category/:parent_category/:category" => "list#category"
|
||||||
get "category/:parent_category/:category/more" => "list#category"
|
|
||||||
|
|
||||||
get "top" => "list#top_lists"
|
get "top" => "list#top_lists"
|
||||||
get "category/:category/l/top" => "list#top_lists"
|
get "category/:category/l/top" => "list#top_lists"
|
||||||
|
get "category/:category/none/l/top" => "list#top_lists"
|
||||||
get "category/:parent_category/:category/l/top" => "list#top_lists"
|
get "category/:parent_category/:category/l/top" => "list#top_lists"
|
||||||
|
|
||||||
TopTopic.periods.each do |period|
|
TopTopic.periods.each do |period|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user