Guest User

Untitled

a guest
May 22nd, 2018
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.82 KB | None | 0 0
  1. class WizardController < ApplicationController
  2. session :cookie_only => false, :only => :create
  3. before_filter :determine_site_by_domain, :except=> [:upload_page_photo,:create_agent_logo,:index,:content,:customize,:pricing,:new_site, :next_step, :previous_step,:create_site, :brand_select]
  4. before_filter :check_domain_in_admin
  5. skip_before_filter :verify_authenticity_token, :only => [:upload_page_photo,:create_agent_logo]
  6. #before_filter :verify_upload, :only => [:next_step_remote, :previous_step_remote]
  7. #after_filter :set_button_positioning #req'd for IE7 with ajaxy goodness
  8. layout 'wizard'
  9.  
  10. def new_site
  11. @site = Site.new
  12. @site.site_info = SiteInfo.new
  13. respond_to do |format|
  14. format.html # new.html.erb
  15. format.xml { render :xml => @site }
  16. end
  17. end
  18.  
  19. def create_site
  20. @site = Site.new(params[:site])
  21. @site.site_info = SiteInfo.new(params[:site_info])
  22. respond_to do |format|
  23. if( @site.save && @site.site_info.save)
  24. @site.site_info.contact_form_email = @site.user.email
  25. @site.site_info.estimate_form_email = @site.user.email
  26. @site.site_info.save
  27. @site.create_new_revision
  28. @current_user.wizard.next_step
  29. log_activity("Site #{@site.site_info.name} was created.")
  30. flash[:notice] = 'Site was successfully created.'
  31. format.html { redirect_to :controller => :display , :action => :home}
  32. format.xml { render :xml => @site, :status => :created, :location => @site }
  33. else
  34. @site.destroy
  35. format.html { render :action => "new_site" }
  36. format.xml { render :xml => @site.errors, :status => :unprocessable_entity }
  37. end
  38. end
  39. end
  40.  
  41. ## move to AgentCMS
  42.  
  43. ##-=-=-=-=
  44.  
  45. def homepage
  46.  
  47. end
  48.  
  49. def request_an_estimate
  50.  
  51. end
  52.  
  53. def marquee
  54.  
  55. @marquee = Marquee.find_or_intialize_by_id(@revision.home_page.marquee_id)
  56. end
  57.  
  58. def create_marquee
  59. @revision.home_page.marquee = Marquee.find(params[:marquee][:id])
  60. if @revision.home_page.save
  61. next_step_remote()
  62. else
  63. render :update do |page|
  64. #page << "alert('ERROR');"
  65. end
  66. end
  67.  
  68. end
  69.  
  70. def agent_logo
  71. @agent_logo = AgentLogo.new
  72. end
  73.  
  74. def create_agent_logo
  75. if params[:Filedata]
  76. @revision = Revision.find(params[:revision])
  77. if @revision.agent_logo.nil?
  78. @agent_logo = AgentLogo.new(:swfupload_file => params[:Filedata])
  79. @revision.agent_logo = @agent_logo
  80. if @revision.agent_logo.save
  81. logger.info "SUCCESS!"
  82. render :text => @agent_logo.image.url(:normal), :status => 200
  83. else
  84. logger.info "FAIL!"
  85. render :text => "No response.", :status => 500
  86. end
  87. else
  88. if @revision.agent_logo.update_attributes({:swfupload_file => params[:Filedata]})
  89. logger.info "SUCCESS!"
  90. render :text => @revision.agent_logo.image.url(:normal), :status => 200
  91. else
  92. logger.info "FAIL!"
  93. render :text => "No response.", :status => 500
  94. end
  95. end
  96.  
  97.  
  98. end
  99.  
  100. end
  101.  
  102.  
  103. def upload_page_photo
  104. if params[:Filedata]
  105. @revision = Revision.find( params[:revision] )
  106. @model = @revision.send(params[:model])
  107. #if @model.photo.nil?
  108. @model.photo = Photo.new(:swfupload_file => params[:Filedata], :default_image => false)
  109. # else
  110. # @model.photo = Photo.update(@model.photo.id, {:swfupload_file => params[:Filedata]})
  111. # end
  112.  
  113. if @model.photo.save and @model.save
  114. render :text => @model.photo.image.url(:normal), :status => 200
  115. end
  116.  
  117. end
  118. end
  119.  
  120.  
  121.  
  122. def add_photo
  123. model_name = params[:photo][:model]
  124. if (!params[model_name.to_sym].nil? && !params[model_name.to_sym].empty?) && (@model = @revision.send(model_name).update_attributes(params[model_name.to_sym]))
  125. next_step_remote
  126. else
  127. generic_error_message("Please select a photo.")
  128. end
  129.  
  130. end
  131.  
  132. def get_photo_gallery_form
  133. render :update do |page|
  134. page.reload
  135. end
  136. end
  137.  
  138. def get_page_photo_form
  139. page = @revision.send(params[:model])
  140. @photo = Photo.find(page.photo) unless page.photo.nil?
  141.  
  142. render :update do |page|
  143. page.replace :photo_form, :partial => "upload_page_photo", :locals => {:upload_path => "wizard/upload_page_photo",:model => params[:model], :photo => @photo}
  144. page.insert_html :bottom, "agent-wizard-navigation", "<div id='next-button'>#{link_to_remote "Next", :url => {:controller => :wizard, :action=>:next_step}, :before => "try{removeswfupload();}catch(err){};"}</div>"
  145. controller.set_button_positioning(page)
  146. end
  147. end
  148.  
  149. def save_services
  150. @revision.services_page.update_attributes(params[:services_page])
  151. render :text => ""
  152. end
  153.  
  154. def create_services
  155. @revision.services_page.update_attributes(params[:services_page])
  156. if @revision.services_page.services.empty?
  157. generic_error_message("Please select at least one service.")
  158. else
  159. next_step_remote
  160. end
  161. end
  162.  
  163. def update_services
  164. @revision.services_page.update_attributes(params[:services_page])
  165. if @revision.services_page.services.empty?
  166. flash[:error] = "Please select at least one service."
  167. end
  168. respond_to do |format|
  169. format.json render :json => { :flash => flash }, :status => 200
  170. end
  171. end
  172.  
  173. def save_moving_tips
  174. @revision.moving_tips_page.update_attributes(params[:moving_tips_page])
  175. render :text => ""
  176. end
  177.  
  178. def create_moving_tips
  179. @revision.moving_tips_page.update_attributes(params[:moving_tips_page])
  180. if @revision.moving_tips_page.moving_tips.empty?
  181. generic_error_message("Please select at least one moving tip.")
  182. else
  183. next_step_remote
  184. end
  185.  
  186. end
  187.  
  188.  
  189. def create_testimonials
  190. @tp = @revision.testimonials_page
  191. if @tp.update_attributes(params[:testimonials_page])
  192. next_step_remote
  193. else
  194. render :update do |page|
  195. page.visual_effect(:drop, '#spinner')
  196. page.replace_html("#wizard_content_errors", error_messages_for('tp') )
  197. controller.set_button_positioning(page)
  198. end
  199. end
  200. end
  201.  
  202. def create_pdf_attachments
  203. @page = case params[:page_name]
  204. when "about_page" then @revision.about_page
  205. when "containers_page" then @revision.containers_page
  206. when "services_page" then @revision.services_page
  207. when "moving_tips_page" then @revision.moving_tips_page
  208. else raise "Invalid page_name: #{params[:page_name].inspect}"
  209. end
  210.  
  211. responds_to_parent do
  212. if @page.update_pdf_attachments(params[:pdf_attachments] || {})
  213. next_step_remote
  214. else
  215. all_errors = []
  216. for pa_id, errors in @page.pdf_attachment_errors
  217. all_errors << (errors.respond_to?(:full_messages) ? errors.full_messages : errors.to_s)
  218. end
  219.  
  220. render :update do |page|
  221. page.visual_effect(:drop, '#spinner')
  222. page.replace_html("#wizard_content_errors", all_errors.join("<br/>\n"))
  223. controller.set_button_positioning(page)
  224. end
  225. end
  226. end
  227. end
  228.  
  229. def create_location
  230. @site_info = @revision.site.site_info
  231. @revision.update_attributes(params[:revision])
  232. @site_info.update_attributes(params[:site_info])
  233. next_step_remote
  234. rescue
  235. render :update do |page|
  236. page.visual_effect(:drop, '#spinner')
  237. page.replace_html("#wizard_content_errors", error_messages_for('site_info') + error_messages_for('revision') )
  238. controller.set_button_positioning(page)
  239. end
  240. end
  241.  
  242. def create_contact_us_page
  243. if @revision.contact_us_page.update_attributes(params[:contact_us_page])
  244. next_step_remote
  245. else
  246. render :update do |page|
  247. page.visual_effect(:drop, '#spinner')
  248. page.replace_html("#wizard_content_errors", error_messages_for('@revision.contact_us_page') )
  249. controller.set_button_positioning(page)
  250. end
  251. end
  252. end
  253.  
  254. def add_testimonial
  255. @testimonial = Testimonial.new
  256. @index = (params[:index].to_i + 1)
  257.  
  258. render :update do |page|
  259. page.insert_html :bottom , :testimonials, :partial => 'wizard/testimonial_fields', :object => @testimonial
  260.  
  261. if @index >= Testimonial::PAGE_LIMIT
  262. page.remove :add_testimonials_link
  263. else
  264. page.replace :add_testimonials_link, :partial => 'add_testimonials_link', :locals => { :index => @index }
  265. end
  266.  
  267. page << "$('#overlay').height($(document.html).height());"
  268.  
  269. controller.set_button_positioning(page)
  270. end
  271. end
  272.  
  273. def add_pdf_attachment
  274. @pdf_attachment = PdfAttachment.new
  275. @index = params[:index].to_i + 1
  276.  
  277. render :update do |page|
  278. page.insert_html :bottom, :pdf_attachments,
  279. :partial => 'wizard/pdf_attachment_fields',
  280. :locals => { :pdf_attachment => @pdf_attachment, :index => @index }
  281.  
  282. if @index >= PdfAttachment::PDFABLE_LIMIT
  283. page.remove :add_pdf_attachment_link
  284. else
  285. page.replace :add_pdf_attachment_link, :partial => 'add_pdf_attachment_link', :locals => { :index => @index }
  286. end
  287.  
  288. page << "$('#overlay').height($(document.html).height());"
  289.  
  290. controller.set_button_positioning(page)
  291. end
  292. end
  293.  
  294. def add_location
  295. loc_idx = @revision.locations.size + 1
  296. @location = Location.new
  297. render :update do |page|
  298. page.insert_html :bottom , :locations, :partial => 'wizard/location', :object => @location, :locals => {:idx => loc_idx}
  299. page << "$('#overlay').height($(document.html).height());"
  300. controller.set_button_positioning(page)
  301. end
  302. end
  303.  
  304. def custom_homepage
  305. render :update do |page|
  306. page.replace :home_page_form, :partial => "custom_homepage"
  307. end
  308. end
  309.  
  310. def prex_homepage
  311. render :update do |page|
  312. page.replace :home_page_form, :partial => "homepage_form"
  313. end
  314. end
  315.  
  316. def prex_services
  317. render :update do |page|
  318. page.replace :services_form, :partial => "services_form"
  319. end
  320.  
  321. end
  322.  
  323. def prex_moving_tips
  324. render :update do |page|
  325. page.replace :moving_tips_form, :partial => "moving_tips_form"
  326. end
  327. end
  328.  
  329. def create_homepage
  330.  
  331. if !params[:home_page].nil? && @revision.home_page.update_attributes(params[:home_page])
  332. next_step_remote
  333. else
  334. generic_error_message("Please select an item for your home page.")
  335. end
  336. end
  337.  
  338. def photo
  339.  
  340. end
  341.  
  342. def create_custom_homepage
  343.  
  344.  
  345. if @revision.home_page.update_attributes(params[:home_page])
  346. next_step_remote
  347. else
  348. generic_error_message("There was an error saving your home page copy.")
  349. end
  350. end
  351.  
  352. def create_about_copy
  353. if @revision.about_page.update_attributes(params[:about_page])
  354. next_step_remote
  355. else
  356. generic_error_message("Please enter copy for the About Us section.")
  357. end
  358. end
  359.  
  360. def enable_containers
  361. enabled = %w(1 on).include?(params[:enabled].to_s)
  362.  
  363. @revision.containers_page.update_attribute(:enabled, enabled)
  364.  
  365. render :update do |page|
  366. page << "close_cms();"
  367. page.reload
  368. end
  369. end
  370.  
  371. def create_containers_copy
  372. if @revision.containers_page.update_attributes(params[:containers_page])
  373. next_step_remote
  374. else
  375. generic_error_message("Please enter copy for the Containers section.")
  376. end
  377. end
  378.  
  379. def pricing_confirm
  380. if params[:pricing_structure][:understand] == "1"
  381. next_step_remote
  382.  
  383. else
  384. generic_error_message("Please check the box indicating that you have read and understand the pricing structure.")
  385. end
  386. end
  387.  
  388. def terms_confirm
  389. if params[:term][:understand] == "1"
  390. next_step_remote
  391.  
  392. else
  393. generic_error_message("Please check the box indicating that you have read and understand the terms and conditions.")
  394. end
  395. end
  396.  
  397. def request_estimate_email
  398. @site_info = @site.site_info
  399. if @site_info.update_attributes(params[:site_info])
  400. next_step_remote
  401. else
  402. render :update do |page|
  403. page.visual_effect(:drop, '#spinner')
  404. page.replace_html("#wizard_content_errors", error_messages_for('site_info') )
  405. controller.set_button_positioning(page)
  406. end
  407. end
  408. end
  409.  
  410. def approve
  411. do_approval
  412. next_step_remote
  413. end
  414.  
  415.  
  416.  
  417. def next_step_remote
  418. if !is_edit? or is_super?
  419. render :update do |page|
  420. page << "close_cms();"
  421. page.reload
  422. end
  423. else
  424. render :update do |page|
  425. page << "if (CKEDITOR.instances.ckeditor_textarea) CKEDITOR.instances.ckeditor_textarea.destroy();"
  426. page.replace_html('#agent-wizard-content', :partial => "wizard/#{@current_user.wizard.next_step}")
  427. page.replace_html("#progress-bar", :partial => 'wizard/progress_indicator')
  428. page.replace_html "#agent-wizard-navigation", :partial => "wizard/wizard_overlay_navigation"
  429. page << "$('#overlay').height($(document.html).height());"
  430. page << "self.scrollTo(0, 0)"
  431. end
  432. end
  433.  
  434. end
  435.  
  436. def next_step
  437. respond_to do |format|
  438. format.html {redirect_to :action => @current_user.wizard.next_step}
  439. format.js { next_step_remote }
  440. end
  441. end
  442.  
  443. def previous_step
  444. respond_to do |format|
  445. format.html { redirect_to :action => @current_user.wizard.previous_step }
  446. format.js { previous_step_remote }
  447. end
  448. end
  449.  
  450. def previous_step_remote
  451. render :update do |page|
  452. # @current_user.wizard.previous_step
  453. page << "if (CKEDITOR.instances.ckeditor_textarea) CKEDITOR.instances.ckeditor_textarea.destroy();"
  454. page.replace_html('#agent-wizard-content', :partial => "wizard/#{@current_user.wizard.previous_step}")
  455. page.replace_html "#progress-bar", :partial => 'wizard/progress_indicator'
  456. page.replace_html "#agent-wizard-navigation", :partial => "wizard/wizard_overlay_navigation"
  457. page << "$('#overlay').height($(document.html).height());"
  458. page << "self.scrollTo(0, 0)"
  459. end
  460. end
  461.  
  462. def current_step
  463.  
  464. end
  465.  
  466. def brand_select
  467. if !params[:site][:brand_id].nil?
  468. brand = Brand.find(params[:site][:brand_id])
  469. render :update do |page|
  470. page.replace_html "brand_domain", :text => brand.domain
  471. end
  472. else
  473. render :update do |page|
  474. end
  475. end
  476. end
  477.  
  478. def write_your_own_service
  479. @service = Service.new(:brand_id => @site.brand.id, :site_id => @site.id)
  480. render :update do |page|
  481. # page.replace :bottom, "agent-wizard-navigation", "<div id='next-button'>#{link_to_remote "Next", :url => {:controller => :wizard, :action=>:next_step}}</div>"
  482. page.replace :services_form, :partial => "write_your_own_service", :locals => {:svc => @service}
  483. controller.set_button_positioning(page)
  484. end
  485. end
  486.  
  487. def make_service
  488. if @service = Service.create(params[:service])
  489. @revision.services_page.services << @service
  490. render :update do |page|
  491. page['#spinner'].hide
  492. page.replace :services_form , :partial => "services_form"
  493. controller.set_button_positioning(page)
  494. end
  495. else
  496. render :update do |page|
  497. page['#spinner'].hide
  498. page.replace_html("#wizard_content_errors", error_messages_for('site_info') )
  499. controller.set_button_positioning(page)
  500. end
  501. end
  502. end
  503.  
  504. def write_your_own_moving_tip
  505. @moving_tip = MovingTip.new(:brand_id => @site.brand.id, :site_id => @site.id)
  506. render :update do |page|
  507. # page.insert_html :bottom, "agent-wizard-navigation", "<div id='next-button'>#{link_to_remote "Next", :url => {:controller => :wizard, :action=>:next_step}}</div>"
  508. page.replace :moving_tips_form, :partial => "write_your_own_moving_tip", :locals => {:moving_tip => @moving_tip}
  509. controller.set_button_positioning(page)
  510. end
  511. end
  512.  
  513. def make_moving_tip
  514. if @moving_tip = MovingTip.create(params[:moving_tip])
  515. @revision.moving_tips_page.moving_tips << @moving_tip
  516. render :update do |page|
  517. page["#spinner"].hide
  518. page.replace :moving_tips_form, :partial => "moving_tips_form"
  519. controller.set_button_positioning(page)
  520. end
  521. else
  522. render :update do |page|
  523. page.visual_effect(:drop, '#spinner')
  524. page.replace_html("#wizard_content_errors", error_messages_for('moving_tip') )
  525. controller.set_button_positioning(page)
  526. end
  527. end
  528. end
  529.  
  530. def set_button_positioning(page)
  531. logger.info "SET POS"
  532. page << "$('#overlay').height($(document.html).height());"
  533. page << "$('#next-button > input').css('bottom','14px');"
  534. page << "$('#agent-wizard-navigation').css('bottom','14px');"
  535. end
  536.  
  537. protected
  538. def verify_upload
  539. logger.info "VERIFY UPLOAD"
  540. if @current_user.wizard.current_step == 6 && @revision.agent_logo.nil?
  541. logger.info "OMG. NO UPLOAD!"
  542. generic_error_message("Please upload a logo.")
  543. return false
  544. end
  545. true
  546. end
  547.  
  548. def generic_error_message(msg)
  549. render :update do |page|
  550. @item = Tableless.new
  551. @item.errors.add_to_base(msg)
  552. page.visual_effect(:drop, '#spinner')
  553. page.replace_html("#wizard_content_errors", error_messages_for('item'))
  554. controller.set_button_positioning(page)
  555. end
  556. end
  557.  
  558.  
  559.  
  560. end
Add Comment
Please, Sign In to add comment