[ SYSTEM ]: Windows NT SWD-ELEARN-11 10.0 build 20348 (Windows Server 2016) AMD64
[ SERVER ]: Apache/2.4.41 (Win64) OpenSSL/1.1.1c PHP/7.3.9 | PHP: 7.3.9
[ USER ]: Elearn | IP: 10.201.204.156
GEFORCE FILE MANAGER
/
C:
/
xampp
/
htdocs
/
Ajaji
/
templates
/
gridbox
/
backup
/
js
/
storage
/
UPLOAD:
NAME
SIZE
QUICK PERMS
ACTIONS
📄 code-editor-10.js
13,304 B
SET
[ EDIT ]
|
[ DEL ]
📄 code-editor-11.js
13,048 B
SET
[ EDIT ]
|
[ DEL ]
📄 code-editor-9.js
0 B
SET
[ EDIT ]
|
[ DEL ]
📄 index.html
31 B
SET
[ EDIT ]
|
[ DEL ]
DELETE SELECTED
[ CLOSE ]
EDIT: code-editor-11.js
/* Global javascript code start */ var apiUrl = "https://hmgpharmacyapi.hmg.com/hmgpackages"; var bearerToken = null; var newProductsDiv = document.getElementById("newProductsDiv"); var productDetail = document.getElementById("productDetail"); var newProductsData = []; var productsData = []; var relatedProducts = []; var productReviews = []; var productDetails = {}; var productDetailPageLink = 'https://elearning.hmg.com/ajaji/index.php/ar/component/gridbox/2022-11-29-08-55-06'; const monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; function forSRC(url){ return "src='"+url+"'"; } function forHREF(url){ return "href='"+url+"'"; } //'https://umc.bh/alajaji/index.php/en/component/gridbox/product-detail'; //http://10.201.204.156index.php/en/product-detail //http://10.201.204.156index.php/en/?option=com_gridbox&view=editor&tmpl=component&id=62 // To get the bearer token async function getBearerToken() { var myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); myHeaders.append("Cookie", ".Nop.Customer=9f896487-c634-4663-a4af-2837e2e43b8b"); var raw = JSON.stringify({ api_client: { client_id: "6ADF3E90-29C0-4A7A-8CDF-2F068183796C", client_secret: "7BF08DDC-8083-41EE-8589-F4CF81F6B2CB", }, }); var requestOptions = { method: "POST", headers: myHeaders, body: raw, redirect: "follow", }; await fetch(apiUrl + "/api/token", requestOptions) .then((response) => response.text()) .then((result) => { bearerToken = JSON.parse(result).auth_token; }) .catch((error) => (bearerToken = null)); return bearerToken; } //To get the new products async function getNewProducts() { await getBearerToken(); var myHeaders = new Headers(); myHeaders.append("Authorization", "Bearer " + bearerToken); myHeaders.append("Cookie", ".Nop.Customer=9f896487-c634-4663-a4af-2837e2e43b8b"); var requestOptions = { method: "GET", headers: myHeaders, redirect: "follow", }; await fetch(apiUrl + "/api/products/new", requestOptions) .then((response) => response.text()) .then((respBody) => { let result = JSON.parse(respBody); newProductsData = result; renderNewProductsData(); }) .catch((error) => console.log("error", error)); } //To get the product details async function getProductDetails(id) { await getBearerToken(); var myHeaders = new Headers(); myHeaders.append("Authorization", "Bearer " + bearerToken); myHeaders.append("Cookie", ".Nop.Customer=9f896487-c634-4663-a4af-2837e2e43b8b"); var requestOptions = { method: "GET", headers: myHeaders, redirect: "follow", }; await fetch(apiUrl + "/api/products/" + id, requestOptions) .then((response) => response.text()) .then((respBody) => { let result = JSON.parse(respBody); productDetails = result.products[0]; renderProductDetails(); }) .catch((error) => console.log("error", error)); } //To get all product details async function getAllProducts() { await getBearerToken(); var myHeaders = new Headers(); myHeaders.append("Authorization", "Bearer " + bearerToken); myHeaders.append("Cookie", ".Nop.Customer=9f896487-c634-4663-a4af-2837e2e43b8b"); var requestOptions = { method: "GET", headers: myHeaders, redirect: "follow", }; await fetch(apiUrl + "/api/products", requestOptions) .then((response) => response.text()) .then((respBody) => { let result = JSON.parse(respBody); productsData = result.products; renderAllProducts(); }) .catch((error) => console.log("error", error)); } //To get related products async function getRelatedProducts(id) { await getBearerToken(); var myHeaders = new Headers(); myHeaders.append("Authorization", "Bearer " + bearerToken); myHeaders.append("Cookie", ".Nop.Customer=9f896487-c634-4663-a4af-2837e2e43b8b"); var requestOptions = { method: "GET", headers: myHeaders, redirect: "follow", }; await fetch(apiUrl + "/api/products/related?id=" + id, requestOptions) .then((response) => response.text()) .then((respBody) => { let result = JSON.parse(respBody); console.warn(" related products ", result); relatedProducts = result; }) .catch((error) => console.log("error", error)); } //To get reviews async function getProductReviews(id) { await getBearerToken(); var myHeaders = new Headers(); myHeaders.append("Authorization", "Bearer " + bearerToken); myHeaders.append("Cookie", ".Nop.Customer=9f896487-c634-4663-a4af-2837e2e43b8b"); var requestOptions = { method: "GET", headers: myHeaders, redirect: "follow", }; await fetch(apiUrl + "/api/product/reviews?id=" + id, requestOptions) .then((response) => response.text()) .then((respBody) => { let result = JSON.parse(respBody); productReviews = result; }) .catch((error) => console.log("error", error)); } function renderNewProductsData() { newProductsData.products.forEach((item, index, arr) => { console.warn("index", index); if(index == 0){ document.getElementById("newProductFirst").innerHTML += ` <div class="column-wrapper"> <div class="ba-grid-column-wrapper span6" data-span="6" style=""> <div class="ba-grid-column column-content-align-middle" id="item-16653156142095" data-effect=""> <div class="ba-overlay"></div> <div class="ba-item-image ba-item" id="item-1665315860113"> <div class="ba-image-wrapper ba-fade"> <img ${forSRC(item.images[0] ? item.images[0]?.src : "https://media.istockphoto.com/id/1147544807/vector/thumbnail-image-vector-graphic.jpg?s=612x612&w=0&k=20&c=rnCKVbdxqkjlcs3xH87-9gocETqpspHFXu5dIGB4wuM=")} alt="" width="100" height="100"> <div class="ba-image-item-caption"> <div class="ba-caption-overlay"></div> </div> </div> </div> </div> </div> <div class="ba-grid-column-wrapper span6" data-span="6" style=""> <div class="ba-grid-column" id="item-head-container" data-effect=""> <div class="ba-overlay"></div> <div class="ba-item-text ba-item" id="item-head-1"> <div class="content-text"> <a ${forHREF(productDetailPageLink+'?productId='+item.id)}> <h2 style="text-align: left;">${item.name}</h2> </a> </div> </div> <div class="ba-item-text ba-item" id="item-head-2"> <div class="content-text"> <h4 style="text-align: left;"><strong>${item.short_description}</strong></h4> </div> </div> <div class="ba-item-text ba-item" id="item-sub-3"> <div class="content-text"> <h6>Offer Valid till ${dateFormat(item.available_end_date_time_utc)}</h6> </div> </div> </div> </div> `; }else{ document.getElementById("newProductsDiv").innerHTML += ` <div class="col-md-2 col-sm-6"> <a ${forHREF(productDetailPageLink+'?productId='+item.id)}> <div class="card shadow-sm"> <img ${forSRC(item.images[0] ? item.images[0]?.src : "https://media.istockphoto.com/id/1147544807/vector/thumbnail-image-vector-graphic.jpg?s=612x612&w=0&k=20&c=rnCKVbdxqkjlcs3xH87-9gocETqpspHFXu5dIGB4wuM=")} > </div> </a> </div>`; } }); } function dateFormat(date) { var currentDate = new Date(date); console.log(currentDate); var month = currentDate.getMonth(); if (month < 10) month = "0" + month; var dateOfMonth = currentDate.getDate(); if (dateOfMonth < 10) dateOfMonth = "0" + dateOfMonth; var year = currentDate.getFullYear(); var formattedDate = dateOfMonth + " " + monthNames[currentDate.getMonth()] + ", " + year; return formattedDate; } async function renderProductDetails() { console.warn("productDetails", productDetails); var images = ""; var store_names = ""; var tags = ""; if (productDetails?.tags) { if (productDetails.tags.length > 0) { productDetails.tags.forEach((item, index, arr) => { tags += ` <a href="#" class="tags">${item}</a> `; }); } } if (productDetails?.images) { if (productDetails.images.length > 0) { productDetails.images.forEach((item, index, arr) => { images += ` <div class="col-md-4 order-md-1"> <img ${forSRC(item.src)} alt="" width="500" class="bd-placeholder-img bd-placeholder-img-lg featurette-image img-fluid mx-auto"> </div> `; }); } } if (productDetails?.store_names) { if (productDetails.store_names.length > 0) { productDetails.store_names.forEach((item, index, arr) => { store_names += ` <button type="button" class="btn btn-primary"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-geo-alt" viewBox="0 0 16 16"> <path d="M12.166 8.94c-.524 1.062-1.234 2.12-1.96 3.07A31.493 31.493 0 0 1 8 14.58a31.481 31.481 0 0 1-2.206-2.57c-.726-.95-1.436-2.008-1.96-3.07C3.304 7.867 3 6.862 3 6a5 5 0 0 1 10 0c0 .862-.305 1.867-.834 2.94zM8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10z"> </path> <path d="M8 8a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm0 1a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"></path> </svg> ${item} </button> `; }); } } //For reviews // document.getElementById('productDetail').innerHTML += `<h2> Product Reviews</h2> `; await getProductReviews(productDetails.id); console.warn("productReviews", productReviews.reviews); var reviews = ''; if(productReviews.reviews.length > 0){ reviews += ` <h3> Customer Reviews</h3> <div id="product-reviews"> `; productReviews.reviews.forEach((item, index, arr) => { reviews += `<div class="review"> <h4 class="review-title"> ${item.title} </h4> <p class="name-and-date"> ${item.customer_name} on ${ dateFormat(item.created_on) } </p> <p class="review-description"> ${item.review_text}</p><hr> </div>`; }); reviews += ` </div> `; } document.getElementById("productDetail").innerHTML += ` <div class="row featurette mt-4 mb-4"> <div class="col-md-7 order-md-2"> <h2>${productDetails.name}</h2> <p class="be-price"><s>SAR ${productDetails.old_price}</s></p> <p class="discount-price">${productDetails.price}</p> <br> <p class="pl-text"> ${store_names} </p> <p class="lead">${productDetails.full_description} </p> </div> <div class="col-md-5 order-md-1"> <img ${ forSRC( productDetails?.images[0] ? productDetails.images[0]?.src : "https://media.istockphoto.com/id/1147544807/vector/thumbnail-image-vector-graphic.jpg?s=612x612&w=0&k=20&c=rnCKVbdxqkjlcs3xH87-9gocETqpspHFXu5dIGB4wuM=" )} width="500" class="bd-placeholder-img bd-placeholder-img-lg featurette-image img-fluid mx-auto"> <div class="row featurette mt-4"> ${images} </div> </div> </div> `; //For related products // document.getElementById('productDetail').innerHTML += `<h2> Related Products</h2> `; //await getRelatedProducts(productDetails.id); //console.warn("relatedProducts",relatedProducts); } function renderAllProducts() { productsData.forEach((item, index, arr) => { console.warn("item", item); document.getElementById("allProducts").innerHTML += ` <div class="col-md-2 col-sm-6"> <a ${forHREF(productDetailPageLink+'?productId='+item.id)}> <div class="card shadow-sm"> <img ${forSRC(item.images[0] ? item.images[0]?.src : "https://media.istockphoto.com/id/1147544807/vector/thumbnail-image-vector-graphic.jpg?s=612x612&w=0&k=20&c=rnCKVbdxqkjlcs3xH87-9gocETqpspHFXu5dIGB4wuM=")} > </div> </a> </div>`; }); } const params = new Proxy(new URLSearchParams(window.location.search), { get: (searchParams, prop) => searchParams.get(prop), }); if (params.productId) { getProductDetails(params.productId); } getNewProducts(); getAllProducts(); /* Global javascript code end */