diff --git a/app/assets/javascripts/discourse/components/breadcrumbs_component.js b/app/assets/javascripts/discourse/components/breadcrumbs_component.js
index 1f4d900942e..d1efb82aef8 100644
--- a/app/assets/javascripts/discourse/components/breadcrumbs_component.js
+++ b/app/assets/javascripts/discourse/components/breadcrumbs_component.js
@@ -7,16 +7,20 @@ Discourse.DiscourseBreadcrumbsComponent = Ember.Component.extend({
return !c.get('parentCategory');
}),
- targetCategory: function() {
- // Note we can't use Em.computed.or here because it returns a boolean not the object
+ firstCategory: function() {
return this.get('parentCategory') || this.get('category');
}.property('parentCategory', 'category'),
+ secondCategory: function() {
+ if (this.get('parentCategory')) return this.get('category');
+ return null;
+ }.property('category', 'parentCategory'),
+
childCategories: function() {
var self = this;
return this.get('categories').filter(function (c) {
- return c.get('parentCategory') === self.get('targetCategory');
+ return c.get('parentCategory') === self.get('firstCategory');
});
- }.property('targetCategory')
+ }.property('firstCategory')
});
diff --git a/app/assets/javascripts/discourse/components/categorydrop_component.js b/app/assets/javascripts/discourse/components/categorydrop_component.js
index 0eb45d09951..cc1ef418a44 100644
--- a/app/assets/javascripts/discourse/components/categorydrop_component.js
+++ b/app/assets/javascripts/discourse/components/categorydrop_component.js
@@ -7,6 +7,17 @@ Discourse.DiscourseCategorydropComponent = Ember.Component.extend({
return "icon icon-caret-right";
}.property('expanded'),
+ allCategoriesUrl: function() {
+ return this.get('category.parentCategory.url') || "/";
+ }.property('category'),
+
+ allCategoriesLabel: function() {
+ if (this.get('subCategory')) {
+ return I18n.t('categories.all_subcategories');
+ }
+ return I18n.t('categories.all');
+ }.property('category'),
+
badgeStyle: function() {
var category = this.get('category');
if (category) {
diff --git a/app/assets/javascripts/discourse/mixins/scrolling.js b/app/assets/javascripts/discourse/mixins/scrolling.js
index d42b67c3878..b106836ea12 100644
--- a/app/assets/javascripts/discourse/mixins/scrolling.js
+++ b/app/assets/javascripts/discourse/mixins/scrolling.js
@@ -24,7 +24,7 @@ Discourse.Scrolling = Em.Mixin.create({
if (opts.debounce) {
onScrollMethod = Discourse.debounce(function() {
return scrollingMixin.scrolled();
- }, 100);
+ }, opts.debounce);
} else {
onScrollMethod = function() {
return scrollingMixin.scrolled();
diff --git a/app/assets/javascripts/discourse/models/category.js b/app/assets/javascripts/discourse/models/category.js
index dc75876c55c..afd286cf8ec 100644
--- a/app/assets/javascripts/discourse/models/category.js
+++ b/app/assets/javascripts/discourse/models/category.js
@@ -31,7 +31,7 @@ Discourse.Category = Discourse.Model.extend({
}.property('id'),
url: function() {
- return Discourse.getURL("/category/") + (this.get('slug'));
+ return Discourse.getURL("/category/") + Discourse.Category.slugFor(this);
}.property('name'),
unreadUrl: function() {
diff --git a/app/assets/javascripts/discourse/models/post_stream.js b/app/assets/javascripts/discourse/models/post_stream.js
index c4c0217d5c6..43819f614cd 100644
--- a/app/assets/javascripts/discourse/models/post_stream.js
+++ b/app/assets/javascripts/discourse/models/post_stream.js
@@ -253,6 +253,8 @@ Discourse.PostStream = Em.Object.extend({
if (opts.nearPost) {
Discourse.TopicView.jumpToPost(topic.get('id'), opts.nearPost);
+ } else {
+ Discourse.TopicView.jumpToPost(topic.get('id'), 1);
}
Discourse.URL.set('queryParams', postStream.get('streamFilters'));
diff --git a/app/assets/javascripts/discourse/templates/components/discourse-breadcrumbs.js.handlebars b/app/assets/javascripts/discourse/templates/components/discourse-breadcrumbs.js.handlebars
index a67132bf284..a25f303fc21 100644
--- a/app/assets/javascripts/discourse/templates/components/discourse-breadcrumbs.js.handlebars
+++ b/app/assets/javascripts/discourse/templates/components/discourse-breadcrumbs.js.handlebars
@@ -1,12 +1,10 @@
-{{discourse-categorydrop parentCategory=category categories=parentCategories}}
+{{discourse-categorydrop category=firstCategory categories=parentCategories}}
-
- {{discourse-categorydrop parentCategory=category category=targetCategory categories=childCategories}}
-
-{{#if parentCategory}}
+
+{{#if childCategories}}
- {{boundCategoryLink category}}
+ {{discourse-categorydrop category=secondCategory categories=childCategories subCategory="true"}}
{{/if}}
diff --git a/app/assets/javascripts/discourse/templates/components/discourse-categorydrop.js.handlebars b/app/assets/javascripts/discourse/templates/components/discourse-categorydrop.js.handlebars
index c7431539092..c3b09e9cc7f 100644
--- a/app/assets/javascripts/discourse/templates/components/discourse-categorydrop.js.handlebars
+++ b/app/assets/javascripts/discourse/templates/components/discourse-categorydrop.js.handlebars
@@ -1,12 +1,13 @@
{{#if category}}
- {{boundCategoryLink category allowUncategorized=true}}
+ {{category.name}}
{{else}}
-
+ {{allCategoriesLabel}}
{{/if}}
{{#if categories}}
+
{{#each categories}}{{categoryLink this allowUncategorized=true}}
{{/each}}
{{/if}}
diff --git a/app/assets/javascripts/discourse/templates/list.js.handlebars b/app/assets/javascripts/discourse/templates/list.js.handlebars
index ab0c79b242f..929844a99a7 100644
--- a/app/assets/javascripts/discourse/templates/list.js.handlebars
+++ b/app/assets/javascripts/discourse/templates/list.js.handlebars
@@ -1,9 +1,7 @@
- {{#if category}}
- {{discourse-breadcrumbs category=category categories=categories}}
- {{/if}}
+ {{discourse-breadcrumbs category=category categories=categories}}
{{each availableNavItems itemViewClass="Discourse.NavItemView"}}
diff --git a/app/assets/javascripts/pagedown_custom.js b/app/assets/javascripts/pagedown_custom.js
index e7a0c885a24..eff6c090cf5 100644
--- a/app/assets/javascripts/pagedown_custom.js
+++ b/app/assets/javascripts/pagedown_custom.js
@@ -10,5 +10,29 @@ window.PagedownCustom = {
return Discourse.__container__.lookup('controller:composer').send('importQuote');
}
}
- ]
+ ],
+
+ customActions: {
+ "doBlockquote": function(chunk, postProcessing, oldDoBlockquote) {
+
+ // When traditional linebreaks are set, use the default Pagedown implementation
+ if (Discourse.SiteSettings.traditional_markdown_linebreaks) {
+ return oldDoBlockquote.call(this, chunk, postProcessing);
+ }
+
+ // Our custom blockquote for non-traditional markdown linebreaks
+ var result = [];
+ chunk.selection.split(/\n/).forEach(function (line) {
+ var newLine = "";
+ if (line.indexOf("> ") === 0) {
+ newLine += line.substr(2);
+ } else {
+ if (/\S/.test(line)) { newLine += "> " + line; }
+ }
+ result.push(newLine);
+ });
+ chunk.selection = result.join("\n");
+
+ }
+ }
};
diff --git a/app/assets/stylesheets/desktop/topic-list.scss b/app/assets/stylesheets/desktop/topic-list.scss
index fe69a38318a..5fb3b9cc2d7 100644
--- a/app/assets/stylesheets/desktop/topic-list.scss
+++ b/app/assets/stylesheets/desktop/topic-list.scss
@@ -342,8 +342,8 @@
.list-controls {
.home {
- font-size: 20px;
- font-weight: normal;
+ background-color: #eee;
+ color: #333;
}
.badge-category {
diff --git a/app/assets/stylesheets/mobile/topic-list.scss b/app/assets/stylesheets/mobile/topic-list.scss
index 591499c24bc..8877ef4ea39 100644
--- a/app/assets/stylesheets/mobile/topic-list.scss
+++ b/app/assets/stylesheets/mobile/topic-list.scss
@@ -241,8 +241,8 @@
.list-controls {
.home {
- font-size: 20px;
- font-weight: normal;
+ color: #333;
+ background-color: #eee;
}
.badge-category {
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index 944550edb29..0be59d5f860 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -184,6 +184,8 @@ en:
"13": "Inbox"
categories:
+ all: "all categories"
+ all_subcategories: "all subcategories"
category: "Category"
posts: "Posts"
topics: "Topics"
diff --git a/vendor/assets/javascripts/Markdown.Editor.js b/vendor/assets/javascripts/Markdown.Editor.js
index bd2f2ac37f8..af4aa90975b 100644
--- a/vendor/assets/javascripts/Markdown.Editor.js
+++ b/vendor/assets/javascripts/Markdown.Editor.js
@@ -18,6 +18,17 @@
// ]
// };
//
+// To extend actions:
+//
+// window.PagedownCustom = {
+// customActions: {
+// "doBlockquote": function(chunk, postProcessing, oldDoBlockquote) {
+// console.log('custom blockquote called!');
+// return oldDoBlockquote.call(this, chunk, postProcessing);
+// }
+// }
+// };
+
(function () {
@@ -1470,6 +1481,17 @@
}
function bindCommand(method) {
+ if (typeof PagedownCustom != "undefined" && PagedownCustom.customActions) {
+ var custom = PagedownCustom.customActions[method];
+ if (custom) {
+ return function() {
+ var args = Array.prototype.slice.call(arguments);
+ args.push(commandManager[method]);
+ return custom.apply(commandManager, args);
+ };
+ }
+ }
+
if (typeof method === "string")
method = commandManager[method];
return function () { method.apply(commandManager, arguments); }