DemocracyOS/democracyos

View on GitHub
lib/admin/admin-topics-form/template.jade

Summary

Maintainability
Test Coverage
- function te (str) { return t(str) !== str }

#topic-wrapper(class=forum.visibility === 'collaborative' && !forum.privileges.canChangeTopics ? 'collaborative' : '')
  - if (tags.length === 0)
    if (user.staff)
      p.alert.alert-danger.text-center
        != t('admin-topics-form.alert.no-tags')
      p.text-center
        a.btn.btn-lg.btn-primary.create-tag(href=urlBuilder.for('admin.tags.create', {forum: forum.name}))
          = t('admin-tags-form.title.create')
    else
      p.alert.alert-danger.text-center
        = t('admin-topics-form.alert.no-tags.no-staff')
  - else
    h2
      = t(form.title)
      - if (form.type === 'edit')
        a(class='btn btn-link btn-md', href=topic.url, target='_blank')
          = t('admin-topics-form.title.preview')
          |  
          i.icon-eye
    include commands
    .topic-admin
      form(action=form.action, method=form.method, role='form', autocomplete='off', novalidate, autovalidate='autovalidate', autosubmit='autosubmit')
        - if (topic.privileges && !topic.privileges.canEdit)
          .block-overlay
        - if (form.forum)
          input(type='hidden', name='forum', value=form.forum)
        ul.form-messages
        .form-group
          label= t('admin-topics-form.label.mediaTitle')
          - if (te('admin-topics-form.description.mediaTitle'))
            span.help-text= t('admin-topics-form.description.mediaTitle')
          input.form-control(type='text', maxlength='200', id='mediaTitle', name='mediaTitle', placeholder=t('admin-topics-form.label.mediaTitle'), value=topic.mediaTitle, validate='required')
        .form-group
          label= t('admin-topics-form.label.tag')
          - if (te('admin-topics-form.description.tag'))
            span.help-text= t('admin-topics-form.description.tag')
          select.form-control(name='tag', validate='required')
            - var topicTag = typeof topic.tag === 'string' ? topic.tag : (topic.tag && topic.tag.id)
            - each tag in tags
              option(selected=tag.id === topicTag, value=tag.id)
                = tag.name
        .form-group
          label= t('admin-topics-form.label.tags')
          - if (te('admin-topics-form.description.tags'))
            span.help-text= t('admin-topics-form.description.tags')
          div.tags-autocomplete
          - if (forum.initialTags && forum.initialTags.length > 0)
            span.help-text= t('admin-topics-form.description.forum-tags')
            - each tag in forum.initialTags
              button.btn.btn-default.btn-sm.forum-tag(data-value=tag, type='button', disabled=(topic.tags && !!~topic.tags.indexOf(tag)))= tag

        - if (forum.topicsAttrs.length > 0)
          fieldset.attrs-wrapper
            legend= t('admin-topics-form.label.attrs')
            div(data-attrs)
        .form-group
          label= t('admin-topics-form.label.topicId')
          - if (te('admin-topics-form.description.topicId'))
            span.help-text= t('admin-topics-form.description.topicId')
          input.form-control(type='text', maxlength='200', id='topicId', name='topicId', placeholder=t('admin-topics-form.placeholder.topicId'), value=topic.topicId)
        .form-group
          label= t('admin-topics-form.label.coverUrl')
          - if (te('admin-topics-form.description.coverUrl'))
            span.help-text= t('admin-topics-form.description.coverUrl')
          input.form-control(type='text', maxlength='254', id='coverUrl', name='coverUrl', placeholder=t('admin-topics-form.placeholder.coverUrl'), value=topic.coverUrl, validate='url')
        .form-group
          label= t('admin-topics-form.label.author')
          - if (te('admin-topics-form.description.author'))
            span.help-text= t('admin-topics-form.description.author')
          input.form-control(type='text', maxlength='100', id='author', name='author', placeholder=t('admin-topics-form.placeholder.author'), value=topic.author, validate='author')
        .form-group
          label= t('admin-topics-form.label.authorUrl')
          - if (te('admin-topics-form.description.authorUrl'))
            span.help-text= t('admin-topics-form.description.authorUrl')
          input.form-control(type='text', maxlength='254', id='authorUrl', name='authorUrl', placeholder=t('admin-topics-form.placeholder.authorUrl'), value=topic.authorUrl, validate='url')
        .form-group
          - var pollOpen = !!(topic.action && topic.action.count > 0)
          label= t('admin-topics-form.label.action')
          - if (pollOpen)
            p.alert.alert-warning
              = t('admin-topics-form.message.cant-edit-action')
            select.form-control.method-input(name='action.method', value=topic.action ? topic.action.method : '', disabled)
              option(value='')= t('admin-topics-form.action.none')
              option(value='vote')= t('admin-topics-form.action.vote')
              option(value='poll')= t('admin-topics-form.action.poll')
              option(value='cause')= t('admin-topics-form.action.cause')
              option(value='slider')= t('admin-topics-form.action.slider')
              option(value='hierarchy')= t('admin-topics-form.action.hierarchy')
          - if (te('admin-topics-form.description.action'))
            span.help-text= t('admin-topics-form.description.action')
          - if (!pollOpen)
            select.form-control.method-input(name='action.method', value=topic.action ? topic.action.method : '')
              option(value='')= t('admin-topics-form.action.none')
              option(value='vote')= t('admin-topics-form.action.vote')
              option(value='poll')= t('admin-topics-form.action.poll')
              option(value='cause')= t('admin-topics-form.action.cause')
              option(value='slider')= t('admin-topics-form.action.slider')
              option(value='hierarchy')= t('admin-topics-form.action.hierarchy')
        .form-group.poll-options.hide
          - var pollOpen = !!(topic.action && topic.action.count > 0)
          - var pollOptions = topic.action && topic.action.results && topic.action.results.map(function(o){ return o.value })
          label= t('admin-topics-form.label.poll-options')
          - if (te('admin-topics-form.description.poll-options'))
            span.help-text= t('admin-topics-form.description.poll-options')
          - if (pollOpen)
            p.alert.alert-warning
              = t('admin-topics-form.message.cant-edit-action.options')
            input.form-control(type='text', value=pollOptions.join(', '), disabled)
          - if (!pollOpen)
            input.form-control(type='tags', name='action.options', value=pollOptions)
        .form-group.hierarchy-options.hide
          - var hierarchyOpen = !!(topic.action && topic.action.count > 0)
          - var hierarchyOptions = topic.action && topic.action.results && topic.action.results.map(function(o){ return o.value })
          label= t('admin-topics-form.label.hierarchy-options')
          - if (hierarchyOpen)
            p.alert.alert-warning
              = t('admin-topics-form.message.cant-edit-action.options')
            input.form-control(type='text', value=hierarchyOptions.join(', '), disabled)
          - if (!hierarchyOpen)
            input.form-control(type='tags', name='action.options', value=hierarchyOptions)

        .form-group
          label= t('admin-topics-form.label.source')
          - if (te('admin-topics-form.description.source'))
            span.help-text= t('admin-topics-form.description.source')
          input.form-control(type='text', maxlength='200', name='source', placeholder=t('admin-topics-form.placeholder.source'), value=topic.source, validate='url')
        .form-group
          label= t('admin-topics-form.label.summary')
          - if (te('admin-topics-form.description.summary'))
            span.help-text= t('admin-topics-form.description.summary')
          textarea.form-control(name='body')= topic.body
        .form-group.closingAt
          label= t('admin-topics-form.label.closingAt')
          - if (te('admin-topics-form.description.closingAt'))
            span.help-text= t('admin-topics-form.description.closingAt')
          - var closingAt = ''
          - var closingAtTime = ''
          - if (topic.closingAt)
            - closingAt = new Date(topic.closingAt)
            - var closingAtTime = moment(closingAt).format('H:mm')
            - closingAt = closingAt.getFullYear() + '/' + (closingAt.getMonth() + 1) + '/' + closingAt.getDate()
          .form-inline
            .form-group
              input.form-control(name='closingAt', readonly=true, value=closingAt, placeholder='yyyy/mm/dd')
              input.form-control(name='closingAtTime', maxlength='10', value=closingAtTime, placeholder='hh:mm', validate='time')
            button.btn.btn-link.remove-button(type='button', data-clear-closing-at)
              i.icon-trash

        .form-group
          label=t('admin-topics-form.label.resources')
          - if (te('admin-topics-form.description.resources'))
            span.help-text= t('admin-topics-form.description.resources')
          .topic-links
            - // create a disabled link to force empty array value
            input(type='hidden', name='links[][_id]', disabled)
            input(type='hidden', name='links[][text]', disabled)
            input(type='hidden', name='links[][url]', disabled)
            - if (topic.links && topic.links.length)
              - each link, index in topic.links
                include link
          div
            button.add-link.btn.btn-link(type='button')
              = '+ ' + t('admin-topics-form.button.add-link')
        input.btn.btn-success.hide(type='submit', value=t('admin-topics-form.button.submit'))
    include commands