Skip To Main Content
Begin Main Content
Methods: Source: Variables:
[All Methods | Documented Methods | Hide Methods] [Display Source | Hide Source] [Show Variables | Hide Variables]

::xo::db::CrClass[i] ::xowiki::Page

Class Hierarchy of ::xowiki::Page

  • ::xotcl::Object[i]
    Meta-class:
    ::xotcl::Class[i]
    Methods for instances:
    __api_make_doc, __api_make_forward_doc, __nextC, __timediff, abstract, ad_doc, ad_forward, ad_proc, appendC, arrayC, asHTML, autonameC, checkC, classC, cleanupC, configureC, contains, copy, db_1rowC, debug, defaultmethod, destroyC, destroy_on_cleanup, evalC, existsC, extractConfigureArg, filterC, filterguardC, filtersearchC, forwardC, hasclass, incrC, infoC, init, instvarC, invarC, isclassC, ismetaclassC, ismixinC, isobjectC, istypeC, lappendC, log, method, mixinC, mixinguardC, move, msg, noinitC, parametercmdC, procC, procsearchC, qn, requireNamespaceC, self, serialize, setC, substC, traceC, unsetC, uplevelC, upvarC, volatileC, vwaitC
    Methods to be applied on the class (in addition to the methods provided by the meta-class):
    __exitHandler, getExitHandler, setExitHandler, unsetExitHandler
    • ::xo::db::Object[i]
      Meta-class:
      ::xo::db::Class[i]
      Methods for instances:
      delete, initialize_loaded_object, insert, object_idC, object_titleC, save, save_new
      Methods to be applied on the class:
      Methods provided by the meta-class
      • ::xo::db::CrItem[i]
        Meta-class:
        ::xo::db::CrClass[i]
        Parameter for instances:
        package_id, parent_id (default "-100"), publish_status (default "ready")
        Methods for instances:
        current_user_id, delete, descriptionC, fix_content, initialize_loaded_object, item_idC, mime_typeC, nameC, nls_languageC, privilege=creator, publish_dateC, rename, revision_idC, revisions, save, save_new, set_live_revision, textC, titleC, update_attribute_from_slot, update_content, update_revision
        Methods to be applied on the class:
        Methods provided by the meta-class
        • ::xowiki::Page[i]
          Meta-class:
          ::xo::db::CrClass[i]
          Parameter for instances:
          absolute_links (default "0"), do_substitutions (default "1"), lang (default "en"), render_adp (default "1")
          Methods for instances:
          adp_subst, anchor, build_instance_attribute_map, build_name, category_export, category_import, check_adp_include_path, condition=match, condition=regexp, copy_content_vars, create-new, create_form_field, create_form_fields, create_form_fields_from_form_constraints, create_raw_form_field, creation_userC, creatorC, default_instance_attributes, delete, delete-revision, demarshall, descripionC, diff, div, edit, error_during_render, error_in_includelet, exists_form_parameterC, exists_query_parameterC, field_names, find_slot, footer, form_field_index, form_parameterC, get_content, get_description, get_form_data, get_instance_attributes, get_rich_text_spec, htmlFooter, include, include_content, include_portlet, initialize_loaded_object, instantiate_includelet, is_new_entry, last_modifiedC, list, lookup_cached_form_field, lookup_form_field, make-live-revision, map_categories, map_party, marshall, mime_typeC, nameC, nls_languageC, page_idC, page_orderC, popular-tags, publish_dateC, query_parameterC, record_last_visited, regsub_eval, render, render_includelet, resolve_included_page_name, reverse_map_party, reverse_map_party_attribute, revisions, save, save-tags, save_attributes, save_data, save_new, set_content, show_fields, substitute_markup, textC, titleC, translate, unescape, unset_temporary_instance_variables, update_references, validate=form_constraints, validate=name, validate=page_order, view
          Methods to be applied on the class (in addition to the methods provided by the meta-class):
          __render_html, container_already_rendered, get_tags, import, quoted_html_content, save_tags

Class Relations

  • superclass: ::xo::db::CrItem[i]
  • subclass: ::blocks::BlockPage[i], ::learning_content::ContentPage[i], ::xowiki::File[i], ::xowiki::PageInstance[i], ::xowiki::PageTemplate[i], ::xowiki::PlainPage[i]
::xo::db::CrClass create ::xowiki::Page \
     -superclass ::xo::db::CrItem \
     -parameter {{absolute_links 0} {do_substitutions 1} {lang en} {render_adp 1}}

Methods

  • instproc get_form_data (public)

    <instance of ::xowiki::Page[i]> get_form_data \
        [ -field_names field_names ] form_fields
    Get the values from the form and store it as instance attributes.

    Switches:
    -field_names (optional)
    Parameters:
    form_fields
    ::xowiki::Page instproc get_form_data {-field_names form_fields} {
        set validation_errors 0
        set category_ids [list]
        array set containers [list]
        if {[my exists instance_attributes]} {
          array set __ia [my set instance_attributes]
        }
        if {![info exists field_names]} {
          set field_names [::xo::cc array names form_parameter]
        }
        #my msg "fields [::xo::cc array get form_parameter]"
    
        # we have a form and get all form variables
        
        foreach att $field_names {
          #my msg "getting att=$att"
          set processed($att) 1
          switch -glob -- $att {
            __category_* {
              set f [my lookup_form_field -name $att $form_fields]
              set value [$f value [::xo::cc form_parameter $att]]
              foreach v $value {lappend category_ids $v}
            }
            __* {
              # other internal variables (like __object_name) are ignored
            }
             _* {
               # instance attribute fields
               set f     [my lookup_form_field -name $att $form_fields]
               set value [$f value [string trim [::xo::cc form_parameter $att]]]
               set varname [string range $att 1 end]
               # get rid of strange utf-8 characters hex C2AD (firefox bug?)
               # ns_log notice "FORM_DATA var=$varname, value='$value' s=$s"
               if {$varname eq "text"} {regsub -all "­" $value "" value}
               # ns_log notice "FORM_DATA var=$varname, value='$value' s=$s"
               if {![string match *.* $att]} {my set $varname $value}
             }
            default {
               # user form content fields
              if {[regexp {^(.+)[.](tmpfile|content-type)} $att _ file field]} {
                set f [my lookup_form_field -name $file $form_fields]
                $f $field [string trim [::xo::cc form_parameter $att]]
              } else {
                set f     [my lookup_form_field -name $att $form_fields]
                set value [$f value [string trim [::xo::cc form_parameter $att]]]
                #my msg "value of $att ($f) = '$value'" 
                if {![string match *.* $att]} {set __ia($att) $value}
                if {[$f exists is_category_field]} {foreach v $value {lappend category_ids $v}}
              }
            }
          }
          if {[string match *.* $att]} {
            foreach {container component} [split $att .] break
             lappend containers($container) $component
          }
        }
        
        #my msg "containers = [array names containers]"
        #my msg "ia=[array get __ia]"
        #
        # In a second iteration, combine the values from the components 
        # of a container to the value of the container.
        #
        foreach c [array names containers] {
          switch -glob -- $c {
            __* {}
            _* {
              set f  [my lookup_form_field -name $c $form_fields]
              set processed($c) 1
              my set [string range $c 1 end] [$f value]
            }
            default {
              set f  [my lookup_form_field -name $c $form_fields]
              set processed($c) 1
              #my msg "compute value of $c"
              set __ia($c) [$f value]
              #my msg "__ia($c) is set to '[$f value]'"
            }
          }
        }
        
        #
        # The first round was a processing based on the transmitted input
        # fields of the forms. Now we use the formfields to complete the
        # data and to validate it.
        #
        foreach f $form_fields {
          #my msg "validate $f [$f name] [info exists processed([$f name])]"
          set att [$f name]
     
          # Certain form field types (e.g. checkboxes) are not transmitted, if not
          # checked. Therefore, we have not processed these fields above and
          # have to do it now.
          
          if {![info exists processed($att)]} {
    	#my msg "form field $att not yet processed"
    	switch -glob -- $att {
    	  __* {
    	    # other internal variables (like __object_name) are ignored
    	  }
    	  _* {
    	    # instance attribute fields
    	    set varname [string range $att 1 end]
                set preset ""
                if {[my exists $varname]} {set preset [my set $varname]}
                set v [$f value_if_nothing_is_returned_from_from $preset]
                set value [$f value $v]
                if {$v ne $preset} {
                  if {![string match *.* $att]} {my set $varname $value}
                }
    	  }
    	  default {
    	    # user form content fields
                set preset ""
                if {[info exists __ia($att)]} {set preset $__ia($att)}
                set v [$f value_if_nothing_is_returned_from_from $preset]
                set value [$f value $v]
                if {$v ne $preset} {
                  if {![string match *.* $att]} {set __ia($att) $value}
                }
    	  }
             }
          }
          
          #
          # Run validators
          #
          set validation_error [$f validate [self]]
          #my msg "validation of [$f name] with value '[$f value]' returns '$validation_error'"
          if {$validation_error ne ""} {
            $f error_msg $validation_error
            incr validation_errors
          }
        }
        
        if {$validation_errors == 0} {
          #
          # Postprocess based on form fields based on form-fields methods.
          # Postprocessing might force to refresh some values in __ia()
          #
          foreach f $form_fields {
            $f convert_to_internal
            if {[$f exists __refresh_instance_attributes]} {
              #my msg "refresh [$f set __refresh_instance_attributes]"
              foreach {att val} [$f set __refresh_instance_attributes] {
                set __ia($att) $val
              }
            }
          }
        }
    
        #my msg "--set instance attributes to [array get __ia]"
        my instance_attributes [array get __ia]
        my array set __ia [my instance_attributes]
        #my msg category_ids=$category_ids
        return [list $validation_errors [lsort -unique $category_ids]]
      }
  • instproc include (public)

    <instance of ::xowiki::Page[i]> include [ -configure configure ] \
        arg
    Include the html of the includelet. The method generates an includelet object (might be an other xowiki page) and renders it and returns either html or an error message.

    Switches:
    -configure (optional)
    Parameters:
    arg
    ::xowiki::Page instproc include {-configure arg} {
        set page [my instantiate_includelet $arg]
        if {$page eq ""} {
          return [my error_during_render [_ xowiki.error-includelet-unknown]]
        }
        if {[$page istype ::xowiki::Page]} {
          set package_id [$page package_id]
          set allowed [[$package_id set policy] check_permissions  -package_id $package_id  -user_id [::xo::cc set untrusted_user_id]  $page view]
          if {!$allowed} {
            return "<div class='errorMsg'>Unsufficient priviledges to view content of [$page name].</div>"
          }
        }
        if {[info exists configure]} {
          eval $page configure $configure
        }
        return [my render_includelet $page]
      }
  • instproc resolve_included_page_name (public)

    <instance of ::xowiki::Page[i]> resolve_included_page_name \
        page_name
    Determine the page object for the specified page name. The specified page name might have the form //some_other_instance/page_name, in which case the page is resolved from some other package instance. If the page_name does not contain a language prefix, the language prefix of the including page is used.

    Parameters:
    page_name
    ::xowiki::Page instproc resolve_included_page_name page_name {
        if {$page_name ne ""} {
          set page [[my package_id] resolve_page_name_and_init_context -lang [my lang] $page_name]
          if {$page eq ""} {
            error "Cannot find page '$page_name' to be included in page '[my name]'"
          }
        } else {
          set page [self]
        }
        return $page
      }

Methods: Source: Variables:
[All Methods | Documented Methods | Hide Methods] [Display Source | Hide Source] [Show Variables | Hide Variables]
My Calendar