Project

General

Profile

« Previous | Next » 

Revision 54750

[changeDeposit]: Merging trunk into branch 'changeDeposit' for revisions 54527:54749

View differences:

modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/login/loginGuard.guard.ts
1 1
import { Injectable } from '@angular/core';
2
import { Router,CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';
2
import {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Route, CanLoad} from '@angular/router';
3 3
import {Observable}       from 'rxjs/Observable';
4 4
import {Session} from './utils/helper.class';
5 5
import {LoginErrorCodes} from './utils/guardHelper.class';
6 6

  
7 7
@Injectable()
8
export class LoginGuard implements CanActivate {
8
export class LoginGuard implements CanActivate, CanLoad {
9 9

  
10 10
  constructor(private router: Router) {}
11 11

  
12
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
13
    var user;
14
    var loggedIn = false;
15
    var errorCode = LoginErrorCodes.NOT_LOGGIN;
12
  check(path: string): boolean{
13
    //var user;
14
    let loggedIn = false;
15
    let errorCode = LoginErrorCodes.NOT_LOGIN;
16 16

  
17
    if(Session.isLoggedIn()){
17
    if(Session.isLoggedIn()) {
18 18
      loggedIn = true;
19
      if(!Session.isLoggedIn()){
20
        loggedIn = false;
21
        errorCode = LoginErrorCodes.NOT_VALID;
22
      }
23
    }else{
24
      errorCode = LoginErrorCodes.NOT_LOGGIN;
25 19
    }
26 20
    if(!loggedIn){
27 21
      // this.guardHelper.redirect("/user-info",errorCode,state.url);
28
      this.router.navigate(['/user-info'], { queryParams: { "errorCode": errorCode, "redirectUrl":  state.url } });
29
      return false;
30
    }else{
31
      return true;
22
      this.router.navigate(['/user-info'], { queryParams: { "errorCode": errorCode, path} });
32 23
    }
24
    return loggedIn;
33 25
  }
26

  
27
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
28
    return this.check(state.url);
29
  }
30

  
31
  canLoad(route: Route): Observable<boolean> | Promise<boolean> | boolean {
32
    return this.check('/' + route.path);
33
  }
34 34
}
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/claims/claimsAdmin/claimsAdmin.component.ts
19 19
            <div>
20 20
              <!--div class="uk-text-right">
21 21
              <a  *ngIf="!fetchBy || fetchBy != 'Context'" routerLink="/participate/claim">Claim more links?</a>
22
              <a  *ngIf="isConnect && fetchBy && fetchBy == 'Context' && fetchId" [href]="'https://beta.'+fetchId+'.openaire.eu/participate/claim'"  target="_blank">Claim more links?</a>
22
              <a  *ngIf="isConnect && fetchBy && fetchBy == 'Context' && externalPortalUrl" [href]="externalPortalUrl+'/participate/claim'"  target="_blank">Claim more links?</a>              
23 23
              </div-->
24
              <displayClaims [enableDelete]=true [myClaims]=false [isAdmin]=true [fetchBy]= fetchBy [fetchId]=fetchId
25
              [communityId]="(fetchBy && fetchBy == 'Context')?fetchId:null" [moreClaimsURL]=moreClaimsURL [claimsInfoURL]=claimsInfoURL></displayClaims>
24
              <displayClaims [enableDelete]=true [myClaims]=false [isAdmin]=true [fetchBy]= "(fetchId=='openaire')?null:fetchBy" [fetchId]="(fetchId=='openaire')?null:fetchId"
25
              [communityId]="(fetchBy && fetchBy == 'Context' && fetchId && fetchId!='openaire')?fetchId:null" [externalPortalUrl]=externalPortalUrl [claimsInfoURL]=claimsInfoURL></displayClaims>
26 26
            </div>
27 27
          </div>
28 28
        </div>
......
36 36
  @Input() fetchBy:string;
37 37
  @Input() fetchId:string;
38 38
  @Input() isConnect:boolean = false;
39
  @Input() moreClaimsURL:string;
39
  @Input() externalPortalUrl:string;
40 40
  @Input() claimsInfoURL:string;
41 41
  constructor ( private _meta: Meta, private _title: Title) {
42 42
    var titleConnect = "OpenAIRE Connect | Manage links ";
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/searchPages/find/search.component.ts
145 145
        this._meta.updateTag({content:description},"property='og:description'");
146 146
        this._meta.updateTag({content:title},"property='og:title'");
147 147
        this._meta.updateTag({content:url},"property='og:url'");
148
        this.seoService.createLinkForCanonicalURL(false);
148
        this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url,false);
149 149
        if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
150 150
          this.piwiksub = this._piwikService.trackView(this.properties, "OpenAIRE |Search publications, research data, projects...", this.piwikSiteId).subscribe();
151 151

  
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/claims/claim-utils/entityFormatter/claimEntityFormatter.component.ts
9 9
  template: `
10 10
  <div *ngIf="type == 'publication'" title="Publication">
11 11
      <span class="uk-margin-small-right uk-icon" ><svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" ratio="1"><rect fill="none" stroke="#000" x="3.5" y="2.5" width="12" height="16"></rect><polyline fill="none" stroke="#000" points="5 0.5 17.5 0.5 17.5 17"></polyline></svg></span>
12
      <publication-title [title]="entity.title" [url]="entity.externalUrl" [id]="entity.openaireId" param="articleId" path="/search/publication"></publication-title>
12
      <publication-title [title]="entity.title" [url]="entity.externalUrl" [id]="entity.openaireId" param="articleId" path="/search/publication" [externalPortalUrl]=externalPortalUrl></publication-title>
13 13
  </div>
14 14
  <div *ngIf="type == 'dataset'" title="Dataset">
15 15
      <span class="uk-margin-small-right uk-icon" ><svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" ratio="1"><ellipse fill="none" stroke="#000" cx="10" cy="4.64" rx="7.5" ry="3.14"></ellipse><path fill="none" stroke="#000" d="M17.5,8.11 C17.5,9.85 14.14,11.25 10,11.25 C5.86,11.25 2.5,9.84 2.5,8.11"></path><path fill="none" stroke="#000" d="M17.5,11.25 C17.5,12.99 14.14,14.39 10,14.39 C5.86,14.39 2.5,12.98 2.5,11.25"></path><path fill="none" stroke="#000" d="M17.49,4.64 L17.5,14.36 C17.5,16.1 14.14,17.5 10,17.5 C5.86,17.5 2.5,16.09 2.5,14.36 L2.5,4.64"></path></svg></span>
16
      <publication-title [title]="entity.title" [url]="entity.externalUrl" [id]="entity.openaireId" param="datasetId" path="/search/dataset"></publication-title>
16
      <publication-title [title]="entity.title" [url]="entity.externalUrl" [id]="entity.openaireId" param="datasetId" path="/search/dataset" [externalPortalUrl]=externalPortalUrl></publication-title>
17 17
  </div>
18 18
  <div *ngIf="type == 'software'" title="Software">
19 19
      <span class="uk-margin-small-right uk-icon" >
20 20
        <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" ratio="1"> <circle fill="none" stroke="#000" cx="9.997" cy="10" r="3.31"></circle> <path fill="none" stroke="#000" d="M18.488,12.285 L16.205,16.237 C15.322,15.496 14.185,15.281 13.303,15.791 C12.428,16.289 12.047,17.373 12.246,18.5 L7.735,18.5 C7.938,17.374 7.553,16.299 6.684,15.791 C5.801,15.27 4.655,15.492 3.773,16.237 L1.5,12.285 C2.573,11.871 3.317,10.999 3.317,9.991 C3.305,8.98 2.573,8.121 1.5,7.716 L3.765,3.784 C4.645,4.516 5.794,4.738 6.687,4.232 C7.555,3.722 7.939,2.637 7.735,1.5 L12.263,1.5 C12.072,2.637 12.441,3.71 13.314,4.22 C14.206,4.73 15.343,4.516 16.225,3.794 L18.487,7.714 C17.404,8.117 16.661,8.988 16.67,10.009 C16.672,11.018 17.415,11.88 18.488,12.285 L18.488,12.285 Z"></path></svg>
21 21
      </span>
22
      <publication-title [title]="entity.title" [url]="entity.externalUrl" [id]="entity.openaireId" param="softwareId" path="/search/software"></publication-title>
22
      <publication-title [title]="entity.title" [url]="entity.externalUrl" [id]="entity.openaireId" param="softwareId" path="/search/software" [externalPortalUrl]=externalPortalUrl></publication-title>
23 23
  </div>
24 24
  <div *ngIf="type == 'other'" title="Other reserch product">
25 25
      <span class="uk-margin-small-right uk-icon" >
26 26
        <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"> <polygon fill="none" stroke="#000" points="2.5,5.7 10,1.3 17.5,5.7 17.5,14.3 10,18.7 2.5,14.3"></polygon> <circle fill="none" stroke="#000" cx="10" cy="10" r="3.5"></circle></svg>
27 27
      </span>
28
      <publication-title [title]="entity.title" [url]="entity.externalUrl" [id]="entity.openaireId" param="orpId" path="/search/other" ></publication-title>
28
      <publication-title [title]="entity.title" [url]="entity.externalUrl" [id]="entity.openaireId" param="orpId" path="/search/other" [externalPortalUrl]=externalPortalUrl ></publication-title>
29 29
  </div>
30 30
  <div *ngIf="type == 'project'  " title="Project">
31 31
    <span class="uk-margin-small-right uk-icon"  ><svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" ratio="1"><rect x="5" y="2" width="10" height="1"></rect><rect x="3" y="4" width="14" height="1"></rect><rect fill="none" stroke="#000" x="1.5" y="6.5" width="17" height="11"></rect></svg></span>
32
    <project-title [project]="entity" [(searchLink)]=properties.searchLinkToProject></project-title>
32
    <project-title [project]="entity" [(searchLink)]=properties.searchLinkToProject [externalPortalUrl]=externalPortalUrl></project-title>
33 33
  </div>
34 34
  <div *ngIf="type == 'context'  " title="Concept">
35 35
    <span class="uk-margin-small-right uk-icon" ><svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" ratio="1"><circle fill="none" stroke="#000" stroke-width="1.1" cx="7.7" cy="8.6" r="3.5"></circle><path fill="none" stroke="#000" stroke-width="1.1" d="M1,18.1 C1.7,14.6 4.4,12.1 7.6,12.1 C10.9,12.1 13.7,14.8 14.3,18.3"></path><path fill="none" stroke="#000" stroke-width="1.1" d="M11.4,4 C12.8,2.4 15.4,2.8 16.3,4.7 C17.2,6.6 15.7,8.9 13.6,8.9 C16.5,8.9 18.8,11.3 19.2,14.1"></path></svg></span>
......
42 42
  @Input() entity: string[];
43 43
  @Input() type: string;
44 44
  @Input() properties: EnvProperties;
45
  @Input() externalPortalUrl:string = null;
45 46

  
46 47
  constructor () {}
47 48

  
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/utils/properties/searchFields.ts
8 8
      "relfunder",
9 9
    "relfundinglevel0_id","relfundinglevel1_id","relfundinglevel2_id",
10 10
    "relproject","resultacceptanceyear",
11
   "resultbestaccessright", "instancetypename", "resultlanguagename", "community","resulthostingdatasource"];
11
   "resultbestaccessright", "instancetypename", "resultlanguagename", "community","resulthostingdatasource","collectedfrom" ];
12 12

  
13 13
     public RESULT_ADVANCED_FIELDS:string[] = ["q","resulttitle","resultauthor","resultsubject","resultpublisher",
14 14
     "resultbestaccessright","community","collectedfromdatasourceid","resulthostingdatasourceid", "resultdateofacceptance",
......
36 36
         ["resultacceptanceyear"]:{name:"Publication Date", type:"keyword", param:"year", operator: "ya", equalityOperator: " exact "},
37 37
         ["resultdateofacceptance"]:{name:"Publication Date", type:"date", param:"date", operator: "dt", equalityOperator: " within "},
38 38
         ["resultbestaccessright"]:{name:"Access Mode", type:"vocabulary", param:"access", operator: "ac", equalityOperator: " exact "},
39
         ["collectedfrom"]:{name:"Content Provider", type:"refine", param:"datasource", operator: "cl", equalityOperator: " exact "},
39
         ["collectedfrom"]:{name:"Collected From", type:"refine", param:"datasource", operator: "cl", equalityOperator: " exact "},
40 40
         ["relorganizationid"]:{name:"Organization", type:"entity", param:"organization", operator: "og", equalityOperator: " exact "},
41 41
         ["collectedfromdatasourceid"]:{name:"Collected from Content Provider", type:"entity", param:"collectedFrom", operator: "cl", equalityOperator: " exact "}
42 42
                };
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/utils/entitiesAutoComplete/entitySearch.service.ts
140 140
      this.ready = false;
141 141
      let url = link+"?";
142 142
      if(keyword!= null && keyword != ''  ) {
143
          url += "q="+ keyword;
143
          if(type=="project") {
144
            //name, title, acronym, grantid
145
            url += "fq="+'(projectcode_nt="'+keyword+'" ) or (fundershortname='+'"'+keyword+ '"'+') or (projectacronym="'+keyword+'" ) or (projecttitle="'+keyword+'")';
146
          } else if(type=="organization") {
147
            //name fields
148
            url += "fq="+'(organizationlegalname="'+keyword+'" ) or (organizationlegalshortname='+'"'+keyword+ '")';
149
          } else {
150
            url += "q="+ keyword;
151
          }
144 152
      }
145 153

  
146 154
      url += "&page=0&size="+10+"&format=json";
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/deposit/datasets/depositBySubjectResult.component.ts
39 39

  
40 40
  constructor (private  route: ActivatedRoute) {}
41 41

  
42
  constructor (private _router: Router,
43
               private  route: ActivatedRoute,
44
               private _searchDataprovidersService: SearchDataprovidersService,
45
               private _meta: Meta,
46
               private _title: Title,
47
               private _piwikService:PiwikService,
48
             private seoService: SEOService) {
49

  
50
          this.fetchDataproviders = new FetchDataproviders(this._searchDataprovidersService);
51

  
52
          this.status = this.errorCodes.LOADING;
53

  
54
          var description = "Openaire,  repositories, open access,  content provider, compatibility, organization, deposit "+ this.requestFor;
55
          var title = "Deposit "+this.requestFor;
56

  
57
          this.updateTitle(title);
58
          this.updateDescription(description);
59
          this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url, false);
60

  
61
  }
62

  
42 63
  ngOnInit() {
43 64
    this.route.data
44 65
      .subscribe((data: { envSpecific: EnvProperties }) => {
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/deposit/deposit.component.ts
51 51

  
52 52
      var title = "Deposit "+this.requestFor;
53 53
      var description = "Openaire,  repositories, open access,  content provider, compatibility, organization, deposit "+ this.requestFor;
54
      this.seoService.createLinkForCanonicalURL(false);
54
      this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url, false);
55 55
      this.updateTitle(title);
56 56
      this.updateDescription(description);
57 57
  }
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/login/claimsCuratorGuard.guard.ts
1 1
import { Injectable } from '@angular/core';
2
import { Router,CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';
2
import {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanLoad, Route} from '@angular/router';
3 3
import {Observable}       from 'rxjs/Observable';
4 4
import {Session} from './utils/helper.class';
5 5
import {LoginErrorCodes} from './utils/guardHelper.class';
6 6

  
7 7
@Injectable()
8
export class ClaimsCuratorGuard implements CanActivate {
8
export class ClaimsCuratorGuard implements CanActivate, CanLoad {
9 9

  
10 10
  constructor(private router: Router) {}
11 11

  
12
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
13
    var user;
14
    var role = route.data['role']
15
    var loggedIn = false;
16
    var isAuthorized = false;
17
    var errorCode = LoginErrorCodes.NOT_LOGGIN;
12
  check(path: string)  : boolean{
13
    //var user;
14
    //var role = route.data['role']
15
    let loggedIn = false;
16
    let isAuthorized = false;
17
    let errorCode = LoginErrorCodes.NOT_LOGIN;
18 18

  
19 19
    if(Session.isLoggedIn()){
20 20
      loggedIn = true;
21
      if(!Session.isLoggedIn()){
22
        loggedIn = false;
23
        errorCode = LoginErrorCodes.NOT_VALID;
24
      }else {
25
          if(Session.isClaimsCurator() || Session.isPortalAdministrator()){
26
            isAuthorized =true;
27
          }
28
          if(!Session.isClaimsCurator() && !Session.isPortalAdministrator()){
29
            errorCode = LoginErrorCodes.NOT_ADMIN;
30
          }
31
        }
32
    }else{
33
      errorCode =LoginErrorCodes.NOT_LOGGIN;
21
      if(Session.isClaimsCurator() || Session.isPortalAdministrator()){
22
        isAuthorized = true;
23
      }
24
      else {
25
        errorCode = LoginErrorCodes.NOT_ADMIN;
26
      }
34 27
    }
35

  
36
    if(!loggedIn){
28
    if(!loggedIn || !isAuthorized){
37 29
      // this.guardHelper.redirect("/user-info",errorCode,state.url);
38
      this.router.navigate(['/user-info'], { queryParams: { "errorCode": errorCode, "redirectUrl":  state.url } });
39

  
40
      return false;
41
    }else if(!isAuthorized){
42
        // this.guardHelper.redirect("/user-info",errorCode,state.url);
43
        this.router.navigate(['/user-info'], { queryParams: { "errorCode": errorCode, "redirectUrl":  state.url } });
44
        return false;
45
      }else{
46
      return true;
30
      this.router.navigate(['/user-info'], {queryParams: {"errorCode": errorCode, "redirectUrl": path}});
47 31
    }
32
    return loggedIn && isAuthorized;
48 33
  }
34

  
35
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
36
    return this.check(state.url);
37
  }
38

  
39
  canLoad(route: Route): Observable<boolean> | Promise<boolean> | boolean {
40
    return this.check('/' + route.path);
41
  }
49 42
}
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/login/freeGuard.guard.ts
1 1
import { Injectable } from '@angular/core';
2
import { Router,CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, ActivatedRoute} from '@angular/router';
2
import {
3
  Router,
4
  CanActivate,
5
  ActivatedRouteSnapshot,
6
  RouterStateSnapshot,
7
  Route,
8
  CanLoad
9
} from '@angular/router';
3 10
import {Observable}       from 'rxjs/Observable';
4 11
import {Session} from './utils/helper.class';
5 12
import {LoginErrorCodes} from './utils/guardHelper.class';
6 13

  
7 14
@Injectable()
8
export class FreeGuard implements CanActivate {
15
export class FreeGuard implements CanActivate, CanLoad{
9 16

  
10 17
  constructor(private router: Router) {}
11 18

  
12
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
13
    var user;
14
    var valid = true;
15
    var loggedIn = false;
16
     var errorCode = LoginErrorCodes.NOT_LOGGIN;
17

  
18
    if(Session.isLoggedIn()){
19
      loggedIn = true;
20
      if(!Session.isLoggedIn()){
21
        loggedIn = false;
22
        valid = false;
23
        errorCode = LoginErrorCodes.NOT_VALID;
24
      }
25
    }
26

  
19
  check(path: string) :boolean {
20
    //var user;
21
    let valid = true;
22
    let errorCode = LoginErrorCodes.NOT_LOGIN;
27 23
    if(!valid){
28
      // this.guardHelper.redirect("/user-info",errorCode,state.url);
29

  
30
      this.router.navigate(['/user-info'], { queryParams: { "errorCode": errorCode, "redirectUrl":  state.url } });
31
      return false;
24
      this.router.navigate(['/user-info'], {queryParams: {"errorCode": errorCode, "redirectUrl": path}});
32 25
    }
33
    return true;
26
    return valid;
27
  }
34 28

  
29
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
30
    return this.check(state.url);
35 31
  }
32

  
33
  canLoad(route: Route): Observable<boolean> | Promise<boolean> | boolean {
34
    return this.check('/' + route.path);
35
  }
36 36
}
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/claims/claim-utils/entityFormatter/publicationTitleFormatter.component.ts
6 6
@Component({
7 7
  selector: 'publication-title',
8 8
  template: `
9
  <span class="publication-title">
9
  <span *ngIf="!externalPortalUrl" class="publication-title">
10 10

  
11 11
     <span *ngIf="id" ><a  [queryParams]="routerHelper.createQueryParam(param,id)"  routerLinkActive="router-link-active" [routerLink]="path" >  {{title}}</a></span>
12 12
     <!--span *ngIf="url" class="uk-margin-small-left" ><a target="_blank" href="{{url}}" >
13 13
     (<span class="custom-external custom-icon" ></span>link)</a></span-->
14 14
   </span>
15
   <span *ngIf="externalPortalUrl" class="publication-title">
16

  
17
      <span *ngIf="id" ><a  [href] = "externalPortalUrl + path+'?'+param+'='+id"  >  {{title}}</a></span>
18
    </span>
15 19
  `
16 20
})
17 21

  
......
21 25
  @Input() id: string;
22 26
  @Input() param: string;
23 27
  @Input() path: string;
28
  @Input() externalPortalUrl:string = null;
24 29
  public routerHelper:RouterHelper = new RouterHelper();
25 30
  constructor () {}
26 31

  
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/searchPages/searchUtils/searchPaging.component.ts
5 5
@Component({
6 6
    selector: 'search-paging',
7 7
    template: `
8
    <div class= "searchPaging uk-panel uk-margin-top uk-grid">
8
    <div class= "searchPaging uk-panel uk-margin-small-top uk-grid">
9
      <!--div class="uk-width-1-1@s uk-width-1-2@m" *ngIf="results && searchUtils.totalResults > 0">
10
        <span class="portal-color">{{searchUtils.totalResults|number}}</span> {{type}}, page <span class="portal-color">{{searchUtils.page | number}}</span> of <span class="portal-color">{{(totalPages(searchUtils.totalResults)|number)}}</span>
11
      </div>
12
      <div class="uk-width-1-1@s uk-width-1-2@m" *ngIf="!loadPaging && oldTotalResults > 0 && searchUtils.status == errorCodes.LOADING">
13
        <span class="portal-color">{{oldTotalResults|number}}</span> {{type}}, page <span class="portal-color">{{searchUtils.page | number}}</span> of <span class="portal-color">{{(totalPages(oldTotalResults)|number)}}</span>
14
      </div-->
9 15
      <div class="uk-width-1-1@s uk-width-1-2@m" *ngIf="results && searchUtils.totalResults > 0">
10 16
        {{searchUtils.totalResults|number}} {{type}}, page {{searchUtils.page | number}} of {{(totalPages(searchUtils.totalResults)|number)}}
11 17
      </div>
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/searchPages/searchUtils/searchPage.component.ts
108 108
        this.updateTitle(this.pageTitle);
109 109
        var description = "Openaire, search, repositories, open access, type, content provider, funder, project, " + this.type + "," +this.pageTitle;
110 110
        this.updateDescription(description);
111
        this.seoService.createLinkForCanonicalURL(false);
111
        this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this.router.url,false);
112 112
  }
113 113
  ngAfterViewChecked(){
114 114

  
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/searchPages/searchUtils/searchPageTableView.component.ts
3 3
import {EventEmitter, ViewEncapsulation}  from '@angular/core';
4 4
import {OnInit, AfterViewInit}            from '@angular/core';
5 5
import {Location}                         from '@angular/common';
6
import {ActivatedRoute}                   from '@angular/router';
6
import {ActivatedRoute, Router}                   from '@angular/router';
7 7
import {Title, Meta}                      from '@angular/platform-browser';
8 8

  
9 9
import {Observable}                       from 'rxjs/Observable';
......
81 81
  properties:EnvProperties;
82 82
  url = null;
83 83
  constructor (private route: ActivatedRoute,
84
               private router: Router,
84 85
               private location: Location,
85 86
               private _meta: Meta,
86 87
               private _title: Title,
......
110 111
        this.updateTitle(this.pageTitle);
111 112
        var description = "Openaire, search, repositories, open access, type, content provider, funder, project, " + this.type + "," +this.pageTitle;
112 113
        this.updateDescription(description);
113
        this.seoService.createLinkForCanonicalURL(false);
114
        this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this.router.url,false);
114 115

  
115 116

  
116 117
   }
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/searchPages/searchUtils/advancedSearchPage.component.ts
94 94
    this.searchUtils.baseUrl = "/" + this.searchUtils.baseUrl;
95 95

  
96 96
    this.updateBaseUrlWithParameters();
97
    this.seoService.createLinkForCanonicalURL(false);
97
    this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this.router.url,false);
98 98

  
99 99

  
100 100
  }
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/connect/communityGuard/connectSubscriber.guard.ts
16 16
     console.log(state.url);
17 17
    var user;
18 18
    var authorized = false;
19
    var errorCode = LoginErrorCodes.NOT_SUBSCIBER;
19
    var errorCode = LoginErrorCodes.NOT_SUBSCRIBER;
20 20

  
21 21
    let community = (route.queryParams["communityId"]);
22 22
    if(!community){
23 23
     community  = ConnectHelper.getCommunityFromDomain(document.location.hostname);
24 24
    }
25 25
    if(!Session.isLoggedIn()){
26
      errorCode = LoginErrorCodes.NOT_LOGGIN;
26
      errorCode = LoginErrorCodes.NOT_LOGIN;
27 27
      this.router.navigate(['/user-info'], { queryParams: { "errorCode": errorCode, "redirectUrl":  state.url } });
28 28
      return false;
29 29
    }
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/connect/communityGuard/connectAdminLoginGuard.guard.ts
16 16
    var user;
17 17
    var loggedIn = false;
18 18
    var isAdmin = false;
19
    var errorCode = LoginErrorCodes.NOT_LOGGIN;
19
    var errorCode = LoginErrorCodes.NOT_LOGIN;
20 20

  
21 21
    let community = (route.queryParams["communityId"]);
22 22
    if(Session.isLoggedIn()){
......
39 39
        return obs;
40 40
       }
41 41
    }else{
42
      errorCode =LoginErrorCodes.NOT_LOGGIN;
42
      errorCode =LoginErrorCodes.NOT_LOGIN;
43 43
      this.router.navigate(['/user-info'], { queryParams: { "errorCode": errorCode, "redirectUrl":  state.url } });
44 44

  
45 45
      return false;
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/connect/communityGuard/connectRIGuard.guard.ts
16 16
    var user;
17 17
    var loggedIn = false;
18 18
    var isAdmin = false;
19
    var errorCode = LoginErrorCodes.NOT_LOGGIN;
19
    var errorCode = LoginErrorCodes.NOT_LOGIN;
20 20

  
21 21
    let community = (route.queryParams["communityId"]);
22 22
    if(Session.isLoggedIn()){
......
39 39
        return obs;
40 40
       }
41 41
    }else{
42
      errorCode =LoginErrorCodes.NOT_LOGGIN;
42
      errorCode =LoginErrorCodes.NOT_LOGIN;
43 43
      this.router.navigate(['/user-info'], { queryParams: { "errorCode": errorCode, "redirectUrl":  state.url } });
44 44

  
45 45
      return false;
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/connect/userEmailPreferences/mailPrefs.component.html
45 45
                    <div class="uk-form-label inherit-color">Frequency:</div>
46 46
                    <div class="uk-form-controls">
47 47
                      <select [class]="notification.notify ? 'uk-select' : 'uk-select uk-disabled'" id="form-horizontal-select"
48
                              [(ngModel)]="notification.frequency" name="select_frequency">
49
                        <option (click)="changeFrequency(24, i)" [ngValue]="24" >Daily</option>
50
                        <option (click)="changeFrequency(48, i)" [ngValue]="48" >Every two days</option>
51
                        <option (click)="changeFrequency(168, i)" [ngValue]="168">Weekly</option>
48
                              [(ngModel)]="notification.frequency" (ngModelChange)="changeFrequency(i)" name="select_frequency">
49
                        <option [ngValue]="24" >Daily</option>
50
                        <option [ngValue]="48" >Every two days</option>
51
                        <option [ngValue]="168">Weekly</option>
52 52
                      </select>
53 53
                    </div>
54 54
                  </div>
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/connect/userEmailPreferences/mailPrefs.component.ts
136 136
    }
137 137
  }
138 138

  
139
  changeFrequency(value: number, index: number) {
139
  changeFrequency(index: number) {
140 140
    if(!Session.isLoggedIn()){
141 141
      //this.userValidMessage = "User session has expired. Please login again.";
142 142
      if(this.showSaveResetButtons) {
......
145 145
    } else {
146 146
      this.savedMessage = "";
147 147
      this.status = this.errorCodes.DONE;
148
      if(this.initialNotifications[index].frequency != value) {
148
      if(this.initialNotifications[index].frequency != this.notifications[index].frequency) {
149 149
        this.prefsChanged[index] = true;
150 150
      }
151 151
    }
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/orp/orp.service.ts
176 176
      let length = Array.isArray(authors) ? authors.length : 1;
177 177
      for(let i=0; i<length; i++) {
178 178
        let author = Array.isArray(authors) ? authors[i] : authors;
179
        this.orpInfo.authors[author.rank-1] = author.content;
179
        this.orpInfo.authors[author.rank] = author.content;
180 180

  
181 181
      }
182 182

  
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/orp/orp.component.ts
69 69
        .subscribe((data: { envSpecific: EnvProperties }) => {
70 70
           this.properties = data.envSpecific;
71 71
           this.updateUrl(data.envSpecific.baseLink+this._router.url);
72
           this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url);
72 73

  
73 74
        });
74 75
      this.sub =  this.route.queryParams.subscribe(params => {
75 76
          this.orpInfo = null;
76 77
          this.updateTitle("Other Research Product");
77
          this.updateDescription("Other Research Product, search, open access");
78
          this.seoService.createLinkForCanonicalURL();
78
          this.updateDescription("");
79 79
            this.orpId = params['orpId'];
80 80
             console.info("Id is :"+this.orpId);
81 81

  
......
123 123
                this.orpInfo = data;
124 124
                if(this.orpInfo.title){
125 125
                  this.updateTitle(this.orpInfo.title);
126
                  this.updateDescription("Other Research Product, search, repositories, open access,"+this.orpInfo.title);
126
                  this.updateDescription((this.orpInfo.description?(this.orpInfo.description):(","+this.orpInfo.title)));
127 127
                }
128 128
                if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
129 129
                  this.piwiksub = this._piwikService.trackView(this.properties, this.orpInfo.title, this.piwikSiteId).subscribe();
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/dataProvider/dataProvider.component.ts
131 131
     .subscribe((data: { envSpecific: EnvProperties }) => {
132 132
        this.properties = data.envSpecific;
133 133
        this.updateUrl(data.envSpecific.baseLink+this._router.url);
134
        this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url);
134 135

  
135 136
     });
136 137
   this.sub =  this.route.queryParams.subscribe(data => {
137 138
      this.updateTitle("Content provider");
138
      this.updateDescription("Content provider, search, repositories, open access");
139
      this.seoService.createLinkForCanonicalURL();
139
      this.updateDescription("");
140 140
      this.datasourceId = data['datasourceId'];
141 141
      if(this.datasourceId){
142 142
       this.getDataProviderInfo(this.datasourceId);
......
186 186
            this.initTabs();
187 187
            this.showTabs = true ;
188 188
            this.updateTitle(this.dataProviderInfo.title.name);
189
            this.updateDescription("Content provider, search, repositories, open access,"+this.dataProviderInfo.title.name);
189
            this.updateDescription("Content provider, "+this.dataProviderInfo.title.name);
190 190
            if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
191 191
              this.piwiksub = this._piwikService.trackView(this.properties, this.dataProviderInfo.title.name, this.piwikSiteId).subscribe();
192 192
            }
......
244 244
               this.reloadRelatedDatasources = true;
245 245
               this.statsClicked = false;
246 246

  
247
               this.search(this.dataProviderInfo.tabs[0].content, 1, 10);
247
               //this.search(this.dataProviderInfo.tabs[0].content, 1, 10);
248 248
               this.count(1, 0);
249 249

  
250 250
               this.metricsClicked = false;
......
288 288
   }
289 289

  
290 290
   private count(page: number, size: number) {
291
       for(let i=1; i<this.dataProviderInfo.tabs.length; i++) {
291
       for(let i=0; i<this.dataProviderInfo.tabs.length; i++) {
292 292
           let content: string = this.dataProviderInfo.tabs[i].content;
293 293

  
294 294
           if(content=='publicationsTab') {
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/organization/organization.component.ts
124 124
        .subscribe((data: { envSpecific: EnvProperties }) => {
125 125
           this.properties = data.envSpecific;
126 126
           this.updateUrl(data.envSpecific.baseLink+this._router.url);
127

  
127
           this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url);
128 128
        });
129 129
        console.info('organization init');
130 130
        this.sub =  this.route.queryParams.subscribe(params => {
131 131
            this.organizationInfo=null;
132 132
            this.updateTitle("Organization");
133
            this.updateDescription("Organization, country, projects,  search, repositories, open access");
134
            this.seoService.createLinkForCanonicalURL();
133
            this.updateDescription("");
135 134
            this.projectsClicked = false;
136 135

  
137 136
            this.organizationId = params['organizationId'];
......
206 205
                } else {
207 206
                    this.organizationInfo = data;
208 207
                    this.updateTitle(this.organizationInfo.title.name);
209
                    this.updateDescription("Organization, country, projects,  search, repositories, open access"+this.organizationInfo.title.name);
208
                    this.updateDescription("Organization, country, "+this.organizationInfo.title.name +((this.organizationInfo.title.name && this.organizationInfo.title.name != this.organizationInfo.name)?(", "+this.organizationInfo.name):"") );
210 209
                    if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
211 210
                      this.piwiksub = this._piwikService.trackView(this.properties, this.organizationInfo.title.name, this.piwikSiteId).subscribe();
212 211
                    }
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/dataset/dataset.service.ts
197 197
      let length = Array.isArray(authors) ? authors.length : 1;
198 198
      for(let i=0; i<length; i++) {
199 199
        let author = Array.isArray(authors) ? authors[i] : authors;
200
        this.datasetInfo.authors[author.rank-1] = author.content;
200
        this.datasetInfo.authors[author.rank] = author.content;
201 201

  
202 202
      }
203 203

  
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/dataset/dataset.component.ts
69 69
        .subscribe((data: { envSpecific: EnvProperties }) => {
70 70
           this.properties = data.envSpecific;
71 71
           this.updateUrl(data.envSpecific.baseLink+this._router.url);
72
           this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url);
72 73

  
73 74
        });
74 75
      this.sub =  this.route.queryParams.subscribe(params => {
75 76
          this.datasetInfo = null;
76 77
          this.updateTitle("Dataset");
77
          this.updateDescription("Dataset, search, open access");
78
          this.seoService.createLinkForCanonicalURL();
78
          this.updateDescription("");
79 79

  
80 80
            this.datasetId = params['datasetId'];
81 81
             console.info("Id is :"+this.datasetId);
......
133 133
                */
134 134
                if(this.datasetInfo.title){
135 135
                  this.updateTitle(this.datasetInfo.title);
136
                  this.updateDescription("Dataset, search, repositories, open access,"+this.datasetInfo.title);
136
                  this.updateDescription((this.datasetInfo.description?(this.datasetInfo.description):(","+this.datasetInfo.title)));
137 137
                }
138 138
                if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
139 139
                  this.piwiksub = this._piwikService.trackView(this.properties, this.datasetInfo.title/*.name*/, this.piwikSiteId).subscribe();
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/project/project.component.ts
132 132
        this.fetchOrps = new FetchOrps(this._searchOrpsService);
133 133

  
134 134
        var title = "Project";
135
        var description = "project, funding, open access, publications, research data, software, other research products";
135
        var description = "";
136 136

  
137 137
        this.updateTitle(title);
138
        this.updateDescription(description);
139
        this.seoService.createLinkForCanonicalURL();
140

  
138
        this.updateDescription(description);        
139
        this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url);
141 140
      this.projectId = params['projectId'];
142 141
      var grantId = params['grantId'];
143 142
      var funder = params['funder'];
......
358 357
      this.projectName = this.projectInfo.title;
359 358
  }
360 359
  this.updateTitle(this.projectName);
361
  this.updateDescription("project, funding, open access, publications, research data, "+this.projectName+ ","+this.projectInfo.funder);
360
  this.updateDescription("project, "+this.projectName+ ","+this.projectInfo.funder+","+this.projectInfo.acronym);
362 361
  if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
363 362
    this.piwiksub = this._piwikService.trackView(this.properties, this.projectName, this.piwikSiteId).subscribe();
364 363
  }
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/htmlProjectReport/htmlProjectReport.component.ts
79 79
        .subscribe((data: { envSpecific: EnvProperties }) => {
80 80
           this.properties = data.envSpecific;
81 81
           this.updateUrl(data.envSpecific.baseLink+this._router.url);
82
           this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url);
82 83

  
83 84
        });
84 85
        this.sub =  this.route.queryParams.subscribe(params => {
......
106 107
              var description = "project, project "+ this.resultsType +" report, funding, open access, publications, research data, software, other research products";
107 108
              this.updateTitle(title);
108 109
              this.updateDescription(description);
109
              this.seoService.createLinkForCanonicalURL();
110 110

  
111

  
111 112
            } else {
112 113
              this.showLoading = false;
113 114
    		      this.warningMessage="Requested type should be publication or research data or software or other research product";
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/publication/publication.component.ts
90 90
       this.sub =  this.route.queryParams.subscribe(data => {
91 91
           this.publicationInfo = null;
92 92
           this.updateTitle("Publication");
93
           this.updateDescription("Publication, open access, collected from");
94
           this.seoService.createLinkForCanonicalURL();
95

  
93
           this.updateDescription("");
94
           this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url);
96 95
          this.articleId = data['articleId'];
97 96
          console.info("Article id is :"+this.articleId);
98 97

  
......
166 165
                }*/
167 166
                if(this.publicationInfo.title){
168 167
                  this.updateTitle(this.publicationInfo.title);
169
                  this.updateDescription("Dataset, search, repositories, open access,"+this.publicationInfo.title);
168
                  this.updateDescription((this.publicationInfo.description?(this.publicationInfo.description):(","+this.publicationInfo.title)));
170 169
                }
171 170
                if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
172 171
                  this.piwiksub =  this._piwikService.trackView(this.properties, this.publicationInfo.title/*.name*/, this.piwikSiteId).subscribe();
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/publication/publication.component.html
87 87
                </li>
88 88
              </ul>
89 89
              <hr *ngIf="publicationInfo.description">
90
              <!-- <div *ngIf="publicationInfo.description" class="uk-margin-bottom uk-text-justify descriptionText">
90
              <div *ngIf="publicationInfo.description" class="uk-margin-bottom uk-text-justify descriptionText">
91 91
                {{publicationInfo.description}}
92
              </div> -->
92
              </div>
93 93

  
94 94

  
95 95

  
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/publication/publication.service.ts
240 240

  
241 241
      for(let i=0; i<length; i++) {
242 242
        let author = Array.isArray(authors) ? authors[i] : authors;
243
        this.publicationInfo.authors[author.rank-1] = author.content;
243
        this.publicationInfo.authors[author.rank] = author.content;
244 244
      }
245 245
      this.publicationInfo.authors = this.publicationInfo.authors.filter(function (item) {
246 246
        return (item != undefined);
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/software/software.component.ts
68 68
        .subscribe((data: { envSpecific: EnvProperties }) => {
69 69
           this.properties = data.envSpecific;
70 70
           this.updateUrl(data.envSpecific.baseLink+this._router.url);
71
           this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url);
71 72

  
72 73
        });
73 74
      this.sub =  this.route.queryParams.subscribe(params => {
74 75
          this.softwareInfo = null;
75 76
          this.updateTitle("Software");
76 77
          this.updateDescription("Software, search, open access");
77
          this.seoService.createLinkForCanonicalURL();
78

  
78
          
79 79
            this.softwareId = params['softwareId'];
80 80
             console.info("Id is :"+this.softwareId);
81 81

  
......
130 130
                }*/
131 131
                if(this.softwareInfo.title){
132 132
                  this.updateTitle(this.softwareInfo.title);
133
                  this.updateDescription("Software, search, repositories, open access,"+this.softwareInfo.title);
133
                  this.updateDescription("Software, "+this.softwareInfo.title);
134 134
                }
135 135
                if( this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
136 136
                  this.piwiksub = this._piwikService.trackView(this.properties, this.softwareInfo.title/*.name*/, this.piwikSiteId).subscribe();
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/claims/directLinking/directLinking.component.ts
51 51

  
52 52
                  this._meta.updateTag({content:title},"property='og:title'");
53 53
                  this._title.setTitle(title);
54
                  this.seoService.createLinkForCanonicalURL(false);
55 54

  
56 55
  }
57 56
  ngOnInit() {
......
59 58
      .subscribe((data: { envSpecific: EnvProperties }) => {
60 59
         this.properties = data.envSpecific;
61 60
         this.url = data.envSpecific.baseLink+this._router.url;
61
         this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url, false);
62 62

  
63 63
      });
64 64

  
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/claims/claim-utils/displayClaims/displayClaims.component.ts
34 34

  
35 35
      });
36 36
     this.sub = this.route.queryParams.subscribe(params => {
37
       this.seoService.createLinkForCanonicalURL(false);
37
      this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url, false);
38 38

  
39 39
      if( this.myClaims){
40 40
          this.fetchBy = "User";
......
96 96
  navigateTo: string = "Claims";
97 97
  resultsNum: number ;
98 98
  claims: string[];
99
  @Input() moreClaimsURL:string;// ="/participate/claim";
99
  @Input() externalPortalUrl:string = null;
100 100
  @Input() claimsInfoURL:string;// ="https://www.openaire.eu/linking";
101 101

  
102 102
  @ViewChild (ModalLoading) loading : ModalLoading ;
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/landingPages/software/software.service.ts
199 199

  
200 200
      for(let i=0; i<length; i++) {
201 201
        let author = Array.isArray(authors) ? authors[i] : authors;
202
        this.softwareInfo.authors[author.rank-1] = author.content;
202
        this.softwareInfo.authors[author.rank] = author.content;
203 203
      }
204 204

  
205 205
      this.softwareInfo.authors = this.softwareInfo.authors.filter(function (item) {
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/utils/pagingFormatter.component.ts
9 9
  template: `
10 10

  
11 11

  
12
   <ul  *ngIf=" ( getTotalPages() > 0 ) && (getTotalPages() > 1) && ( 0 < currentPage &&  currentPage <= getTotalPages() ) " class="uk-pagination">
12
   <ul  *ngIf=" ( getTotalPages() > 0 ) && (getTotalPages() > 1) && ( 0 < currentPage &&  currentPage <= getTotalPages() ) " class="uk-pagination uk-margin-bottom-remove">
13 13

  
14 14
   <!--li *ngIf=" currentPage  > 1" ><a  [queryParams]="routerHelper.createQueryParamsPaging(parameterNames,parameterValues,'page',1)"   routerLinkActive="router-link-active" [routerLink]=baseUrl aria-label="Previous">
15 15
   <span><span class="uk-icon"><svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="chevron-left" ratio="1"><polyline fill="none" stroke="#000" stroke-width="1.03" points="13 16 7 10 13 4"></polyline></svg></span></span></a></li-->
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/utils/email/validator.ts
2 2

  
3 3
export class Validator {
4 4

  
5
  private static regex = "^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$";
5
  //private static regex = "^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$";
6
  private static regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
7
  /*
8
  private static regex2= /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
9
  // for expanation paste it in https://www.regextester.com/
10
  // RFC5322 https://emailregex.com/
11
  */
6 12

  
7 13
  public static hasValidEmails(data: any): boolean {
8 14
    for(let i = 0; i < data.length; i++) {
9 15
      if (!this.emailValidator(data[i])) {
10 16
        // TODO remove console message after final testing
11
        console.log("INVALID EMAIL");
17
        console.log("INVALID EMAIL: "+data[i]);
12 18
        return false;
13 19
      }
14 20
    }
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/utils/properties/env-properties.ts
70 70

  
71 71
  cookieDomain;
72 72

  
73

  
73
  feedbackQuestionaire;
74 74
  feedbackmail;
75 75
  feedbackmailForMissingEntities;
76 76

  
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/utils/errorMessages.component.ts
30 30
            [class]="(tab_error_class ? 'uk-margin-top' : 'uk-animation-fade') + ' uk-alert uk-alert-warning'" role="alert">Changes could not be saved
31 31
      </div>
32 32
      <div *ngIf="status.some(checkErroCode(errorCodes.FORBIDDEN))"
33
            [class]="(tab_error_class ? 'uk-margin-top' : 'uk-animation-fade') + 'uk-alert uk-alert-danger'" role="alert">You are not allowed to access this page
33
            [class]="(tab_error_class ? 'uk-margin-top' : 'uk-animation-fade') + ' uk-alert uk-alert-danger'" role="alert">You are not allowed to access this page
34 34
      </div>
35 35
    `
36 36
  })
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/deposit/depositResult.component.ts
275 275

  
276 276
      var title = "Deposit "+this.requestFor;
277 277
      var description = "Openaire, repositories, open access, content provider, compatibility, organization, deposit "+ this.requestFor;
278
      this.seoService.createLinkForCanonicalURL(false);
279 278

  
280 279
      this.updateTitle(title);
281 280
      this.updateDescription(description);
......
285 284
      this.route.data
286 285
        .subscribe((data: { envSpecific: EnvProperties }) => {
287 286
           this.properties = data.envSpecific;
287
           this.seoService.createLinkForCanonicalURL(this.properties.baseLink+this._router.url, false);
288 288
           this.updateUrl(data.envSpecific.baseLink+this._router.url);
289 289
           this.url = data.envSpecific.baseLink+this._router.url;
290 290

  
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/login/utils/guardHelper.class.ts
11 11
//
12 12
// }
13 13
export class LoginErrorCodes {
14
   public static NOT_LOGGIN:number =1;
14
   public static NOT_LOGIN:number =1;
15 15
   public static NOT_ADMIN:number =2;
16 16
   public static NOT_VALID:number =3;
17 17
   public static NOT_CONNECT_ADMIN:number =4;
18 18
   public static NO_COMMUNITY:number =5;
19
   public static NOT_SUBSCIBER:number =6;
19
   public static NOT_SUBSCRIBER:number =6;
20 20

  
21 21
}
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/login/adminLoginGuard.guard.ts
1 1
import { Injectable } from '@angular/core';
2
import { Router,CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';
2
import {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanLoad, Route} from '@angular/router';
3 3
import {Observable}       from 'rxjs/Observable';
4 4
import {Session} from './utils/helper.class';
5 5
import {LoginErrorCodes} from './utils/guardHelper.class';
6 6

  
7 7
@Injectable()
8
export class AdminLoginGuard implements CanActivate {
8
export class AdminLoginGuard implements CanActivate, CanLoad {
9 9

  
10 10
  constructor(private router: Router) {}
11 11

  
12
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
13
    var user;
14
    var loggedIn = false;
15
    var isAdmin = false;
16
    var errorCode = LoginErrorCodes.NOT_LOGGIN;
12
  check(path: string) : boolean{
13
    let loggedIn = false;
14
    let isAdmin = false;
15
    let errorCode = LoginErrorCodes.NOT_LOGIN;
17 16
    if(Session.isLoggedIn()){
18 17
      loggedIn = true;
19
      if(!Session.isLoggedIn()){
20
        loggedIn = false;
21
        errorCode = LoginErrorCodes.NOT_VALID;
22
      }else {
23
        isAdmin = Session.isPortalAdministrator();
24
        if(!isAdmin){
25
          errorCode = LoginErrorCodes.NOT_ADMIN;
26
        }
18
      isAdmin = Session.isPortalAdministrator();
19
      if(!isAdmin){
20
        errorCode = LoginErrorCodes.NOT_ADMIN;
27 21
      }
28
    }else{
29
      errorCode =LoginErrorCodes.NOT_LOGGIN;
30 22
    }
23
    if(!loggedIn || !isAdmin) {
24
      this.router.navigate(['/user-info'], {queryParams: {"errorCode": errorCode, "redirectUrl": path}});
25
    }
26
    return loggedIn && isAdmin;
27
  }
31 28

  
32
    if(!loggedIn){
33
      // this.guardHelper.redirect("/user-info",errorCode,state.url);
34
      this.router.navigate(['/user-info'], { queryParams: { "errorCode": errorCode, "redirectUrl":  state.url } });
29
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
30
    return this.check(state.url);
31
  }
35 32

  
36
      return false;
37
    }else if(!isAdmin){
38
        // this.guardHelper.redirect("/user-info",errorCode,state.url);
39
        this.router.navigate(['/user-info'], { queryParams: { "errorCode": errorCode, "redirectUrl":  state.url } });
40
        return false;
41
      }else{
42
      return true;
43
    }
33
  canLoad(route: Route): Observable<boolean> | Promise<boolean> | boolean {
34
    return this.check('/' + route.path);
44 35
  }
45 36
}
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/claims/claim-utils/entityFormatter/projectTitleFormatter.component.ts
6 6
@Component({
7 7
  selector: 'project-title',
8 8
  template: `
9
  <span class="project-title">
9
  <span *ngIf="externalPortalUrl" class="project-title">
10
    <span  ><a [href] = "externalPortalUrl + '/search/project?projectId='+project['openaireId']"   >{{project['name']}} ({{project['funderName']}})</a></span>
11
  </span>
12
  <span *ngIf="!externalPortalUrl" class="project-title">
10 13
    <span  ><a [queryParams]="routerHelper.createQueryParam('projectId',project['openaireId'])"   routerLinkActive="router-link-active" routerLink="/search/project" >{{project['name']}} ({{project['funderName']}})</a></span>
11 14
  </span>
12 15
  `
......
15 18
export class ProjectTitleFormatter {
16 19
  @Input() project: string[];
17 20
  @Input() searchLink: string;
21
  @Input() externalPortalUrl:string = null;
18 22
  public url:string;
19 23
  public routerHelper:RouterHelper = new RouterHelper();
20 24
  constructor () {}
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/claims/claim-utils/displayClaims/displayClaims.component.html
153 153
          <tr *ngFor="let claim of claims " >
154 154
           <td *ngIf="enableDelete"><input [id]="claim.id" type="checkbox" (click)="select(claim,$event)"  [ngModel]="isSelected(claim.id)"/></td>
155 155
           <td></td>
156
            <td><claim-entity [entity]="claim.target" [type]="claim.targetType" [(properties)]=properties> </claim-entity></td>
157
             <td><claim-entity [entity]="claim.source" [type]="claim.sourceType" [(properties)]=properties> </claim-entity></td>
156
            <td><claim-entity [entity]="claim.target" [type]="claim.targetType" [(properties)]=properties [externalPortalUrl]=externalPortalUrl> </claim-entity></td>
157
             <td><claim-entity [entity]="claim.source" [type]="claim.sourceType" [(properties)]=properties [externalPortalUrl]=externalPortalUrl> </claim-entity></td>
158 158
            <td *ngIf="showUserEmail">{{claim.userMail}}</td>
159 159
            <td>{{claim.date}}</td>
160 160
         </tr>
......
165 165

  
166 166
</div>
167 167
<div class="uk-width-1-5">
168
  <div class="uk-card portal-card uk-padding" *ngIf="moreClaimsURL || claimsInfoURL">
169
    <h6 *ngIf="moreClaimsURL.indexOf('http')==-1" class="uk-h6">
170
      <a class="el-content uk-link-text" [routerLink]="moreClaimsURL">Claim more links?</a>
168
  <div class="uk-card portal-card uk-padding" *ngIf="externalPortalUrl || claimsInfoURL">
169
    <h6 *ngIf="!externalPortalUrl || externalPortalUrl.indexOf('http')==-1" class="uk-h6">
170
      <a class="el-content uk-link-text" routerLink="/participate/claim">Claim more links?</a>
171 171
    </h6>
172
    <h6 *ngIf="moreClaimsURL.indexOf('http')!=-1"  class="uk-h6">
173
      <a class="el-content uk-link-text" [href]="moreClaimsURL" target="_blank">Claim more links?</a>
172
    <h6 *ngIf="externalPortalUrl && externalPortalUrl.indexOf('http')!=-1"  class="uk-h6">
173
      <a class="el-content uk-link-text" [href]="externalPortalUrl+'/participate/claim'" target="_blank">Claim more links?</a>
174 174
    </h6>
175 175
    <h6  *ngIf="claimsInfoURL" class="uk-h6 uk-margin-small-top">
176 176
      <a class="el-content uk-link-text" [href]="claimsInfoURL" target="_blank">Learn more</a>
177 177
    </h6>
178
    <!-- <div  *ngIf="moreClaimsURL.indexOf('http')==-1"><a  [routerLink]="moreClaimsURL">Claim more links?</a></div>
179
    <div *ngIf="moreClaimsURL.indexOf('http')!=-1" ><a  [href]="moreClaimsURL" target="_blank">Claim more links?</a></div>
180
    <div><a  [href]="claimsInfoURL" target="_blank">Learn more</a></div> -->
181 178
  </div>
182 179
  <helper position="right" styleName=" uk-width-1-5"></helper>
183 180
</div>
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/sharedComponents/bottom.component.html
6 6
               <div *ngIf="showOpenaire" class="uk-margin-small uk-margin-remove-top uk-text-left@s uk-text-center">
7 7
                  <img [src]="assetsPath + 'common/Logo_Horizontal_white_small.png'"   data-width="126" data-height="30" class="el-image" alt="OpenAIRE">
8 8
               </div>
9
               <div *ngIf="showDnet" id="footer#5" class="uk-margin uk-text-left@s uk-text-center">
10
                  <img  [src]="assetsPath + 'common/commission.jpg'"   sizes="(min-width: 50px) 50px" data-width="427" data-height="285" class="el-image" alt="European Commission">
9
               <div *ngIf="showCommision" id="footer#5" class="uk-margin uk-text-left@s uk-text-center">
10
                 <div class="uk-margin">
11
                  <img style="margin-right: 8px; float: left;" [src]="assetsPath + 'common/commission.jpg'" alt="flag black white low" width="50" height="33">
12
                  <span style="font-size: 8pt; line-height: 0.7!important;" [innerHtml] = "(grantAdvance)?grantAdvanceText:grantConenctText"></span>
13
                </div>
14
                  <!--img  [src]="assetsPath + 'common/commission.jpg'"   sizes="(min-width: 50px) 50px" data-width="427" data-height="285" class="el-image" alt="European Commission"-->
11 15
               </div>
12
               <div *ngIf="showSocialButton" id="footer#6" class="newsletter uk-margin uk-margin-remove-bottom uk-text-left@s uk-text-center uk-panel">
16
               <div *ngIf="showSocialButtons" id="footer#6" class="newsletter uk-margin uk-margin-remove-bottom uk-text-left@s uk-text-center uk-panel">
13 17
                  <h5 class="el-title uk-margin uk-h5">
14 18
                     Newsletter
15 19
                  </h5>
16
                  <a target="_blank" href="https://www.openaire.eu/newsletter/view" class="el-link">
20
                  <a target="_blank" href="https://www.openaire.eu/past-newsletters/listing" class="el-link">
17 21
                     <span   class="el-image uk-icon">
18 22
                        <svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
19 23
                           <circle cx="3.12" cy="16.8" r="1.85"></circle>
......
23 27
                     </span>
24 28
                  </a>
25 29
               </div>
26
               <div *ngIf="showSocialButton" id="footer#7" class="newsletter uk-margin-small uk-margin-remove-top uk-text-left@s   uk-panel">
30
               <div *ngIf="showSocialButtons" id="footer#7" class="newsletter uk-margin-small uk-margin-remove-top uk-text-left@s   uk-panel">
27 31

  
28 32
                  <div class="acymailing_module" id="acymailing_module_formAcymailing60611">
29 33
                     <div class="" id="acymailing_toggle_formAcymailing60611">
......
32 36
                     </div>
33 37
                  </div>
34 38
               </div>
35
               <div  *ngIf="showSocialButton"class="uk-margin-small uk-margin-remove-top uk-text-left@s uk-text-center">
39
               <div  *ngIf="showSocialButtons" class="uk-margin-small uk-margin-remove-top uk-text-left@s uk-text-center">
36 40
                  <div class="uk-child-width-auto uk-grid-small uk-flex-left@s uk-flex-center uk-grid" uk-grid="">
37 41
                     <div class="uk-first-column">
38 42
                        <a  href="https://www.facebook.com/groups/openaire/" target="_blank" class="el-link uk-icon-button uk-icon">
......
77 81
                  </div>
78 82
               </div>
79 83
            </div>
80
            <div *ngIf="!showMenu" class="uk-width-expand@m uk-light">
84
            <div *ngIf="showMenuItems" class="uk-width-expand@m uk-light">
81 85
               <div id="footer#7" class="uk-text-right@m uk-text-center">
82 86

  
83 87
                  <ul class="uk-subnav uk-margin-remove-bottom uk-subnav-divider" uk-margin="">
......
91 95

  
92 96
               </div>
93 97
            </div>
94
            <div *ngIf="showMenu" id="footer#9" class="uk-width-expand@s uk-visible@m">
98
            <div *ngIf="!showMenuItems" id="footer#9" class="uk-width-expand@s uk-visible@m">
95 99
               <div id="footer#10" class="uk-width-medium uk-text-left@s uk-text-center uk-panel">
96 100
                  <h3 class="el-title uk-h6">Dashboards</h3>
97 101
                  <ul class="uk-nav uk-nav-default uk-nav-parent-icon uk-nav-accordion" uk-nav="">
......
103 107
                  </ul>
104 108
               </div>
105 109
            </div>
106
            <div *ngIf="showMenu" id="footer#11" class="uk-width-expand@s uk-visible@m">
110
            <div *ngIf="!showMenuItems" id="footer#11" class="uk-width-expand@s uk-visible@m">
107 111
               <div id="footer#12" class="uk-width-medium uk-text-left@s uk-text-center uk-panel">
108 112
                  <h3 class="el-title uk-h6">Support</h3>
109 113
                  <ul class="uk-nav uk-nav-default uk-nav-parent-icon uk-nav-accordion" uk-nav="">
......
116 120
                  </ul>
117 121
               </div>
118 122
            </div>
119
            <div *ngIf="showMenu" id="footer#13" class="uk-width-expand@s uk-visible@m">
123
            <div *ngIf="!showMenuItems" id="footer#13" class="uk-width-expand@s uk-visible@m">
120 124
               <div id="footer#14" class="uk-width-medium uk-text-left@s uk-text-center uk-panel">
121 125
                  <h3 class="el-title uk-h6">Updates</h3>
122 126
                  <ul class="uk-nav uk-nav-default uk-nav-parent-icon uk-nav-accordion" uk-nav="">
123 127
                     <li><a target="_blank" href="https://www.openaire.eu/news/">News</a></li>
124 128
                     <li><a target="_blank" href="https://www.openaire.eu/events">Events</a></li>
125 129
                     <li><a target="_blank" href="https://www.openaire.eu/blogs/magazine">Blogs</a></li>
130
                     <li><a target="_blank" href="https://www.openaire.eu/newsletter/listing">Newsletters</a></li>
126 131
                     <li><a target="_blank" href="https://www.openaire.eu/documents">Documents</a></li>
127 132
                  </ul>
128 133
               </div>
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/sharedComponents/SEO/SEO.service.ts
1 1
import { Injectable, Inject } from '@angular/core';
2 2
import { DOCUMENT } from '@angular/common';
3
import {  Optional, RendererFactory2, ViewEncapsulation } from '@angular/core';
3 4

  
4
// @Injectable({
5
//    providedIn: 'root'
6
// })
7 5
@Injectable()
8 6
export class SEOService {
9
   constructor( @Inject(DOCUMENT) private doc) {
7
   constructor( @Inject(DOCUMENT) private doc,
8
   private rendererFactory: RendererFactory2,
9
   @Inject(DOCUMENT) private document) {
10 10
   }
11 11

  
12
   createLinkForCanonicalURL(addParameters:boolean=true) {
13
       var url = "";
14
       if(this.doc  ){
12
   createLinkForCanonicalURL(url:string, addParameters:boolean=true) {
13
       if(this.doc && (typeof this.doc.getElementById === "function" || typeof this.doc.createElement === "function") ){
15 14
         if(addParameters ||  !this.doc.URL || this.doc.URL.indexOf("?") == -1){
16 15
           url = this.doc.URL;
17 16
         }else{
18 17
           url = this.doc.URL.substring(0,this.doc.URL.indexOf("?"));
19 18
         }
20
         console.log("createLinkForCanonicalURL");
21

  
22 19
        if (typeof this.doc.getElementById === "function") {
23 20
          let currentLink: HTMLLinkElement = this.doc.getElementById("relcan");
24 21
          if(currentLink ){
25 22
            currentLink.setAttribute('href', url);
26
            console.log("update canonical url:" + url);
27

  
28 23
            return ;
29 24
          }
30 25
        }
......
33 28
          link.setAttribute('id', 'relcan');
34 29
          link.setAttribute('rel', 'canonical');
35 30
          this.doc.head.appendChild(link);
36
          console.log("create new  canonical url:" + url);
37

  
38 31
         link.setAttribute('href', url);
39 32
        }
40 33

  
41
       }
34
      }else{
35
        try {
36
            const renderer = this.rendererFactory.createRenderer(this.document, {
37
                id: '-1',
38
                encapsulation: ViewEncapsulation.None,
39
                styles: [],
40
                data: {}
41
            });
42

  
43
            const link = renderer.createElement('link');
44
            const head = this.document.head;
45

  
46
            if (head === null) {
47
                throw new Error('<head> not found within DOCUMENT.');
48
            }
49
            renderer.setAttribute(link, "rel", "canonical");
50
            renderer.setAttribute(link, "href", (addParameters)?url:this.doc.URL.split("?")[0]);
51
            renderer.setAttribute(link, "id", "relcan");
52
            // [TODO]: get them to update the existing one (if it exists) ?
53
            renderer.appendChild(head, link);
54
        } catch (e) {
55
            console.error('Error within linkService : ', e);
56
        }
57
      }
58

  
42 59
   }
43 60

  
44 61
}
62

  
63
/*
64
 * -- LinkService --        [Temporary]
65
 * @MarkPieszak
66
 *
67
 * Similar to Meta service but made to handle <link> creation for SEO purposes
68
 * -- NOTE: Soon there will be an overall DocumentService within Angular that handles Meta/Link everything
69
 */
70
//
71
// import { Injectable, Optional, RendererFactory2, ViewEncapsulation, Inject } from '@angular/core';
72
// import { DOCUMENT } from '@angular/platform-browser';
73
//
74
// @Injectable()
75
// export class LinkService {
76
//
77
//     constructor(
78
//         private rendererFactory: RendererFactory2,
79
//         @Inject(DOCUMENT) private document
80
//     ) {
81
//     }
82

  
83
    /**
84
     * Inject the State into the bottom of the <head>
85
     */
86
//     addTag(tag: LinkDefinition, forceCreation?: boolean) {
87
//
88
//         try {
89
//             const renderer = this.rendererFactory.createRenderer(this.document, {
90
//                 id: '-1',
91
//                 encapsulation: ViewEncapsulation.None,
92
//                 styles: [],
93
//                 data: {}
94
//             });
95
//
96
//             const link = renderer.createElement('link');
97
//             const head = this.document.head;
98
//             const selector = this._parseSelector(tag);
99
//
100
//             if (head === null) {
101
//                 throw new Error('<head> not found within DOCUMENT.');
102
//             }
103
//
104
//             Object.keys(tag).forEach((prop: string) => {
105
//                 return renderer.setAttribute(link, prop, tag[prop]);
106
//             });
107
//
108
//             // [TODO]: get them to update the existing one (if it exists) ?
109
//             renderer.appendChild(head, link);
110
//
111
//         } catch (e) {
112
//             console.error('Error within linkService : ', e);
113
//         }
114
//     }
115
//
116
//     private _parseSelector(tag: LinkDefinition): string {
117
//         // Possibly re-work this
118
//         const attr: string = tag.rel ? 'rel' : 'hreflang';
119
//         return `${attr}="${tag[attr]}"`;
120
//     }
121
// }
122

  
123
export declare type LinkDefinition = {
124
    charset?: string;
125
    crossorigin?: string;
126
    href?: string;
127
    hreflang?: string;
128
    media?: string;
129
    rel?: string;
130
    rev?: string;
131
    sizes?: string;
132
    target?: string;
133
    type?: string;
134
} & {
135
        [prop: string]: string;
136
    };
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/assets/library.css
446 446
          margin-right: 10px;
447 447
          /* border-left: 8px solid #e5e5e5; */
448 448
          margin-top: 8px;
449
          color: #666666 !important;
449 450

  
450 451
}
451 452

  
......
712 713
    text-decoration: underline; */
713 714
  border-bottom: 1px solid var(--portal-main-color) !important;
714 715
  padding: 5px 0px;
716
  /* color: var(--portal-main-color); */
715 717
}
716 718

  
717 719
.sideInfoTitle{
......
748 750
     color: var(--portal-main-contrast) !important;
749 751
     border-color:var(--portal-main-color) !important;
750 752
     border-bottom-color: var(--portal-main-color) !important;
753
     border-radius: 500px;
754
     line-height: 12px !important;
751 755
   }
752 756
.portal-color{
753 757
  color: var(--portal-main-color) !important;
......
1015 1019
.inherit-color {
1016 1020
    color: inherit;
1017 1021
}
1022

  
1023
.uk-label {
1024
  border-radius: 15px;
1025
  line-height: 15px;
1026
}
1027

  
1028
a:hover, .uk-link:hover , .uk-link:hover, a:hover {
1029
    color: var(--portal-main-color);
1030
}
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/sharedComponents/feedback/feedback.component.ts
7 7
  selector: 'feedback',
8 8
  template: `
9 9
  <div id="feedback" class="" (click) = "initialize()">
10
  	<a [href]="'mailto:' + feedbackmail +'?Subject=' + subject + '&body=' + body" target="_top" type="button" class="">
10
    <a [href]="feedbackQuestionaire ? feedbackQuestionaire : ('mailto:' + feedbackmail +'?Subject=' + subject + '&body=' + body)"
11
       [target]="feedbackQuestionaire ? '_blank' : '_top'" type="button" class="">
11 12
  		<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI5LjI5OXB4IiBoZWlnaHQ9IjUwLjYyNXB4IiB2aWV3Qm94PSIwIDAgOS4yOTkgNTAuNjI1IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA5LjI5OSA1MC42MjUiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0zLjUxNiw0Ni44N3YxLjYzNWg1LjY2N3YwLjk3NEgzLjUxNnYxLjE0N2gtMC40NGwtMC4zNTItMS4xNDdIMi4zNjdDMC43ODksNDkuNDc4LDAsNDguNzg4LDAsNDcuNDA5YzAtMC4zNCwwLjA2OC0wLjczOCwwLjIwNS0xLjE5NWwwLjc3OSwwLjI1MmMtMC4xMjEsMC4zNzUtMC4xODIsMC42OTUtMC4xODIsMC45NjFjMCwwLjM2NywwLjEyMiwwLjY0LDAuMzY2LDAuODE0YzAuMjQ0LDAuMTc2LDAuNjM2LDAuMjY0LDEuMTc1LDAuMjY0SDIuNzZWNDYuODdIMy41MTZ6Ii8+PHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTkuMjk5LDQyLjk4NWMwLDAuOTQ5LTAuMjg5LDEuNjk3LTAuODY2LDIuMjQ2Yy0wLjU3OCwwLjU0OS0xLjM4MiwwLjgyNC0yLjQwOCwwLjgyNGMtMS4wMzYsMC0xLjg1Ny0wLjI1Ni0yLjQ2Ny0wLjc2NmMtMC42MS0wLjUxMS0wLjkxNC0xLjE5My0wLjkxNC0yLjA1NGMwLTAuODA1LDAuMjY1LTEuNDQsMC43OTQtMS45MDljMC41MjktMC40NywxLjIyOC0wLjcwMywyLjA5NS0wLjcwM2gwLjYxNXY0LjQyNGMwLjc1NC0wLjAyMSwxLjMyNi0wLjIxMSwxLjcxNy0wLjU3MlM4LjQ1LDQzLjYwNiw4LjQ1LDQyLjk1YzAtMC42OTEtMC4xNDUtMS4zNzUtMC40MzQtMi4wNTFoMC44NjZjMC4xNDgsMC4zNDQsMC4yNTUsMC42NjgsMC4zMTksMC45NzVDOS4yNjcsNDIuMTgxLDkuMjk5LDQyLjU1MSw5LjI5OSw0Mi45ODV6IE0zLjQ1Nyw0My4yNDljMCwwLjUxNywwLjE2OCwwLjkyNiwwLjUwNCwxLjIzMnMwLjgwMSwwLjQ4OCwxLjM5NiwwLjU0M3YtMy4zNTdjLTAuNjEzLDAtMS4wODMsMC4xMzgtMS40MSwwLjQxQzMuNjIxLDQyLjM1LDMuNDU3LDQyLjc0MSwzLjQ1Nyw0My4yNDl6Ii8+PHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTkuMjk5LDM2LjI1MmMwLDAuOTQ5LTAuMjg5LDEuNjk3LTAuODY2LDIuMjQ2Yy0wLjU3OCwwLjU0OS0xLjM4MiwwLjgyNC0yLjQwOCwwLjgyNGMtMS4wMzYsMC0xLjg1Ny0wLjI1Ni0yLjQ2Ny0wLjc2NmMtMC42MS0wLjUxLTAuOTE0LTEuMTkzLTAuOTE0LTIuMDUzYzAtMC44MDUsMC4yNjUtMS40NDEsMC43OTQtMS45MXMxLjIyOC0wLjcwMywyLjA5NS0wLjcwM2gwLjYxNXY0LjQyNGMwLjc1NC0wLjAyLDEuMzI2LTAuMjExLDEuNzE3LTAuNTcyczAuNTg2LTAuODY5LDAuNTg2LTEuNTI1YzAtMC42OTEtMC4xNDUtMS4zNzUtMC40MzQtMi4wNTFoMC44NjZjMC4xNDgsMC4zNDQsMC4yNTUsMC42NjgsMC4zMTksMC45NzZTOS4yOTksMzUuODE5LDkuMjk5LDM2LjI1MnogTTMuNDU3LDM2LjUxNmMwLDAuNTE2LDAuMTY4LDAuOTI2LDAuNTA0LDEuMjMyYzAuMzM2LDAuMzA4LDAuODAxLDAuNDg4LDEuMzk2LDAuNTQzdi0zLjM1N2MtMC42MTMsMC0xLjA4MywwLjEzNy0xLjQxLDAuNDFDMy42MjEsMzUuNjE4LDMuNDU3LDM2LjAwOCwzLjQ1NywzNi41MTZ6Ii8+PHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTguMzE5LDI3Ljg2MnYwLjA1M2MwLjY1MiwwLjQ0OSwwLjk3OSwxLjEyMSwwLjk3OSwyLjAxN2MwLDAuODQtMC4yODYsMS40OTMtMC44NiwxLjk2UzcuMDQ3LDMyLjU5LDUuOTg5LDMyLjU5Yy0xLjA1OCwwLTEuODgxLTAuMjMzLTIuNDY3LTAuNzAyYy0wLjU4Ni0wLjQ3LTAuODc5LTEuMTIxLTAuODc5LTEuOTU3YzAtMC44NzEsMC4zMTYtMS41MzksMC45NDktMi4wMDVWMjcuODVsLTAuNDYzLDAuMDQxbC0wLjQ1MSwwLjAyM0gwLjA2NHYtMC45NzRoOS4xMTd2MC43OTFMOC4zMTksMjcuODYyeiBNOC40ODMsMjkuODA3YzAtMC42NjQtMC4xOC0xLjE0Ni0wLjU0MS0xLjQ0NHMtMC45NDQtMC40NDgtMS43NS0wLjQ0OEg1Ljk4N2MtMC45MDksMC0xLjU1OSwwLjE1MS0xLjk0NywwLjQ1NWMtMC4zODgsMC4zMDMtMC41ODMsMC43ODUtMC41ODMsMS40NDljMCwwLjU3LDAuMjIyLDEuMDA4LDAuNjY1LDEuMzExUzUuMTksMzEuNTgzLDYsMzEuNTgzYzAuODE5LDAsMS40MzgtMC4xNDksMS44NTYtMC40NTFDOC4yNzQsMzAuODMxLDguNDgzLDMwLjM4OSw4LjQ4MywyOS44MDd6Ii8+PHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTIuNjU0LDIxLjg5MWMwLTAuODQ0LDAuMjg4LTEuNDk5LDAuODY0LTEuOTY2YzAuNTc2LTAuNDY3LDEuMzkyLTAuNywyLjQ0Ni0wLjdjMS4wNTUsMCwxLjg3NCwwLjIzNSwyLjQ1OCwwLjcwNmMwLjU4NCwwLjQ3MSwwLjg3NiwxLjEyNCwwLjg3NiwxLjk2YzAsMC40MTgtMC4wNzYsMC44LTAuMjMsMS4xNDZjLTAuMTU0LDAuMzQ2LTAuMzkzLDAuNjM2LTAuNzEzLDAuODd2MC4wN2wwLjgyNiwwLjIwNXYwLjY5N0gwLjA2NHYtMC45NzNoMi4yMTVjMC40OTYsMCwwLjk0MSwwLjAxNiwxLjMzNiwwLjA0N3YtMC4wNDdDMi45NzUsMjMuNDU0LDIuNjU0LDIyLjc4MiwyLjY1NCwyMS44OTF6IE0zLjQ2OSwyMi4wMzJjMCwwLjY2NCwwLjE5LDEuMTQzLDAuNTcxLDEuNDM2czEuMDIyLDAuNDM5LDEuOTI1LDAuNDM5YzAuOTAzLDAsMS41NDgtMC4xNSwxLjkzNy0wLjQ1MWMwLjM5LTAuMzAxLDAuNTg0LTAuNzgzLDAuNTg0LTEuNDQ3YzAtMC41OTgtMC4yMTktMS4wNDMtMC42NTMtMS4zMzZzLTEuMDYyLTAuNDM5LTEuODc4LTAuNDM5Yy0wLjgzNiwwLTEuNDU5LDAuMTQ2LTEuODY5LDAuNDM5UzMuNDY5LDIxLjQxOCwzLjQ2OSwyMi4wMzJ6Ii8+PHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTkuMTgzLDEzLjU3N0w4LjI2OSwxMy43N3YwLjA0N2MwLjQwMSwwLjMyLDAuNjc0LDAuNjQsMC44MTYsMC45NThzMC4yMTQsMC43MTYsMC4yMTQsMS4xOTJjMCwwLjYzNy0wLjE2NCwxLjEzNi0wLjQ5MSwxLjQ5N2MtMC4zMjgsMC4zNjEtMC43OTUsMC41NDItMS40LDAuNTQyYy0xLjI5NywwLTEuOTc3LTEuMDM3LTIuMDM5LTMuMTExbC0wLjAzNS0xLjA5SDQuOTM0Yy0wLjUwNCwwLTAuODc2LDAuMTA4LTEuMTE2LDAuMzI1Yy0wLjI0LDAuMjE3LTAuMzYsMC41NjMtMC4zNiwxLjA0YzAsMC41MzUsMC4xNjQsMS4xNDEsMC40OTIsMS44MTZsLTAuNzQ0LDAuMjk5Yy0wLjE3Mi0wLjMxNi0wLjMwNy0wLjY2My0wLjQwNC0xLjA0Yy0wLjA5Ny0wLjM3Ny0wLjE0Ni0wLjc1NS0wLjE0Ni0xLjEzNGMwLTAuNzY2LDAuMTctMS4zMzMsMC41MS0xLjcwMmMwLjM0LTAuMzY5LDAuODg1LTAuNTU0LDEuNjM1LTAuNTU0aDQuMzg0djAuNzIySDkuMTgzeiBNOC40OTYsMTUuNzc0YzAtMC42MDUtMC4xNjYtMS4wODEtMC40OTgtMS40MjdjLTAuMzMyLTAuMzQ2LTAuNzk3LTAuNTE5LTEuMzk2LTAuNTE5aC0wLjU4bDAuMDQxLDAuOTczYzAuMDI3LDAuNzczLDAuMTQ3LDEuMzMxLDAuMzYsMS42NzNjMC4yMTQsMC4zNDIsMC41NDQsMC41MTMsMC45OTMsMC41MTNjMC4zNTIsMCwwLjYxOS0wLjEwNiwwLjgwMy0wLjMxOVM4LjQ5NiwxNi4xNTcsOC40OTYsMTUuNzc0eiIvPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik05LjI5OSw4LjI4NWMwLDAuOTMtMC4yODYsMS42NDktMC44NTgsMi4xNTljLTAuNTcxLDAuNTEtMS4zODEsMC43NjUtMi40MjgsMC43NjVjLTEuMDc1LDAtMS45MDUtMC4yNTktMi40OTEtMC43NzZTMi42NDMsOS4xNzgsMi42NDMsOC4yMjFjMC0wLjMwOSwwLjAzMy0wLjYxNywwLjEtMC45MjZDMi44MSw2Ljk4NiwyLjg4OCw2Ljc0NCwyLjk3Nyw2LjU2OGwwLjgyNiwwLjI5OUMzLjcxNyw3LjA4MiwzLjY0Niw3LjMxNiwzLjU4OSw3LjU3QzMuNTMyLDcuODI0LDMuNTA0LDguMDQ5LDMuNTA0LDguMjQ0YzAsMS4zMDUsMC44MzIsMS45NTcsMi40OTYsMS45NTdjMC43ODksMCwxLjM5Ni0wLjE1OSwxLjgxNS0wLjQ3OGMwLjQyMi0wLjMxOSwwLjYzNC0wLjc5LDAuNjM0LTEuNDE1YzAtMC41MzUtMC4xMTUtMS4wODQtMC4zNDctMS42NDZoMC44NjFDOS4xODgsNy4wOTIsOS4yOTksNy42MzMsOS4yOTksOC4yODV6Ii8+PHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTUuODk2LDQuMTc4QzUuNjU2LDQuMDEsNS4zNDQsMy43NTQsNC45NTcsMy40MUwyLjc2LDEuMzM2VjAuMTgybDIuNzM2LDIuNjAyTDkuMTgzLDB2MS4xNzhMNi4xNDYsMy40NDVsMC42MzMsMC43MzJoMi40MDJ2MC45NjFIMC4wNjR2LTAuOTZoNC44MzRjMC4yMTUsMCwwLjU0NiwwLjAxNiwwLjk5NiwwLjA0N1Y0LjE3OEg1Ljg5NnoiLz48L2c+PC9zdmc+" alt="Feedback" title="Feedback Button" height="70px">
12 13
  	</a>
13 14
  </div>
......
16 17
`
17 18
})
18 19
export class FeedbackComponent {
20
  @Input()feedbackQuestionaire:string = "";
19 21
  @Input()feedbackmail:string = "someone@example.com";
20 22
  @Input()portalName:string = "Explore";
21 23
  public subject:string;
modules/uoa-services-library/branches/changeDeposit/ng-openaire-library/src/app/sharedComponents/bottom.component.ts
10 10
})
11 11
export class BottomComponent {
12 12

  
13
@Input() showSocialButton:boolean = true;
13
@Input() showSocialButtons:boolean = true;
14 14
@Input() showOpenaire:boolean = true;
15
@Input() showMenu:boolean = true;
16
@Input() showDnet:boolean = true;
15
@Input() showMenuItems:boolean = false;
16
@Input() showCommision:boolean = true;
17 17
@Input() assetsPath:string ='assets/common-assets/';
18 18
@Input() menuItems:MenuItem [];
19 19

  
......
21 21
@Input() communityId;
22 22
@Input() environment:string = "beta";
23 23
showPage ={};
24
@Input() grantAdvance:boolean = true;
25
grantAdvanceText = "OpenAIRE-Advance receives funding from the European Union's Horizon 2020 Research and Innovation programme under Grant Agreement No. 777541."
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff