format :html do view :core do |args| output [ _optional_render(:set_label, args, :show), (content_tag(:div, :class=>'panel-group', :id=>'accordion', :role=>'tablist','aria-multiselectable'=>'true') do Card::Setting.groups.keys.map do |group_key| _optional_render(group_key, args, :show) end * "\n" end) ] end view :set_label do |args| content_tag :h2, card.label, :class=>'set-label' end Card::Setting.groups.keys.each do |group_key| view group_key.to_sym do |args| settings = card.visible_settings group_key if settings.present? group_name = Card::Setting.group_names[group_key] || group.to_s heading_id = "heading-#{group_key}" collapse_id = "collapse-#{card.cardname.safe_key}-#{group_key}" output [ (content_tag :div, :class=>'panel panel-default' do content_tag :div, :class=>'panel-heading', :role=>'tab', :id=>heading_id do content_tag :h4, :class=>'panel-title' do content_tag :a, group_name, 'data-toggle'=>'collapse', 'data-parent'=>'#accordion', :href=>"##{collapse_id}", 'aria-expanded'=>'false', 'aria-controls'=>collapse_id end end end), (content_tag :div, :id=>collapse_id, :class=>'panel-collapse collapse', :role=>'tabpanel', 'aria-labelledby'=>heading_id do wrap_with :table, :class=>'set-rules table' do [ (content_tag(:tr, :class=>"rule-group") do wrap_each_with :th, %w(Setting Content Set), :class=>'rule-heading' end), (settings.map do |setting| if show_view? setting.codename, args rule_card = card.fetch(:trait=>setting.codename, :new=>{}) nest(rule_card, :view=>:closed_rule).html_safe end end * "\n") ] end end) ] end end end view :editor do |args| 'Cannot currently edit Sets' #ENGLISH end view :template_link do |args| args.delete :style wrap args do link = view_link args[:inc_syntax], :template_editor, :class=>'slotter' #, 'slot-include'=>include_syntax "{{#{link}}}" end end view :template_closer do |args| view_link '', :template_link, :class=>'slotter glyphicon glyphicon-remove template-editor-close' end view :template_editor do |args| wrap args do %{
{{
#{ render_template_editor_frame args }
}}
} end end view :template_editor_frame do |args| frame :no_slot=>true, :title=>card.label, :menu_hack=>:template_closer do _render_core args.merge(:hide=>'set_label') end end view :closed_content do |args| '' end end include Card::Set::Type::SearchType def followed_by? user_id = nil all_members_followed_by? user_id end def default_follow_set_card self end def inheritable? return true if junction_only? cardname.trunk_name.junction? and cardname.tag_name.key == Card::SelfSet.pattern.key end def subclass_for_set set_class_key = tag.codename Card.set_patterns.find do |sub| cardname.tag_name.key == sub.pattern.key end end def junction_only?() if @junction_only.nil? @junction_only = subclass_for_set.junction_only else @junction_only end end def reset_set_patterns Card.members( key ).each do |mem| Card.expire mem end end def label if klass = subclass_for_set klass.label cardname.left else '' end end def follow_label if klass = subclass_for_set klass.follow_label cardname.left else '' end end def follow_rule_name user=nil if user if user.kind_of? String "#{name}+#{user}+#{Card[:follow].name}" else "#{name}+#{user.name}+#{Card[:follow].name}" end else "#{name}+#{Card[:all].name}+#{Card[:follow].name}" end end # def to_following_item_name args # left_part = follow_rule_name( args[:user] ) # option = args[:option] || if (rule_card = Card.fetch(left_part)) # rule_card.content # else # Card[:nothing].name # end # # "#{left_part}+#{option}" # end def all_user_ids_with_rule_for setting_code Card.all_user_ids_with_rule_for self, setting_code end def setting_codenames_by_group result = {} Card::Setting.groups.each do |group, settings| visible_settings = settings.reject { |s| !s or !s.applies_to_cardtype(prototype.type_id) } unless visible_settings.empty? result[group] = visible_settings.map { |s| s.codename } end end result end def visible_settings group Card::Setting.groups[group].reject do |setting| !setting or !setting.applies_to_cardtype(prototype.type_id) end end def all_members_followed? all_members_followed_by? Auth.current_id end def all_members_followed_by? user_id = nil if !prototype.followed_by? user_id return false elsif set_followed_by? user_id return true else broader_sets.each do |b_s| if (set_card = Card.fetch(b_s)) && set_card.set_followed_by?(user_id) return true end end end return false end def set_followed? set_followed_by? Auth.current_id end def set_followed_by? user_id = nil return ( user_id && (user = Card.find(user_id)) && Card.fetch(follow_rule_name(user.name)) ) || Card.fetch(follow_rule_name) end def broader_sets prototype.set_names[1..-1] end def prototype opts = subclass_for_set.prototype_args self.cardname.trunk_name Card.fetch opts[:name], :new=>opts end