diff options
author | brantje <brantje@gmail.com> | 2017-08-13 15:23:23 +0300 |
---|---|---|
committer | brantje <brantje@gmail.com> | 2017-10-29 15:31:18 +0300 |
commit | c2c4d613d82f4cf45321da3b7ca26dd2a1d6d442 (patch) | |
tree | 92a9755415e5643cf354f96638792d5b719cbdbb /js/app/directives | |
parent | d1103e6db369e0198bc89517c2cfc6225b23b14a (diff) |
Add icons to credentials
Diffstat (limited to 'js/app/directives')
-rw-r--r-- | js/app/directives/icon.js | 55 | ||||
-rw-r--r-- | js/app/directives/iconpicker.js | 75 |
2 files changed, 130 insertions, 0 deletions
diff --git a/js/app/directives/icon.js b/js/app/directives/icon.js new file mode 100644 index 00000000..de0c00e3 --- /dev/null +++ b/js/app/directives/icon.js @@ -0,0 +1,55 @@ +/** + * Nextcloud - passman + * + * @copyright Copyright (c) 2016, Sander Brand (brantje@gmail.com) + * @copyright Copyright (c) 2016, Marcos Zuriaga Miguel (wolfi@wolfi.es) + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +(function() { + 'use strict'; + + /** + * @ngdoc directive + * @name passmanApp.directive:passwordGen + * @description + * # passwordGen + */ + angular.module('passmanApp').directive('credentialIcon', [ + '$window', function($window) { + return { + template: '<img ng-src="{{ iconUrl }}" width="16">', + restrict: 'E', + scope: { + credential: '=', + }, + link: function(scope, element) { + if (!scope.credential) { + return; + } + scope.$watch('credential', function() { + if(scope.credential.icon && scope.credential.icon.type){ + scope.iconUrl = 'data:image/'+ scope.credential.icon.type +';base64,' + scope.credential.icon.content; + } else { + var url = window.btoa(angular.copy(scope.credential.url)).replace('/','_'); + scope.iconUrl = OC.generateUrl('apps/passman/api/v2/icon/') + url + '/'+ scope.credential.credential_id; + } + }, true); + } + }; + }]); +}());
\ No newline at end of file diff --git a/js/app/directives/iconpicker.js b/js/app/directives/iconpicker.js new file mode 100644 index 00000000..57667875 --- /dev/null +++ b/js/app/directives/iconpicker.js @@ -0,0 +1,75 @@ +/** + * Nextcloud - passman + * + * @copyright Copyright (c) 2016, Sander Brand (brantje@gmail.com) + * @copyright Copyright (c) 2016, Marcos Zuriaga Miguel (wolfi@wolfi.es) + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +(function() { + 'use strict'; + + /** + * @ngdoc directive + * @name passmanApp.directive:passwordGen + * @description + * # passwordGen + */ + angular.module('passmanApp').directive('iconPicker', [ + '$window', 'IconService', '$http', function($window, IconService, $http) { + return { + templateUrl: 'views/partials/icon-picker.html', + restrict: 'A', + scope: { + credential: '=iconPicker' + }, + link: function(scope, element) { + + IconService.getIcons().then(function(icons) { + scope.icons = icons; + }); + + scope.selectIcon = function(icon) { + scope.selectedIcon = icon; + }; + + scope.useIcon = function() { + $http.get(scope.selectedIcon.url).then(function(result) { + var base64Data = window.btoa(result.data); + var mimeType = 'svg+xml'; + if(!scope.credential.icon){ + scope.credential.icon = {}; + } + scope.credential.icon.type = mimeType; + scope.credential.icon.content = base64Data; + $('#iconPicker').dialog('close'); + }); + }; + + $(element).click(function() { + $('#iconPicker').dialog({ + width: 800, + height: 380, + close: function() { + $(this).dialog('destroy'); + } + }); + }); + } + }; + }]); +}());
\ No newline at end of file |