diff --git a/judgels-backends/judgels-server-app/src/main/resources/assets/css/main.css b/judgels-backends/judgels-server-app/src/main/resources/assets/css/main-2.css
similarity index 95%
rename from judgels-backends/judgels-server-app/src/main/resources/assets/css/main.css
rename to judgels-backends/judgels-server-app/src/main/resources/assets/css/main-2.css
index fd889f5b0..345c33214 100644
--- a/judgels-backends/judgels-server-app/src/main/resources/assets/css/main.css
+++ b/judgels-backends/judgels-server-app/src/main/resources/assets/css/main-2.css
@@ -227,6 +227,7 @@ input[type="text"], input[type="password"], textarea {
.content-text {
font-size: 15px;
line-height: 1.5;
+ color: #1c2127;
}
.content-text.scrollable {
@@ -241,7 +242,7 @@ input[type="text"], input[type="password"], textarea {
.content-text table, .content-text th, .content-text td {
border-collapse: collapse;
- border: 1px solid black;
+ border: 1px solid #1c2127;
}
.content-text th, .content-text td {
@@ -251,7 +252,7 @@ input[type="text"], input[type="password"], textarea {
.content-text th {
font-family: var(--accent-font);
font-weight: bold;
- background-color: #EEEEEE;
+ background-color: #eeeeee;
}
.content-text em {
@@ -270,6 +271,11 @@ input[type="text"], input[type="password"], textarea {
font-size: 14px !important;
}
+.content-text pre, .content-text code {
+ color: #1c2127;
+ background-color: #f5f5f5;
+}
+
.content-text ol.breadcrumb li {
margin-left: 0;
}
@@ -317,6 +323,11 @@ input[type="text"], input[type="password"], textarea {
font-size: 17px !important;
}
+textarea.cke_source {
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace !important;
+ color: #1c2127;
+}
+
th {
font-family: var(--accent-font);
font-weight: bold;
diff --git a/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/resource/ckeditor-2.js b/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/resource/ckeditor-2.js
new file mode 100644
index 000000000..299c38609
--- /dev/null
+++ b/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/resource/ckeditor-2.js
@@ -0,0 +1,87 @@
+document.addEventListener('DOMContentLoaded', function() {
+ CKEDITOR.config.toolbar = [
+ ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat'],
+ ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote'],
+ ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
+ ['Image', 'Link', 'Table'],
+ ['Styles', 'Format'],
+ ['Source', '-', 'Preview']
+ ];
+ CKEDITOR.config.allowedContent = {
+ $1: {
+ // Use the ability to specify elements as an object.
+ elements: CKEDITOR.dtd,
+ attributes: true,
+ styles: true,
+ classes: true
+ }
+ };
+ CKEDITOR.config.height = 600;
+ CKEDITOR.config.extraAllowedContent = 'iframe embed';
+ CKEDITOR.config.disallowedContent = 'script; *[on*]';
+ CKEDITOR.config.removePlugins = 'exportpdf';
+ CKEDITOR.addCss(`
+ .cke_editable {
+ font-size: 14px;
+ color: #1c2127;
+ }
+
+ h3 {
+ font-family: 'Roboto', sans-serif;
+ font-size: 17px;
+ font-weight: bold;
+ margin-top: 20px;
+ margin-bottom: 10px;
+ }
+
+ h4 {
+ font-family: 'Roboto', sans-serif;
+ font-size: 15px;
+ font-weight: bold;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ }
+
+ pre {
+ padding: 9.5px;
+ margin: 0 0 10px;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ }
+
+ pre, code {
+ background-color: #f5f5f5;
+ }
+
+ code {
+ padding: 2px 4px;
+ border-radius: 4px;
+ font-size: 90%;
+ }
+
+ ul, ol {
+ padding-left: 25px;
+ }
+
+ table {
+ border-collapse: collapse;
+ }
+
+ th {
+ font-weight: bold;
+ background-color: #eeeeee;
+ text-align: left;
+ }
+
+ th, td {
+ padding: 5px;
+ }
+
+ blockquote {
+ padding: 10px 20px;
+ margin: 0 0 20px;
+ border-left: 5px solid #eee;
+ font-style: normal;
+ }
+ `);
+}, false);
diff --git a/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/resource/ckeditor.ftl b/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/resource/ckeditor.ftl
index bf39e12f1..c1c06992d 100644
--- a/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/resource/ckeditor.ftl
+++ b/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/resource/ckeditor.ftl
@@ -1,2 +1,2 @@
-
+
diff --git a/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/resource/ckeditor.js b/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/resource/ckeditor.js
deleted file mode 100644
index 25d748c37..000000000
--- a/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/resource/ckeditor.js
+++ /dev/null
@@ -1,23 +0,0 @@
-document.addEventListener('DOMContentLoaded', function() {
- CKEDITOR.config.toolbar = [
- ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat'],
- ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote'],
- ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
- ['Image', 'Link', 'Table'],
- ['Styles', 'Format'],
- ['Source', '-', 'Preview']
- ];
- CKEDITOR.config.allowedContent = {
- $1: {
- // Use the ability to specify elements as an object.
- elements: CKEDITOR.dtd,
- attributes: true,
- styles: true,
- classes: true
- }
- };
- CKEDITOR.config.height = 600;
- CKEDITOR.config.extraAllowedContent = 'iframe embed';
- CKEDITOR.config.disallowedContent = 'script; *[on*]';
- CKEDITOR.config.removePlugins = 'exportpdf';
-}, false);
diff --git a/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/template/base/baseLayout.ftl b/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/template/base/baseLayout.ftl
index a220a8318..c0fecf348 100644
--- a/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/template/base/baseLayout.ftl
+++ b/judgels-backends/judgels-server-app/src/main/resources/judgels/michael/template/base/baseLayout.ftl
@@ -9,7 +9,7 @@
-
+