「Widget:Custom map」の版間の差分

提供:ゼルダの伝説 知恵のかりもの 攻略Wiki
移動先:案内検索
編集の要約なし
編集の要約なし
683行目: 683行目:


function saveToWikiPage(geoJSONData) {
function saveToWikiPage(geoJSONData) {
     const csrfToken = mw.user.tokens.get('csrfToken'); // トークンを取得
     var api = new mw.Api();
    console.log('Using CSRF Token:', csrfToken); // トークンをログ出力して確認


     var formattedData = geoJSONData;
     api.post({
    $.ajax({
         action: 'edit',
         type: "POST",
        title: '<!--{$geojson}-->',
        url: API_BASE_URL + '/api.php',
        text: geoJSONData,
        data: {
        token: csrfToken, // 取得したトークンを使用
            action: 'edit',
        format: 'json'
            title: '<!--{$geojson}-->',
    }).done(function(response) {
            text: formattedData,
        if (response.edit && response.edit.result === 'Success') {
            token: csrfToken, // トークンをここで利用
            alert('データは正常に保存されました');
            format: 'json'
            editMode = false;
        },
            drawControl.remove();
        success: function(response) {
            editButton.state('enable-edit');
            if (response.edit && response.edit.result === 'Success') {
            saveButton.remove();
                alert('データは正常に保存されました');
                editMode = false;
                drawControl.remove();
                editButton.state('enable-edit');
                saveButton.remove();


                setTimeout(function() {
            setTimeout(function() {
                    loadPinsFromWikiPage();
                loadPinsFromWikiPage();
                }, 1000);
            }, 1000);
            } else {
        } else {
                alert('Error saving data: ' + JSON.stringify(response));
            alert('Error saving data: ' + JSON.stringify(response));
            }
        },
        error: function(xhr, status, error) {
            console.error("Save error:", error);
            alert('Error saving data: ' + error);
         }
         }
    }).fail(function(error) {
        console.error("Save error:", error);
        alert('Error saving data: ' + error);
     });
     });
}
}


map.on(L.Draw.Event.CREATED, function (event) {
map.on(L.Draw.Event.CREATED, function (event) {
728行目: 722行目:
     drawnItems.addLayer(layer);
     drawnItems.addLayer(layer);
});
});
function refreshTokenAndSave(geoJSONData) {
    var api = new mw.Api();
    api.get({
        action: 'query',
        meta: 'tokens',
        type: 'csrf',
        format: 'json'
    }).done(function(data) {
        csrfToken = data.query.tokens.csrftoken; // トークンを更新
        saveToWikiPage(geoJSONData); // 保存処理を再試行
    });
}




////////////////////////////////////////////////////
////////////////////////////////////////////////////
// ページ読み込み時にデータを読み込む
// ページ読み込み時にデータを読み込む
var csrfToken; // グローバル変数としてトークンを格納
$(document).ready(function() {
$(document).ready(function() {
    var api = new mw.Api();
    // トークンを取得
    api.get({
        action: 'query',
        meta: 'tokens',
        type: 'csrf',
        format: 'json'
    }).done(function(data) {
        csrfToken = data.query.tokens.csrftoken; // トークンを保存
        console.log('CSRF Token acquired:', csrfToken);
    }).fail(function(error) {
        console.error('Failed to fetch CSRF Token:', error);
    });
    // 地図の初期化とデータの読み込み
     setTimeout(function() {
     setTimeout(function() {
         map.invalidateSize();
         map.invalidateSize();
         loadPinsFromWikiPage();
         loadPinsFromWikiPage();
 
     }, 500);
        // CSRFトークンの確認
        console.log('CSRF Token:', mw.user.tokens.get('csrfToken'));
     }, 500);  // 遅延を設定
 
    // ここでトークンを取得して保存することも可能
    const csrfToken = mw.user.tokens.get('csrfToken');
    console.log('Fetched CSRF Token:', csrfToken);
});
});
</script>
</script>


</includeonly>
</includeonly>

2024年11月9日 (土) 13:18時点における版