webmcp

annotate framework/env/ui/_partial_load_js.lua @ 11:d76a8857ba62

Added ui.partial and other functions, which allow partial content replacement using XMLHttpRequests; Image support for ui.link

Also includes following changes:
- Fix for rocketcgi library to accept POST data content-types, which contain additional charset information.
- Support arrays passed as params to encode.url (only for keys ending with "[]")
- Version information changed to "1.0.7"

Documentation for added functions is not yet complete.
author jbe/bsw
date Fri Feb 12 18:40:22 2010 +0100 (2010-02-12)
parents
children f3d3203cd2e4
rev   line source
jbe/bsw@11 1 --[[--
jbe/bsw@11 2 ui._partial_load_js{
jbe/bsw@11 3 }
jbe/bsw@11 4
jbe/bsw@11 5 TODO: documentation
jbe/bsw@11 6
jbe/bsw@11 7 NOTE: may return nil
jbe/bsw@11 8
jbe/bsw@11 9 --]]--
jbe/bsw@11 10
jbe/bsw@11 11 function ui._partial_load_js(args, mode)
jbe/bsw@11 12 local args = args or {}
jbe/bsw@11 13 local module
jbe/bsw@11 14 local view
jbe/bsw@11 15 local id
jbe/bsw@11 16 local params = {}
jbe/bsw@11 17 local target
jbe/bsw@11 18 if args.view and args.target then
jbe/bsw@11 19 module = args.module
jbe/bsw@11 20 view = args.view
jbe/bsw@11 21 id = args.id
jbe/bsw@11 22 target = args.target
jbe/bsw@11 23 elseif not args.view and not args.target then
jbe/bsw@11 24 if not ui._partial_state then
jbe/bsw@11 25 return nil
jbe/bsw@11 26 end
jbe/bsw@11 27 module = ui._partial_state.module
jbe/bsw@11 28 view = ui._partial_state.view
jbe/bsw@11 29 id = ui._partial_state.id
jbe/bsw@11 30 target = ui._partial_state.target
jbe/bsw@11 31 else
jbe/bsw@11 32 error("Unexpected arguments passed to ui._partial_load_js{...}")
jbe/bsw@11 33 end
jbe/bsw@11 34
jbe/bsw@11 35 if ui._partial_state then
jbe/bsw@11 36 if ui._partial_state.params then
jbe/bsw@11 37 for key, value in pairs(ui._partial_state.params) do
jbe/bsw@11 38 params[key] = value
jbe/bsw@11 39 end
jbe/bsw@11 40 end
jbe/bsw@11 41 for param_name, dummy in pairs(ui._partial_state.param_name_hash) do
jbe/bsw@11 42 params[param_name] = cgi.params[param_name]
jbe/bsw@11 43 end
jbe/bsw@11 44 end
jbe/bsw@11 45 if args.params then
jbe/bsw@11 46 for key, value in pairs(args.params) do
jbe/bsw@11 47 params[key] = value
jbe/bsw@11 48 end
jbe/bsw@11 49 end
jbe/bsw@11 50 local encoded_url = encode.json(
jbe/bsw@11 51 encode.url{
jbe/bsw@11 52 module = module,
jbe/bsw@11 53 view = view,
jbe/bsw@11 54 id = id,
jbe/bsw@11 55 params = params
jbe/bsw@11 56 }
jbe/bsw@11 57 )
jbe/bsw@11 58
jbe/bsw@11 59 if mode == "form_normal" then
jbe/bsw@11 60 -- NOTE: action in "action_mode" refers to WebMCP actions, while action
jbe/bsw@11 61 -- in "this.action" refers to the action attribute of HTML forms
jbe/bsw@11 62 slot.put('this.action = ', encoded_url, '; ')
jbe/bsw@11 63 end
jbe/bsw@11 64
jbe/bsw@11 65 return slot.use_temporary(function()
jbe/bsw@11 66 slot.put(
jbe/bsw@11 67 'partialMultiLoad({',
jbe/bsw@11 68 -- mapping:
jbe/bsw@11 69 '"trace": "trace", "system_error": "system_error", ',
jbe/bsw@11 70 encode.json(target), ': "default" }, ',
jbe/bsw@11 71 -- tempLoadingContents:
jbe/bsw@11 72 '{}, ',
jbe/bsw@11 73 -- failureContents:
jbe/bsw@11 74 '"error", ',
jbe/bsw@11 75 -- url:
jbe/bsw@11 76 (mode == "form_normal" or mode == "form_action") and (
jbe/bsw@11 77 'this'
jbe/bsw@11 78 ) or (
jbe/bsw@11 79 encoded_url
jbe/bsw@11 80 ), ', ',
jbe/bsw@11 81 -- urlParams:
jbe/bsw@11 82 '"_webmcp_json_slots[]=default&_webmcp_json_slots[]=trace&_webmcp_json_slots[]=system_error", ',
jbe/bsw@11 83 -- postParams:
jbe/bsw@11 84 '{}, ',
jbe/bsw@11 85 -- successHandler:
jbe/bsw@11 86 'function() {}, ',
jbe/bsw@11 87 -- failureHandler:
jbe/bsw@11 88 'function() {} ',
jbe/bsw@11 89 '); ',
jbe/bsw@11 90 'return false;'
jbe/bsw@11 91 )
jbe/bsw@11 92 end)
jbe/bsw@11 93 end

Impressum / About Us