Use explicit parameters instead of request format to determine whether we render a remote or non-remote form in aspects#new.
Facebox needs to get back a text/html response. We were using text/javascript to indicate that we wanted a remote form and text/html to indicate we wanted a non-remote form. The trouble is, if we request with text/javascript then that is the format we get back. It doesn't really make sense to use formats that way anyway, so I changed it to an explicit parameter. This had the nice side effect of simplifying our new-aspect views.
This commit is contained in:
parent
f0b8114738
commit
b60101b9ad
7 changed files with 45 additions and 38 deletions
|
|
@ -61,7 +61,7 @@ class AspectsController < ApplicationController
|
||||||
redirect_to :back
|
redirect_to :back
|
||||||
elsif request.env['HTTP_REFERER'].include?("contacts")
|
elsif request.env['HTTP_REFERER'].include?("contacts")
|
||||||
redirect_to :back
|
redirect_to :back
|
||||||
elsif params[:aspect][:person_id]
|
elsif params[:aspect][:person_id].present?
|
||||||
@person = Person.where(:id => params[:aspect][:person_id]).first
|
@person = Person.where(:id => params[:aspect][:person_id]).first
|
||||||
|
|
||||||
if @contact = current_user.contact_for(@person)
|
if @contact = current_user.contact_for(@person)
|
||||||
|
|
@ -86,9 +86,9 @@ class AspectsController < ApplicationController
|
||||||
def new
|
def new
|
||||||
@aspect = Aspect.new
|
@aspect = Aspect.new
|
||||||
@person_id = params[:person_id]
|
@person_id = params[:person_id]
|
||||||
|
@remote = params[:remote] == "true"
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.js { render :layout => false }
|
format.html { render :layout => false }
|
||||||
format.html { render '_new' }
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
= aspect
|
= aspect
|
||||||
|
|
||||||
%li
|
%li
|
||||||
= link_to t('.add_an_aspect'), "#add_aspect_pane", :class => "new_aspect", :rel => "facebox"
|
= link_to t('.add_an_aspect'), new_aspect_path, :class => "new_aspect", :rel => "facebox"
|
||||||
|
|
||||||
%li.all_contacts{:class => ("active" if params["set"] == "all" || params["set"] == "only_sharing")}
|
%li.all_contacts{:class => ("active" if params["set"] == "all" || params["set"] == "only_sharing")}
|
||||||
%a.aspect_selector{:href => contacts_path(:set => "all"), :class => ("sub_selected" if params["set"] == "only_sharing")}
|
%a.aspect_selector{:href => contacts_path(:set => "all"), :class => ("sub_selected" if params["set"] == "only_sharing")}
|
||||||
|
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
-# Copyright (c) 2010, Diaspora Inc. This file is
|
|
||||||
-# licensed under the Affero General Public License version 3 or later. See
|
|
||||||
-# the COPYRIGHT file.
|
|
||||||
|
|
||||||
.span-12.last
|
|
||||||
#facebox_header
|
|
||||||
%h3
|
|
||||||
= t('contacts.index.add_a_new_aspect')
|
|
||||||
|
|
||||||
= form_for(Aspect.new, :remote => (defined?(remote) && remote) ) do |aspect|
|
|
||||||
= aspect.error_messages
|
|
||||||
- if defined?(person_id)
|
|
||||||
= aspect.hidden_field :person_id, :value => person_id
|
|
||||||
%p
|
|
||||||
= aspect.label :name , t('.name')
|
|
||||||
= aspect.text_field :name, :maxlength => 20
|
|
||||||
|
|
||||||
%p.checkbox_select
|
|
||||||
= aspect.label :contacts_visible, t('aspects.edit.make_aspect_list_visible')
|
|
||||||
= aspect.check_box :contacts_visible, :default => true
|
|
||||||
|
|
||||||
%br
|
|
||||||
|
|
||||||
.bottom_submit_section
|
|
||||||
= submit_tag t('cancel'), :class => 'button', :type => :reset, :rel => "close"
|
|
||||||
= aspect.submit t('.create'), :class => 'button creation'
|
|
||||||
|
|
||||||
|
|
@ -2,4 +2,25 @@
|
||||||
-# licensed under the Affero General Public License version 3 or later. See
|
-# licensed under the Affero General Public License version 3 or later. See
|
||||||
-# the COPYRIGHT file.
|
-# the COPYRIGHT file.
|
||||||
|
|
||||||
= render 'new', :remote => true, :person_id => @person_id
|
.span-12.last
|
||||||
|
#facebox_header
|
||||||
|
%h3
|
||||||
|
= t('contacts.index.add_a_new_aspect')
|
||||||
|
|
||||||
|
= form_for(Aspect.new, :remote => @remote) do |aspect|
|
||||||
|
= aspect.error_messages
|
||||||
|
- if @person_id
|
||||||
|
= aspect.hidden_field :person_id, :value => @person_id
|
||||||
|
%p
|
||||||
|
= aspect.label :name , t('.name')
|
||||||
|
= aspect.text_field :name, :maxlength => 20
|
||||||
|
|
||||||
|
%p.checkbox_select
|
||||||
|
= aspect.label :contacts_visible, t('aspects.edit.make_aspect_list_visible')
|
||||||
|
= aspect.check_box :contacts_visible, :default => true
|
||||||
|
|
||||||
|
%br
|
||||||
|
|
||||||
|
.bottom_submit_section
|
||||||
|
= submit_tag t('cancel'), :class => 'button', :type => :reset, :rel => "close"
|
||||||
|
= aspect.submit t('.create'), :class => 'button creation'
|
||||||
|
|
|
||||||
|
|
@ -84,8 +84,3 @@
|
||||||
-if current_user.admin?
|
-if current_user.admin?
|
||||||
%li= link_to t('.admin'), user_search_path
|
%li= link_to t('.admin'), user_search_path
|
||||||
%li= link_to t('.logout'), destroy_user_session_path
|
%li= link_to t('.logout'), destroy_user_session_path
|
||||||
|
|
||||||
-unless @landing_page
|
|
||||||
.facebox_content
|
|
||||||
#add_aspect_pane
|
|
||||||
= render "aspects/new"
|
|
||||||
|
|
|
||||||
|
|
@ -18,4 +18,4 @@
|
||||||
- if (dropdown_may_create_new_aspect && defined?(person) && person)
|
- if (dropdown_may_create_new_aspect && defined?(person) && person)
|
||||||
%li.newItem
|
%li.newItem
|
||||||
.add_aspect
|
.add_aspect
|
||||||
= link_to t('contacts.index.add_a_new_aspect'), new_aspect_path(:person_id => person.id), :rel => 'facebox'
|
= link_to t('contacts.index.add_a_new_aspect'), new_aspect_path(:person_id => person.id, :remote => true), :rel => 'facebox'
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,24 @@ describe AspectsController do
|
||||||
it_should_behave_like "it overrides the logs on redirect"
|
it_should_behave_like "it overrides the logs on redirect"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#new" do
|
||||||
|
it "renders a remote form if remote is true" do
|
||||||
|
get :new, "remote" => "true"
|
||||||
|
response.should be_success
|
||||||
|
response.body.should =~ /#{Regexp.escape('data-remote="true"')}/
|
||||||
|
end
|
||||||
|
it "renders a non-remote form if remote is false" do
|
||||||
|
get :new, "remote" => "false"
|
||||||
|
response.should be_success
|
||||||
|
response.body.should_not =~ /#{Regexp.escape('data-remote="true"')}/
|
||||||
|
end
|
||||||
|
it "renders a non-remote form if remote is missing" do
|
||||||
|
get :new
|
||||||
|
response.should be_success
|
||||||
|
response.body.should_not =~ /#{Regexp.escape('data-remote="true"')}/
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "#index" do
|
describe "#index" do
|
||||||
it "generates a jasmine fixture", :fixture => true do
|
it "generates a jasmine fixture", :fixture => true do
|
||||||
get :index
|
get :index
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue