diff options
author | Hendrik Leppelsack <hendrik@leppelsack.de> | 2016-04-20 23:22:58 +0200 |
---|---|---|
committer | skjnldsv <fremulon@protonmail.com> | 2016-05-09 10:03:01 +0200 |
commit | fc005f2b2ac548473ad7ffcca58409d6c88f3f5c (patch) | |
tree | efe00caaabe537ad41a481e8bd29e1b970fc629c /js | |
parent | ae2fe17e9814b7b8823ca2630ed320d1b5fa68bb (diff) |
avatar upload
Diffstat (limited to 'js')
-rw-r--r-- | js/components/avatarUpload/avatarUpload_controller.js | 7 | ||||
-rw-r--r-- | js/components/avatarUpload/avatarUpload_directive.js | 30 | ||||
-rw-r--r-- | js/components/contactDetails/contactDetails_controller.js | 5 | ||||
-rw-r--r-- | js/models/contact_model.js | 19 |
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; + } } }, |