humdrum-rails 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. data/lib/humdrum/version.rb +1 -1
  2. data/lib/rails/generators/humdrum/api/api_generator.rb +21 -19
  3. data/lib/rails/generators/humdrum/api/templates/views/bootstrap/resource/_form.html.erb +1 -1
  4. data/lib/rails/generators/humdrum/layout/layout_generator.rb +88 -64
  5. data/lib/rails/generators/humdrum/layout/templates/controllers/application_controller.rb +1 -0
  6. data/lib/rails/generators/humdrum/layout/templates/controllers/layout_name_controller.rb +5 -0
  7. data/lib/rails/generators/humdrum/layout/templates/controllers/welcome_controller.rb +9 -1
  8. data/lib/rails/generators/humdrum/layout/templates/helpers/display_helper.rb +9 -8
  9. data/lib/rails/generators/humdrum/layout/templates/javascripts/application.js +8 -4
  10. data/lib/rails/generators/humdrum/layout/templates/javascripts/{bootstrap.js → bootstrap2/bootstrap.min.js} +0 -0
  11. data/lib/rails/generators/humdrum/layout/templates/javascripts/bootstrap2/utilities.js +23 -0
  12. data/lib/rails/generators/humdrum/layout/templates/javascripts/bootstrap3/bootstrap.min.js +6 -0
  13. data/lib/rails/generators/humdrum/layout/templates/javascripts/bootstrap3/utilities.js +50 -0
  14. data/lib/rails/generators/humdrum/layout/templates/javascripts/{gumby.min.js → gumby/gumby.min.js} +0 -0
  15. data/lib/rails/generators/humdrum/layout/templates/javascripts/validations/bootstrap2/main.js +15 -0
  16. data/lib/rails/generators/humdrum/layout/templates/javascripts/validations/bootstrap3/main.js +15 -0
  17. data/lib/rails/generators/humdrum/layout/templates/javascripts/validations/{main.js → gumby/main.js} +0 -0
  18. data/lib/rails/generators/humdrum/layout/templates/stylesheets/application.css +11 -6
  19. data/lib/rails/generators/humdrum/layout/templates/stylesheets/{bootstrap-responsive.css → bootstrap2/bootstrap-responsive.css} +0 -0
  20. data/lib/rails/generators/humdrum/layout/templates/stylesheets/{bootstrap.css → bootstrap2/bootstrap.css} +0 -0
  21. data/lib/rails/generators/humdrum/layout/templates/stylesheets/{overrides-bootstrap.css → bootstrap2/overrides-bootstrap.css} +0 -0
  22. data/lib/rails/generators/humdrum/layout/templates/stylesheets/bootstrap3/bootstrap.css +6805 -0
  23. data/lib/rails/generators/humdrum/layout/templates/stylesheets/bootstrap3/overrides-bootstrap.css +7 -0
  24. data/lib/rails/generators/humdrum/layout/templates/stylesheets/{gumby-pagination.css → gumby/gumby-pagination.css} +0 -0
  25. data/lib/rails/generators/humdrum/layout/templates/stylesheets/{gumby.css → gumby/gumby.css} +0 -0
  26. data/lib/rails/generators/humdrum/layout/templates/stylesheets/{overrides-gumby.css → gumby/overrides-gumby.css} +0 -0
  27. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap/layouts/admin.html.erb → bootstrap2/layouts/application.html.erb} +3 -3
  28. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap/layouts/admin → bootstrap2/layouts/application}/_footer.html.erb +0 -0
  29. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap/layouts/admin → bootstrap2/layouts/application}/_header.html.erb +0 -0
  30. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap/layouts/admin → bootstrap2/layouts/application}/_navbar.html.erb +0 -0
  31. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap → bootstrap2}/layouts/common/_flash_message.html.erb +0 -0
  32. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap → bootstrap2}/layouts/common/_meta_tags.html.erb +0 -0
  33. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap → bootstrap2}/layouts/common/_overlays.html.erb +0 -0
  34. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap/layouts/user.html.erb → bootstrap2/layouts/layout_name.html.erb} +9 -9
  35. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap/layouts/public → bootstrap2/layouts/layout_name}/_footer.html.erb +0 -0
  36. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap/layouts/public → bootstrap2/layouts/layout_name}/_header.html.erb +0 -0
  37. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap/layouts/public → bootstrap2/layouts/layout_name}/_navbar.html.erb +0 -0
  38. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap → bootstrap2}/welcome/index.html.erb +0 -0
  39. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/kaminari/_first_page.html.erb +11 -0
  40. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/kaminari/_gap.html.erb +8 -0
  41. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/kaminari/_last_page.html.erb +11 -0
  42. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/kaminari/_next_page.html.erb +11 -0
  43. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/kaminari/_page.html.erb +12 -0
  44. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/kaminari/_paginator.html.erb +23 -0
  45. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/kaminari/_prev_page.html.erb +11 -0
  46. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/layouts/application.html.erb +65 -0
  47. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap/layouts/user → bootstrap3/layouts/application}/_footer.html.erb +0 -0
  48. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/layouts/application/_header.html.erb +34 -0
  49. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap/layouts/user → bootstrap3/layouts/application}/_navbar.html.erb +0 -0
  50. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/layouts/common/_flash_message.html.erb +24 -0
  51. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/layouts/common/_meta_tags.html.erb +42 -0
  52. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/layouts/common/_overlays.html.erb +36 -0
  53. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/layouts/layout_name.html.erb +65 -0
  54. data/lib/rails/generators/humdrum/layout/templates/views/{gumby/layouts/admin/_navbar.html.erb → bootstrap3/layouts/layout_name/_footer.html.erb} +0 -0
  55. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap/layouts/user → bootstrap3/layouts/layout_name}/_header.html.erb +0 -0
  56. data/lib/rails/generators/humdrum/layout/templates/views/{gumby/layouts/public → bootstrap3/layouts/layout_name}/_navbar.html.erb +0 -0
  57. data/lib/rails/generators/humdrum/layout/templates/views/bootstrap3/welcome/index.html.erb +5 -0
  58. data/lib/rails/generators/humdrum/layout/templates/views/gumby/layouts/{admin.html.erb → application.html.erb} +3 -3
  59. data/lib/rails/generators/humdrum/layout/templates/views/gumby/layouts/{admin → application}/_footer.html.erb +0 -0
  60. data/lib/rails/generators/humdrum/layout/templates/views/gumby/layouts/{admin → application}/_header.html.erb +0 -0
  61. data/lib/rails/generators/humdrum/layout/templates/views/gumby/layouts/{user → application}/_navbar.html.erb +0 -0
  62. data/lib/rails/generators/humdrum/layout/templates/views/{bootstrap/layouts/public.html.erb → gumby/layouts/layout_name.html.erb} +7 -7
  63. data/lib/rails/generators/humdrum/layout/templates/views/gumby/layouts/{public → layout_name}/_footer.html.erb +0 -0
  64. data/lib/rails/generators/humdrum/layout/templates/views/gumby/layouts/{user → layout_name}/_header.html.erb +0 -0
  65. data/lib/rails/generators/humdrum/layout/templates/views/gumby/layouts/layout_name/_navbar.html.erb +0 -0
  66. data/lib/rails/generators/humdrum/resource/resource_generator.rb +65 -33
  67. data/lib/rails/generators/humdrum/resource/templates/controllers/resource_controller.rb +5 -7
  68. data/lib/rails/generators/humdrum/resource/templates/javascripts/validations/{validator.js → bootstrap2/validator.js} +0 -0
  69. data/lib/rails/generators/humdrum/resource/templates/javascripts/validations/bootstrap3/validator.js +76 -0
  70. data/lib/rails/generators/humdrum/resource/templates/javascripts/validations/gumby/validator.js +85 -0
  71. data/lib/rails/generators/humdrum/resource/templates/javascripts/validations/tbr_untitled.js +114 -0
  72. data/lib/rails/generators/humdrum/resource/templates/models/resource.rb +17 -12
  73. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/_edit.html.erb +0 -0
  74. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/_field.html.erb +0 -0
  75. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/_filters.html.erb +0 -0
  76. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/_form.html.erb +0 -0
  77. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/_index.html.erb +0 -0
  78. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/_item.html.erb +0 -0
  79. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/_nav_filters.html.erb +0 -0
  80. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/_new.html.erb +0 -0
  81. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/_show.html.erb +0 -0
  82. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/_summary.html.erb +0 -0
  83. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/create.js.erb +0 -0
  84. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/destroy.js.erb +0 -0
  85. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/edit.js.erb +0 -0
  86. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/index.html.erb +0 -0
  87. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/index.js.erb +0 -0
  88. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/new.js.erb +0 -0
  89. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/show.js.erb +0 -0
  90. data/lib/rails/generators/humdrum/resource/templates/views/{bootstrap → bootstrap2}/resource/update.js.erb +0 -0
  91. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/_edit.html.erb +7 -0
  92. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/_field.html.erb +46 -0
  93. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/_filters.html.erb +22 -0
  94. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/_form.html.erb +49 -0
  95. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/_index.html.erb +22 -0
  96. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/_item.html.erb +21 -0
  97. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/_nav_filters.html.erb +9 -0
  98. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/_new.html.erb +9 -0
  99. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/_show.html.erb +42 -0
  100. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/_summary.html.erb +10 -0
  101. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/create.js.erb +25 -0
  102. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/destroy.js.erb +14 -0
  103. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/edit.js.erb +5 -0
  104. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/index.html.erb +33 -0
  105. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/index.js.erb +15 -0
  106. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/new.js.erb +5 -0
  107. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/show.js.erb +2 -0
  108. data/lib/rails/generators/humdrum/resource/templates/views/bootstrap3/resource/update.js.erb +24 -0
  109. data/lib/rails/generators/humdrum/resource/templates/views/gumby/resource/_form.html copy.erb +71 -0
  110. data/lib/rails/generators/humdrum/setup/setup_generator.rb +10 -6
  111. data/lib/rails/generators/humdrum/setup/templates/config/initializers/config_center.rb +7 -8
  112. data/lib/rails/generators/humdrum/setup/templates/lib/core_ext/active_record.rb +9 -0
  113. data/lib/rails/generators/humdrum/setup/templates/lib/core_ext/string.rb +10 -0
  114. data/lib/rails/generators/humdrum/setup/templates/rbenv-gemsets +1 -0
  115. data/lib/rails/generators/humdrum/setup/templates/ruby-gemset +1 -1
  116. metadata +104 -63
  117. data/lib/rails/generators/humdrum/layout/templates/controllers/admin_controller.rb +0 -5
  118. data/lib/rails/generators/humdrum/layout/templates/controllers/public_controller.rb +0 -5
  119. data/lib/rails/generators/humdrum/layout/templates/controllers/user_controller.rb +0 -5
  120. data/lib/rails/generators/humdrum/layout/templates/views/gumby/layouts/public.html.erb +0 -63
  121. data/lib/rails/generators/humdrum/layout/templates/views/gumby/layouts/public/_header.html.erb +0 -43
  122. data/lib/rails/generators/humdrum/layout/templates/views/gumby/layouts/user.html.erb +0 -65
  123. data/lib/rails/generators/humdrum/layout/templates/views/gumby/layouts/user/_footer.html.erb +0 -1
@@ -1,4 +1,4 @@
1
1
  module Humdrum
2
2
  # http://semver.org/
3
- VERSION = "0.0.8"
3
+ VERSION = "0.0.9"
4
4
  end
@@ -3,7 +3,8 @@ require 'rails/generators/migration'
3
3
 
4
4
  module Humdrum
5
5
  module Generators
6
- class ResourceGenerator < Rails::Generators::Base
6
+ module Api
7
+ class SessionGenerator < Rails::Generators::Base
7
8
 
8
9
  include Rails::Generators::Migration
9
10
 
@@ -32,24 +33,24 @@ module Humdrum
32
33
  end
33
34
 
34
35
  def generate_views
35
- template "views/#{options.front_end_framework}/resource/_edit.html.erb", "app/views/#{controller_path}/_edit.html.erb"
36
- template "views/#{options.front_end_framework}/resource/_filters.html.erb", "app/views/#{controller_path}/_filters.html.erb"
37
- template "views/#{options.front_end_framework}/resource/_field.html.erb", "app/views/#{controller_path}/_field.html.erb"
38
- template "views/#{options.front_end_framework}/resource/_form.html.erb", "app/views/#{controller_path}/_form.html.erb"
39
- template "views/#{options.front_end_framework}/resource/_index.html.erb", "app/views/#{controller_path}/_index.html.erb"
40
- template "views/#{options.front_end_framework}/resource/_item.html.erb", "app/views/#{controller_path}/_item.html.erb"
41
- template "views/#{options.front_end_framework}/resource/_nav_filters.html.erb", "app/views/#{controller_path}/_nav_filters.html.erb"
42
- template "views/#{options.front_end_framework}/resource/_new.html.erb", "app/views/#{controller_path}/_new.html.erb"
43
- template "views/#{options.front_end_framework}/resource/_show.html.erb", "app/views/#{controller_path}/_show.html.erb"
44
- template "views/#{options.front_end_framework}/resource/_summary.html.erb", "app/views/#{controller_path}/_summary.html.erb"
45
- template "views/#{options.front_end_framework}/resource/create.js.erb", "app/views/#{controller_path}/create.js.erb"
46
- template "views/#{options.front_end_framework}/resource/destroy.js.erb", "app/views/#{controller_path}/destroy.js.erb"
47
- template "views/#{options.front_end_framework}/resource/edit.js.erb", "app/views/#{controller_path}/edit.js.erb"
48
- template "views/#{options.front_end_framework}/resource/index.js.erb", "app/views/#{controller_path}/index.js.erb"
49
- template "views/#{options.front_end_framework}/resource/new.js.erb", "app/views/#{controller_path}/new.js.erb"
50
- template "views/#{options.front_end_framework}/resource/show.js.erb", "app/views/#{controller_path}/show.js.erb"
51
- template "views/#{options.front_end_framework}/resource/update.js.erb", "app/views/#{controller_path}/update.js.erb"
52
- template "views/#{options.front_end_framework}/resource/index.html.erb", "app/views/#{controller_path}/index.html.erb"
36
+ template "views/#{framework}/resource/_edit.html.erb", "app/views/#{controller_path}/_edit.html.erb"
37
+ template "views/#{framework}/resource/_filters.html.erb", "app/views/#{controller_path}/_filters.html.erb"
38
+ template "views/#{framework}/resource/_field.html.erb", "app/views/#{controller_path}/_field.html.erb"
39
+ template "views/#{framework}/resource/_form.html.erb", "app/views/#{controller_path}/_form.html.erb"
40
+ template "views/#{framework}/resource/_index.html.erb", "app/views/#{controller_path}/_index.html.erb"
41
+ template "views/#{framework}/resource/_item.html.erb", "app/views/#{controller_path}/_item.html.erb"
42
+ template "views/#{framework}/resource/_nav_filters.html.erb", "app/views/#{controller_path}/_nav_filters.html.erb"
43
+ template "views/#{framework}/resource/_new.html.erb", "app/views/#{controller_path}/_new.html.erb"
44
+ template "views/#{framework}/resource/_show.html.erb", "app/views/#{controller_path}/_show.html.erb"
45
+ template "views/#{framework}/resource/_summary.html.erb", "app/views/#{controller_path}/_summary.html.erb"
46
+ template "views/#{framework}/resource/create.js.erb", "app/views/#{controller_path}/create.js.erb"
47
+ template "views/#{framework}/resource/destroy.js.erb", "app/views/#{controller_path}/destroy.js.erb"
48
+ template "views/#{framework}/resource/edit.js.erb", "app/views/#{controller_path}/edit.js.erb"
49
+ template "views/#{framework}/resource/index.js.erb", "app/views/#{controller_path}/index.js.erb"
50
+ template "views/#{framework}/resource/new.js.erb", "app/views/#{controller_path}/new.js.erb"
51
+ template "views/#{framework}/resource/show.js.erb", "app/views/#{controller_path}/show.js.erb"
52
+ template "views/#{framework}/resource/update.js.erb", "app/views/#{controller_path}/update.js.erb"
53
+ template "views/#{framework}/resource/index.html.erb", "app/views/#{controller_path}/index.html.erb"
53
54
  end
54
55
 
55
56
  def generate_models
@@ -335,5 +336,6 @@ module Humdrum
335
336
  end
336
337
 
337
338
  end
339
+ end
338
340
  end
339
341
  end
@@ -46,7 +46,7 @@
46
46
 
47
47
  <%%= @<%= instance_name %>.errors[:base].to_sentence %>
48
48
 
49
- <%%= hidden_field_tag :faction, @<%= instance_name %>.new_record? ? <%= instances_name %>_path : <%= instance_name %>_path(@<%= instance_name %>) %>
49
+ <%%= hidden_field_tag :faction, @<%= instance_name %>.new_record? ? <%= resource_link('show', 'path') %> : <%= <%= resource_link('show', 'path') %>(@<%= instance_name %>) %>
50
50
  <%%= hidden_field_tag :fmethod, @<%= instance_name %>.new_record? ? "POST" : "PUT" %>
51
51
 
52
52
  <div class="form-inputs">
@@ -4,26 +4,23 @@ module Humdrum
4
4
 
5
5
  source_root File.expand_path('../templates', __FILE__)
6
6
 
7
- desc "Generates a layout file with the name 'public' and the required partials " <<
8
- "which can be used for all public pages (user need not sign in) like about us, contact us." <<
9
- "Pass --create_user_layout to generate another layout for users who are signed in." <<
10
- "Pass --create_admin_layout to generate another layout for admin users."
11
-
12
- argument :application_name, :type=>:string, :default => "Application Name"
7
+ desc "Generates a layout file with the given name (default is 'application') and the required partials " <<
8
+ "Pass --application_name=MyNewApp to set a name / brand for the application." <<
9
+ "Pass --framework=bootstrap3 to copy bootstrap3 assets and generate a layout which is compatible to it."
13
10
 
11
+ argument :layout_name, :type=>:string, :default => "application", :desc => "This creates/replaces application.html.erb by default"
12
+
13
+ class_option :application_name, :type => :string, :default => "New App", :desc => "The name of the application. This is used as the brand name in header."
14
14
  class_option :fixed, :type => :boolean, :default => false, :desc => "Create fixed layouts. Default is fluid (Gumby doesn't support fluid framework. Hence applicable only for bootstrap for the timebeing.)"
15
+ class_option :framework, :type => :string, :default => 'bootstrap3', :desc => "Support Twitter Bootstrap (twitter.github.io/bootstrap/) and Gumpy (http://gumbyframework.com/). Default is bootstrap. Pass gumby for Gumby Framework"
15
16
 
16
17
  class_option :skip_stylesheet, :type => :boolean, :default => false, :desc => "Generate the stylesheets"
17
18
  class_option :skip_javascript, :type => :boolean, :default => false, :desc => "Generate the javascripts"
18
19
  class_option :skip_graphics, :type => :boolean, :default => false, :desc => "Generate the graphics (images required for the css and UI frameworks)"
19
-
20
- class_option :create_public_layout, :type => :boolean, :default => true, :desc => "Create a public.html.erb which can be used for public pages, not logged in users."
21
- class_option :create_admin_layout, :type => :boolean, :default => false, :desc => "Create a public.html.erb which can be used for admin pages."
22
- class_option :create_user_layout, :type => :boolean, :default => false, :desc => "Create a public.html.erb which can be used for pages shown to a signed in user."
20
+
23
21
  class_option :skip_welcome_page, :type => :boolean, :default => false, :desc => "Skip creating welcome_controller.rb, index action and related views & routes."
24
-
25
- class_option :front_end_framework, :type => :string, :default => 'bootstrap', :desc => "Support Twitter Bootstrap (twitter.github.io/bootstrap/) and Gumpy (http://gumbyframework.com/). Default is bootstrap. Pass gumby for Gumby Framework"
26
-
22
+ class_option :skip_kaminari, :type => :boolean, :default => false, :desc => "Skip creating kaminari views for pagination"
23
+
27
24
  ## Parse from config file
28
25
  #class_option :config_file, :type => :string, :desc => "Parse options from the config file."
29
26
 
@@ -35,28 +32,44 @@ module Humdrum
35
32
  #
36
33
  # config = YAML::load File.open(args[:file], 'r')
37
34
  #end
38
-
35
+
36
+ def application_name
37
+ options.application_name
38
+ end
39
+
40
+ def framework
41
+ options.framework
42
+ end
43
+
39
44
  def generate_stylesheets
40
45
  unless options.skip_stylesheet?
41
46
 
42
47
  template "stylesheets/application.css", "app/assets/stylesheets/application.css"
43
48
 
44
- if options.front_end_framework == "bootstrap"
49
+ case framework
50
+ when "bootstrap3"
51
+
52
+ # Copy bootstrap css file
53
+ copy_file "stylesheets/bootstrap3/bootstrap.css", "app/assets/stylesheets/bootstrap.css"
54
+
55
+ # Its named overrides-bootstrap so that it loads after bootstrap.css
56
+ copy_file "stylesheets/bootstrap3/overrides-bootstrap.css", "app/assets/stylesheets/overrides-bootstrap.css"
57
+ when "bootstrap2"
45
58
 
46
59
  # Copy bootstrap css file
47
- copy_file "stylesheets/bootstrap.css", "app/assets/stylesheets/bootstrap.css"
48
- copy_file "stylesheets/bootstrap-responsive.css", "app/assets/stylesheets/bootstrap-responsive.css"
60
+ copy_file "stylesheets/bootstrap2/bootstrap.css", "app/assets/stylesheets/bootstrap.css"
61
+ copy_file "stylesheets/bootstrap2/bootstrap-responsive.css", "app/assets/stylesheets/bootstrap-responsive.css"
49
62
 
50
63
  # Its named overrides-bootstrap so that it loads after bootstrap.css
51
- copy_file "stylesheets/overrides-bootstrap.css", "app/assets/stylesheets/overrides-bootstrap.css"
52
- elsif options.front_end_framework == "gumby"
64
+ copy_file "stylesheets/bootstrap2/overrides-bootstrap.css", "app/assets/stylesheets/overrides-bootstrap.css"
65
+ when "gumby"
53
66
 
54
67
  # Copy gumby css file
55
- copy_file "stylesheets/gumby.css", "app/assets/stylesheets/gumby.css"
56
- copy_file "stylesheets/gumby-pagination.css", "app/assets/stylesheets/gumby-pagination.css"
68
+ copy_file "stylesheets/gumby/gumby.css", "app/assets/stylesheets/gumby.css"
69
+ copy_file "stylesheets/gumby/gumby-pagination.css", "app/assets/stylesheets/gumby-pagination.css"
57
70
 
58
71
  # Its named overrides-gumby so that it loads after gumby.css
59
- copy_file "stylesheets/overrides-gumby.css", "app/assets/stylesheets/overrides-gumby.css"
72
+ copy_file "stylesheets/gumby/overrides-gumby.css", "app/assets/stylesheets/overrides-gumby.css"
60
73
  end
61
74
 
62
75
  end
@@ -65,26 +78,36 @@ module Humdrum
65
78
  def generate_javascripts
66
79
  unless options.skip_javascript?
67
80
  template "javascripts/application.js", "app/assets/javascripts/application.js"
68
- template "javascripts/validations/main.js", "app/assets/javascripts/validations/main.js"
81
+ template "javascripts/validations/#{framework}/main.js", "app/assets/javascripts/validations/main.js"
69
82
  copy_file "javascripts/modernizr.2.6.2.js", "app/assets/javascripts/modernizr.2.6.2.js"
70
- if options.front_end_framework == "bootstrap"
71
- copy_file "javascripts/bootstrap.js", "app/assets/javascripts/bootstrap.js"
72
- elsif options.front_end_framework == "gumby"
73
- copy_file "javascripts/gumby.min.js", "app/assets/javascripts/gumby.min.js"
83
+ case framework
84
+ when "bootstrap3"
85
+ copy_file "javascripts/bootstrap3/bootstrap.min.js", "app/assets/javascripts/bootstrap.min.js"
86
+ copy_file "javascripts/bootstrap3/utilities.js", "app/assets/javascripts/utilities.js"
87
+ when "bootstrap2"
88
+ copy_file "javascripts/bootstrap2/bootstrap.min.js", "app/assets/javascripts/bootstrap.min.js"
89
+ copy_file "javascripts/bootstrap2/utilities.js", "app/assets/javascripts/utilities.js"
90
+ when "gumby"
91
+ copy_file "javascripts/gumby/gumby.min.js", "app/assets/javascripts/gumby.min.js"
74
92
  end
75
93
  end
76
94
  end
77
95
 
96
+ # TODO - This section has to be optimized. All the assets should be organized under the framework folders.
97
+ # We should also use fontawesome irrespective of what the framework is
78
98
  def generate_graphics
79
99
  unless options.skip_graphics?
80
100
  copy_file "images/favicon.ico", "app/assets/images/favicon.ico"
81
- if options.front_end_framework == "bootstrap"
101
+ case framework
102
+ when "bootstrap3"
103
+ #copy_file "images/glyphicons-halflings.png", "app/assets/images/glyphicons-halflings.png"
104
+ #copy_file "images/glyphicons-halflings-white.png", "app/assets/images/glyphicons-halflings-white.png"
105
+ when "bootstrap2"
82
106
  copy_file "images/glyphicons-halflings.png", "app/assets/images/glyphicons-halflings.png"
83
107
  copy_file "images/glyphicons-halflings-white.png", "app/assets/images/glyphicons-halflings-white.png"
84
- elsif options.front_end_framework == "gumby"
108
+ when "gumby"
85
109
  directory "images/fonts", "app/assets/images/fonts"
86
110
  end
87
-
88
111
  end
89
112
  end
90
113
 
@@ -98,43 +121,42 @@ module Humdrum
98
121
  end
99
122
 
100
123
  def generate_layout
101
- template "views/#{options.front_end_framework}/layouts/common/_flash_message.html.erb", "app/views/layouts/common/_flash_message.html.erb"
102
- template "views/#{options.front_end_framework}/layouts/common/_meta_tags.html.erb", "app/views/layouts/common/_meta_tags.html.erb"
103
- template "views/#{options.front_end_framework}/layouts/common/_overlays.html.erb", "app/views/layouts/common/_overlays.html.erb"
104
-
105
- unless options.skip_admin_layout?
106
- template "views/#{options.front_end_framework}/layouts/admin.html.erb", "app/views/layouts/admin.html.erb"
107
- template "views/#{options.front_end_framework}/layouts/admin/_header.html.erb", "app/views/layouts/admin/_header.html.erb"
108
- template "views/#{options.front_end_framework}/layouts/admin/_footer.html.erb", "app/views/layouts/admin/_footer.html.erb"
109
- template "views/#{options.front_end_framework}/layouts/admin/_navbar.html.erb", "app/views/layouts/admin/_navbar.html.erb"
110
- end
111
-
112
- unless options.skip_public_layout?
113
- template "views/#{options.front_end_framework}/layouts/public.html.erb", "app/views/layouts/public.html.erb"
114
- template "views/#{options.front_end_framework}/layouts/public/_header.html.erb", "app/views/layouts/public/_header.html.erb"
115
- template "views/#{options.front_end_framework}/layouts/public/_footer.html.erb", "app/views/layouts/public/_footer.html.erb"
116
- template "views/#{options.front_end_framework}/layouts/public/_navbar.html.erb", "app/views/layouts/public/_navbar.html.erb"
117
- end
118
-
119
- unless options.skip_user_layout?
120
- template "views/#{options.front_end_framework}/layouts/user.html.erb", "app/views/layouts/user.html.erb"
121
- template "views/#{options.front_end_framework}/layouts/user/_header.html.erb", "app/views/layouts/user/_header.html.erb"
122
- template "views/#{options.front_end_framework}/layouts/user/_footer.html.erb", "app/views/layouts/user/_footer.html.erb"
123
- template "views/#{options.front_end_framework}/layouts/user/_navbar.html.erb", "app/views/layouts/user/_navbar.html.erb"
124
- end
124
+
125
+ template "views/#{framework}/layouts/application.html.erb", "app/views/layouts/application.html.erb"
126
+ template "views/#{framework}/layouts/application/_header.html.erb", "app/views/layouts/application/_header.html.erb"
127
+ template "views/#{framework}/layouts/application/_footer.html.erb", "app/views/layouts/application/_footer.html.erb"
128
+ template "views/#{framework}/layouts/application/_navbar.html.erb", "app/views/layouts/application/_navbar.html.erb"
129
+
130
+ template "views/#{framework}/layouts/common/_flash_message.html.erb", "app/views/layouts/common/_flash_message.html.erb"
131
+ template "views/#{framework}/layouts/common/_meta_tags.html.erb", "app/views/layouts/common/_meta_tags.html.erb"
132
+ template "views/#{framework}/layouts/common/_overlays.html.erb", "app/views/layouts/common/_overlays.html.erb"
133
+
134
+ template "views/#{framework}/layouts/layout_name.html.erb", "app/views/layouts/#{layout_name}.html.erb"
135
+ template "views/#{framework}/layouts/layout_name/_header.html.erb", "app/views/layouts/#{layout_name}/_header.html.erb"
136
+ template "views/#{framework}/layouts/layout_name/_footer.html.erb", "app/views/layouts/#{layout_name}/_footer.html.erb"
137
+ template "views/#{framework}/layouts/layout_name/_navbar.html.erb", "app/views/layouts/#{layout_name}/_navbar.html.erb"
125
138
 
126
139
  end
127
140
 
128
141
  def generate_controllers
129
142
  template "controllers/application_controller.rb", "app/controllers/application_controller.rb"
130
143
  template "controllers/welcome_controller.rb", "app/controllers/welcome_controller.rb" unless options.skip_welcome_page?
131
- template "controllers/public_controller.rb", "app/controllers/public_controller.rb" unless options.skip_public_layout?
132
- template "controllers/user_controller.rb", "app/controllers/user_controller.rb" unless options.skip_user_layout?
133
- template "controllers/admin_controller.rb", "app/controllers/admin_controller.rb" unless options.skip_admin_layout?
144
+ template "controllers/layout_name_controller.rb", "app/controllers/#{layout_name}_controller.rb"
134
145
  end
135
146
 
136
147
  def generate_views
137
- template "views/#{options.front_end_framework}/welcome/index.html.erb", "app/views/welcome/index.html.erb" unless options.skip_public_layout?
148
+ template "views/#{framework}/welcome/index.html.erb", "app/views/welcome/index.html.erb" unless options.skip_welcome_page?
149
+
150
+ # Copy kaminari templates
151
+ unless options.skip_kaminari?
152
+ template "views/#{framework}/kaminari/_first_page.html.erb", "app/views/kaminari/_first_page.html.erb"
153
+ template "views/#{framework}/kaminari/_gap.html.erb", "app/views/kaminari/_gap.html.erb"
154
+ template "views/#{framework}/kaminari/_last_page.html.erb", "app/views/kaminari/_last_page.html.erb"
155
+ template "views/#{framework}/kaminari/_next_page.html.erb", "app/views/kaminari/_next_page.html.erb"
156
+ template "views/#{framework}/kaminari/_page.html.erb", "app/views/kaminari/_page.html.erb"
157
+ template "views/#{framework}/kaminari/_paginator.html.erb", "app/views/kaminari/_paginator.html.erb"
158
+ template "views/#{framework}/kaminari/_prev_page.html.erb", "app/views/kaminari/_prev_page.html.erb"
159
+ end
138
160
  end
139
161
 
140
162
  def generate_routes
@@ -144,20 +166,22 @@ module Humdrum
144
166
  private
145
167
 
146
168
  def container_class
147
- if options.front_end_framework == "bootstrap"
148
- options.fixed? ? "container" : "container-fluid"
149
- elsif options.front_end_framework == "gumby"
169
+ case framework
170
+ when "bootstrap3", "gumby"
150
171
  "container"
172
+ when "bootstrap2"
173
+ options.fixed? ? "container" : "container-fluid"
151
174
  else
152
175
  options.fixed? ? "container" : "container-fluid"
153
176
  end
154
177
  end
155
178
 
156
179
  def row_class
157
- if options.front_end_framework == "bootstrap"
158
- options.fixed? ? "row" : "row-fluid"
159
- elsif options.front_end_framework == "gumby"
180
+ case framework
181
+ when "bootstrap3", "gumby"
160
182
  "row"
183
+ when "bootstrap2"
184
+ options.fixed? ? "row" : "row-fluid"
161
185
  else
162
186
  options.fixed? ? "row" : "row-fluid"
163
187
  end
@@ -3,5 +3,6 @@ class ApplicationController < ActionController::Base
3
3
 
4
4
  include ParamsParserHelper
5
5
  include FlashHelper
6
+ include NavigationHelper
6
7
 
7
8
  end
@@ -0,0 +1,5 @@
1
+ class <%= layout_name.camelize %>Controller < ApplicationController
2
+
3
+ layout '<%= layout_name.underscore %>'
4
+
5
+ end
@@ -1,7 +1,15 @@
1
- class WelcomeController < PublicController
1
+ class WelcomeController < ApplicationController
2
+
3
+ before_filter :set_navs
2
4
 
3
5
  # GET /
4
6
  def index
5
7
  end
6
8
 
9
+ private
10
+
11
+ def set_navs
12
+ set_nav("Home")
13
+ end
14
+
7
15
  end
@@ -28,14 +28,15 @@ module DisplayHelper
28
28
  end
29
29
 
30
30
  def display_time(disp_time, class_name = nil)
31
- return_str = ""
32
- if ((Time.now - disp_time) < (6*24*60*60))
33
- return_str = distance_of_time_in_words_to_now(disp_time) + " ago"
34
- else
35
- return_str = "#{disp_time.to_s(:hours)}:#{disp_time.to_s(:mins)}#{disp_time.to_s(:ampm).downcase} on #{disp_time.strftime('%m/%d/%y')}"
36
- end
37
-
38
- return content_tag("span", return_str, :class => (class_name.nil? ? "text-color-grey" : class_name))
31
+ return distance_of_time_in_words_to_now(disp_time) + " ago"
32
+ # return_str = ""
33
+ # if ((Time.now - disp_time) < (6*24*60*60))
34
+ # return_str = distance_of_time_in_words_to_now(disp_time) + " ago"
35
+ # else
36
+ # return_str = "#{disp_time.strftime('%m/%d/%y')}"
37
+ # end
38
+ #
39
+ # return content_tag("span", return_str, :class => (class_name.nil? ? "text-color-grey" : class_name))
39
40
  end
40
41
 
41
42
  end
@@ -12,15 +12,19 @@
12
12
  //
13
13
  //= require jquery
14
14
  //= require jquery_ujs
15
- <% if options.front_end_framework == "bootstrap" -%>
16
- //= require bootstrap
17
- <% elsif options.front_end_framework == "gumby" -%>
15
+ //
16
+ <% case framework
17
+ when "bootstrap3", "bootstrap2" -%>
18
+ //= require bootstrap.min
19
+ //= require utilities
20
+ <% when "gumby" -%>
18
21
  //= require gumby.min
19
22
  <% end %>
20
-
23
+ //
21
24
  // For jQery validations - http://jqueryvalidation.org/documentation/
22
25
  //= require jquery.validate
23
26
  //= require jquery.validate.additional-methods
27
+ //
24
28
  // include validation init functions
25
29
  //= require_tree ./validations
26
30
 
@@ -0,0 +1,23 @@
1
+ // Write down only those functions which are being used by application.init or any part of the application like ajax event handlers.
2
+
3
+ // loadANewPage will accept a url and will load a new page
4
+ // It can be tuned to show a lightbox showing a loading, please wait message.
5
+ function loadANewPage(url){
6
+ // showLightBoxLoading();
7
+ window.location.href=url;
8
+ }
9
+
10
+ // sendAjaxRequest is used to send an xml http request using javascript to a url using a method / get, put, post, delete
11
+ function sendAjaxRequest(url, mType){
12
+ methodType = mType || "GET";
13
+ jQuery.ajax({type: methodType, dataType:"script", url:url});
14
+ }
15
+
16
+ // Call this function by passing a heading and a body message.
17
+ // it will pop up bootstrap modal with the message.
18
+ function showMessageInThePopUp(heading, message){
19
+ $('#div-modal-popup-message .modal-body').html("<p>"+ message +"</p>");
20
+ $("#h3-modal-popup-message-header").text(heading);
21
+ $('#div-modal-popup-message').modal('show');
22
+ $(".btn").button('reset')
23
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * bootstrap.js v3.0.0 by @fat and @mdo
3
+ * Copyright 2013 Twitter Inc.
4
+ * http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);
@@ -0,0 +1,50 @@
1
+ // Write down only those functions which are being used by application.init or any part of the application like ajax event handlers.
2
+
3
+ // loadANewPage will accept a url and will load a new page
4
+ // It can be tuned to show a lightbox showing a loading, please wait message.
5
+ function loadANewPage(url){
6
+ // showLightBoxLoading();
7
+ window.location.href=url;
8
+ }
9
+
10
+ // sendAjaxRequest is used to send an xml http request using javascript to a url using a method / get, put, post, delete
11
+ function sendAjaxRequest(url, mType){
12
+ methodType = mType || "GET";
13
+ jQuery.ajax({type: methodType, dataType:"script", url:url});
14
+ }
15
+
16
+ // Call this function by passing model Id, heading and a bodyContent.
17
+ // it will pop up bootstrap 3 modal.
18
+ var messageModalId = "div_modal_message";
19
+ var genericModalId = "div_modal_generic";
20
+ function showModal(heading, bodyContent, modalId){
21
+ if(modalId==null){
22
+ var modalId = genericModalId;
23
+ }
24
+ //$('#' + modalId + ' .modal-body').html("<p>"+ message +"</p>");
25
+ $('#' + modalId + ' .modal-header h4.modal-title').text(heading);
26
+ $('#' + modalId + ' div.modal-body-main').html(bodyContent);
27
+ $('#' + modalId).modal('show');
28
+ //$('#' + modalId + ' .modal-footer button.btn-primary').button('reset');
29
+ }
30
+
31
+ // Call this function by passing heading and a message.
32
+ // it will pop up bootstrap 3 modal which shows the heading and message as content body.
33
+ function showModalMessage(heading, message, modalId){
34
+ if(modalId==null){
35
+ var modalId = messageModalId;
36
+ }
37
+ var bodyContent = "<p>"+ message +"</p>";
38
+ //$('#' + modalId + ' .modal-body').html("<p>"+ message +"</p>");
39
+ $('#' + modalId + ' .modal-header h4.modal-title').text(heading);
40
+ $('#' + modalId + ' div.modal-body').html(bodyContent);
41
+ $('#' + modalId).modal('show');
42
+ //$('#' + modalId + ' .modal-footer button.btn-primary').button('reset');
43
+ }
44
+
45
+ function closeModal(modalId){
46
+ if(modalId==null){
47
+ var modalId = genericModalId;
48
+ }
49
+ $('#' + modalId).modal('hide');
50
+ }