summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorHendrik Leppelsack <hendrik@leppelsack.de>2016-04-20 23:22:58 +0200
committerskjnldsv <fremulon@protonmail.com>2016-05-09 10:03:01 +0200
commitfc005f2b2ac548473ad7ffcca58409d6c88f3f5c (patch)
treeefe00caaabe537ad41a481e8bd29e1b970fc629c /js
parentae2fe17e9814b7b8823ca2630ed320d1b5fa68bb (diff)
avatar upload
Diffstat (limited to 'js')
-rw-r--r--js/components/avatarUpload/avatarUpload_controller.js7
-rw-r--r--js/components/avatarUpload/avatarUpload_directive.js30
-rw-r--r--js/components/contactDetails/contactDetails_controller.js5
-rw-r--r--js/models/contact_model.js19
4 files changed, 55 insertions, 6 deletions
diff --git a/js/components/avatarUpload/avatarUpload_controller.js b/js/components/avatarUpload/avatarUpload_controller.js
new file mode 100644
index 00000000..724bc456
--- /dev/null
+++ b/js/components/avatarUpload/avatarUpload_controller.js
@@ -0,0 +1,7 @@
+angular.module('contactsApp')
+.controller('avataruploadCtrl', function(ContactService) {
+ var ctrl = this;
+
+ ctrl.import = ContactService.import.bind(ContactService);
+
+});
diff --git a/js/components/avatarUpload/avatarUpload_directive.js b/js/components/avatarUpload/avatarUpload_directive.js
new file mode 100644
index 00000000..369dc9aa
--- /dev/null
+++ b/js/components/avatarUpload/avatarUpload_directive.js
@@ -0,0 +1,30 @@
+angular.module('contactsApp')
+.directive('avatarupload', function(ContactService) {
+ return {
+ scope: {
+ contact: '=data'
+ },
+ link: function(scope, element) {
+ var importText = t('contacts', 'Import');
+ scope.importText = importText;
+
+ var input = element.find('input');
+ input.bind('change', function() {
+ var file = input.get(0).files[0];
+ var reader = new FileReader();
+
+ reader.addEventListener('load', function () {
+ scope.$apply(function() {
+ scope.contact.photo(reader.result);
+ ContactService.update(scope.contact);
+ });
+ }, false);
+
+ if (file) {
+ reader.readAsDataURL(file);
+ }
+ });
+ },
+ templateUrl: OC.linkTo('contacts', 'templates/avatarUpload.html')
+ };
+});
diff --git a/js/components/contactDetails/contactDetails_controller.js b/js/components/contactDetails/contactDetails_controller.js
index fb3df82a..9889cfcb 100644
--- a/js/components/contactDetails/contactDetails_controller.js
+++ b/js/components/contactDetails/contactDetails_controller.js
@@ -56,7 +56,6 @@ angular.module('contactsApp')
return;
}
ctrl.contact = contact;
- ctrl.photo = ctrl.contact.photo();
ctrl.show = true;
$('#app-navigation-toggle').addClass('showdetails');
@@ -89,4 +88,8 @@ angular.module('contactsApp')
ctrl.changeAddressBook = function (addressBook) {
ContactService.moveContact(ctrl.contact, addressBook);
};
+
+ ctrl.uploadAvatar = function() {
+ console.log('hi');
+ };
});
diff --git a/js/models/contact_model.js b/js/models/contact_model.js
index d55aea7e..e15f8daa 100644
--- a/js/models/contact_model.js
+++ b/js/models/contact_model.js
@@ -90,12 +90,21 @@ angular.module('contactsApp')
}
},
- photo: function() {
- var property = this.getProperty('photo');
- if(property) {
- return property.value;
+ photo: function(value) {
+ if (angular.isDefined(value)) {
+ // setter
+ // splits image data into "data:image/jpeg" and base 64 encoded image
+ var imageData = value.split(';base64,');
+ var imageType = imageData[0].slice('data:'.length);
+
+ return this.setProperty('photo', { value: imageData[1], meta: {type: [imageType]} });
} else {
- return undefined;
+ var property = this.getProperty('photo');
+ if(property) {
+ return 'data:' + property.meta.type + ';base64,' + property.value;
+ } else {
+ return undefined;
+ }
}
},