xowiki::Page instproc json_data (public)

 <instance of xowiki::Page[i]> json_data

Defined in /var/www/openacs/packages/xowiki/tcl/json-procs.tcl

Collect all non-transient attributes as typed JSON members. Resolve instance attributes through form metadata without applying defaults.

Returns:
Flat list of name/type/payload triples for an ns_json object.

Testcases:
No testcase defined.
Source code:
set members {}
foreach name [lsort [:info vars]] {
  if {[string match __* $name]} {
    continue
  }
  if {[:array exists $name]} {
    set entries {}
    foreach key [lsort [:array names $name]] {
      lappend entries $key string [:set ${name}($key)]
    }
    lappend members $name object $entries
    continue
  }
  set value [:set $name]
  if {$name eq "instance_attributes" && [:istype ::xowiki::PageInstance]} {
    set entries {}
    # Resolve effective form constraints, including @fields/@cr_fields.
    set form_fields [:create_form_fields [:field_names -form [:get_form]]]
    dict for {att stored_value} $value {
      if {[string match __* $att]} {
        continue
      }
      set f [:lookup_form_field -name $att $form_fields]
      lassign [$f json_value $stored_value] type payload
      lappend entries $att $type $payload
    }
    lappend members $name object $entries
  } else {
    lassign [::xowiki::json_scalar [:json_attribute_type $name] $value] type payload
    lappend members $name $type $payload
  }
}
return $members
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: