muruca_widgets 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +12 -0
  3. data/generators/colorbox/colorbox_generator.rb +21 -0
  4. data/generators/colorbox/templates/README +10 -0
  5. data/generators/colorbox/templates/_colorbox.html.erb +10 -0
  6. data/generators/colorbox/templates/colorbox/colorbox.css +62 -0
  7. data/generators/colorbox/templates/colorbox/images/border.png +0 -0
  8. data/generators/colorbox/templates/colorbox/images/controls.png +0 -0
  9. data/generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomCenter.png +0 -0
  10. data/generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomLeft.png +0 -0
  11. data/generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomRight.png +0 -0
  12. data/generators/colorbox/templates/colorbox/images/internet_explorer/borderMiddleLeft.png +0 -0
  13. data/generators/colorbox/templates/colorbox/images/internet_explorer/borderMiddleRight.png +0 -0
  14. data/generators/colorbox/templates/colorbox/images/internet_explorer/borderTopCenter.png +0 -0
  15. data/generators/colorbox/templates/colorbox/images/internet_explorer/borderTopLeft.png +0 -0
  16. data/generators/colorbox/templates/colorbox/images/internet_explorer/borderTopRight.png +0 -0
  17. data/generators/colorbox/templates/colorbox/images/loading.gif +0 -0
  18. data/generators/colorbox/templates/colorbox/images/loading_background.png +0 -0
  19. data/generators/colorbox/templates/colorbox/images/overlay.png +0 -0
  20. data/generators/colorbox/templates/jquery-1.3.2.min.js +19 -0
  21. data/generators/colorbox/templates/jquery.colorbox.js +698 -0
  22. data/generators/generator_helpers.rb +17 -0
  23. data/generators/iip_viewer/iip_viewer_generator.rb +18 -0
  24. data/generators/iip_viewer/templates/README +8 -0
  25. data/generators/iip_viewer/templates/_iip_flash_viewer.html.erb +14 -0
  26. data/generators/iip_viewer/templates/fliipish.swf +0 -0
  27. data/generators/iip_viewer/templates/iip_flashclient.js +24 -0
  28. data/generators/iip_viewer/templates/iip_helper.rb +24 -0
  29. data/generators/iip_viewer/templates/swfobject.js +8 -0
  30. data/generators/ipod_dropdown/ipod_dropdown_generator.rb +24 -0
  31. data/generators/ipod_dropdown/templates/README +8 -0
  32. data/generators/ipod_dropdown/templates/_ipod_dropdown.html.erb +25 -0
  33. data/generators/ipod_dropdown/templates/fg.menu.js +645 -0
  34. data/generators/ipod_dropdown/templates/ipod-menu/fg.menu.css +129 -0
  35. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  36. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
  37. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  38. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  39. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  40. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  41. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  42. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  43. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_217bc0_256x240.png +0 -0
  44. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_2e83ff_256x240.png +0 -0
  45. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_469bdd_256x240.png +0 -0
  46. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_6da8d5_256x240.png +0 -0
  47. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_cd0a0a_256x240.png +0 -0
  48. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_d8e7f3_256x240.png +0 -0
  49. data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_f9bd01_256x240.png +0 -0
  50. data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.accordion.css +9 -0
  51. data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.all.css +2 -0
  52. data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.base.css +1 -0
  53. data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.core.css +37 -0
  54. data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.datepicker.css +62 -0
  55. data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.dialog.css +13 -0
  56. data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.progressbar.css +4 -0
  57. data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.resizable.css +13 -0
  58. data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.slider.css +17 -0
  59. data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.tabs.css +11 -0
  60. data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.theme.css +247 -0
  61. data/generators/ipod_dropdown/templates/ipod_dropdown_helper.rb +52 -0
  62. data/generators/ipod_dropdown/templates/jquery-1.3.2.min.js +19 -0
  63. data/generators/simile_timeline/simile_timeline_generator.rb +24 -0
  64. data/generators/simile_timeline/templates/README +8 -0
  65. data/generators/simile_timeline/templates/_timeline.html.erb +7 -0
  66. data/generators/simile_timeline/templates/_timeline_include.html.erb +6 -0
  67. data/generators/simile_timeline/templates/timeline.js +82 -0
  68. data/generators/simile_timeline/templates/timeline_ajax/content/history.html +7 -0
  69. data/generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-down.png +0 -0
  70. data/generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-left.png +0 -0
  71. data/generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-right.png +0 -0
  72. data/generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-up.png +0 -0
  73. data/generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom-left.png +0 -0
  74. data/generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom-right.png +0 -0
  75. data/generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom.png +0 -0
  76. data/generators/simile_timeline/templates/timeline_ajax/images/bubble-left.png +0 -0
  77. data/generators/simile_timeline/templates/timeline_ajax/images/bubble-right.png +0 -0
  78. data/generators/simile_timeline/templates/timeline_ajax/images/bubble-top-left.png +0 -0
  79. data/generators/simile_timeline/templates/timeline_ajax/images/bubble-top-right.png +0 -0
  80. data/generators/simile_timeline/templates/timeline_ajax/images/bubble-top.png +0 -0
  81. data/generators/simile_timeline/templates/timeline_ajax/images/close-button.png +0 -0
  82. data/generators/simile_timeline/templates/timeline_ajax/images/copy.png +0 -0
  83. data/generators/simile_timeline/templates/timeline_ajax/images/message-bottom-left.png +0 -0
  84. data/generators/simile_timeline/templates/timeline_ajax/images/message-bottom-right.png +0 -0
  85. data/generators/simile_timeline/templates/timeline_ajax/images/message-left.png +0 -0
  86. data/generators/simile_timeline/templates/timeline_ajax/images/message-right.png +0 -0
  87. data/generators/simile_timeline/templates/timeline_ajax/images/message-top-left.png +0 -0
  88. data/generators/simile_timeline/templates/timeline_ajax/images/message-top-right.png +0 -0
  89. data/generators/simile_timeline/templates/timeline_ajax/scripts/signal.js +43 -0
  90. data/generators/simile_timeline/templates/timeline_ajax/simile-ajax-api.js +212 -0
  91. data/generators/simile_timeline/templates/timeline_ajax/simile-ajax-bundle.js +2623 -0
  92. data/generators/simile_timeline/templates/timeline_ajax/styles/graphics-ie6.css +77 -0
  93. data/generators/simile_timeline/templates/timeline_ajax/styles/graphics.css +171 -0
  94. data/generators/simile_timeline/templates/timeline_helper.rb +36 -0
  95. data/generators/simile_timeline/templates/timeline_js/images/blue-circle.png +0 -0
  96. data/generators/simile_timeline/templates/timeline_js/images/bubble-bottom-arrow.png +0 -0
  97. data/generators/simile_timeline/templates/timeline_js/images/bubble-bottom-left.png +0 -0
  98. data/generators/simile_timeline/templates/timeline_js/images/bubble-bottom-right.png +0 -0
  99. data/generators/simile_timeline/templates/timeline_js/images/bubble-bottom.png +0 -0
  100. data/generators/simile_timeline/templates/timeline_js/images/bubble-left-arrow.png +0 -0
  101. data/generators/simile_timeline/templates/timeline_js/images/bubble-left.png +0 -0
  102. data/generators/simile_timeline/templates/timeline_js/images/bubble-right-arrow.png +0 -0
  103. data/generators/simile_timeline/templates/timeline_js/images/bubble-right.png +0 -0
  104. data/generators/simile_timeline/templates/timeline_js/images/bubble-top-arrow.png +0 -0
  105. data/generators/simile_timeline/templates/timeline_js/images/bubble-top-left.png +0 -0
  106. data/generators/simile_timeline/templates/timeline_js/images/bubble-top-right.png +0 -0
  107. data/generators/simile_timeline/templates/timeline_js/images/bubble-top.png +0 -0
  108. data/generators/simile_timeline/templates/timeline_js/images/close-button.png +0 -0
  109. data/generators/simile_timeline/templates/timeline_js/images/copyright-vertical.png +0 -0
  110. data/generators/simile_timeline/templates/timeline_js/images/copyright.png +0 -0
  111. data/generators/simile_timeline/templates/timeline_js/images/dark-blue-circle.png +0 -0
  112. data/generators/simile_timeline/templates/timeline_js/images/dark-green-circle.png +0 -0
  113. data/generators/simile_timeline/templates/timeline_js/images/dark-red-circle.png +0 -0
  114. data/generators/simile_timeline/templates/timeline_js/images/dull-blue-circle.png +0 -0
  115. data/generators/simile_timeline/templates/timeline_js/images/dull-green-circle.png +0 -0
  116. data/generators/simile_timeline/templates/timeline_js/images/dull-red-circle.png +0 -0
  117. data/generators/simile_timeline/templates/timeline_js/images/gray-circle.png +0 -0
  118. data/generators/simile_timeline/templates/timeline_js/images/green-circle.png +0 -0
  119. data/generators/simile_timeline/templates/timeline_js/images/message-bottom-left.png +0 -0
  120. data/generators/simile_timeline/templates/timeline_js/images/message-bottom-right.png +0 -0
  121. data/generators/simile_timeline/templates/timeline_js/images/message-left.png +0 -0
  122. data/generators/simile_timeline/templates/timeline_js/images/message-right.png +0 -0
  123. data/generators/simile_timeline/templates/timeline_js/images/message-top-left.png +0 -0
  124. data/generators/simile_timeline/templates/timeline_js/images/message-top-right.png +0 -0
  125. data/generators/simile_timeline/templates/timeline_js/images/progress-running.gif +0 -0
  126. data/generators/simile_timeline/templates/timeline_js/images/red-circle.png +0 -0
  127. data/generators/simile_timeline/templates/timeline_js/images/top-bubble.png +0 -0
  128. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/cs/labellers.js +30 -0
  129. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/cs/timeline.js +9 -0
  130. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/de/labellers.js +27 -0
  131. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/de/timeline.js +8 -0
  132. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/en/labellers.js +12 -0
  133. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/en/timeline.js +9 -0
  134. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/es/labellers.js +8 -0
  135. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/es/timeline.js +9 -0
  136. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/fr/labellers.js +8 -0
  137. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/fr/timeline.js +9 -0
  138. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/it/labellers.js +8 -0
  139. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/it/timeline.js +9 -0
  140. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/nl/labellers.js +11 -0
  141. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/nl/timeline.js +9 -0
  142. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/ru/labellers.js +10 -0
  143. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/ru/timeline.js +9 -0
  144. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/se/labellers.js +12 -0
  145. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/se/timeline.js +9 -0
  146. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/tr/labellers.js +8 -0
  147. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/tr/timeline.js +9 -0
  148. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/vi/labellers.js +26 -0
  149. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/vi/timeline.js +9 -0
  150. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/zh/labellers.js +27 -0
  151. data/generators/simile_timeline/templates/timeline_js/scripts/l10n/zh/timeline.js +9 -0
  152. data/generators/simile_timeline/templates/timeline_js/timeline-api.js +280 -0
  153. data/generators/simile_timeline/templates/timeline_js/timeline-bundle.css +229 -0
  154. data/generators/simile_timeline/templates/timeline_js/timeline-bundle.js +2835 -0
  155. data/lib/muruca_widgets.rb +1 -0
  156. data/lib/timeline.rb +63 -0
  157. data/lib/timeline_source.rb +211 -0
  158. data/test/muruca_widgets_test.rb +8 -0
  159. data/test/test_helper.rb +3 -0
  160. metadata +213 -0
@@ -0,0 +1 @@
1
+ # MurucaWidgets
data/lib/timeline.rb ADDED
@@ -0,0 +1,63 @@
1
+ require 'json'
2
+ require 'timeline_source'
3
+
4
+ # Contains all the data and settings for a single Simile timeline
5
+ class Timeline
6
+
7
+ # The main options that can be given to the timeline are
8
+ #
9
+ # [*config*] - The configuration for timeline, including the bands configuration.
10
+ # This will be directly passed on to timline.js, see there for more
11
+ # documentation. If no :bands option is given, a default band
12
+ # is created for the timeline.
13
+ # [*data*] - A TimelineSource object containing the data for this timeline OR a
14
+ # hash with the options to create the TimelineSource
15
+ def initialize(options)
16
+ raise(ArgumentError, 'Expecting an option hash here.') unless(options.is_a?(Hash))
17
+ options.to_options!
18
+ raise(ArgumentError, 'Expecting some data here') unless(options[:data])
19
+ raise(ArgumentError, 'Expecting the configuration here') unless(options[:config])
20
+
21
+ if(options[:data].is_a?(TimelineSource))
22
+ @data = options[:data]
23
+ else
24
+ @data = TimelineSource.new(options[:data])
25
+ end
26
+
27
+ @config = options[:config].to_options
28
+ @config[:startDate] ||= year_to_iso8601(@data.first_year) if(@data.first_year)
29
+ @config[:stopDate] ||= year_to_iso8601(@data.last_year) if(@data.last_year)
30
+ @default_date ||= year_to_iso8601(@data.first_year + ((@data.last_year - @data.first_year) / 2)) if(@data.first_year && @data.last_year)
31
+ @config[:bands] ||= default_band
32
+ end
33
+
34
+ def timeline_config
35
+ @config.to_json
36
+ end
37
+
38
+ def timeline_data
39
+ @data.timeline_data
40
+ end
41
+
42
+ private
43
+
44
+ def year_to_iso8601(year)
45
+ year = year.to_i
46
+ to_iso8601(Date.ordinal(year))
47
+ end
48
+
49
+ def to_iso8601(date)
50
+ TimelineSource.to_iso8601(date)
51
+ end
52
+
53
+ def default_band
54
+ [{
55
+ :width => 70,
56
+ :intervalUnit => 'DECADE',
57
+ :intervalPixels => 100,
58
+ :date => @default_date || '1900-01-01',
59
+ :layout => 'original'
60
+ }]
61
+ end
62
+
63
+ end
@@ -0,0 +1,211 @@
1
+ require 'talia_core'
2
+
3
+ # Creates the json data for a Simile timeline.
4
+ class TimelineSource
5
+
6
+
7
+ # Create a new timeline source. There are several ways to fill this with data:
8
+ #
9
+ # [*raw_data*] The most straightforward method is to pass the :raw_data option which
10
+ # must contain an array containing each
11
+ # event on the timeline as a hash. Each event must at least contain the
12
+ # :start (start date), :title (Event title). Other than that, all,
13
+ # options that are valid for the simile timeline events will be accepted.
14
+ #
15
+ # [*sources*] The :sources option must contain a list of ActiveSource objects.
16
+ # By default this will try to take the dcns:date property from all objects.
17
+ #
18
+ # [*source_finder*] Alternatively, you may pass the :source_finder option. This option should
19
+ # contain a hash that will be passed into ActiveSource.find(:all)
20
+ #
21
+ # Other options that can be used to configure the working of the timeline
22
+ # data source are:
23
+ #
24
+ # [*start_property*] - Only valid with the :sources or :source_finder option.
25
+ # The class will try to retrieve the start date from this property. If an
26
+ # ISO 8601 duration is found in the field a duration event is created (unless
27
+ # an :end_property had been explicitly set). [default: dcns:date]
28
+ #
29
+ # [*end_property*] - Take the end date of each event from this property. This will disable the
30
+ # automatic handling of ISO 8601 durations (see :start_property)
31
+ #
32
+ # [*title_property*] - Take the event title from this property. If the title is not found, the
33
+ # system will try the dcns:label property and if that fails use the
34
+ # local part of the source URL. This is only valid with the :sources or
35
+ # :source_finder options. [default: dcns:title]
36
+ #
37
+ # [*description_property*] - Take the description of the event from this field. If not found,
38
+ # the title value is used. This is only valid with the :sources or
39
+ # :source_finder options. [default: dcns:abstract]
40
+ #
41
+ # [*link_property*] - Property to take the link from. By default a link to the element's own URL is created.
42
+ # This is only valid with the :sources or :source_finder options.
43
+ #
44
+ # [*color*] - Default color entry for the events. [default: 'blue']
45
+ #
46
+ # [*text_color] - Default text color for the events [default: 'black']
47
+ #
48
+ # [*start_year*] - Year that the timeline starts in. If not given, this will automatically be
49
+ # calculated from the dataset
50
+ #
51
+ # [*final_year*] - Last year of the timeline. See :start_year
52
+ def initialize(options)
53
+ @events = []
54
+ @options = process_options(options)
55
+
56
+ if(@options[:sources])
57
+ initialize_from_sources(options[:sources])
58
+ elsif(@options[:source_finder])
59
+ sources = TaliaCore::ActiveSource.find(:all, @options[:source_finder])
60
+ initialize_from_sources(sources)
61
+ else
62
+ initialize_from_data(@options[:raw_data])
63
+ end
64
+ @first_year = @options[:start_year] if(@options[:start_year])
65
+ @last_year = @options[:final_year] if(@options[:final_year])
66
+ end
67
+
68
+ def first_year
69
+ (@first_year || '1900').to_i
70
+ end
71
+
72
+ def last_year
73
+ (@last_year || '2000').to_i
74
+ end
75
+
76
+ def timeline_data
77
+ {
78
+ :dateTimeFormat => 'iso8601',
79
+ :events => @events
80
+ }.to_json
81
+ end
82
+
83
+ # Get the iso8601 string for the date
84
+ def self.to_iso8601(date)
85
+ return nil unless(date)
86
+ date.strftime('%Y-%m-%dT%H:%M:%SZ')
87
+ end
88
+
89
+ private
90
+
91
+ # Check the options and set them to the default values if necessary
92
+ def process_options(options)
93
+ options.to_options!
94
+ options[:dateTimeFormat] ||= 'iso8601'
95
+ # Check if we have one data source option given
96
+ exactly_one_source = options[:sources] ^ options[:source_finder] ^ options[:raw_data]
97
+ # We could also all three options given - there should be at least one false, d'oh
98
+ exactly_one_source = (exactly_one_source && (!options[:sources] || !options[:source_finder]))
99
+ raise(ArgumentError, "Must give exactly one of :raw_data, :sources or :source_finder") unless(exactly_one_source)
100
+ # Check - we don't want those options for :raw_data
101
+ if(options[:raw_data])
102
+ illegal_properties = (options[:start_property] || options[:end_property] || options[:title_property] || options[:description_property] || options[:link_property])
103
+ raise(ArgumentError, "Illegal options: Must not set property options for :raw_data") if(illegal_properties)
104
+ else
105
+ # Otherwise we go with the default if necessary
106
+ options[:start_property] ||= N::DCNS.date
107
+ options[:title_property] ||= N::DCNS.title
108
+ options[:description_property] ||= N::DCNS.abstract
109
+ end
110
+ # More defaults
111
+ options[:color] = 'blue'
112
+ options[:text_color] = 'black'
113
+ options
114
+ end
115
+
116
+ # Initializes the data from a pre-existing data array. This mainly converts the dates
117
+ # and fills in some fields automatically if they don't exist
118
+ def initialize_from_data(data)
119
+ data.each do |data_item|
120
+ raise(ArgumentError, "Illegal element in data #{data_item.inspect}") unless(data.is_a?(Hash))
121
+ data_item.to_options!
122
+ raise(ArgumetnError, "Incomplete data element #{data_item.inspect}") unless(data_item[:start] && data_item[:title])
123
+ # Fill the start and end dates with a normlized iso8106 version of the existing date(s)
124
+ start_date, end_date = process_timestamp(data_item[:start])
125
+ end_date = process_timestamp(data_item[:end]).first if(data_item[:end])
126
+ data_item[:start], data_item[:end] = to_iso8601(start_date), to_iso8601(end_date)
127
+ update_first_last_year([start_date, end_date]) # Also set the first/last year to a new value
128
+ data_item[:duration_event] ||= true unless(data_item[:end]) # We have a duration if we have an end date
129
+ # Auto-fill some other data elements if necessary
130
+ data_item[:description] ||= data_item[:title]
131
+ data_item[:color] ||= @options[:color]
132
+ data_item[:text_color] ||= @options[:text_color]
133
+ @items << data_item
134
+ end
135
+ end
136
+
137
+ # Reads the data properties from the sources and converts them into a hash that
138
+ # can be fed into the timeline widget
139
+ def initialize_from_sources(sources)
140
+ sources = [sources] unless(sources.is_a?(Array))
141
+
142
+ start_predicate = @options[:start_property]
143
+ end_predicate = @options[:end_property]
144
+
145
+
146
+ first_year = nil
147
+ last_year = nil
148
+
149
+ # Cycle through the sources
150
+ sources.each do |src|
151
+ # Ignore all sources that do not have a timestamp
152
+ next if((stamp = src[start_predicate].first).blank?)
153
+ new_event = {}
154
+
155
+ # Fill the start and end date fields
156
+ dates = process_timestamp(stamp)
157
+ # Overwrite the second date if we have a predefined "end" field
158
+ dates[1] = process_timestamp(src[end_predicate]).first if(end_predicate)
159
+ new_event[:start], new_event[:end] = dates.collect { |d| to_iso8601(d) }
160
+
161
+ update_first_last_year(dates)
162
+
163
+ # Fill the title/description fields
164
+ new_event[:title] = src[@options[:title_property]].first || src[N::RDFS.label].first || N::URI.new(src.uri).to_name_s
165
+ new_event[:description] = src[@options[:description_property]].first || new_event[:title]
166
+ # new_event['image'] = ''
167
+ # The link field may either be filled from a property, or with a link to the element itself (default)
168
+ new_event[:link] = if(@options[:link_property])
169
+ src[@options[:link_property]].first || ''
170
+ else
171
+ (N::LOCAL + N::URI.new(src.uri).local_name).to_s
172
+ end
173
+ # We have a duration event if we have a non-nil end date
174
+ new_event[:duration_event] = true unless(new_event[:end])
175
+ # new_event[:icon] = 'red_circle.png'
176
+ # Colors as defined in the options
177
+ new_event[:color] = @options[:color]
178
+ new_event[:textColor] = @options[:text_color]
179
+
180
+ new_event.delete(:end) unless(new_event[:end])
181
+ @events << new_event
182
+ end
183
+ end
184
+
185
+ # Update the first/last year count on this data source
186
+ def update_first_last_year(dates)
187
+ first_year = dates.first.year
188
+ last_year = (dates.last ? dates.last : dates.first).year
189
+
190
+ @first_year ||= first_year
191
+ @last_year ||= (last_year || first_year)
192
+ @first_year = first_year if(first_year && first_year < @first_year)
193
+ @last_year = last_year if(last_year && last_year > @last_year)
194
+ end
195
+
196
+ # This processes the given timestamp value and returns an array
197
+ # of either one or two formatted fields, depending
198
+ def process_timestamp(value)
199
+ return nil unless(value)
200
+ values = value.split('/')
201
+ result = [ Date.parse(values.first) ]
202
+ result << Date.parse(values.last) if(values.size > 1)
203
+ result
204
+ end
205
+
206
+ def to_iso8601(date)
207
+ TimelineSource.to_iso8601(date)
208
+ end
209
+
210
+
211
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class MurucaWidgetsTest < ActiveSupport::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ require 'rubygems'
2
+ require 'active_support'
3
+ require 'active_support/test_case'
metadata ADDED
@@ -0,0 +1,213 @@
1
+ --- !ruby/object:Gem::Specification
2
+ extensions: []
3
+
4
+ homepage: http://net7.github.com/muruca_widgets
5
+ executables: []
6
+
7
+ version: !ruby/object:Gem::Version
8
+ version: 0.1.0
9
+ post_install_message:
10
+ date: 2009-11-17 23:00:00 +00:00
11
+ files:
12
+ - generators/colorbox/colorbox_generator.rb
13
+ - generators/colorbox/templates/README
14
+ - generators/colorbox/templates/_colorbox.html.erb
15
+ - generators/colorbox/templates/colorbox/colorbox.css
16
+ - generators/colorbox/templates/colorbox/images/border.png
17
+ - generators/colorbox/templates/colorbox/images/controls.png
18
+ - generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomCenter.png
19
+ - generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomLeft.png
20
+ - generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomRight.png
21
+ - generators/colorbox/templates/colorbox/images/internet_explorer/borderMiddleLeft.png
22
+ - generators/colorbox/templates/colorbox/images/internet_explorer/borderMiddleRight.png
23
+ - generators/colorbox/templates/colorbox/images/internet_explorer/borderTopCenter.png
24
+ - generators/colorbox/templates/colorbox/images/internet_explorer/borderTopLeft.png
25
+ - generators/colorbox/templates/colorbox/images/internet_explorer/borderTopRight.png
26
+ - generators/colorbox/templates/colorbox/images/loading.gif
27
+ - generators/colorbox/templates/colorbox/images/loading_background.png
28
+ - generators/colorbox/templates/colorbox/images/overlay.png
29
+ - generators/colorbox/templates/jquery-1.3.2.min.js
30
+ - generators/colorbox/templates/jquery.colorbox.js
31
+ - generators/generator_helpers.rb
32
+ - generators/iip_viewer/iip_viewer_generator.rb
33
+ - generators/iip_viewer/templates/README
34
+ - generators/iip_viewer/templates/_iip_flash_viewer.html.erb
35
+ - generators/iip_viewer/templates/fliipish.swf
36
+ - generators/iip_viewer/templates/iip_flashclient.js
37
+ - generators/iip_viewer/templates/iip_helper.rb
38
+ - generators/iip_viewer/templates/swfobject.js
39
+ - generators/ipod_dropdown/ipod_dropdown_generator.rb
40
+ - generators/ipod_dropdown/templates/README
41
+ - generators/ipod_dropdown/templates/_ipod_dropdown.html.erb
42
+ - generators/ipod_dropdown/templates/fg.menu.js
43
+ - generators/ipod_dropdown/templates/ipod-menu/fg.menu.css
44
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_flat_0_aaaaaa_40x100.png
45
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_flat_55_fbec88_40x100.png
46
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_75_d0e5f5_1x400.png
47
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_85_dfeffc_1x400.png
48
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_95_fef1ec_1x400.png
49
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png
50
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_inset-hard_100_f5f8f9_1x100.png
51
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
52
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_217bc0_256x240.png
53
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_2e83ff_256x240.png
54
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_469bdd_256x240.png
55
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_6da8d5_256x240.png
56
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_cd0a0a_256x240.png
57
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_d8e7f3_256x240.png
58
+ - generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_f9bd01_256x240.png
59
+ - generators/ipod_dropdown/templates/ipod-menu/theme/ui.accordion.css
60
+ - generators/ipod_dropdown/templates/ipod-menu/theme/ui.all.css
61
+ - generators/ipod_dropdown/templates/ipod-menu/theme/ui.base.css
62
+ - generators/ipod_dropdown/templates/ipod-menu/theme/ui.core.css
63
+ - generators/ipod_dropdown/templates/ipod-menu/theme/ui.datepicker.css
64
+ - generators/ipod_dropdown/templates/ipod-menu/theme/ui.dialog.css
65
+ - generators/ipod_dropdown/templates/ipod-menu/theme/ui.progressbar.css
66
+ - generators/ipod_dropdown/templates/ipod-menu/theme/ui.resizable.css
67
+ - generators/ipod_dropdown/templates/ipod-menu/theme/ui.slider.css
68
+ - generators/ipod_dropdown/templates/ipod-menu/theme/ui.tabs.css
69
+ - generators/ipod_dropdown/templates/ipod-menu/theme/ui.theme.css
70
+ - generators/ipod_dropdown/templates/ipod_dropdown_helper.rb
71
+ - generators/ipod_dropdown/templates/jquery-1.3.2.min.js
72
+ - generators/simile_timeline/simile_timeline_generator.rb
73
+ - generators/simile_timeline/templates/README
74
+ - generators/simile_timeline/templates/_timeline.html.erb
75
+ - generators/simile_timeline/templates/_timeline_include.html.erb
76
+ - generators/simile_timeline/templates/timeline.js
77
+ - generators/simile_timeline/templates/timeline_ajax/content/history.html
78
+ - generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-down.png
79
+ - generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-left.png
80
+ - generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-right.png
81
+ - generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-up.png
82
+ - generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom-left.png
83
+ - generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom-right.png
84
+ - generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom.png
85
+ - generators/simile_timeline/templates/timeline_ajax/images/bubble-left.png
86
+ - generators/simile_timeline/templates/timeline_ajax/images/bubble-right.png
87
+ - generators/simile_timeline/templates/timeline_ajax/images/bubble-top-left.png
88
+ - generators/simile_timeline/templates/timeline_ajax/images/bubble-top-right.png
89
+ - generators/simile_timeline/templates/timeline_ajax/images/bubble-top.png
90
+ - generators/simile_timeline/templates/timeline_ajax/images/close-button.png
91
+ - generators/simile_timeline/templates/timeline_ajax/images/copy.png
92
+ - generators/simile_timeline/templates/timeline_ajax/images/message-bottom-left.png
93
+ - generators/simile_timeline/templates/timeline_ajax/images/message-bottom-right.png
94
+ - generators/simile_timeline/templates/timeline_ajax/images/message-left.png
95
+ - generators/simile_timeline/templates/timeline_ajax/images/message-right.png
96
+ - generators/simile_timeline/templates/timeline_ajax/images/message-top-left.png
97
+ - generators/simile_timeline/templates/timeline_ajax/images/message-top-right.png
98
+ - generators/simile_timeline/templates/timeline_ajax/scripts/signal.js
99
+ - generators/simile_timeline/templates/timeline_ajax/simile-ajax-api.js
100
+ - generators/simile_timeline/templates/timeline_ajax/simile-ajax-bundle.js
101
+ - generators/simile_timeline/templates/timeline_ajax/styles/graphics-ie6.css
102
+ - generators/simile_timeline/templates/timeline_ajax/styles/graphics.css
103
+ - generators/simile_timeline/templates/timeline_helper.rb
104
+ - generators/simile_timeline/templates/timeline_js/images/blue-circle.png
105
+ - generators/simile_timeline/templates/timeline_js/images/bubble-bottom-arrow.png
106
+ - generators/simile_timeline/templates/timeline_js/images/bubble-bottom-left.png
107
+ - generators/simile_timeline/templates/timeline_js/images/bubble-bottom-right.png
108
+ - generators/simile_timeline/templates/timeline_js/images/bubble-bottom.png
109
+ - generators/simile_timeline/templates/timeline_js/images/bubble-left-arrow.png
110
+ - generators/simile_timeline/templates/timeline_js/images/bubble-left.png
111
+ - generators/simile_timeline/templates/timeline_js/images/bubble-right-arrow.png
112
+ - generators/simile_timeline/templates/timeline_js/images/bubble-right.png
113
+ - generators/simile_timeline/templates/timeline_js/images/bubble-top-arrow.png
114
+ - generators/simile_timeline/templates/timeline_js/images/bubble-top-left.png
115
+ - generators/simile_timeline/templates/timeline_js/images/bubble-top-right.png
116
+ - generators/simile_timeline/templates/timeline_js/images/bubble-top.png
117
+ - generators/simile_timeline/templates/timeline_js/images/close-button.png
118
+ - generators/simile_timeline/templates/timeline_js/images/copyright-vertical.png
119
+ - generators/simile_timeline/templates/timeline_js/images/copyright.png
120
+ - generators/simile_timeline/templates/timeline_js/images/dark-blue-circle.png
121
+ - generators/simile_timeline/templates/timeline_js/images/dark-green-circle.png
122
+ - generators/simile_timeline/templates/timeline_js/images/dark-red-circle.png
123
+ - generators/simile_timeline/templates/timeline_js/images/dull-blue-circle.png
124
+ - generators/simile_timeline/templates/timeline_js/images/dull-green-circle.png
125
+ - generators/simile_timeline/templates/timeline_js/images/dull-red-circle.png
126
+ - generators/simile_timeline/templates/timeline_js/images/gray-circle.png
127
+ - generators/simile_timeline/templates/timeline_js/images/green-circle.png
128
+ - generators/simile_timeline/templates/timeline_js/images/message-bottom-left.png
129
+ - generators/simile_timeline/templates/timeline_js/images/message-bottom-right.png
130
+ - generators/simile_timeline/templates/timeline_js/images/message-left.png
131
+ - generators/simile_timeline/templates/timeline_js/images/message-right.png
132
+ - generators/simile_timeline/templates/timeline_js/images/message-top-left.png
133
+ - generators/simile_timeline/templates/timeline_js/images/message-top-right.png
134
+ - generators/simile_timeline/templates/timeline_js/images/progress-running.gif
135
+ - generators/simile_timeline/templates/timeline_js/images/red-circle.png
136
+ - generators/simile_timeline/templates/timeline_js/images/top-bubble.png
137
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/cs/labellers.js
138
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/cs/timeline.js
139
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/de/labellers.js
140
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/de/timeline.js
141
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/en/labellers.js
142
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/en/timeline.js
143
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/es/labellers.js
144
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/es/timeline.js
145
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/fr/labellers.js
146
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/fr/timeline.js
147
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/it/labellers.js
148
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/it/timeline.js
149
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/nl/labellers.js
150
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/nl/timeline.js
151
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/ru/labellers.js
152
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/ru/timeline.js
153
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/se/labellers.js
154
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/se/timeline.js
155
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/tr/labellers.js
156
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/tr/timeline.js
157
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/vi/labellers.js
158
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/vi/timeline.js
159
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/zh/labellers.js
160
+ - generators/simile_timeline/templates/timeline_js/scripts/l10n/zh/timeline.js
161
+ - generators/simile_timeline/templates/timeline_js/timeline-api.js
162
+ - generators/simile_timeline/templates/timeline_js/timeline-bundle.css
163
+ - generators/simile_timeline/templates/timeline_js/timeline-bundle.js
164
+ - lib/muruca_widgets.rb
165
+ - lib/timeline.rb
166
+ - lib/timeline_source.rb
167
+ - LICENSE
168
+ - README.rdoc
169
+ rubygems_version: 1.3.5
170
+ rdoc_options:
171
+ - --charset=UTF-8
172
+ signing_key:
173
+ cert_chain: []
174
+
175
+ name: muruca_widgets
176
+ has_rdoc: true
177
+ platform: ruby
178
+ summary: Additional interface elements for Muruca Sites.
179
+ default_executable:
180
+ bindir: bin
181
+ licenses: []
182
+
183
+ required_rubygems_version: !ruby/object:Gem::Requirement
184
+ version:
185
+ requirements:
186
+ - - '>='
187
+ - !ruby/object:Gem::Version
188
+ version: "0"
189
+ required_ruby_version: !ruby/object:Gem::Requirement
190
+ version:
191
+ requirements:
192
+ - - '>='
193
+ - !ruby/object:Gem::Version
194
+ version: "0"
195
+ require_paths:
196
+ - lib
197
+ specification_version: 3
198
+ test_files:
199
+ - test/muruca_widgets_test.rb
200
+ - test/test_helper.rb
201
+ dependencies: []
202
+
203
+ description: Some additional interface elements to be used on Muruca sites.
204
+ email: ghub@limitedcreativity.org
205
+ authors:
206
+ - Daniel Hahn
207
+ extra_rdoc_files:
208
+ - LICENSE
209
+ - README.rdoc
210
+ requirements: []
211
+
212
+ rubyforge_project:
213
+ autorequire: