datacite/bracco

View on GitHub
app/templates/providers/new.hbs

Summary

Maintainability
Test Coverage
{{#if (can 'read index')}}
  <ApplicationHeader @default={{true}} />
  <div class="container-fluid" id="add-member-form">
    <IndexHeader />
    <div class="panel panel-transparent">
      <div class="panel-body">
        <div class="col-md-9 col-md-offset-3">
          <h3 class="edit">
            Add Member
          </h3>
          {{#each this.flashMessages.queue as |flash|}}
            <FlashMessage @flash={{flash}} />
          {{/each}}
        </div>
        <BsForm
          @formLayout="horizontal"
          class="form-horizontal"
          @horizontalLabelGridClass="col-md-3"
          @model={{this.model}}
          @onSubmit={{action 'submit' this.model}}
          @submitOnEnter={{true}} as |form|
        >
          <h3 class="member-results">
            Organization Information
          </h3>
          <ProviderId @model={{this.model}} @form={{form}} />
          <form.element
            @controlType="power-select"
            id="ror-id"
            class="form-group"
            @label="Organization identifier (optional)"
            @property="rorId"
            @optionLabelPath="rorId"
            @options={{this.organizations}}
            @destination={{this.rorId}}
            @helpText="Organization identifiers are provided by the Research Organization Registry (ROR)." as |el|
          >
            <el.control
              @onChange={{action 'selectRor'}}
              @search={{action 'searchRor'}}
              @placeholder="Select Organization"
              @searchPlaceholder="Type to search..."
              @allowClear={{true}} 
              @searchEnabled={{true}} as |item|
            >
              {{if item.name item.name this.model.rorId}}
            </el.control>
          </form.element>
          <form.element
            @controlType="text"
            id="name" 
            class="form-group"  
            @label="Member Name"
            @property="name"
            @helpText="The official name of your organization." as |el|
          >
            <el.control id="name-field" />
          </form.element>
          <form.element
            @controlType="text"
            id="display-name"
            class="form-group"
            @label="Member Display Name"
            @property="displayName"
            @helpText="Name of your organization as you would like it to appear in Fabrica and on DataCite’s website." as |el|
          >
            <el.control id="display-name-field" />
          </form.element>
          {{#if (eq this.model.memberType 'consortium_organization')}}
            {{#if this.features.enableDoiEstimate}}
              <form.element
                @controlType="text"
                id="doi-estimate"
                class="form-group"
                @label="Estimated DOIs"
                @property="doiEstimate"
                @helpText={{html-safe (concat "Enter the number of DOIs expected to be registered annually. This amount will be pro-rated for the remaining months of the year. If the consortium fee cap applies enter zero (0). See more details in our <a href='" (get (links) "FEE_MODEL_URL" ) "' target='_blank'>fee model</a>.")}} as |el|
              >
                <el.control id="doi-estimate-field" placeholder = "0" required={{true}} />
              </form.element>
            {{/if}}
          {{/if}}
          {{#if (can 'create provider')}}
            <form.element
              @controlType="text"
              id="salesforce-id"
              class="form-group"
              @label="Salesforce ID"
              @property="salesforceId"
              @helpText="The 18 digit ID in Salesforce." as |el|
            >
              <el.control id="salesforce-id-field" />
            </form.element>
          {{/if}}
          {{#if (can 'token provider')}}
            <form.element
              @controlType="text"
              id="globus-uuid"
              class="form-group"
              @label="Globus UUID (optional)"
              @property="globusUuid"
              @helpText="The Globus UUID used for token authentication." as |el|
            >
              <el.control id="globus-uuid-field" />
           </form.element>
          {{/if}}
          {{#if (can 'create provider')}}
            <form.element
              @controlType="power-select"
              id="member-type"
              class="form-group"
              @label="Member Type"
              @property="memberType"
              @options={{this.memberTypes}}
              @destination={{this.memberType}} as |el|
            >
              <el.control
                @onChange={{action 'selectMemberType'}}
                @search={{action 'searchMemberType'}}
                @placeholder="Select Member Type"
                @searchPlaceholder="Type to search..."
                @searchEnabled={{true}} as |item|
              >
                {{titleize (humanize item)}}
              </el.control>
            </form.element>
            <form.element
              @controlType="power-select"
              id="tax-status"
              class="form-group"
              @label="Tax Status"
              @property="nonProfitStatus"
              @options={{this.nonProfitStatuses}}
              @destination={{this.nonProfitStatus}} as |el|
            >
              <el.control
                @onChange={{action 'selectNonProfitStatus'}}
                @search={{action 'searchNonProfitStatus'}}
                @placeholder="Tax Status"
                @searchPlaceholder="Type to search..."
                @searchEnabled={{true}} as |item|
              >
                {{titleize item}}
              </el.control>
            </form.element>
            {{#if (eq this.model.memberType 'consortium_organization')}}
              <form.element
                @controlType="power-select"
                class="form-group"
                @property="consortium"
                @label="Consortium"
                @helpText="Consortium for this organization."
                @optionLabelPath="name"
                @options={{this.consortia}}
                @destination={{this.consortium.id}} as |el|
              >
                <el.control
                  @onChange={{action 'selectConsortium'}}
                  @search={{action 'searchConsortium'}}
                  @searchField="name"
                  @searchPlaceholder="Type to search..."
                  @allowClear={{true}}
                  @searchEnabled={{true}} as |item|
                >
                  {{item.name}}
                </el.control>
              </form.element>
            {{/if}}
          {{/if}}
          <form.element
            @controlType="text"
            id="system-email"
            class="form-group"
            @label="System Email"
            @property="systemEmail"
            @helpText="This is the email used for sending password reset requests and similar system notifications." as |el|
          >
            <el.control id="system-email-field" />
          </form.element>
          <form.element
            @controlType="text"
            id="group-email"
            class="form-group"
            @label="Group Email (optional)"
            @property="groupEmail"
            @helpText="A generic shared email address (such as info@datacite.org or similar) where you would like to receive communications from DataCite." as |el|
          >
            <el.control id="group-email-field" />
          </form.element>
          <form.element
            @controlType="text"
            id="website"
            class="form-group"
            @label="Website (optional)"
            @property="website"
            @helpText="Website of the member." as |el|
          >
            <el.control id="website-field" />
          </form.element>
          <form.element
            @controlType="text"
            id="twitter-handle"
            class="form-group"
            @label="Twitter (optional)"
            @property="twitterHandle"
            @helpText="DataCite will follow you on twitter." as |el|
          >
            <el.control id="twitter-handle-field" placeholder="Add @twitter account" />
          </form.element>
          <form.element
            @controlType="power-select"
            id="country"
            class="form-group"
            @label="Country (optional)"
            @property="country"
            @optionLabelPath="name"
            @options={{this.countries}}
            @destination={{this.country}}
            @helpText="Country where the member is located." as |el|
          >
            <el.control
              @onChange={{action 'selectCountry'}}
              @search={{action 'searchCountry'}}
              @searchField="name"
              @placeholder="Select Country"
              @searchPlaceholder="Type to search..."
              @allowClear={{true}}
              @searchEnabled={{true}} as |item|
            >
              {{item.name}}
            </el.control>
          </form.element>
          <form.element
            @controlType="power-select"
            id="organization-type"
            class="form-group"
            @label="Organization Type (optional)"
            @property="organizationType"
            @options={{this.organizationTypes}}
            @destination={{this.organizationType}} as |el|
          >
            <el.control
              @onChange={{action 'selectOrganizationType'}}
              @search={{action 'searchOrganizationType'}}
              @placeholder="Select Organization Type"
              @searchPlaceholder="Type to search..."
              @allowClear={{true}}
              @searchEnabled={{true}} as |item|
            >
              {{titleize (humanize (underscore item))}}
            </el.control>
          </form.element>
          <form.element
            @controlType="power-select"
            id="focus-area"
            class="form-group"
            @label="Focus Area (optional)"
            @property="focusArea"
            @options={{this.focusAreas}}
            @destination={{this.focusArea}}
            @helpText="Field of research covered by the member." as |el|
          >
            <el.control
              @onChange={{action 'selectFocusArea'}}
              @search={{action 'searchFocusArea'}}
              @placeholder="Select Focus Area"
              @searchPlaceholder="Type to search..."
              @allowClear={{true}}
              @searchEnabled={{true}} as |item|
            >
              {{titleize (humanize (underscore item))}}
            </el.control>
          </form.element>
          <form.element
            @controlType="textarea"
            id="description"
            class="form-group"
            @label="Description (optional)"
            @property="description"app/templates/providers/new.hbs
            @helpText="Description of the member. Please use markdown for formatting." as |el|
          >
            <el.control rows="10" id="description-field" />
          </form.element>
          {{#if (not-eq this.model.memberType 'consortium_organization')}}
            <label class="control-label col-md-3">
              Logo
            </label>
            <div class="col-md-9 form-help-header">
              <div class="btn-toolbar btn-sm btn-file">
                <FileUpload
                  @name="files"
                  @id="upload-file"
                  @multiple={{false}}
                  @accept="image/png,image/jpeg"
                  @onfileadd={{action 'didSelectFiles'}}
                >
                  <span class="btn btn-sm">
                    <i class="fas fa-upload"></i>
                    {{if this.model.logo 'Replace' 'Upload'}}
                    Logo
                  </span>
                </FileUpload>
              </div>
              <div class="help-block">
                Please upload your horizontal logo in either png or jpeg format. It will be proportionally resized to be no larger than 500 x 200 px.
              </div>
            </div>
          {{/if}}
          <h3 class="member-results">
            Contact Information
          </h3>
          <div class="col-md-9 col-md-offset-3">
            <BsAlert @dismissible={{false}} @type="danger">
              Please add at least one contact via the member contacts menu after creating this member.
            </BsAlert>
          </div>
          {{#if (not-eq this.model.memberType 'consortium_organization')}}
            <h3 class="member-results">
              Billing Information
            </h3>
            <form.element
              @controlType="text"
              id="billing-information-department"
              class="form-group"
              @label="Billing Department"
              @property="billingInformation.department"
              @helpText="Your organization's specific department that is responsible for payment" as |el|
            >
              <el.control id="billing-information-department-field" />
            </form.element>
            <form.element
              @controlType="text"
              id="billing-information-organization"
              class="form-group"
              @label="Billing Organization"
              @property="billingInformation.organization"
              @helpText="Your organization's name for billing purposes if different from the official name" as |el|
            >
              <el.control id="billing-information-organization-field" />
            </form.element>
            <form.element
              @controlType="text"
              id="billing-information-street"
              class="form-group"
              @label="Billing Street"
              @property="billingInformation.address"
              @helpText="Your organization's street for billing purposes" as |el|
            >
              <el.control id="billing-information-street-field" />
            </form.element>
            <form.element
              @controlType="text"
              id="billing-information-city"
              class="form-group"
              @label="Billing City"
              @property="billingInformation.city"
              @helpText="Your organization's city for billing purposes" as |el|
            >
              <el.control id="billing-information-city-field" />
            </form.element>
            <form.element
              @controlType="text"
              id="billing-information-postcode"
              class="form-group"
              @label="Billing Zip/Post Code"
              @property="billingInformation.postCode"
              @helpText="Your organization's Zip/post code for billing purposes" as |el|
            >
              <el.control id="billing-information-postcode-field" />
            </form.element>
            <form.element
              @controlType="power-select"
              id="billing-information-country"
              class="form-group"
              @label="Billing Country"
              @property="billingInformation.country"
              @optionLabelPath="name"
              @options={{this.countries}}
              @helpText="Your organization's country for billing purposes."
              @destination={{this.billingInformation.country}} as |el|
            >
              <el.control
                @onChange={{action 'selectBillingCountry'}}
                @search={{action 'searchCountry'}}
                @searchField="name"
                @placeholder="Select Country"
                @searchPlaceholder="Type to search..."
                @allowClear={{true}}
                @searchEnabled={{true}} as |item|
              >
                {{item.name}}
              </el.control>
            </form.element>
            {{#if this.showStateSearch}}
              <form.element
                @controlType="power-select"
                id="billing-information-state"
                class="form-group"
                @label="Billing State/Province"
                @property="billingInformation.state"
                @optionLabelPath="name"
                @options={{this.states}}
                @helpText="Your organization's state/province for billing purposes."
                @destination={{this.billingInformation.country}} as |el|
              >
                <el.control
                  @onChange={{action 'selectBillingState'}}
                  @search={{action 'searchState'}}
                  @searchField="name"
                  @placeholder="Select State/Province"
                  @searchPlaceholder="Type to search..."
                  @allowClear={{true}}
                  @searchEnabled={{true}} as |item|
                >
                  {{item.name}}
                </el.control>
              </form.element>
            {{/if}}
          {{/if}}
          <form.element
            @controlType="checkbox"
            id="is-active"
            class="form-group"
            @label="Account is active"
            @property="isActive"
            @helpText="This account can manage repositories and prefixes" as |el|
          >
            <el.control id="is-active-field" />
          </form.element>
          <div class="col-md-9 col-md-offset-3">
            <BsAlert @dismissible={{false}} @type="warning">
              The contacts entered may receive notifications about administration, webinars, product testing,
              or news that will impact the use of DataCite services and/or membership. Individuals may remove
              themselves from mailings by following the unsubscribe link provided in every DataCite email.
              For information about our privacy practices and commitment to protecting your privacy, please
              review our
              <a
                target="_blank" rel="noopener noreferrer" href={{get (links) "PRIVACY_POLICY_URL" }}
              >
                Privacy Policy
              </a>
              .
            </BsAlert>
          </div>
          <div class="col-md-9 col-md-offset-3">
            {{#if (is-empty (provider-form-errors this.model))}}
              <button
                type="submit"
                id="add-provider"
                class="btn btn-sm btn-fill"
                disabled={{if (or form.isSubmitting form.isSubmitted) true false }}
              >
                Add Member
              </button>
            {{else}}
              <BsAlert @dismissible={{false}} @type="danger">
                To save this member, first resolve the errors with these fields:
                {{provider-form-errors this.model}}
                .
              </BsAlert>
              <button
                type="submit"
                id="add-provider"
                class="btn btn-sm btn-fill"
                disabled={{true}}
              >
                Add Member
              </button>
            {{/if}}
            <button class="btn btn-sm" type="button" {{action 'cancel'}}>
              Cancel
            </button>
          </div>
        </BsForm>
      </div>
    </div>
  </div>
{{else}}
  <ApplicationHeader /><LandingPage />
{{/if}}