article.service.js
1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
(function() {
'use strict';
angular
.module('dialoga')
.factory('ArticleService', ArticleService);
/** @ngInject */
function ArticleService($http, $q, api, UtilService, Slug, $log) {
$log.debug('ArticleService');
var idArticleHome = '103358';
var _savedAbstract = null;
var service = {
apiArticles: api.host + '/api/v1/articles/',
getHome: getHome,
getArticleBySlug: getArticleBySlug,
setHomeAbstract: setHomeAbstract,
getHomeAbstract: getHomeAbstract
};
return service;
function getHome () {
return getArticleById(idArticleHome);
}
function getArticleById (articleId) {
var url = service.apiArticles + articleId;
var params = {
fields: 'id,children,categories,abstract,title,image,url,setting,position',
private_token: 'null'
};
return UtilService.get(url, {params: params});
}
function setHomeAbstract (newAbstract) {
_savedAbstract = newAbstract;
}
function getHomeAbstract () {
return _savedAbstract;
}
function getArticleBySlug (slug) {
var deferred = $q.defer();
this.getHome().then(function (data) {
var mainArticle = data.article;
var programList = mainArticle.children;
var result = null;
for (var i = programList.length - 1; i >= 0; i--) {
var program = programList[i];
if(!program.slug){
program.slug = Slug.slugify(program.title);
}
if(program.slug === slug){
result = program;
break;
}
}
if(result){
deferred.resolve(result);
}else{
deferred.reject('None program with slug "' + slug + '"" was found.');
}
});
return deferred.promise;
}
}
})();