git -C '/home/opc/rocketa.git' show 0f7b373 -- resources/views/admin/ad/regist.blade.phpcommit 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');
}
// モーダル閉じる