diff --git a/extensions/wikidata/module/MOD-INF/controller.js b/extensions/wikidata/module/MOD-INF/controller.js index e2e36dda1..9b626aadb 100644 --- a/extensions/wikidata/module/MOD-INF/controller.js +++ b/extensions/wikidata/module/MOD-INF/controller.js @@ -36,8 +36,10 @@ function init() { */ var ExporterRegistry = Packages.com.google.refine.exporters.ExporterRegistry; var QSExporter = Packages.org.openrefine.wikidata.exporters.QuickStatementsExporter; + var SchemaExporter = Packages.org.openrefine.wikidata.exporters.SchemaExporter; ExporterRegistry.registerExporter("quickstatements", new QSExporter()); + ExporterRegistry.registerExporter("wikibase-schema", new SchemaExporter()); /* * Commands diff --git a/extensions/wikidata/module/langs/translation-en.json b/extensions/wikidata/module/langs/translation-en.json index 40a298048..2d4632b63 100644 --- a/extensions/wikidata/module/langs/translation-en.json +++ b/extensions/wikidata/module/langs/translation-en.json @@ -5,6 +5,7 @@ "manage-wikidata-account": "Manage Wikidata account", "perform-edits-on-wikidata": "Upload edits to Wikidata", "export-to-qs": "Export to QuickStatements", + "export-schema": "Export schema", "quickstatements-export-name": "QuickStatements" }, "wikidata-schema": { diff --git a/extensions/wikidata/module/scripts/menu-bar-extension.js b/extensions/wikidata/module/scripts/menu-bar-extension.js index 0547ab5f0..c25ce62c3 100644 --- a/extensions/wikidata/module/scripts/menu-bar-extension.js +++ b/extensions/wikidata/module/scripts/menu-bar-extension.js @@ -19,19 +19,37 @@ $.i18n.setDictionary(dictionary); ExporterManager.MenuItems.push({}); ExporterManager.MenuItems.push( { - "id" : "exportQuickStatements", - "label": $.i18n._('wikidata-extension')["quickstatements-export-name"], - "click": function() { WikibaseSchemaExporterMenuBar.checkSchemaAndExport(); } + id:"performWikibaseEdits", + label: $.i18n._('wikidata-extension')["perform-edits-on-wikidata"], + click: function() { PerformEditsDialog.checkAndLaunch(); } + }); +ExporterManager.MenuItems.push( + { + id:"exportQuickStatements", + label: $.i18n._('wikidata-extension')["export-to-qs"], + click: function() { WikibaseExporterMenuBar.checkSchemaAndExport("quickstatements"); } + }); +ExporterManager.MenuItems.push( + { + id:"exportWikibaseSchema", + label: $.i18n._('wikidata-extension')["export-schema"], + click: function() { WikibaseExporterMenuBar.checkSchemaAndExport("wikibase-schema"); } } ); WikibaseExporterMenuBar = {}; WikibaseExporterMenuBar.exportTo = function(format) { + var targetUrl = null; + if (format ==="quickstatements") { + targetUrl = "statements.txt"; + } else { + targetUrl = "schema.json"; + } var form = document.createElement("form"); $(form).css("display", "none") .attr("method", "post") - .attr("action", "command/core/export-rows/statements.txt") + .attr("action", "command/core/export-rows/"+targetUrl) .attr("target", "gridworks-export"); $('') .attr("name", "engine") @@ -54,9 +72,9 @@ WikibaseExporterMenuBar.exportTo = function(format) { document.body.removeChild(form); }; -WikibaseExporterMenuBar.checkSchemaAndExport = function() { +WikibaseExporterMenuBar.checkSchemaAndExport = function(format) { var onSaved = function(callback) { - WikibaseExporterMenuBar.exportTo("quickstatements"); + WikibaseExporterMenuBar.exportTo(format); }; if (!SchemaAlignmentDialog.isSetUp()) { SchemaAlignmentDialog.launch(null); @@ -85,6 +103,7 @@ $(function(){ label: $.i18n._('wikidata-extension')["manage-wikidata-account"], click: function() { ManageAccountDialog.checkAndLaunch(); } }, + {}, { id:"wikidata/perform-edits", label: $.i18n._('wikidata-extension')["perform-edits-on-wikidata"], @@ -93,7 +112,12 @@ $(function(){ { id:"wikidata/export-qs", label: $.i18n._('wikidata-extension')["export-to-qs"], - click: function() { WikibaseExporterMenuBar.checkSchemaAndExport(); } + click: function() { WikibaseExporterMenuBar.checkSchemaAndExport("quickstatements"); } + }, + { + id:"wikidata/export-schema", + label: $.i18n._('wikidata-extension')["export-schema"], + click: function() { WikibaseExporterMenuBar.checkSchemaAndExport("wikibase-schema"); } }, ] diff --git a/extensions/wikidata/src/org/openrefine/wikidata/commands/PreviewWikibaseSchemaCommand.java b/extensions/wikidata/src/org/openrefine/wikidata/commands/PreviewWikibaseSchemaCommand.java index 28ed72400..eb3749133 100644 --- a/extensions/wikidata/src/org/openrefine/wikidata/commands/PreviewWikibaseSchemaCommand.java +++ b/extensions/wikidata/src/org/openrefine/wikidata/commands/PreviewWikibaseSchemaCommand.java @@ -24,6 +24,8 @@ package org.openrefine.wikidata.commands; +import static org.openrefine.wikidata.commands.CommandUtilities.respondError; + import java.io.IOException; import java.io.StringWriter; import java.util.List; @@ -36,7 +38,6 @@ import javax.servlet.http.HttpServletResponse; import org.json.JSONArray; import org.json.JSONException; -import org.json.JSONObject; import org.json.JSONWriter; import org.openrefine.wikidata.qa.EditInspector; import org.openrefine.wikidata.qa.QAWarning; @@ -45,10 +46,7 @@ import org.openrefine.wikidata.schema.WikibaseSchema; import org.openrefine.wikidata.updates.ItemUpdate; import org.openrefine.wikidata.updates.scheduler.WikibaseAPIUpdateScheduler; -import static org.openrefine.wikidata.commands.CommandUtilities.respondError; - import com.fasterxml.jackson.databind.ObjectMapper; - import com.google.refine.browsing.Engine; import com.google.refine.commands.Command; import com.google.refine.model.Project;