wiser_date 0.1.9 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/README.rdoc +38 -28
- data/lib/wiser_date/view_helpers.rb +62 -12
- data/vendor/assets/javascripts/jquery.wiser_date.js +43 -26
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            !binary "U0hBMQ==":
         | 
| 3 3 | 
             
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                YTA2OTgwZTg2ZDU0OWU0OGI0ZjBhNzNkMGFmMmYzZjdkYWZmN2FjYw==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                MDBlNGI2MzQ3ODg4YmYwMjczYjA1NDRkYTYxMmJlN2VmMjNmMzdhMw==
         | 
| 7 7 | 
             
            !binary "U0hBNTEy":
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                N2ZlZTgzZDY3Mjc0OGIxOTRmNjI4OWMzMTFlYzgyMmM1MDc0MWM2M2MzZWY1
         | 
| 10 | 
            +
                ZmE5NTJlM2NiM2ZlMDY0MDExODE3Y2Y3ZTE0ZDY0NzkxMWY0NzAyMDBmMWI2
         | 
| 11 | 
            +
                MmUwMWIyYTg5NjRiYzFjZmQyOTgwOGM1NzM2MDYwMjhiODk2MmY=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                MWY0YzIzMWExNTczMzVmN2M0MTYzZDVlMDhiNTMzZmQ4ZTkwNjQ5YjdiNTdl
         | 
| 14 | 
            +
                NTI5NjM3OWIxNWZmYWI4MmZkMDM2MDQ2YjhkMDM3ODMxZDA2ODg0NzdkMDQz
         | 
| 15 | 
            +
                YjM1YmY3ODhkOTlhNWRjODRjZTk4NTc1OThjNzUzN2JhODMwYTI=
         | 
    
        data/README.rdoc
    CHANGED
    
    | @@ -1,11 +1,6 @@ | |
| 1 1 | 
             
            = Wiser Date for Rails
         | 
| 2 2 |  | 
| 3 | 
            -
            WiserDate is a date formatting plugin written by Kenneth John Balgos (https://github.com/kennethjohnbalgos). Wiser Date features dynamic presentation of feed timestamps.  | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
            == Installing Gem
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                gem "wiser_date"
         | 
| 3 | 
            +
            WiserDate is a date formatting plugin written by Kenneth John Balgos (https://github.com/kennethjohnbalgos). Wiser Date features dynamic presentation of feed timestamps. The plugin now supports real-time and dynamic date displays.
         | 
| 9 4 |  | 
| 10 5 |  | 
| 11 6 | 
             
            == Dependency
         | 
| @@ -13,7 +8,11 @@ WiserDate is a date formatting plugin written by Kenneth John Balgos (https://gi | |
| 13 8 | 
             
            Rails >=3.1 and jQuery >=1.7 to make the real-time feature work.
         | 
| 14 9 |  | 
| 15 10 |  | 
| 16 | 
            -
            ==  | 
| 11 | 
            +
            == Installation
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            Install the gem.
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                gem "wiser_date"
         | 
| 17 16 |  | 
| 18 17 | 
             
            Require jquery.wiser_date in your app/assets/application.js file.
         | 
| 19 18 |  | 
| @@ -27,9 +26,10 @@ Use the wiser_date function in your views. | |
| 27 26 | 
             
                <%= wiser_date @user.last_login_at %>
         | 
| 28 27 | 
             
                # Sample display within few seconds: just now
         | 
| 29 28 | 
             
                # Sample display within few minutes: about 30 minutes ago
         | 
| 30 | 
            -
                # Sample display within the day: about  | 
| 29 | 
            +
                # Sample display within the day: about 3 hours ago
         | 
| 30 | 
            +
                # Sample display later within the day: today at 12:21pm
         | 
| 31 31 | 
             
                # Sample display after the day: yesterday 12:21pm
         | 
| 32 | 
            -
                # Sample display after 2 days:  | 
| 32 | 
            +
                # Sample display after 2 days: September 10, 2013 12:21pm
         | 
| 33 33 |  | 
| 34 34 | 
             
            @user.last_login_at can be any timestamp you want to display.
         | 
| 35 35 |  | 
| @@ -40,12 +40,21 @@ Assume that the value is "Mon, 10 Sept 2012 12:21:16 UTC +00:00". | |
| 40 40 |  | 
| 41 41 | 
             
            You can customize the behavior of the date display by using the following options:
         | 
| 42 42 |  | 
| 43 | 
            +
            * *real_time* - toggles the real-time updating of displayed dates [default: true]
         | 
| 44 | 
            +
                
         | 
| 45 | 
            +
                <%= wiser_date @user.last_login_at, :real_time => false %>
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            * *interval* - custom real-time update interval in seconds [default: 20]
         | 
| 48 | 
            +
                
         | 
| 49 | 
            +
                <%= wiser_date @user.last_login_at, :interval => 60 %>
         | 
| 50 | 
            +
             | 
| 43 51 | 
             
            * *date_format* - overrides the default date format [default: "%b %d, %Y"]
         | 
| 44 52 |  | 
| 45 53 | 
             
                <%= wiser_date @user.last_login_at, :date_format => "%Y-%m-%d" %>
         | 
| 46 54 | 
             
                # Sample display within few seconds: just now
         | 
| 47 55 | 
             
                # Sample display within few minutes: about 30 minutes ago
         | 
| 48 | 
            -
                # Sample display within the day: about  | 
| 56 | 
            +
                # Sample display within the day: about 3 hours ago
         | 
| 57 | 
            +
                # Sample display later within the day: today at 12:21pm
         | 
| 49 58 | 
             
                # Sample display after the day: yesterday 12:21pm
         | 
| 50 59 | 
             
                # Sample display after 2 days: 2012-09-10 12:21pm
         | 
| 51 60 |  | 
| @@ -54,58 +63,59 @@ You can customize the behavior of the date display by using the following option | |
| 54 63 | 
             
                <%= wiser_date @user.last_login_at, :time_format => "%H:%M:%S" %>
         | 
| 55 64 | 
             
                # Sample display within few seconds: just now
         | 
| 56 65 | 
             
                # Sample display within few minutes: about 30 minutes ago
         | 
| 57 | 
            -
                # Sample display within the day: about  | 
| 66 | 
            +
                # Sample display within the day: about 3 hours ago
         | 
| 67 | 
            +
                # Sample display later within the day: today at 12:21:16
         | 
| 58 68 | 
             
                # Sample display after the day: yesterday 12:21:16
         | 
| 59 | 
            -
                # Sample display after 2 days:  | 
| 69 | 
            +
                # Sample display after 2 days: September 10, 2013 12:21:16
         | 
| 60 70 |  | 
| 61 71 | 
             
            * *humanize* - converts date to more readable string [default: true]
         | 
| 62 72 |  | 
| 63 73 | 
             
                <%= wiser_date @user.last_login_at, :humanize => false %>
         | 
| 64 | 
            -
                # Sample display within few seconds:  | 
| 65 | 
            -
                # Sample display within few minutes:  | 
| 66 | 
            -
                # Sample display within the day:  | 
| 67 | 
            -
                # Sample display  | 
| 68 | 
            -
                # Sample display after  | 
| 74 | 
            +
                # Sample display within few seconds: September 10, 2013 12:21pm
         | 
| 75 | 
            +
                # Sample display within few minutes: September 10, 2013 12:21pm
         | 
| 76 | 
            +
                # Sample display within the day: September 10, 2013 12:21pm
         | 
| 77 | 
            +
                # Sample display later within the day: September 10, 2013 12:21pm
         | 
| 78 | 
            +
                # Sample display after the day: September 10, 2013 12:21pm
         | 
| 79 | 
            +
                # Sample display after 2 days: September 10, 2013 12:21pm
         | 
| 69 80 |  | 
| 70 81 | 
             
            * *time_first* - displays time first instead of date [default: false]
         | 
| 71 82 |  | 
| 72 83 | 
             
                <%= wiser_date @user.last_login_at, :time_first => true %>
         | 
| 73 84 | 
             
                # Sample display within few seconds: just now
         | 
| 74 85 | 
             
                # Sample display within few minutes: about 30 minutes ago
         | 
| 75 | 
            -
                # Sample display within the day: about  | 
| 86 | 
            +
                # Sample display within the day: about 3 hours ago
         | 
| 87 | 
            +
                # Sample display later within the day: 12:21pm today
         | 
| 76 88 | 
             
                # Sample display after the day: 12:21pm yesterday 
         | 
| 77 | 
            -
                # Sample display after 2 days: 12:21pm  | 
| 89 | 
            +
                # Sample display after 2 days: 12:21pm September 10, 2013
         | 
| 78 90 |  | 
| 79 91 | 
             
            * *hide_same_year* - will not display the year if the it is the same with the present year [default: false]
         | 
| 80 92 |  | 
| 81 93 | 
             
                <%= wiser_date @user.last_login_at, :hide_same_year => true %>
         | 
| 82 94 | 
             
                # Sample display within few seconds: just now
         | 
| 83 95 | 
             
                # Sample display within few minutes: about 30 minutes ago
         | 
| 84 | 
            -
                # Sample display within the day: about  | 
| 96 | 
            +
                # Sample display within the day: about 3 hours ago
         | 
| 97 | 
            +
                # Sample display later within the day: today at 12:21pm
         | 
| 85 98 | 
             
                # Sample display after the day: yesterday 12:21pm
         | 
| 86 | 
            -
                # Sample display after 2 days:  | 
| 99 | 
            +
                # Sample display after 2 days: September 10, 12:21pm 
         | 
| 87 100 |  | 
| 88 101 | 
             
            * *capitalize* - capitalizes the first letter of the date displayed [default: true]
         | 
| 89 102 |  | 
| 90 103 | 
             
                <%= wiser_date @user.last_login_at, :capitalize => true %>
         | 
| 91 104 | 
             
                # Sample display within few seconds: Just now
         | 
| 92 105 | 
             
                # Sample display within few minutes: About 30 minutes ago
         | 
| 93 | 
            -
                # Sample display within the day:  | 
| 106 | 
            +
                # Sample display within the day: about 3 hours ago
         | 
| 107 | 
            +
                # Sample display later within the day: Today at 12:21pm
         | 
| 94 108 | 
             
                # Sample display after the day: Yesterday 12:21pm
         | 
| 95 | 
            -
                # Sample display after 2 days:  | 
| 109 | 
            +
                # Sample display after 2 days: September 10, 12:21pm 
         | 
| 96 110 |  | 
| 97 111 | 
             
            * *custom_class* - adds custom classes to the containter span of the date [default: nil]
         | 
| 98 112 |  | 
| 99 113 | 
             
                <%= wiser_date @user.last_login_at, :custom_class => "date_tooltip" %>
         | 
| 100 114 |  | 
| 101 | 
            -
            * *time_now* - accepts complete timestamp as the basis of time distances [default:  | 
| 115 | 
            +
            * *time_now* - accepts complete timestamp as the basis of time distances [default: server_time]
         | 
| 102 116 |  | 
| 103 117 | 
             
                <%= wiser_date @user.last_login_at, :time_now => "2012-09-10 12:21:16 +0000" %>
         | 
| 104 118 |  | 
| 105 119 |  | 
| 106 | 
            -
            == Thanks
         | 
| 107 | 
            -
            Thanks to me for writing an awesome real-time date display plugin :p
         | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 110 120 | 
             
            == Support
         | 
| 111 121 | 
             
            Open an issue in https://github.com/kennethjohnbalgos/wiser_date if you need further support or want to report a bug.
         | 
| @@ -1,25 +1,61 @@ | |
| 1 1 | 
             
            require 'date'
         | 
| 2 2 |  | 
| 3 3 | 
             
            module WiserDate
         | 
| 4 | 
            +
              
         | 
| 4 5 | 
             
              module ViewHelpers
         | 
| 6 | 
            +
              
         | 
| 5 7 | 
             
                include ActionView::Helpers::JavaScriptHelper
         | 
| 6 8 | 
             
                include ActionView::Helpers::TagHelper
         | 
| 7 9 | 
             
                include ActionView::Helpers::DateHelper
         | 
| 8 10 | 
             
                include ActionView::Context    
         | 
| 11 | 
            +
                
         | 
| 12 | 
            +
                def wiser_date_global(options = {})
         | 
| 13 | 
            +
                  timezone = options.has_key?(:timezone) ? options[:timezone] : ""
         | 
| 14 | 
            +
                  interval = options.has_key?(:interval) ? options[:interval] : ""
         | 
| 15 | 
            +
                  time_now = options.has_key?(:time_now) ? options[:time_now] : ""
         | 
| 16 | 
            +
                  custom_class = options.has_key?(:custom_class) ? options[:custom_class] : ""
         | 
| 17 | 
            +
                
         | 
| 18 | 
            +
                  cookies[:wiser_date_timezone] = timezone
         | 
| 19 | 
            +
                  cookies[:wiser_date_interval] = interval 
         | 
| 20 | 
            +
                  cookies[:wiser_date_time_now] = time_now
         | 
| 21 | 
            +
                  cookies[:wiser_date_custom_class] = custom_class
         | 
| 22 | 
            +
                end
         | 
| 9 23 |  | 
| 10 24 | 
             
                def wiser_date(timestamp, options = {})
         | 
| 11 25 | 
             
                  # Options
         | 
| 12 26 | 
             
                  date_format = options.has_key?(:date_format) ? options[:date_format] : "%B %d, %Y"
         | 
| 13 27 | 
             
                  time_format = options.has_key?(:time_format) ? options[:time_format] : "%l:%M%P"
         | 
| 28 | 
            +
                  title = options.has_key?(:title) ? options[:title] : ""
         | 
| 14 29 | 
             
                  humanize = options.has_key?(:humanize) ? options[:humanize] : true
         | 
| 15 30 | 
             
                  time_first = options.has_key?(:time_first) ? options[:time_first] : false
         | 
| 16 31 | 
             
                  hide_same_year = options.has_key?(:hide_same_year) ? options[:hide_same_year] : false
         | 
| 32 | 
            +
                  
         | 
| 17 33 | 
             
                  capitalize = options.has_key?(:capitalize) ? options[:capitalize] : true
         | 
| 18 | 
            -
                  custom_class = options.has_key?(:custom_class) ? options[:custom_class] : nil
         | 
| 19 | 
            -
                  time_now = options.has_key?(:time_now) ? options[:time_now].to_datetime : Time.now
         | 
| 20 34 | 
             
                  real_time = options.has_key?(:real_time) ? options[:real_time] : true
         | 
| 21 | 
            -
                   | 
| 35 | 
            +
                  
         | 
| 36 | 
            +
                  if cookies[:wiser_date_custom_class].present? && !cookies[:wiser_date_custom_class].blank?
         | 
| 37 | 
            +
                    custom_class = cookies[:wiser_date_custom_class]
         | 
| 38 | 
            +
                  else
         | 
| 39 | 
            +
                    custom_class = options.has_key?(:custom_class) ? options[:custom_class] : nil
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
                  
         | 
| 42 | 
            +
                  if cookies[:wiser_date_time_now].present? && !cookies[:wiser_date_time_now].blank?
         | 
| 43 | 
            +
                    time_now = cookies[:wiser_date_time_now]
         | 
| 44 | 
            +
                  else
         | 
| 45 | 
            +
                    time_now = options.has_key?(:time_now) ? options[:time_now].to_datetime : Time.now
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
                  
         | 
| 48 | 
            +
                  if cookies[:wiser_date_interval].present? && !cookies[:wiser_date_interval].blank?
         | 
| 49 | 
            +
                    interval = cookies[:wiser_date_interval]
         | 
| 50 | 
            +
                  else
         | 
| 51 | 
            +
                    interval = options.has_key?(:interval) ? options[:interval] : 20
         | 
| 52 | 
            +
                  end
         | 
| 22 53 |  | 
| 54 | 
            +
                  if cookies[:wiser_date_timezone].present? && !cookies[:wiser_date_timezone].blank?
         | 
| 55 | 
            +
                    time_now = time_now.to_datetime.in_time_zone(ActiveSupport::TimeZone[cookies[:wiser_date_timezone]]) 
         | 
| 56 | 
            +
                    timestamp = timestamp.to_datetime.in_time_zone(ActiveSupport::TimeZone[cookies[:wiser_date_timezone]]) 
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
                
         | 
| 23 59 | 
             
                  # Formats
         | 
| 24 60 | 
             
                  flat_format = "%Y%m%d%H%M%S"
         | 
| 25 61 | 
             
                  plain_format = "%Y-%m-%d %H:%M:%S"
         | 
| @@ -29,6 +65,11 @@ module WiserDate | |
| 29 65 | 
             
                  custom_timestamp = timestamp.strftime(custom_format)
         | 
| 30 66 | 
             
                  plain_timestamp = timestamp.strftime(plain_format)
         | 
| 31 67 |  | 
| 68 | 
            +
                  # Default Title
         | 
| 69 | 
            +
                  if title == ""
         | 
| 70 | 
            +
                    title = custom_timestamp
         | 
| 71 | 
            +
                  end
         | 
| 72 | 
            +
                  
         | 
| 32 73 | 
             
                  # Humanize Display
         | 
| 33 74 | 
             
                  if humanize
         | 
| 34 75 | 
             
                    time_diff_in_seconds = (time_now - timestamp.to_time).ceil
         | 
| @@ -36,32 +77,39 @@ module WiserDate | |
| 36 77 | 
             
                    time_diff_in_days = (time_diff_in_seconds / (60*60*24))
         | 
| 37 78 | 
             
                    if time_diff_in_seconds < 60 && time_diff_in_seconds >= 0
         | 
| 38 79 | 
             
                      custom_timestamp = "just now"
         | 
| 80 | 
            +
                      custom_timestamp = "today" if time_format == ""
         | 
| 39 81 | 
             
                    elsif time_now.to_date - 1.day == timestamp.to_date 
         | 
| 40 82 | 
             
                      date_value = "yesterday"
         | 
| 41 83 | 
             
                      time_value = timestamp.strftime(time_format)
         | 
| 42 84 | 
             
                      custom_timestamp = time_first ? "#{time_value} #{date_value}" : "#{date_value} at #{time_value}"
         | 
| 85 | 
            +
                      custom_timestamp = date_value if time_format == ""
         | 
| 43 86 | 
             
                    elsif time_diff_in_days < 0
         | 
| 44 87 | 
             
                      if time_diff_in_days > -2
         | 
| 45 88 | 
             
                        date_value = "tomorrow"
         | 
| 46 89 | 
             
                        time_value = timestamp.strftime(time_format)
         | 
| 47 90 | 
             
                        custom_timestamp = time_first ? "#{time_value} #{date_value}" : "#{date_value} at #{time_value}"
         | 
| 91 | 
            +
                        custom_timestamp = date_value if time_format == ""
         | 
| 48 92 | 
             
                      elsif time_diff_in_days > -7
         | 
| 49 93 | 
             
                        date_value = "on " + timestamp.strftime('%A')
         | 
| 50 94 | 
             
                        time_value = timestamp.strftime(time_format)
         | 
| 51 95 | 
             
                        custom_timestamp = time_first ? "#{time_value} #{date_value}" : "#{date_value} at #{time_value}"
         | 
| 96 | 
            +
                        custom_timestamp = date_value if time_format == ""
         | 
| 52 97 | 
             
                      end
         | 
| 53 98 | 
             
                    elsif time_diff_in_days < 1
         | 
| 54 99 | 
             
                      if time_now.to_date == timestamp.to_date && time_diff_in_hours >= 8
         | 
| 55 100 | 
             
                        date_value = "today"
         | 
| 56 101 | 
             
                        time_value = timestamp.strftime(time_format)
         | 
| 57 102 | 
             
                        custom_timestamp = time_first ? "#{time_value} #{date_value}" : "#{date_value} at #{time_value}"
         | 
| 103 | 
            +
                        custom_timestamp = date_value if time_format == ""
         | 
| 58 104 | 
             
                      else
         | 
| 59 | 
            -
                        custom_timestamp = "#{distance_of_time_in_words( | 
| 105 | 
            +
                        custom_timestamp = "#{distance_of_time_in_words(time_now, timestamp.to_time)} ago"
         | 
| 106 | 
            +
                        custom_timestamp = "today" if time_format == ""
         | 
| 60 107 | 
             
                      end
         | 
| 61 108 | 
             
                    elsif time_diff_in_days < 7
         | 
| 62 109 | 
             
                      date_value = "last " + timestamp.strftime('%A')
         | 
| 63 110 | 
             
                      time_value = timestamp.strftime(time_format)
         | 
| 64 111 | 
             
                      custom_timestamp = time_first ? "#{time_value} #{date_value}" : "#{date_value} at #{time_value}"
         | 
| 112 | 
            +
                      custom_timestamp = date_value if time_format == ""
         | 
| 65 113 | 
             
                    end
         | 
| 66 114 | 
             
                  end
         | 
| 67 115 |  | 
| @@ -81,26 +129,28 @@ module WiserDate | |
| 81 129 | 
             
                  classes << "humanize" if humanize
         | 
| 82 130 | 
             
                  classes << "capitalize" if capitalize
         | 
| 83 131 | 
             
                  classes << "real_time" if real_time
         | 
| 132 | 
            +
                  classes << "on" if real_time
         | 
| 133 | 
            +
                  classes << "-#{@timezone}-"
         | 
| 84 134 | 
             
                  classes = classes.join(' ')
         | 
| 85 | 
            -
             | 
| 135 | 
            +
             | 
| 86 136 | 
             
                  uniq_id = Digest::SHA1.hexdigest([Time.now, rand].join)
         | 
| 87 137 | 
             
                  html = content_tag(:span, custom_timestamp, 
         | 
| 88 138 | 
             
                    "id" => uniq_id,
         | 
| 89 139 | 
             
                    "class" => classes, 
         | 
| 90 140 | 
             
                    "data-plain-timestamp" => plain_timestamp, 
         | 
| 91 141 | 
             
                    "data-date-format" => date_format,
         | 
| 92 | 
            -
                    "data-time-format" => time_format
         | 
| 142 | 
            +
                    "data-time-format" => time_format,
         | 
| 143 | 
            +
                    "title" => title
         | 
| 93 144 | 
             
                  )
         | 
| 94 145 |  | 
| 146 | 
            +
                  formatted_time_now = time_now.strftime(plain_format)
         | 
| 95 147 | 
             
                  meta_vars = []
         | 
| 96 | 
            -
                  meta_vars << "data- | 
| 97 | 
            -
                  meta_vars << "data- | 
| 98 | 
            -
                  meta_vars << "data- | 
| 99 | 
            -
                  meta_vars << "data-server-datetime=\""+time_now.strftime(plain_format)+"\""
         | 
| 100 | 
            -
                  meta_vars << "data-interval=\""+interval.to_s+"\""
         | 
| 148 | 
            +
                  meta_vars << "data-custom-format=\"" + custom_format + "\""
         | 
| 149 | 
            +
                  meta_vars << "data-server-datetime=\"" + formatted_time_now + "\""
         | 
| 150 | 
            +
                  meta_vars << "data-interval=\"" + interval.to_s + "\""
         | 
| 101 151 | 
             
                  meta_vars << "id=\"wiser_date\""
         | 
| 102 152 |  | 
| 103 | 
            -
                  html += javascript_tag(" | 
| 153 | 
            +
                  html += javascript_tag("make_it_wiser_date('#" + uniq_id + "', '" + meta_vars.join(' ') + "');")
         | 
| 104 154 | 
             
                  html.html_safe
         | 
| 105 155 | 
             
                end
         | 
| 106 156 | 
             
              end
         | 
| @@ -1,27 +1,23 @@ | |
| 1 | 
            +
            function make_it_wiser_date(id, meta_vars) {
         | 
| 2 | 
            +
              jQuery(document).ready(function(){
         | 
| 3 | 
            +
                if(jQuery('body meta#wiser_date').size() == 0){
         | 
| 4 | 
            +
                  jQuery('body').prepend("<meta " + meta_vars + " />")
         | 
| 5 | 
            +
                };
         | 
| 6 | 
            +
                updateWiserDate(id);
         | 
| 7 | 
            +
              })
         | 
| 8 | 
            +
            }
         | 
| 9 | 
            +
             | 
| 1 10 | 
             
            function updateWiserDate(id) {
         | 
| 2 | 
            -
              if( | 
| 3 | 
            -
                update_interval = parseInt( | 
| 11 | 
            +
              if(jQuery('meta#wiser_date').attr('data-real-time-started') != "true"){
         | 
| 12 | 
            +
                update_interval = parseInt(jQuery('meta#wiser_date').attr('data-interval')) * 1000;
         | 
| 4 13 | 
             
                setInterval(function() {
         | 
| 5 14 | 
             
                  update_timer(update_interval)
         | 
| 6 | 
            -
                   | 
| 7 | 
            -
             | 
| 8 | 
            -
                    if($(val).size() > 0){
         | 
| 9 | 
            -
                      updateDate($(val));
         | 
| 10 | 
            -
                    }else{
         | 
| 11 | 
            -
                      excludeElement($(val));
         | 
| 12 | 
            -
                    }
         | 
| 15 | 
            +
                  jQuery('.wiser_date.on').each(function(){
         | 
| 16 | 
            +
                    updateDate(jQuery(this));
         | 
| 13 17 | 
             
                  })
         | 
| 14 18 | 
             
                },update_interval); 
         | 
| 15 19 | 
             
              }
         | 
| 16 | 
            -
               | 
| 17 | 
            -
            }
         | 
| 18 | 
            -
             | 
| 19 | 
            -
            function excludeElement(el){
         | 
| 20 | 
            -
              el_id = '#'+$(el).attr('id')+'.real_time'
         | 
| 21 | 
            -
              selector = $('meta#wiser_date').attr('data-value')
         | 
| 22 | 
            -
              selector = selector.replace(el_id, "")
         | 
| 23 | 
            -
              selector = selector.split(', ').filter(function(v){return v!==''}).join(', ')
         | 
| 24 | 
            -
              $('meta#wiser_date').attr('data-value',selector)
         | 
| 20 | 
            +
              jQuery('meta#wiser_date').attr('data-real-time-started','true');
         | 
| 25 21 | 
             
            }
         | 
| 26 22 |  | 
| 27 23 | 
             
            function updateDate(el){
         | 
| @@ -38,7 +34,7 @@ function prettyDate(element){ | |
| 38 34 | 
             
              humanize = element.hasClass('humanize')
         | 
| 39 35 | 
             
              time_first = element.hasClass('time_first')
         | 
| 40 36 |  | 
| 41 | 
            -
              server_datetime =  | 
| 37 | 
            +
              server_datetime = jQuery('meta#wiser_date').attr('data-server-datetime')
         | 
| 42 38 | 
             
              var time_now = new Date((server_datetime || "").replace(/-/g,"/").replace(/[TZ]/g," "));
         | 
| 43 39 | 
             
              var timestamp = new Date((datetime || "").replace(/-/g,"/").replace(/[TZ]/g," "));
         | 
| 44 40 | 
             
              var time_diff_in_seconds = ((time_now.getTime() - timestamp.getTime()) / 1000);
         | 
| @@ -63,6 +59,9 @@ function prettyDate(element){ | |
| 63 59 | 
             
              }else if(humanize){
         | 
| 64 60 | 
             
                if(time_diff_in_seconds < 60 && time_diff_in_seconds >= 0){
         | 
| 65 61 | 
             
                  custom_timestamp = "just now"
         | 
| 62 | 
            +
                  if(time_format == ""){
         | 
| 63 | 
            +
                    custom_timestamp = "today"
         | 
| 64 | 
            +
                  }
         | 
| 66 65 | 
             
                }else if(custom_format(date_yesterday, plain_date_format) == custom_format(timestamp, plain_date_format)){
         | 
| 67 66 | 
             
                  date_value = "yesterday"
         | 
| 68 67 | 
             
                  time_value = custom_format(timestamp, time_format)
         | 
| @@ -71,6 +70,9 @@ function prettyDate(element){ | |
| 71 70 | 
             
                  }else{
         | 
| 72 71 | 
             
                    custom_timestamp = date_value + " at " + time_value;
         | 
| 73 72 | 
             
                  } 
         | 
| 73 | 
            +
                  if(time_format == ""){
         | 
| 74 | 
            +
                    custom_timestamp = date_value
         | 
| 75 | 
            +
                  }
         | 
| 74 76 | 
             
                }else if(time_diff_in_days < 0){
         | 
| 75 77 | 
             
                  if(time_diff_in_days > -2){
         | 
| 76 78 | 
             
                    date_value = "tomorrow"
         | 
| @@ -79,6 +81,9 @@ function prettyDate(element){ | |
| 79 81 | 
             
                      custom_timestamp = time_value + " " + date_value;
         | 
| 80 82 | 
             
                    }else{
         | 
| 81 83 | 
             
                      custom_timestamp = date_value + " at " + time_value;
         | 
| 84 | 
            +
                    } 
         | 
| 85 | 
            +
                    if(time_format == ""){
         | 
| 86 | 
            +
                      custom_timestamp = date_value
         | 
| 82 87 | 
             
                    }
         | 
| 83 88 | 
             
                  }else if(time_diff_in_days > -7){
         | 
| 84 89 | 
             
                    date_value = "on " + custom_format(timestamp, "%A")
         | 
| @@ -87,9 +92,12 @@ function prettyDate(element){ | |
| 87 92 | 
             
                      custom_timestamp = time_value + " " + date_value;
         | 
| 88 93 | 
             
                    }else{
         | 
| 89 94 | 
             
                      custom_timestamp = date_value + " at " + time_value;
         | 
| 95 | 
            +
                    } 
         | 
| 96 | 
            +
                    if(time_format == ""){
         | 
| 97 | 
            +
                      custom_timestamp = date_value
         | 
| 90 98 | 
             
                    }
         | 
| 91 99 | 
             
                  }else{
         | 
| 92 | 
            -
                     | 
| 100 | 
            +
                    element.removeClass('on')
         | 
| 93 101 | 
             
                    custom_timestamp = regular_date_display
         | 
| 94 102 | 
             
                  }
         | 
| 95 103 | 
             
                }else if(time_diff_in_days < 1){
         | 
| @@ -100,9 +108,15 @@ function prettyDate(element){ | |
| 100 108 | 
             
                      custom_timestamp = time_value + " " + date_value;
         | 
| 101 109 | 
             
                    }else{
         | 
| 102 110 | 
             
                      custom_timestamp = date_value + " at " + time_value;
         | 
| 111 | 
            +
                    } 
         | 
| 112 | 
            +
                    if(time_format == ""){
         | 
| 113 | 
            +
                      custom_timestamp = date_value
         | 
| 103 114 | 
             
                    }
         | 
| 104 115 | 
             
                  }else{
         | 
| 105 116 | 
             
                    custom_timestamp = humanize_format(time_diff_in_seconds, time_diff_in_days);
         | 
| 117 | 
            +
                    if(time_format == ""){
         | 
| 118 | 
            +
                      custom_timestamp = "today"
         | 
| 119 | 
            +
                    }
         | 
| 106 120 | 
             
                  }
         | 
| 107 121 | 
             
                }else if(time_diff_in_days < 7){
         | 
| 108 122 | 
             
                  date_value = "last " + custom_format(timestamp, "%A")
         | 
| @@ -111,13 +125,16 @@ function prettyDate(element){ | |
| 111 125 | 
             
                    custom_timestamp = time_value + " " + date_value;
         | 
| 112 126 | 
             
                  }else{
         | 
| 113 127 | 
             
                    custom_timestamp = date_value + " at " + time_value;
         | 
| 128 | 
            +
                  } 
         | 
| 129 | 
            +
                  if(time_format == ""){
         | 
| 130 | 
            +
                    custom_timestamp = date_value
         | 
| 114 131 | 
             
                  }
         | 
| 115 132 | 
             
                }else{
         | 
| 116 | 
            -
                   | 
| 133 | 
            +
                  element.removeClass('on')
         | 
| 117 134 | 
             
                  custom_timestamp = regular_date_display
         | 
| 118 135 | 
             
                }
         | 
| 119 136 | 
             
              }else{
         | 
| 120 | 
            -
                 | 
| 137 | 
            +
                element.removeClass('on')
         | 
| 121 138 | 
             
                custom_timestamp = regular_date_display
         | 
| 122 139 | 
             
              }
         | 
| 123 140 |  | 
| @@ -133,12 +150,12 @@ function prettyDate(element){ | |
| 133 150 |  | 
| 134 151 | 
             
            function update_timer(interval){
         | 
| 135 152 | 
             
              if(!interval){interval = 1000;}
         | 
| 136 | 
            -
              current_datetime =  | 
| 153 | 
            +
              current_datetime = jQuery('meta#wiser_date').attr('data-server-datetime');
         | 
| 137 154 | 
             
              current_datetime = new Date((current_datetime || "").replace(/-/g,"/").replace(/[TZ]/g," "));
         | 
| 138 155 | 
             
              current_datetime.setTime(current_datetime.getTime() + interval);
         | 
| 139 156 | 
             
              current_datetime = custom_format(current_datetime, "%Y-%m-%d %H:%M:%S");
         | 
| 140 | 
            -
               | 
| 141 | 
            -
               | 
| 157 | 
            +
              jQuery('meta#wiser_date').attr('data-server-datetime', current_datetime);
         | 
| 158 | 
            +
              jQuery('#real_time').text('The actual server time is ' + current_datetime);
         | 
| 142 159 | 
             
            }
         | 
| 143 160 |  | 
| 144 161 | 
             
            function humanize_format(sec_diff, day_diff){
         | 
| @@ -225,4 +242,4 @@ function DateFmt() { | |
| 225 242 |  | 
| 226 243 | 
             
              return dateTxt
         | 
| 227 244 | 
             
              }
         | 
| 228 | 
            -
            }
         | 
| 245 | 
            +
            }
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: wiser_date
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Kenneth John Balgos
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2012- | 
| 11 | 
            +
            date: 2012-06-01 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         |