feat: add DOI copy-to-clipboard functionality
Introduced a new JavaScript file to handle the DOI copy-to-clipboard feature. Updated the 'single-article.php' template to include a clickable DOI link that copies the DOI to the clipboard and displays a confirmation message. Enhances user convenience by simplifying the process of copying DOIs.
This commit is contained in:
parent
ac0a7eb942
commit
3bd51e66ed
2 changed files with 38 additions and 10 deletions
22
assets/js/clipboard.js
Normal file
22
assets/js/clipboard.js
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
const doiLink = document.getElementById("doi-link");
|
||||||
|
const doiCopyMessage = document.getElementById("doi-copy-message");
|
||||||
|
|
||||||
|
doiLink.addEventListener("click", function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
const doi = doiLink.getAttribute("data-doi");
|
||||||
|
const fullDoiUrl = `${window.location.origin}/${doi}`;
|
||||||
|
|
||||||
|
navigator.clipboard.writeText(fullDoiUrl).then(
|
||||||
|
function () {
|
||||||
|
doiCopyMessage.style.display = "inline";
|
||||||
|
setTimeout(function () {
|
||||||
|
doiCopyMessage.style.display = "none";
|
||||||
|
}, 2000);
|
||||||
|
},
|
||||||
|
function () {
|
||||||
|
alert("Failed to copy DOI to clipboard.");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
|
@ -16,19 +16,23 @@
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<p class="text-muted">
|
<p class="text-muted">
|
||||||
<strong>DOI:</strong> <?php echo esc_html(get_post_meta(get_the_ID(), 'article_doi', true)); ?>
|
<strong>DOI:</strong>
|
||||||
|
<a href="#" id="doi-link" data-doi="<?php echo esc_attr(get_post_meta(get_the_ID(), 'article_doi', true)); ?>">
|
||||||
|
<?php echo esc_html(get_post_meta(get_the_ID(), 'article_doi', true)); ?>
|
||||||
|
</a>
|
||||||
|
<span id="doi-copy-message" style="display: none; color: green; margin-left: 10px;"><?php _e('Copied!', 'duck-behavior-journal'); ?></span>
|
||||||
</p>
|
</p>
|
||||||
<p class="text-muted">
|
<p class="text-muted">
|
||||||
<strong>Status:</strong> <?php
|
<strong>Status:</strong> <?php
|
||||||
$terms = get_the_terms(get_the_ID(), 'publication_status');
|
$terms = get_the_terms(get_the_ID(), 'publication_status');
|
||||||
if (!empty($terms) && !is_wp_error($terms)) {
|
if (!empty($terms) && !is_wp_error($terms)) {
|
||||||
$term_list = array();
|
$term_list = array();
|
||||||
foreach ($terms as $term) {
|
foreach ($terms as $term) {
|
||||||
$term_list[] = $term->name;
|
$term_list[] = $term->name;
|
||||||
}
|
}
|
||||||
echo implode(', ', $term_list);
|
echo implode(', ', $term_list);
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</p>
|
</p>
|
||||||
<?php if (false && has_post_thumbnail()) : ?>
|
<?php if (false && has_post_thumbnail()) : ?>
|
||||||
<img src="<?php the_post_thumbnail_url(); ?>" class="img-fluid mb-4" alt="<?php the_title(); ?>">
|
<img src="<?php the_post_thumbnail_url(); ?>" class="img-fluid mb-4" alt="<?php the_title(); ?>">
|
||||||
|
@ -40,4 +44,6 @@
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<script src="<?php echo get_template_directory_uri(); ?>/assets/js/clipboard.js"></script>
|
||||||
|
|
||||||
<?php get_footer(); ?>
|
<?php get_footer(); ?>
|
Loading…
Reference in a new issue