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

提供:ロマサガ2リメイク 攻略Wiki(ロマンシング・サガ2 リベンジオブザセブン):ヘイグ
移動先:案内検索
編集の要約なし
タグ: 差し戻し済み
編集の要約なし
タグ: 手動差し戻し
 
(同じ利用者による、間の4版が非表示)
41行目: 41行目:
var drawnItems = new L.FeatureGroup();
var drawnItems = new L.FeatureGroup();
map.addLayer(drawnItems);
map.addLayer(drawnItems);
var DEBUG_MODE = true;
function debugLog(message) {
    if (DEBUG_MODE) {
        console.log("DEBUG:", message);
    }
}




252行目: 244行目:
// MediaWikiコンテンツのレンダリング
// MediaWikiコンテンツのレンダリング
function renderMediaWikiContent(content) {
function renderMediaWikiContent(content) {
    if (typeof mw === 'undefined' || !mw.Api) {
        console.warn('MediaWiki API is not available. Returning raw content.');
        return content;
    }
     var renderedContent = '';
     var renderedContent = '';
     $.ajax({
     $.ajax({
269行目: 256行目:
             renderedContent = data.parse.text['*'];
             renderedContent = data.parse.text['*'];
         },
         },
         error: function(xhr, status, error) {
         error: function() {
             console.error('Failed to render MediaWiki content:', error);
             console.error('Failed to render MediaWiki content');
            renderedContent = content;  // エラー時は元のコンテンツを返す
         }
         }
     });
     });
     return renderedContent;
     return renderedContent;
}
}


// ポップアップの内容を保存
// ポップアップの内容を保存
330行目: 317行目:
         title: 'マップを編集する',
         title: 'マップを編集する',
         onClick: function(btn, map) {
         onClick: function(btn, map) {
             editMode = true;
             checkUserGroup('map-edit-member', function(isInGroup) {
            map.addControl(drawControl);
                if (isInGroup) {
            btn.state('disable-edit');
                    editMode = true;
            updateAllPopups();
                    map.addControl(drawControl);
            saveButton.addTo(map); // saveButtonを表示する
                    btn.state('disable-edit');
                    updateAllPopups();
                    saveButton.addTo(map); // saveButtonを表示する
                } else {
                    alert('あなたには編集権限がありません。\n攻略に参加することでマップが編集できるようになります。');
                }
            });
         }
         }
     }, {
     }, {
365行目: 358行目:


// 保存ボタン
// 保存ボタン
var saveButton = L.easyButton('<img src="https://dq.h1g.jp/img/marker-icon-img/save-solid.svg">', async function() {
var saveButton = L.easyButton('<img src="https://dq.h1g.jp/img/marker-icon-img/save-solid.svg">', function() {
     if (editMode) {
     if (editMode) {
         var geoJSONData = convertToGeoJSON(drawnItems);
         var geoJSONData = convertToGeoJSON(drawnItems);
         if (geoJSONData) {
         if (geoJSONData) {
             await saveToWikiPage(geoJSONData);
//            console.log(geoJSONData);
             saveButton.remove();
             saveToWikiPage(geoJSONData);
             saveButton.remove(); // saveButtonを非表示にする
         } else {
         } else {
             alert('Error: Invalid GeoJSON data');
             alert('Error: Invalid GeoJSON data');
554行目: 548行目:




async function saveToWikiPage(geoJSONData) {
function saveToWikiPage(geoJSONData) {
     var formattedData = geoJSONData;
     var formattedData = geoJSONData;
      
     $.ajax({
    if (!checkUserLoggedIn()) {
        type: "POST",
        alert('エラー: ログインしていません。データを保存するにはログインが必要です。');
        url: 'http://162.43.54.49/api.php',
        return;
        data: {
    }
            action: 'edit',
 
            title: '<!--{$geojson}-->',
    try {
            text: formattedData,
        const csrfToken = await getCSRFToken();
            token: mw.user.tokens.get('csrfToken'),
 
            format: 'json'
        $.ajax({
        },
            type: "POST",
        success: function(response) {
            url: mw.util.wikiScript('api'),
//            console.log("Save response:", response);
            data: {
            if (response.edit && response.edit.result === 'Success') {
                action: 'edit',
                alert('データは正常に保存されました');
                title: '<!--{$geojson}-->',
                editMode = false;
                text: formattedData,
                drawControl.remove();
                token: csrfToken,
                editButton.state('enable-edit');
                format: 'json'
                saveButton.remove(); // saveButtonを非表示にする
            },
               
            success: function(response) {
                setTimeout(function() {
                console.log("Save response:", response);
                    loadPinsFromWikiPage();
                if (response.edit && response.edit.result === 'Success') {
                }, 1000);
                    alert('データは正常に保存されました');
            } else {
                    editMode = false;
                alert('Error saving data: ' + JSON.stringify(response));
                    drawControl.remove();
                    editButton.state('enable-edit');
                    saveButton.remove();
                   
                    setTimeout(function() {
                        loadPinsFromWikiPage();
                    }, 1000);
                } else {
                    alert('Error saving data: ' + JSON.stringify(response));
                }
            },
            error: function(xhr, status, error) {
                console.error("Save error:", error);
                console.log("XHR status:", status);
                console.log("XHR response:", xhr.responseText);
                alert('Error saving data: ' + error);
             }
             }
         });
         },
    } catch (error) {
        error: function(xhr, status, error) {
        console.error("Error getting CSRF token:", error);
            console.error("Save error:", error);
        alert('Error: Unable to get CSRF token. ' + error);
//            console.log("XHR status:", status);
     }
//            console.log("XHR response:", xhr.responseText);
            alert('Error saving data: ' + error);
        }
     });
}
}
map.on(L.Draw.Event.CREATED, function (event) {
map.on(L.Draw.Event.CREATED, function (event) {
     var layer = event.layer;
     var layer = event.layer;

2024年9月24日 (火) 13:45時点における最新版

地図表示Widget「Widget:Custom map」です。