jbe/bsw@11: --[[-- jbe/bsw@11: ui._partial_load_js{ jbe/bsw@11: } jbe/bsw@11: jbe/bsw@11: TODO: documentation jbe/bsw@11: jbe/bsw@11: NOTE: may return nil jbe/bsw@11: jbe/bsw@11: --]]-- jbe/bsw@11: jbe/bsw@11: function ui._partial_load_js(args, mode) jbe/bsw@11: local args = args or {} jbe/bsw@11: local module jbe/bsw@11: local view jbe/bsw@11: local id jbe/bsw@11: local params = {} jbe/bsw@11: local target jbe/bsw@11: if args.view and args.target then jbe/bsw@11: module = args.module jbe/bsw@11: view = args.view jbe/bsw@11: id = args.id jbe/bsw@11: target = args.target jbe/bsw@11: elseif not args.view and not args.target then jbe/bsw@11: if not ui._partial_state then jbe/bsw@11: return nil jbe/bsw@11: end jbe/bsw@11: module = ui._partial_state.module jbe/bsw@11: view = ui._partial_state.view jbe/bsw@11: id = ui._partial_state.id jbe/bsw@11: target = ui._partial_state.target jbe/bsw@11: else jbe/bsw@11: error("Unexpected arguments passed to ui._partial_load_js{...}") jbe/bsw@11: end jbe/bsw@11: jbe/bsw@11: if ui._partial_state then jbe/bsw@11: if ui._partial_state.params then jbe/bsw@11: for key, value in pairs(ui._partial_state.params) do jbe/bsw@11: params[key] = value jbe/bsw@11: end jbe/bsw@11: end jbe/bsw@11: for param_name, dummy in pairs(ui._partial_state.param_name_hash) do jbe/bsw@11: params[param_name] = cgi.params[param_name] jbe/bsw@11: end jbe/bsw@11: end jbe/bsw@11: if args.params then jbe/bsw@11: for key, value in pairs(args.params) do jbe/bsw@11: params[key] = value jbe/bsw@11: end jbe/bsw@11: end jbe/bsw@11: local encoded_url = encode.json( jbe/bsw@11: encode.url{ jbe/bsw@11: module = module, jbe/bsw@11: view = view, jbe/bsw@11: id = id, jbe/bsw@11: params = params jbe/bsw@11: } jbe/bsw@11: ) jbe/bsw@11: jbe/bsw@11: if mode == "form_normal" then jbe/bsw@11: -- NOTE: action in "action_mode" refers to WebMCP actions, while action jbe/bsw@11: -- in "this.action" refers to the action attribute of HTML forms jbe/bsw@11: slot.put('this.action = ', encoded_url, '; ') jbe/bsw@11: end jbe/bsw@11: jbe/bsw@11: return slot.use_temporary(function() jbe/bsw@11: slot.put( jbe/bsw@11: 'partialMultiLoad({', jbe/bsw@11: -- mapping: jbe/bsw@11: '"trace": "trace", "system_error": "system_error", ', jbe/bsw@11: encode.json(target), ': "default" }, ', jbe/bsw@11: -- tempLoadingContents: jbe/bsw@11: '{}, ', jbe/bsw@11: -- failureContents: jbe/bsw@11: '"error", ', jbe/bsw@11: -- url: jbe/bsw@11: (mode == "form_normal" or mode == "form_action") and ( jbe/bsw@11: 'this' jbe/bsw@11: ) or ( jbe/bsw@11: encoded_url jbe/bsw@11: ), ', ', jbe/bsw@11: -- urlParams: jbe/bsw@11: '"_webmcp_json_slots[]=default&_webmcp_json_slots[]=trace&_webmcp_json_slots[]=system_error", ', jbe/bsw@11: -- postParams: jbe/bsw@11: '{}, ', jbe/bsw@11: -- successHandler: jbe/bsw@11: 'function() {}, ', jbe/bsw@11: -- failureHandler: jbe/bsw@11: 'function() {} ', jbe/bsw@11: '); ', jbe/bsw@11: 'return false;' jbe/bsw@11: ) jbe/bsw@11: end) jbe/bsw@11: end