From cff88e6267b1d636fd00ba076598af6c658a9b2b Mon Sep 17 00:00:00 2001 From: Agha Saad Fraz Date: Mon, 23 Mar 2020 15:14:02 +0500 Subject: [PATCH] Added google sheet feature and moved features to the export drop-down (#2458) * fixed minor typos * Added google sheet feature and moved features to the export drop-down menu * minor change * removed redundant text and moved code and translations into their respective extensions --- .../gdata/module/langs/translation-en.json | 5 +- .../gdata/module/scripts/project/exporters.js | 84 ++++++++++++- .../wikidata/module/langs/translation-en.json | 5 +- .../module/scripts/menu-bar-extension.js | 2 +- .../modules/core/langs/translation-en.json | 3 +- .../modules/core/scripts/project/exporters.js | 111 ++++-------------- 6 files changed, 116 insertions(+), 94 deletions(-) diff --git a/extensions/gdata/module/langs/translation-en.json b/extensions/gdata/module/langs/translation-en.json index 49c992f8c..ec0f8b23e 100644 --- a/extensions/gdata/module/langs/translation-en.json +++ b/extensions/gdata/module/langs/translation-en.json @@ -35,11 +35,14 @@ "gdata-source/title": "Title", "gdata-source/authors": "Authors", "gdata-source/updated": "Updated", + "gdata-exporter/export-to-google-drive": "OpenRefine project archive to Google Drive...", + "gdata-exporter/google-sheets": "Google Sheets...", "gdata-exporter/uploading": "Uploading…", "gdata-exporter/upload-error": "Upload error: ", - "gdata-exporter/upload-success": "Project was uploaded successfully to Google Drive ", + "gdata-exporter/upload-google-drive-success": "Project was uploaded successfully to Google Drive ", "gdata-exporter/new-spreadsheet": "A new Google spreadsheet", "gdata-exporter/enter-spreadsheet": "Enter a name for the new Google spreadsheet", + "gdata-exporter/upload-google-sheets-success": "Project was uploaded successfully to Google Drive ", "gdata-exporter/enter-filename": "Enter a file name for the project export in Google Drive", "gdata-auth/authorize-label": "OpenRefine - Authorization", "gdata-auth/authorized-label": "Authorization process completed. Close this window and return to OpenRefine." diff --git a/extensions/gdata/module/scripts/project/exporters.js b/extensions/gdata/module/scripts/project/exporters.js index f2860b764..722052df3 100644 --- a/extensions/gdata/module/scripts/project/exporters.js +++ b/extensions/gdata/module/scripts/project/exporters.js @@ -48,6 +48,20 @@ $.ajax({ $.i18n().load(dictionary, lang); // End internationalization +ExporterManager.MenuItems.push({}); +ExporterManager.MenuItems.push( + { + "id": "export-to-google-drive", + "label": $.i18n('gdata-exporter/export-to-google-drive'), + "click": function () { ExporterManager.handlers.exportProjectToGoogleDrive(); } + }); +ExporterManager.MenuItems.push( + { + "id": "export-to-google-sheets", + "label": $.i18n('gdata-exporter/google-sheets'), + "click": function () { ExporterManager.handlers.exportProjectToGoogleSheets(); } + }); + (function() { var handleUpload = function(options, exportAllRows, onDone, prompt) { var doUpload = function() { @@ -84,7 +98,7 @@ $.i18n().load(dictionary, lang); GdataExtension.showAuthorizationDialog(doUpload); } }; - + CustomTabularExporterDialog.uploadTargets.push({ id: 'gdata/google-spreadsheet', label: $.i18n('gdata-exporter/new-spreadsheet'), @@ -93,3 +107,71 @@ $.i18n().load(dictionary, lang); } }); })(); + +ExporterManager.handlers.exportProjectToGoogleDrive = function () { + var doExportToGoogleDrive = function () { + var name = window.prompt($.i18n('gdata-exporter/enter-filename'), theProject.metadata.name); + if (name) { + var dismiss = DialogSystem.showBusy($.i18n('gdata-exporter/uploading')); + Refine.postCSRF( + "command/gdata/upload", + { + "project": theProject.id, + "name": name, + "format": "raw/openrefine-project" + }, + function (o) { + dismiss(); + + if (o.url) { + alert($.i18n('gdata-exporter/upload-google-drive-success')); + } else { + alert($.i18n('gdata-exporter/upload-error') + o.message) + } + onDone(); + }, + "json" + ); + } + }; + + if (GdataExtension.isAuthorized()) { + doExportToGoogleDrive(); + } else { + GdataExtension.showAuthorizationDialog(doExportToGoogleDrive); + } +} + +ExporterManager.handlers.exportProjectToGoogleSheets = function () { + var doExportToGoogleSheets = function () { + var name = window.prompt($.i18n('gdata-exporter/enter-spreadsheet'), theProject.metadata.name); + if (name) { + var dismiss = DialogSystem.showBusy($.i18n('gdata-exporter/uploading')); + Refine.postCSRF( + "command/gdata/upload", + { + "project": theProject.id, + "name": name, + "format": "gdata/google-spreadsheet" + }, + function (o) { + dismiss(); + + if (o.url) { + alert($.i18n('gdata-exporter/upload-google-sheets-success')); + } else { + alert($.i18n('gdata-exporter/upload-error') + o.message) + } + onDone(); + }, + "json" + ); + } + }; + + if (GdataExtension.isAuthorized()) { + doExportToGoogleSheets(); + } else { + GdataExtension.showAuthorizationDialog(doExportToGoogleSheets); + } +} \ No newline at end of file diff --git a/extensions/wikidata/module/langs/translation-en.json b/extensions/wikidata/module/langs/translation-en.json index c63393aec..54a2e13c0 100644 --- a/extensions/wikidata/module/langs/translation-en.json +++ b/extensions/wikidata/module/langs/translation-en.json @@ -3,10 +3,11 @@ "wikidata-extension/edit-wikidata-schema": "Edit Wikidata schema", "wikidata-extension/import-wikidata-schema": "Import schema", "wikidata-extension/manage-wikidata-account": "Manage Wikidata account", - "wikidata-extension/perform-edits-on-wikidata": "Upload edits to Wikidata", - "wikidata-extension/export-to-qs": "Export to QuickStatements", + "wikidata-extension/perform-edits-on-wikidata": "Wikidata edits...", + "wikidata-extension/export-to-qs": "QuickStatements file...", "wikidata-extension/export-schema": "Export schema", "wikidata-extension/export-wikidata-schema": "Export Wikidata schema", + "wikidata-extension/wikidata-schema": "Wikidata schema", "wikidata-extension/quickstatements-export-name": "QuickStatements", "wikidata-schema/dialog-header": "Align to Wikidata", "wikidata-schema/dialog-explanation": "The Wikidata schema below specifies how your tabular data will be transformed into Wikidata edits. You can drag and drop the column names below in most input boxes: for each row, edits will be generated with the values in these columns.", diff --git a/extensions/wikidata/module/scripts/menu-bar-extension.js b/extensions/wikidata/module/scripts/menu-bar-extension.js index 25cc7ca7d..c567789cd 100644 --- a/extensions/wikidata/module/scripts/menu-bar-extension.js +++ b/extensions/wikidata/module/scripts/menu-bar-extension.js @@ -33,7 +33,7 @@ ExporterManager.MenuItems.push( ExporterManager.MenuItems.push( { id:"exportWikibaseSchema", - label: $.i18n('wikidata-extension/export-wikidata-schema'), + label: $.i18n('wikidata-extension/wikidata-schema'), click: function() { WikibaseExporterMenuBar.checkSchemaAndExport("wikibase-schema"); } } ); diff --git a/main/webapp/modules/core/langs/translation-en.json b/main/webapp/modules/core/langs/translation-en.json index d57d1515e..9e2f358ce 100644 --- a/main/webapp/modules/core/langs/translation-en.json +++ b/main/webapp/modules/core/langs/translation-en.json @@ -284,8 +284,7 @@ "core-dialogs/for-include-if-exist-drop-stmt-checkbox": "Include 'IF EXISTS' in DROP statement", "core-dialogs/for-null-cell-value-to-empty-str-label": "Convert null value to NULL in INSERT", "core-dialogs/choose-export-destination": "Please choose the destination for project export", - "core-dialogs/export-to-local": "Export to local", - "core-dialogs/export-to-google-drive": "Export to Google Drive", + "core-dialogs/export-to-local": "OpenRefine project archive to file", "core-facets/remove-facet": "Remove this facet", "core-facets/reset": "reset", "core-facets/invert": "invert", diff --git a/main/webapp/modules/core/scripts/project/exporters.js b/main/webapp/modules/core/scripts/project/exporters.js index 75a54f1f2..07d624c54 100644 --- a/main/webapp/modules/core/scripts/project/exporters.js +++ b/main/webapp/modules/core/scripts/project/exporters.js @@ -38,9 +38,9 @@ ExporterManager.handlers = {}; ExporterManager.MenuItems = [ { - "id" : "core/export-project", - "label": $.i18n('core-project/export-project'), - "click": function() { ExporterManager.handlers.exportProject(); } + "id": "core/export-local", + "label": $.i18n('core-dialogs/export-to-local'), + "click": function () { ExporterManager.handlers.exportProjectToLocal(); } }, {}, { @@ -80,9 +80,9 @@ ExporterManager.MenuItems = [ "click": function() { new CustomTabularExporterDialog(); } }, { - "id" : "core/export-sql", - "label": $.i18n('core-project/sql-export'), - "click": function() { new SqlExporterDialog(); } + "id" : "core/export-sql", + "label": $.i18n('core-project/sql-export'), + "click": function() { new SqlExporterDialog(); } }, { "id" : "core/export-templating", @@ -115,7 +115,7 @@ ExporterManager.handlers.exportRows = function(format, ext) { .attr("name", "contentType") .attr("value", "application/x-unknown") // force download .appendTo(form); - + document.body.appendChild(form); window.open(" ", "refine-export"); @@ -150,90 +150,27 @@ ExporterManager.prepareExportRowsForm = function(format, includeEngine, ext) { .attr("value", JSON.stringify(ui.browsingEngine.getJSON())) .appendTo(form); } - + return form; }; -ExporterManager.handlers.exportProject = function() { +ExporterManager.handlers.exportProjectToLocal = function() { var name = ExporterManager.stripNonFileChars(theProject.metadata.name); - // dialog - var dialog = $(DOM.loadHTML("core", "scripts/dialogs/export-project-dialog.html")); - var _elmts = DOM.bind(dialog); - - _elmts.dialogHeader.html($.i18n('core-dialogs/choose-export-destination')); - _elmts.toLocalRadio.html($.i18n('core-dialogs/export-to-local')); - _elmts.toGoogleDriveRadio.html($.i18n('core-dialogs/export-to-google-drive')); - _elmts.exportButton.html($.i18n('core-buttons/export')); - _elmts.cancelButton.html($.i18n('core-buttons/cancel')); - - _elmts.exportButton.click(function() { - if ($("input[name='export-destination']")[0].checked) { - exportToLocal(name); - } else { - exportToGoogleDrive(name); - } - - DialogSystem.dismissAll(); - }); - - _elmts.cancelButton.click(function() { DialogSystem.dismissAll(); }); - - DialogSystem.showDialog(dialog); - - // save to google drive - var doExportToGoogleDrive = function() { - var name = window.prompt($.i18n('gdata-exporter/enter-filename'), theProject.metadata.name); - if (name) { - var dismiss = DialogSystem.showBusy($.i18n('gdata-exporter/uploading')); - Refine.postCSRF( - "command/gdata/upload", - { - "project" : theProject.id, - "name" : name, - "format" : "raw/openrefine-project" - }, - function(o) { - dismiss(); + var form = document.createElement("form"); + $(form) + .css("display", "none") + .attr("method", "post") + .attr("action", "command/core/export-project/" + name + ".openrefine.tar.gz") + .attr("target", "refine-export"); + $('') + .attr("name", "project") + .attr("value", theProject.id) + .appendTo(form); - if (o.url) { - alert($.i18n('gdata-exporter/upload-success')); - } else { - alert($.i18n('gdata-exporter/upload-error') + o.message) - } - onDone(); - }, - "json" - ); - } - }; + document.body.appendChild(form); - function exportToGoogleDrive(name) { - if (GdataExtension.isAuthorized()) { - doExportToGoogleDrive(); - } else { - GdataExtension.showAuthorizationDialog(doExportToGoogleDrive); - } - } - - // save to local - function exportToLocal(name) { - var form = document.createElement("form"); - $(form) - .css("display", "none") - .attr("method", "post") - .attr("action", "command/core/export-project/" + name + ".openrefine.tar.gz") - .attr("target", "refine-export"); - $('') - .attr("name", "project") - .attr("value", theProject.id) - .appendTo(form); - - document.body.appendChild(form); - - window.open(" ", "refine-export"); - form.submit(); - - document.body.removeChild(form); - } + window.open(" ", "refine-export"); + form.submit(); + + document.body.removeChild(form); }; -