added categoriesSeeder to databaseSeeder

permissionmanager configed to use App/User
This commit is contained in:
merdiano 2019-08-09 23:16:55 +05:00
commit 35a0e3123d
239 changed files with 5739 additions and 5099 deletions

1
.gitignore vendored
View File

@ -12,5 +12,6 @@ installed
_ide_helper.php
*.swp
# Do not include backup lang files
resources/lang/*/[a-zA-Z]*20[0-9][0-9][0-1][0-9][0-3][0-9]_[0-2][0-9][0-5][0-9][0-5][0-9].php

View File

@ -7,6 +7,7 @@ module.exports = function (grunt) {
development: {
options: {
compress: true,
javascriptEnabled: true,
},
files: {
"./public/assets/stylesheet/application.css": "./public/assets/stylesheet/application.less",
@ -70,17 +71,22 @@ module.exports = function (grunt) {
}
},
},
phpunit: {
classes: {},
options: {}
},
watch: {
scripts: {
files: ['./public/assets/**/*.js'],
tasks: ['default'],
options: {
spawn: false,
},
},
}
});
// Plugin loading
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-uglify');
//grunt.loadNpmTasks('grunt-phpunit');
grunt.loadNpmTasks('grunt-contrib-watch');
// Task definition
grunt.registerTask('default', ['less', 'concat']);
grunt.registerTask('deploy', ['less', 'concat', 'uglify']);

28
app/Helpers/strings.php Normal file
View File

@ -0,0 +1,28 @@
<?php
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;
}
}

View File

@ -0,0 +1,117 @@
<?php
namespace App\Http\Controllers;
use App\Models\Event;
use App\Models\EventAccessCodes;
use Illuminate\Contracts\View\Factory;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
/*
Attendize.com - Event Management & Ticketing
*/
class EventAccessCodesController extends MyBaseController
{
/**
* @param $event_id
* @return mixed
*/
public function show($event_id)
{
$event = Event::scope()->findOrFail($event_id);
return view('ManageEvent.AccessCodes', [
'event' => $event,
]);
}
/**
* @param $event_id
* @return Factory|View
*/
public function showCreate($event_id)
{
return view('ManageEvent.Modals.CreateAccessCode', [
'event' => Event::scope()->find($event_id),
]);
}
/**
* Creates a ticket
*
* @param Request $request
* @param $event_id
* @return JsonResponse
*/
public function postCreate(Request $request, $event_id)
{
$eventAccessCode = new EventAccessCodes();
if (!$eventAccessCode->validate($request->all())) {
return response()->json([
'status' => 'error',
'messages' => $eventAccessCode->errors(),
]);
}
// Checks for no duplicates
$newAccessCode = strtoupper(strip_tags($request->get('code')));
if (EventAccessCodes::findFromCode($newAccessCode, $event_id)->count() > 0) {
return response()->json([
'status' => 'error',
'messages' => [
'code' => [ trans('AccessCodes.unique_error') ],
],
]);
}
// Saves the new access code if validation and dupe check passed
$eventAccessCode->event_id = $event_id;
$eventAccessCode->code = $newAccessCode;
$eventAccessCode->save();
session()->flash('message', trans('AccessCodes.success_message'));
return response()->json([
'status' => 'success',
'id' => $eventAccessCode->id,
'message' => trans("Controllers.refreshing"),
'redirectUrl' => route('showEventAccessCodes', [ 'event_id' => $event_id ]),
]);
}
/**
* @param integer $event_id
* @param integer $access_code_id
* @return JsonResponse
* @throws \Exception
*/
public function postDelete($event_id, $access_code_id)
{
/** @var Event $event */
$event = Event::scope()->findOrFail($event_id);
if ($event->hasAccessCode($access_code_id)) {
/** @var EventAccessCodes $accessCode */
$accessCode = EventAccessCodes::find($access_code_id);
if ($accessCode->usage_count > 0) {
return response()->json([
'status' => 'error',
'message' => trans('AccessCodes.cannot_delete_used_code'),
]);
}
$accessCode->delete();
}
session()->flash('message', trans('AccessCodes.delete_message'));
return response()->json([
'status' => 'success',
'message' => trans("Controllers.refreshing"),
'redirectUrl' => route('showEventAccessCodes', [ 'event_id' => $event_id ]),
]);
}
}

View File

@ -591,6 +591,7 @@ class EventAttendeesController extends MyBaseController
'attendees.first_name',
'attendees.last_name',
'attendees.email',
'attendees.private_reference_number',
'orders.order_reference',
'tickets.title',
'orders.created_at',
@ -607,6 +608,7 @@ class EventAttendeesController extends MyBaseController
'First Name',
'Last Name',
'Email',
'Ticket ID',
'Order Reference',
'Ticket Type',
'Purchase Date',

View File

@ -168,7 +168,7 @@ class EventCheckInController extends MyBaseController
if ($attendee->has_arrived) {
return response()->json([
'status' => 'error',
'message' => trans("Controllers.attendee_already_checked_in", ["time"=> $attendee->arrival_time->format(env("DEFAULT_DATETIME_FORMAT"))])
'message' => trans("Controllers.attendee_already_checked_in", ["time"=> $attendee->arrival_time->format(config("attendize.default_datetime_format"))])
]);
}

View File

@ -183,10 +183,17 @@ class EventCheckoutController extends Controller
if (config('attendize.enable_dummy_payment_gateway') == TRUE) {
$activeAccountPaymentGateway = new AccountPaymentGateway();
$activeAccountPaymentGateway->fill(['payment_gateway_id' => config('attendize.payment_gateway_dummy')]);
$paymentGateway= $activeAccountPaymentGateway;
$paymentGateway = $activeAccountPaymentGateway;
} else {
$activeAccountPaymentGateway = $event->account->active_payment_gateway->count() ? $event->account->active_payment_gateway->firstOrFail() : false;
$paymentGateway = $event->account->active_payment_gateway->count() ? $event->account->active_payment_gateway->payment_gateway : false;
$activeAccountPaymentGateway = $event->account->getGateway($event->account->payment_gateway_id);
//if no payment gateway configured and no offline pay, don't go to the next step and show user error
if (empty($activeAccountPaymentGateway) && !$event->enable_offline_payments) {
return response()->json([
'status' => 'error',
'message' => 'No payment gateway configured',
]);
}
$paymentGateway = $activeAccountPaymentGateway ? $activeAccountPaymentGateway->payment_gateway : false;
}
/*
@ -299,6 +306,28 @@ class EventCheckoutController extends Controller
$order->rules = $order->rules + $validation_rules;
$order->messages = $order->messages + $validation_messages;
if ($request->has('is_business') && $request->get('is_business')) {
// Dynamic validation on the new business fields, only gets validated if business selected
$businessRules = [
'business_name' => 'required',
'business_tax_number' => 'required',
'business_address_line1' => 'required',
'business_address_city' => 'required',
'business_address_code' => 'required',
];
$businessMessages = [
'business_name.required' => 'Please enter a valid business name',
'business_tax_number.required' => 'Please enter a valid business tax number',
'business_address_line1.required' => 'Please enter a valid street address',
'business_address_city.required' => 'Please enter a valid city',
'business_address_code.required' => 'Please enter a valid code',
];
$order->rules = $order->rules + $businessRules;
$order->messages = $order->messages + $businessMessages;
}
if (!$order->validate($request->all())) {
return response()->json([
'status' => 'error',
@ -382,7 +411,7 @@ class EventCheckoutController extends Controller
break;
default:
Log::error('No payment gateway configured.');
return repsonse()->json([
return response()->json([
'status' => 'error',
'message' => 'No payment gateway configured.'
]);
@ -456,7 +485,7 @@ class EventCheckoutController extends Controller
{
if ($request->get('is_payment_cancelled') == '1') {
session()->flash('message', 'You cancelled your payment. You may try again.');
session()->flash('message', trans('Event.payment_cancelled'));
return response()->redirectToRoute('showEventCheckout', [
'event_id' => $event_id,
'is_payment_cancelled' => 1,
@ -508,7 +537,6 @@ class EventCheckoutController extends Controller
$attendee_increment = 1;
$ticket_questions = isset($request_data['ticket_holder_questions']) ? $request_data['ticket_holder_questions'] : [];
/*
* Create the order
*/
@ -518,9 +546,9 @@ class EventCheckoutController extends Controller
if ($ticket_order['order_requires_payment'] && !isset($request_data['pay_offline'])) {
$order->payment_gateway_id = $ticket_order['payment_gateway']->id;
}
$order->first_name = strip_tags($request_data['order_first_name']);
$order->last_name = strip_tags($request_data['order_last_name']);
$order->email = $request_data['order_email'];
$order->first_name = sanitise($request_data['order_first_name']);
$order->last_name = sanitise($request_data['order_last_name']);
$order->email = sanitise($request_data['order_email']);
$order->order_status_id = isset($request_data['pay_offline']) ? config('attendize.order_awaiting_payment') : config('attendize.order_complete');
$order->amount = $ticket_order['order_total'];
$order->booking_fee = $ticket_order['booking_fee'];
@ -530,6 +558,19 @@ class EventCheckoutController extends Controller
$order->event_id = $ticket_order['event_id'];
$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']);
}
// Calculating grand total including tax
$orderService = new OrderService($ticket_order['order_total'], $ticket_order['total_booking_fee'], $event);
$orderService->calculateFinalCosts();
@ -666,6 +707,11 @@ class EventCheckoutController extends Controller
//forget the order in the session
session()->forget('ticket_order_' . $event->id);
/*
* Remove any tickets the user has reserved after they have been ordered for the user
*/
ReservedTickets::where('session_id', '=', session()->getId())->delete();
// Queue up some tasks - Emails to be sent, PDFs etc.
Log::info('Firing the event');
event(new OrderCompletedEvent($order));

View File

@ -11,6 +11,7 @@ use Illuminate\Http\Request;
use Image;
use Log;
use Validator;
use Spatie\GoogleCalendar\Event as GCEvent;
class EventController extends MyBaseController
{
@ -222,10 +223,13 @@ class EventController extends MyBaseController
}
$event->is_live = $request->get('is_live');
$event->currency_id = $request->get('currency_id');
$event->title = $request->get('title');
$event->description = strip_tags($request->get('description'));
$event->start_date = $request->get('start_date');
$event->category_id = $request->get('category_id');
$event->google_tag_manager_code = $request->get('google_tag_manager_code');
/*
* If the google place ID is the same as before then don't update the venue
*/
@ -266,6 +270,7 @@ class EventController extends MyBaseController
}
$event->end_date = $request->get('end_date');
$event->event_image_position = $request->get('event_image_position');
if ($request->get('remove_current_image') == '1') {
EventImage::where('event_id', '=', $event->id)->delete();
@ -342,4 +347,20 @@ class EventController extends MyBaseController
]);
}
}
/**
* Puplish event and redirect
* @param Integer|false $event_id
* @return \Illuminate\Http\RedirectResponse
*/
public function makeEventLive($event_id = false) {
$event = Event::scope()->findOrFail($event_id);
$event->is_live = 1;
$event->save();
\Session::flash('message', trans('Event.go_live'));
return redirect()->action(
'EventDashboardController@showDashboard', ['event_id' => $event_id]
);
}
}

View File

@ -6,6 +6,7 @@ use App\Models\Category;
use App\Models\Event;
use File;
use Illuminate\Http\Request;
use App\Models\Currency;
use Image;
use Validator;
@ -21,6 +22,7 @@ class EventCustomizeController extends MyBaseController
public function showCustomize($event_id = '', $tab = '')
{
$data = $this->getEventViewData($event_id, [
'currencies' => Currency::pluck('title', 'id'),
'available_bg_images' => $this->getAvailableBackgroundImages(),
'available_bg_images_thumbs' => $this->getAvailableBackgroundImagesThumbs(),
'tab' => $tab,

View File

@ -2,12 +2,12 @@
namespace App\Http\Controllers;
use DateTime;
use DatePeriod;
use DateInterval;
use Carbon\Carbon;
use App\Models\Event;
use App\Models\EventStats;
use Carbon\Carbon;
use DateInterval;
use DatePeriod;
use DateTime;
class EventDashboardController extends MyBaseController
{
@ -89,4 +89,15 @@ class EventDashboardController extends MyBaseController
return view('ManageEvent.Dashboard', $data);
}
/**
* Redirect to event dashboard
* @param Integer|false $event_id
* @return \Illuminate\Http\RedirectResponse
*/
public function redirectToDashboard($event_id = false) {
return redirect()->action(
'EventDashboardController@showDashboard', ['event_id' => $event_id]
);
}
}

View File

@ -350,10 +350,9 @@ class EventOrdersController extends MyBaseController
$excel->sheet('orders_sheet_1', function ($sheet) use ($event) {
\DB::connection()->setFetchMode(\PDO::FETCH_ASSOC);
$yes = strtoupper(trans("basic.yes"));
$no = strtoupper(trans("basic.no"));
$data = DB::table('orders')
$orderRows = DB::table('orders')
->where('orders.event_id', '=', $event->id)
->where('orders.event_id', '=', $event->id)
->select([
@ -367,9 +366,14 @@ class EventOrdersController extends MyBaseController
'orders.amount_refunded',
'orders.created_at',
])->get();
//DB::raw("(CASE WHEN UNIX_TIMESTAMP(`attendees.arrival_time`) = 0 THEN '---' ELSE 'd' END) AS `attendees.arrival_time`"))
$sheet->fromArray($data);
$exportedOrders = $orderRows->toArray();
array_walk($exportedOrders, function(&$value) {
$value = (array)$value;
});
$sheet->fromArray($exportedOrders);
// Add headings to first row
$sheet->row(1, [

View File

@ -111,6 +111,15 @@ class EventTicketsController extends MyBaseController
$ticket->save();
// Attach the access codes to the ticket if it's hidden and the code ids have come from the front
if ($ticket->is_hidden) {
$ticketAccessCodes = $request->get('ticket_access_codes', []);
if (empty($ticketAccessCodes) === false) {
// Sync the access codes on the ticket
$ticket->event_access_codes()->attach($ticketAccessCodes);
}
}
session()->flash('message', 'Successfully Created Ticket');
return response()->json([
@ -223,6 +232,9 @@ class EventTicketsController extends MyBaseController
]);
}
// Check if the ticket visibility changed on update
$ticketPreviouslyHidden = (bool)$ticket->is_hidden;
$ticket->title = $request->get('title');
$ticket->quantity_available = !$request->get('quantity_available') ? null : $request->get('quantity_available');
$ticket->price = $request->get('price');
@ -235,6 +247,19 @@ class EventTicketsController extends MyBaseController
$ticket->save();
// Attach the access codes to the ticket if it's hidden and the code ids have come from the front
if ($ticket->is_hidden) {
$ticketAccessCodes = $request->get('ticket_access_codes', []);
if (empty($ticketAccessCodes) === false) {
// Sync the access codes on the ticket
$ticket->event_access_codes()->detach();
$ticket->event_access_codes()->attach($ticketAccessCodes);
}
} else if ($ticketPreviouslyHidden) {
// Delete access codes on ticket if the visibility changed to visible
$ticket->event_access_codes()->detach();
}
return response()->json([
'status' => 'success',
'id' => $ticket->id,

View File

@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Attendize\Utils;
use App\Models\Affiliate;
use App\Models\Event;
use App\Models\EventAccessCodes;
use App\Models\EventStats;
use Auth;
use Cookie;
@ -32,8 +33,8 @@ class EventViewController extends Controller
}
$data = [
'event' => $event,
'tickets' => $event->tickets()->where('is_hidden', 0)->orderBy('sort_order', 'asc')->get(),
'event' => $event,
'tickets' => $event->tickets()->orderBy('sort_order', 'asc')->get(),
'is_embedded' => 0,
];
/*
@ -136,4 +137,47 @@ class EventViewController extends Controller
'Content-Disposition' => 'attachment; filename="event.ics'
]);
}
/**
* @param Request $request
* @param $event_id
* @return \Illuminate\Http\JsonResponse
*/
public function postShowHiddenTickets(Request $request, $event_id)
{
$event = Event::findOrFail($event_id);
$accessCode = strtoupper(strip_tags($request->get('access_code')));
if (!$accessCode) {
return response()->json([
'status' => 'error',
'message' => trans('AccessCodes.valid_code_required'),
]);
}
$unlockedHiddenTickets = $event->tickets()
->where('is_hidden', true)
->orderBy('sort_order', 'asc')
->get()
->filter(function($ticket) use ($accessCode) {
// Only return the hidden tickets that match the access code
return ($ticket->event_access_codes()->where('code', $accessCode)->get()->count() > 0);
});
if ($unlockedHiddenTickets->count() === 0) {
return response()->json([
'status' => 'error',
'message' => trans('AccessCodes.no_tickets_matched'),
]);
}
// Bump usage count
EventAccessCodes::logUsage($event_id, $accessCode);
return view('Public.ViewEvent.Partials.EventHiddenTicketsSelection', [
'event' => $event,
'tickets' => $unlockedHiddenTickets,
'is_embedded' => 0,
]);
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class IndexController extends Controller
{
/**
* redirect index page
* @param Request $request http request
* @return \Illuminate\Http\RedirectResponse
*/
public function showIndex(Request $request)
{
return redirect()->route('showSelectOrganiser');
}
}

View File

@ -222,7 +222,7 @@ class InstallerController extends Controller
//force laravel to regenerate a new key (see key:generate sources)
Config::set('app.key', $app_key);
Artisan::call('key:generate');
Artisan::call('key:generate', ['--force' => true]);
Artisan::call('migrate', ['--force' => true]);
if (Timezone::count() == 0) {
Artisan::call('db:seed', ['--force' => true]);

View File

@ -133,12 +133,6 @@ class ManageAccountController extends MyBaseController
case config('attendize.payment_gateway_paypal') : //PayPal
$config = $request->get('paypal');
break;
case config('attendize.payment_gateway_coinbase') : //BitPay
$config = $request->get('coinbase');
break;
case config('attendize.payment_gateway_migs') : //MIGS
$config = $request->get('migs');
break;
}
$account_payment_gateway = AccountPaymentGateway::firstOrNew(
@ -146,6 +140,7 @@ class ManageAccountController extends MyBaseController
'payment_gateway_id' => $gateway_id,
'account_id' => $account->id,
]);
$account_payment_gateway->config = $config;
$account_payment_gateway->account_id = $account->id;
$account_payment_gateway->payment_gateway_id = $gateway_id;

View File

@ -48,18 +48,19 @@ class OrganiserCustomizeController extends MyBaseController
]);
}
$organiser->name = $request->get('name');
$organiser->about = $request->get('about');
$organiser->name = $request->get('name');
$organiser->about = $request->get('about');
$organiser->google_analytics_code = $request->get('google_analytics_code');
$organiser->email = $request->get('email');
$organiser->google_tag_manager_code = $request->get('google_tag_manager_code');
$organiser->email = $request->get('email');
$organiser->enable_organiser_page = $request->get('enable_organiser_page');
$organiser->facebook = $request->get('facebook');
$organiser->twitter = $request->get('twitter');
$organiser->facebook = $request->get('facebook');
$organiser->twitter = $request->get('twitter');
$organiser->tax_name = $request->get('tax_name');
$organiser->tax_value = $request->get('tax_value');
$organiser->tax_id = $request->get('tax_id');
$organiser->charge_tax = ($request->get('charge_tax') == 1) ? 1 : 0;
$organiser->tax_name = $request->get('tax_name');
$organiser->tax_value = $request->get('tax_value');
$organiser->tax_id = $request->get('tax_id');
$organiser->charge_tax = ($request->get('charge_tax') == 1) ? 1 : 0;
if ($request->get('remove_current_image') == '1') {
$organiser->logo_path = '';
@ -88,7 +89,7 @@ class OrganiserCustomizeController extends MyBaseController
*/
public function postEditOrganiserPageDesign(Request $request, $organiser_id)
{
$event = Organiser::scope()->findOrFail($organiser_id);
$organiser = Organiser::scope()->findOrFail($organiser_id);
$rules = [
'page_bg_color' => ['required'],
@ -109,11 +110,11 @@ class OrganiserCustomizeController extends MyBaseController
]);
}
$event->page_bg_color = $request->get('page_bg_color');
$event->page_header_bg_color = $request->get('page_header_bg_color');
$event->page_text_color = $request->get('page_text_color');
$organiser->page_bg_color = $request->get('page_bg_color');
$organiser->page_header_bg_color = $request->get('page_header_bg_color');
$organiser->page_text_color = $request->get('page_text_color');
$event->save();
$organiser->save();
return response()->json([
'status' => 'success',

View File

@ -44,11 +44,4 @@ Route::group(['prefix' => 'api', 'middleware' => 'auth:api'], function () {
*/
Route::get('/', function () {
return response()->json([
'Hello' => Auth::guard('api')->user()->full_name . '!'
]);
});
});
});

View File

@ -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 () {
/*
@ -154,6 +144,11 @@ Route::group(
'uses' => 'EventViewController@postContactOrganiser',
]);
Route::post('/{event_id}/show_hidden', [
'as' => 'postShowHiddenTickets',
'uses' => 'EventViewController@postShowHiddenTickets',
]);
/*
* Used for previewing designs in the backend. Doesn't log page views etc.
*/
@ -330,28 +325,17 @@ Route::group(
]
);
Route::get('{event_id}', function ($event_id) {
return Redirect::route('showEventDashboard', [
'event_id' => $event_id,
]);
});
Route::get('{event_id}/', [
'uses' => 'EventDashboardController@redirectToDashboard',
]
);
/*
* @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,
]);
}
Route::get('{event_id}/go_live', [
'as' => 'MakeEventLive',
'uses' => 'EventController@makeEventLive',
]);
/*
@ -568,12 +552,10 @@ Route::group(
'as' => 'showEventCustomize',
'uses' => 'EventCustomizeController@showCustomize',
]);
Route::get('{event_id}/customize/{tab?}', [
'as' => 'showEventCustomizeTab',
'uses' => 'EventCustomizeController@showCustomize',
]);
Route::post('{event_id}/customize/order_page', [
'as' => 'postEditEventOrderPage',
'uses' => 'EventCustomizeController@postEditEventOrderPage',
@ -590,13 +572,11 @@ Route::group(
'as' => 'postEditEventSocial',
'uses' => 'EventCustomizeController@postEditEventSocial',
]);
Route::post('{event_id}/customize/fees', [
'as' => 'postEditEventFees',
'uses' => 'EventCustomizeController@postEditEventFees',
]);
/*
* -------
* Event Widget page
@ -607,6 +587,31 @@ Route::group(
'uses' => 'EventWidgetsController@showEventWidgets',
]);
/*
* -------
* Event Access Codes page
* -------
*/
Route::get('{event_id}/access_codes', [
'as' => 'showEventAccessCodes',
'uses' => 'EventAccessCodesController@show',
]);
Route::get('{event_id}/access_codes/create', [
'as' => 'showCreateEventAccessCode',
'uses' => 'EventAccessCodesController@showCreate',
]);
Route::post('{event_id}/access_codes/create', [
'as' => 'postCreateEventAccessCode',
'uses' => 'EventAccessCodesController@postCreate',
]);
Route::post('{event_id}/access_codes/{access_code_id}/delete', [
'as' => 'postDeleteEventAccessCode',
'uses' => 'EventAccessCodesController@postDelete',
]);
/*
* -------
* Event Survey page

View File

@ -7,6 +7,7 @@ use App\Models\Order;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Log;
class SendOrderNotification extends Job implements ShouldQueue
{

View File

@ -32,7 +32,7 @@ class SendOrderTickets extends Job implements ShouldQueue
*/
public function handle(OrderMailer $orderMailer)
{
//$this->dispatchNow(new GenerateTicket($this->order->order_reference));
$this->dispatchNow(new GenerateTicket($this->order->order_reference));
$orderMailer->sendOrderTickets($this->order);
}
}

View File

@ -21,7 +21,7 @@ class OrderMailer
Mail::send('Emails.OrderNotification', $data, function ($message) use ($order) {
$message->to($order->account->email);
$message->subject('New order received on the event ' . $order->event->title . ' [' . $order->order_reference . ']');
$message->subject(trans("Controllers.new_order_received", ["event"=> $order->event->title, "order" => $order->order_reference]));
});
}

View File

@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Str;
/*
Attendize.com - Event Management & Ticketing
@ -44,8 +45,16 @@ class Attendee extends MyBaseModel
parent::boot();
static::creating(function ($order) {
$order->private_reference_number = str_pad(random_int(0, pow(10, 9) - 1), 9, '0', STR_PAD_LEFT);
do {
//generate a random string using Laravel's str_random helper
$token = Str::Random(15);
} //check if the token already exists and if it does, try again
while (Attendee::where('private_reference_number', $token)->first());
$order->private_reference_number = $token;
});
}
/**

View File

@ -137,6 +137,16 @@ class Event extends MyBaseModel
return $this->hasMany(\App\Models\Order::class);
}
/**
* The access codes associated with the event.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function access_codes()
{
return $this->hasMany(\App\Models\EventAccessCodes::class, 'event_id', 'id');
}
/**
* The account associated with the event.
*
@ -402,4 +412,13 @@ ICSTemplate;
return $icsTemplate;
}
/**
* @param integer $accessCodeId
* @return bool
*/
public function hasAccessCode($accessCodeId)
{
return (is_null($this->access_codes()->where('id', $accessCodeId)->first()) === false);
}
}

View File

@ -0,0 +1,73 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\SoftDeletes;
class EventAccessCodes extends MyBaseModel
{
use SoftDeletes;
/**
* @param integer $event_id
* @param string $accessCode
* @return void
*/
public static function logUsage($event_id, $accessCode)
{
(new static)::where('event_id', $event_id)
->where('code', $accessCode)
->increment('usage_count');
}
/**
* @param $code
* @param $event_id
* @return Collection
*/
public static function findFromCode($code, $event_id)
{
return (new static())
->where('code', $code)
->where('event_id', $event_id)
->get();
}
/**
* The validation rules.
*
* @return array $rules
*/
public function rules()
{
return [
'code' => 'required|string',
];
}
/**
* The Event associated with the event access code.
*
* @return BelongsTo
*/
public function event()
{
return $this->belongsTo(Event::class, 'event_id', 'id');
}
/**
* @return BelongsToMany
*/
function tickets()
{
return $this->belongsToMany(
Ticket::class,
'ticket_event_access_code',
'event_access_code_id',
'ticket_id'
)->withTimestamps();
}
}

View File

@ -5,6 +5,7 @@ namespace App\Models;
use File;
use Illuminate\Database\Eloquent\SoftDeletes;
use PDF;
use Illuminate\Support\Str;
class Order extends MyBaseModel
{
@ -32,6 +33,10 @@ class Order extends MyBaseModel
'order_email.email' => 'Please enter a valid email',
];
protected $casts = [
'is_business' => 'boolean',
];
/**
* The items associated with the order.
*
@ -175,7 +180,14 @@ class Order extends MyBaseModel
parent::boot();
static::creating(function ($order) {
$order->order_reference = strtoupper(str_random(5)) . date('jn');
});
do {
//generate a random string using Laravel's str_random helper
$token = Str::Random(5) . date('jn');
} //check if the token already exists and if it does, try again
while (Order::where('order_reference', $token)->first());
$order->order_reference = $token;
});
}
}

View File

@ -72,6 +72,19 @@ class Ticket extends MyBaseModel
return $this->belongsToMany(\App\Models\Question::class);
}
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
function event_access_codes()
{
return $this->belongsToMany(
EventAccessCodes::class,
'ticket_event_access_code',
'ticket_id',
'event_access_code_id'
)->withTimestamps();
}
/**
* TODO:implement the reserved method.
*/

View File

@ -15,6 +15,7 @@ class HelpersServiceProvider extends ServiceProvider
{
require app_path('Helpers/helpers.php');
require app_path('Helpers/macros.php');
require app_path('Helpers/strings.php');
}
/**

View File

@ -20,25 +20,25 @@
"illuminate/support": "~5.6",
"intervention/image": "~2.4",
"laracasts/utilities": "~2.1",
"laravel/framework": "~5.6",
"laravel/socialite": "~3.0",
"laravelcollective/html": "~5.6",
"league/flysystem-aws-s3-v3": "~1.0",
"maatwebsite/excel": "~2.1",
"maxhoffmann/parsedown-laravel": "dev-master",
"milon/barcode": "~5.3",
"php-http/curl-client": "^1.7",
"php-http/message": "^1.6",
"predis/predis": "~1.1",
"vinelab/http": "~1.5",
"laravel/framework": "~5.6",
"mcamara/laravel-localization": "~1.2",
"mews/purifier": "~2.0",
"mews/purifier": "^2.1",
"milon/barcode": "~5.3",
"nitmedia/wkhtml2pdf": "dev-master",
"laravel/socialite": "~3.0",
"omnipay/common": "~3",
"omnipay/dummy": "~3",
"omnipay/paypal": "~3",
"omnipay/stripe": "~3",
"php-http/curl-client": "^1.7",
"php-http/message": "^1.6",
"predis/predis": "~1.1",
"vinelab/http": "~1.5",
"laravel/tinker": "^1.0"
"backpack/crud": "^3.5",
"barryvdh/laravel-elfinder": "^0.4.1",
"backpack/backupmanager": "^1.4",

View File

@ -66,8 +66,11 @@ return [
'default_datetime_format' => env('DEFAULT_DATETIME_FORMAT', 'Y-m-d H:i'),
'default_query_cache' => 120, #Minutes
'default_locale' => 'en',
'default_payment_gateway' => 1, #Stripe=1 Paypal=2 BitPay=3 MIGS=4
'default_payment_gateway' => 1, #Stripe=1 Paypal=2
'cdn_url_user_assets' => '',
'cdn_url_static_assets' => ''
'cdn_url_static_assets' => '',
'google_analytics_id' => env('GOOGLE_ANALYTICS_ID'),
'google_maps_geocoding_key' => env('GOOGLE_MAPS_GEOCODING_KEY')
];

View File

@ -130,7 +130,7 @@ return [
//'mtr' => ['name' => 'Mewari', 'script' => 'Latn', 'native' => 'Mewari', 'regional' => ''],
//'mua' => ['name' => 'Mundang', 'script' => 'Latn', 'native' => 'Mundang', 'regional' => ''],
//'mi' => ['name' => 'Māori', 'script' => 'Latn', 'native' => 'Māori', 'regional' => 'mi_NZ'],
//'nl' => ['name' => 'Dutch', 'script' => 'Latn', 'native' => 'Nederlands', 'regional' => 'nl_NL'],
'nl' => ['name' => 'Dutch', 'script' => 'Latn', 'native' => 'Nederlands', 'regional' => 'nl_NL'],
//'nmg' => ['name' => 'Kwasio', 'script' => 'Latn', 'native' => 'ngumba', 'regional' => ''],
//'yav' => ['name' => 'Yangben', 'script' => 'Latn', 'native' => 'nuasue', 'regional' => ''],
//'nn' => ['name' => 'Norwegian Nynorsk', 'script' => 'Latn', 'native' => 'nynorsk', 'regional' => 'nn_NO'],
@ -288,7 +288,7 @@ return [
//'shi-Tfng' => ['name' => 'Tachelhit (Tifinagh)', 'script' => 'Tfng', 'native' => 'ⵜⴰⵎⴰⵣⵉⵖⵜ', 'regional' => ''],
//'tzm' => ['name' => 'Central Atlas Tamazight (Tifinagh)','script' => 'Tfng', 'native' => 'ⵜⴰⵎⴰⵣⵉⵖⵜ', 'regional' => ''],
//'yue' => ['name' => 'Yue', 'script' => 'Hant', 'native' => '廣州話', 'regional' => 'yue_HK'],
//'ja' => ['name' => 'Japanese', 'script' => 'Jpan', 'native' => '日本語', 'regional' => 'ja_JP'],
'ja' => ['name' => 'Japanese', 'script' => 'Jpan', 'native' => '日本語', 'regional' => 'ja_JP'],
//'zh' => ['name' => 'Chinese (Simplified)', 'script' => 'Hans', 'native' => '简体中文', 'regional' => 'zh_CN'],
//'zh-Hant' => ['name' => 'Chinese (Traditional)', 'script' => 'Hant', 'native' => '繁體中文', 'regional' => 'zh_CN'],
//'ii' => ['name' => 'Sichuan Yi', 'script' => 'Yiii', 'native' => 'ꆈꌠꉙ', 'regional' => ''],

View File

@ -0,0 +1,32 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddEventImagePositionToEvents extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('events', function (Blueprint $table) {
$table->string('event_image_position')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('events', function (Blueprint $table) {
$table->dropColumn('event_image_position');
});
}
}

View File

@ -0,0 +1,37 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateEventAccessCodesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('event_access_codes', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('event_id');
$table->string('code')->default('');
$table->timestamps();
$table->softDeletes();
// Add events table foreign key
$table->foreign('event_id')->references('id')->on('events')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('event_access_codes');
}
}

View File

@ -0,0 +1,38 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateTicketEventAccessCodeTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('ticket_event_access_code', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('ticket_id');
$table->unsignedInteger('event_access_code_id');
$table->timestamps();
$table->foreign('ticket_id')->references('id')->on('tickets');
$table->foreign('event_access_code_id')->references('id')->on('event_access_codes');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::disableForeignKeyConstraints();
Schema::dropIfExists('ticket_event_access_code');
Schema::enableForeignKeyConstraints();
}
}

View File

@ -0,0 +1,32 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddAmountsFieldToEventAccessCodes extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('event_access_codes', function (Blueprint $table) {
$table->unsignedInteger('usage_count')->default(0)->after('code');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('event_access_codes', function (Blueprint $table) {
$table->dropColumn('usage_count');
});
}
}

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class ChangePrivateReferenceNumberColumnType extends Migration
{
/**
* Run the migrations.
* Change Private Reference Number from INT to VARCHAR ColumnType
* and increases the character count to 15
*
* @return void
*/
public function up()
{
Schema::table('attendees', function (Blueprint $table) {
$table->string('private_reference_number', 15)->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('attendees', function ($table) {
$table->integer('private_reference_number')->change();
});
}
}

View File

@ -0,0 +1,39 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddBusinessFieldsToOrder extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('orders', function (Blueprint $table) {
$table->boolean('is_business')->default(false)->after('is_payment_received');
$table->string('business_name')->after('email')->nullable();
$table->string('business_tax_number')->after('business_name')->nullable();
$table->string('business_address_line_one')->after('business_tax_number')->nullable();
$table->string('business_address_line_two')->after('business_address_line_one')->nullable();
$table->string('business_address_state_province')->after('business_address_line_two')->nullable();
$table->string('business_address_city')->after('business_address_state_province')->nullable();
$table->string('business_address_code')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('orders', function (Blueprint $table) {
$table->dropColumn(['is_business', 'business_name', 'business_tax_number', 'business_address']);
});
}
}

View File

@ -0,0 +1,33 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddGtmFieldToOrganiser extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('organisers', function (Blueprint $table) {
$table->string('google_tag_manager_code', 20)->after('google_analytics_code')
->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('organisers', function (Blueprint $table) {
$table->dropColumn('google_tag_manager_code');
});
}
}

View File

@ -0,0 +1,32 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddGtmFieldToEvent extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('events', function (Blueprint $table) {
$table->string('google_tag_manager_code', 20)->after('ticket_sub_text_color')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('events', function (Blueprint $table) {
$table->dropColumn('google_tag_manager_code');
});
}
}

View File

@ -4,20 +4,20 @@
"description": "Attendize Ticketing Platform",
"main": "public/index.php",
"dependencies": {
"less": "~1.7.0"
"less": "^3.9.0"
},
"devDependencies": {
"bower": "^1.8.4",
"grunt": "^0.4.5",
"grunt-cli": "^1.2.0",
"grunt-contrib-concat": "^0.5.1",
"grunt-contrib-less": "^0.12.0",
"grunt-contrib-uglify": "^0.6.0",
"grunt-contrib-watch": "^0.6.1",
"gulp": "^3.8.8",
"laravel-elixir": "*"
"bower": "^1.8.8",
"grunt": "^1.0.3",
"grunt-cli": "^1.3.2",
"grunt-contrib-concat": "^1.0.1",
"grunt-contrib-less": "^2.0.0",
"grunt-contrib-uglify": "^4.0.0",
"grunt-contrib-watch": "^1.1.0",
"laravel-elixir": "6.0.0-18"
},
"scripts": {
"build-frontend": "grunt",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {

View File

@ -176,7 +176,45 @@ $(function() {
}).change();
// Apply access code here to unlock hidden tickets
$('#apply_access_code').click(function(e) {
var $clicked = $(this);
// Hide any previous errors
$clicked.closest('.form-group')
.removeClass('has-error');
var url = $clicked.closest('.has-access-codes').data('url');
var data = {
'access_code': $('#unlock_code').val(),
'_token': $('input:hidden[name=_token]').val()
};
$.post(url, data, function(response) {
if (response.status === 'error') {
// Show any access code errors
$clicked.closest('.form-group').addClass('has-error');
showMessage(response.message);
return;
}
$clicked.closest('.has-access-codes').before(response);
$('#unlock_code').val('');
$clicked.closest('.has-access-codes').remove();
});
});
$('#is_business').click(function(e) {
var $isBusiness = $(this);
var isChecked = $isBusiness.hasClass('checked');
if (isChecked == undefined || isChecked === false) {
$isBusiness.addClass('checked');
$('#business_details').removeClass('hidden').show();
} else {
$isBusiness.removeClass('checked');
$('#business_details').addClass('hidden').hide();
}
});
});
function processFormErrors($form, errors)

View File

@ -228,6 +228,10 @@ $(function () {
showMessage(data.message);
}
if (typeof data.redirectUrl !== 'undefined') {
window.location.href = data.redirectUrl;
}
switch (data.status) {
case 'success':
$('#' + deleteType + '_' + deleteId).fadeOut();

View File

@ -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();

View File

@ -107,9 +107,27 @@ var checkinApp = new Vue({
}
qrcode.callback = this.QrCheckin;
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
navigator.getUserMedia({
// FIX SAFARI CAMERA
if (navigator.mediaDevices === undefined) {
navigator.mediaDevices = {};
}
if (navigator.mediaDevices.getUserMedia === undefined) {
navigator.mediaDevices.getUserMedia = function(constraints) {
var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
if (!getUserMedia) {
return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
}
return new Promise(function(resolve, reject) {
getUserMedia.call(navigator, constraints, resolve, reject);
});
}
}
navigator.mediaDevices.getUserMedia({
video: {
facingMode: 'environment'
},

View File

@ -4744,7 +4744,45 @@ function log() {
}).change();
// Apply access code here to unlock hidden tickets
$('#apply_access_code').click(function(e) {
var $clicked = $(this);
// Hide any previous errors
$clicked.closest('.form-group')
.removeClass('has-error');
var url = $clicked.closest('.has-access-codes').data('url');
var data = {
'access_code': $('#unlock_code').val(),
'_token': $('input:hidden[name=_token]').val()
};
$.post(url, data, function(response) {
if (response.status === 'error') {
// Show any access code errors
$clicked.closest('.form-group').addClass('has-error');
showMessage(response.message);
return;
}
$clicked.closest('.has-access-codes').before(response);
$('#unlock_code').val('');
$clicked.closest('.has-access-codes').remove();
});
});
$('#is_business').click(function(e) {
var $isBusiness = $(this);
var isChecked = $isBusiness.hasClass('checked');
if (isChecked == undefined || isChecked === false) {
$isBusiness.addClass('checked');
$('#business_details').removeClass('hidden').show();
} else {
$isBusiness.removeClass('checked');
$('#business_details').addClass('hidden').hide();
}
});
});
function processFormErrors($form, errors)

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,3 @@
@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600,700);
@import "../../vendor/bootstrap/less/bootstrap.less";
// Copied the bootstrap vars file to allow customisation
@import "bootstrap_custom_variables.less";

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@ -171,4 +171,16 @@ h6 > small {
.fsize80 { font-size: 80px; }
.fsize96 { font-size: 96px; }
.fsize112 { font-size: 112px; }
.fsize128 { font-size: 128px; }
.fsize128 { font-size: 128px; }
/* Alignments
-------------------------------*/
.has-text-left {
text-align: left;
}
.has-text-center {
text-align: center;
}
.has-text-right {
text-align: right;
}

View File

@ -1,12 +1,9 @@
@import url(https://fonts.googleapis.com/css?family=Open+Sans:100,400,300);
@import url(https://fonts.googleapis.com/css?family=Roboto:300,100);
html, body {
height: 100%;
}
body {
font-family: 'Open Sans', sans-serif;
font-family: sans-serif;
}
table {

View File

@ -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
}
]
}

View File

@ -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']);
};

View File

@ -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

View File

@ -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
```
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/datetimepicker/latest/DateTimePicker.min.css" />
<script type="text/javascript" src="//cdn.jsdelivr.net/datetimepicker/latest/DateTimePicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/datetimepicker@latest/dist/DateTimePicker.min.css" />
<script type="text/javascript" src="//cdn.jsdelivr.net/npm/datetimepicker@latest/dist/DateTimePicker.min.js"></script>
```
Files - Particular Version
```
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/datetimepicker/<version>/DateTimePicker.min.css" />
<script type="text/javascript" src="//cdn.jsdelivr.net/datetimepicker/<version>/DateTimePicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/datetimepicker@<version>/dist/DateTimePicker.min.css" />
<script type="text/javascript" src="//cdn.jsdelivr.net/npm/datetimepicker@<version>/dist/DateTimePicker.min.js"></script>
```
##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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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}
.dtpicker-cont{top:25%}.dtpicker-overlay{zoom:1!important}

View File

@ -2,11 +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
----------------------------------------------------------------------------- */
Array.prototype.indexOf||(Array.prototype.indexOf=function(a){var b=this.length,c=Number(arguments[1])||0;for(c=c<0?Math.ceil(c):Math.floor(c),c<0&&(c+=b);c<b;c++)if(c in this&&this[c]===a)return c;return-1}),jQuery.fn.fadeIn=function(){this.show()},jQuery.fn.fadeOut=function(){this.hide()};
Array.prototype.indexOf||(Array.prototype.indexOf=function(t){var r=this.length,n=Number(arguments[1])||0;for((n=n<0?Math.ceil(n):Math.floor(n))<0&&(n+=r);n<r;n++)if(n in this&&this[n]===t)return n;return-1}),jQuery.fn.fadeIn=function(){this.show()},jQuery.fn.fadeOut=function(){this.hide()};

View File

@ -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

View File

@ -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("");
});
}

View File

@ -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}
.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}

File diff suppressed because one or more lines are too long

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,49 @@
/* -----------------------------------------------------------------------------
jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile
Version 0.1.38
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
----------------------------------------------------------------------------- */
/*
language: Korean
file: DateTimePicker-i18n-ko
*/
(function ($) {
$.DateTimePicker.i18n["ko"] = $.extend($.DateTimePicker.i18n["ko"], {
language: "ko",
labels: {
'year': '년',
'month': '월',
'day': '일',
'hour': '시',
'minutes': '분',
'seconds': '초',
'meridiem': '정오'
},
dateTimeFormat: "yyyy-MM-dd HH:mm",
dateFormat: "yyyy-MM-dd",
timeFormat: "HH:mm",
shortDayNames: ["일", "월", "화", "수", "목", "금", "토"],
fullDayNames: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"],
shortMonthNames: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
fullMonthNames: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
titleContentDate: "날짜 설정",
titleContentTime: "시간 설정",
titleContentDateTime: "날짜 및 시간 설정 ",
setButtonContent: "설정하기",
clearButtonContent: "초기화"
});
})(jQuery);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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("");
});
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,49 @@
/* -----------------------------------------------------------------------------
jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile
Version 0.1.38
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
----------------------------------------------------------------------------- */
/*
language: Korean
file: DateTimePicker-i18n-ko
*/
(function ($) {
$.DateTimePicker.i18n["ko"] = $.extend($.DateTimePicker.i18n["ko"], {
language: "ko",
labels: {
'year': '년',
'month': '월',
'day': '일',
'hour': '시',
'minutes': '분',
'seconds': '초',
'meridiem': '정오'
},
dateTimeFormat: "yyyy-MM-dd HH:mm",
dateFormat: "yyyy-MM-dd",
timeFormat: "HH:mm",
shortDayNames: ["일", "월", "화", "수", "목", "금", "토"],
fullDayNames: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"],
shortMonthNames: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
fullMonthNames: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
titleContentDate: "날짜 설정",
titleContentTime: "시간 설정",
titleContentDateTime: "날짜 및 시간 설정 ",
setButtonContent: "설정하기",
clearButtonContent: "초기화"
});
})(jQuery);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

Some files were not shown because too many files have changed in this diff Show More