| Current Path : /var/www/html/reddsis/database/seeders/redd-plus/ |
| Current File : /var/www/html/reddsis/database/seeders/redd-plus/ReddPlusComponentSeeder.php |
<?php
namespace Database\Seeders\ReddPlus;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class ReddPlusComponentSeeder extends Seeder
{
public function run(): void
{
DB::table('frontend_components')->updateOrInsert(['id' => 19], [
'name' => 'Navbar REDD+',
'code' => 'navbar_reddplus',
'content' => '<style>
.navbar-redd { background: #fff; }
.navbar-redd .nav-link {
color: var(--green-800);
font-weight: 600;
font-size: .95rem;
margin: 0 .35rem;
border-bottom: 2px solid transparent;
padding-bottom: .4rem;
}
.navbar-redd .nav-link.active,
.navbar-redd .nav-link:hover {
color: var(--green-900);
border-bottom-color: var(--green-800);
}
.navbar-redd .dropdown-item {
font-weight: 500;
font-size: .9rem;
padding: .5rem 1rem;
}
.navbar-redd .dropdown-item:hover,
.navbar-redd .dropdown-item:focus {
background: var(--green-100);
color: var(--green-900);
}
.navbar-redd .dropdown-menu {
border: 0;
box-shadow: 0 8px 24px rgba(46,74,53,.12);
border-radius: .75rem;
padding: .5rem 0;
margin-top: 0;
top: calc(100% - 2px);
}
.navbar-redd .dropdown:hover > .dropdown-menu {
display: block;
animation: fadeIn .15s ease;
}
.navbar-redd .dropdown-menu::before {
content: \'\';
position: absolute;
top: -12px;
left: 0;
right: 0;
height: 12px;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(4px); }
to { opacity: 1; transform: translateY(0); }
}
.navbar-redd .dropdown-toggle::after { font-size: .75rem; margin-left: .4em; }
.search-pill {
background: #fff;
border: 1px solid #e2ddd0;
border-radius: 50rem;
padding: .3rem .9rem;
max-width: 190px;
}
.search-pill input {
border: 0; outline: 0; background: transparent;
width: 100%; font-size: .85rem; color: var(--ink);
}
.w3c-badge {
width: 40px; height: 40px;
border: 1px solid #d8d2c2; border-radius: 50%;
display: inline-flex; align-items: center; justify-content: center;
font-weight: 700; color: #1a3e8c; font-size: .7rem; background: #fff;
text-decoration: none;
}
@media (max-width: 991.98px) {
.search-pill { max-width: 100%; }
.w3c-badge { margin-top: .5rem; }
.navbar-redd .dropdown:hover > .dropdown-menu { display: none; }
.navbar-redd .dropdown.show > .dropdown-menu { display: block; }
.navbar-redd .nav-link { border-bottom: 0; border-left: 3px solid transparent; padding-left: .5rem; }
.navbar-redd .nav-link.active,
.navbar-redd .nav-link:hover { border-bottom-color: transparent; border-left-color: var(--green-800); }
}
.navbar-redd .dropdown-item.active { background: var(--green-100); color: var(--green-900); font-weight: 700; }
</style>
<nav class=\"navbar navbar-expand-lg navbar-redd py-2 sticky-top shadow-sm\">
<div class=\"container\">
<a class=\"navbar-brand d-flex align-items-center\" href=\"/\">
<img src=\"/assets/redd-plus/logo.png\" alt=\"REDD+ Malaysia\" height=\"46\">
</a>
<button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#mainNav\" aria-controls=\"mainNav\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">
<span class=\"navbar-toggler-icon\"></span>
</button>
<div class=\"collapse navbar-collapse\" id=\"mainNav\">
<ul class=\"navbar-nav mx-auto align-items-lg-center\">
@foreach($menuTree as $item)
@php
$hasChildren = !empty($item[\'children\']);
$itemLink = $item[\'menu_link\'] ?? \'#\';
$currentUrl = request()->fullUrl();
$isActive = $currentUrl === url($itemLink) || ($itemLink === \'/\' && request()->path() === \'\');
if ($hasChildren && !$isActive) {
foreach ($item[\'children\'] as $child) {
$cl = $child[\'menu_link\'] ?? \'#\';
if ($cl !== \'#\' && $currentUrl === url($cl)) { $isActive = true; break; }
}
}
@endphp
@if($hasChildren)
<li class=\"nav-item dropdown\">
<a class=\"nav-link dropdown-toggle{{ $isActive ? \' active\' : \'\' }}\" href=\"{{ $itemLink }}\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">
{{ $item[\'menu_name\'] }}
</a>
<ul class=\"dropdown-menu\">
@foreach($item[\'children\'] as $child)
<li><a class=\"dropdown-item{{ $child[\'menu_link\'] && $currentUrl === url($child[\'menu_link\']) ? \' active\' : \'\' }}\" href=\"{{ $child[\'menu_link\'] ?? \'#\' }}\">{{ $child[\'menu_name\'] }}</a></li>
@endforeach
</ul>
</li>
@else
<li class=\"nav-item\">
<a class=\"nav-link {{ $isActive ? \'active\' : \'\' }}\" href=\"{{ $itemLink }}\">
{{ $item[\'menu_name\'] }}
</a>
</li>
@endif
@endforeach
</ul>
<form class=\"search-pill d-flex align-items-center me-lg-3 my-2 my-lg-0\" role=\"search\">
<input type=\"search\" placeholder=\"Search...\" aria-label=\"Search\">
<i class=\"bi bi-search text-muted\"></i>
</form>
<div class=\"w3c-wrap\">
<a href=\"#\" class=\"w3c-badge\" id=\"w3cBtn\">W3C</a>
<div id=\"w3cPanel\" class=\"w3c-panel\">
<div class=\"w3c-head\">
<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><circle cx=\"12\" cy=\"12\" r=\"4\"/><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"6\"/><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"22\"/><line x1=\"2\" y1=\"12\" x2=\"6\" y2=\"12\"/><line x1=\"18\" y1=\"12\" x2=\"22\" y2=\"12\"/></svg>
<span>Kebolehcapaian</span>
<button id=\"w3cX\">×</button>
</div>
<div class=\"w3c-body\">
<div class=\"w3c-grp\">
<div class=\"w3c-lbl\">Saiz Tulisan</div>
<div class=\"w3c-row\">
<button class=\"w3c-b\" data-w=\"fd\">A-</button>
<button class=\"w3c-b\" data-w=\"fr\">A</button>
<button class=\"w3c-b\" data-w=\"fi\">A+</button>
</div>
</div>
<div class=\"w3c-grp\"><button class=\"w3c-a\" data-w=\"ct\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 2a10 10 0 0 1 0 20V2z\" fill=\"currentColor\"/></svg> Kontras Tinggi</button></div>
<div class=\"w3c-grp\"><button class=\"w3c-a\" data-w=\"gy\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><circle cx=\"12\" cy=\"12\" r=\"4\" fill=\"currentColor\"/></svg> Hitam Putih</button></div>
<div class=\"w3c-grp\"><button class=\"w3c-a\" data-w=\"iv\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 3a9 9 0 1 0 9 9\"/><path d=\"M12 3v18\"/></svg> Warna Songsang</button></div>
<div class=\"w3c-grp\"><button class=\"w3c-a\" data-w=\"hl\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"/><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"/></svg> Tinggalkan Pautan</button></div>
<div class=\"w3c-grp\"><button class=\"w3c-r\" data-w=\"rs\"><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"1 4 1 10 7 10\"/><path d=\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\"/></svg> Set Semula</button></div>
</div>
</div>
</div>
<style>
.w3c-wrap{position:relative;display:inline-block;vertical-align:middle}
.w3c-panel{display:none;position:absolute;top:100%;right:0;z-index:99999;width:230px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 8px 25px rgba(0,0,0,0.12);margin-top:8px;font-family:Inter,system-ui,sans-serif}
.w3c-panel.on{display:block}
.w3c-head{display:flex;align-items:center;gap:6px;padding:10px 14px;background:#1c294c;color:#fff;border-radius:10px 10px 0 0;font-weight:600;font-size:13px}
.w3c-head svg{flex-shrink:0}
.w3c-head span{flex:1}
.w3c-head button{margin-left:auto;background:none;border:none;color:#fff;font-size:18px;cursor:pointer;padding:0 2px;line-height:1}
.w3c-body{padding:10px 14px 14px}
.w3c-grp{margin-bottom:7px}
.w3c-lbl{font-size:10px;font-weight:600;color:#64748b;margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}
.w3c-row{display:flex;gap:3px}
.w3c-row .w3c-b{flex:1;padding:5px 0;border:1px solid #e2e8f0;border-radius:5px;background:#fff;color:#334155;font-size:11px;font-weight:600;cursor:pointer}
.w3c-row .w3c-b.on{background:#1c294c;color:#fff;border-color:#1c294c}
.w3c-a{width:100%;display:flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid #e2e8f0;border-radius:5px;background:#fff;color:#334155;font-size:11px;font-weight:500;cursor:pointer;text-align:left}
.w3c-a svg{flex-shrink:0;width:14px;height:14px;color:#1c294c}
.w3c-a.on{background:#1c294c;color:#fff;border-color:#1c294c}
.w3c-a.on svg{color:#fff}
.w3c-r{width:100%;display:flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid #e2e8f0;border-radius:5px;background:#fef2f2;color:#c04849;font-size:11px;font-weight:500;cursor:pointer;text-align:left}
.w3c-r svg{flex-shrink:0;color:#c04849}
html.access-font-sm{zoom:.85}html.access-font-lg{zoom:1.25}html.access-contrast,html.access-contrast body{background:#000!important;color:#fff!important}html.access-contrast a{color:#ff0!important}html.access-grayscale{filter:grayscale(1)}html.access-invert{filter:invert(1) hue-rotate(180deg)}html.access-highlight-links a{text-decoration:underline!important;background:#ff0!important;color:#000!important}
</style>
<script>
(function(){
var K=\"accessibility_settings\";
function g(){try{return JSON.parse(localStorage.getItem(K))||{}}catch(e){return{}}}
function s(v){localStorage.setItem(K,JSON.stringify(v))}
function ap(v){
var h=document.documentElement;
h.classList.remove(\"access-font-sm\",\"access-font-lg\",\"access-contrast\",\"access-grayscale\",\"access-invert\",\"access-highlight-links\");
if(v.fontSize===\"sm\")h.classList.add(\"access-font-sm\");
if(v.fontSize===\"lg\")h.classList.add(\"access-font-lg\");
if(v.contrast)h.classList.add(\"access-contrast\");
if(v.grayscale)h.classList.add(\"access-grayscale\");
if(v.invert)h.classList.add(\"access-invert\");
if(v.highlightLinks)h.classList.add(\"access-highlight-links\");
}
function ui(v){
var p=document.querySelector(\".w3c-body\");if(!p)return;
p.querySelectorAll(\".w3c-b\").forEach(function(b){b.classList.remove(\"on\")});
var m=v.fontSize||\"md\";
if(m===\"sm\"){var e=p.querySelector(\"[data-w=fd]\");if(e)e.classList.add(\"on\")}
else if(m===\"lg\"){var e=p.querySelector(\"[data-w=fi]\");if(e)e.classList.add(\"on\")}
else{var e=p.querySelector(\"[data-w=fr]\");if(e)e.classList.add(\"on\")}
p.querySelectorAll(\".w3c-a\").forEach(function(b){b.classList.remove(\"on\")});
if(v.contrast){var e=p.querySelector(\"[data-w=ct]\");if(e)e.classList.add(\"on\")}
if(v.grayscale){var e=p.querySelector(\"[data-w=gy]\");if(e)e.classList.add(\"on\")}
if(v.invert){var e=p.querySelector(\"[data-w=iv]\");if(e)e.classList.add(\"on\")}
if(v.highlightLinks){var e=p.querySelector(\"[data-w=hl]\");if(e)e.classList.add(\"on\")}
}
function hdl(a){
var v=g();
switch(a){
case\"fd\":v.fontSize=v.fontSize===\"sm\"?\"md\":\"sm\";break;
case\"fi\":v.fontSize=v.fontSize===\"lg\"?\"md\":\"lg\";break;
case\"fr\":v.fontSize=\"md\";break;
case\"ct\":v.contrast=!v.contrast;break;
case\"gy\":v.grayscale=!v.grayscale;break;
case\"iv\":v.invert=!v.invert;break;
case\"hl\":v.highlightLinks=!v.highlightLinks;break;
case\"rs\":localStorage.removeItem(K);v={};ap(v);ui(v);return;
}ap(v);s(v);ui(v);
}
function tog(s){
var p=document.getElementById(\"w3cPanel\");
if(s===undefined)s=!p.classList.contains(\"on\");
p.classList.toggle(\"on\",s);
}
var v=g();ap(v);ui(v);
document.getElementById(\"w3cBtn\").addEventListener(\"click\",function(e){e.preventDefault();tog()});
document.getElementById(\"w3cX\").addEventListener(\"click\",function(){tog(false)});
document.querySelectorAll(\".w3c-body [data-w]\").forEach(function(b){b.addEventListener(\"click\",function(e){e.stopPropagation();hdl(this.dataset.w)})});
document.addEventListener(\"keydown\",function(e){if(e.key===\"Escape\")tog(false)});
document.addEventListener(\"click\",function(e){
var w=document.querySelector(\".w3c-wrap\");
if(w&&!w.contains(e.target))tog(false);
});
})();
</script>
</div>
</nav>',
'type' => 'PHP',
'category' => 'Header',
'status' => 1,
]);
DB::table('frontend_components')->updateOrInsert(['id' => 20], [
'name' => 'Footer REDD+',
'code' => 'footer_reddplus',
'content' => '@php
$todayVisits = \\App\\Models\\Backend\\Visit::todayVisits();
$thisWeek = \\App\\Models\\Backend\\Visit::thisWeekVisits();
$thisMonth = \\App\\Models\\Backend\\Visit::thisMonthVisits();
$thisYear = \\App\\Models\\Backend\\Visit::thisYearVisits();
$totalVisits = \\App\\Models\\Backend\\Visit::totalVisits();
@endphp
<style>
.footer-scenery-option2 {
background-image: url(\'/assets/redd-plus/footer-forest.png\');
background-size: cover;
background-position: center bottom;
background-repeat: no-repeat;
min-height: 320px;
}
.big-stat {
font-family:\'Playfair Display\',serif;
color:var(--green-800);
font-weight:700;
font-size:clamp(4.5rem,9vw,7.5rem);
line-height:1;
}
.big-stat .pct { font-size:.4em; font-weight:600; }
.stat-divider { border-left:1px solid rgba(60,80,60,.35); }
.donut { width:150px; height:150px; }
.footer-contact a {
color: var(--ink);
text-decoration: none;
font-weight: 600;
font-size: .95rem;
}
.footer-contact a:hover { color: var(--green-800); }
.footer-contact .bi {
width: 38px; height: 38px;
border: 1px solid rgba(60,80,60,.35); border-radius: 50%;
display: inline-flex; align-items: center; justify-content: center;
margin-right: .6rem; color: var(--green-800);
}
.footer-bottom { font-size: .85rem; color: #5b6a5e; }
.footer-bottom a { color: #5b6a5e; text-decoration: none; font-weight: 600; }
.footer-bottom a:hover { color: var(--green-800); }
@media (max-width: 991.98px) {
.stat-divider { border-left:0; border-top:1px solid rgba(60,80,60,.35); padding-top:1.5rem; }
}
.visitor-stats {
background: rgba(255,255,255,0.08);
border-radius: 12px;
padding: 16px 20px 14px;
margin-top: 20px;
margin-bottom: 20px;
border: 1px solid rgba(60,80,60,.25);
}
.visitor-stats h5 {
color: var(--green-900);
font-size: .7rem;
font-weight: 700;
margin-bottom: 10px;
text-transform: uppercase;
letter-spacing: .5px;
text-align: center;
}
.visitor-stats .v-row {
display: flex;
justify-content: space-around;
gap: 0;
}
.visitor-stats .v-item {
flex: 1;
text-align: center;
padding: 4px 8px;
border-right: 1px solid var(--green-900);
}
.visitor-stats .v-item:last-child { border-right: none; }
.visitor-stats .v-item .v-label {
display: block;
font-size: .6rem;
margin-bottom: 3px;
color: var(--green-900);
}
.visitor-stats .v-item .v-value {
color: var(--green-800);
font-weight: 700;
font-size: .9rem;
}
@media (max-width: 768px) {
.footer-scenery-option2 {
background-image: url(\'/assets/redd-plus/footer-forest.png\');
min-height: 280px;
background-position: center bottom;
}
}
</style>
<div class=\"footer-scenery-option2 pt-5\">
<section class=\"container pt-4 pb-5\">
<div class=\"row align-items-center gy-4\">
<div class=\"col-lg-4 text-center text-lg-end pe-lg-5\">
<span class=\"big-stat\">55<span class=\"pct\">%</span></span>
</div>
<div class=\"col-lg-5 stat-divider ps-lg-5\">
<h3 class=\"font-display\" style=\"color:var(--green-900);\">Malaysia’s Forest Cover</h3>
<p class=\"fw-medium mb-2\">More than half of Malaysia remains under forest cover, supporting biodiversity, climate resilience and sustainable development.</p>
</div>
<div class=\"col-lg-3 text-center\">
<svg class=\"donut\" viewBox=\"0 0 120 120\" role=\"img\" aria-label=\"55 percent forest cover\">
<defs>
<linearGradient id=\"ringGrad\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">
<stop offset=\"0%\" stop-color=\"#8a9a5b\"/>
<stop offset=\"100%\" stop-color=\"#2e4a35\"/>
</linearGradient>
</defs>
<circle cx=\"60\" cy=\"60\" r=\"48\" fill=\"none\" stroke=\"#e6e4d6\" stroke-width=\"14\"/>
<circle cx=\"60\" cy=\"60\" r=\"48\" fill=\"none\" stroke=\"url(#ringGrad)\" stroke-width=\"14\"
stroke-linecap=\"round\" stroke-dasharray=\"221 302\"
transform=\"rotate(-60 60 60)\"/>
</svg>
</div>
</div>
</section>
<footer class=\"container pb-4\">
<div class=\"mb-4\">
<img src=\"/assets/redd-plus/logo.png\" alt=\"REDD+ Malaysia\" height=\"52\">
</div>
<div class=\"footer-contact d-flex flex-wrap gap-4 mb-4\">
<a href=\"https://redd.nres.gov.my\"><i class=\"bi bi-globe2\"></i>https://redd.nres.gov.my</a>
<a href=\"mailto:redd@nres.gov.my\"><i class=\"bi bi-envelope\"></i>redd@nres.gov.my</a>
<a href=\"tel:+60380008000\"><i class=\"bi bi-telephone\"></i>+603 8000 8000</a>
</div>
<div class=\"visitor-stats\">
<h5>Statistik Pelawat</h5>
<div class=\"v-row\">
<div class=\"v-item\"><span class=\"v-label\">Hari Ini</span><span class=\"v-value\">{{ number_format($todayVisits) }}</span></div>
<div class=\"v-item\"><span class=\"v-label\">Minggu Ini</span><span class=\"v-value\">{{ number_format($thisWeek) }}</span></div>
<div class=\"v-item\"><span class=\"v-label\">Bulan Ini</span><span class=\"v-value\">{{ number_format($thisMonth) }}</span></div>
<div class=\"v-item\"><span class=\"v-label\">Tahun Ini</span><span class=\"v-value\">{{ number_format($thisYear) }}</span></div>
<div class=\"v-item\"><span class=\"v-label\">Jumlah</span><span class=\"v-value\">{{ number_format($totalVisits) }}</span></div>
</div>
</div>
<hr style=\"border-color:rgba(60,80,60,.3);\">
<div class=\"footer-bottom d-flex flex-column flex-md-row justify-content-center gap-2 gap-md-4 text-center pb-2\">
<span>© 2026 REDD+ Malaysia. All rights reserved.</span>
<span class=\"d-none d-md-inline\">|</span>
<a href=\"/redd-plus/article?id=security-policy\">Security Policy</a>
<span class=\"d-none d-md-inline\">|</span>
<a href=\"/redd-plus/article?id=privacy-policy\">Privacy Policy</a>
<span class=\"d-none d-md-inline\">|</span>
<a href=\"/redd-plus/article?id=web-policy\">Web Policy</a>
<span class=\"d-none d-md-inline\">|</span>
<a href=\"/redd-plus/article?id=disclaimer\">Disclaimer</a>
</div>
</footer>
</div>
',
'type' => 'PHP',
'category' => 'Footer',
'status' => 1,
]);
}
}