Skip to content

Layout

Main Template

file berada di app\Views\main.php

PHP Variables

<?php
$session = session();
$baseUrl = base_url();
$currentUrl = current_url();
$klinikProfile = (new \App\Models\Option)->getClinicProfile()['text_value']['clinic_profile'];

$companyName = $klinikProfile['name'];
$companyAddress = $klinikProfile['address'];
$user = $session->get('user');
$dummy = $session->get('wasLogin') ? "?v=".rand(0, 99999) : '';
$newDummy = rand(0,9999999);
?>

$klinikProfile, berisi array identitas klinik
$user, berisi array user jika sudah login, null jika belum
$dummy, angka random yang digunakan untuk reset cache browser (cache direset ketika pertama kali login)
$newDummy, angka random yang digunakan untuk reset cache browser

Layout and CSS

<head>
  <meta charset="UTF-8">
  <base href="<?= $baseUrl ?>" id="baseUrl">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title><?= $title ?> • <?= $companyName ?>, Pelayanan Khusus Anak</title>

  <link rel="shortcut icon" href="<?= "$baseUrl/img/favicon.png" ?>" type="image/x-icon">
  <!-- ...Any CSS CDN -->

  <?php if (! empty($additionalCss)): ?>
    <?php foreach ($additionalCss as $src): ?>
      <link rel="stylesheet" href="<?= $src . $dummy ?>" />
    <?php endforeach ?>
  <?php endif ?>

  <link rel="stylesheet" href="<?= "$baseUrl/css/app.css$dummy" ?>">
  <link rel="stylesheet" href="<?= "$baseUrl/css/overflower.css$dummy" ?>">

  <?php if ($user) : $mainPath = url_title($user['role_name']) ?>
    <link rel="stylesheet" href="<?= "$baseUrl/css/$mainPath/$mainPath.css" ?>">
  <?php endif; ?>

  <link rel="stylesheet" href="<?= "$baseUrl/css/$filePath.css" ?>">

  <!-- Style untuk booking  -->
  <?php if (strpos($currentUrl, '/booking')) : ?>
    <link rel="stylesheet" href="<?= "$baseUrl/css/partials/bottom-nav.css?v=$newDummy" ?>">
  <?php endif; ?>

  <?php if (strpos($currentUrl, '/dokter') || strpos($currentUrl, '/dokter/template-racikan')) : ?>
    <link rel="stylesheet" href="<?= "$baseUrl/css/dokter/templateRacikan.css" ?>">
  <?php endif; ?>

  <?php if ($currentUrl != "$baseUrl/"): ?>
    <style type="text/css">
      /* Footer Fixed Jika bukan dihalaman utama */
      footer {
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
      }
    </style>
  <?php endif; ?>

  <!-- ...Any JS CDN -->
  <?php if (!isset($noFooterJs)) : ?>
    <script>
      var companyName = "<?= $companyName ?>"
      var companyAddress = "<?= $companyAddress ?>"
      var refreshRateAntrian = "<?= env('app.refresh_rate_antrian') ?>"
      var uploadPath = "<?= UPLOAD_PATH ?>"
      var roleName = "<?= $user['role_name'] ?? '' ?>"
      var roleNameUrl = roleName.replace(" ", '-')
    </script>
  <?php endif; ?>

  <script defer src="<?= "$baseUrl/js/app.js$dummy" ?>"></script>
  <?= $this->include('partials/scriptPartials') ?>

  <?php if ($user): ?>
    <script defer src="<?= "$baseUrl/js/$mainPath/$mainPath.js?v=$newDummy" ?>"></script>
  <?php endif; ?>
  <script defer src="<?= "$baseUrl/js/$filePath.js$dummy?v=$newDummy" ?>"></script>
</head>

$additionalCss, berisi array css tambahan, bisa ditambahkan di dalam controller method ketika return $data = ['additionalCss' => [...]]
$baseUrl/css/app.css$dummy, global css


<?php if ($user) : $mainPath = url_title($user['role_name']) ?>
<link rel="stylesheet" href="<?= "$baseUrl/css/$mainPath/$mainPath.css" ?>">
<?php endif; ?>

<link rel="stylesheet" href="<?= "$baseUrl/css/$filePath.css" ?>">

baris 1-3 adalah css global yang digunakan tiap user role, jika role finance maka $baseUrl/css/finance/finance.css
baris ke 5 adalah css yang diterapkan sesuai dengan view yang disupply dari $data.
Jika filePath berisi finance/ringkasan maka css yang digunakan adalah $baseUrl/css/finance/ringkasan.css, begitu pula JS

<script defer src="<?= "$baseUrl/js/app.js$dummy" ?>"></script>
<?= $this->include('partials/scriptPartials') ?>

<?php if ($user): ?>
  <script defer src="<?= "$baseUrl/js/$mainPath/$mainPath.js?v=$newDummy" ?>"></script>
<?php endif; ?>
<script defer src="<?= "$baseUrl/js/$filePath.js$dummy?v=$newDummy" ?>"></script>

baris ke 1 adalah global js
baris ke 2 adalah potongan script
baris 4-7 sama seperti css diatas



HTML body tag section

<body class="position-relative">
    <noscript>
        <div>
            <p>Oops! sepertinya JavaScript dimatikan. mohon hidupkan kembali di pengaturan browser anda.</p>
        </div>
    </noscript>
    <?php if (!isset($noHeader)) : ?>
    <?= $this->include('partials/navbar') ?>
    <?php endif ?>

    <main class="app mt-5" id="app">
        <?php include_once "$filePath.php" ?>
    </main>

    <?php if (!isset($noFooter)) : ?>
    <!-- Footer -->
    <footer>
        <span id="copyright">
            <script>
                document.getElementById("copyright").textContent = `Copyright ${new Date().getFullYear()}. <?= $companyName ?>.`;
            </script>
        </span>
    </footer>
    <?php endif ?>

    <!-- untuk bungkus toast -->
    <div class="container-toast"></div>

    <!-- PhotoSwipe Requirements -->
    <?= $this->include('libs/photoswipe') ?>

    <!-- untuk sticky notification -->
    <div class="sticky-notification-container"></div>
</body>

Login Front

login page khusus resepsionis
app\Views\auth\front\login.php Login Front Page

class AuthController extends BaseController
{
  // ...
  public function frontLoginView()
  {
    $data = [
      'filePath' => 'auth/front/login',
      'title'     => 'Login Front Office'
    ];

    return view('main', $data);
  }
}

filePath digunakan untuk view yang harus ditampilkan, path relative ke App\Views
title digunakan untuk title page
return view('main', $data);, merujuk ke file app\Views\main.php digunakan untuk layout utama

Login Back

login page khusus selain resepsionis
app\Views\auth\back\login.php Login back Page

class AuthController extends BaseController
{
  // ...
  public function backLoginView()
  {
    $data = [
      'filePath' => 'auth/back/login',
      'title'     => 'Login Back Office'
    ];

    return view('main', $data);
  }
}

filePath digunakan untuk view yang harus ditampilkan, path relative ke App\Views
title digunakan untuk title page
return view('main', $data);, merujuk ke file app\Views\main.php digunakan untuk layout utama