「Widget:Custom map」の版間の差分
提供:ゼルダの伝説 知恵のかりもの 攻略Wiki
ヘイグ運営用アカウント (トーク | 投稿記録) 編集の要約なし |
ヘイグ運営用アカウント (トーク | 投稿記録) 編集の要約なし |
||
683行目: | 683行目: | ||
function saveToWikiPage(geoJSONData) { | function saveToWikiPage(geoJSONData) { | ||
var api = new mw.Api(); | |||
api.post({ | |||
action: 'edit', | |||
title: '<!--{$geojson}-->', | |||
text: geoJSONData, | |||
token: csrfToken, // 取得したトークンを使用 | |||
format: 'json' | |||
}).done(function(response) { | |||
if (response.edit && response.edit.result === 'Success') { | |||
alert('データは正常に保存されました'); | |||
editMode = false; | |||
drawControl.remove(); | |||
editButton.state('enable-edit'); | |||
saveButton.remove(); | |||
setTimeout(function() { | |||
loadPinsFromWikiPage(); | |||
}, 1000); | |||
} else { | |||
alert('Error saving data: ' + JSON.stringify(response)); | |||
} | } | ||
}).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); | |||
}, 500 | |||
}); | }); | ||
</script> | </script> | ||
</includeonly> | </includeonly> |