rocket-a


git -C '/home/opc/rocketa.git' show 0f7b373 -- resources/views/admin/ad/regist.blade.php

commit 0f7b3735f63dc6f8212a1ef4e0ab8afa320df3b3
Author: Satoshi Ujihara <satoshi_ujihara@fivegate.jp>
Date:   Tue Nov 25 16:31:46 2025 +0900

    API URL作成jquery変更
    abrテストページ作成

diff --git a/resources/views/admin/ad/regist.blade.php b/resources/views/admin/ad/regist.blade.php
index af1156e..549a22b 100644
--- a/resources/views/admin/ad/regist.blade.php
+++ b/resources/views/admin/ad/regist.blade.php
@@ -4545,29 +4545,44 @@ $(function() {
         // pathname は先頭スラッシュあり
         $('#ubPath').val(parsed.pathname === '/' ? '' : parsed.pathname);
         // query params
-        parsed.searchParams.forEach(function(value, key) {
-          addKvRow(key, value);
-        });
+            parsed.searchParams.forEach(function(value, key) {
+                // {} で囲まれているかチェック
+                if (/^\{.*\}$/.test(value)) {
+                    addKvRow(key, value);
+                } else {
+                    // {} で囲まれていない場合は ubPath に ?key=value として追加
+                    var currentPath = $('#ubPath').val();
+                    var separator = currentPath.includes('?') ? '&' : '?';
+                    $('#ubPath').val(currentPath + separator + encodeURIComponent(key) + '=' + encodeURIComponent(value));
+                }
+            });
       } catch (e) {
         // URL でない場合(例: "example.com/path" でパースできないなど)は簡易分解
         // domain と path をスラッシュで分ける
         var m = val.match(/^([^\/]+)(\/.*)?$/);
         if (m) {
-          $('#ubDomain').val(m[1]);
-          $('#ubPath').val(m[2] || '');
+            $('#ubDomain').val(m[1]);
+            $('#ubPath').val(m[2] || '');
         }
         // query があればパースする(? が含まれている場合)
         var qIndex = val.indexOf('?');
         if (qIndex !== -1) {
-          var qs = val.substring(qIndex + 1);
-          var pairs = qs.split('&');
-          pairs.forEach(function(p) {
-            if (!p) return;
-            var kv = p.split('=');
-            var k = decodeURIComponent(kv[0] || '');
-            var v = decodeURIComponent(kv.slice(1).join('=') || '');
-            addKvRow(k, v);
-          });
+            var qs = val.substring(qIndex + 1);
+            var pairs = qs.split('&');
+            pairs.forEach(function(p) {
+                if (!p) return;
+                var kv = p.split('=');
+                var k = decodeURIComponent(kv[0] || '');
+                var v = decodeURIComponent(kv.slice(1).join('=') || '');
+
+                if (/^\{.*\}$/.test(v)) {
+                    addKvRow(k, v);
+                } else {
+                    var currentPath = $('#ubPath').val();
+                    var separator = currentPath.includes('?') ? '&' : '?';
+                    $('#ubPath').val(currentPath + separator + encodeURIComponent(k) + '=' + encodeURIComponent(v));
+                }
+            });
         }
       }
     }
@@ -4592,32 +4607,35 @@ $(function() {
     // query を収集
     var params = [];
     $('#kvContainer .kv-row').each(function() {
-      var k = $.trim($(this).find('.kv-key').val() || '');
-      var v = $(this).find('.kv-value').val() || '';
-      if (k === '') return; // 空キーは無視
-      // encodeURIComponent で値を安全にエンコード
-      params.push(encodeURIComponent(k) + '=' + (v));
+    var k = $.trim($(this).find('.kv-key').val() || '');
+    var v = $(this).find('.kv-value').val() || '';
+    if (k === '') return; // 空キーは無視
+    // encodeURIComponent で値を安全にエンコード
+    params.push(encodeURIComponent(k) + '=' + v);
     });
 
-    var query = params.length ? '?' + params.join('&') : '';
+    var query = '';
+    if (params.length) {
+    // ubPath に ? が含まれているかチェック
+    var separator = path.includes('?') ? '&' : '?';
+    query = separator + params.join('&');
+    }
+
     // デフォルトスキームは https
     var finalUrl = 'https://' + domain + (path || '') + query;
 
-    // もし input の元の値がスキーム付きで別スキームだった場合、スキームを維持する
+    // 元のスキームを維持する場合
     var original = $currentInput && $currentInput.val();
     if (original && /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(original)) {
-      try {
+    try {
         var origParsed = new URL(original);
-        // 同一ホスト? というチェックはしないで、scheme を維持したい場合だけ置換
         finalUrl = origParsed.protocol + '//' + domain + (path || '') + query;
-      } catch (e) {
-        // 解析失敗なら無視
-      }
+    } catch (e) {}
     }
 
     // 入力に反映
     if ($currentInput) {
-      $currentInput.val(finalUrl).trigger('change');
+    $currentInput.val(finalUrl).trigger('change');
     }
 
     // モーダル閉じる

diff.txt · 最終更新: by root