52: def wrap_form_helper_for_permissions( helper_name, args,
53: display_val_code = 'val.to_s'
54: )
55: wrapped_helper_name = (helper_name + '_without_permissions')
56: alias_method wrapped_helper_name, helper_name
57: args_without_inits =
58: args.gsub(/\s*=[^,]*,/, ',').gsub(/\s*=[^,]*$/, '')
59: code = "def \#{helper_name} (\#{args})\nif @object.permits_update_attr?( attr )\n\#{wrapped_helper_name}( \#{args_without_inits} )\nelse\ninp_flag = @options[:if_not_permitted] || :disable\ncase inp_flag\nwhen :disable :\nsaved_object_name = @object_name\nbegin\n@object_name=('disabled_'+saved_object_name.to_s).to_sym\nhtml_options = html_options.merge :disabled => true\n\#{wrapped_helper_name}( \#{args_without_inits} )\nensure\n@object_name = saved_object_name\nend\nwhen :present_text :\nval = @object.send attr\n\#{display_val_code}\nelse\nraise ArgumentError,\n\"Invalid :if_not_permitted option, \" + inp_flag.inspect\nend\nend\nend\n"
60: class_eval code
61: end