Sha256: 45893da6c7ce59278413fba6dd6a91ec0ee5267b3ce6dfaa9dd8431b2b79f7d5

Contents?: true

Size: 1.39 KB

Versions: 4

Compression:

Stored size: 1.39 KB

Contents

module Odania
	module TargetType
		mattr_reader :targets
		@@targets = Hash.new
		@@targets['CONTENT'] = {type: 'CONTENT', module: 'Odania::CoreTargetTypeUtil', validator_func: 'validate_content_id',
										render_func: 'render_content', selector: 'admin/odania/contents/choose_content'}
		@@targets['CONTENT_LIST'] = {type: 'CONTENT_LIST', module: 'Odania::CoreTargetTypeUtil', validator_func: 'validate_content_list',
											  render_func: 'render_content_list', selector: 'admin/odania/contents/choose_content_list'}
		@@targets['URL'] = {type: 'URL', module: 'Odania::CoreTargetTypeUtil', validator_func: 'validate_url',
								  render_func: 'render_url', selector: 'admin/odania/menu_items/choose_url'}

		class << self
			def get_target(menu_item)
				target_info = self.targets[menu_item.target_type]
				return nil if target_info.nil?

				m = target_info[:module].constantize
				return m.send(target_info[:render_func], menu_item) if m.respond_to?(target_info[:render_func])
				return nil
			end

			def validate_data(menu_item, target_type, target_data)
				return 'invalid target_data' if target_data.nil?

				target_info = self.targets[target_type]
				return 'invalid target_type' if target_info.nil?

				m = target_info[:module].constantize
				return m.send(target_info[:validator_func], menu_item, target_data) if m.respond_to?(target_info[:validator_func])

				return nil
			end
		end
	end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
odania_core-0.0.7 lib/odania/target_type.rb
odania_core-0.0.6 app/models/odania/target_type.rb
odania_core-0.0.5 app/models/odania/target_type.rb
odania_core-0.0.4 app/models/odania/target_type.rb