aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/help_controller.rb
blob: 9033198a030fa9f888aca331f43bb40baa860267 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# app/controllers/help_controller.rb:
# Show information about one particular request.
#
# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved.
# Email: hello@mysociety.org; WWW: http://www.mysociety.org/

class HelpController < ApplicationController

    # we don't even have a control subroutine for most help pages, just see their templates

    before_filter :long_cache
    before_filter :catch_spam, :only => [:contact]

    def unhappy
        @info_request = nil
        if params[:url_title]
            @info_request = InfoRequest.find_by_url_title!(params[:url_title])
        end
    end

    def contact
        @contact_email = AlaveteliConfiguration::contact_email

        # if they clicked remove for link to request/body, remove it
        if params[:remove]
            @last_request = nil
            cookies["last_request_id"] = nil
            cookies["last_body_id"] = nil
        end

        # look up link to request/body
        last_request_id = cookies["last_request_id"].to_i
        if last_request_id > 0
            @last_request = InfoRequest.find(last_request_id)
        else
            @last_request = nil
        end
        last_body_id = cookies["last_body_id"].to_i
        if last_body_id > 0
            @last_body = PublicBody.find(last_body_id)
        else
            @last_body = nil
        end

        # submit form
        if params[:submitted_contact_form]
            if @user
                params[:contact][:email] = @user.email
                params[:contact][:name] = @user.name
            end
            @contact = ContactValidator.new(params[:contact])
            if @contact.valid? && !params[:remove]
                ContactMailer.to_admin_message(
                    params[:contact][:name],
                    params[:contact][:email],
                    params[:contact][:subject],
                    params[:contact][:message],
                    @user,
                    @last_request, @last_body
                ).deliver
                flash[:notice] = _("Your message has been sent. Thank you for getting in touch! We'll get back to you soon.")
                redirect_to frontpage_url
                return
            end

            if params[:remove]
                @contact.errors.clear
            end
        end

    end

    private

    def catch_spam
        if request.post? && !params[:contact][:comment].empty?
            redirect_to frontpage_url
        end
    end

end