MINI Sh3ll
<?
session_start();
require_once "functions.php";
ini_set("display_errors", 0);
if(isset($_REQUEST['formtype'])){
switch($_REQUEST['formtype']){
case "add-token":
//y($_REQUEST);
$json_data = $_REQUEST['json_data'];
$mint_response = mintToken($json_data);
$_SESSION['notify_success'] = $mint_response['message']. ". New Token ID is ".$mint_response['token_id']." [ txn_id : ".$mint_response['txn_id']." ]";
header("Location: /nftdemo/");
die;
break;
case "transfer-token":
//x($_REQUEST);
$transfer_response = transferToken($_REQUEST['tokenId'], $_REQUEST['toUser']);
//x($transfer_response);
$_SESSION['notify_success'] = $transfer_response['message']. ".";
header("Location: /nftdemo/");
die;
break;
case "burn-token":
//x($_REQUEST);
$burn_response = burnToken($_REQUEST['tokenId'], $_REQUEST['owner']);
//x($burn_response);
$_SESSION['notify_success'] = $burn_response['message']. ".";
header("Location: /nftdemo/");
die;
break;
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Qila</title>
<!-- plugins:css -->
<link rel="stylesheet" href="vendors/ti-icons/css/themify-icons.css">
<link rel="stylesheet" href="vendors/css/vendor.bundle.base.css">
<!-- endinject -->
<!-- Plugin css for this page -->
<link rel="stylesheet" href="vendors/datatables.net-bs4/dataTables.bootstrap4.css">
<link rel="stylesheet" href="vendors/ti-icons/css/themify-icons.css">
<link rel="stylesheet" type="text/css" href="js/select.dataTables.min.css">
<!-- End plugin css for this page -->
<!-- inject:css -->
<link rel="stylesheet" href="css/vertical-layout-light/style.css?v=1">
<link href="css/Icon-moon/icon.css" rel="stylesheet">
<!-- Google Web Fonts -->
<link href="css/font.css" rel="stylesheet">
<!-- <link rel="stylesheet" href="vendors/feather/feather.css"> -->
<!-- Icon Font Stylesheet -->
<link href="css/fontawesome-free-5.15.4-web/css/all.min.css" rel="stylesheet">
<!-- <link href="css/font/bootstrap-icons.css" rel="stylesheet"> -->
<!-- Plugin css for this page hiiii-->
<!-- <link rel="stylesheet" href="../vendors/mdi/css/materialdesignicons.min.css"> -->
<link rel="stylesheet" href="vendors/select2/select2.min.css">
<!-- <link rel="stylesheet" href="css/tiny.min.css"> -->
<!-- endinject -->
<!-- plugin css for this page -->
<link rel="stylesheet" href="css/noty.css">
<!-- <link rel="stylesheet" href="vendors/jquery-toast-plugin/jquery.toast.min.css"> -->
<link rel="shortcut icon" href="images/favicon.ico" />
<script src="js/jquery.slim.min.js" type="text/javascript"></script>
<script src="vendors/select2/select2.min.js"></script>
</head>
<body>
<div class="container-scroller">
<!-- partial:partials/_navbar.html -->
<nav class="navbar col-lg-12 col-12 p-0 fixed-top d-flex flex-row">
<div class="text-center navbar-brand-wrapper d-flex align-items-center justify-content-center bg-transparent">
<a class="navbar-brand brand-logo mr-5" href="qila"><img src="images/logo.png" class="mr-2" alt="logo"/></a>
<a class="navbar-brand brand-logo-mini" href="qila"><img src="images/logo-mini.png" alt="logo"/></a>
</div>
<div class="navbar-menu-wrapper d-flex align-items-center justify-content-end bg-transparent">
<ul class="navbar-nav navbar-nav-right">
<li class="nav-item nav-profile dropdown">
<a class="nav-link upgrade-text" href="#" data-toggle="dropdown" id="profileDropdown">
<!-- <img src="images/faces/face28.jpg" alt="profile"/> -->
<i class="fa fa-user-circle fa-2x"></i> NFT DEMO</a>
</li>
</ul>
</div>
</nav>
<div class="container-fluid page-body-wrapper">
<div id="pageloader">
<div class="dot-opacity-loader">
<span></span>
<span></span>
<span></span>
</div>
</div>
<!-- partial -->
<div class="main-panel w-100">
<div class="content-wrapper">
<? require_once "notifier.php"; ?>
<div class="card">
<div class="card-body">
<h4 class="card-title">Tokens</h4>
<p class="card-description">
List of minted tokens
</p>
<div class="text-right">
<button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#newTokenModal">New Token</button>
</div>
<div class="table-responsive">
<? $tokens = getMintedTokens(); //y($tokens);?>
<table class="table" id="dataTable">
<thead>
<tr>
<th>Token #</th>
<th>Token URI</th>
<th class="text-center">Owner</th>
<?/*<th class="text-center">Datetime</th>*/?>
<th class="text-center">Action</th>
</tr>
</thead>
<tbody>
<? if(isset($tokens) && is_array($tokens) && count($tokens) > 0){
foreach ($tokens as $token) {
if($token['owner_name'] == "") continue;
?>
<tr>
<td><?=$token['token_id']?></td>
<td><?=$token['token_uri']?></td>
<td class="text-center"><label class="badge badge-<?=$tokenColors[$token['owner']]?>"><?=$token['owner_name']?></label></td>
<?/*<td class="text-center"><?=$token['timestamp']?></td>*/?>
<td class="text-center">
<a id="btnHistory<?=$token['token_id']?>" class="btn btn-outline-primary btn-sm btn-fw">View History</a>
<a id="btnTransfer<?=$token['token_id']?>" cowner="<?=$token['owner']?>" class="btn btn-outline-warning btn-sm btn-fw text-dark">Transfer</a>
<a id="btnBurn<?=$token['token_id']?>" cowner="<?=$token['tokenOwner']?>" class="btn btn-outline-danger btn-sm btn-fw text-dark">Burn</a>
</td>
</tr>
<? } } ?>
</tbody>
</table>
</div>
</div>
</div>
<!-- Button trigger modal -->
<!-- Modal -->
<div class="modal fade" id="newTokenModal" tabindex="-1" role="dialog" aria-labelledby="newTokenModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="newTokenLabel">Add New Token</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<form role="form" method="post" id="tokenform" class="requires-validation" novalidate autocomplete="off">
<div class="modal-body">
<div class="form-group">
<label for="subtitle">JSON Data</label>
<textarea name="json_data" class="form-control" rows="15" required>{
"ID": "asset1",
"Color": "blue",
"Size": "5",
"Owner": "Tomoko",
"AppraisedValue": "300"
}</textarea>
<div class="invalid-feedback">Please enter the JSON data</div>
</div>
</div>
<div class="modal-footer">
<?/*
<button type="button" class="btn btn-primary">Save changes</button>*/?>
<input type="hidden" name="formtype" value="add-token">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="submit" value="Submit" id="btnMint" class="btn btn-primary">
</div>
</form>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="historyModal" tabindex="-1" role="dialog" aria-labelledby="historyModalLabel" aria-hidden="true" data-bs-backdrop="static" >
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="newTokenLabel">Token History</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body" id="historyBody">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="transferModal" tabindex="-1" role="dialog" aria-labelledby="transferModalLabel" aria-hidden="true" data-bs-backdrop="static" >
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="transferModalLabel">Token Transfer</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<form role="form" method="post" id="transferform" class="requires-validation" novalidate autocomplete="off">
<div class="modal-body">
<div class="form-group">
<label for="subtitle">Transfer To</label>
<select id="toUser" name="toUser" class="form-control" required>
<option value="">Select User</option>
<? foreach($tokenUsers as $tu => $tv){?>
<option value="<?=$tu?>"><?=$tu?></option>
<? } ?>
</select>
<div class="invalid-feedback">Please enter the user to transfer the token</div>
</div>
</div>
<div class="modal-footer">
<input type="hidden" name="tokenId" id="tokenId" value="">
<input type="hidden" name="owner" id="owner" value="">
<input type="hidden" name="formtype" value="transfer-token">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" name="submit" value="Submit" id="btnTransfer" class="btn btn-primary">
</div>
</form>
</div>
</div>
</div>
<form role="form" method="post" id="burnform" class="requires-validation" novalidate autocomplete="off">
<input type="hidden" name="tokenId" id="tokenId" value="">
<input type="hidden" name="owner" id="owner" value="">
<input type="hidden" name="formtype" value="burn-token">
</form>
<script type="text/javascript">
$(document).ready(function() {
$("#dataTable").on("click", "[id^=btnHistory]", function(){
var tid = this.id.replace('btnHistory', '');
//alert("check history of "+tid);
$.ajax({
type: 'GET',
url: "get-history.php?tid="+tid,
//dataType: "tex",
success: function(resultData) {
//console.log(resultData);
$("#historyBody").html(resultData);
$("#historyModal").modal("show");
}
});
});
$("#dataTable").on("click", "[id^=btnTransfer]", function(){
var tid = this.id.replace('btnTransfer', '');
var cowner = $(this).attr('cowner');
//alert("check Transfer of "+tid);
$("#transferform #toUser").val("");
$("#transferform #owner").val(""+cowner);
$("#transferform #tokenId").val(""+tid);
$("#transferModal").modal("show");
});
$("#dataTable").on("click", "[id^=btnBurn]", function(){
if(confirm("Are you sure you want to burn this token?")){
var tid = this.id.replace('btnBurn', '');
var cowner = $(this).attr('cowner');
$("#burnform #owner").val(""+cowner);
$("#burnform #tokenId").val(""+tid);
$("#burnform").submit();
}
});
$('#dataTable').DataTable({
"pageLength": 50,
"order": [[ 8, 'desc' ]]
});
});
</script> </div>
<!-- content-wrapper ends -->
<!-- partial:partials/_footer.html -->
<footer class="footer">
<div class="d-sm-flex justify-content-center justify-content-sm-between">
<span class="text-muted text-center text-sm-left d-block d-sm-inline-block">© 2023. All rights reserved. Powered by <a target="_blank" href="https://www.qila.io/" rel="noopener">Qila</a>.</span>
</div>
</footer>
<!-- partial -->
</div>
<!-- main-panel ends -->
</div>
<!-- page-body-wrapper ends -->
</div>
<!-- container-scroller -->
<!-- plugins:js -->
<!-- <script src='https://cdn.tiny.cloud/1/qagffr3pkuv17a8on1afax661irst1hbr4e6tbv888sz91jc/tinymce/4/tinymce.min.js'></script> -->
<script src="js/ckeditor.js"></script>
<script src="vendors/datatables.net/jquery.dataTables.js"></script>
<script src="vendors/js/vendor.bundle.base.js"></script>
<!-- <script src="vendors/js/vendor.bundle.base1.js"></script> -->
<!-- endinject -->
<!-- Plugin js for this page -->
<script src="vendors/chart.js/Chart.min.js"></script>
<script src="vendors/datatables.net/jquery.dataTables.js"></script>
<script src="vendors/datatables.net-bs4/dataTables.bootstrap4.js"></script>
<script src="js/dataTables.select.min.js"></script>
<!-- End plugin js for this page -->
<!-- inject:js -->
<script src="js/off-canvas.js"></script>
<script src="js/hoverable-collapse.js"></script>
<script src="js/template.js"></script>
<script src="js/settings.js"></script>
<script src="js/todolist.js"></script>
<!-- endinject -->
<!-- Custom js for this page-->
<script src="js/dashboard.js"></script>
<script src="js/Chart.roundedBarCharts.js"></script>
<!-- End custom js for this page-->
<!-- Plugin js for toast page-->
<script src="js/noty.min.js"></script>
<script src="js/mo.min.js"></script><div></div>
<script src="js/doc.js"></script>
<!-- <script src="js/toastDemo.js"></script>
<script src="vendors/jquery-toast-plugin/jquery.toast.min.js"></script> -->
<!-- End plugin js for toast page-->
<script type="text/javascript">
$(document).ready(function () {
$("#btnMint").on("click", function (e) {
var form = $("#tokenform")[0];
var isValid = form.checkValidity();
if (!isValid) {
e.preventDefault();
e.stopPropagation();
}
form.classList.add('was-validated');
});
$("#btnTransfer").on("click", function (e) {
var form = $("#transferform")[0];
var isValid = form.checkValidity();
if (!isValid) {
e.preventDefault();
e.stopPropagation();
}
form.classList.add('was-validated');
});
$(document).on('keyup blur','.numberonly',function(){
var node = $(this);
var v = node.val().replace(/[^0-9\.]/g,'');
v = v.substring(0, 10);
node.val(v);
});
$(document).on('keyup blur','.alphaonly',function(){
var node = $(this);
var v = node.val().replace(/[^a-z]/g,'');
v = v.substring(0, 120);
node.val(v);
});
$(document).on('keyup blur','.alphanumonly',function(){
var node = $(this);
var v = node.val().replace(/[^a-zA-Z0-9]/g,'');
v = v.substring(0, 120);
node.val(v);
});
$(document).on('keyup blur','.alphanumonlys',function(){
var node = $(this);
var v = node.val().replace(/[^a-zA-Z0-9-_ ]/g,'');
v = v.substring(0, 120);
node.val(v);
});
$("#client_id").change(function(){
$('#frmChannel').submit();
});
});
$(document).ready(function(){
$('td a').tooltip().eq(0).tooltip('show').tooltip('disable').one('mouseout', function() {
$(this).tooltip('enable');
});
setTimeout(function() {
$('td a').tooltip().eq(0).tooltip('hide').tooltip('enable');
}, 10000);
});
</script>
<script src="vendors/datatables.net/jquery.dataTables.js"></script>
<script src="vendors/datatables.net-bs4/dataTables.bootstrap4.js"></script>
</body>
</html>
OHA YOOOO