- Added standard Laravel directory structure and configuration. - Included Svelte and Tailwind configuration for the admin interface. - Added core PHPUnit and testing scripts.
128 lines
5.5 KiB
PHP
128 lines
5.5 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="csrf-token" content="{{ csrf_token() }}">
|
|
|
|
<title>{{ config('app.name', 'SiteWeaver CMS') }} - Admin</title>
|
|
|
|
<!-- SiteWeaver Core Assets -->
|
|
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.3/dist/semantic.min.css">
|
|
<script src="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.3/dist/semantic.min.js"></script>
|
|
<style>
|
|
.siteweaver-admin #siteweaver-content {
|
|
/* Remove opacity: 0 to avoid blank page if JS fails or isn't used */
|
|
transition: opacity 0.3s ease-in;
|
|
}
|
|
.siteweaver-admin #siteweaver-content.loaded {
|
|
opacity: 1;
|
|
}
|
|
</style>
|
|
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
|
|
|
<script>
|
|
// Initialize Semantic UI components after full page load
|
|
window.addEventListener('load', () => {
|
|
if (typeof jQuery !== 'undefined') {
|
|
if (typeof jQuery.fn.dropdown === 'function') {
|
|
$('.ui.dropdown').dropdown();
|
|
}
|
|
|
|
// Fix for dismissible messages
|
|
$('.message .close').on('click', function() {
|
|
$(this).closest('.message').transition('fade');
|
|
});
|
|
} else {
|
|
console.error('jQuery not loaded.');
|
|
}
|
|
});
|
|
</script>
|
|
</head>
|
|
<body class="siteweaver-admin">
|
|
@auth
|
|
<!-- Top Menu -->
|
|
<div class="ui top fixed menu inverted">
|
|
<div class="ui container">
|
|
<a href="{{ route('admin.dashboard') }}" class="header item">
|
|
<img class="logo" src="/logo.png" alt="SiteWeaver" style="margin-right: 1.5em;">
|
|
SiteWeaver
|
|
</a>
|
|
@if(Auth::user()->hasPermission('view-pages'))
|
|
<a href="{{ route('admin.pages.index') }}" class="item">
|
|
<i class="file icon"></i> {{ t('admin.pages') }}
|
|
</a>
|
|
@endif
|
|
@if(Auth::user()->hasPermission('manage-navigation'))
|
|
<a href="{{ route('admin.navigation.index') }}" class="item">
|
|
<i class="sitemap icon"></i> {{ t('admin.navigation') }}
|
|
</a>
|
|
@endif
|
|
@if(Auth::user()->hasPermission('manage-translations'))
|
|
<a href="{{ route('admin.translations.index') }}" class="item">
|
|
<i class="language icon"></i> {{ t('admin.translations') }}
|
|
</a>
|
|
@endif
|
|
@if(Auth::user()->hasPermission('manage-settings'))
|
|
<a href="{{ route('admin.settings.index') }}" class="item">
|
|
<i class="setting icon"></i> {{ t('admin.settings') }}
|
|
</a>
|
|
@endif
|
|
@if(Auth::user()->hasPermission('view-users'))
|
|
<a href="{{ route('admin.users.index') }}" class="item">
|
|
<i class="users icon"></i> Users
|
|
</a>
|
|
@endif
|
|
@if(Auth::user()->hasPermission('view-themes'))
|
|
<a href="{{ route('admin.themes.index') }}" class="item">
|
|
<i class="paint brush icon"></i> Themes
|
|
</a>
|
|
@endif
|
|
@if(Auth::user()->hasPermission('edit-themes'))
|
|
<a href="{{ route('admin.themes.editor.index') }}" class="item">
|
|
<i class="code icon"></i> Theme Editor
|
|
</a>
|
|
@endif
|
|
@if(Auth::user()->hasPermission('view-media'))
|
|
<a href="{{ route('admin.media.index') }}" class="item">
|
|
<i class="images icon"></i> Media
|
|
</a>
|
|
@endif
|
|
@if(Auth::user()->hasPermission('manage-backups'))
|
|
<a href="{{ route('admin.backups.index') }}" class="item">
|
|
<i class="archive icon"></i> Backups
|
|
</a>
|
|
@endif
|
|
|
|
<div class="right menu">
|
|
<div class="ui dropdown item">
|
|
<i class="user icon"></i> {{ Auth::user()->name }} <i class="dropdown icon"></i>
|
|
<div class="menu">
|
|
<a href="{{ route('admin.profile.edit') }}" class="item">
|
|
<i class="settings icon"></i> Profile
|
|
</a>
|
|
<div class="divider"></div>
|
|
<form action="{{ route('logout') }}" method="POST" id="logout-form" style="display: none;">
|
|
@csrf
|
|
</form>
|
|
<a href="#" class="item" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
|
|
<i class="sign out icon"></i> Logout
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="siteweaver-content" style="padding-top: 5em;">
|
|
@yield('content')
|
|
</div>
|
|
@else
|
|
<div id="siteweaver-content">
|
|
@yield('content')
|
|
</div>
|
|
@endauth
|
|
</body>
|
|
</html>
|