splendeo-lightbox2_helpers 0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README ADDED
@@ -0,0 +1,15 @@
1
+
2
+
3
+ lightbox2_helpers
4
+
5
+ This package contains hel that allows the usage of http://www.huddletogether.com/projects/lightbox2/ directly on your rails projects.
6
+
7
+ Version of lightbox2 used: v2.04
8
+
9
+ Usage
10
+
11
+ TBC
12
+
13
+ Installation
14
+
15
+ TBC
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__) + "/lib/lightbox2_helpers.rb"
@@ -0,0 +1,55 @@
1
+ # Various helpers available for use in your view
2
+ module Lightbox2Helpers::FormHelpers
3
+
4
+ # Similar to link_to, but tweaked so it uses lightbox2
5
+ #
6
+ # == Signatures
7
+ #
8
+ # link_to_lightbox2(name, options = {}, html_options = nil)
9
+ # link_to_libhgbox2(options = {}, html_options = nil) do
10
+ # # name
11
+ # end
12
+ #
13
+ # == Options
14
+ # link_to_lightbox uses link_to internally, so it should accept all parameters accepted by link_to. Plus two new ones.
15
+ #
16
+ # === :title
17
+ # Used as a caption on the picture's image. Can be left blank.
18
+ #
19
+ # <%= link_to_lightbox2 "Show the picture", "/images/picture.jpg", :title => "a nice picture" %>
20
+ #
21
+ # === :group
22
+ # It will be possible to iterate over links of the same "group" (with "next", "previous" links)
23
+ #
24
+ # <%= link_to_lightbox2 :group => "avatars" do %>
25
+ # This is also part of the link <%= image_tag "picture.jpg">
26
+ # <% end %>
27
+ #
28
+ # == Warning about html_options :rel
29
+ # * link_to_lightbox2 will override :rel if you use it as a parameter on html_options.
30
+ def link_to_lightbox2(*args, &block)
31
+ if block_given?
32
+ options = args.first || {}
33
+ html_options = args.second || {}
34
+ else
35
+ name = args.first
36
+ options = args.second || {}
37
+ html_options = args.third || {}
38
+ end
39
+
40
+ if options[:group]
41
+ html_options.merge {:rel => "lightbox[#{options[:group]}]"}
42
+ else
43
+ html_options.merge {:rel => "lightbox"}
44
+ end
45
+
46
+ html_options.merge {:title => options[:title]} if options[:title]
47
+
48
+ if block_given?
49
+ return concat(link_to(capture(&block), options, html_options))
50
+ else
51
+ return link_to (name, options, html_options)
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,20 @@
1
+ module Lightbox2Helpers::IncludesHelper
2
+ # returns the selected lightbox2_helpers stylesheet (not an array)
3
+ def lightbox2_helpers_stylesheets()
4
+ "lightbox2_helpers/lightbox.css"
5
+ end
6
+
7
+ # returns an array of javascripts needed
8
+ def lightbox2_helpers_javascripts()
9
+ ["lightbox2_helpers/lightbox2_helpers"]
10
+ end
11
+
12
+ # returns html necessary to load javascript and css to make lightbox2_helpers work
13
+ def lightbox2_helpers_includes(*args)
14
+ return "" if @lhs_already_included
15
+ @lhs_already_included=true
16
+
17
+ javascript_include_tag(*lightbox2_helpers_javascripts ) + "\n" +
18
+ stylesheet_link_tag(*lightbox2_helpers_stylesheets ) + "\n"
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ module Lightbox2Helpers
2
+ VERSION = '0.5'
3
+
4
+ # Returns the default_options hash. These options are by default provided to every calendar_date_select control, unless otherwise overrided.
5
+ #
6
+ # Example:
7
+ # # At the bottom of config/environment.rb:
8
+ # Lightbox2Helper.default_options.update(
9
+ # ... whatever options you want to inser here
10
+ # )
11
+ def self.default_options
12
+ @default_options ||= { }
13
+ end
14
+
15
+ end
@@ -0,0 +1,34 @@
1
+ require "lightbox2_helpers/lightbox2_helpers.rb"
2
+ require "lightbox2_helpers/form_helpers.rb"
3
+ require "lightbox2_helpers/includes_helper.rb"
4
+
5
+ if Object.const_defined?(:Rails) && File.directory?(Rails.root.to_s + "/public")
6
+ ActionView::Helpers::FormHelper.send(:include, Lightbox2Helpers::FormHelpers)
7
+ ActionView::Base.send(:include, Lightbox2Helpers::FormHelpers)
8
+ ActionView::Base.send(:include, Lightbox2Helpers::IncludesHelper)
9
+
10
+ # egarcia: all this is adapted from calendar_date_select, so I'm not touching it
11
+ # Filthy backwards compatibility hooks... grumble
12
+ if ([Rails::VERSION::MAJOR, Rails::VERSION::MINOR] <=> [2, 2]) == -1
13
+ ActionView::Helpers::InstanceTag.class_eval do
14
+ def self.new_with_backwards_compatibility(object_name, method_name, template_object, object = nil)
15
+ new(object_name, method_name, template_object, nil, object)
16
+ end
17
+ end
18
+
19
+ else
20
+ ActionView::Helpers::InstanceTag.class_eval do
21
+ class << self; alias new_with_backwards_compatibility new; end
22
+ end
23
+ end
24
+
25
+ # install files
26
+ unless File.exists?(RAILS_ROOT + '/public/javascripts/lightbox2_helpers/lightbox.js')
27
+ ['/public', '/public/javascripts/lightbox2_helpers', '/public/stylesheets/lightbox2_helpers', '/public/images/lightbox2_helpers'].each do |dir|
28
+ source = File.dirname(__FILE__) + "/../#{dir}"
29
+ dest = RAILS_ROOT + dir
30
+ FileUtils.mkdir_p(dest)
31
+ FileUtils.cp(Dir.glob(source+'/*.*'), dest)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,136 @@
1
+ // script.aculo.us builder.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008
2
+
3
+ // Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
4
+ //
5
+ // script.aculo.us is freely distributable under the terms of an MIT-style license.
6
+ // For details, see the script.aculo.us web site: http://script.aculo.us/
7
+
8
+ var Builder = {
9
+ NODEMAP: {
10
+ AREA: 'map',
11
+ CAPTION: 'table',
12
+ COL: 'table',
13
+ COLGROUP: 'table',
14
+ LEGEND: 'fieldset',
15
+ OPTGROUP: 'select',
16
+ OPTION: 'select',
17
+ PARAM: 'object',
18
+ TBODY: 'table',
19
+ TD: 'table',
20
+ TFOOT: 'table',
21
+ TH: 'table',
22
+ THEAD: 'table',
23
+ TR: 'table'
24
+ },
25
+ // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken,
26
+ // due to a Firefox bug
27
+ node: function(elementName) {
28
+ elementName = elementName.toUpperCase();
29
+
30
+ // try innerHTML approach
31
+ var parentTag = this.NODEMAP[elementName] || 'div';
32
+ var parentElement = document.createElement(parentTag);
33
+ try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
34
+ parentElement.innerHTML = "<" + elementName + "></" + elementName + ">";
35
+ } catch(e) {}
36
+ var element = parentElement.firstChild || null;
37
+
38
+ // see if browser added wrapping tags
39
+ if(element && (element.tagName.toUpperCase() != elementName))
40
+ element = element.getElementsByTagName(elementName)[0];
41
+
42
+ // fallback to createElement approach
43
+ if(!element) element = document.createElement(elementName);
44
+
45
+ // abort if nothing could be created
46
+ if(!element) return;
47
+
48
+ // attributes (or text)
49
+ if(arguments[1])
50
+ if(this._isStringOrNumber(arguments[1]) ||
51
+ (arguments[1] instanceof Array) ||
52
+ arguments[1].tagName) {
53
+ this._children(element, arguments[1]);
54
+ } else {
55
+ var attrs = this._attributes(arguments[1]);
56
+ if(attrs.length) {
57
+ try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
58
+ parentElement.innerHTML = "<" +elementName + " " +
59
+ attrs + "></" + elementName + ">";
60
+ } catch(e) {}
61
+ element = parentElement.firstChild || null;
62
+ // workaround firefox 1.0.X bug
63
+ if(!element) {
64
+ element = document.createElement(elementName);
65
+ for(attr in arguments[1])
66
+ element[attr == 'class' ? 'className' : attr] = arguments[1][attr];
67
+ }
68
+ if(element.tagName.toUpperCase() != elementName)
69
+ element = parentElement.getElementsByTagName(elementName)[0];
70
+ }
71
+ }
72
+
73
+ // text, or array of children
74
+ if(arguments[2])
75
+ this._children(element, arguments[2]);
76
+
77
+ return element;
78
+ },
79
+ _text: function(text) {
80
+ return document.createTextNode(text);
81
+ },
82
+
83
+ ATTR_MAP: {
84
+ 'className': 'class',
85
+ 'htmlFor': 'for'
86
+ },
87
+
88
+ _attributes: function(attributes) {
89
+ var attrs = [];
90
+ for(attribute in attributes)
91
+ attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) +
92
+ '="' + attributes[attribute].toString().escapeHTML().gsub(/"/,'&quot;') + '"');
93
+ return attrs.join(" ");
94
+ },
95
+ _children: function(element, children) {
96
+ if(children.tagName) {
97
+ element.appendChild(children);
98
+ return;
99
+ }
100
+ if(typeof children=='object') { // array can hold nodes and text
101
+ children.flatten().each( function(e) {
102
+ if(typeof e=='object')
103
+ element.appendChild(e)
104
+ else
105
+ if(Builder._isStringOrNumber(e))
106
+ element.appendChild(Builder._text(e));
107
+ });
108
+ } else
109
+ if(Builder._isStringOrNumber(children))
110
+ element.appendChild(Builder._text(children));
111
+ },
112
+ _isStringOrNumber: function(param) {
113
+ return(typeof param=='string' || typeof param=='number');
114
+ },
115
+ build: function(html) {
116
+ var element = this.node('div');
117
+ $(element).update(html.strip());
118
+ return element.down();
119
+ },
120
+ dump: function(scope) {
121
+ if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope
122
+
123
+ var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " +
124
+ "BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " +
125
+ "FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+
126
+ "KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+
127
+ "PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+
128
+ "TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);
129
+
130
+ tags.each( function(tag){
131
+ scope[tag] = function() {
132
+ return Builder.node.apply(Builder, [tag].concat($A(arguments)));
133
+ }
134
+ });
135
+ }
136
+ }