Commit 9c6d723e authored by zlzleking's avatar zlzleking

Merge branch 'master' into 'master'

1.3.3

See merge request !93
parents 0204d081 b8464066
Pipeline #77309928 passed with stage
in 2 minutes and 7 seconds
{
"extends": "wikimedia",
"env": {
"browser": true,
"jquery": true
......
......@@ -5,7 +5,7 @@ eslint:
image: node:latest
stage: lint
script:
- npm install -g eslint eslint-config-wikimedia
- npm install -g eslint eslint-config-wikimedia eslint-plugin-json
- eslint js --ignore-pattern 'lib/'
cache:
paths:
......
......@@ -19,5 +19,24 @@ class LibertyHooks extends Hooks {
'section' => 'liberty/color',
'help-message' => 'liberty-pref-color-second-help'
];
$preferences['liberty-font'] = [
'type' => 'selectorother',
'label-message' => 'liberty-pref-fonts',
'section' => 'liberty/font',
'options' => [
'기본값' => "default",
'본고딕' => "Noto Sans KR",
'스포카 한 산스' => "Spoqa Han Sans",
'나눔고딕' => "Nanum Gothic",
'나눔명조' => 'Nanum Myeongjo',
'독도' => 'Dokdo',
'개구쟁이' => 'Gaegu',
'한겨레결체' => 'Hankc',
'청소년체' => 'Youth',
'맑은 고딕' => 'Malgun Gothic'
],
'help-message' => 'liberty-pref-fonts-help'
];
}
}
......@@ -459,25 +459,17 @@ class LibertyTemplate extends BaseTemplate {
$title = $skin->getTitle();
$revid = $skin->getRequest()->getText( 'oldid' );
$watched = $user->isWatched( $skin->getRelevantTitle() ) ? 'unwatch' : 'watch';
$editable = isset( $this->data['content_navigation']['views']['edit'] );
if ( $title->getNamespace() != NS_SPECIAL ) {
$companionTitle = $title->isTalkPage() ? $title->getSubjectPage() : $title->getTalkPage();
?>
<div class="content-tools">
<div class="btn-group" role="group" aria-label="content-tools">
<?php echo Linker::linkKnown(
$title,
$skin->msg( 'liberty-purge' )->plain(),
[
'class' => 'btn btn-secondary tools-btn',
'title' => $skin->msg( 'liberty-tooltip-purge' )->plain() . ' [alt+shift+p]',
'accesskey' => 'p'
],
[ 'action' => 'purge' ]
);
<?php
$editIcon = $editable ? '<i class="fa fa-edit"></i> ' : '<i class="fa fa-lock"></i> ';
echo Linker::linkKnown(
$title,
$skin->msg( 'edit' )->plain(),
$editIcon . $skin->msg( 'edit' )->plain(),
[
'class' => 'btn btn-secondary tools-btn',
'title' => Linker::titleAttrib( 'ca-edit', 'withaccess' ),
......@@ -485,23 +477,12 @@ class LibertyTemplate extends BaseTemplate {
],
$revid ? [ 'action' => 'edit', 'oldid' => $revid ] : [ 'action' => 'edit' ]
);
echo Linker::linkKnown(
$title,
$skin->msg( 'addsection' )->plain(),
[
'class' => 'btn btn-secondary tools-btn',
'title' => Linker::titleAttrib( 'ca-addsection', 'withaccess' ),
'accesskey' => Linker::accesskey( 'ca-addsection' )
],
[ 'action' => 'edit', 'section' => 'new' ]
);
if ( $companionTitle ) {
if ( $title->isTalkPage() ) {
$titlename = $skin->msg( 'articlepage' )->plain();
$titlename = $skin->msg( 'nstab-main' )->plain();
$additionalArrayStuff = [
// @todo FIXME!
'title' => $titlename . '을 불러옵니다. [alt+shift+t]',
'accesskey' => 't'
'title' => Linker::titleAttrib( 'ca-nstab-main', 'withaccess' ),
'accesskey' => Linker::accesskey( 'ca-nstab-main' )
];
} else {
$titlename = $skin->msg( 'talk' )->plain();
......@@ -546,6 +527,16 @@ class LibertyTemplate extends BaseTemplate {
]
);
}
echo Linker::linkKnown(
$title,
$skin->msg( 'liberty-purge' )->plain(),
[
'class' => 'dropdown-item',
'title' => $skin->msg( 'liberty-tooltip-purge' )->plain() . ' [alt+shift+p]',
'accesskey' => 'p'
],
[ 'action' => 'purge' ]
);
echo Linker::linkKnown(
$title,
$skin->msg( $watched )->plain(),
......@@ -565,6 +556,15 @@ class LibertyTemplate extends BaseTemplate {
'accesskey' => Linker::accesskey( 't-whatlinkshere' )
]
);
echo Linker::linkKnown(
$title,
$skin->msg( 'liberty-info' )->plain(),
[
'class' => 'dropdown-item',
'title' => $skin->msg( 'liberty-tooltip-info' )->plain() ,
],
[ 'action' => 'info' ]
);
if ( $title->quickUserCan( 'move', $user ) && $title->exists() ) {
echo Linker::linkKnown(
SpecialPage::getTitleFor( 'Movepage', $title ),
......@@ -646,7 +646,7 @@ class LibertyTemplate extends BaseTemplate {
<li class="designedbylibre">
<a href="//librewiki.net">
<?php // @codingStandardsIgnoreLine ?>
<img src="<?php echo $this->getSkin()->getSkinStylePath( 'img/designedbylibre.png' ); //phpcs:ignore ?>" style="height:31px" alt="Designed by Librewiki">
<img src="<?php echo $this->getSkin()->getSkinStylePath( 'img/designedbylibre.png' ); //phpcs:ignore ?>" style="height:31px" alt="Designed by Librewiki">
</a>
</li>
</ul>
......
......@@ -36,3 +36,8 @@
* 커스텀 클래스는 `,`로 구분하여 작성해주세요. (예시: `classA, classB`를 적어서 `classA``classB` 클래스 추가)
예시는 [리브레 위키](https://librewiki.net/wiki/MediaWiki:Liberty-Navbar)에서 보실 수 있습니다.
## 라이선스 정보
* 이 스킨은 Noto Sans CJK KR 폰트를 포함하고 있으며 해당 폰트는 OFL 1.1 라이선스로 배포되었습니다.
* 이 스킨은 나눔고딕, 나눔명조 폰트를 포함하고 있으며 해당 폰트는 OFL 1.1 라이선스로 배포되었습니다.
* 이 스킨은 KoPub돋움 폰트를 포함하고 있습니다.
\ No newline at end of file
......@@ -123,7 +123,16 @@ class SkinLiberty extends SkinTemplate {
.dropdown-menu .dropdown-item:hover {
background-color: $secondColor;
}" );
// @codingStandardsIgnoreEnd
// 폰트 설정
$LibertyUserFontSettings = $this->getUser()->getOption( 'liberty-font' );
if ( $LibertyUserFontSettings != "default") {
$out->addInlineStyle( "body, h1, h2, h3, h4, h5, h6, b {
font-family: $LibertyUserFontSettings;
}");
}
// @codingStandardsIgnoreEnd
}
/**
......@@ -141,7 +150,13 @@ class SkinLiberty extends SkinTemplate {
'<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css" />'
);
// Only load AdSense JS if ads are enabled in site configuration
$out->addHeadItem(
'webfonts',
// @codingStandardsIgnoreLine
'<link href="https://fonts.googleapis.com/css?family=Dokdo|Gaegu|Nanum+Gothic|Nanum+Gothic+Coding|Nanum+Myeongjo|Noto+Sans+KR&display=swap&subset=korean" rel="stylesheet">'
);
// Only load AdSense JS is ads are enabled in site configuration
if ( !is_null( $wgLibertyAdSetting['client'] ) ) {
$out->addHeadItem(
'google-ads',
......
@import url( //fonts.googleapis.com/earlyaccess/nanumgothic.css );
/* Main Color #4188f1 */
/* Border Color #e1e8ed */
......@@ -28,7 +27,7 @@ h3,
h4,
h5,
h6 {
font-family: 'Noto Sans Korean', 'Noto Sans', 'Noto Sans CJK KR', 'Nanum Gothic', 'KoPub Dotum', 'Malgun Gothic', '맑은 고딕', sans-serif;
font-family: 'Noto Sans KR', 'Noto Sans', 'Noto Sans CJK KR', 'Nanum Gothic', 'KoPub Dotum', 'Malgun Gothic', '맑은 고딕', sans-serif;
margin: 0;
}
......@@ -39,7 +38,7 @@ h4,
h5,
h6,
b {
font-family: 'Noto Sans Korean', 'Noto Sans', 'Noto Sans CJK KR', 'Nanum Gothic', 'KoPub Dotum', 'Malgun Gothic', '맑은 고딕', sans-serif;
font-family: 'Noto Sans KR', 'Noto Sans', 'Noto Sans CJK KR', 'Nanum Gothic', 'KoPub Dotum', 'Malgun Gothic', '맑은 고딕', sans-serif;
}
input[type=password] {
......
/* Max-width: 1023 Desktop deadline */
@media (max-width: 1023px) {
@media screen and (max-width: 1023px) {
.Liberty .nav-wrapper .navbar {
padding: 0 0.5rem;
}
......@@ -92,7 +92,7 @@
}
}
/* Max-width: 890 convert for tablet mode alt */
@media (max-width: 890px) {
@media screen and (max-width: 890px) {
.Liberty .nav-wrapper .navbar .navbar-nav .nav-item .fa {
text-align: center;
margin: 0 0.25rem;
......@@ -108,10 +108,10 @@
}
#searchform {
width: 100%;
}
}
}
/* Max-width: 798 Menu deadline, convert for tablet mode */
@media (max-width: 798px) {
@media screen and (max-width: 798px) {
.Liberty .nav-wrapper .navbar .navbar-nav .nav-item .fa {
text-align: center;
margin: 0 0.25rem;
......@@ -128,7 +128,7 @@
}
/* Max-width: 520px Under tablet */
@media (max-width: 520px) {
@media screen and (max-width: 520px) {
.Liberty .nav-wrapper .navbar .navbar-nav .nav-item .nav-link {
padding: 0.7rem 0.3rem;
}
......@@ -146,20 +146,21 @@
float: none;
width: 100%;
margin: auto;
margin-bottom: 1rem;
}
.Liberty .content-wrapper .liberty-content .liberty-content-main iframe {
width: 100%;
height: 15rem;
}
#searchform {
width: 100%;
}
}
/* Max-width: 397px Under Big-phone */
@media (max-width: 397px) {
@media screen and (max-width: 397px) {
.Liberty .nav-wrapper .navbar .navbar-brand {
width: 5rem;
background: transparent url( ../img/logo.png ) no-repeat scroll left center/auto 1.5rem;
......@@ -187,7 +188,7 @@
}
/* Max-width: 34rem; */
@media ( max-width: 34rem ) {
@media screen and (max-width: 34rem) {
.Liberty .login-modal .modal-sm {
width: auto;
}
......
@import url( //cdn.jsdelivr.net/font-kopub/1.0/kopubdotum.css );
\ No newline at end of file
/*
* Nanum Gothic (Korean) http://www.google.com/fonts/earlyaccess
*/
@font-face {
font-family: 'Nanum Gothic';
font-style: normal;
font-weight: 400;
src: url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.eot );
src: url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.eot?#iefix ) format( 'embedded-opentype' ),
url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.woff2 ) format( 'woff2' ),
url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.woff ) format( 'woff' ),
url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.ttf ) format( 'truetype' );
}
@font-face {
font-family: 'Nanum Gothic';
font-style: normal;
font-weight: 700;
src: url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.eot );
src: url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.eot?#iefix ) format( 'embedded-opentype' ),
url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.woff2 ) format( 'woff2' ),
url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.woff ) format( 'woff' ),
url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.ttf ) format( 'truetype' );
}
@font-face {
font-family: 'Nanum Gothic';
font-style: normal;
font-weight: 800;
src: url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.eot );
src: url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.eot?#iefix ) format( 'embedded-opentype' ),
url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.woff2 ) format( 'woff2' ),
url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.woff ) format( 'woff' ),
url( //fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.ttf ) format( 'truetype' );
}
\ No newline at end of file
@import url( //cdn.rawgit.com/theeluwin/NotoSansKR-Hestia/master/stylesheets/NotoSansKR-Hestia.css );
\ No newline at end of file
......@@ -271,6 +271,19 @@ button:hover {
background-color: #449d44;
}
#wpDestFile {
width:100%;
}
td.mw-label {
width:15%;
padding-right:10px;
}
#mw-upload-form > .mw-htmlform-submit-buttons > .mw-htmlform-submit {
margin-top:20px;
}
/* Input End */
/* PostEdit */
......
body {
color: black !important;
}
header,
#fixed-toc-button,
.liberty-sidebar,
.content-tools,
.social-buttons,
.footer-places,
.catlinks,
.liberty-notice,
.header-ads {
display: none !important;
}
.content-wrapper {
margin: 0 !important;
}
.liberty-content {
margin-right: 0 !important;
}
.liberty-content-header,
.liberty-content-main,
.liberty-footer {
border: 0 !important;
}
.liberty-content-main {
padding: 0 !important;
}
.title {
padding-left: 0 !important;
padding-right: 0 !important;
padding-top: 0 !important;
padding-bottom: 0.3rem !important;
border-bottom: 3px solid black !important;
}
.title>h1 {
border-bottom: 0 !important;
}
a.external::before {
content: "" !important;
}
p {
font-size: 12pt !important;
line-height: 18pt !important;
text-align: justify !important;
}
.toc {
border: 0 !important;
}
.toc a {
border-bottom: 0 !important;
}
.toctitle {
padding: 0 !important;
border-top: 0 !important;
border-left: 0 !important;
border-right: 0 !important;
border-bottom: 3px solid black !important;
}
.toctitle>h2 {
border-bottom: 0 !important;
}
.toc>ul {
border: 0 !important;
}
h1,
h2 {
border-bottom: 3px solid black !important;
}
h3,
h4,
h5 {
border-color: #aaa !important;
}
\ No newline at end of file
/* 스포카 한 산스 */
@font-face {
font-family: 'Spoqa Han Sans';
font-weight: 700;
src: local('Spoqa Han Sans Bold'),
url('https://cdn.jsdelivr.net/gh/spoqa/spoqa-han-sans@01ff0283e4f36e159ffbf744b36e16ef742da6d8/Subset/SpoqaHanSans/SpoqaHanSansBold.woff2') format('woff2'),
url('https://cdn.jsdelivr.net/gh/spoqa/spoqa-han-sans@01ff0283e4f36e159ffbf744b36e16ef742da6d8/Subset/SpoqaHanSans/SpoqaHanSansBold.woff') format('woff'),
url('https://cdn.jsdelivr.net/gh/spoqa/spoqa-han-sans@01ff0283e4f36e159ffbf744b36e16ef742da6d8/Subset/SpoqaHanSans/SpoqaHanSansBold.ttf') format('truetype');
}
@font-face {
font-family: 'Spoqa Han Sans';
font-weight: 400;
src: local('Spoqa Han Sans Regular'),
url('https://cdn.jsdelivr.net/gh/spoqa/spoqa-han-sans@01ff0283e4f36e159ffbf744b36e16ef742da6d8/Subset/SpoqaHanSans/SpoqaHanSansRegular.woff2') format('woff2'),
url('https://cdn.jsdelivr.net/gh/spoqa/spoqa-han-sans@01ff0283e4f36e159ffbf744b36e16ef742da6d8/Subset/SpoqaHanSans/SpoqaHanSansRegular.woff') format('woff'),
url('https://cdn.jsdelivr.net/gh/spoqa/spoqa-han-sans@01ff0283e4f36e159ffbf744b36e16ef742da6d8/Subset/SpoqaHanSans/SpoqaHanSansRegular.ttf') format('truetype');
}
@font-face {
font-family: 'Spoqa Han Sans';
font-weight: 300;
src: local('Spoqa Han Sans Light'),
url('https://cdn.jsdelivr.net/gh/spoqa/spoqa-han-sans@01ff0283e4f36e159ffbf744b36e16ef742da6d8/Subset/SpoqaHanSans/SpoqaHanSansLight.woff2') format('woff2'),
url('https://cdn.jsdelivr.net/gh/spoqa/spoqa-han-sans@01ff0283e4f36e159ffbf744b36e16ef742da6d8/Subset/SpoqaHanSans/SpoqaHanSansLight.woff') format('woff'),
url('https://cdn.jsdelivr.net/gh/spoqa/spoqa-han-sans@01ff0283e4f36e159ffbf744b36e16ef742da6d8/Subset/SpoqaHanSans/SpoqaHanSansLight.ttf') format('truetype');
}
@font-face {
font-family: 'Spoqa Han Sans';
font-weight: 100;
src: local('Spoqa Han Sans Thin'),
url('https://cdn.jsdelivr.net/gh/spoqa/spoqa-han-sans@01ff0283e4f36e159ffbf744b36e16ef742da6d8/Subset/SpoqaHanSans/SpoqaHanSansThin.woff2') format('woff2'),
url('https://cdn.jsdelivr.net/gh/spoqa/spoqa-han-sans@01ff0283e4f36e159ffbf744b36e16ef742da6d8/Subset/SpoqaHanSans/SpoqaHanSansThin.woff') format('woff'),
url('https://cdn.jsdelivr.net/gh/spoqa/spoqa-han-sans@01ff0283e4f36e159ffbf744b36e16ef742da6d8/Subset/SpoqaHanSans/SpoqaHanSansThin.ttf') format('truetype');
}
/* 한겨레결체*/
@font-face {
font-family: 'Hankc';
font-style: normal;
font-weight: 400;
src: local('한겨레결체'),
url('//cdn.jsdelivr.net/korean-webfonts/1/corps/hani/Hankc/Hankc.woff2') format('woff2'), url('//cdn.jsdelivr.net/korean-webfonts/1/corps/hani/Hankc/Hankc.woff') format('woff');
}
/* 청소년체 */
@font-face {
font-family: 'Youth';
font-style: normal;
font-weight: 400;
src: local('청소년서체'),
url('//cdn.jsdelivr.net/korean-webfonts/1/orgs/othrs/kywa/Youth/Youth.woff2') format('woff2'), url('//cdn.jsdelivr.net/korean-webfonts/1/orgs/othrs/kywa/Youth/Youth.woff') format('woff');
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
......@@ -12,9 +12,11 @@
"liberty-login": "Login",
"liberty-login-alter": "Login with other method",
"liberty-login-btn": "Login",
"liberty-info": "Info",
"liberty-purge": "Purge",
"liberty-recent-discussions": "Recent discussions",
"liberty-remember": "Remember my login",
"liberty-tooltip-info": "View document's infomation",
"liberty-tooltip-purge": "Purge the cache of this page.",
"liberty-twitter": "Twitter",
"liberty-view-more": "View more",
......
......@@ -20,6 +20,8 @@
"liberty-recent-discussions": "최근 토론",
"liberty-remember": "로그인 상태를 유지하기",
"liberty-tooltip-purge": "이 문서의 캐시를 새로 고칩니다.",
"liberty-info": "문서 정보",
"liberty-tooltip-info": "문서의 정보를 열람합니다",
"liberty-twitter": "트위터",
"liberty-view-more": "더 보기",
"liberty-warning": "경고",
......@@ -30,6 +32,11 @@
"prefs-color": "색상 설정",
"liberty-pref-color-main": "주 색상",
"liberty-pref-color-main-help": "이 사이트에서 주로 사용할 색상입니다.",
"prefs-font": "글꼴 설정",
"prefs-web": "웹폰트 로딩",
"liberty-pref-color-second": "보조 색상 지정",
"liberty-pref-color-second-help": "사이트에서 보조로 사용할 색상을 정합니다."
}
"liberty-pref-color-second-help": "사이트에서 보조로 사용할 색상을 정합니다.",
"liberty-pref-fonts": "사용하실 폰트를 선택하세요.",
"liberty-pref-fonts-helplabel": "설명",
"liberty-pref-fonts-help": "선택하신 폰트는 웹폰트로 로드됩니다. 하지만 맑은 고딕은 사용자의 시스템에 설치되어 있어야 적용됩니다."
}
\ No newline at end of file
img/designedbylibre.png

2.7 KB | W: | H:

img/designedbylibre.png

332 KB | W: | H:

img/designedbylibre.png
img/designedbylibre.png
img/designedbylibre.png
img/designedbylibre.png
  • 2-up
  • Swipe
  • Onion skin
$( function () {
$( window ).load( function () {
'use strict';
var documentNamespaces, topicNamespaces, isDocumentTab, limit;
documentNamespaces = '0|4|10|12|14|1600';
......@@ -67,6 +67,10 @@ $( function () {
text += '...';
}
text = text.replace( '[New]', '<span class="new">' + mw.msg( 'liberty-feed-new' ) + ' </span>' );
/* @todo FIXME: This just doesn't work and I've no idea why.
The i18n msg is properly defined etc. yet it shows up as <liberty-feed-new>
when called by the below line :-( */
// text = text.replace( '[New]', '<span class="new">' + mw.msg( 'liberty-feed-new' ) + ' </span>' );
line += text;
line += '</a></li>';
return line;
......
......@@ -18,6 +18,7 @@
"homepage": "https://gitlab.com/librewiki/Liberty-MW-Skin#README",
"devDependencies": {
"eslint": "^4.1.0",
"eslint-config-wikimedia": "^0.4.0"
"eslint-config-wikimedia": "^0.4.0",
"eslint-plugin-json" : "^1.4.0"
}
}
......@@ -9,7 +9,7 @@
"namemsg": "skinname-liberty",
"license-name": "GPL-3.0+",
"type": "skin",
"version": "1.2.16",
"version": "1.3.3",
"ValidSkinNames": {
"liberty": "Liberty"
},
......@@ -26,12 +26,6 @@
"ResourceModules": {
"skins.liberty.styles": {
"styles": {
"css/font/Nanum Gothic.css": {
"media": "all"
},
"css/font/Noto Sans KR.css": {
"media": "all"
},
"bootstrap/css/bootstrap.min.css": {
"media": "all"
},
......@@ -47,11 +41,20 @@
"css/only-mw.css": {
"media": "all"
},
"css/webfont.css": {
"media" : "all"
},
"css/wiki-table.css": {
"media": "all"
},
"css/wikiedittor-liberty.css": {
"media": "all"
},
"css/extensions/RelatedArticles.css": {
"media": "all"
},
"css/print.css": {
"media": "print"
}
}
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment