From 5eaf28e19e1f5472121ec0490bc854ffb09c1852 Mon Sep 17 00:00:00 2001 From: David Cabo Date: Mon, 22 Aug 2011 11:50:46 +0200 Subject: Extend CSV import to support additional fields (short name, home page...) --- app/controllers/admin_public_body_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/controllers/admin_public_body_controller.rb') diff --git a/app/controllers/admin_public_body_controller.rb b/app/controllers/admin_public_body_controller.rb index 021122734..13232024c 100644 --- a/app/controllers/admin_public_body_controller.rb +++ b/app/controllers/admin_public_body_controller.rb @@ -166,7 +166,7 @@ class AdminPublicBodyController < AdminController notes.push("Dry run was successful, real run would do as above.") else # And if OK, with real run - en = PublicBody.import_csv(csv_contents, params[:tag], false, admin_http_auth_user(), available_locales) + en = PublicBody.import_csv(csv_contents, params[:tag], false, admin_http_auth_user(), I18n.available_locales) errors = en[0] notes = en[1] if errors.size != 0 -- cgit v1.2.3 From b99b1ec3bc5242084c780082a6c737fb736991a8 Mon Sep 17 00:00:00 2001 From: David Cabo Date: Wed, 17 Aug 2011 00:35:50 +0200 Subject: Extend "new public body" form to support multiple locales (closes #142) --- app/controllers/admin_public_body_controller.rb | 34 ++++++++++++++++++------- 1 file changed, 25 insertions(+), 9 deletions(-) (limited to 'app/controllers/admin_public_body_controller.rb') diff --git a/app/controllers/admin_public_body_controller.rb b/app/controllers/admin_public_body_controller.rb index 13232024c..245a5aa85 100644 --- a/app/controllers/admin_public_body_controller.rb +++ b/app/controllers/admin_public_body_controller.rb @@ -90,14 +90,30 @@ class AdminPublicBodyController < AdminController end def create - @locale = self.locale_from_params() - PublicBody.with_locale(@locale) do - params[:public_body][:last_edit_editor] = admin_http_auth_user() - @public_body = PublicBody.new(params[:public_body]) - if @public_body.save - flash[:notice] = 'PublicBody was successfully created.' - redirect_to admin_url('body/show/' + @public_body.id.to_s) - else + # Start creating the public body in the default locale + PublicBody.with_locale(I18n.default_locale) do + begin + ActiveRecord::Base.transaction do + params[:public_body][:last_edit_editor] = admin_http_auth_user() + @public_body = PublicBody.new(params[:public_body]) + @public_body.save! + + # Next, save the translations in the additional locales + I18n.available_locales.each do |locale| + PublicBody.with_locale(locale) do + unless (attr_values = params["public_body_#{locale}"]).nil? + # 'publication_scheme' can't be null in the current DB schema + attr_values[:publication_scheme] = attr_values[:publication_scheme] || '' + @public_body.attributes = attr_values + @public_body.save! + end + end + end + + flash[:notice] = 'PublicBody was successfully created.' + redirect_to admin_url('body/show/' + @public_body.id.to_s) + end + rescue ActiveRecord::RecordInvalid render :action => 'new' end end @@ -157,7 +173,7 @@ class AdminPublicBodyController < AdminController # Try with dry run first csv_contents = params[:csv_file].read - en = PublicBody.import_csv(csv_contents, params[:tag], true, admin_http_auth_user(), I18n.available_locales) + en = PublicBody.import_csv(csv_contents, params[:tag], true, admin_http_auth_user(), available_locales) errors = en[0] notes = en[1] -- cgit v1.2.3 From 6af5f5cba5cf3c8478d676170faa66bca0ff90ab Mon Sep 17 00:00:00 2001 From: David Cabo Date: Wed, 17 Aug 2011 02:25:36 +0200 Subject: Support editing of public bodies simultaneously in all locales (closes #143) --- app/controllers/admin_public_body_controller.rb | 60 ++++++++++++++++--------- 1 file changed, 38 insertions(+), 22 deletions(-) (limited to 'app/controllers/admin_public_body_controller.rb') diff --git a/app/controllers/admin_public_body_controller.rb b/app/controllers/admin_public_body_controller.rb index 245a5aa85..61e4aec54 100644 --- a/app/controllers/admin_public_body_controller.rb +++ b/app/controllers/admin_public_body_controller.rb @@ -89,6 +89,19 @@ class AdminPublicBodyController < AdminController end end + def update_localized_attributes(public_body, params) + I18n.available_locales.each do |locale| + PublicBody.with_locale(locale) do + unless (attr_values = params["public_body_#{locale}"]).nil? + # 'publication_scheme' can't be null in the current DB schema + attr_values[:publication_scheme] = attr_values[:publication_scheme] || '' + public_body.attributes = attr_values + public_body.save! + end + end + end + end + def create # Start creating the public body in the default locale PublicBody.with_locale(I18n.default_locale) do @@ -99,17 +112,8 @@ class AdminPublicBodyController < AdminController @public_body.save! # Next, save the translations in the additional locales - I18n.available_locales.each do |locale| - PublicBody.with_locale(locale) do - unless (attr_values = params["public_body_#{locale}"]).nil? - # 'publication_scheme' can't be null in the current DB schema - attr_values[:publication_scheme] = attr_values[:publication_scheme] || '' - @public_body.attributes = attr_values - @public_body.save! - end - end - end - + update_localized_attributes(@public_body, params) + flash[:notice] = 'PublicBody was successfully created.' redirect_to admin_url('body/show/' + @public_body.id.to_s) end @@ -120,23 +124,35 @@ class AdminPublicBodyController < AdminController end def edit - @locale = self.locale_from_params() - PublicBody.with_locale(@locale) do + PublicBody.with_locale(I18n.default_locale) do @public_body = PublicBody.find(params[:id]) @public_body.last_edit_comment = "" - render end + + # Additional locales (could remove the default, but won't make a difference) + I18n.available_locales.each do |locale| + instance_variable_set("@public_body_#{locale}", @public_body.translations.select{|t| t.locale==locale}.first) + end + + render end def update - @locale = self.locale_from_params() - PublicBody.with_locale(@locale) do - params[:public_body][:last_edit_editor] = admin_http_auth_user() - @public_body = PublicBody.find(params[:id]) - if @public_body.update_attributes(params[:public_body]) - flash[:notice] = 'PublicBody was successfully updated.' - redirect_to admin_url('body/show/' + @public_body.id.to_s) - else + # Start updating the public body in the default locale + PublicBody.with_locale(I18n.default_locale) do + begin + ActiveRecord::Base.transaction do + params[:public_body][:last_edit_editor] = admin_http_auth_user() + @public_body = PublicBody.find(params[:id]) + @public_body.update_attributes!(params[:public_body]) + + # Next, update the translations in the additional locales + update_localized_attributes(@public_body, params) + + flash[:notice] = 'PublicBody was successfully updated.' + redirect_to admin_url('body/show/' + @public_body.id.to_s) + end + rescue ActiveRecord::RecordInvalid render :action => 'edit' end end -- cgit v1.2.3 From 7f3d321e8da99d0204b66161d9f00381ac24ad2d Mon Sep 17 00:00:00 2001 From: David Cabo Date: Wed, 17 Aug 2011 11:02:40 +0200 Subject: Refactor fixes to #142 and #143, new implementation much simpler to understand --- app/controllers/admin_public_body_controller.rb | 72 ++++++------------------- 1 file changed, 16 insertions(+), 56 deletions(-) (limited to 'app/controllers/admin_public_body_controller.rb') diff --git a/app/controllers/admin_public_body_controller.rb b/app/controllers/admin_public_body_controller.rb index 61e4aec54..bd85f6eed 100644 --- a/app/controllers/admin_public_body_controller.rb +++ b/app/controllers/admin_public_body_controller.rb @@ -82,77 +82,37 @@ class AdminPublicBodyController < AdminController end def new - @locale = self.locale_from_params() - PublicBody.with_locale(@locale) do - @public_body = PublicBody.new - render - end - end - - def update_localized_attributes(public_body, params) - I18n.available_locales.each do |locale| - PublicBody.with_locale(locale) do - unless (attr_values = params["public_body_#{locale}"]).nil? - # 'publication_scheme' can't be null in the current DB schema - attr_values[:publication_scheme] = attr_values[:publication_scheme] || '' - public_body.attributes = attr_values - public_body.save! - end - end - end + @public_body = PublicBody.new + render end def create - # Start creating the public body in the default locale PublicBody.with_locale(I18n.default_locale) do - begin - ActiveRecord::Base.transaction do - params[:public_body][:last_edit_editor] = admin_http_auth_user() - @public_body = PublicBody.new(params[:public_body]) - @public_body.save! - - # Next, save the translations in the additional locales - update_localized_attributes(@public_body, params) - - flash[:notice] = 'PublicBody was successfully created.' - redirect_to admin_url('body/show/' + @public_body.id.to_s) - end - rescue ActiveRecord::RecordInvalid + params[:public_body][:last_edit_editor] = admin_http_auth_user() + @public_body = PublicBody.new(params[:public_body]) + if @public_body.save + flash[:notice] = 'PublicBody was successfully created.' + redirect_to admin_url('body/show/' + @public_body.id.to_s) + else render :action => 'new' end end end def edit - PublicBody.with_locale(I18n.default_locale) do - @public_body = PublicBody.find(params[:id]) - @public_body.last_edit_comment = "" - end - - # Additional locales (could remove the default, but won't make a difference) - I18n.available_locales.each do |locale| - instance_variable_set("@public_body_#{locale}", @public_body.translations.select{|t| t.locale==locale}.first) - end - + @public_body = PublicBody.find(params[:id]) + @public_body.last_edit_comment = "" render end def update - # Start updating the public body in the default locale PublicBody.with_locale(I18n.default_locale) do - begin - ActiveRecord::Base.transaction do - params[:public_body][:last_edit_editor] = admin_http_auth_user() - @public_body = PublicBody.find(params[:id]) - @public_body.update_attributes!(params[:public_body]) - - # Next, update the translations in the additional locales - update_localized_attributes(@public_body, params) - - flash[:notice] = 'PublicBody was successfully updated.' - redirect_to admin_url('body/show/' + @public_body.id.to_s) - end - rescue ActiveRecord::RecordInvalid + params[:public_body][:last_edit_editor] = admin_http_auth_user() + @public_body = PublicBody.find(params[:id]) + if @public_body.update_attributes(params[:public_body]) + flash[:notice] = 'PublicBody was successfully updated.' + redirect_to admin_url('body/show/' + @public_body.id.to_s) + else render :action => 'edit' end end -- cgit v1.2.3