Move contact form

This commit is contained in:
Jessica Lawshe 2018-05-23 16:02:02 -05:00
parent 103ddd79ef
commit 868083676f
5 changed files with 5 additions and 143 deletions

View file

@ -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 []

View file

@ -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")}

View file

@ -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

View file

@ -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 = {}

View file

@ -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