Work on fixing forms in the presence of resources and to enable cachingof images, a=chris

Chris Pollett [2022-09-12 17:Sep:th]
Work on fixing forms in the presence of resources and to enable cachingof images, a=chris
Filename
src/models/GroupModel.php
src/views/elements/WikiElement.php
diff --git a/src/models/GroupModel.php b/src/models/GroupModel.php
index a53d27f99..0e000068c 100644
--- a/src/models/GroupModel.php
+++ b/src/models/GroupModel.php
@@ -1441,7 +1441,13 @@ class GroupModel extends Model implements MediaConstants
             $parsed_page = $parser->parse($page);
             if ($is_form && strstr($page, '<form ') !== false) {
                 return null;
-            } else if ($is_form) {
+            }
+        }
+        if ($page_id = $this->getPageId($group_id, $page_name, $locale_tag)) {
+            //can only add and use resources for a page that exists
+            $parsed_page = $this->insertResourcesParsePage($group_id, $page_id,
+                $locale_tag, $parsed_page);
+            if ($is_form) {
                 $end_head = "END_HEAD_VARS";
                 $parsed_page = str_replace($end_head, $end_head .
                     "\n<form method='post' >\n<input type='hidden' name='" .
@@ -1454,11 +1460,6 @@ class GroupModel extends Model implements MediaConstants
                     "[{form-hash". L\crawlHash($page_body) . "}]",
                     $parsed_page);
             }
-        }
-        if ($page_id = $this->getPageId($group_id, $page_name, $locale_tag)) {
-            //can only add and use resources for a page that exists
-            $parsed_page = $this->insertResourcesParsePage($group_id, $page_id,
-                $locale_tag, $parsed_page);
             $sql = "UPDATE GROUP_PAGE SET PAGE=?, LAST_MODIFIED=? WHERE ID = ?";
             $result = $db->execute($sql, [$parsed_page, $pubdate, $page_id]);
         } else {
@@ -2238,7 +2239,7 @@ class GroupModel extends Model implements MediaConstants
                         $resource_url .= "&amp;". C\CSRF_TOKEN . "=" .
                             $csrf_token;
                     } else {
-                        $resource_url .= "&amp;[{token}]";
+                        $resource_url .= "&amp;[{rtoken}]";
                     }
                 }
             }
@@ -4162,7 +4163,7 @@ EOD;
         $resource_name = urlencode($resource_name);
         $sub_path = urlencode($sub_path);
         $token_string = ($csrf_token) ? C\CSRF_TOKEN . "=" . $csrf_token :
-            "[{token}]";
+            "[{rtoken}]";
         if (C\REDIRECTS_ON) {
             $url = C\SHORT_BASE_URL . "wd/resources/$token_string/$group_id/".
                 $page_id;
diff --git a/src/views/elements/WikiElement.php b/src/views/elements/WikiElement.php
index 63788e874..9c8dc37ab 100644
--- a/src/views/elements/WikiElement.php
+++ b/src/views/elements/WikiElement.php
@@ -2116,18 +2116,22 @@ class WikiElement extends Element implements CrawlConstants
         $no_amp_csrf_token = "";
         $no_right_amp_csrf_token = "";
         if (!empty($data['ADMIN'])) {
-            $token_string = $data[C\CSRF_TOKEN];
+            $resource_token = $data[C\CSRF_TOKEN];
             if ($group_id == C\PUBLIC_GROUP_ID ||
                 (!empty($data["GROUP"]["GROUP_ID"]) &&
                 !empty($data["GROUP"]["REGISTER_TYPE"]) &&
                 $group_id == $data["GROUP"]["GROUP_ID"]) &&
                 $data["GROUP"]["REGISTER_TYPE"] == C\PUBLIC_JOIN) {
-                $data[C\CSRF_TOKEN] = str_pad("", 11,  "0");
+                $resource_token = str_pad("", 11,  "0");
             }
             $no_amp_csrf_token = C\CSRF_TOKEN . "=" . $data[C\CSRF_TOKEN];
+            $resource_no_amp_csrf_token = C\CSRF_TOKEN . "=" . $resource_token;
             $no_right_amp_csrf_token =
                 "&amp;". $no_amp_csrf_token;
+            $resource_no_right_amp_csrf_token = "&amp;".
+                $resource_no_amp_csrf_token;
             $csrf_token = $no_right_amp_csrf_token . "&amp;";
+            $resource_csrf_token = $resource_no_right_amp_csrf_token . "&amp;";
         }
         if ($data['CONTROLLER'] == 'static') {
             $address = C\SHORT_BASE_URL . "p/";
@@ -2150,6 +2154,11 @@ class WikiElement extends Element implements CrawlConstants
             $pre_page);
         $pre_page = preg_replace('/\[{token}\]/', $csrf_token,
             $pre_page);
+        $pre_page = preg_replace('/\/\[{rtoken}\]\//',
+            (empty($no_amp_csrf_token)) ? "/-/" :
+            "/$resource_no_amp_csrf_token/" , $pre_page);
+        $pre_page = preg_replace('/\[{rtoken}\]/', $resource_csrf_token,
+            $pre_page);
         $pre_page = preg_replace('/\[{just\-token}\]/', $data[C\CSRF_TOKEN],
             $pre_page);
         $pre_page = preg_replace('/\[{image-captcha}\]/',
ViewGit