<commit_before>extends /templates/base-flat.jade

block content

  #site-content.style-ozaria
    if me.get('anonymous')
      .alert.alert-danger(data-i18n="account_settings.not_logged_in") Log in or create an account to change your settings.

    else
      .row
        .col-md-6
          .panel.panel-default
            .panel-heading
              .panel-title(data-i18n="account_settings.me_tab")
            .panel-body
              .form
                - var name = me.get('name') || '';
                - var firstName = me.get('firstName') || '';
                - var lastName = me.get('lastName') || '';
                - var email = me.get('email') || '';
                - var admin = me.get('permissions', true).indexOf('admin') != -1;
                - var godmode = me.get('permissions', true).indexOf('godmode') != -1;
                .form-group
                  label.control-label(for="name", data-i18n="general.username")
                  input#name-input.form-control(name="name", type="text", value="#{name}")
                .form-group
                  label.control-label(for="email")
                    span(data-i18n="general.email")
                  unless me.get('emailVerified')
                    span.spl (
                    span.spr(data-i18n="account.not_yet_verified")
                    a.resend-verification-email
                      span.resend-text(data-i18n="account.resend_email")
                      span.sent-text.hide(data-i18n="account.email_sent")
                    span )
                  input#email.form-control(name="email", type="text", value="#{email}")
                .row
                  .form-group.col-sm-6
                    label.control-label(for="firstName", data-i18n="general.first_name")
                    input#first-name-input.form-control(name="firstName", type="text", value="#{firstName}")
                  .form-group.col-sm-6
                    if me.isStudent()
                      label.control-label(for="lastName", data-i18n="general.last_initial")
                      input#last-name-input.form-control(name="lastName", type="text", value="#{lastName}", maxlength="1")
                    else
                      label.control-label(for="lastName", data-i18n="general.last_name")
                      input#last-name-input.form-control(name="lastName", type="text", value="#{lastName}")
                if !isProduction
                  .form-group.checkbox
                    label(for="admin", data-i18n="account_settings.admin")
                    input#admin(name="admin", type="checkbox", checked=admin)
                  .form-group.checkbox
                    label(for="godmode", data-i18n="account_settings.god_mode")
                    input#godmode(name="godmode", type="checkbox", checked=godmode)
                if me.hasSubscription()
                  .form-group
                    label(data-i18n="account.subscription")
                    br
                    span.spr ✓
                    span(data-i18n="account.active")
                    span.spr= '.'
                    // TODO: show better summary states, like active, subscribed, free, and active until.
                    a(href="/account/subscription", data-i18n="account_settings.manage_subscription")

          // TODO: allow users to pick their avatars from our preset list now that we killed Gravatar and file uploads
          //.panel.panel-default
          //  .panel-heading
          //    .panel-title(data-i18n="account_settings.picture_tab")
          //  #profile-photo-panel-body.panel-body
          //    img.profile-photo(src=me.getPhotoURL(230), draggable="false")
          //    .text-center
          //      a(href="https://gravatar.com/", data-i18n="account_settings.use_gravatar")


          //hide password setting for Tarena users
          if !me.isCreatedByTarena()
            .panel.panel-default
              .panel-heading
                .panel-title(data-i18n="general.password")
              .panel-body
                .form
                  .form-group
                    label.control-label(for="password", data-i18n="account_settings.new_password") New Password
                    input#password.form-control(name="password", type="password")
                  .form-group
                    label.control-label(for="password2", data-i18n="account_settings.new_password_verify") Verify
                    input#password2.form-control(name="password2", type="password")

          .panel.panel-default
            .panel-heading
              .panel-title#delete-account-panel-title(data-i18n="account_settings.delete_account_tab")
            .panel-body
              .form#delete-account-form
                .form-group
                  label.control-label(for="delete-account-email-or-username", data-i18n="account_settings.type_in_email")
                  input#delete-account-email-or-username.form-control(name="emailOrUsername")
                .form-group
                  label.control-label(for="delete-account-password", data-i18n="account_settings.type_in_password")
                  input#delete-account-password.form-control(name="password", type="password")
              button#delete-account-btn.btn.form-control.btn-primary(data-i18n="account_settings.delete_this_account")

        .col-md-6

          - var subs = view.getEmailSubsDict();
              
          #email-panel.panel.panel-default
            .panel-heading
              .panel-title(data-i18n="account_settings.emails_tab")
            .panel-body
          
              .form
                .form-group.checkbox
                  label.control-label(for="email_generalNews", data-i18n="account_settings.email_announcements") Announcements
                  input#email_generalNews(name="email_generalNews", type="checkbox", checked=subs.generalNews)
                  span.help-block(data-i18n="account_settings.email_announcements_description") Get emails on the latest news and developments at CodeCombat.
              
              hr
              h4(data-i18n="account_settings.email_notifications") Notifications
              span(data-i18n="account_settings.email_notifications_summary") Controls for personalized, automatic email notifications related to your CodeCombat activity.
              
              .form
                .form-group.checkbox
                  label.control-label(for="email_anyNotes", data-i18n="account_settings.email_any_notes") Any Notifications
                  input#email_anyNotes(name="email_anyNotes", type="checkbox", checked=subs.anyNotes)
                  span.help-block(data-i18n="account_settings.email_any_notes_description") Disable to stop all activity notification emails.
                
                fieldset#specific-notification-settings
          
                  .form-group.checkbox
                    label.control-label(for="email_recruitNotes", data-i18n="account_settings.email_recruit_notes") Job Opportunities
                    input#email_recruitNotes(name="email_recruitNotes", type="checkbox", checked=subs.recruitNotes)
                    span.help-block(data-i18n="account_settings.email_recruit_notes_description") If you play really well, we may contact you about getting you a (better) job.
          
              hr
          
              h4(data-i18n="account_settings.contributor_emails") Contributor Class Emails
              span(data-i18n="account_settings.contribute_prefix") We\'re looking for people to join our party! Check out the 
              a(href="/contribute", data-i18n="account_settings.contribute_page") contribute page
              span(data-i18n="account_settings.contribute_suffix")  to find out more.
          
              .form
                .form-group.checkbox
                  label.control-label(for="email_archmageNews")
                    span(data-i18n="classes.archmage_title")
                      | Archmage
                    |  
                    span(data-i18n="classes.archmage_title_description")
                      | (Coder)
                  input#email_archmageNews(name="email_archmageNews", type="checkbox", checked=subs.archmageNews)
                  span(data-i18n="contribute.archmage_subscribe_desc").help-block Get emails about general news and announcements about CodeCombat.
          
                .form-group.checkbox
                  label.control-label(for="email_artisanNews")
                    span(data-i18n="classes.artisan_title")
                      | Artisan
                    |  
                    span(data-i18n="classes.artisan_title_description")
                      | (Level Builder)
                  input#email_artisanNews(name="email_artisanNews", type="checkbox", checked=subs.artisanNews)
                  span(data-i18n="contribute.artisan_subscribe_desc").help-block Get emails on level editor updates and announcements.
          
                .form-group.checkbox
                  label.control-label(for="email_adventurerNews")
                    span(data-i18n="classes.adventurer_title")
                      | Adventurer
                    |  
                    span(data-i18n="classes.adventurer_title_description") 
                      | (Level Playtester)
                  input#email_adventurerNews(name="email_adventurerNews", type="checkbox", checked=subs.adventurerNews)
                  span(data-i18n="contribute.adventurer_subscribe_desc").help-block Get emails when there are new levels to test.
          
                .form-group.checkbox
                  label.control-label(for="email_scribeNews")
                    span(data-i18n="classes.scribe_title")
                      | Scribe
                    |  
                    span(data-i18n="classes.scribe_title_description")
                      | (Article Editor)
                  input#email_scribeNews(name="email_scribeNews", type="checkbox", checked=subs.scribeNews)
                  span(data-i18n="contribute.scribe_subscribe_desc").help-block Get emails about article writing announcements.
          
                .form-group.checkbox
                  label.control-label(for="email_diplomatNews")
                    span(data-i18n="classes.diplomat_title")
                      | Diplomat
                    |  
                    span(data-i18n="classes.diplomat_title_description")
                      | (Translator)
                  input#email_diplomatNews(name="email_diplomatNews", type="checkbox", checked=subs.diplomatNews)
                  span(data-i18n="contribute.diplomat_subscribe_desc").help-block Get emails about i18n developments and, eventually, levels to translate.

                .form-group.checkbox
                  label.control-label(for="email_ambassadorNews")
                    span(data-i18n="classes.ambassador_title")
                      | Ambassador
                    |  
                    span(data-i18n="classes.ambassador_title_description")
                      | (Support)
                  input#email_ambassadorNews(name="email_ambassadorNews", type="checkbox", checked=subs.ambassadorNews)
                  span(data-i18n="contribute.ambassador_subscribe_desc").help-block Get emails on support updates and multiplayer developments.

                .form-group.checkbox
                  label.control-label(for="email_teacherNews")
                    span(data-i18n="classes.teacher_title")
                  input#email_teacherNews(name="email_teacherNews", type="checkbox", checked=subs.teacherNews)
                  span(data-i18n="contribute.teacher_subscribe_desc").help-block

                button#toggle-all-btn.btn.btn-primary.form-control(data-i18n="account_settings.email_toggle") Toggle All

          .panel.panel-default
            .panel-heading
              .panel-title#reset-progress-panel-title(data-i18n="account_settings.reset_progress_tab")
            .panel-body
              .form#reset-progress-form
                .form-group
                  label.control-label(for="email-reset-progress", data-i18n="account_settings.type_in_email_progress")
                  input#email-reset-progress.form-control(name="emailOrUsername")
                .form-group
                  label.control-label(for="password-reset-progress", data-i18n="account_settings.type_in_password")
                  input#password-reset-progress.form-control(name="password", type="password")
              button#reset-progress-btn.btn.form-control.btn-primary(data-i18n="account_settings.reset_your_progress")

      .clearfix

  if !me.get('anonymous', true)
    #save-button-container
      button#save-button.btn-lg.btn.disabled(data-i18n="delta.no_changes" disabled="true") No Changes

block footer
<commit_msg>Allow setting of full last name for students in /account/settings<commit_after>extends /templates/base-flat.jade

block content

  #site-content.style-ozaria
    if me.get('anonymous')
      .alert.alert-danger(data-i18n="account_settings.not_logged_in") Log in or create an account to change your settings.

    else
      .row
        .col-md-6
          .panel.panel-default
            .panel-heading
              .panel-title(data-i18n="account_settings.me_tab")
            .panel-body
              .form
                - var name = me.get('name') || '';
                - var firstName = me.get('firstName') || '';
                - var lastName = me.get('lastName') || '';
                - var email = me.get('email') || '';
                - var admin = me.get('permissions', true).indexOf('admin') != -1;
                - var godmode = me.get('permissions', true).indexOf('godmode') != -1;
                .form-group
                  label.control-label(for="name", data-i18n="general.username")
                  input#name-input.form-control(name="name", type="text", value="#{name}")
                .form-group
                  label.control-label(for="email")
                    span(data-i18n="general.email")
                  unless me.get('emailVerified')
                    span.spl (
                    span.spr(data-i18n="account.not_yet_verified")
                    a.resend-verification-email
                      span.resend-text(data-i18n="account.resend_email")
                      span.sent-text.hide(data-i18n="account.email_sent")
                    span )
                  input#email.form-control(name="email", type="text", value="#{email}")
                .row
                  .form-group.col-sm-6
                    label.control-label(for="firstName", data-i18n="general.first_name")
                    input#first-name-input.form-control(name="firstName", type="text", value="#{firstName}")
                  .form-group.col-sm-6
                    if me.isStudent()
                      if lastName && lastName.length > 1
                        label.control-label(for="lastName", data-i18n="general.last_name")
                      else
                        label.control-label(for="lastName", data-i18n="general.last_initial")
                      input#last-name-input.form-control(name="lastName", type="text", value="#{lastName}")
                    else
                      label.control-label(for="lastName", data-i18n="general.last_name")
                      input#last-name-input.form-control(name="lastName", type="text", value="#{lastName}")
                if !isProduction
                  .form-group.checkbox
                    label(for="admin", data-i18n="account_settings.admin")
                    input#admin(name="admin", type="checkbox", checked=admin)
                  .form-group.checkbox
                    label(for="godmode", data-i18n="account_settings.god_mode")
                    input#godmode(name="godmode", type="checkbox", checked=godmode)
                if me.hasSubscription()
                  .form-group
                    label(data-i18n="account.subscription")
                    br
                    span.spr ✓
                    span(data-i18n="account.active")
                    span.spr= '.'
                    // TODO: show better summary states, like active, subscribed, free, and active until.
                    a(href="/account/subscription", data-i18n="account_settings.manage_subscription")

          // TODO: allow users to pick their avatars from our preset list now that we killed Gravatar and file uploads
          //.panel.panel-default
          //  .panel-heading
          //    .panel-title(data-i18n="account_settings.picture_tab")
          //  #profile-photo-panel-body.panel-body
          //    img.profile-photo(src=me.getPhotoURL(230), draggable="false")
          //    .text-center
          //      a(href="https://gravatar.com/", data-i18n="account_settings.use_gravatar")


          //hide password setting for Tarena users
          if !me.isCreatedByTarena()
            .panel.panel-default
              .panel-heading
                .panel-title(data-i18n="general.password")
              .panel-body
                .form
                  .form-group
                    label.control-label(for="password", data-i18n="account_settings.new_password") New Password
                    input#password.form-control(name="password", type="password")
                  .form-group
                    label.control-label(for="password2", data-i18n="account_settings.new_password_verify") Verify
                    input#password2.form-control(name="password2", type="password")

          .panel.panel-default
            .panel-heading
              .panel-title#delete-account-panel-title(data-i18n="account_settings.delete_account_tab")
            .panel-body
              .form#delete-account-form
                .form-group
                  label.control-label(for="delete-account-email-or-username", data-i18n="account_settings.type_in_email")
                  input#delete-account-email-or-username.form-control(name="emailOrUsername")
                .form-group
                  label.control-label(for="delete-account-password", data-i18n="account_settings.type_in_password")
                  input#delete-account-password.form-control(name="password", type="password")
              button#delete-account-btn.btn.form-control.btn-primary(data-i18n="account_settings.delete_this_account")

        .col-md-6

          - var subs = view.getEmailSubsDict();
              
          #email-panel.panel.panel-default
            .panel-heading
              .panel-title(data-i18n="account_settings.emails_tab")
            .panel-body
          
              .form
                .form-group.checkbox
                  label.control-label(for="email_generalNews", data-i18n="account_settings.email_announcements") Announcements
                  input#email_generalNews(name="email_generalNews", type="checkbox", checked=subs.generalNews)
                  span.help-block(data-i18n="account_settings.email_announcements_description") Get emails on the latest news and developments at CodeCombat.
              
              hr
              h4(data-i18n="account_settings.email_notifications") Notifications
              span(data-i18n="account_settings.email_notifications_summary") Controls for personalized, automatic email notifications related to your CodeCombat activity.
              
              .form
                .form-group.checkbox
                  label.control-label(for="email_anyNotes", data-i18n="account_settings.email_any_notes") Any Notifications
                  input#email_anyNotes(name="email_anyNotes", type="checkbox", checked=subs.anyNotes)
                  span.help-block(data-i18n="account_settings.email_any_notes_description") Disable to stop all activity notification emails.
                
                fieldset#specific-notification-settings
          
                  .form-group.checkbox
                    label.control-label(for="email_recruitNotes", data-i18n="account_settings.email_recruit_notes") Job Opportunities
                    input#email_recruitNotes(name="email_recruitNotes", type="checkbox", checked=subs.recruitNotes)
                    span.help-block(data-i18n="account_settings.email_recruit_notes_description") If you play really well, we may contact you about getting you a (better) job.
          
              hr
          
              h4(data-i18n="account_settings.contributor_emails") Contributor Class Emails
              span(data-i18n="account_settings.contribute_prefix") We\'re looking for people to join our party! Check out the 
              a(href="/contribute", data-i18n="account_settings.contribute_page") contribute page
              span(data-i18n="account_settings.contribute_suffix")  to find out more.
          
              .form
                .form-group.checkbox
                  label.control-label(for="email_archmageNews")
                    span(data-i18n="classes.archmage_title")
                      | Archmage
                    |  
                    span(data-i18n="classes.archmage_title_description")
                      | (Coder)
                  input#email_archmageNews(name="email_archmageNews", type="checkbox", checked=subs.archmageNews)
                  span(data-i18n="contribute.archmage_subscribe_desc").help-block Get emails about general news and announcements about CodeCombat.
          
                .form-group.checkbox
                  label.control-label(for="email_artisanNews")
                    span(data-i18n="classes.artisan_title")
                      | Artisan
                    |  
                    span(data-i18n="classes.artisan_title_description")
                      | (Level Builder)
                  input#email_artisanNews(name="email_artisanNews", type="checkbox", checked=subs.artisanNews)
                  span(data-i18n="contribute.artisan_subscribe_desc").help-block Get emails on level editor updates and announcements.
          
                .form-group.checkbox
                  label.control-label(for="email_adventurerNews")
                    span(data-i18n="classes.adventurer_title")
                      | Adventurer
                    |  
                    span(data-i18n="classes.adventurer_title_description") 
                      | (Level Playtester)
                  input#email_adventurerNews(name="email_adventurerNews", type="checkbox", checked=subs.adventurerNews)
                  span(data-i18n="contribute.adventurer_subscribe_desc").help-block Get emails when there are new levels to test.
          
                .form-group.checkbox
                  label.control-label(for="email_scribeNews")
                    span(data-i18n="classes.scribe_title")
                      | Scribe
                    |  
                    span(data-i18n="classes.scribe_title_description")
                      | (Article Editor)
                  input#email_scribeNews(name="email_scribeNews", type="checkbox", checked=subs.scribeNews)
                  span(data-i18n="contribute.scribe_subscribe_desc").help-block Get emails about article writing announcements.
          
                .form-group.checkbox
                  label.control-label(for="email_diplomatNews")
                    span(data-i18n="classes.diplomat_title")
                      | Diplomat
                    |  
                    span(data-i18n="classes.diplomat_title_description")
                      | (Translator)
                  input#email_diplomatNews(name="email_diplomatNews", type="checkbox", checked=subs.diplomatNews)
                  span(data-i18n="contribute.diplomat_subscribe_desc").help-block Get emails about i18n developments and, eventually, levels to translate.

                .form-group.checkbox
                  label.control-label(for="email_ambassadorNews")
                    span(data-i18n="classes.ambassador_title")
                      | Ambassador
                    |  
                    span(data-i18n="classes.ambassador_title_description")
                      | (Support)
                  input#email_ambassadorNews(name="email_ambassadorNews", type="checkbox", checked=subs.ambassadorNews)
                  span(data-i18n="contribute.ambassador_subscribe_desc").help-block Get emails on support updates and multiplayer developments.

                .form-group.checkbox
                  label.control-label(for="email_teacherNews")
                    span(data-i18n="classes.teacher_title")
                  input#email_teacherNews(name="email_teacherNews", type="checkbox", checked=subs.teacherNews)
                  span(data-i18n="contribute.teacher_subscribe_desc").help-block

                button#toggle-all-btn.btn.btn-primary.form-control(data-i18n="account_settings.email_toggle") Toggle All

          .panel.panel-default
            .panel-heading
              .panel-title#reset-progress-panel-title(data-i18n="account_settings.reset_progress_tab")
            .panel-body
              .form#reset-progress-form
                .form-group
                  label.control-label(for="email-reset-progress", data-i18n="account_settings.type_in_email_progress")
                  input#email-reset-progress.form-control(name="emailOrUsername")
                .form-group
                  label.control-label(for="password-reset-progress", data-i18n="account_settings.type_in_password")
                  input#password-reset-progress.form-control(name="password", type="password")
              button#reset-progress-btn.btn.form-control.btn-primary(data-i18n="account_settings.reset_your_progress")

      .clearfix

  if !me.get('anonymous', true)
    #save-button-container
      button#save-button.btn-lg.btn.disabled(data-i18n="delta.no_changes" disabled="true") No Changes

block footer

{'fraction_non_alphanumeric': 0.10868055555555556, 'fraction_numerical': 0.011111111111111112, 'mean_word_length': 1.8594594594594596, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 4, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6264096', 'n_tokens_mistral': 7179, 'n_tokens_neox': 6674, 'n_words': 927}