unserver-unify
Version:
581 lines (554 loc) • 19.9 kB
JavaScript
;
angular.module('bamboo').controller('HomeCtrl', function($scope, $location, $window, $state, CourseService, loginService, ApiService, $rootScope, deviceDetector, siteConfigSvs, HomeService, courseBizModel, schoolModel, fullWidthService) {
console.log('-- detected OS / browser / device infos as below');
console.log('os: ' + deviceDetector.os);
console.log('browser: ' + deviceDetector.browser);
console.log('device: ' + deviceDetector.device);
console.log('Desktop:' + deviceDetector.isDesktop());
console.log('Mobile:' + deviceDetector.isMobile());
console.log('Tablet:' + deviceDetector.isTablet());
this.currency = (loginService.school&&loginService.school.currency&&loginService.school.currency.sign)?loginService.school.currency.sign:'$';
$rootScope.fullwidthflag = true;
$scope.$on("$destroy", function() {
console.log('-- destroy --');
fullWidthService.listen();
});
if (!loginService.isLogged && loginService.school && loginService.school.advPageFlag) {
console.info("---1");
$state.go('index.advertise');
}
if (!loginService.isLogged && loginService.subDomain == 'sgpower') {
$state.go('index.sglogin');
return;
}
$scope.$on("$destroy", function() {
console.log('-- destroy --');
if ($state.current.name == 'index.advertise' || $state.current.name == 'index.store' || $state.current.name.indexOf('index.home') > -1) {} else {
$rootScope.fullwidthflag = false;
}
$rootScope.home_argbg_highlight_flag = undefined;
});
loginService.school = loginService.school || {};
$scope.advType = loginService.school.homepageAdvType;
//console.log( $location.host())
if (loginService.school.themecolors) {
$scope.coursebtmStyle = {
"background-color": loginService.school.themecolors.coursewidgetbtmcolor
};
}
if (loginService.school.themecolors) {
console.log('----- themecolors');
$scope.courseTxtStyle = {
"color": loginService.school.themecolors.coursewidgetbtmcolor
};
}
$rootScope.home_argbg_highlight_flag = ($state.current.name === "index.home");
this.school = loginService.school;
this.contentModelPicUrl = ApiService.SHOST + '/videomeeting/';
console.log(this.footerConfig);
console.log(loginService.school);
//$scope.newsbtmStyle = {"background-color":loginService.school.themecolors.newswidgetbtmcolor};
this.hosturl = $location.host();
$scope._SHOST = ApiService.SHOST;
$scope._RES = ApiService.RES;
$scope.appUrl = ApiService.APPURL;
this.companypath = ApiService.SHOST + '/company/';
this.productpath = ApiService.SHOST + '/product/';
this.defaultProductPhoto = "assets/images/product.png";
var _courses = [];
//this.schoolurl = ApiService.SHOST + "/public/" + ApiService.RES + "/school/" + ApiService.gid + "/";
this.publicUrl = $scope.publicUrl = ApiService.SHOST + "/public/images/";
this.projectUrl = ApiService.SHOST + '/project/';
this.jobUrl = ApiService.SHOST + '/job/';
this.schoolIconUrl = this.schoolurl = $scope.schoolUrl = ApiService.SHOST + "/public/" + ApiService.RES + "/school/" + ApiService.gid + "/";
this.teacherPicUrl = ApiService.SHOST + "/photo/" + ApiService.RES + "/teachers/";
this.defaultCoursePhoto = ApiService.SHOST + "/public/images/videos.png";
if (loginService.school.coursephoto) {
this.defaultCoursePhoto = ApiService.SHOST + "/public/" + ApiService.RES + "/school/" + ApiService.gid + "/" + loginService.school.coursephoto;
}
this.defaultNewsPhoto = ApiService.SHOST + "/public/images/details.png";
if (loginService.school.newsphoto) {
this.defaultNewsPhoto = ApiService.SHOST + "/public/" + ApiService.RES + "/school/" + ApiService.gid + "/" + loginService.school.newsphoto;
}
this.defaultProjectPhoto = "/assets/images/project.png";
if (loginService.school.newsphoto) {
this.defaultProjectPhoto = ApiService.SHOST + "/public/" + ApiService.RES + "/school/" + ApiService.gid + "/" + loginService.school.newsphoto;
}
this.defaultJobPhoto = "/assets/images/jobs.png";
if (loginService.school.newsphoto) {
this.defaultJobPhoto = ApiService.SHOST + "/public/" + ApiService.RES + "/school/" + ApiService.gid + "/" + loginService.school.newsphoto;
}
this.defaultEventPhoto = ApiService.SHOST + "/public/images/details.png";
if (loginService.school.eventphoto) {
this.defaultEventPhoto = ApiService.SHOST + "/public/" + ApiService.RES + "/school/" + ApiService.gid + "/" + loginService.school.eventphoto;
}
this.defaultCompanyPhoto = "assets/images/company.png";
this.companypath = ApiService.SHOST + '/company/';
this.limits = {
courses: 4,
news: 4,
events: 4,
teachers: 4,
numberOfCourseCat: 8,
};
if (loginService.school.links) {
var links = [];
angular.forEach(loginService.school.links, function(link) {
if (link.enable) {
links.push(link)
}
})
this.links = links;
}
var self = this;
this.contentready = false;
this.inspectorFlag = false;
self.courseTags = loginService.school.courseTags;
//console.log(loginService.user);
if(!loginService.school.disableAdminStudy){
if (loginService.user && (loginService.user.is_admin || loginService.user.grole == 'admin' || loginService.user.grole == 'sysmanager' || loginService.user.grole == 'dinspector' || loginService.user.grole == 'sysinspector')) {
self.inspectorFlag = true;
}
}
$scope.getText = function(string) {
return string.replace(/<[^>]*>/g, "")
}
var mycourses = [];
this.viewAllVideo = function() {
console.log('viewAllVideo');
if (!loginService.user) {
$rootScope.showCourseLoginDialog();
} else {
if (self.showlive) {
var URL = ApiService.APPURL + "/mymeetings";
$window.location.href = URL;
} else {
$state.go('index.playback');
}
}
}
//Category starts
this.defultCatphoto = "assets/images/category.jpg";
self.catBannerUrl = ApiService.SHOST + '/wiki/';
console.log(self.bannerUrl);
$scope.bannerUrl = ApiService.SHOST + "/public/" + ApiService.RES + "/school/" + ApiService.gid + "/";
if (loginService.school.numberOfCourses) {
self.limits.courses = loginService.school.numberOfCourses;
}
if (loginService.school.numberOfNews) {
self.limits.news = loginService.school.numberOfNews;
}
if (loginService.school.numberOfCourseCat) {
self.limits.numberOfCourseCat = loginService.school.numberOfCourseCat;
}
var serviceFunctions = [];
function getHomeContent(callback) {
// console.log('getHomeContent');
loginService.getMyProfile().then(function(result) {
mycourses = result.courses;
// console.log('--1.2');
return callback();
},function(err){
// console.log('---1.1');
return callback();
})
}
// console.log('--1');
if(loginService.isLogged){
serviceFunctions.push(getHomeContent);
}
function getAboutUs(callback) {
ApiService.get("/schooldoc/" + ApiService.school.aboutdoc).then(function(result) {
console.log(result);
if (result.data.success) {
var aboutdoc = result.data.data || {};
self.about = aboutdoc.detail || '';
self.aboutCN = aboutdoc.chinese || '';
return callback();
} else {
return callback();
}
});
}
if(ApiService.school.aboutdoc&&ApiService.school.homepageAboutUsFlag) {
serviceFunctions.push(getAboutUs);
}
// step1
function getLatestCourses(callback) {
HomeService.getHomeLatestCourses(self.limits.courses, function(err, courses) {
self.contentready = true;
$scope.latestCourses = compareMyCourses(courses);
callback();
})
}
if (loginService.school.theme == 't2' || loginService.school.theme == 't3' || loginService.school.theme == 't4') {
serviceFunctions.push(getLatestCourses);
}
function getHomeCourses(callback) {
// console.log('getHomeCourses');
HomeService.getHomeCourses(function(err, items) {
//_courses = items;
$scope.lcourses = compareMyCourses(items);
console.log(items);
return callback();
})
}
// console.log('--2');
if ($state.current.name != "index.home.cmec" && loginService.school.theme != 't3' && loginService.school.theme != 't4' && loginService.school.courseFlag) {
// console.log('--3');
serviceFunctions.push(getHomeCourses);
}
function getCourseCat(callback) {
courseBizModel.getCategoryInfo().then(function(data) {
console.log(data);
self.catMap = data;
return callback();
});
}
if (loginService.school.homeCatCourseFlag) {
serviceFunctions.push(getCourseCat);
}
function getHomeApps(callback) {
HomeService.getHomeApp(function(err, apps) {
self.contentready = true;
$scope.apps = apps;
return callback();
})
}
if (loginService.school.appFlag) {
serviceFunctions.push(getHomeApps);
}
function getHomeMeetins(callback) {
HomeService.getPlayBack(function(err, items) {
self.playbacks = items;
console.log(self.playbacks);
})
HomeService.getHomeMeetings(function(err, vms) {
if (vms && vms.length) {
self.showlive = true;
self.vmeetings = vms;
}
return callback();
})
}
if (loginService.school.videoFlag) {
serviceFunctions.push(getHomeMeetins);
}
function getHomeNews(callback) {
HomeService.getHomeNews(function(err, value) {
if (value) {
console.log(value);
self.contentready = true;
$scope._newses = value.newses;
if ($state.current.name == "index.home.cmec") {
var text = "";
angular.forEach($scope._newses, function(value, key) {
text += " " + value.name + " " + value.created.substring(0, 10) + " " + value.description;
});
$scope.scrolltext = text;
}
$scope.scrolltext = text;
$scope.events = value.events;
$scope._topics = value.topics;
if ($scope._newses.length > 0) {
$scope.first_news = $scope._newses[0];
}
}
return callback();
})
if (loginService.school.teachersFlag) {
HomeService.getHomeTeachers(function(err, teachers) {
$scope.teachers = teachers;
})
}
}
serviceFunctions.push(getHomeNews);
function getFeatures(callback) {
ApiService.get("/schooldoc/" + ApiService.school.homepageFunctionDoc).then(function(result) {
console.log(result);
if (result.data.success) {
var value = result.data.data;
$scope.learningSlides = value.arrays;
return callback();
} else {
return callback();
}
});
}
serviceFunctions.push(getFeatures);
function getRecentClients(callback) {
var info = {
type: 'school',
action:"getusecases",
search:{home:true,"photo":{ $exists: true, $ne: null }},
limit:3,
sort:{predicate: "created", reverse: true}
};
ApiService.post("/advinfo", info).then(function(result) {
console.log(result);
if (result.data.success) {
self.recentClientsList = result.data.data.items;
return callback();
} else {
return callback();
}
});
}
serviceFunctions.push(getRecentClients);
console.log(serviceFunctions);
var waterfall=contra;
waterfall.waterfall(serviceFunctions,function(err){
console.log(err);
})
function getOthers(callback) {
if (loginService.school.productFlag) {
HomeService.getProducts(function(err, items) {
self.products = items;
})
}
if (loginService.school.projectFlag) {
HomeService.getProjects(function(err, items) {
self.projects = items;
})
}
if (loginService.school.jobFlag) {
HomeService.getHomeJobs(function(err, jobs) {
self.jobs = jobs;
})
}
if (loginService.school.companyFlag) {
HomeService.getHomeCompanys(function(err, companys) {
self.companys = companys;
})
}
HomeService.getPartner(function(err, partners) {
self.partnerItems = partners;
})
return callback();
}
serviceFunctions.push(getOthers);
function getAnnoucements(callback) {
schoolModel.getSchool3Announcements().then(function(data) {
// console.log(data);
self.schoolAnnous = data.data;
callback();
});
}
if (loginService.school.theme == 't2' || loginService.school.theme == 't3' || loginService.school.theme == 't4' || loginService.school.theme == 't7') {
serviceFunctions.push(getAnnoucements);
}
this.showLive = function(flag) {
self.showlive = flag;
}
function getCompanyList(callback){
var info = {
start: 0,
limit: 20,
action: 'getvalidcompanys',
ctype: 'company'
};
ApiService.post("/business", info).then(function(result) {
console.log(result.data.data);
if (result.data.success) {
self.companyList = result.data.data.items;
return callback();
} else {
return callback();
}
});
}
function getCompanySchoolsList(callback){
var info = {
start: 0,
limit: 20,
action: 'getvalidcompanys',
ctype: 'school'
};
ApiService.post("/business", info).then(function(result) {
console.log(result.data.data);
if (result.data.success) {
self.companySchoolsList = result.data.data.items;
return callback();
} else {
return callback();
}
});
}
if (loginService.school.companyFlag) {
serviceFunctions.push(getCompanyList);
serviceFunctions.push(getCompanySchoolsList);
}
function compareMyCourses(_courses) {
if (mycourses && mycourses.length > 0) {
angular.forEach(_courses, function(item, index) {
var id = item._id;
if (mycourses.indexOf(id) > -1) {
item.mycourseFlag = true;
}
})
}
angular.forEach(_courses, function(item, index) {
if (item.infoOnlyFlag) {
item.courseurl = "index.courses.infoonly";
} else if (self.inspectorFlag || item.mycourseFlag) {
item.courseurl = "index.courses.course";
} else {
item.courseurl = "index.courses.info";
}
})
return _courses;
}
this.sortmethod; //visitercounter, position,score,update,created,recommend,top
var searchmethod;
this.getCourseByTag = function(tag) {
self.sortmethod = tag;
searchmethod = {};
searchmethod['cTag.' + tag] = true;
console.log("---------");
getCoursebyCondition();
}
this.getRecommendCourse = function() {
self.sortmethod = 'position';
searchmethod = null;
getCoursebyCondition();
}
this.getHotestCourses = function() {
self.sortmethod = "visitercounter";
searchmethod = null;
getCoursebyCondition();
}
this.getNewCourses = function() {
self.sortmethod = "update";
var weekago = new Date();
searchmethod = null;
weekago.setDate(weekago.getDate() - 30);
getCoursebyCondition();
}
this.getTopCourses = function() {
self.sortmethod = 'top';
searchmethod = {
top: true,
}
getCoursebyCondition();
}
this.getStarCourses = function() {
self.sortmethod = 'star';
searchmethod = {
star: true,
}
getCoursebyCondition();
}
this.searchCourses = function(q) {
$rootScope.courseQ = (q&&q.name)?q.name:'';
$state.go('index.courses');
/*$state.go('index.searchcourse', {
key: JSON.stringify(q)
});*/
}
this.searchCoursesByCate = function(key){
$rootScope.courseCat = (key)?key:'';
$state.go('index.courses');
}
this.searchCompany = function(q) {
$state.go('index.searchcompany', {
key: q
});
}
this.searchProduct = function(q) {
$state.go('index.searchproduct', {
key: q
});
}
function getCoursebyCondition() {
CourseService.getCoursesWithSorting(0, self.sortmethod, searchmethod, self.limits.courses).then(function(result) {
// console.log(result.data);
_courses = result.data.data.items;
self.contentready = true;
$scope.lcourses = compareMyCourses(_courses);
});
}
this.changeapp = function(name) {
ApiService.changeToState(name);
var url = ApiService.APPURL + '/' + name.toLowerCase();
console.log(url);
window.open(url, '_blank');
}
function handleScrollPhotos(photos) {
var slides = [];
if (photos.length < 3) {
return;
}
var len = parseInt(photos.length / 2);
for (var i = 0; i < len; i++) {
var imgs;
if (i * 2 + 3 > photos.length) {
imgs = photos.slice(photos.length - 3, photos.length);
} else {
imgs = photos.slice(i * 2, i * 2 + 3);
}
slides.push(imgs);
}
$scope.scrollphotos = slides;
}
//console.info(loginService);
console.info(loginService.school.homepage);
if (loginService.school.homepage == "cmec" && $state.current.name == "index.home") {
return $state.go('index.home.cmec');
} else if (loginService.school.homepage == "fmas" && $state.current.name == "index.home") {
return $state.go('index.home.fmas');
} else if (loginService.school.homepage == "genx" && $state.current.name == "index.home") {
return $state.go('index.home.genx');
} else if (loginService.school.homepage == "opnl" && $state.current.name == "index.home") {
return $state.go('index.home.opernlearning');
} else if (loginService.subDomain == "poiz" && $state.current.name == "index.home") {
return $state.go('index.home.poiz');
} else if (loginService.school.homepage == "arg" && $state.current.name == "index.home") {
return $state.go('index.home.arg');
} else if ($state.current.name == "index.home.cmec") {
handleScrollPhotos(loginService.school.scrollphotos);
self.getNewCourses();
} else if ($state.current.name == "index.home.fmas") {
console.log("----- fmas ---");
if (ApiService.DID) {
// getCompanys();
HomeService.getCompanys(function(err, items) {
$scope.companys = items;
});
} else {
// getallDepartments();
HomeService.getAllDepartments(function(err, items) {
$scope.dgroups = items;
})
}
}
this.slides = $scope.slides = loginService.school.slides;
if (ApiService.DID && ApiService.department.slides && ApiService.department.slides.length > 0) {
var _slides = [];
angular.forEach(ApiService.department.slides, function(img, index) {
var info = {
img: img,
imgurl: self.schoolurl + img,
index: index
};
_slides.push(info);
})
$scope.slides = _slides;
} else {
angular.forEach($scope.slides, function(slide, index) {
slide.imgurl = self.schoolurl + slide.img
})
}
$scope.myInterval = 5000;
$scope.AppLogoUrl = ApiService.SHOST + "/public/" + ApiService.RES + "/schoolapp/" + loginService.school._id + "/";
$scope.urls = loginService.school.urls;
// getHomeContent();
HomeService.getHomeFeature(function(err, value) {
$scope.advContent = value.content;
$scope.advContent2 = value.content2;
// _self.about = value.detail;
// _self.aboutCN = value.chinese;
$scope.advSlides = value.arrays;
$scope.learningAdvSlides = value.arrays2;
})
this.partnerPhotoPath = ApiService.SHOST + '/advinfo/';
});