app/views/users/_form.html.erb
<div class="container">
<div class="featurette dark">
<hr class="light">
<hr class="dark">
<br>
<div class="row">
<div class="col-md-12">
<% if current_user %>
<div class="row">
<div class="col-md-3">
<h1><%= @user.plan.name rescue 'No Plan' %></h1>
<h4>Plan</h4>
</div>
<div class="col-md-3">
<h1><%= @user.mappings.enabled.count %> / <%= @user.plan.map_limit rescue 0 %></h1>
<h4>Maps</h4>
</div>
<div class="col-md-3">
<h1> <%= @user.legacy_count %> / <%= @user.plan.job_limit rescue 0 %></h1>
<h4>Jobs</h4>
</div>
<div class="col-md-3">
<h3><%= @user.reset_countdown %> until limits reset</h3>
</div>
</div>
</br>
<% end %>
<div class="card" id="accordion" role="tablist" aria-multiselectable="true">
<div class="card-block">
<div class="card-heading" role="tab" id="headingOne">
<h4 class="card-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
<%= form_for @user, role: 'form', html: {id: 'signup_form'} do |f| %>
User and Organization Settings <span class="pull-right"><i class="fa fa-bars"></i></span>
</a>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
<div class="card-text">
<div class="form-group">
<%= f.label :email %>
<%= f.text_field :email, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :first_name %>
<%= f.text_field :first_name, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :last_name %>
<%= f.text_field :last_name, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :organisation %>
<%= f.text_field :organisation, class: 'form-control' %>
</div>
<div class="form-group">
<%=f.hidden_field :stripe_token %>
<%=f.hidden_field :subscription_plan, value: @user.new_record? ? nil : @user.plan.try(:name)%>
</div>
<div class="form-group">
<%= f.label 'Plan' %>
<br>
<div class="btn-group plan_btn" data-toggle="buttons">
<label class="btn btn-primary free pay">
<input type="radio" name="options" data-name="Free" data-amount="free"> Free
</label>
<label class="btn btn-primary pay">
<input type="radio" name="options" data-name="Entry" data-amount="3900"> Entry $39/mo.
</label>
<label class="btn btn-primary pay">
<input type="radio" name="options" data-name="Startup" data-amount="7900"> Startup $79/mo.
</label>
<label class="btn btn-primary pay">
<input type="radio" name="options" data-name="Growth" data-amount="29900"> Growth $299/mo.
</label>
<label class="btn btn-primary pay disabled">
<input type="radio" name="options" data-name="Enterprise" data-amount="99900"> Enterprise
</label>
</div>
</div>
<div class="form-group coupon_field">
<%= f.label 'Pilot code' %>
<%= f.text_field :stripe_coupon, class: 'form-control'%>
</div>
<% if current_user %>
<%= f.submit "Update", class: 'btn btn-base submit_btn' %>
<% else %>
<%= f.submit "Sign up", class: 'btn btn-green submit_btn' %>
<% end %>
<script src="https://checkout.stripe.com/checkout.js"></script>
<% end %>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-block">
<div class="panel-heading" role="tab" id="headingTwo">
<h4 class="panel-title">
<a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
<%= form_for @user, role: 'form' do |f| %>
ODK / SurveyCTO <span class="pull-right"><i class="fa fa-bars"></i></span>
</a>
</h4>
</div>
<div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
<div class="panel-body">
<div class="form-group">
<%= f.label :odk_url, "Instance URL" %>
<%= f.text_field :odk_url, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :odk_username, "Username" %>
<%= f.text_field :odk_username, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :odk_password, "Password" %>
<%= f.password_field :odk_password, value: f.object.odk_password, class: 'form-control' %>
</div>
<div class="form-group">
<%=f.hidden_field :subscription_plan, value: @user.new_record? ? nil : @user.plan.try(:name)%>
</div>
<%= f.submit "Update", class: 'btn btn-primary' %>
<% end %>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-block">
<div class="panel-heading" role="tab" id="headingThree">
<h4 class="card-title">
<a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
<%= form_for @user, role: 'form' do |f| %>
Salesforce.com <span class="pull-right"><i class="fa fa-bars"></i></span>
</a>
</h4>
</div>
<div id="collapseThree" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingThree">
<div class="panel-body">
<div class="form-group">
<div class="form-group">
<%= f.label :sf_username, "Username" %>
<%= f.text_field :sf_username, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :sf_password, "Password" %>
<%= f.password_field :sf_password, value: f.object.sf_password, class: 'form-control' %>
</div>
<div class="form-group">
<a data-toggle="collapse" data-parent="#accordion21" href="#collapseTwoOne">
<%= f.label :sf_security_token, "Security Token" %>
<i class="fa fa-question-circle"></i>
</a>
<%= f.text_field :sf_security_token, class: 'form-control' %>
<div id="collapseTwoOne" class="panel-collapse collapse"><br>
<p>1. Search “security token” in your email to see if you've received a security token in the past. (If you have, go to step 5.)</p>
<p>2. To reset or create a new security token, click your name and “Setup” in Salesforce</p>
<p>3. Go to “Personal Information” and click “reset your security token”.</p>
<p>4. Read the warnings, then click “Reset Security Token”.</p>
<p>5. Copy your security token from your email and paste it here.</p>
</div>
</div>
<div class="form-group">
<a data-toggle="collapse" data-parent="#accordion21" href="#collapseTwoTwo">
<%= f.label :sf_app_key, "Consumer Key" %>
<i class="fa fa-question-circle"></i>
</a>
<%= f.text_field :sf_app_key, class: 'form-control' %>
<div id="collapseTwoTwo" class="panel-collapse collapse">
<br>
<p>1. Goto “Apps” (in the “App Setup” / “Create” section) in your Salesforce Setup menu.</p>
<p>2. Click “New” in the “Connected Apps” section at the bottom of the page.</p>
<p>3. Type “OpenFn” in the “Connected App Name” field.</p>
<p>4. Type “OpenFn” in the “API Name” field.</p>
<p>5. Type your email in the “Contact Email” field.</p>
<p>6. Click “Enable OAuth Settings” in the “API (Enable OAuth Settings)” section.</p>
<p>7. Enter “https://login.salesforce.com” in the “Callback URL” field.</p>
<p>8. Add “Access and manage your data (api)” in the “Available OAuth Scopes” section.</p>
<p>9. Click “Save”.</p>
<p>10. Copy the “Consumer Key” and paste it here.</p>
<p>11. Click to reveal your “Consumer Secret”, then copy it and paste it here.</p>
</div>
</div>
<div class="form-group">
<%= f.label :sf_app_secret, "Consumer Secret" %>
<%= f.text_field :sf_app_secret, class: 'form-control' %>
</div>
<div class="form-group">
<%=f.hidden_field :subscription_plan, value: @user.new_record? ? nil : @user.plan.try(:name)%>
</div>
<div class="form-group">
<%= f.label :sf_host, "Salesforce Org Type" %>
<br>
<%= f.select :sf_host, class: 'form-control' do %>
<% [['Production', "login.salesforce.com"], ['Sandbox', "test.salesforce.com"]].each do |c| -%>
<%= content_tag(:option, c.first, value: c.last) %>
<% end %>
<% end %>
</div>
<%= f.submit "Update", class: 'btn btn-primary' %>
<% end %>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
<%if current_user%>
plan = '<%=current_user.plan.try(:name) rescue ""%>';
if (plan != "")
SetPlan(plan);
<%else%>
plan = 'Free'
$('.plan_btn input').first().attr('checked', true)
$('.plan_btn label').first().addClass('active');
<%end%>
<%if params[:plan].present?%>
plan = '<%=params[:plan]%>';
if (plan != "")
SetPlan(plan);
<%end%>
function SetPlan(plan){
$('.plan_btn label').removeClass('active');
$('.plan_btn input').each(function(){
if ($(this).data('name') == plan){
$(this).attr('checked', true);
$(this).parent('label').addClass('active');
}
})
}
// $(".pay").click(function(){
// input = $(this).find('input');
// if (plan != 'Startup'){
// if(input.data('name') == 'Startup' && !input.is(":checked") )
// $(".coupon_field").show();
// else
// $(".coupon_field").hide();
// }
// });
var handler = StripeCheckout.configure({
key: "<%= Rails.configuration.stripe[:publishable_key] %>",
token: function(token) {
$("#user_stripe_token").val(token.id);
plan_name = $('.plan_btn').find('input:checked').data('name');
$("#user_subscription_plan").val(plan_name);
$("form#signup_form").submit();
}
});
$(".submit_btn").click(function(e){
amount = $('.plan_btn').find('input:checked').data('amount');
plan_name = $('.plan_btn').find('input:checked').data('name');
email = $("#user_email").val();
if(amount == 'free'){
$("#user_subscription_plan").val('Free');
}else if($("#user_subscription_plan").val() != plan_name){
if(amount != 'free'){
if($("#user_stripe_token").val() == ""){
handler.open({
name: 'OpenFn',
amount: amount,
email: email,
panelLabel: 'Signup for '+ plan_name
});
return false;
}
}
}
});
// Close Checkout on page navigation
$(window).on('popstate', function() {
handler.close();
});
</script>