seamusabshere-scriptaculous_slider 1.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 (3) hide show
  1. data/VERSION.yml +4 -0
  2. data/lib/helpers/slider_helper.rb +129 -0
  3. metadata +59 -0
@@ -0,0 +1,4 @@
1
+ ---
2
+ :minor: 1
3
+ :patch: 0
4
+ :major: 1
@@ -0,0 +1,129 @@
1
+ # Copyright (c) 2005 Thomas Fuchs
2
+ #
3
+ # Contributors :
4
+ # - Nicolas Cavigneaux
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining
7
+ # a copy of this software and associated documentation files (the
8
+ # "Software"), to deal in the Software without restriction, including
9
+ # without limitation the rights to use, copy, modify, merge, publish,
10
+ # distribute, sublicense, and/or sell copies of the Software, and to
11
+ # permit persons to whom the Software is furnished to do so, subject to
12
+ # the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be
15
+ # included in all copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
+
25
+ module ActionView
26
+ module Helpers
27
+ module SliderHelper
28
+
29
+ # Creates a slider control out of an element.
30
+ def slider_element(element_id, options={})
31
+ prepare = "Element.cleanWhitespace('#{element_id}');"
32
+
33
+ [:change, :slide].each do |k|
34
+ if options.include?(k)
35
+ name = 'on' + k.to_s.capitalize
36
+ options[name] = "function(value){#{options[k]}}"
37
+ options.delete k
38
+ end
39
+ end
40
+
41
+ [:spans, :axis].each do |k|
42
+ options[k] = array_or_string_for_javascript(options[k]) if options[k]
43
+ end
44
+
45
+ options[:sliderValue] = array_or_numeric_for_javascript(options[:sliderValue]) if options[:sliderValue]
46
+
47
+ options[:range] = "$R(#{options[:range].min},#{options[:range].max})" if options[:range]
48
+ options[:values] = "$R(#{options[:values].min},#{options[:values].max})" if options[:values]
49
+
50
+ slider = ''
51
+
52
+ if options[:hidden_fields] == true
53
+ slider = if options[:handles].kind_of?(Array)
54
+ hidden_fields = options[:handles].collect { |h| hidden_field_tag(h.to_s + "_value") }
55
+ hidden_fields.join("\n")
56
+ elsif !options[:handles].nil?
57
+ hidden_field_tag(options[:handles].to_s + "_value")
58
+ end
59
+
60
+ options.delete(:hidden_fields)
61
+ end
62
+
63
+ handle = array_or_string_for_javascript(options[:handles]) || "$('#{element_id}').firstChild"
64
+ options.delete :handles
65
+
66
+ slider += javascript_tag("#{prepare} #{element_id} = new Control.Slider(#{handle},'#{element_id}', #{options_for_javascript(options)})")
67
+ end
68
+
69
+ # Creates a simple slider control and associates it with a hidden text field
70
+ def slider_field(object, method, options={})
71
+ options.merge!({
72
+ :change => "$('#{object}_#{method}').value = value",
73
+ :hidden_fields => false
74
+ })
75
+ if slider_value = instance_variable_get("@#{object}").send(method)
76
+ options.merge!({ :sliderValue => slider_value })
77
+ end
78
+ hidden_field(object, method) <<
79
+ content_tag('div',content_tag('div', ''),
80
+ :class => 'slider', :id => "#{object}_#{method}_slider") <<
81
+ slider_element("#{object}_#{method}_slider", options)
82
+ end
83
+
84
+ def slider_stylesheet
85
+ content_tag("style", <<-EOT
86
+ div.slider {
87
+ width: 150px;
88
+ height: 5px;
89
+ margin-top:5px;
90
+ margin-bottom:5px;
91
+ background: #ddd;
92
+ position: relative;
93
+ }
94
+ div.slider div {
95
+ position:absolute;
96
+ width:8px;
97
+ height:15px;
98
+ margin-top:-5px;
99
+ background: #999;
100
+ border:1px outset white;
101
+ }
102
+ EOT
103
+ )
104
+ end
105
+
106
+ private
107
+ def options_for_javascript(options)
108
+ '{' + options.map {|k, v| "#{k}:#{v}"}.sort.join(', ') + '}'
109
+ end
110
+
111
+ def array_or_string_for_javascript(option)
112
+ if option.kind_of?(Array)
113
+ "['" + option.join("','") + "']"
114
+ elsif !option.nil?
115
+ "'#{option}'"
116
+ end
117
+ end
118
+
119
+ def array_or_numeric_for_javascript(option)
120
+ if option.kind_of?(Array)
121
+ "[" + option.join(',') + "]"
122
+ elsif !option.nil?
123
+ option.to_s
124
+ end
125
+ end
126
+
127
+ end
128
+ end
129
+ end
metadata ADDED
@@ -0,0 +1,59 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: seamusabshere-scriptaculous_slider
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Nico Bounga
8
+ - Marty Haught
9
+ - Thomas Fuchs
10
+ - Nicolas Cavigneaux
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+
15
+ date: 2009-02-05 00:00:00 -08:00
16
+ default_executable:
17
+ dependencies: []
18
+
19
+ description: Scriptaculous slider plugin
20
+ email: nico@bounga.org
21
+ executables: []
22
+
23
+ extensions: []
24
+
25
+ extra_rdoc_files: []
26
+
27
+ files:
28
+ - VERSION.yml
29
+ - lib/helpers
30
+ - lib/helpers/slider_helper.rb
31
+ has_rdoc: true
32
+ homepage: http://github.com/Bounga/scriptaculous_slider
33
+ post_install_message:
34
+ rdoc_options:
35
+ - --inline-source
36
+ - --charset=UTF-8
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
50
+ version:
51
+ requirements: []
52
+
53
+ rubyforge_project:
54
+ rubygems_version: 1.2.0
55
+ signing_key:
56
+ specification_version: 2
57
+ summary: Scriptaculous slider plugin
58
+ test_files: []
59
+