feat: Add npm dependencies and update vendor paths

- Add package.json dependencies: jquery, jquery-ui, moment, daterangepicker, wavesurfer.js, air-datepicker
- Create scripts/setup-vendor.js to copy npm packages to public/assets/vendor
- Update view templates to use vendor paths instead of old /js/ or CDN URLs
- Clean up legacy commented-out scripts in master layout
This commit is contained in:
Mischa Spelt
2026-08-25 16:17:01 +02:00
parent e070c9f374
commit 7b9674110e
8454 changed files with 11623 additions and 27 deletions
@@ -0,0 +1,20 @@
<!-- Cookie Consent by https://www.CookieConsent.com -->
<script type="text/javascript" src="//www.cookieconsent.com/releases/3.1.0/cookie-consent.js"></script>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function () {
cookieconsent.run({"notice_banner_type":"simple","consent_type":"express","palette":"light","language":"nl","website_name":"NH Gooi","cookies_policy_url":"/privacy-verklaring","change_preferences_selector":"#changePreferences"});
});
</script>
<!-- Google Tag Manager -->
<script type="text/plain" cookie-consent="tracking">
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-KGLKLJ4');
</script>
<!-- End Google Tag Manager -->
@if(!isset($disableBanners) || !$disableBanners)
<script async src="{{ env('ADS_URL') }}www/delivery/asyncjs.php"></script>
@endif
<noscript>ePrivacy and GPDR Cookie Consent by <a href="https://www.CookieConsent.com/" rel="nofollow noopener">Cookie Consent</a></noscript>
<!-- End Cookie Consent by https://www.CookieConsent.com -->
@@ -0,0 +1,49 @@
<head>
@include('layouts._analytics')
<title>@yield('title') | NH Gooi</title>
<!--meta-->
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.2" />
<meta name="format-detection" content="telephone=no" />
<meta name="keywords" content="NH Gooi,Radio,TV,Nieuws,Lokale omroep,Huizen,Blaricum,Eemnes,Laren,Hilversum,BEL-gemeenten,Streekomroep" />
<meta name="description" content="NH Gooi is de streekomroep voor Hilversum, Huizen, Blaricum, Eemnes en Laren." />
<!--style-->
<link href='//fonts.googleapis.com/css?family=Roboto:300,400,700' rel='stylesheet' type='text/css'>
<link href='//fonts.googleapis.com/css?family=Roboto+Condensed:300,400,700' rel='stylesheet' type='text/css'>
{{--
<link rel="stylesheet" type="text/css" href="/css/reset.css">
<link rel="stylesheet" type="text/css" href="/css/superfish.css">
<link rel="stylesheet" type="text/css" href="/css/jquery.qtip.css">
<link rel="stylesheet" type="text/css" href="/css/style.css">
<link rel="stylesheet" type="text/css" href="/css/menu_styles.css">
<link rel="stylesheet" type="text/css" href="/css/animations.css">
<link rel="stylesheet" type="text/css" href="/css/responsive.css">
<link rel="stylesheet" type="text/css" href="/css/odometer-theme-default.css">
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css">
<link rel="stylesheet" type="text/css" href="/css/nhgooi.css">
--}}
<link rel="stylesheet" type="text/css" href="/css/prettyPhoto.css">
<link rel="stylesheet" type="text/css" href="/css/bootstrap-grid.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" type="text/css" href="/css/style.css?<?= filemtime("../public/css/style.css"); ?>" />
<meta property="fb:app_id" content="133349980094758" />
<meta property="og:site_name" content="NH Gooi" />
<?php if(isset($metadata)) {
$metadata->set('url', url()->current())
->prepend('image', $imgBase)
->prepend('audio', route('gemist.fragment'))
->append('title', ' | NH Gooi')
->metaTags();
} ?>
@stack('styles')
<link rel="shortcut icon" href="/favicon.ico">
{{--
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
--}}
<link rel="manifest" href="/site.webmanifest">
<!--rss-->
<link rel="alternate" type="application/rss+xml" title="Abonneren op NH Gooi Nieuws" href="{{env('API_URL')}}rss/nieuws" />
<link rel="alternate" type="application/rss+xml" title="Abonneren op NH Gooi Fragment gemist" href="{{env('API_URL')}}rss/podcasts" />
</head>
@@ -0,0 +1,8 @@
<!DOCTYPE html>
<html>
@include('layouts._head')
<body>
@yield('content')
@stack('scripts')
</body>
</html>
@@ -0,0 +1,11 @@
@extends('layouts/master')
@section('page')
<div class="page_container @yield('page_class')">
<div class="bread_crumb">
@yield('breadcrumb')
</div>
<h1 class="page_title">@yield('title')</h1>
@yield('content')
</div>
@endsection
@@ -0,0 +1,229 @@
@section('page')
@yield('content')
@endsection
<!DOCTYPE html>
<html>
@include('layouts._head')
<body>
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KGLKLJ4" height="0" width="0"
style="display:none; visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
<div class="site_container boxed @yield('site_container_class')">
<div class="header_top_bar_container style_11 clearfix">
</div>
<div class="header_container small">
<div class="header clearfix">
<div class="logo">
<a href="{{url('/')}}"><img src="/images/Streekomroep NHGooi.png"/></a>
</div>
@if(!isset($disableBanners) || !$disableBanners)
<ins data-revive-zoneid="1" data-revive-id="{{ env('REVIVE_ID') }}"></ins>
@endif
</div>
</div>
<div class="menu_mobile_container d-flex d-md-none sticky clearfix">
<div class="mobile_menu_button">
<a href="javascript:void(0)"><i class="fa-solid fa-bars"></i></a>
</div>
<div class="logo_mobile">
<a href="{{url('/')}}"><img src="/images/logo-NHGooi-slogan-diap.svg"/></a>
</div>
<div class="right_menu_container">
<ul class="right_menu">
<li>
<a class="player with_svg_icon" href="{{url('luister/live')}}">{!!file_get_contents(__DIR__ . '/../../../public/images/icons/radio.svg')!!}</a>
<a href="{{url('kijk/studio')}}">{!!file_get_contents(__DIR__ . '/../../../public/images/icons/television-2.svg')!!}</a>
</li>
<li>
<a href="https://wa.me/31888505651" target="_blank">Tip <i class="fa-solid fa-circle-plus"></i></a>
</li>
@if(isset($searchURL))
<li class="search">
<form class="search_form" action="{{url($searchURL)}}">
<input type="text" name="query" placeholder="Zoeken..."
value="{{isset($query) ? $query : null}}" class="search_input">
<a href="javascript:void(0)" onclick="this.form.submit()" class="search_submit"><i
class="fa-solid fa-magnifying-glass"></i></a>
</form>
<a href="#" class="search_button"><i class="fa-solid fa-magnifying-glass"></i><i
style="display: none" class="fa-solid fa-xmark"></i></a>
</li>
@endif
</ul>
</div>
</div>
<div class="menu_container sticky clearfix">
<div class="top_menu_container d-none d-md-block">
<img class="slogan" src="/images/Slogan_DIAP white.svg" />
<ul class="right_menu">
<li>
<a class="player with_svg_icon" href="{{url('luister/live')}}"><span>Luister live radio </span>{!!file_get_contents(__DIR__ . '/../../../public/images/icons/radio.svg')!!}</a>
</li>
<li>
<a class="with_svg_icon" href="{{url('kijk/live')}}"><span>Kijk live tv </span>{!!file_get_contents(__DIR__ . '/../../../public/images/icons/television-2.svg')!!}</a>
</li>
<li>
<a href="https://wa.me/31888505651" style="{{!isset($searchURL) ? 'margin-top: 3px' : ''}}" target="_blank"><span>Tip de streekredactie </span><i style="margin-top: 2px" class="fa-solid fa-circle-plus"></i></a>
</li>
@if(isset($searchURL))
<li class="search">
<form class="search_form" action="{{url($searchURL)}}">
<input type="text" name="query" placeholder="Zoeken..."
value="{{isset($query) ? $query : null}}" class="search_input">
<a href="javascript:void(0)" onclick="this.form.submit()" class="search_submit"><i
class="fa-solid fa-magnifying-glass"></i></a>
</form>
<a href="#" style="margin-top: 2px;" class="search_button"><i class="fa-solid fa-magnifying-glass"></i><i
style="display: none" class="fa-solid fa-xmark"></i></a>
</li>
@endif
</ul>
</div>
@include('widgets.menu')
</div>
@if(!isset($disableBanners) || !$disableBanners)
<div class="mobile-banner-fullwidth d-flex d-md-none justify-content-center mt-4">
<ins data-revive-zoneid="6" data-revive-id="{{ env('REVIVE_ID') }}"></ins>
</div>
@endif
<!-- Content -->
<div class="page @yield('page_container_class')">
<a name="top"></a>
@yield('page')
</div><!--/.page-->
<!-- Footer -->
<div class="footer_container">
<div class="footer_menu">
<div class="row">
<div class="col-12 col-md-3">
<h4 class="box_header"><span>NHGooi</span></h4>
<p class="about">
NHGooi is de streekomroep voor Gooi &amp; Vechtstreek. Wij brengen nieuws en achtergronden
op onze website, radio en televisie. Daarnaast brengen we boeiende en belangrijke podcasts
en een gevari&euml;erd programma-aanbod op al onze media-kanalen.
</p>
</div>
<div class="col-12 col-md-3">
<h4 class="box_header"><span style="height: 30px;display: block;width: 0;"></span></h4>
<p class="about">
Altijd op de hoogte blijven van nieuws en achtergronden uit de regio? <span class="fas fa-mobile"></span> <a href="{{url('app')}}">Download onze app</a>.
</p>
<p class="about">
<span class="fa fa-list"></span> <a href="{{url('frequenties')}}">Bekijk hier</a> waar je ons kunt zien en horen.
</p>
</div>
<div class="col-12 col-md-3">
<h4 class="box_header"><span>Contact</span></h4>
<p class="buttons">
<a href="{{url('contact')}}">Contactgegevens</a>
<a href="{{url('klachten')}}">Klachtenregeling</a>
<a href="{{url('frequenties')}}">Frequenties</a>
<a href="{{url('adverteren')}}">Adverteren</a>
<a href="{{url('vacatures')}}">Vacatures</a>
</p>
</div>
<div class="col-12 col-md-3">
<h4 class="box_header"><span>Kijk & luister</span></h4>
<p class="buttons">
<a class="player" href="{{url('luister/live')}}">Luister live</a>
<a href="{{url('kijk/live')}}">Kijk live</a>
<a href="{{url('gemist/fragment')}}">Gemist</a>
<a href="{{url('nieuws')}}">Nieuws</a>
<a href="{{url('podcast')}}">Podcasts</a>
</p>
</div>
</div>
<div class="row">
<div class="col-12">
<ul class="footer_menu2">
<li><a href="{{url('/')}}" class="logo"><img src="/images/logo-NHGooi-slogan-diap.svg"/></a></li>
<li><a href="{{url('disclaimer')}}">Disclaimer</a></li>
<li><a href="{{url('privacy-verklaring')}}">Privacy verklaring</a></li>
<li><a href="{{url('cookie-statement')}}">Cookie statement</a></li>
<li><a id="changePreferences" href="#">Pas hier uw cookie-instellingen aan</a></li>
</ul>
<ul class="footer_social_media">
<li><a class="facebook" title="Facebook" target="_blank"
href="https://www.facebook.com/WijZijnNHGooi"><i class="fa-brands fa-facebook-f"></i></a>
</li>
<li><a class="twitter-x" title="Twitter/X" target="_blank" href="https://twitter.com/nhgooi"><i
class="fa-brands fa-twitter"></i></a>
</li>
</ul>
</div>
</div>
</div>
<div class="copyright">
© NHGooi
<a class="scroll_top" href="#top" title="Scroll to top"><i class="fa-solid fa-angle-up"></i></a>
</div>
</div>
</div>
<div class="background_overlay"></div>
<!--js-->
<!--<script type="text/javascript" src="/js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="/js/jquery-migrate-1.4.1.min.js"></script>
<script type="text/javascript" src="/js/jquery.ba-bbq.min.js"></script>
<script type="text/javascript" src="/js/jquery-ui-1.11.1.custom.min.js"></script>
<script type="text/javascript" src="/js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="/js/jquery.carouFredSel-6.2.1-packed.js"></script>
<script type="text/javascript" src="/js/jquery.touchSwipe.min.js"></script>
<script type="text/javascript" src="/js/jquery.mousewheel.min.js"></script>
<script type="text/javascript" src="/js/jquery.transit.min.js"></script>
<script type="text/javascript" src="/js/jquery.sliderControl.js"></script>
<script type="text/javascript" src="/js/jquery.timeago.js"></script>
<script type="text/javascript" src="/js/jquery.hint.js"></script>
<script type="text/javascript" src="/js/jquery.qtip.min.js"></script>
<script type="text/javascript" src="/js/jquery.blockUI.js"></script>
<script type="text/javascript" src="/js/odometer.min.js"></script>-->
<script type="text/javascript" src="/js/main.js"></script>
<script type="text/javascript" src="/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="/js/jquery.prettyPhoto.js"></script>
<script type="text/javascript" src="/js/jquery.carouFredSel-6.2.1.min.js"></script>
<script type="text/javascript" src="/js/functions.js"></script>
<script type="text/javascript" src="/js/wavesurfer.min.js"></script>
<script type="text/javascript">
$(window).resize(function () {
// Fix sticky for mobile menu indicator
// menu_position = $(".menu_container").offset().top;
});
// $(window).scroll(function () {
// var topOfWindow = $(window).scrollTop();
// if (topOfWindow > menu_position) $(".scroll_top_floater").fadeIn();
// else $(".scroll_top_floater").fadeOut();
// });
$(".scroll_top_floater").hide();
function openPlayerInNewScreen() {
$(".player").click(function (e) {
e.preventDefault();
window.open($(this).attr('href'), '_player', 'width=550,height=600,titlebar,close');
return false;
});
}
openPlayerInNewScreen();
$(".search_button").click(function (e) {
e.preventDefault();
$(".search_form").animate({width: 'toggle'}, 350);
$(this).find('.fa-magnifying-glass').toggle();
$(this).find('.fa-xmark').toggle();
$('.right_menu a span').animate({width: 'toggle'}, 350);
$('.right_menu li').toggleClass('collapsed');
});
$(".search_form").animate({width: 'toggle'}, 1);
</script>
@stack('scripts')
</body>
</html>
@@ -0,0 +1,71 @@
@extends('layouts/master')
@section('content_class')
box
@endsection
@section('page')
<div class="@yield('container_class')">
<div class="row @yield('page_class')">
<div class="col-12">
@yield('breadcrumb_top')
</div>
<div class="col-12 col-md content_container">
<div class="full-width md_margin_top @yield('content_class')">
@yield('breadcrumb')
@yield('tags')
<h1 class="page_title">@yield('title')</h1>
@yield('content')
</div>
</div>
<div class="col-12 col-md-auto sidebar">
@section('sidebar')
@if ((isset($populair) && $populair) || isset($newsItems) && $newsItems)
<div data-tabs>
<div class="tabs">
@if (isset($populair) && $populair)
<h4 data-tab-content-id="tab_most_read"
class="box_header small flex-grow-1 active"><span>Meest gelezen</span>
</h4>
@endif
@if (isset($newsItems) && $newsItems)
<h4 data-tab-content-id="tab_more_news"
class="box_header small{{!$populair? ' active' : ''}}">
<span>Meer nieuws</span></h4>
@endif
</div>
@if (isset($populair) && $populair)
<div id="tab_most_read" class="box tab_content active">
@include('partial/newslist_small', ['id' => 'items-most-read', 'news' => $populair])
<a class="btn auto_width" id="meer-nieuws-most-read" href="#"
data-loadmorenews='{"container":["#items-most-read"], "url": "/nieuws/populair?id=items-most-read"}'>
<span class="fas fa-spinner fa-spin" id="loading"></span>
Klik hier voor meer nieuws
</a>
</div>
@endif
@if (isset($newsItems) && $newsItems)
<div id="tab_more_news" class="box tab_content">
@include('partial/newslist_small', ['id' => 'items-more-news', 'news' => $newsItems])
<a class="btn auto_width" id="meer-nieuws-more-news" href="#"
data-loadmorenews='{"container":["#items-more-news"], "url": "/nieuws/more?id=items-more-news"}'>
<span class="fas fa-spinner fa-spin" id="loading"></span>
Klik hier voor meer nieuws
</a>
</div>
@endif
</div>
@endif
@include('widgets/nhgooiradiotv', ['headerClass' => 'small'])
@include('widgets.banner_sidebar')
@include('widgets/contact', [])
@show
</div>
</div>
</div>
@endsection