diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3712b8a..00e0130 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1385,7 +1385,7 @@ module ApplicationHelper def calendar_for(field_id) include_calendar_headers_tags - javascript_tag("$(function() { $('##{field_id}').addClass('date').datepickerFallback(datepickerOptions); });") + javascript_tag("$(function() { $('##{field_id}').addClass('date').datepicker(datepickerOptions); });") end def include_calendar_headers_tags @@ -1395,16 +1395,10 @@ module ApplicationHelper content_for :header_tags do start_of_week = Setting.start_of_week start_of_week = l(:general_first_day_of_week, :default => '1') if start_of_week.blank? - # Redmine uses 1..7 (monday..sunday) in settings and locales - # JQuery uses 0..6 (sunday..saturday), 7 needs to be changed to 0 - start_of_week = start_of_week.to_i % 7 tags << javascript_tag( - "var datepickerOptions={dateFormat: 'yy-mm-dd', firstDay: #{start_of_week}, " + - "showOn: 'button', buttonImageOnly: true, buttonImage: '" + - path_to_image('/images/calendar.png') + - "', showButtonPanel: true, showWeek: true, showOtherMonths: true, " + - "selectOtherMonths: true, changeMonth: true, changeYear: true, " + - "beforeShow: beforeShowDatePicker};") + "var datepickerOptions={dateFormat: 'Y-m-d', " + + "'locale' : {'firstDayOfWeek' : #{start_of_week}}, " + + "beforeShow: beforeShowDatePicker};") jquery_locale = l('jquery.locale', :default => current_language.to_s) unless jquery_locale == 'en' tags << javascript_include_tag("i18n/datepicker-#{jquery_locale}.js") diff --git a/app/views/layouts/base.html.erb b/app/views/layouts/base.html.erb index 5c8be88..b40ac2c 100644 --- a/app/views/layouts/base.html.erb +++ b/app/views/layouts/base.html.erb @@ -9,9 +9,11 @@ <%= csrf_meta_tag %> <%= favicon %> + <%= stylesheet_link_tag 'jquery/jquery-ui-1.11.0', 'application', 'responsive', :media => 'all' %> <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> <%= javascript_heads %> + <%= heads_for_theme %> <%= call_hook :view_layouts_base_html_head %> diff --git a/public/javascripts/application.js b/public/javascripts/application.js index cb4d42a..4be9d8d 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -213,8 +213,8 @@ function buildFilterRow(field, operator, values) { ' ' + ' '+labelDayPlural+'' ); - $('#values_'+fieldId+'_1').val(values[0]).datepickerFallback(datepickerOptions); - $('#values_'+fieldId+'_2').val(values[1]).datepickerFallback(datepickerOptions); + $('#values_'+fieldId+'_1').val(values[0]).datepicker(datepickerOptions); + $('#values_'+fieldId+'_2').val(values[1]).datepicker(datepickerOptions); $('#values_'+fieldId).val(values[0]); break; case "string": @@ -678,7 +678,7 @@ function beforeShowDatePicker(input, inst) { } break; } - $(input).datepickerFallback("option", "defaultDate", default_date); + $(input).datepicker("option", "defaultDate", default_date); } (function($){ @@ -838,28 +838,8 @@ function toggleNewObjectDropdown() { } (function ( $ ) { - - // detect if native date input is supported - var nativeDateInputSupported = true; - - var input = document.createElement('input'); - input.setAttribute('type','date'); - if (input.type === 'text') { - nativeDateInputSupported = false; - } - - var notADateValue = 'not-a-date'; - input.setAttribute('value', notADateValue); - if (input.value === notADateValue) { - nativeDateInputSupported = false; - } - - $.fn.datepickerFallback = function( options ) { - if (nativeDateInputSupported) { - return this; - } else { - return this.datepicker( options ); - } + $.fn.datepicker = function( options ) { + return this.flatpickr( options ); }; }( jQuery )); diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index dbafe14..ad1aa3a 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -1504,6 +1504,64 @@ img.filecontent.image {background-image: url(../images/transparent.png);} .ui-menu .ui-menu-item:hover {font-weight:normal; color:#555; background:#759FCF; color:#fff !important; border:1px solid #759FCF;} .ui-menu .ui-menu-item.ui-state-focus {font-weight:normal; color:#555; border-color:#759FCF;} +/* Custom flatpickr styles */ + +/* Colors */ +.flatpickr-months .flatpickr-month, +.flatpickr-weekdays, span.flatpickr-weekday, +.flatpickr-day.selected, +.flatpickr-day.startRange, +.flatpickr-day.endRange, +.flatpickr-day.selected.inRange, +.flatpickr-day.startRange.inRange, +.flatpickr-day.endRange.inRange, +.flatpickr-day.selected:focus, +.flatpickr-day.startRange:focus, +.flatpickr-day.endRange:focus, +.flatpickr-day.selected:hover, +.flatpickr-day.startRange:hover, +.flatpickr-day.endRange:hover, +.flatpickr-day.selected.prevMonthDay, +.flatpickr-day.startRange.prevMonthDay, +.flatpickr-day.endRange.prevMonthDay, +.flatpickr-day.selected.nextMonthDay, +.flatpickr-day.startRange.nextMonthDay, +.flatpickr-day.endRange.nextMonthDay { + background: #628DB6; + color: #fff; +} +.flatpickr-months .flatpickr-prev-month svg, +.flatpickr-months .flatpickr-next-month svg { + fill: #fff; +} + +/* Font sizes */ +.flatpickr-day, span.flatpickr-weekday { + font-size: 0.8em; +} +.flatpickr-current-month { + font-size: 1em; +} + +/* Calendar size */ +/*pixel square for each day - default is 39 */ +.flatpickr-calendar { + width: 224px; +} +.dayContainer { + width: 224px; + min-width: 224px; + max-width: 224px; +} +.flatpickr-days { + width: 224px; +} +.flatpickr-day { + max-width: 32px; + height: 32px; + line-height: 32px; +} + /************* Rouge styles *************/ /* generated by: pygmentize -f html -a .syntaxhl -S colorful */ .syntaxhl .hll { background-color: #ffffcc }