Skip to content

Instantly share code, notes, and snippets.

@RyanFriedman
Created September 3, 2017 01:09
Show Gist options
  • Save RyanFriedman/3ca7e35be7dc252d1b020bdd427d0100 to your computer and use it in GitHub Desktop.
Save RyanFriedman/3ca7e35be7dc252d1b020bdd427d0100 to your computer and use it in GitHub Desktop.
Poorly written Ruby on Rails code from SynaypseIndia - SynapseIndia.com
function entryFunction(){
$("#save_modal_radio_id").click(function(){
saveModal('radio');
})
$("#dynamic_location_field").click(function(){
dynamic_location_field()
});
$("#concate_location").click(function(){
concatLocations();
});
$("#add_button_name").click(function(){
add_button('name');
});
$("#add_button_email").click(function(){
add_button('email');
});
$("#add_button_city").click(function(){
add_button('city');
});
$("#dynamic_add_button_text_field").click(function(){
dynamic_add_button('text_field');
});
$("#dynamic_add_button_text_area").click(function(){
dynamic_add_button('text_area');
});
$("#dynamic_add_button_checkbox").click(function(){
dynamic_add_button('checkbox');
});
$("#add_new_opt_id").click(function(){
addNewOption("dropdown");
})
$("#save_modal_dropdown_id").click(function(){
saveModal('dropdown');
})
$("#save_modal_drpdown_id").click(function(){
saveModal('dropdown');
})
function addNewOption(type){
var count = $(".dynamic_"+type+"_options").length;
$("#new_dynamic_"+type+"_option").append("<div id='dynamic_"+type+"_options_"+count+"'><input type='text' class='dynamic_"+type+"_options form-control' placeholder='Options'/><a class='btn btn-danger' onclick=removeLocationElement('dynamic_"+type+"_options_"+count+"') >Remove</a></div>");//");
}
$("#add_new_option_id").click(function(){
addNewOption("radio");
})
}
function dynamic_location_field(){
var count = $(".dynamic_location_options").length;
$("#new_dynamic_location_element").before("<div id='dynamic_location_options_"+count+"'><input type='text' class='dynamic_location_options form-control' placeholder='Locations'/><a class='btn btn-danger' onclick=removeLocationElement(dynamic_location_options_"+count+"') >Remove</a></div>");
}
function concatLocations(){
var locations = [];
$(".dynamic_location_options").each(function() {
locations.push($( this ).val());
});
insertOptions(locations);
}
function insertOptions(locations){
var pre_locations = $("#entry_entry_field_locations").val();
for(var i =0; i< locations.length; i++){
$("#entries_locations").append("<option value='"+locations[i]+"'>"+locations[i]+"</label>");
}
var location_options = locations.toString();
var location = pre_locations+","+location_options
if(/^,/.test(location)){
location = location.replace(/^,/, "");
}
$("#entry_entry_field_locations").val(location);
}
function removeLocationElement(id){
$("#"+id).remove();
}
function addNewOption(type){
var count = $(".dynamic_"+type+"_options").length;
$("#new_dynamic_"+type+"_option").append("<div id='dynamic_"+type+"_options_"+count+"'><input type='text' class='dynamic_"+type+"_options form-control' placeholder='Options'/><a class='btn btn-danger' onclick=removeLocationElement('dynamic_"+type+"_options_"+count+"') >Remove</a></div>");//");
}
function append_text_field_values(type, result){
var text_field = $("#entry_entry_field_"+type);
var text_field_values = text_field.val();
if(text_field_values.length > 0){
text_field.val(text_field_values+","+result);
}else{
text_field.val(result);
}
return "<label class='dynamic_label'>" + result + "</label>";
}
function append_html_elements(type, label, count, html_element){
if(label.length > 0){
$(".preview-box").append("<div id='div"+count+"'>"+ label + html_element+"<button onclick=closeDiv('"+type+"',div"+count+") class='glyphicon glyphicon-trash btn btn-danger'></button ></div>");
}
}
function custom_append_html_elements(type, label, count, html_element){
if(label.length > 0){
$(".preview-box").append("<div class='field-preview col-md-12' id='div"+count+"'>" + label + html_element + "<div class='col-md-2'><span id='close"+count+"' onclick=closeSingleDiv('div"+count+"','"+type+"')><button class='glyphicon glyphicon-trash btn btn-danger'></button></span></div></div>");
var text_field = $("#entry_entry_field_"+type);
text_field.val("true");
}
}
function getText(type, id){
var label_id = "label_"+type+id;
var lable_res = $("#"+label_id).val();
$("#"+label_id).replaceWith("<label>"+lable_res+"</label>");
var result = lable_res;
var text_field = $("#entry_entry_field_"+type);
var text_field_values = $("#entry_entry_field_"+type).val();
if(text_field_values.length > 0){
text_field.val(text_field_values+","+result);
}else{
text_field.val(result);
}
$("#"+"done_edit_"+id).remove();
}
function dynamic_add_button(type){
var count = $(".dynamic_label").length;
var label = "";
var html_element = "";
switch(type){
case "text_field":
html_element = "<div class='col-md-5'><label class='dynamic_label'></label><input class='form-control' type='text' id='label_text_field"+count+"' placeholder='Please Enter Field Name' name='Name' id='name_label' /><a class='btn btn-info' id='done_edit_"+count+"' onclick=getText('"+type+"',"+count+") >F</a></div><div class='col-md-2'><input class='form-control' type='text' name='"+result+"' id='input_text"+count+"' disabled /></div>";
$(".preview-box").append("<div class='field-preview col-md-12' id='div"+count+"'>"+html_element+"<button onclick=closeDiv('"+type+"',div"+count+") class='glyphicon glyphicon-trash btn btn-danger'></button ></div>");
break;
case "text_area":
html_element = "<div class='col-md-5'><label class='dynamic_label'></label><input type='text' id='label_text_area"+count+"' placeholder='Please Enter Field Name' name='Name' id='name_label' /><a class='btn btn-info' id='done_edit_"+count+"' onclick=getText('"+type+"',"+count+") >F</a></div><div class='col-md-2'><textarea rows='2' name='"+result+"' id='input_text"+count+"'></textarea></div>";
$(".preview-box").append("<div class='field-preview col-md-12' id='div"+count+"'>"+html_element+"<button onclick=closeDiv('"+type+"',div"+count+") class='glyphicon glyphicon-trash btn btn-danger'></button ></div>");
break;
case "radio":
var result = prompt("Please enter label radio button");
if (result.length > 0) {
var first_option = prompt("Please enter first option");
var second_option = prompt("Please enter second option");
label = "<label class='dynamic_label'>"+result+"</label>";
html_element = "<input type='radio' name='"+result+"' value='"+first_option+"' checked> "+first_option+"<input type='radio' name='"+result+"' value='"+second_option+"'> "+second_option+"<input type='radio' name='"+result+"' value='other'> Other";
}
break;
case "dropdown":
label = "dropdown";
break;
case "checkbox":
html_element = "<label class='dynamic_label'></label><input type='text' id='label_checkbox"+count+"' placeholder='Please Enter Field Name' name='Name' id='name_label' /><a class='btn btn-info' id='done_edit_"+count+"' onclick=getText('"+type+"',"+count+") >Done Edit</a><input type='checkbox' name='"+result+"' value='"+result+"'>";//+result+"";
$(".preview-box").append("<div id='div"+count+"'>"+html_element+"<button onclick=closeDiv('"+type+"',div"+count+") class='btn btn-danger'>Remove</button ></div>");
break;
}
}
function add_button(type){
if($('.'+type+'_class').length > 0)
{
}
else{
var count = $(".dynamic_label").length;
var label = "";
var html_element = "";
switch(type){
case "name":
label = "<div class='col-md-4'><label class='dynamic_label'>Name</label></div>";
html_element = "<div class='col-md-6'><input type='text' name='name' class='form-control name_class' id='input_text" + count + "' disabled/></div>";
custom_append_html_elements(type, label, count, html_element)
break;
case "email":
label = "<div class='col-md-4'><label class='dynamic_label'>Email</label></div>";
html_element = "<div class='col-md-6'><input type='text' name='email' class='form-control email_class' id='input_text" + count + "' disabled/></div>";
custom_append_html_elements(type, label, count, html_element);
break;
case "city":
label = "<div class='col-md-4'><label class='dynamic_label'>City</label></div>";
html_element = "<div class='col-md-6'><input type='text' name='city' class='form-control city_class' id='input_text" + count +"' disabled/></div>";
custom_append_html_elements(type, label, count, html_element);
break;
}
}
}
function closeDiv(type, id){
var text_field = $("#entry_entry_field_"+type).val();
var t = text_field.replace(/\ /g, "").split(',');
var check = $(id).children("label").text();
t.splice($.inArray(check, t), 1);
$(id).remove();
var check = $(id).children("label").text();
$("#entry_entry_field_"+type).val(t.join(','));
}
function closeRadioDiv(type, id, eid){
if(localStorage.getItem(type+'_button_values') == ""){
localStorage.setItem(type+'_button_values', "");
$("#entry_entry_field_"+type).val(localStorage.getItem(type+'_button_values'));
}else{
var arrays = JSON.parse(localStorage.getItem(type+'_button_values'));
$("#"+id).remove();
if(arrays.length == undefined){
localStorage.setItem(type+'_button_values', "");//, "");
}else{
var flag = "";
for(var i =0; i< arrays.length; i++){
if(arrays[i].key == eid){
flag = i;
}
}
arrays.splice(flag, 1);
localStorage.setItem(type+'_button_values', JSON.stringify(arrays));
}
$("#entry_entry_field_"+type).val(localStorage.getItem(type+'_button_values'));
}
}
function closeSingleDiv(id, type){
$("#entry_entry_field_"+type).val("false");
$("#"+id).remove();
}
function saveModal(type){
var options = [];
$(".dynamic_"+type+"_options").each(function() {
options.push($( this ).val());
});
var label = $("#label_option_"+type).val();
var options = options;
createRadioDropdownDyn(label, options, type);
}
function createRadioDropdownDyn(label, options, type){
var count = $(".dynamic_label").length;
if(options.length > 0 && label.length > 0){
var radio_options_html = "";
switch(type){
case "radio":
for(var i = 0; i< options.length; i++){
if (options[i] != "") {
radio_options_html = radio_options_html+"<input type='radio' id='radio_input_"+options[i]+"' name='"+label+"' value='"+options[i]+"' disabled>"+options[i];
}
}
break;
case "dropdown":
radio_options_html = "<select>";
for (var i = 0; i< options.length; i++) {
radio_options_html = radio_options_html+"<option value='"+options[i]+"'>"+options[i]+"</option>";
}
radio_options_html = radio_options_html+"</select>";
break;
}
html_element = "<label class='dynamic_label'>"+label+": </label>"+radio_options_html;
$(".preview-box").append("<div id='div"+count+"'>"+html_element+"<a onclick=closeRadioDiv('"+type+"','div"+count+"','"+label+"') class='btn btn-danger'>Remove</a ></div>");
var val = $("#entry_entry_field_"+type).val();
var arr = [];
if(localStorage.getItem(type+'_button_values') == null){
var obj = new Object();
obj.key = label;
obj.value = options;
arr.push(obj);
arr = obj;
localStorage.setItem(type+'_button_values', JSON.stringify(arr));
}else{
var obj = new Object();
obj.key = label;
obj.value = options;
var arr = new Array();
if(localStorage.getItem(type+'_button_values') == ""){
arr.push(obj);
localStorage.setItem(type+'_button_values', JSON.stringify(arr));
}else{
var radio_options = JSON.parse(localStorage.getItem(type+'_button_values'));
if(radio_options.length == undefined){
arr.push(radio_options);
arr.push(obj);
}else{
var arr = new Array();
for(var i = 0; i < radio_options.length; i++){
arr.push(radio_options[i]);
}
arr.push(obj);
}
localStorage.setItem(type+'_button_values', JSON.stringify(arr));
}
}
$("#entry_entry_field_"+type).val(localStorage.getItem(type+'_button_values'));
}else{
}
}
function dynamicFields(type, data){
data = JSON.parse(data);
for(var i =0; i < data.length; i++){
var count = $(".dynamic_label").length;
dynamic_add_button(type);
$("#label_"+type+count).val(data[i]);
$("#done_edit_"+count).click();
}
}
function entriesFunction(entries_name,entries_email,entries_city,entries_text_field,entries_text_area,entries_checkbox,entries_location,entries_radio_result,entries_dropdown){
localStorage.clear();
var name = entries_name;
if(name == "true"){
add_button("name")
}
var email = entries_email;
if(email == "true"){
add_button("email")
}
var city = entries_city;
if(city == "true"){
add_button("city")
}
var data = entries_text_field;
dynamicFields("text_field", data);
var data = entries_text_area;
dynamicFields("text_area", data);
var data = entries_checkbox;
dynamicFields("checkbox", data);
var locations = entries_location;
locations = locations.split(",");
insertOptions(locations);
var radio_result = entries_radio_result;
for(var i=0; i < radio_result.length; i++){
createRadioDropdownDyn(radio_result[i].key, radio_result[i].value, "radio");
}
var dropdown_result = entries_dropdown;
for(var i=0; i < dropdown_result.length; i++){
createRadioDropdownDyn(dropdown_result[i].key, dropdown_result[i].value, "dropdown");
}
$("#response-message-entry").html("").append("updated successfully");
}
class GiveawaysController < ApplicationController
# before_action :set_giveaway, :only => :create
before_action :authenticate_user!, :except => [:show]
before_action :authenticate_user!
skip_before_action :verify_authenticity_token
layout "home_layout", :only => [:edit]
def create
@giveaway = Giveaway.where(:guid => params[:giveaway][:guid])
@giveaway.update(giveaway_params)
insert_images(params)
end
def update
@giveaway = Giveaway.find_by(:guid => params[:giveaway][:guid])
User.find(@giveaway.user_id).update(user_params)
@user = User.find(@giveaway.user_id)
@giveaway.update(giveaway_params)
if(params.has_key?(:images))
insert_images(params)
end
insert_giveaway(@giveaway, @user)
end
def show
giveaway = get_giveaway(params[:guid])
unless(giveaway.sharing.nil?)
@facebook_page_url = giveaway.sharing.fb_link
end
if(params.has_key?(:key))
bonus_entry = BonusEntry.find_by(:key => params[:key])
if(bonus_entry.nil?)
@shared_type = {:type_present => false, :key_present => false, :shared_type => "", :shared_key => ""}
else
if(params.has_key?(:type))
giveaway_entry = GiveawayEntry.find(bonus_entry.giveaway_entry_id)
sharing = giveaway.sharing
unless(sharing.nil?)
case params[:type]
when "tweet"
giveaway_entry.update_attributes(:bonus_points => (giveaway_entry.bonus_points + sharing.twitter_bonus_point))
when "fb"
giveaway_entry.update_attributes(:bonus_points => (giveaway_entry.bonus_points + sharing.fb_bonus_point))
when "email"
giveaway_entry.update_attributes(:bonus_points => (giveaway_entry.bonus_points + sharing.email_bonus_point))
when "sl"
giveaway_entry.update_attributes(:bonus_points => (giveaway_entry.bonus_points + 5))
else
end
end
@shared_type = {:type_present => true, :key_present => true, :shared_type => params[:type], :shared_key => params[:key]}
else
@shared_type = {:type_present => false, :key_present => true, :shared_type => "", :shared_key => ""}
end
end
else
@shared_type = {:type_present => false, :key_present => false, :shared_type => "", :shared_key => ""}
end
@google_client_id = Rails.application.secrets.google_client_id
@fb_app_id = Rails.application.secrets.facebook_app_id
@giveaway = giveaway
unless(@giveaway.nil?)
@user = User.find(@giveaway.user_id)
@empty = false
@prizes = Prize.where(:giveaway_id => @giveaway.id)
else
@empty = true
end
render layout: "empty_layout"
end
def insert_images(params)
images = params[:images][:image]
unless(images.nil?)
images.each do |image|
image_details = current_user.images.create(:image => image)
end
end
end
def new
guid = Time.now().to_i
@user = current_user
@giveaway = @user.giveaways.create(:guid => guid)
redirect_to "/giveaways/create/#{guid}"
end
def edit
@user = current_user
@giveaway = get_giveaway(params[:guid])
insert_giveaway(@giveaway, @user)
end
def insert_giveaway(giveaway, user)
@giveaway = giveaway
@user = user
@entry = Entry.find_by(:giveaway_id => @giveaway.id)
if(@entry.nil?)
@new_entry = true
@entry = Entry.new
@entry_field = EntryField.new
else
@new_entry = false
@entry_field = @entry.entry_fields.first
@radio_result = []
@dropdown_result = []
["radio", "dropdown"].each do |element|
element_entry_field = @entry.entry_fields.first.entry_field_options.where(:field_type => element)
element_entry_field.each do |radio|
@radio_result.push({:key => radio.key, :value => radio.options}.to_hash) if element == "radio"
@dropdown_result.push({:key => radio.key, :value => radio.options}.to_hash) if element == "dropdown"
end
end
@radio_result = @radio_result.to_json
@dropdown_result = @dropdown_result.to_json
end
@prize = Prize.where(:giveaway_id => @giveaway.id)
if(@prize.count > 0)
@prize_nil = false
else
@prize_nil = true
@prize = Prize.new
end
@sharing = Sharing.find_by(:giveaway_id => @giveaway.id)
if(@sharing.nil?)
@sharing_nil = true
@sharing = Sharing.new
else
@sharing_nil = false
end
end
def upload_image
end
def remove_image
image = Image.find(params[:id])
if(image.nil?)
@result = record_not_found
else
image.delete
@result = record_deleted
end
end
def change_status
giveaway = get_giveaway(params[:guid])
if(giveaway.nil?)
@message = record_not_found
else
state = (params[:state] == "true")? true : false
giveaway.update(:complete => state)
@message = record_updated
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_giveaway
@giveaway = Giveaway.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def giveaway_params
params.require(:giveaway).permit(
:name, :description, :rules, :show_captcha, :hide_entry_count, :guid,
:start_date, :end_date, :time_zone, :header_image, :background_image,
:user_attributes => [ :id, :name, :company_name, :biography, :business_logo, :headshot ]
)
end
def user_params
params.require(:giveaway).require(:user_attributes).permit(:id, :name, :company_name, :biography, :business_logo, :headshot)
end
def get_giveaway(guid)
Giveaway.find_by(:guid => guid)
end
end
class SharingsController < ApplicationController
# skip_before_action :verify_authenticity_token
skip_before_action :verify_authenticity_token,
only: [:create ]
def create
sharing = params[:sharing]
@sharing = Sharing.new()
insert_sharing(params, @sharing, sharing)
@giveaway = Giveaway.find(sharing[:giveaway_id])
end
def update
sharing = params[:sharing]
@giveaway = Giveaway.find(params[:sharing][:giveaway_id])
@sharing = Sharing.find_by(:giveaway_id => @giveaway.id)
insert_sharing(params, @sharing, sharing)
@prize = Prize.where(:giveaway_id => @giveaway.id)
end
def insert_sharing(params, sharing_object, sharing)
@sharing = sharing_object
@sharing.update(sharing_params)
fb_share = (sharing[:fb_share] == "true")? true : false
twitter_share = (sharing[:twitter_share] == "true")? true : false
email_share = (sharing[:email_share] == "true")? true : false
fb_page = (sharing[:fb_page] == "true")? true : false
twitter_page = (sharing[:twitter_page] == "true")? true : false
instagram_page = (sharing[:instagram_page] == "true")? true : false
@sharing.update(
:fb_share => fb_share,
:twitter_share => twitter_share,
:fb_page => fb_page,
:twitter_page => twitter_page,
:instagram_page => instagram_page,
:email_share => email_share
)
entry_fields = params[:sharing][:entry_field]
unless(params[:sharing][:entry_field].nil?)
params[:sharing][:entry_field][:question].each_with_index do |question, index|
@question = Question.create(
:answer_this_question => (entry_fields[:answer_this_question][index] == "true")? true : false,
:question=> question,
:option=> params["option#{index}".to_sym],
:sharing_id => @sharing.id
)
if(params["option#{index}".to_sym] == "text_field")
answer_type = false
@option = Option.create(
:option => "",
:question_id => @question.id,
:answer => false,
:answer_in_text => params[:sharing][:entry_field]["answer#{index}".to_sym]
)
else
params[:sharing][:entry_field]["options#{index}"].each_with_index do |option, opt_index|
@option = Option.create(
:option => option,
:question_id => @question.id
)
end
end
end
end
end
def update_question
@question = Question.find(params[:id])
if(@question.nil?)
@message = record_not_found
else
@question.update(
:question => params[:question]
)
@message = record_updated
end
render :json => {:message => @message}.to_json
end
def get_partial
end
def remove_question
question = Question.find(params[:id])
if(question.nil?)
@message = record_not_found
else
question.destroy
@message = record_deleted
end
end
def sharing_params
params.require(:sharing).permit(:fb_bonus_point, :fb_content, :twitter_bonus_point, :twitter_content, :email_share, :email_bonus_point, :email_content, :fb_entries, :fb_link, :twitter_entries, :twitter_link, :instagram_entries, :instagram_link, :giveaway_id)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment