+{{#d-section pageClass="users"}}
+ {{#load-more selector=".directory tbody tr" action="loadMore"}}
+
+
+
+
+ {{period-chooser period=period}}
+ {{text-field value=nameInput placeholderKey="directory.filter_name" class="filter-name no-blur"}}
+
+
+ {{#conditional-loading-spinner condition=model.loading}}
+ {{#if model.length}}
+
{{i18n "directory.total_rows" count=model.totalRows}}
+
+
+
+ |
+ {{directory-toggle field="likes_received" order=order asc=asc icon="heart"}}
+ {{directory-toggle field="likes_given" order=order asc=asc icon="heart"}}
+ {{directory-toggle field="topic_count" order=order asc=asc}}
+ {{directory-toggle field="post_count" order=order asc=asc}}
+ {{directory-toggle field="topics_entered" order=order asc=asc}}
+ {{directory-toggle field="posts_read" order=order asc=asc}}
+ {{directory-toggle field="days_visited" order=order asc=asc}}
+ {{#if showTimeRead}}
+ {{i18n "directory.time_read"}} |
+ {{/if}}
+
+
+ {{#each model as |item|}}
+ {{directory-item item=item showTimeRead=showTimeRead}}
+ {{/each}}
+
+
+
+ {{conditional-loading-spinner condition=model.loadingMore}}
+ {{else}}
+
+
{{i18n "directory.no_results"}}
+ {{/if}}
+ {{/conditional-loading-spinner}}
-
- {{period-chooser period=period}}
- {{text-field value=nameInput placeholderKey="directory.filter_name" class="filter-name no-blur"}}
-
- {{#conditional-loading-spinner condition=model.loading}}
- {{#if model.length}}
-
{{i18n "directory.total_rows" count=model.totalRows}}
-
-
-
- |
- {{directory-toggle field="likes_received" order=order asc=asc icon="heart"}}
- {{directory-toggle field="likes_given" order=order asc=asc icon="heart"}}
- {{directory-toggle field="topic_count" order=order asc=asc}}
- {{directory-toggle field="post_count" order=order asc=asc}}
- {{directory-toggle field="topics_entered" order=order asc=asc}}
- {{directory-toggle field="posts_read" order=order asc=asc}}
- {{directory-toggle field="days_visited" order=order asc=asc}}
- {{#if showTimeRead}}
- {{i18n "directory.time_read"}} |
- {{/if}}
-
-
- {{#each model as |item|}}
- {{directory-item item=item showTimeRead=showTimeRead}}
- {{/each}}
-
-
-
- {{conditional-loading-spinner condition=model.loadingMore}}
- {{else}}
-
-
{{i18n "directory.no_results"}}
- {{/if}}
- {{/conditional-loading-spinner}}
-
-
-{{/load-more}}
+ {{/load-more}}
+{{/d-section}}
diff --git a/app/assets/javascripts/discourse/views/about.js.es6 b/app/assets/javascripts/discourse/views/about.js.es6
deleted file mode 100644
index a516e13917d..00000000000
--- a/app/assets/javascripts/discourse/views/about.js.es6
+++ /dev/null
@@ -1,3 +0,0 @@
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('about-page');
diff --git a/app/assets/javascripts/discourse/views/badges-index.js.es6 b/app/assets/javascripts/discourse/views/badges-index.js.es6
deleted file mode 100644
index a8527004495..00000000000
--- a/app/assets/javascripts/discourse/views/badges-index.js.es6
+++ /dev/null
@@ -1,4 +0,0 @@
-import ScrollTop from 'discourse/mixins/scroll-top';
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('badges-page').extend(ScrollTop);
diff --git a/app/assets/javascripts/discourse/views/full-page-search.js.es6 b/app/assets/javascripts/discourse/views/full-page-search.js.es6
deleted file mode 100644
index ed9789dc696..00000000000
--- a/app/assets/javascripts/discourse/views/full-page-search.js.es6
+++ /dev/null
@@ -1,5 +0,0 @@
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('search-page').extend({
- classNames: ['search-container']
-});
diff --git a/app/assets/javascripts/discourse/views/navigation-default.js.es6 b/app/assets/javascripts/discourse/views/navigation-default.js.es6
deleted file mode 100644
index 031456f324a..00000000000
--- a/app/assets/javascripts/discourse/views/navigation-default.js.es6
+++ /dev/null
@@ -1,3 +0,0 @@
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('navigation-topics');
diff --git a/app/assets/javascripts/discourse/views/preferences.js.es6 b/app/assets/javascripts/discourse/views/preferences.js.es6
deleted file mode 100644
index e0033515fca..00000000000
--- a/app/assets/javascripts/discourse/views/preferences.js.es6
+++ /dev/null
@@ -1,6 +0,0 @@
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('user-preferences-page').extend({
- templateName: 'user/preferences',
- classNames: ['user-preferences']
-});
diff --git a/app/assets/javascripts/discourse/views/tags.js.es6 b/app/assets/javascripts/discourse/views/tags.js.es6
deleted file mode 100644
index de51094b36b..00000000000
--- a/app/assets/javascripts/discourse/views/tags.js.es6
+++ /dev/null
@@ -1,3 +0,0 @@
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('tags-page');
diff --git a/app/assets/javascripts/discourse/views/user-activity.js.es6 b/app/assets/javascripts/discourse/views/user-activity.js.es6
deleted file mode 100644
index d7d7a40a22d..00000000000
--- a/app/assets/javascripts/discourse/views/user-activity.js.es6
+++ /dev/null
@@ -1,3 +0,0 @@
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('user-activity-page');
diff --git a/app/assets/javascripts/discourse/views/user-badges.js.es6 b/app/assets/javascripts/discourse/views/user-badges.js.es6
deleted file mode 100644
index c0d06719065..00000000000
--- a/app/assets/javascripts/discourse/views/user-badges.js.es6
+++ /dev/null
@@ -1,4 +0,0 @@
-import ScrollTop from 'discourse/mixins/scroll-top';
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('user-badges-page').extend(ScrollTop);
diff --git a/app/assets/javascripts/discourse/views/user-invited-show.js.es6 b/app/assets/javascripts/discourse/views/user-invited-show.js.es6
deleted file mode 100644
index 8ea3dc05f2c..00000000000
--- a/app/assets/javascripts/discourse/views/user-invited-show.js.es6
+++ /dev/null
@@ -1,3 +0,0 @@
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('user-invites-page');
diff --git a/app/assets/javascripts/discourse/views/user-messages.js.es6 b/app/assets/javascripts/discourse/views/user-messages.js.es6
deleted file mode 100644
index 97e7a137428..00000000000
--- a/app/assets/javascripts/discourse/views/user-messages.js.es6
+++ /dev/null
@@ -1,3 +0,0 @@
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('user-messages-page');
diff --git a/app/assets/javascripts/discourse/views/user-notifications.js.es6 b/app/assets/javascripts/discourse/views/user-notifications.js.es6
deleted file mode 100644
index a8141b59c0a..00000000000
--- a/app/assets/javascripts/discourse/views/user-notifications.js.es6
+++ /dev/null
@@ -1,3 +0,0 @@
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('user-notifications-page');
diff --git a/app/assets/javascripts/discourse/views/user-summary.js.es6 b/app/assets/javascripts/discourse/views/user-summary.js.es6
deleted file mode 100644
index a51a5595b0d..00000000000
--- a/app/assets/javascripts/discourse/views/user-summary.js.es6
+++ /dev/null
@@ -1,3 +0,0 @@
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('user-summary-page');
diff --git a/app/assets/javascripts/discourse/views/users.js.es6 b/app/assets/javascripts/discourse/views/users.js.es6
deleted file mode 100644
index ee5c1efe052..00000000000
--- a/app/assets/javascripts/discourse/views/users.js.es6
+++ /dev/null
@@ -1,3 +0,0 @@
-import { createViewWithBodyClass } from 'discourse/lib/create-view';
-
-export default createViewWithBodyClass('users-page');
diff --git a/test/javascripts/acceptance/about-test.js.es6 b/test/javascripts/acceptance/about-test.js.es6
index 9819ed8cba5..f6547bc6466 100644
--- a/test/javascripts/acceptance/about-test.js.es6
+++ b/test/javascripts/acceptance/about-test.js.es6
@@ -4,6 +4,7 @@ acceptance("About");
test("viewing", () => {
visit("/about");
andThen(() => {
+ ok($('body.about-page').length, "has body class");
ok(exists('.about.admins .user-info'), 'has admins');
ok(exists('.about.moderators .user-info'), 'has moderators');
ok(exists('.about.stats tr td'), 'has stats');
diff --git a/test/javascripts/acceptance/badges-test.js.es6 b/test/javascripts/acceptance/badges-test.js.es6
index 8017739cafc..ad1f00c0d53 100644
--- a/test/javascripts/acceptance/badges-test.js.es6
+++ b/test/javascripts/acceptance/badges-test.js.es6
@@ -5,6 +5,7 @@ acceptance("Badges");
test("Visit Badge Pages", () => {
visit("/badges");
andThen(() => {
+ ok($('body.badges-page').length, "has body class");
ok(exists('.badge-groups .badge-card'), "has a list of badges");
});
diff --git a/test/javascripts/acceptance/user-preferences-test.js.es6 b/test/javascripts/acceptance/preferences-test.js.es6
similarity index 88%
rename from test/javascripts/acceptance/user-preferences-test.js.es6
rename to test/javascripts/acceptance/preferences-test.js.es6
index 1431840a990..49ac4947139 100644
--- a/test/javascripts/acceptance/user-preferences-test.js.es6
+++ b/test/javascripts/acceptance/preferences-test.js.es6
@@ -5,6 +5,7 @@ test("update some fields", () => {
visit("/users/eviltrout/preferences");
andThen(() => {
+ ok($('body.user-preferences-page').length, "has the body class");
equal(currentURL(), '/users/eviltrout/preferences', "it doesn't redirect");
ok(exists('.user-preferences'), 'it shows the preferences');
});
diff --git a/test/javascripts/acceptance/search-full-test.js.es6 b/test/javascripts/acceptance/search-full-test.js.es6
index 9804e6db072..2bc511f93bc 100644
--- a/test/javascripts/acceptance/search-full-test.js.es6
+++ b/test/javascripts/acceptance/search-full-test.js.es6
@@ -43,6 +43,8 @@ test("perform various searches", assert => {
visit("/search");
andThen(() => {
+ ok($('body.search-page').length, "has body class");
+ ok(exists('.search-container'), "has container class");
assert.ok(find('input.search').length > 0);
assert.ok(find('.fps-topic').length === 0);
});
diff --git a/test/javascripts/acceptance/tags-test.js.es6 b/test/javascripts/acceptance/tags-test.js.es6
new file mode 100644
index 00000000000..c24cbee8d18
--- /dev/null
+++ b/test/javascripts/acceptance/tags-test.js.es6
@@ -0,0 +1,11 @@
+import { acceptance } from "helpers/qunit-helpers";
+acceptance("Tags", { loggedIn: true });
+
+test("list the tags", () => {
+ visit("/tags");
+
+ andThen(() => {
+ ok($('body.tags-page').length, "has the body class");
+ ok(exists('.tag-eviltrout'), "shows the evil trout tag");
+ });
+});
diff --git a/test/javascripts/acceptance/topic-discovery-test.js.es6 b/test/javascripts/acceptance/topic-discovery-test.js.es6
index 792b7ab7f5e..28749712f35 100644
--- a/test/javascripts/acceptance/topic-discovery-test.js.es6
+++ b/test/javascripts/acceptance/topic-discovery-test.js.es6
@@ -4,6 +4,7 @@ acceptance("Topic Discovery");
test("Visit Discovery Pages", () => {
visit("/");
andThen(() => {
+ ok($('body.navigation-topics').length, "has the default navigation");
ok(exists(".topic-list"), "The list of topics was rendered");
ok(exists('.topic-list .topic-list-item'), "has topics");
});
diff --git a/test/javascripts/acceptance/user-anonymous-test.js.es6 b/test/javascripts/acceptance/user-anonymous-test.js.es6
index 10baa01079a..6d41bffc6a6 100644
--- a/test/javascripts/acceptance/user-anonymous-test.js.es6
+++ b/test/javascripts/acceptance/user-anonymous-test.js.es6
@@ -24,6 +24,9 @@ test("Root URL", () => {
test("Filters", () => {
visit("/users/eviltrout/activity");
+ andThen(() => {
+ ok($('body.user-activity-page').length, "has the body class");
+ });
hasStream();
visit("/users/eviltrout/activity/topics");
@@ -33,6 +36,14 @@ test("Filters", () => {
hasStream();
});
+test("Badges", () => {
+ visit("/users/eviltrout/badges");
+ andThen(() => {
+ ok($('body.user-badges-page').length, "has the body class");
+ ok(exists(".user-badges-list .badge-card"), "shows a badge");
+ });
+});
+
test("Restricted Routes", () => {
visit("/users/eviltrout/preferences");
diff --git a/test/javascripts/acceptance/user-test.js.es6 b/test/javascripts/acceptance/user-test.js.es6
index a7e9172687c..045750778e8 100644
--- a/test/javascripts/acceptance/user-test.js.es6
+++ b/test/javascripts/acceptance/user-test.js.es6
@@ -1,17 +1,32 @@
import { acceptance } from "helpers/qunit-helpers";
-import { hasStream } from 'acceptance/user-anonymous-test';
acceptance("User", {loggedIn: true});
-test("Pending", () => {
- visit("/users/eviltrout/activity/pending");
- hasStream();
+test("Invites", () => {
+ visit("/users/eviltrout/invited/pending");
+ andThen(() => {
+ ok($('body.user-invites-page').length, "has the body class");
+ });
+});
+
+test("Messages", () => {
+ visit("/users/eviltrout/messages");
+ andThen(() => {
+ ok($('body.user-messages-page').length, "has the body class");
+ });
+});
+
+test("Notifications", () => {
+ visit("/users/eviltrout/notifications");
+ andThen(() => {
+ ok($('body.user-notifications-page').length, "has the body class");
+ });
});
test("Root URL - Viewing Self", () => {
visit("/users/eviltrout");
andThen(() => {
+ ok($('body.user-summary-page').length, "has the body class");
equal(currentPath(), 'user.summary', "it defaults to summary");
});
});
-
diff --git a/test/javascripts/acceptance/users-test.js.es6 b/test/javascripts/acceptance/users-test.js.es6
index b517a8e872c..eb89741d252 100644
--- a/test/javascripts/acceptance/users-test.js.es6
+++ b/test/javascripts/acceptance/users-test.js.es6
@@ -4,6 +4,7 @@ acceptance("User Directory");
test("Visit Page", function() {
visit("/users");
andThen(() => {
+ ok($('body.users-page').length, "has the body class");
ok(exists('.directory table tr'), "has a list of users");
});
});
diff --git a/test/javascripts/helpers/create-pretender.js.es6 b/test/javascripts/helpers/create-pretender.js.es6
index 7e815029b6b..54e33dcf43c 100644
--- a/test/javascripts/helpers/create-pretender.js.es6
+++ b/test/javascripts/helpers/create-pretender.js.es6
@@ -56,6 +56,13 @@ export default function() {
return response(json);
});
+ this.get('/tags', () => {
+ return response({ tags: [{
+ id: 'eviltrout',
+ count: 1
+ }] });
+ });
+
this.get('/users/eviltrout.json', () => {
const json = fixturesByUrl['/users/eviltrout.json'];
if (loggedIn()) {
@@ -76,6 +83,20 @@ export default function() {
});
});
+ this.get('/users/eviltrout/invited_count.json', () => {
+ return response({
+ "counts": { "pending": 1, "redeemed": 0, "total": 0 }
+ });
+ });
+
+ this.get('/users/eviltrout/invited.json', () => {
+ return response({ "invites": [ {id: 1} ] });
+ });
+
+ this.get('/topics/private-messages/eviltrout.json', () => {
+ return response({ topic_list: { topics: [] } });
+ });
+
this.get('/clicks/track', success);
this.get('/search', request => {