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
|
angular.module('contactsApp')
.controller('detailsItemCtrl', function($templateRequest, vCardPropertiesService, ContactService) {
var ctrl = this;
ctrl.meta = vCardPropertiesService.getMeta(ctrl.name);
ctrl.type = undefined;
ctrl.isPreferred = false;
ctrl.t = {
poBox : t('contacts', 'Post Office Box'),
postalCode : t('contacts', 'Postal Code'),
city : t('contacts', 'City'),
state : t('contacts', 'State or province'),
country : t('contacts', 'Country'),
address: t('contacts', 'Address'),
newGroup: t('contacts', '(new group)')
};
ctrl.availableOptions = ctrl.meta.options || [];
if (!_.isUndefined(ctrl.data) && !_.isUndefined(ctrl.data.meta) && !_.isUndefined(ctrl.data.meta.type)) {
// parse type of the property
var array = ctrl.data.meta.type[0].split(',');
array = array.map(function (elem) {
return elem.trim().replace(/\/+$/, '').replace(/\\+$/, '').trim().toUpperCase();
});
// the pref value is handled on its own so that we can add some favorite icon to the ui if we want
if (array.indexOf('PREF') >= 0) {
ctrl.isPreferred = true;
array.splice(array.indexOf('PREF'), 1);
}
// simply join the upper cased types together as key
ctrl.type = array.join(',');
var displayName = array.map(function (element) {
return element.charAt(0).toUpperCase() + element.slice(1).toLowerCase();
}).join(' ');
// in case the type is not yet in the default list of available options we add it
if (!ctrl.availableOptions.some(function(e) { return e.id === ctrl.type; } )) {
ctrl.availableOptions = ctrl.availableOptions.concat([{id: ctrl.type, name: displayName}]);
}
}
ctrl.availableGroups = [];
ContactService.getGroups().then(function(groups) {
ctrl.availableGroups = _.unique(groups);
});
ctrl.changeType = function (val) {
if (ctrl.isPreferred) {
val += ',PREF';
}
ctrl.data.meta = ctrl.data.meta || {};
ctrl.data.meta.type = ctrl.data.meta.type || [];
ctrl.data.meta.type[0] = val;
ctrl.model.updateContact();
};
ctrl.getTemplate = function() {
var templateUrl = OC.linkTo('contacts', 'templates/detailItems/' + ctrl.meta.template + '.html');
return $templateRequest(templateUrl);
};
ctrl.deleteField = function () {
ctrl.model.deleteField(ctrl.name, ctrl.data);
ctrl.model.updateContact();
};
});
|