From 69eabbae7132a3c97ff50f966ef8fd99b871637e Mon Sep 17 00:00:00 2001 From: merdiano Date: Mon, 23 Sep 2019 15:35:40 +0500 Subject: [PATCH 1/3] helpers bug fix checkout order page view events with images api categories and events routes cache category children scope event seans count --- app/Helpers/helpers.php | 27 ++ .../Controllers/EventCheckoutController.php | 30 +-- app/Http/Controllers/PublicController.php | 4 +- app/Http/api_routes.php | 36 +-- app/Http/routes.php | 46 +--- app/Jobs/GenerateTicket.php | 2 +- app/Jobs/SendOrderNotification.php | 1 + app/Models/Category.php | 4 +- app/Models/Event.php | 7 +- resources/lang/en/Event.php | 1 + .../Bilettm/Layouts/BilettmLayout.blade.php | 8 +- .../Bilettm/Partials/EventItem.blade.php | 3 +- .../Bilettm/Partials/PublicHeader.blade.php | 2 - .../views/Bilettm/Public/EventsPage.blade.php | 8 +- .../Bilettm/Public/SearchResults.blade.php | 4 +- .../Bilettm/ViewEvent/CheckoutPage.blade.php | 53 ++++ .../Bilettm/ViewEvent/EventPage.blade.php | 6 +- .../ViewEvent/EventPageCheckout.blade.php | 8 - .../ViewEvent/EventPageViewOrder.blade.php | 10 - .../Partials/CheckoutFooter.blade.php | 7 - .../Partials/CreateOrderSection.blade.php | 199 +++++--------- .../Partials/FooterSection.blade.php | 15 ++ ...ader.blade.php => HeaderSection.blade.php} | 4 +- .../Partials/ViewOrderSection.blade.php | 243 ++++++++++++++++++ .../Bilettm/ViewEvent/ViewOrderPage.blade.php | 10 + .../pagination/events_pagination.blade.php | 8 + routes/breadcrumbs.php | 2 +- 27 files changed, 488 insertions(+), 260 deletions(-) create mode 100644 resources/views/Bilettm/ViewEvent/CheckoutPage.blade.php delete mode 100644 resources/views/Bilettm/ViewEvent/EventPageCheckout.blade.php delete mode 100644 resources/views/Bilettm/ViewEvent/EventPageViewOrder.blade.php delete mode 100644 resources/views/Bilettm/ViewEvent/Partials/CheckoutFooter.blade.php create mode 100644 resources/views/Bilettm/ViewEvent/Partials/FooterSection.blade.php rename resources/views/Bilettm/ViewEvent/Partials/{CheckoutHeader.blade.php => HeaderSection.blade.php} (92%) create mode 100644 resources/views/Bilettm/ViewEvent/Partials/ViewOrderSection.blade.php create mode 100644 resources/views/Bilettm/ViewEvent/ViewOrderPage.blade.php create mode 100644 resources/views/vendor/pagination/events_pagination.blade.php diff --git a/app/Helpers/helpers.php b/app/Helpers/helpers.php index 57cace3a..b9149f4f 100644 --- a/app/Helpers/helpers.php +++ b/app/Helpers/helpers.php @@ -62,3 +62,30 @@ if(!function_exists('organisers')){ return \Illuminate\Support\Facades\Auth::user()->account->organisers; } } +if ( ! function_exists('sanitise')) { + /** + * @param string $input + * @return string + */ + function sanitise($input) + { + $clear = clean($input); // Package to remove code "mews/purifier" + $clear = strip_tags($clear); + $clear = html_entity_decode($clear); + $clear = urldecode($clear); + $clear = preg_replace('~[\r\n\t]+~', ' ', trim($clear)); + $clear = preg_replace('/ +/', ' ', $clear); + return $clear; + } + + /** + * @param string $input + * @return string + */ + function clean_whitespace($input) + { + $clear = preg_replace('~[\r\n\t]+~', ' ', trim($input)); + $clear = preg_replace('/ +/', ' ', $clear); + return $clear; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/EventCheckoutController.php b/app/Http/Controllers/EventCheckoutController.php index eccc0594..4c85da0d 100644 --- a/app/Http/Controllers/EventCheckoutController.php +++ b/app/Http/Controllers/EventCheckoutController.php @@ -280,8 +280,8 @@ class EventCheckoutController extends Controller return view('Public.ViewEvent.Embedded.EventPageCheckout', $data); // <--- todo check this out } - return view('Public.ViewEvent.EventPageCheckout', $data); -// return view('Bilettm.ViewEvent.EventPageCheckout', $data); +// return view('Public.ViewEvent.EventPageCheckout', $data); + return view('Bilettm.ViewEvent.CheckoutPage', $data); } /** @@ -381,7 +381,7 @@ class EventCheckoutController extends Controller $orderService->calculateFinalCosts(); $secondsToExpire = Carbon::now()->diffInSeconds($order_session['expires']); $transaction_data += [ - 'amount' => $orderService->getGrandTotal()*100,//todo multiply by 100 + 'amount' => $orderService->getGrandTotal()*1,//todo multiply by 100 'currency' => 934, 'sessionTimeoutSecs' => $secondsToExpire, 'description' => 'Order for customer: ' . $request->get('order_email'), @@ -584,17 +584,17 @@ class EventCheckoutController extends Controller $order->is_payment_received = isset($request_data['pay_offline']) ? 0 : 1; // Business details is selected, we need to save the business details - if (isset($request_data['is_business']) && (bool)$request_data['is_business']) { - $order->is_business = $request_data['is_business']; - $order->business_name = sanitise($request_data['business_name']); - $order->business_tax_number = sanitise($request_data['business_tax_number']); - $order->business_address_line_one = sanitise($request_data['business_address_line1']); - $order->business_address_line_two = sanitise($request_data['business_address_line2']); - $order->business_address_state_province = sanitise($request_data['business_address_state']); - $order->business_address_city = sanitise($request_data['business_address_city']); - $order->business_address_code = sanitise($request_data['business_address_code']); - - } +// if (isset($request_data['is_business']) && (bool)$request_data['is_business']) { +// $order->is_business = $request_data['is_business']; +// $order->business_name = sanitise($request_data['business_name']); +// $order->business_tax_number = sanitise($request_data['business_tax_number']); +// $order->business_address_line_one = sanitise($request_data['business_address_line1']); +// $order->business_address_line_two = sanitise($request_data['business_address_line2']); +// $order->business_address_state_province = sanitise($request_data['business_address_state']); +// $order->business_address_city = sanitise($request_data['business_address_city']); +// $order->business_address_code = sanitise($request_data['business_address_code']); +// +// } // Calculating grand total including tax $orderService = new OrderService($ticket_order['order_total'], $ticket_order['total_booking_fee'], $event); @@ -790,7 +790,7 @@ class EventCheckoutController extends Controller return view('Public.ViewEvent.Embedded.EventPageViewOrder', $data); } - return view('Public.ViewEvent.EventPageViewOrder', $data); + return view('Bilettm.ViewEvent.ViewOrderPage', $data); } /** diff --git a/app/Http/Controllers/PublicController.php b/app/Http/Controllers/PublicController.php index 2fa3d7dd..5becf13b 100644 --- a/app/Http/Controllers/PublicController.php +++ b/app/Http/Controllers/PublicController.php @@ -75,7 +75,7 @@ class PublicController extends Controller $e_query->whereDate('start_date','>=',Carbon::parse($date)); } - $events = $e_query->paginate(10); + $events = $e_query->with('images')->paginate(1); $navigation = $nav_query->get(); // dd($events); return view('Bilettm.Public.EventsPage')->with([ @@ -88,7 +88,7 @@ class PublicController extends Controller public function search(SearchRequest $request){ //todo implement with elastick search and scout $query = $request->get('q'); - $events = Event::where('title','like',"%{$query}%")->get(); + $events = Event::where('title','like',"%{$query}%")->paginate(10); return view('Bilettm.Public.SearchResults') ->with([ diff --git a/app/Http/api_routes.php b/app/Http/api_routes.php index 8192b956..4b608727 100644 --- a/app/Http/api_routes.php +++ b/app/Http/api_routes.php @@ -1,19 +1,23 @@ 'api', 'middleware' => 'auth:api'], function () { +Route::group(['prefix' => 'api'], function () { - /* - * --------------- - * Organisers - * --------------- - */ + Route::get('category/{parent_id?}','API\PublicController@getCategories'); + Route::get('events/{cat_id?}','API\PublicController@getEvents'); + + Route::group(['prefix' =>'admin', 'middleware' => 'auth:api'], function (){ + /* + * --------------- + * Organisers + * --------------- + */ - /* - * --------------- - * Events - * --------------- - */ + /* + * --------------- + * Events + * --------------- + */ Route::resource('events', 'API\EventsApiController'); @@ -44,11 +48,11 @@ Route::group(['prefix' => 'api', 'middleware' => 'auth:api'], function () { */ - Route::get('/', function () { - return response()->json([ - 'Hello' => Auth::guard('api')->user()->full_name . '!' - ]); + // Route::get('/', function () { + // return response()->json([ + // 'Hello' => Auth::guard('api')->user()->full_name . '!' + // ]); + // }); }); - }); \ No newline at end of file diff --git a/app/Http/routes.php b/app/Http/routes.php index fa2487ef..60da8244 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -41,16 +41,6 @@ Route::group( 'as' => 'logout', ]); - - Route::get('/terms_and_conditions', [ - 'as' => 'termsAndConditions', - function () { - return 'TODO: add terms and cond'; - } - ]); - - - Route::group(['middleware' => ['installed']], function () { /* @@ -344,28 +334,11 @@ Route::group( ] ); - Route::get('{event_id}', function ($event_id) { - return Redirect::route('showEventDashboard', [ - 'event_id' => $event_id, - ]); - }); + Route::get('{event_id}', 'EventDashboardController@showDashboard'); - /* - * @todo Move to a controller - */ Route::get('{event_id}/go_live', [ 'as' => 'MakeEventLive', - function ($event_id) { - $event = \App\Models\Event::scope()->findOrFail($event_id); - $event->is_live = 1; - $event->save(); - \Session::flash('message', - 'Event Successfully Made Live! You can undo this action in event settings page.'); - - return Redirect::route('showEventDashboard', [ - 'event_id' => $event_id, - ]); - } + 'uses'=>'EventController@makeEventLive' ]); /* @@ -748,16 +721,13 @@ Route::group( 'uses' =>'PublicController@subscribe' ]); - Route::get('/terms_and_conditions', [ - 'as' => 'termsAndConditions', - function () { - return 'TODO: add terms and cond'; - } - ]); +// Route::get('/terms_and_conditions', [ +// 'as' => 'termsAndConditions', +// function () { +// return 'TODO: add terms and cond'; +// } +// ]); - Route::get('/itemlist', function (){ - return view('Bilettm.Partials.ItemsList'); - }); }); diff --git a/app/Jobs/GenerateTicket.php b/app/Jobs/GenerateTicket.php index 2464275f..f922020a 100644 --- a/app/Jobs/GenerateTicket.php +++ b/app/Jobs/GenerateTicket.php @@ -80,7 +80,7 @@ class GenerateTicket extends Job implements ShouldQueue Log::info("Ticket generated!"); } catch(\Exception $e) { Log::error("Error generating ticket. This can be due to permissions on vendor/nitmedia/wkhtml2pdf/src/Nitmedia/Wkhtml2pdf/lib. This folder requires write and execute permissions for the web user"); - Log::error("Error message. " . $e->getMessage()); + Log::error("Error message. " . $e->getMessage()); //Path must be absolute ("/tmp/") Log::error("Error stack trace" . $e->getTraceAsString()); $this->fail($e); } diff --git a/app/Jobs/SendOrderNotification.php b/app/Jobs/SendOrderNotification.php index 9c23a7c2..fe5dfc28 100644 --- a/app/Jobs/SendOrderNotification.php +++ b/app/Jobs/SendOrderNotification.php @@ -7,6 +7,7 @@ use App\Models\Order; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\Log; class SendOrderNotification extends Job implements ShouldQueue { diff --git a/app/Models/Category.php b/app/Models/Category.php index c099b787..71eda756 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -65,8 +65,8 @@ class Category extends \Illuminate\Database\Eloquent\Model{ return $query->where('depth',2)->orderBy('lft','asc'); } - public function getChildren($parent_id){ - return $this->where('parent_id',$parent_id)->orderBy('lft','asc'); + public function scopeChildren($query,$parent_id){ + return $query->where('parent_id',$parent_id)->orderBy('lft','asc'); } public function parent(){ diff --git a/app/Models/Event.php b/app/Models/Event.php index d2e61d5c..fc11d761 100644 --- a/app/Models/Event.php +++ b/app/Models/Event.php @@ -288,7 +288,7 @@ class Event extends MyBaseModel */ public function getCurrencySymbolAttribute() { - return $this->currency->symbol_left; + return $this->currency->symbol_left ?? ''; } /** @@ -451,6 +451,9 @@ ICSTemplate; return $icsTemplate; } + public function getSeansCount(){ + return $this->tickets()->distinct()->orderBy('ticket_date')->count(); + } /** * @param integer $accessCodeId * @return bool @@ -475,6 +478,6 @@ ICSTemplate; public function scopeOnLive($query){ $query->whereDate('end_date','>',Carbon::now('Asia/Ashgabat')); - return $query->where('is_live',1); + return $query->where('is_live',1)->with('images'); } } diff --git a/resources/lang/en/Event.php b/resources/lang/en/Event.php index 71f6c8ad..b798c5af 100644 --- a/resources/lang/en/Event.php +++ b/resources/lang/en/Event.php @@ -26,6 +26,7 @@ return array ( 'event_title' => 'Event Title', 'event_title_placeholder' => 'E.g: :name\'s Interational Conference', 'event_visibility' => 'Event Visibility', + 'go_live' => 'Event Successfully Made Live! You can undo this action in event settings page.', 'n_attendees_for_event' => ':num Attendee(s) for event: :name (:date)', 'no_events_yet' => 'No Event Yet!', 'no_events_yet_text' => 'Looks like you have yet to create an event. You can create one by clicking the button below.', diff --git a/resources/views/Bilettm/Layouts/BilettmLayout.blade.php b/resources/views/Bilettm/Layouts/BilettmLayout.blade.php index 19bb33bc..969e40f8 100644 --- a/resources/views/Bilettm/Layouts/BilettmLayout.blade.php +++ b/resources/views/Bilettm/Layouts/BilettmLayout.blade.php @@ -44,13 +44,19 @@ @yield('after_scripts') @stack('after_scripts') -{!!HTML::script(config('attendize.cdn_url_static_assets').'/assets/javascript/frontend.js')!!} @if(session()->get('message')) diff --git a/resources/views/Bilettm/Partials/EventItem.blade.php b/resources/views/Bilettm/Partials/EventItem.blade.php index 3f3da50f..253aa5fc 100644 --- a/resources/views/Bilettm/Partials/EventItem.blade.php +++ b/resources/views/Bilettm/Partials/EventItem.blade.php @@ -6,10 +6,9 @@
-

{{$event->start_date->format('d.m.Y')}}

-
{{$event->end_date->format('d.m.Y')}}
+
{{$event->getSeansCount()}} seansa

{{$event->title}}

diff --git a/resources/views/Bilettm/Partials/PublicHeader.blade.php b/resources/views/Bilettm/Partials/PublicHeader.blade.php index 75783d6b..cd580ddd 100644 --- a/resources/views/Bilettm/Partials/PublicHeader.blade.php +++ b/resources/views/Bilettm/Partials/PublicHeader.blade.php @@ -39,8 +39,6 @@ @endforeach - - {{--
diff --git a/resources/views/Bilettm/ViewEvent/CheckoutPage.blade.php b/resources/views/Bilettm/ViewEvent/CheckoutPage.blade.php new file mode 100644 index 00000000..e5d456a4 --- /dev/null +++ b/resources/views/Bilettm/ViewEvent/CheckoutPage.blade.php @@ -0,0 +1,53 @@ +@extends('Bilettm.Layouts.BilettmLayout') +@section('content') + @include('Bilettm.ViewEvent.Partials.HeaderSection') + + @include('Bilettm.ViewEvent.Partials.CreateOrderSection') + + @include('Bilettm.ViewEvent.Partials.FooterSection') +@endsection +@section('after_scripts') + @include("Shared.Partials.LangScript") + {!!HTML::script(config('attendize.cdn_url_static_assets').'/assets/javascript/frontend.js')!!} + + @if(isset($secondsToExpire)) + + @endif +@endsection \ No newline at end of file diff --git a/resources/views/Bilettm/ViewEvent/EventPage.blade.php b/resources/views/Bilettm/ViewEvent/EventPage.blade.php index 577de7ef..3d4c7dc2 100644 --- a/resources/views/Bilettm/ViewEvent/EventPage.blade.php +++ b/resources/views/Bilettm/ViewEvent/EventPage.blade.php @@ -1,6 +1,6 @@ @extends('Bilettm.Layouts.BilettmLayout') @section('content') - {{\DaveJamesMiller\Breadcrumbs\Facades\Breadcrumbs::render('home')}} + {{\DaveJamesMiller\Breadcrumbs\Facades\Breadcrumbs::render('event',$event)}}
@@ -56,8 +56,4 @@ @section('after_scripts') @include("Shared.Partials.LangScript") {!!HTML::script(config('attendize.cdn_url_static_assets').'/assets/javascript/frontend.js')!!} - - @if(isset($secondsToExpire)) - - @endif @endsection \ No newline at end of file diff --git a/resources/views/Bilettm/ViewEvent/EventPageCheckout.blade.php b/resources/views/Bilettm/ViewEvent/EventPageCheckout.blade.php deleted file mode 100644 index 9ff4134a..00000000 --- a/resources/views/Bilettm/ViewEvent/EventPageCheckout.blade.php +++ /dev/null @@ -1,8 +0,0 @@ -@extends('Bilettm.Layouts.BilettmLayout') -@section('content') - @include('Bilettm.ViewEvent.Partials.CheckoutHeader') - - @include('Bilettm.ViewEvent.Partials.CreateOrderSection') - - @include('Bilettm.ViewEvent.Partials.CheckoutFooter') -@endsection \ No newline at end of file diff --git a/resources/views/Bilettm/ViewEvent/EventPageViewOrder.blade.php b/resources/views/Bilettm/ViewEvent/EventPageViewOrder.blade.php deleted file mode 100644 index e1e772b5..00000000 --- a/resources/views/Bilettm/ViewEvent/EventPageViewOrder.blade.php +++ /dev/null @@ -1,10 +0,0 @@ -@extends('Bilettm.Layouts.BilettmLayout') - -@section('content') - - @include('Public.ViewEvent.Partials.EventHeaderSection') - @include('Public.ViewEvent.Partials.EventShareSection') - @include('Public.ViewEvent.Partials.EventViewOrderSection') - @include('Public.ViewEvent.Partials.EventFooterSection') - -@stop diff --git a/resources/views/Bilettm/ViewEvent/Partials/CheckoutFooter.blade.php b/resources/views/Bilettm/ViewEvent/Partials/CheckoutFooter.blade.php deleted file mode 100644 index 4ddf55c4..00000000 --- a/resources/views/Bilettm/ViewEvent/Partials/CheckoutFooter.blade.php +++ /dev/null @@ -1,7 +0,0 @@ - -
-

+
+

@lang("Public_ViewEvent.order_details")

-
- @lang("Public_ViewEvent.below_order_details_header") -
-
-
-
-

- - @lang("Public_ViewEvent.order_summary") -

-
- -
- - @foreach($tickets as $ticket) - - - - - @endforeach -
{{{$ticket['ticket']['title']}}} X {{$ticket['qty']}} - @if((int)ceil($ticket['full_price']) === 0) - @lang("Public_ViewEvent.free") - @else - {{ money($ticket['full_price'], $event->currency) }} - @endif -
-
- @if($order_total > 0) - - @endif - -
-
- {!! @trans("Public_ViewEvent.time", ["time"=>""]) !!} -
-
-
-
+
+
{!! Form::open(['url' => route('postCreateOrder', ['event_id' => $event->id]), 'class' => ($order_requires_payment && @$payment_gateway->is_on_site) ? 'ajax payment-form' : 'ajax', 'data-stripe-pub-key' => isset($account_payment_gateway->config['publishableKey']) ? $account_payment_gateway->config['publishableKey'] : '']) !!} {!! Form::hidden('event_id', $event->id) !!}

@lang("Public_ViewEvent.your_information")

-
-
+
+
{!! Form::label("order_first_name", trans("Public_ViewEvent.first_name")) !!} {!! Form::text("order_first_name", null, ['required' => 'required', 'class' => 'form-control']) !!}
-
+
{!! Form::label("order_last_name", trans("Public_ViewEvent.last_name")) !!} {!! Form::text("order_last_name", null, ['required' => 'required', 'class' => 'form-control']) !!} @@ -79,7 +28,7 @@
-
+
{!! Form::label("order_email", trans("Public_ViewEvent.email")) !!} @@ -87,80 +36,13 @@
- {{--
 
--}} - {{--
--}} - {{--
--}} - {{--
--}} - {{--
--}} - {{--{!! Form::checkbox('is_business', 1, null, ['data-toggle' => 'toggle', 'id' => 'is_business']) !!}--}} - {{--{!! Form::label('is_business', trans("Public_ViewEvent.is_business"), ['class' => 'control-label']) !!}--}} - {{--
--}} - {{--
--}} - {{--
--}} - {{--
--}} - {{--
 
--}} - -
 
-
+

@lang("Public_ViewEvent.ticket_holder_information")

@@ -169,14 +51,14 @@ ?> @foreach($tickets as $ticket) @for($i=0; $i<=$ticket['qty']-1; $i++) -
+
-
-

+
+

{{$ticket['ticket']['title']}}: @lang("Public_ViewEvent.ticket_holder_n", ["n"=>$i+1])

-
+
@@ -295,13 +177,56 @@ @endif {!! Form::hidden('is_embedded', $is_embedded) !!} - {!! Form::submit(trans("Public_ViewEvent.checkout_submit"), ['class' => 'btn btn-lg btn-success card-submit', 'style' => 'width:100%;']) !!} + {!! Form::submit(trans("Public_ViewEvent.checkout_submit"), ['class' => 'btn btn-lg btn-danger card-submit']) !!}
+
+
+ +
+

+ + @lang("Public_ViewEvent.order_summary") +

+ + @foreach($tickets as $ticket) + + + + + @endforeach +
{{{$ticket['ticket']['title']}}} X {{$ticket['qty']}} + @if((int)ceil($ticket['full_price']) === 0) + @lang("Public_ViewEvent.free") + @else + {{ money($ticket['full_price'], $event->currency) }} + @endif +
+
+ @if($order_total > 0) + + @endif + +
+
+ {!! @trans("Public_ViewEvent.time", ["time"=>""]) !!} +
+
+
-

-@if(session()->get('message')) - -@endif \ No newline at end of file diff --git a/resources/views/Bilettm/ViewEvent/Partials/FooterSection.blade.php b/resources/views/Bilettm/ViewEvent/Partials/FooterSection.blade.php new file mode 100644 index 00000000..7e254f84 --- /dev/null +++ b/resources/views/Bilettm/ViewEvent/Partials/FooterSection.blade.php @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/resources/views/Bilettm/ViewEvent/Partials/CheckoutHeader.blade.php b/resources/views/Bilettm/ViewEvent/Partials/HeaderSection.blade.php similarity index 92% rename from resources/views/Bilettm/ViewEvent/Partials/CheckoutHeader.blade.php rename to resources/views/Bilettm/ViewEvent/Partials/HeaderSection.blade.php index c48cbb23..394d3b81 100644 --- a/resources/views/Bilettm/ViewEvent/Partials/CheckoutHeader.blade.php +++ b/resources/views/Bilettm/ViewEvent/Partials/HeaderSection.blade.php @@ -2,7 +2,7 @@
-
+
{{$event->organiser->name}} @lang("Public_ViewEvent.presents")
@@ -11,7 +11,7 @@
-
+

{{$event->title}}

diff --git a/resources/views/Bilettm/ViewEvent/Partials/ViewOrderSection.blade.php b/resources/views/Bilettm/ViewEvent/Partials/ViewOrderSection.blade.php new file mode 100644 index 00000000..abfe0e80 --- /dev/null +++ b/resources/views/Bilettm/ViewEvent/Partials/ViewOrderSection.blade.php @@ -0,0 +1,243 @@ +
+
+
+ + + +

{{ @trans("Public_ViewEvent.thank_you_for_your_order") }}

+

+ {{ @trans("Public_ViewEvent.your") }} + + {{ @trans("Public_ViewEvent.tickets") }} {{ @trans("Public_ViewEvent.confirmation_email") }} +

+
+
+ +
+
+
+ + @if($event->post_order_display_message) +
+ {{ nl2br(e($event->post_order_display_message)) }} +
+ @endif + +
+
+
+ @lang("Public_ViewEvent.first_name")
{{$order->first_name}} +
+ +
+ @lang("Public_ViewEvent.last_name")
{{$order->last_name}} +
+ +
+ @lang("Public_ViewEvent.amount")
{{$order->event->currency_symbol}}{{number_format($order->total_amount, 2)}} + @if($event->organiser->charge_tax) + {{ $orderService->getVatFormattedInBrackets() }} + @endif +
+ +
+ @lang("Public_ViewEvent.reference")
{{$order->order_reference}} +
+ +
+ @lang("Public_ViewEvent.date")
{{$order->created_at->toDateTimeString()}} +
+ +
+ @lang("Public_ViewEvent.email")
{{$order->email}} +
+
+
+ + + @if(!$order->is_payment_received) +

+ @lang("Public_ViewEvent.payment_instructions") +

+
+ @lang("Public_ViewEvent.order_awaiting_payment") +
+
+ {!! Markdown::parse($event->offline_payment_instructions) !!} +
+ + @endif + +

+ @lang("Public_ViewEvent.order_items") +

+ +
+ + + + + + + + + + + + @foreach($order->orderItems as $order_item) + + + + + + + + @endforeach + + + + + + + + @if($event->organiser->charge_tax) + + + + + + + + @endif + + + + + + + + @if($order->is_refunded || $order->is_partially_refunded) + + + + + + + + + + + + + + + @endif + +
+ @lang("Public_ViewEvent.ticket") + + @lang("Public_ViewEvent.quantity_full") + + @lang("Public_ViewEvent.price") + + @lang("Public_ViewEvent.booking_fee") + + @lang("Public_ViewEvent.total") +
+ {{$order_item->title}} + + {{$order_item->quantity}} + + @if((int)ceil($order_item->unit_price) == 0) + @lang("Public_ViewEvent.free") + @else + {{money($order_item->unit_price, $order->event->currency)}} + @endif + + + @if((int)ceil($order_item->unit_price) == 0) + - + @else + {{money($order_item->unit_booking_fee, $order->event->currency)}} + @endif + + + @if((int)ceil($order_item->unit_price) == 0) + @lang("Public_ViewEvent.free") + @else + {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}} + @endif + +
+ + + + @lang("Public_ViewEvent.sub_total") + + {{ $orderService->getOrderTotalWithBookingFee(true) }} +
+ + + + {{$event->organiser->tax_name}} + + {{ $orderService->getTaxAmount(true) }} +
+ + + + Total + + {{ $orderService->getGrandTotal(true) }} +
+ + + + @lang("Public_ViewEvent.refunded_amount") + + {{money($order->amount_refunded, $order->event->currency)}} +
+ + + + @lang("Public_ViewEvent.total") + + {{money($order->total_amount - $order->amount_refunded, $order->event->currency)}} +
+ +
+ +

+ @lang("Public_ViewEvent.order_attendees") +

+ +
+ + + @foreach($order->attendees as $attendee) + + + + + + @endforeach + +
+ {{$attendee->first_name}} + {{$attendee->last_name}} + ({{$attendee->email}}) + + {{{$attendee->ticket->title}}} + + @if($attendee->is_cancelled) + @lang("Public_ViewEvent.attendee_cancelled") + @endif +
+
+ + +
+
+
+
\ No newline at end of file diff --git a/resources/views/Bilettm/ViewEvent/ViewOrderPage.blade.php b/resources/views/Bilettm/ViewEvent/ViewOrderPage.blade.php new file mode 100644 index 00000000..4da810c9 --- /dev/null +++ b/resources/views/Bilettm/ViewEvent/ViewOrderPage.blade.php @@ -0,0 +1,10 @@ +@extends('Bilettm.Layouts.BilettmLayout') + +@section('content') + + @include('Bilettm.ViewEvent.Partials.HeaderSection') + {{--@include('Public.ViewEvent.Partials.EventShareSection')--}} + @include('Bilettm.ViewEvent.Partials.ViewOrderSection') + @include('Bilettm.ViewEvent.Partials.FooterSection') + +@stop diff --git a/resources/views/vendor/pagination/events_pagination.blade.php b/resources/views/vendor/pagination/events_pagination.blade.php new file mode 100644 index 00000000..15182209 --- /dev/null +++ b/resources/views/vendor/pagination/events_pagination.blade.php @@ -0,0 +1,8 @@ +@if ($paginator->hasPages()) +
+ Видно на странице - {{$events->count()}}/{{$events->total()}} +
+ + +
+
\ No newline at end of file diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 0040dd1a..babf701a 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -21,7 +21,7 @@ Breadcrumbs::for('category', function ($trail, $category){ }); Breadcrumbs::for('event',function($trail, $event){ - $trail->parent('category', $event->category); + $trail->parent('category', $event->mainCategory); $trail->push($event->title,$event->event_url); }); From f50d17d9948b05433be263322ad43c42d36a6957 Mon Sep 17 00:00:00 2001 From: merdiano Date: Mon, 23 Sep 2019 19:07:27 +0500 Subject: [PATCH 2/3] date time picker fix --- app/Helpers/helpers.php | 2 +- .../Controllers/EventCheckoutController.php | 2 +- app/Http/Controllers/PublicController.php | 2 +- app/Models/Event.php | 3 +- public/assets/javascript/backend.js | 8 +- .../assets/stylesheet/styles.e-commerce.css | 90 +++++++++++++++++++ public/vendor/datetimepicker/.bower.json | 33 +++---- public/vendor/datetimepicker/Gruntfile.js | 43 +++++---- public/vendor/datetimepicker/LICENSE | 2 +- public/vendor/datetimepicker/README.md | 28 +++--- .../dist/DateTimePicker-Zepto.js | 2 +- .../dist/DateTimePicker-ltie9.css | 2 +- .../dist/DateTimePicker-ltie9.js | 2 +- .../dist/DateTimePicker-ltie9.min.css | 14 +-- .../datetimepicker/dist/DateTimePicker.css | 2 +- .../datetimepicker/dist/DateTimePicker.js | 6 +- .../dist/DateTimePicker.min.css | 14 +-- .../datetimepicker/dist/DateTimePicker.min.js | 6 +- .../dist/DateTimePicker_iOS_fix.js | 2 +- .../dist/i18n/DateTimePicker-i18n-cs.js | 2 +- .../dist/i18n/DateTimePicker-i18n-de.js | 2 +- .../dist/i18n/DateTimePicker-i18n-en.js | 2 +- .../dist/i18n/DateTimePicker-i18n-es.js | 2 +- .../dist/i18n/DateTimePicker-i18n-fr.js | 2 +- .../dist/i18n/DateTimePicker-i18n-it.js | 2 +- .../dist/i18n/DateTimePicker-i18n-ja.js | 2 +- .../dist/i18n/DateTimePicker-i18n-nb.js | 2 +- .../dist/i18n/DateTimePicker-i18n-nl.js | 2 +- .../dist/i18n/DateTimePicker-i18n-ro.js | 2 +- .../dist/i18n/DateTimePicker-i18n-ru.js | 2 +- .../dist/i18n/DateTimePicker-i18n-uk.js | 2 +- .../dist/i18n/DateTimePicker-i18n-zh-TW.js | 2 +- .../dist/i18n/DateTimePicker-i18n.js | 2 +- .../dist/i18n/DatetimePicker-i18n-zh-CN.js | 2 +- .../src/DateTimePicker-Zepto.js | 2 +- .../src/DateTimePicker-ltie9.css | 2 +- .../src/DateTimePicker-ltie9.js | 2 +- .../datetimepicker/src/DateTimePicker.css | 2 +- .../datetimepicker/src/DateTimePicker.js | 6 +- .../src/DateTimePicker_iOS_fix.js | 2 +- .../src/i18n/DateTimePicker-i18n-cs.js | 2 +- .../src/i18n/DateTimePicker-i18n-de.js | 2 +- .../src/i18n/DateTimePicker-i18n-en.js | 2 +- .../src/i18n/DateTimePicker-i18n-es.js | 2 +- .../src/i18n/DateTimePicker-i18n-fr.js | 2 +- .../src/i18n/DateTimePicker-i18n-it.js | 2 +- .../src/i18n/DateTimePicker-i18n-ja.js | 2 +- .../src/i18n/DateTimePicker-i18n-nb.js | 2 +- .../src/i18n/DateTimePicker-i18n-nl.js | 2 +- .../src/i18n/DateTimePicker-i18n-ro.js | 2 +- .../src/i18n/DateTimePicker-i18n-ru.js | 2 +- .../src/i18n/DateTimePicker-i18n-uk.js | 2 +- .../src/i18n/DateTimePicker-i18n-zh-TW.js | 2 +- .../src/i18n/DateTimePicker-i18n.js | 2 +- .../src/i18n/DatetimePicker-i18n-zh-CN.js | 2 +- .../Bilettm/Layouts/BilettmLayout.blade.php | 7 +- .../Bilettm/Partials/EventItem.blade.php | 4 +- .../Bilettm/Partials/PublicFooter.blade.php | 22 ++--- 58 files changed, 222 insertions(+), 150 deletions(-) diff --git a/app/Helpers/helpers.php b/app/Helpers/helpers.php index b9149f4f..53b2f85a 100644 --- a/app/Helpers/helpers.php +++ b/app/Helpers/helpers.php @@ -11,7 +11,7 @@ if (!function_exists('money')) { function money($amount, \App\Models\Currency $currency = null) { if(!$currency){ - return number_format($amount,0,'.',',').' manat'; + return number_format($amount,2,'.',',').' manat'; } return $currency->symbol_left . number_format($amount, $currency->decimal_place, $currency->decimal_point, $currency->thousand_point) . $currency->symbol_right; diff --git a/app/Http/Controllers/EventCheckoutController.php b/app/Http/Controllers/EventCheckoutController.php index 4c85da0d..b11959d3 100644 --- a/app/Http/Controllers/EventCheckoutController.php +++ b/app/Http/Controllers/EventCheckoutController.php @@ -381,7 +381,7 @@ class EventCheckoutController extends Controller $orderService->calculateFinalCosts(); $secondsToExpire = Carbon::now()->diffInSeconds($order_session['expires']); $transaction_data += [ - 'amount' => $orderService->getGrandTotal()*1,//todo multiply by 100 + 'amount' => $orderService->getGrandTotal()*100,//multiply by 100 to obtain tenge 'currency' => 934, 'sessionTimeoutSecs' => $secondsToExpire, 'description' => 'Order for customer: ' . $request->get('order_email'), diff --git a/app/Http/Controllers/PublicController.php b/app/Http/Controllers/PublicController.php index 5becf13b..26ff429f 100644 --- a/app/Http/Controllers/PublicController.php +++ b/app/Http/Controllers/PublicController.php @@ -75,7 +75,7 @@ class PublicController extends Controller $e_query->whereDate('start_date','>=',Carbon::parse($date)); } - $events = $e_query->with('images')->paginate(1); + $events = $e_query->with('images')->paginate(5); $navigation = $nav_query->get(); // dd($events); return view('Bilettm.Public.EventsPage')->with([ diff --git a/app/Models/Event.php b/app/Models/Event.php index fc11d761..f570004f 100644 --- a/app/Models/Event.php +++ b/app/Models/Event.php @@ -452,7 +452,8 @@ ICSTemplate; } public function getSeansCount(){ - return $this->tickets()->distinct()->orderBy('ticket_date')->count(); + $seans = $this->tickets()->distinct()->orderBy('ticket_date')->count(); + return $seans != 0 ? $seans. ' seansa' : ''; //todo get from translate } /** * @param integer $accessCodeId diff --git a/public/assets/javascript/backend.js b/public/assets/javascript/backend.js index d2df8aee..636356d9 100644 --- a/public/assets/javascript/backend.js +++ b/public/assets/javascript/backend.js @@ -6694,6 +6694,7 @@ $.cf = { oDTP._setTimeFormatArray(); // Set TimeFormatArray oDTP._setDateTimeFormatArray(); // Set DateTimeFormatArray + console.log($(oDTP.element).data('parentelement') + " " + $(oDTP.element).attr('data-parentelement')); if($(oDTP.element).data('parentelement') !== undefined) { oDTP.settings.parentElement = $(oDTP.element).data('parentelement'); @@ -7911,7 +7912,8 @@ $.cf = { { $(document).on("click.DateTimePicker", function(e) { - oDTP._hidePicker(""); + if (oDTP.oData.bElemFocused) + oDTP._hidePicker(""); }); } @@ -9628,6 +9630,10 @@ $.cf = { showMessage(data.message); } + if (typeof data.redirectUrl !== 'undefined') { + window.location.href = data.redirectUrl; + } + switch (data.status) { case 'success': $('#' + deleteType + '_' + deleteId).fadeOut(); diff --git a/public/assets/stylesheet/styles.e-commerce.css b/public/assets/stylesheet/styles.e-commerce.css index 2464a3eb..1dd19181 100644 --- a/public/assets/stylesheet/styles.e-commerce.css +++ b/public/assets/stylesheet/styles.e-commerce.css @@ -35450,3 +35450,93 @@ p { font-size: 9px; } /*# sourceMappingURL=styles.e-commerce.css.map */ +.humane, +.humane-flatty { + position: fixed; + -moz-transition: all 0.4s ease-in-out; + -webkit-transition: all 0.4s ease-in-out; + -ms-transition: all 0.4s ease-in-out; + -o-transition: all 0.4s ease-in-out; + transition: all 0.4s ease-in-out; + z-index: 100000; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); +} +.humane, +.humane-flatty { + font-family: Helvetica Neue, Helvetica, san-serif; + font-size: 16px; + top: 0; + left: 30%; + opacity: 0; + width: 40%; + color: #444; + padding: 10px; + text-align: center; + background-color: #fff; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -moz-border-radius-bottomright: 3px; + -moz-border-radius-bottomleft: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.5); + box-shadow: 0 1px 2px rgba(0,0,0,0.5); + -moz-transform: translateY(-100px); + -webkit-transform: translateY(-100px); + -ms-transform: translateY(-100px); + -o-transform: translateY(-100px); + transform: translateY(-100px); +} +.humane p, +.humane-flatty p, +.humane ul, +.humane-flatty ul { + margin: 0; + padding: 0; +} +.humane ul, +.humane-flatty ul { + list-style: none; +} +.humane.humane-flatty-info, +.humane-flatty.humane-flatty-info { + background-color: #3498db; + color: #FFF; +} +.humane.humane-flatty-success, +.humane-flatty.humane-flatty-success { + background-color: #18bc9c; + color: #FFF; +} +.humane.humane-flatty-error, +.humane-flatty.humane-flatty-error { + background-color: #e74c3c; + color: #FFF; +} +.humane-animate, +.humane-flatty.humane-flatty-animate { + opacity: 1; + -moz-transform: translateY(0); + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); +} +.humane-animate:hover, +.humane-flatty.humane-flatty-animate:hover { + opacity: 0.7; +} +.humane-js-animate, +.humane-flatty.humane-flatty-js-animate { + opacity: 1; + -moz-transform: translateY(0); + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); +} +.humane-js-animate:hover, +.humane-flatty.humane-flatty-js-animate:hover { + opacity: 0.7; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70); +} \ No newline at end of file diff --git a/public/vendor/datetimepicker/.bower.json b/public/vendor/datetimepicker/.bower.json index be49394f..389cae81 100644 --- a/public/vendor/datetimepicker/.bower.json +++ b/public/vendor/datetimepicker/.bower.json @@ -1,6 +1,8 @@ { "name": "datetimepicker", + "description": "Responsive flat design jQuery DateTime Picker plugin for Web & Mobile", + "keywords": [ "date", "time", @@ -12,37 +14,30 @@ "timepicker", "input" ], + "version": "0.1.38", + "homepage": "https://nehakadam.github.io/DateTimePicker/", - "main": [ - "dist/DateTimePicker.min.js", - "dist/DateTimePicker.min.css" - ], + + "main": ["dist/DateTimePicker.min.js", "dist/DateTimePicker.min.css"], + "authors": [ - { - "name": "nehakadam" - } + {"name": "nehakadam"} ], + "repository": { "type": "git", "url": "git://github.com:nehakadam/DateTimePicker.git" }, + "devDependencies": { "jquery": ">=1.0.0" }, + "ignore": [ "**/.*", "node_modules", "package.json" - ], - "_release": "0.1.38", - "_resolution": { - "type": "version", - "tag": "0.1.38", - "commit": "36d272ac90c93ef45c5b8b228a517a932a0778bd" - }, - "_source": "https://github.com/nehakadam/DateTimePicker.git", - "_target": "^0.1.38", - "_originalSource": "flat-datetimepicker", - "_direct": true -} \ No newline at end of file + ] + +} diff --git a/public/vendor/datetimepicker/Gruntfile.js b/public/vendor/datetimepicker/Gruntfile.js index a6d13e57..abe5ff89 100644 --- a/public/vendor/datetimepicker/Gruntfile.js +++ b/public/vendor/datetimepicker/Gruntfile.js @@ -3,7 +3,7 @@ module.exports = function(grunt) var sBanner = '/* ----------------------------------------------------------------------------- ' + '\n\n jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile' + '\n Version <%= pkg.version %>' + - '\n Copyright (c)<%= grunt.template.today("yyyy") %> Lajpat Shah' + + '\n Copyright (c)2014-<%= grunt.template.today("yyyy") %> Lajpat Shah' + '\n Contributors : https://github.com/nehakadam/DateTimePicker/contributors' + '\n Repository : https://github.com/nehakadam/DateTimePicker' + '\n Documentation : https://nehakadam.github.io/DateTimePicker' + @@ -23,12 +23,12 @@ module.exports = function(grunt) options: { separator: '\n\n\n\n', - stripBanners: true, + stripBanners: true, banner: sBanner }, - src: ['src/i18n/*', '!src/i18n/DateTimePicker-i18n.js'], - dest: 'src/i18n/DateTimePicker-i18n.js', + src: ['src/i18n/*', '!src/i18n/DateTimePicker-i18n.js'], + dest: 'src/i18n/DateTimePicker-i18n.js', nonull: true } }, @@ -59,8 +59,8 @@ module.exports = function(grunt) { banner: sBanner, compress: { - drop_console: true - } + drop_console: true + } }, build: { @@ -98,12 +98,10 @@ module.exports = function(grunt) options: { strict: false, - curly: false, - - eqeqeq: true, - eqnull: true, - browser: true, + eqeqeq: true, + eqnull: true, + browser: true, devel: true, //unused: true, //undef: true, @@ -111,14 +109,14 @@ module.exports = function(grunt) globals: { $: false, - jQuery: false, - define: false, - require: false, - module: false, - DateTimePicker: true - }, + jQuery: false, + define: false, + require: false, + module: false, + DateTimePicker: true + }, - force: true + force: true } }, @@ -147,8 +145,9 @@ module.exports = function(grunt) grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-csslint'); - // Default task(s). - grunt.registerTask('default', ['uglify', 'cssmin', 'copy']); - grunt.registerTask('lang', ['concat:lang', 'copy:lang']); - grunt.registerTask('lint', ['jshint', 'csslint']); + // Default task(s). + // + grunt.registerTask('default', ['uglify', 'cssmin', 'copy']); + grunt.registerTask('lang', ['concat:lang', 'copy:lang']); + grunt.registerTask('lint', ['jshint', 'csslint']); }; \ No newline at end of file diff --git a/public/vendor/datetimepicker/LICENSE b/public/vendor/datetimepicker/LICENSE index e2787d87..9e667895 100644 --- a/public/vendor/datetimepicker/LICENSE +++ b/public/vendor/datetimepicker/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2017 Lajpat Shah +Copyright (c) 2014-2019 Lajpat Shah Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/public/vendor/datetimepicker/README.md b/public/vendor/datetimepicker/README.md index a7aa7a4a..b741cb8e 100644 --- a/public/vendor/datetimepicker/README.md +++ b/public/vendor/datetimepicker/README.md @@ -11,7 +11,7 @@ Users can change values using +/- buttons or type values directly into the textb For web, picker can be binded relative to reference element, were it will appear at the bottom of the element. For mobile, the picker can appear as a dialog box covering entire window. -##Browser Support +## Browser Support - Chrome, Firefox, Safari, Opera, IE 6+ - Android 2.3+, iOS 6+, Windows Phone 8 @@ -20,7 +20,7 @@ For web, picker can be binded relative to reference element, were it will appear For demo & api documentation visit [Plugin Page](http://nehakadam.github.io/DateTimePicker/) -##Build System +## Build System - Install devDependencies listed in "package.json" @@ -36,7 +36,7 @@ Tasks configured in "Gruntfile.js" - Minify "src/DateTimePicker.css" to "dist/DateTimePicker.min.css" -##Installations +## Installations - npm @@ -44,35 +44,39 @@ Tasks configured in "Gruntfile.js" - bower - `bower install curioussolutions-datetimepicker` + `bower install flat-datetimepicker` -##CDN +## CDN DateTimePicker is hosted on [jsDelivr](http://www.jsdelivr.com). Files - Latest ``` - - + + ``` Files - Particular Version ``` - - + + ``` -##Authors +## Authors [Neha Kadam](https://github.com/nehakadam): Developer Special Thanks: - [Jean-Christophe Hoelt](https://github.com/j3k0) - NPM packaging. Few customization options. - [All Contributors](https://github.com/nehakadam/DateTimePicker/contributors) -Copyright 2017 [Lajpat Shah](https://github.com/lajpatshah) + +Copyright 2014-2019 [Lajpat Shah](https://github.com/lajpatshah) -##License +**I can not actively maintain or reply quickly due to time constraints, please consider this point before using plugin.** + + +## License Licensed under the MIT License diff --git a/public/vendor/datetimepicker/dist/DateTimePicker-Zepto.js b/public/vendor/datetimepicker/dist/DateTimePicker-Zepto.js index 636fd727..0e6cd7fb 100755 --- a/public/vendor/datetimepicker/dist/DateTimePicker-Zepto.js +++ b/public/vendor/datetimepicker/dist/DateTimePicker-Zepto.js @@ -2,7 +2,7 @@ jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile Version 0.1.17 - Copyright (c)2017 Lajpat Shah + Copyright (c)2014-2019 Lajpat Shah Contributors : https://github.com/nehakadam/DateTimePicker/contributors Repository : https://nehakadam.github.io/DateTimePicker Documentation : https://github.com/nehakadam/DateTimePicker diff --git a/public/vendor/datetimepicker/dist/DateTimePicker-ltie9.css b/public/vendor/datetimepicker/dist/DateTimePicker-ltie9.css index 7031dc78..71433806 100755 --- a/public/vendor/datetimepicker/dist/DateTimePicker-ltie9.css +++ b/public/vendor/datetimepicker/dist/DateTimePicker-ltie9.css @@ -2,7 +2,7 @@ jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile Version 0.1.38 - Copyright (c)2017 Lajpat Shah + Copyright (c)2014-2019 Lajpat Shah Contributors : https://github.com/nehakadam/DateTimePicker/contributors Repository : https://github.com/nehakadam/DateTimePicker Documentation : https://nehakadam.github.io/DateTimePicker diff --git a/public/vendor/datetimepicker/dist/DateTimePicker-ltie9.js b/public/vendor/datetimepicker/dist/DateTimePicker-ltie9.js index 24ded4ef..10032202 100755 --- a/public/vendor/datetimepicker/dist/DateTimePicker-ltie9.js +++ b/public/vendor/datetimepicker/dist/DateTimePicker-ltie9.js @@ -2,7 +2,7 @@ jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile Version 0.1.38 - Copyright (c)2017 Lajpat Shah + Copyright (c)2014-2019 Lajpat Shah Contributors : https://github.com/nehakadam/DateTimePicker/contributors Repository : https://github.com/nehakadam/DateTimePicker Documentation : https://nehakadam.github.io/DateTimePicker diff --git a/public/vendor/datetimepicker/dist/DateTimePicker-ltie9.min.css b/public/vendor/datetimepicker/dist/DateTimePicker-ltie9.min.css index a37e6acd..2b062fbf 100644 --- a/public/vendor/datetimepicker/dist/DateTimePicker-ltie9.min.css +++ b/public/vendor/datetimepicker/dist/DateTimePicker-ltie9.min.css @@ -1,13 +1 @@ -/* ----------------------------------------------------------------------------- - - jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile - Version 0.1.38 - Copyright (c)2017 Lajpat Shah - Contributors : https://github.com/nehakadam/DateTimePicker/contributors - Repository : https://github.com/nehakadam/DateTimePicker - Documentation : https://nehakadam.github.io/DateTimePicker - - ----------------------------------------------------------------------------- */ - - -.dtpicker-cont{top:25%}.dtpicker-overlay{-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#20000000, endColorstr=#20000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#20000000, endColorstr=#20000000);zoom:1!important} \ No newline at end of file +.dtpicker-cont{top:25%}.dtpicker-overlay{zoom:1!important} \ No newline at end of file diff --git a/public/vendor/datetimepicker/dist/DateTimePicker.css b/public/vendor/datetimepicker/dist/DateTimePicker.css index af0338fd..afbe65f1 100755 --- a/public/vendor/datetimepicker/dist/DateTimePicker.css +++ b/public/vendor/datetimepicker/dist/DateTimePicker.css @@ -2,7 +2,7 @@ jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile Version 0.1.38 - Copyright (c)2017 Lajpat Shah + Copyright (c)2014-2019 Lajpat Shah Contributors : https://github.com/nehakadam/DateTimePicker/contributors Repository : https://github.com/nehakadam/DateTimePicker Documentation : https://nehakadam.github.io/DateTimePicker diff --git a/public/vendor/datetimepicker/dist/DateTimePicker.js b/public/vendor/datetimepicker/dist/DateTimePicker.js index 09c314be..e8b5dcdb 100644 --- a/public/vendor/datetimepicker/dist/DateTimePicker.js +++ b/public/vendor/datetimepicker/dist/DateTimePicker.js @@ -2,7 +2,7 @@ jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile Version 0.1.38 - Copyright (c)2017 Lajpat Shah + Copyright (c)2014-2019 Lajpat Shah Contributors : https://github.com/nehakadam/DateTimePicker/contributors Repository : https://github.com/nehakadam/DateTimePicker Documentation : https://nehakadam.github.io/DateTimePicker @@ -300,6 +300,7 @@ $.cf = { oDTP._setTimeFormatArray(); // Set TimeFormatArray oDTP._setDateTimeFormatArray(); // Set DateTimeFormatArray + console.log($(oDTP.element).data('parentelement') + " " + $(oDTP.element).attr('data-parentelement')); if($(oDTP.element).data('parentelement') !== undefined) { oDTP.settings.parentElement = $(oDTP.element).data('parentelement'); @@ -1517,7 +1518,8 @@ $.cf = { { $(document).on("click.DateTimePicker", function(e) { - oDTP._hidePicker(""); + if (oDTP.oData.bElemFocused) + oDTP._hidePicker(""); }); } diff --git a/public/vendor/datetimepicker/dist/DateTimePicker.min.css b/public/vendor/datetimepicker/dist/DateTimePicker.min.css index c70fc9bf..fd55da6e 100644 --- a/public/vendor/datetimepicker/dist/DateTimePicker.min.css +++ b/public/vendor/datetimepicker/dist/DateTimePicker.min.css @@ -1,13 +1 @@ -/* ----------------------------------------------------------------------------- - - jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile - Version 0.1.38 - Copyright (c)2017 Lajpat Shah - Contributors : https://github.com/nehakadam/DateTimePicker/contributors - Repository : https://github.com/nehakadam/DateTimePicker - Documentation : https://nehakadam.github.io/DateTimePicker - - ----------------------------------------------------------------------------- */ - - -.dtpicker-overlay{z-index:2000;display:none;min-width:300px;background:rgba(0,0,0,.2);font-size:12px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtpicker-mobile{position:fixed;top:0;left:0;width:100%;height:100%}.dtpicker-overlay *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-ms-box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.dtpicker-bg{width:100%;height:100%;font-family:Arial}.dtpicker-cont{border:1px solid #ECF0F1}.dtpicker-mobile .dtpicker-cont{position:relative;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border:0}.dtpicker-content{margin:0 auto;padding:1em 0;max-width:500px;background:#fff}.dtpicker-mobile .dtpicker-content{width:97%}.dtpicker-subcontent{position:relative}.dtpicker-header{margin:.2em 1em}.dtpicker-header .dtpicker-title{color:#2980B9;text-align:center;font-size:1.1em}.dtpicker-header .dtpicker-close{position:absolute;top:-.7em;right:.3em;padding:.5em .5em 1em 1em;color:#FF3B30;font-size:1.5em;cursor:pointer}.dtpicker-header .dtpicker-close:hover{color:#FF3B30}.dtpicker-header .dtpicker-value{padding:.8em .2em .2em;color:#FF3B30;text-align:center;font-size:1.4em}.dtpicker-components{overflow:hidden;margin:1em;font-size:1.3em}.dtpicker-components *{margin:0;padding:0}.dtpicker-components .dtpicker-compOutline{display:inline-block;float:left}.dtpicker-comp2{width:50%}.dtpicker-comp3{width:33.3%}.dtpicker-comp4{width:25%}.dtpicker-comp5{width:20%}.dtpicker-comp6{width:16.66%}.dtpicker-comp7{width:14.285%}.dtpicker-components .dtpicker-comp{margin:2%;text-align:center}.dtpicker-components .dtpicker-comp>*{display:block;height:30px;color:#2980B9;text-align:center;line-height:30px}.dtpicker-components .dtpicker-comp>:hover{color:#2980B9}.dtpicker-components .dtpicker-compButtonEnable{opacity:1}.dtpicker-components .dtpicker-compButtonDisable{opacity:.5}.dtpicker-components .dtpicker-compButton{background:#FFF;font-size:140%;cursor:pointer}.dtpicker-components .dtpicker-compValue{margin:.4em 0;width:100%;border:0;background:#FFF;font-size:100%;-webkit-appearance:none;-moz-appearance:none}.dtpicker-overlay .dtpicker-compValue:focus{outline:0;background:#F2FCFF}.dtpicker-buttonCont{overflow:hidden;margin:.2em 1em}.dtpicker-buttonCont .dtpicker-button{display:block;padding:.6em 0;width:47%;background:#FF3B30;color:#FFF;text-align:center;font-size:1.3em;cursor:pointer}.dtpicker-buttonCont .dtpicker-button:hover{color:#FFF}.dtpicker-singleButton .dtpicker-button{margin:.2em auto}.dtpicker-twoButtons .dtpicker-buttonSet{float:left}.dtpicker-twoButtons .dtpicker-buttonClear{float:right} \ No newline at end of file +.dtpicker-overlay{z-index:2000;display:none;min-width:300px;background:rgba(0,0,0,.2);font-size:12px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtpicker-mobile{position:fixed;top:0;left:0;width:100%;height:100%}.dtpicker-overlay *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-ms-box-sizing:border-box;-webkit-tap-highlight-color:transparent}.dtpicker-bg{width:100%;height:100%;font-family:Arial}.dtpicker-cont{border:1px solid #ecf0f1}.dtpicker-mobile .dtpicker-cont{position:relative;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border:none}.dtpicker-content{margin:0 auto;padding:1em 0;max-width:500px;background:#fff}.dtpicker-mobile .dtpicker-content{width:97%}.dtpicker-subcontent{position:relative}.dtpicker-header{margin:.2em 1em}.dtpicker-header .dtpicker-title{color:#2980b9;text-align:center;font-size:1.1em}.dtpicker-header .dtpicker-close{position:absolute;top:-.7em;right:.3em;padding:.5em .5em 1em 1em;color:#ff3b30;font-size:1.5em;cursor:pointer}.dtpicker-header .dtpicker-close:hover{color:#ff3b30}.dtpicker-header .dtpicker-value{padding:.8em .2em .2em .2em;color:#ff3b30;text-align:center;font-size:1.4em}.dtpicker-components{overflow:hidden;margin:1em 1em;font-size:1.3em}.dtpicker-components *{margin:0;padding:0}.dtpicker-components .dtpicker-compOutline{display:inline-block;float:left}.dtpicker-comp2{width:50%}.dtpicker-comp3{width:33.3%}.dtpicker-comp4{width:25%}.dtpicker-comp5{width:20%}.dtpicker-comp6{width:16.66%}.dtpicker-comp7{width:14.285%}.dtpicker-components .dtpicker-comp{margin:2%;text-align:center}.dtpicker-components .dtpicker-comp>*{display:block;height:30px;color:#2980b9;text-align:center;line-height:30px}.dtpicker-components .dtpicker-comp>:hover{color:#2980b9}.dtpicker-components .dtpicker-compButtonEnable{opacity:1}.dtpicker-components .dtpicker-compButtonDisable{opacity:.5}.dtpicker-components .dtpicker-compButton{background:#fff;font-size:140%;cursor:pointer}.dtpicker-components .dtpicker-compValue{margin:.4em 0;width:100%;border:none;background:#fff;font-size:100%;-webkit-appearance:none;-moz-appearance:none}.dtpicker-overlay .dtpicker-compValue:focus{outline:0;background:#f2fcff}.dtpicker-buttonCont{overflow:hidden;margin:.2em 1em}.dtpicker-buttonCont .dtpicker-button{display:block;padding:.6em 0;width:47%;background:#ff3b30;color:#fff;text-align:center;font-size:1.3em;cursor:pointer}.dtpicker-buttonCont .dtpicker-button:hover{color:#fff}.dtpicker-singleButton .dtpicker-button{margin:.2em auto}.dtpicker-twoButtons .dtpicker-buttonSet{float:left}.dtpicker-twoButtons .dtpicker-buttonClear{float:right} \ No newline at end of file diff --git a/public/vendor/datetimepicker/dist/DateTimePicker.min.js b/public/vendor/datetimepicker/dist/DateTimePicker.min.js index c16c997c..db11d139 100644 --- a/public/vendor/datetimepicker/dist/DateTimePicker.min.js +++ b/public/vendor/datetimepicker/dist/DateTimePicker.min.js @@ -2,12 +2,12 @@ jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile Version 0.1.38 - Copyright (c)2017 Lajpat Shah + Copyright (c)2014-2019 Lajpat Shah Contributors : https://github.com/nehakadam/DateTimePicker/contributors Repository : https://github.com/nehakadam/DateTimePicker Documentation : https://nehakadam.github.io/DateTimePicker ----------------------------------------------------------------------------- */ -Object.keys||(Object.keys=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b}),$.DateTimePicker=$.DateTimePicker||{name:"DateTimePicker",i18n:{},defaults:{mode:"date",defaultDate:null,dateSeparator:"-",timeSeparator:":",timeMeridiemSeparator:" ",dateTimeSeparator:" ",monthYearSeparator:" ",dateTimeFormat:"dd-MM-yyyy HH:mm",dateFormat:"dd-MM-yyyy",timeFormat:"HH:mm",maxDate:null,minDate:null,maxTime:null,minTime:null,maxDateTime:null,minDateTime:null,shortDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],fullDayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],fullMonthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],labels:null,minuteInterval:1,roundOffMinutes:!0,secondsInterval:1,roundOffSeconds:!0,showHeader:!0,titleContentDate:"Set Date",titleContentTime:"Set Time",titleContentDateTime:"Set Date & Time",buttonsToDisplay:["HeaderCloseButton","SetButton","ClearButton"],setButtonContent:"Set",clearButtonContent:"Clear",incrementButtonContent:"+",decrementButtonContent:"-",setValueInTextboxOnEveryClick:!1,readonlyInputs:!1,animationDuration:400,touchHoldInterval:300,captureTouchHold:!1,mouseHoldInterval:50,captureMouseHold:!1,isPopup:!0,parentElement:"body",isInline:!1,inputElement:null,language:"",init:null,addEventHandlers:null,beforeShow:null,afterShow:null,beforeHide:null,afterHide:null,buttonClicked:null,settingValueOfElement:null,formatHumanDate:null,parseDateTimeString:null,formatDateTimeString:null},dataObject:{dCurrentDate:new Date,iCurrentDay:0,iCurrentMonth:0,iCurrentYear:0,iCurrentHour:0,iCurrentMinutes:0,iCurrentSeconds:0,sCurrentMeridiem:"",iMaxNumberOfDays:0,sDateFormat:"",sTimeFormat:"",sDateTimeFormat:"",dMinValue:null,dMaxValue:null,sArrInputDateFormats:[],sArrInputTimeFormats:[],sArrInputDateTimeFormats:[],bArrMatchFormat:[],bDateMode:!1,bTimeMode:!1,bDateTimeMode:!1,oInputElement:null,iTabIndex:0,bElemFocused:!1,bIs12Hour:!1,sTouchButton:null,iTouchStart:null,oTimeInterval:null,bIsTouchDevice:"ontouchstart"in document.documentElement}},$.cf={_isValid:function(a){return void 0!==a&&null!==a&&""!==a},_compare:function(a,b){var c=void 0!==a&&null!==a,d=void 0!==b&&null!==b;return!(!c||!d)&&a.toLowerCase()===b.toLowerCase()}},function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";function b(b,c){this.element=b;var d="";d=a.cf._isValid(c)&&a.cf._isValid(c.language)?c.language:a.DateTimePicker.defaults.language,this.settings=a.extend({},a.DateTimePicker.defaults,a.DateTimePicker.i18n[d],c),this.options=c,this.oData=a.extend({},a.DateTimePicker.dataObject),this._defaults=a.DateTimePicker.defaults,this._name=a.DateTimePicker.name,this.init()}a.fn.DateTimePicker=function(c){var d,e,f=a(this).data(),g=f?Object.keys(f):[];if("string"!=typeof c)return this.each(function(){a.removeData(this,"plugin_DateTimePicker"),a.data(this,"plugin_DateTimePicker")||a.data(this,"plugin_DateTimePicker",new b(this,c))});if(a.cf._isValid(f))if("destroy"===c){if(g.length>0)for(d in g)if(e=g[d],e.search("plugin_DateTimePicker")!==-1){a(document).unbind("click.DateTimePicker keydown.DateTimePicker keyup.DateTimePicker"),a(this).children().remove(),a(this).removeData(),a(this).unbind(),a(this).removeClass("dtpicker-overlay dtpicker-mobile dtpicker-inline"),f=f[e];break}}else if("object"===c&&g.length>0)for(d in g)if(e=g[d],e.search("plugin_DateTimePicker")!==-1)return f[e]},b.prototype={init:function(){var b=this;b._setDateFormatArray(),b._setTimeFormatArray(),b._setDateTimeFormatArray(),void 0!==a(b.element).data("parentelement")&&(b.settings.parentElement=a(b.element).data("parentelement")),b.settings.isPopup&&!b.settings.isInline&&(b._createPicker(),a(b.element).addClass("dtpicker-mobile")),b.settings.isInline&&(b._createPicker(),b._showPicker(b.settings.inputElement)),b.settings.init&&b.settings.init.call(b),b._addEventHandlersForInput()},_setDateFormatArray:function(){var a=this;a.oData.sArrInputDateFormats=[];var b="";b="dd"+a.settings.dateSeparator+"MM"+a.settings.dateSeparator+"yyyy",a.oData.sArrInputDateFormats.push(b),b="MM"+a.settings.dateSeparator+"dd"+a.settings.dateSeparator+"yyyy",a.oData.sArrInputDateFormats.push(b),b="yyyy"+a.settings.dateSeparator+"MM"+a.settings.dateSeparator+"dd",a.oData.sArrInputDateFormats.push(b),b="dd"+a.settings.dateSeparator+"MMM"+a.settings.dateSeparator+"yyyy",a.oData.sArrInputDateFormats.push(b),b="MM"+a.settings.monthYearSeparator+"yyyy",a.oData.sArrInputDateFormats.push(b),b="MMM"+a.settings.monthYearSeparator+"yyyy",a.oData.sArrInputDateFormats.push(b),b="MMMM"+a.settings.monthYearSeparator+"yyyy",a.oData.sArrInputDateFormats.push(b),b="yyyy"+a.settings.monthYearSeparator+"MM",a.oData.sArrInputDateFormats.push(b)},_setTimeFormatArray:function(){var a=this;a.oData.sArrInputTimeFormats=[];var b="";b="hh"+a.settings.timeSeparator+"mm"+a.settings.timeSeparator+"ss"+a.settings.timeMeridiemSeparator+"AA",a.oData.sArrInputTimeFormats.push(b),b="HH"+a.settings.timeSeparator+"mm"+a.settings.timeSeparator+"ss",a.oData.sArrInputTimeFormats.push(b),b="hh"+a.settings.timeSeparator+"mm"+a.settings.timeMeridiemSeparator+"AA",a.oData.sArrInputTimeFormats.push(b),b="HH"+a.settings.timeSeparator+"mm",a.oData.sArrInputTimeFormats.push(b)},_setDateTimeFormatArray:function(){var a=this;a.oData.sArrInputDateTimeFormats=[];var b="",c="",d="";b="dd"+a.settings.dateSeparator+"MM"+a.settings.dateSeparator+"yyyy",c="HH"+a.settings.timeSeparator+"mm"+a.settings.timeSeparator+"ss",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="dd"+a.settings.dateSeparator+"MM"+a.settings.dateSeparator+"yyyy",c="hh"+a.settings.timeSeparator+"mm"+a.settings.timeSeparator+"ss"+a.settings.timeMeridiemSeparator+"AA",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="MM"+a.settings.dateSeparator+"dd"+a.settings.dateSeparator+"yyyy",c="HH"+a.settings.timeSeparator+"mm"+a.settings.timeSeparator+"ss",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="MM"+a.settings.dateSeparator+"dd"+a.settings.dateSeparator+"yyyy",c="hh"+a.settings.timeSeparator+"mm"+a.settings.timeSeparator+"ss"+a.settings.timeMeridiemSeparator+"AA",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="yyyy"+a.settings.dateSeparator+"MM"+a.settings.dateSeparator+"dd",c="HH"+a.settings.timeSeparator+"mm"+a.settings.timeSeparator+"ss",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="yyyy"+a.settings.dateSeparator+"MM"+a.settings.dateSeparator+"dd",c="hh"+a.settings.timeSeparator+"mm"+a.settings.timeSeparator+"ss"+a.settings.timeMeridiemSeparator+"AA",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="dd"+a.settings.dateSeparator+"MMM"+a.settings.dateSeparator+"yyyy",c="hh"+a.settings.timeSeparator+"mm"+a.settings.timeSeparator+"ss",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="dd"+a.settings.dateSeparator+"MMM"+a.settings.dateSeparator+"yyyy",c="hh"+a.settings.timeSeparator+"mm"+a.settings.timeSeparator+"ss"+a.settings.timeMeridiemSeparator+"AA",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="dd"+a.settings.dateSeparator+"MM"+a.settings.dateSeparator+"yyyy",c="HH"+a.settings.timeSeparator+"mm",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="dd"+a.settings.dateSeparator+"MM"+a.settings.dateSeparator+"yyyy",c="hh"+a.settings.timeSeparator+"mm"+a.settings.timeMeridiemSeparator+"AA",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="MM"+a.settings.dateSeparator+"dd"+a.settings.dateSeparator+"yyyy",c="HH"+a.settings.timeSeparator+"mm",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="MM"+a.settings.dateSeparator+"dd"+a.settings.dateSeparator+"yyyy",c="hh"+a.settings.timeSeparator+"mm"+a.settings.timeMeridiemSeparator+"AA",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="yyyy"+a.settings.dateSeparator+"MM"+a.settings.dateSeparator+"dd",c="HH"+a.settings.timeSeparator+"mm",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="yyyy"+a.settings.dateSeparator+"MM"+a.settings.dateSeparator+"dd",c="hh"+a.settings.timeSeparator+"mm"+a.settings.timeMeridiemSeparator+"AA",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="dd"+a.settings.dateSeparator+"MMM"+a.settings.dateSeparator+"yyyy",c="hh"+a.settings.timeSeparator+"mm",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d),b="dd"+a.settings.dateSeparator+"MMM"+a.settings.dateSeparator+"yyyy",c="hh"+a.settings.timeSeparator+"mm"+a.settings.timeMeridiemSeparator+"AA",d=b+a.settings.dateTimeSeparator+c,a.oData.sArrInputDateTimeFormats.push(d)},_matchFormat:function(b,c){var d=this;d.oData.bArrMatchFormat=[],d.oData.bDateMode=!1,d.oData.bTimeMode=!1,d.oData.bDateTimeMode=!1;var e,f=[];for(b=a.cf._isValid(b)?b:d.settings.mode,a.cf._compare(b,"date")?(c=a.cf._isValid(c)?c:d.oData.sDateFormat,d.oData.bDateMode=!0,f=d.oData.sArrInputDateFormats):a.cf._compare(b,"time")?(c=a.cf._isValid(c)?c:d.oData.sTimeFormat,d.oData.bTimeMode=!0,f=d.oData.sArrInputTimeFormats):a.cf._compare(b,"datetime")&&(c=a.cf._isValid(c)?c:d.oData.sDateTimeFormat,d.oData.bDateTimeMode=!0,f=d.oData.sArrInputDateTimeFormats),e=0;e0&&d._matchFormat(b,c)},_createPicker:function(){var b=this;b.settings.isInline?a(b.element).addClass("dtpicker-inline"):(a(b.element).addClass("dtpicker-overlay"),a(".dtpicker-overlay").click(function(a){b._hidePicker("")}));var c="";c+="
",c+="
",c+="
",c+="
",c+="
",c+="
",c+="
",c+="
",a(b.element).html(c)},_addEventHandlersForInput:function(){var b=this;if(!b.settings.isInline){b.oData.oInputElement=null,a(b.settings.parentElement).find("input[type='date'], input[type='time'], input[type='datetime']").each(function(){a(this).attr("data-field",a(this).attr("type")),a(this).attr("type","text")});var c="[data-field='date'], [data-field='time'], [data-field='datetime']";a(b.settings.parentElement).off("focus",c,b._inputFieldFocus).on("focus",c,{obj:b},b._inputFieldFocus),a(b.settings.parentElement).off("click",c,b._inputFieldClick).on("click",c,{obj:b},b._inputFieldClick)}b.settings.addEventHandlers&&b.settings.addEventHandlers.call(b)},_inputFieldFocus:function(a){var b=a.data.obj;b.showDateTimePicker(this),b.oData.bMouseDown=!1},_inputFieldClick:function(b){var c=b.data.obj;a.cf._compare(a(this).prop("tagName"),"input")||c.showDateTimePicker(this),b.stopPropagation()},getDateObjectForInputField:function(b){var c=this;if(a.cf._isValid(b)){var d,e=c._getValueOfElement(b),f=a(b).data("field"),g="";return a.cf._isValid(f)||(f=c.settings.mode),c.settings.formatDateTimeString?d=c.settings.parseDateTimeString.call(c,e,f,g,a(b)):(g=a(b).data("format"),a.cf._isValid(g)||(a.cf._compare(f,"date")?g=c.settings.dateFormat:a.cf._compare(f,"time")?g=c.settings.timeFormat:a.cf._compare(f,"datetime")&&(g=c.settings.dateTimeFormat)),c._matchFormat(f,g),a.cf._compare(f,"date")?d=c._parseDate(e):a.cf._compare(f,"time")?d=c._parseTime(e):a.cf._compare(f,"datetime")&&(d=c._parseDateTime(e))),d}},setDateTimeStringInInputField:function(b,c){var d=this;c=c||d.oData.dCurrentDate;var e;a.cf._isValid(b)?(e=[],"string"==typeof b?e.push(b):"object"==typeof b&&(e=b)):e=a.cf._isValid(d.settings.parentElement)?a(d.settings.parentElement).find("[data-field='date'], [data-field='time'], [data-field='datetime']"):a("[data-field='date'], [data-field='time'], [data-field='datetime']"),e.each(function(){var b,e,f,g,h=this;b=a(h).data("field"),a.cf._isValid(b)||(b=d.settings.mode),e="Custom",f=!1,d.settings.formatDateTimeString||(e=a(h).data("format"),a.cf._isValid(e)||(a.cf._compare(b,"date")?e=d.settings.dateFormat:a.cf._compare(b,"time")?e=d.settings.timeFormat:a.cf._compare(b,"datetime")&&(e=d.settings.dateTimeFormat)),f=d.getIs12Hour(b,e)),g=d._setOutput(b,e,f,c,h),d._setValueOfElement(g,a(h))})},getDateTimeStringInFormat:function(a,b,c){var d=this;return d._setOutput(a,b,d.getIs12Hour(a,b),c)},showDateTimePicker:function(a){var b=this;null!==b.oData.oInputElement?b.settings.isInline||b._hidePicker(0,a):b._showPicker(a)},_setButtonAction:function(a){var b=this;null!==b.oData.oInputElement&&(b._setValueOfElement(b._setOutput()),a?(b.settings.buttonClicked&&b.settings.buttonClicked.call(b,"TAB",b.oData.oInputElement),b.settings.isInline||b._hidePicker(0)):b.settings.isInline||b._hidePicker(""))},_setOutput:function(b,c,d,e,f){var g=this;e=a.cf._isValid(e)?e:g.oData.dCurrentDate,d=d||g.oData.bIs12Hour;var h,i=g._setVariablesForDate(e,!0,!0),j="",k=g._formatDate(i),l=g._formatTime(i),m=a.extend({},k,l),n="",o="",p=Function.length;return g.settings.formatDateTimeString?j=g.settings.formatDateTimeString.call(g,m,b,c,f):(g._setMatchFormat(p,b,c),g.oData.bDateMode?g.oData.bArrMatchFormat[0]?j=m.dd+g.settings.dateSeparator+m.MM+g.settings.dateSeparator+m.yyyy:g.oData.bArrMatchFormat[1]?j=m.MM+g.settings.dateSeparator+m.dd+g.settings.dateSeparator+m.yyyy:g.oData.bArrMatchFormat[2]?j=m.yyyy+g.settings.dateSeparator+m.MM+g.settings.dateSeparator+m.dd:g.oData.bArrMatchFormat[3]?j=m.dd+g.settings.dateSeparator+m.monthShort+g.settings.dateSeparator+m.yyyy:g.oData.bArrMatchFormat[4]?j=m.MM+g.settings.monthYearSeparator+m.yyyy:g.oData.bArrMatchFormat[5]?j=m.monthShort+g.settings.monthYearSeparator+m.yyyy:g.oData.bArrMatchFormat[6]?j=m.month+g.settings.monthYearSeparator+m.yyyy:g.oData.bArrMatchFormat[7]&&(j=m.yyyy+g.settings.monthYearSeparator+m.MM):g.oData.bTimeMode?g.oData.bArrMatchFormat[0]?j=m.hh+g.settings.timeSeparator+m.mm+g.settings.timeSeparator+m.ss+g.settings.timeMeridiemSeparator+m.ME:g.oData.bArrMatchFormat[1]?j=m.HH+g.settings.timeSeparator+m.mm+g.settings.timeSeparator+m.ss:g.oData.bArrMatchFormat[2]?j=m.hh+g.settings.timeSeparator+m.mm+g.settings.timeMeridiemSeparator+m.ME:g.oData.bArrMatchFormat[3]&&(j=m.HH+g.settings.timeSeparator+m.mm):g.oData.bDateTimeMode&&(g.oData.bArrMatchFormat[0]||g.oData.bArrMatchFormat[1]||g.oData.bArrMatchFormat[8]||g.oData.bArrMatchFormat[9]?n=m.dd+g.settings.dateSeparator+m.MM+g.settings.dateSeparator+m.yyyy:g.oData.bArrMatchFormat[2]||g.oData.bArrMatchFormat[3]||g.oData.bArrMatchFormat[10]||g.oData.bArrMatchFormat[11]?n=m.MM+g.settings.dateSeparator+m.dd+g.settings.dateSeparator+m.yyyy:g.oData.bArrMatchFormat[4]||g.oData.bArrMatchFormat[5]||g.oData.bArrMatchFormat[12]||g.oData.bArrMatchFormat[13]?n=m.yyyy+g.settings.dateSeparator+m.MM+g.settings.dateSeparator+m.dd:(g.oData.bArrMatchFormat[6]||g.oData.bArrMatchFormat[7]||g.oData.bArrMatchFormat[14]||g.oData.bArrMatchFormat[15])&&(n=m.dd+g.settings.dateSeparator+m.monthShort+g.settings.dateSeparator+m.yyyy),h=g.oData.bArrMatchFormat[0]||g.oData.bArrMatchFormat[1]||g.oData.bArrMatchFormat[2]||g.oData.bArrMatchFormat[3]||g.oData.bArrMatchFormat[4]||g.oData.bArrMatchFormat[5]||g.oData.bArrMatchFormat[6]||g.oData.bArrMatchFormat[7],o=d?h?m.hh+g.settings.timeSeparator+m.mm+g.settings.timeSeparator+m.ss+g.settings.timeMeridiemSeparator+m.ME:m.hh+g.settings.timeSeparator+m.mm+g.settings.timeMeridiemSeparator+m.ME:h?m.HH+g.settings.timeSeparator+m.mm+g.settings.timeSeparator+m.ss:m.HH+g.settings.timeSeparator+m.mm,""!==n&&""!==o&&(j=n+g.settings.dateTimeSeparator+o)),g._setMatchFormat(p)),j},_clearButtonAction:function(){var a=this;null!==a.oData.oInputElement&&a._setValueOfElement(""),a.settings.isInline||a._hidePicker("")},_setOutputOnIncrementOrDecrement:function(){var b=this;a.cf._isValid(b.oData.oInputElement)&&b.settings.setValueInTextboxOnEveryClick&&b._setValueOfElement(b._setOutput())},_showPicker:function(b){var c=this;if(null===c.oData.oInputElement){c.oData.oInputElement=b,c.oData.iTabIndex=parseInt(a(b).attr("tabIndex"));var d=a(b).data("field")||"",e=a(b).data("min")||"",f=a(b).data("max")||"",g=a(b).data("format")||"",h=a(b).data("view")||"",i=a(b).data("startend")||"",j=a(b).data("startendelem")||"",k=c._getValueOfElement(b)||"";if(""!==h&&(a.cf._compare(h,"Popup")?c.setIsPopup(!0):c.setIsPopup(!1)),!c.settings.isPopup&&!c.settings.isInline){c._createPicker();var l=a(c.oData.oInputElement).offset().top+a(c.oData.oInputElement).outerHeight(),m=a(c.oData.oInputElement).offset().left,n=a(c.oData.oInputElement).outerWidth();a(c.element).css({position:"absolute",top:l,left:m,width:n,height:"auto"})}c.settings.beforeShow&&c.settings.beforeShow.call(c,b),d=a.cf._isValid(d)?d:c.settings.mode,c.settings.mode=d,a.cf._isValid(g)||(a.cf._compare(d,"date")?g=c.settings.dateFormat:a.cf._compare(d,"time")?g=c.settings.timeFormat:a.cf._compare(d,"datetime")&&(g=c.settings.dateTimeFormat)),c._matchFormat(d,g),c.oData.dMinValue=null,c.oData.dMaxValue=null,c.oData.bIs12Hour=!1;var o,p,q,r,s,t,u,v;c.oData.bDateMode?(o=e||c.settings.minDate,p=f||c.settings.maxDate,c.oData.sDateFormat=g,a.cf._isValid(o)&&(c.oData.dMinValue=c._parseDate(o)),a.cf._isValid(p)&&(c.oData.dMaxValue=c._parseDate(p)),""!==i&&(a.cf._compare(i,"start")||a.cf._compare(i,"end"))&&""!==j&&a(j).length>=1&&(q=c._getValueOfElement(a(j)),""!==q&&(r=c.settings.parseDateTimeString?c.settings.parseDateTimeString.call(c,q,d,g,a(j)):c._parseDate(q),a.cf._compare(i,"start")?a.cf._isValid(p)?c._compareDates(r,c.oData.dMaxValue)<0&&(c.oData.dMaxValue=new Date(r)):c.oData.dMaxValue=new Date(r):a.cf._compare(i,"end")&&(a.cf._isValid(o)?c._compareDates(r,c.oData.dMinValue)>0&&(c.oData.dMinValue=new Date(r)):c.oData.dMinValue=new Date(r)))),c.settings.parseDateTimeString?c.oData.dCurrentDate=c.settings.parseDateTimeString.call(c,k,d,g,a(b)):c.oData.dCurrentDate=c._parseDate(k),c.oData.dCurrentDate.setHours(0),c.oData.dCurrentDate.setMinutes(0),c.oData.dCurrentDate.setSeconds(0)):c.oData.bTimeMode?(o=e||c.settings.minTime,p=f||c.settings.maxTime,c.oData.sTimeFormat=g,c.oData.bIs12Hour=c.getIs12Hour(),a.cf._isValid(o)&&(c.oData.dMinValue=c._parseTime(o),a.cf._isValid(p)||(c.oData.sTimeFormat===c.oData.sArrInputTimeFormats[0]?p="11:59:59 PM":c.oData.sTimeFormat===c.oData.sArrInputTimeFormats[1]?p="23:59:59":c.oData.sTimeFormat===c.oData.sArrInputTimeFormats[2]?p="11:59 PM":c.oData.sTimeFormat===c.oData.sArrInputTimeFormats[3]&&(p="23:59"),c.oData.dMaxValue=c._parseTime(p))),a.cf._isValid(p)&&(c.oData.dMaxValue=c._parseTime(p),a.cf._isValid(o)||(c.oData.sTimeFormat===c.oData.sArrInputTimeFormats[0]?o="12:00:00 AM":c.oData.sTimeFormat===c.oData.sArrInputTimeFormats[1]?o="00:00:00":c.oData.sTimeFormat===c.oData.sArrInputTimeFormats[2]?o="12:00 AM":c.oData.sTimeFormat===c.oData.sArrInputTimeFormats[3]&&(o="00:00"),c.oData.dMinValue=c._parseTime(o))),""!==i&&(a.cf._compare(i,"start")||a.cf._compare(i,"end"))&&""!==j&&a(j).length>=1&&(s=c._getValueOfElement(a(j)),""!==s&&(c.settings.parseDateTimeString?r=c.settings.parseDateTimeString.call(c,s,d,g,a(j)):t=c._parseTime(s),a.cf._compare(i,"start")?(t.setMinutes(t.getMinutes()-1),a.cf._isValid(p)?2===c._compareTime(t,c.oData.dMaxValue)&&(c.oData.dMaxValue=new Date(t)):c.oData.dMaxValue=new Date(t)):a.cf._compare(i,"end")&&(t.setMinutes(t.getMinutes()+1),a.cf._isValid(o)?3===c._compareTime(t,c.oData.dMinValue)&&(c.oData.dMinValue=new Date(t)):c.oData.dMinValue=new Date(t)))),c.settings.parseDateTimeString?c.oData.dCurrentDate=c.settings.parseDateTimeString.call(c,k,d,g,a(b)):c.oData.dCurrentDate=c._parseTime(k)):c.oData.bDateTimeMode&&(o=e||c.settings.minDateTime,p=f||c.settings.maxDateTime,c.oData.sDateTimeFormat=g,c.oData.bIs12Hour=c.getIs12Hour(),a.cf._isValid(o)&&(c.oData.dMinValue=c._parseDateTime(o)),a.cf._isValid(p)&&(c.oData.dMaxValue=c._parseDateTime(p)),""!==i&&(a.cf._compare(i,"start")||a.cf._compare(i,"end"))&&""!==j&&a(j).length>=1&&(u=c._getValueOfElement(a(j)),""!==u&&(v=c.settings.parseDateTimeString?c.settings.parseDateTimeString.call(c,u,d,g,a(j)):c._parseDateTime(u),a.cf._compare(i,"start")?a.cf._isValid(p)?c._compareDateTime(v,c.oData.dMaxValue)<0&&(c.oData.dMaxValue=new Date(v)):c.oData.dMaxValue=new Date(v):a.cf._compare(i,"end")&&(a.cf._isValid(o)?c._compareDateTime(v,c.oData.dMinValue)>0&&(c.oData.dMinValue=new Date(v)):c.oData.dMinValue=new Date(v)))),c.settings.parseDateTimeString?c.oData.dCurrentDate=c.settings.parseDateTimeString.call(c,k,d,g,a(b)):c.oData.dCurrentDate=c._parseDateTime(k)),c._setVariablesForDate(),c._modifyPicker(),a(c.element).fadeIn(c.settings.animationDuration),c.settings.afterShow&&setTimeout(function(){c.settings.afterShow.call(c,b)},c.settings.animationDuration)}},_hidePicker:function(b,c){var d=this,e=d.oData.oInputElement;d.settings.beforeHide&&d.settings.beforeHide.call(d,e),a.cf._isValid(b)||(b=d.settings.animationDuration),a.cf._isValid(d.oData.oInputElement)&&(a(d.oData.oInputElement).blur(),d.oData.oInputElement=null),a(d.element).fadeOut(b),0===b?a(d.element).find(".dtpicker-subcontent").html(""):setTimeout(function(){a(d.element).find(".dtpicker-subcontent").html("")},b),a(document).unbind("click.DateTimePicker keydown.DateTimePicker keyup.DateTimePicker"),d.settings.afterHide&&(0===b?d.settings.afterHide.call(d,e):setTimeout(function(){d.settings.afterHide.call(d,e)},b)),a.cf._isValid(c)&&d._showPicker(c)},_modifyPicker:function(){var b,c,d=this,e=[];d.oData.bDateMode?(b=d.settings.titleContentDate,c=3,d.oData.bArrMatchFormat[0]?e=["day","month","year"]:d.oData.bArrMatchFormat[1]?e=["month","day","year"]:d.oData.bArrMatchFormat[2]?e=["year","month","day"]:d.oData.bArrMatchFormat[3]?e=["day","month","year"]:d.oData.bArrMatchFormat[4]?(c=2,e=["month","year"]):d.oData.bArrMatchFormat[5]?(c=2,e=["month","year"]):d.oData.bArrMatchFormat[6]?(c=2,e=["month","year"]):d.oData.bArrMatchFormat[7]&&(c=2,e=["year","month"])):d.oData.bTimeMode?(b=d.settings.titleContentTime,d.oData.bArrMatchFormat[0]?(c=4,e=["hour","minutes","seconds","meridiem"]):d.oData.bArrMatchFormat[1]?(c=3,e=["hour","minutes","seconds"]):d.oData.bArrMatchFormat[2]?(c=3,e=["hour","minutes","meridiem"]):d.oData.bArrMatchFormat[3]&&(c=2,e=["hour","minutes"])):d.oData.bDateTimeMode&&(b=d.settings.titleContentDateTime,d.oData.bArrMatchFormat[0]?(c=6,e=["day","month","year","hour","minutes","seconds"]):d.oData.bArrMatchFormat[1]?(c=7,e=["day","month","year","hour","minutes","seconds","meridiem"]):d.oData.bArrMatchFormat[2]?(c=6,e=["month","day","year","hour","minutes","seconds"]):d.oData.bArrMatchFormat[3]?(c=7,e=["month","day","year","hour","minutes","seconds","meridiem"]):d.oData.bArrMatchFormat[4]?(c=6,e=["year","month","day","hour","minutes","seconds"]):d.oData.bArrMatchFormat[5]?(c=7,e=["year","month","day","hour","minutes","seconds","meridiem"]):d.oData.bArrMatchFormat[6]?(c=6,e=["day","month","year","hour","minutes","seconds"]):d.oData.bArrMatchFormat[7]?(c=7,e=["day","month","year","hour","minutes","seconds","meridiem"]):d.oData.bArrMatchFormat[8]?(c=5,e=["day","month","year","hour","minutes"]):d.oData.bArrMatchFormat[9]?(c=6,e=["day","month","year","hour","minutes","meridiem"]):d.oData.bArrMatchFormat[10]?(c=5,e=["month","day","year","hour","minutes"]):d.oData.bArrMatchFormat[11]?(c=6,e=["month","day","year","hour","minutes","meridiem"]):d.oData.bArrMatchFormat[12]?(c=5,e=["year","month","day","hour","minutes"]):d.oData.bArrMatchFormat[13]?(c=6,e=["year","month","day","hour","minutes","meridiem"]):d.oData.bArrMatchFormat[14]?(c=5,e=["day","month","year","hour","minutes"]):d.oData.bArrMatchFormat[15]&&(c=6,e=["day","month","year","hour","minutes","meridiem"]));var f,g="dtpicker-comp"+c,h=!1,i=!1,j=!1;for(f=0;f",h&&(k+="×"),k+="
",k+="
");var l="";for(l+="
",f=0;f",l+="
",l+=""+d.settings.incrementButtonContent+"",l+=d.settings.readonlyInputs?"":"",l+=""+d.settings.decrementButtonContent+"",d.settings.labels&&(l+="
"+d.settings.labels[m]+"
"),l+="
",l+="
"}l+="
";var n="";n=i&&j?" dtpicker-twoButtons":" dtpicker-singleButton";var o="";o+="";var p=k+l+o;a(d.element).find(".dtpicker-subcontent").html(p),d._setCurrentDate(),d._addEventHandlersForPicker()},_addEventHandlersForPicker:function(){var b,c,d=this;if(d.settings.isInline||a(document).on("click.DateTimePicker",function(a){d._hidePicker("")}),a(document).on("keydown.DateTimePicker",function(e){if(c=parseInt(e.keyCode?e.keyCode:e.which),!a(".dtpicker-compValue").is(":focus")&&9===c)return d._setButtonAction(!0),a("[tabIndex="+(d.oData.iTabIndex+1)+"]").focus(),!1;if(a(".dtpicker-compValue").is(":focus")){if(38===c)return b=a(".dtpicker-compValue:focus").parent().attr("class"),d._incrementDecrementActionsUsingArrowAndMouse(b,"inc"),!1;if(40===c)return b=a(".dtpicker-compValue:focus").parent().attr("class"),d._incrementDecrementActionsUsingArrowAndMouse(b,"dec"),!1}}),d.settings.isInline||a(document).on("keydown.DateTimePicker",function(b){c=parseInt(b.keyCode?b.keyCode:b.which),a(".dtpicker-compValue").is(":focus")||9===c||d._hidePicker("")}),a(".dtpicker-cont *").click(function(a){a.stopPropagation()}),d.settings.readonlyInputs||(a(".dtpicker-compValue").not(".month .dtpicker-compValue, .meridiem .dtpicker-compValue").keyup(function(){this.value=this.value.replace(/[^0-9\.]/g,"")}),a(".dtpicker-compValue").focus(function(){d.oData.bElemFocused=!0,a(this).select()}),a(".dtpicker-compValue").blur(function(){d._getValuesFromInputBoxes(),d._setCurrentDate(),d.oData.bElemFocused=!1;var b=a(this).parent().parent();setTimeout(function(){b.is(":last-child")&&!d.oData.bElemFocused&&d._setButtonAction(!1)},50)}),a(".dtpicker-compValue").keyup(function(b){var c,d=a(this),e=d.val(),f=e.length;d.parent().hasClass("day")||d.parent().hasClass("hour")||d.parent().hasClass("minutes")||d.parent().hasClass("meridiem")?f>2&&(c=e.slice(0,2),d.val(c)):d.parent().hasClass("month")?f>3&&(c=e.slice(0,3),d.val(c)):d.parent().hasClass("year")&&f>4&&(c=e.slice(0,4),d.val(c)),9===parseInt(b.keyCode?b.keyCode:b.which)&&a(this).select()})),a(d.element).find(".dtpicker-compValue").on("mousewheel DOMMouseScroll onmousewheel",function(c){if(a(".dtpicker-compValue").is(":focus")){var e=Math.max(-1,Math.min(1,c.originalEvent.wheelDelta));return e>0?(b=a(".dtpicker-compValue:focus").parent().attr("class"),d._incrementDecrementActionsUsingArrowAndMouse(b,"inc")):(b=a(".dtpicker-compValue:focus").parent().attr("class"),d._incrementDecrementActionsUsingArrowAndMouse(b,"dec")),!1}}),a(d.element).find(".dtpicker-close").click(function(a){d.settings.buttonClicked&&d.settings.buttonClicked.call(d,"CLOSE",d.oData.oInputElement),d.settings.isInline||d._hidePicker("")}),a(d.element).find(".dtpicker-buttonSet").click(function(a){d.settings.buttonClicked&&d.settings.buttonClicked.call(d,"SET",d.oData.oInputElement),d._setButtonAction(!1)}),a(d.element).find(".dtpicker-buttonClear").click(function(a){d.settings.buttonClicked&&d.settings.buttonClicked.call(d,"CLEAR",d.oData.oInputElement),d._clearButtonAction()}),d.settings.captureTouchHold||d.settings.captureMouseHold){var e="";d.settings.captureTouchHold&&d.oData.bIsTouchDevice&&(e+="touchstart touchmove touchend "),d.settings.captureMouseHold&&(e+="mousedown mouseup"),a(".dtpicker-cont *").on(e,function(a){d._clearIntervalForTouchEvents()}),d._bindTouchEvents("day"),d._bindTouchEvents("month"),d._bindTouchEvents("year"),d._bindTouchEvents("hour"),d._bindTouchEvents("minutes"),d._bindTouchEvents("seconds")}else a(d.element).find(".day .increment, .day .increment *").click(function(a){d.oData.iCurrentDay++,d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()}),a(d.element).find(".day .decrement, .day .decrement *").click(function(a){d.oData.iCurrentDay--,d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()}),a(d.element).find(".month .increment, .month .increment *").click(function(a){d.oData.iCurrentMonth++,d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()}),a(d.element).find(".month .decrement, .month .decrement *").click(function(a){d.oData.iCurrentMonth--,d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()}),a(d.element).find(".year .increment, .year .increment *").click(function(a){d.oData.iCurrentYear++,d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()}),a(d.element).find(".year .decrement, .year .decrement *").click(function(a){d.oData.iCurrentYear--,d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()}),a(d.element).find(".hour .increment, .hour .increment *").click(function(a){d.oData.iCurrentHour++,d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()}),a(d.element).find(".hour .decrement, .hour .decrement *").click(function(a){d.oData.iCurrentHour--,d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()}),a(d.element).find(".minutes .increment, .minutes .increment *").click(function(a){d.oData.iCurrentMinutes+=d.settings.minuteInterval,d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()}),a(d.element).find(".minutes .decrement, .minutes .decrement *").click(function(a){d.oData.iCurrentMinutes-=d.settings.minuteInterval,d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()}),a(d.element).find(".seconds .increment, .seconds .increment *").click(function(a){d.oData.iCurrentSeconds+=d.settings.secondsInterval,d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()}),a(d.element).find(".seconds .decrement, .seconds .decrement *").click(function(a){d.oData.iCurrentSeconds-=d.settings.secondsInterval,d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()});a(d.element).find(".meridiem .dtpicker-compButton, .meridiem .dtpicker-compButton *").click(function(b){a.cf._compare(d.oData.sCurrentMeridiem,"AM")?(d.oData.sCurrentMeridiem="PM",d.oData.iCurrentHour+=12):a.cf._compare(d.oData.sCurrentMeridiem,"PM")&&(d.oData.sCurrentMeridiem="AM",d.oData.iCurrentHour-=12),d._setCurrentDate(),d._setOutputOnIncrementOrDecrement()})},_adjustMinutes:function(a){var b=this;return b.settings.roundOffMinutes&&1!==b.settings.minuteInterval&&(a=a%b.settings.minuteInterval?a-a%b.settings.minuteInterval+b.settings.minuteInterval:a),a},_adjustSeconds:function(a){var b=this;return b.settings.roundOffSeconds&&1!==b.settings.secondsInterval&&(a=a%b.settings.secondsInterval?a-a%b.settings.secondsInterval+b.settings.secondsInterval:a),a},_getValueOfElement:function(b){var c="";return c=a.cf._compare(a(b).prop("tagName"),"INPUT")?a(b).val():a(b).html()},_setValueOfElement:function(b,c){var d=this;a.cf._isValid(c)||(c=a(d.oData.oInputElement)),a.cf._compare(c.prop("tagName"),"INPUT")?c.val(b):c.html(b);var e=d.getDateObjectForInputField(c);return d.settings.settingValueOfElement&&d.settings.settingValueOfElement.call(d,b,e,c),c.change(),b},_bindTouchEvents:function(b){var c=this;a(c.element).find("."+b+" .increment, ."+b+" .increment *").on("touchstart mousedown",function(d){d.stopPropagation(),a.cf._isValid(c.oData.sTouchButton)||(c.oData.iTouchStart=(new Date).getTime(), -c.oData.sTouchButton=b+"-inc",c._setIntervalForTouchEvents())}),a(c.element).find("."+b+" .increment, ."+b+" .increment *").on("touchend mouseup",function(a){a.stopPropagation(),c._clearIntervalForTouchEvents()}),a(c.element).find("."+b+" .decrement, ."+b+" .decrement *").on("touchstart mousedown",function(d){d.stopPropagation(),a.cf._isValid(c.oData.sTouchButton)||(c.oData.iTouchStart=(new Date).getTime(),c.oData.sTouchButton=b+"-dec",c._setIntervalForTouchEvents())}),a(c.element).find("."+b+" .decrement, ."+b+" .decrement *").on("touchend mouseup",function(a){a.stopPropagation(),c._clearIntervalForTouchEvents()})},_setIntervalForTouchEvents:function(){var b=this,c=b.oData.bIsTouchDevice?b.settings.touchHoldInterval:b.settings.mouseHoldInterval;if(!a.cf._isValid(b.oData.oTimeInterval)){var d;b.oData.oTimeInterval=setInterval(function(){d=(new Date).getTime()-b.oData.iTouchStart,d>c&&a.cf._isValid(b.oData.sTouchButton)&&("day-inc"===b.oData.sTouchButton?b.oData.iCurrentDay++:"day-dec"===b.oData.sTouchButton?b.oData.iCurrentDay--:"month-inc"===b.oData.sTouchButton?b.oData.iCurrentMonth++:"month-dec"===b.oData.sTouchButton?b.oData.iCurrentMonth--:"year-inc"===b.oData.sTouchButton?b.oData.iCurrentYear++:"year-dec"===b.oData.sTouchButton?b.oData.iCurrentYear--:"hour-inc"===b.oData.sTouchButton?b.oData.iCurrentHour++:"hour-dec"===b.oData.sTouchButton?b.oData.iCurrentHour--:"minute-inc"===b.oData.sTouchButton?b.oData.iCurrentMinutes+=b.settings.minuteInterval:"minute-dec"===b.oData.sTouchButton?b.oData.iCurrentMinutes-=b.settings.minuteInterval:"second-inc"===b.oData.sTouchButton?b.oData.iCurrentSeconds+=b.settings.secondsInterval:"second-dec"===b.oData.sTouchButton&&(b.oData.iCurrentSeconds-=b.settings.secondsInterval),b._setCurrentDate(),b._setOutputOnIncrementOrDecrement(),b.oData.iTouchStart=(new Date).getTime())},c)}},_clearIntervalForTouchEvents:function(){var b=this;clearInterval(b.oData.oTimeInterval),a.cf._isValid(b.oData.sTouchButton)&&(b.oData.sTouchButton=null,b.oData.iTouchStart=0),b.oData.oTimeInterval=null},_incrementDecrementActionsUsingArrowAndMouse:function(a,b){var c=this;a.includes("day")?"inc"===b?c.oData.iCurrentDay++:"dec"===b&&c.oData.iCurrentDay--:a.includes("month")?"inc"===b?c.oData.iCurrentMonth++:"dec"===b&&c.oData.iCurrentMonth--:a.includes("year")?"inc"===b?c.oData.iCurrentYear++:"dec"===b&&c.oData.iCurrentYear--:a.includes("hour")?"inc"===b?c.oData.iCurrentHour++:"dec"===b&&c.oData.iCurrentHour--:a.includes("minutes")?"inc"===b?c.oData.iCurrentMinutes+=c.settings.minuteInterval:"dec"===b&&(c.oData.iCurrentMinutes-=c.settings.minuteInterval):a.includes("seconds")&&("inc"===b?c.oData.iCurrentSeconds+=c.settings.secondsInterval:"dec"===b&&(c.oData.iCurrentSeconds-=c.settings.secondsInterval)),c._setCurrentDate(),c._setOutputOnIncrementOrDecrement()},_parseDate:function(b){var c=this,d=c.settings.defaultDate?new Date(c.settings.defaultDate):new Date,e=d.getDate(),f=d.getMonth(),g=d.getFullYear();if(a.cf._isValid(b))if("string"==typeof b){var h;h=c.oData.bArrMatchFormat[4]||c.oData.bArrMatchFormat[5]||c.oData.bArrMatchFormat[6]?b.split(c.settings.monthYearSeparator):b.split(c.settings.dateSeparator),c.oData.bArrMatchFormat[0]?(e=parseInt(h[0]),f=parseInt(h[1]-1),g=parseInt(h[2])):c.oData.bArrMatchFormat[1]?(f=parseInt(h[0]-1),e=parseInt(h[1]),g=parseInt(h[2])):c.oData.bArrMatchFormat[2]?(g=parseInt(h[0]),f=parseInt(h[1]-1),e=parseInt(h[2])):c.oData.bArrMatchFormat[3]?(e=parseInt(h[0]),f=c._getShortMonthIndex(h[1]),g=parseInt(h[2])):c.oData.bArrMatchFormat[4]?(e=1,f=parseInt(h[0])-1,g=parseInt(h[1])):c.oData.bArrMatchFormat[5]?(e=1,f=c._getShortMonthIndex(h[0]),g=parseInt(h[1])):c.oData.bArrMatchFormat[6]?(e=1,f=c._getFullMonthIndex(h[0]),g=parseInt(h[1])):c.oData.bArrMatchFormat[7]&&(e=1,f=parseInt(h[1])-1,g=parseInt(h[0]))}else e=b.getDate(),f=b.getMonth(),g=b.getFullYear();return d=new Date(g,f,e,0,0,0,0)},_parseTime:function(b){var c,d,e,f=this,g=f.settings.defaultDate?new Date(f.settings.defaultDate):new Date,h=g.getDate(),i=g.getMonth(),j=g.getFullYear(),k=g.getHours(),l=g.getMinutes(),m=g.getSeconds(),n=f.oData.bArrMatchFormat[0]||f.oData.bArrMatchFormat[1];return m=n?f._adjustSeconds(m):0,a.cf._isValid(b)&&("string"==typeof b?(f.oData.bIs12Hour&&(c=b.split(f.settings.timeMeridiemSeparator),b=c[0],d=c[1],a.cf._compare(d,"AM")||a.cf._compare(d,"PM")||(d="")),e=b.split(f.settings.timeSeparator),k=parseInt(e[0]),l=parseInt(e[1]),n&&(m=parseInt(e[2]),m=f._adjustSeconds(m)),12===k&&a.cf._compare(d,"AM")?k=0:k<12&&a.cf._compare(d,"PM")&&(k+=12)):(k=b.getHours(),l=b.getMinutes(),n&&(m=b.getSeconds(),m=f._adjustSeconds(m)))),l=f._adjustMinutes(l),g=new Date(j,i,h,k,l,m,0)},_parseDateTime:function(b){var c,d,e,f,g,h=this,i=h.settings.defaultDate?new Date(h.settings.defaultDate):new Date,j=i.getDate(),k=i.getMonth(),l=i.getFullYear(),m=i.getHours(),n=i.getMinutes(),o=i.getSeconds(),p="",q=h.oData.bArrMatchFormat[0]||h.oData.bArrMatchFormat[1]||h.oData.bArrMatchFormat[2]||h.oData.bArrMatchFormat[3]||h.oData.bArrMatchFormat[4]||h.oData.bArrMatchFormat[5]||h.oData.bArrMatchFormat[6]||h.oData.bArrMatchFormat[7];return o=q?h._adjustSeconds(o):0,a.cf._isValid(b)&&("string"==typeof b?(c=b.split(h.settings.dateTimeSeparator),d=c[0].split(h.settings.dateSeparator),h.oData.bArrMatchFormat[0]||h.oData.bArrMatchFormat[1]||h.oData.bArrMatchFormat[8]||h.oData.bArrMatchFormat[9]?(j=parseInt(d[0]),k=parseInt(d[1]-1),l=parseInt(d[2])):h.oData.bArrMatchFormat[2]||h.oData.bArrMatchFormat[3]||h.oData.bArrMatchFormat[10]||h.oData.bArrMatchFormat[11]?(k=parseInt(d[0]-1),j=parseInt(d[1]),l=parseInt(d[2])):h.oData.bArrMatchFormat[4]||h.oData.bArrMatchFormat[5]||h.oData.bArrMatchFormat[12]||h.oData.bArrMatchFormat[13]?(l=parseInt(d[0]),k=parseInt(d[1]-1),j=parseInt(d[2])):(h.oData.bArrMatchFormat[6]||h.oData.bArrMatchFormat[7]||h.oData.bArrMatchFormat[14]||h.oData.bArrMatchFormat[15])&&(j=parseInt(d[0]),k=h._getShortMonthIndex(d[1]),l=parseInt(d[2])),e=c[1],a.cf._isValid(e)&&(h.oData.bIs12Hour&&(a.cf._compare(h.settings.dateTimeSeparator,h.settings.timeMeridiemSeparator)&&3===c.length?p=c[2]:(f=e.split(h.settings.timeMeridiemSeparator),e=f[0],p=f[1]),a.cf._compare(p,"AM")||a.cf._compare(p,"PM")||(p="")),g=e.split(h.settings.timeSeparator),m=parseInt(g[0]),n=parseInt(g[1]),q&&(o=parseInt(g[2])),12===m&&a.cf._compare(p,"AM")?m=0:m<12&&a.cf._compare(p,"PM")&&(m+=12))):(j=b.getDate(),k=b.getMonth(),l=b.getFullYear(),m=b.getHours(),n=b.getMinutes(),q&&(o=b.getSeconds(),o=h._adjustSeconds(o)))),n=h._adjustMinutes(n),i=new Date(l,k,j,m,n,o,0)},_getShortMonthIndex:function(b){for(var c=this,d=0;d1&&(c=c.charAt(0).toUpperCase()+c.slice(1)),d=b.settings.shortMonthNames.indexOf(c),d!==-1?b.oData.iCurrentMonth=parseInt(d):c.match("^[+|-]?[0-9]+$")&&(b.oData.iCurrentMonth=parseInt(c-1)),b.oData.iCurrentDay=parseInt(a(b.element).find(".day .dtpicker-compValue").val())||b.oData.iCurrentDay,b.oData.iCurrentYear=parseInt(a(b.element).find(".year .dtpicker-compValue").val())||b.oData.iCurrentYear}if(b.oData.bTimeMode||b.oData.bDateTimeMode){var e,f,g,h;e=parseInt(a(b.element).find(".hour .dtpicker-compValue").val()),f=b._adjustMinutes(parseInt(a(b.element).find(".minutes .dtpicker-compValue").val())),g=b._adjustMinutes(parseInt(a(b.element).find(".seconds .dtpicker-compValue").val())),b.oData.iCurrentHour=isNaN(e)?b.oData.iCurrentHour:e,b.oData.iCurrentMinutes=isNaN(f)?b.oData.iCurrentMinutes:f,b.oData.iCurrentSeconds=isNaN(g)?b.oData.iCurrentSeconds:g,b.oData.iCurrentSeconds>59&&(b.oData.iCurrentMinutes+=b.oData.iCurrentSeconds/60,b.oData.iCurrentSeconds=b.oData.iCurrentSeconds%60),b.oData.iCurrentMinutes>59&&(b.oData.iCurrentHour+=b.oData.iCurrentMinutes/60,b.oData.iCurrentMinutes=b.oData.iCurrentMinutes%60),b.oData.bIs12Hour?b.oData.iCurrentHour>12&&(b.oData.iCurrentHour=b.oData.iCurrentHour%12):b.oData.iCurrentHour>23&&(b.oData.iCurrentHour=b.oData.iCurrentHour%23),b.oData.bIs12Hour&&(h=a(b.element).find(".meridiem .dtpicker-compValue").val(),(a.cf._compare(h,"AM")||a.cf._compare(h,"PM"))&&(b.oData.sCurrentMeridiem=h),a.cf._compare(b.oData.sCurrentMeridiem,"PM")&&12!==b.oData.iCurrentHour&&b.oData.iCurrentHour<13&&(b.oData.iCurrentHour+=12),a.cf._compare(b.oData.sCurrentMeridiem,"AM")&&12===b.oData.iCurrentHour&&(b.oData.iCurrentHour=0))}},_setCurrentDate:function(){var b=this;(b.oData.bTimeMode||b.oData.bDateTimeMode)&&(b.oData.iCurrentSeconds>59?(b.oData.iCurrentMinutes+=b.oData.iCurrentSeconds/60,b.oData.iCurrentSeconds=b.oData.iCurrentSeconds%60):b.oData.iCurrentSeconds<0&&(b.oData.iCurrentMinutes-=b.settings.minuteInterval,b.oData.iCurrentSeconds+=60),b.oData.iCurrentMinutes=b._adjustMinutes(b.oData.iCurrentMinutes),b.oData.iCurrentSeconds=b._adjustSeconds(b.oData.iCurrentSeconds));var c,d,e,f,g,h,i,j=new Date(b.oData.iCurrentYear,b.oData.iCurrentMonth,b.oData.iCurrentDay,b.oData.iCurrentHour,b.oData.iCurrentMinutes,b.oData.iCurrentSeconds,0),k=!1,l=!1;if(null!==b.oData.dMaxValue&&(k=j.getTime()>b.oData.dMaxValue.getTime()),null!==b.oData.dMinValue&&(l=j.getTime()b.oData.dMaxValue.getTime()),null!==b.oData.dMinValue&&(n=b.oData.dCurrentDate.getTime()12&&(e-=12),"00"===g&&(e=12),f=e<10?"0"+e:e,j.oData.bIs12Hour&&(g=f),h=k.iCurrentMinutes,h=h<10?"0"+h:h,i=k.iCurrentSeconds,i=i<10?"0"+i:i,{H:c,HH:d,h:e,hh:f,hour:g,m:k.iCurrentMinutes,mm:h,s:k.iCurrentSeconds,ss:i,ME:k.sCurrentMeridiem}},_setButtons:function(){var b=this;a(b.element).find(".dtpicker-compButton").removeClass("dtpicker-compButtonDisable").addClass("dtpicker-compButtonEnable");var c;if(null!==b.oData.dMaxValue&&(b.oData.bTimeMode?((b.oData.iCurrentHour+1>b.oData.dMaxValue.getHours()||b.oData.iCurrentHour+1===b.oData.dMaxValue.getHours()&&b.oData.iCurrentMinutes>b.oData.dMaxValue.getMinutes())&&a(b.element).find(".hour .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"),b.oData.iCurrentHour>=b.oData.dMaxValue.getHours()&&b.oData.iCurrentMinutes+1>b.oData.dMaxValue.getMinutes()&&a(b.element).find(".minutes .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable")):(c=new Date(b.oData.iCurrentYear,b.oData.iCurrentMonth,b.oData.iCurrentDay+1,b.oData.iCurrentHour,b.oData.iCurrentMinutes,b.oData.iCurrentSeconds,0),c.getTime()>b.oData.dMaxValue.getTime()&&a(b.element).find(".day .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"),c=new Date(b.oData.iCurrentYear,b.oData.iCurrentMonth+1,b.oData.iCurrentDay,b.oData.iCurrentHour,b.oData.iCurrentMinutes,b.oData.iCurrentSeconds,0),c.getTime()>b.oData.dMaxValue.getTime()&&a(b.element).find(".month .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"),c=new Date(b.oData.iCurrentYear+1,b.oData.iCurrentMonth,b.oData.iCurrentDay,b.oData.iCurrentHour,b.oData.iCurrentMinutes,b.oData.iCurrentSeconds,0),c.getTime()>b.oData.dMaxValue.getTime()&&a(b.element).find(".year .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"),c=new Date(b.oData.iCurrentYear,b.oData.iCurrentMonth,b.oData.iCurrentDay,b.oData.iCurrentHour+1,b.oData.iCurrentMinutes,b.oData.iCurrentSeconds,0),c.getTime()>b.oData.dMaxValue.getTime()&&a(b.element).find(".hour .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"),c=new Date(b.oData.iCurrentYear,b.oData.iCurrentMonth,b.oData.iCurrentDay,b.oData.iCurrentHour,b.oData.iCurrentMinutes+1,b.oData.iCurrentSeconds,0),c.getTime()>b.oData.dMaxValue.getTime()&&a(b.element).find(".minutes .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"),c=new Date(b.oData.iCurrentYear,b.oData.iCurrentMonth,b.oData.iCurrentDay,b.oData.iCurrentHour,b.oData.iCurrentMinutes,b.oData.iCurrentSeconds+1,0),c.getTime()>b.oData.dMaxValue.getTime()&&a(b.element).find(".seconds .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"))),null!==b.oData.dMinValue&&(b.oData.bTimeMode?((b.oData.iCurrentHour-1b.oData.dMaxValue.getHours()||d===b.oData.dMaxValue.getHours()&&e>b.oData.dMaxValue.getMinutes())&&a(b.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable")):c.getTime()>b.oData.dMaxValue.getTime()&&a(b.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable")),null!==b.oData.dMinValue&&(b.oData.bTimeMode?(e=b.oData.iCurrentMinutes,(db.getHours()?c=3:a.getHours()===b.getHours()&&(a.getMinutes()b.getMinutes()&&(c=3)),c},_compareDateTime:function(a,b){var c=(a.getTime()-b.getTime())/6e4;return 0===c?c:c/Math.abs(c)},_determineMeridiemFromHourAndMinutes:function(a,b){return a>12||12===a&&b>=0?"PM":"AM"},setLanguage:function(b){var c=this;return c.settings=a.extend({},a.DateTimePicker.defaults,a.DateTimePicker.i18n[b],c.options),c.settings.language=b,c._setDateFormatArray(),c._setTimeFormatArray(),c._setDateTimeFormatArray(),c}}}); \ No newline at end of file + +Object.keys||(Object.keys=function(t){var e=[];for(var a in t)t.hasOwnProperty(a)&&e.push(a);return e}),$.DateTimePicker=$.DateTimePicker||{name:"DateTimePicker",i18n:{},defaults:{mode:"date",defaultDate:null,dateSeparator:"-",timeSeparator:":",timeMeridiemSeparator:" ",dateTimeSeparator:" ",monthYearSeparator:" ",dateTimeFormat:"dd-MM-yyyy HH:mm",dateFormat:"dd-MM-yyyy",timeFormat:"HH:mm",maxDate:null,minDate:null,maxTime:null,minTime:null,maxDateTime:null,minDateTime:null,shortDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],fullDayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],fullMonthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],labels:null,minuteInterval:1,roundOffMinutes:!0,secondsInterval:1,roundOffSeconds:!0,showHeader:!0,titleContentDate:"Set Date",titleContentTime:"Set Time",titleContentDateTime:"Set Date & Time",buttonsToDisplay:["HeaderCloseButton","SetButton","ClearButton"],setButtonContent:"Set",clearButtonContent:"Clear",incrementButtonContent:"+",decrementButtonContent:"-",setValueInTextboxOnEveryClick:!1,readonlyInputs:!1,animationDuration:400,touchHoldInterval:300,captureTouchHold:!1,mouseHoldInterval:50,captureMouseHold:!1,isPopup:!0,parentElement:"body",isInline:!1,inputElement:null,language:"",init:null,addEventHandlers:null,beforeShow:null,afterShow:null,beforeHide:null,afterHide:null,buttonClicked:null,settingValueOfElement:null,formatHumanDate:null,parseDateTimeString:null,formatDateTimeString:null},dataObject:{dCurrentDate:new Date,iCurrentDay:0,iCurrentMonth:0,iCurrentYear:0,iCurrentHour:0,iCurrentMinutes:0,iCurrentSeconds:0,sCurrentMeridiem:"",iMaxNumberOfDays:0,sDateFormat:"",sTimeFormat:"",sDateTimeFormat:"",dMinValue:null,dMaxValue:null,sArrInputDateFormats:[],sArrInputTimeFormats:[],sArrInputDateTimeFormats:[],bArrMatchFormat:[],bDateMode:!1,bTimeMode:!1,bDateTimeMode:!1,oInputElement:null,iTabIndex:0,bElemFocused:!1,bIs12Hour:!1,sTouchButton:null,iTouchStart:null,oTimeInterval:null,bIsTouchDevice:"ontouchstart"in document.documentElement}},$.cf={_isValid:function(t){return null!=t&&""!==t},_compare:function(t,e){return null!=t&&null!=e&&t.toLowerCase()===e.toLowerCase()}},function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof exports?module.exports=t(require("jquery")):t(jQuery)}(function(b){"use strict";function o(t,e){this.element=t;var a;a=b.cf._isValid(e)&&b.cf._isValid(e.language)?e.language:b.DateTimePicker.defaults.language,this.settings=b.extend({},b.DateTimePicker.defaults,b.DateTimePicker.i18n[a],e),this.options=e,this.oData=b.extend({},b.DateTimePicker.dataObject),this._defaults=b.DateTimePicker.defaults,this._name=b.DateTimePicker.name,this.init()}b.fn.DateTimePicker=function(t){var e,a,r=b(this).data(),n=r?Object.keys(r):[];if("string"!=typeof t)return this.each(function(){b.removeData(this,"plugin_DateTimePicker"),b.data(this,"plugin_DateTimePicker")||b.data(this,"plugin_DateTimePicker",new o(this,t))});if(b.cf._isValid(r))if("destroy"===t){if(0
")},_addEventHandlersForInput:function(){var t=this;if(!t.settings.isInline){t.oData.oInputElement=null,b(t.settings.parentElement).find("input[type='date'], input[type='time'], input[type='datetime']").each(function(){b(this).attr("data-field",b(this).attr("type")),b(this).attr("type","text")});var e="[data-field='date'], [data-field='time'], [data-field='datetime']";b(t.settings.parentElement).off("focus",e,t._inputFieldFocus).on("focus",e,{obj:t},t._inputFieldFocus),b(t.settings.parentElement).off("click",e,t._inputFieldClick).on("click",e,{obj:t},t._inputFieldClick)}t.settings.addEventHandlers&&t.settings.addEventHandlers.call(t)},_inputFieldFocus:function(t){var e=t.data.obj;e.showDateTimePicker(this),e.oData.bMouseDown=!1},_inputFieldClick:function(t){var e=t.data.obj;b.cf._compare(b(this).prop("tagName"),"input")||e.showDateTimePicker(this),t.stopPropagation()},getDateObjectForInputField:function(t){var e=this;if(b.cf._isValid(t)){var a,r=e._getValueOfElement(t),n=b(t).data("field"),o="";return b.cf._isValid(n)||(n=e.settings.mode),e.settings.formatDateTimeString?a=e.settings.parseDateTimeString.call(e,r,n,o,b(t)):(o=b(t).data("format"),b.cf._isValid(o)||(b.cf._compare(n,"date")?o=e.settings.dateFormat:b.cf._compare(n,"time")?o=e.settings.timeFormat:b.cf._compare(n,"datetime")&&(o=e.settings.dateTimeFormat)),e._matchFormat(n,o),b.cf._compare(n,"date")?a=e._parseDate(r):b.cf._compare(n,"time")?a=e._parseTime(r):b.cf._compare(n,"datetime")&&(a=e._parseDateTime(r))),a}},setDateTimeStringInInputField:function(t,n){var e,o=this;n=n||o.oData.dCurrentDate,b.cf._isValid(t)?(e=[],"string"==typeof t?e.push(t):"object"==typeof t&&(e=t)):e=b.cf._isValid(o.settings.parentElement)?b(o.settings.parentElement).find("[data-field='date'], [data-field='time'], [data-field='datetime']"):b("[data-field='date'], [data-field='time'], [data-field='datetime']"),e.each(function(){var t,e,a,r;t=b(this).data("field"),b.cf._isValid(t)||(t=o.settings.mode),a=!(e="Custom"),o.settings.formatDateTimeString||(e=b(this).data("format"),b.cf._isValid(e)||(b.cf._compare(t,"date")?e=o.settings.dateFormat:b.cf._compare(t,"time")?e=o.settings.timeFormat:b.cf._compare(t,"datetime")&&(e=o.settings.dateTimeFormat)),a=o.getIs12Hour(t,e)),r=o._setOutput(t,e,a,n,this),o._setValueOfElement(r,b(this))})},getDateTimeStringInFormat:function(t,e,a){return this._setOutput(t,e,this.getIs12Hour(t,e),a)},showDateTimePicker:function(t){null!==this.oData.oInputElement?this.settings.isInline||this._hidePicker(0,t):this._showPicker(t)},_setButtonAction:function(t){var e=this;null!==e.oData.oInputElement&&(e._setValueOfElement(e._setOutput()),t?(e.settings.buttonClicked&&e.settings.buttonClicked.call(e,"TAB",e.oData.oInputElement),e.settings.isInline||e._hidePicker(0)):e.settings.isInline||e._hidePicker(""))},_setOutput:function(t,e,a,r,n){var o=this;r=b.cf._isValid(r)?r:o.oData.dCurrentDate,a=a||o.oData.bIs12Hour;var i,s=o._setVariablesForDate(r,!0,!0),m="",u=o._formatDate(s),c=o._formatTime(s),d=b.extend({},u,c),D="",l="",p=Function.length;return o.settings.formatDateTimeString?m=o.settings.formatDateTimeString.call(o,d,t,e,n):(o._setMatchFormat(p,t,e),o.oData.bDateMode?o.oData.bArrMatchFormat[0]?m=d.dd+o.settings.dateSeparator+d.MM+o.settings.dateSeparator+d.yyyy:o.oData.bArrMatchFormat[1]?m=d.MM+o.settings.dateSeparator+d.dd+o.settings.dateSeparator+d.yyyy:o.oData.bArrMatchFormat[2]?m=d.yyyy+o.settings.dateSeparator+d.MM+o.settings.dateSeparator+d.dd:o.oData.bArrMatchFormat[3]?m=d.dd+o.settings.dateSeparator+d.monthShort+o.settings.dateSeparator+d.yyyy:o.oData.bArrMatchFormat[4]?m=d.MM+o.settings.monthYearSeparator+d.yyyy:o.oData.bArrMatchFormat[5]?m=d.monthShort+o.settings.monthYearSeparator+d.yyyy:o.oData.bArrMatchFormat[6]?m=d.month+o.settings.monthYearSeparator+d.yyyy:o.oData.bArrMatchFormat[7]&&(m=d.yyyy+o.settings.monthYearSeparator+d.MM):o.oData.bTimeMode?o.oData.bArrMatchFormat[0]?m=d.hh+o.settings.timeSeparator+d.mm+o.settings.timeSeparator+d.ss+o.settings.timeMeridiemSeparator+d.ME:o.oData.bArrMatchFormat[1]?m=d.HH+o.settings.timeSeparator+d.mm+o.settings.timeSeparator+d.ss:o.oData.bArrMatchFormat[2]?m=d.hh+o.settings.timeSeparator+d.mm+o.settings.timeMeridiemSeparator+d.ME:o.oData.bArrMatchFormat[3]&&(m=d.HH+o.settings.timeSeparator+d.mm):o.oData.bDateTimeMode&&(o.oData.bArrMatchFormat[0]||o.oData.bArrMatchFormat[1]||o.oData.bArrMatchFormat[8]||o.oData.bArrMatchFormat[9]?D=d.dd+o.settings.dateSeparator+d.MM+o.settings.dateSeparator+d.yyyy:o.oData.bArrMatchFormat[2]||o.oData.bArrMatchFormat[3]||o.oData.bArrMatchFormat[10]||o.oData.bArrMatchFormat[11]?D=d.MM+o.settings.dateSeparator+d.dd+o.settings.dateSeparator+d.yyyy:o.oData.bArrMatchFormat[4]||o.oData.bArrMatchFormat[5]||o.oData.bArrMatchFormat[12]||o.oData.bArrMatchFormat[13]?D=d.yyyy+o.settings.dateSeparator+d.MM+o.settings.dateSeparator+d.dd:(o.oData.bArrMatchFormat[6]||o.oData.bArrMatchFormat[7]||o.oData.bArrMatchFormat[14]||o.oData.bArrMatchFormat[15])&&(D=d.dd+o.settings.dateSeparator+d.monthShort+o.settings.dateSeparator+d.yyyy),i=o.oData.bArrMatchFormat[0]||o.oData.bArrMatchFormat[1]||o.oData.bArrMatchFormat[2]||o.oData.bArrMatchFormat[3]||o.oData.bArrMatchFormat[4]||o.oData.bArrMatchFormat[5]||o.oData.bArrMatchFormat[6]||o.oData.bArrMatchFormat[7],l=a?i?d.hh+o.settings.timeSeparator+d.mm+o.settings.timeSeparator+d.ss+o.settings.timeMeridiemSeparator+d.ME:d.hh+o.settings.timeSeparator+d.mm+o.settings.timeMeridiemSeparator+d.ME:i?d.HH+o.settings.timeSeparator+d.mm+o.settings.timeSeparator+d.ss:d.HH+o.settings.timeSeparator+d.mm,""!==D&&""!==l&&(m=D+o.settings.dateTimeSeparator+l)),o._setMatchFormat(p)),m},_clearButtonAction:function(){null!==this.oData.oInputElement&&this._setValueOfElement(""),this.settings.isInline||this._hidePicker("")},_setOutputOnIncrementOrDecrement:function(){b.cf._isValid(this.oData.oInputElement)&&this.settings.setValueInTextboxOnEveryClick&&this._setValueOfElement(this._setOutput())},_showPicker:function(t){var e=this;if(null===e.oData.oInputElement){e.oData.oInputElement=t,e.oData.iTabIndex=parseInt(b(t).attr("tabIndex"));var a,r,n,o,i,s,m,u,c=b(t).data("field")||"",d=b(t).data("min")||"",D=b(t).data("max")||"",l=b(t).data("format")||"",p=b(t).data("view")||"",h=b(t).data("startend")||"",M=b(t).data("startendelem")||"",g=e._getValueOfElement(t)||"";if(""!==p&&(b.cf._compare(p,"Popup")?e.setIsPopup(!0):e.setIsPopup(!1)),!e.settings.isPopup&&!e.settings.isInline){e._createPicker();var f=b(e.oData.oInputElement).offset().top+b(e.oData.oInputElement).outerHeight(),C=b(e.oData.oInputElement).offset().left,y=b(e.oData.oInputElement).outerWidth();b(e.element).css({position:"absolute",top:f,left:C,width:y,height:"auto"})}e.settings.beforeShow&&e.settings.beforeShow.call(e,t),c=b.cf._isValid(c)?c:e.settings.mode,e.settings.mode=c,b.cf._isValid(l)||(b.cf._compare(c,"date")?l=e.settings.dateFormat:b.cf._compare(c,"time")?l=e.settings.timeFormat:b.cf._compare(c,"datetime")&&(l=e.settings.dateTimeFormat)),e._matchFormat(c,l),e.oData.dMinValue=null,e.oData.dMaxValue=null,e.oData.bIs12Hour=!1,e.oData.bDateMode?(a=d||e.settings.minDate,r=D||e.settings.maxDate,e.oData.sDateFormat=l,b.cf._isValid(a)&&(e.oData.dMinValue=e._parseDate(a)),b.cf._isValid(r)&&(e.oData.dMaxValue=e._parseDate(r)),""!==h&&(b.cf._compare(h,"start")||b.cf._compare(h,"end"))&&""!==M&&1<=b(M).length&&""!==(n=e._getValueOfElement(b(M)))&&(o=e.settings.parseDateTimeString?e.settings.parseDateTimeString.call(e,n,c,l,b(M)):e._parseDate(n),b.cf._compare(h,"start")?b.cf._isValid(r)?e._compareDates(o,e.oData.dMaxValue)<0&&(e.oData.dMaxValue=new Date(o)):e.oData.dMaxValue=new Date(o):b.cf._compare(h,"end")&&(b.cf._isValid(a)?0",i&&(u+="×"),u+="
",u+="
");var c="";for(c+="
",n=0;n",c+="
",c+=""+a.settings.incrementButtonContent+"",a.settings.readonlyInputs?c+="":c+="",c+=""+a.settings.decrementButtonContent+"",a.settings.labels&&(c+="
"+a.settings.labels[d]+"
"),c+="
",c+="
"}c+="
";var D="";D+="");b(a.element).find(".dtpicker-subcontent").html(l),a._setCurrentDate(),a._addEventHandlersForPicker()},_addEventHandlersForPicker:function(){var e,a,r=this;if(r.settings.isInline||b(document).on("click.DateTimePicker",function(t){r.oData.bElemFocused&&r._hidePicker("")}),b(document).on("keydown.DateTimePicker",function(t){if(a=parseInt(t.keyCode?t.keyCode:t.which),!b(".dtpicker-compValue").is(":focus")&&9===a)return r._setButtonAction(!0),b("[tabIndex="+(r.oData.iTabIndex+1)+"]").focus(),!1;if(b(".dtpicker-compValue").is(":focus")){if(38===a)return e=b(".dtpicker-compValue:focus").parent().attr("class"),r._incrementDecrementActionsUsingArrowAndMouse(e,"inc"),!1;if(40===a)return e=b(".dtpicker-compValue:focus").parent().attr("class"),r._incrementDecrementActionsUsingArrowAndMouse(e,"dec"),!1}}),r.settings.isInline||b(document).on("keydown.DateTimePicker",function(t){a=parseInt(t.keyCode?t.keyCode:t.which),b(".dtpicker-compValue").is(":focus")||9===a||r._hidePicker("")}),b(".dtpicker-cont *").click(function(t){t.stopPropagation()}),r.settings.readonlyInputs||(b(".dtpicker-compValue").not(".month .dtpicker-compValue, .meridiem .dtpicker-compValue").keyup(function(){this.value=this.value.replace(/[^0-9\.]/g,"")}),b(".dtpicker-compValue").focus(function(){r.oData.bElemFocused=!0,b(this).select()}),b(".dtpicker-compValue").blur(function(){r._getValuesFromInputBoxes(),r._setCurrentDate(),r.oData.bElemFocused=!1;var t=b(this).parent().parent();setTimeout(function(){t.is(":last-child")&&!r.oData.bElemFocused&&r._setButtonAction(!1)},50)}),b(".dtpicker-compValue").keyup(function(t){var e,a=b(this),r=a.val(),n=r.length;a.parent().hasClass("day")||a.parent().hasClass("hour")||a.parent().hasClass("minutes")||a.parent().hasClass("meridiem")?2t.oData.dMaxValue.getTime()),null!==t.oData.dMinValue&&(c=m.getTime()t.oData.dMaxValue.getTime()),null!==t.oData.dMinValue&&(D=t.oData.dCurrentDate.getTime()r.oData.dMaxValue.getHours()||r.oData.iCurrentHour+1===r.oData.dMaxValue.getHours()&&r.oData.iCurrentMinutes>r.oData.dMaxValue.getMinutes())&&b(r.element).find(".hour .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"),r.oData.iCurrentHour>=r.oData.dMaxValue.getHours()&&r.oData.iCurrentMinutes+1>r.oData.dMaxValue.getMinutes()&&b(r.element).find(".minutes .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable")):((t=new Date(r.oData.iCurrentYear,r.oData.iCurrentMonth,r.oData.iCurrentDay+1,r.oData.iCurrentHour,r.oData.iCurrentMinutes,r.oData.iCurrentSeconds,0)).getTime()>r.oData.dMaxValue.getTime()&&b(r.element).find(".day .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"),(t=new Date(r.oData.iCurrentYear,r.oData.iCurrentMonth+1,r.oData.iCurrentDay,r.oData.iCurrentHour,r.oData.iCurrentMinutes,r.oData.iCurrentSeconds,0)).getTime()>r.oData.dMaxValue.getTime()&&b(r.element).find(".month .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"),(t=new Date(r.oData.iCurrentYear+1,r.oData.iCurrentMonth,r.oData.iCurrentDay,r.oData.iCurrentHour,r.oData.iCurrentMinutes,r.oData.iCurrentSeconds,0)).getTime()>r.oData.dMaxValue.getTime()&&b(r.element).find(".year .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"),(t=new Date(r.oData.iCurrentYear,r.oData.iCurrentMonth,r.oData.iCurrentDay,r.oData.iCurrentHour+1,r.oData.iCurrentMinutes,r.oData.iCurrentSeconds,0)).getTime()>r.oData.dMaxValue.getTime()&&b(r.element).find(".hour .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"),(t=new Date(r.oData.iCurrentYear,r.oData.iCurrentMonth,r.oData.iCurrentDay,r.oData.iCurrentHour,r.oData.iCurrentMinutes+1,r.oData.iCurrentSeconds,0)).getTime()>r.oData.dMaxValue.getTime()&&b(r.element).find(".minutes .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"),(t=new Date(r.oData.iCurrentYear,r.oData.iCurrentMonth,r.oData.iCurrentDay,r.oData.iCurrentHour,r.oData.iCurrentMinutes,r.oData.iCurrentSeconds+1,0)).getTime()>r.oData.dMaxValue.getTime()&&b(r.element).find(".seconds .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"))),null!==r.oData.dMinValue&&(r.oData.bTimeMode?((r.oData.iCurrentHour-1r.oData.dMaxValue.getHours()||e===r.oData.dMaxValue.getHours()&&a>r.oData.dMaxValue.getMinutes())&&b(r.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable")):t.getTime()>r.oData.dMaxValue.getTime()&&b(r.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable")),null!==r.oData.dMinValue&&(r.oData.bTimeMode?(a=r.oData.iCurrentMinutes,(ee.getHours()?a=3:t.getHours()===e.getHours()&&(t.getMinutes()e.getMinutes()&&(a=3)),a},_compareDateTime:function(t,e){var a=(t.getTime()-e.getTime())/6e4;return 0==a?a:a/Math.abs(a)},_determineMeridiemFromHourAndMinutes:function(t,e){return 12 @if(session()->get('message')) diff --git a/resources/views/Bilettm/Partials/EventItem.blade.php b/resources/views/Bilettm/Partials/EventItem.blade.php index 253aa5fc..2e710708 100644 --- a/resources/views/Bilettm/Partials/EventItem.blade.php +++ b/resources/views/Bilettm/Partials/EventItem.blade.php @@ -8,17 +8,19 @@

{{$event->start_date->format('d.m.Y')}}

-
{{$event->getSeansCount()}} seansa
+
{{$event->getSeansCount()}}

{{$event->title}}

{!! Markdown::parse($event->description) !!}
+ @if($event->starting_ticket_price)
Цена ot: {{$event->starting_ticket_price}} TMT Купить
+ @endif
diff --git a/resources/views/Bilettm/Partials/PublicFooter.blade.php b/resources/views/Bilettm/Partials/PublicFooter.blade.php index 0ae13878..16f80a14 100644 --- a/resources/views/Bilettm/Partials/PublicFooter.blade.php +++ b/resources/views/Bilettm/Partials/PublicFooter.blade.php @@ -38,25 +38,25 @@
From 3948712a6d69c290ea5b99bf4b635444a8e31414 Mon Sep 17 00:00:00 2001 From: merdiano Date: Sat, 28 Sep 2019 12:05:26 +0500 Subject: [PATCH 3/3] preparing for frontend modificaiton --- app/Http/Controllers/API/PublicController.php | 51 +++++++++++++++ .../Admin/CategoryCrudController.php | 6 +- .../Controllers/EventCheckoutController.php | 3 +- app/Http/Controllers/EventController.php | 1 + app/Http/Controllers/PublicController.php | 62 ++++++++++++++----- app/Http/routes.php | 6 +- app/Models/Category.php | 55 +++++++++++++++- app/Models/Event.php | 35 ++++++----- ...5_add_events_limit_to_categories_table.php | 32 ++++++++++ .../views/Bilettm/EventsList/cinema.blade.php | 31 ++++++++++ .../Bilettm/EventsList/concert.blade.php | 7 +++ .../Bilettm/EventsList/conference.blade.php | 7 +++ .../Bilettm/EventsList/exhibition.blade.php | 7 +++ .../views/Bilettm/EventsList/other.blade.php | 7 +++ .../EventsList/subCategoryList.blade.php | 56 +++++++++++++++++ .../theatre.blade.php} | 14 ++--- .../Bilettm/Layouts/EventsPage.blade.php | 36 +++++++++++ .../Bilettm/Partials/CinemaItem.blade.php | 12 ++-- .../Bilettm/Partials/HomeCinema.blade.php | 14 +++-- .../Bilettm/Partials/HomeMusical.blade.php | 10 +-- .../Bilettm/Partials/HomeTheatre.blade.php | 24 ++++--- .../Bilettm/Partials/MusicalItem.blade.php | 8 ++- .../Bilettm/Partials/PublicFooter.blade.php | 3 +- .../Bilettm/Partials/TheaterItem.blade.php | 4 +- .../views/Bilettm/Public/HomePage.blade.php | 10 ++- .../Partials/CreateOrderSection.blade.php | 2 +- .../Partials/EditEventForm.blade.php | 32 +++------- .../vendor/pagination/bootstrap-4.blade.php | 44 +++++++++++++ .../views/vendor/pagination/default.blade.php | 44 +++++++++++++ .../vendor/pagination/semantic-ui.blade.php | 36 +++++++++++ .../pagination/simple-bootstrap-4.blade.php | 28 +++++++++ .../pagination/simple-default.blade.php | 17 +++++ 32 files changed, 599 insertions(+), 105 deletions(-) create mode 100644 app/Http/Controllers/API/PublicController.php create mode 100644 database/migrations/2019_09_25_144735_add_events_limit_to_categories_table.php create mode 100644 resources/views/Bilettm/EventsList/cinema.blade.php create mode 100644 resources/views/Bilettm/EventsList/concert.blade.php create mode 100644 resources/views/Bilettm/EventsList/conference.blade.php create mode 100644 resources/views/Bilettm/EventsList/exhibition.blade.php create mode 100644 resources/views/Bilettm/EventsList/other.blade.php create mode 100644 resources/views/Bilettm/EventsList/subCategoryList.blade.php rename resources/views/Bilettm/{Public/EventsPage.blade.php => EventsList/theatre.blade.php} (81%) create mode 100644 resources/views/Bilettm/Layouts/EventsPage.blade.php create mode 100644 resources/views/vendor/pagination/bootstrap-4.blade.php create mode 100644 resources/views/vendor/pagination/default.blade.php create mode 100644 resources/views/vendor/pagination/semantic-ui.blade.php create mode 100644 resources/views/vendor/pagination/simple-bootstrap-4.blade.php create mode 100644 resources/views/vendor/pagination/simple-default.blade.php diff --git a/app/Http/Controllers/API/PublicController.php b/app/Http/Controllers/API/PublicController.php new file mode 100644 index 00000000..a68ed9aa --- /dev/null +++ b/app/Http/Controllers/API/PublicController.php @@ -0,0 +1,51 @@ +children($parent_id); + else + $categories->main(); + + return $categories->get(); + } + + public function getEvents($cat_id = null, Request $request){ + $date = $request->get('date'); + //$cat_id = $request->get('cat_id'); + + $e_query = Event::onLive(); + if(!empty($cat_id)){ + $category = Category::findOrFail($cat_id); + + if($category->parent_id > 0){ + $e_query->where('sub_category_id',$category->id); + } + else{ + $e_query->where('category_id',$category->id); + } + } + if(!empty($date)){ + $e_query->whereDate('start_date','>=',Carbon::parse($date)); + } + + return $e_query->select('id','title','start_date') + ->onLive() + ->paginate(8); + } + + public function getEvent($id){ + $event = Event::with('images')->findOrFail($id); + return $event; + } +} diff --git a/app/Http/Controllers/Admin/CategoryCrudController.php b/app/Http/Controllers/Admin/CategoryCrudController.php index 931bf3b6..3178bdb8 100644 --- a/app/Http/Controllers/Admin/CategoryCrudController.php +++ b/app/Http/Controllers/Admin/CategoryCrudController.php @@ -38,13 +38,15 @@ class CategoryCrudController extends CrudController ['name'=>'id','type'=>'text','label'=>'Id'], ['name'=>'title_tm','type'=>'text','label'=>'Title tm'], ['name'=>'title_ru','type'=>'text','label'=>'Title ru'], - ['name'=>'view_type','type'=>'text','label'=>'Type'], + ['name'=>'view_type','type'=>'text','label'=>'View Type'], + ['name'=>'events_limit','type'=>'text','label'=>'Event limit'], ['name'=>'parent_id','type'=>'text','label'=>'Parent'], ]); $this->crud->addFields([ ['name'=>'title_tm','type'=>'text','label'=>'Title tm'], ['name'=>'title_ru','type'=>'text','label'=>'Title ru'], - ['name'=>'view_type','type' =>'enum', 'label'=>'Type'] + ['name'=>'view_type','type' =>'enum', 'label'=>'View Type'], + ['name'=>'events_limit','type'=>'number','label'=>'Event limit'], ]); $this->crud->enableReorder('title_tm', 2); $this->crud->allowAccess('reorder'); diff --git a/app/Http/Controllers/EventCheckoutController.php b/app/Http/Controllers/EventCheckoutController.php index b11959d3..4a3b1884 100644 --- a/app/Http/Controllers/EventCheckoutController.php +++ b/app/Http/Controllers/EventCheckoutController.php @@ -790,7 +790,8 @@ class EventCheckoutController extends Controller return view('Public.ViewEvent.Embedded.EventPageViewOrder', $data); } - return view('Bilettm.ViewEvent.ViewOrderPage', $data); +// return view('Bilettm.ViewEvent.ViewOrderPage', $data); + return view('Public.ViewEvent.EventPageViewOrder', $data); } /** diff --git a/app/Http/Controllers/EventController.php b/app/Http/Controllers/EventController.php index 770e95b6..67cfecbe 100644 --- a/app/Http/Controllers/EventController.php +++ b/app/Http/Controllers/EventController.php @@ -229,6 +229,7 @@ class EventController extends MyBaseController $event->description = strip_tags($request->get('description')); $event->start_date = $request->get('start_date'); $event->category_id = $request->get('category_id'); + $event->sub_category_id = $request->get('sub_category_id'); $event->google_tag_manager_code = $request->get('google_tag_manager_code'); /* diff --git a/app/Http/Controllers/PublicController.php b/app/Http/Controllers/PublicController.php index 26ff429f..63e18c5b 100644 --- a/app/Http/Controllers/PublicController.php +++ b/app/Http/Controllers/PublicController.php @@ -22,23 +22,20 @@ use Carbon\Carbon; class PublicController extends Controller { public function showHomePage(){ - $cinema = Event::cinema() - ->onLive() - ->take(11) - ->get(); + $cinema = Category::where('view_type','cinema') + ->categoryLiveEvents(21) + ->first(); - $theatre = Event::theatre() - ->onLive() - ->take(6) - ->get(); + $theatre = Category::where('view_type','theatre') + ->categoryLiveEvents(6) + ->first(); - $musical = Event::musical() - ->onLive() - ->take(8) - ->get(); + $musical =Category::where('view_type','concert') + ->categoryLiveEvents(12) + ->first(); $sliders = Slider::where('active',1)->get(); - +//dd($cinema->events->first()); return view('Bilettm.Public.HomePage')->with([ 'cinema' => $cinema, 'theatre' => $theatre, @@ -85,6 +82,37 @@ class PublicController extends Controller ]); } + public function showCategoryEvents($cat_id, Request $request){ + $date = $request->get('date'); + $popular = $request->get('popular'); + + $category = Category::select('id','title_tm','title_ru','view_type','events_limit','parent_id') + ->findOrFail($cat_id); + + if($category->parent_id>0){ + $events = $category->cat_events() + ->onLive() + ->orderBy($popular ? 'start_date' : 'views') + ->get(); + return view("Bilettm.EventsList.subCategoryList")->with([ + 'category' => $category, + 'events' => $events + ]); + } + else{ + $subCats = $category->children() + ->withLiveEvents($date,$category->events_limit,$popular) + ->get(); + +// $events = $e_query->with('images')->paginate(5); +// dd($subCats->first()->cat_events); + return view("Bilettm.EventsList.".$category->view_type)->with([ + 'sub_cats' => $subCats, + 'category' => $category, + ]); + } + } + public function search(SearchRequest $request){ //todo implement with elastick search and scout $query = $request->get('q'); @@ -114,12 +142,16 @@ class PublicController extends Controller public function subscribe(SubscribeRequest $request){ $email = $request->get('email'); + //todo validate email $subscribe = Subscriber::updateOrCreate(['email'=>$email,'active'=>1]); if($subscribe){ - session()->flash('success','Subscription successfully'); + session()->flash('message','Subscription successfully'); } - return redirect()->back(); + return response()->json([ + 'status' => 'success', + 'message' => 'Subscription successfully', + ]); } } \ No newline at end of file diff --git a/app/Http/routes.php b/app/Http/routes.php index 60da8244..177a67e9 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -114,12 +114,12 @@ Route::group( /** * Events by category */ - Route::get('/{cat_id?}/{cat_slug?}', [ + Route::get('/{cat_id}/{cat_slug?}', [ 'as' => 'showCategoryEventsPage', - 'uses' => 'PublicController@showEvents', + 'uses' => 'PublicController@showCategoryEvents', ]); - Route::post('/{cat_id?}/{cat_slug?}', [ + Route::post('/{cat_id}/{cat_slug?}', [ 'as' => 'postEventsPage', 'uses' => 'PublicController@showEvents', ]); diff --git a/app/Models/Category.php b/app/Models/Category.php index 71eda756..8abae7d2 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -9,7 +9,9 @@ namespace App\Models; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Config; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; class Category extends \Illuminate\Database\Eloquent\Model{ @@ -58,9 +60,41 @@ class Category extends \Illuminate\Database\Eloquent\Model{ return $this->hasMany(\App\Models\Event::class); } + public function cat_events(){ + return $this->hasMany(\App\Models\Event::class,'sub_category_id') + ->withCount(['stats as views' => function($q){ + $q->select(DB::raw("SUM(views) as v")); + }]); + } + + public function scopeCategoryLiveEvents($query,$limit){ +// dd($this->view_type); + return $query->select('id','title_tm','title_ru','lft') + ->orderBy('lft') + ->with(['events' => function($q) use($limit){ + $q->select('id','title','description','category_id','sub_category_id','start_date') + ->limit($limit) + ->with('starting_ticket') + ->withCount(['stats as views' => function($q){ + $q->select(DB::raw("SUM(views) as v")); + }]) + ->onLive(); + }]); + } + + public function parent(){ + return $this->belongsTo(Category::class,'parent_id'); + } + + public function children(){ + return $this->hasMany(Category::class,'parent_id') + ->select('id','title_ru','title_tm','parent_id','lft') + ->orderBy('lft'); + } public function scopeMain($query){ return $query->where('depth',1)->orderBy('lft','asc'); } + public function scopeSub($query){ return $query->where('depth',2)->orderBy('lft','asc'); } @@ -69,7 +103,24 @@ class Category extends \Illuminate\Database\Eloquent\Model{ return $query->where('parent_id',$parent_id)->orderBy('lft','asc'); } - public function parent(){ - return $this->belongsTo(Category::class,'parent_id'); + public function scopeWithLiveEvents($query, $date = false, $popular = true){ + $limit = 8; + return $query->with(['cat_events' => function($query) use ($date, $limit, $popular) { + $query->select('id','title','description','category_id','sub_category_id','start_date') + ->limit($limit) + ->with('starting_ticket') + ->withCount(['stats as views' => function($q){ + $q->select(DB::raw("SUM(views) as v"));}]) + ->onLive();//event scope onLive get only live events + if($date) + $query->whereDate('end_date','>=',Carbon::parse($date)); + + if($popular) + $query->orderBy('views','desc'); + else + $query->orderBy('start_date'); + }]); + } + } \ No newline at end of file diff --git a/app/Models/Event.php b/app/Models/Event.php index f570004f..7e34d987 100644 --- a/app/Models/Event.php +++ b/app/Models/Event.php @@ -4,6 +4,7 @@ namespace App\Models; use Carbon\Carbon; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Facades\DB; use Str; use URL; @@ -107,6 +108,14 @@ class Event extends MyBaseModel return $this->hasMany(\App\Models\Ticket::class); } + public function starting_ticket(){ + return $this->tickets() + ->select('id','ticket_date','event_id','price') + ->whereDate('ticket_date','>=',Carbon::now(\config('app.timezone'))) + ->orderBy('ticket_date') + ->orderBy('price') + ->limit(2); // limit 1 returns null ??? + } /** * The stats associated with the event. * @@ -117,6 +126,9 @@ class Event extends MyBaseModel return $this->hasMany(\App\Models\EventStats::class); } + public function views(){ + return $this->stats()->sum('views'); + } /** * The affiliates associated with the event. * @@ -464,21 +476,14 @@ ICSTemplate; return (is_null($this->access_codes()->where('id', $accessCodeId)->first()) === false); } - - public function scopeCinema($query){ - return $query->where('event_image_position','cinema'); - } - - public function scopeTheatre($query){ - return $query->where('event_image_position','theatre'); - } - - public function scopeMusical($query){ - return $query->where('event_image_position','musical'); - } - public function scopeOnLive($query){ - $query->whereDate('end_date','>',Carbon::now('Asia/Ashgabat')); - return $query->where('is_live',1)->with('images'); + return$query->whereDate('end_date','>=',Carbon::now(\config('app.timezone'))) + ->where('is_live',1) + ->withCount(['images as image_url' => function($q){ + $q->select(DB::raw("image_path as imgurl")) + ->orderBy('created_at','desc') + ->limit(1); + }] ); } + } diff --git a/database/migrations/2019_09_25_144735_add_events_limit_to_categories_table.php b/database/migrations/2019_09_25_144735_add_events_limit_to_categories_table.php new file mode 100644 index 00000000..d813381a --- /dev/null +++ b/database/migrations/2019_09_25_144735_add_events_limit_to_categories_table.php @@ -0,0 +1,32 @@ +smallInteger('events_limit')->default(6); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('categories', function (Blueprint $table) { + $table->dropColumn('events_limit'); + }); + } +} diff --git a/resources/views/Bilettm/EventsList/cinema.blade.php b/resources/views/Bilettm/EventsList/cinema.blade.php new file mode 100644 index 00000000..eafe7a51 --- /dev/null +++ b/resources/views/Bilettm/EventsList/cinema.blade.php @@ -0,0 +1,31 @@ +@extends('Bilettm.Layouts.EventsPage') + +@push('inner_content') + +@foreach($sub_cats as $cat) +
+
+

{{$cat->title}}

+
+ Весь репертуар +
+
+ + +
+
+
+ @foreach($cat->cat_events as $event) +
+ @include('Bilettm.Partials.CinemaItem') +
+ @endforeach +
+
+
+ +
+
+@endforeach + +@endpush \ No newline at end of file diff --git a/resources/views/Bilettm/EventsList/concert.blade.php b/resources/views/Bilettm/EventsList/concert.blade.php new file mode 100644 index 00000000..d98e1098 --- /dev/null +++ b/resources/views/Bilettm/EventsList/concert.blade.php @@ -0,0 +1,7 @@ + +
+
+
+

{{$category->title}}

+
+ Весь репертуар +
+
+ + + + + +
+
+
+ @foreach($events as $event) +
+ @include('Bilettm.Partials.CinemaItem') +
+ @endforeach +
+
+
+ +
+
+
+ +@endpush \ No newline at end of file diff --git a/resources/views/Bilettm/Public/EventsPage.blade.php b/resources/views/Bilettm/EventsList/theatre.blade.php similarity index 81% rename from resources/views/Bilettm/Public/EventsPage.blade.php rename to resources/views/Bilettm/EventsList/theatre.blade.php index 5ed098cf..bc3bc84c 100644 --- a/resources/views/Bilettm/Public/EventsPage.blade.php +++ b/resources/views/Bilettm/EventsList/theatre.blade.php @@ -1,7 +1,5 @@ -@extends('Bilettm.Layouts.BilettmLayout') -@section('content') - {{\DaveJamesMiller\Breadcrumbs\Facades\Breadcrumbs::render('category',$category)}} - +@extends('Bilettm.Layouts.EventsPage') +@push('inner_content')
@@ -25,9 +23,9 @@
- @foreach($events as $event) - @include('Bilettm.Partials.EventItem') - @endforeach + @foreach($events as $event) + @include('Bilettm.Partials.EventItem') + @endforeach
@@ -36,4 +34,4 @@
-@endsection \ No newline at end of file +@endpush \ No newline at end of file diff --git a/resources/views/Bilettm/Layouts/EventsPage.blade.php b/resources/views/Bilettm/Layouts/EventsPage.blade.php new file mode 100644 index 00000000..6464a990 --- /dev/null +++ b/resources/views/Bilettm/Layouts/EventsPage.blade.php @@ -0,0 +1,36 @@ +@extends('Bilettm.Layouts.BilettmLayout') +@section('content') + {{\DaveJamesMiller\Breadcrumbs\Facades\Breadcrumbs::render('category',$category)}} +
+
+ + + @stack('inner_content') + +
+
+@endsection \ No newline at end of file diff --git a/resources/views/Bilettm/Partials/CinemaItem.blade.php b/resources/views/Bilettm/Partials/CinemaItem.blade.php index 1e60807f..15b25624 100644 --- a/resources/views/Bilettm/Partials/CinemaItem.blade.php +++ b/resources/views/Bilettm/Partials/CinemaItem.blade.php @@ -1,13 +1,12 @@ -@if(!empty($event))
- +

{{$event->title}}

В кино с {{$event->start_date->format('d M')}}

-

{{$event->description}}

+

{!! Markdown::parse($event->description) !!}

+ {{$event->views}} Views - Цена ot: {{$event->starting_ticket_price}} TMT + @if(!empty($event->starting_ticket)) + Цена ot: {{$event->starting_ticket->first()->price ?? 'n/a'}} TMT + @endif
-@endif \ No newline at end of file diff --git a/resources/views/Bilettm/Partials/HomeCinema.blade.php b/resources/views/Bilettm/Partials/HomeCinema.blade.php index 17e08125..96e696bf 100644 --- a/resources/views/Bilettm/Partials/HomeCinema.blade.php +++ b/resources/views/Bilettm/Partials/HomeCinema.blade.php @@ -1,8 +1,9 @@ +@if(!empty($cinema))
-

Кинотеатры

+

{{$cinema->title}}

- Посмотреть все + Посмотреть все
@@ -10,11 +11,11 @@
- @include('Bilettm.Partials.CinemaItem',['event'=>$cinema->shift(1),'size'=>'big']) + @include('Bilettm.Partials.CinemaItem',['event'=>$cinema->events->first(),'size'=>'big'])
- @foreach($cinema->slice(0,4) as $cinemaEvent) + @foreach($cinema->events->slice(1,4) as $cinemaEvent)
@include('Bilettm.Partials.CinemaItem',['event'=>$cinemaEvent]) @@ -28,7 +29,7 @@ @if($cinema->count()>4)
- @foreach($cinema->slice(4) as $cinemaEvent) + @foreach($cinema->events->slice(5) as $cinemaEvent)
@include('Bilettm.Partials.CinemaItem',['event'=>$cinemaEvent])
@@ -39,4 +40,5 @@
-
\ No newline at end of file + +@endif \ No newline at end of file diff --git a/resources/views/Bilettm/Partials/HomeMusical.blade.php b/resources/views/Bilettm/Partials/HomeMusical.blade.php index 5318f3f0..5c89f50d 100644 --- a/resources/views/Bilettm/Partials/HomeMusical.blade.php +++ b/resources/views/Bilettm/Partials/HomeMusical.blade.php @@ -1,21 +1,22 @@ +@if(!empty($musical))
-

Концерты

+

{{$musical->title}}

- Посмотреть все + Посмотреть все
+@endif \ No newline at end of file diff --git a/resources/views/Bilettm/Partials/HomeTheatre.blade.php b/resources/views/Bilettm/Partials/HomeTheatre.blade.php index 7696899b..6eb6a299 100644 --- a/resources/views/Bilettm/Partials/HomeTheatre.blade.php +++ b/resources/views/Bilettm/Partials/HomeTheatre.blade.php @@ -1,26 +1,33 @@ +@if(!empty($theatre))
-

Театоры

+

{{$theatre->title}}

- Посмотреть все + Посмотреть все
-
-
-
\ No newline at end of file + +@endif \ No newline at end of file diff --git a/resources/views/Bilettm/Partials/MusicalItem.blade.php b/resources/views/Bilettm/Partials/MusicalItem.blade.php index dfcbf489..5fbb40b3 100644 --- a/resources/views/Bilettm/Partials/MusicalItem.blade.php +++ b/resources/views/Bilettm/Partials/MusicalItem.blade.php @@ -1,7 +1,7 @@
- +
@@ -19,11 +19,13 @@ - {{$event->views_count}} Views + {{$event->views}} Views - Цена ot: {{$event->starting_ticket_price}} TMT + @if(!empty($event->starting_ticket)) + Цена ot: {{$event->starting_ticket->first()->price ?? 'n/a'}} TMT + @endif
diff --git a/resources/views/Bilettm/Partials/PublicFooter.blade.php b/resources/views/Bilettm/Partials/PublicFooter.blade.php index 16f80a14..3a7c42f9 100644 --- a/resources/views/Bilettm/Partials/PublicFooter.blade.php +++ b/resources/views/Bilettm/Partials/PublicFooter.blade.php @@ -6,7 +6,8 @@