diff --git a/app/directives/tc-banner/tc-banner.jade b/app/directives/tc-banner/tc-banner.jade index 697a39c77..cadaf290f 100644 --- a/app/directives/tc-banner/tc-banner.jade +++ b/app/directives/tc-banner/tc-banner.jade @@ -1,9 +1,9 @@ .tc-banner-placeholder(class="{{vm.theme}}") .image img(ng-src="{{vm.img}}") - .title(ng-bind="vm.title") + .title(ng-bind="vm.title", ng-show="vm.title !== null") .content(ng-transclude, ng-show="transcluded") - .description(ng-bind-html="vm.description") + .description(ng-bind-html="vm.description", ng-show="vm.description !== null") .ctas .cta(ng-repeat="link in vm.ctas") a(class="{{link.cssClass}}", title="{{link.title}}", ng-href="{{link.url}}", ng-if="link.url") {{link.title}} diff --git a/app/index.jade b/app/index.jade index bb39b0aaa..5a5a0beeb 100644 --- a/app/index.jade +++ b/app/index.jade @@ -18,6 +18,7 @@ html })(document); include ../assets/scripts/google.analytics.jade + include ../assets/scripts/zendesk-widget.jade if htmlWebpackPlugin.options.NEW_RELIC_APPLICATION_ID include ../assets/scripts/newrelic.analytics.jade diff --git a/app/index.js b/app/index.js index 30f039869..e698b267b 100644 --- a/app/index.js +++ b/app/index.js @@ -41,7 +41,7 @@ require('../node_modules/font-awesome/fonts/fontawesome-webfont.woff') require('../node_modules/font-awesome/fonts/fontawesome-webfont.woff2') require('../node_modules/font-awesome/css/font-awesome.css') -// Require non-npm scripts +// Require non-npm scripts, e.g. kissmetrics, munchkin (analytics via jade are included in index.html) requireContextFiles(require.context('../assets/scripts/', true, /^(.*\.(js$))[^.]*$/igm)) // Require Angular modules first diff --git a/app/my-dashboard/my-dashboard.jade b/app/my-dashboard/my-dashboard.jade index c1452f50e..43c19350f 100644 --- a/app/my-dashboard/my-dashboard.jade +++ b/app/my-dashboard/my-dashboard.jade @@ -7,6 +7,8 @@ //- .ttl //- tc-banner(theme="black", banner-name="ttl") + .one-million + tc-banner(theme="black", banner-name="1million") .tco tc-banner(theme="black", banner-name="tco16") diff --git a/app/services/bannerDataService.js b/app/services/bannerDataService.js index dd4b8f2c8..bb25bfa4b 100644 --- a/app/services/bannerDataService.js +++ b/app/services/bannerDataService.js @@ -35,6 +35,16 @@ import angular from 'angular' url: 'http://tco16.topcoder.com/latest/overview/', cssClass: 'tc-btn tc-btn-s tco-cta' }] + }, + '1million': { + title: null, + img: require('../../assets/images/1M-banner-hero.png'), + description: null, + ctas: [{ + title: 'Learn More', + url: 'https://www.topcoder.com/blog/1-million-members-strong/', + cssClass: 'tc-btn tc-btn-s' + }] } // Commenting out instead of deleting in case there is // another one with a similar format soon diff --git a/app/services/blog.service.js b/app/services/blog.service.js index 89d8e2dad..3047dcceb 100644 --- a/app/services/blog.service.js +++ b/app/services/blog.service.js @@ -31,6 +31,9 @@ import X2JS from 'xml2js' result.forEach(function(item) { item.title = $sce.trustAsHtml(item.title.toString()) item.description = $sce.trustAsHtml(item.description.toString()) + if (item.link && Array.isArray(item.link) && item.link.length) { + item.link = item.link[0] + } }) deferred.resolve(result) diff --git a/app/settings/email/email.controller.js b/app/settings/email/email.controller.js index 443265c54..7086c4d74 100644 --- a/app/settings/email/email.controller.js +++ b/app/settings/email/email.controller.js @@ -5,9 +5,9 @@ import angular from 'angular' angular.module('tc.settings').controller('EmailSettingsController', EmailSettingsController) - EmailSettingsController.$inject = ['$rootScope', 'userProfile', 'ProfileService', 'MailchimpService', 'logger', 'CONSTANTS', 'toaster', '$q', '$scope'] + EmailSettingsController.$inject = ['$rootScope', 'userData', 'ProfileService', 'MailchimpService', 'logger', 'CONSTANTS', 'toaster', '$q', '$scope'] - function EmailSettingsController($rootScope, userProfile, ProfileService, MailchimpService, logger, CONSTANTS, toaster, $q, $scope) { + function EmailSettingsController($rootScope, userData, ProfileService, MailchimpService, logger, CONSTANTS, toaster, $q, $scope) { var vm = this vm.loading = false vm.saving = false @@ -34,7 +34,7 @@ import angular from 'angular' }, { id: CONSTANTS.MAILCHIMP_NL_DEV, - name: 'Developer Newsletter', + name: 'Development Newsletter', desc: 'Software architecture, component assembly, application development, and bug hunting', enabled: false, dirty: false @@ -63,11 +63,11 @@ import angular from 'angular' ] vm.loading = true - return MailchimpService.getMemberSubscription(userProfile).then(function(subscription) { + return MailchimpService.getMemberSubscription(userData).then(function(subscription) { vm.loading = false if (!subscription) { - // add member to the list with empty preferences - MailchimpService.addSubscription(userProfile, {}).then(function(resp) { + // add member to the list with default preferences + MailchimpService.addSubscription(userData, {}).then(function(resp) { logger.debug(resp) }).catch(function(err) { // no error to user @@ -102,7 +102,7 @@ import angular from 'angular' vm.newsletters.forEach(function(newsletter) { preferences[newsletter.id] = newsletter.enabled }) - MailchimpService.addSubscription(userProfile, preferences).then(function(resp) { + MailchimpService.addSubscription(userData, preferences).then(function(resp) { vm.loading = false vm.saving = false // reset dirty state for all newsletter options diff --git a/app/settings/settings.routes.js b/app/settings/settings.routes.js index 031faed38..58d3ef6eb 100644 --- a/app/settings/settings.routes.js +++ b/app/settings/settings.routes.js @@ -54,14 +54,6 @@ import angular from 'angular' controllerAs: 'vm', data: { title: 'Email Preferences' - }, - resolve: { - userIdentity: ['UserService', function(UserService) { - return UserService.getUserIdentity() - }], - userProfile: ['userIdentity', 'ProfileService', function(userIdentity, ProfileService) { - return ProfileService.getUserProfile(userIdentity.handle.toLowerCase()) - }] } }, 'settings.preferences': { diff --git a/assets/css/my-dashboard/my-dashboard.scss b/assets/css/my-dashboard/my-dashboard.scss index c60aca5eb..fea5f1ddb 100644 --- a/assets/css/my-dashboard/my-dashboard.scss +++ b/assets/css/my-dashboard/my-dashboard.scss @@ -11,7 +11,7 @@ background-color: $white; } - .challenges, .srms, .programs, .tco, .ttl, .community-updates { + .challenges, .srms, .programs, .tco, .ttl, .one-million, .community-updates { @include module-l; margin-top: 1px; width: 100%; @@ -34,7 +34,25 @@ } } - .challenges, .srms, .programs, .tco, .ttl, .community-updates { + .one-million { + .tc-banner-placeholder { + background: none $tc-gray-90; + .image { + img { + width: auto; + } + } + + .ctas { + // specific css override to reduce the gap between image and ctas + // ideally we should have separate title, image and description + // however, here we have all 3 in single image + margin-top: 0px; + } + } + } + + .challenges, .srms, .programs, .tco, .ttl, .one-million, .community-updates { padding-top: 0px; } diff --git a/assets/css/settings/email.scss b/assets/css/settings/email.scss index e8d38e568..cabb86142 100644 --- a/assets/css/settings/email.scss +++ b/assets/css/settings/email.scss @@ -8,6 +8,7 @@ display: flex; justify-content: center; align-items: center; + min-height: 100px; } .newsletters { diff --git a/assets/images/1M-banner-hero.png b/assets/images/1M-banner-hero.png new file mode 100644 index 000000000..cb2e87dd9 Binary files /dev/null and b/assets/images/1M-banner-hero.png differ diff --git a/assets/scripts/usersnap.analytics.js b/assets/scripts/usersnap.analytics.js deleted file mode 100644 index 0f8d9fba0..000000000 --- a/assets/scripts/usersnap.analytics.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() { - var s = document.createElement('script') - s.type = 'text/javascript' - s.async = true - s.src = '//api.usersnap.com/load/'+'cda7d23b-04e6-4908-8cde-f7e3f858e8a0.js' - var x = document.getElementsByTagName('script')[0] - x.parentNode.insertBefore(s, x)} -)() diff --git a/assets/scripts/zendesk-widget.jade b/assets/scripts/zendesk-widget.jade new file mode 100644 index 000000000..1864804d4 --- /dev/null +++ b/assets/scripts/zendesk-widget.jade @@ -0,0 +1,3 @@ +script(type="text/javascript"). + /*'),o.close()}("https://assets.zendesk.com/embeddable_framework/main.js","topcoder.zendesk.com"); +/*]]>*/