From df44792a10d18d107e0a33fa0221ed9348117f3e Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Tue, 17 Jun 2014 11:48:14 +0100 Subject: [PATCH 1/3] fix tests in user info controller --- .../coffee/User/UserInfoControllerTests.coffee | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/services/web/test/UnitTests/coffee/User/UserInfoControllerTests.coffee b/services/web/test/UnitTests/coffee/User/UserInfoControllerTests.coffee index 66a3066855..c2d90de719 100644 --- a/services/web/test/UnitTests/coffee/User/UserInfoControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserInfoControllerTests.coffee @@ -18,10 +18,14 @@ describe "UserInfoController", -> updatePersonalInfo: sinon.stub() @sanitizer = escape:(v)->v sinon.spy @sanitizer, "escape" + @UserGetter = {} + + @UserInfoController = SandboxedModule.require modulePath, requires: - "./UserGetter": @UserGetter = {} + "./UserGetter": @UserGetter "./UserUpdater": @UserUpdater "./UserDeleter": @UserDeleter + "logger-sharelatex": log:-> "sanitizer":@sanitizer @req = new MockRequest() @@ -33,7 +37,9 @@ describe "UserInfoController", -> @user = _id: ObjectId() @req.user = @user + @req.session.user = @user @UserInfoController.sendFormattedPersonalInfo = sinon.stub() + @UserGetter.getUser = sinon.stub().callsArgWith(2, null, @user) @UserInfoController.getLoggedInUsersPersonalInfo(@req, @res, @next) it "should call sendFormattedPersonalInfo", -> @@ -105,6 +111,8 @@ describe "UserInfoController", -> email: "doug@sharelatex.com" password: "should-not-get-included" signUpDate: new Date() + role:"student" + institution:"sheffield" @UserInfoController._formatPersonalInfo @user, (error, info) => expect(info).to.deep.equal { id: @user._id.toString() @@ -112,6 +120,8 @@ describe "UserInfoController", -> last_name: @user.last_name email: @user.email signUpDate: @user.signUpDate + role: @user.role + institution: @user.institution } describe "setPersonalInfo", -> From cc1b9472b2b01b4b5a54dcb39cf04e83a28b7d5f Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Tue, 17 Jun 2014 11:59:57 +0100 Subject: [PATCH 2/3] don't show the user details area on project list if algolia instituions has not be setup --- .../Features/Project/ProjectController.coffee | 1 + services/web/app/views/project/list.jade | 50 +++++++++---------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index 767a897a18..50b7966332 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -99,6 +99,7 @@ module.exports = return res.send 500 logger.log results:results, user_id:user_id, "rendering project list" viewModel = _buildListViewModel results.projects[0], results.projects[1], results.projects[2], results.tags[0], results.tags[1] + viewModel.showUserDetailsArea = Settings?.algolia?.institutions?.app_id? and Settings?.algolia?.institutions?.api_key? res.render 'project/list', viewModel timer.done() diff --git a/services/web/app/views/project/list.jade b/services/web/app/views/project/list.jade index a4a1909211..2768b444be 100644 --- a/services/web/app/views/project/list.jade +++ b/services/web/app/views/project/list.jade @@ -100,35 +100,35 @@ block content i.icon-remove ul#projectList mixin projectList(projects) + - if (showUserDetailsArea) + .span3#userProfileInformation(ng-cloak) + div(ng-controller="UpdateForm").userProfileInformationArea + div(ng-hide="hidePersonalInfoSection").alert.alert-info - .span3#userProfileInformation(ng-cloak) - div(ng-controller="UpdateForm").userProfileInformationArea - div(ng-hide="hidePersonalInfoSection").alert.alert-info + div(ng-show="percentComplete >= 100") + h4 100% complete, well done! + div(ng-hide="percentComplete >= 100") + h4 Your account is + strong {{percentComplete}}% + | complete - div(ng-show="percentComplete >= 100") - h4 100% complete, well done! - div(ng-hide="percentComplete >= 100") - h4 Your account is - strong {{percentComplete}}% - | complete + .progress + .bar.bar-success(ng-style="{'width' : (percentComplete+'%')}") - .progress - .bar.bar-success(ng-style="{'width' : (percentComplete+'%')}") + button#completeUserProfileInformation.btn.btn-primary(ng-hide="formVisable", ng-click="showForm()") Complete now - button#completeUserProfileInformation.btn.btn-primary(ng-hide="formVisable", ng-click="showForm()") Complete now - - div(ng-show="formVisable") - form(enctype='multipart/form-data', method='post') - .input - input(type='text', name='first_name', ng-model="userInfoForm.first_name", ng-blur="sendUpdate()", placeholder="First Name", focus-input="formVisable") - .input - input(type='text', name='last_name', ng-model="userInfoForm.last_name", ng-blur="sendUpdate()", placeholder='Last Name') - .input#institution_auto_complete - autocomplete(ng-model="userInfoForm.institution", data="institutions", ng-blur="sendUpdate()", on-type="updateInstitutionsList", attr-placeholder="Institution") - .input - input(type='text', name='role', ng-model="userInfoForm.role", placeholder='Role', ng-blur="sendUpdate()", list="_roles") - datalist#_roles - option(ng-repeat='role in roles') {{role}} + div(ng-show="formVisable") + form(enctype='multipart/form-data', method='post') + .input + input(type='text', name='first_name', ng-model="userInfoForm.first_name", ng-blur="sendUpdate()", placeholder="First Name", focus-input="formVisable") + .input + input(type='text', name='last_name', ng-model="userInfoForm.last_name", ng-blur="sendUpdate()", placeholder='Last Name') + .input#institution_auto_complete + autocomplete(ng-model="userInfoForm.institution", data="institutions", ng-blur="sendUpdate()", on-type="updateInstitutionsList", attr-placeholder="Institution") + .input + input(type='text', name='role', ng-model="userInfoForm.role", placeholder='Role', ng-blur="sendUpdate()", list="_roles") + datalist#_roles + option(ng-repeat='role in roles') {{role}} .span3 .tag-list h2 Tags From 2d55f080d6daec5561281892027aa3a76d32a40f Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Tue, 17 Jun 2014 12:25:49 +0100 Subject: [PATCH 3/3] get algolia to pull app id and api key from settings file --- .../coffee/Features/Project/ProjectController.coffee | 7 ++++++- services/web/app/views/project/list.jade | 10 ++++++++++ services/web/public/coffee/UserDetailsUpdater.coffee | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index 50b7966332..2a5a5173b4 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -99,7 +99,12 @@ module.exports = return res.send 500 logger.log results:results, user_id:user_id, "rendering project list" viewModel = _buildListViewModel results.projects[0], results.projects[1], results.projects[2], results.tags[0], results.tags[1] - viewModel.showUserDetailsArea = Settings?.algolia?.institutions?.app_id? and Settings?.algolia?.institutions?.api_key? + if Settings?.algolia?.institutions?.app_id? and Settings?.algolia?.institutions?.api_key? + viewModel.showUserDetailsArea = true + viewModel.algolia_api_key = Settings.algolia.institutions.api_key + viewModel.algolia_app_id = Settings.algolia.institutions.app_id + else + viewModel.showUserDetailsArea = false res.render 'project/list', viewModel timer.done() diff --git a/services/web/app/views/project/list.jade b/services/web/app/views/project/list.jade index 2768b444be..32cd9648a5 100644 --- a/services/web/app/views/project/list.jade +++ b/services/web/app/views/project/list.jade @@ -172,6 +172,16 @@ block content ] }; + - if (showUserDetailsArea) + script + window.algolia = { + institutions:{ + app_id:'#{algolia_app_id}', + api_key:'#{algolia_api_key}' + } + } + + script( data-main=jsPath+'list.js?fingerprint='+fingerprint(jsPath + 'list.js'), baseurl=jsPath, diff --git a/services/web/public/coffee/UserDetailsUpdater.coffee b/services/web/public/coffee/UserDetailsUpdater.coffee index 4864cda97c..5a7db1db07 100644 --- a/services/web/public/coffee/UserDetailsUpdater.coffee +++ b/services/web/public/coffee/UserDetailsUpdater.coffee @@ -3,7 +3,7 @@ define ["libs/algolia", "libs/angular", "libs/angular-autocomplete/angular-autoc app = angular.module("userProfileInformationApp", ["autocomplete"]) app.factory "Institutions", -> - new AlgoliaSearch("SK53GL4JLY", "1606ccef5b70ac44680b61e6b0285126").initIndex("institutions") + new AlgoliaSearch(window.algolia.institutions.app_id, window.algolia.institutions.api_key).initIndex("institutions") app.directive "focusInput", ($timeout) -> return (scope, element, attr) ->