module Weeler module ActionDispatch module Routing module Mapper # Pass given resource to "resources" mount method and # add extra routes for members and collections needed by weeler # # Options: # * include_in_weeler_menu: true to include this resource in content section. # def weeler_resources(*args, &block) add_menu_item args[0] if args[0].present? && args[1].present? && args[1][:include_in_weeler_menu] == true resources *args do yield if block_given? end end # Mounts weeler at mount_location location. # E.g. # mount_weeler_at "root" do # weeler_resources :posts, include_in_weeler_menu: true # end # def mount_weeler_at mount_location, options={}, &block Weeler.mount_location_namespace = mount_location.gsub("/", "").to_sym scope mount_location do namespace :weeler, :path => nil do mount_configuration_controllers weeler_resources :static_sections resources :seos, :only => [:update] root :to => "home#index" get "/home/about" get "/content", to: "content#index" get "/administration", to: "administration#index" get "/configuration", to: "configuration#index" add_concerns yield if block_given? end end end private # Mount translations controller def mount_configuration_controllers resources :translations, :except => [:show] do collection do get :export post :import get :usage_stats end end resources :seo_items resources :settings, :only => [:index, :edit, :update] end # Ordable route concern for dynamic sorting and removing image def add_concerns concern :orderable do collection do post :order end end concern :imageable do member do get "remove_image" end end end # Add route menu def add_menu_item resource Weeler.content_menu_items << {name: resource.to_s.capitalize, weeler_path: resource} unless Weeler.content_menu_items.select{ |item| item[:name] == resource.to_s.capitalize }.size > 0 Weeler.build_main_menu end end # Mapper end end end