Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

1 Million banner and zendesk widget #803

Merged
merged 12 commits into from
May 9, 2016
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/directives/tc-banner/tc-banner.jade
Original file line number Diff line number Diff line change
@@ -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}}
1 change: 1 addition & 0 deletions app/index.jade
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion app/index.js
Original file line number Diff line number Diff line change
@@ -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
2 changes: 2 additions & 0 deletions app/my-dashboard/my-dashboard.jade
Original file line number Diff line number Diff line change
@@ -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")
10 changes: 10 additions & 0 deletions app/services/bannerDataService.js
Original file line number Diff line number Diff line change
@@ -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
3 changes: 3 additions & 0 deletions app/services/blog.service.js
Original file line number Diff line number Diff line change
@@ -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)
14 changes: 7 additions & 7 deletions app/settings/email/email.controller.js
Original file line number Diff line number Diff line change
@@ -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
8 changes: 0 additions & 8 deletions app/settings/settings.routes.js
Original file line number Diff line number Diff line change
@@ -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': {
22 changes: 20 additions & 2 deletions assets/css/my-dashboard/my-dashboard.scss
Original file line number Diff line number Diff line change
@@ -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;
}

1 change: 1 addition & 0 deletions assets/css/settings/email.scss
Original file line number Diff line number Diff line change
@@ -8,6 +8,7 @@
display: flex;
justify-content: center;
align-items: center;
min-height: 100px;
}

.newsletters {
Binary file added assets/images/1M-banner-hero.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 0 additions & 8 deletions assets/scripts/usersnap.analytics.js

This file was deleted.

3 changes: 3 additions & 0 deletions assets/scripts/zendesk-widget.jade
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
script(type="text/javascript").
/*<![CDATA[*/window.zEmbed||function(e,t){var n,o,d,i,s,a=[],r=document.createElement("iframe");window.zEmbed=function(){a.push(arguments)},window.zE=window.zE||window.zEmbed,r.src="javascript:false",r.title="",r.role="presentation",(r.frameElement||r).style.cssText="display: none",d=document.getElementsByTagName("script"),d=d[d.length-1],d.parentNode.insertBefore(r,d),i=r.contentWindow,s=i.document;try{o=s}catch(c){n=document.domain,r.src='javascript:var d=document.open();d.domain="'+n+'";void(0);',o=s}o.open()._l=function(){var o=this.createElement("script");n&&(this.domain=n),o.id="js-iframe-async",o.src=e,this.t=+new Date,this.zendeskHost=t,this.zEQueue=a,this.body.appendChild(o)},o.write('<body onload="document._l();">'),o.close()}("https://assets.zendesk.com/embeddable_framework/main.js","topcoder.zendesk.com");
/*]]>*/