lib/generators/adminpanel/resource/resource_generator.rb in adminpanel-2.1.1 vs lib/generators/adminpanel/resource/resource_generator.rb in adminpanel-2.1.2

- old
+ new

@@ -1,251 +1,248 @@ -# require "action_view" require 'rails/generators/active_record' module Adminpanel - module Generators - class ResourceGenerator < ActiveRecord::Generators::Base - source_root File.expand_path("../templates", __FILE__) - desc "Generate the resource files necessary to use a model" - class_option :'include-gallery', - :type => :boolean, - :aliases => '-g', - :default => true, - :desc => 'Creates the gallery for this resource' + class ResourceGenerator < ActiveRecord::Generators::Base + source_root File.expand_path("../templates", __FILE__) + desc "Generate the resource files necessary to use a model" + class_option :'gallery', + :type => :boolean, + :aliases => '-g', + :default => true, + :desc => 'Creates the gallery for this resource' - argument :fields, :type => :array, :default => [], :banner => "field[:type][:index] field[:type][:index]" + argument :fields, :type => :array, :default => [], :banner => "field[:type][:index] field[:type][:index]" - def change_fields_aliases - fields.each do |attribute| - type = attribute.split(':').second - case type - when 'wysiwyg' - fields.delete(attribute) - fields << attribute.split(':').first + ':' + 'text' - end + def change_fields_aliases + fields.each do |attribute| + type = attribute.split(':').second + case type + when 'wysiwyg' + fields.delete(attribute) + fields << attribute.split(':').first + ':' + 'text' end end + end - def generate_model - template 'resource.rb', "app/models/adminpanel/#{lower_singularized_name}.rb" - end + def generate_model + template 'resource.rb', "app/models/adminpanel/#{lower_singularized_name}.rb" + end - def generate_controller - if is_a_resource? - template "controller.rb", "app/controllers/adminpanel/#{pluralized_name}_controller.rb" - end + def generate_controller + if is_a_resource? + template "controller.rb", "app/controllers/adminpanel/#{pluralized_name}_controller.rb" end + end - def generate_migrations - parameters = fields - parameters.delete_if{ |pair| pair.split(':').second == 'has_many' } - invoke :migration, ["create_adminpanel_#{pluralized_name}", parameters] - end + def generate_migration + parameters = fields + parameters.delete_if{ |pair| pair.split(':').second == 'has_many' } + invoke :migration, ["create_adminpanel_#{pluralized_name}", parameters] + puts parameters if ENV['RAILS_ENV'] + end - def generate_gallery - if has_gallery? && is_a_resource? - invoke 'adminpanel:gallery', [lower_singularized_name] - end + def generate_gallery + if has_gallery? && is_a_resource? + invoke 'adminpanel:gallery', [lower_singularized_name] end + end - def add_resource_to_config - if setup_is_found? && is_a_resource? - inject_into_file 'config/initializers/adminpanel_setup.rb', - after: 'config.displayable_resources = [' do - indent "\n:#{pluralized_name},", 4 - end + def add_resource_to_config + if setup_is_found? && is_a_resource? + inject_into_file 'config/initializers/adminpanel_setup.rb', + after: 'config.displayable_resources = [' do + indent "\n:#{pluralized_name},", 4 end end + end - def print_messages - puts "don't forget to restart your server" - end + def print_messages + puts "don't forget to restart your server" + end - private - - def setup_is_found? - if Dir.exists?('config') && Dir.exists?('config/initializers') && File.exists?('config/initializers/adminpanel_setup.rb') - true - else - false - end + private + def setup_is_found? + if Dir.exists?('config') && Dir.exists?('config/initializers') && File.exists?('config/initializers/adminpanel_setup.rb') + true + else + false end + end - def is_a_resource? - fields.each do |attribute| - assign_attributes_variables(attribute) - if @attr_type != 'belongs_to' - return true - end + def is_a_resource? + fields.each do |attribute| + assign_attributes_variables(attribute) + if @attr_type != 'belongs_to' + return true end - false end + false + end - def has_gallery? - options[:'include-gallery'] - end + def has_gallery? + options[:'gallery'] + end - def gallery_name - "#{lower_singularized_name}file" - end + def gallery_name + "#{lower_singularized_name}file" + end - def lower_singularized_name - name.singularize.downcase - end + def lower_singularized_name + name.singularize.downcase + end - def capitalized_resource - lower_singularized_name.capitalize - end + def capitalized_resource + lower_singularized_name.capitalize + end - def pluralized_name - "#{lower_singularized_name.pluralize}" - end + def pluralized_name + "#{lower_singularized_name.pluralize}" + end - def belongs_to_field(resource) - "#{resource.singularize.downcase}_id" - end + def belongs_to_field(resource) + "#{resource.singularize.downcase}_id" + end - def has_many_field(resource) - "#{resource.singularize.downcase}_ids" - end + def has_many_field(resource) + "#{resource.singularize.downcase}_ids" + end - def resource_class_name(resource) - "#{resource.singularize.capitalize}" + def resource_class_name(resource) + "#{resource.singularize.capitalize}" + end + + def assign_attributes_variables(attribute) + @attr_field = attribute.split(":").first + if attribute.split(":").second.nil? + @attr_type = "string" + else + @attr_type = attribute.split(":").second end + end - def assign_attributes_variables(attribute) - @attr_field = attribute.split(":").first - if attribute.split(":").second.nil? - @attr_type = "string" - else - @attr_type = attribute.split(":").second + def symbolized_attributes + fields.map do |attribute| + assign_attributes_variables(attribute) + case @attr_type + when 'belongs_to' + ':' + belongs_to_field(@attr_field) + when 'has_many' + ':' + has_many_field(@attr_field) + else + ":#{attribute.split(':').first}" end - end + end.join(",\n") + end - def symbolized_attributes - fields.map do |attribute| - assign_attributes_variables(attribute) - case @attr_type - when 'belongs_to' - ':' + belongs_to_field(@attr_field) - when 'has_many' - ':' + has_many_field(@attr_field) - else - ":#{attribute.split(':').first}" - end - end.join(",\n") - end + def get_attribute_hash + fields.map do |attribute| + assign_attributes_variables(attribute) + send(@attr_type + '_form_hash') + end.join(", \n") + end - def get_attribute_hash - fields.map do |attribute| - assign_attributes_variables(attribute) - send(@attr_type + '_form_hash') - end.join(", \n") - end + def string_form_hash + attribute_hash(@attr_field, 'text_field') + end - def string_form_hash - attribute_hash(@attr_field, 'text_field') - end + def float_form_hash + attribute_hash(@attr_field, 'text_field') + end - def float_form_hash - attribute_hash(@attr_field, 'text_field') - end + def text_form_hash + attribute_hash(@attr_field ,'wysiwyg_field') + end - def text_form_hash - attribute_hash(@attr_field ,'wysiwyg_field') - end + def integer_form_hash + attribute_hash(@attr_field, 'number_field') + end - def integer_form_hash - attribute_hash(@attr_field, 'number_field') - end + def boolean_form_hash + attribute_hash(@attr_field, 'boolean') + end - def boolean_form_hash - attribute_hash(@attr_field, 'boolean') - end + def datepicker_form_hash + attribute_hash(@attr_field, 'datepicker') + end - def datepicker_form_hash - attribute_hash(@attr_field, 'datepicker') - end + def file_field_form_hash + attribute_hash(gallery_name.pluralize, 'adminpanel_file_field') + end - def file_field_form_hash - attribute_hash(gallery_name.pluralize, 'adminpanel_file_field') - end + def belongs_to_form_hash + attribute_hash(belongs_to_field(@attr_field), 'belongs_to', resource_class_name(@attr_field)) + end - def belongs_to_form_hash - attribute_hash(belongs_to_field(@attr_field), 'belongs_to', resource_class_name(@attr_field)) - end + def has_many_form_hash + attribute_hash(has_many_field(resource_class_name(@attr_field)), 'has_many', 'has_many model') + end - def has_many_form_hash - attribute_hash(has_many_field(resource_class_name(@attr_field)), 'has_many', 'has_many model') + def attribute_hash(name, type, model = '') + if model != '' + model = model_type(model) + ",\n" end + "{\n" + + indent("'#{name}'" + " => {\n", 2) + + indent(form_type(type), 4) + ",\n" + + indent(label_type, 4) + ",\n" + + indent(placeholder_type, 4) + ",\n" + + indent(model, 4) + + indent("}\n", 2) + + '}' + end - def attribute_hash(name, type, model = '') - if model != '' - model = model_type(model) + ",\n" - end - "{\n" + - indent("'#{name}'" + " => {\n", 2) + - indent(form_type(type), 4) + ",\n" + - indent(label_type, 4) + ",\n" + - indent(placeholder_type, 4) + ",\n" + - indent(model, 4) + - indent("}\n", 2) + - '}' - end + def form_type(type) + "'type' => '#{type}'" + end - def form_type(type) - "'type' => '#{type}'" - end + def label_type + "'label' => '#{@attr_field}'" + end - def label_type - "'label' => '#{@attr_field}'" - end + def placeholder_type + "'placeholder' => '#{@attr_field}'" + end - def placeholder_type - "'placeholder' => '#{@attr_field}'" - end + def model_type(type) + "'model' => 'Adminpanel::#{type}'" + end - def model_type(type) - "'model' => 'Adminpanel::#{type}'" - end - - def has_associations? - fields.each do |attribute| - assign_attributes_variables(attribute) - if @attr_type == "images" || @attr_type == "belongs_to" || @attr_type == "has_many" || @attr_type == "has_many_through" - return true - end + def has_associations? + fields.each do |attribute| + assign_attributes_variables(attribute) + if @attr_type == "images" || @attr_type == "belongs_to" || @attr_type == "has_many" || @attr_type == "has_many_through" + return true end - return false end + return false + end - def associations - association = "" - fields.each do |attribute| - assign_attributes_variables(attribute) - if @attr_type == "belongs_to" - association = "#{association}#{belongs_to_association(@attr_field)}" - elsif @attr_type == "has_many" || @attr_type == "has_many_through" - association = "#{association}#{has_many_association(@attr_field)}" - end - + def associations + association = "" + fields.each do |attribute| + assign_attributes_variables(attribute) + if @attr_type == "belongs_to" + association = "#{association}#{belongs_to_association(@attr_field)}" + elsif @attr_type == "has_many" || @attr_type == "has_many_through" + association = "#{association}#{has_many_association(@attr_field)}" end - association - end - def belongs_to_association(field) - "belongs_to :#{field.singularize.downcase}\n\t\t" end + association + end - def has_many_association(field) - return "# has_many :categorizations\n\t\t" + - "# has_many :#{@attr_field}, " + - ":through => :categorizations, " + - ":dependent => :destroy\n\t\t" - end + def belongs_to_association(field) + "belongs_to :#{field.singularize.downcase}\n\t\t" + end - def get_gallery - return "\n\t\tmount_images :#{gallery_name.pluralize}\n" - end + def has_many_association(field) + return "# has_many :categorizations\n\t\t" + + "# has_many :#{@attr_field}, " + + ":through => :categorizations, " + + ":dependent => :destroy\n\t\t" + end + def get_gallery + return "\n\t\tmount_images :#{gallery_name.pluralize}\n" end + end end