fanforce-app-factory 0.40.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. data/fanforce-app-factory.gemspec +3 -3
  2. data/lib/fanforce/app_factory.rake +1 -17
  3. data/lib/fanforce/app_factory.rb +1 -5
  4. data/lib/fanforce/app_factory/_init_sinatra.rb +11 -4
  5. data/lib/fanforce/app_factory/assets/css/add_edit_initiative.scss +1 -0
  6. data/lib/fanforce/app_factory/assets/css/add_source.scss +1 -0
  7. data/lib/fanforce/app_factory/assets/css/convert_pending_initiative.scss +1 -0
  8. data/lib/fanforce/app_factory/assets/css/engage.scss +1 -0
  9. data/lib/fanforce/app_factory/assets/css/new_message.scss +1 -0
  10. data/lib/fanforce/app_factory/assets/css/source_details.scss +1 -0
  11. data/lib/fanforce/app_factory/assets/js/add_edit_initiative.js +1 -0
  12. data/lib/fanforce/app_factory/assets/js/add_source.js +1 -0
  13. data/lib/fanforce/app_factory/assets/js/add_source_popup.js +0 -0
  14. data/lib/fanforce/app_factory/assets/js/convert_pending_initiative.js +1 -0
  15. data/lib/fanforce/app_factory/assets/js/fanforce-engager.js +0 -0
  16. data/lib/fanforce/app_factory/assets/js/fanforce-finder.js +0 -0
  17. data/lib/fanforce/app_factory/assets/js/new_message.js +1 -0
  18. data/lib/fanforce/app_factory/assets/js/source_details.js +0 -0
  19. data/lib/fanforce/app_factory/assets/lib/common/_bootstrap-overrides.scss +16 -0
  20. data/lib/fanforce/app_factory/assets/lib/common/_mixins.scss +1 -1
  21. data/lib/fanforce/app_factory/assets/lib/common/_module-add-initiative-footer.scss +17 -0
  22. data/lib/fanforce/app_factory/assets/lib/common/_module-error.scss +11 -0
  23. data/lib/fanforce/app_factory/assets/lib/common/_module-initiative-searcher.scss +63 -0
  24. data/lib/fanforce/app_factory/assets/lib/common/_module-page-loading.scss +1 -0
  25. data/lib/fanforce/app_factory/assets/lib/common/_module-saving-initiative.scss +6 -0
  26. data/lib/fanforce/app_factory/assets/lib/common/_module-start-here.scss +6 -0
  27. data/lib/fanforce/app_factory/assets/lib/common/_module-video-thumbnail.scss +15 -0
  28. data/lib/fanforce/app_factory/assets/lib/common/_tags.scss +0 -82
  29. data/lib/fanforce/app_factory/assets/lib/common/_variables.scss +1 -1
  30. data/lib/fanforce/app_factory/assets/lib/common/broadcaster-divider-arrow.png +0 -0
  31. data/lib/fanforce/app_factory/assets/lib/common/layouts/_add_edit_initiative.scss +27 -0
  32. data/lib/fanforce/app_factory/assets/lib/common/layouts/_add_source.scss +18 -0
  33. data/lib/fanforce/app_factory/assets/lib/common/layouts/_convert_pending_initiative.scss +27 -0
  34. data/lib/fanforce/app_factory/assets/lib/common/layouts/_engage.scss +80 -0
  35. data/lib/fanforce/app_factory/assets/lib/common/layouts/_new_message.scss +24 -0
  36. data/lib/fanforce/app_factory/assets/lib/common/layouts/_source_details.scss +17 -0
  37. data/lib/fanforce/app_factory/assets/lib/common/layouts/add_edit_initiative.js +6 -0
  38. data/lib/fanforce/app_factory/assets/lib/common/layouts/add_source.js +6 -0
  39. data/lib/fanforce/app_factory/assets/lib/common/layouts/convert_pending_initiative.js +6 -0
  40. data/lib/fanforce/app_factory/assets/lib/common/layouts/engage.js +0 -0
  41. data/lib/fanforce/app_factory/assets/lib/common/layouts/new_message.js +5 -0
  42. data/lib/fanforce/app_factory/assets/lib/common/layouts/source_details.js +5 -0
  43. data/lib/fanforce/app_factory/assets/lib/common/module-error/arrow-left.png +0 -0
  44. data/lib/fanforce/app_factory/assets/lib/common/module-error/icon-error.png +0 -0
  45. data/lib/fanforce/app_factory/assets/lib/common/module-initiative-searcher/icon-search.png +0 -0
  46. data/lib/fanforce/app_factory/assets/lib/common/module-initiative-searcher/spinner.gif +0 -0
  47. data/lib/fanforce/app_factory/assets/lib/common/module-initiative-searcher/sprite-arrows.png +0 -0
  48. data/lib/fanforce/app_factory/assets/lib/common/module-saving-initiative/spinner.gif +0 -0
  49. data/lib/fanforce/app_factory/assets/lib/common/module-start-here/arrow.png +0 -0
  50. data/lib/fanforce/app_factory/assets/lib/common/module-video-thumbnail/icon-play.png +0 -0
  51. data/lib/fanforce/app_factory/assets/lib/vendors/bootstrap-datepicker/datepicker.css +7 -0
  52. data/lib/fanforce/app_factory/assets/lib/vendors/bootstrap-datepicker/datepicker.js +454 -0
  53. data/lib/fanforce/app_factory/assets/lib/vendors/bootstrap-timepicker/timepicker.css +82 -0
  54. data/lib/fanforce/app_factory/assets/lib/vendors/bootstrap-timepicker/timepicker.js +803 -0
  55. data/lib/fanforce/app_factory/assets/lib/vendors/chosen/_chosen_override.scss +6 -0
  56. data/lib/fanforce/app_factory/assets/lib/vendors/chosen/chosen-sprite@2x.png +0 -0
  57. data/lib/fanforce/app_factory/assets/lib/vendors/chosen/chosen.scss +2 -0
  58. data/lib/fanforce/app_factory/assets/lib/vendors/knockout/knockout.custom-handlers.coffee +4 -4
  59. data/lib/fanforce/app_factory/assets/lib/vendors/select2/_select2_override.scss +1 -1
  60. data/lib/fanforce/app_factory/assets/lib/vendors/select2/select2_modified.js +3 -0
  61. data/lib/fanforce/app_factory/config/core_config.rb +52 -8
  62. data/lib/fanforce/app_factory/config/helpers/fanforce.rb +17 -0
  63. data/lib/fanforce/app_factory/config/helpers/ractive.rb +27 -0
  64. data/lib/fanforce/app_factory/layouts/add_edit_initiative.haml +19 -0
  65. data/lib/fanforce/app_factory/layouts/add_source.haml +19 -0
  66. data/lib/fanforce/app_factory/layouts/convert_pending_initiative.haml +19 -0
  67. data/lib/fanforce/app_factory/layouts/engage.haml +38 -0
  68. data/lib/fanforce/app_factory/layouts/new_message.haml +19 -0
  69. data/lib/fanforce/app_factory/layouts/source_details.haml +19 -0
  70. data/lib/fanforce/app_factory/routes_behavior.rb +44 -0
  71. data/lib/fanforce/app_factory/routes_broadcaster.rb +9 -0
  72. data/lib/fanforce/app_factory/routes_connector.rb +21 -0
  73. data/lib/fanforce/app_factory/{routes.rb → routes_core.rb} +6 -6
  74. data/lib/fanforce/app_factory/routes_identifier.rb +3 -0
  75. data/lib/fanforce/app_factory/routes_js_widget.rb +10 -0
  76. data/lib/fanforce/app_factory/sprockets/compiler.rb +5 -0
  77. data/lib/fanforce/app_factory/version.rb +1 -1
  78. data/lib/fanforce/app_factory/views/add_initiative.haml +1 -0
  79. data/lib/fanforce/app_factory/views/add_source.haml +1 -0
  80. data/lib/fanforce/app_factory/views/close_popup.haml +8 -0
  81. data/lib/fanforce/app_factory/views/convert_pending_initiative.haml +1 -0
  82. data/lib/fanforce/app_factory/views/edit_initiative.haml +1 -0
  83. data/lib/fanforce/app_factory/views/engage.haml +1 -0
  84. data/lib/fanforce/app_factory/views/new_message.haml +1 -0
  85. data/lib/fanforce/app_factory/views/source_details.haml +1 -0
  86. data/lib/fanforce/app_factory/views/widget_templates.haml +1 -0
  87. metadata +82 -12
@@ -36,8 +36,8 @@ Gem::Specification.new do |gem|
36
36
  gem.add_runtime_dependency 'bugsnag', '~> 1.5.2'
37
37
  gem.add_runtime_dependency 'rack-jsonr', '~> 0.2.6'
38
38
 
39
- gem.add_runtime_dependency 'fanforce', '~> 0.18'
40
- gem.add_runtime_dependency 'fanforce-api', '~> 0.20'
39
+ gem.add_runtime_dependency 'fanforce', '~> 0.20'
40
+ gem.add_runtime_dependency 'fanforce-api', '~> 0.30'
41
+ gem.add_runtime_dependency 'fanforce-worker', '~> 0.31'
41
42
  gem.add_runtime_dependency 'fanforce-exceptions', '~> 0.5'
42
- gem.add_runtime_dependency 'fanforce-worker', '~> 0.20'
43
43
  end
@@ -6,23 +6,7 @@ require_relative 'app_factory/sprockets/hacks'
6
6
  require_relative 'app_factory/sprockets/compiler'
7
7
  require_relative 'app_factory/version'
8
8
 
9
- def load_env_from_file(file)
10
- File.open(file, 'rb') do |file|
11
- contents = file.read
12
- lines = contents.gsub('export ', '').split(/\n\r?/).reject{|line| line.blank?}
13
- lines.each do |line|
14
- keyValue = line.split("=", 2)
15
- next unless keyValue.count == 2
16
- ENV[keyValue.first] = keyValue.last.gsub("'",'').gsub('"','')
17
- end
18
- end
19
- end
20
-
21
- if (!ENV['RACK_ENV'] or ENV['RACK_ENV'] == 'development')
22
- load_env_from_file("#{FanforceApp.config.root_dir}/.powenv") if File.exists?("#{FanforceApp.config.root_dir}/.powenv")
23
- load_env_from_file("#{FanforceApp.config.root_dir}/.appenv") if File.exists?("#{FanforceApp.config.root_dir}/.appenv")
24
- end
25
-
9
+ FanforceApp.config.load_env
26
10
  FanforceApp.config.load_redis
27
11
 
28
12
  namespace :assets do
@@ -14,14 +14,10 @@ if ENV['RACK_ENV'] == 'development'
14
14
  require_relative 'app_factory/sprockets/compiler'
15
15
  end
16
16
 
17
- caller[0].split(':')[0] =~ /^(.+(config\.ru|Rakefile))$/ ? ROOT_DIR = File.dirname($1) : nil
17
+ ROOT_DIR ||= (caller[0].split(':')[0] =~ /^(.+(config\.ru|Rakefile))$/) ? File.dirname($1) : $BaseDir
18
18
 
19
19
  module FanforceApp
20
20
 
21
- def self.enqueue(queue_name, payload)
22
- Fanforce::Worker.enqueue "#{config._id}-#{queue_name}", payload
23
- end
24
-
25
21
  def self.config(&block)
26
22
  config = @@config ||= FanforceApp::CoreConfig.new(ROOT_DIR)
27
23
  if block.present?
@@ -5,6 +5,7 @@ require 'bugsnag'
5
5
  class FanforceApp::Sinatra < Sinatra::Base
6
6
  require_relative 'config/_error_handling'
7
7
  require_relative 'config/helpers/assets'
8
+ require_relative 'config/helpers/ractive'
8
9
  require_relative 'config/helpers/json'
9
10
  require_relative 'config/helpers/fanforce'
10
11
 
@@ -12,6 +13,7 @@ class FanforceApp::Sinatra < Sinatra::Base
12
13
  use Bugsnag::Rack
13
14
 
14
15
  helpers Sinatra::AssetHelpers
16
+ helpers Sinatra::RactiveHelpers
15
17
  helpers Sinatra::JSONHelpers
16
18
  helpers Sinatra::FanforceHelpers
17
19
  helpers Sinatra::ContentFor
@@ -26,11 +28,16 @@ class FanforceApp::Sinatra < Sinatra::Base
26
28
  def page(page, options={})
27
29
  current_dir = File.expand_path('../', __FILE__)
28
30
  if !File.exists?("#{settings.views}/#{page}.haml")
29
- rel_path = Pathname.new(current_dir).relative_path_from(Pathname.new(settings.views))
30
- page = :"#{rel_path}/views/#{page}"
31
+ if File.exists?("#{settings.views}/#{options[:com_dir]}/#{page}.haml")
32
+ page_path = :"#{options[:com_dir]}/#{page}"
33
+ else
34
+ rel_path = Pathname.new(current_dir).relative_path_from(Pathname.new(settings.views))
35
+ page_path = :"#{rel_path}/views/#{page}" if File.exists?("#{rel_path}/views/#{page}.haml")
36
+ end
31
37
  end
38
+ page_path ||= page
32
39
 
33
- if options[:layout] and FanforceApp.config.respond_to?(:"layout_for_#{page}") and FanforceApp.config.method(:"layout_for_#{page}").call
40
+ if options[:layout] and FanforceApp.config.has_layout_for(page)
34
41
  if File.exists?("#{settings.views}/../layouts/#{options[:layout]}.haml")
35
42
  options[:layout] = :"../layouts/#{options[:layout]}"
36
43
  else
@@ -40,7 +47,7 @@ class FanforceApp::Sinatra < Sinatra::Base
40
47
  else
41
48
  options[:layout] = false
42
49
  end
43
- haml page, options
50
+ haml page_path, options
44
51
  end
45
52
 
46
53
  configure do
@@ -0,0 +1 @@
1
+ @import 'common/layouts/add_edit_initiative';
@@ -0,0 +1 @@
1
+ @import 'common/layouts/add_source';
@@ -0,0 +1 @@
1
+ @import 'common/layouts/convert_pending_initiative';
@@ -0,0 +1 @@
1
+ @import 'common/layouts/engage';
@@ -0,0 +1 @@
1
+ @import 'common/layouts/new_message';
@@ -0,0 +1 @@
1
+ @import 'common/layouts/source_details';
@@ -0,0 +1 @@
1
+ //= require common/layouts/add_edit_initiative
@@ -0,0 +1 @@
1
+ //= require common/layouts/add_source
@@ -0,0 +1 @@
1
+ //= require common/layouts/convert_pending_initiative
@@ -0,0 +1 @@
1
+ //= require common/layouts/new_message
@@ -0,0 +1,16 @@
1
+ body { padding:0; font-size:12px;
2
+ .btn-primary { background:#48739c; @include ff-gradient(#6a93bb, #48739c); border:1px solid #324e69; @include box-shadow(inset 1px 1px 0 #98badc); color:#ffffff; text-shadow:-1px -1px 1px #2d4963;
3
+ &:hover, &:active, &:focus, &.disabled, &[disabled] { background:#3f6890; @include ff-gradient(#5c85ad, #3f6890); text-decoration:none; }
4
+ }
5
+
6
+ textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
7
+ border: 1px solid #CCCCCC;
8
+ @include box-shadow(0 1px 1px rgba(0, 0, 0, 0.075) inset);
9
+ }
10
+
11
+ select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
12
+ @include border-radius(4px);
13
+ }
14
+
15
+ }
16
+ .btn { padding: 2px 10px; color: #666666; border-radius: 3px; font-size: 11.05px; background-color: #F5F5F5; @include ff-gradient(#FFFFFF, #E6E6E6); border-color: #CCCCCC #CCCCCC #B3B3B3; @include box-shadow(0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05)); text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); }
@@ -94,4 +94,4 @@
94
94
  @mixin reset-ul {
95
95
  list-style-type: none; list-style-position:outside; text-indent:0; padding-left:0; margin-left:0; line-height:inherit;
96
96
  li { margin:0; }
97
- }
97
+ }
@@ -0,0 +1,17 @@
1
+ .module-add-initiative-footer { position:absolute; bottom:0; left:0; padding:0 3px; @include box-sizing(border-box); text-align:left; width:100%; margin:0px; overflow:hidden;
2
+ &.disabled .footer { pointer-events: none;
3
+ label { @include opacity(.5); }
4
+ .input-wrapper { @include opacity(.5); cursor: not-allowed; }
5
+ button { @include opacity(.5); background: #c9d5e1; border-color: #a6b4c1; text-shadow: none; }
6
+ }
7
+ .footer { @include box-shadow(#ffffff 0 1px 0 inset); padding: 5px 0; border-top: 1px solid #e1e1e1;
8
+ label { font-weight:100; color:#666666; text-shadow:1px 1px 0 #ffffff; margin-left:20px; }
9
+ .input-wrapper { cursor: text; position:relative; display: inline-block; color: #555555; background: rgba(255, 255, 255, 0.75); @include border-radius(4px); border: 1px solid #CCCCCC; @include box-shadow(0 1px 1px rgba(0, 0, 0, 0.075) inset);
10
+ .prefix { pointer-events: none; font-size: 12px; font-weight: normal; line-height: 1.5; height:28px; vertical-align: middle; padding: 5px 0 0 8px; display:inline-block; }
11
+ input { font-size: 12px; font-weight: normal; background: transparent; padding-left: 0px; border:none; height:28px; @include box-shadow(none); min-width:250px; width:auto; display:inline-block; vertical-align: middle; }
12
+ }
13
+ button { margin-top: 0; margin-left: 2px; padding-top: 5px; padding-bottom: 5px;
14
+ i { margin-right: 5px; }
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,11 @@
1
+ $module_path: "/assets/common/module-error";
2
+ /////////////////////////////////////////////////////////////////////////////////////////
3
+
4
+ .module-error { position:relative; color:#ffffff; font-size:12; @include min-height(30px); @include border-radius(1px); line-height:30px; background:#e70000;
5
+ .msg { background:url(#{$module_path}/icon-error.png) 7px 7px no-repeat; padding:0px 13px 0 30px; }
6
+ }
7
+
8
+ .module-error-bubble { position:absolute; top:0; right:-240px;
9
+ .arrow-left { position:absolute; left:-9px; top:11px; width:11px; height:20px; background:url(#{$module_path}/arrow-left.png) left top no-repeat; }
10
+ .error { width:200px; @include border-radius(2px); background:#fd4141; border:#ff0000 1px solid; @include box-shadow(#bcbcbc 1px 1px 2px, #fe7474 1px 1px 0 inset); color:#ffffff; padding:12px; padding-bottom:10px; }
11
+ }
@@ -0,0 +1,63 @@
1
+ $module_path: '/assets/common/module-initiative-searcher';
2
+ /////////////////////////////////////////////////////////////////////////////////////////
3
+
4
+ .module-initiative-searcher { position:relative; width:100%; padding:20px 20px 15px; overflow:hidden;
5
+ &.supreme { @include ff-box(); }
6
+ .header { padding:0 0 5px; max-width:900px;
7
+ h2 { color:#505a62; text-shadow:#ffffff 1px 1px 0; margin-top:0; padding-bottom:5px; }
8
+ .form-row { position:relative; margin:0; padding:0; z-index:5;
9
+ .gigantic-input { width:auto;
10
+ input { width:100%; font-size:15px; height:30px; padding-left:5px; }
11
+ label.inputhint { font-size:15px; color:#666666; line-height: 27px; padding-top:2px; padding-left:8px; cursor: text; font-weight:normal; }
12
+ .icon { position:absolute; width:14px; height:18px; top:6px; right:0px; padding-left:6px; border-left: 1px solid #CCCCCC; background:url(#{$module_path}/icon-search.png) 6px center no-repeat; }
13
+ }
14
+ }
15
+ }
16
+ .searching { padding: 20px 0; font-weight: normal; color: #afb7c8;
17
+ .spinner { width:20px; height:20px; background:url(#{$module_path}/spinner.gif) 0 0 no-repeat; float:left; margin-right:10px; }
18
+ }
19
+ .results-empty { padding:0 0 25px; max-width:900px; position:relative; clear:both;
20
+ .module-error { padding-top:3px; top:-8px; position: absolute; width:100%; }
21
+ .module-featuretip { position:absolute; width:400px; top:-10px; left:25px; .arrow { left:100px; } }
22
+ button.primary { padding:5px 20px; }
23
+ }
24
+ .results-found { padding:0 0 25px; max-width:900px;
25
+ .module-error { clear:both; }
26
+ .search-results { overflow:hidden; position:relative; background:#e3eef8; @include border-radius(5px); margin-top:-34px; padding-top:40px; padding-bottom:7px; margin-bottom:20px;
27
+ .prev-page, .next-page { position:absolute; top:44px; cursor:pointer; display:block; width:25px; height:67px; margin-top:10px; background:url(#{$module_path}/sprite-arrows.png) 0 0 no-repeat; }
28
+ .prev-page { left:0;
29
+ &:hover { background-position:0 -71px; }
30
+ &.disabled { background-position:0 -142px; cursor:default; }
31
+ }
32
+ .next-page { right:0; background-position: -25px 0;
33
+ &:hover { background-position:-25px -71px; }
34
+ &.disabled { background-position:-25px -142px; cursor:default; }
35
+ }
36
+ ul.video-list { @include reset-ul(); overflow:hidden; margin:0 20px;
37
+ li { float:left; width:20%; min-width: 150px; color:#666666; position:relative; height:110px;
38
+ .result { cursor:pointer; position:absolute; position:absolute; height:87px; width:148px; top:0; left:50%; margin-left:-74px; @include opacity(0.3);
39
+ &.selected, &:hover {
40
+ @include opacity(1);
41
+ }
42
+ .module-video-thumbnail { border:5px solid #b4c9da; }
43
+ .title { width:138px; overflow:hidden; white-space:nowrap; text-overflow: ellipsis; font-size:$font-size-small; text-align:center; }
44
+ }
45
+ }
46
+ }
47
+ }
48
+ .selected-result { float:left; width:100%; }
49
+ .meta { position:relative; height:274px; margin-left: 500px;
50
+ > .title,.desc,.added { margin-bottom:5px; }
51
+ > .title { font-weight:bold; font-size:$font-size-large + 2; }
52
+ .desc, .added { color:#505a62; font-size:$font-size-small; line-height:$line-height; margin-bottom:15px; }
53
+ .desc { max-height:170px; overflow:hidden; }
54
+ .buttons-row { position:absolute; bottom:0; left:0; display:inline-block;
55
+ button.primary { padding:5px 20px; float:left; }
56
+ .module-featuretip { position:absolute; bottom:-20px; right:-284px; .arrow { top:60%; } }
57
+ .module-error { float:left; white-space:nowrap; margin-left:5px; }
58
+ }
59
+ }
60
+ .video { float:left; margin-right:20px; min-height:274px; background:#000000; }
61
+ .page { float:left; margin-right:20px; min-height:274px; width:480px; background:#666666; @include box-shadow(1px 1px 3px #999999); margin:1px; }
62
+ }
63
+ }
@@ -0,0 +1 @@
1
+ .module-page-loading { color:#cccccc; font-size:15px; text-align: center; padding-top:45px; }
@@ -0,0 +1,6 @@
1
+ $module_path: "/assets/common/module-saving-initiative";
2
+ /////////////////////////////////////////////////////////////////////////////////////////
3
+
4
+ .module-saving-initiative { text-align: center; height:100px; position:absolute; left:0; margin-top:80px; width:100%; color:#b9cddc; text-shadow:#ffffff 1px 1px 0; display:none; text-align:center;
5
+ .spinner { width:64px; height:64px; background:url(#{$module_path}/spinner.gif) 0 0 no-repeat; margin:0 auto 20px; }
6
+ }
@@ -0,0 +1,6 @@
1
+ $module_path: '/assets/common/module-start-here';
2
+ /////////////////////////////////////////////////////////////////////////////////////////
3
+ .module-start-here { padding: 10px 0 0 30px; position:relative;
4
+ .arrow { width: 114px; height: 61px; background:url(#{$module_path}/arrow.png) 6px center no-repeat;}
5
+ .text { color: #afb7c8; font-weight: bold; position:absolute; top: 60px; left: 155px; }
6
+ }
@@ -0,0 +1,15 @@
1
+ $module_path: '/assets/common/module-video-thumbnail';
2
+ /////////////////////////////////////////////////////////////////////////////////////////
3
+
4
+ .module-video-thumbnail { display:inline-block; position:relative;
5
+ .video-thumb { vertical-align:bottom; height:77px; width:138px; overflow:hidden; @include border-radius(2px); display:inline-block; position:relative;
6
+ img { top:0; min-height:77px; min-width:138px; display:block; position:absolute; left:0; }
7
+ }
8
+ .video-time { position:absolute; right:2px; bottom:2px; padding:0 4px; @include opacity(.75); line-height:14px; height:14px; font-weight:bold; font-size:11px; color:#ffffff; @include border-radius(3px); background:#000000; }
9
+ .play { width:55px; height:35px; position:absolute; left:50%; margin-left:-23px; top:50%; margin-top:-17px; display:none; background:url(#{$module_path}/icon-play.png) 0 0 no-repeat; z-index:5;
10
+ &:hover { background-position:0 -35px; }
11
+ }
12
+ &:hover {
13
+ .play { display:block; cursor:pointer; cursor:hand; }
14
+ }
15
+ }
@@ -1,83 +1 @@
1
- @import 'variables';
2
- //////////////////////////////////////////////////////////////////////////////////////////////////
3
- // COMMON TAGS
4
- //////////////////////////////////////////////////////////////////////////////////////////////////
5
- html { }
6
- body { font-family:$font-family; font-size:$font-size-normal; line-height:$line-height; }
7
-
8
- h1, .h1 { font-size: 30px; font-weight:bold; margin:10px 0; line-height:1em; }
9
- h2, .h2 { font-size:20px; font-weight:bold; margin:8px 0; line-height:1em; }
10
- h3, .h3 { font-size:17px; font-weight:bold; margin:6px 0; line-height:1em; }
11
- h4, .h4 { font-size:14px; font-weight:bold; margin:4px 0; line-height:1em; }
12
- h5, .h5 { font-size:$font-size-large; font-weight:bold; margin:2px 0; line-height:1em; }
13
- h6, .h6 { font-size:$font-size-normal; font-weight:bold; margin:2px 0; line-height:1em; }
14
- h7, .h7 { font-size:$font-size-small; font-weight:bold; margin:2px 0; line-height:1em; }
15
-
16
- p, .p { line-height:$line-height; margin-bottom:10px; }
17
- a { text-decoration:none; color:$link-color;
18
- &:hover { text-decoration:underline; }
19
- }
20
- strong, .strong { font-weight:bold; }
21
- emphasis, .emphasis { font-style:italic; }
22
-
23
-
24
- ul { list-style-type: square; list-style-position:outside; padding:0; margin-left:0; line-height:$line-height;
25
- li { margin-top:5px; margin-left:1em; }
26
- }
27
-
28
- ol { list-style-type:decimal; list-style-position:outside; padding:0; margin-left:0; line-height:$line-height;
29
- li { margin-top:5px; margin-left:1.5em; }
30
- }
31
-
32
- pre { font-family:"Courier New", Courier, monospace, sans-serif; color: #555; line-height: 1.6em; }
33
-
34
- //////////////////////////////////////////////////////////////////////////////////////////////////
35
- // HELPER CLASSES
36
- //////////////////////////////////////////////////////////////////////////////////////////////////
37
-
38
- .hide { display:none !important; }
39
-
40
- input[type='text'], input[type="password"], textarea { @include border-radius(5px); @include box-shadow(inset #dddddd 1px 1px 0); border:1px solid #aaaaaa; padding-top:0; padding-bottom:0; padding-left:6px; font-family:$font-family; font-size:$font-size-normal; height:27px; line-height:27px; }
41
- textarea { padding:4px 0 0 5px; line-height:1.3em; height:auto; }
42
- .form-row { clear:both; margin-bottom:10px; position:relative; }
43
- .form-buttons { }
44
-
45
- label.fLabel { color:#999999; font-family:$font-family; line-height:23px; margin:3px 0 0 8px; }
46
-
47
-
48
- //////////////////////////////////////////////////////////////////////////////////////////////////
49
- // BASE BUTTON STYLES
50
- //////////////////////////////////////////////////////////////////////////////////////////////////
51
- button,input[type=button],input[type=submit],input[type=reset],.button{ position:relative; @include border-radius(3px); @include box-shadow(inset 1px 1px 0 #ffffff); @include user-select(none); background:#e7e7e7; @include ff-gradient(#fafafa, #e7e7e7); border:1px solid #b0b5bb; color:#1e659b; cursor:pointer; cursor:hand; display:inline-block; font-size:12px; padding:3px 8px 3px 8px; line-height:15px; text-align:center; text-decoration:none; text-shadow:1px 1px 0 #ffffff;
52
- &:hover, &.hover{ background:#d7d7d7; @include ff-gradient(#eeeeee, #d7d7d7); text-decoration:none; }
53
- &:active,&.active{ @include box-shadow(inset 1px 1px 1px #c9cacb); text-shadow:none; }
54
- &:disabled,&.disabled{ opacity:0.5; cursor:default; text-shadow:none; pointer-events:none; }
55
- img { vertical-align:middle; }
56
-
57
- /* large */
58
- &.super{ font-size:13px; font-weight:bold; padding:5px 10px 5px 10px; }
59
-
60
- /* large */
61
- &.large{ font-size:12px; font-weight:bold; }
62
-
63
- /* small */
64
- &.small{ font-size:11px; padding:1px 5px 1px 5px; }
65
-
66
- /* toolbar */
67
- &.toolbar { font-size:11px; padding:0 3px 0 3px; background:#e4e4e4; @include ff-gradient(#f7f7f7, #e4e4e4); border:1px solid #a0a0a0; color:#444444; text-shadow:1px 1px 0 #ffffff;
68
- &:hover,&.hover { background:#dbdde0; @include ff-gradient(#f1f2f3, #dbdde0); text-decoration:none; }
69
- }
70
-
71
- /* primary */
72
- &.primary { background:#48739c; @include ff-gradient(#6a93bb, #48739c); border:1px solid #324e69; @include box-shadow(inset 1px 1px 0 #98badc); color:#ffffff; text-shadow:-1px -1px 1px #2d4963;
73
- &:hover,&.hover { background:#3f6890; @include ff-gradient(#5c85ad, #3f6890); text-decoration:none; }
74
- &:disabled,&.disabled{ @include ff-gradient(#e7e7e7, #e7e7e7); border:1px solid #b0b5bb; @include box-shadow(none); text-shadow:none; color:#999999; }
75
- }
76
-
77
- /* secondary */
78
- &.secondary { background:#d5e7f6; @include ff-gradient(#eaf3fb, #c3dcf1); border:1px solid #a3aab0; color:#4777a4; text-shadow:#ffffff 1px 1px 0;
79
- &:hover,&.hover { background:#b9d3e9; @include ff-gradient(#e1ebf5, #b9d3e9); text-decoration:none; }
80
- }
81
- }
82
-
83
1
 
@@ -4,7 +4,7 @@
4
4
  //////////////////////////////////////////////////////////////////////////////////////////////////
5
5
  $link-color: #1861a8;
6
6
  $action-color: #ffb400;
7
- $true-fan-color: #72c14b;
7
+ $true-fan-color: #72c14b;
8
8
  $error-color: #e70000;
9
9
 
10
10
  $font-family: 'Helvetica', Arial, sans-serif;
@@ -0,0 +1,27 @@
1
+ //////////////////////////////////////////////////////////////////////////////////////////////////
2
+ // COMPASS AND BOOTSTRAP
3
+ //////////////////////////////////////////////////////////////////////////////////////////////////
4
+ @import 'compass/css3';
5
+ @import 'compass/utilities';
6
+ @import 'vendors/bootstrap/css/bootstrap.min.css';
7
+ @import 'vendors/font-awesome/css/font-awesome.min.css';
8
+
9
+ //////////////////////////////////////////////////////////////////////////////////////////////////
10
+ // COMMON
11
+ //////////////////////////////////////////////////////////////////////////////////////////////////
12
+ @import 'common/mixins';
13
+ @import 'common/variables';
14
+ @import 'common/bootstrap-overrides';
15
+
16
+ @import 'common/module-page-loading';
17
+ @import 'common/module-saving-initiative';
18
+ @import 'common/module-add-initiative-footer';
19
+
20
+ //////////////////////////////////////////////////////////////////////////////////////////////////
21
+ // BASE STYLES (AS FEW AS POSSIBLE)
22
+ //////////////////////////////////////////////////////////////////////////////////////////////////
23
+
24
+ body { overflow:hidden; background: #F4F8FC;
25
+ .hide { display:none !important; }
26
+ .dropdown-menu { @include border-radius(4px); border:1px solid #aec7dd; @include box-shadow(1px 1px 3px rgba(0, 0, 0, 0.2), #ffffff 1px 1px 0 inset); background:#f7fafd; }
27
+ }
@@ -0,0 +1,18 @@
1
+ //////////////////////////////////////////////////////////////////////////////////////////////////
2
+ // COMPASS AND BOOTSTRAP
3
+ //////////////////////////////////////////////////////////////////////////////////////////////////
4
+ @import 'compass/css3';
5
+ @import 'compass/utilities';
6
+ @import 'vendors/bootstrap/css/bootstrap.min.css';
7
+ @import 'vendors/font-awesome/css/font-awesome.min.css';
8
+
9
+ //////////////////////////////////////////////////////////////////////////////////////////////////
10
+ // COMMON
11
+ //////////////////////////////////////////////////////////////////////////////////////////////////
12
+ @import 'common/mixins';
13
+ @import 'common/variables';
14
+ @import 'common/bootstrap-overrides';
15
+
16
+ //////////////////////////////////////////////////////////////////////////////////////////////////
17
+ // BASE STYLES (AS FEW AS POSSIBLE)
18
+ //////////////////////////////////////////////////////////////////////////////////////////////////