+
+ def attribute_editable? attr, *args
+ super && (attr.to_sym == :name ||
+ (attr.to_sym == :components and
+ (self.state == 'New' || self.state == 'Ready')))
+ end
+
+ def attributes_for_display
+ super.reject { |k,v| k == 'components' }
+ end
+
+ def self.creatable?
+ false
+ end
+
+ def component_input_title(component_name, input_name)
+ component = components[component_name]
+ return nil if component.nil?
+ component[:script_parameters].andand[input_name.to_sym].andand[:title] ||
+ "\"#{input_name.to_s}\" parameter for #{component[:script]} script in #{component_name} component"
+ end