2019-06-05 15:39:02 +02:00
import { Component } from '@angular/core' ;
2019-07-15 14:21:18 +02:00
import { ActivatedRoute , ActivationEnd , NavigationStart , Router , RoutesRecognized } from '@angular/router' ;
2018-02-12 12:41:40 +01:00
2019-06-05 15:39:02 +02:00
import { EnvProperties } from './openaireLibrary/utils/properties/env-properties' ;
import { MenuItem , RootMenuItem } from './openaireLibrary/sharedComponents/menu' ;
import { EnvironmentSpecificService } from './openaireLibrary/utils/properties/environment-specific.service' ;
2018-03-16 09:55:38 +01:00
import { CommunitiesService } from "./openaireLibrary/connect/communities/communities.service" ;
import { Session } from './openaireLibrary/login/utils/helper.class' ;
2018-03-29 10:28:04 +02:00
import { ConnectHelper } from './openaireLibrary/connect/connectHelper' ;
2019-04-12 13:05:28 +02:00
import { SubscribeService } from './openaireLibrary/utils/subscribe/subscribe.service' ;
2019-06-20 10:13:31 +02:00
import { HelperFunctions } from "./openaireLibrary/utils/HelperFunctions.class" ;
2019-04-12 13:05:28 +02:00
2018-01-26 16:00:07 +01:00
@Component ( {
//changeDetection: ChangeDetectionStrategy.Default,
//encapsulation: ViewEncapsulation.Emulated,
selector : 'app-root' ,
styles : [ `
` ],
template : `
2019-06-06 16:49:43 +02:00
< div [ class ] = " ( community ) ? ( community.id + ' App ' ) : ' connectApp ' " >
2019-06-05 15:39:02 +02:00
< navbar * ngIf = "properties && showMenu && !community" portal = "connect" [ onlyTop ] = false [ userMenuItems ] = userMenuItems [ menuItems ] = menuItems
2019-06-25 16:27:27 +02:00
[ showMenu ] = showMenu [ properties ] = "properties" [ showHomeMenuItem ] = "true" > < / navbar >
2019-06-05 15:39:02 +02:00
< navbar * ngIf = "properties && showMenu && community" portal = "connect" [ onlyTop ] = false [ communityId ] = " community.id " [ userMenuItems ] = userMenuItems [ menuItems ] = menuItems
2019-06-25 16:27:27 +02:00
[ community ] = community [ showMenu ] = showMenu [ properties ] = "properties" [ enableSearch ] = "true" [ showHomeMenuItem ] = "true" > < / navbar >
2019-07-22 16:18:54 +02:00
< customization * ngIf = "properties && community" > < / customization >
2019-07-15 14:21:18 +02:00
< div class = "custom-main-content" >
< main >
< router - outlet > < / r o u t e r - o u t l e t >
< / main >
2019-06-06 16:49:43 +02:00
< / div >
2019-07-15 14:21:18 +02:00
<!-- feedback * ngIf = "isClient && properties" portalName = "Connect" [ feedbackQuestionaire ] = properties . feedbackQuestionaire > < / f e e d b a c k - - >
< cookie - law * ngIf = "isClient" position = "bottom" >
OpenAIRE uses cookies in order to function properly . < br >
Cookies are small pieces of data that websites store in your browser to allow us to give you the best browsing experience possible .
By using the OpenAIRE portal you accept our use of cookies . < a href = "//ec.europa.eu/ipg/basics/legal/cookies/index_en.htm" target = "_blank" > Read more < span class = "uk-icon" >
< svg width = "20" height = "20" viewBox = "0 0 20 20" xmlns = "http://www.w3.org/2000/svg" icon = "chevron-right" ratio = "1" > < polyline fill = "none" stroke = "#000" stroke - width = "1.03" points = "7 4 13 10 7 16" > < / polyline > < / svg >
< / span > < / a >
< / c o o k i e - l a w >
< bottom * ngIf = "properties && isClient && showMenu && !community" [ grantAdvance ] = " false " [ properties ] = " properties " > < / bottom >
< bottom * ngIf = "properties && isClient && showMenu && community" class = "communityPanelBackground" [ showSocialButtons ] = " true " [ showMenuItems ] = " true " [ grantAdvance ] = " false " [ showOpenaire ] = " true " [ communityId ] = " community.id " [ menuItems ] = bottomMenuItems [ properties ] = " properties " > < / bottom >
< / div >
2018-01-26 16:00:07 +01:00
`
} )
export class AppComponent {
isClient :boolean = false ;
2018-02-12 12:41:40 +01:00
userMenuItems :MenuItem [ ] = [ ] ;
menuItems :RootMenuItem [ ] = [ ] ;
2018-05-23 16:46:55 +02:00
bottomMenuItems :MenuItem [ ] = [ ] ;
2018-03-01 12:45:37 +01:00
public community = null ;
2018-03-16 09:55:38 +01:00
properties :EnvProperties ;
showMenu :boolean = false ;
2018-03-22 17:01:06 +01:00
communities = null ;
2019-04-16 16:26:09 +02:00
subscriberOfCommunities = false ;
managerOfCommunities = false ;
2018-03-01 12:45:37 +01:00
// community: {id:string, name:string, logoUrl:string};
2019-03-19 11:25:25 +01:00
constructor ( private route : ActivatedRoute , private propertiesService :EnvironmentSpecificService ,
2019-06-20 10:13:31 +02:00
private _communitiesService :CommunitiesService , private _subscribeService : SubscribeService ,
2019-07-22 16:18:54 +02:00
private router : Router ) {
2019-07-15 14:21:18 +02:00
router . events . forEach ( ( event ) = > {
if ( event instanceof NavigationStart ) {
HelperFunctions . scroll ( ) ;
}
} ) ;
2018-02-12 12:41:40 +01:00
}
2018-01-26 16:00:07 +01:00
ngOnInit() {
2018-03-01 17:11:31 +01:00
this . propertiesService . loadEnvironment ( )
. then ( es = > {
2019-07-15 14:21:18 +02:00
this . properties = this . propertiesService . envSpecific ;
var communityId : string = "" ;
this . _communitiesService . updateCommunities ( this . properties , this . properties . communitiesAPI ) ;
if ( this . properties . environment == "development" ) {
this . showMenu = false ;
this . route . queryParams . subscribe ( params = > {
communityId = ( params [ 'communityId' ] ) ? params [ 'communityId' ] : '' ;
this . buildMenu ( communityId ) ;
} )
} else {
this . showMenu = false ;
communityId = ConnectHelper . getCommunityFromDomain ( this . properties . domain ) ;
this . buildMenu ( communityId ) ;
}
2019-04-16 16:26:09 +02:00
2019-07-15 14:21:18 +02:00
if ( typeof document !== 'undefined' ) {
try {
this . isClient = true ;
} catch ( e ) {
}
2018-01-26 16:00:07 +01:00
}
2018-03-01 17:11:31 +01:00
} , error = > {
console . log ( "App couldn't fetch properties" ) ;
console . log ( error ) ;
2018-02-12 12:41:40 +01:00
2018-03-01 17:11:31 +01:00
} ) ;
2018-01-26 16:00:07 +01:00
}
2019-04-17 16:48:06 +02:00
public buildMenu ( communityId : string ) {
2019-07-23 14:23:41 +02:00
let community = null ;
2019-04-17 16:48:06 +02:00
this . community = null ;
2019-04-18 14:50:14 +02:00
this . _communitiesService . getCommunitiesState ( ) . subscribe (
2019-07-30 10:59:40 +02:00
communities = > {
if ( ! communities || communities . length == 0 && communityId !== null && communityId !== '' ) {
2019-07-08 11:59:21 +02:00
return ;
}
2019-04-17 16:48:06 +02:00
for ( var com of communities ) {
if ( ( communityId && communityId != "" && com . communityId == communityId
&& community != null ) ||
(
! ( communityId && communityId != "" && com . communityId == communityId )
&&
this . managerOfCommunities && this . subscriberOfCommunities ) ) {
break ;
}
if ( Session . isLoggedIn ( ) && com [ 'status' ] != "hidden" ) {
if ( Session . isCommunityCurator ( ) || Session . isPortalAdministrator ( ) ) {
this . managerOfCommunities = true ;
} else if ( com . managers . indexOf ( Session . getUserEmail ( ) ) != - 1 ) {
this . managerOfCommunities = true ;
2019-06-25 16:27:27 +02:00
}
2019-04-17 16:48:06 +02:00
}
if ( communityId && communityId != "" && com . communityId == communityId ) {
community = com ;
2019-06-25 16:27:27 +02:00
let isCommunityManager : boolean = false ;
2019-06-20 15:34:07 +02:00
if ( Session . isCommunityCurator ( ) || Session . isPortalAdministrator ( ) ) {
2019-06-25 16:27:27 +02:00
isCommunityManager = true ;
2019-06-20 15:34:07 +02:00
} else if ( com . managers . indexOf ( Session . getUserEmail ( ) ) != - 1 ) {
2019-06-25 16:27:27 +02:00
isCommunityManager = true ;
2019-06-20 15:34:07 +02:00
}
2019-04-17 16:48:06 +02:00
this . community = { id : community.communityId , name : ( community . shortTitle ) ? community.shortTitle :community.title , logoUrl :community.logoUrl } ;
2019-06-20 15:34:07 +02:00
this . menuItems = [ ] ;
2019-06-25 16:27:27 +02:00
2019-06-20 15:34:07 +02:00
this . menuItems . push (
2019-04-17 16:48:06 +02:00
{ rootItem : new MenuItem ( "search" , "Search" , "" , "/search/find" , false , [ ] , [ "/search/find" , "/search/find/publications" , "/search/find/datasets" , "/search/find/software" , "/search/find/other" , "/search/find/projects" , "/search/find/dataproviders" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
items : [ new MenuItem ( "" , "Publications" , "" , "/search/find/publications" , false , [ "publication" ] , [ "/search/find/publications" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
new MenuItem ( "" , "Research Data" , "" , "/search/find/datasets" , false , [ "dataset" ] , [ "/search/find/datasets" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
new MenuItem ( "" , "Software" , "" , "/search/find/software" , false , [ "software" ] , [ "/search/find/software" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
new MenuItem ( "" , "Other Research Products" , "" , "/search/find/other" , false , [ "orp" ] , [ "/search/find/other" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
new MenuItem ( "" , "Projects" , "" , "/search/find/projects/" , false , [ "project" ] , [ "/search/find/projects" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
new MenuItem ( "" , "Content Providers" , "" , "/search/find/dataproviders" , false , [ "datasource" ] , [ "/search/find/dataproviders" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
2019-06-20 15:34:07 +02:00
] } ) ;
this . menuItems . push ( {
2019-07-22 15:23:41 +02:00
rootItem : new MenuItem ( "deposit" , "Deposit" , "" , "/participate/deposit/learn-how" , false , [ ] , [ "/participate/deposit/learn-how" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
2019-04-17 16:48:06 +02:00
items : [
2019-07-16 13:53:18 +02:00
/ *
2019-04-17 16:48:06 +02:00
new MenuItem ( "" , "Zenodo Communities" , "" , "/participate/share-zenodo" , false , [ ] , [ "/participate/share-zenodo" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
new MenuItem ( "" , "Publications" , "" , "/participate/deposit-publications" , false , [ "publication" ] , [ "/participate/deposit-publications" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
2019-07-16 13:53:18 +02:00
new MenuItem ( "" , "Research Data" , "" , "/participate/deposit-datasets" , false , [ "dataset" ] , [ "/participate/deposit-datasets" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } )
* /
]
2019-06-20 15:34:07 +02:00
} ) ;
this . menuItems . push (
2019-04-17 16:48:06 +02:00
{
rootItem : new MenuItem ( "link" , "Link" , "" , "/participate/claim" , false , [ ] , [ "/participate/claim" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
2019-07-23 14:23:41 +02:00
items : [
new MenuItem ( "" , "Start linking" , "" , "/participate/claim" , false , [ ] , [ "/participate/claim" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
new MenuItem ( "" , "Learn more" , this . properties . claimsInformationLink , "" , false , [ ] , [ ] , { } )
]
2019-06-20 15:34:07 +02:00
} ) ;
2019-06-25 16:27:27 +02:00
if ( isCommunityManager ) {
this . menuItems . push (
{
rootItem : new MenuItem ( "manage" , "Manage" , 'https://beta.admin.connect.openaire.eu/dashboard?communityId=' + community . communityId , "" , false , [ ] , [ ] , { } ) ,
items : [ ]
} ) ;
}
2019-06-20 15:34:07 +02:00
2019-04-17 16:48:06 +02:00
}
}
if ( community == null ) {
this . menuItems = [ ] ;
2019-07-22 15:23:41 +02:00
this . menuItems . push ( { rootItem : new MenuItem ( "about" , "About" , "" , "/about/learn-how" , false , [ ] , null , { } ) , items : [ ] } ) ;
2019-04-17 16:48:06 +02:00
var myCommunities = [ ] ;
2019-07-26 11:49:44 +02:00
/ * i f ( t h i s . m a n a g e r O f C o m m u n i t i e s ) {
2019-04-17 16:48:06 +02:00
myCommunities . push ( new MenuItem ( "" , "Managing communities" , "" , "/search/find/communities" , false , [ ] , [ ] , { role : "%22manager%22" } ) )
}
if ( Session . isLoggedIn ( ) ) {
2019-06-05 15:39:02 +02:00
this . _subscribeService . getCommunitiesSubscribedTo ( this . properties , Session . getUserEmail ( ) ) . subscribe (
2019-04-17 16:48:06 +02:00
pids = > {
if ( pids . length > 0 ) {
myCommunities . push ( new MenuItem ( "" , "Subscribed to communities" , "" , "/search/find/communities" , false , [ ] , [ ] , { status : "%22subscribed%22" } ) )
}
} ,
error = > {
console . error ( "Error fetching your subscribed communities" )
} ) ;
2019-07-26 11:49:44 +02:00
} * /
2019-04-17 16:48:06 +02:00
this . menuItems . push ( { rootItem : new MenuItem ( "communities" , "Communities" , "" , "/search/find/communities" , false , [ ] , null , { } ) , items : [ ] } ) ;
2019-06-25 16:27:27 +02:00
this . menuItems . push ( { rootItem : new MenuItem ( "join" , "Join" , "" , "/contact-us" , false , [ ] , null , { } ) , items : [ ] } ) ;
2019-07-26 11:49:44 +02:00
/ * i f ( t h i s . m a n a g e r O f C o m m u n i t i e s | | t h i s . s u b s c r i b e r O f C o m m u n i t i e s ) {
2019-06-25 16:27:27 +02:00
let myCommunitiesMenu = new MenuItem ( "myCommunities" , "My Communities" , "" , "" , false , [ ] , [ ] , { } ) ;
myCommunitiesMenu . setMarkAsActive ( false ) ;
this . menuItems . push ( { rootItem : myCommunitiesMenu , items : myCommunities } ) ;
2019-07-26 11:49:44 +02:00
} * /
2019-06-25 16:27:27 +02:00
2019-04-17 16:48:06 +02:00
this . bottomMenuItems = [
new MenuItem ( "" , "About" , "https://beta.openaire.eu/project-factsheets" , "" , false , [ ] , [ ] , { } ) ,
new MenuItem ( "" , "News - Events" , "https://beta.openaire.eu/news-events" , "" , false , [ ] , [ ] , { } ) ,
new MenuItem ( "" , "Blog" , "https://blogs.openaire.eu/" , "" , false , [ ] , [ ] , { } ) ,
new MenuItem ( "" , "Contact us" , "https://beta.openaire.eu/contact-us" , "" , false , [ ] , [ ] , { } )
] ;
// if(this.properties.showContent){
// this.bottomMenuItems.push(new MenuItem("","Content Policy","","/content",false,[],[],{}));
// }
this . userMenuItems = [
// new MenuItem("","My links","","/myclaims",false,[],["/myclaims"],(data['communityId'] && typeof document !== 'undefined' && ConnectHelper.isProduction(document.location.hostname))?{}:{communityId:data['communityId']}),
] ;
2019-06-28 17:51:18 +02:00
if ( Session . isPortalAdministrator ( ) ) {
//((this.properties.environment == "beta") ? "https://beta.admin.connect.openaire.eu" : "https://admin.explore.openaire.eu") + "/dashboard?communityId=openaire"
this . userMenuItems . push ( new MenuItem ( "" , "Manage Helptexts" ,
( ( this . properties . environment == "production" ) ? "https://admin.explore.openaire.eu" : "https://beta.admin.connect.openaire.eu" ) + "/dashboard?communityId=connect" ,
"" , false , [ ] , [ ] , { } ) )
}
2019-07-26 11:49:44 +02:00
if ( this . managerOfCommunities ) {
this . userMenuItems . push ( new MenuItem ( "" , "Managing communities" , "" , "/search/find/communities" , false , [ ] , [ ] , { role : "%22manager%22" } ) )
}
if ( Session . isLoggedIn ( ) ) {
this . _subscribeService . getCommunitiesSubscribedTo ( this . properties , Session . getUserEmail ( ) ) . subscribe (
pids = > {
2019-07-29 15:21:08 +02:00
if ( pids . length > 0 ) {
2019-07-26 11:49:44 +02:00
this . userMenuItems . push ( new MenuItem ( "" , "Subscribed to communities" , "" , "/search/find/communities" , false , [ ] , [ ] , { status : "%22subscribed%22" } ) )
}
} ,
error = > {
console . error ( "Error fetching your subscribed communities" )
} ) ;
}
2019-04-17 16:48:06 +02:00
} else {
this . bottomMenuItems = [
2019-07-02 14:23:18 +02:00
// new MenuItem("","About","","/about",false,[],["/about"],this.properties.environment!="development"?{}:{communityId:community.communityId}),
2019-04-17 16:48:06 +02:00
new MenuItem ( "" , "Organizations" , "" , "/organizations" , false , [ ] , [ "/organizations" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } )
] ;
if ( this . properties . showContent ) {
this . bottomMenuItems . push ( new MenuItem ( "" , "Content Policy" , "" , "/content" , false , [ ] , [ ] , { } ) ) ;
}
this . userMenuItems = [ new MenuItem ( "" , "My profile" , "" , "" , false , [ ] , [ ] , { } ) ,
new MenuItem ( "" , "My links" , "" , "/myclaims" , false , [ ] , [ "/myclaims" ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
new MenuItem ( "" , "Invite users" , "" , "/invite" , false , [ ] , [ ] , this . properties . environment != "development" ? { } : { communityId :community.communityId } ) ,
] ;
if ( this . managerOfCommunities ) {
this . userMenuItems . push ( new MenuItem ( "" , "Support" , "https://openaire-connect.d4science.org/group/openaire-connect-gateway/explore?siteId=172366611" , "" , false , [ ] , [ ] , { } ) )
}
}
2019-08-28 12:08:57 +02:00
this . showMenu = true ;
2019-04-17 16:48:06 +02:00
} ) ;
}
2018-01-26 16:00:07 +01:00
}