siteMap.js

284 lines | 10.82 kB Blame History Raw Download
var enviroment = "";
var pages = []

esURLValida(window.location.href)

//DATOS DE USUARIO
var email = vsm.session.email != "" ? vsm.session.email : "";
var idUser = vsm.session.id != "" ? vsm.session.id : "";
var firstName = vsm.session.name != "" ? vsm.session.name : "";
var lastName = vsm.session.lastName != "" ? vsm.session.lastName : "";
var isSuscriber = site.session.isSuscriber() && site.session != undefined ? "Suscriptor" : "Usuario";
var dateTime = new Date();
dateTime = dateTime.getDate() + " / " + dateTime.getMonth() + " / " + dateTime.getFullYear() + " / " + dateTime.getHours() + " : " + dateTime.getMinutes()

var isMatch = false
var url = ""

//Zonas Genericas
var globalZones = [
    { name: "Header", selector: "#page-header" },
    { name: "Footer", selector: "#page-footer" },
]

//SELECTORES Genericos
var globalListeners = [
    { class: "#page-header-session-box .sign-in-button", labelName: "Botón Ingresar" },
    { class: "#page-header-middle .b-suscription", labelName: "Botón Suscribite" },
    { class: ".svg-icon.menu", labelName: "Botón MENU sitio" },
    { class: ".session.with-avatar", labelName: "Botón MENU mi perfil" },
    { class: ".session-options li:nth-child(2) a", labelName: "Botón MI PERFIL" },
    { class: "#main-menu ul li a", labelName: "TAGS" },
    { class: ".piece.markets.standard ul li", labelName: "TICKERS" },
]

//SELECTORES Home
var homeListeners = [
    { class: ".section article.item", labelName: "" },
    { class: ".sectionfull article.item", labelName: "" },
    { class: "article.locked", labelName: "Article Member from Home" },
    { class: ".columnists .items article.item", labelName: "Clumnists from Home" },
]

//SELECTORES PayWall
var payWallListeners = [
    { class: ".page.suscripciones a.logo", labelName: "Botón - Header Logo El Cronista from Pay Wall" },
    { class: ".suscripcion .items .item .button", labelName: "Quiero suscribirme" },
    { class: ".suscripcion .items .item .list_items", labelName: "Botón - Mostrar detalles de  planes" },
    { class: "#page-header-session-box .sign-in-button", labelName: "Botón Ingresar From Pay wall" },
    { class: ".otros-planes .otros-planes__item:first-child p a", labelName: "Botón - Plan Jubilado" },
    { class: ".otros-planes .otros-planes__item:nth-child(2) p a", labelName: "Botón - Plan Estudiante" },
    { class: ".page.suscripciones .whatsapp-wrapper", labelName: "Botón Whatsapp from Pay Wall" },
    { class: ".footer-footer a:first-child", labelName: "Botón Terminos y condiciones from Pay Wall" },
    { class: ".footer-footer a:nth-child(2)", labelName: "Botón Precios vigentes from Pay Wall" },
]

//SELECTORES Articulo
var articleListeners = [
    { class: "nav.breadcrumb ol li a span", labelName: "Breadcrumb" },
    { class: ".speakText", labelName: "Botón Escuchar" },
    { class: "#content-share", labelName: "Botón Compartir" },
    { class: ".more-list .whatsapp", labelName: "Botón Compartir whatsapp" },
    { class: ".more-list .facebook", labelName: "Botón Compartir facebook" },
    { class: ".more-list .twitter", labelName: "Botón Compartir twitter" },
    { class: ".more-list .linkedIn", labelName: "Botón Compartir linkedIn" },
    { class: ".more-list .email", labelName: "Botón Compartir email" },
    { class: ".more-list .comments", labelName: "Botón Compartir comments" },
    { class: "#bookmark", labelName: "Botón Guardar" },
    { class: ".b-suscription-full", labelName: "Botón/Caja: Queremos que seas parte de Members" },
]

//Interacciones
var homeInteractions = {
    name: "Home"
}

var payWallInteractions = {
    name: PayWallIteractionName()
}

var home = new PageType("Home", "cronista.com", homeInteractions, homeListeners, false);
var payWall = new PageType("PayWall", "cronista.com/suscripciones", payWallInteractions, payWallListeners, false);

if (document.querySelector("#pagecontent .news") || document.querySelector("#pagecontent .news-minisite") || document.querySelector("#pagecontent .news-es") || document.querySelector("#pagecontent .news-mx")) {
    var metaTag = document.querySelector('meta[property="og:image"]');
    var interaction = {
        name: SalesforceInteractions.CatalogObjectInteractionName.ViewCatalogObject,
        catalogObject: {
            type: "Article",
            id: window.cronistaDataLayer[0].articleProperty.id,
            attributes: {
                url: window.location.href,
                name: SalesforceInteractions.resolvers.fromSelector("#content-title"),
                description: SalesforceInteractions.resolvers.fromSelector(".description"),
                imageUrl: metaTag ? metaTag.getAttribute("content") : null,
                articleId: window.cronistaDataLayer[0].articleProperty.id.toString(),
                seccion: window.cronistaDataLayer[0].articleProperty.category,
                articleTitle: SalesforceInteractions.resolvers.fromSelector("#content-title"),
                publishDate: SalesforceInteractions.resolvers.fromSelector(".author-date time"),
                authorName: window.cronistaDataLayer[0].articleProperty.authorName,
                canonicalUrl: window.cronistaDataLayer[0].articleProperty.canonica,
                accessCondition: window.cronistaDataLayer[0].articleProperty.conditionsOfAccess
            },
        },
    }
    var article = new PageType("Article", window.location.href, interaction, articleListeners, document.querySelector("#pagecontent .news"));
    console.log(article.interaction)
    pages.push(article)
}

//[home, payWall, article]
function Pages() {
    pages.push(home, payWall)
    return pages
}

function PageType(name, myUrl, interaction, myEvents, isArticle) {
    this.name = name;
    this.isMatch = function () {
        var url = window.location.href;
        if (url.includes('?')) {
            url = url.slice(0, window.location.href.lastIndexOf('?'));
        }
        if (url.charAt(url.length - 1) === '/') {
            url = url.slice(0, window.location.href.lastIndexOf('/'));
        }
        if (isArticle) {
            isMatch = true
        } else {
            isMatch = (url === enviroment + myUrl ? true : false);
        }
        return isMatch;
    };
    this.interaction = interaction;
    this.listeners = GenerateListeners(name, myEvents);
}

function GlobalActions(actionEvent) {
    url = window.location.href
    if (email) {
        actionEvent.user = actionEvent.user || {};
        actionEvent.user.attributes = actionEvent.user.attributes || {};
        actionEvent.user.identities = actionEvent.user.identities || {};
        actionEvent.user.attributes.URL || {};
        actionEvent.user.attributes.contentZones || {};
        actionEvent.user.attributes.emailAddress = email;
        actionEvent.user.attributes.isSuscription = isSuscriber;
        actionEvent.user.attributes.name = firstName;
        actionEvent.user.attributes.lastName = lastName;
        actionEvent.user.attributes.date = dateTime
        actionEvent.user.identities.userIdCms = idUser;
    }
    return actionEvent;
}

function PayWallIteractionName() {
    var typeOfPayWall = "";
    var limit = new URL(window.location.href).searchParams.get("limit")

    if (limit != null) {
        var isLimit = limit === "true";
        typeOfPayWall = !isLimit ? "choque exclusivo" : "choque metered";
        //var continueUrl = new URL(window.location.href).searchParams.get("continue")
        typeOfPayWall = "Pay wall - " + typeOfPayWall;
    } else {
        typeOfPayWall = "Pay wall - Choque directo";
    }

    return typeOfPayWall;
}

function ReadHomeBlocks(event) {
    var main = document.querySelector(".main-container");
    var block1 = main.childNodes[0].querySelectorAll("article.item");
    var block2 = main.childNodes[2].querySelectorAll("article.item")
    sendDataFromHomeBlocks("Click, Article from home (Bloque1)", event, block1)
    sendDataFromHomeBlocks("Click, Article from home (Bloque2)", event, block2)
}

function sendDataFromHomeBlocks(nameEvent, target, container) {

    for (var i = 0; i < container.length; i++) {
        if (target === container[i]) {
            SalesforceInteractions.sendEvent({
                interaction: {
                    name: nameEvent,
                },
                user: {
                    identities: {
                        emailAddress: email
                    },
                    attributes: {
                        name: firstName,
                        lastName: lastName
                    }
                }
            });
            break;
        }

    }

}

function ReadGlobalEvents(event, listeners) {
    console.log(listeners)
    var dataName = listeners.labelName

    if (listeners.labelName == "TICKERS" || listeners.labelName == "TAGS") {
        dataName = listeners.labelName + ": " + SalesforceInteractions.cashDom(event.target).text()
    }

    if (listeners.labelName == "Quiero suscribirme") {
        dataName = "Botón: " + listeners.labelName + ": " + SalesforceInteractions.cashDom(event.target.parentNode.querySelector(".title")).text()
    }

    if (listeners.labelName == "Breadcrumb") {
        dataName = listeners.labelName + ": " + SalesforceInteractions.cashDom(event.target).text()
    }

    SalesforceInteractions.sendEvent({
        interaction: {
            name: dataName,
            attributes: {
                userIdCms: idUser,
                name: firstName,
                lastName: firstName,
                isSuscriber: isSuscriber,
                emailAddress: email,
                continueUrl: url
            },
        },
    });

}

function GenerateContentZones(zones) {

    var ContentZones = [];
    if (zones.length > 0) {
        for (var i = 0; i < zones.length; i++) {
            var ContentZone = {
                name: zones[i].name,
                selector: zones[i].selector
            }
            ContentZones.push(ContentZone)
        }
    }
    return ContentZones;
}

function GenerateListeners(pageType, elements) {
    var listeners = [];
    console.log(elements)
    if (elements.length > 0) {
        for (var i = 0; i < elements.length; i++) {
            if (pageType == "Home" && (elements[i].class == elements[0].class || elements[i].class == elements[1].class)) {
                var myEventsBlock = SalesforceInteractions.listener("click", elements[i].class, function (e) {
                    ReadHomeBlocks(e.currentTarget)
                })
                listeners.push(myEventsBlock)
            }

            var myEvents = SalesforceInteractions.listener("click", elements[i].class, function (e) {
                console.log("34554654d")
                console.log(elements[i])
                e.preventDefault()
                ReadGlobalEvents(e, elements[i])
                e.stopPropagation();
            })

            listeners.push(myEvents)

        }
    }
    return listeners;
}

function esURLValida(url) {
    var regex = url.match(/^https:\/\/(?:dev|qa|www)\./i);
    enviroment = regex[0]
}