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

Commit ca79698

Browse files
StelioCantostladendo
authored andcommitted
Signed-off-by: Tom Ladendorf <[email protected]>
1 parent 8a87fb3 commit ca79698

File tree

7 files changed

+131
-49
lines changed

7 files changed

+131
-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: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989

9090
// Methods
9191
vm.registerToChallenge = registerToChallenge;
92+
vm.unregisterFromChallenge = unregisterFromChallenge;
9293

9394
// functions
9495
$scope.round = Math.round;
@@ -220,10 +221,32 @@
220221
});
221222
$('.tc-header-login').click();
222223
}
223-
224-
225224
};
226225

226+
/**
227+
* Unregister from challenge
228+
*/
229+
function unregisterFromChallenge() {
230+
if (app.isLoggedIn()) {
231+
ChallengeService
232+
.unregisterFromChallenge(challengeId)
233+
.then(
234+
function (data) {
235+
if (data["message"] === "ok") {
236+
showModal("#unregisterSuccess");
237+
//delete cookie
238+
document.cookie = 'tcDelayChallengeAction=; path=/; domain=.' + tcconfig.domain + '; expires=' + new Date(0).toUTCString();
239+
updateChallengeDetail();
240+
}
241+
}, function (reason) {
242+
if (reason["error"]["details"]) {
243+
showError(reason["error"]["details"]);
244+
}
245+
}
246+
);
247+
}
248+
}
249+
227250
/**
228251
*
229252
* @param template
@@ -294,24 +317,31 @@
294317
}).length;
295318
var submissionMap = challenge.submissions.map(function(x) { return x.handle; });
296319

297-
// this are the buttons for registration and submission
320+
// these are the buttons for registration, and submission
298321
vm.challenge.registrationDisabled = true;
299322
vm.challenge.submissionDisabled = true;
323+
// true when to unregister is the valid option
324+
vm.challenge.allowToUnregister = false;
300325
// button for peer review for challenges with reviewType === PEER
301326
vm.challenge.peerReviewDisabled = true;
302327

303328
vm.challenge.url = window.location.href;
304329

305-
// If is not registered, then enable registration
306-
if (((moment(challenge.phases[0].scheduledStartTime)) < moment() && (moment(challenge.registrationEndDate)) > moment()) && regList.indexOf(handle) == -1 && challenge.currentStatus == 'Active') {
307-
vm.challenge.registrationDisabled = false;
308-
}
309-
310330
vm.isRegistered = true;
311331
if (regList.indexOf(handle) == -1) {
312332
vm.isRegistered = false;
313333
}
314334

335+
// If the challenge is active and in the registration phase we allow either
336+
// registration, or unregistration.
337+
if (((moment(challenge.phases[0].scheduledStartTime)) < moment() && (moment(challenge.registrationEndDate)) > moment()) && challenge.currentStatus == 'Active') {
338+
if (vm.isRegistered) {
339+
vm.challenge.allowToUnregister = true;
340+
} else {
341+
vm.challenge.registrationDisabled = false;
342+
}
343+
}
344+
315345
//check autoRegister (terms link register) and DelayAction cookie status
316346
if (autoRegister) {
317347
autoRegister = false;

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
@@ -220,11 +220,13 @@
220220
};
221221

222222
/**
223-
*
224-
* @param id
225-
* @returns {promise}
223+
* Registers or unregisters the user for challenge.
224+
* @param {String} challengeId Challenge ID.
225+
* @param {String} action The action, MUST be either 'register' or
226+
* 'unregister'.
227+
* @returns {Promise}
226228
*/
227-
service.registerToChallenge = function(id) {
229+
function _challengeRegistrationAction(challengeId, action) {
228230
var defer = $q.defer();
229231

230232
var tcjwt = getCookie('tcjwt');
@@ -233,15 +235,33 @@
233235
}
234236

235237
service
236-
.one('challenges', id)
237-
.post('register')
238+
.one('challenges', challengeId)
239+
.post(action)
238240
.then(function(response) {
239241
defer.resolve(response);
240242
}, function(reason) {
241243
defer.reject(reason['data']);
242244
});
243245

244246
return defer.promise;
247+
}
248+
249+
/**
250+
*
251+
* @param id
252+
* @returns {promise}
253+
*/
254+
service.registerToChallenge = function(id) {
255+
return _challengeRegistrationAction(id, 'register');
256+
};
257+
258+
/**
259+
* Unregisters from challenge.
260+
* @param id Challenge ID.
261+
* @returns {promise}
262+
*/
263+
service.unregisterFromChallenge = function(id) {
264+
return _challengeRegistrationAction(id, 'unregister');
245265
};
246266

247267
/**

0 commit comments

Comments
 (0)