async function postData(url = '', data) {
// Default options are marked with *
const response = await fetch(url, {
method: 'POST',
body: data,
});
return response.json(); // parses JSON response into native JavaScript objects
}
function drawStars($totalRate, color, starSize) {
let checked = Math.floor($totalRate);
let notCheck = 5 - $totalRate;
let notChecked = Math.floor(notCheck);
let halfChecked = Math.ceil(notCheck - notChecked);
let result = '';
for (let i = 0; i < checked; i++) {
result += ``;
}
if (halfChecked) {
result += ``;
}
for (let j = 0; j < notChecked; j++) {
result += ``;
}
return result;
}
function addStyle(styleSheet){
var style = document.createElement('style');
style.type = 'text/css';
style.id = 'rating-positions';
style.appendChild(document.createTextNode(styleSheet));
document.getElementsByTagName('head')[0].appendChild(style);
}
function insertAfter(referenceNode, newNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
window.addEventListener("load",
function()
{
// We check if the code is laoded
if (document.getElementById('edititorifyReviewsFrameWidget'))
{
var element = document.getElementById('edititorifyReviewsFrameWidget').parentElement;
if (typeof(element.attributes['product-id']) !== "undefined")
{
try {
addGoogleSnippet(element.attributes['product-id'].nodeValue);
} catch (e) {
console.log(e, 'failed to add snippet')
}
}
}
}
);
window.addEventListener('load', function()
{
console.log("Editorify load Script");
if(window.location.href.indexOf('hotluxedeals')>-1 && document.querySelector('.editorify-reviews-count-new') && parseInt($(window).width())<769){
insertAfter(document.querySelector('.medium--hide.large--hide .product-single__title'),document.querySelector('.editorify-reviews-count-new'))
}
sendPageEvents('page_view')
setTimeout(function () {
if(document.querySelectorAll('.editorify-rating').length || document.querySelectorAll('li.snize-product').length || document.querySelectorAll('h3[data-pf-type="ProductTitle"]').length || document.querySelectorAll('.grid__item .card__heading.h5').length){
let rateElements = document.querySelectorAll('.editorify-rating');
if(!rateElements.length && document.querySelectorAll('.grid__item .card__heading.h5').length){
rateElements = document.querySelectorAll('.grid__item .card__heading.h5')
}else if(window.location.href.indexOf('onthemove') < 0 && !rateElements.length && document.querySelectorAll('h3[data-pf-type="ProductTitle"]').length){
rateElements = document.querySelectorAll('h3[data-pf-type="ProductTitle"]')
}else if(!rateElements.length && document.querySelectorAll('.snize-product').length){
rateElements = document.querySelectorAll('.snize-product')
}
let ids = [];
for (let i =0; i< rateElements.length; i++){
let id = rateElements[i].getAttribute('data-id')
if(!id && rateElements[i].getAttribute('data-product-id')){
id = rateElements[i].getAttribute('data-product-id')
}else if(!id){
let elemId = rateElements[i].getAttribute('id')
if(elemId){
elemId = elemId.split('-')
id = elemId[elemId.length -1]
}
}
ids.push(id)
}
console.log(ids)
let storeName = Shopify.shop
var form_data = new FormData();
form_data.append('storeName',storeName)
form_data.append('product_ids',ids)
postData('https://apps.editorify.com/review/get-review-data', form_data)
.then(data => {
var color = data.color;
var rateText = data.rateTitle
var rateText = data.rateTitle
var starSize = data.star_size
var styleSheet = data.styleSheet;
var keep_rating = data.keep_rating
if (window.location.href.indexOf('petsparade.co') >= 0)
{
styleSheet += '.editorify-rating { margin-top: 0 !important; margin-bottom: 5px !important; }'
}
addStyle(styleSheet)
var reviewsData = data.result;
if(reviewsData){
if(reviewsData.enabled){
for (let i =0; i< rateElements.length; i++){
let id = rateElements[i].getAttribute('data-id')
if(!id && rateElements[i].getAttribute('data-product-id')){
id = rateElements[i].getAttribute('data-product-id')
}else if(!id){
let elemId = rateElements[i].getAttribute('id')
if(elemId){
elemId = elemId.split('-')
id = elemId[elemId.length -1]
}
}
if(reviewsData[id]){
var avgRate = reviewsData[id][0];
var ReviewsCount = reviewsData[id][1];
let ratingContent = '
'+drawStars(avgRate,color,starSize) +'
'+ (ReviewsCount > 1 ? ReviewsCount+rateText:+ReviewsCount+rateText)+'
'
if(keep_rating){
ratingContent = drawStars(avgRate,color,starSize);
}
if(!rateElements[i].querySelector('.editorify-rating')){
if(rateElements[i].querySelector('.snize-title')){
rateElements[i].innerHTML = rateElements[i].innerHTML +`${ratingContent}
`
}else if(rateElements[i].getAttribute('data-product-type') == 'title'){
rateElements[i].innerHTML = rateElements[i].innerHTML +`${ratingContent}
`
}else{
rateElements[i].innerHTML = rateElements[i].innerHTML +`${ratingContent}
`
}
}
}
}
}
}
});
}
else if(document.querySelectorAll('.pr_grid_item').length && !document.querySelectorAll('.editorify-rating').length){
let rateElements = document.querySelectorAll('.pr_grid_item');
let ids = [];
for (let i =0; i< rateElements.length; i++){
let id = rateElements[i].getAttribute('data-usf-pid')
ids.push(id)
}
console.log(ids)
let storeName = Shopify.shop
var form_data = new FormData();
form_data.append('storeName',storeName)
form_data.append('product_ids',ids)
postData('https://apps.editorify.com/review/get-review-data', form_data)
.then(data => {
var color = data.color;
var rateText = data.rateTitle
var rateText = data.rateTitle
var starSize = data.star_size
var styleSheet = data.styleSheet;
var keep_rating = data.keep_rating
if (window.location.href.indexOf('petsparade.co') >= 0)
{
styleSheet += '.editorify-rating { margin-top: 0 !important; margin-bottom: 5px !important; }'
}
addStyle(styleSheet)
var reviewsData = data.result;
if(reviewsData){
if(reviewsData.enabled){
for (let i =0; i< rateElements.length; i++){
let id = rateElements[i].getAttribute('data-usf-pid')
if(reviewsData[id]){
var avgRate = reviewsData[id][0];
var ReviewsCount = reviewsData[id][1];
let ratingContent = ''+drawStars(avgRate,color,starSize) +'
'+ (ReviewsCount > 1 ? ReviewsCount+rateText:+ReviewsCount+rateText)+'
'
if(keep_rating){
ratingContent = drawStars(avgRate,color,starSize);
}
if(!rateElements[i].querySelector('.editorify-rating')){
if(rateElements[i].querySelector('.product-title')){
rateElements[i].querySelector('.product-title').innerHTML = rateElements[i].querySelector('.product-title').innerHTML +`${ratingContent}
`
}
}
}
}
}
}
});
}
},1000)
if(window.location.href.indexOf('rugbranch') > -1){
window.addEventListener('click', function() {
setTimeout(function () {
if(document.querySelectorAll('.pr_grid_item').length){
console.log('dedwedwedwed')
let rateElements = document.querySelectorAll('.pr_grid_item');
let ids = [];
for (let i =0; i< rateElements.length; i++){
let id = rateElements[i].getAttribute('data-usf-pid')
ids.push(id)
}
console.log(ids)
let storeName = Shopify.shop
var form_data = new FormData();
form_data.append('storeName',storeName)
form_data.append('product_ids',ids)
postData('https://apps.editorify.com/review/get-review-data', form_data)
.then(data => {
var color = data.color;
var rateText = data.rateTitle
var rateText = data.rateTitle
var starSize = data.star_size
var styleSheet = data.styleSheet;
var keep_rating = data.keep_rating
if (window.location.href.indexOf('petsparade.co') >= 0)
{
styleSheet += '.editorify-rating { margin-top: 0 !important; margin-bottom: 5px !important; }'
}
addStyle(styleSheet)
var reviewsData = data.result;
if(reviewsData){
if(reviewsData.enabled){
for (let i =0; i< rateElements.length; i++){
let id = rateElements[i].getAttribute('data-usf-pid')
if(reviewsData[id]){
var avgRate = reviewsData[id][0];
var ReviewsCount = reviewsData[id][1];
let ratingContent = ''+drawStars(avgRate,color,starSize) +'
'+ (ReviewsCount > 1 ? ReviewsCount+rateText:+ReviewsCount+rateText)+'
'
if(keep_rating){
ratingContent = drawStars(avgRate,color,starSize);
}
if(!rateElements[i].querySelector('.editorify-rating')){
if(rateElements[i].querySelector('.product-title')){
rateElements[i].querySelector('.product-title').innerHTML = rateElements[i].querySelector('.product-title').innerHTML +`${ratingContent}
`
}
}
}
}
}
}
});
}
},2000)
})
}
});
window.addEventListener('message', function(e) {
let message = e.data;
console.log(message)
if (window.location.href.indexOf('weinpicker.de') >= 0)
{
styleSheet = '.fa-search:before { content: "\\e800"; } .fa-user:before { content: "\\e801"; } .fa-minus:before { content: "\\e803"; } .fa-plus:before { content: "\\e804"; }';
addStyle(styleSheet);
}
if (window.location.href.indexOf('#reviewrequest') >= 0)
{
if (document.querySelector(".editorify-form-dialog #edititorifyReviewsFrameWidget").getAttribute('data-src') && !document.querySelector(".editorify-form-dialog #edititorifyReviewsFrameWidget").getAttribute('src'))
{
document.querySelector(".editorify-form-dialog #edititorifyReviewsFrameWidget").setAttribute('src', document.querySelector(".editorify-form-dialog #edititorifyReviewsFrameWidget").getAttribute('data-src'));
}
}
if(message.hasOwnProperty('reviewRequest')){
window.scrollTo({
top: document.querySelector('.edititorifyReviewsFrame').offsetTop,
behavior: "smooth"
});
}
if(message.hasOwnProperty('message') && message.message == 'redirect-product'){
window.open(message.link)
}
if(message.hasOwnProperty('show_modal')){
document.querySelector('.editorify-form-dialog').style.display = 'block';
let formFrame = document.querySelector('.edititorifyReviewsFormFrame')
let formSrc = formFrame.getAttribute('data-src');
formFrame.setAttribute('src', formSrc || '');
}
if(message.hasOwnProperty('close_modal')){
if(document.querySelector('.editorify-form-dialog')) {
document.querySelector('.editorify-form-dialog').style.display = 'none';
}
}
if(document.querySelector('.editorify-reviews-count-new .rating-text')){
document.querySelector('.editorify-reviews-count-new .rating-text').addEventListener('click' , function () {
if(window.location.href.indexOf('paiwellness')>-1){
document.querySelector('a[href="#tabs-61"]').click()
window.scrollTo({
top: 1300,
behavior: "smooth"
});
}
})
}
})
document.addEventListener('click', function(e) {
sendPageEvents('page_click')
})
function sendPageEvents(event)
{
console.log("Editorify Statistics Disabled");
return true;
var form_data = new FormData();
form_data.append('page_type',meta.page.pageType)
form_data.append('page_link',window.location.href.split('?')[0])
form_data.append('page_type',meta.page.pageType)
form_data.append('store_name',Shopify.shop)
form_data.append('event',event)
postData('https://apps.editorify.com/site/user-statistics', form_data)
.then(data => {
})
}
function addGoogleSnippet(product_id)
{
postData('https://apps.editorify.com/review/get-schema-info?store_name='+Shopify.shop+'&product_id='+product_id, new FormData)
.then(result =>
{
if(result && result.success)
{
let aggregateRating = {
"@type":"AggregateRating",
ratingValue:result.total_rate,
ratingCount:result.reviewsCount,
"reviewCount":result.reviewsCount,
}
if ($('script[type="application/ld+json"]').length > 0)
{
$('script[type="application/ld+json"]').each(function()
{
if($(this).text().indexOf('"@type": "Product"') > -1)
{
var schemaScript = JSON.parse($(this).text());
if (schemaScript)
{
schemaScript.aggregateRating = aggregateRating;
$(this).text(JSON.stringify(schemaScript));
}
return false;
}
});
}
}
})
}