mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-30 04:45:21 -05:00
Move contact form
This commit is contained in:
parent
103ddd79ef
commit
868083676f
5 changed files with 5 additions and 143 deletions
|
@ -30,7 +30,8 @@ module.exports = Modules =
|
||||||
for module in @modules
|
for module in @modules
|
||||||
for view, partial of module.viewIncludes or {}
|
for view, partial of module.viewIncludes or {}
|
||||||
@viewIncludes[view] ||= []
|
@viewIncludes[view] ||= []
|
||||||
@viewIncludes[view].push pug.compile(fs.readFileSync(Path.join(MODULE_BASE_PATH, module.name, "app/views", partial + ".pug")), doctype: "html")
|
filePath = Path.join(MODULE_BASE_PATH, module.name, "app/views", partial + ".pug")
|
||||||
|
@viewIncludes[view].push pug.compileFile(filePath, doctype: "html")
|
||||||
|
|
||||||
moduleIncludes: (view, locals) ->
|
moduleIncludes: (view, locals) ->
|
||||||
compiledPartials = Modules.viewIncludes[view] or []
|
compiledPartials = Modules.viewIncludes[view] or []
|
||||||
|
|
|
@ -1,67 +0,0 @@
|
||||||
script(type='text/ng-template', id='supportModalTemplate')
|
|
||||||
.modal-header
|
|
||||||
button.close(
|
|
||||||
type="button"
|
|
||||||
data-dismiss="modal"
|
|
||||||
ng-click="close()"
|
|
||||||
) ×
|
|
||||||
h3 #{translate("contact_us")}
|
|
||||||
.modal-body.contact-us-modal
|
|
||||||
form(name="contactForm")
|
|
||||||
span(ng-show="sent == false")
|
|
||||||
.alert.alert-danger(ng-show="error") Something went wrong sending your request :(
|
|
||||||
label
|
|
||||||
| #{translate("subject")}
|
|
||||||
.form-group
|
|
||||||
input.field.text.medium.span8.form-control(
|
|
||||||
name="subject",
|
|
||||||
required
|
|
||||||
ng-model="form.subject",
|
|
||||||
ng-model-options="{ updateOn: 'default blur', debounce: {'default': 350, 'blur': 0} }"
|
|
||||||
maxlength='255',
|
|
||||||
tabindex='1',
|
|
||||||
onkeyup='')
|
|
||||||
.contact-suggestions(ng-show="suggestions.length")
|
|
||||||
p.contact-suggestion-label !{translate("kb_suggestions_enquiry", { kbLink: "<a href='learn/kb' target='_blank'>" + translate("knowledge_base") + "</a>" })}
|
|
||||||
ul.contact-suggestion-list
|
|
||||||
li(ng-repeat="suggestion in suggestions")
|
|
||||||
a.contact-suggestion-list-item(ng-href="{{ suggestion.url }}", ng-click="clickSuggestionLink(suggestion.url);" target="_blank")
|
|
||||||
span(ng-bind-html="suggestion.name")
|
|
||||||
i.fa.fa-angle-right
|
|
||||||
label.desc(ng-show="'"+getUserEmail()+"'.length < 1")
|
|
||||||
| #{translate("email")}
|
|
||||||
.form-group(ng-show="'"+getUserEmail()+"'.length < 1")
|
|
||||||
input.field.text.medium.span8.form-control(
|
|
||||||
name="email",
|
|
||||||
required
|
|
||||||
ng-model="form.email",
|
|
||||||
ng-init="form.email = '"+getUserEmail()+"'",
|
|
||||||
type='email', spellcheck='false',
|
|
||||||
value='',
|
|
||||||
maxlength='255',
|
|
||||||
tabindex='2')
|
|
||||||
label#title12.desc
|
|
||||||
| #{translate("project_url")} (#{translate("optional")})
|
|
||||||
.form-group
|
|
||||||
input.field.text.medium.span8.form-control(ng-model="form.project_url", tabindex='3', onkeyup='')
|
|
||||||
label.desc
|
|
||||||
| #{translate("contact_message_label")}
|
|
||||||
.form-group
|
|
||||||
textarea.field.text.medium.span8.form-control(
|
|
||||||
name="body",
|
|
||||||
required
|
|
||||||
ng-model="form.message",
|
|
||||||
type='text',
|
|
||||||
value='',
|
|
||||||
tabindex='4',
|
|
||||||
onkeyup=''
|
|
||||||
)
|
|
||||||
.form-group.text-center
|
|
||||||
input.btn-success.btn.btn-lg(
|
|
||||||
type='submit',
|
|
||||||
ng-disabled="contactForm.$invalid || sending",
|
|
||||||
ng-click="contactUs()"
|
|
||||||
value=translate("contact_us")
|
|
||||||
)
|
|
||||||
span(ng-show="sent")
|
|
||||||
p #{translate("request_sent_thank_you")}
|
|
|
@ -147,7 +147,7 @@ html(itemscope, itemtype='http://schema.org/Product')
|
||||||
src=buildJsPath('libs/require.js', {hashedPath:true})
|
src=buildJsPath('libs/require.js', {hashedPath:true})
|
||||||
)
|
)
|
||||||
|
|
||||||
include contact-us-modal
|
!= moduleIncludes("contactModal", locals)
|
||||||
include v1-tooltip
|
include v1-tooltip
|
||||||
include sentry
|
include sentry
|
||||||
|
|
||||||
|
|
|
@ -1,79 +1,7 @@
|
||||||
define [
|
define [
|
||||||
"base"
|
"base"
|
||||||
"libs/platform"
|
"libs/platform"
|
||||||
"services/algolia-search"
|
|
||||||
], (App, platform) ->
|
], (App, platform) ->
|
||||||
App.controller 'ContactModal', ($scope, $modal) ->
|
|
||||||
$scope.contactUsModal = () ->
|
|
||||||
modalInstance = $modal.open(
|
|
||||||
templateUrl: "supportModalTemplate"
|
|
||||||
controller: "SupportModalController"
|
|
||||||
)
|
|
||||||
|
|
||||||
App.controller 'SupportModalController', ($scope, $modalInstance, algoliaSearch, event_tracking) ->
|
|
||||||
$scope.form = {}
|
|
||||||
$scope.sent = false
|
|
||||||
$scope.sending = false
|
|
||||||
$scope.suggestions = [];
|
|
||||||
|
|
||||||
_handleSearchResults = (success, results) ->
|
|
||||||
suggestions = for hit in results.hits
|
|
||||||
page_underscored = hit.pageName.replace(/\s/g,'_')
|
|
||||||
|
|
||||||
suggestion =
|
|
||||||
url :"/learn/kb/#{page_underscored}"
|
|
||||||
name : hit._highlightResult.pageName.value
|
|
||||||
|
|
||||||
event_tracking.sendMB "contact-form-suggestions-shown" if results.hits.length
|
|
||||||
|
|
||||||
$scope.$applyAsync () ->
|
|
||||||
$scope.suggestions = suggestions
|
|
||||||
|
|
||||||
$scope.contactUs = ->
|
|
||||||
if !$scope.form.email? or $scope.form.email == ""
|
|
||||||
console.log "email not set"
|
|
||||||
return
|
|
||||||
$scope.sending = true
|
|
||||||
ticketNumber = Math.floor((1 + Math.random()) * 0x10000).toString(32)
|
|
||||||
message = $scope.form.message
|
|
||||||
if $scope.form.project_url?
|
|
||||||
message = "#{message}\n\n project_url = #{$scope.form.project_url}"
|
|
||||||
params =
|
|
||||||
email: $scope.form.email
|
|
||||||
message: message or ""
|
|
||||||
subject: $scope.form.subject + " - [#{ticketNumber}]"
|
|
||||||
labels: "support"
|
|
||||||
about: "<div>browser: #{platform?.name} #{platform?.version}</div>
|
|
||||||
<div>os: #{platform?.os?.family} #{platform?.os?.version}</div>"
|
|
||||||
|
|
||||||
Groove.createTicket params, (response)->
|
|
||||||
$scope.sending = false
|
|
||||||
if response.responseText == "" # Blocked request or similar
|
|
||||||
$scope.error = true
|
|
||||||
else
|
|
||||||
data = JSON.parse(response.responseText)
|
|
||||||
if data.errors?
|
|
||||||
$scope.error = true
|
|
||||||
else
|
|
||||||
$scope.sent = true
|
|
||||||
$scope.$apply()
|
|
||||||
|
|
||||||
$scope.$watch "form.subject", (newVal, oldVal) ->
|
|
||||||
if newVal and newVal != oldVal and newVal.length > 3
|
|
||||||
algoliaSearch.searchKB newVal, _handleSearchResults, {
|
|
||||||
hitsPerPage: 3
|
|
||||||
typoTolerance: 'strict'
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$scope.suggestions = [];
|
|
||||||
|
|
||||||
$scope.clickSuggestionLink = (url) ->
|
|
||||||
event_tracking.sendMB "contact-form-suggestions-clicked", { url }
|
|
||||||
|
|
||||||
$scope.close = () ->
|
|
||||||
$modalInstance.close()
|
|
||||||
|
|
||||||
|
|
||||||
App.controller 'UniverstiesContactController', ($scope, $modal, $http) ->
|
App.controller 'UniverstiesContactController', ($scope, $modal, $http) ->
|
||||||
|
|
||||||
$scope.form = {}
|
$scope.form = {}
|
||||||
|
|
|
@ -8,7 +8,7 @@ define [
|
||||||
kbIdx = client.initIndex(window.sharelatex.algolia?.indexes?.kb)
|
kbIdx = client.initIndex(window.sharelatex.algolia?.indexes?.kb)
|
||||||
|
|
||||||
service =
|
service =
|
||||||
searchWiki: wikiIdx.search.bind(wikiIdx)
|
searchWiki: if wikiIdx then wikiIdx.search.bind(wikiIdx) else null
|
||||||
searchKB: kbIdx.search.bind(kbIdx)
|
searchKB: if kbIdx then kbIdx.search.bind(kbIdx) else null
|
||||||
|
|
||||||
return service
|
return service
|
Loading…
Reference in a new issue