wizard_edits.rb 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. require_dependency 'wizard/field'
  2. require_dependency 'wizard/step'
  3. ::Wizard::Field.class_eval do
  4. attr_reader :label, :description, :key, :min_length
  5. def initialize(attrs)
  6. attrs = attrs || {}
  7. @id = attrs[:id]
  8. @type = attrs[:type]
  9. @required = !!attrs[:required]
  10. @label = attrs[:label]
  11. @description = attrs[:description]
  12. @key = attrs[:key]
  13. @min_length = attrs[:min_length]
  14. @value = attrs[:value]
  15. @choices = []
  16. end
  17. end
  18. class ::Wizard::Step
  19. attr_accessor :title, :description, :key
  20. end
  21. ::WizardSerializer.class_eval do
  22. attributes :id, :background, :completed
  23. def id
  24. object.id
  25. end
  26. def include_id?
  27. object.respond_to?(:id)
  28. end
  29. def background
  30. object.background
  31. end
  32. def include_background?
  33. object.respond_to?(:background)
  34. end
  35. def completed
  36. object.completed?
  37. end
  38. def include_completed?
  39. object.completed? && !object.respond_to?(:multiple_submissions) && !scope.current_user.admin?
  40. end
  41. def include_start?
  42. object.start && include_steps?
  43. end
  44. def include_steps?
  45. !include_completed?
  46. end
  47. end
  48. ::WizardStepSerializer.class_eval do
  49. def title
  50. return object.title if object.title
  51. I18n.t("#{object.key || i18n_key}.title", default: '')
  52. end
  53. def description
  54. return object.description if object.description
  55. I18n.t("#{object.key || i18n_key}.description", default: '')
  56. end
  57. end
  58. ::WizardFieldSerializer.class_eval do
  59. def label
  60. return object.label if object.label
  61. I18n.t("#{object.key || i18n_key}.label", default: '')
  62. end
  63. def description
  64. return object.description if object.description
  65. I18n.t("#{object.key || i18n_key}.description", default: '')
  66. end
  67. def placeholder
  68. I18n.t("#{object.key || i18n_key}.placeholder", default: '')
  69. end
  70. end