diff --git a/administrator/components/com_templates/src/View/Template/HtmlView.php b/administrator/components/com_templates/src/View/Template/HtmlView.php
index 941cda3543095..984d9d8a4b27f 100644
--- a/administrator/components/com_templates/src/View/Template/HtmlView.php
+++ b/administrator/components/com_templates/src/View/Template/HtmlView.php
@@ -296,6 +296,9 @@ protected function addToolbar()
// Add a Rename file Button
ToolbarHelper::modal('renameModal', 'icon-sync', 'COM_TEMPLATES_BUTTON_RENAME_FILE');
+ // Add a Copy file Button
+ ToolbarHelper::modal('copyFileModal', 'icon-copy', 'COM_TEMPLATES_BUTTON_COPY_FILE');
+
// Add a Delete file Button
ToolbarHelper::modal('deleteModal', 'icon-trash', 'COM_TEMPLATES_BUTTON_DELETE_FILE', 'btn-danger');
}
diff --git a/administrator/components/com_templates/tmpl/template/default.php b/administrator/components/com_templates/tmpl/template/default.php
index 4474b252c0f10..2bf939b945f8a 100644
--- a/administrator/components/com_templates/tmpl/template/default.php
+++ b/administrator/components/com_templates/tmpl/template/default.php
@@ -422,6 +422,26 @@
+ type != 'home') : ?>
+ 'copyFileModal',
+ 'params' => [
+ 'title' => Text::_('COM_TEMPLATES_BUTTON_COPY_FILE'),
+ 'footer' => $this->loadTemplate('modal_copy_file_footer'),
+ 'height' => '400px',
+ 'width' => '800px',
+ 'bodyHeight' => 70,
+ 'modalWidth' => 80,
+ ],
+ 'body' => $this->loadTemplate('modal_copy_file_body')
+ ];
+ ?>
+
+
type != 'home') : ?>
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+defined('_JEXEC') or die;
+
+use Joomla\CMS\Factory;
+use Joomla\CMS\Language\Text;
+use Joomla\Filesystem\File;
+
+/** @var \Joomla\Component\Templates\Administrator\View\Template\HtmlView $this */
+
+$input = Factory::getApplication()->getInput();
+?>
+
+
+
+
+
+
+ mediaFiles)) : ?>
+
+
+
+
+
+
+
+
diff --git a/administrator/components/com_templates/tmpl/template/default_modal_copy_file_footer.php b/administrator/components/com_templates/tmpl/template/default_modal_copy_file_footer.php
new file mode 100644
index 0000000000000..d224b8b9c9110
--- /dev/null
+++ b/administrator/components/com_templates/tmpl/template/default_modal_copy_file_footer.php
@@ -0,0 +1,21 @@
+
+ * @license GNU General Public License version 2 or later; see LICENSE.txt
+ */
+
+defined('_JEXEC') or die;
+
+use Joomla\CMS\Language\Text;
+
+?>
+
+
diff --git a/media_source/com_templates/js/admin-templates-default.es6.js b/media_source/com_templates/js/admin-templates-default.es6.js
index 1ffe170b61580..a2bd62ead9531 100644
--- a/media_source/com_templates/js/admin-templates-default.es6.js
+++ b/media_source/com_templates/js/admin-templates-default.es6.js
@@ -10,6 +10,7 @@
const innerLists = document.querySelectorAll('.folder ul, .component-folder ul, .plugin-folder ul, .layout-folder ul');
const openLists = document.querySelectorAll('.show > ul');
const fileModalFolders = document.querySelectorAll('#fileModal .folder-url');
+ const copyFileModalFolders = document.querySelectorAll('#copyFileModal .folder-url');
const folderModalFolders = document.querySelectorAll('#folderModal .folder-url');
// Hide all the folders when the page loads
innerLists.forEach((innerList) => {
@@ -62,6 +63,28 @@
});
});
+ // Copy file modal tree selector
+ copyFileModalFolders.forEach((copyFileModalFolder) => {
+ copyFileModalFolder.addEventListener('click', (event) => {
+ event.preventDefault();
+
+ copyFileModalFolders.forEach((copyFileModalFldr) => {
+ copyFileModalFldr.classList.remove('selected');
+ });
+
+ event.currentTarget.classList.add('selected');
+ const ismedia = event.currentTarget.dataset.base === 'media' ? 1 : 0;
+
+ document.querySelectorAll('#copyFileModal input.address').forEach((element) => {
+ element.value = event.currentTarget.getAttribute('data-id');
+ });
+
+ document.querySelectorAll('#copyFileModal input[name="isMedia"]').forEach((el) => {
+ el.value = ismedia;
+ });
+ });
+ });
+
// Folder modal tree selector
folderModalFolders.forEach((folderModalFolder) => {
folderModalFolder.addEventListener('click', (event) => {