|
|
| <div ng-include="'header.html'"></div>
|
|
|
| <div class="container">
|
| <div class="col-md-12"> </div>
|
| <div id="packs_section" class="col-md-6" ng-controller="PacksCtrl">
|
| <nav class="navbar navbar-default navbar-static-top" role="navigation">
|
| <div class="container-fluid">
|
| <!-- Brand and toggle get grouped for better mobile display -->
|
| <div class="navbar-header">
|
| <a class="navbar-brand" i18n>Packs</a>
|
| </div>
|
|
|
| <!-- Collect the nav links, forms, and other content for toggling -->
|
| <div class="collapse navbar-collapse">
|
| <ul class="nav navbar-nav">
|
| <li><a i18n ng-click="newPack()"><span
|
| class="glyphicon glyphicon-plus"></span> New</a></li>
|
| <li><a i18n ng-click="cancel()"> <span
|
| class="glyphicon glyphicon-ban-circle"></span> Cancel
|
| </a></li>
|
| </ul>
|
| <div class="navbar-form navbar-right form-group">
|
| <span class="input-group input-group-sm">
|
| <div class="input-group-addon" style="width: 28px;">
|
| <span class=" glyphicon glyphicon-search"></span>
|
| </div> <input type="text" class="form-control" placeholder="Search"
|
| ng-model="$searchPacksText">
|
| <div class="input-group-addon" style="width: 20px;">
|
| <span class=" glyphicon glyphicon-remove"
|
| ng-click="$searchPacksText = '';"></span>
|
| </div>
|
| </span>
|
| </div>
|
| </div>
|
| </div>
|
| </nav>
|
|
|
| <div class="panel panel-default animate-show ng-hide"
|
| ng-show="showForm">
|
| <form role="form" class="form-horizontal " name="packForm"
|
| id="packForm" ng-submit="save()">
|
| <div class="form-group" ng-if="!isNew">
|
| <label class="col-md-3 control-label">ID</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static" ng-bind="pack.id"></p>
|
| </div>
|
| </div>
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" for="code" i18n>Code</label>
|
| <div class="col-md-8">
|
| <input type="string" id="code" name="code" placeholder=""
|
| class="form-control" ng-model="pack.code"
|
| ng-required="mandatory.code" ng-maxlength="{{maxlength.code}}" />
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="packForm.code.$invalid">
|
| <span class="glyphicon glyphicon-warning-sign"></span> <span
|
| ng-show="packForm.code.$error.maxlength"
|
| ng-bind="maxlengthErrorMsg('Code', maxlength.code)"></span> <span
|
| ng-show="packForm.code.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('Code')"></span>
|
| </div>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" for="code" i18n>Validity (from - to)</label>
|
| <div class="col-md-4">
|
| <input type="date" id="init_valid_date" name="init_valid_date" placeholder=""
|
| class="form-control" ng-model="pack.init_valid_date"
|
| ng-required="mandatory.init_valid_date" />
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="packForm.initValidDate.$invalid">
|
| <span class="glyphicon glyphicon-warning-sign"></span>
|
| <span ng-show="packForm.init_valid_date.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('Init valid date')"></span>
|
| </div>
|
| </div>
|
| <div class="col-md-4">
|
| <input type="date" id="end_valid_date" name="end_valid_date" placeholder=""
|
| class="form-control" ng-model="pack.end_valid_date"
|
| ng-required="mandatory.end_valid_date" />
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="packForm.initValidDate.$invalid">
|
| <span class="glyphicon glyphicon-warning-sign"></span>
|
| <span ng-show="packForm.end_valid_date.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('End valid date')"></span>
|
| </div>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" for="num_licenses" i18n>Num.
|
| Licenses</label>
|
| <div class="col-md-8">
|
| <input type="number" id="num_licenses" name="num_licenses"
|
| placeholder="" class="form-control" ng-model="pack.num_licenses"
|
| ng-required="mandatory.num_licenses" />
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="packForm.num_licenses.$invalid">
|
| <span class="glyphicon glyphicon-warning-sign"></span> <span
|
| ng-show="packForm.num_licenses.$error.maxlength"
|
| ng-bind="maxlengthErrorMsg('Num. Licenses', maxlength.num_licenses)"></span>
|
| <span ng-show="packForm.num_licenses.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('Num. Licenses')"></span>
|
| </div>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group" ng-if="!isNew">
|
| <label class="col-md-3 control-label" for="status" i18n>Status</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static" ng-bind="pack.status_name"></p>
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="packForm.status.$invalid">
|
| <span class="glyphicon glyphicon-warning-sign"></span> <span
|
| ng-show="packForm.status.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('Status')"></span>
|
| </div>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" for="license_type_id" i18n>License
|
| type</label>
|
| <div class="col-md-8">
|
| <select ng-if="isNew" class="form-control" id="license_type_id"
|
| ng-change="updateMetadata()"
|
| ng-required="mandatory.license_type_id"
|
| ng-model="pack.license_type_id"
|
| ng-options="o.id as o.label for o in refs.license_type_id">
|
| </select>
|
| <p ng-if="!isNew" class="form-control-static" ng-bind="pack.license_type_name"></p>
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="packForm.license_type_id.$invalid">
|
| <span class="glyphicon glyphicon-warning-sign"></span> <span
|
| ng-show="packForm.license_type_id.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('License type')"></span>
|
| </div>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" for="organization_id" i18n>Organization</label>
|
| <div class="col-md-8">
|
| <select ng-if="isNew" class="form-control"
|
| ng-model="pack.organization_id"
|
| ng-required="mandatory.organization_id"
|
| ng-options="o.id as o.label for o in refs.organization_id">
|
| </select>
|
| <p ng-if="!isNew" class="form-control-static" ng-bind="pack.organization_name"></p>
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="packForm.organization_id.$invalid">
|
| <span class="glyphicon glyphicon-warning-sign"></span> <span
|
| ng-show="packForm.organization_id.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('Organization')"></span>
|
| </div>
|
| </div>
|
| </div>
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" for="license_preactivation"
|
| i18n>License preactivation</label>
|
| <div class="col-md-8">
|
| <input type="checkbox" class="form-control"
|
| ng-model="pack.license_preactivation" />
|
| </div>
|
| </div>
|
|
|
|
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" for="comments" i18n>Comments</label>
|
| <div class="col-md-8">
|
| <textarea type="string" id="comments" name="comments"
|
| placeholder="" class="form-control" ng-model="pack.comments"
|
| rows="2" ng-required="mandatory.comments"
|
| ng-maxlength="{{maxlength.comments}}"></textarea>
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="packForm.comments.$invalid">
|
| <span class="glyphicon glyphicon-warning-sign"></span> <span
|
| ng-show="packForm.comments.$error.maxlength"
|
| ng-bind="maxlengthErrorMsg('Comments', maxlength.comments)"></span>
|
| <span ng-show="packForm.comments.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('comments')"></span>
|
| </div>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group" ng-if="!isNew">
|
| <label i18n class="col-md-3 control-label">Created by</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static" ng-bind="pack.created_by_name"></p>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group" ng-if="!isNew">
|
| <label i18n class="col-md-3 control-label">Creation date</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static"
|
| ng-bind="pack.creation_timestamp | date:'medium'"></p>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" i18n>Metadata</label>
|
| <div class="col-md-8">
|
| <table class="table table-hover table-condensed">
|
| <thead>
|
| <tr>
|
| <th i18n>Key</th>
|
| <th i18n>Value</th>
|
| </tr>
|
| </thead>
|
| <tbody>
|
| <tr ng-repeat="row_md in pack.metadata">
|
| <td><input type="text" id="md_key" name="md_key"
|
| placeholder="" ng-readonly="true"
|
| class="form-control" ng-model="row_md['key']"
|
| ng-required="true" /></td>
|
| <td><input type="text" id="md_value" name="md_value" ng-readonly="row_md['readonly']"
|
| placeholder="" class="form-control" ng-model="row_md['value']"
|
| ng-required="row_md['mandatory']" ng-maxlength="150" /></td>
|
| </tr>
|
| </tbody>
|
| </table>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group">
|
| <div class="col-md-offset-3 col-md-10 " id="saveContainer">
|
| <button id="save" type="submit" class="btn btn-primary">
|
| <span i18n class="glyphicon glyphicon-floppy-disk"></span> Save
|
| </button>
|
| <button ng-if="!isNew" id="acc" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
| <span i18n class="glyphicon glyphicon-align-justify"></span> Actions
|
| <span class="caret"></span>
|
| </button>
|
| <ul class="dropdown-menu" role="menu">
|
| <li><a href="#" ng-click="execute('activate')">Activate</a></li>
|
| <li><a href="#">On hold</a></li>
|
| <li class="divider"></li>
|
| <li><a href="#">Invalidate</a></li>
|
| <li><a href="#">Delete</a></li>
|
| </ul>
|
| </div>
|
| </div>
|
| </form>
|
| </div>
|
|
|
|
|
| <div class="panel panel-default">
|
| <div class="panel-heading">
|
| Packs <span class="badge pull-right" ng-bind="packs.length || 0"></span>
|
| </div>
|
|
|
| <table class="table table-hover table-condensed">
|
| <thead>
|
| <tr>
|
| <th i18n>Code</th>
|
| <th i18n>Organization</th>
|
| <th i18n>Application</th>
|
| <th i18n>Licenses</th>
|
| <th></th>
|
| </tr>
|
| </thead>
|
| <tbody>
|
| <tr ng-repeat="p in packs | filter:searchText"
|
| ng-dblclick="editPack(p)"
|
| ng-class="{success: currentPack.id === p.id}"
|
| ng-click="selectPack(p)">
|
| <td style="white-space: nowrap;" ng-bind="p.code"></td>
|
| <td ng-bind="ellipsis(p.organization_name, 20)"
|
| title="{{pack.organization_name}}"></td>
|
| <td ng-bind="p.application_name"></td>
|
| <td
|
| title="Total: {{p.num_licenses}}, available: {{p.num_available}}">{{p.num_licenses}}
|
| ({{p.num_available}})</td>
|
| <td><span ng-click="editPack(p)"
|
| class="glyphicon glyphicon-pencil"></span> <span
|
| ng-click="deletePack(p)" class="glyphicon glyphicon-remove"></span>
|
| </td>
|
| </tr>
|
| </tbody>
|
| <tfoot>
|
| </tfoot>
|
| </table>
|
| </div>
|
|
|
| </div>
|
| {{license | json}}
|
| <div id="licenses_section" class="col-md-6"
|
| ng-controller="LicensesCtrl">
|
| <nav class="navbar navbar-default navbar-static-top"
|
| ng-disabled="!currentPack">
|
| <div class="container-fluid">
|
| <!-- Brand and toggle get grouped for better mobile display -->
|
| <div class="navbar-header success">
|
| <a class="navbar-brand" i18n>Licenses</a>
|
| </div>
|
|
|
| <!-- Collect the nav links, forms, and other content for toggling -->
|
| <div class="collapse navbar-collapse"
|
| id="bs-example-navbar-collapse-1">
|
| <ul class="nav navbar-nav">
|
| <li><a i18n ng-click="newLicense()"><span
|
| class="glyphicon glyphicon-plus"></span> New</a></li>
|
| <li><a i18n ng-click="cancel()"> <span
|
| class="glyphicon glyphicon-ban-circle"></span> Cancel
|
| </a></li>
|
| </ul>
|
| <div class="navbar-form navbar-right form-group">
|
| <span class="input-group input-group-sm">
|
| <div class="input-group-addon" style="width: 28px;">
|
| <span class=" glyphicon glyphicon-search"></span>
|
| </div> <input type="text" class="form-control" placeholder="Search"
|
| ng-model="$searchLicensesText">
|
| <div class="input-group-addon" style="width: 20px;">
|
| <span class=" glyphicon glyphicon-remove"
|
| ng-click="$searchLicensesText = '';"></span>
|
| </div>
|
| </span>
|
| </div>
|
| </div>
|
| </div>
|
| </nav>
|
|
|
| <div ng-if="!currentPack" class="well well-lg">
|
| <h4 i18n>No pack selected</h4>
|
| <p i18n>Please, select a pack to manage its licenses</p>
|
| </div>
|
|
|
| <div ng-if="currentPack"
|
| class="panel panel-default animate-show ng-hide" ng-show="showForm">
|
| <form role="form" class="form-horizontal " name="licenseForm"
|
| id="licenseForm" ng-submit="save()">
|
| <div class="form-group" ng-if="!isNew">
|
| <label class="col-md-3 control-label">ID</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static" ng-bind="license.id"></p>
|
| </div>
|
| </div>
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" for="pack_id" i18n>Pack</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static" ng-bind="currentPack.code"></p>
|
| <input type="hidden" id="pack_id" name="pack_id"
|
| ng-model="license.pack_id" />
|
| </div>
|
| </div>
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" for="code" i18n>Code</label>
|
| <div class="col-md-8">
|
| <input type="string" id="code" name="code" placeholder=""
|
| class="form-control" ng-model="license.code"
|
| ng-required="mandatory.code" ng-maxlength="{{maxlength.code}}" />
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="licenseForm.code.$invalid">
|
| <span class="glyphicon glyphicon-warning-sign"></span> <span
|
| ng-show="licenseForm.code.$error.maxlength"
|
| ng-bind="maxlengthErrorMsg('Code', maxlength.code)"></span> <span
|
| ng-show="licenseForm.code.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('Code')"></span>
|
| </div>
|
| </div>
|
| </div>
|
| <div class="form-group" ng-if="!isNew">
|
| <label class="col-md-3 control-label" i18n>Status</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static" ng-bind="showStatusLong(license)"></p>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" for="full_name" i18n>User
|
| full name</label>
|
| <div class="col-md-8">
|
| <input type="string" id="full_name" name="full_name"
|
| placeholder="" class="form-control" ng-model="license.full_name"
|
| ng-required="mandatory.full_name" />
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="licenseForm.full_name.$invalid">
|
| <span class="glyphicon glyphicon-warning-sign"></span> <span
|
| ng-show="licenseForm.full_name.$error.maxlength"
|
| ng-bind="maxlengthErrorMsg('User full name', maxlength.full_name)"></span>
|
| <span ng-show="licenseForm.full_name.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('User full name')"></span>
|
| </div>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" for="email" i18n>User
|
| email</label>
|
| <div class="col-md-8">
|
| <input type="email" id="email" name="email" placeholder=""
|
| class="form-control" ng-model="license.email"
|
| ng-required="mandatory.email" />
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="licenseForm.email.$invalid">
|
| <span class="glyphicon glyphicon-warning-sign"></span> <span
|
| ng-show="licenseForm.email.$error.email"
|
| ng-bind="'Please, write a valid email address'"></span> <span
|
| ng-show="licenseForm.email.$error.maxlength"
|
| ng-bind="maxlengthErrorMsg('User email', maxlength.email)"></span>
|
| <span ng-show="licenseForm.email.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('User email')"></span>
|
| </div>
|
| </div>
|
| </div>
|
| <div class="form-group" ng-if="isNew || !license.request_data">
|
| <label class="col-md-3 control-label" for="request_data" i18n>Request
|
| data</label>
|
| <div class="col-md-7">
|
| <textarea id="request_data" name="request_data" placeholder=""
|
| class="form-control" ng-model="license.request_data" rows="2"
|
| ng-required="mandatory.request_data"
|
| ng-maxlength="{{maxlength.request_data}}"></textarea>
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="licenseForm.request_data.$invalid">
|
| Invalid ? {{licenseForm.request_data.$invalid}}
|
| Error ? {{licenseForm.request_data.$error | json}}
|
| Error ? {{licenseForm.request_data.$error.maxlength}}
|
| <span class="glyphicon glyphicon-warning-sign">
|
| <span
|
| ng-show="licenseForm.request_data.$error.maxlength"
|
| ng-bind="maxlengthErrorMsg('Request data', maxlength.request_data)"></span>
|
| <span ng-show="licenseForm.request_data.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('Request data')"></span>
|
| </span>
|
| </div>
|
| </div>
|
| <span class="btn btn-file btn-default btn-xs">
|
| <span class="glyphicon glyphicon-folder-open"></span>
|
| <input file-loader="license.request_data" type="file" />
|
| </span>
|
| </div>
|
|
|
| <div class="form-group">
|
| <label class="col-md-3 control-label" for="comments" i18n>Comments</label>
|
| <div class="col-md-8">
|
| <textarea type="string" id="comments" name="comments"
|
| placeholder="" class="form-control" ng-model="license.comments"
|
| rows="2" ng-required="mandatory.comments"
|
| ng-maxlength="{{maxlength.comments}}"></textarea>
|
|
|
| <div class="alert inline-alert alert-warning"
|
| ng-show="licenseForm.comments.$invalid">
|
| <span class="glyphicon glyphicon-warning-sign"></span> <span
|
| ng-show="licenseForm.comments.$error.maxlength"
|
| ng-bind="maxlengthErrorMsg('Comments', maxlength.comments)"></span>
|
| <span ng-show="licenseForm.comments.$error.required"
|
| ng-bind="mandatoryFieldErrorMsg('comments')"></span>
|
| </div>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group" ng-if="!isNew && license.request_data">
|
| <label class="col-md-3 control-label" i18n>Request data</label>
|
| <div class="col-md-8">
|
| <pre class="form-control-static"
|
| ng-bind="license.request_data | json"></pre>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group" ng-if="!isNew && license.license_data">
|
| <label class="col-md-3 control-label" i18n>License file</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static" ng-bind="license.license_data"></p>
|
| <button id="downloadLicense" class="btn btn-xs btn-link"
|
| ng-click="downloadLicense(license)">
|
| <span i18n class="glyphicon glyphicon-download"></span>
|
| </button>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group" ng-if="!isNew">
|
| <label class="col-md-3 control-label" i18n>Created by</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static" ng-bind="license.created_by_name"></p>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group" ng-if="!isNew && license.canceled_by_name">
|
| <label class="col-md-3 control-label">Canceled by</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static" ng-bind="license.canceled_by_name"></p>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group" ng-if="!isNew">
|
| <label class="col-md-3 control-label" i18n>Creation date</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static"
|
| ng-bind="license.creation_timestamp | date:'medium'"></p>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group" ng-if="!isNew">
|
| <label class="col-md-3 control-label" i18n>Modification
|
| date</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static"
|
| ng-bind="license.modificationTimestamp | date:'medium'"></p>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group"
|
| ng-if="!isNew && license.activationTimestamp">
|
| <label class="col-md-3 control-label" i18n>Activation date</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static"
|
| ng-bind="license.activationTimestamp | date:'medium'"></p>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group" ng-if="!isNew && license.sendTimestamp">
|
| <label class="col-md-3 control-label" i18n>Send date</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static"
|
| ng-bind="license.sendTimestamp | date:'medium'"></p>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group"
|
| ng-if="!isNew && license.cancelationTimestamp">
|
| <label class="col-md-3 control-label" i18n>Cancelation date</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static"
|
| ng-bind="license.cancelationTimestamp | date:'medium'"></p>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group"
|
| ng-if="!isNew && license.lastAccessTimestamp">
|
| <label class="col-md-3 control-label" i18n>Last access date</label>
|
| <div class="col-md-8">
|
| <p class="form-control-static"
|
| ng-bind="license.lastAccessTimestamp | date:'medium'"></p>
|
| </div>
|
| </div>
|
|
|
| <div class="form-group">
|
| <div class="col-md-offset-3 col-md-9" id="saveContainer">
|
| <button id="save" type="submit" class="btn btn-primary">
|
| <span i18n class="glyphicon glyphicon-floppy-disk"></span> Save
|
| </button>
|
| <button ng-if="!isNew" id="acc" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
| <span i18n class="glyphicon glyphicon-align-justify"></span> Actions
|
| <span class="caret"></span>
|
| </button>
|
| <ul class="dropdown-menu" role="menu">
|
| <li ng-if="isActionVisible('activate', license)"><a ng-click="activateLicense(license)" href="#">Activate</a></li>
|
| <li ng-if="isActionVisible('download', license)"><a ng-click="downloadLicense(license)" href="#">Download</a></li>
|
| <li ng-if="isActionVisible('send', license)"><a ng-click="sendLicense(license)" href="#">Send by email</a></li>
|
| <li ng-if="isActionVisible('cancel', license)"><a ng-click="cancelLicense(license)" href="#">Invalidate</a></li>
|
| <li ng-if="isActionVisible('delete', license)"><a ng-click="removeLicense(license)" href="#">Delete</a></li>
|
| </ul>
|
|
|
| </div>
|
| </div>
|
| </form>
|
| </div>
|
|
|
| <div class="panel panel-default" ng-if="currentPack">
|
| <div class="panel-heading">
|
| <span i18n>Licenses for pack: </span>{{currentPack.code}} <span
|
| style="color: lightgreen;" class="badge pull-right"
|
| ng-bind="currentPack.lic_available || 0"></span> <span
|
| class="badge pull-right" ng-bind="licenses.length || 0"></span>
|
| </div>
|
|
|
|
|
| <table class="table table-hover table-condensed">
|
| <thead>
|
| <tr>
|
| <th i18n>License code</th>
|
| <th i18n>User fullname</th>
|
| <th i18n>Email</th>
|
| <th i18n>Status</th>
|
| <th></th>
|
| </tr>
|
| </thead>
|
| <tbody>
|
| <tr ng-repeat="lic in licenses | filter:searchLicenseText"
|
| ng-dblclick="editLicense(lic)">
|
| <td style="white-space: nowrap;" ng-bind="lic.code"></td>
|
| <td ng-bind="ellipsis(lic.full_name, 20)"
|
| title="{{lic.full_name}}"></td>
|
| <td ng-bind="ellipsis(lic.email, 30)" title="{{lic.email}}"></td>
|
| <td ng-bind="showStatus(lic.status)"></td>
|
| <td>
|
| <div class="dropdown">
|
| <a class="dropdown-toggle" data-toggle="dropdown"> <span
|
| class="glyphicon glyphicon-align-justify"></span> <span
|
| class="caret"></span>
|
| </a>
|
| <ul class="dropdown-menu">
|
| <li ng-if="isActionVisible('download', lic)"><a
|
| ng-click="downloadLicense(lic)"><span
|
| class="glyphicon glyphicon-download"></span> <span i18n>Download</span></a></li>
|
| <li ng-if="isActionVisible('edit', lic)"><a
|
| ng-click="editLicense(lic)"><span
|
| class="glyphicon glyphicon-pencil"></span> <span i18n>Edit</span></a></li>
|
| <li ng-if="isActionVisible('activate', lic)"><a
|
| ng-click="activateLicense(lic)"><span
|
| class="glyphicon glyphicon-check"></span> <span i18n>Activate</span></a></li>
|
| <li ng-if="isActionVisible('send', lic)"><a
|
| ng-click="sendEmail(lic)"><span
|
| class="glyphicon glyphicon-send"></span> <span i18n>Send
|
| email</span></a></li>
|
| <li ng-if="isActionVisible('cancel', lic)"><a
|
| ng-click="deleteLicense(lic)"><span
|
| class="glyphicon glyphicon-ban-circle"></span> <span i18n>Cancel</span></a></li>
|
| <li ng-if="isActionVisible('delete', lic)"><a
|
| ng-click="deleteLicense(lic)"><span
|
| class="glyphicon glyphicon-trash"></span> <span i18n>Delete</span></a></li>
|
| </ul>
|
| </div>
|
| </td>
|
| </tr>
|
| </tbody>
|
| <tfoot>
|
| </tfoot>
|
| </table>
|
| </div>
|
|
|
| </div>
|
| </div>
|