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

Commit 16b2819

Browse files
authored
Merge pull request #446 from appirio-tech/tom-dereg-1
Unregister button
2 parents f3b59e4 + 88961ed commit 16b2819

File tree

7 files changed

+136
-49
lines changed

7 files changed

+136
-49
lines changed

src/css/challenge-detail-software.css

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,14 @@ h1.center {
733733
display: block;
734734
}
735735

736+
.challenge-detail .unregister {
737+
background: #e66 !important;
738+
}
739+
740+
.challenge-detail .unregister:hover {
741+
background: #d66 !important;
742+
}
743+
736744
.challenge-detail .btnAction:hover {
737745
background: #0096ff !important;
738746
}
@@ -750,6 +758,14 @@ h1.center {
750758
background: #46b314 !important;
751759
}
752760

761+
.challenge-detail.develop .unregister {
762+
background: #e66 !important;
763+
}
764+
765+
.challenge-detail.develop .unregister:hover {
766+
background: #d66 !important;
767+
}
768+
753769
.challenge-detail .btnAction.disabled {
754770
pointer-events: none;
755771
background: #cccccc !important;
@@ -2878,4 +2894,4 @@ h1.center {
28782894
padding: 0 10px 0 0;
28792895
box-sizing: border-box; }
28802896
.cd-wrapper .challenge-detail .rightSplit {
2881-
float: left; }
2897+
float: left; }

src/css/register-login.css

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -571,60 +571,51 @@ Thanks modal
571571
padding-bottom: 60px;
572572
}
573573

574-
/*registerSuccess modal*/
575-
#registerSuccess{
574+
/*registerFailed, registerSuccess and unregisterSuccess modals*/
575+
#registerFailed,
576+
#registerSuccess,
577+
#unregisterSuccess{
576578
width: 534px;
577579
}
578-
#registerSuccess .btnClose{
580+
#registerFailed .btnClose,
581+
#registerSuccess .btnClose,
582+
#unregisterSuccess .btnClose{
579583
right: 20px;
580584
}
581-
#registerSuccess .content{
585+
#registerFailed .content,
586+
#registerSuccess .content,
587+
#unregisterSuccess .content{
582588
padding: 10px 20px 20px;
583589
}
584-
#registerSuccess .content h2{
590+
#registerFailed .content h2,
591+
#registerSuccess .content h2,
592+
#unregisterSuccess .content h2{
585593
font-size: 36px;
586594
}
587-
#registerSuccess .content p.success{
595+
#registerSuccess .content p.success,
596+
#unregisterSuccess .content p.success {
588597
padding: 32px 30px 32px 80px;
589598
font-size: 14px;
590599
color: #666;
591600
line-height: 24px;
592601
background: url("../i/success-icon.png") no-repeat 0 34px;
593602
}
594-
#registerSuccess .content p.submitBtn{
595-
border-top: 1px solid #e7e7e7;
596-
padding-top: 20px;
597-
text-align: center;
598-
}
599-
#registerSuccess .content p.submitBtn .btn{
600-
width: 60px
601-
}
602-
603-
/*registerFailed modal*/
604-
#registerFailed{
605-
width: 534px;
606-
}
607-
#registerFailed .btnClose{
608-
right: 20px;
609-
}
610-
#registerFailed .content{
611-
padding: 10px 20px 20px;
612-
}
613-
#registerFailed .content h2{
614-
font-size: 36px;
615-
}
616603
#registerFailed .content p.failedMessage{
617604
padding: 32px 30px 32px 80px;
618605
font-size: 14px;
619606
color: #666;
620607
line-height: 24px;
621608
}
622-
#registerFailed .content p.submitBtn{
609+
#registerFailed .content p.submitBtn,
610+
#registerSuccess .content p.submitBtn,
611+
#unregisterSuccess .content p.submitBtn{
623612
border-top: 1px solid #e7e7e7;
624613
padding-top: 20px;
625614
text-align: center;
626615
}
627-
#registerFailed .content p.submitBtn .btn{
616+
#registerFailed .content p.submitBtn .btn,
617+
#registerSuccess .content p.submitBtn .btn,
618+
#unregisterSuccess .content p.submitBtn .btn{
628619
width: 60px
629620
}
630621

src/footer.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,16 @@ <h2>Registered!</h2>
5555
</p>
5656
</div>
5757
</div><!-- END #registerSuccess -->
58+
<div id="unregisterSuccess" class="modal">
59+
<a href="javascript:;" class="btnClose closeModal"></a>
60+
<div class="content">
61+
<h2>Unregistered!</h2>
62+
<p class="success">You have unregistered from this challenge.</p>
63+
<p class="submitBtn">
64+
<a class="btn closeModalReg" href="javascript:;">OK</a>
65+
</p>
66+
</div>
67+
</div><!-- END #unregisterSuccess -->
5868
<div id="registerFailed" class="modal">
5969
<a href="javascript:;" class="btnClose closeModal"></a>
6070
<div class="content">

src/js/app/challenge-details/index.html

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,27 @@
1111
<div class="container rightSplit grid-3-3">
1212

1313
<div class="leftColumn">
14-
<a ng-show="!CD.isDesign" ng-click="CD.registerToChallenge()" ng-class="{disabled:CD.challenge.registrationDisabled || !CD.callComplete, disabledNOT:!CD.challenge.registrationDisabled}" class="btn btnAction challengeRegisterBtn" href="javascript:;">
15-
<span>1</span><strong>Register For This Challenge</strong>
14+
<a ng-show="!CD.isDesign" ng-click="CD.challenge.allowToUnregister?CD.unregisterFromChallenge():CD.registerToChallenge()" ng-class="{disabled:!CD.challenge.allowToUnregister && (CD.challenge.registrationDisabled || !CD.callComplete), disabledNOT:!CD.challenge.registrationDisabled, unregister: CD.challenge.allowToUnregister}" class="btn btnAction challengeRegisterBtn" href="javascript:;">
15+
<span>1</span>
16+
<strong ng-hide="CD.isRegistered">
17+
Register For This Challenge
18+
</strong>
19+
<strong ng-show="CD.isRegistered">
20+
Unregister From This Challenge
21+
</strong>
1622
</a>
1723
<a ng-show="!CD.isDesign" ng-class="{disabled:CD.challenge.submissionDisabled || !CD.callComplete, disabledNOT:!CD.challenge.submissionDisabled}" class="btn btnAction" target="_blank"
1824
ng-href="/challenge-details/{{CD.challenge.challengeId}}/submit/?type=develop">
1925
<span>2</span><strong>Submit Your Entries</strong>
2026
</a>
21-
<a ng-show="CD.isDesign" ng-click="CD.registerToChallenge()" ng-class="{disabled:CD.challenge.registrationDisabled || !CD.callComplete, disabledNOT:!CD.challenge.registrationDisabled}" class="btn btnAction challengeRegisterBtn" href="javascript:;">
22-
<span>1</span> <strong>Register For This Challenge</strong>
27+
<a ng-show="CD.isDesign" ng-click="CD.challenge.allowToUnregister?CD.unregisterFromChallenge():CD.registerToChallenge()" ng-class="{disabled:!CD.challenge.allowToUnregister && (CD.challenge.registrationDisabled || !CD.callComplete), disabledNOT:!CD.challenge.registrationDisabled, unregister: CD.challenge.allowToUnregister}" class="btn btnAction challengeRegisterBtn" href="javascript:;">
28+
<span>1</span>
29+
<strong ng-hide="CD.isRegistered">
30+
Register For This Challenge
31+
</strong>
32+
<strong ng-show="CD.isRegistered">
33+
Unregister From This Challenge
34+
</strong>
2335
</a>
2436
<a ng-show="CD.isDesign" ng-class="{disabled:CD.challenge.submissionDisabled || !CD.callComplete, disabledNOT:!CD.challenge.submissionDisabled}" class="btn btnAction" target="_blank"
2537
ng-href="/challenges/{{CD.challenge.challengeId}}/submit/file">

src/js/app/challenge-details/js/controllers/challenge-details-controller.js

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090

9191
// Methods
9292
vm.registerToChallenge = registerToChallenge;
93+
vm.unregisterFromChallenge = unregisterFromChallenge;
9394

9495
// functions
9596
$scope.round = Math.round;
@@ -224,10 +225,32 @@
224225
});
225226
$('.tc-header-login').click();
226227
}
227-
228-
229228
};
230229

230+
/**
231+
* Unregister from challenge
232+
*/
233+
function unregisterFromChallenge() {
234+
if (app.isLoggedIn()) {
235+
ChallengeService
236+
.unregisterFromChallenge(challengeId)
237+
.then(
238+
function (data) {
239+
if (data["message"] === "ok") {
240+
showModal("#unregisterSuccess");
241+
//delete cookie
242+
document.cookie = 'tcDelayChallengeAction=; path=/; domain=.' + tcconfig.domain + '; expires=' + new Date(0).toUTCString();
243+
updateChallengeDetail();
244+
}
245+
}, function (reason) {
246+
if (reason["error"]["details"]) {
247+
showError(reason["error"]["details"]);
248+
}
249+
}
250+
);
251+
}
252+
}
253+
231254
/**
232255
*
233256
* @param template
@@ -298,23 +321,35 @@
298321
}).length;
299322
var submissionMap = challenge.submissions.map(function(x) { return x.handle; });
300323

301-
// this are the buttons for registration and submission
324+
// these are the buttons for registration, and submission
302325
vm.challenge.registrationDisabled = true;
303326
vm.challenge.submissionDisabled = true;
327+
// true when to unregister is the valid option
328+
vm.challenge.allowToUnregister = false;
304329
// button for peer review for challenges with reviewType === PEER
305330
vm.challenge.peerReviewDisabled = true;
306331

307332
vm.challenge.url = window.location.href;
308333

309-
// If is not registered, then enable registration
310-
if (((moment(challenge.phases[0].scheduledStartTime)) < moment() && (moment(challenge.registrationEndDate)) > moment()) && regList.indexOf(handle) == -1 && challenge.currentStatus == 'Active') {
311-
vm.challenge.registrationDisabled = false;
312-
}
313-
314334
vm.isRegistered = true;
315335
if (regList.indexOf(handle) == -1) {
316336
vm.isRegistered = false;
317337
}
338+
339+
var hasSubmitted = false;
340+
if (submissionMap.indexOf(handle) >= 0) {
341+
hasSubmitted = true;
342+
}
343+
344+
// If the challenge is active and in the registration phase we allow either
345+
// registration, or unregistration.
346+
if (((moment(challenge.phases[0].scheduledStartTime)) < moment() && (moment(challenge.registrationEndDate)) > moment()) && challenge.currentStatus == 'Active') {
347+
if (vm.isRegistered && !hasSubmitted) {
348+
vm.challenge.allowToUnregister = true;
349+
} else {
350+
vm.challenge.registrationDisabled = false;
351+
}
352+
}
318353

319354
//check autoRegister (terms link register) and DelayAction cookie status
320355
if (autoRegister) {

src/js/app/challenge-details/js/ng-challenge-detail-software.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,9 @@ $(function () {
188188
closeModal();
189189
});
190190

191+
$("#unregisterSuccess .closeModalReg").click(function () {
192+
closeModal();
193+
});
191194
});
192195

193196
/* checkpoint contest css*/

src/js/app/challenge-details/js/services/challenge-details-services.js

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -233,11 +233,13 @@
233233
};
234234

235235
/**
236-
*
237-
* @param id
238-
* @returns {promise}
236+
* Registers or unregisters the user for challenge.
237+
* @param {String} challengeId Challenge ID.
238+
* @param {String} action The action, MUST be either 'register' or
239+
* 'unregister'.
240+
* @returns {Promise}
239241
*/
240-
service.registerToChallenge = function(id) {
242+
function _challengeRegistrationAction(challengeId, action) {
241243
var defer = $q.defer();
242244

243245
var tcjwt = getCookie('tcjwt');
@@ -246,15 +248,33 @@
246248
}
247249

248250
service
249-
.one('challenges', id)
250-
.post('register')
251+
.one('challenges', challengeId)
252+
.post(action)
251253
.then(function(response) {
252254
defer.resolve(response);
253255
}, function(reason) {
254256
defer.reject(reason['data']);
255257
});
256258

257259
return defer.promise;
260+
}
261+
262+
/**
263+
*
264+
* @param id
265+
* @returns {promise}
266+
*/
267+
service.registerToChallenge = function(id) {
268+
return _challengeRegistrationAction(id, 'register');
269+
};
270+
271+
/**
272+
* Unregisters from challenge.
273+
* @param id Challenge ID.
274+
* @returns {promise}
275+
*/
276+
service.unregisterFromChallenge = function(id) {
277+
return _challengeRegistrationAction(id, 'unregister');
258278
};
259279

260280
/**

0 commit comments

Comments
 (0)