fanforce-app-factory 2.0.0.rc2 → 2.0.0.rc4
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.
- checksums.yaml +4 -4
- data/lib/fanforce/app_factory/Routes.rb +31 -0
- data/lib/fanforce/app_factory/asset_framework/app_factory/directives/initiative-footer/_initiative-footer.coffee +1 -1
- data/lib/fanforce/app_factory/asset_framework/app_factory/scafolding/_engagement.scss +1 -0
- data/lib/fanforce/app_factory/core_config.rb +3 -3
- data/lib/fanforce/app_factory/directive_views/initiative-footer.haml +8 -0
- data/lib/fanforce/app_factory/scafolding/Routes.rb +1 -1
- data/lib/fanforce/app_factory/scafolding/layouts/{engage.haml → engagement.haml} +2 -2
- data/lib/fanforce/app_factory/scafolding/scafolding_assets/css/engagement.scss +66 -0
- data/lib/fanforce/app_factory/sinatra/_load.rb +10 -0
- data/lib/fanforce/app_factory/sinatra/error_handling.rb +4 -3
- data/lib/fanforce/app_factory/sinatra/helper_routes/com_behavior.rb +2 -2
- data/lib/fanforce/app_factory/version.rb +1 -1
- metadata +6 -3
- data/lib/fanforce/app_factory/sinatra/Routes.rb +0 -17
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9431c182b75b2b4653a85bd0c8e7359bbd607458
         | 
| 4 | 
            +
              data.tar.gz: ca5ba701910a7a319fff8f899009e27709bf37ab
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d764c6b657376eb5556b92941053855f26e5d0405ecda426fca06869b8b6cca582d7cc33e83ba80ae799979aba6731c76601da9e0d6832eb645c57cbe2eee212
         | 
| 7 | 
            +
              data.tar.gz: 28b95d97db2f491bc300d08591e03d32762123ff3bdd51b4bf988526d25118e5dc978a2987566b65fe83f1c93c2cfdfdd9d72f4d90d6abd952c1daa93b6af857
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            class Fanforce::App::Sinatra
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              get '/internals/config.json' do
         | 
| 4 | 
            +
                file = File.open("#{Fanforce::App.root_dir}/config.json")
         | 
| 5 | 
            +
                config = MultiJson.load(file.read, symbolize_keys: true)
         | 
| 6 | 
            +
                config[:iron_workers] ||= []
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                config[:iron_workers].each do |iron_worker|
         | 
| 9 | 
            +
                  iron_worker[:token] = ENV['IRON_TOKEN']
         | 
| 10 | 
            +
                  iron_worker[:project_id] = ENV['IRON_PROJECT_ID']
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                config.to_json
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              post '/internals/config.json' do
         | 
| 17 | 
            +
                filename = "#{Fanforce::App.root_dir}/config.json"
         | 
| 18 | 
            +
                file = File.open(filename)
         | 
| 19 | 
            +
                old_config = MultiJson.load(file.read, symbolize_keys: true)
         | 
| 20 | 
            +
                new_config = MultiJson.load(params[:config], symbolize_keys: true)
         | 
| 21 | 
            +
                raise 'IUIDs do not match' if old_config[:_iuid] and old_config[:_iuid] != new_config[:_iuid]
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                File.open(filename, 'w') {|f| f.write(JSON.pretty_generate(Hash[new_config.sort])) }
         | 
| 24 | 
            +
                json status: 'finished'
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              get '/app_factory/directives/:filename' do
         | 
| 28 | 
            +
                factory_directive(params[:filename])
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            end
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            @import 'scafolding_assets/css/engagement';
         | 
| @@ -22,8 +22,8 @@ class Fanforce::App::CoreConfig | |
| 22 22 | 
             
                @factory_dir || (raise 'factory_dir is missing')
         | 
| 23 23 | 
             
              end
         | 
| 24 24 |  | 
| 25 | 
            -
              def show_error_details=( | 
| 26 | 
            -
                @show_error_details = [ | 
| 25 | 
            +
              def show_error_details=(opt)
         | 
| 26 | 
            +
                @show_error_details = ['1','text'].include?(opt.to_s) ? opt.to_s : false
         | 
| 27 27 | 
             
              end
         | 
| 28 28 |  | 
| 29 29 | 
             
              def redis_url
         | 
| @@ -69,7 +69,7 @@ class Fanforce::App::CoreConfig | |
| 69 69 | 
             
                require "#{@factory_dir}/sinatra/helper_routes/com_js_widget"
         | 
| 70 70 |  | 
| 71 71 | 
             
                Dir["#{@root_dir}/initializers/*.rb"].each {|f| require f } if File.directory?("#{@root_dir}/initializers")
         | 
| 72 | 
            -
                require "#{@factory_dir}/ | 
| 72 | 
            +
                require "#{@factory_dir}/Routes"
         | 
| 73 73 | 
             
                require "#{@root_dir}/Routes"
         | 
| 74 74 | 
             
              end
         | 
| 75 75 |  | 
| @@ -0,0 +1,8 @@ | |
| 1 | 
            +
            .footer
         | 
| 2 | 
            +
              %label Save initiative as...
         | 
| 3 | 
            +
              .input-wrapper(onclick='$(this).find("input").focus()')
         | 
| 4 | 
            +
                .prefix {{prefix}}
         | 
| 5 | 
            +
                %input.form-control.input-sm(type='text' ng-disabled='is_disabled' ng-model='initiative_name')
         | 
| 6 | 
            +
              %button.btn.btn-sm.btn-primary(ng-click='save()' ng-disabled='is_disabled')
         | 
| 7 | 
            +
                %i.icon-plus.icon-white
         | 
| 8 | 
            +
                Create
         | 
| @@ -57,7 +57,7 @@ class App::Sinatra | |
| 57 57 | 
             
              ######################################################################################################################
         | 
| 58 58 | 
             
              # ENGAGE
         | 
| 59 59 |  | 
| 60 | 
            -
              #static '/:organization_slug/:com_behavior_shortid/:initiative_id', : | 
| 60 | 
            +
              #static '/:organization_slug/:com_behavior_shortid/:initiative_id', :engagement do route_engagement_page_ui end
         | 
| 61 61 |  | 
| 62 62 | 
             
              ######################################################################################################################
         | 
| 63 63 |  | 
| @@ -5,8 +5,8 @@ | |
| 5 5 | 
             
                %title Fanforce
         | 
| 6 6 | 
             
                %meta{'http-equiv'=>'Content-Type', content:'text/html; charset=iso-8859-1'}/
         | 
| 7 7 | 
             
                %meta{'http-equiv'=>'Content-Language', content: 'en-us'}/
         | 
| 8 | 
            -
                = stylesheet '/ | 
| 9 | 
            -
              %body.layout- | 
| 8 | 
            +
                = stylesheet '/engagement.css'
         | 
| 9 | 
            +
              %body.layout-engagement
         | 
| 10 10 | 
             
                .lyt-root
         | 
| 11 11 | 
             
                  .lyt-header
         | 
| 12 12 | 
             
                    #hello
         | 
| @@ -0,0 +1,66 @@ | |
| 1 | 
            +
            @import 'compass/css3';
         | 
| 2 | 
            +
            @import "compass/layout/sticky-footer";
         | 
| 3 | 
            +
            @import 'compass/utilities';
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            //////////////////////////////////////////////////////////////////////////////////////////////////
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            @import 'app_factory/common';
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            //////////////////////////////////////////////////////////////////////////////////////////////////
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            h1, .h1 { font-size: 30px; font-weight:bold; margin:10px 0; line-height:1em; }
         | 
| 12 | 
            +
            h2, .h2 { font-size: 20px; font-weight:bold; margin:8px 0; line-height:1em; }
         | 
| 13 | 
            +
            h3, .h3 { font-size: 17px; font-weight:bold; margin:6px 0; line-height:1em; }
         | 
| 14 | 
            +
            h4, .h4 { font-size: 14px; font-weight:bold; margin:4px 0; line-height:1em; }
         | 
| 15 | 
            +
            h5, .h5 { font-size: 13px; font-weight: bold; margin:2px 0; line-height:1em; }
         | 
| 16 | 
            +
            h6, .h6 { font-size: 12px; font-weight: bold; margin:2px 0; line-height:1em; }
         | 
| 17 | 
            +
            h7, .h7 { font-size: 11px; font-weight: bold; margin:2px 0; line-height:1em; }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            p, .p { line-height:1.5em; margin-bottom:10px; }
         | 
| 20 | 
            +
            a { text-decoration:none; color:#1861a8;
         | 
| 21 | 
            +
              &:hover { text-decoration:underline; }
         | 
| 22 | 
            +
            }
         | 
| 23 | 
            +
            strong, .strong { font-weight:bold; }
         | 
| 24 | 
            +
            emphasis, .emphasis { font-style:italic; }
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            ul { list-style-type: square; list-style-position:outside; padding:0; margin-left:0; line-height:1.5em;
         | 
| 27 | 
            +
              li { margin-top:5px; margin-left:1em; }
         | 
| 28 | 
            +
            }
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            ol { list-style-type:decimal; list-style-position:outside; padding:0; margin-left:0; line-height:1.5em;
         | 
| 31 | 
            +
              li { margin-top:5px; margin-left:1.5em; }
         | 
| 32 | 
            +
            }
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            pre { font-family:"Courier New", Courier, monospace, sans-serif; color: #555; line-height: 1.6em; }
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            .hide { display:none !important; }
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            //////////////////////////////////////////////////////////////////////////////////////////////////
         | 
| 39 | 
            +
            // FRAMEWORK: MODULE ACTIVATION
         | 
| 40 | 
            +
            //////////////////////////////////////////////////////////////////////////////////////////////////
         | 
| 41 | 
            +
            html { height:100%; }
         | 
| 42 | 
            +
            body { height: 100%; background-color:#292a2e; @include ff-gradient(#26262a,#2b2d31); text-align:center; margin:0; font-family:'Helvetica', Arial, sans-serif; font-size:12px; line-height:1.5em;
         | 
| 43 | 
            +
              @include sticky-footer(40px, ".lyt-root", ".lyt-root-footer", ".lyt-footer");
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              .lyt-root { @include ff-gradient(#26262a,#2b2d31); }
         | 
| 46 | 
            +
              .lyt-header { min-height:80px;
         | 
| 47 | 
            +
                .hello { background: #2d2d31; height:40px; line-height: 44px; text-align: right; border-bottom:1px solid #000000; @include box-shadow(#343438 0 1px 0);
         | 
| 48 | 
            +
                  .hello-wrapper { max-width: 960px; margin:0 auto; }
         | 
| 49 | 
            +
                  .greeting { color: #858789; font-style: italic; padding-right:10px; font-weight: 100; }
         | 
| 50 | 
            +
                  a { font-weight: bold; color: #aeb2b4; }
         | 
| 51 | 
            +
                }
         | 
| 52 | 
            +
                .logo { border-bottom:1px solid #000000; @include box-shadow(#343438 0 1px 0); background-position: center center; background-repeat:no-repeat;
         | 
| 53 | 
            +
                  img { margin-top:18px; }
         | 
| 54 | 
            +
                }
         | 
| 55 | 
            +
              }
         | 
| 56 | 
            +
              .lyt-footer { color:#565d65; font-size:10px; line-height:40px;  border-top:1px solid #343438; @include box-shadow(#000000 0 -1px 0);
         | 
| 57 | 
            +
                a { color:#565d65;
         | 
| 58 | 
            +
                  &:hover { color:#747d88; }
         | 
| 59 | 
            +
                }
         | 
| 60 | 
            +
              }
         | 
| 61 | 
            +
             | 
| 62 | 
            +
              // layout-specific components
         | 
| 63 | 
            +
              .ff-widget { display:inline-block; @include box-shadow(#000000 2px 2px 2px); border:10px solid #ffffff; @include border-radius(3px); margin:50px 0 50px; color: #444444;
         | 
| 64 | 
            +
                .loading { line-height: 100px; }
         | 
| 65 | 
            +
              }
         | 
| 66 | 
            +
            }
         | 
| @@ -43,6 +43,10 @@ class Fanforce::App::Sinatra < Sinatra::Base | |
| 43 43 | 
             
                end
         | 
| 44 44 | 
             
              end
         | 
| 45 45 |  | 
| 46 | 
            +
              def self.create_basic_routes_from_views
         | 
| 47 | 
            +
                create_basic_routes_from(:views)
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 46 50 | 
             
              def self.create_basic_route(path)
         | 
| 47 51 | 
             
                get "/#{path}" do page(path) end
         | 
| 48 52 | 
             
              end
         | 
| @@ -52,6 +56,12 @@ class Fanforce::App::Sinatra < Sinatra::Base | |
| 52 56 | 
             
                get(url, &block)
         | 
| 53 57 | 
             
              end
         | 
| 54 58 |  | 
| 59 | 
            +
              def factory_directive(page)
         | 
| 60 | 
            +
                factory_dir = Pathname.new(Fanforce::App.config.factory_dir)
         | 
| 61 | 
            +
                app_views_dir = Pathname.new(settings.views)
         | 
| 62 | 
            +
                haml :"#{factory_dir.relative_path_from(app_views_dir).to_s}/directive_views/#{page}"
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 55 65 | 
             
              def page(page, options={})
         | 
| 56 66 | 
             
                app_views_dir = Pathname.new(settings.views)
         | 
| 57 67 | 
             
                page = :"#{options[:com_dir]}/#{page}" if File.exists?("#{app_views_dir}/#{options[:com_dir]}/#{page}.haml")
         | 
| @@ -12,14 +12,15 @@ class Fanforce::App::Sinatra | |
| 12 12 | 
             
                end
         | 
| 13 13 | 
             
                message = errors[0][:message]
         | 
| 14 14 |  | 
| 15 | 
            +
                show_error_details = params[:show_error_details] || Fanforce::App.config.show_error_details
         | 
| 15 16 | 
             
                admin_details = fetch_admin_details(e, errors)
         | 
| 16 17 | 
             
                Bugsnag.notify(e, admin_details.merge(app_id: Fanforce::App.app_id)) if Fanforce::App.is_bugsnag_enabled?
         | 
| 17 18 |  | 
| 18 19 | 
             
                body = {errors: message}
         | 
| 19 | 
            -
                body.merge!(admin_details.merge(backtrace: e.backtrace)).delete(:public_response) if  | 
| 20 | 
            +
                body.merge!(admin_details.merge(backtrace: e.backtrace)).delete(:public_response) if show_error_details
         | 
| 20 21 |  | 
| 21 22 | 
             
                status(e.respond_to?(:code ) ? e.code : 500)
         | 
| 22 | 
            -
                if  | 
| 23 | 
            +
                if show_error_details == 'text'
         | 
| 23 24 | 
             
                  response.headers['Content-Type'] = 'text/plain'
         | 
| 24 25 | 
             
                  format_as_text(body)
         | 
| 25 26 | 
             
                else
         | 
| @@ -29,7 +30,7 @@ class Fanforce::App::Sinatra | |
| 29 30 |  | 
| 30 31 | 
             
              def format_as_text(body)
         | 
| 31 32 | 
             
                text =  "--------------------------------------------------------------------------------------------------------\n"
         | 
| 32 | 
            -
                text += "ERROR: #{body[: | 
| 33 | 
            +
                text += "ERROR: #{body[:raw_message]}\n"
         | 
| 33 34 | 
             
                text += "CLASS: #{body[:error_class]}\n" if body[:error_class]
         | 
| 34 35 | 
             
                text += "\nCURL COMMAND: #{body[:curl_command]}\n" if body[:curl_command]
         | 
| 35 36 | 
             
                text += "\nBACKTRACE:\n#{body[:backtrace].join("\n")}\n" if body[:backtrace]
         | 
| @@ -8,8 +8,8 @@ class Fanforce::App::Sinatra | |
| 8 8 | 
             
                page :edit_initiative, :layout => :standard, com_dir: params[:com_behavior_shortid]
         | 
| 9 9 | 
             
              end
         | 
| 10 10 |  | 
| 11 | 
            -
              def  | 
| 12 | 
            -
                page : | 
| 11 | 
            +
              def route_engagement_page_ui
         | 
| 12 | 
            +
                page :engagement, :layout => :engagement, com_dir: params[:com_behavior_shortid]
         | 
| 13 13 | 
             
              end
         | 
| 14 14 |  | 
| 15 15 | 
             
              def route_archive_initiative_callback
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: fanforce-app-factory
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.0.0. | 
| 4 | 
            +
              version: 2.0.0.rc4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Caleb Clark
         | 
| @@ -308,6 +308,7 @@ files: | |
| 308 308 | 
             
            - fanforce-app-factory.gemspec
         | 
| 309 309 | 
             
            - lib/fanforce/app_factory.rb
         | 
| 310 310 | 
             
            - lib/fanforce/app_factory/Rakefile
         | 
| 311 | 
            +
            - lib/fanforce/app_factory/Routes.rb
         | 
| 311 312 | 
             
            - lib/fanforce/app_factory/app.rb
         | 
| 312 313 | 
             
            - lib/fanforce/app_factory/asset_framework/app_factory/_bootstrap.scss
         | 
| 313 314 | 
             
            - lib/fanforce/app_factory/asset_framework/app_factory/_common.scss
         | 
| @@ -359,6 +360,7 @@ files: | |
| 359 360 | 
             
            - lib/fanforce/app_factory/asset_framework/app_factory/lib/ng-visible.js
         | 
| 360 361 | 
             
            - lib/fanforce/app_factory/asset_framework/app_factory/lib/url.coffee
         | 
| 361 362 | 
             
            - lib/fanforce/app_factory/asset_framework/app_factory/lib/utils.coffee
         | 
| 363 | 
            +
            - lib/fanforce/app_factory/asset_framework/app_factory/scafolding/_engagement.scss
         | 
| 362 364 | 
             
            - lib/fanforce/app_factory/asset_framework/app_factory/scafolding/_promotional.scss
         | 
| 363 365 | 
             
            - lib/fanforce/app_factory/asset_framework/app_factory/scafolding/_standard.scss
         | 
| 364 366 | 
             
            - lib/fanforce/app_factory/asset_framework/app_factory/scafolding/promotional.coffee
         | 
| @@ -370,10 +372,12 @@ files: | |
| 370 372 | 
             
            - lib/fanforce/app_factory/cli/_cleanorgs.rb
         | 
| 371 373 | 
             
            - lib/fanforce/app_factory/controllers/base_controller.rb
         | 
| 372 374 | 
             
            - lib/fanforce/app_factory/core_config.rb
         | 
| 375 | 
            +
            - lib/fanforce/app_factory/directive_views/initiative-footer.haml
         | 
| 373 376 | 
             
            - lib/fanforce/app_factory/scafolding/Routes.rb
         | 
| 374 | 
            -
            - lib/fanforce/app_factory/scafolding/layouts/ | 
| 377 | 
            +
            - lib/fanforce/app_factory/scafolding/layouts/engagement.haml
         | 
| 375 378 | 
             
            - lib/fanforce/app_factory/scafolding/public/favicon.ico
         | 
| 376 379 | 
             
            - lib/fanforce/app_factory/scafolding/public/robots.txt
         | 
| 380 | 
            +
            - lib/fanforce/app_factory/scafolding/scafolding_assets/css/engagement.scss
         | 
| 377 381 | 
             
            - lib/fanforce/app_factory/scafolding/scafolding_assets/css/promotional.scss
         | 
| 378 382 | 
             
            - lib/fanforce/app_factory/scafolding/scafolding_assets/css/standard.scss
         | 
| 379 383 | 
             
            - lib/fanforce/app_factory/scafolding/scafolding_assets/img/icon-16.png
         | 
| @@ -396,7 +400,6 @@ files: | |
| 396 400 | 
             
            - lib/fanforce/app_factory/scafolding/views/new_message.haml
         | 
| 397 401 | 
             
            - lib/fanforce/app_factory/scafolding/views/source_details.haml
         | 
| 398 402 | 
             
            - lib/fanforce/app_factory/scafolding/views/widget_templates.haml
         | 
| 399 | 
            -
            - lib/fanforce/app_factory/sinatra/Routes.rb
         | 
| 400 403 | 
             
            - lib/fanforce/app_factory/sinatra/_load.rb
         | 
| 401 404 | 
             
            - lib/fanforce/app_factory/sinatra/error_handling.rb
         | 
| 402 405 | 
             
            - lib/fanforce/app_factory/sinatra/helper_routes/app.rb
         | 
| @@ -1,17 +0,0 @@ | |
| 1 | 
            -
            class Fanforce::App::Sinatra
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              get '/internals/config.json' do
         | 
| 4 | 
            -
                File.open("#{Fanforce::App.root_dir}/config.json").read
         | 
| 5 | 
            -
              end
         | 
| 6 | 
            -
             | 
| 7 | 
            -
              post '/internals/config.json' do
         | 
| 8 | 
            -
                filename = File.open("#{Fanforce::App.root_dir}/config.json")
         | 
| 9 | 
            -
                old_config = MultiJson.load(filename.read, symbolize_keys: true)
         | 
| 10 | 
            -
                new_config = MultiJson.load(params[:config], symbolize_keys: true)
         | 
| 11 | 
            -
                raise 'IUIDs do not match' if old_config[:_iuid] and old_config[:_iuid] != new_config[:_iuid]
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                File.open(filename, 'w') {|f| f.write(JSON.pretty_generate(Hash[new_config.sort])) }
         | 
| 14 | 
            -
                json status: 'finished'
         | 
| 15 | 
            -
              end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            end
         |