UNPKG

unserver-unify

Version:

581 lines (554 loc) 19.9 kB
'use strict'; 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/'; });