87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| class Admin::LinksController < Admin::ItemsController
 | |
|   
 | |
|   
 | |
|   def new
 | |
|     @item = Link.new
 | |
|     @item.parent = Page.find(params[:parent_id]) rescue nil
 | |
|     render layout: false
 | |
|   end
 | |
| 
 | |
|   def edit
 | |
|     @item = Link.find(params[:id])
 | |
|     render layout: false
 | |
|   end
 | |
| 
 | |
|   def create
 | |
|     @item = Link.new(params[:link])
 | |
|     if @item.save
 | |
|       render 'admin/items/reload_items'
 | |
|     else
 | |
|       @error = error_messages_for(@item)
 | |
|       render 'admin/items/form_error'
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def update
 | |
|     @item = Link.find(params[:id])
 | |
|     if @item.update_attributes(params[:link])
 | |
|       render 'admin/items/reload_items'
 | |
|     else
 | |
|       @error = error_messages_for(@item)
 | |
|       render 'admin/items/form_error'
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def get_link_setting_json
 | |
|     begin
 | |
|       link = Link.find(params[:id])
 | |
|       m = {}
 | |
|       m["public"] = link.is_published ? 1 : 0
 | |
|       m["link"] = @site_in_use_locales.inject([]) do |result, locale|
 | |
|         result << [locale, (link.enabled_for && link.enabled_for.include?(locale)) ? 1 : 0, (link.menu_enabled_for && link.menu_enabled_for[locale].eql?("true")) ? 1 :0]
 | |
|       end
 | |
|       render json: JSON.pretty_generate(m)
 | |
|     rescue
 | |
|       render :json => {error: ''}, status: 422
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   protected
 | |
| 
 | |
|   def check_valid_url
 | |
|     if @item.errors.include?(:url) && !@item.errors.added?(:url, :blank) && @item.errors.added?(:url, :invalid)
 | |
|       begin
 | |
|         url = @item.url
 | |
|         url.gsub!('http://', '').slice!(/^\//)
 | |
|         path = Rails.application.routes.recognize_path(url)
 | |
|         if path.has_key?(:page_name)
 | |
|           if Page.where(path: path[:page_name]).first
 | |
|             new_url = "#{request.base_url}/#{url}"
 | |
|           else
 | |
|             success = false
 | |
|           end
 | |
|         else
 | |
|           new_url = "#{request.base_url}/#{url}"
 | |
|         end
 | |
|         if @item.errors.count == 1
 | |
|           @item.url = new_url
 | |
|           if @item.save
 | |
|             success = true
 | |
|           else
 | |
|             success = false
 | |
|           end
 | |
|         else
 | |
|           @item.url = new_url
 | |
|           success = false
 | |
|         end unless success == false
 | |
|       rescue
 | |
|         success = false
 | |
|       end
 | |
|     else
 | |
|       success = false
 | |
|     end
 | |
|     success
 | |
|   end
 | |
|   
 | |
| end
 |