src/webkul/uvdesk/core-framework/Resources/views/login.html.twig line 5

Open in your IDE?
  1. {% extends "@UVDeskCoreFramework//Templates//layout.html.twig" %}
  2. {% block title %}Login{% endblock %}
  3. {% set recaptchaDetail = recaptcha_service.getRecaptchaDetails() %}
  4. {% block templateCSS %}
  5. <style>
  6. #loginForm h1 {
  7. font-size: 28px;
  8. color: #6F6F6F;
  9. font-weight: 600;
  10. margin: 0px 0px 10px 0px;
  11. }
  12. .forgot-password-cta {
  13. position: absolute;
  14. font-size: 15px !important;
  15. right: 0px;
  16. top: 0px;
  17. }
  18. </style>
  19. {% endblock %}
  20. {% block pageWrapper %}
  21. <div class="uv-large-box-plank">
  22. <div class="uv-large-box-rt">
  23. <div class="uv-center-box uv-text-center">
  24. <form action="" method="post" id="loginForm">
  25. <div class="uv-adjacent-center">
  26. <h1>{{ "Log in to your"|trans }} <span class="uv-brand">{{ website.name }}</span></h1>
  27. <p>{{ "Enter your credentials below to gain access to your helpdesk account."|trans }}</p>
  28. <div class="uv-adjacent-form">
  29. <div class="uv-adjacent-element-block">
  30. <label>{{ "Email" |trans}}</label>
  31. <div class="uv-max-field">
  32. <input type="email" name="_username">
  33. </div>
  34. </div>
  35. <div class="uv-adjacent-element-block" style="position: relative;">
  36. <label>{{ "Password" |trans}}</label>
  37. <div class="uv-max-field">
  38. <a class="forgot-password-cta" href="{{ path('helpdesk_forgot_account_password') }}" tabindex="-1">{{ "Forgot Password?" |trans}}</a>
  39. <input type="password" name="_password">
  40. </div>
  41. </div>
  42. <div class="uv-adjacent-element-block">
  43. <label>
  44. <div class="uv-checkbox">
  45. <input type="checkbox" name="_remember_me" checked>
  46. <span class="uv-checkbox-view"></span>
  47. </div>
  48. <span class="uv-checkbox-label">{{ "Keep me logged in" |trans}}</span>
  49. </label>
  50. </div>
  51. <div class="uv-adjacent-element-block">
  52. {% if recaptchaDetail and recaptchaDetail.isActive == true %}
  53. <div class="clearfix"></div>
  54. <div class="g-recaptcha" data-sitekey="{{ recaptchaDetail.siteKey }}"></div>
  55. <div class="clearfix"></div>
  56. {% else %}
  57. <!-- Recaptcha will not support -->
  58. {% endif %}
  59. </div>
  60. <button class="uv-btn">{{ 'Sign In'|trans }}</button>
  61. </div>
  62. </div>
  63. </div>
  64. </form>
  65. </div>
  66. <div class="uv-large-box-lt">
  67. <div class="uv-center-box uv-text-center">
  68. <a href="https://www.uvdesk.com">
  69. <img alt="UVdesk" title="UVdesk" src="{{ app.request.scheme ~'://' ~ app.request.httpHost ~ asset('') }}{{ websiteConfiguration.website.logo }}" alt="{{ websiteConfiguration.website.name}}">
  70. </a>
  71. </div>
  72. </div>
  73. </div>
  74. {% endblock %}
  75. {% block footer %}
  76. {{ parent() }}
  77. {% if recaptchaDetail and recaptchaDetail.isActive == true %}
  78. <script src='https://www.google.com/recaptcha/api.js'></script>
  79. {% endif %}
  80. <script type="text/javascript">
  81. $(function () {
  82. _.extend(Backbone.Validation.callbacks, {
  83. valid : function (view, attr, selector) {
  84. var $el = view.$('[name="' + attr + '"]');
  85. $el.removeClass('uv-field-error');
  86. $el.parents('.uv-adjacent-element-block').find('.uv-field-message').remove();
  87. },
  88. invalid : function (view, attr, error, selector) {
  89. var $el = view.$('[name="' + attr + '"]');
  90. $el.addClass('uv-field-error');
  91. $el.parents('.uv-adjacent-element-block').find('.uv-field-message').remove();
  92. $el.parents('.uv-adjacent-element-block').append("<span class='uv-field-message'>" + error + "</span>");
  93. }
  94. });
  95. var LoginModel = Backbone.Model.extend({
  96. validation: {
  97. '_username': [{
  98. required: true,
  99. msg: '{{ "This field is mandatory"|trans }}'
  100. },{
  101. pattern: 'email',
  102. msg: '{{ "This is not a valid email address"|trans }}'
  103. }],
  104. '_password': [{
  105. required: true,
  106. msg: '{{"This field is mandatory"|trans }}'
  107. },{
  108. minLength: 8,
  109. msg: '{{"Password must contains 8 Characters"|trans }}'
  110. }],
  111. {% if recaptchaDetail and recaptchaDetail.isActive == true %}
  112. 'g-recaptcha-response' : {
  113. fn: function(value) {
  114. if(grecaptcha.getResponse().length > 0)
  115. return false;
  116. else
  117. return true;
  118. },
  119. msg : '{{ "Please select CAPTCHA"|trans }}'
  120. }
  121. {% endif %}
  122. }
  123. });
  124. var LoginForm = Backbone.View.extend({
  125. events: {
  126. 'click .uv-btn': 'submit',
  127. 'blur input': 'formChanegd'
  128. },
  129. initialize: function () {
  130. Backbone.Validation.bind(this);
  131. {% if error.messageKey is defined %}
  132. app.appView.renderResponseAlert({'alertClass': 'danger', 'alertMessage': '{{ error.messageKey|trans}}'})
  133. {% endif %}
  134. },
  135. formChanegd: function(e) {
  136. this.model.set(Backbone.$(e.currentTarget).attr('name'), Backbone.$(e.currentTarget).val())
  137. this.model.isValid([Backbone.$(e.currentTarget).attr('name')])
  138. },
  139. submit: function (e) {
  140. e.preventDefault();
  141. var data = this.$el.serializeObject();
  142. this.model.set(data);
  143. if(this.model.isValid(true)){
  144. this.$el.submit();
  145. }
  146. }
  147. });
  148. var Login = new LoginForm({
  149. el: $('#loginForm'),
  150. model: new LoginModel()
  151. });
  152. });
  153. </script>
  154. {% endblock %}