Commit 8a78daa8 by Tasawer Nawaz

update design of support form + form will be shown only to logged in users

LEARNER-3288
parent 05673e7e
...@@ -3,7 +3,28 @@ ...@@ -3,7 +3,28 @@
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
function LoggedInUser({ userInformation }) { import FileUpload from './file_upload';
function LoggedInUser({ userInformation, setErrorState, zendeskApiHost, accessToken, submitForm }) {
let courseElement;
if (userInformation.enrollments) {
courseElement = (<div>
<label className="label-course" htmlFor="course">{gettext('Course Name')}</label>
<select className="form-control select-course" id="course">
{userInformation.enrollments.map(enrollment =>
(<option key={enrollment.course_id} value={enrollment.course_id}>
{enrollment.course_name}
</option>),
)}
</select>
</div>);
} else {
courseElement = (<div>
<label htmlFor="course">{gettext('Course Name')}<span> {gettext('(Optional)')}</span></label>
<input type="text" className="form-control" id="course" />
</div>);
}
return (<div> return (<div>
<div className="row"> <div className="row">
<div <div
...@@ -18,32 +39,60 @@ function LoggedInUser({ userInformation }) { ...@@ -18,32 +39,60 @@ function LoggedInUser({ userInformation }) {
<div className="row"> <div className="row">
<div className="col-sm-12"> <div className="col-sm-12">
<div className="form-group"> <div className="form-group">
{userInformation.enrollments.length === 0 && {courseElement}
<div> </div>
<label htmlFor="course">{gettext('Course Name')}<span> {gettext('(Optional)')}</span></label> </div>
<input type="text" className="form-control" id="course" /> </div>
</div>
} <div className="row">
{userInformation.enrollments.length > 0 && <div className="col-sm-12">
<div> <div className="form-group">
<label className="label-course" htmlFor="course">{gettext('Course Name')}</label> <label htmlFor="subject">{gettext('Subject')}</label>
<select className="form-control select-course" id="course"> <input type="text" className="form-control" id="subject" />
{userInformation.enrollments.map(enrollment =>
(<option key={enrollment.course_id} value={enrollment.course_id}>
{enrollment.course_name}
</option>),
)}
</select>
</div>
}
</div> </div>
</div> </div>
</div> </div>
<div className="row">
<div className="col-sm-12">
<div className="form-group">
<label htmlFor="message">{gettext('Details')}</label>
<p
className="message-desc"
>{gettext('The more you tell us, the more quickly and helpfully we can respond!')}</p>
<textarea
aria-describedby="message"
className="form-control"
rows="7"
id="message"
/>
</div>
</div>
</div>
<FileUpload
setErrorState={setErrorState}
zendeskApiHost={zendeskApiHost}
accessToken={accessToken}
/>
<div className="row">
<div className="col-sm-12">
<button
className="btn btn-primary btn-submit"
onClick={submitForm}
>{gettext('Submit')}</button>
</div>
</div>
</div>); </div>);
} }
LoggedInUser.propTypes = { LoggedInUser.propTypes = {
setErrorState: PropTypes.func.isRequired,
submitForm: PropTypes.func.isRequired,
userInformation: PropTypes.arrayOf(PropTypes.object).isRequired, userInformation: PropTypes.arrayOf(PropTypes.object).isRequired,
zendeskApiHost: PropTypes.string.isRequired,
accessToken: PropTypes.string.isRequired,
}; };
export default LoggedInUser; export default LoggedInUser;
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
function LoggedOutUser({ platformName, loginUrl }) { function LoggedOutUser({ platformName, loginQuery }) {
return ( return (
<div> <div>
<div className="row"> <div className="row">
...@@ -14,27 +14,13 @@ function LoggedOutUser({ platformName, loginUrl }) { ...@@ -14,27 +14,13 @@ function LoggedOutUser({ platformName, loginUrl }) {
<div className="row"> <div className="row">
<div className="col-sm-12"> <div className="col-sm-12">
<a href={loginUrl} className="btn btn-primary btn-signin">{gettext('Sign in')}</a> <a href={`/login${loginQuery}`} className="btn btn-primary btn-signin">{gettext('Sign in')}</a>
</div> </div>
</div> </div>
<div className="row"> <div className="row">
<div className="col-sm-12"> <div className="col-sm-12">
<div className="form-group"> <a className="create-account" href={`/register${loginQuery}`}>{gettext(`Create an ${platformName} account`)}</a>
<label htmlFor="email">{gettext('Your Email Address')}</label>
<input type="text" className="form-control" id="email" />
</div>
</div>
</div>
<div className="row">
<div className="col-sm-12">
<div className="form-group">
<label
htmlFor="course"
>{gettext('Course Name')}<span> {gettext('(Optional)')}</span></label>
<input type="text" className="form-control" id="course" />
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -43,7 +29,7 @@ function LoggedOutUser({ platformName, loginUrl }) { ...@@ -43,7 +29,7 @@ function LoggedOutUser({ platformName, loginUrl }) {
LoggedOutUser.propTypes = { LoggedOutUser.propTypes = {
platformName: PropTypes.string.isRequired, platformName: PropTypes.string.isRequired,
loginUrl: PropTypes.string.isRequired, loginQuery: PropTypes.string.isRequired,
}; };
export default LoggedOutUser; export default LoggedOutUser;
...@@ -6,7 +6,6 @@ import PropTypes from 'prop-types'; ...@@ -6,7 +6,6 @@ import PropTypes from 'prop-types';
import React from 'react'; import React from 'react';
import ReactDOM from 'react-dom'; import ReactDOM from 'react-dom';
import FileUpload from './file_upload';
import ShowErrors from './errors_list'; import ShowErrors from './errors_list';
import LoggedInUser from './logged_in_user'; import LoggedInUser from './logged_in_user';
import LoggedOutUser from './logged_out_user'; import LoggedOutUser from './logged_out_user';
...@@ -47,19 +46,14 @@ class RenderForm extends React.Component { ...@@ -47,19 +46,14 @@ class RenderForm extends React.Component {
let course; let course;
if ($userInfo.length) { data.requester = $userInfo.data('email');
data.requester = $userInfo.data('email'); course = $course.find(':selected').val();
course = $course.find(':selected').text(); if (!course) {
if (!course.length) {
course = $course.val();
}
} else {
data.requester = $('#email').val();
course = $course.val(); course = $course.val();
} }
data.custom_fields = [{ data.custom_fields = [{
id: this.props.context.customFields.course, id: this.props.context.customFields.course_id,
value: course, value: course,
}]; }];
...@@ -128,11 +122,17 @@ class RenderForm extends React.Component { ...@@ -128,11 +122,17 @@ class RenderForm extends React.Component {
renderSupportForm() { renderSupportForm() {
let userElement; let userElement;
if (this.props.context.user) { if (this.props.context.user) {
userElement = <LoggedInUser userInformation={this.props.context.user} />; userElement = (<LoggedInUser
userInformation={this.props.context.user}
zendeskApiHost={this.props.context.zendeskApiHost}
accessToken={this.props.context.accessToken}
setErrorState={this.setErrorState}
submitForm={this.submitForm}
/>);
} else { } else {
userElement = (<LoggedOutUser userElement = (<LoggedOutUser
platformName={this.props.context.platformName} platformName={this.props.context.platformName}
loginUrl={this.props.context.loginQuery} loginQuery={this.props.context.loginQuery}
/>); />);
} }
...@@ -151,7 +151,7 @@ class RenderForm extends React.Component { ...@@ -151,7 +151,7 @@ class RenderForm extends React.Component {
<div className="row"> <div className="row">
<div className="col-sm-12"> <div className="col-sm-12">
<p>{gettext('Your question might have already been answered.')}</p> <p>{gettext('Find answers to the top questions asked by learners.')}</p>
</div> </div>
</div> </div>
...@@ -165,47 +165,6 @@ class RenderForm extends React.Component { ...@@ -165,47 +165,6 @@ class RenderForm extends React.Component {
</div> </div>
{userElement} {userElement}
<div className="row">
<div className="col-sm-12">
<div className="form-group">
<label htmlFor="subject">{gettext('Subject')}</label>
<input type="text" className="form-control" id="subject" />
</div>
</div>
</div>
<div className="row">
<div className="col-sm-12">
<div className="form-group">
<label htmlFor="message">{gettext('Details')}</label>
<p
className="message-desc"
>{gettext('The more you tell us, the more quickly and helpfully we can respond!')}</p>
<textarea
aria-describedby="message"
className="form-control"
rows="7"
id="message"
/>
</div>
</div>
</div>
<FileUpload
setErrorState={this.setErrorState}
zendeskApiHost={this.props.context.zendeskApiHost}
accessToken={this.props.context.accessToken}
/>
<div className="row">
<div className="col-sm-12">
<button
className="btn btn-primary btn-submit"
onClick={this.submitForm}
>{gettext('Submit')}</button>
</div>
</div>
</div> </div>
); );
} }
......
...@@ -248,7 +248,7 @@ ...@@ -248,7 +248,7 @@
.btn-signin { .btn-signin {
width: $baseline * 8; width: $baseline * 8;
color: $white; color: $white;
margin-bottom: ($baseline * 2) + 10; margin-bottom: $baseline;
&:hover, &:hover,
&:focus { &:focus {
...@@ -256,6 +256,12 @@ ...@@ -256,6 +256,12 @@
} }
} }
a.create-account {
color: $m-blue-d6;
text-decoration: underline !important;
font-size: $support-form-base-font-size + 4;
}
input[type='text'] { input[type='text'] {
font-size: $support-form-base-font-size - 2; font-size: $support-form-base-font-size - 2;
font-family: $font-family-sans-serif; font-family: $font-family-sans-serif;
......
...@@ -13,7 +13,7 @@ from openedx.core.djangolib.js_utils import js_escaped_string, dump_js_escaped_j ...@@ -13,7 +13,7 @@ from openedx.core.djangolib.js_utils import js_escaped_string, dump_js_escaped_j
<%block name="title"> <%block name="title">
<title> <title>
${_("{platform_name} Support: Contact Us").format(platform_name=platform_name)} ${_("Contact {platform_name} Support").format(platform_name=platform_name)}
</title> </title>
</%block> </%block>
...@@ -30,7 +30,7 @@ from openedx.core.djangolib.js_utils import js_escaped_string, dump_js_escaped_j ...@@ -30,7 +30,7 @@ from openedx.core.djangolib.js_utils import js_escaped_string, dump_js_escaped_j
var context = { var context = {
'platformName': "${platform_name | n, js_escaped_string}", 'platformName': "${platform_name | n, js_escaped_string}",
'marketingUrl': "${marketing_link('FAQ') | n, js_escaped_string}", 'marketingUrl': "${marketing_link('FAQ') | n, js_escaped_string}",
'loginQuery': "/login${login_query() | n, js_escaped_string}", 'loginQuery': "${login_query() | n, js_escaped_string}",
'dashboardUrl': "${reverse('dashboard') | n, js_escaped_string}", 'dashboardUrl': "${reverse('dashboard') | n, js_escaped_string}",
'homepageUrl': "${marketing_link('ROOT') | n, js_escaped_string}", 'homepageUrl': "${marketing_link('ROOT') | n, js_escaped_string}",
'zendeskApiHost': "${zendesk_api_host | n, js_escaped_string}", 'zendeskApiHost': "${zendesk_api_host | n, js_escaped_string}",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment