muruca_widgets 0.1.0

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.
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: