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
|
# Copyright (c) 2010-2011, Diaspora Inc. This file is
# licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file.
module AspectGlobalHelper
def aspect_membership_dropdown(contact, person, hang, aspect=nil, force_bootstrap=false, size="small")
aspect_membership_ids = {}
selected_aspects = all_aspects.select{|aspect| contact.in_aspect?(aspect)}
selected_aspects.each do |a|
record = a.aspect_memberships.find { |am| am.contact_id == contact.id }
aspect_membership_ids[a.id] = record.id
end
button_class = selected_aspects.size>0 ? "green" : "btn-default"
button_class << case size
when "small"
" btn-small"
when "normal"
""
when "large"
" btn-large"
else
rase ArgumentError, "unknown size #{size}"
end
if bootstrap? || force_bootstrap
render "aspect_memberships/aspect_membership_dropdown",
:selected_aspects => selected_aspects,
:aspect_membership_ids => aspect_membership_ids,
:person => person,
:hang => hang,
:dropdown_class => "aspect_membership",
:button_class => button_class
else
render "aspect_memberships/aspect_membership_dropdown_blueprint",
:selected_aspects => selected_aspects,
:aspect_membership_ids => aspect_membership_ids,
:person => person,
:hang => hang,
:dropdown_class => "aspect_membership"
end
end
def aspect_dropdown_list_item(aspect, am_id=nil)
klass = am_id.present? ? "selected" : ""
str = <<LISTITEM
<li data-aspect_id="#{aspect.id}" data-membership_id="#{am_id}" class="#{klass} aspect_selector" tabindex="0">
#{aspect.name}
</li>
LISTITEM
str.html_safe
end
def dropdown_may_create_new_aspect
@aspect == :profile || @aspect == :tag || @aspect == :notification || params[:action] == "getting_started"
end
def aspect_options_for_select(aspects)
options = {}
aspects.each do |aspect|
options[aspect.to_s] = aspect.id
end
options
end
def publisher_aspects_for(stream=nil)
if stream
aspects = stream.aspects
aspect = stream.aspect
aspect_ids = stream.aspect_ids
elsif current_user
aspects = current_user.aspects
aspect = aspects.first
aspect_ids = current_user.aspect_ids
else
return {}
end
{ selected_aspects: aspects, aspect: aspect, aspect_ids: aspect_ids }
end
end
|