block.service.ts
1.71 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
import { Injectable, Inject } from "ng-forward";
import {RestangularService} from "./restangular_service";
import {ProfileService} from "./profile.service";
@Injectable()
@Inject("Restangular", "$q", "$log")
export class BlockService extends RestangularService<noosfero.Block> {
constructor(Restangular: restangular.IService, $q: ng.IQService, $log: ng.ILogService) {
super(Restangular, $q, $log);
}
getResourcePath() {
return "blocks";
}
getDataKeys() {
return {
singular: 'block',
plural: 'blocks'
};
}
getApiContent(block: noosfero.Block) {
let apiContentPromise = this.$q.defer();
if (block) {
if (block.api_content) {
apiContentPromise.resolve(block.api_content);
} else {
this.get(block.id)
.then((result: noosfero.RestResult<noosfero.Block>) => {
block = result.data;
apiContentPromise.resolve(block.api_content);
});
}
}
return apiContentPromise.promise;
}
getBlock<T extends noosfero.Block>(blockId: number): ng.IPromise<T> {
let deferred = this.$q.defer<T>();
this.get(blockId)
.then((result: noosfero.RestResult<T>) => {
deferred.resolve(result.data);
})
.catch(reason => deferred.reject(reason));
return deferred.promise;
}
update(block: noosfero.Block) {
let element = this.getElement(block.id);
let headers = {
'Content-Type': 'application/json'
};
return this.post(null, element, { block: block }, headers);
}
}