2012-11-15 07:51:44 +00:00
|
|
|
class Admin::LinksController < Admin::ItemsController
|
2010-01-14 10:30:53 +00:00
|
|
|
|
|
|
|
def new
|
2011-05-25 06:50:56 +00:00
|
|
|
@item = Link.new
|
2012-02-17 06:54:11 +00:00
|
|
|
@item.parent = Page.find(params[:parent_id]) rescue nil
|
2013-07-02 08:46:44 +00:00
|
|
|
render layout: false
|
2010-01-14 10:30:53 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def edit
|
2011-05-25 06:50:56 +00:00
|
|
|
@item = Link.find(params[:id])
|
2013-07-02 08:46:44 +00:00
|
|
|
render layout: false
|
2010-01-14 10:30:53 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def create
|
2011-05-25 06:50:56 +00:00
|
|
|
@item = Link.new(params[:link])
|
2010-01-14 10:30:53 +00:00
|
|
|
|
2013-07-30 03:49:28 +00:00
|
|
|
if @item.save(params[:link])
|
|
|
|
success = true
|
|
|
|
else
|
|
|
|
success = check_valid_url
|
|
|
|
end
|
|
|
|
if success
|
2012-09-12 11:12:50 +00:00
|
|
|
flash.now[:notice] = t('create.success.link')
|
2011-05-13 01:08:42 +00:00
|
|
|
respond_to do |format|
|
2013-07-02 08:46:44 +00:00
|
|
|
format.js { render 'admin/items/reload_items' }
|
2011-05-13 01:08:42 +00:00
|
|
|
end
|
2010-01-14 10:30:53 +00:00
|
|
|
else
|
2012-09-12 11:12:50 +00:00
|
|
|
flash.now[:error] = t('create.error.link')
|
2011-05-13 01:08:42 +00:00
|
|
|
render :action => "new"
|
2010-01-14 10:30:53 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def update
|
2011-05-25 06:50:56 +00:00
|
|
|
@item = Link.find(params[:id])
|
2010-01-14 10:30:53 +00:00
|
|
|
|
2011-05-25 06:50:56 +00:00
|
|
|
if @item.update_attributes(params[:link])
|
2013-07-30 03:49:28 +00:00
|
|
|
success = true
|
|
|
|
else
|
|
|
|
success = check_valid_url
|
|
|
|
end
|
|
|
|
if success
|
2012-09-12 11:12:50 +00:00
|
|
|
flash.now[:notice] = t('update.success.link')
|
2011-05-13 01:08:42 +00:00
|
|
|
respond_to do |format|
|
2013-07-02 08:46:44 +00:00
|
|
|
format.js { render 'admin/items/reload_items' }
|
2011-05-13 01:08:42 +00:00
|
|
|
end
|
2010-01-14 10:30:53 +00:00
|
|
|
else
|
2012-09-12 11:12:50 +00:00
|
|
|
flash.now[:error] = t('update.error.link')
|
2010-01-14 10:30:53 +00:00
|
|
|
render :action => "edit"
|
|
|
|
end
|
|
|
|
end
|
2013-07-30 03:49:28 +00:00
|
|
|
|
|
|
|
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
|
2011-05-13 01:59:29 +00:00
|
|
|
|
2010-01-14 10:30:53 +00:00
|
|
|
end
|