first commit
This commit is contained in:
@@ -0,0 +1,316 @@
|
||||
<?php
|
||||
defined("ABSPATH") or die("");
|
||||
|
||||
use Duplicator\Addons\ProBase\License\License;
|
||||
use Duplicator\Core\Controllers\ControllersManager;
|
||||
use Duplicator\Utils\Settings\MigrateSettings;
|
||||
|
||||
/* FOR PERSONAL LICENSE JUST SHOW MESSAGE */
|
||||
if (!License::can(License::CAPABILITY_IMPORT_SETTINGS)) : ?>
|
||||
<div class="width-large" >
|
||||
<p>
|
||||
<?php _e(
|
||||
"The migrate settings screen allows you to import or export Duplicator Pro settings from one site to another.",
|
||||
'duplicator-pro'
|
||||
); ?>
|
||||
</p>
|
||||
<p>
|
||||
<?php _e(
|
||||
"For example, if you have several storage locations that you use on multiple WordPress sites such as Google Drive or
|
||||
Dropbox and you simply want to copy the profiles from this instance of Duplicator Pro to another instance then simply
|
||||
export the data here and import it on the other instance of Duplicator Pro.",
|
||||
'duplicator-pro'
|
||||
); ?>
|
||||
</p>
|
||||
<p>
|
||||
<?php
|
||||
printf(
|
||||
__(
|
||||
'This option isn\'t available at the <b>%1$s</b> license level.',
|
||||
'duplicator-pro'
|
||||
),
|
||||
License::getLicenseToString()
|
||||
);
|
||||
?>
|
||||
<b>
|
||||
<?php
|
||||
printf(
|
||||
_x(
|
||||
'To enable this option %1$supgrade%2$s the License.',
|
||||
'%1$s and %2$s represents the opening and closing HTML tags for an anchor or link',
|
||||
'duplicator-pro'
|
||||
),
|
||||
'<a href="' . esc_url(License::getUpsellURL()) . '" target="_blank">',
|
||||
'</a>'
|
||||
);
|
||||
?>
|
||||
</b>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<?php else :
|
||||
/* LET'S PERFORM FREELANCE+ SETTINGS */
|
||||
|
||||
$nonce = wp_create_nonce('duplicator_pro_import_export_settings');
|
||||
|
||||
$view_state = DUP_PRO_UI_ViewState::getArray();
|
||||
$ui_css_export_panel = (isset($view_state['dpro-tools-export-panel']) && $view_state['dpro-tools-export-panel']) ? 'display:block' : 'display:block';
|
||||
$ui_css_import_panel = (isset($view_state['dpro-tools-import-panel']) && $view_state['dpro-tools-import-panel']) ? 'display:block' : 'display:block';
|
||||
|
||||
// POST BACK
|
||||
$_REQUEST['action'] = !empty($_REQUEST['action']) ? $_REQUEST['action'] : 'display';
|
||||
|
||||
$error_message = null;
|
||||
$success_message = null;
|
||||
|
||||
switch ($_REQUEST['action']) {
|
||||
case 'dpro-export':
|
||||
case 'dpro-import':
|
||||
try {
|
||||
if (MigrateSettings::import($_FILES['import-file']['tmp_name'], $_POST['import-opts']) == false) {
|
||||
throw new Exception('Import failed.');
|
||||
}
|
||||
$success_message = 'Successfully imported.';
|
||||
} catch (Exception $ex) {
|
||||
$error_message = 'Import Error: ' . $ex->getMessage() . "<br>\n" . $ex->getFile() . ':' . $ex->getLine();
|
||||
}
|
||||
break;
|
||||
}
|
||||
?>
|
||||
|
||||
<style>
|
||||
<?php echo isset($css_hide_msg) ? $css_hide_msg : ''; ?>
|
||||
div.dup-box {margin-top:20px}
|
||||
div#message {margin:0px 0px 10px 0px}
|
||||
div.success {color:#4A8254}
|
||||
div.failed {color:#BB1506}
|
||||
table.dpro-check-tbl td {padding:5px 30px 10px 10px}
|
||||
div#message {margin-top:10px !important}
|
||||
div#TB_ajaxContent p {font-size:14px !important}
|
||||
</style>
|
||||
|
||||
<?php
|
||||
if ($error_message !== null) {
|
||||
echo "<div id='message' class='below-h2 error'><p>{$error_message}</p></div>";
|
||||
} elseif ($success_message !== null) {
|
||||
echo "<div id='message' class='below-h2 updated'><p>{$success_message}</p></div>";
|
||||
}
|
||||
?>
|
||||
<br/>
|
||||
|
||||
<?php
|
||||
esc_html_e(
|
||||
"The migrate settings screen allows you to import or export Duplicator Pro settings from one site to another.
|
||||
For example if you have several storage locations
|
||||
that you use on multiple WordPress sites such as Google Drive or Dropbox and you simply want to copy
|
||||
the profiles from this instance of Duplicator Pro to another instance
|
||||
then simply export the data here and import it on the other instance of Duplicator Pro.",
|
||||
'duplicator-pro'
|
||||
); ?>
|
||||
<br>
|
||||
|
||||
<!-- ==============================
|
||||
EXPORT -->
|
||||
<!-- action is unnecessary, uses ajax -->
|
||||
<form id="dup-tools-form-export" method="post">
|
||||
<?php wp_nonce_field('dpro_tools_data_export'); ?>
|
||||
<input type="hidden" name="action" value="dpro-export">
|
||||
<div class="dup-box">
|
||||
<div class="dup-box-title">
|
||||
<i class="fa fa-upload"></i>
|
||||
<?php esc_html_e("Export Settings", 'duplicator-pro') ?>
|
||||
<button class="dup-box-arrow">
|
||||
<span class="screen-reader-text"><?php esc_html_e('Toggle panel:', 'duplicator-pro') ?> <?php esc_html_e('Export Settings', 'duplicator-pro') ?></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="dup-box-panel" id="dpro-tools-export-panel" style="<?php echo esc_attr($ui_css_export_panel); ?>">
|
||||
<?php
|
||||
esc_html_e(
|
||||
"Exports all schedules, storage locations, templates and settings from this Duplicator Pro instance into a downloadable export file.",
|
||||
'duplicator-pro'
|
||||
);
|
||||
?>
|
||||
<br/>
|
||||
<?php
|
||||
esc_html_e(
|
||||
"The export file can then be used to import data settings from this instance of Duplicator Pro into another plugin instance of Duplicator Pro.",
|
||||
'duplicator-pro'
|
||||
);
|
||||
?>
|
||||
<br/><br/><br/>
|
||||
|
||||
<input type="button" class="button button-primary" value="<?php esc_attr_e("Export Data", 'duplicator-pro'); ?>" onclick="return DupPro.Tools.ExportDialog();" />
|
||||
<br/><br/>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- ==============================
|
||||
IMPORT -->
|
||||
<form enctype="multipart/form-data" id="dup-tools-form-import" action="<?php echo ControllersManager::getCurrentLink(); ?>" method="post" data-parsley-validate data-parsley-ui-enabled="true" >
|
||||
<?php wp_nonce_field('dpro_tools_data_import'); ?>
|
||||
<input type="hidden" name="action" value="dpro-import">
|
||||
<div class="dup-box">
|
||||
<div class="dup-box-title">
|
||||
<i class="fa fa-download"></i>
|
||||
<?php esc_html_e("Import Settings", 'duplicator-pro'); ?>
|
||||
<button class="dup-box-arrow">
|
||||
<span class="screen-reader-text"><?php esc_html_e('Toggle panel:', 'duplicator-pro') ?> <?php esc_html_e('Import Settings', 'duplicator-pro') ?></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="dup-box-panel" id="dpro-tools-import-panel" style="<?php echo esc_attr($ui_css_import_panel); ?>" >
|
||||
<?php _e('Import settings from another Duplicator Pro plugin into this instance of Duplicator Pro.', 'duplicator-pro'); ?>
|
||||
<br>
|
||||
<?php _e('Schedule, storage and template data will be appended to current data, while existing settings will be replaced.', 'duplicator-pro'); ?>
|
||||
<br>
|
||||
<b>
|
||||
<?php _e('For security reasons, capabilities, license data and license visibility will not be imported.', 'duplicator-pro'); ?>
|
||||
</b>
|
||||
<br>
|
||||
<i>
|
||||
<?php
|
||||
_e(
|
||||
"Schedules depend on storage and templates so importing schedules will require that storage and templates be checked.",
|
||||
'duplicator-pro'
|
||||
); ?>
|
||||
</i>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<label for="import-file"><b><?php esc_html_e("Choose Duplicator Data File", 'duplicator-pro'); ?></b> </label><br/>
|
||||
<input type="file" accept=".dup" name="import-file" id="import-file" required="true" />
|
||||
<br/><br/>
|
||||
|
||||
<b><?php esc_html_e("Include in Import", 'duplicator-pro'); ?>:</b>
|
||||
<table class="dpro-check-tbl">
|
||||
<tr>
|
||||
<td>
|
||||
<input onclick="DupPro.Tools.ChangeImportButtonState();DupPro.Tools.SchedulesClicked();" type="checkbox" name="import-opts[]" id="import-schedules" value="schedules" />
|
||||
<label for="import-schedules"><?php esc_html_e("Schedules", 'duplicator-pro'); ?></label>
|
||||
</td>
|
||||
<td>
|
||||
<input onclick="DupPro.Tools.ChangeImportButtonState();" type="checkbox" name="import-opts[]" id="import-storages" value="storages" />
|
||||
<label for="import-storages"><?php esc_html_e("Storage", 'duplicator-pro'); ?></label>
|
||||
</td>
|
||||
<td>
|
||||
<input onclick="DupPro.Tools.ChangeImportButtonState();" type="checkbox" name="import-opts[]" id="import-templates" value="templates" />
|
||||
<label for="import-templates"><?php esc_html_e("Templates", 'duplicator-pro'); ?></label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<input onclick="DupPro.Tools.ChangeImportButtonState();" type="checkbox" name="import-opts[]" id="import-settings" value="settings" />
|
||||
<label for="import-settings"><?php esc_html_e("Settings", 'duplicator-pro'); ?></label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
|
||||
<input id="import-button" type="button" class="button button-primary" value="<?php esc_attr_e("Import Data", 'duplicator-pro'); ?>" onclick="return DupPro.Tools.ImportDialog();" disabled/>
|
||||
<br/><br/>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<br/><br/>
|
||||
|
||||
<?php add_thickbox(); ?>
|
||||
|
||||
<!-- EXPORT DIALOG -->
|
||||
<div id="modal-window-export" style="display:none;">
|
||||
<h2><?php esc_html_e("Export Duplicator Pro Data?", 'duplicator-pro') ?></h2>
|
||||
<p>
|
||||
<?php esc_html_e("This process will:", 'duplicator-pro') ?><br/><br/>
|
||||
<i class="far fa-check-circle"></i> <?php esc_html_e("Export schedules, storage and templates to a file for import into another Duplicator instance.", 'duplicator-pro'); ?> <br/>
|
||||
<span style="color:#BB1506"><i class="fas fa-exclamation-triangle fa-sm"></i></i> <?php esc_html_e("For security purposes, restrict access to this file and delete after use.", 'duplicator-pro'); ?></span> <br/>
|
||||
<br/>
|
||||
<?php esc_html_e("Click the 'Run Export' button to generate and download the export file.", 'duplicator-pro') ?><br/><br/>
|
||||
</p>
|
||||
<div style="position:absolute; right:10px; bottom: 10px">
|
||||
<input type="button" class="button" value="<?php esc_attr_e("Run Export", 'duplicator-pro') ?>" onclick="DupPro.Tools.ExportProcess();setTimeout(function() { tb_remove(); }, 4000);" />
|
||||
<input type="button" class="button" value="<?php esc_attr_e("Cancel", 'duplicator-pro') ?>" onclick="tb_remove();" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- IMPORT DIALOG -->
|
||||
<div id="modal-window-import" style="display:none;">
|
||||
<h2><?php esc_html_e("Import Duplicator Pro Data?", 'duplicator-pro') ?></h2>
|
||||
<p>
|
||||
<?php esc_html_e("This process will:", 'duplicator-pro') ?><br/><br/>
|
||||
<i class="far fa-check-circle"></i> <?php esc_html_e("Append schedules, storage and templates if those options are checked.", 'duplicator-pro'); ?> <br/>
|
||||
<i class="far fa-check-circle"></i> <?php esc_html_e("Overwrite current settings data if the settings option is checked.", 'duplicator-pro'); ?> <br/>
|
||||
<span style="color:#BB1506"><i class="fas fa-exclamation-triangle fa-sm"></i> <?php esc_html_e("Review templates and local storages after import to ensure correct path values.", 'duplicator-pro'); ?> <br/></span>
|
||||
<br/>
|
||||
<?php esc_html_e("Click the 'Run Import' button to process the import file.", 'duplicator-pro') ?><br/><br/>
|
||||
</p>
|
||||
<div style="position:absolute; right:10px; bottom: 10px">
|
||||
<input type="button" class="button" value="<?php esc_attr_e("Run Import", 'duplicator-pro') ?>" onclick="DupPro.Tools.ImportProcess();" />
|
||||
<input type="button" class="button" value="<?php esc_attr_e("Cancel", 'duplicator-pro') ?>" onclick="tb_remove();" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
DupPro.Tools.ExportProcess = function ()
|
||||
{
|
||||
var actionLocation = ajaxurl + '?action=duplicator_pro_export_settings' + '&nonce=' + '<?php echo $nonce; ?>';
|
||||
location.href = actionLocation;
|
||||
}
|
||||
|
||||
DupPro.Tools.ExportDialog = function ()
|
||||
{
|
||||
var url = "#TB_inline?width=610&height=250&inlineId=modal-window-export";
|
||||
tb_show("<?php esc_html_e("Export Data", 'duplicator-pro') ?>", url);
|
||||
return false;
|
||||
}
|
||||
|
||||
DupPro.Tools.ImportProcess = function ()
|
||||
{
|
||||
jQuery('#dup-tools-form-import').submit();
|
||||
}
|
||||
|
||||
DupPro.Tools.ImportDialog = function ()
|
||||
{
|
||||
var url = "#TB_inline?width=610&height=300&inlineId=modal-window-import";
|
||||
tb_show("<?php esc_html_e("Import Data", 'duplicator-pro') ?>", url);
|
||||
return false;
|
||||
}
|
||||
|
||||
//PAGE INIT
|
||||
jQuery(document).ready(function ($)
|
||||
{
|
||||
DupPro.Tools.ChangeImportButtonState = function()
|
||||
{
|
||||
var filename = $('#import-file').val();
|
||||
var disabled = (filename == '');
|
||||
|
||||
disabled = disabled ||
|
||||
(
|
||||
!document.getElementById('import-templates').checked &&
|
||||
!document.getElementById('import-storages').checked &&
|
||||
!document.getElementById('import-schedules').checked &&
|
||||
!document.getElementById('import-settings').checked
|
||||
);
|
||||
|
||||
$('#import-button').prop('disabled', disabled);
|
||||
}
|
||||
|
||||
DupPro.Tools.SchedulesClicked = function()
|
||||
{
|
||||
if(document.getElementById('import-schedules').checked)
|
||||
{
|
||||
document.getElementById('import-templates').checked = true;
|
||||
document.getElementById('import-storages').checked = true;
|
||||
document.getElementById('import-templates').disabled = true;
|
||||
document.getElementById('import-storages').disabled = true;
|
||||
}
|
||||
else {
|
||||
document.getElementById('import-templates').disabled = false;
|
||||
document.getElementById('import-storages').disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
$("#dpro-tools-import-panel").on("change", "#import-file", function() { DupPro.Tools.ChangeImportButtonState(); });
|
||||
});
|
||||
</script>
|
||||
<?php endif; ?>
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
|
||||
//silent
|
||||
Reference in New Issue
Block a user