PHP Classes

File: aksara/Modules/Dashboard/Views/index_technical.php

Recommend this page to a friend!
  Packages of Aby Dahana   Aksara   aksara/Modules/Dashboard/Views/index_technical.php   Download  
File: aksara/Modules/Dashboard/Views/index_technical.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Aksara
A CodeIgniter based API and CRUD generator
Author: By
Last change: Refine subscriber dashboard UI, update technical dashboard with videos, and change WhatsApp link to GitHub
Date: 12 days ago
Size: 24,070 bytes
 

Contents

Class file image Download
<?php /** * @var mixed $card * @var mixed $visitors * @var mixed $recent_signed * @var mixed $announcements * @var mixed $system_language * @var mixed $group_name * @var mixed $logs */ $logs = (isset($logs) ? $logs : []); ?> <div class="container-fluid py-3"> <div class="row mb-3"> <div class="col-lg-8"> <div class="card overflow-hidden rounded-4 mb-3"> <div class="card-body p-4"> <h5 class="mb-1"> <?= phrase('Welcome back'); ?>, <?= get_userdata('first_name') . ' ' . get_userdata('last_name'); ?>! </h5> <p class="text-muted mb-0"> <?= phrase('You are signed in as {{ group_name }}.', ['group_name' => '<b>' . $group_name . '</b>']); ?> </p> </div> </div> </div> <div class="col-lg-4"> <div class="card overflow-hidden rounded-4 mb-3"> <div class="card-body p-4 text-center"> <div class="text-muted small text-uppercase fw-bold mb-1"> <?= phrase('Today'); ?> </div> <div class="h5 mb-0 text-primary fw-bold"> <?= phrase(date('l')) . ', ' . date('d') . ' ' . phrase(date('F')) . ' ' . date('Y'); ?> </div> </div> </div> </div> </div> <div class="row"> <div class="col-6 col-lg-3 mb-3"> <a href="<?= base_url('cms/blogs'); ?>" class="d-block --xhr" data-bs-toggle="tooltip" title="<?= phrase('Manage blog post'); ?>"> <div class="card border-0 rounded-4 bg-primary text-center text-sm-start mb-3" style="overflow:hidden"> <div class="row align-items-center"> <div class="col-sm-4 col-xl-3"> <div class="p-3 text-center"> <i class="mdi mdi-newspaper mdi-2x text-light"></i> </div> </div> <div class="col-sm-8 col-xl-9"> <h5 class="m-0 text-truncate text-light"> <?= phrase('Blogs'); ?> </h5> <p class="text-light mb-0"> <?= number_format($card->blogs) . ' ' . ($card->blogs > 2 ? phrase('articles') : phrase('article')); ?> </p> </div> </div> </div> </a> </div> <div class="col-6 col-lg-3 mb-3"> <a href="<?= base_url('cms/pages'); ?>" class="d-block --xhr" data-bs-toggle="tooltip" title="<?= phrase('Manage frontend pages'); ?>"> <div class="card border-0 rounded-4 bg-info text-center text-sm-start mb-3" style="overflow:hidden"> <div class="row align-items-center"> <div class="col-sm-4 col-xl-3"> <div class="p-3 text-center"> <i class="mdi mdi-file-multiple mdi-2x text-light"></i> </div> </div> <div class="col-sm-8 col-xl-9"> <h5 class="m-0 text-truncate text-light"> <?= phrase('Pages'); ?> </h5> <p class="text-light mb-0"> <?= number_format($card->pages) . ' ' . ($card->pages > 2 ? phrase('pages') : phrase('page')); ?> </p> </div> </div> </div> </a> </div> <div class="col-6 col-lg-3 mb-3"> <a href="<?= base_url('cms/galleries'); ?>" class="d-block --xhr" data-bs-toggle="tooltip" title="<?= phrase('Manage galleries'); ?>"> <div class="card border-0 rounded-4 bg-success text-center text-sm-start mb-3" style="overflow:hidden"> <div class="row align-items-center"> <div class="col-sm-4 col-xl-3"> <div class="p-3 text-center"> <i class="mdi mdi-folder-multiple-image mdi-2x text-light"></i> </div> </div> <div class="col-sm-8 col-xl-9"> <h5 class="m-0 text-truncate text-light"> <?= phrase('Galleries'); ?> </h5> <p class="text-light mb-0"> <?= number_format($card->galleries) . ' ' . ($card->galleries > 2 ? phrase('albums') : phrase('album')); ?> </p> </div> </div> </div> </a> </div> <div class="col-6 col-lg-3 mb-3"> <a href="<?= base_url('cms/videos'); ?>" class="d-block --xhr" data-bs-toggle="tooltip" title="<?= phrase('Manage videos'); ?>"> <div class="card border-0 rounded-4 bg-danger text-center text-sm-start mb-3" style="overflow:hidden"> <div class="row align-items-center"> <div class="col-sm-4 col-xl-3"> <div class="p-3 text-center"> <i class="mdi mdi-youtube mdi-2x text-light"></i> </div> </div> <div class="col-sm-8 col-xl-9"> <h5 class="m-0 text-truncate text-light"> <?= phrase('Videos'); ?> </h5> <p class="text-light mb-0"> <?= number_format($card->videos) . ' ' . ($card->videos > 2 ? phrase('videos') : phrase('video')); ?> </p> </div> </div> </div> </a> </div> </div> <div class="row"> <div class="col-lg-8"> <div class="sticky-top" style="top:6rem"> <div class="border rounded-4 overflow-hidden mb-3"> <div id="visitor-chart" class="rounded-4" style="width:100%; height:300px"></div> </div> <div class="row"> <div class="col-md-6"> <div class="card overflow-hidden rounded-4 mb-3"> <div class="card-header border-0 p-4"> <h5 class="card-title mb-0"> <?= phrase('Most used browsers'); ?> </h5> </div> <div class="card-body p-3"> <?php $num = 0; if (isset($visitors->browsers)) { foreach ($visitors->browsers as $key => $val) { echo ' ' . ($num ? '<hr class="border-secondary mt-2 mb-2" />' : null) . ' <div class="row no-gutters align-items-center"> <div class="col-3 col-sm-2"> <i class="mdi mdi-' . ($key == 'chrome' ? 'google-chrome text-success' : ($key == 'firefox' ? 'firefox text-warning' : ($key == 'safari' ? 'apple-safari text-primary' : ($key == 'edge' ? 'edge text-primary' : ($key == 'opera' ? 'opera text-danger' : ($key == 'explorer' ? 'internet-explorer text-info' : 'web text-muted')))))) . ' mdi-3x"></i> </div> <div class="col-9 col-sm-10 ps-3"> <b> ' . ($key == 'chrome' ? 'Google Chrome' : ($key == 'firefox' ? 'Mozilla Firefox' : ($key == 'safari' ? 'Safari' : ($key == 'edge' ? 'Microsoft Edge' : ($key == 'opera' ? 'Opera' : ($key == 'explorer' ? 'Internet Explorer' : phrase('Unknown'))))))) . ' </b> <p class="mb-0 text-sm text-muted"> ' . number_format($val) . ' ' . phrase('usage in a week') . ' </p> </div> </div> '; $num++; } } ?> </div> </div> </div> <div class="col-md-6"> <div class="card overflow-hidden rounded-4 mb-3"> <div class="card-header border-0 p-4"> <h5 class="card-title mb-0"> <?= phrase('Recent sign in'); ?> </h5> </div> <div class="card-body p-3"> <?php foreach ($recent_signed as $key => $val) { echo ' ' . ($key ? '<hr class="mt-2 mb-2" />' : null) . ' <div class="row no-gutters align-items-center"> <div class="col-3 col-sm-2"> <a href="' . base_url('user', ['user_id' => $val->user_id]) . '" target="_blank"> <img src="' . get_image('users', $val->photo, 'icon') . '" class="img-fluid rounded" /> </a> </div> <div class="col-9 col-sm-10 ps-3"> <a href="' . base_url('user', ['user_id' => $val->user_id]) . '" target="_blank"> <b> ' . $val->first_name . ' ' . $val->last_name . ' </b> </a> <p class="mb-0 text-sm text-muted"> ' . $val->group_name . ' </p> </div> </div> '; } ?> </div> </div> </div> </div> <div class="card overflow-hidden rounded-4 mb-3"> <div class="card-header border-0 p-4"> <h5 class="card-title mb-0"> <?= phrase('Recent Activities'); ?> </h5> </div> <div class="card-body p-0"> <div class="table-responsive"> <table class="table table-hover mb-0"> <thead> <tr> <th class="border-0 px-4 text-muted small text-uppercase"><?= phrase('Date'); ?></th> <th class="border-0 px-4 text-muted small text-uppercase"><?= phrase('Platform'); ?></th> <th class="border-0 px-4 text-muted small text-uppercase"><?= phrase('Browser'); ?></th> <th class="border-0 px-4 text-muted small text-uppercase"><?= phrase('IP Address'); ?></th> </tr> </thead> <tbody> <?php if ($logs): ?> <?php foreach ($logs as $log): ?> <tr> <td class="px-4 align-middle"> <span class="text-sm"><?= date('d/m/Y H:i', strtotime($log->timestamp)); ?></span> </td> <td class="px-4 align-middle"> <span class="badge bg-white text-dark rounded-pill border"><?= $log->platform; ?></span> </td> <td class="px-4 align-middle"> <span class="text-sm"><?= $log->browser; ?></span> </td> <td class="px-4 align-middle"> <code class="text-sm text-primary"><?= $log->ip_address; ?></code> </td> </tr> <?php endforeach; ?> <?php else: ?> <tr> <td colspan="4" class="text-center p-4 text-muted"> <?= phrase('No activity recorded yet.'); ?> </td> </tr> <?php endif; ?> </tbody> </table> </div> </div> </div> </div> </div> <div class="col-lg-4"> <div class="sticky-top" style="top:6rem"> <?php if ($announcements): ?> <div class="card overflow-hidden rounded-4 mb-3"> <div class="card-header border-0 p-4"> <h5 class="card-title mb-0"> <?= phrase('Announcements'); ?> </h5> </div> <?php $announcement = null; foreach ($announcements as $key => $val) { $announcement .= '<li class="list-group-item"><a href="' . base_url('announcements/' . $val->announcement_slug) . '" class="fw-bold --xhr">' . $val->title . '</a></li>'; } echo ' <ul class="list-group list-group-flush"> ' . $announcement . ' </ul> '; ?> </div> <?php endif; ?> <div class="card overflow-hidden rounded-4 mb-3"> <div class="card-header bg-transparent border-0 p-4"> <h5 class="fw-bold mb-0"> <?= phrase('Announcements'); ?> </h5> </div> <div class="card-body p-4"> <?php if ($announcements): ?> <?php foreach ($announcements as $announcement): ?> <div class="mb-3 pb-3 border-bottom last-child-border-0"> <a href="<?= base_url('announcements/' . $announcement->announcement_slug); ?>" class="fw-bold text-decoration-none --xhr"> <?= $announcement->title; ?> </a> <div class="text-muted small mt-1"> <?= truncate($announcement->content, 100); ?> </div> </div> <?php endforeach; ?> <?php else: ?> <div class="text-center py-4 text-muted"> <i class="mdi mdi-bullhorn-outline mdi-36px d-block mb-2"></i> <?= phrase('No announcements available.'); ?> </div> <?php endif; ?> </div> </div> <div class="card overflow-hidden rounded-4 mb-3"> <div class="card-header border-0 p-4"> <h5 class="card-title mb-0"> <?= phrase('Application Information'); ?> </h5> </div> <div class="card-body p-3"> <div class="row"> <div class="col-6"> <div class="mb-3"> <label class="d-block text-muted mb-0"> AKSARA </label> <p> <?= aksara('version'); ?> </p> </div> </div> <div class="col-6"> <div class="mb-3"> <label class="d-block text-muted mb-0"> <?= phrase('Build Version'); ?> </label> <p> <?= aksara('build_version'); ?> </p> </div> </div> </div> <div class="mb-3"> <label class="d-block text-muted mb-0"> <?= phrase('Last Modified'); ?> </label> <p> <?= aksara('date_modified'); ?> </p> </div> <div class="row"> <div class="col-sm-6"> <div class="mb-3"> <label class="d-block text-muted mb-0"> <?= phrase('System Language'); ?> </label> <p> <?= (isset($system_language) ? $system_language : null); ?> </p> </div> </div> <div class="col-sm-6"> <div class="mb-3"> <label class="d-block text-muted mb-0"> <?= phrase('Membership'); ?> </label> <p> <?= (get_setting('frontend_registration') ? '<span class="badge bg-success">' . phrase('Enabled') . '</span>' : '<span class="badge bg-danger">' . phrase('Disabled') . '</span>'); ?> </p> </div> </div> </div> <div class="row"> <div class="col-sm-6"> <div class="mb-3"> <label class="d-block text-muted mb-0"> <?= phrase('Login Attempt'); ?> </label> <p> <?= (get_setting('login_attempt') ? '<span class="badge bg-success">' . get_setting('login_attempt') . ' ' . phrase('times') . '</span>' : '<span class="badge bg-danger">' . phrase('Disabled') . '</span>'); ?> </p> </div> </div> <div class="col-sm-6"> <div class="mb-3"> <label class="d-block text-muted mb-0"> <?= phrase('Blocking Time'); ?> </label> <p> <?= (get_setting('blocking_time') ? '<span class="badge bg-success">' . get_setting('blocking_time') . ' ' . phrase('minutes') . '</span>' : '<span class="badge bg-danger">' . phrase('Disabled') . '</span>'); ?> </p> </div> </div> </div> </div> </div> </div> </div> </div> </div> <script type="text/javascript"> $(document).ready(function() { require.js('<?= base_url('assets/echarts/echarts.min.js'); ?>', function() { // Initialize chart const visitorChart = echarts.init(document.getElementById('visitor-chart')); // Render chart visitorChart.setOption({ title: { text: '<?= phrase('Visitor Graph'); ?>', textStyle: { fontWeight: 'bold' } }, tooltip: { trigger: 'axis', valueFormatter: function(value) { return value + ' <?= phrase('Visits'); ?>'; } }, grid: { left: '3%', right: '3%', bottom: '3%', containLabel: true }, xAxis: { type: 'category', boundaryGap: false, data: <?= (isset($visitors->categories) ? json_encode($visitors->categories) : '[]'); ?> }, yAxis: { type: 'value', name: '<?= phrase('Visitor Total'); ?>', minInterval: 1 }, series: [{ name: '<?= phrase('Visitors'); ?>', type: 'line', smooth: true, areaStyle: { opacity: 0.5 }, data: <?= (isset($visitors->visits) ? json_encode($visitors->visits) : '[]'); ?>, }] }); // Responsive resize window.addEventListener('resize', function() { visitorChart.resize(); }); }); }) </script>