Feature #29214 » feature-29214-1.patch
| app/views/journals/new.js.erb | ||
|---|---|---|
| 11 | 11 |
$('#issue_private_notes').prop('checked', true);
|
| 12 | 12 |
<% end %> |
| 13 | 13 | |
| 14 |
addCopyButtonToPreTag(); |
|
| app/views/journals/update.js.erb | ||
|---|---|---|
| 7 | 7 |
$("#journal-<%= @journal.id %>-notes").replaceWith('<%= escape_javascript(render_notes(@journal.issue, @journal, :reply_links => authorize_for('issues', 'edit'))) %>');
|
| 8 | 8 |
$("#journal-<%= @journal.id %>-notes").show();
|
| 9 | 9 |
$("#journal-<%= @journal.id %>-form").remove();
|
| 10 |
addCopyButtonToPreTag(); |
|
| 10 | 11 |
<% end %> |
| 11 | 12 | |
| 12 | 13 |
<%= call_hook(:view_journals_update_js_bottom, { :journal => @journal }) %>
|
| public/javascripts/application.js | ||
|---|---|---|
| 1023 | 1023 |
}); |
| 1024 | 1024 |
}); |
| 1025 | 1025 | |
| 1026 |
function addCopyButtonToPreTag() {
|
|
| 1027 |
$('.wiki .copy-contents').remove();
|
|
| 1028 |
var copyContents = |
|
| 1029 |
$("<div class='copy-contents'>").append(
|
|
| 1030 |
$("<button class='code-copy-button' title='Copy' onclick='copyText($(this).parent().next(\"pre\"), $(this).parent());'>")
|
|
| 1031 |
.append("<span class='icon-only icon-copy'>")
|
|
| 1032 |
); |
|
| 1033 |
$('.wiki pre').before(copyContents);
|
|
| 1034 |
$('.code-copy-button[title]').tooltip({
|
|
| 1035 |
show: {
|
|
| 1036 |
delay: 400 |
|
| 1037 |
}, |
|
| 1038 |
position: {
|
|
| 1039 |
my: "center bottom-5", |
|
| 1040 |
at: "center top" |
|
| 1041 |
} |
|
| 1042 |
}); |
|
| 1043 |
} |
|
| 1044 | ||
| 1045 |
function copyText(target, copyEl) {
|
|
| 1046 |
// Selecting strings in 2 ways for cross-browser support |
|
| 1047 |
// 1. Use select(); |
|
| 1048 |
copyEl.append("<textarea class='tmp'>");
|
|
| 1049 |
var tmp = copyEl.find('.tmp');
|
|
| 1050 |
tmp.val(target.text()); |
|
| 1051 |
tmp.select(); |
|
| 1052 | ||
| 1053 |
// 2. Use createRange(); |
|
| 1054 |
var range = document.createRange(); |
|
| 1055 |
range.selectNode(target[0]); |
|
| 1056 |
window.getSelection().removeAllRanges(); |
|
| 1057 |
window.getSelection().addRange(range); |
|
| 1058 | ||
| 1059 |
// Copy and Cleanup |
|
| 1060 |
var copied = document.execCommand('copy');
|
|
| 1061 |
window.getSelection().removeAllRanges(); |
|
| 1062 |
tmp.remove(); |
|
| 1063 | ||
| 1064 |
// Show copied messages |
|
| 1065 |
if (copied){
|
|
| 1066 |
copyEl.append("<div class='copied-message'>Copied.</div>");
|
|
| 1067 |
var copiedMessage = copyEl.find('.copied-message');
|
|
| 1068 |
copiedMessage.show(); |
|
| 1069 |
copiedMessage.fadeOut('slow', function() { $(this).remove(); });
|
|
| 1070 |
} |
|
| 1071 |
} |
|
| 1072 | ||
| 1026 | 1073 |
function inlineAutoComplete(element) {
|
| 1027 | 1074 |
'use strict'; |
| 1028 | 1075 |
// do not attach if Tribute is already initialized |
| ... | ... | |
| 1077 | 1124 |
$(document).ready(setupAttachmentDetail); |
| 1078 | 1125 |
$(document).ready(setupTabs); |
| 1079 | 1126 |
$(document).ready(setupFilePreviewNavigation); |
| 1127 |
$(document).ready(addCopyButtonToPreTag); |
|
| 1080 | 1128 |
$(document).on('focus', '[data-auto-complete=true]', function(event) {
|
| 1081 | 1129 |
inlineAutoComplete(event.target); |
| 1082 | 1130 |
}); |
| public/stylesheets/application.css | ||
|---|---|---|
| 1271 | 1271 | |
| 1272 | 1272 |
div.wiki img {vertical-align:middle; max-width:100%;}
|
| 1273 | 1273 | |
| 1274 |
.copy-contents {
|
|
| 1275 |
position: relative; |
|
| 1276 |
} |
|
| 1277 | ||
| 1278 |
.copy-contents .code-copy-button {
|
|
| 1279 |
position: absolute; |
|
| 1280 |
display: flex; |
|
| 1281 |
right: -13px; |
|
| 1282 |
top: 0px; |
|
| 1283 |
border: none; |
|
| 1284 |
background-color: transparent; |
|
| 1285 |
} |
|
| 1286 | ||
| 1287 |
.copy-contents .copied-message {
|
|
| 1288 |
position: absolute; |
|
| 1289 |
display: flex; |
|
| 1290 |
right: -13px; |
|
| 1291 |
top: 20px; |
|
| 1292 |
display: none; |
|
| 1293 |
color:#505050; |
|
| 1294 |
} |
|
| 1295 | ||
| 1296 |
.copy-contents .tmp {
|
|
| 1297 |
position: fixed; |
|
| 1298 |
left: 200%; |
|
| 1299 |
} |
|
| 1300 | ||
| 1274 | 1301 |
/***** My page layout *****/ |
| 1275 | 1302 |
.block-receiver {
|
| 1276 | 1303 |
border:1px dashed #fff; |