wizard_edits.rb 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. require_dependency 'wizard'
  2. require_dependency 'wizard/field'
  3. require_dependency 'wizard/step'
  4. ::Wizard.class_eval do
  5. def self.user_requires_completion?(user)
  6. wizard_result = self.new(user).requires_completion?
  7. return wizard_result if wizard_result
  8. custom_redirect = nil
  9. if user && wizard_id = CustomWizard::Wizard.after_signup
  10. custom_redirect = wizard_id.dasherize
  11. if CustomWizard::Wizard.new(user, id: wizard_id).completed?
  12. custom_redirect = nil
  13. end
  14. end
  15. $redis.set('custom_wizard_redirect', custom_redirect)
  16. !!custom_redirect
  17. end
  18. end
  19. ::Wizard::Field.class_eval do
  20. attr_reader :label, :description, :key, :min_length
  21. def initialize(attrs)
  22. attrs = attrs || {}
  23. @id = attrs[:id]
  24. @type = attrs[:type]
  25. @required = !!attrs[:required]
  26. @label = attrs[:label]
  27. @description = attrs[:description]
  28. @key = attrs[:key]
  29. @min_length = attrs[:min_length]
  30. @value = attrs[:value]
  31. @choices = []
  32. end
  33. end
  34. class ::Wizard::Step
  35. attr_accessor :title, :description, :key
  36. end
  37. ::WizardSerializer.class_eval do
  38. attributes :id, :background, :completed, :required
  39. def id
  40. object.id
  41. end
  42. def include_id?
  43. object.respond_to?(:id)
  44. end
  45. def background
  46. object.background
  47. end
  48. def include_background?
  49. object.respond_to?(:background)
  50. end
  51. def completed
  52. object.completed?
  53. end
  54. def include_completed?
  55. object.completed? && !object.respond_to?(:multiple_submissions) && !scope.current_user.admin?
  56. end
  57. def include_start?
  58. object.start && include_steps?
  59. end
  60. def include_steps?
  61. !include_completed?
  62. end
  63. def required
  64. object.required
  65. end
  66. end
  67. ::WizardStepSerializer.class_eval do
  68. def title
  69. return object.title if object.title
  70. I18n.t("#{object.key || i18n_key}.title", default: '')
  71. end
  72. def description
  73. return object.description if object.description
  74. I18n.t("#{object.key || i18n_key}.description", default: '')
  75. end
  76. end
  77. ::WizardFieldSerializer.class_eval do
  78. def label
  79. return object.label if object.label
  80. I18n.t("#{object.key || i18n_key}.label", default: '')
  81. end
  82. def description
  83. return object.description if object.description
  84. I18n.t("#{object.key || i18n_key}.description", default: '')
  85. end
  86. def placeholder
  87. I18n.t("#{object.key || i18n_key}.placeholder", default: '')
  88. end
  89. end