any_login 1.3.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +5 -5
  2. data/app/controllers/any_login/application_controller.rb +17 -0
  3. data/app/helpers/any_login/application_helper.rb +26 -3
  4. data/app/views/any_login/_any_login.html.erb +7 -0
  5. data/lib/any_login.rb +8 -0
  6. data/lib/any_login/providers/authlogic.rb +1 -1
  7. data/lib/any_login/providers/clearance.rb +1 -1
  8. data/lib/any_login/providers/devise.rb +1 -1
  9. data/lib/any_login/providers/sorcery.rb +1 -1
  10. data/lib/any_login/version.rb +1 -1
  11. data/test/dummy-clearance/db/development.sqlite3 +0 -0
  12. data/test/dummy/app/views/home/index.html.erb +1 -448
  13. data/test/dummy/db/development.sqlite3 +0 -0
  14. data/test/dummy/log/development.log +2017 -0
  15. data/test/dummy/log/test.log +50 -0
  16. data/test/dummy/tmp/cache/assets/sprockets/v3.0/-D/-Dg5ZkTls3rHNa2l35Y2GMEXbJnvHY0-Egoq3V3KvGY.cache +1 -0
  17. data/test/dummy/tmp/cache/assets/sprockets/v3.0/-S/-SuAD2dP0cSgjTq3tP0swCy0jyqmR6tInZKuAFBcVp8.cache +0 -0
  18. data/test/dummy/tmp/cache/assets/sprockets/v3.0/04/04oTddx5RijUeZloooZ1Pm3k8cfkpg-3477aFaNANq4.cache +5 -0
  19. data/test/dummy/tmp/cache/assets/sprockets/v3.0/0Q/0QThAlIyHET8vLk7e4zmbnV9ZMHI5g4KcJu3By5L0xg.cache +1 -0
  20. data/test/dummy/tmp/cache/assets/sprockets/v3.0/0s/0s938iaOX2NBJ-elmk5V7j6XyYC7WxwS57x4aSiyH54.cache +3 -0
  21. data/test/dummy/tmp/cache/assets/sprockets/v3.0/1l/1l2LyYtD0hI8QJI83gSEdwWsnqaFREIwwRAqXquREMY.cache +1 -0
  22. data/test/dummy/tmp/cache/assets/sprockets/v3.0/2c/2cjCUV2SoZNb4a7U-CVWPBsrSAT_805cWMBQqcDuR8U.cache +3 -0
  23. data/test/dummy/tmp/cache/assets/sprockets/v3.0/3N/3Ns3xAyH95BGx95LC8MPlnLNfnm1HQC-LRJ4n8Zlbhs.cache +0 -0
  24. data/test/dummy/tmp/cache/assets/sprockets/v3.0/3p/3pTb9cnqbyj8oSbBnv-vO5Snw8FMgSpsEqhfftd6KM8.cache +1 -0
  25. data/test/dummy/tmp/cache/assets/sprockets/v3.0/5P/5Pf0YftQI-ZQIqD1eArSl11t-n_RMCnpNAm7PJbPMg8.cache +1 -0
  26. data/test/dummy/tmp/cache/assets/sprockets/v3.0/6L/6L8OhKpEg9OopqEks1Eg3Yn2nNpXkMUcYB3Ct90tmOI.cache +1 -0
  27. data/test/dummy/tmp/cache/assets/sprockets/v3.0/6R/6R8Ab2VVfHjOSQ8bJdbYqEEpI_BwsOTGMIWrs7CPiA8.cache +0 -0
  28. data/test/dummy/tmp/cache/assets/sprockets/v3.0/6w/6wSsp-himpVCHqd2MwCqg5qpg9qvaBZK_QetzKx6fhg.cache +4 -0
  29. data/test/dummy/tmp/cache/assets/sprockets/v3.0/7U/7Urlldd4JqrpBAeGSO40LnBaBJUapZRia0-eA3BGgnQ.cache +4 -0
  30. data/test/dummy/tmp/cache/assets/sprockets/v3.0/9X/9Xc8YFlDJRwahzhOQ9-q0-FtnQcMniRnX8jJlHTROm8.cache +1 -0
  31. data/test/dummy/tmp/cache/assets/sprockets/v3.0/AU/AUUQfp0ZTTAPUPDe8TEwY9U4B7rPF5tbb3DTaahfXGg.cache +1 -0
  32. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Bx/BxIh9R3OGw4rXVuqRbI8E4_FFNuY0pqWtEVgO_M47hE.cache +1 -0
  33. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Cu/CuKQFQrECTYFUbTL112t_9VxYRa-qPAtFh_puj554eI.cache +0 -0
  34. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Cu/CuNnn165lBWZkKCjdY_joHCV8qyyN-UNj2O0ZHBSddU.cache +1 -0
  35. data/test/dummy/tmp/cache/assets/sprockets/v3.0/FB/FBHo9LuH0xkwMXXXx95xeALLysZQEJGD_jAXz0L5D9c.cache +0 -0
  36. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Fg/Fgi2PW3c1qK1CS8Mp5xq_m4Frc-Y4fz6MgbB--5_DFg.cache +1 -0
  37. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Fo/FoMKiqVuXZlqXKS5sZ2CepOYjMVxk3XUCUC8z96dGlk.cache +1 -0
  38. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Fw/FwiXjnLLgGTbJ2tZcnFWOp30FIQFbt42kxicUMneUFU.cache +3 -0
  39. data/test/dummy/tmp/cache/assets/sprockets/v3.0/GA/GAdJwtpszZDaIVjZ1vy_hhrduwyRVZ-UVvY1VWHC1F8.cache +3 -0
  40. data/test/dummy/tmp/cache/assets/sprockets/v3.0/I3/I3nUL1109ON75W3zxAKo1beybc7C4ZS1LGTLiZg2ej8.cache +1 -0
  41. data/test/dummy/tmp/cache/assets/sprockets/v3.0/IH/IHEtgWG-bM5JdeS4MpjATwdDPniVNIk31MgI5xCGuAw.cache +2 -0
  42. data/test/dummy/tmp/cache/assets/sprockets/v3.0/J-/J-4oPSPBOYXvlx3v1bU5yFRhWKIt9Pbd-jTh4ARZTAo.cache +1 -0
  43. data/test/dummy/tmp/cache/assets/sprockets/v3.0/L5/L55mKPIZW4yu8-ei7nxwOfhFbR2XEGnrlMdydgpfai8.cache +1 -0
  44. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Mu/MuFc7AzSpPX16nZtGyUj6Jm09C_4L5gsM0FzPOBIwY4.cache +1 -0
  45. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Na/NaOPJqxpTLnXnQ4IX8jEw3cvYo2SrqrlUYeZW2UzoOk.cache +1 -0
  46. data/test/dummy/tmp/cache/assets/sprockets/v3.0/On/OnResjr8j7pB3v8AMPlqruJ_597sdzzOxgAmjDuwa3w.cache +1 -0
  47. data/test/dummy/tmp/cache/assets/sprockets/v3.0/P8/P8ytY6J2lveAeG2fMvyy8r9-tPg7fiN_3Ab7V7bQqTA.cache +1 -0
  48. data/test/dummy/tmp/cache/assets/sprockets/v3.0/PV/PVK-jZacxU1cWegzoBx4MuUxIFJx_s7WSdxTCeSJ2b4.cache +1 -0
  49. data/test/dummy/tmp/cache/assets/sprockets/v3.0/QI/QI0_r-lhQ11MgB5hl0iDmZkYUP2lhIbinlNV6z-CADI.cache +3 -0
  50. data/test/dummy/tmp/cache/assets/sprockets/v3.0/QK/QKxzR5Cw94Oy0fL3B1xQmewTiZ6syQcpkWvN_q51-hs.cache +0 -0
  51. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Qr/QrrG5X3SHARlU3cX7xW8wIwoKn4WwLZmZnr43pECtq8.cache +0 -0
  52. data/test/dummy/tmp/cache/assets/sprockets/v3.0/RI/RICxiF1Y7tRr1144F7mHmJPW-mEKzj8mvHddAM2tiiM.cache +2 -0
  53. data/test/dummy/tmp/cache/assets/sprockets/v3.0/RI/RIZ9Fwy55ZmMRMNm2m3o4FB0CmGeRKIDhRbjHCaG_2U.cache +0 -0
  54. data/test/dummy/tmp/cache/assets/sprockets/v3.0/TK/TKL8jyLcA2JcZ3puvU_LSHcONp-_5Z-77GJRSThtC7A.cache +2 -0
  55. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Uf/UfrjkaQSDo_CFzC0sczZIJW0X-owh9Tnm1xLkODaJ1I.cache +2 -0
  56. data/test/dummy/tmp/cache/assets/sprockets/v3.0/W8/W8nAt_ntq-eifnenvYEnaPn1yPvEs66qr95bxpARWMQ.cache +1 -0
  57. data/test/dummy/tmp/cache/assets/sprockets/v3.0/WR/WRkATZ__BM8FSA_ps96QuKbjF1qxdXUQ2R0DbA1NiyA.cache +4 -0
  58. data/test/dummy/tmp/cache/assets/sprockets/v3.0/WS/WShZwpbrt5Q9NU5ngKHDGLed1e8DSQC7UbTdCbsgsT8.cache +2 -0
  59. data/test/dummy/tmp/cache/assets/sprockets/v3.0/X9/X9CCaGqqaUv4WO8YGDLvsoMRI-YE_hZ7zMPXI8r12ts.cache +0 -0
  60. data/test/dummy/tmp/cache/assets/sprockets/v3.0/XX/XXAHmbeg_TfKNFVv5Bke0lxLHJg2JKBL6_niQsSaNWU.cache +1 -0
  61. data/test/dummy/tmp/cache/assets/sprockets/v3.0/YW/YWz7RsbYEyV5W5K-N2XAZG4-LH1XcsjBxFfO-tCGlDE.cache +0 -0
  62. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Yl/YlW61yeKVQbCaGB5KQ9x5UBQKkcFCI080Uagi4qUfMM.cache +0 -0
  63. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ZP/ZPAB02xJo6ZN3L6OfzyWEgh36ZS4MGSuk_e7CAwfanM.cache +0 -0
  64. data/test/dummy/tmp/cache/assets/sprockets/v3.0/eU/eUX6c56Kt_pz8fPl14NxlFJfGidrugVhIMj1gjs97pQ.cache +1 -0
  65. data/test/dummy/tmp/cache/assets/sprockets/v3.0/eq/eq-hOvJwIQGfeaOxPvLLoSgspYnPt1qmAvfzhIjiQ8I.cache +0 -0
  66. data/test/dummy/tmp/cache/assets/sprockets/v3.0/f5/f54V076hGyLBoyXVqTSQ4TYLpxxfpE4rfnZKmPlkYD0.cache +1 -0
  67. data/test/dummy/tmp/cache/assets/sprockets/v3.0/fp/fpeHoSYPNIxuVWmz3_zN7Vbi23P-F3HPYv-XpKpLZFg.cache +1 -0
  68. data/test/dummy/tmp/cache/assets/sprockets/v3.0/g0/g0C0AU1L_x5sxYFr6z0NE79m0pF6-CXBH6VFPVxgCpM.cache +2 -0
  69. data/test/dummy/tmp/cache/assets/sprockets/v3.0/gT/gTC13k-_pje-P_LWe83hQ9_3C5cinGmG8ckrar4b7vE.cache +3 -0
  70. data/test/dummy/tmp/cache/assets/sprockets/v3.0/gT/gTkUgaB4k61_B3ydTNzFB012pqNr-7E4KO2cVtNLDkU.cache +0 -0
  71. data/test/dummy/tmp/cache/assets/sprockets/v3.0/h8/h8MyXG62sm-uRDQiYg6CH_Z-EtBPEai0euDPYa2ZOLQ.cache +1 -0
  72. data/test/dummy/tmp/cache/assets/sprockets/v3.0/jJ/jJMUuOxfxNdR_iw6_Atzc9BQIkzNyweek8qCfDM1620.cache +1 -0
  73. data/test/dummy/tmp/cache/assets/sprockets/v3.0/kh/khZgphuPeZYzQwBZrBEVGDBq4QQAvZ_CUfNsM15KtXc.cache +4 -0
  74. data/test/dummy/tmp/cache/assets/sprockets/v3.0/kw/kwrJPJzQnUZy6XwmBrFMJjah6mZ9qNB8nStiWPrGWhs.cache +1 -0
  75. data/test/dummy/tmp/cache/assets/sprockets/v3.0/l5/l5rpSHE1xK2jT7OGZDVOzAUK0LgmIMJAhVJQGaGWQ00.cache +2 -0
  76. data/test/dummy/tmp/cache/assets/sprockets/v3.0/my/myQlTWBqjEV7aXVwBtOaHIt42To2MmC_zlFFqkPxjmw.cache +2 -0
  77. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ni/niVUoVEMUptq6L7GFj6Df_vajoeWEYtSF4BHTsuLmfE.cache +3 -0
  78. data/test/dummy/tmp/cache/assets/sprockets/v3.0/o9/o9K2isMkub-cGtNTwR7zJ2UkWW-Q3C2vrMc7vyG6cQk.cache +1 -0
  79. data/test/dummy/tmp/cache/assets/sprockets/v3.0/pI/pIVqc5tXAaLDSQbx4dvcFawX1iRPdcw_JTjDIE6Y0eM.cache +3 -0
  80. data/test/dummy/tmp/cache/assets/sprockets/v3.0/pn/pnW3u_1AN48ig6ngefI89y96xoSlvnJurx-e3J-leoE.cache +3 -0
  81. data/test/dummy/tmp/cache/assets/sprockets/v3.0/qD/qDNkKDUNVSrSAWT8yqnkWcqqtxLn4VA_kyk8JX1pKOU.cache +1 -0
  82. data/test/dummy/tmp/cache/assets/sprockets/v3.0/s-/s-mG18OjpD8IKlOk-YOYmUYFC16rIaqqtnmGQYSEPIY.cache +1 -0
  83. data/test/dummy/tmp/cache/assets/sprockets/v3.0/sY/sYqD_6_DLhWbWmBm4ZOKDNI8bKtF7czThI6GXwmFlMU.cache +3 -0
  84. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ss/ssS2x0Wl67rwXHaVHsh6CO7ayn9fQ5saIwATKN6O-nI.cache +3 -0
  85. data/test/dummy/tmp/cache/assets/sprockets/v3.0/t1/t1w3t0uQeIB6mj-VliOTOvNCAcjMoQdBxMlac-VXXUk.cache +3 -0
  86. data/test/dummy/tmp/cache/assets/sprockets/v3.0/tV/tVUTHHlY5TMaPTcTIRE487ouNUpGmQVD_Ab6VAuDGw0.cache +1 -0
  87. data/test/dummy/tmp/cache/assets/sprockets/v3.0/tu/tuEq0SXuQh3A3UWa1dGXRLlKGMt6evB5YqwFJRyPvIE.cache +3 -0
  88. data/test/dummy/tmp/cache/assets/sprockets/v3.0/v-/v-N2813JF9StwoLTE-8AAriPnHbuvVx-m9DzTCXCH9M.cache +1 -0
  89. data/test/dummy/tmp/cache/assets/sprockets/v3.0/x0/x00ZU4Y_G6K5u2IqypZTnQIPb--furSWaQfLMsVfEqo.cache +1 -0
  90. data/test/dummy/tmp/cache/assets/sprockets/v3.0/xC/xCexSNESQ_s5_Nb67lUl0oXgCpdisNQNvtsR-hfgIAo.cache +1 -0
  91. data/test/dummy/tmp/cache/assets/sprockets/v3.0/xg/xgfY0nnn8IRgObhr6ZixwkE7oqh7Ksdwe2VRgjKNB9A.cache +0 -0
  92. data/test/dummy/tmp/cache/assets/sprockets/v3.0/xp/xp_GvoQomYX5lkhg7vSvVU0DGGy4QG_ldNHacZLqZt0.cache +0 -0
  93. metadata +371 -211
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2ab9e3e57352ce8ec95dec7ae804ceaff05724cc
4
- data.tar.gz: f992a7ee9d69fbf9902b0ecd2fbb1ae22b80004b
2
+ SHA256:
3
+ metadata.gz: e0533f6e8b60e5136780e30df1b7e3c76e683f8cef32788bb9e7b57d4579bb29
4
+ data.tar.gz: 628b1be61fb4dd822b759a3a291deec1087b23f6036e587eb93646e1d48aa800
5
5
  SHA512:
6
- metadata.gz: 27dc158632b716b734683db22b0d1c260486043742d0c9caf342999eeb642d3634f0b05c468014f01a6a4b60cf9ace9dbddc37ecf9086a44d9968361e78bc03a
7
- data.tar.gz: 638687233ac53c86686a35543e8def14cd6682269e1141e1bbaa69ce35a46a4461ca59a3d27ac00bfa3d17ab6cf6ec2fb4c549d794ac2ad6bb236018d17d32ca
6
+ metadata.gz: 1c2349f21eabc343db7493afacff68c92389d1e47537b03306386bfe43790ff949ecf564c9b0351f862286a9deff97febefb68a3d7a1028724a58659d43410c5
7
+ data.tar.gz: 49d10943f6050d03b40d5aefb8580945b4d9868ab55cf08dfbc93722b5681c0cf0c082a727928c64d516bfd14b66e9983fa4b7630cdc952d1eb0240fbf3ac2db
@@ -11,6 +11,7 @@ module AnyLogin
11
11
  def any_login
12
12
  try_not_to_leak_any_login_is_installed
13
13
  head 403 && return unless AnyLogin.verify_access_proc.call(self)
14
+ add_to_previous
14
15
  AnyLogin.provider::Controller.instance_method(:any_login_sign_in).bind(self).call
15
16
  end
16
17
 
@@ -24,5 +25,21 @@ module AnyLogin
24
25
  raise ActiveRecord::RecordNotFound
25
26
  end
26
27
 
28
+ def user_id
29
+ params[:back_to_previous_id].presence || params[:selected_id].presence || params[:id]
30
+ end
31
+
32
+ def previous
33
+ cookies[AnyLogin.cookie_name] ||= ""
34
+ end
35
+
36
+ def previous_list
37
+ previous.split(',').take(AnyLogin.previous_limit)
38
+ end
39
+
40
+ def add_to_previous
41
+ cookies[AnyLogin.cookie_name] = ([user_id] + previous_list).uniq.join(',')
42
+ end
43
+
27
44
  end
28
45
  end
@@ -27,11 +27,34 @@ module AnyLogin
27
27
  select_tag :selected_id, select_options, select_html_options
28
28
  end
29
29
 
30
- def select_html_options
30
+ def any_login_previous_select
31
+ ids = any_login_previous_ids
32
+ return if ids.blank?
33
+
34
+ users = ids.collect do |id|
35
+ AnyLogin.klass.where(AnyLogin.klass.primary_key => id).first
36
+ end.compact
37
+
38
+ collection = AnyLogin::Collection.new(users).to_a
39
+ if collection.any?
40
+ select_options = options_for_select(collection)
41
+ [
42
+ content_tag(:span, id: 'anylogin_back_to_user') do
43
+ "History: "
44
+ end,
45
+ select_tag(:back_to_previous_id, select_options, select_html_options("Back to:"))
46
+ ].join.html_safe
47
+ end
48
+ end
49
+
50
+ def any_login_previous_ids
51
+ (cookies[AnyLogin.cookie_name].presence || '').split(',').take(AnyLogin.previous_limit)
52
+ end
53
+
54
+ def select_html_options(prompt = AnyLogin.select_prompt)
31
55
  options = {}
32
- #options = { :include_blank => true }
33
56
  options[:onchange] = 'AnyLogin.on_select_change();' if AnyLogin.login_on == :both
34
- options[:prompt] = AnyLogin.select_prompt
57
+ options[:prompt] = prompt
35
58
  options
36
59
  end
37
60
 
@@ -7,6 +7,7 @@
7
7
  <%= any_login_id_input %>
8
8
  <%= any_login_submit %>
9
9
  <span id='current_user_information'><%= current_user_information %></span>
10
+ <%= any_login_previous_select %>
10
11
  </span>
11
12
  <% end %>
12
13
  </div>
@@ -126,6 +127,7 @@
126
127
  }
127
128
  #any_login .any_login_user_information {
128
129
  padding-left: 10px;
130
+ color: yellow;
129
131
  }
130
132
  #any_login #any_login_id_input {
131
133
  width: 30px;
@@ -136,4 +138,9 @@
136
138
  #any_login span#current_user_information span {
137
139
  display: inline;
138
140
  }
141
+ #any_login span#anylogin_back_to_user {
142
+ padding-left: 15px;
143
+ color: cyan;
144
+ display: inline;
145
+ }
139
146
  </style>
@@ -61,6 +61,10 @@ module AnyLogin
61
61
  mattr_accessor :limit
62
62
  @@limit = 10
63
63
 
64
+ # Previous limit, integer or :none
65
+ mattr_accessor :previous_limit
66
+ @@previous_limit = 6
67
+
64
68
  # Enable http basic authentication
65
69
  mattr_accessor :http_basic_authentication_enabled
66
70
  @@http_basic_authentication_enabled = false
@@ -89,6 +93,10 @@ module AnyLogin
89
93
  @@klass = AnyLogin.klass_name.constantize
90
94
  end
91
95
 
96
+ def self.cookie_name
97
+ "any_login_previous_#{Rails.application.class.parent_name}".underscore
98
+ end
99
+
92
100
  private
93
101
 
94
102
  def self.format_collection_raw(result)
@@ -10,7 +10,7 @@ module AnyLogin
10
10
 
11
11
  def any_login_sign_in
12
12
  reset_session
13
- @loginable = AnyLogin.klass.find(params[:selected_id].presence || params[:id])
13
+ @loginable = AnyLogin.klass.find(user_id)
14
14
  Object.const_get("#{AnyLogin.klass}Session").create(@loginable)
15
15
  redirect_to main_app.send(AnyLogin.redirect_path_after_login)
16
16
  end
@@ -10,7 +10,7 @@ module AnyLogin
10
10
 
11
11
  def any_login_sign_in
12
12
  reset_session
13
- @loginable = AnyLogin.klass.find(params[:selected_id].presence || params[:id])
13
+ @loginable = AnyLogin.klass.find(user_id)
14
14
  sign_in @loginable
15
15
  redirect_to main_app.send(AnyLogin.redirect_path_after_login)
16
16
  end
@@ -14,7 +14,7 @@ module AnyLogin
14
14
  end
15
15
 
16
16
  def any_login_sign_in
17
- @loginable = AnyLogin.klass.find(params[:selected_id].presence || params[:id])
17
+ @loginable = AnyLogin.klass.find(user_id)
18
18
 
19
19
  sign_in = AnyLogin.sign_in || DEFAULT_SIGN_IN
20
20
  instance_exec(@loginable, &sign_in)
@@ -10,7 +10,7 @@ module AnyLogin
10
10
 
11
11
  def any_login_sign_in
12
12
  reset_session
13
- @loginable = AnyLogin.klass.find(params[:selected_id].presence || params[:id])
13
+ @loginable = AnyLogin.klass.find(user_id)
14
14
  auto_login @loginable
15
15
  redirect_to main_app.send(AnyLogin.redirect_path_after_login)
16
16
  end
@@ -1,3 +1,3 @@
1
1
  module AnyLogin
2
- VERSION = '1.3.1'
2
+ VERSION = '1.4.0'
3
3
  end
@@ -1,5 +1,6 @@
1
1
  <% if user_signed_in? %>
2
2
  <h1>Hello, <%= current_user.name %></h2>
3
+ <p>Your email: <%= current_user.email %></p>
3
4
  <% else %>
4
5
  <h1>Please sign up to...</h1>
5
6
  <% end %>
@@ -10,54 +11,6 @@
10
11
 
11
12
  <hr/>
12
13
 
13
- <!-- Main jumbotron for a primary marketing message or call to action -->
14
- <div class="jumbotron">
15
- <h1>Any Login Gem Dummy App</h1>
16
- <p>Sample of AnyLogin + Devise Gem</p>
17
- </div>
18
-
19
-
20
- <div class="page-header">
21
- <h1>Buttons</h1>
22
- </div>
23
- <p>
24
- <button type="button" class="btn btn-lg btn-default">Default</button>
25
- <button type="button" class="btn btn-lg btn-primary">Primary</button>
26
- <button type="button" class="btn btn-lg btn-success">Success</button>
27
- <button type="button" class="btn btn-lg btn-info">Info</button>
28
- <button type="button" class="btn btn-lg btn-warning">Warning</button>
29
- <button type="button" class="btn btn-lg btn-danger">Danger</button>
30
- <button type="button" class="btn btn-lg btn-link">Link</button>
31
- </p>
32
- <p>
33
- <button type="button" class="btn btn-default">Default</button>
34
- <button type="button" class="btn btn-primary">Primary</button>
35
- <button type="button" class="btn btn-success">Success</button>
36
- <button type="button" class="btn btn-info">Info</button>
37
- <button type="button" class="btn btn-warning">Warning</button>
38
- <button type="button" class="btn btn-danger">Danger</button>
39
- <button type="button" class="btn btn-link">Link</button>
40
- </p>
41
- <p>
42
- <button type="button" class="btn btn-sm btn-default">Default</button>
43
- <button type="button" class="btn btn-sm btn-primary">Primary</button>
44
- <button type="button" class="btn btn-sm btn-success">Success</button>
45
- <button type="button" class="btn btn-sm btn-info">Info</button>
46
- <button type="button" class="btn btn-sm btn-warning">Warning</button>
47
- <button type="button" class="btn btn-sm btn-danger">Danger</button>
48
- <button type="button" class="btn btn-sm btn-link">Link</button>
49
- </p>
50
- <p>
51
- <button type="button" class="btn btn-xs btn-default">Default</button>
52
- <button type="button" class="btn btn-xs btn-primary">Primary</button>
53
- <button type="button" class="btn btn-xs btn-success">Success</button>
54
- <button type="button" class="btn btn-xs btn-info">Info</button>
55
- <button type="button" class="btn btn-xs btn-warning">Warning</button>
56
- <button type="button" class="btn btn-xs btn-danger">Danger</button>
57
- <button type="button" class="btn btn-xs btn-link">Link</button>
58
- </p>
59
-
60
-
61
14
  <div class="page-header">
62
15
  <h1>Tables</h1>
63
16
  </div>
@@ -128,403 +81,3 @@
128
81
  </div>
129
82
  </div>
130
83
 
131
- <div class="row">
132
- <div class="col-md-6">
133
- <table class="table table-bordered">
134
- <thead>
135
- <tr>
136
- <th>#</th>
137
- <th>First Name</th>
138
- <th>Last Name</th>
139
- <th>Username</th>
140
- </tr>
141
- </thead>
142
- <tbody>
143
- <tr>
144
- <td rowspan="2">1</td>
145
- <td>Mark</td>
146
- <td>Otto</td>
147
- <td>@mdo</td>
148
- </tr>
149
- <tr>
150
- <td>Mark</td>
151
- <td>Otto</td>
152
- <td>@TwBootstrap</td>
153
- </tr>
154
- <tr>
155
- <td>2</td>
156
- <td>Jacob</td>
157
- <td>Thornton</td>
158
- <td>@fat</td>
159
- </tr>
160
- <tr>
161
- <td>3</td>
162
- <td colspan="2">Larry the Bird</td>
163
- <td>@twitter</td>
164
- </tr>
165
- </tbody>
166
- </table>
167
- </div>
168
- <div class="col-md-6">
169
- <table class="table table-condensed">
170
- <thead>
171
- <tr>
172
- <th>#</th>
173
- <th>First Name</th>
174
- <th>Last Name</th>
175
- <th>Username</th>
176
- </tr>
177
- </thead>
178
- <tbody>
179
- <tr>
180
- <td>1</td>
181
- <td>Mark</td>
182
- <td>Otto</td>
183
- <td>@mdo</td>
184
- </tr>
185
- <tr>
186
- <td>2</td>
187
- <td>Jacob</td>
188
- <td>Thornton</td>
189
- <td>@fat</td>
190
- </tr>
191
- <tr>
192
- <td>3</td>
193
- <td colspan="2">Larry the Bird</td>
194
- <td>@twitter</td>
195
- </tr>
196
- </tbody>
197
- </table>
198
- </div>
199
- </div>
200
-
201
- <div class="page-header">
202
- <h1>Labels</h1>
203
- </div>
204
- <h1>
205
- <span class="label label-default">Default</span>
206
- <span class="label label-primary">Primary</span>
207
- <span class="label label-success">Success</span>
208
- <span class="label label-info">Info</span>
209
- <span class="label label-warning">Warning</span>
210
- <span class="label label-danger">Danger</span>
211
- </h1>
212
- <h2>
213
- <span class="label label-default">Default</span>
214
- <span class="label label-primary">Primary</span>
215
- <span class="label label-success">Success</span>
216
- <span class="label label-info">Info</span>
217
- <span class="label label-warning">Warning</span>
218
- <span class="label label-danger">Danger</span>
219
- </h2>
220
- <h3>
221
- <span class="label label-default">Default</span>
222
- <span class="label label-primary">Primary</span>
223
- <span class="label label-success">Success</span>
224
- <span class="label label-info">Info</span>
225
- <span class="label label-warning">Warning</span>
226
- <span class="label label-danger">Danger</span>
227
- </h3>
228
- <h4>
229
- <span class="label label-default">Default</span>
230
- <span class="label label-primary">Primary</span>
231
- <span class="label label-success">Success</span>
232
- <span class="label label-info">Info</span>
233
- <span class="label label-warning">Warning</span>
234
- <span class="label label-danger">Danger</span>
235
- </h4>
236
- <h5>
237
- <span class="label label-default">Default</span>
238
- <span class="label label-primary">Primary</span>
239
- <span class="label label-success">Success</span>
240
- <span class="label label-info">Info</span>
241
- <span class="label label-warning">Warning</span>
242
- <span class="label label-danger">Danger</span>
243
- </h5>
244
- <h6>
245
- <span class="label label-default">Default</span>
246
- <span class="label label-primary">Primary</span>
247
- <span class="label label-success">Success</span>
248
- <span class="label label-info">Info</span>
249
- <span class="label label-warning">Warning</span>
250
- <span class="label label-danger">Danger</span>
251
- </h6>
252
- <p>
253
- <span class="label label-default">Default</span>
254
- <span class="label label-primary">Primary</span>
255
- <span class="label label-success">Success</span>
256
- <span class="label label-info">Info</span>
257
- <span class="label label-warning">Warning</span>
258
- <span class="label label-danger">Danger</span>
259
- </p>
260
-
261
-
262
- <div class="page-header">
263
- <h1>Badges</h1>
264
- </div>
265
- <p>
266
- <a href="#">Inbox <span class="badge">42</span></a>
267
- </p>
268
- <ul class="nav nav-pills" role="tablist">
269
- <li role="presentation" class="active"><a href="#">Home <span class="badge">42</span></a></li>
270
- <li role="presentation"><a href="#">Profile</a></li>
271
- <li role="presentation"><a href="#">Messages <span class="badge">3</span></a></li>
272
- </ul>
273
-
274
-
275
- <div class="page-header">
276
- <h1>Dropdown menus</h1>
277
- </div>
278
- <div class="dropdown theme-dropdown clearfix">
279
- <a id="dropdownMenu1" href="#" class="sr-only dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
280
- <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
281
- <li class="active"><a href="#">Action</a></li>
282
- <li><a href="#">Another action</a></li>
283
- <li><a href="#">Something else here</a></li>
284
- <li role="separator" class="divider"></li>
285
- <li><a href="#">Separated link</a></li>
286
- </ul>
287
- </div>
288
-
289
-
290
- <div class="page-header">
291
- <h1>Navs</h1>
292
- </div>
293
- <ul class="nav nav-tabs" role="tablist">
294
- <li role="presentation" class="active"><a href="#">Home</a></li>
295
- <li role="presentation"><a href="#">Profile</a></li>
296
- <li role="presentation"><a href="#">Messages</a></li>
297
- </ul>
298
- <ul class="nav nav-pills" role="tablist">
299
- <li role="presentation" class="active"><a href="#">Home</a></li>
300
- <li role="presentation"><a href="#">Profile</a></li>
301
- <li role="presentation"><a href="#">Messages</a></li>
302
- </ul>
303
-
304
-
305
- <div class="page-header">
306
- <h1>Navbars</h1>
307
- </div>
308
-
309
- <nav class="navbar navbar-default">
310
- <div class="container">
311
- <div class="navbar-header">
312
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
313
- <span class="sr-only">Toggle navigation</span>
314
- <span class="icon-bar"></span>
315
- <span class="icon-bar"></span>
316
- <span class="icon-bar"></span>
317
- </button>
318
- <a class="navbar-brand" href="#">Project name</a>
319
- </div>
320
- <div class="navbar-collapse collapse">
321
- <ul class="nav navbar-nav">
322
- <li class="active"><a href="#">Home</a></li>
323
- <li><a href="#about">About</a></li>
324
- <li><a href="#contact">Contact</a></li>
325
- <li class="dropdown">
326
- <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
327
- <ul class="dropdown-menu">
328
- <li><a href="#">Action</a></li>
329
- <li><a href="#">Another action</a></li>
330
- <li><a href="#">Something else here</a></li>
331
- <li role="separator" class="divider"></li>
332
- <li class="dropdown-header">Nav header</li>
333
- <li><a href="#">Separated link</a></li>
334
- <li><a href="#">One more separated link</a></li>
335
- </ul>
336
- </li>
337
- </ul>
338
- </div><!--/.nav-collapse -->
339
- </div>
340
- </nav>
341
-
342
- <nav class="navbar navbar-inverse">
343
- <div class="container">
344
- <div class="navbar-header">
345
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
346
- <span class="sr-only">Toggle navigation</span>
347
- <span class="icon-bar"></span>
348
- <span class="icon-bar"></span>
349
- <span class="icon-bar"></span>
350
- </button>
351
- <a class="navbar-brand" href="#">Project name</a>
352
- </div>
353
- <div class="navbar-collapse collapse">
354
- <ul class="nav navbar-nav">
355
- <li class="active"><a href="#">Home</a></li>
356
- <li><a href="#about">About</a></li>
357
- <li><a href="#contact">Contact</a></li>
358
- <li class="dropdown">
359
- <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
360
- <ul class="dropdown-menu">
361
- <li><a href="#">Action</a></li>
362
- <li><a href="#">Another action</a></li>
363
- <li><a href="#">Something else here</a></li>
364
- <li role="separator" class="divider"></li>
365
- <li class="dropdown-header">Nav header</li>
366
- <li><a href="#">Separated link</a></li>
367
- <li><a href="#">One more separated link</a></li>
368
- </ul>
369
- </li>
370
- </ul>
371
- </div><!--/.nav-collapse -->
372
- </div>
373
- </nav>
374
-
375
-
376
- <div class="page-header">
377
- <h1>Alerts</h1>
378
- </div>
379
- <div class="alert alert-success" role="alert">
380
- <strong>Well done!</strong> You successfully read this important alert message.
381
- </div>
382
- <div class="alert alert-info" role="alert">
383
- <strong>Heads up!</strong> This alert needs your attention, but it's not super important.
384
- </div>
385
- <div class="alert alert-warning" role="alert">
386
- <strong>Warning!</strong> Best check yo self, you're not looking too good.
387
- </div>
388
- <div class="alert alert-danger" role="alert">
389
- <strong>Oh snap!</strong> Change a few things up and try submitting again.
390
- </div>
391
-
392
-
393
- <div class="page-header">
394
- <h1>Progress bars</h1>
395
- </div>
396
- <div class="progress">
397
- <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;"><span class="sr-only">60% Complete</span></div>
398
- </div>
399
- <div class="progress">
400
- <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 40%"><span class="sr-only">40% Complete (success)</span></div>
401
- </div>
402
- <div class="progress">
403
- <div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%"><span class="sr-only">20% Complete</span></div>
404
- </div>
405
- <div class="progress">
406
- <div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%"><span class="sr-only">60% Complete (warning)</span></div>
407
- </div>
408
- <div class="progress">
409
- <div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%"><span class="sr-only">80% Complete (danger)</span></div>
410
- </div>
411
- <div class="progress">
412
- <div class="progress-bar progress-bar-striped" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%"><span class="sr-only">60% Complete</span></div>
413
- </div>
414
- <div class="progress">
415
- <div class="progress-bar progress-bar-success" style="width: 35%"><span class="sr-only">35% Complete (success)</span></div>
416
- <div class="progress-bar progress-bar-warning" style="width: 20%"><span class="sr-only">20% Complete (warning)</span></div>
417
- <div class="progress-bar progress-bar-danger" style="width: 10%"><span class='sr-only'>10% Complete (danger)</span></div>
418
- </div>
419
-
420
-
421
- <div class="page-header">
422
- <h1>List groups</h1>
423
- </div>
424
- <div class="row">
425
- <div class="col-sm-4">
426
- <ul class="list-group">
427
- <li class="list-group-item">Cras justo odio</li>
428
- <li class="list-group-item">Dapibus ac facilisis in</li>
429
- <li class="list-group-item">Morbi leo risus</li>
430
- <li class="list-group-item">Porta ac consectetur ac</li>
431
- <li class="list-group-item">Vestibulum at eros</li>
432
- </ul>
433
- </div><!-- /.col-sm-4 -->
434
- <div class="col-sm-4">
435
- <div class="list-group">
436
- <a href="#" class="list-group-item active">
437
- Cras justo odio
438
- </a>
439
- <a href="#" class="list-group-item">Dapibus ac facilisis in</a>
440
- <a href="#" class="list-group-item">Morbi leo risus</a>
441
- <a href="#" class="list-group-item">Porta ac consectetur ac</a>
442
- <a href="#" class="list-group-item">Vestibulum at eros</a>
443
- </div>
444
- </div><!-- /.col-sm-4 -->
445
- <div class="col-sm-4">
446
- <div class="list-group">
447
- <a href="#" class="list-group-item active">
448
- <h4 class="list-group-item-heading">List group item heading</h4>
449
- <p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
450
- </a>
451
- <a href="#" class="list-group-item">
452
- <h4 class="list-group-item-heading">List group item heading</h4>
453
- <p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
454
- </a>
455
- <a href="#" class="list-group-item">
456
- <h4 class="list-group-item-heading">List group item heading</h4>
457
- <p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
458
- </a>
459
- </div>
460
- </div><!-- /.col-sm-4 -->
461
- </div>
462
-
463
-
464
- <div class="page-header">
465
- <h1>Panels</h1>
466
- </div>
467
- <div class="row">
468
- <div class="col-sm-4">
469
- <div class="panel panel-default">
470
- <div class="panel-heading">
471
- <h3 class="panel-title">Panel title</h3>
472
- </div>
473
- <div class="panel-body">
474
- Panel content
475
- </div>
476
- </div>
477
- <div class="panel panel-primary">
478
- <div class="panel-heading">
479
- <h3 class="panel-title">Panel title</h3>
480
- </div>
481
- <div class="panel-body">
482
- Panel content
483
- </div>
484
- </div>
485
- </div><!-- /.col-sm-4 -->
486
- <div class="col-sm-4">
487
- <div class="panel panel-success">
488
- <div class="panel-heading">
489
- <h3 class="panel-title">Panel title</h3>
490
- </div>
491
- <div class="panel-body">
492
- Panel content
493
- </div>
494
- </div>
495
- <div class="panel panel-info">
496
- <div class="panel-heading">
497
- <h3 class="panel-title">Panel title</h3>
498
- </div>
499
- <div class="panel-body">
500
- Panel content
501
- </div>
502
- </div>
503
- </div><!-- /.col-sm-4 -->
504
- <div class="col-sm-4">
505
- <div class="panel panel-warning">
506
- <div class="panel-heading">
507
- <h3 class="panel-title">Panel title</h3>
508
- </div>
509
- <div class="panel-body">
510
- Panel content
511
- </div>
512
- </div>
513
- <div class="panel panel-danger">
514
- <div class="panel-heading">
515
- <h3 class="panel-title">Panel title</h3>
516
- </div>
517
- <div class="panel-body">
518
- Panel content
519
- </div>
520
- </div>
521
- </div><!-- /.col-sm-4 -->
522
- </div>
523
-
524
-
525
- <div class="page-header">
526
- <h1>Wells</h1>
527
- </div>
528
- <div class="well">
529
- <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sed diam eget risus varius blandit sit amet non magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur.</p>
530
- </div>