Commit ffae019b9e736c4559c8403d6e0d05f5772cda91

Authored by Braulio Bhavamitra
2 parents 9d1bd7a8 eed38cd8

Merge branch 'modal' into 'master'

Use only colorbox for modals (popins)

See merge request !424
Showing 56 changed files with 239 additions and 1940 deletions   Show diff stats
app/helpers/application_helper.rb
@@ -8,11 +8,7 @@ module ApplicationHelper @@ -8,11 +8,7 @@ module ApplicationHelper
8 8
9 include PermissionNameHelper 9 include PermissionNameHelper
10 10
11 - include LightboxHelper  
12 -  
13 - include ThickboxHelper  
14 -  
15 - include ColorboxHelper 11 + include ModalHelper
16 12
17 include BoxesHelper 13 include BoxesHelper
18 14
@@ -651,8 +647,8 @@ module ApplicationHelper @@ -651,8 +647,8 @@ module ApplicationHelper
651 ' onfocus="if(this.value==\''+s+'\'){this.value=\'\'} this.form.className=\'focus-in\'"'+ 647 ' onfocus="if(this.value==\''+s+'\'){this.value=\'\'} this.form.className=\'focus-in\'"'+
652 ' onblur="if(/^\s*$/.test(this.value)){this.value=\''+s+'\'} this.form.className=\'focus-out\'">'+ 648 ' onblur="if(/^\s*$/.test(this.value)){this.value=\''+s+'\'} this.form.className=\'focus-out\'">'+
653 '</form>' 649 '</form>'
654 - else #opt == 'lightbox_link' is default  
655 - lightbox_link_to '<span class="icon-menu-search"></span>'+ _('Search'), { 650 + else
  651 + modal_link_to '<span class="icon-menu-search"></span>'+ _('Search'), {
656 :controller => 'search', 652 :controller => 'search',
657 :action => 'popup', 653 :action => 'popup',
658 :category_path => (@category ? @category.explode_path : nil)}, 654 :category_path => (@category ? @category.explode_path : nil)},
@@ -1050,7 +1046,7 @@ module ApplicationHelper @@ -1050,7 +1046,7 @@ module ApplicationHelper
1050 {s_('contents|Most commented') => {:href => url_for({:controller => 'search', :action => 'contents', :filter => 'more_comments'})}} 1046 {s_('contents|Most commented') => {:href => url_for({:controller => 'search', :action => 'contents', :filter => 'more_comments'})}}
1051 ] 1047 ]
1052 if logged_in? 1048 if logged_in?
1053 - links.push(_('New content') => colorbox_options({:href => url_for({:controller => 'cms', :action => 'new', :profile => current_user.login, :cms => true})})) 1049 + links.push(_('New content') => modal_options({:href => url_for({:controller => 'cms', :action => 'new', :profile => current_user.login, :cms => true})}))
1054 end 1050 end
1055 1051
1056 link_to(content_tag(:span, _('Contents'), :class => 'icon-menu-articles'), {:controller => "search", :action => 'contents', :category_path => nil}, :id => 'submenu-contents') + 1052 link_to(content_tag(:span, _('Contents'), :class => 'icon-menu-articles'), {:controller => "search", :action => 'contents', :category_path => nil}, :id => 'submenu-contents') +
app/helpers/boxes_helper.rb
@@ -231,7 +231,7 @@ module BoxesHelper @@ -231,7 +231,7 @@ module BoxesHelper
231 end 231 end
232 232
233 if block.editable? 233 if block.editable?
234 - buttons << colorbox_icon_button(:edit, _('Edit'), { :action => 'edit', :id => block.id }) 234 + buttons << modal_icon_button(:edit, _('Edit'), { :action => 'edit', :id => block.id })
235 end 235 end
236 236
237 if !block.main? 237 if !block.main?
@@ -241,7 +241,7 @@ module BoxesHelper @@ -241,7 +241,7 @@ module BoxesHelper
241 end 241 end
242 242
243 if block.respond_to?(:help) 243 if block.respond_to?(:help)
244 - buttons << thickbox_inline_popup_icon(:help, _('Help on this block'), {}, "help-on-box-#{block.id}") << content_tag('div', content_tag('h2', _('Help')) + content_tag('div', block.help, :style => 'margin-bottom: 1em;') + thickbox_close_button(_('Close')), :style => 'display: none;', :id => "help-on-box-#{block.id}") 244 + buttons << modal_inline_icon(:help, _('Help on this block'), {}, "#help-on-box-#{block.id}") << content_tag('div', content_tag('h2', _('Help')) + content_tag('div', block.help, :style => 'margin-bottom: 1em;') + modal_close_button(_('Close')), :style => 'display: none;', :id => "help-on-box-#{block.id}")
245 end 245 end
246 246
247 if block.embedable? 247 if block.embedable?
app/helpers/colorbox_helper.rb
@@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
1 -module ColorboxHelper  
2 -  
3 - def colorbox_close_button(text, options = {})  
4 - button(:close, text, '#', colorbox_options(options, :close))  
5 - end  
6 -  
7 - def colorbox_button(type, label, url, options = {})  
8 - button(type, label, url, colorbox_options(options))  
9 - end  
10 -  
11 - def colorbox_icon_button(type, label, url, options = {})  
12 - icon_button(type, label, url, colorbox_options(options))  
13 - end  
14 -  
15 - # options must be an HTML options hash as passed to link_to etc.  
16 - #  
17 - # returns a new hash with colorbox class added. Keeps existing classes.  
18 - def colorbox_options(options, type=nil)  
19 - the_class = 'colorbox'  
20 - the_class += "-#{type.to_s}" unless type.nil?  
21 - the_class << " #{options[:class]}" if options.has_key?(:class)  
22 - options.merge(:class => the_class)  
23 - end  
24 -  
25 -end  
app/helpers/comment_helper.rb
@@ -65,7 +65,7 @@ module CommentHelper @@ -65,7 +65,7 @@ module CommentHelper
65 65
66 def link_for_edit(comment) 66 def link_for_edit(comment)
67 if comment.can_be_updated_by?(user) 67 if comment.can_be_updated_by?(user)
68 - {:link => expirable_comment_link(comment, :edit, _('Edit'), url_for(:profile => profile.identifier, :controller => :comment, :action => :edit, :id => comment.id),:class => 'colorbox')} 68 + {:link => expirable_comment_link(comment, :edit, _('Edit'), url_for(:profile => profile.identifier, :controller => :comment, :action => :edit, :id => comment.id),:class => 'modal')}
69 end 69 end
70 end 70 end
71 71
app/helpers/lightbox_helper.rb
@@ -1,36 +0,0 @@ @@ -1,36 +0,0 @@
1 -module LightboxHelper  
2 -  
3 - def lightbox_link_to(text, url, options = {})  
4 - link_to(text, url, lightbox_options(options))  
5 - end  
6 -  
7 - def lightbox_close_button(text, options = {})  
8 - button(:close, text, '#', lightbox_options(options, 'lbAction').merge(:rel => 'deactivate'))  
9 - end  
10 -  
11 - def lightbox_button(type, label, url, options = {})  
12 - button(type, label, url, lightbox_options(options))  
13 - end  
14 -  
15 - def lightbox_icon_button(type, label, url, options = {})  
16 - icon_button(type, label, url, lightbox_options(options))  
17 - end  
18 -  
19 - # options must be an HTML options hash as passed to link_to etc.  
20 - #  
21 - # returns a new hash with lightbox class added. Keeps existing classes.  
22 - def lightbox_options(options, lightbox_type = 'lbOn')  
23 - the_class = lightbox_type  
24 - the_class << " #{options[:class]}" if options.has_key?(:class)  
25 - options.merge(:class => the_class)  
26 - end  
27 -  
28 - def lightbox?  
29 - request.xhr?  
30 - end  
31 -  
32 - def lightbox_remote_button(type, label, url, options = {})  
33 - button(type, label, url, lightbox_options(options, 'remote-lbOn'))  
34 - end  
35 -  
36 -end  
app/helpers/modal_helper.rb 0 → 100644
@@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
  1 +module ModalHelper
  2 +
  3 + def modal_inline_link_to title, url, selector, options = {}
  4 + link_to title, url, modal_options(options.merge(:inline => selector))
  5 + end
  6 +
  7 + def modal_inline_icon type, title, url, selector, options = {}
  8 + icon_button type, title, url, modal_options(options.merge(:inline => selector))
  9 + end
  10 +
  11 + def modal_link_to title, url, options = {}
  12 + link_to title, url, modal_options(options)
  13 + end
  14 +
  15 + def modal_close_link text, options = {}
  16 + link_to text, '#', modal_options(options, :close)
  17 + end
  18 +
  19 + def modal_close_button(text, options = {})
  20 + button :close, text, '#', modal_options(options, :close).merge(:rel => 'deactivate')
  21 + end
  22 +
  23 + def modal_button(type, label, url, options = {})
  24 + button type, label, url, modal_options(options)
  25 + end
  26 +
  27 + def modal_icon_button(type, label, url, options = {})
  28 + icon_button type, label, url, modal_options(options)
  29 + end
  30 +
  31 + # options must be an HTML options hash as passed to link_to etc.
  32 + #
  33 + # returns a new hash with modal class added. Keeps existing classes.
  34 + def modal_options(options, type=nil)
  35 + inline_selector = options.delete :inline
  36 + options[:onclick] = "return noosfero.modal.inline('#{inline_selector}')" if inline_selector
  37 +
  38 + classes = if inline_selector then '' else 'modal-toggle' end
  39 + classes += " modal-#{type.to_s}" if type.present?
  40 + classes << " #{options[:class]}" if options.has_key? :class
  41 + options.merge!(:class => classes)
  42 +
  43 + options
  44 + end
  45 +
  46 +end
app/helpers/thickbox_helper.rb
@@ -1,11 +0,0 @@ @@ -1,11 +0,0 @@
1 -module ThickboxHelper  
2 - def thickbox_inline_popup_link(title, url, id, options = {})  
3 - link_to(title, url_for(url) + "#TB_inline?height=300&width=500&inlineId=#{id}&modal=true", {:class => 'thickbox'}.merge(options))  
4 - end  
5 - def thickbox_inline_popup_icon(type, title, url, id, options = {})  
6 - icon_button(type, title, url_for(url) + "#TB_inline?height=300&width=500&inlineId=#{id}&modal=true", {:class => "thickbox"}.merge(options))  
7 - end  
8 - def thickbox_close_button(title)  
9 - button_to_function(:close, title, 'tb_remove();')  
10 - end  
11 -end  
app/views/account/_login_form.html.erb
1 <%= labelled_form_for :user, 1 <%= labelled_form_for :user,
2 :url => { :controller => 'account', :action => (params[:enterprise_code] ? 'activate_enterprise' : 'login') } do |f| %> 2 :url => { :controller => 'account', :action => (params[:enterprise_code] ? 'activate_enterprise' : 'login') } do |f| %>
3 3
4 -<%= f.text_field :login,  
5 - :id => ( lightbox? ? 'lightbox_' : '' ) + 'user_login',  
6 - :onchange => 'this.value = convToValidLogin( this.value )' %> 4 +<%= f.text_field :login, :id => 'user_login', :onchange => 'this.value = convToValidLogin( this.value )' %>
7 5
8 -<%= f.password_field :password,  
9 - :id => ( lightbox? ? 'lightbox_' : '' ) + 'user_password' %> 6 +<%= f.password_field :password, :id => 'user_password' %>
10 7
11 <% if params[:enterprise_code] %> 8 <% if params[:enterprise_code] %>
12 <%= hidden_field_tag :enterprise_code, params[:enterprise_code] %> 9 <%= hidden_field_tag :enterprise_code, params[:enterprise_code] %>
@@ -16,7 +13,7 @@ @@ -16,7 +13,7 @@
16 13
17 <% button_bar do %> 14 <% button_bar do %>
18 <%= submit_button( 'login', _('Log in') )%> 15 <%= submit_button( 'login', _('Log in') )%>
19 - <%= lightbox_close_button(_('Cancel')) if lightbox? %> 16 + <%= modal_close_button _('Cancel') if request.xhr? %>
20 <% end %> 17 <% end %>
21 18
22 <% end %> 19 <% end %>
app/views/account/index_anonymous.html.erb
1 <h1><%= _('Identify yourself') %></h1> 1 <h1><%= _('Identify yourself') %></h1>
2 2
3 <p> 3 <p>
4 -<%= lightbox_link_to _('Login.'), { :controller => 'account', :action => 'login_popup' } %> 4 +<%= modal_link_to _('Login.'), { :controller => 'account', :action => 'login_popup' } %>
5 5
6 <%= _('You need to login to be able to use all the features in this environment.') %> 6 <%= _('You need to login to be able to use all the features in this environment.') %>
7 </p> 7 </p>
app/views/account/login.html.erb
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 <h2><%= _('Login') %></h2> 3 <h2><%= _('Login') %></h2>
4 4
5 <% @user ||= User.new %> 5 <% @user ||= User.new %>
6 -<% is_thickbox ||= false %> 6 +<% is_popin ||= false %>
7 7
8 <%= @message %> 8 <%= @message %>
9 9
@@ -17,8 +17,8 @@ @@ -17,8 +17,8 @@
17 17
18 <% button_bar do %> 18 <% button_bar do %>
19 <%= submit_button( 'login', _('Log in') )%> 19 <%= submit_button( 'login', _('Log in') )%>
20 - <% if is_thickbox %>  
21 - <%= thickbox_close_button(_('Cancel')) %> 20 + <% if is_popin %>
  21 + <%= modal_close_button(_('Cancel')) %>
22 <% end %> 22 <% end %>
23 <% end %> 23 <% end %>
24 24
app/views/account/logout_popup.html.erb
@@ -2,6 +2,6 @@ @@ -2,6 +2,6 @@
2 <p> 2 <p>
3 <% button_bar do %> 3 <% button_bar do %>
4 <%= button :ok, _('Yes'), { :controller => 'account', :action => 'logout' } %> 4 <%= button :ok, _('Yes'), { :controller => 'account', :action => 'logout' } %>
5 - <%= lightbox_close_button _('No, I want to stay.') %> 5 + <%= modal_close_button _('No, I want to stay.') %>
6 <% end %> 6 <% end %>
7 </p> 7 </p>
app/views/box_organizer/add_block.html.erb
@@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
42 42
43 <% button_bar do %> 43 <% button_bar do %>
44 <%= submit_button(:add, _("Add")) %> 44 <%= submit_button(:add, _("Add")) %>
45 - <%= colorbox_close_button(_('Close')) %> 45 + <%= modal_close_button(_('Close')) %>
46 <% end %> 46 <% end %>
47 47
48 <% end %> 48 <% end %>
app/views/box_organizer/edit.html.erb
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 27
28 <% button_bar do %> 28 <% button_bar do %>
29 <%= submit_button(:save, _('Save')) %> 29 <%= submit_button(:save, _('Save')) %>
30 - <%= colorbox_close_button(_('Cancel')) %> 30 + <%= modal_close_button(_('Cancel')) %>
31 <% end %> 31 <% end %>
32 32
33 <% end %> 33 <% end %>
app/views/box_organizer/index.html.erb
1 <h1><%= _('Editing sideboxes')%></h1> 1 <h1><%= _('Editing sideboxes')%></h1>
2 2
3 <% button_bar :class=>'design-menu' do %> 3 <% button_bar :class=>'design-menu' do %>
4 - <%= colorbox_button('add', _('Add a block'), { :action => 'add_block' }) %> 4 + <%= modal_button('add', _('Add a block'), { :action => 'add_block' }) %>
5 <%= button(:back, _('Back to control panel'), :controller => (profile.nil? ? 'admin_panel': 'profile_editor')) %> 5 <%= button(:back, _('Back to control panel'), :controller => (profile.nil? ? 'admin_panel': 'profile_editor')) %>
6 <% end %> 6 <% end %>
app/views/cms/edit.html.erb
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 <% end %> 28 <% end %>
29 29
30 <div style='float: right'> 30 <div style='float: right'>
31 - <%= lightbox_button :help, _('Why categorize?'), :action => 'why_categorize' %> 31 + <%= modal_button :help, _('Why categorize?'), :action => 'why_categorize' %>
32 </div> 32 </div>
33 33
34 <%= select_categories(:article, _('Categorize your article')) %> 34 <%= select_categories(:article, _('Categorize your article')) %>
app/views/cms/select_article_type.html.erb
@@ -15,6 +15,6 @@ @@ -15,6 +15,6 @@
15 </ul> 15 </ul>
16 <br style="clear:both" /> 16 <br style="clear:both" />
17 17
18 -<%= colorbox_close_button(_('Cancel')) %> 18 +<%= modal_close_button(_('Cancel')) %>
19 19
20 </div> 20 </div>
app/views/cms/view.html.erb
@@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
17 <% button_bar(:style => 'margin-bottom: 1em;') do %> 17 <% button_bar(:style => 'margin-bottom: 1em;') do %>
18 <% parent_id = ((@article && @article.allow_children?) ? @article : nil) %> 18 <% parent_id = ((@article && @article.allow_children?) ? @article : nil) %>
19 19
20 - <%= colorbox_button('new', _('New content'), :action => 'new', :parent_id => parent_id, :cms => true) %> 20 + <%= modal_button('new', _('New content'), :action => 'new', :parent_id => parent_id, :cms => true) %>
21 <%= button(:back, _('Back to control panel'), :controller => 'profile_editor', :action => "index") %> 21 <%= button(:back, _('Back to control panel'), :controller => 'profile_editor', :action => "index") %>
22 <% end %> 22 <% end %>
23 23
app/views/cms/why_categorize.html.erb
@@ -5,5 +5,5 @@ @@ -5,5 +5,5 @@
5 </p> 5 </p>
6 6
7 <% button_bar do %> 7 <% button_bar do %>
8 - <%= lightbox_close_button _('Close') %> 8 + <%= modal_close_button _('Close') %>
9 <% end %> 9 <% end %>
app/views/comment/_comment_form.html.erb
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 <%= recaptcha_tags(:display => { :theme => 'clean' }, :ajax => true) %> 10 <%= recaptcha_tags(:display => { :theme => 'clean' }, :ajax => true) %>
11 <% button_bar do %> 11 <% button_bar do %>
12 <%= button_to_function :add, _('Confirm'), "return false", :id => "confirm-captcha" %> 12 <%= button_to_function :add, _('Confirm'), "return false", :id => "confirm-captcha" %>
13 - <%= button_to_function :cancel, _('Cancel'), "jQuery.colorbox.close()" %> 13 + <%= button_to_function :cancel, _('Cancel'), "noosfero.modal.close()" %>
14 <% end %> 14 <% end %>
15 </div> 15 </div>
16 16
@@ -31,10 +31,10 @@ function check_captcha(button, confirm_action) { @@ -31,10 +31,10 @@ function check_captcha(button, confirm_action) {
31 return true; 31 return true;
32 <% else %> 32 <% else %>
33 jQuery('#recaptcha-container').show(); 33 jQuery('#recaptcha-container').show();
34 - jQuery.colorbox({ html: jQuery('#recaptcha-container').html(), maxWidth : '600px', maxHeight : '300px' }); 34 + noosfero.modal.inline('#recaptcha-container', {maxWidth :'600px', maxHeight : '300px' });
35 jQuery('#confirm-captcha').unbind('click'); 35 jQuery('#confirm-captcha').unbind('click');
36 jQuery('#confirm-captcha').bind('click', function() { 36 jQuery('#confirm-captcha').bind('click', function() {
37 - jQuery.colorbox.close(); 37 + noosfero.modal.close();
38 button.form.recaptcha_response_field.value = jQuery('#recaptcha_response_field').val(); 38 button.form.recaptcha_response_field.value = jQuery('#recaptcha_response_field').val();
39 button.form.recaptcha_challenge_field.value = jQuery('#recaptcha_challenge_field').val(); 39 button.form.recaptcha_challenge_field.value = jQuery('#recaptcha_challenge_field').val();
40 button.form.confirm.value = 'true'; 40 button.form.confirm.value = 'true';
@@ -88,7 +88,7 @@ function check_captcha(button, confirm_action) { @@ -88,7 +88,7 @@ function check_captcha(button, confirm_action) {
88 <% if !edition_mode %> 88 <% if !edition_mode %>
89 <%= button :cancel, _('Cancel'), '', :id => 'cancel-comment' %> 89 <%= button :cancel, _('Cancel'), '', :id => 'cancel-comment' %>
90 <% else %> 90 <% else %>
91 - <%= button :cancel, _('Cancel'), '#', :onclick => "jQuery.colorbox.close();" %> 91 + <%= button :cancel, _('Cancel'), '#', :onclick => "noosfero.modal.close();" %>
92 <% end %> 92 <% end %>
93 <% end %> 93 <% end %>
94 <% end %> 94 <% end %>
app/views/content_viewer/_article_toolbar.html.erb
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 <%= expirable_button @page, :locale, content, url %> 28 <%= expirable_button @page, :locale, content, url %>
29 <% end %> 29 <% end %>
30 30
31 - <%= colorbox_button(:new, label_for_new_article(@page), profile.admin_url.merge(:controller => 'cms', :action => 'new', :parent_id => (@page.folder? ? @page : (@page.parent.nil? ? nil : @page.parent)))) unless remove_content_button(:new, @page) %> 31 + <%= modal_button(:new, label_for_new_article(@page), profile.admin_url.merge(:controller => 'cms', :action => 'new', :parent_id => (@page.folder? ? @page : (@page.parent.nil? ? nil : @page.parent)))) unless remove_content_button(:new, @page) %>
32 <% end %> 32 <% end %>
33 33
34 <% if @page.accept_uploads? && @page.allow_create?(user) %> 34 <% if @page.accept_uploads? && @page.allow_create?(user) %>
app/views/content_viewer/_comment_form.html.erb
@@ -7,10 +7,10 @@ function submit_comment_form(button) { @@ -7,10 +7,10 @@ function submit_comment_form(button) {
7 return true; 7 return true;
8 <% else %> 8 <% else %>
9 jQuery('#recaptcha-container').show(); 9 jQuery('#recaptcha-container').show();
10 - jQuery.colorbox({ inline : true, href : '#recaptcha-container', maxWidth : '600px', maxHeight : '300px' }); 10 + noosfero.modal.inline('#recaptcha-container', {maxWidth :'600px', maxHeight : '300px' });
11 jQuery('#confirm-captcha').unbind('click'); 11 jQuery('#confirm-captcha').unbind('click');
12 jQuery('#confirm-captcha').bind('click', function() { 12 jQuery('#confirm-captcha').bind('click', function() {
13 - jQuery.colorbox.close(); 13 + noosfero.modal.close();
14 button.form.recaptcha_response_field.value = jQuery('#recaptcha_response_field').val(); 14 button.form.recaptcha_response_field.value = jQuery('#recaptcha_response_field').val();
15 button.form.recaptcha_challenge_field.value = jQuery('#recaptcha_challenge_field').val(); 15 button.form.recaptcha_challenge_field.value = jQuery('#recaptcha_challenge_field').val();
16 button.form.confirm.value = 'true'; 16 button.form.confirm.value = 'true';
@@ -38,7 +38,7 @@ function submit_comment_form(button) { @@ -38,7 +38,7 @@ function submit_comment_form(button) {
38 <%= recaptcha_tags(:display => { :theme => 'clean' }, :ajax => true) %> 38 <%= recaptcha_tags(:display => { :theme => 'clean' }, :ajax => true) %>
39 <% button_bar do %> 39 <% button_bar do %>
40 <%= button_to_function :add, _('Confirm'), "return false", :id => "confirm-captcha" %> 40 <%= button_to_function :add, _('Confirm'), "return false", :id => "confirm-captcha" %>
41 - <%= button_to_function :cancel, _('Cancel'), "jQuery.colorbox.close()" %> 41 + <%= button_to_function :cancel, _('Cancel'), "noosfero.modal.close()" %>
42 <% end %> 42 <% end %>
43 </div> 43 </div>
44 44
app/views/layouts/_user.html.erb
@@ -7,11 +7,11 @@ @@ -7,11 +7,11 @@
7 </span> 7 </span>
8 <% else %> 8 <% else %>
9 <span class='not-logged-in'> 9 <span class='not-logged-in'>
10 - <%= _("<span class='login'>%s</span>") % thickbox_inline_popup_link('<i class="icon-menu-login"></i><strong>' + _('Login') + '</strong>', login_url, 'inlineLoginBox', :id => 'link_login') %> 10 + <%= _("<span class='login'>%s</span>") % modal_inline_link_to('<i class="icon-menu-login"></i><strong>' + _('Login') + '</strong>', login_url, '#inlineLoginBox', :id => 'link_login') %>
11 <%= @plugins.dispatch(:alternative_authentication_link).collect { |content| instance_exec(&content) }.join("") %> 11 <%= @plugins.dispatch(:alternative_authentication_link).collect { |content| instance_exec(&content) }.join("") %>
12 12
13 <div id='inlineLoginBox' style='display: none;'> 13 <div id='inlineLoginBox' style='display: none;'>
14 - <%= render :file => 'account/login', :locals => { :is_thickbox => true } %> 14 + <%= render :file => 'account/login', :locals => { :is_popin => true } %>
15 </div> 15 </div>
16 16
17 <% unless @plugins.dispatch(:allow_user_registration).include?(false) %> 17 <% unless @plugins.dispatch(:allow_user_registration).include?(false) %>
app/views/layouts/application-ng.html.erb
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 <%= yield :head %> 18 <%= yield :head %>
19 <%= 19 <%=
20 @plugins.dispatch(:head_ending).map do |content| 20 @plugins.dispatch(:head_ending).map do |content|
21 - if content.respond_to?(:call) then instance_exec(&content).html_safe else content.html_safe end 21 + if content.respond_to?(:call) then instance_exec(&content).to_s.html_safe else content.to_s.html_safe end
22 end.join("\n") 22 end.join("\n")
23 %> 23 %>
24 24
@@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
32 32
33 <%= 33 <%=
34 @plugins.dispatch(:body_beginning).map do |content| 34 @plugins.dispatch(:body_beginning).map do |content|
35 - if content.respond_to?(:call) then instance_exec(&content).html_safe else content.html_safe end 35 + if content.respond_to?(:call) then instance_exec(&content).to_s.html_safe else content.to_s.html_safe end
36 end.join("\n") 36 end.join("\n")
37 %> 37 %>
38 38
app/views/profile/join.html.erb
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 <%= hidden_field_tag(:confirmation, 1) %> 9 <%= hidden_field_tag(:confirmation, 1) %>
10 <%= submit_button(:ok, _("Yes, I want to join.") % profile.name) %> 10 <%= submit_button(:ok, _("Yes, I want to join.") % profile.name) %>
11 <% if logged_in? && request.xhr? %> 11 <% if logged_in? && request.xhr? %>
12 - <%= lightbox_close_button(_("No, I don't want")) %> 12 + <%= modal_close_button _("No, I don't want") %>
13 <% else %> 13 <% else %>
14 <%= button(:cancel, _("No, I don't want."), profile.url) %> 14 <%= button(:cancel, _("No, I don't want."), profile.url) %>
15 <% end %> 15 <% end %>
app/views/profile/leave.html.erb
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 <%= hidden_field_tag(:back_to, @back_to) %> 9 <%= hidden_field_tag(:back_to, @back_to) %>
10 <%= submit_button(:ok, _("Yes, I want to leave.") % profile.name) %> 10 <%= submit_button(:ok, _("Yes, I want to leave.") % profile.name) %>
11 <% if logged_in? && request.xhr? %> 11 <% if logged_in? && request.xhr? %>
12 - <%= lightbox_close_button(_("No, I don't want")) %> 12 + <%= modal_close_button _("No, I don't want") %>
13 <% else %> 13 <% else %>
14 <%= button(:cancel, _("No, I don't want."), profile.url) %> 14 <%= button(:cancel, _("No, I don't want."), profile.url) %>
15 <% end %> 15 <% end %>
app/views/profile/report_abuse.html.erb
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 <% end %> 9 <% end %>
10 10
11 <%= submit_button(:send, _('Report profile'), :style => 'float: left; cursor: pointer;', :id => 'report-abuse-submit-button', :onclick => "jQuery('#form-submit-loading').show()") %> 11 <%= submit_button(:send, _('Report profile'), :style => 'float: left; cursor: pointer;', :id => 'report-abuse-submit-button', :onclick => "jQuery('#form-submit-loading').show()") %>
12 - <%= button(:cancel, _('Cancel'), {}, :style => 'float: left; padding-top: 0px; padding-bottom: 0px;', :onclick => 'jQuery.colorbox.close(); return false;')%> 12 + <%= button(:cancel, _('Cancel'), {}, :style => 'float: left; padding-top: 0px; padding-bottom: 0px;', :onclick => 'noosfero.modal.close(); return false;')%>
13 <div id="form-submit-loading" class="small-loading" style="width: 16px; height: 16px; margin-top: 3px; float: left; display: none;"></div> 13 <div id="form-submit-loading" class="small-loading" style="width: 16px; height: 16px; margin-top: 3px; float: left; display: none;"></div>
14 <% end %> 14 <% end %>
15 15
@@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
30 success: function(data, status, ajax){ 30 success: function(data, status, ajax){
31 if ( !data.ok ) display_notice(data.error.message); 31 if ( !data.ok ) display_notice(data.error.message);
32 else { 32 else {
33 - $.colorbox.close(); 33 + noosfero.modal.close();
34 display_notice(data.message); 34 display_notice(data.message);
35 window.location.reload(); 35 window.location.reload();
36 } 36 }
app/views/profile_themes/add_css.html.erb
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 5
6 <% button_bar do %> 6 <% button_bar do %>
7 <%= submit_button(:add, _('Add')) %> 7 <%= submit_button(:add, _('Add')) %>
8 - <%= lightbox_close_button(_('Cancel')) %> 8 + <%= modal_close_button _('Cancel') %>
9 <% end %> 9 <% end %>
10 10
11 <% end %> 11 <% end %>
app/views/profile_themes/edit.html.erb
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 <% end %> 16 <% end %>
17 </ul> 17 </ul>
18 <% button_bar do %> 18 <% button_bar do %>
19 - <%= lightbox_button(:add, _('New CSS'), :action => 'add_css', :id => @theme.id) %> 19 + <%= modal_button :add, _('New CSS'), :action => 'add_css', :id => @theme.id %>
20 <% end %> 20 <% end %>
21 </div> 21 </div>
22 22
@@ -25,10 +25,10 @@ @@ -25,10 +25,10 @@
25 <ul> 25 <ul>
26 <% for image in @image_files %> 26 <% for image in @image_files %>
27 <li><%= image_tag("/user_themes/#{@theme.id}/images/#{image}") %></li> 27 <li><%= image_tag("/user_themes/#{@theme.id}/images/#{image}") %></li>
28 - <% end %> 28 + <% end %>
29 </ul> 29 </ul>
30 <% button_bar do %> 30 <% button_bar do %>
31 - <%= lightbox_button(:add, _('Add image'), :action => 'add_image', :id => @theme.id) %> 31 + <%= modal_button :add, _('Add image'), :action => 'add_image', :id => @theme.id %>
32 <% end %> 32 <% end %>
33 </div> 33 </div>
34 34
app/views/profile_themes/index.html.erb
@@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
42 42
43 <% button_bar do %> 43 <% button_bar do %>
44 <% if environment.enabled?('user_themes') %> 44 <% if environment.enabled?('user_themes') %>
45 - <%= lightbox_button(:add, _('New theme ...'), :action => 'new') %> 45 + <%= modal_button :add, _('New theme ...'), :action => 'new' %>
46 <% end %> 46 <% end %>
47 <%= button(:back, _('Back'), :controller => 'profile_editor', :action => 'index') %> 47 <%= button(:back, _('Back'), :controller => 'profile_editor', :action => 'index') %>
48 <% end %> 48 <% end %>
app/views/shared/user_menu.html.erb
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 </li> 20 </li>
21 21
22 <li> 22 <li>
23 - <%= lightbox_link_to('<span class="icon-new"></span>' + _('New article'), '/myprofile/{login}/cms/new') %> 23 + <%= modal_link_to '<span class="icon-new"></span>' + _('New article'), '/myprofile/{login}/cms/new' %>
24 </li> 24 </li>
25 25
26 <li id='manage-enterprises-link-template' style='display: none'><a href='/myprofile/{identifier}'><span class="icon-menu-enterprise"></span><%= _('Manage %s') % '{name}' %></a></li> 26 <li id='manage-enterprises-link-template' style='display: none'><a href='/myprofile/{identifier}'><span class="icon-menu-enterprise"></span><%= _('Manage %s') % '{name}' %></a></li>
@@ -58,9 +58,9 @@ @@ -58,9 +58,9 @@
58 <% if theme_option( :menu_login ) == 'full_form' %> 58 <% if theme_option( :menu_login ) == 'full_form' %>
59 <%= render :file => 'account/login_block' %> 59 <%= render :file => 'account/login_block' %>
60 <% else %> 60 <% else %>
61 - <%= thickbox_inline_popup_link('<span class="icon-menu-login"></span>'+ _('Login'), login_url, 'inlineLoginBox', :id => 'link_login') %> 61 + <%= modal_inline_link_to('<span class="icon-menu-login"></span>'+ _('Login'), login_url, '#inlineLoginBox', :id => 'link_login') %>
62 <div id='inlineLoginBox' style='display: none;'> 62 <div id='inlineLoginBox' style='display: none;'>
63 - <%= render :file => 'account/login', :locals => { :is_thickbox => true } %> 63 + <%= render :file => 'account/login', :locals => { :is_popin => true } %>
64 </div> 64 </div>
65 <% end %> 65 <% end %>
66 <% end %> 66 <% end %>
plugins/custom_forms/public/style.css
@@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
25 .edit-information { 25 .edit-information {
26 display: none; 26 display: none;
27 } 27 }
28 -#colorbox .edit-information { 28 +.modal .edit-information {
29 display: block; 29 display: block;
30 } 30 }
31 31
plugins/custom_forms/views/custom_forms_plugin_myprofile/_edit_select.html.erb
@@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
26 <%= labelled_radio_button 'Multiple Select', "fields[#{counter}][kind]", 'multiple_select', field.multiple && field.list %><br /> 26 <%= labelled_radio_button 'Multiple Select', "fields[#{counter}][kind]", 'multiple_select', field.multiple && field.list %><br />
27 27
28 <% button_bar do %> 28 <% button_bar do %>
29 - <%= button :ok, c_('Ok'), '#', :class => 'colorbox-ok-button', :div_id => elem_id %> 29 + <%= button :ok, _('Ok'), '#', :div_id => elem_id %>
30 <% end %> 30 <% end %>
31 </div> 31 </div>
32 32
plugins/shopping_cart/public/cart.js
@@ -290,14 +290,11 @@ function Cart(config) { @@ -290,14 +290,11 @@ function Cart(config) {
290 log.error('Send request - HTTP '+status, errorThrown); 290 log.error('Send request - HTTP '+status, errorThrown);
291 }, 291 },
292 complete: function() { 292 complete: function() {
293 - $.colorbox.close(); 293 + noosfero.modal.close();
294 } 294 }
295 }); 295 });
296 } 296 }
297 297
298 - Cart.colorbox_close = function() {  
299 - $.colorbox.close();  
300 - }  
301 298
302 $(window).bind('beforeunload', function(){ 299 $(window).bind('beforeunload', function(){
303 log('Page unload.'); 300 log('Page unload.');
plugins/shopping_cart/views/cart.html.erb
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 <a href="cart:clean" onclick="Cart.clean(this); return false" class="cart-clean"><%=_('Clean basket')%></a> 5 <a href="cart:clean" onclick="Cart.clean(this); return false" class="cart-clean"><%=_('Clean basket')%></a>
6 <ul class="cart-items"></ul> 6 <ul class="cart-items"></ul>
7 <div class="cart-total"><%=_('Total:')%> <b></b></div> 7 <div class="cart-total"><%=_('Total:')%> <b></b></div>
8 - <a href="/plugin/shopping_cart/buy" class="cart-buy colorbox"><%=_('Shopping checkout')%></a> 8 + <a href="/plugin/shopping_cart/buy" class="cart-buy modal"><%=_('Shopping checkout')%></a>
9 </div> 9 </div>
10 <a href="#" onclick="Cart.toggle(this); return false" class="cart-toggle"> 10 <a href="#" onclick="Cart.toggle(this); return false" class="cart-toggle">
11 <span class="str-show"><%=_('Show basket')%></span> 11 <span class="str-show"><%=_('Show basket')%></span>
plugins/shopping_cart/views/shopping_cart_plugin/buy.html.erb
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
24 <% end %> 24 <% end %>
25 <% delivery_option = @settings.delivery_options.first && @settings.delivery_options.first.first %> 25 <% delivery_option = @settings.delivery_options.first && @settings.delivery_options.first.first %>
26 <%= items_table(@cart[:items], @profile, delivery_option) %> 26 <%= items_table(@cart[:items], @profile, delivery_option) %>
27 - <%= link_to '', '#', :onclick => "Cart.colorbox_close(this);", :class => 'cart-box-close icon-cancel' %> 27 + <%= link_to_function '', "noosfero.modal.close();", :class => 'cart-box-close icon-cancel' %>
28 </div> 28 </div>
29 29
30 <%= javascript_include_tag '../plugins/shopping_cart/buy' %> 30 <%= javascript_include_tag '../plugins/shopping_cart/buy' %>
plugins/shopping_cart/views/shopping_cart_plugin_profile/buy.html.erb
@@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
17 </div> 17 </div>
18 <% end %> 18 <% end %>
19 <%= items_table(session[:cart][:items], profile) %> 19 <%= items_table(session[:cart][:items], profile) %>
20 - <%= link_to '', '#', :onclick => "Cart.colorbox_close(this);", :class => 'cart-box-close icon-cancel' %> 20 + <%= link_to_function '', "noosfero.modal.close();", :class => 'cart-box-close icon-cancel' %>
21 </div> 21 </div>
22 22
23 <script type="text/javascript"> 23 <script type="text/javascript">
plugins/stoa/public/javascripts/signup_complement.js
@@ -55,9 +55,10 @@ $(&quot;#usp_id_field&quot;).observe_field(1, function(){ @@ -55,9 +55,10 @@ $(&quot;#usp_id_field&quot;).observe_field(1, function(){
55 }); 55 });
56 56
57 function displayValidationUspIdError(error){ 57 function displayValidationUspIdError(error){
58 - jQuery.colorbox({html: '<h2>'+error.message+'</h2>'+error.backtrace.join("<br />"), 58 + noosfero.modal.html('<h2>'+error.message+'</h2>'+error.backtrace.join("<br />"), {
59 height: "80%", 59 height: "80%",
60 - width: "70%" }); 60 + width: "70%"
  61 + });
61 } 62 }
62 63
63 jQuery('#usp_id_field').focus(function() { jQuery('#usp-id-balloon').fadeIn('slow'); }); 64 jQuery('#usp_id_field').focus(function() { jQuery('#usp-id-balloon').fadeIn('slow'); });
public/images/colorbox/controls.png

1.22 KB | W: | H:

2.83 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
public/javascripts/application.js
@@ -1005,31 +1005,6 @@ log.error = function() { @@ -1005,31 +1005,6 @@ log.error = function() {
1005 window.log.apply(window, jQuery.merge(['error'], arguments)); 1005 window.log.apply(window, jQuery.merge(['error'], arguments));
1006 } 1006 }
1007 1007
1008 -jQuery(function($) {  
1009 - $('.colorbox').live('click', function() {  
1010 - $.colorbox({  
1011 - href: $(this).attr('href'),  
1012 - maxWidth: $(window).width()-50,  
1013 - height: $(window).height()-50,  
1014 - open: true,  
1015 - fixed: true,  
1016 - close: 'Cancel',  
1017 - onComplete: function(bt) {  
1018 - var opt = {}, maxH = $(window).height()-50;  
1019 - if ($('#cboxLoadedContent *:first').height() > maxH) opt.height = maxH;  
1020 - $.colorbox.resize(opt);  
1021 - }  
1022 - });  
1023 - return false;  
1024 - });  
1025 -  
1026 - $('.colorbox-close').live('click', function() {  
1027 - $.colorbox.close();  
1028 - return false;  
1029 - });  
1030 -  
1031 -});  
1032 -  
1033 function showHideTermsOfUse() { 1008 function showHideTermsOfUse() {
1034 if( jQuery("#article_has_terms_of_use").attr("checked") ) 1009 if( jQuery("#article_has_terms_of_use").attr("checked") )
1035 jQuery("#text_area_terms_of_use").show(); 1010 jQuery("#text_area_terms_of_use").show();
public/javascripts/article.js
@@ -88,7 +88,7 @@ jQuery(function($) { @@ -88,7 +88,7 @@ jQuery(function($) {
88 var $item = $(this).closest('.item'); 88 var $item = $(this).closest('.item');
89 var html_selector = $item.attr('data-item'); 89 var html_selector = $item.attr('data-item');
90 insert_item_in_text($item.find(html_selector)); 90 insert_item_in_text($item.find(html_selector));
91 - $.colorbox.close(); 91 + noosfero.modal.close();
92 return false; 92 return false;
93 }); 93 });
94 $('a.zoom').live('click', function() { 94 $('a.zoom').live('click', function() {
@@ -96,14 +96,13 @@ jQuery(function($) { @@ -96,14 +96,13 @@ jQuery(function($) {
96 var html_selector = $item.attr('data-item'); 96 var html_selector = $item.attr('data-item');
97 var name = $item.attr('title'); 97 var name = $item.attr('title');
98 var img = $item.find(html_selector).find('img').attr('src'); 98 var img = $item.find(html_selector).find('img').attr('src');
99 - $.colorbox({  
100 - html: zoom_dialog_html(name, img),  
101 - scrolling: false 99 + noosfero.modal.html(zoom_dialog_html(img), {
  100 + scrolling: false,
102 }); 101 });
103 return false; 102 return false;
104 }); 103 });
105 $('a.close').live('click', function() { 104 $('a.close').live('click', function() {
106 - $.colorbox.close(); 105 + noosfero.modal.close();
107 return false; 106 return false;
108 }) 107 })
109 108
public/javascripts/colorbox.js
@@ -1,814 +0,0 @@ @@ -1,814 +0,0 @@
1 -// ColorBox v1.3.16 - a full featured, light-weight, customizable lightbox based on jQuery 1.3+  
2 -// Copyright (c) 2011 Jack Moore - jack@colorpowered.com  
3 -// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php  
4 -(function ($, document, window) {  
5 - var  
6 - // ColorBox Default Settings.  
7 - // See http://colorpowered.com/colorbox for details.  
8 - defaults = {  
9 - transition: "elastic",  
10 - speed: 300,  
11 - width: false,  
12 - initialWidth: "600",  
13 - innerWidth: false,  
14 - maxWidth: false,  
15 - height: false,  
16 - initialHeight: "450",  
17 - innerHeight: false,  
18 - maxHeight: false,  
19 - scalePhotos: true,  
20 - scrolling: true,  
21 - inline: false,  
22 - html: false,  
23 - iframe: false,  
24 - fastIframe: true,  
25 - photo: false,  
26 - href: false,  
27 - title: false,  
28 - rel: false,  
29 - opacity: 0.9,  
30 - preloading: true,  
31 - current: "image {current} of {total}",  
32 - previous: "previous",  
33 - next: "next",  
34 - close: "close",  
35 - open: false,  
36 - returnFocus: true,  
37 - loop: true,  
38 - slideshow: false,  
39 - slideshowAuto: true,  
40 - slideshowSpeed: 2500,  
41 - slideshowStart: "start slideshow",  
42 - slideshowStop: "stop slideshow",  
43 - onOpen: false,  
44 - onLoad: false,  
45 - onComplete: false,  
46 - onCleanup: false,  
47 - onClosed: false,  
48 - overlayClose: true,  
49 - escKey: true,  
50 - arrowKey: true  
51 - },  
52 -  
53 - // Abstracting the HTML and event identifiers for easy rebranding  
54 - colorbox = 'colorbox',  
55 - prefix = 'cbox',  
56 -  
57 - // Events  
58 - event_open = prefix + '_open',  
59 - event_load = prefix + '_load',  
60 - event_complete = prefix + '_complete',  
61 - event_cleanup = prefix + '_cleanup',  
62 - event_closed = prefix + '_closed',  
63 - event_purge = prefix + '_purge',  
64 -  
65 - // Special Handling for IE  
66 - isIE = $.browser.msie && !$.support.opacity, // feature detection alone gave a false positive on at least one phone browser and on some development versions of Chrome.  
67 - isIE6 = isIE && $.browser.version < 7,  
68 - event_ie6 = prefix + '_IE6',  
69 -  
70 - // Cached jQuery Object Variables  
71 - $overlay,  
72 - $box,  
73 - $wrap,  
74 - $content,  
75 - $topBorder,  
76 - $leftBorder,  
77 - $rightBorder,  
78 - $bottomBorder,  
79 - $related,  
80 - $window,  
81 - $loaded,  
82 - $loadingBay,  
83 - $loadingOverlay,  
84 - $title,  
85 - $current,  
86 - $slideshow,  
87 - $next,  
88 - $prev,  
89 - $close,  
90 - $groupControls,  
91 -  
92 - // Variables for cached values or use across multiple functions  
93 - settings = {},  
94 - interfaceHeight,  
95 - interfaceWidth,  
96 - loadedHeight,  
97 - loadedWidth,  
98 - element,  
99 - index,  
100 - photo,  
101 - open,  
102 - active,  
103 - closing = false,  
104 -  
105 - publicMethod,  
106 - boxElement = prefix + 'Element';  
107 -  
108 - // ****************  
109 - // HELPER FUNCTIONS  
110 - // ****************  
111 -  
112 - // jQuery object generator to reduce code size  
113 - function $div(id, cssText) {  
114 - var div = document.createElement('div');  
115 - if (id) {  
116 - div.id = prefix + id;  
117 - }  
118 - div.style.cssText = cssText || false;  
119 - return $(div);  
120 - }  
121 -  
122 - // Convert % values to pixels  
123 - function setSize(size, dimension) {  
124 - dimension = dimension === 'x' ? $window.width() : $window.height();  
125 - return (typeof size === 'string') ? Math.round((/%/.test(size) ? (dimension / 100) * parseInt(size, 10) : parseInt(size, 10))) : size;  
126 - }  
127 -  
128 - // Checks an href to see if it is a photo.  
129 - // There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.  
130 - function isImage(url) {  
131 - return settings.photo || /\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i.test(url);  
132 - }  
133 -  
134 - // Assigns function results to their respective settings. This allows functions to be used as values.  
135 - function process(settings) {  
136 - for (var i in settings) {  
137 - if ($.isFunction(settings[i]) && i.substring(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.  
138 - settings[i] = settings[i].call(element);  
139 - }  
140 - }  
141 - settings.rel = settings.rel || element.rel || 'nofollow';  
142 - settings.href = $.trim(settings.href || $(element).attr('href'));  
143 - settings.title = settings.title || element.title;  
144 - }  
145 -  
146 - function trigger(event, callback) {  
147 - if (callback) {  
148 - callback.call(element);  
149 - }  
150 - $.event.trigger(event);  
151 - }  
152 -  
153 - // Slideshow functionality  
154 - function slideshow() {  
155 - var  
156 - timeOut,  
157 - className = prefix + "Slideshow_",  
158 - click = "click." + prefix,  
159 - start,  
160 - stop,  
161 - clear;  
162 -  
163 - if (settings.slideshow && $related[1]) {  
164 - start = function () {  
165 - $slideshow  
166 - .text(settings.slideshowStop)  
167 - .unbind(click)  
168 - .bind(event_complete, function () {  
169 - if (index < $related.length - 1 || settings.loop) {  
170 - timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);  
171 - }  
172 - })  
173 - .bind(event_load, function () {  
174 - clearTimeout(timeOut);  
175 - })  
176 - .one(click + ' ' + event_cleanup, stop);  
177 - $box.removeClass(className + "off").addClass(className + "on");  
178 - timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);  
179 - };  
180 -  
181 - stop = function () {  
182 - clearTimeout(timeOut);  
183 - $slideshow  
184 - .text(settings.slideshowStart)  
185 - .unbind([event_complete, event_load, event_cleanup, click].join(' '))  
186 - .one(click, start);  
187 - $box.removeClass(className + "on").addClass(className + "off");  
188 - };  
189 -  
190 - if (settings.slideshowAuto) {  
191 - start();  
192 - } else {  
193 - stop();  
194 - }  
195 - }  
196 - }  
197 -  
198 - function launch(elem) {  
199 - if (!closing) {  
200 -  
201 - element = elem;  
202 -  
203 - process($.extend(settings, $.data(element, colorbox)));  
204 -  
205 - $related = $(element);  
206 -  
207 - index = 0;  
208 -  
209 - if (settings.rel !== 'nofollow') {  
210 - $related = $('.' + boxElement).filter(function () {  
211 - var relRelated = $.data(this, colorbox).rel || this.rel;  
212 - return (relRelated === settings.rel);  
213 - });  
214 - index = $related.index(element);  
215 -  
216 - // Check direct calls to ColorBox.  
217 - if (index === -1) {  
218 - $related = $related.add(element);  
219 - index = $related.length - 1;  
220 - }  
221 - }  
222 -  
223 - if (!open) {  
224 - open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.  
225 -  
226 - $box.show();  
227 -  
228 - if (settings.returnFocus) {  
229 - try {  
230 - element.blur();  
231 - $(element).one(event_closed, function () {  
232 - try {  
233 - this.focus();  
234 - } catch (e) {  
235 - // do nothing  
236 - }  
237 - });  
238 - } catch (e) {  
239 - // do nothing  
240 - }  
241 - }  
242 -  
243 - // +settings.opacity avoids a problem in IE when using non-zero-prefixed-string-values, like '.5'  
244 - $overlay.css({"opacity": +settings.opacity, "cursor": settings.overlayClose ? "pointer" : "auto"}).show();  
245 -  
246 - // Opens inital empty ColorBox prior to content being loaded.  
247 - settings.w = setSize(settings.initialWidth, 'x');  
248 - settings.h = setSize(settings.initialHeight, 'y');  
249 - publicMethod.position(0);  
250 -  
251 - if (isIE6) {  
252 - $window.bind('resize.' + event_ie6 + ' scroll.' + event_ie6, function () {  
253 - $overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});  
254 - }).trigger('resize.' + event_ie6);  
255 - }  
256 -  
257 - trigger(event_open, settings.onOpen);  
258 -  
259 - $groupControls.add($title).hide();  
260 -  
261 - $close.html(settings.close).show();  
262 - }  
263 -  
264 - publicMethod.load(true);  
265 - }  
266 - }  
267 -  
268 - // ****************  
269 - // PUBLIC FUNCTIONS  
270 - // Usage format: $.fn.colorbox.close();  
271 - // Usage from within an iframe: parent.$.fn.colorbox.close();  
272 - // ****************  
273 -  
274 - publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {  
275 - var $this = this, autoOpen;  
276 -  
277 - if (!$this[0] && $this.selector) { // if a selector was given and it didn't match any elements, go ahead and exit.  
278 - return $this;  
279 - }  
280 -  
281 - options = options || {};  
282 -  
283 - if (callback) {  
284 - options.onComplete = callback;  
285 - }  
286 -  
287 - if (!$this[0] || $this.selector === undefined) { // detects $.colorbox() and $.fn.colorbox()  
288 - $this = $('<a/>');  
289 - options.open = true; // assume an immediate open  
290 - }  
291 -  
292 - $this.each(function () {  
293 - $.data(this, colorbox, $.extend({}, $.data(this, colorbox) || defaults, options));  
294 - $(this).addClass(boxElement);  
295 - });  
296 -  
297 - autoOpen = options.open;  
298 -  
299 - if ($.isFunction(autoOpen)) {  
300 - autoOpen = autoOpen.call($this);  
301 - }  
302 -  
303 - if (autoOpen) {  
304 - launch($this[0]);  
305 - }  
306 -  
307 - return $this;  
308 - };  
309 -  
310 - // Initialize ColorBox: store common calculations, preload the interface graphics, append the html.  
311 - // This preps colorbox for a speedy open when clicked, and lightens the burdon on the browser by only  
312 - // having to run once, instead of each time colorbox is opened.  
313 - publicMethod.init = function () {  
314 - // Create & Append jQuery Objects  
315 - $window = $(window);  
316 - $box = $div().attr({id: colorbox, 'class': isIE ? prefix + (isIE6 ? 'IE6' : 'IE') : ''});  
317 - $overlay = $div("Overlay", isIE6 ? 'position:absolute' : '').hide();  
318 -  
319 - $wrap = $div("Wrapper");  
320 - $content = $div("Content").append(  
321 - $loaded = $div("LoadedContent", 'width:0; height:0; overflow:hidden'),  
322 - $loadingOverlay = $div("LoadingOverlay").add($div("LoadingGraphic")),  
323 - $title = $div("Title"),  
324 - $current = $div("Current"),  
325 - $next = $div("Next"),  
326 - $prev = $div("Previous"),  
327 - $slideshow = $div("Slideshow").bind(event_open, slideshow),  
328 - $close = $div("Close")  
329 - );  
330 - $wrap.append( // The 3x3 Grid that makes up ColorBox  
331 - $div().append(  
332 - $div("TopLeft"),  
333 - $topBorder = $div("TopCenter"),  
334 - $div("TopRight")  
335 - ),  
336 - $div(false, 'clear:left').append(  
337 - $leftBorder = $div("MiddleLeft"),  
338 - $content,  
339 - $rightBorder = $div("MiddleRight")  
340 - ),  
341 - $div(false, 'clear:left').append(  
342 - $div("BottomLeft"),  
343 - $bottomBorder = $div("BottomCenter"),  
344 - $div("BottomRight")  
345 - )  
346 - ).children().children().css({'float': 'left'});  
347 -  
348 - $loadingBay = $div(false, 'position:absolute; width:9999px; visibility:hidden; display:none');  
349 -  
350 - $('body').prepend($overlay, $box.append($wrap, $loadingBay));  
351 -  
352 - $content.children()  
353 - .hover(function () {  
354 - $(this).addClass('hover');  
355 - }, function () {  
356 - $(this).removeClass('hover');  
357 - }).addClass('hover');  
358 -  
359 - // Cache values needed for size calculations  
360 - interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6  
361 - interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();  
362 - loadedHeight = $loaded.outerHeight(true);  
363 - loadedWidth = $loaded.outerWidth(true);  
364 -  
365 - // Setting padding to remove the need to do size conversions during the animation step.  
366 - $box.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth}).hide();  
367 -  
368 - // Setup button events.  
369 - $next.click(function () {  
370 - publicMethod.next();  
371 - });  
372 - $prev.click(function () {  
373 - publicMethod.prev();  
374 - });  
375 - $close.click(function () {  
376 - publicMethod.close();  
377 - });  
378 -  
379 - $groupControls = $next.add($prev).add($current).add($slideshow);  
380 -  
381 - // Adding the 'hover' class allowed the browser to load the hover-state  
382 - // background graphics. The class can now can be removed.  
383 - $content.children().removeClass('hover');  
384 -  
385 - $('.' + boxElement).live('click', function (e) {  
386 - // checks to see if it was a non-left mouse-click and for clicks modified with ctrl, shift, or alt.  
387 - if (!((e.button !== 0 && typeof e.button !== 'undefined') || e.ctrlKey || e.shiftKey || e.altKey)) {  
388 - e.preventDefault();  
389 - launch(this);  
390 - }  
391 - });  
392 -  
393 - $overlay.click(function () {  
394 - if (settings.overlayClose) {  
395 - publicMethod.close();  
396 - }  
397 - });  
398 -  
399 - // Set Navigation Key Bindings  
400 - $(document).bind('keydown.' + prefix, function (e) {  
401 - var key = e.keyCode;  
402 - if (open && settings.escKey && key === 27) {  
403 - e.preventDefault();  
404 - publicMethod.close();  
405 - }  
406 - if (open && settings.arrowKey && $related[1]) {  
407 - if (key === 37) {  
408 - e.preventDefault();  
409 - $prev.click();  
410 - } else if (key === 39) {  
411 - e.preventDefault();  
412 - $next.click();  
413 - }  
414 - }  
415 - });  
416 - };  
417 -  
418 - publicMethod.remove = function () {  
419 - $box.add($overlay).remove();  
420 - $('.' + boxElement).die('click').removeData(colorbox).removeClass(boxElement);  
421 - };  
422 -  
423 - publicMethod.position = function (speed, loadedCallback) {  
424 - var  
425 - animate_speed,  
426 - // keeps the top and left positions within the browser's viewport.  
427 - posTop = Math.max(document.documentElement.clientHeight - settings.h - loadedHeight - interfaceHeight, 0) / 2 + $window.scrollTop(),  
428 - posLeft = Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2 + $window.scrollLeft();  
429 -  
430 - // setting the speed to 0 to reduce the delay between same-sized content.  
431 - animate_speed = ($box.width() === settings.w + loadedWidth && $box.height() === settings.h + loadedHeight) ? 0 : speed;  
432 -  
433 - // this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,  
434 - // but it has to be shrank down around the size of div#colorbox when it's done. If not,  
435 - // it can invoke an obscure IE bug when using iframes.  
436 - $wrap[0].style.width = $wrap[0].style.height = "9999px";  
437 -  
438 - function modalDimensions(that) {  
439 - // loading overlay height has to be explicitly set for IE6.  
440 - $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = that.style.width;  
441 - $loadingOverlay[0].style.height = $loadingOverlay[1].style.height = $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = that.style.height;  
442 - }  
443 -  
444 - $box.dequeue().animate({width: settings.w + loadedWidth, height: settings.h + loadedHeight, top: posTop, left: posLeft}, {  
445 - duration: animate_speed,  
446 - complete: function () {  
447 - modalDimensions(this);  
448 -  
449 - active = false;  
450 -  
451 - // shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.  
452 - $wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";  
453 - $wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";  
454 -  
455 - if (loadedCallback) {  
456 - loadedCallback();  
457 - }  
458 - },  
459 - step: function () {  
460 - modalDimensions(this);  
461 - }  
462 - });  
463 - };  
464 -  
465 - publicMethod.resize = function (options) {  
466 - if (open) {  
467 - options = options || {};  
468 -  
469 - if (options.width) {  
470 - settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;  
471 - }  
472 - if (options.innerWidth) {  
473 - settings.w = setSize(options.innerWidth, 'x');  
474 - }  
475 - $loaded.css({width: settings.w});  
476 -  
477 - if (options.height) {  
478 - settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;  
479 - }  
480 - if (options.innerHeight) {  
481 - settings.h = setSize(options.innerHeight, 'y');  
482 - }  
483 - if (!options.innerHeight && !options.height) {  
484 - var $child = $loaded.wrapInner("<div style='overflow:auto'></div>").children(); // temporary wrapper to get an accurate estimate of just how high the total content should be.  
485 - settings.h = $child.height();  
486 - $child.replaceWith($child.children()); // ditch the temporary wrapper div used in height calculation  
487 - }  
488 - $loaded.css({height: settings.h});  
489 -  
490 - publicMethod.position(settings.transition === "none" ? 0 : settings.speed);  
491 - }  
492 - };  
493 -  
494 - publicMethod.prep = function (object) {  
495 - if (!open) {  
496 - return;  
497 - }  
498 -  
499 - var speed = settings.transition === "none" ? 0 : settings.speed;  
500 -  
501 - $window.unbind('resize.' + prefix);  
502 - $loaded.remove();  
503 - $loaded = $div('LoadedContent').html(object);  
504 -  
505 - function getWidth() {  
506 - settings.w = settings.w || $loaded.width();  
507 - settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;  
508 - return settings.w;  
509 - }  
510 - function getHeight() {  
511 - settings.h = settings.h || $loaded.height();  
512 - settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;  
513 - return settings.h;  
514 - }  
515 -  
516 - $loaded.hide()  
517 - .appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.  
518 - .css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})  
519 - .css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.  
520 - .prependTo($content);  
521 -  
522 - $loadingBay.hide();  
523 -  
524 - // floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.  
525 - //$(photo).css({'float': 'none', marginLeft: 'auto', marginRight: 'auto'});  
526 -  
527 - $(photo).css({'float': 'none'});  
528 -  
529 - // Hides SELECT elements in IE6 because they would otherwise sit on top of the overlay.  
530 - if (isIE6) {  
531 - $('select').not($box.find('select')).filter(function () {  
532 - return this.style.visibility !== 'hidden';  
533 - }).css({'visibility': 'hidden'}).one(event_cleanup, function () {  
534 - this.style.visibility = 'inherit';  
535 - });  
536 - }  
537 -  
538 - function setPosition(s) {  
539 - publicMethod.position(s, function () {  
540 - var prev, prevSrc, next, nextSrc, total = $related.length, iframe, complete;  
541 -  
542 - if (!open) {  
543 - return;  
544 - }  
545 -  
546 - complete = function () {  
547 - $loadingOverlay.hide();  
548 - trigger(event_complete, settings.onComplete);  
549 - };  
550 -  
551 - if (isIE) {  
552 - //This fadeIn helps the bicubic resampling to kick-in.  
553 - if (photo) {  
554 - $loaded.fadeIn(100);  
555 - }  
556 - }  
557 -  
558 - $title.html(settings.title).add($loaded).show();  
559 -  
560 - if (total > 1) { // handle grouping  
561 - if (typeof settings.current === "string") {  
562 - $current.html(settings.current.replace(/\{current\}/, index + 1).replace(/\{total\}/, total)).show();  
563 - }  
564 -  
565 - $next[(settings.loop || index < total - 1) ? "show" : "hide"]().html(settings.next);  
566 - $prev[(settings.loop || index) ? "show" : "hide"]().html(settings.previous);  
567 -  
568 - prev = index ? $related[index - 1] : $related[total - 1];  
569 - next = index < total - 1 ? $related[index + 1] : $related[0];  
570 -  
571 - if (settings.slideshow) {  
572 - $slideshow.show();  
573 - }  
574 -  
575 - // Preloads images within a rel group  
576 - if (settings.preloading) {  
577 - nextSrc = $.data(next, colorbox).href || next.href;  
578 - prevSrc = $.data(prev, colorbox).href || prev.href;  
579 -  
580 - nextSrc = $.isFunction(nextSrc) ? nextSrc.call(next) : nextSrc;  
581 - prevSrc = $.isFunction(prevSrc) ? prevSrc.call(prev) : prevSrc;  
582 -  
583 - if (isImage(nextSrc)) {  
584 - $('<img/>')[0].src = nextSrc;  
585 - }  
586 -  
587 - if (isImage(prevSrc)) {  
588 - $('<img/>')[0].src = prevSrc;  
589 - }  
590 - }  
591 - } else {  
592 - $groupControls.hide();  
593 - }  
594 -  
595 - if (settings.iframe) {  
596 - iframe = $('<iframe/>').addClass(prefix + 'Iframe')[0];  
597 -  
598 - if (settings.fastIframe) {  
599 - complete();  
600 - } else {  
601 - $(iframe).load(complete);  
602 - }  
603 - iframe.name = prefix + (+new Date());  
604 - iframe.src = settings.href;  
605 -  
606 - if (!settings.scrolling) {  
607 - iframe.scrolling = "no";  
608 - }  
609 -  
610 - if (isIE) {  
611 - iframe.frameBorder=0;  
612 - iframe.allowTransparency = "true";  
613 - }  
614 -  
615 - $(iframe).appendTo($loaded).one(event_purge, function () {  
616 - iframe.src = "//about:blank";  
617 - });  
618 - } else {  
619 - complete();  
620 - }  
621 -  
622 - if (settings.transition === 'fade') {  
623 - $box.fadeTo(speed, 1, function () {  
624 - $box[0].style.filter = "";  
625 - });  
626 - } else {  
627 - $box[0].style.filter = "";  
628 - }  
629 -  
630 - $window.bind('resize.' + prefix, function () {  
631 - publicMethod.position(0);  
632 - });  
633 - });  
634 - }  
635 -  
636 - if (settings.transition === 'fade') {  
637 - $box.fadeTo(speed, 0, function () {  
638 - setPosition(0);  
639 - });  
640 - } else {  
641 - setPosition(speed);  
642 - }  
643 - };  
644 -  
645 - publicMethod.load = function (launched) {  
646 - var href, setResize, prep = publicMethod.prep;  
647 -  
648 - active = true;  
649 -  
650 - photo = false;  
651 -  
652 - element = $related[index];  
653 -  
654 - if (!launched) {  
655 - process($.extend(settings, $.data(element, colorbox)));  
656 - }  
657 -  
658 - trigger(event_purge);  
659 -  
660 - trigger(event_load, settings.onLoad);  
661 -  
662 - settings.h = settings.height ?  
663 - setSize(settings.height, 'y') - loadedHeight - interfaceHeight :  
664 - settings.innerHeight && setSize(settings.innerHeight, 'y');  
665 -  
666 - settings.w = settings.width ?  
667 - setSize(settings.width, 'x') - loadedWidth - interfaceWidth :  
668 - settings.innerWidth && setSize(settings.innerWidth, 'x');  
669 -  
670 - // Sets the minimum dimensions for use in image scaling  
671 - settings.mw = settings.w;  
672 - settings.mh = settings.h;  
673 -  
674 - // Re-evaluate the minimum width and height based on maxWidth and maxHeight values.  
675 - // If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.  
676 - if (settings.maxWidth) {  
677 - settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;  
678 - settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;  
679 - }  
680 - if (settings.maxHeight) {  
681 - settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;  
682 - settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;  
683 - }  
684 -  
685 - href = settings.href;  
686 -  
687 - $loadingOverlay.show();  
688 -  
689 - if (settings.inline) {  
690 - // Inserts an empty placeholder where inline content is being pulled from.  
691 - // An event is bound to put inline content back when ColorBox closes or loads new content.  
692 - $div().hide().insertBefore($(href)[0]).one(event_purge, function () {  
693 - $(this).replaceWith($loaded.children());  
694 - });  
695 - prep($(href));  
696 - } else if (settings.iframe) {  
697 - // IFrame element won't be added to the DOM until it is ready to be displayed,  
698 - // to avoid problems with DOM-ready JS that might be trying to run in that iframe.  
699 - prep(" ");  
700 - } else if (settings.html) {  
701 - prep(settings.html);  
702 - } else if (isImage(href)) {  
703 - $(photo = new Image())  
704 - .addClass(prefix + 'Photo')  
705 - .error(function () {  
706 - settings.title = false;  
707 - prep($div('Error').text('This image could not be loaded'));  
708 - })  
709 - .load(function () {  
710 - var percent;  
711 - photo.onload = null; //stops animated gifs from firing the onload repeatedly.  
712 -  
713 - if (settings.scalePhotos) {  
714 - setResize = function () {  
715 - photo.height -= photo.height * percent;  
716 - photo.width -= photo.width * percent;  
717 - };  
718 - if (settings.mw && photo.width > settings.mw) {  
719 - percent = (photo.width - settings.mw) / photo.width;  
720 - setResize();  
721 - }  
722 - if (settings.mh && photo.height > settings.mh) {  
723 - percent = (photo.height - settings.mh) / photo.height;  
724 - setResize();  
725 - }  
726 - }  
727 -  
728 - if (settings.h) {  
729 - photo.style.marginTop = Math.max(settings.h - photo.height, 0) / 2 + 'px';  
730 - }  
731 -  
732 - if ($related[1] && (index < $related.length - 1 || settings.loop)) {  
733 - photo.style.cursor = 'pointer';  
734 - photo.onclick = function () {  
735 - publicMethod.next();  
736 - };  
737 - }  
738 -  
739 - if (isIE) {  
740 - photo.style.msInterpolationMode = 'bicubic';  
741 - }  
742 -  
743 - setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.  
744 - prep(photo);  
745 - }, 1);  
746 - });  
747 -  
748 - setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.  
749 - photo.src = href;  
750 - }, 1);  
751 - } else if (href) {  
752 - $loadingBay.load(href, function (data, status, xhr) {  
753 - prep(status === 'error' ? $div('Error').text('Request unsuccessful: ' + xhr.statusText) : $(this).contents());  
754 - });  
755 - }  
756 - };  
757 -  
758 - // Navigates to the next page/image in a set.  
759 - publicMethod.next = function () {  
760 - if (!active && $related[1] && (index < $related.length - 1 || settings.loop)) {  
761 - index = index < $related.length - 1 ? index + 1 : 0;  
762 - publicMethod.load();  
763 - }  
764 - };  
765 -  
766 - publicMethod.prev = function () {  
767 - if (!active && $related[1] && (index || settings.loop)) {  
768 - index = index ? index - 1 : $related.length - 1;  
769 - publicMethod.load();  
770 - }  
771 - };  
772 -  
773 - // Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();  
774 - publicMethod.close = function () {  
775 - if (open && !closing) {  
776 -  
777 - closing = true;  
778 -  
779 - open = false;  
780 -  
781 - trigger(event_cleanup, settings.onCleanup);  
782 -  
783 - $window.unbind('.' + prefix + ' .' + event_ie6);  
784 -  
785 - $overlay.fadeTo(200, 0);  
786 -  
787 - $box.stop().fadeTo(300, 0, function () {  
788 -  
789 - $box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();  
790 -  
791 - trigger(event_purge);  
792 -  
793 - $loaded.remove();  
794 -  
795 - setTimeout(function () {  
796 - closing = false;  
797 - trigger(event_closed, settings.onClosed);  
798 - }, 1);  
799 - });  
800 - }  
801 - };  
802 -  
803 - // A method for fetching the current element ColorBox is referencing.  
804 - // returns a jQuery object.  
805 - publicMethod.element = function () {  
806 - return $(element);  
807 - };  
808 -  
809 - publicMethod.settings = defaults;  
810 -  
811 - // Initializes ColorBox when the DOM has loaded  
812 - $(publicMethod.init);  
813 -  
814 -}(jQuery, document, this));  
815 \ No newline at end of file 0 \ No newline at end of file
public/javascripts/comment_form.js
@@ -53,7 +53,7 @@ function save_comment(button) { @@ -53,7 +53,7 @@ function save_comment(button) {
53 //Comment of reply 53 //Comment of reply
54 $('#'+ data.render_target).replaceWith(data.html); 54 $('#'+ data.render_target).replaceWith(data.html);
55 $('#' + data.render_target).effect("highlight", {}, 3000); 55 $('#' + data.render_target).effect("highlight", {}, 3000);
56 - $.colorbox.close(); 56 + noosfero.modal.close();
57 increment_comment_count(comment_div); 57 increment_comment_count(comment_div);
58 } else { 58 } else {
59 //New comment of article 59 //New comment of article
@@ -64,7 +64,7 @@ function save_comment(button) { @@ -64,7 +64,7 @@ function save_comment(button) {
64 }); 64 });
65 65
66 page_comment_form.find('.errorExplanation').remove(); 66 page_comment_form.find('.errorExplanation').remove();
67 - $.colorbox.close(); 67 + noosfero.modal.close();
68 increment_comment_count(comment_div); 68 increment_comment_count(comment_div);
69 } 69 }
70 70
public/javascripts/jquery.colorbox-min.js 0 → 100644
@@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
  1 +/*!
  2 + Colorbox v1.4.36 - 2014-02-01
  3 + jQuery lightbox and modal window plugin
  4 + (c) 2014 Jack Moore - http://www.jacklmoore.com/colorbox
  5 + license: http://www.opensource.org/licenses/mit-license.php
  6 +*/
  7 +(function(e,t,i){function o(i,o,n){var r=t.createElement(i);return o&&(r.id=Z+o),n&&(r.style.cssText=n),e(r)}function n(){return i.innerHeight?i.innerHeight:e(i).height()}function r(e){var t=k.length,i=(z+e)%t;return 0>i?t+i:i}function h(e,t){return Math.round((/%/.test(e)?("x"===t?E.width():n())/100:1)*parseInt(e,10))}function l(e,t){return e.photo||e.photoRegex.test(t)}function s(e,t){return e.retinaUrl&&i.devicePixelRatio>1?t.replace(e.photoRegex,e.retinaSuffix):t}function a(e){"contains"in g[0]&&!g[0].contains(e.target)&&(e.stopPropagation(),g.focus())}function d(){var t,i=e.data(N,Y);null==i?(B=e.extend({},X),console&&console.log&&console.log("Error: cboxElement missing settings object")):B=e.extend({},i);for(t in B)e.isFunction(B[t])&&"on"!==t.slice(0,2)&&(B[t]=B[t].call(N));B.rel=B.rel||N.rel||e(N).data("rel")||"nofollow",B.href=B.href||e(N).attr("href"),B.title=B.title||N.title,"string"==typeof B.href&&(B.href=e.trim(B.href))}function c(i,o){e(t).trigger(i),lt.triggerHandler(i),e.isFunction(o)&&o.call(N)}function u(i){q||(N=i,d(),k=e(N),z=0,"nofollow"!==B.rel&&(k=e("."+et).filter(function(){var t,i=e.data(this,Y);return i&&(t=e(this).data("rel")||i.rel||this.rel),t===B.rel}),z=k.index(N),-1===z&&(k=k.add(N),z=k.length-1)),w.css({opacity:parseFloat(B.opacity),cursor:B.overlayClose?"pointer":"auto",visibility:"visible"}).show(),J&&g.add(w).removeClass(J),B.className&&g.add(w).addClass(B.className),J=B.className,B.closeButton?K.html(B.close).appendTo(y):K.appendTo("<div/>"),U||(U=$=!0,g.css({visibility:"hidden",display:"block"}),H=o(st,"LoadedContent","width:0; height:0; overflow:hidden"),y.css({width:"",height:""}).append(H),O=x.height()+C.height()+y.outerHeight(!0)-y.height(),_=b.width()+T.width()+y.outerWidth(!0)-y.width(),D=H.outerHeight(!0),A=H.outerWidth(!0),B.w=h(B.initialWidth,"x"),B.h=h(B.initialHeight,"y"),H.css({width:"",height:B.h}),Q.position(),c(tt,B.onOpen),P.add(L).hide(),g.focus(),B.trapFocus&&t.addEventListener&&(t.addEventListener("focus",a,!0),lt.one(rt,function(){t.removeEventListener("focus",a,!0)})),B.returnFocus&&lt.one(rt,function(){e(N).focus()})),m())}function f(){!g&&t.body&&(V=!1,E=e(i),g=o(st).attr({id:Y,"class":e.support.opacity===!1?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),w=o(st,"Overlay").hide(),F=e([o(st,"LoadingOverlay")[0],o(st,"LoadingGraphic")[0]]),v=o(st,"Wrapper"),y=o(st,"Content").append(L=o(st,"Title"),S=o(st,"Current"),I=e('<button type="button"/>').attr({id:Z+"Previous"}),R=e('<button type="button"/>').attr({id:Z+"Next"}),M=o("button","Slideshow"),F),K=e('<button type="button"/>').attr({id:Z+"Close"}),v.append(o(st).append(o(st,"TopLeft"),x=o(st,"TopCenter"),o(st,"TopRight")),o(st,!1,"clear:left").append(b=o(st,"MiddleLeft"),y,T=o(st,"MiddleRight")),o(st,!1,"clear:left").append(o(st,"BottomLeft"),C=o(st,"BottomCenter"),o(st,"BottomRight"))).find("div div").css({"float":"left"}),W=o(st,!1,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"),P=R.add(I).add(S).add(M),e(t.body).append(w,g.append(v,W)))}function p(){function i(e){e.which>1||e.shiftKey||e.altKey||e.metaKey||e.ctrlKey||(e.preventDefault(),u(this))}return g?(V||(V=!0,R.click(function(){Q.next()}),I.click(function(){Q.prev()}),K.click(function(){Q.close()}),w.click(function(){B.overlayClose&&Q.close()}),e(t).bind("keydown."+Z,function(e){var t=e.keyCode;U&&B.escKey&&27===t&&(e.preventDefault(),Q.close()),U&&B.arrowKey&&k[1]&&!e.altKey&&(37===t?(e.preventDefault(),I.click()):39===t&&(e.preventDefault(),R.click()))}),e.isFunction(e.fn.on)?e(t).on("click."+Z,"."+et,i):e("."+et).live("click."+Z,i)),!0):!1}function m(){var n,r,a,u=Q.prep,f=++at;$=!0,j=!1,N=k[z],d(),c(ht),c(it,B.onLoad),B.h=B.height?h(B.height,"y")-D-O:B.innerHeight&&h(B.innerHeight,"y"),B.w=B.width?h(B.width,"x")-A-_:B.innerWidth&&h(B.innerWidth,"x"),B.mw=B.w,B.mh=B.h,B.maxWidth&&(B.mw=h(B.maxWidth,"x")-A-_,B.mw=B.w&&B.w<B.mw?B.w:B.mw),B.maxHeight&&(B.mh=h(B.maxHeight,"y")-D-O,B.mh=B.h&&B.h<B.mh?B.h:B.mh),n=B.href,G=setTimeout(function(){F.show()},100),B.inline?(a=o(st).hide().insertBefore(e(n)[0]),lt.one(ht,function(){a.replaceWith(H.children())}),u(e(n))):B.iframe?u(" "):B.html?u(B.html):l(B,n)?(n=s(B,n),j=t.createElement("img"),e(j).addClass(Z+"Photo").bind("error",function(){B.title=!1,u(o(st,"Error").html(B.imgError))}).one("load",function(){var t;f===at&&(e.each(["alt","longdesc","aria-describedby"],function(t,i){var o=e(N).attr(i)||e(N).attr("data-"+i);o&&j.setAttribute(i,o)}),B.retinaImage&&i.devicePixelRatio>1&&(j.height=j.height/i.devicePixelRatio,j.width=j.width/i.devicePixelRatio),B.scalePhotos&&(r=function(){j.height-=j.height*t,j.width-=j.width*t},B.mw&&j.width>B.mw&&(t=(j.width-B.mw)/j.width,r()),B.mh&&j.height>B.mh&&(t=(j.height-B.mh)/j.height,r())),B.h&&(j.style.marginTop=Math.max(B.mh-j.height,0)/2+"px"),k[1]&&(B.loop||k[z+1])&&(j.style.cursor="pointer",j.onclick=function(){Q.next()}),j.style.width=j.width+"px",j.style.height=j.height+"px",setTimeout(function(){u(j)},1))}),setTimeout(function(){j.src=n},1)):n&&W.load(n,B.data,function(t,i){f===at&&u("error"===i?o(st,"Error").html(B.xhrError):e(this).contents())})}var w,g,v,y,x,b,T,C,k,E,H,W,F,L,S,M,R,I,K,P,B,O,_,D,A,N,z,j,U,$,q,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,href:!1,title:!1,rel:!1,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1},Y="colorbox",Z="cbox",et=Z+"Element",tt=Z+"_open",it=Z+"_load",ot=Z+"_complete",nt=Z+"_cleanup",rt=Z+"_closed",ht=Z+"_purge",lt=e("<a/>"),st="div",at=0,dt={},ct=function(){function e(){clearTimeout(h)}function t(){(B.loop||k[z+1])&&(e(),h=setTimeout(Q.next,B.slideshowSpeed))}function i(){M.html(B.slideshowStop).unbind(s).one(s,o),lt.bind(ot,t).bind(it,e),g.removeClass(l+"off").addClass(l+"on")}function o(){e(),lt.unbind(ot,t).unbind(it,e),M.html(B.slideshowStart).unbind(s).one(s,function(){Q.next(),i()}),g.removeClass(l+"on").addClass(l+"off")}function n(){r=!1,M.hide(),e(),lt.unbind(ot,t).unbind(it,e),g.removeClass(l+"off "+l+"on")}var r,h,l=Z+"Slideshow_",s="click."+Z;return function(){r?B.slideshow||(lt.unbind(nt,n),n()):B.slideshow&&k[1]&&(r=!0,lt.one(nt,n),B.slideshowAuto?i():o(),M.show())}}();e.colorbox||(e(f),Q=e.fn[Y]=e[Y]=function(t,i){var o=this;if(t=t||{},f(),p()){if(e.isFunction(o))o=e("<a/>"),t.open=!0;else if(!o[0])return o;i&&(t.onComplete=i),o.each(function(){e.data(this,Y,e.extend({},e.data(this,Y)||X,t))}).addClass(et),(e.isFunction(t.open)&&t.open.call(o)||t.open)&&u(o[0])}return o},Q.position=function(t,i){function o(){x[0].style.width=C[0].style.width=y[0].style.width=parseInt(g[0].style.width,10)-_+"px",y[0].style.height=b[0].style.height=T[0].style.height=parseInt(g[0].style.height,10)-O+"px"}var r,l,s,a=0,d=0,c=g.offset();if(E.unbind("resize."+Z),g.css({top:-9e4,left:-9e4}),l=E.scrollTop(),s=E.scrollLeft(),B.fixed?(c.top-=l,c.left-=s,g.css({position:"fixed"})):(a=l,d=s,g.css({position:"absolute"})),d+=B.right!==!1?Math.max(E.width()-B.w-A-_-h(B.right,"x"),0):B.left!==!1?h(B.left,"x"):Math.round(Math.max(E.width()-B.w-A-_,0)/2),a+=B.bottom!==!1?Math.max(n()-B.h-D-O-h(B.bottom,"y"),0):B.top!==!1?h(B.top,"y"):Math.round(Math.max(n()-B.h-D-O,0)/2),g.css({top:c.top,left:c.left,visibility:"visible"}),v[0].style.width=v[0].style.height="9999px",r={width:B.w+A+_,height:B.h+D+O,top:a,left:d},t){var u=0;e.each(r,function(e){return r[e]!==dt[e]?(u=t,void 0):void 0}),t=u}dt=r,t||g.css(r),g.dequeue().animate(r,{duration:t||0,complete:function(){o(),$=!1,v[0].style.width=B.w+A+_+"px",v[0].style.height=B.h+D+O+"px",B.reposition&&setTimeout(function(){E.bind("resize."+Z,Q.position)},1),i&&i()},step:o})},Q.resize=function(e){var t;U&&(e=e||{},e.width&&(B.w=h(e.width,"x")-A-_),e.innerWidth&&(B.w=h(e.innerWidth,"x")),H.css({width:B.w}),e.height&&(B.h=h(e.height,"y")-D-O),e.innerHeight&&(B.h=h(e.innerHeight,"y")),e.innerHeight||e.height||(t=H.scrollTop(),H.css({height:"auto"}),B.h=H.height()),H.css({height:B.h}),t&&H.scrollTop(t),Q.position("none"===B.transition?0:B.speed))},Q.prep=function(i){function n(){return B.w=B.w||H.width(),B.w=B.mw&&B.mw<B.w?B.mw:B.w,B.w}function h(){return B.h=B.h||H.height(),B.h=B.mh&&B.mh<B.h?B.mh:B.h,B.h}if(U){var a,d="none"===B.transition?0:B.speed;H.empty().remove(),H=o(st,"LoadedContent").append(i),H.hide().appendTo(W.show()).css({width:n(),overflow:B.scrolling?"auto":"hidden"}).css({height:h()}).prependTo(y),W.hide(),e(j).css({"float":"none"}),a=function(){function i(){e.support.opacity===!1&&g[0].style.removeAttribute("filter")}var n,h,a=k.length,u="frameBorder",f="allowTransparency";U&&(h=function(){clearTimeout(G),F.hide(),c(ot,B.onComplete)},L.html(B.title).add(H).show(),a>1?("string"==typeof B.current&&S.html(B.current.replace("{current}",z+1).replace("{total}",a)).show(),R[B.loop||a-1>z?"show":"hide"]().html(B.next),I[B.loop||z?"show":"hide"]().html(B.previous),ct(),B.preloading&&e.each([r(-1),r(1)],function(){var i,o,n=k[this],r=e.data(n,Y);r&&r.href?(i=r.href,e.isFunction(i)&&(i=i.call(n))):i=e(n).attr("href"),i&&l(r,i)&&(i=s(r,i),o=t.createElement("img"),o.src=i)})):P.hide(),B.iframe?(n=o("iframe")[0],u in n&&(n[u]=0),f in n&&(n[f]="true"),B.scrolling||(n.scrolling="no"),e(n).attr({src:B.href,name:(new Date).getTime(),"class":Z+"Iframe",allowFullScreen:!0,webkitAllowFullScreen:!0,mozallowfullscreen:!0}).one("load",h).appendTo(H),lt.one(ht,function(){n.src="//about:blank"}),B.fastIframe&&e(n).trigger("load")):h(),"fade"===B.transition?g.fadeTo(d,1,i):i())},"fade"===B.transition?g.fadeTo(d,0,function(){Q.position(0,a)}):Q.position(d,a)}},Q.next=function(){!$&&k[1]&&(B.loop||k[z+1])&&(z=r(1),u(k[z]))},Q.prev=function(){!$&&k[1]&&(B.loop||z)&&(z=r(-1),u(k[z]))},Q.close=function(){U&&!q&&(q=!0,U=!1,c(nt,B.onCleanup),E.unbind("."+Z),w.fadeTo(B.fadeOut||0,0),g.stop().fadeTo(B.fadeOut||0,0,function(){g.add(w).css({opacity:1,cursor:"auto"}).hide(),c(ht),H.empty().remove(),setTimeout(function(){q=!1,c(rt,B.onClosed)},1)}))},Q.remove=function(){g&&(g.stop(),e.colorbox.close(),g.stop().remove(),w.remove(),q=!1,g=null,e("."+et).removeData(Y).removeClass(et),e(t).unbind("click."+Z))},Q.element=function(){return e(N)},Q.settings=X)})(jQuery,document,window);
0 \ No newline at end of file 8 \ No newline at end of file
public/javascripts/lightbox.js
@@ -1,232 +0,0 @@ @@ -1,232 +0,0 @@
1 -/*  
2 -Created By: Chris Campbell  
3 -Website: http://particletree.com  
4 -Date: 2/1/2006  
5 -  
6 -Inspired by the lightbox implementation found at http://www.huddletogether.com/projects/lightbox/  
7 -*/  
8 -  
9 -/*-------------------------------GLOBAL VARIABLES------------------------------------*/  
10 -  
11 -var detect = navigator.userAgent.toLowerCase();  
12 -var OS,browser,version,total,thestring;  
13 -  
14 -/*-----------------------------------------------------------------------------------------------*/  
15 -  
16 -//Browser detect script origionally created by Peter Paul Koch at http://www.quirksmode.org/  
17 -  
18 -function getBrowserInfo() {  
19 - if (checkIt('konqueror')) {  
20 - browser = "Konqueror";  
21 - OS = "Linux";  
22 - }  
23 - else if (checkIt('safari')) browser = "Safari"  
24 - else if (checkIt('omniweb')) browser = "OmniWeb"  
25 - else if (checkIt('opera')) browser = "Opera"  
26 - else if (checkIt('webtv')) browser = "WebTV";  
27 - else if (checkIt('icab')) browser = "iCab"  
28 - else if (checkIt('msie')) browser = "Internet Explorer"  
29 - else if (!checkIt('compatible')) {  
30 - browser = "Netscape Navigator"  
31 - version = detect.charAt(8);  
32 - }  
33 - else browser = "An unknown browser";  
34 -  
35 - if (!version) version = detect.charAt(place + thestring.length);  
36 -  
37 - if (!OS) {  
38 - if (checkIt('linux')) OS = "Linux";  
39 - else if (checkIt('x11')) OS = "Unix";  
40 - else if (checkIt('mac')) OS = "Mac"  
41 - else if (checkIt('win')) OS = "Windows"  
42 - else OS = "an unknown operating system";  
43 - }  
44 -}  
45 -  
46 -function checkIt(string) {  
47 - place = detect.indexOf(string) + 1;  
48 - thestring = string;  
49 - return place;  
50 -}  
51 -  
52 -/*-----------------------------------------------------------------------------------------------*/  
53 -  
54 -Event.observe(window, 'load', getBrowserInfo, false);  
55 -  
56 -var lightbox = Class.create();  
57 -  
58 -lightbox.prototype = {  
59 -  
60 - yPos : 0,  
61 - xPos : 0,  
62 -  
63 - initialize: function(ctrl) {  
64 - this.content = ctrl.href;  
65 - if (ctrl.id != '') {  
66 - this.lightbox_className = ctrl.id;  
67 - }  
68 - ctrl.onclick = function(){return false;};  
69 - ctrl.lightbox = this;  
70 - },  
71 -  
72 - // Turn everything on - mainly the IE fixes  
73 - activate: function(){  
74 - if (browser == 'Internet Explorer'){  
75 - this.getScroll();  
76 - this.prepareIE('100%', 'hidden');  
77 - this.setScroll(0,0);  
78 - this.hideSelects('hidden');  
79 - }  
80 - this.hideObjectsAndEmbeds('hidden');  
81 - this.displayLightbox("block");  
82 - },  
83 -  
84 - // Ie requires height to 100% and overflow hidden or else you can scroll down past the lightbox  
85 - prepareIE: function(height, overflow){  
86 - bod = document.getElementsByTagName('body')[0];  
87 - bod.style.height = height;  
88 - bod.style.overflow = overflow;  
89 -  
90 - htm = document.getElementsByTagName('html')[0];  
91 - htm.style.height = height;  
92 - htm.style.overflow = overflow;  
93 - },  
94 -  
95 - // In IE, select elements hover on top of the lightbox  
96 - hideSelects: function(visibility){  
97 - selects = document.getElementsByTagName('select');  
98 - for(i = 0; i < selects.length; i++) {  
99 - selects[i].style.visibility = visibility;  
100 - }  
101 - },  
102 -  
103 - // In FF, objects and embeds elements hover on top of the lightbox  
104 - hideObjectsAndEmbeds: function(visibility){  
105 - var f = function(collection) {  
106 - for(i = 0; i < collection.length; i++) {  
107 - if (collection[i].style) {  
108 - collection[i].style.visibility = visibility;  
109 - }  
110 - }  
111 - };  
112 - f(document.getElementsByTagName('object'));  
113 - f(document.getElementsByTagName('embed'));  
114 - },  
115 -  
116 - // Taken from lightbox implementation found at http://www.huddletogether.com/projects/lightbox/  
117 - getScroll: function(){  
118 - if (self.pageYOffset) {  
119 - this.yPos = self.pageYOffset;  
120 - } else if (document.documentElement && document.documentElement.scrollTop){  
121 - this.yPos = document.documentElement.scrollTop;  
122 - } else if (document.body) {  
123 - this.yPos = document.body.scrollTop;  
124 - }  
125 - },  
126 -  
127 - setScroll: function(x, y){  
128 - window.scrollTo(x, y);  
129 - },  
130 -  
131 - displayLightbox: function(display){  
132 - $('overlay').style.display = display;  
133 - $('lightbox').style.display = display;  
134 - if(display != 'none') this.loadInfo();  
135 - },  
136 -  
137 - // Begin Ajax request based off of the href of the clicked linked  
138 - loadInfo: function() {  
139 - var myAjax = new Ajax.Request(  
140 - this.content,  
141 - {method: 'post', parameters: "", onComplete: this.processInfo.bindAsEventListener(this)}  
142 - );  
143 -  
144 - },  
145 -  
146 - // Display Ajax response  
147 - processInfo: function(response){  
148 - info = "<div id='lbContent'><div id='lbBottomBG'><div id='lbTopBG'>" + response.responseText + "</div></div></div>";  
149 - new Insertion.Before($('lbLoadMessage'), info)  
150 - if (this.lightbox_className) {  
151 - $('lightbox').className = "done " + this.lightbox_className;  
152 - } else {  
153 - $('lightbox').className = "done";  
154 - }  
155 - this.actions();  
156 - },  
157 -  
158 - // Search through new links within the lightbox, and attach click event  
159 - actions: function(){  
160 - lbActions = document.getElementsByClassName('lbAction');  
161 -  
162 - for(i = 0; i < lbActions.length; i++) {  
163 - Event.observe(lbActions[i], 'click', this[lbActions[i].rel].bindAsEventListener(this), false);  
164 - lbActions[i].onclick = function(){return false;};  
165 - }  
166 -  
167 - },  
168 -  
169 - // Example of creating your own functionality once lightbox is initiated  
170 - insert: function(e){  
171 - link = Event.element(e).parentNode;  
172 - Element.remove($('lbContent'));  
173 -  
174 - var myAjax = new Ajax.Request(  
175 - link.href,  
176 - {method: 'post', parameters: "", onComplete: this.processInfo.bindAsEventListener(this)}  
177 - );  
178 -  
179 - },  
180 -  
181 - // Example of creating your own functionality once lightbox is initiated  
182 - deactivate: function(){  
183 - Element.remove($('lbContent'));  
184 -  
185 - if (browser == "Internet Explorer"){  
186 - this.setScroll(0,this.yPos);  
187 - this.prepareIE("auto", "auto");  
188 - this.hideSelects("visible");  
189 - }  
190 - this.hideObjectsAndEmbeds("visible");  
191 - this.displayLightbox("none");  
192 - }  
193 -}  
194 -  
195 -/*-----------------------------------------------------------------------------------------------*/  
196 -  
197 -jQuery('.lbOn').live('click', function(event) {  
198 - if (jQuery('#lbLoadMessage').length == 0)  
199 - addLightboxMarkup();  
200 - if (this.lightbox == undefined)  
201 - valid = new lightbox(this);  
202 - else {  
203 - removeLightboxMarkup();  
204 - addLightboxMarkup();  
205 - }  
206 -  
207 - this.lightbox.activate();  
208 -  
209 - event.preventDefault();  
210 - return false;  
211 -});  
212 -  
213 -// Add in markup necessary to make this work. Basically two divs:  
214 -// Overlay holds the shadow  
215 -// Lightbox is the centered square that the content is put into.  
216 -function addLightboxMarkup() {  
217 - bod = document.getElementsByTagName('body')[0];  
218 - overlay = document.createElement('div');  
219 - overlay.id = 'overlay';  
220 - lb = document.createElement('div');  
221 - lb.id = 'lightbox';  
222 - lb.className = 'loading';  
223 - lb.innerHTML = '<div id="lbLoadMessage">' +  
224 - '<img src="' + noosfero_root() + '/images/2loading.gif"/>' +  
225 - '</div>';  
226 - bod.appendChild(overlay);  
227 - bod.appendChild(lb);  
228 -}  
229 -function removeLightboxMarkup() {  
230 - Element.remove($('overlay'));  
231 - Element.remove($('lightbox'));  
232 -}  
public/javascripts/modal.js 0 → 100644
@@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
  1 +noosfero.modal = {
  2 +
  3 + watchClass: function() {
  4 + jQuery(function($) {
  5 + $(document).delegate('.modal-toggle', 'click', function() {
  6 + $.colorbox({
  7 + href: $(this).attr('href'),
  8 + maxWidth: $(window).width()-50,
  9 + height: $(window).height()-50,
  10 + open: true,
  11 + close: 'Cancel',
  12 + class: 'modal',
  13 + onComplete: function(bt) {
  14 + var opt = {}, maxH = $(window).height()-50;
  15 + if ($('#cboxLoadedContent *:first').height() > maxH) opt.height = maxH;
  16 + $.colorbox.resize(opt);
  17 + }
  18 + });
  19 + return false;
  20 + });
  21 +
  22 + $(document).delegate('.modal-close', 'click', function() {
  23 + $.colorbox.close();
  24 + return false;
  25 + });
  26 +
  27 + });
  28 + },
  29 +
  30 + inline: function(href, options) {
  31 + href = jQuery(href);
  32 + options = jQuery.extend({
  33 + inline: true, href: href,
  34 + onLoad: function(){ href.show(); },
  35 + onCleanup: function(){ href.hide(); },
  36 + }, options)
  37 +
  38 + jQuery.colorbox(options);
  39 +
  40 + return false;
  41 + },
  42 +
  43 + html: function(html, options) {
  44 + options = jQuery.extend({
  45 + html: html,
  46 + }, options);
  47 +
  48 + jQuery.colorbox(options);
  49 + },
  50 +
  51 + close: function() {
  52 + jQuery.colorbox.close();
  53 + },
  54 +
  55 +};
  56 +
  57 +noosfero.modal.watchClass();
  58 +
public/javascripts/report-abuse.js
1 jQuery(function($) { 1 jQuery(function($) {
2 $('.report-abuse-action').live('click', function() { 2 $('.report-abuse-action').live('click', function() {
3 if($(this).attr('href')){ 3 if($(this).attr('href')){
4 - $.fn.colorbox({  
5 - href: $(this).attr('href'), 4 + noosfero.modal.inline($(this).attr('href'), {
6 innerHeight: '300px', 5 innerHeight: '300px',
7 innerWidth: '445px' 6 innerWidth: '445px'
8 }); 7 });
public/javascripts/thickbox.js
@@ -1,319 +0,0 @@ @@ -1,319 +0,0 @@
1 -/*  
2 - * Thickbox 3.1 - One Box To Rule Them All.  
3 - * By Cody Lindley (http://www.codylindley.com)  
4 - * Copyright (c) 2007 cody lindley  
5 - * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php  
6 -*/  
7 -  
8 -var tb_pathToImage = "/images/loading.gif";  
9 -  
10 -/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/  
11 -  
12 -//on page load call tb_init  
13 -jQuery(document).ready(function(){  
14 - tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox  
15 - imgLoader = new Image();// preload image  
16 - imgLoader.src = noosfero_root() + tb_pathToImage;  
17 -});  
18 -  
19 -//add thickbox to href & area elements that have a class of .thickbox  
20 -function tb_init(domChunk){  
21 - jQuery(domChunk).click(function(){  
22 - var t = this.title || this.name || null;  
23 - var a = this.href || this.alt;  
24 - var g = this.rel || false;  
25 - tb_show(t,a,g);  
26 - this.blur();  
27 - return false;  
28 - });  
29 -}  
30 -  
31 -function tb_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link  
32 -  
33 - try {  
34 - if (typeof document.body.style.maxHeight === "undefined") {//if IE 6  
35 - jQuery("body","html").css({height: "100%", width: "100%"});  
36 - jQuery("html").css("overflow","hidden");  
37 - if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6  
38 - jQuery("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");  
39 - jQuery("#TB_overlay").click(tb_remove);  
40 - }  
41 - }else{//all others  
42 - if(document.getElementById("TB_overlay") === null){  
43 - jQuery("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");  
44 - jQuery("#TB_overlay").click(tb_remove);  
45 - }  
46 - }  
47 -  
48 - if(tb_detectMacXFF()){  
49 - jQuery("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash  
50 - }else{  
51 - jQuery("#TB_overlay").addClass("TB_overlayBG");//use background and opacity  
52 - }  
53 -  
54 - if(caption===null){caption="";}  
55 - jQuery("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page  
56 - jQuery('#TB_load').show();//show loader  
57 -  
58 - var baseURL;  
59 - if(url.indexOf("?")!==-1){ //ff there is a query string involved  
60 - baseURL = url.substr(0, url.indexOf("?"));  
61 - }else{  
62 - baseURL = url;  
63 - }  
64 -  
65 - var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;  
66 - var urlType = baseURL.toLowerCase().match(urlString);  
67 -  
68 - if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images  
69 -  
70 - TB_PrevCaption = "";  
71 - TB_PrevURL = "";  
72 - TB_PrevHTML = "";  
73 - TB_NextCaption = "";  
74 - TB_NextURL = "";  
75 - TB_NextHTML = "";  
76 - TB_imageCount = "";  
77 - TB_FoundURL = false;  
78 - if(imageGroup){  
79 - TB_TempArray = jQuery("a[@rel="+imageGroup+"]").get();  
80 - for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) {  
81 - var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);  
82 - if (!(TB_TempArray[TB_Counter].href == url)) {  
83 - if (TB_FoundURL) {  
84 - TB_NextCaption = TB_TempArray[TB_Counter].title;  
85 - TB_NextURL = TB_TempArray[TB_Counter].href;  
86 - TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>";  
87 - } else {  
88 - TB_PrevCaption = TB_TempArray[TB_Counter].title;  
89 - TB_PrevURL = TB_TempArray[TB_Counter].href;  
90 - TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>";  
91 - }  
92 - } else {  
93 - TB_FoundURL = true;  
94 - TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length);  
95 - }  
96 - }  
97 - }  
98 -  
99 - imgPreloader = new Image();  
100 - imgPreloader.onload = function(){  
101 - imgPreloader.onload = null;  
102 -  
103 - // Resizing large images - orginal by Christian Montoya edited by me.  
104 - var pagesize = tb_getPageSize();  
105 - var x = pagesize[0] - 150;  
106 - var y = pagesize[1] - 150;  
107 - var imageWidth = imgPreloader.width;  
108 - var imageHeight = imgPreloader.height;  
109 - if (imageWidth > x) {  
110 - imageHeight = imageHeight * (x / imageWidth);  
111 - imageWidth = x;  
112 - if (imageHeight > y) {  
113 - imageWidth = imageWidth * (y / imageHeight);  
114 - imageHeight = y;  
115 - }  
116 - } else if (imageHeight > y) {  
117 - imageWidth = imageWidth * (y / imageHeight);  
118 - imageHeight = y;  
119 - if (imageWidth > x) {  
120 - imageHeight = imageHeight * (x / imageWidth);  
121 - imageWidth = x;  
122 - }  
123 - }  
124 - // End Resizing  
125 -  
126 - TB_WIDTH = imageWidth + 30;  
127 - TB_HEIGHT = imageHeight + 60;  
128 - jQuery("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div>");  
129 -  
130 - jQuery("#TB_closeWindowButton").click(tb_remove);  
131 -  
132 - if (!(TB_PrevHTML === "")) {  
133 - function goPrev(){  
134 - if(jQuery(document).unbind("click",goPrev)){jQuery(document).unbind("click",goPrev);}  
135 - jQuery("#TB_window").remove();  
136 - jQuery("body").append("<div id='TB_window'></div>");  
137 - tb_show(TB_PrevCaption, TB_PrevURL, imageGroup);  
138 - return false;  
139 - }  
140 - jQuery("#TB_prev").click(goPrev);  
141 - }  
142 -  
143 - if (!(TB_NextHTML === "")) {  
144 - function goNext(){  
145 - jQuery("#TB_window").remove();  
146 - jQuery("body").append("<div id='TB_window'></div>");  
147 - tb_show(TB_NextCaption, TB_NextURL, imageGroup);  
148 - return false;  
149 - }  
150 - jQuery("#TB_next").click(goNext);  
151 -  
152 - }  
153 -  
154 - document.onkeydown = function(e){  
155 - if (e == null) { // ie  
156 - keycode = event.keyCode;  
157 - } else { // mozilla  
158 - keycode = e.which;  
159 - }  
160 - if(keycode == 27){ // close  
161 - tb_remove();  
162 - } else if(keycode == 190){ // display previous image  
163 - if(!(TB_NextHTML == "")){  
164 - document.onkeydown = "";  
165 - goNext();  
166 - }  
167 - } else if(keycode == 188){ // display next image  
168 - if(!(TB_PrevHTML == "")){  
169 - document.onkeydown = "";  
170 - goPrev();  
171 - }  
172 - }  
173 - };  
174 -  
175 - tb_position();  
176 - jQuery("#TB_load").remove();  
177 - jQuery("#TB_ImageOff").click(tb_remove);  
178 - jQuery("#TB_window").css({display:"block"}); //for safari using css instead of show  
179 - };  
180 -  
181 - imgPreloader.src = url;  
182 - }else{//code to show html  
183 -  
184 - var queryString = url.replace(/^[^\?]+\??/,'');  
185 - var params = tb_parseQuery( queryString );  
186 -  
187 - TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL  
188 - TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL  
189 - ajaxContentW = TB_WIDTH - 30;  
190 - ajaxContentH = TB_HEIGHT - 45;  
191 -  
192 - if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window  
193 - urlNoQuery = url.split('TB_');  
194 - jQuery("#TB_iframeContent").remove();  
195 - if(params['modal'] != "true"){//iframe no modal  
196 - jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");  
197 - }else{//iframe modal  
198 - jQuery("#TB_overlay").unbind();  
199 - jQuery("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");  
200 - }  
201 - }else{// not an iframe, ajax  
202 - if(jQuery("#TB_window").css("display") != "block"){  
203 - if(params['modal'] != "true"){//ajax no modal  
204 - jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a> or Esc Key</div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");  
205 - }else{//ajax modal  
206 - jQuery("#TB_overlay").unbind();  
207 - jQuery("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");  
208 - }  
209 - }else{//this means the window is already up, we are just loading new content via ajax  
210 - jQuery("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";  
211 - jQuery("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";  
212 - jQuery("#TB_ajaxContent")[0].scrollTop = 0;  
213 - jQuery("#TB_ajaxWindowTitle").html(caption);  
214 - }  
215 - }  
216 -  
217 - jQuery("#TB_closeWindowButton").click(tb_remove);  
218 -  
219 - if(url.indexOf('TB_inline') != -1){  
220 - jQuery("#TB_ajaxContent").append(jQuery('#' + params['inlineId']).children());  
221 - jQuery("#TB_window").unload(function () {  
222 - jQuery('#' + params['inlineId']).append( jQuery("#TB_ajaxContent").children() ); // move elements back when you're finished  
223 - });  
224 - tb_position();  
225 - jQuery("#TB_load").remove();  
226 - jQuery("#TB_window").css({display:"block"});  
227 - }else if(url.indexOf('TB_iframe') != -1){  
228 - tb_position();  
229 - if(jQuery.browser.safari){//safari needs help because it will not fire iframe onload  
230 - jQuery("#TB_load").remove();  
231 - jQuery("#TB_window").css({display:"block"});  
232 - }  
233 - }else{  
234 - jQuery("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method  
235 - tb_position();  
236 - jQuery("#TB_load").remove();  
237 - tb_init("#TB_ajaxContent a.thickbox");  
238 - jQuery("#TB_window").css({display:"block"});  
239 - });  
240 - }  
241 -  
242 - }  
243 -  
244 - if(!params['modal']){  
245 - document.onkeyup = function(e){  
246 - if (e == null) { // ie  
247 - keycode = event.keyCode;  
248 - } else { // mozilla  
249 - keycode = e.which;  
250 - }  
251 - if(keycode == 27){ // close  
252 - tb_remove();  
253 - }  
254 - };  
255 - }  
256 -  
257 - } catch(e) {  
258 - //nothing here  
259 - }  
260 -}  
261 -  
262 -//helper functions below  
263 -function tb_showIframe(){  
264 - jQuery("#TB_load").remove();  
265 - jQuery("#TB_window").css({display:"block"});  
266 -}  
267 -  
268 -function tb_remove() {  
269 - jQuery("#TB_imageOff").unbind("click");  
270 - jQuery("#TB_closeWindowButton").unbind("click");  
271 - jQuery("#TB_window").fadeOut("fast",function(){jQuery('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});  
272 - jQuery("#TB_load").remove();  
273 - if (typeof document.body.style.maxHeight == "undefined") {//if IE 6  
274 - jQuery("body","html").css({height: "auto", width: "auto"});  
275 - jQuery("html").css("overflow","");  
276 - }  
277 - document.onkeydown = "";  
278 - document.onkeyup = "";  
279 - return false;  
280 -}  
281 -  
282 -function tb_position() {  
283 -jQuery("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});  
284 - if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6  
285 - jQuery("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});  
286 - }  
287 -}  
288 -  
289 -function tb_parseQuery ( query ) {  
290 - var Params = {};  
291 - if ( ! query ) {return Params;}// return empty object  
292 - var Pairs = query.split(/[;&]/);  
293 - for ( var i = 0; i < Pairs.length; i++ ) {  
294 - var KeyVal = Pairs[i].split('=');  
295 - if ( ! KeyVal || KeyVal.length != 2 ) {continue;}  
296 - var key = unescape( KeyVal[0] );  
297 - var val = unescape( KeyVal[1] );  
298 - val = val.replace(/\+/g, ' ');  
299 - Params[key] = val;  
300 - }  
301 - return Params;  
302 -}  
303 -  
304 -function tb_getPageSize(){  
305 - var de = document.documentElement;  
306 - var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;  
307 - var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;  
308 - arrayPageSize = [w,h];  
309 - return arrayPageSize;  
310 -}  
311 -  
312 -function tb_detectMacXFF() {  
313 - var userAgent = navigator.userAgent.toLowerCase();  
314 - if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {  
315 - return true;  
316 - }  
317 -}  
318 -  
319 -  
public/stylesheets/application.css
@@ -1901,17 +1901,6 @@ a.button.disabled, input.disabled { @@ -1901,17 +1901,6 @@ a.button.disabled, input.disabled {
1901 * Block options editor floating window * 1901 * Block options editor floating window *
1902 ****************************************/ 1902 ****************************************/
1903 1903
1904 -/* FIXME This changes broke colorboxes all over the place.  
1905 - * Therefore I'm canceling them until they are properly treateda. */  
1906 -#cboxLoadedContent {  
1907 - background: #FFF;  
1908 -/* box-shadow: 0 0 15px #888 inset;  
1909 - border-radius: 5px;  
1910 - border: 1px solid #777;  
1911 - border-left: none;  
1912 - border-right: none; */  
1913 -}  
1914 -  
1915 .block-config-options { 1904 .block-config-options {
1916 padding: 0px 10px 0px 30px; 1905 padding: 0px 10px 0px 30px;
1917 } 1906 }
public/stylesheets/colorbox.css
1 /* 1 /*
2 - ColorBox Core Style: 2 + Colorbox Core Style:
3 The following CSS is consistent between example themes and should not be altered. 3 The following CSS is consistent between example themes and should not be altered.
4 */ 4 */
5 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;} 5 #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
  6 +#cboxWrapper {max-width:none;}
6 #cboxOverlay{position:fixed; width:100%; height:100%;} 7 #cboxOverlay{position:fixed; width:100%; height:100%;}
7 #cboxMiddleLeft, #cboxBottomLeft{clear:left;} 8 #cboxMiddleLeft, #cboxBottomLeft{clear:left;}
8 #cboxContent{position:relative;} 9 #cboxContent{position:relative;}
9 -#cboxLoadedContent{overflow:auto;} 10 +#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
10 #cboxTitle{margin:0;} 11 #cboxTitle{margin:0;}
11 -#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;} 12 +#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
12 #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;} 13 #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
13 -.cboxPhoto{float:left; margin:auto; border:0; display:block;} 14 +.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
14 .cboxIframe{width:100%; height:100%; display:block; border:0;} 15 .cboxIframe{width:100%; height:100%; display:block; border:0;}
  16 +#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
15 17
16 -/* 18 +/*
17 User Style: 19 User Style:
18 - Change the following styles to modify the appearance of ColorBox. They are 20 + Change the following styles to modify the appearance of Colorbox. They are
19 ordered & tabbed in a way that represents the nesting of the generated HTML. 21 ordered & tabbed in a way that represents the nesting of the generated HTML.
20 */ 22 */
21 #cboxOverlay{background:url(../images/colorbox/overlay.png) repeat 0 0;} 23 #cboxOverlay{background:url(../images/colorbox/overlay.png) repeat 0 0;}
22 -#colorbox{}  
23 - #cboxTopLeft{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -100px 0;}  
24 - #cboxTopRight{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -129px 0;}  
25 - #cboxBottomLeft{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -100px -29px;}  
26 - #cboxBottomRight{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -129px -29px;} 24 +#colorbox{outline:0;}
  25 + #cboxTopLeft{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -101px 0;}
  26 + #cboxTopRight{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -130px 0;}
  27 + #cboxBottomLeft{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -101px -29px;}
  28 + #cboxBottomRight{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -130px -29px;}
27 #cboxMiddleLeft{width:21px; background:url(../images/colorbox/controls.png) left top repeat-y;} 29 #cboxMiddleLeft{width:21px; background:url(../images/colorbox/controls.png) left top repeat-y;}
28 #cboxMiddleRight{width:21px; background:url(../images/colorbox/controls.png) right top repeat-y;} 30 #cboxMiddleRight{width:21px; background:url(../images/colorbox/controls.png) right top repeat-y;}
29 #cboxTopCenter{height:21px; background:url(../images/colorbox/border.png) 0 0 repeat-x;} 31 #cboxTopCenter{height:21px; background:url(../images/colorbox/border.png) 0 0 repeat-x;}
30 #cboxBottomCenter{height:21px; background:url(../images/colorbox/border.png) 0 -29px repeat-x;} 32 #cboxBottomCenter{height:21px; background:url(../images/colorbox/border.png) 0 -29px repeat-x;}
31 #cboxContent{background:#fff; overflow:hidden;} 33 #cboxContent{background:#fff; overflow:hidden;}
  34 + .cboxIframe{background:#fff;}
32 #cboxError{padding:50px; border:1px solid #ccc;} 35 #cboxError{padding:50px; border:1px solid #ccc;}
33 #cboxLoadedContent{margin-bottom:28px;} 36 #cboxLoadedContent{margin-bottom:28px;}
34 #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;} 37 #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;}
35 #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;} 38 #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}
  39 + #cboxLoadingOverlay{background:url(../images/colorbox/loading_background.png) no-repeat center center;}
  40 + #cboxLoadingGraphic{background:url(../images/colorbox/loading.gif) no-repeat center center;}
  41 +
  42 + /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
  43 + #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
  44 +
  45 + /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
  46 + #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
  47 +
36 #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;} 48 #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}
37 #cboxPrevious{position:absolute; bottom:0; left:0; background:url(../images/colorbox/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;} 49 #cboxPrevious{position:absolute; bottom:0; left:0; background:url(../images/colorbox/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}
38 - #cboxPrevious.hover{background-position:-75px -25px;} 50 + #cboxPrevious:hover{background-position:-75px -25px;}
39 #cboxNext{position:absolute; bottom:0; left:27px; background:url(../images/colorbox/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;} 51 #cboxNext{position:absolute; bottom:0; left:27px; background:url(../images/colorbox/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
40 - #cboxNext.hover{background-position:-50px -25px;}  
41 - #cboxLoadingOverlay{background:url(../images/colorbox/loading_background.png) no-repeat center center;}  
42 - #cboxLoadingGraphic{background:url(../images/colorbox/loading.gif) no-repeat center center;} 52 + #cboxNext:hover{background-position:-50px -25px;}
43 #cboxClose{position:absolute; bottom:0; right:0; background:url(../images/colorbox/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;} 53 #cboxClose{position:absolute; bottom:0; right:0; background:url(../images/colorbox/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
44 - #cboxClose.hover{background-position:-25px -25px;} 54 + #cboxClose:hover{background-position:-25px -25px;}
45 55
46 /* 56 /*
47 - The following fixes a problem where IE7+ replaces a PNG's alpha transparency with a black fill  
48 - when an alpha filter (opacity change) is set on the element or ancestor element. 57 + The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill
  58 + when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9.
  59 + See: http://jacklmoore.com/notes/ie-transparency-problems/
49 */ 60 */
50 .cboxIE #cboxTopLeft, 61 .cboxIE #cboxTopLeft,
51 .cboxIE #cboxTopCenter, 62 .cboxIE #cboxTopCenter,
@@ -57,26 +68,3 @@ @@ -57,26 +68,3 @@
57 .cboxIE #cboxMiddleRight { 68 .cboxIE #cboxMiddleRight {
58 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); 69 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
59 } 70 }
60 -  
61 -/*  
62 - The following provides PNG transparency support for IE6  
63 -*/  
64 -.cboxIE6 #cboxTopLeft{background:url(../images/colorbox/ie6/borderTopLeft.png);}  
65 -.cboxIE6 #cboxTopCenter{background:url(../images/colorbox/ie6/borderTopCenter.png);}  
66 -.cboxIE6 #cboxTopRight{background:url(../images/colorbox/ie6/borderTopRight.png);}  
67 -.cboxIE6 #cboxBottomLeft{background:url(../images/colorbox/ie6/borderBottomLeft.png);}  
68 -.cboxIE6 #cboxBottomCenter{background:url(../images/colorbox/ie6/borderBottomCenter.png);}  
69 -.cboxIE6 #cboxBottomRight{background:url(../images/colorbox/ie6/borderBottomRight.png);}  
70 -.cboxIE6 #cboxMiddleLeft{background:url(../images/colorbox/ie6/borderMiddleLeft.png);}  
71 -.cboxIE6 #cboxMiddleRight{background:url(../images/colorbox/ie6/borderMiddleRight.png);}  
72 -  
73 -.cboxIE6 #cboxTopLeft,  
74 -.cboxIE6 #cboxTopCenter,  
75 -.cboxIE6 #cboxTopRight,  
76 -.cboxIE6 #cboxBottomLeft,  
77 -.cboxIE6 #cboxBottomCenter,  
78 -.cboxIE6 #cboxBottomRight,  
79 -.cboxIE6 #cboxMiddleLeft,  
80 -.cboxIE6 #cboxMiddleRight {  
81 - _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')");  
82 -}  
public/stylesheets/lightbox.css
@@ -1,63 +0,0 @@ @@ -1,63 +0,0 @@
1 -/* - - - - - - - - - - - - - - - - - - - - -  
2 -  
3 -Title : Lightbox CSS  
4 -Author : Kevin Hale  
5 -URL : http://particletree.com/features/lightbox-gone-wild/  
6 -  
7 -Created : January 13, 2006  
8 -Modified : February 1, 2006  
9 -  
10 -- - - - - - - - - - - - - - - - - - - - - */  
11 -  
12 -#lightbox {  
13 - display: none;  
14 - position: absolute;  
15 - top: 150px;  
16 - left: 50%;  
17 - z-index: 300;  
18 - width: 500px;  
19 - margin-left: -265px;  
20 - border: 1px solid #000;  
21 - text-align: left;  
22 - padding: 1em;  
23 - background: #FFF;  
24 -}  
25 -  
26 -#overlay{  
27 - display:none;  
28 - position:absolute;  
29 - top:0;  
30 - left:0;  
31 - width:100%;  
32 - height:100%;  
33 - z-index:200;  
34 - background-color:#000;  
35 - -moz-opacity: 0.75;  
36 - opacity:.75;  
37 - filter: alpha(opacity=75);  
38 -}  
39 -#overlay[id]{  
40 - position:fixed;  
41 -}  
42 -  
43 -#lightbox.done #lbLoadMessage{  
44 - display:none;  
45 -}  
46 -#lightbox.done #lbContent{  
47 - display:block;  
48 -}  
49 -#lightbox.loading #lbContent{  
50 - display:none;  
51 -}  
52 -#lightbox.loading #lbLoadMessage{  
53 - display:block;  
54 -}  
55 -  
56 -#lightbox.done img{  
57 - width:100%;  
58 - height:100%;  
59 -}  
60 -  
61 -#lightbox select {  
62 - max-width: 100%;  
63 -}  
public/stylesheets/thickbox.css
@@ -1,163 +0,0 @@ @@ -1,163 +0,0 @@
1 -/* ----------------------------------------------------------------------------------------------------------------*/  
2 -/* ---------->>> global settings needed for thickbox <<<-----------------------------------------------------------*/  
3 -/* ----------------------------------------------------------------------------------------------------------------*/  
4 -/**{padding: 0; margin: 0;}*/  
5 -  
6 -/* ----------------------------------------------------------------------------------------------------------------*/  
7 -/* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/  
8 -/* ----------------------------------------------------------------------------------------------------------------*/  
9 -#TB_window {  
10 - font: 12px Arial, Helvetica, sans-serif;  
11 - color: #333333;  
12 -}  
13 -  
14 -#TB_secondLine {  
15 - font: 10px Arial, Helvetica, sans-serif;  
16 - color:#666666;  
17 -}  
18 -  
19 -#TB_window a:link {color: #666666;}  
20 -#TB_window a:visited {color: #666666;}  
21 -#TB_window a:hover {color: #000;}  
22 -#TB_window a:active {color: #666666;}  
23 -#TB_window a:focus{color: #666666;}  
24 -  
25 -/* ----------------------------------------------------------------------------------------------------------------*/  
26 -/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/  
27 -/* ----------------------------------------------------------------------------------------------------------------*/  
28 -#TB_overlay {  
29 - position: fixed;  
30 - z-index:200;  
31 - top: 0px;  
32 - left: 0px;  
33 - height:100%;  
34 - width:100%;  
35 -}  
36 -  
37 -.TB_overlayMacFFBGHack {background: url(macFFBgHack.png) repeat;}  
38 -.TB_overlayBG {  
39 - background-color:#000;  
40 - filter:alpha(opacity=75);  
41 - -moz-opacity: 0.75;  
42 - opacity: 0.75;  
43 -}  
44 -  
45 -* html #TB_overlay { /* ie6 hack */  
46 - position: absolute;  
47 - height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');  
48 -}  
49 -  
50 -#TB_window {  
51 - position: fixed;  
52 - background: white;  
53 - z-index: 202;  
54 - color:#000000;  
55 - display:none;  
56 - border: 1px solid #000;  
57 - text-align:left;  
58 - top:50%;  
59 - left:50%;  
60 -}  
61 -  
62 -* html #TB_window { /* ie6 hack */  
63 -position: absolute;  
64 -margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');  
65 -}  
66 -  
67 -#TB_window img#TB_Image {  
68 - display:block;  
69 - margin: 15px 0 0 15px;  
70 - border-right: 1px solid #ccc;  
71 - border-bottom: 1px solid #ccc;  
72 - border-top: 1px solid #666;  
73 - border-left: 1px solid #666;  
74 -}  
75 -  
76 -#TB_caption{  
77 - height:25px;  
78 - padding:7px 30px 10px 25px;  
79 - float:left;  
80 -}  
81 -  
82 -#TB_closeWindow{  
83 - height:25px;  
84 - padding:11px 25px 10px 0;  
85 - float:right;  
86 -}  
87 -  
88 -#TB_closeAjaxWindow{  
89 - padding:7px 10px 5px 0;  
90 - margin-bottom:1px;  
91 - text-align:right;  
92 - float:right;  
93 -}  
94 -  
95 -#TB_ajaxWindowTitle{  
96 - float:left;  
97 - padding:7px 0 5px 10px;  
98 - margin-bottom:1px;  
99 -}  
100 -  
101 -#TB_title{  
102 - background-color:#e8e8e8;  
103 - height:27px;  
104 -}  
105 -  
106 -#TB_ajaxContent{  
107 - clear:both;  
108 - padding:2px 15px 15px 15px;  
109 - overflow:auto;  
110 - text-align:left;  
111 - line-height:1.4em;  
112 -}  
113 -  
114 -#TB_ajaxContent.TB_modal{  
115 - padding:15px;  
116 -}  
117 -  
118 -#TB_ajaxContent p{  
119 - padding:5px 0px 5px 0px;  
120 -}  
121 -  
122 -#TB_load{  
123 - position: fixed;  
124 - display:none;  
125 - height:13px;  
126 - width:208px;  
127 - z-index:203;  
128 - top: 50%;  
129 - left: 50%;  
130 - margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */  
131 -}  
132 -  
133 -* html #TB_load { /* ie6 hack */  
134 -position: absolute;  
135 -margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');  
136 -}  
137 -  
138 -#TB_HideSelect{  
139 - z-index:199;  
140 - position:fixed;  
141 - top: 0;  
142 - left: 0;  
143 - background-color:#fff;  
144 - border:none;  
145 - filter:alpha(opacity=0);  
146 - -moz-opacity: 0;  
147 - opacity: 0;  
148 - height:100%;  
149 - width:100%;  
150 -}  
151 -  
152 -* html #TB_HideSelect { /* ie6 hack */  
153 - position: absolute;  
154 - height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');  
155 -}  
156 -  
157 -#TB_iframeContent{  
158 - clear:both;  
159 - border:none;  
160 - margin-bottom:-1px;  
161 - margin-top:1px;  
162 - _margin-bottom:1px;  
163 -}  
test/functional/cms_controller_test.rb
@@ -638,7 +638,7 @@ class CmsControllerTest &lt; ActionController::TestCase @@ -638,7 +638,7 @@ class CmsControllerTest &lt; ActionController::TestCase
638 638
639 should 'display OK button on why_categorize popup' do 639 should 'display OK button on why_categorize popup' do
640 get :why_categorize, :profile => profile.identifier 640 get :why_categorize, :profile => profile.identifier
641 - assert_tag :tag => 'a', :attributes => { :rel => 'deactivate'} # lightbox close button 641 + assert_tag :tag => 'a', :attributes => { :rel => 'deactivate'} # modal close button
642 end 642 end
643 643
644 should 'display published option' do 644 should 'display published option' do
test/unit/colorbox_helper_test.rb
@@ -1,36 +0,0 @@ @@ -1,36 +0,0 @@
1 -require_relative "../test_helper"  
2 -  
3 -class ColorboxHelperTest < ActiveSupport::TestCase  
4 -  
5 - include ColorboxHelper  
6 -  
7 - should 'provide the needed files' do  
8 - assert File.exists?(Rails.root.join('public', 'stylesheets', 'colorbox.css')), 'colorbox.css expected to be in public/stylesheets, but not found'  
9 - assert File.exists?(Rails.root.join('public', 'javascripts', 'colorbox.js')), 'colorbox.js expected to be in public/javascripts, but not found'  
10 - end  
11 -  
12 - should 'provide link to close colorbox' do  
13 - expects(:button).with(:close, 'text', '#', has_entries({ :class => 'colorbox-close', :id => 'my-id' })).returns('[close-colorbox]')  
14 -  
15 - assert_equal '[close-colorbox]', colorbox_close_button('text', :id => 'my-id')  
16 - end  
17 -  
18 - should 'merge existing :class option in colorbox_close_button' do  
19 - expects(:button).with(:close, 'text', '#', has_entries({ :class => 'colorbox-close my-class', :id => 'my-id' })).returns('[close-colorbox]')  
20 -  
21 - assert_equal '[close-colorbox]', colorbox_close_button('text', :class => 'my-class', :id => 'my-id' )  
22 - end  
23 -  
24 - should 'provide colorbox_button' do  
25 - expects(:button).with('type', 'label', { :action => 'popup'}, has_entries({ :class => 'colorbox' })).returns('[button]')  
26 -  
27 - assert_equal '[button]', colorbox_button('type', 'label', { :action => 'popup'})  
28 - end  
29 -  
30 - should 'provide colorbox_icon_button' do  
31 - expects(:icon_button).with('type', 'label', { :action => 'popup'}, has_entries({ :class => 'colorbox' })).returns('[button]')  
32 -  
33 - assert_equal '[button]', colorbox_icon_button('type', 'label', { :action => 'popup'})  
34 - end  
35 -  
36 -end  
test/unit/lightbox_helper_test.rb
@@ -1,65 +0,0 @@ @@ -1,65 +0,0 @@
1 -require_relative "../test_helper"  
2 -  
3 -class LightboxHelperTest < ActiveSupport::TestCase  
4 -  
5 - include LightboxHelper  
6 -  
7 - def setup  
8 - stubs(:_).with(anything).returns('TEXT')  
9 - end  
10 -  
11 - should 'provide the needed files' do  
12 - assert File.exists?(Rails.root.join('public', 'stylesheets', 'lightbox.css')), 'lightbox.css expected to be in public/stylesheets, but not found'  
13 - assert File.exists?(Rails.root.join('public', 'javascripts', 'lightbox.js')), 'lightbox.js expected to be in public/javascripts, but not found'  
14 - end  
15 -  
16 - should 'provide lightbox_link_to helper' do  
17 - expects(:link_to).with('text', { :action => 'view', :id => '1' }, has_entries({ :class => 'lbOn', :id => 'my-link' })).returns('[link]')  
18 - assert_equal '[link]', lightbox_link_to('text', { :action => 'view', :id => '1'}, { :id => 'my-link' })  
19 - end  
20 -  
21 - should 'merge existing :class option in lightbox_link_to' do  
22 - expects(:link_to).with('text', { :action => 'view', :id => '1' }, has_entries({ :class => 'lbOn my-button', :id => 'my-link' })).returns('[link]')  
23 - assert_equal '[link]', lightbox_link_to('text', { :action => 'view', :id => '1'}, { :class => 'my-button', :id => 'my-link' })  
24 -  
25 - end  
26 -  
27 - should 'provide link to close lightbox' do  
28 - expects(:button).with(:close, 'text', '#', has_entries({ :class => 'lbAction', :rel => 'deactivate', :id => 'my-id' })).returns('[close-lightbox]')  
29 -  
30 - assert_equal '[close-lightbox]', lightbox_close_button('text', :id => 'my-id')  
31 - end  
32 -  
33 - should 'merge existing :class option in lightbox_close_button' do  
34 - expects(:button).with(:close, 'text', '#', has_entries({ :class => 'lbAction my-class', :rel => 'deactivate', :id => 'my-id' })).returns('[close-lightbox]')  
35 -  
36 - assert_equal '[close-lightbox]', lightbox_close_button('text', :class => 'my-class', :id => 'my-id' )  
37 - end  
38 -  
39 - should 'provide lightbox_button' do  
40 - expects(:button).with('type', 'label', { :action => 'popup'}, has_entries({ :class => 'lbOn' })).returns('[button]')  
41 -  
42 - assert_equal '[button]', lightbox_button('type', 'label', { :action => 'popup'})  
43 - end  
44 -  
45 - should 'provide lightbox_icon_button' do  
46 - expects(:icon_button).with('type', 'label', { :action => 'popup'}, has_entries({ :class => 'lbOn' })).returns('[button]')  
47 -  
48 - assert_equal '[button]', lightbox_icon_button('type', 'label', { :action => 'popup'})  
49 - end  
50 -  
51 - should 'tell if rendering inside lightbox' do  
52 - request = mock  
53 - expects(:request).returns(request)  
54 - request.expects(:xhr?).returns(true)  
55 -  
56 - assert lightbox?  
57 - end  
58 -  
59 - should 'provide lightbox_remote_button' do  
60 - expects(:button).with('type', 'label', { :action => 'popup'}, has_entries({ :class => 'remote-lbOn' })).returns('[button]')  
61 -  
62 - assert_equal '[button]', lightbox_remote_button('type', 'label', { :action => 'popup'})  
63 - end  
64 -  
65 -end  
test/unit/modal_helper_test.rb 0 → 100644
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
  1 +require_relative '../test_helper'
  2 +
  3 +class ModalHelperTest < ActiveSupport::TestCase
  4 +
  5 + include ModalHelper
  6 +
  7 + should 'provide the needed files' do
  8 + assert File.exists?(Rails.root.join('public', 'stylesheets', 'colorbox.css')), 'colorbox.css expected to be in public/stylesheets, but not found'
  9 + assert File.exists?(Rails.root.join('public', 'javascripts', 'jquery.colorbox-min.js')), 'jquery.colorbox-min.js expected to be in public/javascripts, but not found'
  10 + end
  11 +
  12 + should 'provide link to close modal' do
  13 + expects(:button).with(:close, 'text', '#', has_entries({ :class => 'modal-toggle modal-close', :id => 'my-id' })).returns('[close-modal]')
  14 +
  15 + assert_equal '[close-modal]', modal_close_button('text', :id => 'my-id')
  16 + end
  17 +
  18 + should 'merge existing :class option in modal_close_button' do
  19 + expects(:button).with(:close, 'text', '#', has_entries({ :class => 'modal-toggle modal-close my-class', :id => 'my-id' })).returns('[close-modal]')
  20 +
  21 + assert_equal '[close-modal]', modal_close_button('text', :class => 'my-class', :id => 'my-id' )
  22 + end
  23 +
  24 + should 'provide modal_button' do
  25 + expects(:button).with('type', 'label', { :action => 'popup'}, has_entries({ :class => 'modal-toggle' })).returns('[button]')
  26 +
  27 + assert_equal '[button]', modal_button('type', 'label', { :action => 'popup'})
  28 + end
  29 +
  30 + should 'provide modal_icon_button' do
  31 + expects(:icon_button).with('type', 'label', { :action => 'popup'}, has_entries({ :class => 'modal-toggle' })).returns('[button]')
  32 +
  33 + assert_equal '[button]', modal_icon_button('type', 'label', { :action => 'popup'})
  34 + end
  35 +
  36 +end
test/unit/thickbox_helper_test.rb
@@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
1 -require_relative "../test_helper"  
2 -  
3 -class ThickboxHelperTest < ActiveSupport::TestCase  
4 - include ThickboxHelper  
5 -  
6 - def url_for(url)  
7 - url  
8 - end  
9 -  
10 - should 'create thickbox links correcly' do  
11 - expects(:link_to).with('Title', '/url#TB_inline?height=300&width=500&inlineId=inlineLoginBox&modal=true', :class => 'thickbox')  
12 - thickbox_inline_popup_link('Title', '/url', 'inlineLoginBox')  
13 - end  
14 -  
15 - should 'pass along extra options' do  
16 - expects(:link_to).with('Title', anything, :class => 'thickbox', :id => 'lalala', :title => 'lelele')  
17 - thickbox_inline_popup_link('Title', '/url', 'inlineLoginBox', :id => 'lalala', :title => 'lelele')  
18 - end  
19 -  
20 - should 'generate close button' do  
21 - expects(:button_to_function).with(:close, 'Title', 'tb_remove();').returns('[close-button]')  
22 - assert_equal '[close-button]', thickbox_close_button('Title')  
23 - end  
24 -  
25 -end