mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 01:57:30 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			207 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			207 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html lang="{{App::getLocale()}}">
 | |
| <head>
 | |
|     @if (isset($hideLogo) && $hideLogo)
 | |
|         <title>{{ trans('texts.client_portal') }}</title>
 | |
|     @else
 | |
|         <title>{{ isset($title) ? ($title . ' | Invoice Ninja') : ('Invoice Ninja | ' . trans('texts.app_title')) }}</title> 
 | |
|         <meta name="description" content="{{ isset($description) ? $description : trans('texts.app_description') }}" />
 | |
|         <link href="{{ asset('favicon-v2.png') }}" rel="shortcut icon" type="image/png">
 | |
|     @endif
 | |
| 
 | |
|     <!-- Source: https://github.com/hillelcoren/invoice-ninja -->
 | |
|     <!-- Version: {{ NINJA_VERSION }} -->
 | |
| 
 | |
|     <meta charset="utf-8">
 | |
|     <meta property="og:site_name" content="Invoice Ninja" />
 | |
|     <meta property="og:url" content="{{ SITE_URL }}" />
 | |
|     <meta property="og:title" content="Invoice Ninja" />
 | |
|     <meta property="og:image" content="{{ SITE_URL }}/images/round_logo.png" />
 | |
|     <meta property="og:description" content="Simple, Intuitive Invoicing." />
 | |
| 
 | |
|     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | |
|     <meta name="csrf-token" content="{{ csrf_token() }}">
 | |
|     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | |
|     <meta name="msapplication-config" content="none"/> 
 | |
| 
 | |
|     <link rel="canonical" href="{{ NINJA_APP_URL }}/{{ Request::path() }}" />
 | |
| 
 | |
|     <script src="{{ asset('built.js') }}?no_cache={{ NINJA_VERSION }}" type="text/javascript"></script>    
 | |
| 
 | |
|     <script type="text/javascript">
 | |
|         var NINJA = NINJA || {};
 | |
|         NINJA.fontSize = 9;
 | |
|         NINJA.isRegistered = {{ \Utils::isRegistered() ? 'true' : 'false' }};
 | |
| 
 | |
|         window.onerror = function (errorMsg, url, lineNumber, column, error) {
 | |
|             if (errorMsg.indexOf('Script error.') > -1) {
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             try {
 | |
|                 // Use StackTraceJS to parse the error context 
 | |
|                 if (error) {
 | |
|                     var message = error.message ? error.message : error;
 | |
|                     StackTrace.fromError(error).then(function(result) {
 | |
|                         var gps = new StackTraceGPS();
 | |
|                         gps.findFunctionName(result[0]).then(function(result) {
 | |
|                             logError(errorMsg + ': ' + JSON.stringify(result));
 | |
|                         });
 | |
|                     });
 | |
|                 } else {
 | |
|                     logError(errorMsg);
 | |
|                 }
 | |
|             } catch(err) {}
 | |
| 
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         function logError(message) {
 | |
|             $.ajax({
 | |
|                 type: 'GET',
 | |
|                 url: '{{ URL::to('log_error') }}',
 | |
|                 data: 'error='+encodeURIComponent(message)+'&url='+encodeURIComponent(window.location)
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         /* Set the defaults for DataTables initialisation */
 | |
|         $.extend( true, $.fn.dataTable.defaults, {
 | |
|             "bSortClasses": false,
 | |
|             "sDom": "t<'row-fluid'<'span6'i><'span6'p>>l",
 | |
|             "sPaginationType": "bootstrap",
 | |
|             "bInfo": true,
 | |
|             "oLanguage": {
 | |
|                 'sEmptyTable': "{{ trans('texts.empty_table') }}",
 | |
|                 'sLengthMenu': '_MENU_ {{ trans('texts.rows') }}',
 | |
|                 'sSearch': ''
 | |
|             }
 | |
|         } );
 | |
|         
 | |
|         /* This causes problems with some languages. ie, fr_CA
 | |
| 		var appLocale = '{{App::getLocale()}}';
 | |
|         $.extend( true, $.fn.datepicker.defaults, {
 | |
| 			language: appLocale.replace("_", "-")
 | |
|         });
 | |
|         */
 | |
| 
 | |
|         @if (env('FACEBOOK_PIXEL'))
 | |
|             <!-- Facebook Pixel Code -->
 | |
|             !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
 | |
|             n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
 | |
|             n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
 | |
|             t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
 | |
|             document,'script','//connect.facebook.net/en_US/fbevents.js');
 | |
| 
 | |
|             fbq('init', '{{ env('FACEBOOK_PIXEL') }}');
 | |
|             fbq('track', "PageView");
 | |
| 
 | |
|             (function() {
 | |
|               var _fbq = window._fbq || (window._fbq = []);
 | |
|               if (!_fbq.loaded) {
 | |
|                 var fbds = document.createElement('script');
 | |
|                 fbds.async = true;
 | |
|                 fbds.src = '//connect.facebook.net/en_US/fbds.js';
 | |
|                 var s = document.getElementsByTagName('script')[0];
 | |
|                 s.parentNode.insertBefore(fbds, s);
 | |
|                 _fbq.loaded = true;
 | |
|              }
 | |
|             })();
 | |
|             
 | |
|         @else
 | |
|             function fbq() {
 | |
|                 // do nothing
 | |
|             };
 | |
|         @endif
 | |
| 
 | |
|         window._fbq = window._fbq || [];
 | |
|             
 | |
|     </script>
 | |
| 
 | |
| 
 | |
|     <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
 | |
|     <!--[if lt IE 9]>
 | |
|     <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
 | |
|     <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
 | |
|     <![endif]-->
 | |
| 
 | |
| @yield('head')
 | |
| 
 | |
| </head>
 | |
| 
 | |
| <body class="body">
 | |
| 
 | |
|     @if (isset($_ENV['TAG_MANAGER_KEY']) && $_ENV['TAG_MANAGER_KEY'])  
 | |
|     <!-- Google Tag Manager -->
 | |
|     <noscript><iframe src="//www.googletagmanager.com/ns.html?id={{ $_ENV['TAG_MANAGER_KEY'] }}"
 | |
|         height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
 | |
|         <script>(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=
 | |
|         '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
 | |
|     })(window,document,'script','dataLayer','{{ $_ENV['TAG_MANAGER_KEY'] }}');</script>      
 | |
|     <!-- End Google Tag Manager -->
 | |
| 
 | |
|     <script>
 | |
|         function trackEvent(category, action) {}
 | |
|     </script>
 | |
|     @elseif (isset($_ENV['ANALYTICS_KEY']) && $_ENV['ANALYTICS_KEY'])  
 | |
|     <script>
 | |
|         (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 | |
|             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 | |
|             m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 | |
|         })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 | |
| 
 | |
|         ga('create', '{{ $_ENV['ANALYTICS_KEY'] }}', 'auto');        
 | |
|         ga('send', 'pageview');
 | |
| 
 | |
|         function trackEvent(category, action) {
 | |
|             ga('send', 'event', category, action, this.src);
 | |
|         }
 | |
|     </script>
 | |
|     @else
 | |
|     <script>
 | |
|         function trackEvent(category, action) {}
 | |
|     </script>
 | |
|     @endif
 | |
|     
 | |
| @yield('body')
 | |
| 
 | |
| <script type="text/javascript">
 | |
|     NINJA.formIsChanged = {{ isset($formIsChanged) && $formIsChanged ? 'true' : 'false' }};
 | |
| 
 | |
|     $(function() {
 | |
|         $('form.warn-on-exit input, form.warn-on-exit textarea, form.warn-on-exit select').change(function() {
 | |
|             NINJA.formIsChanged = true;
 | |
|         }); 
 | |
| 
 | |
|         @if (Session::has('trackEventCategory') && Session::has('trackEventAction'))
 | |
|             trackEvent('{{ session('trackEventCategory') }}', '{{ session('trackEventAction') }}');
 | |
|             @if (Session::get('trackEventAction') === '/buy_pro_plan')
 | |
|                 window._fbq.push(['track', '{{ env('FACEBOOK_PIXEL_BUY_PRO') }}', {'value':'{{ PRO_PLAN_PRICE }}.00','currency':'USD'}]);
 | |
|             @endif
 | |
|         @endif
 | |
| 
 | |
|         @if (Session::has('onReady'))
 | |
|             {{ Session::get('onReady') }}
 | |
|         @endif
 | |
|     });
 | |
|     $('form').submit(function() {
 | |
|         NINJA.formIsChanged = false;
 | |
|     });
 | |
|     $(window).on('beforeunload', function() {
 | |
|         if (NINJA.formIsChanged) {
 | |
|             return "{{ trans('texts.unsaved_changes') }}";
 | |
|         } else {
 | |
|             return undefined;
 | |
|         }
 | |
|     }); 
 | |
|     function openUrl(url, track) {
 | |
|         trackEvent('/view_link', track ? track : url);
 | |
|         window.open(url, '_blank');
 | |
|     }
 | |
| </script> 
 | |
| 
 | |
| </body>
 | |
| 
 | |
| </html>
 |