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
@@ -0,0 +1,6 @@
1
+ .chosen-container { font-size: 12px; }
2
+ .chosen-container-single {
3
+ .chosen-default, .chosen-single { line-height: 20px; height:22px;
4
+ div b { background-position: 0 0; }
5
+ }
6
+ }
@@ -430,3 +430,5 @@ $chosen-img-path: '/assets/vendors/chosen';
430
430
  }
431
431
  }
432
432
  /* @end */
433
+
434
+ @import 'chosen_override';
@@ -91,7 +91,7 @@ ko.bindingHandlers.chosen = {
91
91
  }
92
92
 
93
93
  ko.bindingHandlers.select2 = {
94
- init: ((element, valueAccessor, allBindingsAccessor) ->
94
+ init: (element, valueAccessor, allBindingsAccessor) ->
95
95
  obj = valueAccessor()
96
96
  allBindings = allBindingsAccessor()
97
97
  lookupKey = allBindings.lookupKey
@@ -105,12 +105,12 @@ ko.bindingHandlers.select2 = {
105
105
  ko.utils.domNodeDisposal.addDisposeCallback(element, ->
106
106
  $(element).select2('destroy')
107
107
  )
108
- )
109
- update: ((element, valueAccessor) ->
108
+
109
+ update: (element, valueAccessor, allBindingsAccessor) ->
110
110
  obj = valueAccessor()
111
111
  $(element).select2('enable', !!obj.enable) if obj.enable?
112
112
  $(element).trigger('change')
113
- )
113
+
114
114
  }
115
115
 
116
116
  ko.bindingHandlers.class =
@@ -40,7 +40,7 @@ body {
40
40
  &[disabled] { color:#cccccc;
41
41
  &:hover { color:#cccccc; background: transparent; }
42
42
  }
43
- &:hover { @extend a; text-decoration: none; background: #c6dcf1; text-shadow:1px 1px 0 #ffffff; }
43
+ &:hover { text-decoration: none; background: #c6dcf1; text-shadow:1px 1px 0 #ffffff; }
44
44
  }
45
45
  }
46
46
  }
@@ -783,6 +783,9 @@ the specific language governing permissions and limitations under the Apache Lic
783
783
  if (this.autofocus) this.focus();
784
784
 
785
785
  this.nextSearchTerm = undefined;
786
+
787
+ // MODIFIED
788
+ if (this.opts.afterInitialize) { this.opts.afterInitialize(this) }
786
789
  },
787
790
 
788
791
  // abstract
@@ -1,24 +1,35 @@
1
1
  class FanforceApp::CoreConfig
2
- attr_accessor :layout_for_index, :layout_for_dashboard
3
2
  attr_accessor :_id, :redis_url, :factory_root_dir, :root_dir, :dir_name, :show_error_details
4
3
  attr_accessor :bugsnag, :bugsnag_enabled
5
4
  attr_reader :type
6
5
 
7
- REDIS_URL = ENV['REDIS_URL'] || 'redis://localhost:6379'
6
+ PAGE_LAYOUTS_FOR = {
7
+ index: true,
8
+ dashboard: true,
9
+ add_initiative: true,
10
+ add_source: true,
11
+ close_popup: true,
12
+ edit_initiative: true,
13
+ engage: true,
14
+ new_message: true,
15
+ source_details: true,
16
+ }
8
17
 
9
18
  def initialize(root_dir)
10
- @layout_for_index = true
11
- @layout_for_dashboard = true
12
-
13
19
  @_id = ENV['FANFORCE_APP_ID']
14
20
  @root_dir = root_dir
15
21
  @factory_root_dir = File.expand_path '../../', __FILE__
16
- @redis_url = REDIS_URL
22
+ @redis_url = self.class.default_redis_url
17
23
  @show_error_details = false
18
24
 
19
25
  @bugsnag = (ENV['BUGSNAG_API_KEY'].present?) ? {api_key: ENV['BUGSNAG_API_KEY']} : nil
20
26
  end
21
27
 
28
+ def has_layout_for(page)
29
+ return false if !page
30
+ return PAGE_LAYOUTS_FOR[page.to_sym] == true
31
+ end
32
+
22
33
  def show_error_details=(bool)
23
34
  @show_error_details = [true,1,'1'].include?(bool)
24
35
  end
@@ -70,15 +81,48 @@ class FanforceApp::CoreConfig
70
81
  require "#{@root_dir}/_routes" if File.exists?("#{@root_dir}/_routes.rb")
71
82
  require "#{@root_dir}/routes" if File.exists?("#{@root_dir}/routes.rb")
72
83
 
73
- require "#{@factory_root_dir}/routes"
84
+ require "#{@factory_root_dir}/routes_core"
85
+ require "#{@factory_root_dir}/routes_connector"
86
+ require "#{@factory_root_dir}/routes_broadcaster"
87
+ require "#{@factory_root_dir}/routes_identifier"
88
+ require "#{@factory_root_dir}/routes_behavior"
89
+ require "#{@factory_root_dir}/routes_js_widget"
90
+ end
91
+
92
+ def load_env
93
+ self.class.load_env
94
+ end
95
+
96
+ def self.load_env
97
+ if (!ENV['RACK_ENV'] or ENV['RACK_ENV'] == 'development')
98
+ load_env_from_file("#{FanforceApp.config.root_dir}/.powenv") if File.exists?("#{FanforceApp.config.root_dir}/.powenv")
99
+ load_env_from_file("#{FanforceApp.config.root_dir}/.appenv") if File.exists?("#{FanforceApp.config.root_dir}/.appenv")
100
+ end
74
101
  end
75
102
 
76
103
  def load_redis
77
104
  self.class.load_redis(@redis_url)
78
105
  end
79
106
 
80
- def self.load_redis(redis_url=REDIS_URL)
107
+ def self.load_redis(redis_url=nil)
108
+ redis_url ||= default_redis_url
81
109
  $Redis = ::Redis.new(url: redis_url)
82
110
  end
83
111
 
112
+ def self.default_redis_url
113
+ ENV['REDIS_URL'] || 'redis://localhost:6379'
114
+ end
115
+
116
+ def self.load_env_from_file(file)
117
+ File.open(file, 'rb') do |file|
118
+ contents = file.read
119
+ lines = contents.gsub('export ', '').split(/\n\r?/).reject{|line| line.blank?}
120
+ lines.each do |line|
121
+ keyValue = line.split("=", 2)
122
+ next unless keyValue.count == 2
123
+ ENV[keyValue.first] = keyValue.last.gsub("'",'').gsub('"','')
124
+ end
125
+ end
126
+ end
127
+
84
128
  end
@@ -18,4 +18,21 @@ module Sinatra::FanforceHelpers
18
18
  $Redis.get("installed:#{addon_type}-#{addon_id}:#{organization_id}")
19
19
  end
20
20
 
21
+ # Creates a string representation of a javascript object for ractive.js
22
+ def compile_ractive_templates(options={}, &block)
23
+ context = Object.new
24
+ class << context
25
+ include Haml::Helpers
26
+ end
27
+ context.init_haml_helpers
28
+
29
+ format = options[:format] == 'html' ? :html : :json
30
+
31
+ return context.capture_haml(&block) if format == :html
32
+ single_line_html = context.capture_haml(&block).split(/\r?\n/).inject('') {|sl, l| sl += l.strip + ' ' }
33
+ matches = single_line_html.scan(/<script id=[\"'](.*?)[\"'](?:.*?)>(.*?)(?:<\/script>)/mi)
34
+
35
+ matches.inject({}) {|t,m| t[m[0]] = m[1]; t }.to_json
36
+ end
37
+
21
38
  end
@@ -0,0 +1,27 @@
1
+ module Sinatra::RactiveHelpers
2
+
3
+ def RACTIVE(helper, &block)
4
+ begin require 'haml' rescue LoadError raise 'You must have the haml gem installed to use Fanforce.compile_jquery_templates.' end
5
+ raise ArgumentError, "Missing block" unless block_given?
6
+ context = Object.new
7
+ class << context
8
+ include Haml::Helpers
9
+ end
10
+ context.init_haml_helpers
11
+ helper = '#'+helper if helper !~ /^[#\^]/
12
+ "{{#{helper}}}\n" + context.capture_haml(&block) + "{{/#{helper.gsub(/(#|\^)/,'')}}}"
13
+ end
14
+
15
+ def IF(helper, &block)
16
+ RACTIVE(helper, &block)
17
+ end
18
+
19
+ def ELSE_IF(helper, &block)
20
+ RACTIVE(helper, &block)
21
+ end
22
+
23
+ def FOREACH(helper, &block)
24
+ RACTIVE(helper, &block)
25
+ end
26
+
27
+ end
@@ -0,0 +1,19 @@
1
+ <?xml version='1.0' encoding='utf-8' ?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ %html
4
+ %head
5
+ %title Fanforce
6
+ %meta{'http-equiv'=>'Content-Type', content:'text/html; charset=iso-8859-1'}/
7
+ %meta{'http-equiv'=>'Content-Language', content: 'en-us'}/
8
+ = stylesheet '/add_edit_initiative.css'
9
+ :javascript
10
+ BASE_DOMAIN = #{Fanforce.base_domain.to_json}
11
+ API_DOMAIN = #{Fanforce.api_domain.to_json}
12
+ ASSETS_DOMAIN = #{Fanforce.assets_domain.to_json}
13
+
14
+ %body
15
+ = yield
16
+ = javascript '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'
17
+ = javascript "//#{Fanforce.eye_domain}/devforce.js#{'?DEBUG=1&DYNAMIC=1' if ENV['RACK_ENV']=='development'}"
18
+ = javascript '/add_edit_initiative.js'
19
+ = yield_content :after_core_js
@@ -0,0 +1,19 @@
1
+ <?xml version='1.0' encoding='utf-8' ?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ %html
4
+ %head
5
+ %title Fanforce
6
+ %meta{'http-equiv'=>'Content-Type', content:'text/html; charset=iso-8859-1'}/
7
+ %meta{'http-equiv'=>'Content-Language', content: 'en-us'}/
8
+ = stylesheet '/add_source.css'
9
+ :javascript
10
+ BASE_DOMAIN = #{Fanforce.base_domain.to_json}
11
+ API_DOMAIN = #{Fanforce.api_domain.to_json}
12
+ ASSETS_DOMAIN = #{Fanforce.assets_domain.to_json}
13
+
14
+ %body
15
+ = yield
16
+ = javascript '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'
17
+ = javascript "//#{Fanforce.eye_domain}/devforce.js#{'?DEBUG=1&DYNAMIC=1' if ENV['RACK_ENV']=='development'}"
18
+ = javascript '/add_source.js'
19
+ = yield_content :after_core_js
@@ -0,0 +1,19 @@
1
+ <?xml version='1.0' encoding='utf-8' ?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ %html
4
+ %head
5
+ %title Fanforce
6
+ %meta{'http-equiv'=>'Content-Type', content:'text/html; charset=iso-8859-1'}/
7
+ %meta{'http-equiv'=>'Content-Language', content: 'en-us'}/
8
+ = stylesheet '/convert_pending_initiative.css'
9
+ :javascript
10
+ BASE_DOMAIN = #{Fanforce.base_domain.to_json}
11
+ API_DOMAIN = #{Fanforce.api_domain.to_json}
12
+ ASSETS_DOMAIN = #{Fanforce.assets_domain.to_json}
13
+
14
+ %body
15
+ = yield
16
+ = javascript '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'
17
+ = javascript "//#{Fanforce.eye_domain}/devforce.js#{'?DEBUG=1&DYNAMIC=1' if ENV['RACK_ENV']=='development'}"
18
+ = javascript '/convert_pending_initiative.js'
19
+ = yield_content :after_core_js
@@ -0,0 +1,38 @@
1
+ <?xml version='1.0' encoding='utf-8' ?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ %html
4
+ %head
5
+ %title Fanforce
6
+ %meta{'http-equiv'=>'Content-Type', content:'text/html; charset=iso-8859-1'}/
7
+ %meta{'http-equiv'=>'Content-Language', content: 'en-us'}/
8
+ = stylesheet '/engage.css'
9
+ %body.layout-engage
10
+ .lyt-root
11
+ .lyt-header
12
+ #hello
13
+ #logo
14
+ = yield
15
+ .lyt-root-footer
16
+ .lyt-footer
17
+ %span#distributed-by
18
+ %a{href: "http://#{Fanforce.base_domain}"} Powered by Fanforce.
19
+
20
+ = javascript "//#{Fanforce.eye_domain}/#{params[:organization_slug]}-fanforce.js#{'?DEBUG=true&DYNAMIC=true' if ENV['RACK_ENV']=='development'}" do
21
+ FF.option('track_browse_webpage', false)
22
+ FF.option('dynamic_url', FF.browser.uri.scheme + '://' + '#{FanforcePlugin._id}.${SHORT_DOMAIN}/${INITIATIVE_SLUG_ID}')
23
+
24
+ = yield_content :after_fanforce_js
25
+ :coffeescript
26
+ FF.on('logout', ->
27
+ $('#hello').html('')
28
+ )
29
+ FF.organization (organization)->
30
+ if organization.website_url
31
+ $('#distributed-by').html('Distributed by <a href="' + organization.website_url + '">' + organization.name + '</a>.&nbsp;')
32
+ $('#logo').html('<div class="logo"><a href="' + organization.website_url + '"><img src="' + organization.logo_url + '"></a></div>') if organization.logo_url
33
+ else
34
+ $('#distributed-by').html('Distributed by ' + organization.name + '.&nbsp;')
35
+ $('#logo').html('<div class="logo"><img src="' + organization.logo_url + '"></div>') if organization.logo_url
36
+ FF.visitor (visitor)->
37
+ return if !visitor.access_level
38
+ $('#hello').html('<div class="hello"><div class="hello-wrapper"><span class="greeting">Hello, ' + visitor.first_name + '!</span><a href="javascript: FF.logout(); void(0)">Logout</a></div></div>')
@@ -0,0 +1,19 @@
1
+ <?xml version='1.0' encoding='utf-8' ?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ %html
4
+ %head
5
+ %title Fanforce
6
+ %meta{'http-equiv'=>'Content-Type', content:'text/html; charset=iso-8859-1'}/
7
+ %meta{'http-equiv'=>'Content-Language', content: 'en-us'}/
8
+ = stylesheet '/new_message.css'
9
+ :javascript
10
+ BASE_DOMAIN = #{Fanforce.base_domain.to_json}
11
+ API_DOMAIN = #{Fanforce.api_domain.to_json}
12
+ ASSETS_DOMAIN = #{Fanforce.assets_domain.to_json}
13
+
14
+ %body
15
+ = yield
16
+ = javascript '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'
17
+ = javascript "//#{Fanforce.eye_domain}/devforce.js#{'?DEBUG=1&DYNAMIC=1' if ENV['RACK_ENV']=='development'}"
18
+ = javascript '/new_message.js'
19
+ = yield_content :after_core_js
@@ -0,0 +1,19 @@
1
+ <?xml version='1.0' encoding='utf-8' ?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ %html
4
+ %head
5
+ %title Fanforce
6
+ %meta{'http-equiv'=>'Content-Type', content:'text/html; charset=iso-8859-1'}/
7
+ %meta{'http-equiv'=>'Content-Language', content: 'en-us'}/
8
+ = stylesheet '/source_details.css'
9
+ :javascript
10
+ BASE_DOMAIN = #{Fanforce.base_domain.to_json}
11
+ API_DOMAIN = #{Fanforce.api_domain.to_json}
12
+ ASSETS_DOMAIN = #{Fanforce.assets_domain.to_json}
13
+
14
+ %body
15
+ = yield
16
+ = javascript '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'
17
+ = javascript "//#{Fanforce.eye_domain}/devforce.js#{'?DEBUG=1&DYNAMIC=1' if ENV['RACK_ENV']=='development'}"
18
+ = javascript '/source_details.js'
19
+ = yield_content :after_core_js
@@ -0,0 +1,44 @@
1
+ class FanforceApp::Sinatra
2
+
3
+ # ARCHIVE INITIATIVE ###########################################################
4
+ def route_archive_initiative(params)
5
+ json status: 'finished-processing'
6
+ end
7
+ post '/:com_behavior_shortid/archive_initiative' do route_archive_initiative(params) end
8
+
9
+ # DESTROY INITIATIVE ###########################################################
10
+ def route_destroy_initiative(params)
11
+ json status: 'finished-processing'
12
+ end
13
+ post '/:com_behavior_shortid/destroy_initiative' do route_destroy_initiative(params) end
14
+
15
+ # AUTOCREATE PENDING INITIATIVE ###########################################################
16
+ def route_autocreate_pending_initiative(params)
17
+ json status: 'finished-processing'
18
+ end
19
+ get '/:com_behavior_shortid/autocreate_pending_initiative' do route_autocreate_pending_initiative(params) end
20
+
21
+ # ADD INITIATIVE UI ############################################################
22
+ def route_add_initiative(params)
23
+ page :add_initiative, :layout => :add_edit_initiative, com_dir: "#{params[:com_behavior_shortid]}"
24
+ end
25
+ get '/:com_behavior_shortid/add_initiative.html' do route_add_initiative(params) end
26
+
27
+ # ADD PENDING INITIATIVE UI ############################################################
28
+ def route_convert_pending_initiative(params)
29
+ page :convert_pending_initiative, :layout => :convert_pending_initiative, com_dir: "#{params[:com_behavior_shortid]}"
30
+ end
31
+ get '/:com_behavior_shortid/convert_pending_initiative.html' do route_convert_pending_initiative(params) end
32
+
33
+ # EDIT INITIATIVE UI ###########################################################
34
+ def route_edit_initiative(params)
35
+ page :edit_initiative, :layout => :add_edit_initiative, com_dir: "#{params[:com_behavior_shortid]}"
36
+ end
37
+ get '/:com_behavior_shortid/edit_initiative.html' do route_edit_initiative(params) end
38
+
39
+ # ENGAGE #######################################################################
40
+ def route_engage_page(params)
41
+ page :engage, :layout => :engage, com_dir: "#{params[:com_behavior_shortid]}"
42
+ end
43
+
44
+ end
@@ -0,0 +1,9 @@
1
+ class FanforceApp::Sinatra
2
+
3
+ # NEW MESSAGE ##################################################################
4
+ def route_new_message(params)
5
+ page :new_message, :layout => :new_message
6
+ end
7
+ get '/new_message.html' do route_new_message(params) end
8
+
9
+ end
@@ -0,0 +1,21 @@
1
+ class FanforceApp::Sinatra
2
+
3
+ # ADD SOURCE ##################################################################
4
+ def route_add_source(params)
5
+ page :add_source, :layout => :add_source
6
+ end
7
+ get '/:com_connector_shortid/add_source.html' do route_add_source(params) end
8
+
9
+ # CLOSE POPUP #################################################################
10
+ def route_close_popup(params)
11
+ page :close_popup
12
+ end
13
+ get '/close_popup.html' do route_close_popup(params) end
14
+
15
+ # SOURCE DETAILS ##############################################################
16
+ def route_source_details(params)
17
+ page :source_details, :layout => :source_details
18
+ end
19
+ get '/:com_connector_shortid/source_details.html' do route_source_details(params) end
20
+
21
+ end
@@ -11,13 +11,13 @@ class FanforceApp::Sinatra
11
11
  # INSTALL ######################################################################
12
12
  def route_install(params)
13
13
  raise "This is not a valid app install request: #{env['HTTP_HOST']}" if !ff.valid_install_request?(params)
14
- api_key = $Redis.get("installed:#{ff.params[:addon_type]}-#{ff.params[:addon_id]}:#{params[:organization_id]}")
14
+ api_key = $Redis.get("installed:app-#{ff.params[:app_id]}:#{params[:organization_id]}")
15
15
 
16
16
  if api_key.present? and api_key != params[:api_key]
17
17
  is_valid_key = Fanforce::API.new.get("/api_auths/is_valid_key/#{params[:api_key]}", organization_id: params[:organization_id], app_id: params[:app_id])[:result]
18
- raise 'A different API key already exists for this addon. Please uninstall first.' if !is_valid_key
18
+ raise 'A different API key already exists for this app. Please uninstall first.' if !is_valid_key
19
19
  end
20
- $Redis.set("installed:#{ff.params[:addon_type]}-#{ff.params[:addon_id]}:#{params[:organization_id]}", params[:api_key])
20
+ $Redis.set("installed:app-#{ff.params[:app_id]}:#{params[:organization_id]}", params[:api_key])
21
21
  ff.auth(params[:api_key])
22
22
 
23
23
  json status: 'finished-processing'
@@ -27,14 +27,14 @@ class FanforceApp::Sinatra
27
27
  # UNINSTALL ####################################################################
28
28
  def route_uninstall(params)
29
29
  raise 'This is not a valid app uninstall request.' if !ff.valid_uninstall_request?(params)
30
- api_key = $Redis.get("installed:#{ff.params[:addon_type]}-#{ff.params[:addon_id]}:#{params[:organization_id]}")
30
+ api_key = $Redis.get("installed:app-#{ff.params[:app_id]}:#{params[:organization_id]}")
31
31
 
32
32
  if api_key.present? and api_key != params[:api_key]
33
33
  is_valid_key = Fanforce::API.new.get("/api_auths/is_valid_key/#{params[:api_key]}", organization_id: params[:organization_id], app_id: params[:app_id])[:result]
34
- raise 'API keys must match before an addon can be uninstalled.' if !is_valid_key
34
+ raise 'API keys must match before an app can be uninstalled.' if !is_valid_key
35
35
  end
36
36
 
37
- $Redis.del("installed:#{ff.params[:addon_type]}-#{ff.params[:addon_id]}:#{params[:organization_id]}")
37
+ $Redis.del("installed:app-#{ff.params[:app_id]}:#{params[:organization_id]}")
38
38
  json status: 'finished-processing'
39
39
  end
40
40
  any '/uninstall' do route_uninstall(params) end