format do def show view, args view ||= :core render view, args end # NAME VIEWS view :name, :closed=>true, :perms=>:none do |args| card.name end view :key, :closed=>true, :perms=>:none do |args| card.key end view :title, :closed=>true, :perms=>:none do |args| args[:title] || card.name end view :linkname, :closed=>true, :perms=>:none do |args| card.cardname.url_key end view :url, :closed=>true, :perms=>:none do |args| wagn_url _render_linkname end view :url_link, :closed=>true, :perms=>:none do |args| web_link wagn_url(_render_linkname) end view :link, :closed=>true, :perms=>:none do |args| card_link( card.name, :text=>showname( args[:title] ), :known=>card.known?, :path_opts=>{ :type=>args[:type] } ) end view :codename, :closed=>true do |args| card.codename.to_s end view :id, :closed=>true do |args| card.id end view :type, :closed=>true do |args| card.type_name end # DATE VIEWS view :created_at, :closed=>true do |args| time_ago_in_words card.created_at end view :updated_at, :closed=>true do |args| time_ago_in_words card.updated_at end view :acted_at, :closed=>true do |args| time_ago_in_words card.acted_at end # CONTENT VIEWS view :raw do |args| scard = args[:structure] ? Card[ args[:structure] ] : card scard ? scard.raw_content : _render_blank end view :core do |args| process_content _render_raw(args) end view :content do |args| _render_core args end view :open_content do |args| _render_core args end view :closed_content, :closed=>true do |args| Card::Content.truncatewords_with_closing_tags _render_core(args) #{ yield } end view :blank, :closed=>true, :perms=>:none do |args| '' end # note: content and open_content may look like they should be aliased to core, but it's important that they render # core explicitly so that core view overrides work. the titled and labeled views below, however, are not intended # for frequent override, so this shortcut is fine. # NAME + CONTENT VIEWS view :titled do |args| "#{ card.name }\n\n#{ _render_core args }" end view :open, :titled view :labeled do |args| "#{ card.name }: #{ _render_closed_content args }" end view :closed, :labeled # SPECIAL VIEWS view :array do |args| card.item_cards(:limit=>0).map do |item_card| subformat(item_card)._render_core(args) end.inspect end #none of the below belongs here!! view :template_rule, :tags=>:unknown_ok do |args| #FIXME - relativity should be handled in smartname name = args[:inc_name] or return '' regexp = /\b_(left|right|whole|self|user|main|\d+|L*R?)\b/ absolute = name !~ regexp && name !~ /^\+/ tname = name.gsub regexp, '' if tname !~ /^\+/ and !absolute "{{#{args[:inc_syntax]}}}" else set_name = if absolute # find the most appropriate set to use as prototype for inclusion "#{name}+#{Card[:self].name}" else tmpl_set_name = parent.card.cardname.trunk_name if tmpl_set_class_name = tmpl_set_name.tag_name and Card[tmpl_set_class_name].codename == 'type' "#{tmpl_set_name.left_name}#{name}+#{Card[:type_plus_right].name}" # *type plus right else "#{tname.gsub /^\+/,''}+#{Card[:right].name}" # *right end end subformat( Card.fetch(set_name) ).render_template_link args end end end