aboutsummaryrefslogtreecommitdiffstats
path: root/app/helpers/link_to_helper.rb
blob: b255885cbe2f037cc0d98b5231e2bddbb735c1d3 (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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# app/helpers/link_to_helper.rb:
# This module is included into all controllers via controllers/application.rb
# - 
#
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
# $Id: link_to_helper.rb,v 1.35 2008-08-07 00:24:51 francis Exp $

module LinkToHelper

    # Links to various models
   
    # Requests
    def request_url(info_request)
        return show_request_url(:url_title => info_request.url_title, :only_path => true)
    end
    def request_link(info_request)
        link_to h(info_request.title), request_url(info_request)
    end
    def request_admin_url(info_request)
        return admin_url('request/show/' + info_request.id.to_s)
    end
    def request_admin_link(info_request)
        link_to h(info_request.title), request_admin_url(info_request)
    end
    def request_similar_url(info_request)
        return similar_request_url(:url_title => info_request.url_title, :only_path => true)
    end

    # Incoming / outgoing messages
    def incoming_message_url(incoming_message)
        return request_url(incoming_message.info_request)+"#incoming-"+incoming_message.id.to_s
    end
    def outgoing_message_url(outgoing_message)
        return request_url(outgoing_message.info_request)+"#outgoing-"+outgoing_message.id.to_s
    end
  
    # Public bodies
    def public_body_url(public_body)
        return show_public_body_url(:url_name => public_body.url_name, :only_path => true)
    end
    def public_body_link_short(public_body)
        link_to h(public_body.short_or_long_name), public_body_url(public_body)
    end
    def public_body_link(public_body)
        link_to h(public_body.name), public_body_url(public_body)
    end
    def public_body_admin_url(public_body)
        return admin_url('body/show/' + public_body.id.to_s)
    end
    def public_body_admin_link(public_body)
        link_to h(public_body.name), public_body_admin_url(public_body)
    end
    def public_body_admin_link_short(public_body)
        link_to h(public_body.short_or_long_name), public_body_admin_url(public_body)
    end

    # Users
    def user_url(user)
        return show_user_url(:url_name => user.url_name, :only_path => true)
    end
    def user_link(user)
        link_to h(user.name), user_url(user)
    end
    def user_or_you_link(user)
        if @user && user == @user
            link_to h("you"), user_url(user)
        else
            link_to h(user.name), user_url(user)
        end
    end
    def user_or_you_capital_link(user)
        if @user && user == @user
            link_to h("You"), user_url(user)
        else
            link_to h(user.name), user_url(user)
        end
    end
    def user_admin_url(user)
        return admin_url('user/show/' + user.id.to_s)
    end
    def user_admin_link(user)
        link_to h(user.name), user_admin_url(user)
    end

    # Tracks. feed can be 'track' or 'feed'
    def do_track_url(track_thing, feed = 'track')
        if track_thing.track_type == 'request_updates'
            track_request_url(:url_title => track_thing.info_request.url_title, :feed => feed)
        elsif track_thing.track_type == 'all_new_requests' 
            track_list_url(:view => nil, :feed => feed)
        elsif track_thing.track_type == 'all_successful_requests' 
            track_list_url(:view => 'successful', :feed => feed)
        elsif track_thing.track_type == 'public_body_updates' 
            track_public_body_url(:url_name => track_thing.public_body.url_name, :feed => feed)
        elsif track_thing.track_type == 'user_updates' 
            track_user_url(:url_name => track_thing.tracked_user.url_name, :feed => feed)
        elsif track_thing.track_type == 'search_query' 
            track_search_url(:query_array => track_thing.track_query, :feed => feed)
        else
            raise "unknown tracking type " + track_thing.track_type
        end
    end

    # General pages
    def search_url(query, sortby = nil)
        if sortby.nil?
            combined = query
        else
            combined = query + "/" + sortby
        end
        search_general_url(:combined => combined)
    end

    # Admin pages
    def admin_url(relative_path)
        admin_url_prefix = MySociety::Config.get("ADMIN_BASE_URL", "/admin/")
        return admin_url_prefix + relative_path
    end

    # About page URLs
    def about_url
        return help_general_url(:action => 'about')
    end
    def unhappy_url
        return help_general_url(:action => 'unhappy')
    end


    # Where stylesheets used by admin page sit under
    def admin_public_url(relative_path)
        admin_url_prefix = MySociety::Config.get("ADMIN_PUBLIC_URL", "/")
        return admin_url_prefix + relative_path.sub(/^\//, "") # stylesheet relative paths start with /
    end

    def main_url(relative_path)
        url_prefix = "http://" + MySociety::Config.get("DOMAIN", '127.0.0.1:3000')
        return url_prefix + relative_path
    end

    # Basic date format
    def simple_date(date)
        return date.strftime("%e %B %Y").strip
    end

  
end