diff --git a/.gitignore b/.gitignore index fd050d0b70..62258c2884 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,8 @@ node_modules workspace.xml .idea/ dist/ -!systemjs.config.js \ No newline at end of file +!systemjs.config.js +demo-shell-ng2/app/components/router/ +ng2-components/ng2-alfresco-userinfo-old/demo/src/app/ +ng2-components/ng2-alfresco-userinfo-old/src/services/bpm-user.service.spec.ts +ng2-components/ng2-alfresco-userinfo-old/src/services/ecm-user.service.spec.ts diff --git a/demo-shell-ng2/app/app.module.ts b/demo-shell-ng2/app/app.module.ts index 156ed434f4..1726859603 100644 --- a/demo-shell-ng2/app/app.module.ts +++ b/demo-shell-ng2/app/app.module.ts @@ -30,7 +30,7 @@ import { ViewerModule } from 'ng2-alfresco-viewer'; import { ActivitiFormModule } from 'ng2-activiti-form'; import { ActivitiTaskListModule } from 'ng2-activiti-tasklist'; import { ActivitiProcessListModule } from 'ng2-activiti-processlist'; -import { UserInfoComponent } from 'ng2-alfresco-userinfo'; +import { UserInfoComponentModule } from 'ng2-alfresco-userinfo'; import { AppComponent } from './app.component'; import { routing } from './app.routes'; @@ -64,7 +64,8 @@ import { ViewerModule.forRoot(), ActivitiFormModule.forRoot(), ActivitiTaskListModule.forRoot(), - ActivitiProcessListModule.forRoot() + ActivitiProcessListModule.forRoot(), + UserInfoComponentModule.forRoot() ], declarations: [ AppComponent, @@ -79,8 +80,7 @@ import { TagComponent, AboutComponent, FilesComponent, - FormNodeViewer, - UserInfoComponent + FormNodeViewer ], providers: [], bootstrap: [ AppComponent ] diff --git a/ng2-components/ng2-alfresco-userinfo-old/.editorconfig b/ng2-components/ng2-alfresco-userinfo-old/.editorconfig new file mode 100644 index 0000000000..75a2477db7 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/.editorconfig @@ -0,0 +1,23 @@ +# http://editorconfig.org + +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[package.json] +indent_style = space +indent_size = 2 + +[karma.conf.js] +indent_style = space +indent_size = 2 + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/ng2-components/ng2-alfresco-userinfo-old/.gitignore b/ng2-components/ng2-alfresco-userinfo-old/.gitignore new file mode 100644 index 0000000000..3bea8a0c07 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/.gitignore @@ -0,0 +1,13 @@ +npm-debug.log +node_modules +jspm_packages +.idea +typings +coverage +src/**/*.js +src/**/*.js.map +src/**/*.d.ts +demo/**/*.js +demo/**/*.js.map +demo/**/*.d.ts +!systemjs.config.js diff --git a/ng2-components/ng2-alfresco-userinfo-old/.travis.yml b/ng2-components/ng2-alfresco-userinfo-old/.travis.yml new file mode 100644 index 0000000000..781e6204e8 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - v5 + - v4 +install: npm install +sudo: false +after_success: + npm run coverage diff --git a/ng2-components/ng2-alfresco-userinfo-old/LICENSE b/ng2-components/ng2-alfresco-userinfo-old/LICENSE new file mode 100644 index 0000000000..bfd4a66b0c --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/LICENSE @@ -0,0 +1,13 @@ +Copyright 2016 vito albano + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/ng2-components/ng2-alfresco-userinfo-old/README.md b/ng2-components/ng2-alfresco-userinfo-old/README.md new file mode 100644 index 0000000000..f100be7287 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/README.md @@ -0,0 +1,73 @@ +# Alfresco User Info Component for Angular 2 +This component will show the user information for ECM and BPM + + +## Prerequisites + +Before you start using this development framework, make sure you have installed all required software and done all the +necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). + +## Installation + +```bash +npm install ng2-alfresco-userinfo --save +``` +## Dependencies + +Add the following dependency to your index.html: +```html + +``` + +You must separately install the following libraries for your application: + +- [ng2-translate](https://github.com/ocombe/ng2-translate) +- [ng2-alfresco-core](https://www.npmjs.com/package/ng2-alfresco-core) + +```sh +npm install --save ng2-translate ng2-alfresco-core +``` + +#### Material Design Lite + +The style of this component is based on [material design](https://getmdl.io/), so if you want to visualize it correctly you have to add the material +design dependency to your project: + +```sh +npm install --save material-design-icons material-design-lite +``` + +Also make sure you include these dependencies in your `index.html` file: + +```html + + + + +``` + +## Example + +```html + +``` +This will show a round icon with user and on click some user information are showed. +If user is logged in with ECM and BPM the ECM image will be showed. + +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + +## History + +For detailed changelog, check [Releases](https://github.com/alfresco/ng2-alfresco-userinfo/releases). + +## Contributors + +[Contributors](https://github.com/alfresco/ng2-alfresco-userinfo/graphs/contributors) diff --git a/ng2-components/ng2-alfresco-userinfo/demo/.editorconfig b/ng2-components/ng2-alfresco-userinfo-old/demo/.editorconfig similarity index 100% rename from ng2-components/ng2-alfresco-userinfo/demo/.editorconfig rename to ng2-components/ng2-alfresco-userinfo-old/demo/.editorconfig diff --git a/ng2-components/ng2-alfresco-userinfo-old/demo/.gitignore b/ng2-components/ng2-alfresco-userinfo-old/demo/.gitignore new file mode 100644 index 0000000000..7c04460244 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/demo/.gitignore @@ -0,0 +1,5 @@ +typings/ +node_modules/ +.idea +dist/ +!systemjs.config.js diff --git a/ng2-components/ng2-alfresco-userinfo-old/demo/README.md b/ng2-components/ng2-alfresco-userinfo-old/demo/README.md new file mode 100644 index 0000000000..7b59778398 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/demo/README.md @@ -0,0 +1,19 @@ +# ng2-alfresco-userinfo - Demo + +* To install dependencies + +```sh +$ npm install +``` + +* To provide a live demo + +```sh +$ npm run start +``` + +* To clean npm_modules and typings folder + +```sh +$ npm run clean +``` diff --git a/ng2-components/ng2-alfresco-userinfo-old/demo/index.html b/ng2-components/ng2-alfresco-userinfo-old/demo/index.html new file mode 100644 index 0000000000..ab1420147f --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/demo/index.html @@ -0,0 +1,71 @@ + + + + + + + NgModule Minimal + + + + + + + + + + + + + + + + +Loading... + + + + + \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-userinfo-old/demo/package.json b/ng2-components/ng2-alfresco-userinfo-old/demo/package.json new file mode 100644 index 0000000000..3cc656550a --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/demo/package.json @@ -0,0 +1,89 @@ +{ + "name": "ng2-alfresco-userinfo-demo", + "description": "This component will show the user information for ECM and BPM - Demo", + "version": "0.1.0", + "author": "vito albano ", + "scripts": { + "clean": "rimraf dist node_modules", + "build": "npm run tslint && rimraf dist && tsc && npm run copy-dist", + "build:w": "npm run tslint && rimraf dist && npm run watch-task", + "watch-task": "concurrently \"npm run tsc:w\" \"npm run copy-dist:w\" ", + "start": "npm run build && concurrently \"npm run tsc:w\" \"npm run server\" ", + "server": "wsrv -o -l -s", + "tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json 'src/{,**/}**.ts'", + "copy-dist": "cpx \"./src/**/*.{html,css,json,png,jpg,gif,svg}\" ./dist/src", + "copy-dist:w": "cpx \"./src/**/*.{html,css,json,png,jpg,gif,svg}\" ./dist/src -w", + "tsc": "tsc", + "tsc:w": "tsc -w", + "pretest": "npm run build", + "test": "karma start karma.conf.js --reporters mocha,coverage --single-run", + "test-browser": "npm run build && concurrently \"karma start karma.conf.js --reporters kjhtml\" \"npm run watch-task\"" + }, + "main": "index.js", + "typings": "./dist/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/Alfresco/alfresco-ng2-components.git" + }, + "bugs": { + "url": "https://github.com/Alfresco/alfresco-ng2-components/issues" + }, + "license": "Apache-2.0", + "contributors": [ + { + "name": "Vito Albano", + "email": "vito.albano@alfresco.com" + } + ], + "keywords": [ + "ng2", + "angular", + "angular2", + "alfresco", + "demo" + ], + "dependencies": { + "@angular/common": "2.0.0", + "@angular/compiler": "2.0.0", + "@angular/core": "2.0.0", + + "@angular/http": "2.0.0", + "@angular/platform-browser": "2.0.0", + "@angular/platform-browser-dynamic": "2.0.0", + "@angular/router": "3.0.0", + "@angular/upgrade": "2.0.0", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.0-beta.12", + "systemjs": "0.19.27", + "zone.js": "^0.6.23", + "ng2-translate": "2.5.0", + "ng2-alfresco-core": "0.3.2", + "material-design-icons": "2.2.3", + "material-design-lite": "1.2.1", + "ng2-alfresco-userinfo": "file:../" + }, + "devDependencies": { + "@types/core-js": "^0.9.32", + "@types/jasmine": "^2.2.33", + "concurrently": "^2.2.0", + "cpx": "1.3.1", + "jasmine-ajax": "3.2.0", + "jasmine-core": "2.4.1", + "karma": "0.13.22", + "karma-chrome-launcher": "1.0.1", + "karma-coverage": "1.0.0", + "karma-jasmine": "1.0.2", + "karma-jasmine-ajax": "^0.1.13", + "karma-jasmine-html-reporter": "0.2.0", + "karma-mocha-reporter": "2.0.3", + "license-check": "1.1.5", + "remap-istanbul": "0.6.3", + "rimraf": "2.5.2", + "traceur": "0.0.91", + "tslint": "3.8.1", + "typescript": "^2.0.3", + "wsrv": "^0.1.5" + } + +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/demo/src/main.ts b/ng2-components/ng2-alfresco-userinfo-old/demo/src/main.ts new file mode 100644 index 0000000000..0e50689d4d --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/demo/src/main.ts @@ -0,0 +1,95 @@ +/* +import { NgModule, Component, OnInit } from '@angular/core'; +import { UserInfoComponent } from 'ng2-alfresco-userinfo'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule, + AlfrescoSettingsService, + AlfrescoAuthenticationService } from 'ng2-alfresco-core'; + +@Component({ + selector: 'my-app', + styles: [`:host h1 { font-size:22px }`], + template: `

TEST

` +}) + + +class UserInfoDemo implements OnInit { + + public userToLogin: string = 'admin'; + public password: string = 'admin'; + public loginErrorMessage: string; + public providers: string = 'BPM'; + private authenticated: boolean; + private token: any; + + constructor(private authService: AlfrescoAuthenticationService, + private settingsService: AlfrescoSettingsService) { + } + + ngOnInit() { + this.settingsService.setProviders(this.providers); + } + + attemptLogin() { + this.loginErrorMessage = ''; + this.login(this.userToLogin, this.password); + } + + logout() { + this.authService.logout(); + } + + login(user, password) { + this.settingsService.setProviders(this.providers); + this.authService.login(user, password).subscribe( + token => { + console.log(token); + this.token = token; + this.authenticated = true; + }, + error => { + console.log(error); + this.authenticated = false; + this.loginErrorMessage = error; + }); + } + + isLoggedIn(): boolean { + return this.authService.isLoggedIn(); + } + + toggleECM(checked) { + if (checked && this.providers === 'BPM') { + this.providers = 'ALL'; + } else if (checked) { + this.providers = 'ECM'; + } else { + this.providers = undefined; + } + } + + toggleBPM(checked) { + if (checked && this.providers === 'ECM') { + this.providers = 'ALL'; + } else if (checked) { + this.providers = 'BPM'; + } else { + this.providers = undefined; + } + } +} + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + UserInfoComponent + ], + declarations: [ UserInfoComponent ], + bootstrap: [ UserInfoComponent ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); +*/ diff --git a/ng2-components/ng2-alfresco-userinfo/demo/systemjs.config.js b/ng2-components/ng2-alfresco-userinfo-old/demo/systemjs.config.js similarity index 100% rename from ng2-components/ng2-alfresco-userinfo/demo/systemjs.config.js rename to ng2-components/ng2-alfresco-userinfo-old/demo/systemjs.config.js diff --git a/ng2-components/ng2-alfresco-userinfo/demo/tsconfig.json b/ng2-components/ng2-alfresco-userinfo-old/demo/tsconfig.json similarity index 54% rename from ng2-components/ng2-alfresco-userinfo/demo/tsconfig.json rename to ng2-components/ng2-alfresco-userinfo-old/demo/tsconfig.json index 772c3a7e75..2712940af4 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/tsconfig.json +++ b/ng2-components/ng2-alfresco-userinfo-old/demo/tsconfig.json @@ -1,4 +1,4 @@ -{ +/*{ "compilerOptions": { "target": "es5", "module": "system", @@ -16,4 +16,18 @@ "typings/main", "typings/main.d.ts" ] -} +} */ + +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "moduleResolution": "node", + "sourceMap": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "removeComments": false, + "noImplicitAny": true, + "suppressImplicitAnyIndexErrors": true + } +} \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-userinfo-old/demo/tslint.json b/ng2-components/ng2-alfresco-userinfo-old/demo/tslint.json new file mode 100644 index 0000000000..8c48e76469 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/demo/tslint.json @@ -0,0 +1,124 @@ +{ + "rules": { + "align": [ + true, + "parameters", + "arguments", + "statements" + ], + "ban": false, + "class-name": true, + "comment-format": [ + true, + "check-space", + "check-lowercase" + ], + "curly": true, + "eofline": true, + "forin": true, + "indent": [ + true, + "spaces" + ], + "interface-name": false, + "jsdoc-format": true, + "label-position": true, + "label-undefined": true, + "max-line-length": [ + true, + 140 + ], + "member-ordering": [ + true, + "public-before-private", + "static-before-instance", + "variables-before-functions" + ], + "no-any": false, + "no-arg": true, + "no-bitwise": true, + "no-conditional-assignment": true, + "no-consecutive-blank-lines": false, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-constructor-vars": false, + "no-debugger": true, + "no-duplicate-key": true, + "no-duplicate-variable": true, + "no-empty": true, + "no-eval": true, + "no-inferrable-types": false, + "no-internal-module": true, + "no-require-imports": true, + "no-shadowed-variable": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unreachable": true, + "no-unused-expression": true, + "no-unused-variable": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "no-var-requires": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "quotemark": [ + true, + "single", + "avoid-escape" + ], + "radix": true, + "semicolon": true, + "switch-default": true, + "trailing-comma": [ + true, + { + "multiline": "never", + "singleline": "never" + } + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef": false, + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "use-strict": false, + "variable-name": [ + true, + "check-format", + "allow-leading-underscore", + "ban-keywords" + ], + "whitespace": [ + true, + "check-branch", + "check-operator", + "check-separator", + "check-type", + "check-module", + "check-decl" + ] + } +} diff --git a/ng2-components/ng2-alfresco-userinfo/demo/typings.json b/ng2-components/ng2-alfresco-userinfo-old/demo/typings.json similarity index 100% rename from ng2-components/ng2-alfresco-userinfo/demo/typings.json rename to ng2-components/ng2-alfresco-userinfo-old/demo/typings.json diff --git a/ng2-components/ng2-alfresco-userinfo-old/index.ts b/ng2-components/ng2-alfresco-userinfo-old/index.ts new file mode 100644 index 0000000000..6f5555dbda --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/index.ts @@ -0,0 +1,58 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { CoreModule } from 'ng2-alfresco-core'; +import { EcmUserService } from './src/services/ecm-user.service'; +import { BpmUserService } from './src/services/bpm-user.service'; +import { UserInfoComponent } from './src/components/user-info.component'; +import { AlfrescoAuthenticationService } from 'ng2-alfresco-core'; + +export * from './src/components/user-info.component'; +export * from './src/services/bpm-user.service'; +export * from './src/services/ecm-user.service'; + +export const USER_INFO_SERVICE: any[] = [ + EcmUserService, + BpmUserService, + AlfrescoAuthenticationService +]; + +@NgModule({ + imports: [ + CoreModule + ], + declarations: [ + UserInfoComponent + ], + providers: [ + ...USER_INFO_SERVICE + ], + exports: [ + UserInfoComponent + ] +}) +export class UserInfoComponentModule { + static forRoot(): ModuleWithProviders { + return { + ngModule: UserInfoComponentModule, + providers: [ + ...USER_INFO_SERVICE + ] + }; + } +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/karma-test-shim.js b/ng2-components/ng2-alfresco-userinfo-old/karma-test-shim.js new file mode 100644 index 0000000000..fb1c3905f3 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/karma-test-shim.js @@ -0,0 +1,128 @@ +// Tun on full stack traces in errors to help debugging +Error.stackTraceLimit = Infinity; + +jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000; + +__karma__.loaded = function() {}; + +var builtPath = '/base/dist/'; + +function isJsFile(path) { + return path.slice(-3) == '.js'; +} + +function isSpecFile(path) { + return /\.spec\.(.*\.)?js$/.test(path); +} + +function isBuiltFile(path) { + return isJsFile(path) && (path.substr(0, builtPath.length) == builtPath); +} + +var allSpecFiles = Object.keys(window.__karma__.files) + .filter(isSpecFile) + .filter(isBuiltFile); + +var paths = { + // paths serve as alias + 'npm:': 'base/node_modules/' +}; + +var map = { + 'app': 'base/dist', + // angular bundles + '@angular/core': 'npm:@angular/core/bundles/core.umd.js', + '@angular/common': 'npm:@angular/common/bundles/common.umd.js', + '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', + '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', + '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', + '@angular/http': 'npm:@angular/http/bundles/http.umd.js', + '@angular/router': 'npm:@angular/router/bundles/router.umd.js', + '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', + // testing + '@angular/core/testing': 'npm:@angular/core/bundles/core-testing.umd.js', + '@angular/common/testing': 'npm:@angular/common/bundles/common-testing.umd.js', + '@angular/compiler/testing': 'npm:@angular/compiler/bundles/compiler-testing.umd.js', + '@angular/platform-browser/testing': 'npm:@angular/platform-browser/bundles/platform-browser-testing.umd.js', + '@angular/platform-browser-dynamic/testing': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js', + '@angular/http/testing': 'npm:@angular/http/bundles/http-testing.umd.js', + '@angular/router/testing': 'npm:@angular/router/bundles/router-testing.umd.js', + '@angular/forms/testing': 'npm:@angular/forms/bundles/forms-testing.umd.js', + + // other libraries + 'rxjs': 'npm:rxjs', + 'ng2-translate': 'npm:ng2-translate', + + 'alfresco-js-api': 'npm:alfresco-js-api/dist', + 'ng2-activiti-form': 'npm:ng2-activiti-form/dist', + 'ng2-activiti-processlist': 'npm:ng2-activiti-processlist/dist', + 'ng2-activiti-tasklist': 'npm:ng2-activiti-tasklist/dist', + 'ng2-alfresco-core': 'npm:ng2-alfresco-core/dist', + 'ng2-alfresco-datatable': 'npm:ng2-alfresco-datatable/dist', + 'ng2-alfresco-documentlist': 'npm:ng2-alfresco-documentlist/dist', + 'ng2-alfresco-login': 'npm:ng2-alfresco-login/dist', + 'ng2-alfresco-search': 'npm:ng2-alfresco-search/dist', + 'ng2-alfresco-tag': 'npm:ng2-alfresco-tag/dist', + 'ng2-alfresco-upload': 'npm:ng2-alfresco-upload/dist', + 'ng2-alfresco-viewer': 'npm:ng2-alfresco-viewer/dist', + 'ng2-alfresco-webscript': 'npm:ng2-alfresco-webscript/dist', + 'ng2-alfresco-userinfo': 'npm:ng2-alfresco-userinfo/dist' +}; + +var packages = { + 'app': { main: 'index.js', defaultExtension: 'js', format: 'register' }, + 'rxjs': { defaultExtension: 'js' }, + 'ng2-translate': { defaultExtension: 'js' }, + + 'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'}, + 'ng2-activiti-form': { main: './index.js', defaultExtension: 'js'}, + 'ng2-activiti-processlist': { main: './index.js', defaultExtension: 'js'}, + 'ng2-activiti-tasklist': { main: './index.js', defaultExtension: 'js'}, + 'ng2-alfresco-core': { main: './index.js', defaultExtension: 'js'}, + 'ng2-alfresco-datatable': { main: './index.js', defaultExtension: 'js'}, + 'ng2-alfresco-documentlist': { main: './index.js', defaultExtension: 'js'}, + 'ng2-alfresco-login': { main: './index.js', defaultExtension: 'js'}, + 'ng2-alfresco-search': { main: './index.js', defaultExtension: 'js'}, + 'ng2-alfresco-tag': { main: './index.js', defaultExtension: 'js'}, + 'ng2-alfresco-upload': { main: './index.js', defaultExtension: 'js'}, + 'ng2-alfresco-viewer': { main: './index.js', defaultExtension: 'js'}, + 'ng2-alfresco-webscript': { main: './index.js', defaultExtension: 'js'}, + 'ng2-alfresco-userinfo': { main: './index.js', defaultExtension: 'js'} +}; + +var config = { + paths: paths, + map: map, + packages: packages +}; + +System.config(config); + +System.import('app') + .then(initTestBed) + .then(initTesting); + +function initTestBed(){ + return Promise.all([ + System.import('@angular/core/testing'), + System.import('@angular/platform-browser-dynamic/testing') + ]) + .then(function (providers) { + var coreTesting = providers[0]; + var browserTesting = providers[1]; + + coreTesting.TestBed.initTestEnvironment( + browserTesting.BrowserDynamicTestingModule, + browserTesting.platformBrowserDynamicTesting()); + }) +} + +// Import all spec files and start karma +function initTesting () { + return Promise.all( + allSpecFiles.map(function (moduleName) { + return System.import(moduleName); + }) + ) + .then(__karma__.start, __karma__.error); +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/karma.conf.js b/ng2-components/ng2-alfresco-userinfo-old/karma.conf.js new file mode 100644 index 0000000000..c0374b25c3 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/karma.conf.js @@ -0,0 +1,131 @@ +'use strict'; + +module.exports = function (config) { + var configuration = { + basePath: '.', + + frameworks: ['jasmine-ajax', 'jasmine'], + + files: [ + // System.js for module loading + 'node_modules/systemjs/dist/system.src.js', + + // Polyfills + 'node_modules/core-js/client/shim.js', + 'node_modules/reflect-metadata/Reflect.js', + + // zone.js + 'node_modules/zone.js/dist/zone.js', + 'node_modules/zone.js/dist/long-stack-trace-zone.js', + 'node_modules/zone.js/dist/proxy.js', + 'node_modules/zone.js/dist/sync-test.js', + 'node_modules/zone.js/dist/jasmine-patch.js', + 'node_modules/zone.js/dist/async-test.js', + 'node_modules/zone.js/dist/fake-async-test.js', + + // RxJs + { pattern: 'node_modules/rxjs/**/*.js', included: false, watched: false }, + { pattern: 'node_modules/rxjs/**/*.js.map', included: false, watched: false }, + + // Paths loaded via module imports: + // Angular itself + {pattern: 'node_modules/@angular/**/*.js', included: false, watched: false}, + {pattern: 'node_modules/@angular/**/*.js.map', included: false, watched: false}, + + 'node_modules/alfresco-js-api/dist/alfresco-js-api.js', + {pattern: 'node_modules/ng2-translate/**/*.js', included: false, watched: false}, + {pattern: 'node_modules/ng2-translate/**/*.js.map', included: false, watched: false}, + + 'karma-test-shim.js', + + // paths loaded via module imports + {pattern: 'dist/**/*.js', included: false, watched: true}, + {pattern: 'dist/**/*.html', included: true, served: true, watched: true}, + {pattern: 'dist/**/*.css', included: true, served: true, watched: true}, + + // ng2-components + { pattern: 'node_modules/ng2-activiti-form/dist/**/*.js', included: false, served: true, watched: false }, + { pattern: 'node_modules/ng2-activiti-processlist/dist/**/*.js', included: false, served: true, watched: false }, + { pattern: 'node_modules/ng2-activiti-tasklist/dist/**/*.js', included: false, served: true, watched: false }, + { pattern: 'node_modules/ng2-alfresco-core/dist/**/*.js', included: false, served: true, watched: false }, + { pattern: 'node_modules/ng2-alfresco-datatable/dist/**/*.js', included: false, served: true, watched: false }, + { pattern: 'node_modules/ng2-alfresco-documentlist/dist/**/*.js', included: false, served: true, watched: false }, + { pattern: 'node_modules/ng2-alfresco-login/dist/**/*.js', included: false, served: true, watched: false }, + { pattern: 'node_modules/ng2-alfresco-search/dist/**/*.js', included: false, served: true, watched: false }, + { pattern: 'node_modules/ng2-alfresco-tag/dist/**/*.js', included: false, served: true, watched: false }, + { pattern: 'node_modules/ng2-alfresco-upload/dist/**/*.js', included: false, served: true, watched: false }, + { pattern: 'node_modules/ng2-alfresco-viewer/dist/**/*.js', included: false, served: true, watched: false }, + { pattern: 'node_modules/ng2-alfresco-webscript/dist/**/*.js', included: false, served: true, watched: false }, + { pattern: 'node_modules/ng2-alfresco-userinfo/dist/**/*.js', included: false, served: true, watched: false }, + + // paths to support debugging with source maps in dev tools + {pattern: 'src/**/*.ts', included: false, watched: false}, + {pattern: 'dist/**/*.js.map', included: false, watched: false} + ], + + exclude: [ + 'node_modules/**/*spec.js' + ], + + // proxied base paths + proxies: { + // required for component assets fetched by Angular's compiler + '/src/': '/base/src/' + }, + + port: 9876, + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + colors: true, + + autoWatch: true, + + browsers: ['Chrome'], + + customLaunchers: { + Chrome_travis_ci: { + base: 'Chrome', + flags: ['--no-sandbox'] + } + }, + + // Karma plugins loaded + plugins: [ + 'karma-jasmine', + 'karma-coverage', + 'karma-jasmine-ajax', + 'karma-chrome-launcher', + 'karma-mocha-reporter', + 'karma-jasmine-html-reporter' + ], + + // Coverage reporter generates the coverage + reporters: ['mocha', 'coverage', 'kjhtml'], + + // Source files that you wanna generate coverage for. + // Do not include tests or libraries (these files will be instrumented by Istanbul) + preprocessors: { + // 'dist/**/!(*spec).js': ['coverage'] + }, + + coverageReporter: { + dir: 'coverage/', + subdir: 'report', + reporters: [ + {type: 'text'}, + {type: 'json', file: 'coverage-final.json'}, + {type: 'html'}, + {type: 'lcov'} + ] + } + }; + + if (process.env.TRAVIS) { + configuration.browsers = ['Chrome_travis_ci']; + } + + config.set(configuration) +}; diff --git a/ng2-components/ng2-alfresco-userinfo-old/package.json b/ng2-components/ng2-alfresco-userinfo-old/package.json new file mode 100644 index 0000000000..e7981fb168 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/package.json @@ -0,0 +1,94 @@ +{ + "name": "ng2-alfresco-userinfo", + "description": "This component will show the user information for ECM and BPM", + "version": "0.1.0", + "author": "vito albano ", + "scripts": { + "clean": "rimraf dist node_modules", + "build": "npm run tslint && rimraf dist && tsc && npm run copy-dist", + "build:w": "npm run tslint && rimraf dist && npm run watch-task", + "watch-task": "concurrently \"npm run tsc:w\" \"npm run copy-dist:w\" \"license-check\"", + "tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json 'src/{,**/}**.ts'", + "copy-dist": "cpx \"./src/**/*.{html,css,json,png,jpg,gif,svg}\" ./dist/src", + "copy-dist:w": "cpx \"./src/**/*.{html,css,json,png,jpg,gif,svg}\" ./dist/src -w", + "tsc": "tsc", + "tsc:w": "tsc -w", + "pretest": "npm run build", + "test": "karma start karma.conf.js --reporters mocha,coverage --single-run", + "test-browser": "npm run build && concurrently \"karma start karma.conf.js --reporters kjhtml\" \"npm run watch-task\"", + "posttest": "remap-istanbul -i coverage/report/coverage-final.json -o coverage/report -t html && remap-istanbul -i coverage/report/coverage-final.json -o coverage/report/coverage-final.json", + "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", + "travis": "npm link ng2-alfresco-core" + }, + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/Alfresco/alfresco-ng2-components.git" + }, + "bugs": { + "url": "https://github.com/Alfresco/alfresco-ng2-components/issues" + }, + "license": "Apache-2.0", + "contributors": [ + { + "name": "Vito Albano", + "email": "vito.albano@alfresco.com" + } + ], + "keywords": [ + "ng2", + "angular", + "angular2", + "alfresco" + ], + "dependencies": { + "@angular/common": "2.0.0", + "@angular/compiler": "2.0.0", + "@angular/core": "2.0.0", + "@angular/forms": "2.0.0", + "@angular/http": "2.0.0", + "@angular/platform-browser": "2.0.0", + "@angular/platform-browser-dynamic": "2.0.0", + "@angular/router": "3.0.0", + "@angular/upgrade": "2.0.0", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.0-beta.12", + "systemjs": "0.19.27", + "zone.js": "^0.6.23", + "ng2-translate": "2.5.0", + "ng2-alfresco-core": "0.3.2" + }, + "devDependencies": { + "@types/core-js": "^0.9.32", + "@types/jasmine": "^2.2.33", + "concurrently": "^2.2.0", + "cpx": "1.3.1", + "jasmine-ajax": "3.2.0", + "jasmine-core": "2.4.1", + "karma": "0.13.22", + "karma-chrome-launcher": "1.0.1", + "karma-coverage": "1.0.0", + "karma-jasmine": "1.0.2", + "karma-jasmine-ajax": "^0.1.13", + "karma-jasmine-html-reporter": "0.2.0", + "karma-mocha-reporter": "2.0.3", + "license-check": "1.1.5", + "remap-istanbul": "0.6.3", + "rimraf": "2.5.2", + "traceur": "0.0.91", + "tslint": "3.8.1", + "typescript": "^2.0.2", + "wsrv": "^0.1.5" + }, + "license-check-config": { + "src": [ + "./dist/**/*.js" + ], + "path": "assets/license_header.txt", + "blocking": true, + "logInfo": false, + "logError": true + } +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/src/components/user-info.component.css b/ng2-components/ng2-alfresco-userinfo-old/src/components/user-info.component.css new file mode 100644 index 0000000000..93254d00fa --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/src/components/user-info.component.css @@ -0,0 +1,53 @@ +.profile-image { + text-align: center; + border-radius: 90%; + width: 40px; + margin-right: 0%; + cursor: pointer; + border: 1px solid #999999; + vertical-align: middle; +} + +.button-profile { + display: inline-block; + border: 0px; + vertical-align: middle; +} + +.detail-user-profile-list-mdl{ + margin-right: 10px; +} + +.user-profile-list-mdl{ + max-height: 450px; + min-width: 450px; + overflow: auto; +} + +.header-profile{ + color: rgb(255,152,0); + margin-left: 10px; +} + +hr.title-start { + border: 0; + height: 1px; + background: #333; + background-image: linear-gradient(to right, #ccc, #333, #ccc); +} + +span.role-label-user{ + font-weight: 400; + line-height: 1; + letter-spacing: 0; + color: rgba(0,0,0,.87); +} + +.custom-role-style{ + font-size: 14px; + color: #9e9e9e; +} + +.truncate-long-names{ + text-overflow: ellipsis; +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/src/components/user-info.component.html b/ng2-components/ng2-alfresco-userinfo-old/src/components/user-info.component.html new file mode 100644 index 0000000000..8c01dc7120 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/src/components/user-info.component.html @@ -0,0 +1,63 @@ +
+ {{ecmUser.firstName || ecmUser.lastName}} + + {{ formatValue(bpmUser.firstName) || + formatValue(bpmUser.lastName) || + formatValue(bpmUser.fullName) }} + +
+ +
+ +
+ + diff --git a/ng2-components/ng2-alfresco-userinfo-old/src/components/user-info.component.spec.ts b/ng2-components/ng2-alfresco-userinfo-old/src/components/user-info.component.spec.ts new file mode 100644 index 0000000000..a91e2f2ac8 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/src/components/user-info.component.spec.ts @@ -0,0 +1,25 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// import { UserInfoComponent } from '../src/userinfo.component'; + +describe('Basic Example test ng2-alfresco-userinfo', () => { + + it('Test hello world', () => { + expect(true).toBe(true); + }); + +}); diff --git a/ng2-components/ng2-alfresco-userinfo-old/src/components/user-info.component.ts b/ng2-components/ng2-alfresco-userinfo-old/src/components/user-info.component.ts new file mode 100644 index 0000000000..5154ab5dcf --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/src/components/user-info.component.ts @@ -0,0 +1,93 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Component, OnInit } from '@angular/core'; +import { EcmUserModel } from './../models/ecm-user.model'; +import { BpmUserModel } from './../models/bpm-user.model'; +import { EcmUserService } from './../services/ecm-user.service'; +import { BpmUserService } from './../services/bpm-user.service'; +import { AlfrescoAuthenticationService } from 'ng2-alfresco-core'; + +declare let __moduleName: string; + +@Component({ + selector: 'ng2-alfresco-userinfo', + moduleId: __moduleName, + styleUrls: ['./userinfo.component.css'], + template: `

HELLO

` +}) + +export class UserInfoComponent implements OnInit { + + private ecmUser: EcmUserModel; + private bpmUser: BpmUserModel; + private baseComponentPath = __moduleName.replace('userinfo.component.js', ''); + private anonymouseImageUrl: string = this.baseComponentPath + 'img/anonymous.gif'; + public bpmUserImage: any; + public ecmUserImage: any; + + constructor(private ecmUserService: EcmUserService, + private bpmUserService: BpmUserService, + public authService: AlfrescoAuthenticationService) { + } + + ngOnInit() { + if (this.authService.getAlfrescoApi().ecmAuth.isLoggedIn()) { + this.ecmUserService.getUserInfo('-me-') + .subscribe( + (res) => { + this.ecmUser = res; + this.getEcmUserProfileImage(); + } + ); + } + if (this.authService.getAlfrescoApi().bpmAuth.isLoggedIn()) { + this.bpmUserService.getCurrentUserInfo() + .subscribe( + (res) => { + this.bpmUser = res; + this.getBpmUserProfileImage(); + } + ); + } + } + + private getBpmUserProfileImage() { + this.bpmUserImage = this.bpmUserService.getCurrentUserProfileImage(); + } + + private getEcmUserProfileImage() { + this.ecmUserImage = this.ecmUserService.getCurrentUserProfileImageUrl(this.ecmUser.avatarId); + } + + public getUserAvatar() { + return this.ecmUserImage || this.bpmUserImage || this.anonymouseImageUrl; + } + + public getBpmUserDetailAvatarUrl() { + return this.bpmUserImage || this.anonymouseImageUrl; + } + + public getEcmUserDetailAvatarUrl() { + return this.ecmUserImage || this.anonymouseImageUrl; + } + + public formatValue(value: string) { + return value === 'null' ? null : value; + } + +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/src/i18n/en.json b/ng2-components/ng2-alfresco-userinfo-old/src/i18n/en.json new file mode 100644 index 0000000000..9400e18911 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/src/i18n/en.json @@ -0,0 +1,24 @@ +{ + "FILE_UPLOAD": { + "BUTTON": { + "UPLOAD_FILE": "Upload file", + "UPLOAD_FOLDER": "Upload folder", + "CANCEL": "CANCEL" + }, + "MESSAGES": { + "COMPLETED": "uploads complete", + "PROGRESS": "Upload in progress...", + "FOLDER_ALREADY_EXIST": "The folder {0} already exist", + "FOLDER_NOT_SUPPORTED": "Folder upload isn't supported by your browser" + }, + "FILE_INFO": { + "NAME": "File name", + "PROGRESS": "File progress", + "SIZE": "File size", + "ACTION": "Actions" + }, + "ACTION": { + "UNDO": "Undo" + } + } +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/src/i18n/it.json b/ng2-components/ng2-alfresco-userinfo-old/src/i18n/it.json new file mode 100644 index 0000000000..0208da3079 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/src/i18n/it.json @@ -0,0 +1,24 @@ +{ + "FILE_UPLOAD": { + "BUTTON": { + "UPLOAD_FILE": "Carica un file", + "UPLOAD_FOLDER": "Carica una cartella", + "CANCEL": "CANCELLA" + }, + "MESSAGES": { + "COMPLETED": "caricamenti completati", + "PROGRESS": "caricamento in corso...", + "FOLDER_ALREADY_EXIST": "Cartella {0} già presente", + "FOLDER_NOT_SUPPORTED": "L' upload di cartelle non é supportato dal tuo browser" + }, + "FILE_INFO": { + "NAME": "Nome file", + "PROGRESS": "Percentuale caricamento", + "SIZE": "Dimensione file", + "ACTION": "Azioni" + }, + "ACTION": { + "UNDO": "Annulla" + } + } +} \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-userinfo-old/src/img/anonymous.gif b/ng2-components/ng2-alfresco-userinfo-old/src/img/anonymous.gif new file mode 100644 index 0000000000..e1b58fa57d Binary files /dev/null and b/ng2-components/ng2-alfresco-userinfo-old/src/img/anonymous.gif differ diff --git a/ng2-components/ng2-alfresco-userinfo-old/src/models/bpm-user.model.ts b/ng2-components/ng2-alfresco-userinfo-old/src/models/bpm-user.model.ts new file mode 100644 index 0000000000..3ee3fd7222 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/src/models/bpm-user.model.ts @@ -0,0 +1,39 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class BpmUserModel { + apps: any; + capabilities: string; + company: string; + created: string; + email: string; + externalId: string; + firstName: string; + lastName: string; + fullname: string; + groups: any; + id: string; + lastUpdate: string; + latestSyncTimeStamp: string; + password: string; + pictureId: string; + status: string; + tenantId: string; + tenantName: string; + tenantPictureId: string; + type: string; +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/src/models/ecm-company.model.ts b/ng2-components/ng2-alfresco-userinfo-old/src/models/ecm-company.model.ts new file mode 100644 index 0000000000..458b6b8ed5 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/src/models/ecm-company.model.ts @@ -0,0 +1,27 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class EcmCompanyModel { + organization: string; + address1: string; + address2: string; + address3: string; + postcode: string; + telephone: string; + fax: string; + email: string; +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/src/models/ecm-user.model.ts b/ng2-components/ng2-alfresco-userinfo-old/src/models/ecm-user.model.ts new file mode 100644 index 0000000000..08f24fbcdb --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/src/models/ecm-user.model.ts @@ -0,0 +1,39 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { EcmCompanyModel } from './ecm-company.model'; + +export class EcmUserModel { + id: string; + firstName: string; + lastName: string; + description: string; + avatarId: string; + email: string; + skypeId: string; + googleId: string; + instantMessageId: string; + jobTitle: string; + location: string; + company: EcmCompanyModel; + mobile: string; + telephone: string; + statusUpdatedAt: string; + userStatus: string; + enabled: boolean; + emailNotificationsEnabled: boolean; +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/src/services/bpm-user.service.ts b/ng2-components/ng2-alfresco-userinfo-old/src/services/bpm-user.service.ts new file mode 100644 index 0000000000..089320a264 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/src/services/bpm-user.service.ts @@ -0,0 +1,75 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; +import { Injectable } from '@angular/core'; +import { Response } from '@angular/http'; +import { Observable } from 'rxjs/Rx'; +import { BpmUserModel } from '../models/bpm-user.model'; +/** + * + * BPMUserService retrieve all the information of an Ecm user. + * + * @returns {BPMUserService} . + */ +@Injectable() +export class BpmUserService { + + constructor(private authService: AlfrescoAuthenticationService, + private settingService: AlfrescoSettingsService) { + } + + /** + * get User Information via ECM + * @param userName - the user name + */ + getCurrentUserInfo(): Observable { + if ( this.authService.getAlfrescoApi().bpmAuth.isLoggedIn() ) { + return Observable.fromPromise(this.callApiGetProfile()) + .map( + (data) => data + ) + .catch(this.handleError); + } + } + + /** + * get User Information via ECM + * @param userName - the user name + */ + getCurrentUserProfileImage(): string { + if ( this.authService.getAlfrescoApi().bpmAuth.isLoggedIn() ) { + return this.settingService.getBPMApiBaseUrl() + '/api/enterprise/profile-picture'; + } + } + + private callApiGetProfile() { + return this.authService.getAlfrescoApi().activiti.profileApi.getProfile(); + } + /** + * Throw the error + * @param error + * @returns {ErrorObservable} + */ + private handleError(error: Response) { + // in a real world app, we may send the error to some remote logging infrastructure + // instead of just logging it to the console + console.error(error); + return Observable.throw(error || 'Server error'); + } + +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/src/services/ecm-user.service.ts b/ng2-components/ng2-alfresco-userinfo-old/src/services/ecm-user.service.ts new file mode 100644 index 0000000000..6875ee7d48 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/src/services/ecm-user.service.ts @@ -0,0 +1,72 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AlfrescoAuthenticationService, AlfrescoContentService } from 'ng2-alfresco-core'; +import { Injectable } from '@angular/core'; +import { Response } from '@angular/http'; +import { Observable } from 'rxjs/Rx'; +import { EcmUserModel } from '../models/ecm-user.model'; +/** + * + * ECMUserService retrieve all the information of an Ecm user. + * + * @returns {ECMUserService} . + */ +@Injectable() +export class EcmUserService { + + constructor(private authService: AlfrescoAuthenticationService, + private contentService: AlfrescoContentService) {} + + /** + * get User Information via ECM + * @param userName - the user name + */ + getUserInfo(userName: string): Observable { + if ( this.authService.getAlfrescoApi().ecmAuth.isLoggedIn() ) { + return Observable.fromPromise(this.callApiGetPersonInfo(userName)) + .map( + (data) => data['entry'] + ) + .catch(this.handleError); + } + } + + private callApiGetPersonInfo(userName: string, opts?: any) { + return this.authService.getAlfrescoApi().core.peopleApi.getPerson(userName, opts); + } + + getCurrentUserProfileImageUrl(avatarId: string) { + if ( avatarId ) { + let nodeObj = {entry: {id: avatarId}}; + return this.contentService.getContentUrl(nodeObj); + } + } + + /** + * Throw the error + * @param error + * @returns {ErrorObservable} + */ + private handleError(error: Response) { + // in a real world app, we may send the error to some remote logging infrastructure + // instead of just logging it to the console + console.error(error); + return Observable.throw(error || 'Server error'); + } + +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/tsconfig.json b/ng2-components/ng2-alfresco-userinfo-old/tsconfig.json new file mode 100644 index 0000000000..b1effea355 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "system", + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "sourceMap": true, + "removeComments": true, + "declaration": true, + "noLib": false, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "noImplicitAny": false, + "noImplicitReturns": false, + "noImplicitUseStrict": false, + "noFallthroughCasesInSwitch": true, + "outDir": "dist", + "types": ["core-js", "jasmine"] + }, + "exclude": [ + "demo", + "node_modules", + "dist" + ] +} diff --git a/ng2-components/ng2-alfresco-userinfo-old/tslint.json b/ng2-components/ng2-alfresco-userinfo-old/tslint.json new file mode 100644 index 0000000000..33220e5038 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo-old/tslint.json @@ -0,0 +1,121 @@ +{ + "rules": { + "align": [ + true, + "parameters", + "statements" + ], + "ban": false, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "eofline": true, + "forin": true, + "indent": [ + true, + "spaces" + ], + "interface-name": false, + "jsdoc-format": true, + "label-position": true, + "label-undefined": true, + "max-line-length": [ + true, + 140 + ], + "member-ordering": [ + true, + "static-before-instance", + "variables-before-functions" + ], + "no-any": false, + "no-arg": true, + "no-bitwise": false, + "no-conditional-assignment": true, + "no-consecutive-blank-lines": false, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-constructor-vars": false, + "no-debugger": true, + "no-duplicate-key": true, + "no-duplicate-variable": true, + "no-empty": false, + "no-eval": true, + "no-inferrable-types": false, + "no-internal-module": true, + "no-require-imports": true, + "no-shadowed-variable": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unreachable": true, + "no-unused-expression": true, + "no-unused-variable": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "no-var-requires": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "quotemark": [ + true, + "single", + "avoid-escape" + ], + "radix": true, + "semicolon": true, + "switch-default": true, + "trailing-comma": [ + true, + { + "multiline": "never", + "singleline": "never" + } + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef": false, + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "use-strict": false, + "variable-name": [ + true, + "check-format", + "allow-leading-underscore", + "ban-keywords" + ], + "whitespace": [ + true, + "check-branch", + "check-operator", + "check-separator", + "check-type", + "check-module", + "check-decl" + ] + } +} diff --git a/ng2-components/ng2-alfresco-userinfo/typings.json b/ng2-components/ng2-alfresco-userinfo-old/typings.json similarity index 100% rename from ng2-components/ng2-alfresco-userinfo/typings.json rename to ng2-components/ng2-alfresco-userinfo-old/typings.json diff --git a/ng2-components/ng2-alfresco-userinfo/.travis.yml b/ng2-components/ng2-alfresco-userinfo/.travis.yml index 781e6204e8..ab817d7644 100644 --- a/ng2-components/ng2-alfresco-userinfo/.travis.yml +++ b/ng2-components/ng2-alfresco-userinfo/.travis.yml @@ -2,7 +2,11 @@ language: node_js node_js: - v5 - v4 + - '0.12' + - '0.10' install: npm install sudo: false after_success: npm run coverage +# Send coverage data to Coveralls +after_script: "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js" diff --git a/ng2-components/ng2-alfresco-userinfo/LICENSE b/ng2-components/ng2-alfresco-userinfo/LICENSE index bfd4a66b0c..de3d8c60b8 100644 --- a/ng2-components/ng2-alfresco-userinfo/LICENSE +++ b/ng2-components/ng2-alfresco-userinfo/LICENSE @@ -1,4 +1,4 @@ -Copyright 2016 vito albano +Copyright 2016 Alfresco Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/ng2-components/ng2-alfresco-userinfo/README.md b/ng2-components/ng2-alfresco-userinfo/README.md index f100be7287..a7519e00ea 100644 --- a/ng2-components/ng2-alfresco-userinfo/README.md +++ b/ng2-components/ng2-alfresco-userinfo/README.md @@ -1,43 +1,75 @@ -# Alfresco User Info Component for Angular 2 -This component will show the user information for ECM and BPM +# Alfresco Tag Component for Angular 2 +

+ + travis
+    Status + + + travis
+    Status + + + Coverage Status + + + npm downloads + + + license + + + alfresco component + + + angular 2 + + + typescript + + + node version + +

+### Node +To correctly use this component check that on your machine is running Node version 5.0.0 or higher. -## Prerequisites +## Install -Before you start using this development framework, make sure you have installed all required software and done all the -necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). - -## Installation - -```bash -npm install ng2-alfresco-userinfo --save +```sh +npm install --save ng2-alfresco-tag ``` -## Dependencies + +Components included: + +* Alfresco Tag Component + +#### Dependencies Add the following dependency to your index.html: + ```html ``` - -You must separately install the following libraries for your application: - -- [ng2-translate](https://github.com/ocombe/ng2-translate) -- [ng2-alfresco-core](https://www.npmjs.com/package/ng2-alfresco-core) -```sh -npm install --save ng2-translate ng2-alfresco-core -``` - -#### Material Design Lite +The following component needs to be added to your systemjs.config: -The style of this component is based on [material design](https://getmdl.io/), so if you want to visualize it correctly you have to add the material +- ng2-translate +- ng2-alfresco-core + +Please refer to the following example to have an idea of how your systemjs.config should look like : + +https://github.com/Alfresco/alfresco-ng2-components/blob/master/ng2-components/ng2-alfresco-tag/demo/systemjs.config.js + +#### Style +The style of this component is based on material design, so if you want to visualize it correctly you have to add the material design dependency to your project: ```sh npm install --save material-design-icons material-design-lite ``` -Also make sure you include these dependencies in your `index.html` file: +Also make sure you include these dependencies in your .html page: ```html @@ -45,29 +77,293 @@ Also make sure you include these dependencies in your `index.html` file: ``` - -## Example + +#### Basic usage + +In this component are present three different tags : + +* alfresco-tag-node-actions-list +* alfresco-tag-list +* alfresco-tag-node-list + +## alfresco-tag-node-actions-list ```html - + +``` + +```ts +import { Component, OnInit, Input } from '@angular/core'; +import { bootstrap } from '@angular/platform-browser-dynamic'; +import { HTTP_PROVIDERS } from '@angular/http'; +import { + ALFRESCO_CORE_PROVIDERS, + AlfrescoSettingsService, + AlfrescoAuthenticationService +} from 'ng2-alfresco-core'; +import { TAGCOMPONENT, TAGSERVICES } from 'ng2-alfresco-tag'; + +@Component({ + selector: 'alfresco-tag-demo', + template: ` +
+ +
+ `, + directives: [TAGCOMPONENT], + providers: [TAGSERVICES] +}) +class TagDemo implements OnInit { + + @Input() + nodeId: string = '74cd8a96-8a21-47e5-9b3b-a1b3e296787d'; + + authenticated: boolean; + + ecmHost: string = 'http://127.0.0.1:8080'; + + ticket: string; + + constructor(private authService: AlfrescoAuthenticationService, + private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = this.ecmHost; + settingsService.setProviders('ECM'); + } + + ngOnInit() { + this.login(); + } + + login() { + this.authService.login('admin', 'admin').subscribe( + ticket => { + this.authenticated = true; + }, + error => { + this.authenticated = false; + }); + } + + public updateHost(): void { + this.settingsService.ecmHost = this.ecmHost; + this.login(); + } + + logData(data) { + console.log(data); + } +} +bootstrap(TagDemo, [ + HTTP_PROVIDERS, + ALFRESCO_CORE_PROVIDERS +]); +``` + +### Options + +Attribute | Options | Default | Description | Mandatory +--- | --- | --- | --- | --- +`nodeId` | *string* | | The identifier of a node.| + +![Custom columns](docs/assets/tag3.png) + +## alfresco-tag-node-list + +```html + +``` + +```ts +import { Component, OnInit, Input } from '@angular/core'; +import { bootstrap } from '@angular/platform-browser-dynamic'; +import { HTTP_PROVIDERS } from '@angular/http'; +import { + ALFRESCO_CORE_PROVIDERS, + AlfrescoSettingsService, + AlfrescoAuthenticationService +} from 'ng2-alfresco-core'; + +import { TAGCOMPONENT, TAGSERVICES } from 'ng2-alfresco-tag'; + +@Component({ + selector: 'alfresco-tag-demo', + template: ` +
+ +
+ `, + directives: [TAGCOMPONENT], + providers: [TAGSERVICES] +}) +class TagDemo implements OnInit { + + @Input() + nodeId: string = '74cd8a96-8a21-47e5-9b3b-a1b3e296787d'; + + authenticated: boolean; + + ecmHost: string = 'http://127.0.0.1:8080'; + + ticket: string; + + constructor(private authService: AlfrescoAuthenticationService, + private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = this.ecmHost; + settingsService.setProviders('ECM'); + } + + ngOnInit() { + this.login(); + } + + login() { + this.authService.login('admin', 'admin').subscribe( + ticket => { + this.authenticated = true; + }, + error => { + this.authenticated = false; + }); + } + + public updateHost(): void { + this.settingsService.ecmHost = this.ecmHost; + this.login(); + } + + logData(data) { + console.log(data); + } +} +bootstrap(TagDemo, [ + HTTP_PROVIDERS, + ALFRESCO_CORE_PROVIDERS +]); +``` + +### Options + +Attribute | Options | Default | Description | Mandatory +--- | --- | --- | --- | --- +`nodeId` | *string* | | The identifier of a node.| + +![Custom columns](docs/assets/tag1.png) + +## alfresco-tag-list + +```html + +``` + +```ts +import { Component, OnInit, Input } from '@angular/core'; +import { bootstrap } from '@angular/platform-browser-dynamic'; +import { HTTP_PROVIDERS } from '@angular/http'; +import { + ALFRESCO_CORE_PROVIDERS, + AlfrescoSettingsService, + AlfrescoAuthenticationService +} from 'ng2-alfresco-core'; + +import { TAGCOMPONENT, TAGSERVICES } from 'ng2-alfresco-tag'; + +@Component({ + selector: 'alfresco-tag-demo', + template: ` +
+ +
+ `, + directives: [TAGCOMPONENT], + providers: [TAGSERVICES] +}) +class TagDemo implements OnInit { + + authenticated: boolean; + + ecmHost: string = 'http://127.0.0.1:8080'; + + constructor(private authService: AlfrescoAuthenticationService, + private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = this.ecmHost; + settingsService.setProviders('ECM'); + } + + ngOnInit() { + this.login(); + } + + login() { + this.authService.login('admin', 'admin').subscribe( + ticket => { + this.authenticated = true; + }, + error => { + this.authenticated = false; + }); + } + + public updateHost(): void { + this.settingsService.ecmHost = this.ecmHost; + this.login(); + } + + logData(data) { + console.log(data); + } +} +bootstrap(TagDemo, [ + HTTP_PROVIDERS, + ALFRESCO_CORE_PROVIDERS +]); +``` + +![Custom columns](docs/assets/tag2.png) + + +## Build from sources +Alternatively you can build component from sources with the following commands: + + +```sh +npm install +npm run build ``` -This will show a round icon with user and on click some user information are showed. -If user is logged in with ECM and BPM the ECM image will be showed. -## NPM scripts +##Build the files and keep watching for changes -| Command | Description | -| --- | --- | -| npm run build | Build component | -| npm run build:w | Build component and keep watching the changes | -| npm run test | Run unit tests in the console | -| npm run test-browser | Run unit tests in the browser -| npm run coverage | Run unit tests and display code coverage report | +```sh +npm run build:w +``` + +## Running unit tests -## History +```sh +npm test +``` -For detailed changelog, check [Releases](https://github.com/alfresco/ng2-alfresco-userinfo/releases). +## Running unit tests in browser -## Contributors +```sh +npm test-browser +``` + +This task rebuilds all the code, runs tslint, license checks and other quality check tools +before performing unit testing. + +## Code coverage + +```sh +npm run coverage +``` + +## Demo + +If you want have a demo of how the component works, please check the demo folder : + +```sh +cd demo +npm install +npm start +``` -[Contributors](https://github.com/alfresco/ng2-alfresco-userinfo/graphs/contributors) diff --git a/ng2-components/ng2-alfresco-userinfo/assets/license_header.txt b/ng2-components/ng2-alfresco-userinfo/assets/license_header.txt new file mode 100644 index 0000000000..83fd1531a3 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo/assets/license_header.txt @@ -0,0 +1,16 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-userinfo/demo/.gitignore b/ng2-components/ng2-alfresco-userinfo/demo/.gitignore index 7c04460244..6afdbb8367 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/.gitignore +++ b/ng2-components/ng2-alfresco-userinfo/demo/.gitignore @@ -3,3 +3,4 @@ node_modules/ .idea dist/ !systemjs.config.js +!browser-sync-config.js diff --git a/ng2-components/ng2-alfresco-userinfo/demo/README.md b/ng2-components/ng2-alfresco-userinfo/demo/README.md index 7b59778398..8d399e6fef 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/README.md +++ b/ng2-components/ng2-alfresco-userinfo/demo/README.md @@ -1,4 +1,4 @@ -# ng2-alfresco-userinfo - Demo +# ng2-alfresco-tag - Demo * To install dependencies diff --git a/ng2-components/ng2-alfresco-userinfo/demo/index.html b/ng2-components/ng2-alfresco-userinfo/demo/index.html index d6b7f0a7d8..ee97252ec1 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/index.html +++ b/ng2-components/ng2-alfresco-userinfo/demo/index.html @@ -1,20 +1,20 @@ - + + Alfresco Angular 2 Tag - Demo + - - ng2-alfresco-userinfo Angular 2 - - + - + + @@ -24,14 +24,16 @@ - - - -
-
- + + + + + diff --git a/ng2-components/ng2-alfresco-userinfo/demo/package.json b/ng2-components/ng2-alfresco-userinfo/demo/package.json deleted file mode 100644 index 5349c4e2a1..0000000000 --- a/ng2-components/ng2-alfresco-userinfo/demo/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "ng2-alfresco-userinfo-demo", - "description": "This component will show the user information for ECM and BPM - Demo", - "version": "0.1.0", - "author": "vito albano ", - "main": "./dist/index.js", - "typings": "./dist/index.d.ts", - "scripts": { - "clean": "rimraf dist node_modules typings", - "postinstall": "npm run build", - "start": "npm run tslint && rimraf dist && tsc && concurrently \"tsc -w\" \"npm run server\" ", - "server": "wsrv -o -l -s", - "build": "npm run tslint && rimraf dist && tsc", - "build:w": "npm run tslint && rimraf dist && tsc -w", - "tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json src/{,**/}**.ts" - }, - "keywords": [ - "ng2", - "angular", - "angular2", - "alfresco", - "demo" - ], - "dependencies": { - "alfresco-js-api": "^0.3.0", - "@angular/common": "2.0.0-rc.3", - "@angular/compiler": "2.0.0-rc.3", - "@angular/core": "2.0.0-rc.3", - "@angular/forms": "0.1.1", - "@angular/http": "2.0.0-rc.3", - "@angular/platform-browser": "2.0.0-rc.3", - "@angular/platform-browser-dynamic": "2.0.0-rc.3", - "@angular/router": "3.0.0-alpha.7", - "@angular/router-deprecated": "2.0.0-rc.2", - "@angular/upgrade": "2.0.0-rc.3", - "systemjs": "0.19.27", - "core-js": "2.4.0", - "reflect-metadata": "0.1.3", - "rxjs": "5.0.0-beta.6", - "zone.js": "0.6.12", - "ng2-translate": "2.2.2", - "ng2-alfresco-core": "0.3.2", - "ng2-alfresco-userinfo": "file:../" - }, - "peerDependencies": { - "material-design-icons": "^2.2.3", - "material-design-lite": "^1.1.3" - }, - "devDependencies": { - "@types/core-js": "^0.9.32", - "@types/jasmine": "^2.2.33", - "cpx": "1.3.1", - "jasmine-ajax": "3.2.0", - "jasmine-core": "2.4.1", - "karma": "0.13.22", - "karma-chrome-launcher": "1.0.1", - "karma-coverage": "1.0.0", - "karma-jasmine": "1.0.2", - "karma-jasmine-ajax": "^0.1.13", - "karma-jasmine-html-reporter": "0.2.0", - "karma-mocha-reporter": "2.0.3", - "license-check": "1.1.5", - "remap-istanbul": "0.6.3", - "rimraf": "2.5.2", - "traceur": "0.0.91", - "tslint": "3.8.1", - "typescript": "^2.0.2", - "wsrv": "^0.1.5" - } - -} diff --git a/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts b/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts index c21351590c..8af97cc33a 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts @@ -1,127 +1,115 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ -import { Component, OnInit } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { UserInfoComponent } from 'ng2-alfresco-userinfo'; -import { HTTP_PROVIDERS } from '@angular/http'; -import { - AlfrescoSettingsService, - AlfrescoAuthenticationService, - MDL, - ALFRESCO_CORE_PROVIDERS -} from 'ng2-alfresco-core'; +import { NgModule, Component, Input, OnInit } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { TagModule } from 'ng2-alfresco-tag'; @Component({ - selector: 'my-app', - styles: [`:host h1 { font-size:22px }`], - template: ` -

START DEMO USERINFO

-
-

- -

-

- -

-
-
- -
-

-
-

- Username - -

-

- Password - -

- -
-{{loginErrorMessage}} - -`, - directives: [ UserInfoComponent ], - providers: [AlfrescoAuthenticationService, AlfrescoSettingsService, MDL] + selector: 'alfresco-tag-demo', + template: ` +
+
+
+

+
+ Authentication failed to ip {{ ecmHost }} with user: admin, admin, you can still try to add a valid ticket to perform + operations. +
+
+
+
+
+
+
+
List Tags ECM
+
+ Tag list By Node ID + +
+
+
+ ` }) +class TagDemo implements OnInit { + @Input() + nodeId: string = '74cd8a96-8a21-47e5-9b3b-a1b3e296787d'; -class UserInfoDemo implements OnInit { + authenticated: boolean; - public userToLogin: string = 'admin'; - public password: string = 'admin'; - public loginErrorMessage: string; - public providers: string = 'BPM'; - private authenticated: boolean; - private token: any; + ecmHost: string = 'http://127.0.0.1:8080'; - constructor(private authService: AlfrescoAuthenticationService, - private settingsService: AlfrescoSettingsService) { - } + ticket: string; - ngOnInit() { - this.settingsService.setProviders(this.providers); - } + constructor(private authService: AlfrescoAuthenticationService, + private settingsService: AlfrescoSettingsService) { - attemptLogin() { - this.loginErrorMessage = ''; - this.login(this.userToLogin, this.password); - } + settingsService.ecmHost = this.ecmHost; + settingsService.setProviders('ECM'); - logout() { - this.authService.logout(); - } + if (this.authService.getTicketEcm()) { + this.ticket = this.authService.getTicketEcm(); + } + } - login(user, password) { - this.settingsService.setProviders(this.providers); - this.authService.login(user, password).subscribe( - token => { - console.log(token); - this.token = token; - this.authenticated = true; - }, - error => { - console.log(error); - this.authenticated = false; - this.loginErrorMessage = error; - }); - } + ngOnInit() { + this.login(); + } - isLoggedIn(): boolean { - return this.authService.isLoggedIn(); - } + login() { + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + this.ticket = this.authService.getTicketEcm(); + this.authenticated = true; + }, + error => { + console.log(error); + this.authenticated = false; + }); + } - toggleECM(checked) { - if (checked && this.providers === 'BPM') { - this.providers = 'ALL'; - } else if (checked) { - this.providers = 'ECM'; - } else { - this.providers = undefined; - } - } + public updateTicket(): void { + localStorage.setItem('ticket-ECM', this.ticket); + } - toggleBPM(checked) { - if (checked && this.providers === 'ECM') { - this.providers = 'ALL'; - } else if (checked) { - this.providers = 'BPM'; - } else { - this.providers = undefined; - } - } + public updateHost(): void { + this.settingsService.ecmHost = this.ecmHost; + this.login(); + } + + logData(data) { + console.log(data); + } } -bootstrap(UserInfoDemo, [ - UserInfoComponent, - HTTP_PROVIDERS, - ALFRESCO_CORE_PROVIDERS -]); +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + TagModule + ], + declarations: [ TagDemo ], + bootstrap: [ TagDemo ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/ng2-components/ng2-alfresco-userinfo/demo/tslint.json b/ng2-components/ng2-alfresco-userinfo/demo/tslint.json index 8c48e76469..e550ac11d4 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/tslint.json +++ b/ng2-components/ng2-alfresco-userinfo/demo/tslint.json @@ -26,7 +26,7 @@ "label-undefined": true, "max-line-length": [ true, - 140 + 180 ], "member-ordering": [ true, diff --git a/ng2-components/ng2-alfresco-userinfo/index.ts b/ng2-components/ng2-alfresco-userinfo/index.ts index a75fe639fd..41ab68dfa4 100644 --- a/ng2-components/ng2-alfresco-userinfo/index.ts +++ b/ng2-components/ng2-alfresco-userinfo/index.ts @@ -17,12 +17,20 @@ import { NgModule, ModuleWithProviders } from '@angular/core'; import { CoreModule } from 'ng2-alfresco-core'; + +import { UserInfoComponent } from './src/components/user-info.component'; import { EcmUserService } from './src/services/ecm-user.service'; import { BpmUserService } from './src/services/bpm-user.service'; export * from './src/components/user-info.component'; +export * from './src/services/bpm-user.service'; +export * from './src/services/ecm-user.service'; -export const USER_INFO_SERVICE: [any] = [ +export const USER_INFO_DIRECTIVES: any[] = [ + UserInfoComponent +]; + +export const USER_INFO_PROVIDERS: any[] = [ EcmUserService, BpmUserService ]; @@ -32,16 +40,23 @@ export const USER_INFO_SERVICE: [any] = [ CoreModule ], declarations: [ - ...USER_INFO_SERVICE + ...USER_INFO_DIRECTIVES + ], + providers: [ + ...USER_INFO_PROVIDERS ], exports: [ - ...USER_INFO_SERVICE + ...USER_INFO_DIRECTIVES ] }) -export class UserInfoModule { +export class UserInfoComponentModule { static forRoot(): ModuleWithProviders { return { - ngModule: UserInfoModule + ngModule: UserInfoComponentModule, + providers: [ + ...USER_INFO_PROVIDERS + ] }; } } + diff --git a/ng2-components/ng2-alfresco-userinfo/karma-test-shim.js b/ng2-components/ng2-alfresco-userinfo/karma-test-shim.js index fb1c3905f3..d7f5a90d43 100644 --- a/ng2-components/ng2-alfresco-userinfo/karma-test-shim.js +++ b/ng2-components/ng2-alfresco-userinfo/karma-test-shim.js @@ -70,7 +70,7 @@ var map = { }; var packages = { - 'app': { main: 'index.js', defaultExtension: 'js', format: 'register' }, + 'app': { main: 'main.js', defaultExtension: 'js' }, 'rxjs': { defaultExtension: 'js' }, 'ng2-translate': { defaultExtension: 'js' }, @@ -98,7 +98,7 @@ var config = { System.config(config); -System.import('app') +System.import('@angular/core/testing') .then(initTestBed) .then(initTesting); diff --git a/ng2-components/ng2-alfresco-userinfo/karma.conf.js b/ng2-components/ng2-alfresco-userinfo/karma.conf.js index c0374b25c3..5495861358 100644 --- a/ng2-components/ng2-alfresco-userinfo/karma.conf.js +++ b/ng2-components/ng2-alfresco-userinfo/karma.conf.js @@ -108,7 +108,7 @@ module.exports = function (config) { // Source files that you wanna generate coverage for. // Do not include tests or libraries (these files will be instrumented by Istanbul) preprocessors: { - // 'dist/**/!(*spec).js': ['coverage'] + // 'dist/**/!(*spec).js': ['coverage'] }, coverageReporter: { diff --git a/ng2-components/ng2-alfresco-userinfo/package.json b/ng2-components/ng2-alfresco-userinfo/package.json index 19e3865dde..49787abe9d 100644 --- a/ng2-components/ng2-alfresco-userinfo/package.json +++ b/ng2-components/ng2-alfresco-userinfo/package.json @@ -1,11 +1,13 @@ { - "name": "ng2-alfresco-userinfo", - "description": "This component will show the user information for ECM and BPM", - "version": "0.1.0", - "author": "vito albano ", + "name": "ng2-alfresco-tag", + "description": "Alfresco tag component", + "version": "0.3.2", + "author": "Alfresco Software, Ltd.", + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", "scripts": { "clean": "rimraf dist node_modules", - "build": "npm run tslint && rimraf dist && tsc && npm run copy-dist", + "build": "npm run tslint && rimraf dist && tsc && npm run copy-dist && license-check", "build:w": "npm run tslint && rimraf dist && npm run watch-task", "watch-task": "concurrently \"npm run tsc:w\" \"npm run copy-dist:w\" \"license-check\"", "tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json 'src/{,**/}**.ts'", @@ -18,10 +20,9 @@ "test-browser": "npm run build && concurrently \"karma start karma.conf.js --reporters kjhtml\" \"npm run watch-task\"", "posttest": "remap-istanbul -i coverage/report/coverage-final.json -o coverage/report -t html && remap-istanbul -i coverage/report/coverage-final.json -o coverage/report/coverage-final.json", "coverage": "npm run test && wsrv -o -p 9875 ./coverage/report", - "travis": "npm link ng2-alfresco-core" + "prepublish": "npm run build", + "travis": "echo 'placeholder'" }, - "main": "./dist/index.js", - "typings": "./dist/index.d.ts", "repository": { "type": "git", "url": "https://github.com/Alfresco/alfresco-ng2-components.git" @@ -29,19 +30,6 @@ "bugs": { "url": "https://github.com/Alfresco/alfresco-ng2-components/issues" }, - "license": "Apache-2.0", - "contributors": [ - { - "name": "Vito Albano", - "email": "vito.albano@alfresco.com" - } - ], - "keywords": [ - "ng2", - "angular", - "angular2", - "alfresco" - ], "dependencies": { "@angular/common": "2.0.0", "@angular/compiler": "2.0.0", @@ -58,6 +46,7 @@ "systemjs": "0.19.27", "zone.js": "^0.6.23", + "alfresco-js-api": "^0.3.0", "ng2-translate": "2.5.0", "ng2-alfresco-core": "0.3.2" }, @@ -65,31 +54,36 @@ "@types/core-js": "^0.9.32", "@types/jasmine": "^2.2.33", "concurrently": "^2.2.0", - "cpx": "1.3.1", - "jasmine-ajax": "3.2.0", + "cpx": "^1.3.1", + "jasmine-ajax": "^3.2.0", "jasmine-core": "2.4.1", - "karma": "0.13.22", - "karma-chrome-launcher": "1.0.1", - "karma-coverage": "1.0.0", - "karma-jasmine": "1.0.2", + "karma": "~0.13.22", + "karma-chrome-launcher": "~1.0.1", + "karma-coverage": "^1.0.0", + "karma-jasmine": "~1.0.2", "karma-jasmine-ajax": "^0.1.13", - "karma-jasmine-html-reporter": "0.2.0", - "karma-mocha-reporter": "2.0.3", - "license-check": "1.1.5", - "remap-istanbul": "0.6.3", + "karma-jasmine-html-reporter": "^0.2.0", + "karma-mocha-reporter": "^2.0.3", + "license-check": "^1.0.4", + "remap-istanbul": "^0.6.3", "rimraf": "2.5.2", - "traceur": "0.0.91", - "tslint": "3.8.1", - "typescript": "^2.0.2", + "traceur": "^0.0.91", + "tslint": "^3.8.1", + "typescript": "^2.0.3", "wsrv": "^0.1.5" }, + "keywords": [ + "userinfo", + "alfresco-component" + ], "license-check-config": { "src": [ - "./dist/**/*.js" + "./dist/**/*.js" ], "path": "assets/license_header.txt", - "blocking": true, + "blocking": false, "logInfo": false, "logError": true - } + }, + "license": "Apache-2.0" } diff --git a/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.spec.ts b/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.spec.ts index a91e2f2ac8..7fe9af0ca4 100644 --- a/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.spec.ts +++ b/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.spec.ts @@ -14,12 +14,37 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// import { UserInfoComponent } from '../src/userinfo.component'; -describe('Basic Example test ng2-alfresco-userinfo', () => { +import { UserInfoComponent } from './user-info.component'; +import { EcmUserService } from '../services/ecm-user.service'; +import { BpmUserService } from '../services/bpm-user.service'; +import { AlfrescoAuthenticationService, + AlfrescoApiService, + AlfrescoSettingsService } from 'ng2-alfresco-core'; - it('Test hello world', () => { - expect(true).toBe(true); - }); +describe('User info component', () => { + + let userInfoComp: UserInfoComponent; + let ecmUserService = new EcmUserService(null, null); + let bpmUserService = new BpmUserService(null); + let authService = new AlfrescoAuthenticationService(new AlfrescoSettingsService() , + new AlfrescoApiService()); + + beforeEach(() => { + userInfoComp = new UserInfoComponent(ecmUserService, bpmUserService, authService); + }); + + it('should get the ecm user informations when is logged in', () => { + spyOn(ecmUserService, 'getUserInfo'); + spyOn(bpmUserService, 'getCurrentUserInfo'); + spyOn(authService, 'getAlfrescoApi').and.callThrough(); + // spyOn(authService.getAlfrescoApi(), 'ecmAuth').and.callThrough(); + spyOn(authService, 'getAlfrescoApi().ecmAuth.isLoggedIn').and.returnValue(true); + userInfoComp.ngOnInit(); + + expect(ecmUserService.getUserInfo).toHaveBeenCalledWith('-me-'); + expect(bpmUserService.getCurrentUserInfo).not.toHaveBeenCalled(); + + }); }); diff --git a/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.ts b/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.ts index d54b9669e3..9ca5f1aa18 100644 --- a/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.ts +++ b/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.ts @@ -16,10 +16,10 @@ */ import { Component, OnInit } from '@angular/core'; -import { EcmUserService } from './../services/ecm-user.service'; -import { BpmUserService } from './../services/bpm-user.service'; import { EcmUserModel } from './../models/ecm-user.model'; import { BpmUserModel } from './../models/bpm-user.model'; +import { EcmUserService } from './../services/ecm-user.service'; +import { BpmUserService } from './../services/bpm-user.service'; import { AlfrescoAuthenticationService } from 'ng2-alfresco-core'; declare let __moduleName: string; @@ -27,21 +27,19 @@ declare let __moduleName: string; @Component({ selector: 'ng2-alfresco-userinfo', moduleId: __moduleName, - styleUrls: ['./userinfo.component.css'], - templateUrl: './userinfo.component.html', - providers: [EcmUserService, BpmUserService, AlfrescoAuthenticationService] + styleUrls: ['./user-info.component.css'], + templateUrl: './user-info.component.html' }) export class UserInfoComponent implements OnInit { private ecmUser: EcmUserModel; private bpmUser: BpmUserModel; - private baseComponentPath = __moduleName.replace('userinfo.component.js', ''); + private baseComponentPath = __moduleName.replace('components/user-info.component.js', ''); private anonymouseImageUrl: string = this.baseComponentPath + 'img/anonymous.gif'; public bpmUserImage: any; public ecmUserImage: any; - constructor(private ecmUserService: EcmUserService, private bpmUserService: BpmUserService, public authService: AlfrescoAuthenticationService) { diff --git a/ng2-components/ng2-alfresco-userinfo/src/services/bpm-user.service.spec.ts b/ng2-components/ng2-alfresco-userinfo/src/services/bpm-user.service.spec.ts new file mode 100644 index 0000000000..ab002e9957 --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo/src/services/bpm-user.service.spec.ts @@ -0,0 +1,48 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// import { UserInfoComponent } from '../src/userinfo.component'; + +/* +describe('Bpm User Service', () => { + + beforeEachProviders(() => { + return [ + HTTP_PROVIDERS, + AlfrescoSettingsService, + AlfrescoAuthenticationService, + WidgetVisibilityService + ]; + }); + + beforeEach( + inject([WidgetVisibilityService], (activitiService: WidgetVisibilityService) => { + jasmine.Ajax.install(); + service = activitiService; + }) + ); + + afterEach(() => { + jasmine.Ajax.uninstall(); + }); + + + it('should be able to get current user information', () => { + + }); + +}); +*/ diff --git a/ng2-components/ng2-alfresco-userinfo/src/services/bpm-user.service.ts b/ng2-components/ng2-alfresco-userinfo/src/services/bpm-user.service.ts index 089320a264..98d637a6ed 100644 --- a/ng2-components/ng2-alfresco-userinfo/src/services/bpm-user.service.ts +++ b/ng2-components/ng2-alfresco-userinfo/src/services/bpm-user.service.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; +import { AlfrescoAuthenticationService } from 'ng2-alfresco-core'; import { Injectable } from '@angular/core'; import { Response } from '@angular/http'; import { Observable } from 'rxjs/Rx'; @@ -29,12 +29,11 @@ import { BpmUserModel } from '../models/bpm-user.model'; @Injectable() export class BpmUserService { - constructor(private authService: AlfrescoAuthenticationService, - private settingService: AlfrescoSettingsService) { + constructor(private authService: AlfrescoAuthenticationService) { } /** - * get User Information via ECM + * get Current User information for BPM * @param userName - the user name */ getCurrentUserInfo(): Observable { @@ -47,19 +46,31 @@ export class BpmUserService { } } - /** - * get User Information via ECM - * @param userName - the user name - */ - getCurrentUserProfileImage(): string { + getCurrentUserProfileImage(): any { if ( this.authService.getAlfrescoApi().bpmAuth.isLoggedIn() ) { - return this.settingService.getBPMApiBaseUrl() + '/api/enterprise/profile-picture'; + return Observable.fromPromise(this.callApiGetProfilePicture()) + .map( + (data) => data + ) + .catch(this.handleError); } } + /** + * Call js api to get current user profile picture + */ + private callApiGetProfilePicture() { + return this.authService.getAlfrescoApi().activiti.profileApi.getProfile(); + } + + /** + * Call js api to get current user information + */ private callApiGetProfile() { return this.authService.getAlfrescoApi().activiti.profileApi.getProfile(); } + + /** * Throw the error * @param error diff --git a/ng2-components/ng2-alfresco-userinfo/src/services/ecm-user.service.spec.ts b/ng2-components/ng2-alfresco-userinfo/src/services/ecm-user.service.spec.ts new file mode 100644 index 0000000000..5bc6a53e0f --- /dev/null +++ b/ng2-components/ng2-alfresco-userinfo/src/services/ecm-user.service.spec.ts @@ -0,0 +1,69 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* +// import { AlfrescoAuthenticationService, AlfrescoContentService } from 'ng2-alfresco-core'; +import { EcmUserService } from './ecm-user.service'; +import { ReflectiveInjector } from '@angular/core'; +import { EcmUserModel } from '../models/ecm-user.model'; + +declare var AlfrescoApi: any; +declare let jasmine: any; + +describe('Ecm User service', () => { + + let injector; + let ecmUserService: EcmUserService; + // let contentService: AlfrescoContentService; + // let authService: AlfrescoAuthenticationService; + + beforeEach(() => { + + injector = ReflectiveInjector.resolveAndCreate([ + EcmUserService + ]); + + // contentService = injector.get(AlfrescoContentService); + // authService = injector.get(AlfrescoAuthenticationService); + ecmUserService = injector.get(EcmUserService); + + jasmine.Ajax.install(); + }); + + afterEach(() => { + jasmine.Ajax.uninstall(); + }); + + it('should be able', (done) => { + let authService = new AlfrescoAuthenticationService(); + spyOn(authService, ) + ecmUserService.getUserInfo('fake-user').subscribe((res) => { + expect(res).not.toBeUndefined(); + expect(res).toEqual(jasmine.any(EcmUserModel)); + expect(res.firstName).toEqual('fake-user-response'); + expect(res.email).toEqual('fake@email.com'); + done(); + }); + + jasmine.Ajax.requests.mostRecent().respondWith({ + 'status': 201, + contentType: 'application/json', + responseText: JSON.stringify({'entry': {'firstName': 'fake-user-response', 'id': 'fake@email.com'}}) + }); + }); + +}); +*/ diff --git a/ng2-components/ng2-alfresco-userinfo/tsconfig.json b/ng2-components/ng2-alfresco-userinfo/tsconfig.json index b1effea355..ae39a67a17 100644 --- a/ng2-components/ng2-alfresco-userinfo/tsconfig.json +++ b/ng2-components/ng2-alfresco-userinfo/tsconfig.json @@ -1,26 +1,26 @@ { - "compilerOptions": { - "target": "es5", - "module": "system", - "moduleResolution": "node", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "sourceMap": true, - "removeComments": true, - "declaration": true, - "noLib": false, - "allowUnreachableCode": false, - "allowUnusedLabels": false, - "noImplicitAny": false, - "noImplicitReturns": false, - "noImplicitUseStrict": false, - "noFallthroughCasesInSwitch": true, - "outDir": "dist", - "types": ["core-js", "jasmine"] - }, - "exclude": [ - "demo", - "node_modules", - "dist" - ] + "compilerOptions": { + "target": "es5", + "module": "system", + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "sourceMap": true, + "removeComments": true, + "declaration": true, + "noLib": false, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "noImplicitAny": false, + "noImplicitReturns": false, + "noImplicitUseStrict": false, + "noFallthroughCasesInSwitch": true, + "outDir": "dist", + "types": ["core-js", "jasmine"] + }, + "exclude": [ + "demo", + "node_modules", + "dist" + ] } diff --git a/ng2-components/ng2-alfresco-userinfo/tslint.json b/ng2-components/ng2-alfresco-userinfo/tslint.json index 33220e5038..ba706079f4 100644 --- a/ng2-components/ng2-alfresco-userinfo/tslint.json +++ b/ng2-components/ng2-alfresco-userinfo/tslint.json @@ -24,7 +24,7 @@ "label-undefined": true, "max-line-length": [ true, - 140 + 180 ], "member-ordering": [ true,