git -C '/home/opc/rocketa.git' show 0f7b373 -- resources/views/admin/media/site/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/media/site/regist.blade.php b/resources/views/admin/media/site/regist.blade.php
index 560ad44..7c3b3df 100644
--- a/resources/views/admin/media/site/regist.blade.php
+++ b/resources/views/admin/media/site/regist.blade.php
@@ -86,7 +86,7 @@
<div class="col-sm-10 px-0 d-flex align-items-center">
<div class="p-2 w-100">
- {{ Form::url('api_url', $datas['api_url'], ['class'=>'form-control url-input', 'autocomplete'=>'off', 'placeholder'=>__('media-site-regist.please_enter_performance_return_api_url')]) }}
+ {{ Form::url('api_url', $datas['api_url'], ['id'=>'api_url','class'=>'form-control url-input', 'autocomplete'=>'off', 'placeholder'=>__('media-site-regist.please_enter_performance_return_api_url')]) }}
@if(__('common._')=="ja")
<a href="https://drive.google.com/drive/u/0/folders/1LTBxGPg0kY2e8Mo9PgOyGVSpBL5ORtI1" target="_blank">help</a>
@elseif(__('common._')=="kr")
@@ -108,7 +108,8 @@
<div class="col-sm-10 px-0 d-flex align-items-center">
<div class="p-2 w-100">
- {{ Form::url('api_url_test', $datas['api_url_test'] ? $datas['api_url_test']:"", ['class'=>'form-control url-input', 'autocomplete'=>'off', 'placeholder'=>__('media-site-regist.please_enter_performance_return_api_url')]) }}
+ <input type="button" id="copy_url_button" value="↓copy" />
+ {{ Form::url('api_url_test', $datas['api_url_test'] ? $datas['api_url_test']:"", ['id'=>'api_url_test','class'=>'form-control url-input', 'autocomplete'=>'off', 'placeholder'=>__('media-site-regist.please_enter_performance_return_api_url')]) }}
@if($errors->has('api_url_test'))
<div class="err_msg mt-2">{{ $errors->first('api_url_test') }}</div>
@@ -507,6 +508,10 @@
@section('respectively_js')
<script>
+$('#copy_url_button').on('click', function() {
+ var value = $('#api_url').val();
+ $('#api_url_test').val(value);
+});
//////////////////////////
//トラッキングURL設定 start
//////////////////////////
@@ -593,7 +598,15 @@ function addKvRow(key, value) {
$('#ubPath').val(parsed.pathname === '/' ? '' : parsed.pathname);
// query params
parsed.searchParams.forEach(function(value, key) {
- addKvRow(key, value);
+ // {} で囲まれているかチェック
+ 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" でパースできないなど)は簡易分解
@@ -606,15 +619,22 @@ function addKvRow(key, value) {
// 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));
+ }
+ });
}
}
}
@@ -652,32 +672,35 @@ function addKvRow(key, value) {
// 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');
}
// モーダル閉じる