Module: Thredded::UrlsHelper

Extended by:
UrlsHelper
Included in:
ApplicationController, ApplicationHelper, UrlsHelper
Defined in:
app/helpers/thredded/urls_helper.rb

Overview

rubocop:disable Metrics/ModuleLength

Instance Method Summary collapse

Instance Method Details

#delete_post_path(post) ⇒ String

Returns path to the DELETE endpoint.

Parameters:

Returns:

  • (String)

    path to the DELETE endpoint.



72
73
74
75
76
77
78
# File 'app/helpers/thredded/urls_helper.rb', line 72

def delete_post_path(post)
  if post.private_topic_post?
    private_topic_private_post_path(post.postable, post)
  else
    messageboard_topic_post_path(post.messageboard, post.postable, post)
  end
end

#edit_post_path(post) ⇒ String

Returns path to the Edit Post page.

Parameters:

Returns:

  • (String)

    path to the Edit Post page.



62
63
64
65
66
67
68
# File 'app/helpers/thredded/urls_helper.rb', line 62

def edit_post_path(post)
  if post.private_topic_post?
    edit_private_topic_private_post_path(post.postable, post)
  else
    edit_messageboard_topic_post_path(post.messageboard, post.postable, post)
  end
end

#edit_preferences_path(messageboard = nil, params = {}) ⇒ String

Returns the path to the global or messageboard edit preferences page.

Parameters:

  • messageboard (Thredded::Messageboard, nil) (defaults to: nil)
  • params (Hash) (defaults to: {})

    additional params

Returns:

  • (String)

    the path to the global or messageboard edit preferences page.



94
95
96
# File 'app/helpers/thredded/urls_helper.rb', line 94

def edit_preferences_path(messageboard = nil, params = {})
  edit_preferences_url(messageboard, params.merge(only_path: true))
end

#edit_preferences_url(messageboard = nil, params = {}) ⇒ String

Returns the URL to the global or messageboard edit preferences page.

Parameters:

  • messageboard (Thredded::Messageboard, nil) (defaults to: nil)
  • params (Hash) (defaults to: {})

    additional params

Returns:

  • (String)

    the URL to the global or messageboard edit preferences page.



83
84
85
86
87
88
89
# File 'app/helpers/thredded/urls_helper.rb', line 83

def edit_preferences_url(messageboard = nil, params = {})
  if messageboard.try(:persisted?)
    edit_messageboard_preferences_url(messageboard, params)
  else
    edit_global_preferences_url(params)
  end
end

#mark_unread_path(post, _params = {}) ⇒ Object



127
128
129
130
131
132
133
# File 'app/helpers/thredded/urls_helper.rb', line 127

def mark_unread_path(post, _params = {})
  if post.private_topic_post?
    mark_as_unread_private_post_path(post)
  else
    mark_as_unread_post_path(post)
  end
end

Returns post permalink path.

Parameters:

Returns:

  • (String)

    post permalink path



137
138
139
140
141
142
143
# File 'app/helpers/thredded/urls_helper.rb', line 137

def permalink_path(post)
  if post.private_topic_post?
    private_post_permalink_path(post)
  else
    post_permalink_path(post)
  end
end

#post_path(post, user:, **params) ⇒ String

Returns path to the topic page with the post anchor.

Parameters:

Returns:

  • (String)

    path to the topic page with the post anchor.



56
57
58
# File 'app/helpers/thredded/urls_helper.rb', line 56

def post_path(post, user:, **params)
  post_url(post, **params.merge(user: user, only_path: true))
end

#post_url(post, user:, **params) ⇒ String

Returns URL of the topic page with the post anchor.

Parameters:

Returns:

  • (String)

    URL of the topic page with the post anchor.



46
47
48
49
50
51
# File 'app/helpers/thredded/urls_helper.rb', line 46

def post_url(post, user:, **params)
  params = params.dup
  params[:anchor] ||= ActionView::RecordIdentifier.dom_id(post)
  params[:page] ||= post.private_topic_post? ? post.page : post.page(user: user)
  topic_url(post.postable, params)
end

#quote_post_path(post) ⇒ Object



119
120
121
122
123
124
125
# File 'app/helpers/thredded/urls_helper.rb', line 119

def quote_post_path(post)
  if post.private_topic_post?
    quote_private_topic_private_post_path(post.postable, post)
  else
    quote_messageboard_topic_post_path(post.messageboard, post.postable, post)
  end
end

#search_path(messageboard = nil) ⇒ String

Returns the path to the global or messageboard search.

Parameters:

Returns:

  • (String)

    the path to the global or messageboard search.



111
112
113
114
115
116
117
# File 'app/helpers/thredded/urls_helper.rb', line 111

def search_path(messageboard = nil)
  if messageboard.try(:persisted?)
    messageboard_search_path(messageboard)
  else
    messageboards_search_path
  end
end

#send_private_message_path(current_user:, to:, use_existing: true) ⇒ String

Returns a path to a new or existing private message thread for the given users.

Parameters:

Returns:

  • (String)

    a path to a new or existing private message thread for the given users.



149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'app/helpers/thredded/urls_helper.rb', line 149

def send_private_message_path(current_user:, to:, use_existing: true)
  existing_topic = use_existing &&
                   Thredded::PrivateTopic.has_exact_participants([current_user, to])
                     .order_recently_posted_first.first
  if existing_topic
    page = 1 + (existing_topic.posts_count - 1) / Thredded::PrivatePost.default_per_page
    Thredded::UrlsHelper.private_topic_path(
      existing_topic,
      page: (page if page > 1),
      autofocus_new_post_content: true,
      anchor: 'post_content'
    )
  else
    Thredded::UrlsHelper.new_private_topic_path(
      private_topic: {
        user_names: to.send(Thredded.user_name_column),
        title: [current_user, to].map(&Thredded.user_display_name_method).join('')
      },
      autofocus_new_post_content: true,
    )
  end
end

#topic_path(topic, params = {}) ⇒ String

Returns path to the latest unread page of the given topic.

Parameters:

Returns:

  • (String)

    path to the latest unread page of the given topic.



39
40
41
# File 'app/helpers/thredded/urls_helper.rb', line 39

def topic_path(topic, params = {})
  topic_url(topic, params.merge(only_path: true))
end

#topic_url(topic, params = {}) ⇒ String

Parameters:

Returns:

  • (String)


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/helpers/thredded/urls_helper.rb', line 18

def topic_url(topic, params = {})
  if params[:page] == 1
    params = params.dup
    params.delete(:page)
  end
  if topic.private?
    private_topic_url(
      topic.slug,
      params
    )
  else
    messageboard_topic_url(
      topic.messageboard.slug,
      topic.slug,
      params
    )
  end
end

#unread_topics_path(messageboard: nil, **params) ⇒ Object

Parameters:



100
101
102
103
104
105
106
107
# File 'app/helpers/thredded/urls_helper.rb', line 100

def unread_topics_path(messageboard: nil, **params)
  params[:only_path] = true
  if messageboard
    unread_messageboard_topics_url(messageboard, params)
  else
    unread_topics_url(params)
  end
end

#user_path(user) ⇒ String

Returns path to the user as specified by Thredded.user_path.

Parameters:

Returns:



12
13
14
# File 'app/helpers/thredded/urls_helper.rb', line 12

def user_path(user)
  Thredded.user_path(self, user)
end