JSONLD:
add jsonld in all pages (advance, table view, link, deposit) for search pages assign SearchResultsPage representation for other pages assign Website SEO service: add a service that updates the rel canonical url (in client side) call the service in each page git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app@53740 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
parent
ae21b00172
commit
78d4bb3f7d
|
@ -1,4 +1,4 @@
|
|||
|
||||
<schema2jsonld *ngIf="url" [URL]="url" name="Manage links" type="other"></schema2jsonld>
|
||||
<div class="uk-width-1-1">
|
||||
<helper position="top"></helper>
|
||||
</div>
|
||||
|
|
|
@ -9,6 +9,7 @@ import {AlertModal} from '../../../utils/modal/alert';
|
|||
import {Session} from '../../../login/utils/helper.class';
|
||||
import{EnvProperties} from '../../../utils/properties/env-properties';
|
||||
import {LoginErrorCodes} from '../../../login/utils/guardHelper.class';
|
||||
import { SEOService } from '../../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
|
||||
@Component({
|
||||
|
@ -21,16 +22,20 @@ export class DisplayClaimsComponent {
|
|||
properties:EnvProperties;
|
||||
public searchTermStream = new Subject<string>();
|
||||
|
||||
constructor (private _claimService: ClaimsService, private route: ActivatedRoute, private _router:Router, private location: Location) {
|
||||
constructor (private _claimService: ClaimsService, private route: ActivatedRoute, private _router:Router, private location: Location,
|
||||
private seoService: SEOService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.route.data
|
||||
.subscribe((data: { envSpecific: EnvProperties }) => {
|
||||
this.properties = data.envSpecific;
|
||||
this.url = data.envSpecific.baseLink+this._router.url;
|
||||
|
||||
});
|
||||
this.sub = this.route.queryParams.subscribe(params => {
|
||||
this.seoService.createLinkForCanonicalURL(false);
|
||||
|
||||
if( this.myClaims){
|
||||
this.fetchBy = "User";
|
||||
this.fetchId = Session.getUserEmail();
|
||||
|
@ -120,6 +125,9 @@ export class DisplayClaimsComponent {
|
|||
|
||||
claimsDeleted:number = 0;
|
||||
@Input() communityId:string = null;
|
||||
|
||||
url=null;
|
||||
|
||||
getClaims () {
|
||||
if(!Session.isLoggedIn()){
|
||||
this.userValidMessage = "User session has expired. Please login again.";
|
||||
|
|
|
@ -9,11 +9,13 @@ import {AlertModalModule} from '../../../utils/modal/alertModal.module';
|
|||
import {ClaimEntityFormatterModule} from '../entityFormatter/claimEntityFormatter.module';
|
||||
import {PagingModule } from '../../../utils/paging.module';
|
||||
import {HelperModule} from '../../../utils/helper/helper.module';
|
||||
import {Schema2jsonldModule} from '../../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, RouterModule, ClaimServiceModule, LoadingModalModule, AlertModalModule,
|
||||
ClaimEntityFormatterModule, PagingModule, HelperModule
|
||||
ClaimEntityFormatterModule, PagingModule, HelperModule, Schema2jsonldModule, SEOServiceModule
|
||||
|
||||
],
|
||||
declarations: [
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<div id="tm-main" class=" uk-section uk-margin-small-top tm-middle" >
|
||||
<div uk-grid uk-grid>
|
||||
<div class="tm-main uk-width-1-1@s uk-width-1-1@m uk-width-1-1@l uk-row-first ">
|
||||
<schema2jsonld *ngIf="url" [URL]="url" name="Linking" type="other"></schema2jsonld>
|
||||
|
||||
<div class="uk-container uk-margin-top">
|
||||
<div class="uk-article-title custom-article-title">
|
||||
|
|
|
@ -12,6 +12,7 @@ import {SearchPublicationsService} from '../../services/searchPublications.se
|
|||
import {SearchDatasetsService} from '../../services/searchDatasets.service';
|
||||
import {SearchSoftwareService} from '../../services/searchSoftware.service';
|
||||
import {SearchOrpsService} from '../../services/searchOrps.service';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
|
||||
@Component({
|
||||
|
@ -39,21 +40,25 @@ export class DirectLinkingComponent {
|
|||
properties:EnvProperties;
|
||||
@Input() communityId:string= null;
|
||||
localStoragePrefix:string = "";
|
||||
url=null;
|
||||
|
||||
constructor (private _router: Router, private route: ActivatedRoute, private entitySearch:EntitiesSearchService,
|
||||
private publicationsSearch:SearchPublicationsService, private datasetsSearch:SearchDatasetsService,
|
||||
private softwareSearch:SearchSoftwareService,private ORPSearch:SearchOrpsService,
|
||||
private _meta: Meta, private _title: Title) {
|
||||
private _meta: Meta, private _title: Title, private seoService: SEOService ) {
|
||||
|
||||
var title = "OpenAIRE | Direct Linking";
|
||||
|
||||
this._meta.updateTag({content:title},"property='og:title'");
|
||||
this._title.setTitle(title);
|
||||
this.seoService.createLinkForCanonicalURL(false);
|
||||
|
||||
}
|
||||
ngOnInit() {
|
||||
this.route.data
|
||||
.subscribe((data: { envSpecific: EnvProperties }) => {
|
||||
this.properties = data.envSpecific;
|
||||
this.url = data.envSpecific.baseLink+this._router.url;
|
||||
|
||||
});
|
||||
|
||||
|
|
|
@ -21,6 +21,8 @@ import {ClaimProjectsSearchFormModule} from '../claim-utils/claimProjectSearchFo
|
|||
import {ClaimResultSearchFormModule} from '../claim-utils/claimResultSearchForm.module';
|
||||
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
|
||||
import {OrpsServiceModule} from '../../services/orpsService.module';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
|
||||
@NgModule({
|
||||
|
@ -28,7 +30,7 @@ import {OrpsServiceModule} from '../../services/orpsService.module';
|
|||
SharedModule,
|
||||
SelectedProjectsModule, SelectedContextsModule, SelectedPublicationsModule, InsertClaimsModule,
|
||||
EntitySearchServiceModule, PublicationsServiceModule, DatasetsServiceModule, StartOverModule, HelperModule,
|
||||
ClaimContextSearchFormModule, ClaimProjectsSearchFormModule, ClaimResultSearchFormModule, OrpsServiceModule
|
||||
ClaimContextSearchFormModule, ClaimProjectsSearchFormModule, ClaimResultSearchFormModule, OrpsServiceModule, Schema2jsonldModule, SEOServiceModule
|
||||
|
||||
|
||||
],
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<div id="tm-main" class=" uk-section uk-margin-small-top tm-middle" >
|
||||
<div uk-grid uk-grid>
|
||||
<div class="tm-main uk-width-1-1@s uk-width-1-1@m uk-width-1-1@l uk-row-first ">
|
||||
<schema2jsonld *ngIf="url" [URL]="url" name="Link your research results" type="other"></schema2jsonld>
|
||||
|
||||
<div class="uk-container uk-margin-top">
|
||||
<div class="uk-article-title custom-article-title">
|
||||
|
|
|
@ -10,6 +10,7 @@ import {ClaimProject, ClaimResult} from '../claim-utils/claimEntities.class';
|
|||
import {EntitiesSearchService} from '../../utils/entitiesAutoComplete/entitySearch.service';
|
||||
import {SearchPublicationsService} from '../../services/searchPublications.service';
|
||||
import {SearchDatasetsService} from '../../services/searchDatasets.service';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
declare var UIkit:any;
|
||||
|
||||
|
@ -42,20 +43,25 @@ export class LinkingGenericComponent {
|
|||
sub:any =null;
|
||||
properties:EnvProperties;
|
||||
localStoragePrefix:string = "linking_";
|
||||
url=null;
|
||||
|
||||
constructor (private _router: Router, private route: ActivatedRoute, private entitySearch:EntitiesSearchService,
|
||||
private publicationsSearch:SearchPublicationsService, private datasetsSearch:SearchDatasetsService,
|
||||
private _meta: Meta, private _title: Title ) {
|
||||
private _meta: Meta, private _title: Title,
|
||||
private seoService: SEOService ) {
|
||||
|
||||
var title = "OpenAIRE | Linking";
|
||||
this._meta.updateTag({content:title},"property='og:title'");
|
||||
this._title.setTitle(title);
|
||||
this.seoService.createLinkForCanonicalURL(false);
|
||||
|
||||
|
||||
}
|
||||
ngOnInit() {
|
||||
this.route.data
|
||||
.subscribe((data: { envSpecific: EnvProperties }) => {
|
||||
this.properties = data.envSpecific;
|
||||
this.url = data.envSpecific.baseLink+this._router.url;
|
||||
|
||||
});
|
||||
if( typeof localStorage !== 'undefined') {
|
||||
|
|
|
@ -15,13 +15,16 @@ import {BulkClaimModule} from './bulkClaim/bulkClaim.module';
|
|||
import {ClaimResultSearchFormModule} from '../claim-utils/claimResultSearchForm.module';
|
||||
import {HelperModule} from '../../utils/helper/helper.module';
|
||||
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
SharedModule, SelectedProjectsModule, SelectedContextsModule,
|
||||
SelectedPublicationsModule,
|
||||
InsertClaimsModule, StartOverModule,
|
||||
ClaimContextSearchFormModule, ClaimProjectsSearchFormModule, BulkClaimModule, ClaimResultSearchFormModule, HelperModule
|
||||
ClaimContextSearchFormModule, ClaimProjectsSearchFormModule, BulkClaimModule, ClaimResultSearchFormModule,
|
||||
HelperModule, Schema2jsonldModule, SEOServiceModule
|
||||
],
|
||||
providers:[LoginGuard, PreviousRouteRecorder, IsRouteEnabled],
|
||||
declarations: [
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<div id="tm-main" class=" uk-section uk-margin-small-top tm-middle" >
|
||||
<div uk-grid uk-grid>
|
||||
<div class="tm-main uk-width-1-1@s uk-width-1-1@m uk-width-1-1@l uk-row-first ">
|
||||
<schema2jsonld *ngIf="url" [URL]="url" name="Deposit {{requestFor}}" type="other"></schema2jsonld>
|
||||
|
||||
<div class="uk-container uk-margin-top">
|
||||
<div class="uk-article-title custom-article-title">
|
||||
|
|
|
@ -15,6 +15,7 @@ import {RouterHelper} from '../../utils/routerHelper.class';
|
|||
import {SearchDataprovidersService} from '../../services/searchDataproviders.service';
|
||||
import {OrganizationService} from '../../services/organization.service';
|
||||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
@Component({
|
||||
selector: 'deposit-by-subject-result',
|
||||
|
@ -46,13 +47,15 @@ export class DepositBySubjectResultComponent {
|
|||
sub: any;
|
||||
piwiksub: any;
|
||||
properties:EnvProperties;
|
||||
url=null;
|
||||
|
||||
constructor (private _router: Router,
|
||||
private route: ActivatedRoute,
|
||||
private _searchDataprovidersService: SearchDataprovidersService,
|
||||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private _piwikService:PiwikService) {
|
||||
private _piwikService:PiwikService,
|
||||
private seoService: SEOService) {
|
||||
|
||||
this.fetchDataproviders = new FetchDataproviders(this._searchDataprovidersService);
|
||||
|
||||
|
@ -63,6 +66,8 @@ export class DepositBySubjectResultComponent {
|
|||
|
||||
this.updateTitle(title);
|
||||
this.updateDescription(description);
|
||||
this.seoService.createLinkForCanonicalURL(false);
|
||||
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
@ -71,6 +76,8 @@ export class DepositBySubjectResultComponent {
|
|||
this.properties = data.envSpecific;
|
||||
this.updateUrl(data.envSpecific.baseLink+this._router.url);
|
||||
this.zenodo = this.properties.zenodo;
|
||||
this.url = data.envSpecific.baseLink+this._router.url;
|
||||
|
||||
if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
|
||||
this.piwiksub = this._piwikService.trackView(this.properties, "Deposit "+this.requestFor, this.piwikSiteId).subscribe();
|
||||
}
|
||||
|
|
|
@ -12,13 +12,15 @@ import {DataProvidersServiceModule} from '../../services/dataProvidersService.mo
|
|||
import {SearchResultsModule } from '../../searchPages/searchUtils/searchResults.module';
|
||||
import {HelperModule} from '../../utils/helper/helper.module';
|
||||
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule,
|
||||
DepositModule,
|
||||
SearchResultsModule, DataProvidersServiceModule, PagingModule,
|
||||
HelperModule
|
||||
HelperModule, Schema2jsonldModule, SEOServiceModule
|
||||
],
|
||||
declarations: [
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
<div class="uk-article-title custom-article-title uk-margin-bottom">
|
||||
Deposit {{requestFor}}
|
||||
</div>
|
||||
<schema2jsonld *ngIf="url" [URL]="url" name="Deposit {{requestFor}}" type="other"></schema2jsonld>
|
||||
|
||||
<div class="uk-width-1-1">
|
||||
<helper position="top"></helper>
|
||||
</div>
|
||||
|
|
|
@ -7,6 +7,7 @@ import {Observable} from 'rxjs/Observable';
|
|||
import {EnvProperties} from '../utils/properties/env-properties';
|
||||
|
||||
import {PiwikService} from '../utils/piwik/piwik.service';
|
||||
import { SEOService } from '../sharedComponents/SEO/SEO.service';
|
||||
|
||||
|
||||
@Component({
|
||||
|
@ -40,14 +41,15 @@ export class DepositComponent {
|
|||
|
||||
piwiksub:any;
|
||||
properties:EnvProperties;
|
||||
|
||||
url=null;
|
||||
constructor (private route: ActivatedRoute, private _router: Router,
|
||||
private _meta: Meta, private _title: Title,
|
||||
private _piwikService:PiwikService) {
|
||||
private _piwikService:PiwikService,
|
||||
private seoService: SEOService ) {
|
||||
|
||||
var title = "Deposit "+this.requestFor;
|
||||
var description = "Openaire, repositories, open access, content provider, compatibility, organization, deposit "+ this.requestFor;
|
||||
|
||||
this.seoService.createLinkForCanonicalURL(false);
|
||||
this.updateTitle(title);
|
||||
this.updateDescription(description);
|
||||
}
|
||||
|
@ -62,7 +64,7 @@ export class DepositComponent {
|
|||
this.ercGuidlines = this.properties.ercGuidlines
|
||||
this.helpdesk = this.properties.helpdesk;
|
||||
this.updateUrl(data.envSpecific.baseLink+this._router.url);
|
||||
|
||||
this.url = data.envSpecific.baseLink+this._router.url;
|
||||
if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
|
||||
this.piwiksub = this._piwikService.trackView(this.properties, "Deposit "+this.requestFor, this.piwikSiteId).subscribe();
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@ import {PiwikServiceModule} from '../utils/piwik/piwikService.module';
|
|||
import {HelperModule} from '../utils/helper/helper.module';
|
||||
import { DepositBySubjectComponent } from './datasets/depositBySubject.component';
|
||||
import {IFrameModule} from '../utils/iframe.module';
|
||||
import {Schema2jsonldModule} from '../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
|
||||
|
||||
|
@ -28,7 +30,7 @@ import {IFrameModule} from '../utils/iframe.module';
|
|||
SearchResultsModule,
|
||||
PiwikServiceModule,
|
||||
HelperModule,
|
||||
IFrameModule
|
||||
IFrameModule, Schema2jsonldModule, SEOServiceModule
|
||||
],
|
||||
declarations: [
|
||||
DepositComponent,
|
||||
|
|
|
@ -12,6 +12,7 @@ import {FetchDataproviders} from '../utils/fetchEntitiesClasses/fetchDat
|
|||
import {SearchDataprovidersService} from '../services/searchDataproviders.service';
|
||||
import {OrganizationService} from '../services/organization.service';
|
||||
import {PiwikService} from '../utils/piwik/piwik.service';
|
||||
import { SEOService } from '../sharedComponents/SEO/SEO.service';
|
||||
|
||||
@Component({
|
||||
selector: 'deposit-result',
|
||||
|
@ -19,6 +20,7 @@ import {PiwikService} from '../utils/piwik/piwik.service';
|
|||
<div id="tm-main" class=" uk-section uk-margin-small-top tm-middle" >
|
||||
<div uk-grid uk-grid>
|
||||
<div class="tm-main uk-width-1-1@s uk-width-1-1@m uk-width-1-1@l uk-row-first ">
|
||||
<schema2jsonld *ngIf="url" [URL]="url" name="Deposit {{requestFor}}" type="other"></schema2jsonld>
|
||||
|
||||
<div class="uk-container uk-margin-top">
|
||||
<!--div class="uk-article-title custom-article-title">
|
||||
|
@ -156,6 +158,7 @@ export class DepositResultComponent {
|
|||
|
||||
sub: any; piwiksub: any;
|
||||
properties:EnvProperties;
|
||||
url=null;
|
||||
|
||||
constructor ( private _router: Router,
|
||||
private route: ActivatedRoute,
|
||||
|
@ -163,7 +166,8 @@ export class DepositResultComponent {
|
|||
private _organizationService: OrganizationService,
|
||||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private _piwikService:PiwikService) {
|
||||
private _piwikService:PiwikService,
|
||||
private seoService: SEOService) {
|
||||
|
||||
this.fetchDataproviders = new FetchDataproviders(this._searchDataprovidersService);
|
||||
|
||||
|
@ -171,6 +175,7 @@ export class DepositResultComponent {
|
|||
|
||||
var description = "Deposit "+this.requestFor;
|
||||
var title = "Openaire, repositories, open access, content provider, compatibility, organization, deposit "+ this.requestFor;
|
||||
this.seoService.createLinkForCanonicalURL(false);
|
||||
|
||||
this.updateTitle(title);
|
||||
this.updateDescription(description);
|
||||
|
@ -182,6 +187,7 @@ export class DepositResultComponent {
|
|||
this.properties = data.envSpecific;
|
||||
this.zenodo = this.properties.zenodo;
|
||||
this.updateUrl(data.envSpecific.baseLink+this._router.url);
|
||||
this.url = data.envSpecific.baseLink+this._router.url;
|
||||
|
||||
if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
|
||||
this.piwiksub = this._piwikService.trackView(this.properties, "Deposit "+this.requestFor, this.piwikSiteId).subscribe();
|
||||
|
|
|
@ -28,6 +28,7 @@ import {RelatedDatasourcesTabComponent} from './relatedDatasourcesTab.compon
|
|||
import {ErrorCodes} from '../../utils/properties/errorCodes';
|
||||
import {RouterHelper} from '../../utils/routerHelper.class';
|
||||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
|
||||
@Component({
|
||||
|
@ -114,7 +115,8 @@ export class DataProviderComponent {
|
|||
private _searchSoftwareService: SearchSoftwareService,
|
||||
private _searchOrpsService: SearchOrpsService,
|
||||
private _searchProjectsService: SearchProjectsService,
|
||||
private _searchDataprovidersService: SearchDataprovidersService) {
|
||||
private _searchDataprovidersService: SearchDataprovidersService,
|
||||
private seoService: SEOService) {
|
||||
this.fetchPublications = new FetchPublications(this._searchPublicationsService);
|
||||
this.fetchDatasets = new FetchDatasets(this._searchDatasetsService);
|
||||
this.fetchSoftware = new FetchSoftware(this._searchSoftwareService);
|
||||
|
@ -134,6 +136,7 @@ export class DataProviderComponent {
|
|||
this.sub = this.route.queryParams.subscribe(data => {
|
||||
this.updateTitle("Content provider");
|
||||
this.updateDescription("Content provider, search, repositories, open access");
|
||||
this.seoService.createLinkForCanonicalURL();
|
||||
this.datasourceId = data['datasourceId'];
|
||||
if(this.datasourceId){
|
||||
this.getDataProviderInfo(this.datasourceId);
|
||||
|
|
|
@ -35,13 +35,14 @@ import {OrpsServiceModule} from '../../services/orpsService.module';
|
|||
import {FreeGuard} from'../../login/freeGuard.guard';
|
||||
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
@NgModule({
|
||||
imports:
|
||||
[CommonModule, FormsModule, RouterModule,
|
||||
TabResultModule, IFrameModule, ErrorMessagesModule, MetricsModule, LandingModule,
|
||||
DataProvidersServiceModule, DatasetsServiceModule, ProjectsServiceModule, PublicationsServiceModule,
|
||||
SoftwareServiceModule, OrpsServiceModule, PagingModule, Schema2jsonldModule],
|
||||
SoftwareServiceModule, OrpsServiceModule, PagingModule, Schema2jsonldModule, SEOServiceModule],
|
||||
declarations:
|
||||
[PublicationsTabComponent, DatasetsTabComponent, StatisticsTabComponent, ProjectsTabComponent, DatasourcesTabComponent, OrganizationsTabComponent,
|
||||
RelatedDatasourcesTabComponent, DataProviderComponent, SoftwareTabComponent, OrpsTabComponent
|
||||
|
|
|
@ -11,6 +11,7 @@ import {RouterHelper} from '../../utils/routerHelper.class';
|
|||
|
||||
import {DatasetService} from './dataset.service';
|
||||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
|
||||
@Component({
|
||||
|
@ -59,7 +60,8 @@ export class DatasetComponent {
|
|||
private route: ActivatedRoute,
|
||||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private _router: Router) {
|
||||
private _router: Router,
|
||||
private seoService: SEOService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
@ -73,6 +75,7 @@ export class DatasetComponent {
|
|||
this.datasetInfo = null;
|
||||
this.updateTitle("Dataset");
|
||||
this.updateDescription("Dataset, search, open access");
|
||||
this.seoService.createLinkForCanonicalURL();
|
||||
|
||||
this.datasetId = params['datasetId'];
|
||||
console.info("Id is :"+this.datasetId);
|
||||
|
|
|
@ -22,6 +22,7 @@ import {DatasetService} from './dataset.service';
|
|||
import {FreeGuard} from'../../login/freeGuard.guard';
|
||||
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
|
||||
@NgModule({
|
||||
|
@ -29,7 +30,7 @@ import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2j
|
|||
//MaterialModule.forRoot(),
|
||||
CommonModule, FormsModule, SharedModule, RouterModule, LandingModule,
|
||||
CiteThisModule, ResultLandingModule, MetricsModule, IFrameModule,
|
||||
AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule
|
||||
AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule
|
||||
],
|
||||
declarations: [
|
||||
DatasetComponent
|
||||
|
|
|
@ -9,6 +9,7 @@ import {EnvProperties} from '../../utils/properties/env-propert
|
|||
import {HtmlProjectReportService} from './htmlProjectReport.service';
|
||||
import {ProjectService} from '../project/project.service';
|
||||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
declare var UIkit: any;
|
||||
|
||||
|
@ -69,7 +70,8 @@ export class HtmlProjectReportComponent{
|
|||
private _projectService: ProjectService,
|
||||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private _router: Router) {
|
||||
private _router: Router,
|
||||
private seoService: SEOService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
@ -104,6 +106,7 @@ export class HtmlProjectReportComponent{
|
|||
var description = "project, project "+ this.resultsType +" report, funding, open access, publications, research data, software, other research products";
|
||||
this.updateTitle(title);
|
||||
this.updateDescription(description);
|
||||
this.seoService.createLinkForCanonicalURL();
|
||||
|
||||
} else {
|
||||
this.showLoading = false;
|
||||
|
|
|
@ -10,10 +10,11 @@ import {HtmlProjectReportComponent} from './htmlProjectReport.component';
|
|||
// import { HtmlProjectReportRoutingModule } from './htmlProjectReport-routing.module';
|
||||
import {FreeGuard} from'../../login/freeGuard.guard';
|
||||
import {PiwikServiceModule} from '../../utils/piwik/piwikService.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, ProjectServiceModule,PiwikServiceModule
|
||||
CommonModule, FormsModule, ProjectServiceModule,PiwikServiceModule, SEOServiceModule
|
||||
],
|
||||
declarations: [
|
||||
HtmlProjectReportComponent
|
||||
|
|
|
@ -26,6 +26,7 @@ import {AlertModal} from '../../utils/modal/alert';
|
|||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
import {StringUtils} from '../../utils/string-utils.class';
|
||||
import {EnvProperties} from '../../utils/properties/env-properties';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
@Component({
|
||||
selector: 'organization',
|
||||
|
@ -109,7 +110,8 @@ export class OrganizationComponent {
|
|||
private _searchProjectsService: SearchProjectsService,
|
||||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private _router: Router) {
|
||||
private _router: Router,
|
||||
private seoService: SEOService) {
|
||||
|
||||
this.fetchPublications = new FetchPublications(this._searchPublicationsService);
|
||||
// this.fetchDatasets = new FetchDatasets(this._searchDatasetsService);
|
||||
|
@ -129,6 +131,7 @@ export class OrganizationComponent {
|
|||
this.organizationInfo=null;
|
||||
this.updateTitle("Organization");
|
||||
this.updateDescription("Organization, country, projects, search, repositories, open access");
|
||||
this.seoService.createLinkForCanonicalURL();
|
||||
this.projectsClicked = false;
|
||||
|
||||
this.organizationId = params['organizationId'];
|
||||
|
|
|
@ -24,6 +24,7 @@ import { SearchingProjectsTabModule} from '../landing-utils/searchingProjectsInT
|
|||
import {FreeGuard} from'../../login/freeGuard.guard';
|
||||
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
|
@ -39,7 +40,7 @@ import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2j
|
|||
PublicationsServiceModule,
|
||||
// DatasetsServiceModule,
|
||||
ProjectsServiceModule,
|
||||
Schema2jsonldModule
|
||||
Schema2jsonldModule, SEOServiceModule
|
||||
|
||||
],
|
||||
declarations: [
|
||||
|
|
|
@ -11,6 +11,7 @@ import {RouterHelper} from '../../utils/routerHelper.class';
|
|||
|
||||
import {OrpService} from './orp.service';
|
||||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
|
||||
@Component({
|
||||
|
@ -59,7 +60,8 @@ export class OrpComponent {
|
|||
private route: ActivatedRoute,
|
||||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private _router: Router) {
|
||||
private _router: Router,
|
||||
private seoService: SEOService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
@ -73,7 +75,7 @@ export class OrpComponent {
|
|||
this.orpInfo = null;
|
||||
this.updateTitle("Other Research Product");
|
||||
this.updateDescription("Other Research Product, search, open access");
|
||||
|
||||
this.seoService.createLinkForCanonicalURL();
|
||||
this.orpId = params['orpId'];
|
||||
console.info("Id is :"+this.orpId);
|
||||
|
||||
|
|
|
@ -20,13 +20,14 @@ import {OrpService} from './orp.service';
|
|||
import {FreeGuard} from'../../login/freeGuard.guard';
|
||||
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, SharedModule, RouterModule, LandingModule,
|
||||
CiteThisModule, ResultLandingModule, MetricsModule, IFrameModule,
|
||||
AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule
|
||||
AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule
|
||||
],
|
||||
declarations: [
|
||||
OrpComponent
|
||||
|
|
|
@ -26,6 +26,7 @@ import {ErrorCodes} from '../../utils/properties/errorCodes'
|
|||
|
||||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
import {EnvProperties} from '../../utils/properties/env-properties';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
@Component({
|
||||
selector: 'project',
|
||||
|
@ -111,7 +112,8 @@ properties:EnvProperties;
|
|||
private _reportsService: ReportsService,
|
||||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private _router: Router) {
|
||||
private _router: Router,
|
||||
private seoService: SEOService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
@ -134,6 +136,7 @@ properties:EnvProperties;
|
|||
|
||||
this.updateTitle(title);
|
||||
this.updateDescription(description);
|
||||
this.seoService.createLinkForCanonicalURL();
|
||||
|
||||
this.projectId = params['projectId'];
|
||||
var grantId = params['grantId'];
|
||||
|
|
|
@ -24,6 +24,7 @@ import { LandingModule } from '../landing-utils/landing.module';
|
|||
import {FreeGuard} from'../../login/freeGuard.guard';
|
||||
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
|
@ -31,7 +32,7 @@ import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2j
|
|||
LoadingModalModule, AlertModalModule, ErrorMessagesModule,
|
||||
TabResultModule, IFrameModule, MetricsModule, ReportsServiceModule,
|
||||
PublicationsServiceModule, DatasetsServiceModule, SoftwareServiceModule, OrpsServiceModule, ProjectServiceModule,
|
||||
Schema2jsonldModule
|
||||
Schema2jsonldModule, SEOServiceModule
|
||||
|
||||
],
|
||||
declarations: [
|
||||
|
|
|
@ -11,6 +11,7 @@ import {RouterHelper} from '../../utils/routerHelper.class';
|
|||
|
||||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
import {PublicationService} from './publication.service';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
|
||||
@Component({
|
||||
|
@ -72,7 +73,8 @@ export class PublicationComponent {
|
|||
private route: ActivatedRoute,
|
||||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private _router: Router) {
|
||||
private _router: Router,
|
||||
private seoService: SEOService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
@ -86,6 +88,7 @@ export class PublicationComponent {
|
|||
this.publicationInfo = null;
|
||||
this.updateTitle("Publication");
|
||||
this.updateDescription("Publication, open access, collected from");
|
||||
this.seoService.createLinkForCanonicalURL();
|
||||
|
||||
this.articleId = data['articleId'];
|
||||
console.info("Article id is :"+this.articleId);
|
||||
|
|
|
@ -20,13 +20,14 @@ import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
|
|||
import {PublicationService} from './publication.service';
|
||||
import {PublicationComponent} from './publication.component';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, LandingModule, SharedModule, RouterModule,
|
||||
CiteThisModule, PagingModule, ResultLandingModule, IFrameModule,
|
||||
MetricsModule, AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule
|
||||
MetricsModule, AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule
|
||||
],
|
||||
declarations: [
|
||||
PublicationComponent
|
||||
|
|
|
@ -11,6 +11,7 @@ import {SoftwareInfo} from '../../utils/entities/softwareInfo';
|
|||
import {RouterHelper} from '../../utils/routerHelper.class';
|
||||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
import {EnvProperties} from '../../utils/properties/env-properties';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
@Component({
|
||||
selector: 'software',
|
||||
|
@ -58,7 +59,8 @@ export class SoftwareComponent {
|
|||
private route: ActivatedRoute,
|
||||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private _router: Router) {
|
||||
private _router: Router,
|
||||
private seoService: SEOService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
@ -72,6 +74,7 @@ export class SoftwareComponent {
|
|||
this.softwareInfo = null;
|
||||
this.updateTitle("Software");
|
||||
this.updateDescription("Software, search, open access");
|
||||
this.seoService.createLinkForCanonicalURL();
|
||||
|
||||
this.softwareId = params['softwareId'];
|
||||
console.info("Id is :"+this.softwareId);
|
||||
|
|
|
@ -18,11 +18,12 @@ import { ResultLandingModule } from '../landing-utils/resultLanding.module';
|
|||
import { LandingModule } from '../landing-utils/landing.module';
|
||||
import { FreeGuard } from'../../login/freeGuard.guard';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, LandingModule, RouterModule, CiteThisModule, PagingModule,
|
||||
ResultLandingModule, IFrameModule, MetricsModule, AltMetricsModule, Schema2jsonldModule
|
||||
ResultLandingModule, IFrameModule, MetricsModule, AltMetricsModule, Schema2jsonldModule, SEOServiceModule
|
||||
],
|
||||
declarations: [
|
||||
SoftwareComponent
|
||||
|
|
|
@ -20,13 +20,14 @@ import {SearchFormModule} from '../searchUtils/searchForm.module';
|
|||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
|
||||
import {PiwikServiceModule} from '../../utils/piwik/piwikService.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, RouterModule,
|
||||
DataProvidersServiceModule, DatasetsServiceModule, SoftwareServiceModule, OrpsServiceModule, ProjectsServiceModule,
|
||||
PublicationsServiceModule, OrganizationsServiceModule,
|
||||
BrowseEntitiesModule, SearchFormModule, SearchResultsModule, PiwikServiceModule, Schema2jsonldModule
|
||||
BrowseEntitiesModule, SearchFormModule, SearchResultsModule, PiwikServiceModule, Schema2jsonldModule, SEOServiceModule
|
||||
|
||||
],
|
||||
declarations: [
|
||||
|
|
|
@ -31,6 +31,7 @@ import {RefineFieldResultsService} from '../../services/refineFieldResults.se
|
|||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
import {ConfigurationService} from '../../utils/configuration/configuration.service';
|
||||
import {EnvProperties} from '../../utils/properties/env-properties';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
@Component({
|
||||
changeDetection: ChangeDetectionStrategy.Default,
|
||||
|
@ -114,7 +115,8 @@ public subPub;public subData; public subSoftware; public subOrps; public subProj
|
|||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private _piwikService:PiwikService,
|
||||
private config: ConfigurationService ) {
|
||||
private config: ConfigurationService,
|
||||
private seoService: SEOService ) {
|
||||
this.fetchPublications = new FetchPublications(this._searchPublicationsService);
|
||||
this.fetchDataproviders = new FetchDataproviders(this._searchDataprovidersService);
|
||||
this.fetchProjects = new FetchProjects(this._searchProjectsService);
|
||||
|
@ -138,6 +140,7 @@ public subPub;public subData; public subSoftware; public subOrps; public subProj
|
|||
this._meta.updateTag({content:description},"property='og:description'");
|
||||
this._meta.updateTag({content:title},"property='og:title'");
|
||||
this._meta.updateTag({content:url},"property='og:url'");
|
||||
this.seoService.createLinkForCanonicalURL(false);
|
||||
if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){
|
||||
this.piwiksub = this._piwikService.trackView(this.properties, "OpenAIRE |Search publications, research data, projects...").subscribe();
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<schema2jsonld *ngIf="url" [URL]="url" type="search" [name]=pageTitle [searchAction]=false></schema2jsonld>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ import {StringUtils, Dates} from '../../utils/string-utils.class';
|
|||
|
||||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
import {EnvProperties} from '../../utils/properties/env-properties';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
@Component({
|
||||
selector: 'advanced-search-page',
|
||||
|
@ -52,14 +53,15 @@ export class AdvancedSearchPageComponent {
|
|||
public resultsPerPage: number = 0;
|
||||
isPiwikEnabled = false;
|
||||
properties:EnvProperties;
|
||||
|
||||
url = null;
|
||||
@Output() queryChange = new EventEmitter();
|
||||
constructor (private route: ActivatedRoute,
|
||||
private location: Location,
|
||||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private _piwikService:PiwikService,
|
||||
private router: Router) {
|
||||
private router: Router,
|
||||
private seoService: SEOService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
@ -72,6 +74,7 @@ export class AdvancedSearchPageComponent {
|
|||
this.isPiwikEnabled = data.envSpecific.enablePiwikTrack;
|
||||
if(typeof window !== 'undefined') {
|
||||
this.updateUrl(data.envSpecific.baseLink+location.pathname);
|
||||
this.url = data.envSpecific.baseLink+location.pathname
|
||||
}
|
||||
if(typeof document !== 'undefined' && this.isPiwikEnabled){
|
||||
this.piwiksub = this._piwikService.trackView(this.properties, this.pageTitle, this.piwikSiteId).subscribe();
|
||||
|
@ -85,7 +88,10 @@ export class AdvancedSearchPageComponent {
|
|||
this.updateDescription(description);
|
||||
|
||||
this.searchUtils.baseUrl = "/" + this.searchUtils.baseUrl;
|
||||
|
||||
this.updateBaseUrlWithParameters();
|
||||
this.seoService.createLinkForCanonicalURL(false);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -14,10 +14,13 @@ import {AdvancedSearchFormModule} from '../searchUtils/advancedSearchForm.module
|
|||
import {PiwikServiceModule} from '../../utils/piwik/piwikService.module';
|
||||
import {PreviousRouteRecorder} from '../../utils/piwik/previousRouteRecorder.guard';
|
||||
import {HelperModule} from '../../utils/helper/helper.module';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, RouterModule, SearchResultsModule, LoadingModalModule, ReportsServiceModule, SearchPagingModule, AdvancedSearchFormModule, SearchDownloadModule, PiwikServiceModule, HelperModule
|
||||
CommonModule, FormsModule, RouterModule, SearchResultsModule, LoadingModalModule, ReportsServiceModule, SearchPagingModule, AdvancedSearchFormModule, SearchDownloadModule, PiwikServiceModule, HelperModule,
|
||||
Schema2jsonldModule, SEOServiceModule
|
||||
],
|
||||
declarations: [
|
||||
AdvancedSearchPageComponent,
|
||||
|
|
|
@ -18,7 +18,7 @@ import {SearchFilterModalComponent} from './searchFilterModal.component';
|
|||
import {ErrorCodes} from '../../utils/properties/errorCodes';
|
||||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
import {EnvProperties} from '../../utils/properties/env-properties';
|
||||
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
@Component({
|
||||
selector: 'search-page',
|
||||
|
@ -75,7 +75,8 @@ export class SearchPageComponent {
|
|||
private _title: Title,
|
||||
private element: ElementRef,
|
||||
private _piwikService:PiwikService,
|
||||
private router: Router) {
|
||||
private router: Router,
|
||||
private seoService: SEOService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
@ -101,7 +102,7 @@ export class SearchPageComponent {
|
|||
this.updateTitle(this.pageTitle);
|
||||
var description = "Openaire, search, repositories, open access, type, content provider, funder, project, " + this.type + "," +this.pageTitle;
|
||||
this.updateDescription(description);
|
||||
|
||||
this.seoService.createLinkForCanonicalURL(false);
|
||||
}
|
||||
ngAfterViewChecked(){
|
||||
|
||||
|
|
|
@ -19,13 +19,14 @@ import {PiwikServiceModule} from '../../utils/piwik/piwikService.module';
|
|||
import {PreviousRouteRecorder} from '../../utils/piwik/previousRouteRecorder.guard';
|
||||
import {HelperModule} from '../../utils/helper/helper.module';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule,RouterModule, SearchFormModule, SearchResultsModule,
|
||||
LoadingModalModule, ReportsServiceModule,
|
||||
SearchPagingModule, SearchDownloadModule, ModalModule, SearchFilterModule, PiwikServiceModule, HelperModule, Schema2jsonldModule
|
||||
SearchPagingModule, SearchDownloadModule, ModalModule, SearchFilterModule, PiwikServiceModule, HelperModule, Schema2jsonldModule, SEOServiceModule
|
||||
],
|
||||
declarations: [
|
||||
SearchPageComponent
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<schema2jsonld *ngIf="url" [URL]="url" type="search" [name]=pageTitle [searchAction]=false></schema2jsonld>
|
||||
|
||||
<div id="tm-main" class=" uk-section uk-padding-remove-top tm-middle" >
|
||||
<div uk-grid uk-grid>
|
||||
|
|
|
@ -24,6 +24,7 @@ import {SearchFilterModalComponent} from './searchFilterModal.component';
|
|||
import {ErrorCodes} from '../../utils/properties/errorCodes';
|
||||
import {PiwikService} from '../../utils/piwik/piwik.service';
|
||||
//import {SearchDataprovidersService} from '../../services/searchDataproviders.service';
|
||||
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
|
||||
|
||||
@Component({
|
||||
selector: 'search-page-table',
|
||||
|
@ -77,12 +78,13 @@ export class SearchPageTableViewComponent implements OnInit, AfterViewInit {
|
|||
@ViewChild(DataTableDirective) datatableElement: DataTableDirective;
|
||||
dtTrigger: Subject<any> = new Subject(); //necessary
|
||||
properties:EnvProperties;
|
||||
|
||||
url = null;
|
||||
constructor (private route: ActivatedRoute,
|
||||
private location: Location,
|
||||
private _meta: Meta,
|
||||
private _title: Title,
|
||||
private _piwikService:PiwikService) { }
|
||||
private _piwikService:PiwikService,
|
||||
private seoService: SEOService) { }
|
||||
|
||||
ngOnInit() {
|
||||
this.route.data
|
||||
|
@ -92,6 +94,7 @@ export class SearchPageTableViewComponent implements OnInit, AfterViewInit {
|
|||
this.isPiwikEnabled = data.envSpecific.enablePiwikTrack;
|
||||
if(typeof window !== 'undefined') {
|
||||
this.updateUrl(data.envSpecific.baseLink+location.pathname);
|
||||
this.url =data.envSpecific.baseLink+location.pathname;
|
||||
}
|
||||
if(typeof document !== 'undefined' && this.isPiwikEnabled){
|
||||
this.piwiksub = this._piwikService.trackView(data.envSpecific, this.pageTitle, this.piwikSiteId).subscribe();
|
||||
|
@ -106,6 +109,8 @@ export class SearchPageTableViewComponent implements OnInit, AfterViewInit {
|
|||
this.updateTitle(this.pageTitle);
|
||||
var description = "Openaire, search, repositories, open access, type, content provider, funder, project, " + this.type + "," +this.pageTitle;
|
||||
this.updateDescription(description);
|
||||
this.seoService.createLinkForCanonicalURL(false);
|
||||
|
||||
|
||||
}
|
||||
ngOnDestroy() {
|
||||
|
|
|
@ -20,13 +20,16 @@ import {PreviousRouteRecorder} from '../../utils/piwik/previousRouteRecorder.gua
|
|||
|
||||
import {HelperModule} from '../../utils/helper/helper.module';
|
||||
import {ErrorMessagesModule} from '../../utils/errorMessages.module';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule,RouterModule, SearchFormModule, SearchResultsModule, LoadingModalModule,
|
||||
ReportsServiceModule, SearchPagingModule, SearchDownloadModule, ModalModule, PagingModule,
|
||||
DataTablesModule, SearchFilterModule, PiwikServiceModule, HelperModule, ErrorMessagesModule
|
||||
DataTablesModule, SearchFilterModule, PiwikServiceModule, HelperModule, ErrorMessagesModule,
|
||||
Schema2jsonldModule, SEOServiceModule
|
||||
],
|
||||
declarations: [
|
||||
SearchPageTableViewComponent
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
import { Injectable, Inject } from '@angular/core';
|
||||
import { DOCUMENT } from '@angular/common';
|
||||
|
||||
// @Injectable({
|
||||
// providedIn: 'root'
|
||||
// })
|
||||
@Injectable()
|
||||
export class SEOService {
|
||||
constructor( @Inject(DOCUMENT) private doc) {
|
||||
}
|
||||
|
||||
createLinkForCanonicalURL(addParameters:boolean=true) {
|
||||
var url = "";
|
||||
if(this.doc ){
|
||||
if(addParameters || !this.doc.URL || this.doc.URL.indexOf("?") == -1){
|
||||
url = this.doc.URL;
|
||||
}else{
|
||||
url = this.doc.URL.substring(0,this.doc.URL.indexOf("?"));
|
||||
}
|
||||
console.log("createLinkForCanonicalURL");
|
||||
|
||||
if (typeof this.doc.getElementById === "function") {
|
||||
let currentLink: HTMLLinkElement = this.doc.getElementById("relcan");
|
||||
if(currentLink ){
|
||||
currentLink.setAttribute('href', url);
|
||||
console.log("update canonical url:" + url);
|
||||
|
||||
return ;
|
||||
}
|
||||
}
|
||||
if (typeof this.doc.createElement === "function") {
|
||||
let link: HTMLLinkElement = this.doc.createElement('link');
|
||||
link.setAttribute('id', 'relcan');
|
||||
link.setAttribute('rel', 'canonical');
|
||||
this.doc.head.appendChild(link);
|
||||
console.log("create new canonical url:" + url);
|
||||
|
||||
link.setAttribute('href', url);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
import { NgModule} from '@angular/core';
|
||||
// import { CommonModule } from '@angular/common';
|
||||
// import { FormsModule } from '@angular/forms';
|
||||
import {SEOService} from './SEO.service';
|
||||
@NgModule({
|
||||
imports: [
|
||||
// CommonModule, FormsModule
|
||||
],
|
||||
providers:[SEOService]
|
||||
})
|
||||
export class SEOServiceModule { }
|
|
@ -5,7 +5,7 @@ import { JsonldDocumentSerializerService } from './service/jsonld-document-seria
|
|||
selector: 'schema2jsonld',
|
||||
template: `
|
||||
<ngx-json-ld [json]="json"></ngx-json-ld>
|
||||
|
||||
{{json|json}}
|
||||
`
|
||||
})
|
||||
export class Schema2jsonldComponent {
|
||||
|
@ -14,6 +14,7 @@ export class Schema2jsonldComponent {
|
|||
@Input() logoURL; // for home, search
|
||||
@Input() otherURL; //for project, datasource
|
||||
@Input() name;
|
||||
@Input() searchAction = true;
|
||||
@Input() type="result";
|
||||
|
||||
json;
|
||||
|
@ -36,10 +37,12 @@ json;
|
|||
}else if(this.type == 'home'){
|
||||
this.json = this.documentParser.createHome(this.name, this.URL, this.logoURL);
|
||||
}else if(this.type == 'search'){
|
||||
this.json = this.documentParser.createSearchPage(this.name, this.URL, this.logoURL);
|
||||
}else{
|
||||
this.json = this.documentParser.createSearchPage(this.name, this.URL, this.logoURL, this.searchAction);
|
||||
}else if(this.type == 'result'){
|
||||
docOvject = this.documentParser.convertResult(this.data, this.URL);
|
||||
this.json = this.documentSerializer.serializeDataset(docOvject);
|
||||
}else{
|
||||
this.json = this.documentParser.createSimplePage(this.name, this.URL);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -29,18 +29,29 @@ export class OpenAireJsonldConverterService {
|
|||
buffer["sameAs"] = sameAs;
|
||||
return buffer;
|
||||
}
|
||||
createSearchPage(name, URL, logoURL): any {
|
||||
createSimplePage(name, URL): any {
|
||||
const buffer = {};
|
||||
buffer["@context"] = "http://schema.org";
|
||||
buffer["@type"] = "Organization";
|
||||
buffer["@type"] = "WebPage";
|
||||
buffer["name"] = name;
|
||||
buffer["url"] = URL;
|
||||
|
||||
return buffer;
|
||||
}
|
||||
createSearchPage(name, URL, logoURL, searchAction:boolean = true): any {
|
||||
const buffer = {};
|
||||
buffer["@context"] = "http://schema.org";
|
||||
buffer["@type"] = "SearchResultsPage";
|
||||
buffer["name"] = name;
|
||||
buffer["url"] = URL;
|
||||
buffer["logo"] = logoURL;
|
||||
if(searchAction){
|
||||
const action ={};
|
||||
action["@type"]= "SearchAction";
|
||||
action["target"]= URL+"?keyword={search_term_string}";
|
||||
action["query-input"]= "required name=search_term_string";
|
||||
buffer["potentialAction"] = action;
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
convertResult(result: any, URL): Dataset {
|
||||
|
|
Loading…
Reference in New Issue