[Graph | Trunk]

SEO updates:
        -titles, meta description json ld
        -piwik calls
        -sitemap.xml
        -robots.txt
        -add error page

Add timeout interceptor



git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-graph-portal/trunk@59855 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
Argiro Kokogiannaki 2020-11-16 12:56:17 +00:00
parent a3416eb649
commit 036a57940b
21 changed files with 199 additions and 44 deletions

View File

@ -17,7 +17,9 @@
"tsConfig": "src/tsconfig.app.json",
"polyfills": "src/polyfills.ts",
"assets": [
"src/assets"
"src/assets",
"src/robots.txt",
"src/sitemap.xml"
],
"styles": [
"src/styles.css",
@ -49,6 +51,10 @@
{
"replace": "src/index.html",
"with": "src/index.prod.html"
},
{
"replace": "src/robots.txt",
"with": "src/robots.prod.txt"
}
]
},
@ -112,7 +118,8 @@
],
"assets": [
"src/assets",
"src/robots.txt"
"src/robots.txt",
"src/sitemap.xml"
]
}
},

View File

@ -1,4 +1,10 @@
<div class="about">
<schema2jsonld [URL]="properties.domain"
[logoURL]="properties.domain + '/assets/common-assets/logo-small-graph.png'"
[description]="description"
type="other"
[name]="title">
</schema2jsonld>
<div class="uk-section">
<div class="uk-margin-large-left uk-margin-medium-bottom">
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>

View File

@ -1,8 +1,12 @@
import {AfterViewChecked, Component, ElementRef, OnInit, ViewChild} from '@angular/core';
import {faqs} from './faqs';
import {ActivatedRoute} from '@angular/router';
import {Title} from '@angular/platform-browser';
import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
import {ActivatedRoute, Router} from '@angular/router';
import {Meta, Title} from '@angular/platform-browser';
import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
import {properties} from '../../environments/environment';
import {Subscription} from 'rxjs';
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
import {SEOService} from '../openaireLibrary/sharedComponents/SEO/SEO.service';
declare var UIkit: any;
@ -19,7 +23,10 @@ export class AboutComponent implements OnInit {
public dedupMatchingAndElectionReadMore: boolean = false;
public enrichmentPropagationReadMore: boolean = false;
public enrichmentMiningReadMore: boolean = false;
properties:EnvProperties;
subs: Subscription[] = [];
description = "The OpenAIRE Research Graph includes metadata and links between scientific products (e.g. literature, datasets, software, other research products), organizations, funders, funding streams, projects, communities, and (provenance) data sources. Information on how we build it, the architecture, the infrastructure and the team.";
title = "OpenAIRE - Research Graph | About";
public breadcrumbs: Breadcrumb[] = [
{
name: 'home',
@ -30,17 +37,29 @@ export class AboutComponent implements OnInit {
}
];
constructor(private title: Title,
private route: ActivatedRoute) {
constructor(private _title: Title,
private route: ActivatedRoute, private _router: Router,
private _piwikService:PiwikService,
private _meta: Meta, private seoService: SEOService) {
}
ngOnInit() {
this.title.setTitle('OpenAIRE - Research Graph | About');
this.route.fragment.subscribe(fragment => {
this.properties = properties;
this._title.setTitle(this.title);
this._meta.updateTag({content:this.description},"name='description'");
this._meta.updateTag({content:this.description},"property='og:description'");
this._meta.updateTag({content:this.title},"property='og:title'");
this.subs.push(this.route.fragment.subscribe(fragment => {
setTimeout(() => {
this.goTo(fragment);
}, 100);
});
}));
var url = this.properties.domain + this.properties.baseLink+this._router.url;
this.seoService.createLinkForCanonicalURL(url, false);
this._meta.updateTag({content:url},"property='og:url'");
if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
this.subs.push(this._piwikService.trackView(this.properties, this.title).subscribe());
}
}
goTo(id: string) {
@ -55,4 +74,10 @@ export class AboutComponent implements OnInit {
changeTab(index: number) {
UIkit.switcher(this.tabs.nativeElement).show(index);
}
public ngOnDestroy() {
for (let sub of this.subs) {
sub.unsubscribe();
}
}
}

View File

@ -8,6 +8,7 @@ import {ActionPointComponent} from "./action-point.component";
import {IconsModule} from "../openaireLibrary/utils/icons/icons.module";
import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
import {arrow_right} from "../openaireLibrary/utils/icons/icons";
import {Schema2jsonldModule} from '../openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module';
@NgModule({
imports: [
@ -16,7 +17,8 @@ import {arrow_right} from "../openaireLibrary/utils/icons/icons";
path: '', component: AboutComponent
}]),
BreadcrumbsModule,
IconsModule
IconsModule,
Schema2jsonldModule
],
declarations: [AboutComponent, ActionPointComponent],
exports: [AboutComponent]

View File

@ -1,6 +1,11 @@
<div class="graphApp">
<navbar *ngIf="showMenu && header" [header]="header" portal="graph" [onlyTop]="false" [userMenu]="false"
[user]="user" [userMenuItems]=userMenuItems [menuItems]=menuItems [properties]=properties></navbar>
<schema2jsonld [URL]="properties.domain"
[logoURL]="properties.domain + '/assets/common-assets/logo-small-graph.png'"
type="home" description="OpenAIRE Research Graph is an open resource that aggregates a collection of research data properties (metadata, links) available within the OpenAIRE Open Science infrastructure for funders, organizations, researchers, research communities and publishers to interlink information by using a semantic graph database approach. "
name="OpenAIRE Graph" [searchAction]="false" [searchActionRoute]=null>
</schema2jsonld>
<div class="custom-main-content">
<main>
<router-outlet></router-outlet>

View File

@ -1,6 +1,6 @@
import {AppRoutingModule} from "./app.routing";
import {BrowserModule} from "@angular/platform-browser";
import {HttpClientModule} from "@angular/common/http";
import {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';
import {CookieLawModule} from "./openaireLibrary/sharedComponents/cookie-law/cookie-law.module";
import {NavigationBarModule} from "./openaireLibrary/sharedComponents/navigationBar.module";
import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
@ -9,6 +9,11 @@ import {AppComponent} from "./app.component";
import {NgModule} from "@angular/core";
import {EnvironmentSpecificService} from "./openaireLibrary/utils/properties/environment-specific.service";
import {BottomModule} from './openaireLibrary/sharedComponents/bottom.module';
import {Schema2jsonldModule} from './openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module';
import {ErrorModule} from './openaireLibrary/error/error.module';
import {PreviousRouteRecorder} from './openaireLibrary/utils/piwik/previousRouteRecorder.guard';
import {PiwikService} from './openaireLibrary/utils/piwik/piwik.service';
import {DEFAULT_TIMEOUT, TimeoutInterceptor} from './openaireLibrary/timeout-interceptor.service';
@NgModule({
imports: [
@ -20,12 +25,17 @@ import {BottomModule} from './openaireLibrary/sharedComponents/bottom.module';
CookieLawModule,
SafeHtmlPipeModule,
BrowserAnimationsModule,
BottomModule
BottomModule,
Schema2jsonldModule,
ErrorModule
],
declarations: [
AppComponent,
],
providers: [EnvironmentSpecificService],
providers: [EnvironmentSpecificService, PreviousRouteRecorder, PiwikService,
[{ provide: HTTP_INTERCEPTORS, useClass: TimeoutInterceptor, multi: true }],
[{ provide: DEFAULT_TIMEOUT, useValue: 30000 }]
],
bootstrap: [ AppComponent ]
})
export class AppModule { }

View File

@ -1,5 +1,7 @@
import {NgModule} from '@angular/core';
import {Routes, RouterModule, PreloadAllModules} from '@angular/router';
import {ErrorPageComponent} from './openaireLibrary/error/errorPage.component';
import {PreviousRouteRecorder} from './openaireLibrary/utils/piwik/previousRouteRecorder.guard';
const appRoutes: Routes = [
{
@ -7,20 +9,24 @@ const appRoutes: Routes = [
loadChildren: './home/home.module#HomeModule',
data: {
isHome: true
}
}, canDeactivate: [PreviousRouteRecorder]
},
{
path: 'resources',
loadChildren: './resources/resources.module#ResourcesModule'
loadChildren: './resources/resources.module#ResourcesModule',
canDeactivate: [PreviousRouteRecorder]
},
{
path: 'support',
loadChildren: './contact/contact.module#ContactModule'
loadChildren: './contact/contact.module#ContactModule',
canDeactivate: [PreviousRouteRecorder]
},
{
path: 'about',
loadChildren: './about/about.module#AboutModule'
}
loadChildren: './about/about.module#AboutModule',
canDeactivate: [PreviousRouteRecorder]
},
{ path: '**',pathMatch: 'full',component: ErrorPageComponent}
];
@NgModule({

View File

@ -1,4 +1,10 @@
<div class="contact">
<schema2jsonld [URL]="properties.domain"
[logoURL]="properties.domain + '/assets/common-assets/logo-small-graph.png'"
[description]="description"
type="other"
[name]="title">
</schema2jsonld>
<div class="uk-section">
<div class="uk-margin-large-left uk-margin-medium-bottom">
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>

View File

@ -4,12 +4,15 @@ import {EmailService} from '../openaireLibrary/utils/email/email.service';
import {Email} from '../openaireLibrary/utils/email/email';
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
import {Composer} from '../openaireLibrary/utils/email/composer';
import {Title} from '@angular/platform-browser';
import {Meta, Title} from '@angular/platform-browser';
import {HelperFunctions} from '../openaireLibrary/utils/HelperFunctions.class';
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
import {properties} from '../../environments/environment';
import {FAQ} from "../openaireLibrary/utils/entities/FAQ";
import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
import {Subscription} from 'rxjs';
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
import {SEOService} from '../openaireLibrary/sharedComponents/SEO/SEO.service';
@Component({
selector: 'contact',
@ -23,7 +26,9 @@ export class ContactComponent implements OnInit {
public email: Email;
public faqs: FAQ[] = [];
public properties: EnvProperties = properties;
subs: Subscription[] = [];
description = "Do you have questions? Contact us";
title = "OpenAIRE - Research Graph | Support";
public contactForm: FormGroup;
@ViewChild('AlertModal') modal;
@ViewChild('recaptcha') recaptcha;
@ -41,21 +46,32 @@ export class ContactComponent implements OnInit {
constructor(private router: Router,
private route: ActivatedRoute,
private emailService: EmailService,
private title: Title,
private _title: Title,
private _piwikService:PiwikService,
private _meta: Meta, private seoService: SEOService,
private fb: FormBuilder) {
this.setFaqs();
}
ngOnInit() {
this.title.setTitle('OpenAIRE - Research Graph | Contact Us');
this.route.fragment.subscribe(fragment => {
this._title.setTitle(this.title);
this._meta.updateTag({content:this.description},"name='description'");
this._meta.updateTag({content:this.description},"property='og:description'");
this._meta.updateTag({content:this.title},"property='og:title'");
this.subs.push(this.route.fragment.subscribe(fragment => {
setTimeout(() => {
this.goTo(fragment);
}, 100);
});
}));
this.email = {body: '', subject: '', recipients: []};
this.reset();
this.showLoading = false;
var url = this.properties.domain + this.properties.baseLink+this.router.url;
this.seoService.createLinkForCanonicalURL(url, false);
this._meta.updateTag({content:url},"property='og:url'");
if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
this.subs.push(this._piwikService.trackView(this.properties, this.title).subscribe());
}
}
public send(event) {
@ -81,7 +97,7 @@ export class ContactComponent implements OnInit {
private sendMail(admins: any) {
this.showLoading = true;
this.emailService.contact(this.properties,
this.subs.push(this.emailService.contact(this.properties,
Composer.composeEmailForGraph(this.contactForm.value, admins),
this.contactForm.value.recaptcha).subscribe(
res => {
@ -99,7 +115,7 @@ export class ContactComponent implements OnInit {
this.showLoading = false;
this.contactForm.get('recaptcha').setValue('');
}
);
));
}
public modalOpen() {
@ -148,4 +164,9 @@ export class ContactComponent implements OnInit {
window.scrollTo({top: y, behavior: 'smooth'});
}
}
public ngOnDestroy() {
for (let sub of this.subs) {
sub.unsubscribe();
}
}
}

View File

@ -60,22 +60,22 @@ export class HomeComponent {
private config: ConfigurationService, private _meta: Meta, private _title: Title, private seoService: SEOService
) {
let description = "OpenAIRE Research Graph";
let description = "OpenAIRE Research Graph is an open resource that aggregates a collection of research data properties (metadata, links) available within the OpenAIRE Open Science infrastructure for funders, organizations, researchers, research communities and publishers to interlink information by using a semantic graph database approach.";
this._title.setTitle(this.pageTitle);
/*this._meta.updateTag({content: description}, "name='description'");
this._meta.updateTag({content: description}, "name='description'");
this._meta.updateTag({content: description}, "property='og:description'");
this._meta.updateTag({content: this.pageTitle}, "property='og:title'");*/
this._meta.updateTag({content: this.pageTitle}, "property='og:title'");
}
public ngOnInit() {
/*this.seoService.createLinkForCanonicalURL(this.properties.domain + this.properties.baseLink + this._router.url, false);*/
if (this.properties) {
/*var url = this.properties.domain + this.properties.baseLink + this._router.url;
let url = this.properties.domain + this.properties.baseLink + this._router.url;
this.seoService.createLinkForCanonicalURL(url, false);
this._meta.updateTag({content: url}, "property='og:url'");
if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
this.subs.push(this._piwikService.trackView(this.properties, "OpenAIRE").subscribe());
}*/
this.subs.push(this._piwikService.trackView(this.properties, this.pageTitle).subscribe());
}
this.getNumbers();
this.animation();
}

View File

@ -1,4 +1,8 @@
<div class="uk-section">
<schema2jsonld [URL]="properties.domain"
[logoURL]="properties.domain + '/assets/common-assets/logo-small-graph.png'"
[description]="description" type="other" [name]="title">
</schema2jsonld>
<div class="uk-margin-large-left uk-margin-medium-bottom">
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
</div>

View File

@ -1,7 +1,12 @@
import {Component, OnInit} from '@angular/core';
import {Title} from '@angular/platform-browser';
import {Meta, Title} from '@angular/platform-browser';
import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
import {ActivatedRoute} from "@angular/router";
import {ActivatedRoute, Router} from '@angular/router';
import {properties} from '../../environments/environment';
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
import {SEOService} from '../openaireLibrary/sharedComponents/SEO/SEO.service';
import {Subscription} from 'rxjs';
@Component({
selector: 'resources',
@ -9,7 +14,10 @@ import {ActivatedRoute} from "@angular/router";
styleUrls: ['resources.component.css'],
})
export class ResourcesComponent implements OnInit {
properties:EnvProperties;
subs: Subscription[] = [];
description = "Start building with OpenAIRE APIs. How to access the graph? XML Metadata schema and documentation.";
title = "OpenAIRE - Research Graph | Resources";
public breadcrumbs: Breadcrumb[] = [
{
name: 'home',
@ -20,16 +28,28 @@ export class ResourcesComponent implements OnInit {
}
];
constructor(private title: Title, private route: ActivatedRoute) {
constructor(private _title: Title, private route: ActivatedRoute, private _router: Router,
private _piwikService:PiwikService,
private _meta: Meta, private seoService: SEOService) {
}
ngOnInit() {
this.title.setTitle('OpenAIRE - Research Graph | Resources');
this.route.fragment.subscribe(fragment => {
this.properties = properties;
this._title.setTitle(this.title);
this._meta.updateTag({content:this.description},"name='description'");
this._meta.updateTag({content:this.description},"property='og:description'");
this._meta.updateTag({content:this.title},"property='og:title'");
var url = this.properties.domain + this.properties.baseLink+this._router.url;
this.seoService.createLinkForCanonicalURL(url, false);
this._meta.updateTag({content:url},"property='og:url'");
if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
this.subs.push(this._piwikService.trackView(this.properties, this.title).subscribe());
}
this.subs.push(this.route.fragment.subscribe(fragment => {
setTimeout(() => {
this.goTo(fragment);
}, 100);
});
}));
}
goTo(id: string) {
@ -40,4 +60,10 @@ export class ResourcesComponent implements OnInit {
window.scrollTo({top: y, behavior: 'smooth'});
}
}
public ngOnDestroy() {
for (let sub of this.subs) {
sub.unsubscribe();
}
}
}

View File

@ -4,6 +4,7 @@ import {RouterModule} from "@angular/router";
import {ResourcesComponent} from "./resources.component";
import {BreadcrumbsModule} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.module";
import {Schema2jsonldModule} from '../openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module';
@NgModule({
imports: [
@ -11,7 +12,8 @@ import {BreadcrumbsModule} from "../openaireLibrary/utils/breadcrumbs/breadcrumb
RouterModule.forChild([{
path: '', component: ResourcesComponent
}]),
BreadcrumbsModule
BreadcrumbsModule,
Schema2jsonldModule
],
declarations: [ResourcesComponent],
exports: [ResourcesComponent]

View File

@ -2,6 +2,11 @@ import {EnvProperties} from '../app/openaireLibrary/utils/properties/env-propert
export let properties: EnvProperties = {
environment: "beta",
domain : "https://graph.openaire.eu",
baseLink: "",
enablePiwikTrack: false,
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
piwikSiteId: "",
searchAPIURLLAst: "https://beta.services.openaire.eu/search/v2/api/",
adminToolsAPIURL: "https://beta.services.openaire.eu/uoa-admin-tools/",
admins: ["graph@openaire.eu"],

View File

@ -2,6 +2,11 @@ import {EnvProperties} from '../app/openaireLibrary/utils/properties/env-propert
export let properties: EnvProperties = {
environment: "production",
domain : "https://graph.openaire.eu",
baseLink: "",
enablePiwikTrack: true,
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
piwikSiteId: "",
searchAPIURLLAst: "https://services.openaire.eu/search/v2/api/",
adminToolsAPIURL:"https://services.openaire.eu/uoa-admin-tools/",
admins: ["graph@openaire.eu"],

View File

@ -7,6 +7,11 @@ import {EnvProperties} from "../app/openaireLibrary/utils/properties/env-propert
export let properties: EnvProperties = {
environment: "development",
domain : "https://graph.openaire.eu",
baseLink: "",
enablePiwikTrack: false,
piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=",
piwikSiteId: "",
searchAPIURLLAst: "https://beta.services.openaire.eu/search/v2/api/",
adminToolsAPIURL: 'http://duffy.di.uoa.gr:8080/uoa-admin-tools/',
admins: ["kostis30fylloy@gmail.com"],

View File

@ -7,6 +7,7 @@
<base href="/">
<title>OpenAIRE - Research Graph</title>
<meta charset="UTF-8">
<link href="assets/common-assets/logo-small-graph.png">
<link rel="apple-touch-icon" sizes="57x57" href="assets/common-assets/logo/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="assets/common-assets/logo/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="assets/common-assets/logo/apple-icon-72x72.png">

View File

@ -7,6 +7,7 @@
<base href="/">
<title>OpenAIRE - Research Graph</title>
<meta charset="UTF-8">
<link href="assets/common-assets/logo-small-graph.png">
<link rel="apple-touch-icon" sizes="57x57" href="assets/common-assets/logo/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="assets/common-assets/logo/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="assets/common-assets/logo/apple-icon-72x72.png">

4
src/robots.prod.txt Normal file
View File

@ -0,0 +1,4 @@
User-Agent: *
Crawl-delay: 30
sitemap: https://graph.openaire.eu/sitemap.xml

2
src/robots.txt Normal file
View File

@ -0,0 +1,2 @@
sitemap.xmlUser-Agent: *
Disallow: /

12
src/sitemap.xml Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc><![CDATA[https://graph.openaire.eu]]></loc>
</url>
<url>
<loc><![CDATA[https://graph.openaire.eu/about]]></loc>
</url>
<url>
<loc><![CDATA[https://graph.openaire.eu/resources]]></loc>
</url>
</urlset>