class Admin::MenusController < Admin::BaseController cache_sweeper :page_sweeper, :only => [:create, :update, :destroy, :link, :activate] before_filter :get_menu, :only => [:show, :edit, :update, :destroy, :duplicate, :activate] before_filter :new_menu, :only => [:new, :create] def index respond_to do |format| format.html format.json do sort render :layout => false end end end def show end def new end def duplicate @menu = @menu.clone render :action => 'new' end def create if @menu.save flash[:notice] = t('menu.create.success').capitalize redirect_to([forgeos_cms, :edit, :admin, @menu]) else flash[:error] = t('menu.create.failed').capitalize render :action => 'new' end end def edit end def update if @menu.update_attributes(params[:menu]) flash[:notice] = t('menu.update.success').capitalize redirect_to([forgeos_cms, :edit, :admin, @menu]) else flash[:error] = t('menu.update.failed').capitalize render(:action => 'edit') end end def destroy if @menu.destroy flash[:notice] = t('menu.destroy.success').capitalize else flash[:error] = t('menu.destroy.failed').capitalize end return redirect_to([forgeos_cms, :admin, :menus]) end def activate render :text => @menu.activate end private def get_menu unless @menu = ::Menu.find_by_id(params[:id]) flash[:error] = t('menu.not_exist').capitalize return redirect_to([forgeos_cms, :admin, :menus]) end end def new_menu @menu = ::Menu.new(params[:menu]) end def sort columns = %w(menus.name menus.name active) per_page = params[:iDisplayLength].to_i offset = params[:iDisplayStart].to_i page = (offset / per_page) + 1 order_column = params[:iSortCol_0].to_i order = "#{columns[order_column]} #{params[:sSortDir_0].upcase}" conditions = {} includes = [] options = { :page => page, :per_page => per_page } if params[:category_id] conditions[:categories_elements] = { :category_id => params[:category_id] } includes << :menu_categories end options[:conditions] = conditions unless conditions.empty? options[:include] = includes unless includes.empty? options[:order] = order unless order.squeeze.blank? if params[:sSearch] && !params[:sSearch].blank? options[:star] = true @menus = ::Menu.search(params[:sSearch], options) else @menus = ::Menu.paginate(:all, options) end end end