lib/home_page/navigation.rb in home_page-0.0.5 vs lib/home_page/navigation.rb in home_page-0.0.6

- old
+ new

@@ -1,20 +1,11 @@ module HomePage module Navigation class Base - @@items = [:users, :authentication] @@products = {} @@menu_options = {} - def self.items - @@items - end - - def self.items=(value) - @@items = value - end - def self.add_product(slug, text) @@products[slug] = text end def self.products @@ -35,40 +26,90 @@ def self.code Proc.new do |navigation| navigation.items do |primary, options| primary.dom_class = 'nav navbar-nav' - ::HomePage::Navigation::Base.items.each do |item| - klass = "HomePage#{item.is_a?(Array) ? item.first.to_s.classify : ''}::Navigation" + Setting['home_page.general.navigation.items'].each do |item| + klass = "HomePage#{item.is_a?(Array) ? item.first.classify : ''}::Navigation" item = item.is_a?(Array) ? item.last : item instance_exec primary, HomePage::Navigation::Base.menu_options(item), &klass.constantize.menu_code(item) end end end end def self.menu_code(resource) case resource - when :users + when 'page_modules' Proc.new do |primary, options| if user_signed_in? - primary.item :users, I18n.t('users.index.title'), users_path do |users| - unless (@user.new_record? rescue true) || current_user.try(:id) == @user.id - if options[:after_resource_has_many] - instance_exec users, {}, &options[:after_resource_has_many] + primary.item( + :page_module_collections, t('page_modules.index.title'), page_module_collections_path, + breadcrumb_title: t('page_module_collections.index.title') + ) do |page_module_collections| + page_module_collections.item :new, t('general.new'), new_page_module_collection_path + + unless (@page_module_collection.new_record? rescue true) + page_module_collections.item( + :show, @page_module_collection.title, page_module_collection_path(@page_module_collection) + ) do |page_module_collection| + page_module_collection.item( + :edit, t('general.edit'), edit_page_module_collection_path(@page_module_collection) + ) + page_module_collection.item( + :destroy, t('general.destroy'), page_module_collection_path(@page_module_collection), method: :delete, + confirm: t('general.questions.are_you_sure') + ) + + page_module_collection.item( + :new_module, t('page_modules.new.short_title'), new_page_module_collection_module_path(@page_module_collection) + ) + + page_module_collection.item( + :modules, t('page_modules.index.short_title'), page_module_collection_modules_path(@page_module_collection) + ) do |page_modules| + unless (@page_module.new_record? rescue true) + page_modules.item :edit, t('general.edit'), edit_page_module_path(@page_module) do |page_module| + page_module.item( + :destroy, t('general.destroy'), page_module_path(@page_module), method: :delete, + confirm: t('general.questions.are_you_sure') + ) + end + end + end end end end end end - when :authentication + when 'users' Proc.new do |primary, options| if user_signed_in? - primary.item :sign_out, I18n.t('authentication.sign_out'), destroy_user_session_path, method: :delete + primary.item :users, t('users.index.title'), users_path do |users| + unless (@user.new_record? rescue true) + users.item :show, @user.name, user_path(@user) do |user| + user.item :edit, t('general.edit'), edit_user_path(@user) + + if options[:after_resource_has_many] + instance_exec user, {}, &options[:after_resource_has_many] + end + end + end + end + end + end + when 'settings' + Proc.new do |primary, options| + primary.item :settings, t('settings.index.title'), settings_path if user_signed_in? + end + when 'authentication' + Proc.new do |primary, options| + if user_signed_in? + primary.item :sign_out, t('authentication.sign_out'), destroy_user_session_path, method: :delete else - primary.item :authentication, I18n.t('authentication.title'), new_user_session_path do |authentication| - authentication.item :sign_in, I18n.t('authentication.sign_in'), new_user_session_path - authentication.item :sign_up, I18n.t('authentication.sign_up'), new_user_registration_path + primary.item :authentication, t('authentication.title'), new_user_session_path do |authentication| + authentication.item :sign_in, t('authentication.sign_in'), new_user_session_path + authentication.item :sign_up, t('authentication.sign_up'), new_user_registration_path end end end end end \ No newline at end of file