User JavaScript and CSS (Chrome Extension)를 사용하여 Redmine을 맞춤 설정해 보았습니다.
17263 단어 CSS자바스크립트chrome-extension
User JavaScript and CSS란 무엇입니까?
Chrome 확장 프로그램으로 제공되는 기존 웹 사이트에 자체 Javascript 및 CSS를 포함하는 라이브러리입니다.
User JavaScript and CSS - Chrome 웹 스토어
이것을 이용해, 다크 모드가 없는 웹사이트에 다크 모드를 실장해 보거나, Yahoo!의 사이트에 자신이 좋아하는 캐릭터의 일러스트를 표시시키거나, 여러가지 할 수 있습니다.
이번에는 사내 작업 관리에 사용하는 Redmine에서 티켓 설명에 나오는 스 니펫 내용을 클립 보드에 복사하는 기능을 Javascript로 구현해 보았습니다.
화면 설계
스 니펫 테두리 밖, 오른쪽 하단에 복사 아이콘을 배치하고,
아이콘을 클릭하면 「복사했습니다!」의 다이얼로그를 표시하기로 합니다.
구현
아이콘 불러오기
이번에는 Font Awesome 아이콘을 사용합니다.
Font Awesome의 경우 여기
흐름은 다음과 같습니다.
redmine.js
const link = document.createElement('link');
link.setAttribute('rel', 'stylesheet');
link.setAttribute('href', 'https://use.fontawesome.com/releases/v5.6.3/css/all.css');
document.getElementsByTagName('head')[0].appendChild(link);
스니펫의 테두리 밖, 오른쪽 하단 부분에 요소를 배치
흐름은 다음과 같습니다.
스 니펫 (pre 태그) 가져 오기 -> 각 스 니펫을 배열로 가져옵니다.
각 스 니펫에 대해 다음을 수행합니다.
redmine.js
// スニペットのタグを選択
const snippets = document.getElementsByTagName('pre');
// console.log(snippets); // HTMLCollection
// console.log(typeof snippets); // object
// コピーボタンを配置
Object.keys(snippets).forEach(function (index) {
let snippet = snippets[index];
let p = document.createElement('p');
p.className = 'copy-snippet';
let copyButton = document.createElement('span');
copyButton.title = 'Copy to Clipboard';
copyButton.innerHTML = '<i class="far fa-copy"></i> Copy';
copyButton.className = 'copy-button';
copyButton.addEventListener('click', function () {
let copyTarget = document.createElement('textarea');
copyTarget.textContent = snippet.innerText.trim(); // 見た目に合わせて文末改行削る?
let body = document.getElementsByTagName('body')[0];
body.appendChild(copyTarget);
copyTarget.select();
document.execCommand("copy");
body.removeChild(copyTarget);
// 後処理まで終わったらおまけ
(function () {
alert('コピーしました!');
})();
});
p.appendChild(copyButton);
snippet.parentNode.insertBefore(p, snippet.nextSibling);
});
기타
화면 오른쪽 하단에 개구리의 일러스트를 넣고 전체를 CSS로 정돈합니다.
redmine.js
// カエルがペコペコおじぎする GIF
const imageUrl = 'https://sozai-good.com/download?id=2451&type=7&subnumber=0&extention=gif';
// 画像挿入処理
let img = document.createElement('img');
img.id = 'inserted-image';
img.height = 105;
img.src = imageUrl;
const wrapper = document.getElementById('wrapper');
wrapper.parentNode.insertBefore(img, wrapper.nextSibling);
redmine.css
#wrapper, #main {
background-image: url("https://www.pakutaso.com/shared/img/thumb/mizuho1102dssd_TP_V.jpg");
background-repeat: no-repeat;
background-size: cover;
background-attachment: fixed;
opacity: 0.96;
}
#top-menu {
/*background-color: darkgreen;*/
background-color: rgba(10, 106, 10, 0.9);
}
#header, #footer {
/*background-color: forestgreen;*/
background-color: rgba(0, 0, 0, 0.5);
}
#main-menu li a {
/*background-color: darkgreen;*/
background-color: rgba(10, 106, 10, 0.6);
}
#main-menu li .selected {
color: lightgreen;
}
#content {
margin-bottom: 20px;
}
#sidebar {
background-color: white;
}
#footer {
position: fixed;
background-color: black;
right: 0;
bottom: 0;
}
pre, .CodeRay {
font-family: Monaco, monospace;
}
#inserted-image {
position: fixed;
right: 25px;
bottom: 45px;
}
.copy-snippet {
text-align: right;
}
.copy-button {
cursor: pointer;
background: none;
border: 0;
/* settings when hovered */
/*transition: color 0.1s linear;*/
}
.copy-button:hover {
color: red;
}
Redmine 공식 페이지 보기
Defect #32525: CSV related tests fail with Rails 5.2.4 - Redmine
했어!
효용
Reference
이 문제에 관하여(User JavaScript and CSS (Chrome Extension)를 사용하여 Redmine을 맞춤 설정해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/noritakaIzumi/items/870558ced1088b4af16f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)