| Server IP : 138.197.107.151 / Your IP : 216.73.217.7 Web Server : Apache/2.4.58 (Ubuntu) System : Linux BloxBy-Builder 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64 User : wpbetasites_mrakzqskir ( 1022) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/shark-admin/resources/views/websites/ |
Upload File : |
@extends('layouts.app',['title'=> ucwords($title)])
@section('content')
<div class="main-content" id="result">
<div class="page-content">
<div class="container-fluid">
{{-- <div class="row">
<div class="col-lg-12">
@if($errors->any())
<div class="alert alert-danger">
<ul class="mb-0">
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if(session('success'))
<div class="alert alert-success">{{ session('success') }}</div>
@endif
@if(session('error'))
<div class="alert alert-danger">{{ session('error') }}</div>
@endif
</div>
</div> --}}
@include("partials.tabs.user_profile_tab",["id"=>$id,"tab"=>"websites",'prompts_count'=>$prompts_count])
<div class="row mt-4 web-card">
@forelse ($websites as $website)
<div class="col-xxl-4 col-md-4">
@if($website->status=="completed")
<div class="card shadow-sm h-100">
<div class="card-body text-left card-inner">
@if($website->trial_mode==1)
<div class="ribbon-2" style="display:none;"><span>Trial Mode</span></div>
@endif
<div class="dropdown-inner-x">
@php
$server_meta = @json_decode($website->server_meta, true);
$show_drop_down = false;
$download_zip_request = null;
$menu_options = [
"ftp"=>true,
"domain"=>true,
"remove_domain"=>false,
"zip"=>false,
"download_zip"=>false
];
if(!$website->plan){
$show_drop_down = true;
}
if($website->plan){
if($website->plan->type!=="one-time"){
$menu_options["ftp"] = true;
if($website->domain==null){
$menu_options["domain"] = false;
$menu_options["remove_domain"] = false;
} else {
$menu_options["domain"] = false;
$menu_options["remove_domain"] = true;
}
$menu_options["zip"] = false;
$menu_options["download_zip"] = false;
$show_drop_down = false;
} else {
$menu_options["ftp"] = true;
$menu_options["domain"] = false;
$menu_options["remove_domain"] = false;
$menu_options["zip"] = true;
$download_zip_request = $website->latestCompleteWebsiteArchiveRequest($website->id);
if($download_zip_request){
$menu_options["download_zip"] = true;
}
$show_drop_down = false;
}
}
@endphp
</div>
<div class="delete-inner">
@php
$signature = @hash_hmac('sha256', "site_id_".$website->id."|email_id_info@site.com", env('WP_SSO_KEY'));
@endphp
<a target="_blank" href="{{$website->domain && $website->domain_status=='completed' ? 'http://'.$website->domain.'/index.php/wp-json/wp/v1/autologin?payload='.$signature : 'http://'.@$server_meta['domain'].'.bloxby.io/index.php/wp-json/wp/v1/autologin?payload='.$signature.'&email=info@site.com'}}">
<div class="web-icon">
<img src="{{ asset('assets/images/wp-black.svg') }}" alt="icon"/>
</div>
</a>
<a href="{{$website->domain && $website->domain_status=='completed' ? 'http://'.$website->domain : 'http://'.@$server_meta['domain'].'.bloxby.io'}}" target="_blank">
<div class="web-icon">
<img src="{{ asset('assets/images/web-view.svg') }}" alt="icon"/>
</div>
</a>
@if($show_drop_down)
<div class="dropdown">
<button class="btn dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
<div class="dot-icon">
<img src="{{ asset('assets/images/menu.svg') }}" alt="icon"/>
</div>
</button>
<ul class="dropdown-menu">
@if(!$website->plan)
<li>
<form class="delete-icon dropdown-item" action="{{ route('website.remove',['id'=>$website->id]) }}" method="POST">
@csrf
@method('DELETE')
<button type="submit" class="btn dropdown-item remove_website show_confirm_message p-0" data-confirm-msg="Are you sure you want to delete this website?<div class='mt-3'>Note: Please note that once deleted, this cannot be restored.</div>" data-bs-toggle="tooltip" data-bs-placement="top" note="" title="" data-bs-original-title="">
Delete Website
</button>
</form>
</li>
@endif
</ul>
</div>
@endif
<!-- <form class="delete-icon" action="{{ route('website.remove',['id'=>$website->id]) }}" method="POST">
@csrf
@method('DELETE')
<button type="submit" class="btn delete-btn-d remove_website show_confirm_message" data-confirm-msg="Are you sure you want to delete this website?<div class='mt-3'>Note: Please note that once deleted, this cannot be restored.</div>" data-bs-toggle="tooltip" data-bs-placement="top" note="" title="" data-bs-original-title="Delete Website">
<i class="mdi mdi-close"></i>
</button>
</form> -->
</div>
<!-- <div class="mb-3">
<i class="bi bi-globe2 display-4 text-primary"></i>
</div> -->
<?php /*{{asset('websites/thumbs/'.$website->thumbnail)}} */ ?>
<div class="card-img-inner">
@if(true || $website->thumbnail)
<img class="check-image" src="https://s.wordpress.com/mshots/v1/{{$website->domain && $website->domain_status=='completed' ? urlencode('http://'.$website->domain.'/?nocache=1') : urlencode('http://'.@$server_meta['domain'].'.bloxby.io/?nocache=1')}}/?w=1600&h=900" />
@else
<iframe src="https://{{ @$server_meta['domain'] }}.bloxby.io" frameborder="0"></iframe>
@endif
</div>
<div class="card-info web-flex">
<div class="content">
<h5 class="card-title"><a href="{{route('website.details',['id'=>$website->id])}}">{{ $website->title }}</a></h5>
<a class="site-link" target="_blank" href="{{$website->domain && $website->domain_status=='completed' ? 'http://'.$website->domain : 'http://'.@$server_meta['domain'].'.bloxby.io'}}">{{$website->domain && $website->domain_status=='completed' ? $website->domain : @$server_meta['domain'].'.bloxby.io'}}</a>
</div>
<div class="link">
<a href="{{route('website.details',['id'=>$website->id])}}" class="btn btn-outline-primary button-text cyan">
Manage
</a>
</div>
</div>
</div>
</div>
@elseif($website->status=="pending" || $website->status=="inprogress" || $website->status=="error")
<div class='card shadow-sm h-100 {{ $website->status=="pending" || $website->status=="inprogress" ? "inprogresscard" : "" }} {{ $website->status=="error"? "websiteerror" : "" }}'>
<div class="card-body text-left card-inner">
@if($website->trial_mode==1)
<div class="ribbon-1" style="display:none;"><span>Trial Mode</span></div>
@endif
<div class="delete-inner">
@if($website->status === 'error')
<div class="dropdown">
<button class="btn dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
<div class="dot-icon">
<img src="{{ asset('assets/images/dot-list.svg') }}" alt="icon"/>
</div>
</button>
<ul class="dropdown-menu">
<li>
<form class="delete-icon dropdown-item" action="{{ route('website.remove',['id'=>$website->id]) }}" method="POST">
@csrf
@method('DELETE')
<button type="submit" class="btn dropdown-item remove_website show_confirm_message p-0" data-confirm-msg="Are you sure you want to delete this website?<div class='mt-3'>Note: Please note that once deleted, this cannot be restored.</div>" data-bs-toggle="tooltip" data-bs-placement="top" note="" title="" data-bs-original-title="">
Delete Website
</button>
</form>
</li>
</ul>
</div>
@endif
</div>
<div class="card-img-inner text-center p-4" style="background: #f8f9fa; display: flex; align-items: center; justify-content: center;">
@if($website->status === 'inprogress' || $website->status === 'pending')
<div style="width:100%">
<div class="text-primary" role="status" style="width: 100%; height: 100%;">
<img src="{{asset('assets/images/genrate.jpg')}}" />
</div>
</div>
@endif
@if($website->status === 'error')
<div style="width:100%">
<div class="text-primary" role="status" style="width: 100%; height: 100%;">
Error
</div>
</div>
@endif
</div>
<div class="card-info web-flex">
<h5 class="card-title mt-3">
{{ $website->title }}
@if($website->status === 'inprogress' || $website->status === 'pending')
<span class="badge bg-warning text-dark">In Progress</span>
@endif
</h5>
@if($website->status === 'inprogress' || $website->status === 'pending')
<div style="width:100%">
<p class=" mb-0 text-muted">This may take some time. Kindly <a href="{{route('users.websites.list', $id)}}">refresh</a> the page to see the latest status.</p>
</div>
@elseif($website->status === 'error')
<div>
<p class=" mb-0 text-muted">Some error has been occured, Please contact support.</p>
</div>
@endif
</div>
</div>
</div>
@endif
</div>
@empty
<div class="col">
<div class="alert alert-info">This user does not have any websites yet.</div>
</div>
@endforelse
</div>
<!-- end row -->
</div> <!-- container-fluid -->
</div>
@include('partials.modals.confirm_modal',['title'=>"Delete website"])
@include("partials.modals.view_prompt_modal",["title"=>"Prompt"])
</div>
@endsection
@push('topcss')
<link href="{{ asset('assets/libs/datatables.net-bs4/css/dataTables.bootstrap4.min.css') }}" rel="stylesheet" type="text/css" />
<link href="{{ asset('assets/libs/datatables.net-responsive-bs4/css/responsive.bootstrap4.min.css') }}" rel="stylesheet" type="text/css" />
@endpush
@push('scripts')
<script>
var clicked_confirm_action = null;
$(".show_confirm_message").click(function(e){
e.preventDefault();
clicked_confirm_action = $(this);
$("#confirmModal").find(".modal-body").html($(this).attr("data-confirm-msg"));
$("#confirmModal").modal("show");
})
$("#confirmYesBtn").click(function(){
clicked_confirm_action.closest("form").submit();
})
$(".view_prompt").click(function(e){
e.preventDefault();
$("#promptModal").modal("show") ;
$("#promptModal .modal-body").html($(this).attr("data_prompt"));
})
/*$(".remove_website").click(function(e){
e.preventDefault();
if(confirm("Are you sure?")){
$(this).closest('form').submit();
}
})*/
</script>
<script>
function checkAndReload(img) {
const originalUrl = img.src;
fetch(`/check-mshots?url=${encodeURIComponent(originalUrl)}`)
.then(res => res.json())
.then(data => {
if (data.valid) {
console.log(`✅ ${originalUrl} is valid. Reloading...`);
//const separator = originalUrl.includes("?") ? "&" : "?";
img.src = originalUrl + "&t=1" ; // cache-busting
//img.src = originalUrl
} else {
console.log(`❌ ${originalUrl} not ready. HTTP: ${data.http_code}, redirect: ${data.redirect}`);
// Optional: retry after interval
setTimeout(() => checkAndReload(img), 5000);
}
})
.catch(err => {
console.error('Error checking mShots:', err);
setTimeout(() => checkAndReload(img), 5000);
});
}
// Apply to all images
document.querySelectorAll('.check-image').forEach(img => checkAndReload(img));
</script>
@endpush