+ if ( count($_SESSION['Context'])) {
+ if ($_SERVER['PHP_SELF'] == $_SESSION['Context'][0]['caller']) {
+ $ctx = array_shift($_SESSION['Context']);
+ if ($ctx) {
+ if (is_array($ctx['ctx'])) {
+ foreach($ctx['ctx'] as $name => $val)
+ {
+ $_POST[$name] = $val;
+ }
+ } else
+ if ($ctx['name']!='')
+ $_SESSION[$ctx['name']] = $ctx['ctx'];
+ return $ctx['ret'];
+ }
+ }
+ }
+ return false;
+}
+
+/*
+ Return to caller page if the page was called from external context.
+*/
+function context_return($ret)
+{
+ if ( count($_SESSION['Context'])) {
+ $ctx = &$_SESSION['Context'][0];
+ $ctx['ret'] = $ret;
+ meta_forward( $ctx['caller'] );
+ }
+}
+/*
+ Clearing context stack after page cancel.
+*/
+function context_reset()
+{
+ $_SESSION['Context'] = array();
+}
+/*
+ Context stack initialization
+*/
+if (!isset($_SESSION['Context'])) {
+ context_reset();
+}
+/*
+ Redirector for selector F4 calls.
+ $sel_editors is array of selname=>editor_page
+*/
+function editor_redirect($sel_editors, $save_fun='') {
+ foreach ($sel_editors as $selname=>$editor)
+ if (isset($_POST['_'.$selname.'_editor'])) {
+ if (function_exists($save_fun))
+ $save_fun();
+ unset($_POST['_'.$selname.'_editor']);
+ context_call($editor, array_keys($_POST));
+ }
+}
+/*
+ Return procedure for selector F4 calls
+*/
+function editor_return($vars, $restore_fun='') {
+ if (function_exists($restore_fun))
+ $restore_fun();
+
+ if ($ret = context_restore()) {
+ foreach ($vars as $postname=>$retname)
+ if (isset($ret[$retname])) {
+ $_POST[$postname] = $ret[$retname];
+ set_focus($postname);
+ }
+ }
+}
+
+function confirm_dialog($submit, $msg) {
+ if (find_post($submit)) {
+ display_warning($msg);
+ br();
+ submit_center_first('DialogConfirm', _("Proceed"), '', true);
+ submit_center_last('DialogCancel', _("Cancel"), '', 'cancel');
+ return 0;
+ } else
+ return get_post('DialogConfirm', 0);
+}
+