garbage commit
This commit is contained in:
parent
7bb9bb9bfb
commit
3f272dc304
16 changed files with 712 additions and 184 deletions
|
@ -79,7 +79,6 @@ def create_campus(token):
|
||||||
except Exception:
|
except Exception:
|
||||||
return bad_request()
|
return bad_request()
|
||||||
|
|
||||||
|
|
||||||
send_create_campus_request(user.email, user.name, campus.title)
|
send_create_campus_request(user.email, user.name, campus.title)
|
||||||
notify_se_hub_campus_request(campus, campus.title)
|
notify_se_hub_campus_request(campus, campus.title)
|
||||||
return ok()
|
return ok()
|
||||||
|
@ -87,7 +86,6 @@ def create_campus(token):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@campus_routes.route('/api/campuses/getAll/<string:token>', methods=['GET'])
|
@campus_routes.route('/api/campuses/getAll/<string:token>', methods=['GET'])
|
||||||
@auto.doc()
|
@auto.doc()
|
||||||
def get_campuses(token):
|
def get_campuses(token):
|
||||||
|
@ -125,7 +123,11 @@ def get_campuses(token):
|
||||||
query = Campus.all()
|
query = Campus.all()
|
||||||
for c in query.run():
|
for c in query.run():
|
||||||
arr.append(dict(json.loads(c.to_JSON())))
|
arr.append(dict(json.loads(c.to_JSON())))
|
||||||
|
print "ARR:"
|
||||||
print arr
|
print arr
|
||||||
|
for c in arr:
|
||||||
|
print"c:"
|
||||||
|
print c
|
||||||
if len(arr) != 0:
|
if len(arr) != 0:
|
||||||
return Response(response=json.dumps(arr),
|
return Response(response=json.dumps(arr),
|
||||||
status=200,
|
status=200,
|
||||||
|
@ -138,6 +140,63 @@ def get_campuses(token):
|
||||||
return forbidden("Invalid Token")
|
return forbidden("Invalid Token")
|
||||||
|
|
||||||
|
|
||||||
|
@campus_routes.route('/api/campuses/deleteCampus/<string:token>/<string:campusName>', methods=['DELETE'])
|
||||||
|
@auto.doc()
|
||||||
|
def deleteCampus(token,campusName):
|
||||||
|
"""
|
||||||
|
<span class="card-title">This Call will delete a specific campus</span>
|
||||||
|
<br>
|
||||||
|
<b>Route Parameters</b><br>
|
||||||
|
- seToken: 'seToken'
|
||||||
|
- title: 'campusName'
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b>Payload</b><br>
|
||||||
|
- NONE <br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<b>Response</b>
|
||||||
|
<br>
|
||||||
|
202 - Deleted campus
|
||||||
|
<br>
|
||||||
|
204 - No Matching Campus Found
|
||||||
|
<br>
|
||||||
|
....<br>
|
||||||
|
{<br>
|
||||||
|
...<br>
|
||||||
|
}req<br>
|
||||||
|
|
||||||
|
]<br>
|
||||||
|
400 - Bad Request
|
||||||
|
<br>
|
||||||
|
403 - Invalid token or not a lecturer!<br>
|
||||||
|
"""
|
||||||
|
|
||||||
|
if not is_lecturer(token): #todo: change to lecturer id
|
||||||
|
return forbidden("Invalid token or not a lecturer!")
|
||||||
|
|
||||||
|
|
||||||
|
user = get_user_by_token(token)
|
||||||
|
query = Campus.all()
|
||||||
|
query.filter('master_user_id =',user.key().id())
|
||||||
|
|
||||||
|
try:
|
||||||
|
query.filter('title =', campusName)
|
||||||
|
except Exception as e:
|
||||||
|
print e
|
||||||
|
return bad_request("invalid campus title attribute")
|
||||||
|
|
||||||
|
|
||||||
|
for c in query.run():
|
||||||
|
db.delete(c)
|
||||||
|
db.save
|
||||||
|
return accepted("campus deleted")
|
||||||
|
|
||||||
|
|
||||||
|
return bad_request("no such campus found")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@campus_routes.route('/api/campuses/help')
|
@campus_routes.route('/api/campuses/help')
|
||||||
def documentation():
|
def documentation():
|
||||||
|
|
|
@ -41,7 +41,7 @@ def create_project(token):
|
||||||
{<br>
|
{<br>
|
||||||
'projectName': 'Advance Math',<br>
|
'projectName': 'Advance Math',<br>
|
||||||
'courseName': 'JCE',<br>
|
'courseName': 'JCE',<br>
|
||||||
'logo_url': 'http://location.domain.com/image.jpg'<br>
|
'logo_url': 'http://location.domain.com/image.jpg',<br>
|
||||||
'gitRepository': 'http://location.git.com/somthing'<br>
|
'gitRepository': 'http://location.git.com/somthing'<br>
|
||||||
}<br>
|
}<br>
|
||||||
<br>
|
<br>
|
||||||
|
@ -57,10 +57,12 @@ def create_project(token):
|
||||||
if not request.data:
|
if not request.data:
|
||||||
return bad_request()
|
return bad_request()
|
||||||
payload = json.loads(request.data)
|
payload = json.loads(request.data)
|
||||||
if not is_lecturer(token): #todo: change to lecturer id
|
#if not is_lecturer(token): #todo: change to lecturer id
|
||||||
return forbidden("Invalid token or not a lecturer!")
|
# return forbidden("Invalid token or not a lecturer!")
|
||||||
|
|
||||||
user = get_user_by_token(token)
|
user = get_user_by_token(token)
|
||||||
|
if user is None:
|
||||||
|
return bad_request("Wrong user Token")
|
||||||
|
|
||||||
#todo: check legality
|
#todo: check legality
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ from SE_API.Respones_Utils import *
|
||||||
user_routes = Blueprint("user_routes", __name__)
|
user_routes = Blueprint("user_routes", __name__)
|
||||||
auto = Autodoc()
|
auto = Autodoc()
|
||||||
|
|
||||||
|
@user_routes.route('/api/users/getUserByToken/', defaults={'token': None})
|
||||||
@user_routes.route('/api/users/getUserByToken/<string:token>', methods=["GET"])
|
@user_routes.route('/api/users/getUserByToken/<string:token>', methods=["GET"])
|
||||||
@auto.doc()
|
@auto.doc()
|
||||||
def getUserByToken(token):
|
def getUserByToken(token):
|
||||||
|
@ -59,6 +59,9 @@ def getUserByToken(token):
|
||||||
<br>
|
<br>
|
||||||
403 - No User Found
|
403 - No User Found
|
||||||
"""
|
"""
|
||||||
|
if token is None:
|
||||||
|
return no_content("Token Is Empty, No User Found")
|
||||||
|
|
||||||
query = User.all()
|
query = User.all()
|
||||||
query.filter("seToken =", token)
|
query.filter("seToken =", token)
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ class User(db.Model):
|
||||||
seToken = db.StringProperty(required=True)
|
seToken = db.StringProperty(required=True)
|
||||||
avatar_url = db.StringProperty(required=True)
|
avatar_url = db.StringProperty(required=True)
|
||||||
isFirstLogin = db.BooleanProperty(default=True)
|
isFirstLogin = db.BooleanProperty(default=True)
|
||||||
campusName = db.StringProperty(default="")
|
campusName = db.StringProperty(required=True, default=" ")
|
||||||
campuses_id_list = db.StringListProperty(default=[])
|
campuses_id_list = db.StringListProperty(default=[])
|
||||||
classes_id_list = db.StringListProperty(default=[])
|
classes_id_list = db.StringListProperty(default=[])
|
||||||
|
|
||||||
|
|
|
@ -134,12 +134,14 @@ body.noscroll
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.port_spacer{
|
.port_spacer
|
||||||
|
{
|
||||||
margin-top: auto;
|
margin-top: auto;
|
||||||
margin-bottom: auto;
|
margin-bottom: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mail_suffix{
|
.mail_suffix
|
||||||
|
{
|
||||||
margin-top: auto;
|
margin-top: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,13 +151,41 @@ body.noscroll
|
||||||
position:relative;
|
position:relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.listdemoBasicUsage md-divider
|
||||||
/*div.img campusAvatar
|
|
||||||
{
|
{
|
||||||
border: 1px solid #0000ff;
|
margin-top: 10px;
|
||||||
padding-right: 10px;
|
margin-bottom: 10px;
|
||||||
float:right;
|
}
|
||||||
}*/
|
|
||||||
|
.md-avatar img
|
||||||
|
{
|
||||||
|
/*TODO*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.feedContent
|
||||||
|
{
|
||||||
|
padding-left: 6%;
|
||||||
|
font-size: 15px;
|
||||||
|
display:table;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-no-sticky
|
||||||
|
{
|
||||||
|
background-color: blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roundUserAvatar
|
||||||
|
{
|
||||||
|
width: 6%;
|
||||||
|
height: auto;
|
||||||
|
border-radius: 150px;
|
||||||
|
-webkit-border-radius: 150px;
|
||||||
|
-moz-border-radius: 150px;
|
||||||
|
/*background: url(http://i61.tinypic.com/v86f7.png) no-repeat;*/
|
||||||
|
box-shadow: 0 0 8px rgba(0, 0, 0, .8);
|
||||||
|
-webkit-box-shadow: 0 0 8px rgba(0, 0, 0, .8);
|
||||||
|
-moz-box-shadow: 0 0 8px rgba(0, 0, 0, .8);
|
||||||
|
}
|
||||||
|
|
||||||
/*.dropDown /* TODO *
|
/*.dropDown /* TODO *
|
||||||
{
|
{
|
||||||
|
@ -166,10 +196,47 @@ body.noscroll
|
||||||
border-radius: 1px black solid;
|
border-radius: 1px black solid;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
.gray-font{
|
.gray-font
|
||||||
|
{
|
||||||
color: #7f7f7f;
|
color: #7f7f7f;
|
||||||
font-size: 300%;
|
font-size: 300%;
|
||||||
text-shadow:#e0e0e0 1px 1px 0;
|
text-shadow:#e0e0e0 1px 1px 0;
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-animation-duration: 8s;
|
||||||
|
animation-duration: 8s;
|
||||||
|
-webkit-animation-fill-mode: both;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
overflow: hidden;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes fadeOutUp {
|
||||||
|
0% {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: translateY(0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translateY(-200px);
|
||||||
|
/*-webkit-transform: scale(0,0); */
|
||||||
|
height: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes fadeOutUp {
|
||||||
|
0% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(-200px);
|
||||||
|
/*transform: scale(0,0); */
|
||||||
|
height: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fadeOutUp {
|
||||||
|
-webkit-animation-name: fadeOutUp;
|
||||||
|
animation-name: fadeOutUp;
|
||||||
}
|
}
|
||||||
|
|
||||||
.user-pane-menu{
|
.user-pane-menu{
|
||||||
|
@ -213,6 +280,7 @@ body.noscroll
|
||||||
.se-menu li:hover{
|
.se-menu li:hover{
|
||||||
background-color: #E2E2E2;
|
background-color: #E2E2E2;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.se-menu li .selected{
|
.se-menu li .selected{
|
||||||
background-color: #E2E2E2;
|
background-color: #E2E2E2;
|
||||||
|
@ -238,3 +306,62 @@ body.noscroll
|
||||||
text-decoration: none !important;
|
text-decoration: none !important;
|
||||||
color: #7f7f7f;
|
color: #7f7f7f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*Settings Style*/
|
||||||
|
|
||||||
|
.settingList .settingListItem:hover{
|
||||||
|
background-color: #E2E2E2;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settingList .settingListItemRoot{
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settingList .settingListItem{
|
||||||
|
width: 100%;
|
||||||
|
padding: 15px 0px auto 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*End Settings*/
|
||||||
|
|
||||||
|
|
||||||
|
/*md Effects*/
|
||||||
|
|
||||||
|
.md-avatar{
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
margin-top: 8px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
margin-right: 16px;
|
||||||
|
border-radius: 50%;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* md-list-item .md-no-style.md-button, md-list-item.md-no-proxy.md-button {
|
||||||
|
font-size: inherit;
|
||||||
|
height: inherit;
|
||||||
|
text-align: left;
|
||||||
|
text-transform: none;
|
||||||
|
width: 100%;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
md-list-item, md-list-item .md-list-item-inner {
|
||||||
|
display: -webkit-flex;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
-webkit-justify-content: flex-start;
|
||||||
|
-ms-flex-pack: start;
|
||||||
|
justify-content: flex-start;
|
||||||
|
-webkit-align-items: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 48px;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*End Effects for MD*/
|
||||||
|
|
|
@ -37,6 +37,10 @@ app.config(['$routeProvider', '$locationProvider',
|
||||||
.when('/home', {
|
.when('/home', {
|
||||||
templateUrl: 'templates/views/home.html',
|
templateUrl: 'templates/views/home.html',
|
||||||
controller: 'homeController'
|
controller: 'homeController'
|
||||||
|
})
|
||||||
|
.when('/Settings', {
|
||||||
|
templateUrl: 'templates/views/settings.html',
|
||||||
|
controller: 'settingsController'
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,71 @@
|
||||||
/**
|
|
||||||
* Created by sagi on 6/16/15.
|
|
||||||
*/
|
|
||||||
angular.module('SeHub')
|
angular.module('SeHub')
|
||||||
.controller('homeController', ['$scope', '$cookies', '$cookieStore', '$window', '$location', '$mdToast', '$mdDialog', 'apiService', '$rootScope', function ($scope, $cookies, $cookieStore, $window, $location, $mdToast, $mdDialog, apiService ,$rootScope)
|
.controller('homeController', ['$scope', '$cookies', '$cookieStore', '$window', '$location', '$mdToast', '$mdDialog', 'apiService', '$rootScope', function ($scope, $cookies, $cookieStore, $window, $location, $mdToast, $mdDialog, apiService ,$rootScope)
|
||||||
{
|
{
|
||||||
|
var imagePath = $scope.user.avatar_url;
|
||||||
|
$scope.phones = [
|
||||||
|
{ type: 'Home', number: '(972) 865-82861' },
|
||||||
|
{ type: 'Cell', number: '(972) 5251-32309' },
|
||||||
|
];
|
||||||
|
|
||||||
|
$scope.messages = [
|
||||||
|
{
|
||||||
|
face : imagePath,
|
||||||
|
what: 'I need to go to luna-park',
|
||||||
|
who: 'Matan Bar Yosef',
|
||||||
|
when: '3:08PM',
|
||||||
|
notes: " Lets do something"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
face : imagePath,
|
||||||
|
what: 'Lets Lets Lets',
|
||||||
|
who: 'Matan Bar Yosef',
|
||||||
|
when: '4:33PM',
|
||||||
|
notes: " Lets go drink something"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
face : imagePath,
|
||||||
|
what: 'Let me tell you a secret',
|
||||||
|
who: 'Sagi Dayan',
|
||||||
|
when: '4:15PM',
|
||||||
|
notes: " I am S'ein"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
face : imagePath,
|
||||||
|
what: 'Listen to this!',
|
||||||
|
who: 'Aran Zaiger',
|
||||||
|
when: '6:15PM',
|
||||||
|
notes: " I am gaylord ultima!!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
face : imagePath,
|
||||||
|
what: 'Hi?',
|
||||||
|
who: 'Etye Meyer',
|
||||||
|
when: '7:45AM',
|
||||||
|
notes: " I am mega gaylord ultima"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
$scope.tasks = [
|
||||||
|
{
|
||||||
|
ExNum: '1',
|
||||||
|
dueDate: '23/06/15',
|
||||||
|
notes: " Build A Game: Scrabble"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ExNum: '3',
|
||||||
|
dueDate: '30/06/15',
|
||||||
|
notes: " Static Array"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ExNum: '4',
|
||||||
|
dueDate: '07/07/15',
|
||||||
|
notes: " Dynamic Array"
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// animation
|
||||||
|
$scope.isEnterd = top.setIsEnterd;
|
||||||
}]);
|
}]);
|
|
@ -1,6 +1,8 @@
|
||||||
angular.module('SeHub')
|
angular.module('SeHub')
|
||||||
.controller('mainController', ['$scope', '$rootScope', 'apiService', '$cookies', '$location', function($scope, $rootScope, apiService, $cookies, $location) {
|
.controller('mainController', ['$scope', '$rootScope', 'dataService','apiService', '$cookies', '$cookieStore', '$location', '$window',
|
||||||
|
|
||||||
|
function($scope, $rootScope, dataService, apiService, $cookies, $cookieStore, $location, $window) {
|
||||||
|
top.setIsEnterd = true;
|
||||||
var token = $cookies['com.sehub.www'];
|
var token = $cookies['com.sehub.www'];
|
||||||
|
|
||||||
$scope.loadingData = true;
|
$scope.loadingData = true;
|
||||||
|
@ -10,8 +12,10 @@ angular.module('SeHub')
|
||||||
if (data.message == 'No User Found') {
|
if (data.message == 'No User Found') {
|
||||||
console.error("No User Found!");
|
console.error("No User Found!");
|
||||||
}
|
}
|
||||||
|
$scope.loadingData = false;
|
||||||
$scope.user = data;
|
$scope.user = data;
|
||||||
|
dataService.initService($scope); //Start Data Sync Service (For User)
|
||||||
|
console.log(data);
|
||||||
if ($scope.user.isFirstLogin) {
|
if ($scope.user.isFirstLogin) {
|
||||||
$scope.menuObj = {};
|
$scope.menuObj = {};
|
||||||
$scope.isInRegisterMode = true;
|
$scope.isInRegisterMode = true;
|
||||||
|
@ -21,56 +25,66 @@ angular.module('SeHub')
|
||||||
$location.path('/home')
|
$location.path('/home')
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
apiService.getUserByToken(token).success(function(data) // Get user token
|
|
||||||
{
|
|
||||||
$scope.user = data;
|
|
||||||
$scope.loadingData = false;
|
|
||||||
|
|
||||||
apiService.getAllCampuses($scope.user.seToken).success(function(data) // Get all the campuses
|
|
||||||
{
|
|
||||||
$scope.campuses = data;
|
|
||||||
}).error(function() {
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$scope.menuItems = [{
|
$scope.menuItems = [{
|
||||||
"title": "Home",
|
"title": "Dash Board",
|
||||||
"icon": "fa fa-home",
|
"icon": "fa fa-tachometer",
|
||||||
"style": "selected",
|
"style": "selected",
|
||||||
"route": "/home"
|
"route": "/home"
|
||||||
}, {
|
}, {
|
||||||
"title": "My Campuses",
|
"title": "My Campuses",
|
||||||
"icon": "fa fa-university",
|
"icon": "fa fa-university",
|
||||||
"style": "selected",
|
"style": "",
|
||||||
"route": "/campuses"
|
"route": "/campuses"
|
||||||
}, {
|
}, {
|
||||||
"title": "My Classes",
|
"title": "My Classes",
|
||||||
"icon": "fa fa-graduation-cap",
|
"icon": "fa fa-graduation-cap",
|
||||||
"style": "selected",
|
"style": "",
|
||||||
"route": "/campuses"
|
"route": "/campuses"
|
||||||
}, {
|
}, {
|
||||||
"title": "My Projects",
|
"title": "My Projects",
|
||||||
"icon": "fa fa-cube",
|
"icon": "fa fa-cube",
|
||||||
"style": "selected",
|
"style": "",
|
||||||
"route": "/campuses"
|
"route": "/campuses"
|
||||||
}, {
|
}, {
|
||||||
"title": "Tasks",
|
"title": "Tasks",
|
||||||
"icon": "fa fa-clipboard",
|
"icon": "fa fa-clipboard",
|
||||||
"style": "selected",
|
"style": "",
|
||||||
"route": "/campuses"
|
"route": "/campuses"
|
||||||
}, {
|
}, {
|
||||||
"title": "Settings",
|
"title": "Settings",
|
||||||
"icon": "fa fa-cogs",
|
"icon": "fa fa-cogs",
|
||||||
"style": "selected",
|
"style": "",
|
||||||
"route": "/campuses"
|
"route": "/Settings"
|
||||||
}, {
|
}, {
|
||||||
"title": "Log Out",
|
"title": "Log Out",
|
||||||
"icon": "fa fa-power-off",
|
"icon": "fa fa-power-off",
|
||||||
"style": "selected",
|
"style": "",
|
||||||
"route": "/campuses"
|
"route": "/logout"
|
||||||
}];
|
}];
|
||||||
|
|
||||||
}]);
|
$scope.menuClicked = function(item) {
|
||||||
|
var route = ""
|
||||||
|
if (item.title == "Log Out") {
|
||||||
|
console.info('Logging Out!');
|
||||||
|
$cookieStore.remove('com.sehub.www');
|
||||||
|
$window.location.href = 'http://se-hub.appspot.com'; // Reference to 'welcome' page
|
||||||
|
}
|
||||||
|
for (var i = $scope.menuItems.length - 1; i >= 0; i--) {
|
||||||
|
if ($scope.menuItems[i].title === item.title) {
|
||||||
|
$scope.menuItems[i].style = "selected";
|
||||||
|
route = $scope.menuItems[i].route;
|
||||||
|
} else {
|
||||||
|
$scope.menuItems[i].style = "";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
top.setIsEnterd = false;
|
||||||
|
$location.path(route);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
]);
|
|
@ -56,9 +56,28 @@ angular.module('SeHub')
|
||||||
|
|
||||||
$scope.submitClicked = function(ev)
|
$scope.submitClicked = function(ev)
|
||||||
{
|
{
|
||||||
|
var emailValid = false;
|
||||||
|
var jsonUpdateUser =
|
||||||
|
{
|
||||||
|
"lecturerStat": "$scope.user.isLecturer",
|
||||||
|
"campName": "$scope.campusName"
|
||||||
|
}
|
||||||
|
|
||||||
if($scope.user.AcMail != null)
|
if($scope.user.AcMail != null)
|
||||||
{
|
{
|
||||||
var fullMail = $scope.user.AcMail + $scope.campusObj.email_ending; // Holds the full academic email of the user
|
var fullMail = $scope.user.AcMail + $scope.campusObj.email_ending; // Holds the full academic email of the user
|
||||||
|
|
||||||
|
apiService.updateUser($scope.user.seToken, jsonUpdateUser).success(function(data)
|
||||||
|
{
|
||||||
|
|
||||||
|
}).error(function()
|
||||||
|
{
|
||||||
|
// TODO Error
|
||||||
|
console.log("Error occured on updateUser");
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log("Mail: " + fullMail);
|
||||||
|
|
||||||
apiService.sendValidationMail($scope.user.seToken, fullMail).success(function(data)
|
apiService.sendValidationMail($scope.user.seToken, fullMail).success(function(data)
|
||||||
{
|
{
|
||||||
console.log("DONE - 200");
|
console.log("DONE - 200");
|
||||||
|
@ -72,36 +91,38 @@ angular.module('SeHub')
|
||||||
$mdDialog.show($mdDialog.alert().title('Error - E-mail Verification').content('An error has occured in your e-mail address.')
|
$mdDialog.show($mdDialog.alert().title('Error - E-mail Verification').content('An error has occured in your e-mail address.')
|
||||||
.ariaLabel('Email verification error alert dialog').ok('Got it!').targetEvent(ev));
|
.ariaLabel('Email verification error alert dialog').ok('Got it!').targetEvent(ev));
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
else // TODO Fix when success to show mdDialog until 'Got it' clicked
|
||||||
|
{
|
||||||
|
$mdDialog.show($mdDialog.alert().title('Error - E-mail Verification').content('An error has occured in your e-mail address.')
|
||||||
|
.ariaLabel('Email verification error alert dialog').ok('Got it!').targetEvent(ev));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
$scope.createCampus = function(ev)
|
$scope.createCampus = function(ev)
|
||||||
{
|
{
|
||||||
$scope.createCampusClicked = true;
|
$scope.createCampusClicked = true;
|
||||||
|
|
||||||
if(!$scope.isLecturer) // "!isLecturer" Means => I Am Lecturer; if i am a lecturer (when pressing -> getting last data value before pressing)
|
if(!$scope.isLecturer) // "!isLecturer" Means => I Am Lecturer; if i am a lecturer (when pressing -> getting last data value before pressing)
|
||||||
{
|
{
|
||||||
if($scope.user.campusSuffixMail != null)
|
if($scope.user.campusMail != null)
|
||||||
{
|
{
|
||||||
validateEmail($scope.user.campusSuffixMail);
|
validateEmail($scope.user.campusMail); // Verify the email according to "xxx@name.suffix"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
validateEmail = function(email) // TODO ADD IT
|
validateEmail = function(email)
|
||||||
{
|
{
|
||||||
var result = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
|
var result = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
|
||||||
|
if (!result.test(email)) // TODO Fix when success to show mdDialog until 'Got it' clicked
|
||||||
console.log("Email: " + email);
|
|
||||||
|
|
||||||
if (!result.test(email))
|
|
||||||
{
|
{
|
||||||
console.log(email + ", Error in email, should alert");
|
console.log(email + ", Error in email, should alert");
|
||||||
alert('Please provide a valid e-mail address');
|
// alert('Please provide a valid e-mail address');
|
||||||
|
$mdDialog.show($mdDialog.alert().title('Error - E-mail Verification').content('An error has occured in your e-mail address.')
|
||||||
|
.ariaLabel('Email verification error alert dialog').ok('Got it!').targetEvent(email));
|
||||||
}
|
}
|
||||||
|
if(result.test(email)) // TODO Fix when success to show mdDialog until 'Got it' clicked
|
||||||
if(result.test(email))
|
|
||||||
{
|
{
|
||||||
console.log("Im good");
|
console.log("Im good");
|
||||||
apiService.sendValidationMail($scope.user.seToken, email).success(function(data)
|
apiService.sendValidationMail($scope.user.seToken, email).success(function(data)
|
||||||
|
@ -119,26 +140,4 @@ angular.module('SeHub')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO FOR LATER - toast
|
|
||||||
// TODO FOR LATER
|
|
||||||
|
|
||||||
// $scope.getPopWindowPosition = function()
|
|
||||||
// {
|
|
||||||
// return Object.keys($scope.toastPosition).filter(function(pos)
|
|
||||||
// {
|
|
||||||
// return $scope.toastPosition[pos];
|
|
||||||
// }).join(' ');
|
|
||||||
// };
|
|
||||||
|
|
||||||
// $scope.toastPosition =
|
|
||||||
// {
|
|
||||||
// bottom: false,
|
|
||||||
// top: true,
|
|
||||||
// left: false,
|
|
||||||
// right: true
|
|
||||||
// };
|
|
||||||
|
|
||||||
// TODO FOR LATER
|
|
||||||
// TODO FOR LATER
|
|
||||||
}]);
|
}]);
|
||||||
|
|
78
templates/js/controllers/settingsController.js
Normal file
78
templates/js/controllers/settingsController.js
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
angular.module('SeHub')
|
||||||
|
.controller('settingsController', ['$scope', '$rootScope', 'dataService', 'apiService', '$cookies', '$location',
|
||||||
|
function($scope, $rootScope, dataService, apiService, $cookies, $location) {
|
||||||
|
|
||||||
|
var token = $cookies['com.sehub.www'];
|
||||||
|
|
||||||
|
$scope.loadingData = true;
|
||||||
|
$scope.isInRegisterMode = false;
|
||||||
|
|
||||||
|
$scope.title = "Settings"
|
||||||
|
|
||||||
|
apiService.getUserByToken(token).success(function(data) {
|
||||||
|
if (data.message == 'No User Found') {
|
||||||
|
console.error("No User Found!");
|
||||||
|
}
|
||||||
|
$scope.loadingData = false;
|
||||||
|
$scope.user = data;
|
||||||
|
console.log(data);
|
||||||
|
if ($scope.user.isFirstLogin) {
|
||||||
|
$scope.menuObj = {};
|
||||||
|
$scope.isInRegisterMode = true;
|
||||||
|
$scope.loadingData = false;
|
||||||
|
$location.path('/register')
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$scope.isEditMode = false;
|
||||||
|
$scope.profileMode = "Edit Profile";
|
||||||
|
$scope.profileModeIcon = "fa fa-pencil";
|
||||||
|
|
||||||
|
$scope.changeProfileMode = function() {
|
||||||
|
$scope.isEditMode = !$scope.isEditMode;
|
||||||
|
if ($scope.isEditMode) {
|
||||||
|
$scope.profileMode = "Save Profile";
|
||||||
|
$scope.profileModeIcon = "fa fa-floppy-o";
|
||||||
|
} else {
|
||||||
|
dataService.userBrodcast($scope.user);
|
||||||
|
$scope.profileMode = "Edit Profile";
|
||||||
|
$scope.profileModeIcon = "fa fa-pencil";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DEBUG DATA
|
||||||
|
*/
|
||||||
|
$scope.courses = [{
|
||||||
|
"courseName": "Advance Math",
|
||||||
|
"campusName": "JCE",
|
||||||
|
"startDate": {
|
||||||
|
"year": 2015,
|
||||||
|
"month": 4,
|
||||||
|
"day": 3
|
||||||
|
},
|
||||||
|
"endDate": {
|
||||||
|
"year": 2016,
|
||||||
|
"month": 5,
|
||||||
|
"day": 14
|
||||||
|
},
|
||||||
|
"taskFlag": false,
|
||||||
|
"campus_avatar": "https://yt3.ggpht.com/--ZkWxybWGOM/AAAAAAAAAAI/AAAAAAAAAAA/_nAICC_kzzI/s88-c-k-no/photo.jpg"
|
||||||
|
}];
|
||||||
|
|
||||||
|
$scope.campuses = [{
|
||||||
|
'title': 'JCE',
|
||||||
|
'email_ending': '@post.jce.ac.il',
|
||||||
|
'master_user_id': 123453433341,
|
||||||
|
'avatar_url': 'https://yt3.ggpht.com/--ZkWxybWGOM/AAAAAAAAAAI/AAAAAAAAAAA/_nAICC_kzzI/s88-c-k-no/photo.jpg'
|
||||||
|
}, {
|
||||||
|
'title': 'Stanford',
|
||||||
|
'email_ending': '@post.jce.ac.il',
|
||||||
|
'master_user_id': 123453433341,
|
||||||
|
'avatar_url': 'https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcR9M4uQgaJP1zyiCGw-dK31hU8buWqeuOi9vTXBd4Y8hQcFTZqA'
|
||||||
|
}];
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
]);
|
|
@ -3,15 +3,12 @@ var DEBUG = true;
|
||||||
var service = angular.module('seHub.services', []);
|
var service = angular.module('seHub.services', []);
|
||||||
|
|
||||||
service.factory('apiService', ['$http', function($http) {
|
service.factory('apiService', ['$http', function($http) {
|
||||||
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
getUserByToken: function(token){
|
getUserByToken: function(token){
|
||||||
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/users/getUserByToken/" + token;
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/users/getUserByToken/" + token;
|
||||||
req = {
|
req = {
|
||||||
method : "GET",
|
method : "GET",
|
||||||
url : url
|
url : url
|
||||||
|
|
||||||
};
|
};
|
||||||
return $http(req);
|
return $http(req);
|
||||||
},
|
},
|
||||||
|
@ -36,9 +33,17 @@ service.factory('apiService', ['$http', function($http) {
|
||||||
data: payload
|
data: payload
|
||||||
};
|
};
|
||||||
|
|
||||||
|
return $http(req);
|
||||||
|
},
|
||||||
|
updateUser: function(token, payLoad){
|
||||||
|
var url = (DEBUG ? "http://localhost:8080" : "http://se-hub.appspot.com") + "/api/users/updateUser/" + token;
|
||||||
|
|
||||||
|
req = {
|
||||||
|
method: "POST",
|
||||||
|
url: url,
|
||||||
|
data: payLoad
|
||||||
|
};
|
||||||
return $http(req);
|
return $http(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}]);
|
}]);
|
21
templates/js/services/dataService.js
Normal file
21
templates/js/services/dataService.js
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
var DEBUG = true;
|
||||||
|
|
||||||
|
angular.module('seHub.services').
|
||||||
|
|
||||||
|
factory('dataService', ['$http', function($http) {
|
||||||
|
var scope = null;
|
||||||
|
|
||||||
|
|
||||||
|
return {
|
||||||
|
initService: function(mainScope) {
|
||||||
|
// this.token = user.seToken;
|
||||||
|
// this.user = user;
|
||||||
|
scope = mainScope;
|
||||||
|
},
|
||||||
|
userBrodcast: function(user) {
|
||||||
|
scope.user = JSON.parse(JSON.stringify(user));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
}]);
|
|
@ -3,7 +3,7 @@
|
||||||
<md-progress-circular md-mode="indeterminate"></md-progress-circular>
|
<md-progress-circular md-mode="indeterminate"></md-progress-circular>
|
||||||
</div>
|
</div>
|
||||||
<md-content layout-padding>
|
<md-content layout-padding>
|
||||||
<md-card class="gray-font">
|
<md-card class="gray-font fadeOutUp" ng-if="isEnterd">
|
||||||
<div layout="row">
|
<div layout="row">
|
||||||
<div class="spacer"></div>
|
<div class="spacer"></div>
|
||||||
<div>
|
<div>
|
||||||
|
@ -15,12 +15,54 @@
|
||||||
<div class="spacer"></div>
|
<div class="spacer"></div>
|
||||||
<div>
|
<div>
|
||||||
<h1>Welcome To SE-Hub</h1>
|
<h1>Welcome To SE-Hub</h1>
|
||||||
<p>
|
<P>Software Engineering Course Made Easy</P>
|
||||||
This Is your Home Page
|
v1.0
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="spacer"></div>
|
<div class="spacer"></div>
|
||||||
</div>
|
</div>
|
||||||
</md-card>
|
</md-card>
|
||||||
</md-content>
|
</md-content>
|
||||||
|
<md-content layout-padding>
|
||||||
|
<md-card>
|
||||||
|
<div class = "feed" ><!-- layout-align="center center"> -->
|
||||||
|
<div>
|
||||||
|
<md-subheader class="md-no-sticky" style = "background-color:aliceblue; margin-right:0;">Messages</md-subheader>
|
||||||
|
<md-list-item class="md-3-line" ng-repeat="item in messages">
|
||||||
|
<div class="md-list-item-text" style="border: 1px solid black;">
|
||||||
|
<img ng-src="{{user.avatar_url}}" class="roundUserAvatar" alt="{{item.who}}" style="margin:8px"/>
|
||||||
|
<!-- Instead of "user.avatar.url" suppose to be "postedUserAvatarUrl" -->
|
||||||
|
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<br></br>
|
||||||
|
<md-divider class = "feedContent">
|
||||||
|
<h4>{{ item.who }}</h4>
|
||||||
|
<h5>{{ item.what }}</h5>
|
||||||
|
<h5><b>{{ item.notes }}</b></h5>
|
||||||
|
<h6>{{ item.when }}</h6>
|
||||||
|
</md-divider>
|
||||||
|
</div>
|
||||||
|
</md-list-item>
|
||||||
|
</div>
|
||||||
|
</md-card>
|
||||||
|
</md-content>
|
||||||
|
<div class="port_spacer"></div>
|
||||||
|
<div>
|
||||||
|
<md-content>
|
||||||
|
<md-card style="margin:0">
|
||||||
|
<!-- <md-list> -->
|
||||||
|
<md-subheader class="md-no-sticky" style = "background-color:aliceblue; margin-right:0;">Tasks</md-subheader>
|
||||||
|
<md-list-item class="md-3-line" ng-repeat="item in tasks">
|
||||||
|
<!-- <img ng-src="{{item.face}}?{{$index}}" class="md-avatar" alt="{{item.who}}" /> -->
|
||||||
|
<div class="md-list-item-text" style="border: 1px solid black;">
|
||||||
|
<md-divider class = "feedContent">
|
||||||
|
<h6><u><em>Ex: {{ item.ExNum }}</em></u></h6>
|
||||||
|
<h5>Task Title: {{ item.notes }}</h5>
|
||||||
|
<h6>Due Date: {{ item.dueDate }}</h6>
|
||||||
|
</md-divider>
|
||||||
|
</div>
|
||||||
|
</md-list-item>
|
||||||
|
</md-card>
|
||||||
|
</md-content>
|
||||||
|
</div>
|
||||||
|
<!-- </md-card> -->
|
||||||
</div>
|
</div>
|
|
@ -21,10 +21,8 @@
|
||||||
</md-toolbar>
|
</md-toolbar>
|
||||||
<div layout="row" flex>
|
<div layout="row" flex>
|
||||||
<md-sidenav layout="column" class="md-sidenav-left md-whiteframe-z2" md-component-id="left" md-is-locked-open="$mdMedia('gt-sm')">
|
<md-sidenav layout="column" class="md-sidenav-left md-whiteframe-z2" md-component-id="left" md-is-locked-open="$mdMedia('gt-sm')">
|
||||||
<!-- <div class="user-pane-menu">
|
|
||||||
<img ng-src="{{user.avatar_url}}" alt="">
|
|
||||||
</div> -->
|
|
||||||
<md-content class="se-menu">
|
<md-content class="se-menu">
|
||||||
|
<div ng-if="!isInRegisterMode">
|
||||||
<div class="user-box" layout="row" layout-padding>
|
<div class="user-box" layout="row" layout-padding>
|
||||||
<div flex="30"> <!-- Avatar -->
|
<div flex="30"> <!-- Avatar -->
|
||||||
<img ng-src="{{user.avatar_url}}" alt="">
|
<img ng-src="{{user.avatar_url}}" alt="">
|
||||||
|
@ -40,13 +38,11 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<a ng-repeat="item in menuItems" href="#">
|
<a ng-repeat="item in menuItems" ng-click="menuClicked(item)">
|
||||||
<li><i ng-class="item.icon"></i> {{item.title}}</li>
|
<li ng-class="[item.style]"><i ng-class="item.icon"></i> {{item.title}}</li>
|
||||||
<md-divider ng-if="!$last"></md-divider>
|
<md-divider ng-if="!$last"></md-divider>
|
||||||
</a>
|
</a>
|
||||||
</ul>
|
</ul>
|
||||||
<div ng-if="loadingData">
|
|
||||||
<md-progress-circular></md-progress-circular>
|
|
||||||
</div>
|
</div>
|
||||||
<div ng-if="isInRegisterMode"> <!-- User Needs To Register -->
|
<div ng-if="isInRegisterMode"> <!-- User Needs To Register -->
|
||||||
<md-card layout-padding>
|
<md-card layout-padding>
|
||||||
|
@ -85,10 +81,12 @@
|
||||||
|
|
||||||
<!-- Services -->
|
<!-- Services -->
|
||||||
<script src="templates/js/services/apiService.js"></script>
|
<script src="templates/js/services/apiService.js"></script>
|
||||||
|
<script src="templates/js/services/dataService.js"></script>
|
||||||
|
|
||||||
<!-- Controllers -->
|
<!-- Controllers -->
|
||||||
<script src="templates/js/controllers/mainController.js"></script>
|
<script src="templates/js/controllers/mainController.js"></script>
|
||||||
<script src="templates/js/controllers/homeController.js"></script>
|
<script src="templates/js/controllers/homeController.js"></script>
|
||||||
|
<script src="templates/js/controllers/settingsController.js"></script>
|
||||||
<script src="templates/js/controllers/registerController.js"></script>
|
<script src="templates/js/controllers/registerController.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<div>
|
<div>
|
||||||
<md-input-container ng-if="userHasNoName">
|
<md-input-container ng-if="userHasNoName">
|
||||||
<label>Full Name: </label>
|
<label>Full Name: </label>
|
||||||
<input ng-model="user.name" required>
|
<input ng-model="user.name" ng-minlength="1" required>
|
||||||
</md-input-container>
|
</md-input-container>
|
||||||
</div>
|
</div>
|
||||||
<br></br>
|
<br></br>
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
<div class = "createCampus" ng-if="createCampusClicked">
|
<div class = "createCampus" ng-if="createCampusClicked">
|
||||||
<md-input-container>
|
<md-input-container>
|
||||||
<label>Academic Suffix Email</label>
|
<label>Academic Suffix Email</label>
|
||||||
<input type="text" ng-model="user.campusSuffixMail" ng-minlength="1" required/>
|
<input type="text" ng-model="user.campusMail" ng-minlength="1" required/>
|
||||||
</md-input-container>
|
</md-input-container>
|
||||||
<md-input-container>
|
<md-input-container>
|
||||||
<label>Campus Name</label>
|
<label>Campus Name</label>
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
<div>
|
<div>
|
||||||
<md-input-container>
|
<md-input-container>
|
||||||
<label>Academic Email</label>
|
<label>Academic Email</label>
|
||||||
<input type="text" ng-model="user.AcMail" required/>
|
<input type="text" ng-model="user.AcMail" ng-length="1" required/>
|
||||||
</md-input-container>
|
</md-input-container>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
114
templates/views/settings.html
Normal file
114
templates/views/settings.html
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
<div>
|
||||||
|
<div class="loader" ng-if="loadingData">
|
||||||
|
<md-progress-circular md-mode="indeterminate"></md-progress-circular>
|
||||||
|
</div>
|
||||||
|
<md-content layout-padding>
|
||||||
|
<md-card layout-padding>
|
||||||
|
<h1><i class="fa fa-cogs"></i> {{title}}</h1>
|
||||||
|
<div layout="row">
|
||||||
|
<div>
|
||||||
|
<md-card layout-padding>
|
||||||
|
<div id="profile" layout="column">
|
||||||
|
<!-- User Profile Box -->
|
||||||
|
<div class="user-box" layout="row">
|
||||||
|
<div>
|
||||||
|
<img ng-src="{{user.avatar_url}}" alt="" style="width:20%">
|
||||||
|
</div>
|
||||||
|
<div flex="70%">
|
||||||
|
<md-button class="md-raised" ng-click="changeProfileMode()">
|
||||||
|
<i ng-class="profileModeIcon"></i> {{profileMode}}
|
||||||
|
</md-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Start View Profile -->
|
||||||
|
<div layout="column" ng-if="!isEditMode">
|
||||||
|
<div>
|
||||||
|
<h2>{{user.name}}</h2>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Email: {{user.email}}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
I Am a: {{(user.isLecturer) ? "Lecturer" : "Student"}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- End View Profile -->
|
||||||
|
<!-- Starting Edit Mode Div -->
|
||||||
|
<div layout="column" ng-if="isEditMode">
|
||||||
|
<div>
|
||||||
|
<md-input-container>
|
||||||
|
<label>Full Name</label>
|
||||||
|
<input ng-model="user.name">
|
||||||
|
</md-input-container>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<md-input-container>
|
||||||
|
<label>Email</label>
|
||||||
|
<input ng-model="user.email">
|
||||||
|
</md-input-container>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<md-switch ng-model="user.isLecturer" aria-label="Switch 1">
|
||||||
|
I Am a: {{(user.isLecturer) ? "Lecturer" : "Student"}}
|
||||||
|
</md-switch>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- End Edit Div -->
|
||||||
|
</md-card>
|
||||||
|
</div>
|
||||||
|
<!-- Campuses & Classes Div -->
|
||||||
|
<div flex>
|
||||||
|
<md-card layout-padding>
|
||||||
|
<h3><i class="fa fa-graduation-cap"></i> My Classes</h3>
|
||||||
|
<div class="settingList">
|
||||||
|
<div class="settingListRoot">
|
||||||
|
<div ng-repeat="course in courses" class="settingListItem" layout="row">
|
||||||
|
<div>
|
||||||
|
<img alt="{{ person.name }}" ng-src="{{ course.campus_avatar }}" class="md-avatar" />
|
||||||
|
</div>
|
||||||
|
<div class="port_spacer">
|
||||||
|
{{ course.courseName }} - <strong>IN</strong> {{course.campusName}}
|
||||||
|
</div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div>
|
||||||
|
<md-button class="">
|
||||||
|
X
|
||||||
|
</md-button>
|
||||||
|
</div>
|
||||||
|
<md-divider ng-if="!$last"></md-divider>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3><i class="fa fa-university"></i> My Campuses</h3>
|
||||||
|
|
||||||
|
<div class="settingList">
|
||||||
|
<div class="settingListRoot">
|
||||||
|
<div ng-repeat="campus in campuses" class="settingListItem" layout="row">
|
||||||
|
<div>
|
||||||
|
<img alt="{{ person.name }}" ng-src="{{ campus.avatar_url }}" class="md-avatar" />
|
||||||
|
</div>
|
||||||
|
<div class="port_spacer">
|
||||||
|
{{ campus.title }} -
|
||||||
|
</div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div>
|
||||||
|
<md-button class="">
|
||||||
|
X
|
||||||
|
</md-button>
|
||||||
|
</div>
|
||||||
|
<md-divider ng-if="!$last"></md-divider>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</md-card>
|
||||||
|
</div>
|
||||||
|
<!-- End Campuses & Classes Div -->
|
||||||
|
</div>
|
||||||
|
</md-card>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</md-content>
|
||||||
|
</div>
|
Loading…
Reference in a new issue