From 8e6db5714c3884cc74c3230abf7b20589ccd1552 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Wed, 05 Feb 2014 09:51:58 +0000
Subject: [PATCH] #0 feature - Upgrade to Bootstrap 3.1 and jQuery 1.11.0

---
 securis/src/main/resources/static/licenses.html |  944 +++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 539 insertions(+), 405 deletions(-)

diff --git a/securis/src/main/resources/static/licenses.html b/securis/src/main/resources/static/licenses.html
index 50e97c6..6ba2104 100644
--- a/securis/src/main/resources/static/licenses.html
+++ b/securis/src/main/resources/static/licenses.html
@@ -1,420 +1,554 @@
 
-	<div ng-include="'header.html'" ></div>
+<div ng-include="'header.html'"></div>
 
-	<div class="container">
-		<div class="col-md-12">&nbsp;</div>
-		<div id="packs_section" class="col-md-6" ng-controller="PacksCtrl">
-						<nav class="navbar navbar-default navbar-static-top">
-					<!-- 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"
-						id="bs-example-navbar-collapse-1">
-						<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">
-						<div class="input-group input-group-sm">
-						  	<span class="input-group-addon glyphicon glyphicon-search" style="top: 0px;"></span>
-						  <input type="text" class="form-control" placeholder="Search" ng-model="searchText" >
-								<span class="btn input-group-addon glyphicon glyphicon-remove" ng-click="searchText = ''" style="top: 0px;"></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="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" >
-							<label class="col-md-3 control-label" for="license_type_id" i18n>License type</label>
-							<div class="col-md-8">
-									<select class="form-control" 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" >
-										<option selected="true" ng-if="!mandatory.license_type_id" value=""></option>
-									</select>
-							<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 class="form-control" ng-required="field.mandatory" ng-model="pack.organization_id"
-										ng-options="o.id as o.label for o in refs.organization_id" >
-										<option selected="true" ng-if="!mandatory.organization_id" value=""></option>
-									</select>
-							<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 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 class="col-md-3 control-label" >Creation date</label>
-							<div class="col-md-8">
-								<p class="form-control-static" ng-bind="pack.creationTimestamp | date:'medium'"></p>
-							</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>
-							</div>
-						</div>
-					</form>
+<div class="container">
+	<div class="col-md-12">&nbsp;</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>
 
-
-			<div class="panel panel-default" >
-				<div class="panel-heading">
-					Packs <span class="badge pull-right" ng-bind="packs.length || 0"></span>
+				<!-- 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>
-
-				<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">
-					<!-- Brand and toggle get grouped for better mobile display -->
-					<div class="navbar-header success">
-						<a class="navbar-brand" i18n>Licenses</a>
-					</div>
+		</nav>
 
-					<!-- 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">
-						<div class="input-group input-group-sm">
-						  	<span class="input-group-addon glyphicon glyphicon-search" style="top: 0px;"></span>
-						  <input type="text" class="form-control" placeholder="Search" ng-model="$searchPacksText" >
-								<span class="btn input-group-addon glyphicon glyphicon-remove" ng-click="$searchPacksText = ''" style="top: 0px;"></span>
-						</div>
+		<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>
-				</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="showStatusComplete(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-8">
-								<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>
-								<input file-loader="license.request_data" type="file" title="" >
-							<div class="alert inline-alert alert-warning" ng-show="licenseForm.request_data.$invalid">
-							    <span class="glyphicon glyphicon-warning-sign"></span>
-							    <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>
-							</div>
-							</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="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.creationTimestamp | 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-10" id="saveContainer">
-								<button id="save" type="submit" class="btn btn-primary" >
-									<span i18n class="glyphicon glyphicon-floppy-disk"></span> Save
-								</button>
-							</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 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>
-					
-				
-					<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(1, lic)"><a ng-click="downloadLicense(lic)"><span class="glyphicon glyphicon-download"></span> <span i18n>Download</span></a></li>
-							      <li ng-if="isActionVisible(2, lic)"><a ng-click="editLicense(lic)"><span class="glyphicon glyphicon-pencil"></span> <span i18n>Edit</span></a></li>
-							      <li ng-if="isActionVisible(4, lic)"><a ng-click="activateLicense(lic)"><span class="glyphicon glyphicon-check"></span> <span i18n>Activate</span></a></li>
-							      <li ng-if="isActionVisible(8, lic)"><a ng-click="sendEmail(lic)"><span class="glyphicon glyphicon-send"></span> <span i18n>Send email</span></a></li>
-							      <li ng-if="isActionVisible(16, lic)"><a ng-click="deleteLicense(lic)"><span class="glyphicon glyphicon-remove"></span> <span i18n>Remove</span></a></li>
-							    </ul>
-							  </div>
-							</td>
-						</tr>
-					</tbody>
-					<tfoot>
-					</tfoot>
-				</table>
-			</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 class="form-control"
+							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">
+							<option selected="true" ng-if="!mandatory.license_type_id"
+								value=""></option>
+						</select>
+						<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 class="form-control" ng-required="field.mandatory"
+							ng-model="pack.organization_id"
+							ng-options="o.id as o.label for o in refs.organization_id">
+							<option selected="true" ng-if="!mandatory.organization_id"
+								value=""></option>
+						</select>
+						<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 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 class="col-md-3 control-label">Creation date</label>
+					<div class="col-md-8">
+						<p class="form-control-static"
+							ng-bind="pack.creationTimestamp | date:'medium'"></p>
+					</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>
+					</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">
+							<span class="glyphicon glyphicon-warning-sign"></span> <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>
+						</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.creationTimestamp | 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 id="activate" class="btn btn-success"
+							ng-click="activateLicense(license)"
+							ng-if="isActionVisible('activate', license)">
+							<span i18n class="glyphicon glyphicon-check"></span> Activate
+						</button>
+						<button id="send" class="btn btn-info"
+							ng-click="sendLicense(license)"
+							ng-if="isActionVisible('send', license)">
+							<span i18n class="glyphicon glyphicon-send"></span> Send
+						</button>
+						<button id="cancel" class="btn btn-warning"
+							ng-click="cancelLicense(license)"
+							ng-if="isActionVisible('cancel', license)">
+							<span i18n class="glyphicon glyphicon-ban-circle"></span> Cancel
+						</button>
+						<button id="remove" class="btn btn-danger"
+							ng-click="removeLicense(license)"
+							ng-if="isActionVisible('delete', license)">
+							<span i18n class="glyphicon glyphicon-trash"></span> Delete
+						</button>
+					</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>
 

--
Gitblit v1.3.2