fix timing issues on failing scenarios. Fix deprecated jquery functions and update jqueryui
Signed-off-by: Reinier Balt <lrbalt@gmail.com>
48
Gemfile.lock
|
@ -2,7 +2,7 @@ GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
RedCloth (4.2.9)
|
RedCloth (4.2.9)
|
||||||
aasm (3.0.15)
|
aasm (3.0.16)
|
||||||
actionmailer (3.2.12)
|
actionmailer (3.2.12)
|
||||||
actionpack (= 3.2.12)
|
actionpack (= 3.2.12)
|
||||||
mail (~> 2.4.4)
|
mail (~> 2.4.4)
|
||||||
|
@ -31,7 +31,6 @@ GEM
|
||||||
i18n (~> 0.6)
|
i18n (~> 0.6)
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
acts_as_list (0.1.9)
|
acts_as_list (0.1.9)
|
||||||
addressable (2.3.2)
|
|
||||||
arel (3.0.2)
|
arel (3.0.2)
|
||||||
aruba (0.5.1)
|
aruba (0.5.1)
|
||||||
childprocess (~> 0.3.6)
|
childprocess (~> 0.3.6)
|
||||||
|
@ -51,8 +50,8 @@ GEM
|
||||||
rack-test (>= 0.5.4)
|
rack-test (>= 0.5.4)
|
||||||
selenium-webdriver (~> 2.0)
|
selenium-webdriver (~> 2.0)
|
||||||
xpath (~> 1.0.0)
|
xpath (~> 1.0.0)
|
||||||
childprocess (0.3.6)
|
childprocess (0.3.8)
|
||||||
ffi (~> 1.0, >= 1.0.6)
|
ffi (~> 1.0, >= 1.0.11)
|
||||||
coffee-rails (3.2.2)
|
coffee-rails (3.2.2)
|
||||||
coffee-script (>= 2.2.0)
|
coffee-script (>= 2.2.0)
|
||||||
railties (~> 3.2.0)
|
railties (~> 3.2.0)
|
||||||
|
@ -74,36 +73,33 @@ GEM
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
execjs (1.4.0)
|
execjs (1.4.0)
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
factory_girl (4.1.0)
|
factory_girl (4.2.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
factory_girl_rails (4.1.0)
|
factory_girl_rails (4.2.1)
|
||||||
factory_girl (~> 4.1.0)
|
factory_girl (~> 4.2.0)
|
||||||
railties (>= 3.0.0)
|
railties (>= 3.0.0)
|
||||||
ffi (1.2.0)
|
ffi (1.3.1)
|
||||||
formatize (1.1.0)
|
formatize (1.1.0)
|
||||||
RedCloth (~> 4.2)
|
RedCloth (~> 4.2)
|
||||||
actionpack (~> 3.0)
|
actionpack (~> 3.0)
|
||||||
bluecloth (~> 2.2)
|
bluecloth (~> 2.2)
|
||||||
gherkin (2.11.5)
|
gherkin (2.11.6)
|
||||||
json (>= 1.4.6)
|
json (>= 1.7.6)
|
||||||
hike (1.2.1)
|
hike (1.2.1)
|
||||||
htmlentities (4.3.1)
|
htmlentities (4.3.1)
|
||||||
i18n (0.6.1)
|
i18n (0.6.1)
|
||||||
journey (1.0.4)
|
journey (1.0.4)
|
||||||
jquery-rails (2.1.4)
|
jquery-rails (2.2.1)
|
||||||
railties (>= 3.0, < 5.0)
|
railties (>= 3.0, < 5.0)
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
json (1.7.7)
|
json (1.7.7)
|
||||||
libv8 (3.11.8.13)
|
libv8 (3.11.8.13)
|
||||||
libwebsocket (0.1.7.1)
|
|
||||||
addressable
|
|
||||||
websocket
|
|
||||||
mail (2.4.4)
|
mail (2.4.4)
|
||||||
i18n (>= 0.4.0)
|
i18n (>= 0.4.0)
|
||||||
mime-types (~> 1.16)
|
mime-types (~> 1.16)
|
||||||
treetop (~> 1.4.8)
|
treetop (~> 1.4.8)
|
||||||
mime-types (1.21)
|
mime-types (1.21)
|
||||||
multi_json (1.5.1)
|
multi_json (1.6.1)
|
||||||
mysql2 (0.3.11)
|
mysql2 (0.3.11)
|
||||||
nokogiri (1.5.6)
|
nokogiri (1.5.6)
|
||||||
polyglot (0.3.3)
|
polyglot (0.3.3)
|
||||||
|
@ -140,18 +136,19 @@ GEM
|
||||||
rspec-expectations (2.12.1)
|
rspec-expectations (2.12.1)
|
||||||
diff-lcs (~> 1.1.3)
|
diff-lcs (~> 1.1.3)
|
||||||
rubyzip (0.9.9)
|
rubyzip (0.9.9)
|
||||||
|
safe_yaml (0.7.1)
|
||||||
sanitize (2.0.3)
|
sanitize (2.0.3)
|
||||||
nokogiri (>= 1.4.4, < 1.6)
|
nokogiri (>= 1.4.4, < 1.6)
|
||||||
sass (3.2.5)
|
sass (3.2.5)
|
||||||
sass-rails (3.2.5)
|
sass-rails (3.2.6)
|
||||||
railties (~> 3.2.0)
|
railties (~> 3.2.0)
|
||||||
sass (>= 3.1.10)
|
sass (>= 3.1.10)
|
||||||
tilt (~> 1.3)
|
tilt (~> 1.3)
|
||||||
selenium-webdriver (2.27.2)
|
selenium-webdriver (2.29.0)
|
||||||
childprocess (>= 0.2.5)
|
childprocess (>= 0.2.5)
|
||||||
libwebsocket (~> 0.1.3)
|
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
rubyzip
|
rubyzip
|
||||||
|
websocket (~> 1.0.4)
|
||||||
simplecov (0.7.1)
|
simplecov (0.7.1)
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
simplecov-html (~> 0.7.1)
|
simplecov-html (~> 0.7.1)
|
||||||
|
@ -161,7 +158,7 @@ GEM
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
rack (~> 1.0)
|
rack (~> 1.0)
|
||||||
tilt (~> 1.1, != 1.3.0)
|
tilt (~> 1.1, != 1.3.0)
|
||||||
sqlite3 (1.3.6)
|
sqlite3 (1.3.7)
|
||||||
swf_fu (2.0.3)
|
swf_fu (2.0.3)
|
||||||
coffee-script
|
coffee-script
|
||||||
rails (>= 3.1)
|
rails (>= 3.1)
|
||||||
|
@ -170,10 +167,10 @@ GEM
|
||||||
ref
|
ref
|
||||||
thor (0.17.0)
|
thor (0.17.0)
|
||||||
tilt (1.3.3)
|
tilt (1.3.3)
|
||||||
timecop (0.5.7)
|
timecop (0.5.9.2)
|
||||||
tolk (1.3.4)
|
tolk (1.3.5)
|
||||||
|
safe_yaml
|
||||||
will_paginate
|
will_paginate
|
||||||
ya2yaml (~> 0.26)
|
|
||||||
treetop (1.4.12)
|
treetop (1.4.12)
|
||||||
polyglot
|
polyglot
|
||||||
polyglot (>= 0.3.1)
|
polyglot (>= 0.3.1)
|
||||||
|
@ -182,12 +179,11 @@ GEM
|
||||||
execjs (>= 0.3.0)
|
execjs (>= 0.3.0)
|
||||||
multi_json (~> 1.0, >= 1.0.2)
|
multi_json (~> 1.0, >= 1.0.2)
|
||||||
uniform_notifier (1.1.1)
|
uniform_notifier (1.1.1)
|
||||||
websocket (1.0.6)
|
websocket (1.0.7)
|
||||||
will_paginate (3.0.3)
|
will_paginate (3.0.4)
|
||||||
xpath (1.0.0)
|
xpath (1.0.0)
|
||||||
nokogiri (~> 1.3)
|
nokogiri (~> 1.3)
|
||||||
ya2yaml (0.31)
|
yard (0.8.4.1)
|
||||||
yard (0.8.3)
|
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
//= require tracks.js
|
//= require tracks.js
|
||||||
|
|
||||||
// Stuff in vendor/assets
|
// Stuff in vendor/assets
|
||||||
//= require jquery-ui-1.9.0.custom.min
|
//= require jquery-ui-1.10.0.custom.min
|
||||||
//= require jquery.ui.touch-punch.min
|
//= require jquery.ui.touch-punch.min
|
||||||
//= require jquery.blockUI
|
//= require jquery.blockUI
|
||||||
//= require jquery.cookie
|
//= require jquery.cookie
|
||||||
|
|
|
@ -70,7 +70,7 @@ var TracksForm = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* add behavior to clear the date both buttons for show_from and due */
|
/* add behavior to clear the date both buttons for show_from and due */
|
||||||
$(".date_clear").live('click', function() {
|
$(document).on("click", ".date_clear", function() {
|
||||||
$(this).prev().val('');
|
$(this).prev().val('');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ var TracksForm = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* submit todo form after entering new todo */
|
/* submit todo form after entering new todo */
|
||||||
$("button#todo_new_action_submit").live('click', function (ev) {
|
$(document).on("click", "button#todo_new_action_submit", function (ev) {
|
||||||
if ($('input#predecessor_input').val() != "")
|
if ($('input#predecessor_input').val() != "")
|
||||||
if (!confirm(i18n['todos.unresolved_dependency']))
|
if (!confirm(i18n['todos.unresolved_dependency']))
|
||||||
return false;
|
return false;
|
||||||
|
@ -89,14 +89,14 @@ var TracksForm = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* submit multi-todo form after entering multiple new todos */
|
/* submit multi-todo form after entering multiple new todos */
|
||||||
$("button#todo_multi_new_action_submit").live('click', function (ev) {
|
$(document).on("click", "button#todo_multi_new_action_submit", function (ev) {
|
||||||
if (TodoItems.askIfNewContextProvided('multi_', this))
|
if (TodoItems.askIfNewContextProvided('multi_', this))
|
||||||
submit_with_ajax_and_block_element('form#todo-form-multi-new-action', $(this));
|
submit_with_ajax_and_block_element('form#todo-form-multi-new-action', $(this));
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
enable_dependency_delete: function() {
|
enable_dependency_delete: function() {
|
||||||
$('a[class=icon_delete_dep]').live('click', function() {
|
$(document).on("click", 'a[class=icon_delete_dep]', function() {
|
||||||
var form = $(this).parents('form').get(0);
|
var form = $(this).parents('form').get(0);
|
||||||
var predecessor_list = $(form).find('input[name=predecessor_list]');
|
var predecessor_list = $(form).find('input[name=predecessor_list]');
|
||||||
var id_list = split( predecessor_list.val() );
|
var id_list = split( predecessor_list.val() );
|
||||||
|
@ -506,30 +506,30 @@ var TodoItems = {
|
||||||
},
|
},
|
||||||
setup_behavior: function() {
|
setup_behavior: function() {
|
||||||
/* show the notes of a todo */
|
/* show the notes of a todo */
|
||||||
$(".show_notes").live('click', function () {
|
$(document).on("click",".show_notes", function () {
|
||||||
$(this).next().toggle("fast");
|
$(this).next().toggle("fast");
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".show_successors").live('click', function () {
|
$(document).on("click",".show_successors", function () {
|
||||||
$(this).next().toggle("fast");
|
$(this).next().toggle("fast");
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
/* set behavior for star icon */
|
/* set behavior for star icon */
|
||||||
$(".item-container a.star_item").live('click', function (ev){
|
$(document).on("click", ".item-container a.star_item", function (ev){
|
||||||
put_with_ajax_and_block_element(this.href, $(this));
|
put_with_ajax_and_block_element(this.href, $(this));
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
/* set behavior for toggle checkboxes for Recurring Todos */
|
/* set behavior for toggle checkboxes for Recurring Todos */
|
||||||
$(".item-container input.item-checkbox").live('click', function(ev){
|
$(document).on("click", ".item-container input.item-checkbox", function(ev){
|
||||||
put_with_ajax_and_block_element(this.value, $(this).parents(".item-container"));
|
put_with_ajax_and_block_element(this.value, $(this).parents(".item-container"));
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
/* set behavior for edit icon */
|
/* set behavior for edit icon */
|
||||||
$(".item-container a.edit_item").live('click', function (ev){
|
$(document).on("click", ".item-container a.edit_item", function (ev){
|
||||||
var ajax_options = default_ajax_options_for_scripts('GET', this.href, $(this).parents('.item-container'));
|
var ajax_options = default_ajax_options_for_scripts('GET', this.href, $(this).parents('.item-container'));
|
||||||
var id = this.id.substr(15);
|
var id = this.id.substr(15);
|
||||||
ajax_options.complete.push( function(){
|
ajax_options.complete.push( function(){
|
||||||
|
@ -540,7 +540,7 @@ var TodoItems = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* delete button to delete a todo from the list */
|
/* delete button to delete a todo from the list */
|
||||||
$('.item-container a.icon_delete_item').live('click', function(evt){
|
$(document).on("click",".item-container a.icon_delete_item", function(evt){
|
||||||
var confirm_message = $(this).attr("x_confirm_message")
|
var confirm_message = $(this).attr("x_confirm_message")
|
||||||
if(confirm(confirm_message)){
|
if(confirm(confirm_message)){
|
||||||
delete_with_ajax_and_block_element(this.href, $(this).parents('.item-container'));
|
delete_with_ajax_and_block_element(this.href, $(this).parents('.item-container'));
|
||||||
|
@ -549,13 +549,13 @@ var TodoItems = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* submit todo form after edit */
|
/* submit todo form after edit */
|
||||||
$("form.edit_todo_form button.positive").live('click', function (ev) {
|
$(document).on("click","form.edit_todo_form button.positive", function(evt) {
|
||||||
submit_with_ajax_and_block_element('form.edit_todo_form', $(this));
|
submit_with_ajax_and_block_element('form.edit_todo_form', $(this));
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
// for cancelling edit todo form
|
// for cancelling edit todo form
|
||||||
$('form.edit_todo_form a.negative').live('click', function(){
|
$(document).on("click",'form.edit_todo_form a.negative', function(){
|
||||||
$(this).parents('.edit-form').fadeOut(200, function () {
|
$(this).parents('.edit-form').fadeOut(200, function () {
|
||||||
$(this).parents('.list').find('.project').fadeIn(500);
|
$(this).parents('.list').find('.project').fadeIn(500);
|
||||||
$(this).parents('.container').find('.item-show').fadeIn(500);
|
$(this).parents('.container').find('.item-show').fadeIn(500);
|
||||||
|
@ -563,7 +563,7 @@ var TodoItems = {
|
||||||
});
|
});
|
||||||
|
|
||||||
// defer a todo
|
// defer a todo
|
||||||
$(".item-container a.icon_defer_item").live('click', function(ev){
|
$(document).on("click",".item-container a.icon_defer_item", function(ev){
|
||||||
if ($(this).attr("x_defer_alert") == "true")
|
if ($(this).attr("x_defer_alert") == "true")
|
||||||
alert ($(this).attr("x_defer_date_after_due_date"));
|
alert ($(this).attr("x_defer_date_after_due_date"));
|
||||||
else
|
else
|
||||||
|
@ -572,7 +572,7 @@ var TodoItems = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* delete button to delete a dependency from the list */
|
/* delete button to delete a dependency from the list */
|
||||||
$('.item-container a.delete_dependency_button').live('click', function(evt){
|
$(document).on("click",'.item-container a.delete_dependency_button', function(evt){
|
||||||
var predecessor_id=$(this).attr("x_predecessors_id");
|
var predecessor_id=$(this).attr("x_predecessors_id");
|
||||||
var ajax_options = default_ajax_options_for_scripts('DELETE', this.href, $(this).parents('.item-container'));
|
var ajax_options = default_ajax_options_for_scripts('DELETE', this.href, $(this).parents('.item-container'));
|
||||||
ajax_options.data += "&predecessor="+predecessor_id
|
ajax_options.data += "&predecessor="+predecessor_id
|
||||||
|
@ -609,7 +609,7 @@ var ProjectItems = {
|
||||||
var UsersPage = {
|
var UsersPage = {
|
||||||
setup_behavior: function() {
|
setup_behavior: function() {
|
||||||
/* delete button to delete a user from the list */
|
/* delete button to delete a user from the list */
|
||||||
$('a.delete_user_button').live('click', function(evt){
|
$(document).on("click",'a.delete_user_button', function(evt){
|
||||||
var confirm_message = $(this).attr("x_confirm_message")
|
var confirm_message = $(this).attr("x_confirm_message")
|
||||||
if(confirm(confirm_message)){
|
if(confirm(confirm_message)){
|
||||||
delete_with_ajax_and_block_element(this.href, $(this).parents('.project'));
|
delete_with_ajax_and_block_element(this.href, $(this).parents('.project'));
|
||||||
|
@ -704,7 +704,7 @@ var ProjectListPage = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* alphabetize project list */
|
/* alphabetize project list */
|
||||||
$('.alphabetize_link').live('click', function(evt){
|
$(document).on("click",'.alphabetize_link', function(evt) {
|
||||||
var confirm_message = $(this).attr("x_confirm_message")
|
var confirm_message = $(this).attr("x_confirm_message")
|
||||||
if(confirm(confirm_message)){
|
if(confirm(confirm_message)){
|
||||||
post_with_ajax_and_block_element(this.href, $(this).parents('.alpha_sort'));
|
post_with_ajax_and_block_element(this.href, $(this).parents('.alpha_sort'));
|
||||||
|
@ -722,7 +722,7 @@ var ProjectListPage = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* delete button to delete a project from the list */
|
/* delete button to delete a project from the list */
|
||||||
$('a.delete_project_button').live('click', function(evt){
|
$(document).on("click",'a.delete_project_button', function(evt){
|
||||||
var confirm_message = $(this).attr("x_confirm_message")
|
var confirm_message = $(this).attr("x_confirm_message")
|
||||||
if(confirm(confirm_message)){
|
if(confirm(confirm_message)){
|
||||||
delete_with_ajax_and_block_element(this.href, $(this).parents('.project'));
|
delete_with_ajax_and_block_element(this.href, $(this).parents('.project'));
|
||||||
|
@ -731,21 +731,21 @@ var ProjectListPage = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* set behavior for edit project settings link in both projects list page and project page */
|
/* set behavior for edit project settings link in both projects list page and project page */
|
||||||
$("a.project_edit_settings").live('click', function (evt) {
|
$(document).on("click","a.project_edit_settings", function (evt) {
|
||||||
$(this).parent().parent().addClass('project-edit-current'); /* mark project in list */
|
$(this).parent().parent().addClass('project-edit-current'); /* mark project in list */
|
||||||
get_with_ajax_and_block_element(this.href, $(this).parent().parent());
|
get_with_ajax_and_block_element(this.href, $(this).parent().parent());
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
/* submit project form after edit */
|
/* submit project form after edit */
|
||||||
$("form.edit-project-form button.positive").live('click', function (ev) {
|
$(document).on("click", "form.edit-project-form button.positive", function (ev) {
|
||||||
$('div#project_name').editable('enable');
|
$('div#project_name').editable('enable');
|
||||||
submit_with_ajax_and_block_element('form.edit-project-form', $(this));
|
submit_with_ajax_and_block_element('form.edit-project-form', $(this));
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
/* cancel edit project form */
|
/* cancel edit project form */
|
||||||
$('form.edit-project-form a.negative').live('click', function(){
|
$(document).on("click",'form.edit-project-form a.negative', function(){
|
||||||
$('div#project_name').editable('enable');
|
$('div#project_name').editable('enable');
|
||||||
$(this).parents('.edit-form').fadeOut(200, function () {
|
$(this).parents('.edit-form').fadeOut(200, function () {
|
||||||
$(this).parents('.project-edit-current').removeClass('project-edit-current');
|
$(this).parents('.project-edit-current').removeClass('project-edit-current');
|
||||||
|
@ -755,7 +755,7 @@ var ProjectListPage = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* submit project form after entering new project */
|
/* submit project form after entering new project */
|
||||||
$("form#project_form button.positive").live('click', function (ev) {
|
$(document).on("click","form#project_form button.positive", function(evt) {
|
||||||
submit_with_ajax_and_block_element('form#project_form', $(this));
|
submit_with_ajax_and_block_element('form#project_form', $(this));
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
@ -820,7 +820,7 @@ var ContextListPage = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* delete a context using the x button */
|
/* delete a context using the x button */
|
||||||
$('a.delete_context_button').live('click', function(evt){
|
$(document).on("click",'a.delete_context_button', function(evt){
|
||||||
var confirm_message = $(this).attr("x_confirm_message")
|
var confirm_message = $(this).attr("x_confirm_message")
|
||||||
if(confirm(confirm_message)){
|
if(confirm(confirm_message)){
|
||||||
delete_with_ajax_and_block_element(this.href, $(this).parents('.context'));
|
delete_with_ajax_and_block_element(this.href, $(this).parents('.context'));
|
||||||
|
@ -829,19 +829,19 @@ var ContextListPage = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* set behavior for edit context settings link in projects list page and project page */
|
/* set behavior for edit context settings link in projects list page and project page */
|
||||||
$("a.context_edit_settings").live('click', function (ev) {
|
$(document).on("click","a.context_edit_settings", function(evt) {
|
||||||
get_with_ajax_and_block_element(this.href, $(this).parent().parent());
|
get_with_ajax_and_block_element(this.href, $(this).parent().parent());
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
/* submit form when editing a context */
|
/* submit form when editing a context */
|
||||||
$("form.edit-context-form button.positive").live('click', function (ev) {
|
$(document).on("click","form.edit-context-form button.positive", function(evt) {
|
||||||
submit_with_ajax_and_block_element('form.edit-context-form', $(this));
|
submit_with_ajax_and_block_element('form.edit-context-form', $(this));
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
/* submit form for new context in sidebar */
|
/* submit form for new context in sidebar */
|
||||||
$("form#context-form button.positive").live('click', function (ev) {
|
$(document).on("click","form#context-form button.positive", function(evt) {
|
||||||
submit_with_ajax_and_block_element('form#context-form', $(this));
|
submit_with_ajax_and_block_element('form#context-form', $(this));
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
@ -867,13 +867,13 @@ var ContextListPage = {
|
||||||
|
|
||||||
var IntegrationsPage = {
|
var IntegrationsPage = {
|
||||||
setup_behavior: function() {
|
setup_behavior: function() {
|
||||||
$('#applescript1-contexts').live('change', function(){
|
$(document).on("change",'#applescript1-contexts', function(){
|
||||||
IntegrationsPage.get_script_for_context("#applescript1", "get_applescript1", this.value);
|
IntegrationsPage.get_script_for_context("#applescript1", "get_applescript1", this.value);
|
||||||
});
|
});
|
||||||
$('#applescript2-contexts').live('change', function(){
|
$(document).on("change",'#applescript2-contexts', function(){
|
||||||
IntegrationsPage.get_script_for_context("#applescript2", "get_applescript2", this.value);
|
IntegrationsPage.get_script_for_context("#applescript2", "get_applescript2", this.value);
|
||||||
});
|
});
|
||||||
$('#quicksilver-contexts').live('change', function(){
|
$(document).on("change",'#quicksilver-contexts', function(){
|
||||||
IntegrationsPage.get_script_for_context("#quicksilver", "get_quicksilver_applescript", this.value)
|
IntegrationsPage.get_script_for_context("#quicksilver", "get_quicksilver_applescript", this.value)
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -903,14 +903,14 @@ var FeedsPage = {
|
||||||
var NotesPage = {
|
var NotesPage = {
|
||||||
setup_behavior: function() {
|
setup_behavior: function() {
|
||||||
/* Add note */
|
/* Add note */
|
||||||
$(".add_note_link a").live('click', function(){
|
$(document).on("click",".add_note_link a", function(){
|
||||||
$('#new-note').show();
|
$('#new-note').show();
|
||||||
$('textarea#note_body').val('');
|
$('textarea#note_body').val('');
|
||||||
$('textarea#note_body').focus();
|
$('textarea#note_body').focus();
|
||||||
});
|
});
|
||||||
|
|
||||||
/* delete button for note */
|
/* delete button for note */
|
||||||
$('a.delete_note_button').live('click', function(){
|
$(document).on("click",'a.delete_note_button', function(){
|
||||||
var confirm_message = $(this).attr("x_confirm_message")
|
var confirm_message = $(this).attr("x_confirm_message")
|
||||||
if(confirm(confirm_message)){
|
if(confirm(confirm_message)){
|
||||||
delete_with_ajax_and_block_element(this.href, $(this).parents('.project_notes'));
|
delete_with_ajax_and_block_element(this.href, $(this).parents('.project_notes'));
|
||||||
|
@ -919,7 +919,7 @@ var NotesPage = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* edit button for note */
|
/* edit button for note */
|
||||||
$('a.note_edit_settings').live('click', function(){
|
$(document).on("click",'a.note_edit_settings', function(){
|
||||||
var dom_id = this.id.substr(10);
|
var dom_id = this.id.substr(10);
|
||||||
$('#'+dom_id).toggle();
|
$('#'+dom_id).toggle();
|
||||||
$('#edit_'+dom_id).show();
|
$('#edit_'+dom_id).show();
|
||||||
|
@ -928,7 +928,7 @@ var NotesPage = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* cancel button when editing a note */
|
/* cancel button when editing a note */
|
||||||
$('.edit-note-form a.negative').live('click', function(){
|
$(document).on("click",'.edit-note-form a.negative', function(){
|
||||||
var dom_id = this.id.substr(14);
|
var dom_id = this.id.substr(14);
|
||||||
/* dom_id == 'note_XX' on notes page and just 'note' on project page */
|
/* dom_id == 'note_XX' on notes page and just 'note' on project page */
|
||||||
if (dom_id == 'note') {
|
if (dom_id == 'note') {
|
||||||
|
@ -941,7 +941,7 @@ var NotesPage = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* update button when editing a note */
|
/* update button when editing a note */
|
||||||
$("form.edit-note-form button.positive").live('click', function (ev) {
|
$(document).on("click","form.edit-note-form button.positive", function(evt) {
|
||||||
submit_with_ajax_and_block_element($(this).parents('form.edit-note-form'), $(this));
|
submit_with_ajax_and_block_element($(this).parents('form.edit-note-form'), $(this));
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
@ -968,7 +968,7 @@ var RecurringTodosPage = {
|
||||||
},
|
},
|
||||||
setup_behavior: function() {
|
setup_behavior: function() {
|
||||||
/* add new recurring todo plus-button in sidebar */
|
/* add new recurring todo plus-button in sidebar */
|
||||||
$("#add-new-recurring-todo").live('click', function(){
|
$(document).on("click","#add-new-recurring-todo", function(){
|
||||||
$( "#new-recurring-todo" ).dialog( "open" );
|
$( "#new-recurring-todo" ).dialog( "open" );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -999,7 +999,7 @@ var RecurringTodosPage = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* change recurring period radio input on new form */
|
/* change recurring period radio input on new form */
|
||||||
$("#recurring_period input").live('click', function(){
|
$(document).on("click","#recurring_period input", function(){
|
||||||
RecurringTodosPage.hide_all_recurring();
|
RecurringTodosPage.hide_all_recurring();
|
||||||
$('#recurring_'+this.id.split('_')[4]).show();
|
$('#recurring_'+this.id.split('_')[4]).show();
|
||||||
});
|
});
|
||||||
|
@ -1032,19 +1032,19 @@ var RecurringTodosPage = {
|
||||||
});
|
});
|
||||||
|
|
||||||
/* change recurring period radio input on edit form */
|
/* change recurring period radio input on edit form */
|
||||||
$("#recurring_edit_period input").live('click', function(){
|
$(document).on("click","#recurring_edit_period input", function(){
|
||||||
RecurringTodosPage.hide_all_edit_recurring();
|
RecurringTodosPage.hide_all_edit_recurring();
|
||||||
$('#recurring_edit_'+this.id.split('_')[5]).show();
|
$('#recurring_edit_'+this.id.split('_')[5]).show();
|
||||||
});
|
});
|
||||||
|
|
||||||
/* set behavior for edit recurring todo */
|
/* set behavior for edit recurring todo */
|
||||||
$(".item-container a.edit_icon").live('click', function (ev){
|
$(document).on("click",".item-container a.edit_icon", function(evt){
|
||||||
get_with_ajax_and_block_element(this.href, $(this).parents(".item-container"));
|
get_with_ajax_and_block_element(this.href, $(this).parents(".item-container"));
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
/* delete button to delete a todo from the list */
|
/* delete button to delete a todo from the list */
|
||||||
$('.item-container a.delete_icon').live('click', function(evt){
|
$(document).on("click",'.item-container a.delete_icon', function(evt){
|
||||||
var confirm_message = $(this).attr("x_confirm_message")
|
var confirm_message = $(this).attr("x_confirm_message")
|
||||||
if(confirm(confirm_message)){
|
if(confirm(confirm_message)){
|
||||||
delete_with_ajax_and_block_element(this.href, $(this).parents('.project'));
|
delete_with_ajax_and_block_element(this.href, $(this).parents('.project'));
|
||||||
|
@ -1082,7 +1082,7 @@ function setup_auto_refresh(interval){
|
||||||
}
|
}
|
||||||
setTimeout(refresh_page, interval);
|
setTimeout(refresh_page, interval);
|
||||||
$(function(){
|
$(function(){
|
||||||
$("input").live('keydown', function(){
|
$(document).on("keydown","input", function(){
|
||||||
field_touched = true;
|
field_touched = true;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1267,13 +1267,13 @@ function enable_rich_interaction(){
|
||||||
TodoItems.setup_drag_and_drop();
|
TodoItems.setup_drag_and_drop();
|
||||||
|
|
||||||
/* have to bind on keypress because of limitations of live() */
|
/* have to bind on keypress because of limitations of live() */
|
||||||
$('input[name=project_name]').live('keypress', function(){
|
$(document).on("keypress",'input[name=project_name]', function(){
|
||||||
$(this).bind('blur', project_defaults);
|
$(this).bind('blur', project_defaults);
|
||||||
});
|
});
|
||||||
$('input[name=context_name]').live('keypress', function(){
|
$(document).on("keypress",'input[name=context_name]', function(){
|
||||||
$(this).attr('edited', 'true');
|
$(this).attr('edited', 'true');
|
||||||
});
|
});
|
||||||
$('input[name=tag_list]').live('keypress', function(){
|
$(document).on("keypress",'input[name=tag_list]', function(){
|
||||||
$(this).attr('edited', 'true');
|
$(this).attr('edited', 'true');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1291,8 +1291,10 @@ function enable_rich_interaction(){
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
// fix for IE8. Without this checkboxes don't work AJAXy. See #1152
|
// fix for IE7/8. Without this checkboxes don't work AJAXy. See #1152
|
||||||
if($.browser.msie && ( ($.browser.version.substring(0, 2) == "8.") || ($.browser.version.substring(0, 2) == "7.") ) ) {
|
var msie8 = /MSIE 8.0/.test(navigator.userAgent);
|
||||||
|
var msie7 = /MSIE 7.0/.test(navigator.userAgent);
|
||||||
|
if(msie8 || msie7) {
|
||||||
$('body').bind('change', function() {
|
$('body').bind('change', function() {
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
|
@ -34,7 +34,7 @@ class ApplicationController < ActionController::Base
|
||||||
locale = locale || prefs.locale unless current_user.nil? # otherwise, the locale of the currently logged in user takes over
|
locale = locale || prefs.locale unless current_user.nil? # otherwise, the locale of the currently logged in user takes over
|
||||||
locale = locale || request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first if request.env['HTTP_ACCEPT_LANGUAGE']
|
locale = locale || request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first if request.env['HTTP_ACCEPT_LANGUAGE']
|
||||||
I18n.locale = locale.nil? ? I18n.default_locale : (I18n::available_locales.include?(locale.to_sym) ? locale : I18n.default_locale)
|
I18n.locale = locale.nil? ? I18n.default_locale : (I18n::available_locales.include?(locale.to_sym) ? locale : I18n.default_locale)
|
||||||
logger.debug("Selected '#{I18n.locale}' as locale")
|
# logger.debug("Selected '#{I18n.locale}' as locale")
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_session_expiration
|
def set_session_expiration
|
||||||
|
|
4
app/views/projects/update_project_name.js.erb
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<% if @saved -%>
|
||||||
|
TracksPages.page_notify('notice', '<%=t('projects.status_project_name_changed')%>', 5);
|
||||||
|
TracksForm.set_project_name("<%= escape_javascript(@project.name)%>");
|
||||||
|
<% end %>
|
|
@ -1,8 +0,0 @@
|
||||||
#TODO: is this dead code?
|
|
||||||
page['default_project_name_id'].value = @project.name
|
|
||||||
page['todo_project_name'].value = @project.name
|
|
||||||
|
|
||||||
page << "enable_rich_interaction();"
|
|
||||||
|
|
||||||
status_message = t('projects.status_project_name_changed')
|
|
||||||
page.notify :notice, status_message, 5.0
|
|
|
@ -13,6 +13,8 @@ end
|
||||||
|
|
||||||
When /^I edit the context to rename it to "([^\"]*)"$/ do |new_name|
|
When /^I edit the context to rename it to "([^\"]*)"$/ do |new_name|
|
||||||
find("a#link_edit_context_#{@context.id}").click
|
find("a#link_edit_context_#{@context.id}").click
|
||||||
|
|
||||||
|
# wait for the form to appear (which included a submit button)
|
||||||
page.should have_css("button#submit_context_#{@context.id}", :visible=>true)
|
page.should have_css("button#submit_context_#{@context.id}", :visible=>true)
|
||||||
|
|
||||||
within "div.edit-form" do
|
within "div.edit-form" do
|
||||||
|
@ -21,6 +23,8 @@ When /^I edit the context to rename it to "([^\"]*)"$/ do |new_name|
|
||||||
end
|
end
|
||||||
|
|
||||||
# wait for the form to go away
|
# wait for the form to go away
|
||||||
|
page.should_not have_css("button#submit_context_#{@context.id}", :visible => true)
|
||||||
|
# wait for the changed context to appear
|
||||||
page.should have_css("a#link_edit_context_#{@context.id}", :visible=> true)
|
page.should have_css("a#link_edit_context_#{@context.id}", :visible=> true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -133,9 +133,11 @@ end
|
||||||
|
|
||||||
When /^I try to edit the project name to "([^\"]*)"$/ do |new_title|
|
When /^I try to edit the project name to "([^\"]*)"$/ do |new_title|
|
||||||
edit_project_no_wait(@project) do
|
edit_project_no_wait(@project) do
|
||||||
|
within "form.edit-project-form" do
|
||||||
fill_in "project[name]", :with => new_title
|
fill_in "project[name]", :with => new_title
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
When /^I edit the default context to "([^"]*)"$/ do |default_context|
|
When /^I edit the default context to "([^"]*)"$/ do |default_context|
|
||||||
edit_project(@project) do
|
edit_project(@project) do
|
||||||
|
@ -202,15 +204,20 @@ When /^I edit project settings and mark the project as reviewed$/ do
|
||||||
end
|
end
|
||||||
|
|
||||||
When /^I add a note "([^"]*)" to the project$/ do |note_body|
|
When /^I add a note "([^"]*)" to the project$/ do |note_body|
|
||||||
click_link "Add a note"
|
|
||||||
page.should have_css "div.widgets button#submit_note"
|
|
||||||
fill_in "note[body]", :with => note_body
|
|
||||||
click_button "Add note"
|
|
||||||
|
|
||||||
submit_button = "div.widgets button#submit_note"
|
submit_button = "div.widgets button#submit_note"
|
||||||
|
|
||||||
|
click_link "Add a note"
|
||||||
|
page.should have_css submit_button
|
||||||
|
fill_in "note[body]", :with => note_body
|
||||||
|
|
||||||
elem = find(submit_button)
|
elem = find(submit_button)
|
||||||
elem.should_not be_nil # form is hidden
|
elem.should_not be_nil
|
||||||
elem.should_not be_visible
|
elem.click
|
||||||
|
|
||||||
|
wait_until do
|
||||||
|
!elem.visible?
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
When /^I click on the first note icon$/ do
|
When /^I click on the first note icon$/ do
|
||||||
|
@ -248,6 +255,7 @@ Then /^I should be able to change the project name in place$/ do
|
||||||
# Note that this is not changing the project name
|
# Note that this is not changing the project name
|
||||||
page.should have_css("div#project_name>form>input")
|
page.should have_css("div#project_name>form>input")
|
||||||
page.find("div#project_name > form > button[type=cancel]").click
|
page.find("div#project_name > form > button[type=cancel]").click
|
||||||
|
page.should_not have_css("div#project_name>form>input")
|
||||||
end
|
end
|
||||||
|
|
||||||
Then /^I should not be able to change the project name in place$/ do
|
Then /^I should not be able to change the project name in place$/ do
|
||||||
|
|
|
@ -7,6 +7,7 @@ When /^I mark "([^"]*)" as complete$/ do |action_description|
|
||||||
check "mark_complete_#{todo.id}"
|
check "mark_complete_#{todo.id}"
|
||||||
|
|
||||||
wait_for_ajax
|
wait_for_ajax
|
||||||
|
wait_for_animations_to_end
|
||||||
end
|
end
|
||||||
|
|
||||||
When /^I mark "([^"]*)" as uncompleted$/ do |action_description|
|
When /^I mark "([^"]*)" as uncompleted$/ do |action_description|
|
||||||
|
@ -16,6 +17,7 @@ When /^I mark "([^"]*)" as uncompleted$/ do |action_description|
|
||||||
uncheck "mark_complete_#{todo.id}"
|
uncheck "mark_complete_#{todo.id}"
|
||||||
|
|
||||||
wait_for_ajax
|
wait_for_ajax
|
||||||
|
wait_for_animations_to_end
|
||||||
end
|
end
|
||||||
|
|
||||||
When /^I mark the completed todo "([^"]*)" active$/ do |action_description|
|
When /^I mark the completed todo "([^"]*)" active$/ do |action_description|
|
||||||
|
@ -68,6 +70,8 @@ When /I change the (.*) field of "([^\"]*)" to "([^\"]*)"$/ do |field_name, todo
|
||||||
open_edit_form_for(todo)
|
open_edit_form_for(todo)
|
||||||
within "form.edit_todo_form" do
|
within "form.edit_todo_form" do
|
||||||
fill_in "#{field_name}", :with => new_value
|
fill_in "#{field_name}", :with => new_value
|
||||||
|
# force blur event
|
||||||
|
page.execute_script("$('form.edit_todo_form input.#{field_name}_todo_#{todo.id}').blur();")
|
||||||
end
|
end
|
||||||
submit_edit_todo_form(todo)
|
submit_edit_todo_form(todo)
|
||||||
wait_for_ajax
|
wait_for_ajax
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
# newer version of cucumber-rails. Consider adding your own code to a new file
|
# newer version of cucumber-rails. Consider adding your own code to a new file
|
||||||
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
|
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
|
||||||
# files.
|
# files.
|
||||||
|
require 'simplecov'
|
||||||
|
SimpleCov.start 'rails'
|
||||||
|
|
||||||
require 'cucumber/rails'
|
require 'cucumber/rails'
|
||||||
|
|
||||||
|
@ -56,4 +58,3 @@ end
|
||||||
# The :transaction strategy is faster, but might give you threading problems.
|
# The :transaction strategy is faster, but might give you threading problems.
|
||||||
# See https://github.com/cucumber/cucumber-rails/blob/master/features/choose_javascript_database_strategy.feature
|
# See https://github.com/cucumber/cucumber-rails/blob/master/features/choose_javascript_database_strategy.feature
|
||||||
Cucumber::Rails::Database.javascript_strategy = :truncation
|
Cucumber::Rails::Database.javascript_strategy = :truncation
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ Capybara.default_wait_time = 5
|
||||||
Capybara.javascript_driver = ENV["JS_DRIVER"] ? ENV["JS_DRIVER"].to_sym : :selenium
|
Capybara.javascript_driver = ENV["JS_DRIVER"] ? ENV["JS_DRIVER"].to_sym : :selenium
|
||||||
|
|
||||||
if Capybara.javascript_driver == :webkit
|
if Capybara.javascript_driver == :webkit
|
||||||
require 'capybara/webkit'
|
# require 'capybara/webkit'
|
||||||
end
|
end
|
||||||
|
|
||||||
if Capybara.javascript_driver == :selenium
|
if Capybara.javascript_driver == :selenium
|
||||||
|
|
|
@ -22,8 +22,13 @@ module TracksStepHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def open_edit_form_for(todo)
|
def open_edit_form_for(todo)
|
||||||
|
edit_link = "div#line_todo_#{todo.id} a#icon_edit_todo_#{todo.id}"
|
||||||
|
|
||||||
|
# make sure we can open the edit form
|
||||||
|
page.should have_css(edit_link)
|
||||||
|
|
||||||
# on calendar page there can be more than 1 occurance of a todo, so we select the first here
|
# on calendar page there can be more than 1 occurance of a todo, so we select the first here
|
||||||
all(:css, "div#line_todo_#{todo.id} a#icon_edit_todo_#{todo.id}")[0].click
|
all(:css, edit_link)[0].click
|
||||||
wait_for_ajax
|
wait_for_ajax
|
||||||
wait_for_animations_to_end
|
wait_for_animations_to_end
|
||||||
end
|
end
|
||||||
|
|
6
vendor/assets/javascripts/jquery-ui-1.10.0.custom.min.js
vendored
Normal file
226
vendor/assets/javascripts/jquery.blockUI.js
vendored
|
@ -1,10 +1,10 @@
|
||||||
/*!
|
/*!
|
||||||
* jQuery blockUI plugin
|
* jQuery blockUI plugin
|
||||||
* Version 2.38 (29-MAR-2011)
|
* Version 2.56.0-2013.01.31
|
||||||
* @requires jQuery v1.2.3 or later
|
* @requires jQuery v1.7 or later
|
||||||
*
|
*
|
||||||
* Examples at: http://malsup.com/jquery/block/
|
* Examples at: http://malsup.com/jquery/block/
|
||||||
* Copyright (c) 2007-2010 M. Alsup
|
* Copyright (c) 2007-2013 M. Alsup
|
||||||
* Dual licensed under the MIT and GPL licenses:
|
* Dual licensed under the MIT and GPL licenses:
|
||||||
* http://www.opensource.org/licenses/mit-license.php
|
* http://www.opensource.org/licenses/mit-license.php
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
@ -12,22 +12,21 @@
|
||||||
* Thanks to Amir-Hossein Sobhi for some excellent contributions!
|
* Thanks to Amir-Hossein Sobhi for some excellent contributions!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
;(function($) {
|
;(function() {
|
||||||
|
"use strict";
|
||||||
if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) {
|
|
||||||
alert('blockUI requires jQuery v1.2.3 or later! You are using v' + $.fn.jquery);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
function setup($) {
|
||||||
$.fn._fadeIn = $.fn.fadeIn;
|
$.fn._fadeIn = $.fn.fadeIn;
|
||||||
|
|
||||||
var noOp = function() {};
|
var noOp = $.noop || function() {};
|
||||||
|
|
||||||
// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
|
// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
|
||||||
// retarded userAgent strings on Vista)
|
// retarded userAgent strings on Vista)
|
||||||
|
var msie = /MSIE/.test(navigator.userAgent);
|
||||||
|
var ie6 = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent);
|
||||||
var mode = document.documentMode || 0;
|
var mode = document.documentMode || 0;
|
||||||
var setExpr = $.browser.msie && (($.browser.version < 8 && !mode) || mode < 8);
|
// var setExpr = msie && (($.browser.version < 8 && !mode) || mode < 8);
|
||||||
var ie6 = $.browser.msie && /MSIE 6.0/.test(navigator.userAgent) && !mode;
|
var setExpr = $.isFunction( document.createElement('div').style.setExpression );
|
||||||
|
|
||||||
// global $ methods for blocking/unblocking the entire page
|
// global $ methods for blocking/unblocking the entire page
|
||||||
$.blockUI = function(opts) { install(window, opts); };
|
$.blockUI = function(opts) { install(window, opts); };
|
||||||
|
@ -38,7 +37,7 @@ $.growlUI = function(title, message, timeout, onClose) {
|
||||||
var $m = $('<div class="growlUI"></div>');
|
var $m = $('<div class="growlUI"></div>');
|
||||||
if (title) $m.append('<h1>'+title+'</h1>');
|
if (title) $m.append('<h1>'+title+'</h1>');
|
||||||
if (message) $m.append('<h2>'+message+'</h2>');
|
if (message) $m.append('<h2>'+message+'</h2>');
|
||||||
if (timeout == undefined) timeout = 3000;
|
if (timeout === undefined) timeout = 3000;
|
||||||
$.blockUI({
|
$.blockUI({
|
||||||
message: $m, fadeIn: 700, fadeOut: 1000, centerY: false,
|
message: $m, fadeIn: 700, fadeOut: 1000, centerY: false,
|
||||||
timeout: timeout, showOverlay: false,
|
timeout: timeout, showOverlay: false,
|
||||||
|
@ -49,11 +48,20 @@ $.growlUI = function(title, message, timeout, onClose) {
|
||||||
|
|
||||||
// plugin method for blocking element content
|
// plugin method for blocking element content
|
||||||
$.fn.block = function(opts) {
|
$.fn.block = function(opts) {
|
||||||
return this.unblock({ fadeOut: 0 }).each(function() {
|
var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});
|
||||||
if ($.css(this,'position') == 'static')
|
this.each(function() {
|
||||||
|
var $el = $(this);
|
||||||
|
if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked'))
|
||||||
|
return;
|
||||||
|
$el.unblock({ fadeOut: 0 });
|
||||||
|
});
|
||||||
|
|
||||||
|
return this.each(function() {
|
||||||
|
if ($.css(this,'position') == 'static') {
|
||||||
this.style.position = 'relative';
|
this.style.position = 'relative';
|
||||||
if ($.browser.msie)
|
$(this).data('blockUI.static', true);
|
||||||
this.style.zoom = 1; // force 'hasLayout'
|
}
|
||||||
|
this.style.zoom = 1; // force 'hasLayout' in ie
|
||||||
install(this, opts);
|
install(this, opts);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -65,7 +73,7 @@ $.fn.unblock = function(opts) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
$.blockUI.version = 2.38; // 2nd generation blocking at no extra cost!
|
$.blockUI.version = 2.56; // 2nd generation blocking at no extra cost!
|
||||||
|
|
||||||
// override these in your code to change the default behavior and style
|
// override these in your code to change the default behavior and style
|
||||||
$.blockUI.defaults = {
|
$.blockUI.defaults = {
|
||||||
|
@ -107,6 +115,10 @@ $.blockUI.defaults = {
|
||||||
cursor: 'wait'
|
cursor: 'wait'
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// style to replace wait cursor before unblocking to correct issue
|
||||||
|
// of lingering wait cursor
|
||||||
|
cursorReset: 'default',
|
||||||
|
|
||||||
// styles applied when using $.growlUI
|
// styles applied when using $.growlUI
|
||||||
growlCSS: {
|
growlCSS: {
|
||||||
width: '350px',
|
width: '350px',
|
||||||
|
@ -126,6 +138,7 @@ $.blockUI.defaults = {
|
||||||
|
|
||||||
// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
|
// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
|
||||||
// (hat tip to Jorge H. N. de Vasconcelos)
|
// (hat tip to Jorge H. N. de Vasconcelos)
|
||||||
|
/*jshint scripturl:true */
|
||||||
iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
|
iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
|
||||||
|
|
||||||
// force usage of iframe in non-IE browsers (handy for blocking applets)
|
// force usage of iframe in non-IE browsers (handy for blocking applets)
|
||||||
|
@ -166,7 +179,8 @@ $.blockUI.defaults = {
|
||||||
focusInput: true,
|
focusInput: true,
|
||||||
|
|
||||||
// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
|
// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
|
||||||
applyPlatformOpacityRules: true,
|
// no longer needed in 2012
|
||||||
|
// applyPlatformOpacityRules: true,
|
||||||
|
|
||||||
// callback method invoked when fadeIn has completed and blocking message is visible
|
// callback method invoked when fadeIn has completed and blocking message is visible
|
||||||
onBlock: null,
|
onBlock: null,
|
||||||
|
@ -177,11 +191,18 @@ $.blockUI.defaults = {
|
||||||
// onUnblock(element, options)
|
// onUnblock(element, options)
|
||||||
onUnblock: null,
|
onUnblock: null,
|
||||||
|
|
||||||
|
// callback method invoked when the overlay area is clicked.
|
||||||
|
// setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.
|
||||||
|
onOverlayClick: null,
|
||||||
|
|
||||||
// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
|
// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
|
||||||
quirksmodeOffsetHack: 4,
|
quirksmodeOffsetHack: 4,
|
||||||
|
|
||||||
// class name of the message block
|
// class name of the message block
|
||||||
blockMsgClass: 'blockMsg'
|
blockMsgClass: 'blockMsg',
|
||||||
|
|
||||||
|
// if it is already blocked, then ignore it (don't unblock and reblock)
|
||||||
|
ignoreIfBlocked: false
|
||||||
};
|
};
|
||||||
|
|
||||||
// private data and functions follow...
|
// private data and functions follow...
|
||||||
|
@ -190,12 +211,20 @@ var pageBlock = null;
|
||||||
var pageBlockEls = [];
|
var pageBlockEls = [];
|
||||||
|
|
||||||
function install(el, opts) {
|
function install(el, opts) {
|
||||||
|
var css, themedCSS;
|
||||||
var full = (el == window);
|
var full = (el == window);
|
||||||
var msg = opts && opts.message !== undefined ? opts.message : undefined;
|
var msg = (opts && opts.message !== undefined ? opts.message : undefined);
|
||||||
opts = $.extend({}, $.blockUI.defaults, opts || {});
|
opts = $.extend({}, $.blockUI.defaults, opts || {});
|
||||||
|
|
||||||
|
if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked'))
|
||||||
|
return;
|
||||||
|
|
||||||
opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
|
opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
|
||||||
var css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
|
css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
|
||||||
var themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
|
if (opts.onOverlayClick)
|
||||||
|
opts.overlayCSS.cursor = 'pointer';
|
||||||
|
|
||||||
|
themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
|
||||||
msg = msg === undefined ? opts.message : msg;
|
msg = msg === undefined ? opts.message : msg;
|
||||||
|
|
||||||
// remove the current block (if there is one)
|
// remove the current block (if there is one)
|
||||||
|
@ -217,39 +246,45 @@ function install(el, opts) {
|
||||||
data.parent.removeChild(node);
|
data.parent.removeChild(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$(el).data('blockUI.onUnblock', opts.onUnblock);
|
||||||
var z = opts.baseZ;
|
var z = opts.baseZ;
|
||||||
|
|
||||||
// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
|
// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
|
||||||
// layer1 is the iframe layer which is used to supress bleed through of underlying content
|
// layer1 is the iframe layer which is used to supress bleed through of underlying content
|
||||||
// layer2 is the overlay layer which has opacity and a wait cursor (by default)
|
// layer2 is the overlay layer which has opacity and a wait cursor (by default)
|
||||||
// layer3 is the message content that is displayed while blocking
|
// layer3 is the message content that is displayed while blocking
|
||||||
|
var lyr1, lyr2, lyr3, s;
|
||||||
|
if (msie || opts.forceIframe)
|
||||||
|
lyr1 = $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>');
|
||||||
|
else
|
||||||
|
lyr1 = $('<div class="blockUI" style="display:none"></div>');
|
||||||
|
|
||||||
var lyr1 = ($.browser.msie || opts.forceIframe)
|
if (opts.theme)
|
||||||
? $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>')
|
lyr2 = $('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+ (z++) +';display:none"></div>');
|
||||||
: $('<div class="blockUI" style="display:none"></div>');
|
else
|
||||||
|
lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
|
||||||
|
|
||||||
var lyr2 = opts.theme
|
|
||||||
? $('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+ (z++) +';display:none"></div>')
|
|
||||||
: $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
|
|
||||||
|
|
||||||
var lyr3, s;
|
|
||||||
if (opts.theme && full) {
|
if (opts.theme && full) {
|
||||||
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+z+';display:none;position:fixed">' +
|
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:fixed">';
|
||||||
'<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || ' ')+'</div>' +
|
if ( opts.title ) {
|
||||||
'<div class="ui-widget-content ui-dialog-content"></div>' +
|
s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || ' ')+'</div>';
|
||||||
'</div>';
|
}
|
||||||
|
s += '<div class="ui-widget-content ui-dialog-content"></div>';
|
||||||
|
s += '</div>';
|
||||||
}
|
}
|
||||||
else if (opts.theme) {
|
else if (opts.theme) {
|
||||||
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+z+';display:none;position:absolute">' +
|
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:absolute">';
|
||||||
'<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || ' ')+'</div>' +
|
if ( opts.title ) {
|
||||||
'<div class="ui-widget-content ui-dialog-content"></div>' +
|
s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || ' ')+'</div>';
|
||||||
'</div>';
|
}
|
||||||
|
s += '<div class="ui-widget-content ui-dialog-content"></div>';
|
||||||
|
s += '</div>';
|
||||||
}
|
}
|
||||||
else if (full) {
|
else if (full) {
|
||||||
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage" style="z-index:'+z+';display:none;position:fixed"></div>';
|
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage" style="z-index:'+(z+10)+';display:none;position:fixed"></div>';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement" style="z-index:'+z+';display:none;position:absolute"></div>';
|
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement" style="z-index:'+(z+10)+';display:none;position:absolute"></div>';
|
||||||
}
|
}
|
||||||
lyr3 = $(s);
|
lyr3 = $(s);
|
||||||
|
|
||||||
|
@ -264,12 +299,12 @@ function install(el, opts) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// style the overlay
|
// style the overlay
|
||||||
if (!opts.theme && (!opts.applyPlatformOpacityRules || !($.browser.mozilla && /Linux/.test(navigator.platform))))
|
if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)
|
||||||
lyr2.css(opts.overlayCSS);
|
lyr2.css(opts.overlayCSS);
|
||||||
lyr2.css('position', full ? 'fixed' : 'absolute');
|
lyr2.css('position', full ? 'fixed' : 'absolute');
|
||||||
|
|
||||||
// make iframe layer transparent in IE
|
// make iframe layer transparent in IE
|
||||||
if ($.browser.msie || opts.forceIframe)
|
if (msie || opts.forceIframe)
|
||||||
lyr1.css('opacity',0.0);
|
lyr1.css('opacity',0.0);
|
||||||
|
|
||||||
//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
|
//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
|
||||||
|
@ -286,28 +321,32 @@ function install(el, opts) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
|
// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
|
||||||
var expr = setExpr && (!$.boxModel || $('object,embed', full ? null : el).length > 0);
|
var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);
|
||||||
if (ie6 || expr) {
|
if (ie6 || expr) {
|
||||||
// give body 100% height
|
// give body 100% height
|
||||||
if (full && opts.allowBodyStretch && $.boxModel)
|
if (full && opts.allowBodyStretch && $.support.boxModel)
|
||||||
$('html,body').css('height','100%');
|
$('html,body').css('height','100%');
|
||||||
|
|
||||||
// fix ie6 issue when blocked element has a border width
|
// fix ie6 issue when blocked element has a border width
|
||||||
if ((ie6 || !$.boxModel) && !full) {
|
if ((ie6 || !$.support.boxModel) && !full) {
|
||||||
var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
|
var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
|
||||||
var fixT = t ? '(0 - '+t+')' : 0;
|
var fixT = t ? '(0 - '+t+')' : 0;
|
||||||
var fixL = l ? '(0 - '+l+')' : 0;
|
var fixL = l ? '(0 - '+l+')' : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// simulate fixed position
|
// simulate fixed position
|
||||||
$.each([lyr1,lyr2,lyr3], function(i,o) {
|
$.each(layers, function(i,o) {
|
||||||
var s = o[0].style;
|
var s = o[0].style;
|
||||||
s.position = 'absolute';
|
s.position = 'absolute';
|
||||||
if (i < 2) {
|
if (i < 2) {
|
||||||
full ? s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"')
|
if (full)
|
||||||
: s.setExpression('height','this.parentNode.offsetHeight + "px"');
|
s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"');
|
||||||
full ? s.setExpression('width','jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"')
|
else
|
||||||
: s.setExpression('width','this.parentNode.offsetWidth + "px"');
|
s.setExpression('height','this.parentNode.offsetHeight + "px"');
|
||||||
|
if (full)
|
||||||
|
s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"');
|
||||||
|
else
|
||||||
|
s.setExpression('width','this.parentNode.offsetWidth + "px"');
|
||||||
if (fixL) s.setExpression('left', fixL);
|
if (fixL) s.setExpression('left', fixL);
|
||||||
if (fixT) s.setExpression('top', fixT);
|
if (fixT) s.setExpression('top', fixT);
|
||||||
}
|
}
|
||||||
|
@ -316,7 +355,7 @@ function install(el, opts) {
|
||||||
s.marginTop = 0;
|
s.marginTop = 0;
|
||||||
}
|
}
|
||||||
else if (!opts.centerY && full) {
|
else if (!opts.centerY && full) {
|
||||||
var top = (opts.css && opts.css.top) ? parseInt(opts.css.top) : 0;
|
var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;
|
||||||
var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
|
var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
|
||||||
s.setExpression('top',expression);
|
s.setExpression('top',expression);
|
||||||
}
|
}
|
||||||
|
@ -333,7 +372,7 @@ function install(el, opts) {
|
||||||
$(msg).show();
|
$(msg).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($.browser.msie || opts.forceIframe) && opts.showOverlay)
|
if ((msie || opts.forceIframe) && opts.showOverlay)
|
||||||
lyr1.show(); // opacity is zero
|
lyr1.show(); // opacity is zero
|
||||||
if (opts.fadeIn) {
|
if (opts.fadeIn) {
|
||||||
var cb = opts.onBlock ? opts.onBlock : noOp;
|
var cb = opts.onBlock ? opts.onBlock : noOp;
|
||||||
|
@ -368,11 +407,14 @@ function install(el, opts) {
|
||||||
if (opts.timeout) {
|
if (opts.timeout) {
|
||||||
// auto-unblock
|
// auto-unblock
|
||||||
var to = setTimeout(function() {
|
var to = setTimeout(function() {
|
||||||
full ? $.unblockUI(opts) : $(el).unblock(opts);
|
if (full)
|
||||||
|
$.unblockUI(opts);
|
||||||
|
else
|
||||||
|
$(el).unblock(opts);
|
||||||
}, opts.timeout);
|
}, opts.timeout);
|
||||||
$(el).data('blockUI.timeout', to);
|
$(el).data('blockUI.timeout', to);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
// remove the block
|
// remove the block
|
||||||
function remove(el, opts) {
|
function remove(el, opts) {
|
||||||
|
@ -387,11 +429,24 @@ function remove(el, opts) {
|
||||||
opts = $.extend({}, $.blockUI.defaults, opts || {});
|
opts = $.extend({}, $.blockUI.defaults, opts || {});
|
||||||
bind(0, el, opts); // unbind events
|
bind(0, el, opts); // unbind events
|
||||||
|
|
||||||
|
if (opts.onUnblock === null) {
|
||||||
|
opts.onUnblock = $el.data('blockUI.onUnblock');
|
||||||
|
$el.removeData('blockUI.onUnblock');
|
||||||
|
}
|
||||||
|
|
||||||
var els;
|
var els;
|
||||||
if (full) // crazy selector to handle odd field errors in ie6/7
|
if (full) // crazy selector to handle odd field errors in ie6/7
|
||||||
els = $('body').children().filter('.blockUI').add('body > .blockUI');
|
els = $('body').children().filter('.blockUI').add('body > .blockUI');
|
||||||
else
|
else
|
||||||
els = $('.blockUI', el);
|
els = $el.find('>.blockUI');
|
||||||
|
|
||||||
|
// fix cursor issue
|
||||||
|
if ( opts.cursorReset ) {
|
||||||
|
if ( els.length > 1 )
|
||||||
|
els[1].style.cursor = opts.cursorReset;
|
||||||
|
if ( els.length > 2 )
|
||||||
|
els[2].style.cursor = opts.cursorReset;
|
||||||
|
}
|
||||||
|
|
||||||
if (full)
|
if (full)
|
||||||
pageBlock = pageBlockEls = null;
|
pageBlock = pageBlockEls = null;
|
||||||
|
@ -402,10 +457,11 @@ function remove(el, opts) {
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
reset(els, data, opts, el);
|
reset(els, data, opts, el);
|
||||||
};
|
}
|
||||||
|
|
||||||
// move blocking element back into the DOM where it started
|
// move blocking element back into the DOM where it started
|
||||||
function reset(els,data,opts,el) {
|
function reset(els,data,opts,el) {
|
||||||
|
var $el = $(el);
|
||||||
els.each(function(i,o) {
|
els.each(function(i,o) {
|
||||||
// remove via DOM calls so we don't lose event handlers
|
// remove via DOM calls so we don't lose event handlers
|
||||||
if (this.parentNode)
|
if (this.parentNode)
|
||||||
|
@ -417,12 +473,21 @@ function reset(els,data,opts,el) {
|
||||||
data.el.style.position = data.position;
|
data.el.style.position = data.position;
|
||||||
if (data.parent)
|
if (data.parent)
|
||||||
data.parent.appendChild(data.el);
|
data.parent.appendChild(data.el);
|
||||||
$(el).removeData('blockUI.history');
|
$el.removeData('blockUI.history');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($el.data('blockUI.static')) {
|
||||||
|
$el.css('position', 'static'); // #22
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof opts.onUnblock == 'function')
|
if (typeof opts.onUnblock == 'function')
|
||||||
opts.onUnblock(el,opts);
|
opts.onUnblock(el,opts);
|
||||||
};
|
|
||||||
|
// fix issue in Safari 6 where block artifacts remain until reflow
|
||||||
|
var body = $(document.body), w = body.width(), cssW = body[0].style.width;
|
||||||
|
body.width(w-1).width(w);
|
||||||
|
body[0].style.width = cssW;
|
||||||
|
}
|
||||||
|
|
||||||
// bind/unbind the handler
|
// bind/unbind the handler
|
||||||
function bind(b, el, opts) {
|
function bind(b, el, opts) {
|
||||||
|
@ -431,7 +496,7 @@ function bind(b, el, opts) {
|
||||||
// don't bother unbinding if there is nothing to unbind
|
// don't bother unbinding if there is nothing to unbind
|
||||||
if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
|
if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
|
||||||
return;
|
return;
|
||||||
if (!full)
|
|
||||||
$el.data('blockUI.isBlocked', b);
|
$el.data('blockUI.isBlocked', b);
|
||||||
|
|
||||||
// don't bind events when overlay is not in use or if bindEvents is false
|
// don't bind events when overlay is not in use or if bindEvents is false
|
||||||
|
@ -439,13 +504,16 @@ function bind(b, el, opts) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// bind anchors and inputs for mouse and key events
|
// bind anchors and inputs for mouse and key events
|
||||||
var events = 'mousedown mouseup keydown keypress';
|
var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove';
|
||||||
b ? $(document).bind(events, opts, handler) : $(document).unbind(events, handler);
|
if (b)
|
||||||
|
$(document).bind(events, opts, handler);
|
||||||
|
else
|
||||||
|
$(document).unbind(events, handler);
|
||||||
|
|
||||||
// former impl...
|
// former impl...
|
||||||
// var $e = $('a,:input');
|
// var $e = $('a,:input');
|
||||||
// b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
|
// b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
|
||||||
};
|
}
|
||||||
|
|
||||||
// event handler to suppress keyboard/mouse events when blocking
|
// event handler to suppress keyboard/mouse events when blocking
|
||||||
function handler(e) {
|
function handler(e) {
|
||||||
|
@ -456,19 +524,23 @@ function handler(e) {
|
||||||
var fwd = !e.shiftKey && e.target === els[els.length-1];
|
var fwd = !e.shiftKey && e.target === els[els.length-1];
|
||||||
var back = e.shiftKey && e.target === els[0];
|
var back = e.shiftKey && e.target === els[0];
|
||||||
if (fwd || back) {
|
if (fwd || back) {
|
||||||
setTimeout(function(){focus(back)},10);
|
setTimeout(function(){focus(back);},10);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var opts = e.data;
|
var opts = e.data;
|
||||||
|
var target = $(e.target);
|
||||||
|
if (target.hasClass('blockOverlay') && opts.onOverlayClick)
|
||||||
|
opts.onOverlayClick();
|
||||||
|
|
||||||
// allow events within the message content
|
// allow events within the message content
|
||||||
if ($(e.target).parents('div.' + opts.blockMsgClass).length > 0)
|
if (target.parents('div.' + opts.blockMsgClass).length > 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// allow events for content that is not being blocked
|
// allow events for content that is not being blocked
|
||||||
return $(e.target).parents().children().filter('div.blockUI').length == 0;
|
return target.parents().children().filter('div.blockUI').length === 0;
|
||||||
};
|
}
|
||||||
|
|
||||||
function focus(back) {
|
function focus(back) {
|
||||||
if (!pageBlockEls)
|
if (!pageBlockEls)
|
||||||
|
@ -476,7 +548,7 @@ function focus(back) {
|
||||||
var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
|
var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
|
||||||
if (e)
|
if (e)
|
||||||
e.focus();
|
e.focus();
|
||||||
};
|
}
|
||||||
|
|
||||||
function center(el, x, y) {
|
function center(el, x, y) {
|
||||||
var p = el.parentNode, s = el.style;
|
var p = el.parentNode, s = el.style;
|
||||||
|
@ -484,10 +556,20 @@ function center(el, x, y) {
|
||||||
var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
|
var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
|
||||||
if (x) s.left = l > 0 ? (l+'px') : '0';
|
if (x) s.left = l > 0 ? (l+'px') : '0';
|
||||||
if (y) s.top = t > 0 ? (t+'px') : '0';
|
if (y) s.top = t > 0 ? (t+'px') : '0';
|
||||||
};
|
}
|
||||||
|
|
||||||
function sz(el, p) {
|
function sz(el, p) {
|
||||||
return parseInt($.css(el,p))||0;
|
return parseInt($.css(el,p),10)||0;
|
||||||
};
|
}
|
||||||
|
|
||||||
})(jQuery);
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*global define:true */
|
||||||
|
if (typeof define === 'function' && define.amd && define.amd.jQuery) {
|
||||||
|
define(['jquery'], setup);
|
||||||
|
} else {
|
||||||
|
setup(jQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
130
vendor/assets/javascripts/superfish.js
vendored
|
@ -1,13 +1,12 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Superfish v1.4.8 - jQuery menu widget
|
* Superfish v1.5.3 - jQuery menu widget
|
||||||
* Copyright (c) 2008 Joel Birch
|
* Copyright (c) 2013 Joel Birch
|
||||||
*
|
*
|
||||||
* Dual licensed under the MIT and GPL licenses:
|
* Dual licensed under the MIT and GPL licenses:
|
||||||
* http://www.opensource.org/licenses/mit-license.php
|
* http://www.opensource.org/licenses/mit-license.php
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
*
|
*
|
||||||
* CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
;(function($){
|
;(function($){
|
||||||
|
@ -15,71 +14,110 @@
|
||||||
|
|
||||||
var sf = $.fn.superfish,
|
var sf = $.fn.superfish,
|
||||||
c = sf.c,
|
c = sf.c,
|
||||||
$arrow = $(['<span class="',c.arrowClass,'"> »</span>'].join('')),
|
$arrow = $('<span class="'+c.arrowClass+'"> »</span>'),
|
||||||
over = function(){
|
over = function(e){
|
||||||
var $$ = $(this), menu = getMenu($$);
|
var $$ = $(this), menu = getMenu($$);
|
||||||
|
if (e.type === 'mouseenter' || e.type==='focusin'){
|
||||||
|
$$.children('a').data('follow',true);
|
||||||
|
}
|
||||||
clearTimeout(menu.sfTimer);
|
clearTimeout(menu.sfTimer);
|
||||||
$$.showSuperfishUl().siblings().hideSuperfishUl();
|
$$.showSuperfishUl().siblings().hideSuperfishUl();
|
||||||
},
|
},
|
||||||
out = function(){
|
out = function(e){
|
||||||
var $$ = $(this), menu = getMenu($$), o = sf.op;
|
var $$ = $(this), menu = getMenu($$), o = sf.op;
|
||||||
clearTimeout(menu.sfTimer);
|
var close = function(){
|
||||||
menu.sfTimer=setTimeout(function(){
|
|
||||||
o.retainPath=($.inArray($$[0],o.$path)>-1);
|
o.retainPath=($.inArray($$[0],o.$path)>-1);
|
||||||
$$.hideSuperfishUl();
|
$$.hideSuperfishUl();
|
||||||
if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
|
if (o.$path.length && $$.parents('li.'+o.hoverClass).length<1){
|
||||||
},o.delay);
|
o.onIdle.call();
|
||||||
|
$.proxy(over,o.$path,e)();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (e.type !== 'mouseleave' && e.type !== 'focusout'){
|
||||||
|
close();
|
||||||
|
} else {
|
||||||
|
clearTimeout(menu.sfTimer);
|
||||||
|
menu.sfTimer=setTimeout(close,o.delay);
|
||||||
|
}
|
||||||
|
if (e.type === 'mouseleave' || e.type === 'focusout'){
|
||||||
|
$$.children('a').data('follow',false);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
getMenu = function($menu){
|
getMenu = function($child){
|
||||||
var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
|
if ($child.hasClass(c.menuClass)){
|
||||||
|
$.error('Superfish requires you to update to a version of hoverIntent that supports event-delegation, such as this one: https://github.com/joeldbirch/onHoverIntent');
|
||||||
|
}
|
||||||
|
var menu = $child.closest('.'+c.menuClass)[0];
|
||||||
sf.op = sf.o[menu.serial];
|
sf.op = sf.o[menu.serial];
|
||||||
return menu;
|
return menu;
|
||||||
},
|
},
|
||||||
|
applyHandlers = function($menu){
|
||||||
|
var targets = 'li:has(ul)';
|
||||||
|
if (!sf.op.useClick){
|
||||||
|
if ($.fn.hoverIntent && !sf.op.disableHI){
|
||||||
|
$menu.hoverIntent(over, out, targets);
|
||||||
|
} else {
|
||||||
|
$menu.on('mouseenter', targets, over);
|
||||||
|
$menu.on('mouseleave', targets, out);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$menu.on('focusin', targets, over);
|
||||||
|
$menu.on('focusout', targets, out);
|
||||||
|
$menu.on('click', 'a', clickHandler);
|
||||||
|
},
|
||||||
|
clickHandler = function(e){
|
||||||
|
var $a = $(this);
|
||||||
|
var $submenu = $a.next('ul');
|
||||||
|
var follow = $a.data('follow');
|
||||||
|
|
||||||
|
if ( $submenu.length && (sf.op.useClick || !follow) ){
|
||||||
|
e.preventDefault();
|
||||||
|
if ($submenu.is(':visible')){
|
||||||
|
$.proxy(out,$(this).parent(),e)();
|
||||||
|
} else {
|
||||||
|
$.proxy(over,$(this).parent(),e)();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
addArrows = function($li,o){
|
||||||
|
if (o.autoArrows) {
|
||||||
|
$li.children('a').each(function() {
|
||||||
|
addArrow( $(this) );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
|
addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
|
||||||
|
|
||||||
return this.each(function() {
|
return this.addClass(c.menuClass).each(function() {
|
||||||
var s = this.serial = sf.o.length;
|
var s = this.serial = sf.o.length;
|
||||||
var o = $.extend({},sf.defaults,op);
|
var o = $.extend({},sf.defaults,op);
|
||||||
o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
|
var $$ = $(this);
|
||||||
$(this).addClass([o.hoverClass,c.bcClass].join(' '))
|
var $liHasUl = $$.find('li:has(ul)');
|
||||||
|
o.$path = $$.find('li.'+o.pathClass).slice(0,o.pathLevels).each(function(){
|
||||||
|
$(this).addClass(o.hoverClass+' '+c.bcClass)
|
||||||
.filter('li:has(ul)').removeClass(o.pathClass);
|
.filter('li:has(ul)').removeClass(o.pathClass);
|
||||||
});
|
});
|
||||||
sf.o[s] = sf.op = o;
|
sf.o[s] = sf.op = o;
|
||||||
|
|
||||||
$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
|
addArrows($liHasUl,o);
|
||||||
if (o.autoArrows) addArrow( $('>a:first-child',this) );
|
applyHandlers($$);
|
||||||
})
|
|
||||||
.not('.'+c.bcClass)
|
$liHasUl.not('.'+c.bcClass).hideSuperfishUl();
|
||||||
.hideSuperfishUl();
|
|
||||||
|
|
||||||
var $a = $('a',this);
|
|
||||||
$a.each(function(i){
|
|
||||||
var $li = $a.eq(i).parents('li');
|
|
||||||
$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
|
|
||||||
});
|
|
||||||
o.onInit.call(this);
|
o.onInit.call(this);
|
||||||
|
|
||||||
}).each(function() {
|
|
||||||
var menuClasses = [c.menuClass];
|
|
||||||
if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
|
|
||||||
$(this).addClass(menuClasses.join(' '));
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
var sf = $.fn.superfish;
|
var sf = $.fn.superfish;
|
||||||
sf.o = [];
|
sf.o = [];
|
||||||
sf.op = {};
|
sf.op = {};
|
||||||
sf.IE7fix = function(){
|
|
||||||
var o = sf.op;
|
|
||||||
if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
|
|
||||||
this.toggleClass(sf.c.shadowClass+'-off');
|
|
||||||
};
|
|
||||||
sf.c = {
|
sf.c = {
|
||||||
bcClass : 'sf-breadcrumb',
|
bcClass : 'sf-breadcrumb',
|
||||||
menuClass : 'sf-js-enabled',
|
menuClass : 'sf-js-enabled',
|
||||||
anchorClass : 'sf-with-ul',
|
anchorClass : 'sf-with-ul',
|
||||||
arrowClass : 'sf-sub-indicator',
|
arrowClass : 'sf-sub-indicator'
|
||||||
shadowClass : 'sf-shadow'
|
|
||||||
};
|
};
|
||||||
sf.defaults = {
|
sf.defaults = {
|
||||||
hoverClass : 'sfHover',
|
hoverClass : 'sfHover',
|
||||||
|
@ -87,33 +125,39 @@
|
||||||
pathLevels : 1,
|
pathLevels : 1,
|
||||||
delay : 800,
|
delay : 800,
|
||||||
animation : {opacity:'show'},
|
animation : {opacity:'show'},
|
||||||
|
animationOut: {opacity:'hide'},
|
||||||
speed : 'normal',
|
speed : 'normal',
|
||||||
|
speedOut : 'fast',
|
||||||
autoArrows : true,
|
autoArrows : true,
|
||||||
dropShadows : true,
|
|
||||||
disableHI : false, // true disables hoverIntent detection
|
disableHI : false, // true disables hoverIntent detection
|
||||||
|
useClick : false,
|
||||||
onInit : function(){}, // callback functions
|
onInit : function(){}, // callback functions
|
||||||
onBeforeShow: function(){},
|
onBeforeShow: function(){},
|
||||||
onShow : function(){},
|
onShow : function(){},
|
||||||
onHide : function(){}
|
onHide : function(){},
|
||||||
|
onIdle : function(){}
|
||||||
};
|
};
|
||||||
$.fn.extend({
|
$.fn.extend({
|
||||||
hideSuperfishUl : function(){
|
hideSuperfishUl : function(){
|
||||||
var o = sf.op,
|
var o = sf.op,
|
||||||
not = (o.retainPath===true) ? o.$path : '';
|
not = (o.retainPath===true) ? o.$path : '';
|
||||||
o.retainPath = false;
|
o.retainPath = false;
|
||||||
var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
|
var $ul = $('li.'+o.hoverClass,this).add(this).not(not)
|
||||||
.find('>ul').hide().css('visibility','hidden');
|
.find('>ul').stop().animate(o.animationOut,o.speedOut,function(){
|
||||||
|
$ul = $(this);
|
||||||
|
$ul.css('visibility','hidden').parent().removeClass(o.hoverClass);
|
||||||
o.onHide.call($ul);
|
o.onHide.call($ul);
|
||||||
|
});
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
showSuperfishUl : function(){
|
showSuperfishUl : function(){
|
||||||
var o = sf.op,
|
var o = sf.op,
|
||||||
sh = sf.c.shadowClass+'-off',
|
|
||||||
$ul = this.addClass(o.hoverClass)
|
$ul = this.addClass(o.hoverClass)
|
||||||
.find('>ul:hidden').css('visibility','visible');
|
.find('>ul:hidden').css('visibility','visible');
|
||||||
sf.IE7fix.call($ul);
|
|
||||||
o.onBeforeShow.call($ul);
|
o.onBeforeShow.call($ul);
|
||||||
$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
|
$ul.stop().animate(o.animation,o.speed,function(){
|
||||||
|
o.onShow.call($ul);
|
||||||
|
});
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
BIN
vendor/assets/stylesheets/images/animated-overlay.gif
vendored
Normal file
After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 199 B After Width: | Height: | Size: 434 B |
Before Width: | Height: | Size: 180 B After Width: | Height: | Size: 274 B |
Before Width: | Height: | Size: 180 B After Width: | Height: | Size: 274 B |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 395 B |
Before Width: | Height: | Size: 100 B After Width: | Height: | Size: 268 B |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 4.3 KiB |
5
vendor/assets/stylesheets/jquery-ui-1.10.0.custom.min.css
vendored
Normal file
13
vendor/assets/stylesheets/superfish-navbar.css
vendored
|
@ -6,6 +6,9 @@
|
||||||
padding-bottom: 2.5em;
|
padding-bottom: 2.5em;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
.sf-navbar ul {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
.sf-navbar li {
|
.sf-navbar li {
|
||||||
background: #AABDE6;
|
background: #AABDE6;
|
||||||
position: static;
|
position: static;
|
||||||
|
@ -81,13 +84,3 @@ ul.sf-navbar .current ul ul {
|
||||||
.sf-navbar ul li.sfHover > a > .sf-sub-indicator {
|
.sf-navbar ul li.sfHover > a > .sf-sub-indicator {
|
||||||
background-position: -10px -100px; /* arrow hovers for modern browsers*/
|
background-position: -10px -100px; /* arrow hovers for modern browsers*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** remove shadow on first submenu ***/
|
|
||||||
.sf-navbar > li > ul {
|
|
||||||
background: transparent;
|
|
||||||
padding: 0;
|
|
||||||
-moz-border-radius-bottomleft: 0;
|
|
||||||
-moz-border-radius-topright: 0;
|
|
||||||
-webkit-border-top-right-radius: 0;
|
|
||||||
-webkit-border-bottom-left-radius: 0;
|
|
||||||
}
|
|
26
vendor/assets/stylesheets/superfish.css
vendored
|
@ -11,26 +11,18 @@
|
||||||
.sf-menu ul {
|
.sf-menu ul {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: -999em;
|
top: -999em;
|
||||||
width: 12em; /* left offset of submenus need to match (see below) */
|
width: 10em; /* left offset of submenus need to match (see below) */
|
||||||
}
|
}
|
||||||
|
|
||||||
.sf-item-menu ul {
|
|
||||||
width: 9.5em;
|
|
||||||
z-index: 99;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sf-menu ul li {
|
.sf-menu ul li {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.sf-menu li:hover {
|
.sf-menu li:hover {
|
||||||
visibility: inherit; /* fixes IE7 'sticky bug' */
|
visibility: inherit; /* fixes IE7 'sticky bug' */
|
||||||
}
|
}
|
||||||
|
|
||||||
.sf-menu li {
|
.sf-menu li {
|
||||||
float: left;
|
float: left;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sf-menu a {
|
.sf-menu a {
|
||||||
display: block;
|
display: block;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -147,6 +139,7 @@ ul.sf-menu li li li.sfHover ul {
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*** arrows **/
|
/*** arrows **/
|
||||||
.sf-menu a.sf-with-ul {
|
.sf-menu a.sf-with-ul {
|
||||||
padding-right: 2.25em;
|
padding-right: 2.25em;
|
||||||
|
@ -161,7 +154,7 @@ ul.sf-menu li li li.sfHover ul {
|
||||||
height: 10px;
|
height: 10px;
|
||||||
text-indent: -999em;
|
text-indent: -999em;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
background: url('/assets/arrows-ffffff.png') no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
|
background: url('../images/arrows-ffffff.png') no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
|
||||||
}
|
}
|
||||||
a > .sf-sub-indicator { /* give all except IE6 the correct values */
|
a > .sf-sub-indicator { /* give all except IE6 the correct values */
|
||||||
top: .8em;
|
top: .8em;
|
||||||
|
@ -187,16 +180,3 @@ li.sfHover > a > .sf-sub-indicator {
|
||||||
.sf-menu ul li.sfHover > a > .sf-sub-indicator {
|
.sf-menu ul li.sfHover > a > .sf-sub-indicator {
|
||||||
background-position: -10px 0; /* arrow hovers for modern browsers*/
|
background-position: -10px 0; /* arrow hovers for modern browsers*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** shadows for all but IE6 ***/
|
|
||||||
.sf-shadow ul {
|
|
||||||
background: url('/assets/shadow.png') no-repeat bottom right;
|
|
||||||
padding: 0 8px 9px 0;
|
|
||||||
-moz-border-radius-bottomleft: 17px;
|
|
||||||
-moz-border-radius-topright: 17px;
|
|
||||||
-webkit-border-top-right-radius: 17px;
|
|
||||||
-webkit-border-bottom-left-radius: 17px;
|
|
||||||
}
|
|
||||||
.sf-shadow ul.sf-shadow-off {
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|