settings.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. (function($){
  2. FLBuilder.registerModuleHelper('countdown', {
  3. rules: {
  4. day: {
  5. required: true
  6. },
  7. month: {
  8. required: true
  9. },
  10. year: {
  11. required: true
  12. }
  13. },
  14. submit: function(){
  15. var self = this;
  16. var form = $( '.fl-builder-settings' ),
  17. day = parseInt( form.find( 'input[name=day]' ).val() ),
  18. month = parseInt( form.find( 'input[name=month]' ).val() ),
  19. year = parseInt( form.find( 'input[name=year]' ).val() ),
  20. hour = parseInt( form.find( 'select[name="time[][hours]"]' ).val() ),
  21. minute = parseInt( form.find( 'select[name="time[][minutes]"]' ).val() ),
  22. period = form.find( 'select[name="time[][day_period]"]' ).val(),
  23. date = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':00 ' + period.toUpperCase();
  24. if ( ! this._validateDate( day, 'day' ) ) {
  25. FLBuilder.alert( FLBuilderStrings.enterValidDay );
  26. return false;
  27. } else if ( ! this._validateDate( month, 'month' ) ) {
  28. FLBuilder.alert( FLBuilderStrings.enterValidMonth );
  29. return false;
  30. } else if ( ! this._validateDate( year, 'year' ) ) {
  31. FLBuilder.alert( FLBuilderStrings.enterValidYear );
  32. return false;
  33. } else if ( Date.parse( date ) <= Date.now() ) {
  34. FLBuilder.alert( FLBuilderStrings.countdownDateisInThePast );
  35. return false;
  36. }
  37. return true;
  38. },
  39. _isPositiveInteger: function( n ) {
  40. return n >>> 0 === parseFloat( n );
  41. },
  42. _validateDate: function( date, part ){
  43. var self = this,
  44. form = $( '.fl-builder-settings' ),
  45. day = parseInt( form.find( 'input[name=day]' ).val() ),
  46. month = parseInt( form.find( 'input[name=month]' ).val() ),
  47. year = parseInt( form.find( 'input[name=year]' ).val() ),
  48. fullDays = new Date( year, month, 0 ).getDate();
  49. if ( isNaN( date ) || ! this._isPositiveInteger( date ) ) {
  50. return false;
  51. } else {
  52. switch ( part ) {
  53. case 'day':
  54. return date <= fullDays;
  55. break;
  56. case 'month':
  57. return date <= 12;
  58. break;
  59. case 'year':
  60. return date >= new Date().getFullYear();
  61. break;
  62. }
  63. }
  64. },
  65. });
  66. })(jQuery);