From 36966f0c9bfa5025938033f0e101fb5fec2bab80 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 2 Mar 2016 15:29:52 +0000 Subject: [PATCH 1/4] wip --- .../Spelling/SpellingController.coffee | 2 +- services/web/app/views/layout.jade | 27 +++++++++++-------- .../public/coffee/main/user-details.coffee | 1 + 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/services/web/app/coffee/Features/Spelling/SpellingController.coffee b/services/web/app/coffee/Features/Spelling/SpellingController.coffee index 81a697525f..d92311ddb1 100644 --- a/services/web/app/coffee/Features/Spelling/SpellingController.coffee +++ b/services/web/app/coffee/Features/Spelling/SpellingController.coffee @@ -12,5 +12,5 @@ module.exports = SpellingController = request(url: Settings.apis.spelling.url + url, method: req.method, headers: req.headers, json: req.body, timeout:TEN_SECONDS) .on "error", (error) -> logger.error err: error, "Spelling API error" - res.sendStatus 500 + res.end() .pipe(res) diff --git a/services/web/app/views/layout.jade b/services/web/app/views/layout.jade index 013c8e5a60..a8cc76ee90 100644 --- a/services/web/app/views/layout.jade +++ b/services/web/app/views/layout.jade @@ -7,6 +7,7 @@ html(itemscope, itemtype='http://schema.org/Product') // Stop superfish from loading window.similarproducts = true style [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {display: none !important; display: none; } + style #groove-button { display:none;} -if (typeof(gaExperiments) != "undefined") |!{gaExperiments} @@ -25,6 +26,7 @@ html(itemscope, itemtype='http://schema.org/Product') each subdomainDetails in settings.i18n.subdomainLang link(rel="alternate", href=subdomainDetails.url+currentUrl, hreflang=subdomainDetails.lngCode) + meta(itemprop="name", content="ShareLaTeX, the Online LaTeX Editor") -if (typeof(meta) == "undefined") @@ -60,8 +62,12 @@ html(itemscope, itemtype='http://schema.org/Product') sixpackDomain: '#{settings.sixpack.domain}' }; window.systemMessages = !{JSON.stringify(systemMessages).replace(/\//g, '\\/')}; - window.ab = {} - window.user_id = '#{getLoggedInUserId()}' + window.ab = {}; + window.user_id = '#{getLoggedInUserId()}'; + + script. + (function() {var s=document.createElement('script'); s.type='text/javascript';s.async=true; s.src=('https:'==document.location.protocol?'https':'http') + '://sharelatex-accounts.groovehq.com/widgets/f5ad3b09-7d99-431b-8af5-c5725e3760ce/ticket.js'; var q = document.getElementsByTagName('script')[0];q.parentNode.insertBefore(s, q);})(); + - if (typeof(settings.algolia) != "undefined") script. @@ -118,21 +124,20 @@ html(itemscope, itemtype='http://schema.org/Product') "paths" : { "moment": "libs/moment-2.7.0" } - }; + }; script( data-main=jsPath+'main.js', baseurl=jsPath, src=jsPath+'libs/require.js?fingerprint='+fingerprint(jsPath + 'libs/require.js') ) - - if (typeof(tenderUrl) != "undefined") - script(src="https://#{tenderUrl}/tender_widget.js" ) - script(type="text/javascript"). - Tender = { - hideToggle: true, - widgetToggles: $(".js-tender-widget"), - category: "questions" - }; + + script. + var toggleGroove = function(){ + var e = arguments[0]||window.event; + e.stopPropagation(); + GrooveWidget.toggle() + } diff --git a/services/web/public/coffee/main/user-details.coffee b/services/web/public/coffee/main/user-details.coffee index e79ccfbbe4..f9e159e9d0 100644 --- a/services/web/public/coffee/main/user-details.coffee +++ b/services/web/public/coffee/main/user-details.coffee @@ -16,6 +16,7 @@ define [ _csrf : window.csrfToken $scope.showForm = -> + GrooveWidget.toggle() $scope.formVisable = true $scope.getPercentComplete = -> From 7e216391b72c10749cb79a11b2f78826b5768101 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Sat, 12 Mar 2016 10:55:17 +0000 Subject: [PATCH 2/4] wip --- services/web/app/views/layout.jade | 12 ++---------- services/web/app/views/layout/navbar.jade | 2 +- services/web/public/coffee/base.coffee | 9 +++++++++ services/web/public/coffee/libs.coffee | 1 + services/web/public/coffee/main.coffee | 3 +++ 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/services/web/app/views/layout.jade b/services/web/app/views/layout.jade index a8cc76ee90..2d3d13c227 100644 --- a/services/web/app/views/layout.jade +++ b/services/web/app/views/layout.jade @@ -65,8 +65,8 @@ html(itemscope, itemtype='http://schema.org/Product') window.ab = {}; window.user_id = '#{getLoggedInUserId()}'; - script. - (function() {var s=document.createElement('script'); s.type='text/javascript';s.async=true; s.src=('https:'==document.location.protocol?'https':'http') + '://sharelatex-accounts.groovehq.com/widgets/f5ad3b09-7d99-431b-8af5-c5725e3760ce/ticket.js'; var q = document.getElementsByTagName('script')[0];q.parentNode.insertBefore(s, q);})(); + //- script. + //- (function() {var s=document.createElement('script'); s.type='text/javascript';s.async=true; s.src=('https:'==document.location.protocol?'https':'http') + '://sharelatex-accounts.groovehq.com/widgets/f5ad3b09-7d99-431b-8af5-c5725e3760ce/ticket.js'; var q = document.getElementsByTagName('script')[0];q.parentNode.insertBefore(s, q);})(); - if (typeof(settings.algolia) != "undefined") @@ -132,12 +132,4 @@ html(itemscope, itemtype='http://schema.org/Product') ) - script. - var toggleGroove = function(){ - var e = arguments[0]||window.event; - e.stopPropagation(); - GrooveWidget.toggle() - } - - diff --git a/services/web/app/views/layout/navbar.jade b/services/web/app/views/layout/navbar.jade index 89ff4e1dc2..5f8538cb31 100644 --- a/services/web/app/views/layout/navbar.jade +++ b/services/web/app/views/layout/navbar.jade @@ -27,7 +27,7 @@ nav.navbar.navbar-default a.dropdown-toggle(href, dropdown-toggle) | !{translate(item.text)} b.caret - ul.dropdown-menu + ul.dropdown-menu(ng-controller="NavController") each child in item.dropdown if child.divider li.divider diff --git a/services/web/public/coffee/base.coffee b/services/web/public/coffee/base.coffee index 98cdb3a871..bc040a16cc 100644 --- a/services/web/public/coffee/base.coffee +++ b/services/web/public/coffee/base.coffee @@ -24,4 +24,13 @@ define [ client_id: window.user_id }) + App.controller "NavController", ($scope) -> + + $scope.toggleGroove = -> + $scope['is-open'] = false + $scope['isOpen'] = false + GrooveWidget.toggle() + + + return App diff --git a/services/web/public/coffee/libs.coffee b/services/web/public/coffee/libs.coffee index 3c30dd63f3..fd1b5d0c91 100644 --- a/services/web/public/coffee/libs.coffee +++ b/services/web/public/coffee/libs.coffee @@ -12,6 +12,7 @@ define [ "libs/angular-cookies" "libs/passfield" "libs/sixpack" + "libs/groove" "libs/angular-sixpack" "libs/ng-tags-input-3.0.0" ], () -> diff --git a/services/web/public/coffee/main.coffee b/services/web/public/coffee/main.coffee index ad3e8d8a36..1d59eb19c8 100644 --- a/services/web/public/coffee/main.coffee +++ b/services/web/public/coffee/main.coffee @@ -30,3 +30,6 @@ define [ "__MAIN_CLIENTSIDE_INCLUDES__" ], () -> angular.bootstrap(document.body, ["SharelatexApp"]) + + + From 882297c3530297970f5ff76c9cd8cb38270c4ccb Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Fri, 18 Mar 2016 12:55:35 +0000 Subject: [PATCH 3/4] working framework. not happy with groove. Can't set mailbox --- services/web/app/views/contact-us-modal.jade | 31 +++++++++ services/web/app/views/layout.jade | 14 +++-- services/web/app/views/layout/navbar.jade | 2 +- services/web/public/coffee/base.coffee | 9 --- services/web/public/coffee/main.coffee | 2 +- .../web/public/coffee/main/contact-us.coffee | 63 +++++++++++++++++++ .../coffee/main/universties-site.coffee | 26 -------- 7 files changed, 106 insertions(+), 41 deletions(-) create mode 100644 services/web/app/views/contact-us-modal.jade create mode 100644 services/web/public/coffee/main/contact-us.coffee delete mode 100644 services/web/public/coffee/main/universties-site.coffee diff --git a/services/web/app/views/contact-us-modal.jade b/services/web/app/views/contact-us-modal.jade new file mode 100644 index 0000000000..f4b03ece2d --- /dev/null +++ b/services/web/app/views/contact-us-modal.jade @@ -0,0 +1,31 @@ +script(type='text/ng-template', id='supportModalTemplate') + .modal-header + button.close( + type="button" + data-dismiss="modal" + ng-click="close()" + ) × + h3 Contact Us + .modal-body + span(ng-show="sent == false") + .form-group + label + | Subject + .form-group + input.field.text.medium.span8.form-control(ng-model="form.subject", maxlength='255', tabindex='1', onkeyup='') + label.desc + | Email + .form-group + input.field.text.medium.span8.form-control(ng-model="form.email", type='email', spellcheck='false', value='', maxlength='255', tabindex='2') + label#title12.desc + | Project URL (optional) + .form-group + input.field.text.medium.span8.form-control(ng-model="form.project_url", tabindex='3', onkeyup='') + label.desc + | Message + .form-group + textarea.field.text.medium.span8.form-control(ng-model="form.message",type='text', value='', maxlength='255', tabindex='4', onkeyup='') + .form-group.text-center + input.btn-success.btn.btn-lg(type='submit', ng-disabled="sending", ng-click="contactUs()" value='Get in Touch') + span(ng-show="sent") + p Request Sent, Thank you. \ No newline at end of file diff --git a/services/web/app/views/layout.jade b/services/web/app/views/layout.jade index 2d3d13c227..a0e8383a7b 100644 --- a/services/web/app/views/layout.jade +++ b/services/web/app/views/layout.jade @@ -65,10 +65,6 @@ html(itemscope, itemtype='http://schema.org/Product') window.ab = {}; window.user_id = '#{getLoggedInUserId()}'; - //- script. - //- (function() {var s=document.createElement('script'); s.type='text/javascript';s.async=true; s.src=('https:'==document.location.protocol?'https':'http') + '://sharelatex-accounts.groovehq.com/widgets/f5ad3b09-7d99-431b-8af5-c5725e3760ce/ticket.js'; var q = document.getElementsByTagName('script')[0];q.parentNode.insertBefore(s, q);})(); - - - if (typeof(settings.algolia) != "undefined") script. window.sharelatex.algolia = { @@ -86,6 +82,9 @@ html(itemscope, itemtype='http://schema.org/Product') } body + div(ng-controller="ContactModal") + a(ng-click="contactUsModal()") contact us + - if(typeof(suppressSystemMessages) == "undefined") .system-messages( ng-cloak @@ -131,5 +130,12 @@ html(itemscope, itemtype='http://schema.org/Product') src=jsPath+'libs/require.js?fingerprint='+fingerprint(jsPath + 'libs/require.js') ) + script(type='text/javascript'). + (function() {var s=document.createElement('script'); s.type='text/javascript';s.async=true; + s.src=('https:'==document.location.protocol?'https':'http') + '://sharelatex-accounts.groovehq.com/widgets/f5ad3b09-7d99-431b-8af5-c5725e3760ce/ticket/api.js'; + var q = document.getElementsByTagName('script')[0];q.parentNode.insertBefore(s, q);})(); + + include contact-us-modal + diff --git a/services/web/app/views/layout/navbar.jade b/services/web/app/views/layout/navbar.jade index 5f8538cb31..89ff4e1dc2 100644 --- a/services/web/app/views/layout/navbar.jade +++ b/services/web/app/views/layout/navbar.jade @@ -27,7 +27,7 @@ nav.navbar.navbar-default a.dropdown-toggle(href, dropdown-toggle) | !{translate(item.text)} b.caret - ul.dropdown-menu(ng-controller="NavController") + ul.dropdown-menu each child in item.dropdown if child.divider li.divider diff --git a/services/web/public/coffee/base.coffee b/services/web/public/coffee/base.coffee index bc040a16cc..98cdb3a871 100644 --- a/services/web/public/coffee/base.coffee +++ b/services/web/public/coffee/base.coffee @@ -24,13 +24,4 @@ define [ client_id: window.user_id }) - App.controller "NavController", ($scope) -> - - $scope.toggleGroove = -> - $scope['is-open'] = false - $scope['isOpen'] = false - GrooveWidget.toggle() - - - return App diff --git a/services/web/public/coffee/main.coffee b/services/web/public/coffee/main.coffee index 1d59eb19c8..40c6bd753d 100644 --- a/services/web/public/coffee/main.coffee +++ b/services/web/public/coffee/main.coffee @@ -15,7 +15,7 @@ define [ "main/annual-upgrade" "main/register-users" "main/subscription/group-subscription-invite-controller" - "main/universties-site" + "main/contact-us" "analytics/AbTestingManager" "directives/asyncForm" "directives/stopPropagation" diff --git a/services/web/public/coffee/main/contact-us.coffee b/services/web/public/coffee/main/contact-us.coffee new file mode 100644 index 0000000000..5519e2aa5a --- /dev/null +++ b/services/web/public/coffee/main/contact-us.coffee @@ -0,0 +1,63 @@ +define [ + "base" +], (App) -> + + + App.controller 'ContactModal', ($scope, $modal) -> + $scope.contactUsModal = () -> + modalInstance = $modal.open( + templateUrl: "supportModalTemplate" + controller: "SupportModalController" + ) + + App.controller 'SupportModalController', ($scope, $modal) -> + + $scope.form = {} + $scope.sent = false + $scope.sending = false + $scope.contactUs = -> + if !$scope.form.email? + console.log "email not set" + return + $scope.sending = true + ticketNumber = Math.floor((1 + Math.random()) * 0x10000).toString(32) + params = + email: $scope.form.email + message: $scope.form.message + subject: $scope.form.subject + " - [#{ticketNumber}]" + about : $scope.form.project_url + + Groove.createTicket params, (err, json)-> + $scope.sent = true + $scope.$apply() + + + $scope.close = () -> + $modalInstance.close() + + + + + App.controller 'UniverstiesContactController', ($scope, $modal) -> + + $scope.form = {} + $scope.sent = false + $scope.sending = false + $scope.contactUs = -> + if !$scope.form.email? + console.log "email not set" + return + $scope.sending = true + ticketNumber = Math.floor((1 + Math.random()) * 0x10000).toString(32) + params = + name: $scope.form.name || $scope.form.email + email: $scope.form.email + labels: $scope.form.source + message: "Please contact me with more details" + subject: $scope.form.subject + " - [#{ticketNumber}]" + about : "#{$scope.form.position || ''} #{$scope.form.university || ''}" + to: "support@sharelatex.com" + + Groove.createTicket params, (err, json)-> + $scope.sent = true + $scope.$apply() diff --git a/services/web/public/coffee/main/universties-site.coffee b/services/web/public/coffee/main/universties-site.coffee deleted file mode 100644 index c62f4adc50..0000000000 --- a/services/web/public/coffee/main/universties-site.coffee +++ /dev/null @@ -1,26 +0,0 @@ -define [ - "base" -], (App) -> - - App.controller 'UniverstiesContactController', ($scope, $modal) -> - - $scope.form = {} - $scope.sent = false - $scope.sending = false - $scope.contactUs = -> - if !$scope.form.email? - console.log "email not set" - return - $scope.sending = true - ticketNumber = Math.floor((1 + Math.random()) * 0x10000).toString(32) - params = - name: $scope.form.name || $scope.form.email - email: $scope.form.email - labels: $scope.form.source - message: "Please contact me with more details" - subject: $scope.form.subject + " - [#{ticketNumber}]" - about : "#{$scope.form.position || ''} #{$scope.form.university || ''}" - - Groove.createTicket params, (err, json)-> - $scope.sent = true - $scope.$apply() From 4e78e34cdf8458aaae2cc7176c7748250846fc8f Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Mon, 21 Mar 2016 11:41:05 +0000 Subject: [PATCH 4/4] finished contact us with groove for settings file: Contact --- .../infrastructure/ExpressLocals.coffee | 6 ++ services/web/app/views/contact-us-modal.jade | 5 +- services/web/app/views/layout.jade | 7 -- .../web/public/coffee/main/contact-us.coffee | 7 +- services/web/public/js/libs/groove.js | 84 +++++++++++++++++++ .../public/stylesheets/app/contact-us.less | 6 ++ services/web/public/stylesheets/style.less | 1 + 7 files changed, 101 insertions(+), 15 deletions(-) create mode 100644 services/web/public/js/libs/groove.js create mode 100644 services/web/public/stylesheets/app/contact-us.less diff --git a/services/web/app/coffee/infrastructure/ExpressLocals.coffee b/services/web/app/coffee/infrastructure/ExpressLocals.coffee index 1fd1aa10a2..faba1e4623 100644 --- a/services/web/app/coffee/infrastructure/ExpressLocals.coffee +++ b/services/web/app/coffee/infrastructure/ExpressLocals.coffee @@ -64,6 +64,12 @@ module.exports = (app, webRouter, apiRouter)-> Settings.siteUrl.substring(Settings.siteUrl.indexOf("//")+2) next() + webRouter.use (req, res, next)-> + res.locals.getUserEmail = -> + email = req?.session?.user?.email or "" + return email + next() + webRouter.use (req, res, next)-> res.locals.formatProjectPublicAccessLevel = (privilegeLevel)-> formatedPrivileges = private:"Private", readOnly:"Public: Read Only", readAndWrite:"Public: Read and Write" diff --git a/services/web/app/views/contact-us-modal.jade b/services/web/app/views/contact-us-modal.jade index f4b03ece2d..dade3a7730 100644 --- a/services/web/app/views/contact-us-modal.jade +++ b/services/web/app/views/contact-us-modal.jade @@ -6,9 +6,8 @@ script(type='text/ng-template', id='supportModalTemplate') ng-click="close()" ) × h3 Contact Us - .modal-body + .modal-body.contact-us-modal span(ng-show="sent == false") - .form-group label | Subject .form-group @@ -16,7 +15,7 @@ script(type='text/ng-template', id='supportModalTemplate') label.desc | Email .form-group - input.field.text.medium.span8.form-control(ng-model="form.email", type='email', spellcheck='false', value='', maxlength='255', tabindex='2') + input.field.text.medium.span8.form-control(ng-model="form.email", ng-init="form.email = '#{getUserEmail()}'", type='email', spellcheck='false', value='', maxlength='255', tabindex='2') label#title12.desc | Project URL (optional) .form-group diff --git a/services/web/app/views/layout.jade b/services/web/app/views/layout.jade index a0e8383a7b..f407143e9d 100644 --- a/services/web/app/views/layout.jade +++ b/services/web/app/views/layout.jade @@ -82,8 +82,6 @@ html(itemscope, itemtype='http://schema.org/Product') } body - div(ng-controller="ContactModal") - a(ng-click="contactUsModal()") contact us - if(typeof(suppressSystemMessages) == "undefined") .system-messages( @@ -130,11 +128,6 @@ html(itemscope, itemtype='http://schema.org/Product') src=jsPath+'libs/require.js?fingerprint='+fingerprint(jsPath + 'libs/require.js') ) - script(type='text/javascript'). - (function() {var s=document.createElement('script'); s.type='text/javascript';s.async=true; - s.src=('https:'==document.location.protocol?'https':'http') + '://sharelatex-accounts.groovehq.com/widgets/f5ad3b09-7d99-431b-8af5-c5725e3760ce/ticket/api.js'; - var q = document.getElementsByTagName('script')[0];q.parentNode.insertBefore(s, q);})(); - include contact-us-modal diff --git a/services/web/public/coffee/main/contact-us.coffee b/services/web/public/coffee/main/contact-us.coffee index 5519e2aa5a..b5e52800fe 100644 --- a/services/web/public/coffee/main/contact-us.coffee +++ b/services/web/public/coffee/main/contact-us.coffee @@ -11,7 +11,6 @@ define [ ) App.controller 'SupportModalController', ($scope, $modal) -> - $scope.form = {} $scope.sent = false $scope.sending = false @@ -26,6 +25,7 @@ define [ message: $scope.form.message subject: $scope.form.subject + " - [#{ticketNumber}]" about : $scope.form.project_url + labels: "support" Groove.createTicket params, (err, json)-> $scope.sent = true @@ -36,8 +36,6 @@ define [ $modalInstance.close() - - App.controller 'UniverstiesContactController', ($scope, $modal) -> $scope.form = {} @@ -52,11 +50,10 @@ define [ params = name: $scope.form.name || $scope.form.email email: $scope.form.email - labels: $scope.form.source + labels: "#{$scope.form.source} accounts" message: "Please contact me with more details" subject: $scope.form.subject + " - [#{ticketNumber}]" about : "#{$scope.form.position || ''} #{$scope.form.university || ''}" - to: "support@sharelatex.com" Groove.createTicket params, (err, json)-> $scope.sent = true diff --git a/services/web/public/js/libs/groove.js b/services/web/public/js/libs/groove.js new file mode 100644 index 0000000000..983b2a73dc --- /dev/null +++ b/services/web/public/js/libs/groove.js @@ -0,0 +1,84 @@ +!function(window) { + + window.Groove = { + + init: function(options) { + this._options = options; + if (typeof grooveOnReady != 'undefined') {grooveOnReady();} + }, + + createTicket: function(params, callback) { + var postData = serialize({ + "ticket[enduser_name]": params["name"], + "ticket[enduser_email]": params["email"], + "ticket[title]": params["subject"], + "ticket[enduser_about]": params["about"], + "ticket[label_string]": params["labels"], + "ticket[comments_attributes][0][body]": params["message"] + }); + + sendRequest(this._options.widget_ticket_url, function(req) { + if (callback) {callback(req);} + }, postData); + } + }; + + // http://www.quirksmode.org/js/xmlhttp.html + function sendRequest(url, callback, postData) { + var req = createXMLHTTPObject(); + if (!req) return; + var method = (postData) ? "POST" : "GET"; + req.open(method, url, true); + if (postData){ + try { + req.setRequestHeader('Content-type','application/x-www-form-urlencoded'); + } + catch(e) { + req.contentType = 'application/x-www-form-urlencoded'; + }; + }; + req.onreadystatechange = function () { + if (req.readyState != 4) return; + callback(req); + } + if (req.readyState == 4) return; + req.send(postData); + } + + var XMLHttpFactories = [ + function () {return new XDomainRequest()}, + function () {return new XMLHttpRequest()}, + function () {return new ActiveXObject("Msxml2.XMLHTTP")}, + function () {return new ActiveXObject("Msxml3.XMLHTTP")}, + function () {return new ActiveXObject("Microsoft.XMLHTTP")} + ]; + + function createXMLHTTPObject() { + var xmlhttp = false; + for (var i = 0; i < XMLHttpFactories.length; i++) { + try { + xmlhttp = XMLHttpFactories[i](); + } + catch (e) { + continue; + } + break; + } + return xmlhttp; + } + + function serialize(obj) { + var str = []; + for(var p in obj) { + if (obj[p]) { + str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); + } + } + return str.join("&"); +} + +if (typeof grooveOnLoad != 'undefined') {grooveOnLoad();} +}(window); + +Groove.init({"widget_ticket_url":"https://sharelatex-accounts.groovehq.com/widgets/f5ad3b09-7d99-431b-8af5-c5725e3760ce/ticket.json"}); + diff --git a/services/web/public/stylesheets/app/contact-us.less b/services/web/public/stylesheets/app/contact-us.less new file mode 100644 index 0000000000..06747b5412 --- /dev/null +++ b/services/web/public/stylesheets/app/contact-us.less @@ -0,0 +1,6 @@ +.contact-us-modal { + + textarea { + height: 120px; + } +} \ No newline at end of file diff --git a/services/web/public/stylesheets/style.less b/services/web/public/stylesheets/style.less index be7367a08b..4e9823631c 100755 --- a/services/web/public/stylesheets/style.less +++ b/services/web/public/stylesheets/style.less @@ -71,3 +71,4 @@ @import "app/templates.less"; @import "app/wiki.less"; @import "app/translations.less"; +@import "app/contact-us.less";