Ajax Inquiry Fixes (Braatwaate).
authorJoe Hunt <joe.hunt.consulting@gmail.com>
Thu, 8 Mar 2018 14:24:10 +0000 (15:24 +0100)
committerJoe Hunt <joe.hunt.consulting@gmail.com>
Thu, 8 Mar 2018 14:24:10 +0000 (15:24 +0100)
includes/ui/ui_view.inc
js/inserts.js

index 37c17432a85b6051e2ee219f1d26d4d288158c41..b65339ef8fc09cabceae106b4fa119550ddedbd3 100644 (file)
@@ -1546,3 +1546,44 @@ function trans_editor_link($type, $trans_no)
                (is_closed_trans($type, $trans_no) ? set_icon(ICON_CLOSED, _('Closed')) :
                        pager_link(_("Edit"), sprintf($editor_url[$type], $trans_no, $type), ICON_EDIT));
 }
+
+// This script updates the browser history when
+// any of the passed variables change.
+// This way, if the user changes these variables,
+// then uses the back button to return, it returns to the page
+// as the user modified it.
+function get_js_history(...$vars)
+{
+    $js = ' 
+    function changeVar() {
+        var stateObj = { foo: "bar" };
+        var state = "";
+';
+
+    $first = true;
+    foreach ( $vars as $var ) {
+        $js .= '
+        var element = document.getElementsByName("' . $var. '");
+        if (element[0])';
+        if ($first) {
+            $first = false;
+            $js .= '
+            state += "' . basename($_SERVER['SCRIPT_NAME']) . "?";
+        } else
+            $js .= '
+            state += "&';
+        $js .= $var .'="' . ' + element[0].value;';
+    }
+
+    $js .= '
+        history.replaceState(stateObj, "page 2", state);
+    }';
+    return $js;
+}
+
+function set_posts(...$vars)
+{
+    foreach ( $vars as $var )
+        if (isset($_GET[$var]))
+            $_POST[$var] = $_GET[$var];
+}
index 17b71143b60187ac01455c2be1c0031b1f69d255..de9e8d4aed9546121e5043bd674520d498fb6a31 100644 (file)
@@ -153,6 +153,8 @@ function _set_combo_select(e) {
                                 var sname = '_'+s.name+'_update';
                                 var update = document.getElementsByName(sname)[0];
                                 if(update) {
+                        if (typeof changeVar === "function")
+                            changeVar();
                                            JsHttpRequest.request(update);
                                }
                        }
@@ -335,6 +337,9 @@ var inserts = {
        function(e) {
                        e.onclick = function() {
                                if (validate(e)) {
+                    if (typeof changeVar === "function")
+                        changeVar();
+
                                        save_focus(e);
                                        var asp = e.getAttribute('aspect')
                                        if (asp && (asp.indexOf('process') !== -1))