* Scheme of things: main: # # Initial entry - route is "/" # set initial panel for initial panel: load up _data hash with DB fields load up stash with pointer(s) to control fields hash(= get-)) and a pointer to the prefix_data hash render initial panel do_update: # # Return after submit pushed on panel (this is a post) - route is "/u" # parameters in the params hash. # load up all params into prefix_data hash: By panel (series of if statements - only one executed): call validate-PANEL() - return ret = ok or error message if validation not ok: render back to current panel with error message in stash otherwise: By panel (series of if statements - only one executed): Copy back to DB all relevant params (is this just the DB params for this panel?) do whatever is required: call perform-PANEL() - return "ok" or Error Message call signal-event for any global actions specified (check it exists - error and continue?) if action smeserver--update exists signal_event smeserver--update call signal-event for any specific actions for thids panel (check it exists first - error and continue) set success in stash if no "nextpanel" entry: set firstpanel else set nextpanel call render do_display: # # Return after link clicked in table (this is a get) - route is "/d" # Expects ?trt=PANEL&selected="TableRowName" plus any other required # load up all supplied params into prefix_data hash call get-selected-PANEL() - returns hash of all relevent parameters load up returned hash into prefix_data render - to called panel