2   ============LICENSE_START==========================================
 
   4   ===================================================================
 
   5   Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 
   6   ===================================================================
 
   8   Unless otherwise specified, all software contained herein is licensed
 
   9   under the Apache License, Version 2.0 (the "License");
 
  10   you may not use this software except in compliance with the License.
 
  11   You may obtain a copy of the License at
 
  13               http://www.apache.org/licenses/LICENSE-2.0
 
  15   Unless required by applicable law or agreed to in writing, software
 
  16   distributed under the License is distributed on an "AS IS" BASIS,
 
  17   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  18   See the License for the specific language governing permissions and
 
  19   limitations under the License.
 
  21   Unless otherwise specified, all documentation contained herein is licensed
 
  22   under the Creative Commons License, Attribution 4.0 Intl. (the "License");
 
  23   you may not use this documentation except in compliance with the License.
 
  24   You may obtain a copy of the License at
 
  26               https://creativecommons.org/licenses/by/4.0/
 
  28   Unless required by applicable law or agreed to in writing, documentation
 
  29   distributed under the License is distributed on an "AS IS" BASIS,
 
  30   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  31   See the License for the specific language governing permissions and
 
  32   limitations under the License.
 
  34   ============LICENSE_END============================================
 
  39 <div class="b2b-modal-header">
 
  40         <h2 class="account-details-title" id="application-details-title">Application
 
  42         <div class="corner-button in">
 
  43                 <button type="button" class="close" id="div-confirm-close-button"
 
  44                         aria-label="Close" ng-click="$dismiss('cancel')"></button>
 
  47 <div class="b2b-modal-body">
 
  48         <div class="application-details-modal">
 
  49                 <div class="app-properties-main" scroll-top="appDetails.scrollApi">
 
  50                         <form name="appForm" novalidate autocomplete="off">
 
  51                                 <div id="app-left-container" class="left-container">
 
  52                                         <div class="property-label checkbox-label">
 
  53                                                 <label for="checkbox-app-is-restricted" class="checkbox">
 
  54                                                         <input type="checkbox" ng-model="appDetails.app.restrictedApp"
 
  55                                                         id="checkbox-app-is-restricted"
 
  56                                                         ng-disabled="appDetails.isEditMode"
 
  57                                                         ng-checked="appDetails.app.restrictedApp" /> <i class="skin"></i>
 
  58                                                         <span>Hyperlink only application</span>
 
  61                                         <div class="property required">
 
  62                                                 <div class="property-label">Application Name</div>
 
  63                                                 <input id="input-app-name" type="text"
 
  64                                                         ng-model="appDetails.app.name" maxlength="100" name="name"
 
  65                                                         ng-pattern="/^[a-zA-Z0-9_\-\s\&]*$/" required />
 
  67                                                 <div id="error-container-conflict" class="error-container"
 
  68                                                         ng-show="appDetails.conflictMessages.name"
 
  69                                                         id="conflictMessages-name">
 
  70                                                         <small id="app-name-error-conflict" class="err-message"
 
  71                                                                 ng-bind="appDetails.conflictMessages.name"></small>
 
  73                                                 <div id="error-container-edit" class="error-container"
 
  74                                                         ng-show="appForm.name.$dirty || appDetails.isEditMode">
 
  75                                                         <div ng-messages="appForm.name.$error" class="error-container">
 
  76                                                                 <small id="app-name-error-required" class="err-message"
 
  77                                                                         ng-message="required">Application name is required</small> <small
 
  78                                                                         id="app-name-error-alpha-num" class="err-message"
 
  79                                                                         ng-message="pattern">Application name must be
 
  84                                         <div class="property required">
 
  85                                                 <div id="url-property-label" class="property-label">URL</div>
 
  86                                                 <input id="input-app-url" ng-model="appDetails.app.url"
 
  87                                                         maxlength="256" name="url" type="url" placeholder="https://"
 
  88                                                         ng-pattern="appDetails.ECOMP_URL_REGEX" required />
 
  89                                                 <div id="app-error-url" class="error-container"
 
  90                                                         ng-show="appDetails.conflictMessages.url"
 
  91                                                         id="div-app-name-err-url">
 
  92                                                         <small class="err-message"
 
  93                                                                 ng-bind="appDetails.conflictMessages.url"></small>
 
  95                                                 <div id="app-error-url-message" class="error-container"
 
  96                                                         ng-show="appForm.url.$dirty || appDetails.isEditMode">
 
  97                                                         <div ng-messages="appForm.url.$error" class="error-container">
 
  98                                                                 <small id="error-app-url-req" class="err-message"
 
  99                                                                         ng-message="required">Application URL is required</small>
 
 100                                                                 <!--<small id="error-app-url-invalid" class="err-message" ng-message="pattern">Application URL must be a valid URL</small>-->
 
 101                                                                 <small id="error-app-url-invalid" class="err-message"
 
 102                                                                         ng-show="appForm.url.$error.url">Application URL must
 
 103                                                                         be a valid URL</small>
 
 106                                                 <!--<span class="err-message" ng-show="appForm.url.$error.url"> Not valid URL!</span>-->
 
 110                                         <div class="property required" ng-show="!appDetails.app.restrictedApp">
 
 111                                                 <div class="property-label">Rest API URL</div>
 
 112                                                 <input id="input-app-rest-url" ng-model="appDetails.app.restUrl"
 
 113                                                         name="restUrl" type="url" placeholder="https://"
 
 114                                                         ng-pattern="appDetails.ECOMP_URL_REGEX" maxlength="256"
 
 115                                                         ng-required="!appDetails.app.restrictedApp" />
 
 116                                                 <div id="app-error-rest-message" class="error-container"
 
 117                                                         ng-show="appForm.restUrl.$dirty || appDetails.isEditMode">
 
 118                                                         <div ng-messages="appForm.restUrl.$error" class="error-container">
 
 119                                                                 <small class="err-message" ng-show="appForm.restUrl.$error.url">Application
 
 120                                                                         REST URL must be a valid URL</small>
 
 125                                         <div class="property required"
 
 126                                                 ng-show="!appDetails.app.restrictedApp">
 
 127                                                 <div id="username-property-label" class="property-label">Username</div>
 
 128                                                 <input type="text" ng-model="appDetails.app.username"
 
 129                                                         name="username" maxlength="256"
 
 130                                                         ng-required="!appDetails.app.restrictedApp" />
 
 131                                                 <div id="app-error-username-container" class="error-container"
 
 132                                                         ng-show="appForm.username.$dirty || appDetails.isEditMode">
 
 133                                                         <div ng-messages="appForm.username.$error"
 
 134                                                                 class="error-container">
 
 135                                                                 <small id="error-appusername-reqd" class="err-message"
 
 136                                                                         ng-message="required">My Logins App Username is
 
 141                                         <div class="property required"
 
 142                                                 ng-show="!appDetails.app.restrictedApp">
 
 143                                                 <div id="pwd-property-label" class="property-label">Password</div>
 
 144                                                 <input type="password" id="input-mylogins-password"
 
 145                                                         ng-model="appDetails.app.appPassword" autocomplete="new-password"
 
 146                                                         name="appPassword" maxlength="256"
 
 147                                                         ng-required="!appDetails.app.restrictedApp" />
 
 148                                                 <div id="app-error-password-container" class="error-container"
 
 149                                                         ng-show="appForm.appPassword.$dirty || appDetails.isEditMode">
 
 150                                                         <div ng-messages="appForm.appPassword.$error"
 
 151                                                                 class="error-container">
 
 152                                                                 <small id="error-mylogins-password-reqd" class="err-message"
 
 153                                                                         ng-message="required">My Logins App Password is
 
 158                                         <div class="property" ng-show="!appDetails.app.restrictedApp">
 
 159                                                 <div id="pwd-property-label" class="property-label">Name
 
 161                                                 <input type="text" id="input-mylogins-auth-namespace"
 
 162                                                         ng-model="appDetails.app.nameSpace" name="appAuthNameSpace"
 
 166                                 <div class="right-container">
 
 167                                         <div class="property">
 
 168                                                 <div class="property-label">Upload Image</div>
 
 169                                                 <input type="file" id="input-app-image-upload"
 
 170                                                         class="input-file-field" accept="image/*"
 
 171                                                         ng-model="appDetails.originalImage" name="appImage"
 
 172                                                         image-upload="appDetails.originalImage"
 
 173                                                         image-upload-resize-max-height="300"
 
 174                                                         image-upload-resize-max-width="360"
 
 175                                                         image-upload-resize-quality="0.7"
 
 176                                                         image-upload-api="appDetails.imageApi" style="height: 24px;" />
 
 178                                                 <div id="app-error-image-upload" class="error-container"
 
 179                                                         ng-show="appForm.appImage.$dirty">
 
 180                                                         <div ng-messages="appForm.appImage.$error"
 
 181                                                                 class="error-container">
 
 182                                                                 <small id="error-app-invalid-image" class="err-message"
 
 183                                                                         ng-message="mimeType">Uploaded file must be an image</small> <small
 
 184                                                                         id="error-app-invalid-image-size" class="err-message"
 
 185                                                                         ng-message="imageSize">Image file must be smaller than
 
 190                                                 <div class="property-label preview">
 
 191                                                         <span class="left-label">Preview</span> <span class="remove"
 
 192                                                                 ng-click="appDetails.removeImage()">Remove</span>
 
 194                                                 <img id="image-app-preview" class="image-preview"
 
 195                                                         ng-src="{{appDetails.app.imageLink || appDetails.app.thumbnail || appDetails.emptyImgForPreview}}" />
 
 196                                                 <div id="property-communication-inbox" class="property"
 
 197                                                         ng-show="!appDetails.app.restrictedApp">
 
 198                                                         <div id="property-communication-inbox-label"
 
 199                                                                 class="property-label">Communication Inbox</div>
 
 200                                                         <input type="text" id="input-UEB-topicname"
 
 201                                                                 ng-model="appDetails.app.uebTopicName" name="uebTopicName"
 
 202                                                                 readonly="readonly" />
 
 205                                                 <div id="property-communication-key" class="property"
 
 206                                                         ng-show="!appDetails.app.restrictedApp">
 
 207                                                         <div id="property-communication-key-label" class="property-label">Communication
 
 209                                                         <input type="text" id="input-UEB-communication-key"
 
 210                                                                 ng-model="appDetails.app.uebKey" name="uebKey"
 
 211                                                                 readonly="readonly" />
 
 214                                                 <div id="property-communication-secret" class="property"
 
 215                                                         ng-show="!appDetails.app.restrictedApp">
 
 216                                                         <div id="property-communication-secret-label"
 
 217                                                                 class="property-label">Communication Secret</div>
 
 218                                                         <input type="text" id="input-UEB-communication-secret"
 
 219                                                                 ng-model="appDetails.app.uebSecret" name="uebSecret"
 
 220                                                                 readonly="readonly" />
 
 223                                                 <div id="property-guest-access" class="property">
 
 224                                                         <label for="checkbox-app-is-open" class="checkbox"> <input
 
 225                                                                 type="checkbox" ng-model="appDetails.app.isOpen"
 
 226                                                                 id="checkbox-app-is-open"
 
 227                                                                 ng-checked="appDetails.app.isOpen || appDetails.app.restrictedApp"
 
 228                                                                 ng-disabled="appDetails.app.restrictedApp" /> <i class="skin"></i>
 
 229                                                                 <span>Allow guest access</span>
 
 232                                                 <div id="property-active" class="property">
 
 233                                                         <label for="checkbox-app-is-enabled" class="checkbox"> <input
 
 234                                                                 type="checkbox" ng-model="appDetails.app.isEnabled"
 
 235                                                                 id="checkbox-app-is-enabled" /> <i class="skin"></i> <span>Active</span>
 
 239                                                 <div id="property-is-central-auth" class="property"
 
 240                                                         ng-show="!appDetails.app.restrictedApp">
 
 241                                                         <label for="checkbox-app-is-central-auth" class="checkbox">
 
 242                                                                 <input type="checkbox" ng-model="appDetails.app.isCentralAuth"
 
 243                                                                 id="checkbox-app-is-central-auth" /> <i class="skin"></i> <span>Centralized</span>
 
 254 <div class="b2b-modal-footer">
 
 256                 <span class="ecomp-save-spinner" ng-show="appDetails.isSaving"></span>
 
 257                 <button id="button-save-app" class="btn btn-alt btn-small"
 
 258                         ng-class="{disabled: appForm.$invalid}"
 
 259                         ng-click="appDetails.saveChanges()">Save</button>
 
 260                 <button id="button-notification-cancel" class="btn btn-alt btn-small"
 
 261                         ng-click="$dismiss('cancel')" role="button" tabindex="0">Cancel</button>