diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsFragment.java index 9bb3d8486e73..743b51a217ca 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsFragment.java @@ -16,6 +16,7 @@ import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.support.annotation.NonNull; +import android.support.design.widget.Snackbar; import android.text.TextUtils; import android.util.Pair; import android.util.SparseBooleanArray; @@ -385,6 +386,7 @@ public boolean onPreferenceClick(Preference preference) { } else if (preference == mCategoryPref || preference == mFormatPref) { return !shouldShowListPreference((DetailListPreference) preference); } else if (preference == mExportSitePref) { + showExportContentDialog(); } else if (preference == mDeleteSitePref) { requestPurchasesForDeletionCheck(); } else { @@ -702,6 +704,22 @@ public String format(int value) { }); } + private void showExportContentDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setTitle(R.string.export_your_content); + String email = AccountHelper.getDefaultAccount().getEmail(); + builder.setMessage(getString(R.string.export_your_content_message, email)); + builder.setPositiveButton(R.string.site_settings_export_content_title, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + exportSite(); + } + }); + builder.setNegativeButton(R.string.cancel, null); + + builder.show(); + } + private void requestPurchasesForDeletionCheck() { final Blog currentBlog = WordPress.getCurrentBlog(); final ProgressDialog progressDialog = ProgressDialog.show(getActivity(), "", getString(R.string.checking_purchases), true, false); @@ -1187,6 +1205,29 @@ public void onClick(DialogInterface dialog, int which) { builder.show(); } + private void exportSite() { + final Blog currentBlog = WordPress.getCurrentBlog(); + if (currentBlog.isDotcomFlag()) { + final ProgressDialog progressDialog = ProgressDialog.show(getActivity(), "", getActivity().getString(R.string.exporting_content_progress), true, true); + WordPress.getRestClientUtils().exportContentAll(currentBlog.getDotComBlogId(), new RestRequest.Listener() { + @Override + public void onResponse(JSONObject response) { + if (isAdded()) { + progressDialog.dismiss(); + Snackbar.make(getView(), R.string.export_email_sent, Snackbar.LENGTH_LONG).show(); + } + } + }, new RestRequest.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { + if (isAdded()) { + progressDialog.dismiss(); + } + } + }); + } + } + private void deleteSite() { final Blog currentBlog = WordPress.getCurrentBlog(); if (currentBlog.isDotcomFlag()) { diff --git a/WordPress/src/main/res/values/strings.xml b/WordPress/src/main/res/values/strings.xml index 4d6d05a3fc4e..f2b7620c3bbf 100644 --- a/WordPress/src/main/res/values/strings.xml +++ b/WordPress/src/main/res/values/strings.xml @@ -1355,7 +1355,6 @@ Confirm Delete Site Please type in %1$s in the field below to confirm. Your site will then be gone forever. Export content - Currently exporting is only available through the web interface. Please go to WordPress.com on your browser to export content. Error deleting site There was an error in deleting your site. Please contact support for more assistance Primary Domain @@ -1381,6 +1380,10 @@ Click the verification link in the email sent to %1$s to confirm your new address Primary site Web Address + Exporting content… + Export email sent! + Export your content + Your posts, pages, and settings will be emailed to you at %s. Plan diff --git a/libs/networking/WordPressNetworking/src/main/java/org/wordpress/android/networking/RestClientUtils.java b/libs/networking/WordPressNetworking/src/main/java/org/wordpress/android/networking/RestClientUtils.java index 485e67ba87f9..4159940c6147 100644 --- a/libs/networking/WordPressNetworking/src/main/java/org/wordpress/android/networking/RestClientUtils.java +++ b/libs/networking/WordPressNetworking/src/main/java/org/wordpress/android/networking/RestClientUtils.java @@ -272,6 +272,11 @@ public void getSitePurchases(String siteId, Listener listener, ErrorListener err get(path, listener, errorListener); } + public void exportContentAll(String siteId, Listener listener, ErrorListener errorListener) { + String path = String.format("sites/%s/exports/start", siteId); + post(path, listener, errorListener); + } + /** * Make GET request */