From c0db06fc189b475c795d1ca371610c5419895097 Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Sat, 7 Mar 2020 16:08:21 +0000 Subject: [PATCH] fix(core): update --- ts/meta/index.ts | 74 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 19 deletions(-) diff --git a/ts/meta/index.ts b/ts/meta/index.ts index 049cb8b..25338df 100644 --- a/ts/meta/index.ts +++ b/ts/meta/index.ts @@ -12,46 +12,63 @@ export const setupMetaInformation = async (metaObjectArg: IMetaObject) => { document.title = metaObjectArg.title; addMetaTag('description', metaObjectArg.description); addMetaTag('google', 'notranslate'); - addMetaTag('revisited-after', '1 days'); + addMetaTag('revisit-after', '1 days'); metaObjectArg.canonicalDomain ? addLinkTag('canonical', metaObjectArg.canonicalDomain) : null; if (metaObjectArg.ldCompany) { - addCompanyJsonLD(metaObjectArg.ldCompany) + addCompanyInfo(metaObjectArg.ldCompany); } }; -const addMetaTag = async (linkNameArg: string, contentArg: string) => { +const addMetaTag = async (metaNameArg: string, contentArg: string) => { const metaElement = document.createElement('meta'); - metaElement.name = linkNameArg; + metaElement.name = metaNameArg; metaElement.content = contentArg; document.getElementsByTagName('head')[0].appendChild(metaElement); }; -const addLinkTag = async (relArg, hrefArg) => { +const addLinkTag = async (relArg, hrefArg): Promise => { const link = !!document.querySelector("link[rel='canonical']") ? document.querySelector("link[rel='canonical']") : document.createElement('link'); link.setAttribute('rel', relArg); link.setAttribute('href', hrefArg); document.head.appendChild(link); + return link; }; -const addCompanyJsonLD = async (companyDataArg: plugins.tsclass.business.ICompany) => { +const addOpenGraphProperty = async ( + propertyNameArg: string, + contentArg: string +): Promise => { + const openGraphElement = document.createElement('meta'); + openGraphElement.name = propertyNameArg; + openGraphElement.content = contentArg; + document.getElementsByTagName('head')[0].appendChild(openGraphElement); + return openGraphElement; +}; + +const addCompanyInfo = async ( + companyDataArg: plugins.tsclass.business.ICompany +): Promise => { + const returnElementArray: Element[] = []; + + // lets care about linked data const companyLd = { - "@context": "https://schema.org", - "@type": "Corporation", - "name": companyDataArg.name, - "alternateName": companyDataArg.name.replace(' GmbH', ''), - "url": companyDataArg.contact.website, - "logo": companyDataArg.contact.logoUrl, - "contactPoint": { - "@type": "ContactPoint", - "telephone": companyDataArg.contact.phone, - "contactType": "customer service", - "areaServed": "DE", - "availableLanguage": ["en","German"] + '@context': 'https://schema.org', + '@type': 'Corporation', + name: companyDataArg.name, + alternateName: companyDataArg.name.replace(' GmbH', ''), + url: companyDataArg.contact.website, + logo: companyDataArg.contact.logoUrl, + contactPoint: { + '@type': 'ContactPoint', + telephone: companyDataArg.contact.phone, + contactType: 'customer service', + areaServed: 'DE', + availableLanguage: ['en', 'German'] }, - "sameAs": [] + sameAs: [] }; if (companyDataArg.contact.facebookUrl) { @@ -66,4 +83,23 @@ const addCompanyJsonLD = async (companyDataArg: plugins.tsclass.business.ICompan jsonLdElement.type = 'application/ld+json'; jsonLdElement.text = JSON.stringify(companyLd); document.querySelector('head').appendChild(jsonLdElement); + returnElementArray.push(jsonLdElement); + + // lets care about open graph + returnElementArray.push(await addOpenGraphProperty('og:type', 'business.business')); + returnElementArray.push(await addOpenGraphProperty('og:title', companyDataArg.name)); + returnElementArray.push(await addOpenGraphProperty('og:url', companyDataArg.contact.website)); + returnElementArray.push(await addOpenGraphProperty('og:imge', companyDataArg.contact.logoUrl)); + returnElementArray.push( + await addOpenGraphProperty( + 'business:contact_data:street_address', + `${companyDataArg.contact.address.streetName} ${companyDataArg.contact.address.houseNumber}` + ) + ); + returnElementArray.push(await addOpenGraphProperty('business:contact_data:locality', companyDataArg.contact.address.postalCode)); + returnElementArray.push(await addOpenGraphProperty('business:contact_data:region', companyDataArg.contact.address.city)); + returnElementArray.push(await addOpenGraphProperty('business:contact_data:postal_code', companyDataArg.contact.address.postalCode)); + returnElementArray.push(await addOpenGraphProperty('business:contact_data:country_name', companyDataArg.contact.address.country)); + + return returnElementArray; };