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.
- data/LICENSE +20 -0
- data/README.rdoc +12 -0
- data/generators/colorbox/colorbox_generator.rb +21 -0
- data/generators/colorbox/templates/README +10 -0
- data/generators/colorbox/templates/_colorbox.html.erb +10 -0
- data/generators/colorbox/templates/colorbox/colorbox.css +62 -0
- data/generators/colorbox/templates/colorbox/images/border.png +0 -0
- data/generators/colorbox/templates/colorbox/images/controls.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomCenter.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomLeft.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomRight.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderMiddleLeft.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderMiddleRight.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderTopCenter.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderTopLeft.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderTopRight.png +0 -0
- data/generators/colorbox/templates/colorbox/images/loading.gif +0 -0
- data/generators/colorbox/templates/colorbox/images/loading_background.png +0 -0
- data/generators/colorbox/templates/colorbox/images/overlay.png +0 -0
- data/generators/colorbox/templates/jquery-1.3.2.min.js +19 -0
- data/generators/colorbox/templates/jquery.colorbox.js +698 -0
- data/generators/generator_helpers.rb +17 -0
- data/generators/iip_viewer/iip_viewer_generator.rb +18 -0
- data/generators/iip_viewer/templates/README +8 -0
- data/generators/iip_viewer/templates/_iip_flash_viewer.html.erb +14 -0
- data/generators/iip_viewer/templates/fliipish.swf +0 -0
- data/generators/iip_viewer/templates/iip_flashclient.js +24 -0
- data/generators/iip_viewer/templates/iip_helper.rb +24 -0
- data/generators/iip_viewer/templates/swfobject.js +8 -0
- data/generators/ipod_dropdown/ipod_dropdown_generator.rb +24 -0
- data/generators/ipod_dropdown/templates/README +8 -0
- data/generators/ipod_dropdown/templates/_ipod_dropdown.html.erb +25 -0
- data/generators/ipod_dropdown/templates/fg.menu.js +645 -0
- data/generators/ipod_dropdown/templates/ipod-menu/fg.menu.css +129 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_217bc0_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_2e83ff_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_469bdd_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_6da8d5_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_d8e7f3_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_f9bd01_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.accordion.css +9 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.all.css +2 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.base.css +1 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.core.css +37 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.datepicker.css +62 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.dialog.css +13 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.progressbar.css +4 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.resizable.css +13 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.slider.css +17 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.tabs.css +11 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.theme.css +247 -0
- data/generators/ipod_dropdown/templates/ipod_dropdown_helper.rb +52 -0
- data/generators/ipod_dropdown/templates/jquery-1.3.2.min.js +19 -0
- data/generators/simile_timeline/simile_timeline_generator.rb +24 -0
- data/generators/simile_timeline/templates/README +8 -0
- data/generators/simile_timeline/templates/_timeline.html.erb +7 -0
- data/generators/simile_timeline/templates/_timeline_include.html.erb +6 -0
- data/generators/simile_timeline/templates/timeline.js +82 -0
- data/generators/simile_timeline/templates/timeline_ajax/content/history.html +7 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-down.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-up.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-top-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-top-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-top.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/close-button.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/copy.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/message-bottom-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/message-bottom-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/message-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/message-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/message-top-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/message-top-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/scripts/signal.js +43 -0
- data/generators/simile_timeline/templates/timeline_ajax/simile-ajax-api.js +212 -0
- data/generators/simile_timeline/templates/timeline_ajax/simile-ajax-bundle.js +2623 -0
- data/generators/simile_timeline/templates/timeline_ajax/styles/graphics-ie6.css +77 -0
- data/generators/simile_timeline/templates/timeline_ajax/styles/graphics.css +171 -0
- data/generators/simile_timeline/templates/timeline_helper.rb +36 -0
- data/generators/simile_timeline/templates/timeline_js/images/blue-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-bottom-arrow.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-bottom-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-bottom-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-bottom.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-left-arrow.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-right-arrow.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-top-arrow.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-top-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-top-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-top.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/close-button.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/copyright-vertical.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/copyright.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/dark-blue-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/dark-green-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/dark-red-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/dull-blue-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/dull-green-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/dull-red-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/gray-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/green-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/message-bottom-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/message-bottom-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/message-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/message-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/message-top-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/message-top-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/progress-running.gif +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/red-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/top-bubble.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/cs/labellers.js +30 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/cs/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/de/labellers.js +27 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/de/timeline.js +8 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/en/labellers.js +12 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/en/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/es/labellers.js +8 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/es/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/fr/labellers.js +8 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/fr/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/it/labellers.js +8 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/it/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/nl/labellers.js +11 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/nl/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/ru/labellers.js +10 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/ru/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/se/labellers.js +12 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/se/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/tr/labellers.js +8 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/tr/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/vi/labellers.js +26 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/vi/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/zh/labellers.js +27 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/zh/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/timeline-api.js +280 -0
- data/generators/simile_timeline/templates/timeline_js/timeline-bundle.css +229 -0
- data/generators/simile_timeline/templates/timeline_js/timeline-bundle.js +2835 -0
- data/lib/muruca_widgets.rb +1 -0
- data/lib/timeline.rb +63 -0
- data/lib/timeline_source.rb +211 -0
- data/test/muruca_widgets_test.rb +8 -0
- data/test/test_helper.rb +3 -0
- 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
|
data/test/test_helper.rb
ADDED
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:
|