From 4807b4536b4b2ca44a58d4e3a1232e8df80e718a Mon Sep 17 00:00:00 2001 From: "Barrett K. Harber" Date: Wed, 16 Nov 2016 15:11:09 -0500 Subject: [PATCH 01/23] Route changes for phase2 --- app/router.js | 33 ++++++++++++++++++++++++--------- config/environment.js | 9 ++++++--- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/app/router.js b/app/router.js index d93623df6..8dc0d3564 100644 --- a/app/router.js +++ b/app/router.js @@ -22,17 +22,32 @@ const Router = Ember.Router.extend({ }); Router.map(function() { - this.route('index', {path: 'preprints'}); - this.route('submit', {path: 'preprints/submit'}); - this.route('discover', {path: 'preprints/discover'}); - this.route('content', {path: '/:preprint_id' }); - this.route('provider', {path: 'preprints/:slug'}, function() { - this.route('content', {path: '/:preprint_id'}); - this.route('discover'); + const {hostname} = window.location; + + const isProviderDomain = config + .PREPRINTS + .providers + .some(provider => hostname.includes(provider.domain)); + + if (isProviderDomain) { + this.route('index'); this.route('submit'); - }); + this.route('discover'); + this.route('page-not-found'); + } else { + this.route('index', {path: 'preprints'}); + this.route('submit', {path: 'preprints/submit'}); + this.route('discover', {path: 'preprints/discover'}); + this.route('provider', {path: 'preprints/:slug'}, function () { + this.route('content', {path: '/:preprint_id'}); + this.route('discover'); + this.route('submit'); + }); + this.route('page-not-found', {path: 'preprints/page-not-found'}); + } + + this.route('content', {path: '/:preprint_id'}); this.route('forbidden'); - this.route('page-not-found', {path: 'preprints/page-not-found'}); this.route('page-not-found', {path: '/*bad_url'}); }); diff --git a/config/environment.js b/config/environment.js index 8cb51e5bf..8f2aa4c32 100644 --- a/config/environment.js +++ b/config/environment.js @@ -36,13 +36,16 @@ module.exports = function(environment) { providers: [ { - id: 'engrxiv' + id: 'engrxiv', + domain: 'engrxiv.com', }, { - id: 'psyarxiv' + id: 'psyarxiv', + domain: 'psyarxiv.org', }, { - id: 'socarxiv' + id: 'socarxiv', + domain: 'socarxiv.org', } ], }, From 2e8f4daa7da1cb16200c267b91ff71085691e4c3 Mon Sep 17 00:00:00 2001 From: "Barrett K. Harber" Date: Tue, 29 Nov 2016 13:48:23 -0500 Subject: [PATCH 02/23] WIP on phase-2 of branded preprints --- README.md | 4 +++ app/controllers/index.js | 2 +- app/index.html | 32 +++++++++++++---- app/router.js | 28 ++++++++++----- app/services/theme.js | 27 +++++++++++++- app/styles/app.scss | 18 +++++----- .../components/preprint-navbar-branded.hbs | 6 ++-- .../components/taxonomy-top-list.hbs | 2 +- app/templates/discover.hbs | 2 +- app/templates/index.hbs | 8 +++-- app/templates/page-not-found.hbs | 16 ++++----- ember-cli-build.js | 13 +++++++ scripts/add-domains.js | 35 +++++++++++++++++++ 13 files changed, 152 insertions(+), 41 deletions(-) create mode 100755 scripts/add-domains.js diff --git a/README.md b/README.md index 2461029b0..7d62699ac 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,10 @@ For local development, this is designed to run alongside (and from within) the f to your `website/settings/local.py` file. Uncomment `'/preprints/': 'http://localhost:4200',` and restart your flask app. 4. Visit your app at http://localhost:5000/preprints/ +### Provider Domains +1. Run `sudo ./scripts/add-domains.js`. This will add the domains to your `/etc/hosts`. +2. Visit your app at one of the provider domains with `https://local.:4200` (e.g. `http://local.socarxiv.org:4200`) + If you encounter problems, make sure that your version of ember-osf is up to date. If login fails, try logging in from any other OSF page, then returning to the preprints app. diff --git a/app/controllers/index.js b/app/controllers/index.js index 96e71d7e4..79c04f6e5 100644 --- a/app/controllers/index.js +++ b/app/controllers/index.js @@ -50,5 +50,5 @@ export default Ember.Controller.extend(Analytics, { .then(results => this.set('sharePreprintsTotal', results.hits.total)); this.set('currentDate', new Date()); - }, + } }); diff --git a/app/index.html b/app/index.html index d72ead9ab..2b4f3700c 100644 --- a/app/index.html +++ b/app/index.html @@ -9,8 +9,6 @@ {{content-for "head"}} - - {{content-for "head-footer"}} @@ -29,13 +27,35 @@ {{content-for "cdn"}} - - + {{content-for "assets"}} + + {{content-for "raven"}} - {{content-for "google-analytics"}} - {{content-for "body-footer"}} diff --git a/app/router.js b/app/router.js index 63c12f2c1..01c4e5446 100644 --- a/app/router.js +++ b/app/router.js @@ -1,10 +1,27 @@ import Ember from 'ember'; import config from 'ember-get-config'; +const {hostname} = window.location; + +const provider = config + .PREPRINTS + .providers + .find(p => hostname.includes(p.domain)); + const Router = Ember.Router.extend({ location: config.locationType, rootURL: config.rootURL, metrics: Ember.inject.service(), + theme: Ember.inject.service(), + + init() { + this._super(...arguments); + + if (provider) { + this.set('theme.id', provider.id); + this.set('theme.isDomain', true); + } + }, didTransition() { this._super(...arguments); @@ -22,17 +39,10 @@ const Router = Ember.Router.extend({ }); Router.map(function() { - const {hostname} = window.location; - - const isProviderDomain = config - .PREPRINTS - .providers - .some(provider => hostname.includes(provider.domain)); - this.route('page-not-found', {path: '/*bad_url'}); - if (isProviderDomain) { - this.route('index'); + if (provider) { + this.route('index', {path: '/'}); this.route('submit'); this.route('discover'); this.route('page-not-found'); diff --git a/app/services/theme.js b/app/services/theme.js index cc01d3065..bcb97f969 100644 --- a/app/services/theme.js +++ b/app/services/theme.js @@ -5,6 +5,8 @@ export default Ember.Service.extend({ store: Ember.inject.service(), session: Ember.inject.service(), + isDomain: false, + id: config.PREPRINTS.provider, provider: Ember.computed('id', function() { @@ -23,14 +25,37 @@ export default Ember.Service.extend({ return id && id !== 'osf'; }), + isSubRoute: Ember.computed('isProvider', 'isDomain', function() { + return this.get('isProvider') && !this.get('isDomain'); + }), + + pathPrefix: Ember.computed('isProvider', 'isDomain', 'id', function() { + let pathPrefix = '/'; + + if (!this.get('isDomain')) { + pathPrefix += 'preprints/'; + + if (this.get('isProvider')) { + pathPrefix += `${this.get('id')}/`; + } + } + + return pathPrefix; + }), + + routePrefix: Ember.computed('isSubRoute', function() { + return this.get('isSubRoute') ? 'provider.' : ''; + }), + stylesheet: Ember.computed('id', function() { const id = this.get('id'); if (!id) return; + const prefix = this.get('isDomain') ? '' : '/preprints'; const suffix = config.ASSET_SUFFIX ? `-${config.ASSET_SUFFIX}` : ''; - return `/preprints/assets/css/${id}${suffix}.css`; + return `${prefix}/assets/css/${id}${suffix}.css`; }), signupUrl: Ember.computed('id', function() { diff --git a/app/styles/app.scss b/app/styles/app.scss index a86e76595..93ff21c1f 100644 --- a/app/styles/app.scss +++ b/app/styles/app.scss @@ -160,32 +160,34 @@ ul.comma-list { } } +$logo-dir: 'img/provider_logos/'; + .provider-osf { - background-image: url('/preprints/assets/img/provider_logos/osf.png'); + background-image: url($logo-dir + 'osf.png'); } .provider-osf-dark { - background-image: url('/preprints/assets/img/provider_logos/osf-dark.png'); + background-image: url($logo-dir + 'osf-dark.png'); } .provider-socarxiv { - background-image: url('/preprints/assets/img/provider_logos/socarxiv.png'); + background-image: url($logo-dir + 'socarxiv.png'); } .provider-socarxiv-dark { - background-image: url('/preprints/assets/img/provider_logos/socarxiv-dark.png'); + background-image: url($logo-dir + 'socarxiv-dark.png'); } .provider-engrxiv { - background-image: url('/preprints/assets/img/provider_logos/engrxiv.png'); + background-image: url($logo-dir + 'engrxiv.png'); } .provider-engrxiv-dark { - background-image: url('/preprints/assets/img/provider_logos/engrxiv-dark.png'); + background-image: url($logo-dir + 'engrxiv-dark.png'); } .provider-psyarxiv { - background-image: url('/preprints/assets/img/provider_logos/psyarxiv.png'); + background-image: url($logo-dir + 'psyarxiv.png'); } .provider-psyarxiv-dark { - background-image: url('/preprints/assets/img/provider_logos/psyarxiv-dark.png'); + background-image: url($logo-dir + 'psyarxiv-dark.png'); } .preprint-advisory { diff --git a/app/templates/components/preprint-navbar-branded.hbs b/app/templates/components/preprint-navbar-branded.hbs index 16d8372fc..3e9b2c66e 100644 --- a/app/templates/components/preprint-navbar-branded.hbs +++ b/app/templates/components/preprint-navbar-branded.hbs @@ -1,6 +1,6 @@
diff --git a/ember-cli-build.js b/ember-cli-build.js index a585162b4..a2427a8bb 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -26,6 +26,11 @@ module.exports = function(defaults) { css[`brands/${brand}`] = `/assets/css/${brand}.css`; } + const providerDomains = config + .PREPRINTS + .providers + .map(provider => provider.domain); + // Reference: https://github.com/travis-ci/travis-web/blob/master/ember-cli-build.js var app = new EmberApp(defaults, { sourcemaps: { @@ -71,6 +76,14 @@ module.exports = function(defaults) { content: ` ` + }, + assets: { + enabled: true, + content: ` + ` } }, postcssOptions: { diff --git a/scripts/add-domains.js b/scripts/add-domains.js new file mode 100755 index 000000000..83ea984ba --- /dev/null +++ b/scripts/add-domains.js @@ -0,0 +1,35 @@ +#!/usr/bin/env node + +if (~process.argv.indexOf('--help') || ~process.argv.indexOf('-h')) + return console.info(`Usage: ${__filename.slice(__dirname.length + 1)} [-h|--help] [--dry]`); + +const isDry = ~process.argv.indexOf('--dry'); + +const fs = require('fs'); +const config = require('../config/environment')(process.env.EMBER_ENV); + +const providers = config.PREPRINTS.providers; +const hostsFileName = '/etc/hosts'; +const hostIP = '127.0.0.1'; +const hostsFile = fs.readFileSync(hostsFileName, {encoding: 'utf8'}); +const sectionHeader = '## EMBER-PREPRINTS ##\n'; +const sectionFooter = '\n## /EMBER-PREPRINTS ##'; +const rgx = new RegExp(`(?:${sectionHeader})(.|\\s)*(?:${sectionFooter})`, 'm'); + +const maxLength = providers + .map(provider => provider.domain) + .reduce((a, b) => a.length > b.length ? a.length : b.length); + +const lines = providers + .map(provider => `${hostIP}\tlocal.${provider.domain}${' '.repeat(maxLength - provider.domain.length)}\t# ${provider.id}`) + .join('\n'); + +const section = `${sectionHeader}${lines}${sectionFooter}`; +const resultFile = rgx.test(hostsFile) ? hostsFile.replace(rgx, section) : `${hostsFile}\n\n${section}`; + +console.info(`Resulting file:\n${resultFile}`); + +if (isDry) + console.log('!!! DRY RUN, File not written !!!'); +else + fs.writeFileSync(hostsFileName, resultFile, {encoding: 'utf8'}); From b6711990a36cf4113f6d389ea6c3f209ebb33b24 Mon Sep 17 00:00:00 2001 From: "Barrett K. Harber" Date: Tue, 24 Jan 2017 10:49:01 -0500 Subject: [PATCH 03/23] Update add-domains script --- scripts/add-domains.js | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/scripts/add-domains.js b/scripts/add-domains.js index 83ea984ba..30590a124 100755 --- a/scripts/add-domains.js +++ b/scripts/add-domains.js @@ -1,26 +1,29 @@ #!/usr/bin/env node -if (~process.argv.indexOf('--help') || ~process.argv.indexOf('-h')) - return console.info(`Usage: ${__filename.slice(__dirname.length + 1)} [-h|--help] [--dry]`); +if (process.argv.includes('--help') || process.argv.includes('-h')) { + console.info(`Usage: ${__filename.slice(__dirname.length + 1)} [-h|--help] [--dry]`); + process.exit(0); +} -const isDry = ~process.argv.indexOf('--dry'); +const isDry = process.argv.includes('--dry'); const fs = require('fs'); const config = require('../config/environment')(process.env.EMBER_ENV); -const providers = config.PREPRINTS.providers; +const {providers} = config.PREPRINTS; const hostsFileName = '/etc/hosts'; const hostIP = '127.0.0.1'; const hostsFile = fs.readFileSync(hostsFileName, {encoding: 'utf8'}); const sectionHeader = '## EMBER-PREPRINTS ##\n'; const sectionFooter = '\n## /EMBER-PREPRINTS ##'; const rgx = new RegExp(`(?:${sectionHeader})(.|\\s)*(?:${sectionFooter})`, 'm'); +const domainProviders = providers.filter(provider => provider.domain); -const maxLength = providers +const maxLength = domainProviders .map(provider => provider.domain) .reduce((a, b) => a.length > b.length ? a.length : b.length); -const lines = providers +const lines = domainProviders .map(provider => `${hostIP}\tlocal.${provider.domain}${' '.repeat(maxLength - provider.domain.length)}\t# ${provider.id}`) .join('\n'); @@ -29,7 +32,9 @@ const resultFile = rgx.test(hostsFile) ? hostsFile.replace(rgx, section) : `${ho console.info(`Resulting file:\n${resultFile}`); -if (isDry) +if (isDry) { console.log('!!! DRY RUN, File not written !!!'); -else - fs.writeFileSync(hostsFileName, resultFile, {encoding: 'utf8'}); + process.exit(0); +} + +fs.writeFileSync(hostsFileName, resultFile, {encoding: 'utf8'}); From 8f8d24253f98fabd9d73308896773a595c0f6ee9 Mon Sep 17 00:00:00 2001 From: "Barrett K. Harber" Date: Tue, 24 Jan 2017 11:01:31 -0500 Subject: [PATCH 04/23] Update tests with their needed services --- tests/unit/controllers/application-test.js | 2 +- tests/unit/controllers/content-test.js | 2 +- tests/unit/controllers/index-test.js | 6 +++++- tests/unit/controllers/submit-test.js | 3 ++- tests/unit/routes/application-test.js | 2 +- tests/unit/routes/content-test.js | 2 +- tests/unit/routes/discover-test.js | 2 +- tests/unit/routes/forbidden-test.js | 2 +- tests/unit/routes/index-test.js | 2 +- tests/unit/routes/page-not-found-test.js | 2 +- tests/unit/routes/resource-deleted-test.js | 2 +- 11 files changed, 16 insertions(+), 11 deletions(-) diff --git a/tests/unit/controllers/application-test.js b/tests/unit/controllers/application-test.js index c076d2c5f..ea32001a0 100644 --- a/tests/unit/controllers/application-test.js +++ b/tests/unit/controllers/application-test.js @@ -2,7 +2,7 @@ import { moduleFor, test } from 'ember-qunit'; moduleFor('controller:application', 'Unit | Controller | application', { // Specify the other units that are required for this test. - needs: ['service:metrics'] + needs: ['service:metrics', 'service:theme'] }); // Replace this with your real tests. diff --git a/tests/unit/controllers/content-test.js b/tests/unit/controllers/content-test.js index 64a4afc79..98da47f49 100644 --- a/tests/unit/controllers/content-test.js +++ b/tests/unit/controllers/content-test.js @@ -2,7 +2,7 @@ import { moduleFor, test } from 'ember-qunit'; moduleFor('controller:content', 'Unit | Controller | content', { // Specify the other units that are required for this test. - needs: ['service:metrics'] + needs: ['service:metrics', 'service:theme'] }); // Replace this with your real tests. diff --git a/tests/unit/controllers/index-test.js b/tests/unit/controllers/index-test.js index 03e010be9..c341df415 100644 --- a/tests/unit/controllers/index-test.js +++ b/tests/unit/controllers/index-test.js @@ -2,7 +2,11 @@ import { moduleFor, test } from 'ember-qunit'; moduleFor('controller:index', 'Unit | Controller | index', { // Specify the other units that are required for this test. - needs: ['service:metrics'] + needs: [ + 'service:metrics', + 'service:session', + 'service:theme' + ] }); // Replace this with your real tests. diff --git a/tests/unit/controllers/submit-test.js b/tests/unit/controllers/submit-test.js index d3af358fc..918276a6e 100644 --- a/tests/unit/controllers/submit-test.js +++ b/tests/unit/controllers/submit-test.js @@ -7,7 +7,8 @@ moduleFor('controller:submit', 'Unit | Controller | submit', { 'validator:presence', 'validator:length', 'validator:format', - 'service:metrics' + 'service:metrics', + 'service:theme' ], }); diff --git a/tests/unit/routes/application-test.js b/tests/unit/routes/application-test.js index 2add3a0e4..6f004ee93 100644 --- a/tests/unit/routes/application-test.js +++ b/tests/unit/routes/application-test.js @@ -2,7 +2,7 @@ import { moduleFor, test } from 'ember-qunit'; moduleFor('route:application', 'Unit | Route | application', { // Specify the other units that are required for this test. - needs: ['service:metrics'] + needs: ['service:metrics', 'service:theme'] }); test('it exists', function(assert) { diff --git a/tests/unit/routes/content-test.js b/tests/unit/routes/content-test.js index 0c637bfa9..05f4b3e59 100644 --- a/tests/unit/routes/content-test.js +++ b/tests/unit/routes/content-test.js @@ -2,7 +2,7 @@ import { moduleFor, test } from 'ember-qunit'; moduleFor('route:content', 'Unit | Route | content', { // Specify the other units that are required for this test. - needs: ['service:metrics'] + needs: ['service:metrics', 'service:theme'] }); test('it exists', function(assert) { diff --git a/tests/unit/routes/discover-test.js b/tests/unit/routes/discover-test.js index 2ca816670..229f4f20f 100644 --- a/tests/unit/routes/discover-test.js +++ b/tests/unit/routes/discover-test.js @@ -2,7 +2,7 @@ import { moduleFor, test } from 'ember-qunit'; moduleFor('route:discover', 'Unit | Route | discover', { // Specify the other units that are required for this test. - needs: ['service:metrics'] + needs: ['service:metrics', 'service:theme'] }); test('it exists', function(assert) { diff --git a/tests/unit/routes/forbidden-test.js b/tests/unit/routes/forbidden-test.js index 71f43caa3..1f88a3b2e 100644 --- a/tests/unit/routes/forbidden-test.js +++ b/tests/unit/routes/forbidden-test.js @@ -2,7 +2,7 @@ import { moduleFor, test } from 'ember-qunit'; moduleFor('route:forbidden', 'Unit | Route | forbidden', { // Specify the other units that are required for this test. - needs: ['service:metrics'] + needs: ['service:metrics', 'service:theme'] }); test('it exists', function(assert) { diff --git a/tests/unit/routes/index-test.js b/tests/unit/routes/index-test.js index ef321c8f1..4f9db8928 100644 --- a/tests/unit/routes/index-test.js +++ b/tests/unit/routes/index-test.js @@ -2,7 +2,7 @@ import { moduleFor, test } from 'ember-qunit'; moduleFor('route:index', 'Unit | Route | index', { // Specify the other units that are required for this test. - needs: ['service:metrics'] + needs: ['service:metrics', 'service:theme'] }); test('it exists', function(assert) { diff --git a/tests/unit/routes/page-not-found-test.js b/tests/unit/routes/page-not-found-test.js index 7a9986772..0dfc1d9d0 100644 --- a/tests/unit/routes/page-not-found-test.js +++ b/tests/unit/routes/page-not-found-test.js @@ -2,7 +2,7 @@ import { moduleFor, test } from 'ember-qunit'; moduleFor('route:page-not-found', 'Unit | Route | page not found', { // Specify the other units that are required for this test. - needs: ['service:metrics'] + needs: ['service:metrics', 'service:theme'] }); test('it exists', function(assert) { diff --git a/tests/unit/routes/resource-deleted-test.js b/tests/unit/routes/resource-deleted-test.js index 900a23cf2..b4b9bb44c 100644 --- a/tests/unit/routes/resource-deleted-test.js +++ b/tests/unit/routes/resource-deleted-test.js @@ -2,7 +2,7 @@ import { moduleFor, test } from 'ember-qunit'; moduleFor('route:resource-deleted', 'Unit | Route | resource deleted', { // Specify the other units that are required for this test. - needs: ['service:metrics'] + needs: ['service:metrics', 'service:theme'] }); test('it exists', function(assert) { From 349907340ead6a177765b8682297972d10340ce2 Mon Sep 17 00:00:00 2001 From: "Barrett K. Harber" Date: Tue, 24 Jan 2017 23:27:11 -0500 Subject: [PATCH 05/23] Created route-prefix helper Created error-page component and migrated forbidden, page-not-found, and resource-deleted to use error-page component Updated english translation to match error-component migration Removed unused reroute-guid template --- app/components/error-page.js | 12 +++++++ app/helpers/route-prefix.js | 15 +++++++++ app/locales/en/translations.js | 29 +++++++---------- app/routes/index.js | 2 +- app/services/theme.js | 4 --- app/styles/app.scss | 18 +---------- app/styles/brands/_brand.scss | 6 ++-- app/templates/application.hbs | 4 +-- app/templates/components/error-page.hbs | 26 ++++++++++++++++ .../components/preprint-navbar-branded.hbs | 4 +-- .../components/taxonomy-top-list.hbs | 2 +- app/templates/forbidden.hbs | 31 +++---------------- app/templates/index.hbs | 5 ++- app/templates/page-not-found.hbs | 31 +++---------------- app/templates/reroute-guid.hbs | 0 app/templates/resource-deleted.hbs | 31 +++---------------- .../integration/components/error-page-test.js | 27 ++++++++++++++++ 17 files changed, 115 insertions(+), 132 deletions(-) create mode 100644 app/components/error-page.js create mode 100644 app/helpers/route-prefix.js create mode 100644 app/templates/components/error-page.hbs delete mode 100644 app/templates/reroute-guid.hbs create mode 100644 tests/integration/components/error-page-test.js diff --git a/app/components/error-page.js b/app/components/error-page.js new file mode 100644 index 000000000..1701aeb0f --- /dev/null +++ b/app/components/error-page.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import Analytics from '../mixins/analytics'; + +export default Ember.Component.extend(Analytics, { + theme: Ember.inject.service(), + classNames: ['preprint-error-page'], + label: '', + translationKey: '', + supportEmail: Ember.computed('theme.isProvider', 'theme.provider.emailSupport', function() { + return this.get('theme.isProvider') ? this.get('theme.provider.emailSupport') : 'support@osf.io'; + }) +}); diff --git a/app/helpers/route-prefix.js b/app/helpers/route-prefix.js new file mode 100644 index 000000000..d5736cac0 --- /dev/null +++ b/app/helpers/route-prefix.js @@ -0,0 +1,15 @@ +import Ember from 'ember'; + +export default Ember.Helper.extend({ + theme: Ember.inject.service(), + + onSubRouteChange: Ember.observer('theme.isSubRoute', function() { + this.recompute(); + }), + + compute(params) { + const route = params.join(''); + + return this.get('theme.isSubRoute') ? `provider.${route}` : route; + } +}); diff --git a/app/locales/en/translations.js b/app/locales/en/translations.js index a1187404d..db110d7e5 100644 --- a/app/locales/en/translations.js +++ b/app/locales/en/translations.js @@ -35,7 +35,7 @@ export default { license: 'License', }, application: { - // Nothing to translate + separator: ` | ` }, content: { header: { @@ -122,27 +122,18 @@ export default { paragraph: `Our advisory group includes leaders in preprints and scholarly communication` } }, - 'page-not-found': { + // Error pages + 'page-not-found': { // 404 heading: `Page not found`, - paragraph: { - line1: `The page you were looking for is not found on the {{brand}} service.`, - line2: `If this should not have occurred and the issue persists, please report it to` - }, - go_to: `Go to {{brand}}` + message: `The page you were looking for is not found on the {{brand}} service.` }, - 'page-forbidden': { + 'page-forbidden': { // 403 heading: `Forbidden`, - paragraph: { - line1: `User has restricted access to this page. If this should not have occurred and the issue persists, please report it to `, - }, - go_to: `Go to {{brand}}` + message: `User has restricted access to this page.` }, - 'resource-deleted': { + 'resource-deleted': { // 410 heading: `Resource deleted`, - paragraph: { - line1: `User has deleted this content. If this should not have occurred and the issue persists, please report it to `, - }, - go_to: `Go to {{brand}}` + message: `User has deleted this content.` }, submit: { add_heading: `Add Preprint`, @@ -229,6 +220,10 @@ export default { convert_confirmation_details_project: `Changes you make on this page are saved immediately. Create a new component under this project to avoid overwriting its details.`, convert_confirmation_details_component: `Changes you make on this page are saved immediately. Create a new component under this component to avoid overwriting its details.` }, + 'error-page': { + email_message: `If this should not have occurred and the issue persists, please report it to`, + go_to: `Go to {{brand}}` + }, 'file-uploader': { dropzone_message: `Drop preprint file here to upload`, title_placeholder: `Enter preprint title`, diff --git a/app/routes/index.js b/app/routes/index.js index d727d3c0b..b5f9c5536 100644 --- a/app/routes/index.js +++ b/app/routes/index.js @@ -31,7 +31,7 @@ export default Ember.Route.extend(Analytics, ResetScrollMixin, { search(q) { let route = 'discover'; - if (this.get('theme.isProvider')) + if (this.get('theme.isSubRoute')) route = `provider.${route}`; this.transitionTo(route, { queryParams: { queryString: q } }); diff --git a/app/services/theme.js b/app/services/theme.js index 45f726784..7ffd061e4 100644 --- a/app/services/theme.js +++ b/app/services/theme.js @@ -42,10 +42,6 @@ export default Ember.Service.extend({ return pathPrefix; }), - routePrefix: Ember.computed('isSubRoute', function() { - return this.get('isSubRoute') ? 'provider.' : ''; - }), - stylesheet: Ember.computed('id', function() { const id = this.get('id'); diff --git a/app/styles/app.scss b/app/styles/app.scss index fd5b9ecac..94c2baf40 100644 --- a/app/styles/app.scss +++ b/app/styles/app.scss @@ -417,23 +417,7 @@ ul.preprints-block-list { background-color: #b9cdd6; } - -/* Not found page */ -.preprint-404 { - padding: 120px 0 120px 0; - background-color: #ecf2f3; - border-bottom: 1px solid #d6dbdc; -} - -/* Forbidden page */ -.preprint-403 { - padding: 120px 0 120px 0; - background-color: #ecf2f3; - border-bottom: 1px solid #d6dbdc; -} - -/* Gone page */ -.preprint-410 { +.preprint-error-page { padding: 120px 0 120px 0; background-color: #ecf2f3; border-bottom: 1px solid #d6dbdc; diff --git a/app/styles/brands/_brand.scss b/app/styles/brands/_brand.scss index 3e84cd09d..b71f177ba 100644 --- a/app/styles/brands/_brand.scss +++ b/app/styles/brands/_brand.scss @@ -130,8 +130,7 @@ $logo-dir: '../img/provider_logos/'; } } - .preprint-403, - .preprint-404, + .preprint-error-page, .preprint-advisory, .preprint-submit-header, .preprint-search-header, @@ -147,8 +146,7 @@ $logo-dir: '../img/provider_logos/'; } } - .preprint-403, - .preprint-404, + .preprint-error-page, .preprint-advisory { min-height: 200px; diff --git a/app/templates/application.hbs b/app/templates/application.hbs index 2d5674cc0..202b72045 100644 --- a/app/templates/application.hbs +++ b/app/templates/application.hbs @@ -1,5 +1,6 @@ +{{title (t (if theme.isProvider 'global.provider_brand' 'global.brand') name=theme.provider.name) separator=(t 'application.separator')}} + {{#if theme.isProvider}} - {{title (concat theme.provider.name ' Preprints') separator=' | '}} {{#if theme.stylesheet}}