diff --git a/.eslintrc.js b/.eslintrc.js index 7fea5f3a..cdd49e6e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -44,6 +44,7 @@ module.exports = { "vue/max-attributes-per-line": "off", "vue/singleline-html-element-content-newline": "off", "vue/html-self-closing": "off", + "vue/require-component-is": "off", // not allow is="style" https://github.com/vuejs/eslint-plugin-vue/issues/462#issuecomment-430234675 "vue/attribute-hyphenation": "off", // This change noNL to "no-n-l" unexpectedly "no-multi-spaces": ["error", { ignoreEOLComments: true, diff --git a/db/patch-status-page-footer-css.sql b/db/patch-status-page-footer-css.sql new file mode 100644 index 00000000..413918f1 --- /dev/null +++ b/db/patch-status-page-footer-css.sql @@ -0,0 +1,6 @@ +-- You should not modify if this have pushed to Github, unless it does serious wrong with the db. +BEGIN TRANSACTION; +ALTER TABLE status_page ADD footer_text TEXT; +ALTER TABLE status_page ADD custom_css TEXT; +ALTER TABLE status_page ADD show_powered_by BOOLEAN NOT NULL DEFAULT 1; +COMMIT; diff --git a/package.json b/package.json index 73035922..305d79b8 100644 --- a/package.json +++ b/package.json @@ -91,6 +91,7 @@ "password-hash": "~1.2.2", "postcss-rtlcss": "~3.4.1", "postcss-scss": "~4.0.3", + "prismjs": "^1.27.0", "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.1", "qrcode": "~1.5.0", @@ -110,6 +111,7 @@ "vue-i18n": "~9.1.9", "vue-image-crop-upload": "~3.0.3", "vue-multiselect": "~3.0.0-alpha.2", + "vue-prism-editor": "^2.0.0-alpha.2", "vue-qrcode": "~1.0.0", "vue-router": "~4.0.14", "vue-toastification": "~2.0.0-rc.5", diff --git a/server/database.js b/server/database.js index b398101e..330c2436 100644 --- a/server/database.js +++ b/server/database.js @@ -56,6 +56,7 @@ class Database { "patch-status-page.sql": true, "patch-proxy.sql": true, "patch-monitor-expiry-notification.sql": true, + "patch-status-page-footer-css.sql": true, } /** diff --git a/server/model/status_page.js b/server/model/status_page.js index 1383d3b0..b1befc25 100644 --- a/server/model/status_page.js +++ b/server/model/status_page.js @@ -92,6 +92,9 @@ class StatusPage extends BeanModel { published: !!this.published, showTags: !!this.show_tags, domainNameList: this.getDomainNameList(), + customCSS: this.custom_css, + footerText: this.footer_text, + showPoweredBy: !!this.show_powered_by, }; } @@ -104,6 +107,9 @@ class StatusPage extends BeanModel { theme: this.theme, published: !!this.published, showTags: !!this.show_tags, + customCSS: this.custom_css, + footerText: this.footer_text, + showPoweredBy: !!this.show_powered_by, }; } diff --git a/server/socket-handlers/status-page-socket-handler.js b/server/socket-handlers/status-page-socket-handler.js index 36e90fb9..a06271da 100644 --- a/server/socket-handlers/status-page-socket-handler.js +++ b/server/socket-handlers/status-page-socket-handler.js @@ -155,6 +155,9 @@ module.exports.statusPageSocketHandler = (socket) => { //statusPage.search_engine_index = ; statusPage.show_tags = config.showTags; //statusPage.password = null; + statusPage.footer_text = config.footerText; + statusPage.custom_css = config.customCSS; + statusPage.show_powered_by = config.showPoweredBy; statusPage.modified_date = R.isoDateTime(); await R.store(statusPage); diff --git a/src/assets/app.scss b/src/assets/app.scss index 0b27c6a6..c3f2fa79 100644 --- a/src/assets/app.scss +++ b/src/assets/app.scss @@ -469,6 +469,10 @@ textarea.form-control { color: $primary; } +.prism-editor__textarea { + outline: none !important; +} + // Localization @import "localization.scss"; diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 56452c2a..1dd86e23 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -337,7 +337,7 @@ export default { "Hide Tags": "Tags ausblenden", Description: "Beschreibung", "No monitors available.": "Keine Monitore verfügbar.", - "Add one": "Füge eins hinzu", + "Add one": "Hinzufügen", "No Monitors": "Keine Monitore", "Untitled Group": "Gruppe ohne Titel", Services: "Dienste", @@ -442,4 +442,7 @@ export default { "Issuer:": "Aussteller:", "Fingerprint:": "Fingerabdruck:", "No status pages": "Keine Status-Seiten", + Customize: "Anpassen", + "Custom Footer": "Eigener Footer", + "Custom CSS": "Eigenes CSS", }; diff --git a/src/languages/en.js b/src/languages/en.js index 0ba98e11..1061f426 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -354,6 +354,9 @@ export default { serwersmsPhoneNumber: "Phone number", serwersmsSenderName: "SMS Sender Name (registered via customer portal)", stackfield: "Stackfield", + Customize: "Customize", + "Custom Footer": "Custom Footer", + "Custom CSS": "Custom CSS", smtpDkimSettings: "DKIM Settings", smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.", documentation: "documentation", diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index 3baae08b..4b94289c 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -16,11 +16,18 @@ +