var ImportSchemaDialog = {}; ImportSchemaDialog.launch = function() { var self = this; var frame = $(DOM.loadHTML("wikidata", "scripts/dialogs/import-schema-dialog.html")); var elmts = this._elmts = DOM.bind(frame); this._elmts.dialogHeader.text($.i18n('import-wikibase-schema/dialog-header')); this._elmts.fileLabel.html($.i18n('import-wikibase-schema/file-label')); this._elmts.schemaLabel.text($.i18n('import-wikibase-schema/schema-label')); this._elmts.cancelButton.text($.i18n('core-project/cancel')); this._elmts.importButton.text($.i18n('import-wikibase-schema/import')); this._level = DialogSystem.showDialog(frame); var dismiss = function() { DialogSystem.dismissUntil(self._level - 1); }; frame.find('.cancel-button').click(function() { dismiss(); }); elmts.fileInput.on("change", function(evt) { var file = evt.target.files[0]; var freader = new FileReader(); freader.onload = function(evt) { elmts.schemaTextarea.val(evt.target.result); elmts.schemaTextarea.hide(); elmts.schemaLabel.hide(); }; freader.readAsText(file); }); elmts.importButton.click(function() { var schema = null; try { schema = JSON.parse(elmts.schemaTextarea.val()); // If Wikibase related information is not included in the schema, // fall back to Wikidata. if (!schema.siteIri || !schema.mediaWikiApiEndpoint) { schema.siteIri = WikidataManifestV1_0.wikibase.site_iri; schema.mediaWikiApiEndpoint = WikidataManifestV1_0.mediawiki.api; schema.editGroupsURLSchema = WikidataManifestV1_0.editgroups.url_schema; } } catch(e) { elmts.invalidSchema.text($.i18n('import-wikibase-schema/invalid-schema')); return; } Refine.postProcess( "wikidata", "save-wikibase-schema", {}, { schema: JSON.stringify(schema) }, {}, { onDone: function() { theProject.overlayModels.wikibaseSchema = schema; SchemaAlignment._discardChanges(); dismiss(); }, onError: function(e) { elmts.invalidSchema.text($.i18n('import-wikibase-schema/invalid-schema')); }, } ); }); };