Orbit::Application.routes.draw do

  devise_for :users,:controllers => {:sessions => 'sessions'}
  mount Resque::Server, :at => "/admin/resque"
  
  # routes for sinatra app
  match '/site/set_registered', :to => CentralServerExchangeApp  
  match '/site/public_key', :to => CentralServerExchangeApp 
  match '/site/update', :to => GithubApp
  match '/purchase/:type', :to => CentralServerExchangeApp

  match 'load_orbit_bar' => 'pages#load_orbit_bar'

  # routes for admin
  namespace :admin do
    mount Resque::Server.new, :at => "/resque"
    resources :assets do   
      collection do
        get 'file_upload'
        post 'delete'
      end
    end
    resources :asset_categories
    resources :asset_tags
    resources :app_auths 
    resources :object_auths  do
      match 'new_interface/:ob_type/:title/new' => "object_auths_new_interface#new" ,:as => :init_ob_auth,:via => :get
      match 'new_interface' => "object_auths_new_interface#setting" ,:as => :ob_auth,:via => :get
      match 'new_interface' => "object_auths_new_interface#update_setting" ,:as => :ob_auth,:via => :post
      match 'new_interface' => "object_auths_new_interface#user_list" ,:as => :ob_auth_show,:via => :put
      
      collection do
        match 'new/:type/:obj_id',:action => 'new',:via => "get",:as => :init
      end
      member do
        match ':id/create_role',:action => 'create_role',:via => "post",:as => :create_role
        match 'remove/:type/:target_id' ,:action=> 'remove_role',:via => "delete",:as =>:remove
      end
    end


    match 'ad_banners/:id/preview' => 'ad_banners#realtime_preview',:as => :realtime_preview_ad_banner,:via => :put
    match 'ad_banners/:id/rename' => 'ad_banners#rename',:as => :rename_ad_banner,:via => :post

    resources :ad_banners do 
        collection do
          match 'new_ad_image' => 'ad_images#new',:as => :new_ad_image,:via => :get
          match 'new_ad_image' => 'ad_images#create',:as => :create_ad_image,:via => :post
        end
        resources :ad_images ,:except => [:show,:index]
    end
    resources :dashboards
    resources :designs do
      collection do
        get 'upload_package'
        post 'delete'
        post 'upload_package'
      end
      member do
        post 'edit_file'  => 'designs#edit_file'
      end
    end
    resources :infos do
      get 'add_attribute_field'
    end
    resources :items
    match 'update_position' => 'items#update_position'
    resources :links do
      member do
        get 'delete'
      end
    end
    resources :pages do
      member do
        get 'delete'
        get 'reload_themes'
      end
    end
    resources :module_apps do
      match 'manager_auth_proc' => "module_apps_new_interface#setting" ,:as => :manager_auth_proc,:via => :get
      match 'manager_auth_proc' => "module_apps_new_interface#update_setting" ,:as => :manager_auth_proc,:via => :post
      match 'manager_auth_proc' => "module_apps_new_interface#user_list" ,:as => :manager_auth_show,:via => :put
      resources :app_auths do
        member do
          match 'remove/:type/:target_id' ,:action=> 'remove',:via => "delete",:as =>:remove
        end
      end
      
      member do
        match 'assign_manager' ,:action=> 'assign_manager',:via => "post",:as =>:assign_manager
        match 'assign_sub_manager' ,:action=> 'assign_sub_manager',:via => "post",:as =>:assign_sub_manager

        match 'remove_manager/:app_manager_id' ,:action=> 'remove_manager',:via => "delete",:as =>:remove_manager
        match 'remove_sub_manager/:app_sub_manager_id' ,:action=> 'remove_sub_manager',:via => "delete",:as =>:remove_sub_manager
        get 'reload_frontend_pages'
      end
    end
    resources :page_parts do
      member do
        get 'reload_widgets'
        get 'reload_r_tag_options'
      end
    end
    resources :purchases do
      collection do
        get 'install_app'
      end
      member do
        get 'download'
      end
    end
    resources :roles do
      get 'add_sub_role'
      get 'add_attribute_field'
    end
    resources :sites do
      get 'site_info'
      get 'system_info'
      get 'language'
      get 'mail_setting'
      get 'ui_theme'
    end
    resources :snippets
    resources :tags
    resources :translations
    resources :users
  end
  # end admin
  
  namespace :panel do
    resources :users
  end
  
  match '/panel/:app_name/front_end/:app_action/:id' => 'pages#show_from_link', :constraints => lambda { |request|
    !request.query_string.include?("inner=true")
  }
  
  match '/panel/:app_name/front_end/:app_action' => 'pages#index_from_link', :constraints => lambda { |request|
    !request.query_string.include?("inner=true")
  }
  
  # routes for gridfs files
  match "/gridfs/*path" => "gridfs#serve" 

  # match "/images/*path" => "gridfs#serve_images"
  # match "/admin/pages/images/*path" => "gridfs#serve_images"
  
  # routes for pages to generate
  match '*page_name' => 'pages#show', :as => :page, :constraints => lambda{|request|
    !request.path.starts_with?("/panel")
  }
  
  root :to => 'pages#index'
  
end
