mirror of
https://github.com/nextcloud/passman.git
synced 2025-03-01 01:45:13 +08:00
Add breadcrumb to all pages
This commit is contained in:
parent
83b5fa40e1
commit
5bfe5a7218
10 changed files with 189 additions and 129 deletions
119
css/app.css
119
css/app.css
|
@ -22,9 +22,9 @@
|
|||
text-decoration: underline; }
|
||||
|
||||
.tab_header {
|
||||
margin: 44px 0 0;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0; }
|
||||
padding: 0; }
|
||||
.tab_header li.tab:first-child {
|
||||
margin-left: 0; }
|
||||
.tab_header li.tab {
|
||||
|
@ -145,10 +145,9 @@
|
|||
#app-content #app-content-wrapper {
|
||||
min-height: 95%; }
|
||||
#app-content #app-content-wrapper #controls {
|
||||
width: calc( 100% - 280px ); }
|
||||
border-bottom: 1px solid #c9c9c9; }
|
||||
#app-content #app-content-wrapper .actions.creatable {
|
||||
padding-left: 10px;
|
||||
width: 100%; }
|
||||
overflow: hidden; }
|
||||
#app-content #app-content-wrapper .actions.creatable .bubble {
|
||||
position: relative;
|
||||
width: 185px;
|
||||
|
@ -172,7 +171,9 @@
|
|||
display: inline-block;
|
||||
font-weight: bold; }
|
||||
#app-content #app-content-wrapper .actions.creatable .searchboxContainer {
|
||||
display: inline-block; }
|
||||
display: inline-block;
|
||||
float: right;
|
||||
margin-right: 10px; }
|
||||
#app-content #app-content-wrapper .actions.creatable .searchboxContainer .searchbox {
|
||||
display: inline-block; }
|
||||
#app-content #app-content-wrapper .credential-table {
|
||||
|
@ -231,62 +232,60 @@
|
|||
#app-content #app-content-wrapper .credential-table tr td .popovermenu .action {
|
||||
padding: 10px;
|
||||
margin: -10px; }
|
||||
#app-content #app-content-wrapper .edit_credential {
|
||||
padding-top: 10px; }
|
||||
#app-content #app-content-wrapper .edit_credential label {
|
||||
display: block; }
|
||||
#app-content #app-content-wrapper .edit_credential input[type="text"], #app-content #app-content-wrapper .edit_credential input[type="password"] {
|
||||
width: 100%; }
|
||||
#app-content #app-content-wrapper .edit_credential .tags {
|
||||
#app-content #app-content-wrapper .edit_credential label {
|
||||
display: block; }
|
||||
#app-content #app-content-wrapper .edit_credential input[type="text"], #app-content #app-content-wrapper .edit_credential input[type="password"] {
|
||||
width: 100%; }
|
||||
#app-content #app-content-wrapper .edit_credential .tags {
|
||||
float: left; }
|
||||
#app-content #app-content-wrapper .edit_credential .tags .tag {
|
||||
background-color: rgba(240, 240, 240, 0.9);
|
||||
padding: 4px;
|
||||
font-size: 11px; }
|
||||
#app-content #app-content-wrapper .edit_credential tags-input .tags {
|
||||
width: 100%; }
|
||||
#app-content #app-content-wrapper .edit_credential .credential_textarea {
|
||||
width: 100%;
|
||||
height: 100px; }
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings label {
|
||||
overflow: hidden; }
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings label input[type="checkbox"] {
|
||||
width: auto !important;
|
||||
float: left; }
|
||||
#app-content #app-content-wrapper .edit_credential .tags .tag {
|
||||
background-color: rgba(240, 240, 240, 0.9);
|
||||
padding: 4px;
|
||||
font-size: 11px; }
|
||||
#app-content #app-content-wrapper .edit_credential tags-input .tags {
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings label .label {
|
||||
float: left; }
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings label .label.sm {
|
||||
font-size: 12px; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields, #app-content #app-content-wrapper .edit_credential .files {
|
||||
margin-top: 10px; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table, #app-content #app-content-wrapper .edit_credential .files table {
|
||||
width: 100%; }
|
||||
#app-content #app-content-wrapper .edit_credential .credential_textarea {
|
||||
width: 100%;
|
||||
height: 100px; }
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings label {
|
||||
overflow: hidden; }
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings label input[type="checkbox"] {
|
||||
width: auto !important;
|
||||
float: left; }
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings label .label {
|
||||
float: left; }
|
||||
#app-content #app-content-wrapper .edit_credential .password_settings label .label.sm {
|
||||
font-size: 12px; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields, #app-content #app-content-wrapper .edit_credential .files {
|
||||
margin-top: 10px; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table, #app-content #app-content-wrapper .edit_credential .files table {
|
||||
width: 100%; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table thead th, #app-content #app-content-wrapper .edit_credential .files table thead th {
|
||||
color: #fff; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table thead th.field_actions, #app-content #app-content-wrapper .edit_credential .files table thead th.field_actions {
|
||||
width: 15%; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr:hover, #app-content #app-content-wrapper .edit_credential .files table tr:hover {
|
||||
background-color: transparent; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.field_actions, #app-content #app-content-wrapper .edit_credential .files table tr td.field_actions {
|
||||
font-size: 13px;
|
||||
width: 15%; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.field_actions i, #app-content #app-content-wrapper .edit_credential .files table tr td.field_actions i {
|
||||
cursor: pointer; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td, #app-content #app-content-wrapper .edit_credential .custom_fields table tr th, #app-content #app-content-wrapper .edit_credential .files table tr td, #app-content #app-content-wrapper .edit_credential .files table tr th {
|
||||
width: 20%;
|
||||
padding: 5px; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td .editable-has-buttons.editable-input, #app-content #app-content-wrapper .edit_credential .custom_fields table tr th .editable-has-buttons.editable-input, #app-content #app-content-wrapper .edit_credential .files table tr td .editable-has-buttons.editable-input, #app-content #app-content-wrapper .edit_credential .files table tr th .editable-has-buttons.editable-input {
|
||||
width: 55%; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td, #app-content #app-content-wrapper .edit_credential .files table tr td {
|
||||
height: 50px;
|
||||
vertical-align: middle; }
|
||||
#app-content #app-content-wrapper .edit_credential .file_tab .progress {
|
||||
margin-top: 10px;
|
||||
height: 10px; }
|
||||
#app-content #app-content-wrapper .edit_credential .file_tab .progress .progress-bar {
|
||||
height: 10px;
|
||||
background-image: none;
|
||||
background-color: #0082c9; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table thead th, #app-content #app-content-wrapper .edit_credential .files table thead th {
|
||||
color: #fff; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table thead th.field_actions, #app-content #app-content-wrapper .edit_credential .files table thead th.field_actions {
|
||||
width: 15%; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr:hover, #app-content #app-content-wrapper .edit_credential .files table tr:hover {
|
||||
background-color: transparent; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.field_actions, #app-content #app-content-wrapper .edit_credential .files table tr td.field_actions {
|
||||
font-size: 13px;
|
||||
width: 15%; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td.field_actions i, #app-content #app-content-wrapper .edit_credential .files table tr td.field_actions i {
|
||||
cursor: pointer; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td, #app-content #app-content-wrapper .edit_credential .custom_fields table tr th, #app-content #app-content-wrapper .edit_credential .files table tr td, #app-content #app-content-wrapper .edit_credential .files table tr th {
|
||||
width: 20%;
|
||||
padding: 5px; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td .editable-has-buttons.editable-input, #app-content #app-content-wrapper .edit_credential .custom_fields table tr th .editable-has-buttons.editable-input, #app-content #app-content-wrapper .edit_credential .files table tr td .editable-has-buttons.editable-input, #app-content #app-content-wrapper .edit_credential .files table tr th .editable-has-buttons.editable-input {
|
||||
width: 55%; }
|
||||
#app-content #app-content-wrapper .edit_credential .custom_fields table tr td, #app-content #app-content-wrapper .edit_credential .files table tr td {
|
||||
height: 50px;
|
||||
vertical-align: middle; }
|
||||
#app-content #app-content-wrapper .edit_credential .file_tab .progress {
|
||||
margin-top: 10px;
|
||||
height: 10px; }
|
||||
#app-content #app-content-wrapper .edit_credential .file_tab .progress .progress-bar {
|
||||
height: 10px;
|
||||
background-image: none;
|
||||
background-color: #0082c9; }
|
||||
#app-content #app-content-wrapper .app_sidebar {
|
||||
padding: 10px;
|
||||
overflow-y: auto; }
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -77,4 +77,33 @@ jQuery(document).ready(function () {
|
|||
angular.element('#app-content-wrapper').scope().deleteCredential(credential);
|
||||
angular.element('#app-content-wrapper').scope().$apply();
|
||||
});
|
||||
var adjustControlsWidth = function() {
|
||||
if($('#controls').length) {
|
||||
var controlsWidth;
|
||||
// if there is a scrollbar …
|
||||
if($('#app-content').get(0).scrollHeight > $('#app-content').height()) {
|
||||
if($(window).width() > 768) {
|
||||
controlsWidth = $('#content').width() - $('#app-navigation').width() - OC.Util.getScrollBarWidth();
|
||||
if (!$('#app-sidebar').hasClass('hidden') && !$('#app-sidebar').hasClass('disappear')) {
|
||||
controlsWidth -= $('#app-sidebar').width();
|
||||
}
|
||||
} else {
|
||||
controlsWidth = $('#content').width() - OC.Util.getScrollBarWidth();
|
||||
}
|
||||
} else { // if there is none
|
||||
if($(window).width() > 768) {
|
||||
controlsWidth = $('#content').width() - $('#app-navigation').width();
|
||||
if (!$('#app-sidebar').hasClass('hidden') && !$('#app-sidebar').hasClass('disappear')) {
|
||||
//controlsWidth -= $('#app-sidebar').width();
|
||||
}
|
||||
} else {
|
||||
controlsWidth = $('#content').width();
|
||||
}
|
||||
}
|
||||
$('#controls').css('width', controlsWidth);
|
||||
$('#controls').css('min-width', controlsWidth);
|
||||
}
|
||||
};
|
||||
$(window).resize(_.debounce(adjustControlsWidth, 256));
|
||||
adjustControlsWidth()
|
||||
});
|
|
@ -3,9 +3,7 @@ angular.module('templates-main', ['views/edit_credential.html', 'views/partials/
|
|||
angular.module('views/edit_credential.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/edit_credential.html',
|
||||
'<ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="{active:isActiveTab(tab)}" ng-click="onClickTab(tab)">{{tab.title}}</li></ul><div class="tab_container edit_credential"><div ng-include="currentTab.url"></div></div><button ng-click="saveCredential()">Save</button> <button ng-click="cancel()">Cancel</button><textarea>\n' +
|
||||
'{{storedCredential}}\n' +
|
||||
' </textarea>');
|
||||
'<div id="controls"><div class="actions creatable"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a><i class="fa fa-home"></i></a></div><div class="crumb svg" data-dir="/Test"><a>{{active_vault.name}}</a></div><div class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">Edit credential "{{storedCredential.label}}"</a> <a ng-if="!storedCredential.credential_id">Create new credential</a></div></div></div></div><ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="{active:isActiveTab(tab)}" ng-click="onClickTab(tab)">{{tab.title}}</li></ul><div class="tab_container edit_credential"><div ng-include="currentTab.url"></div><button ng-click="saveCredential()">Save</button> <button ng-click="cancel()">Cancel</button></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/partials/forms/edit_credential/basics.html', []).run(['$templateCache', function($templateCache) {
|
||||
|
@ -29,7 +27,7 @@ angular.module('views/partials/forms/edit_credential/files.html', []).run(['$tem
|
|||
angular.module('views/partials/forms/edit_credential/otp.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/partials/forms/edit_credential/otp.html',
|
||||
'<div class="row"><div class="col-xs-12"><div class="col-xs-2 nopadding">Upload your OTP qr code</div><div class="col-xs-6 nopadding"><input type="file" qrread on-read="parseQR(qrdata)" class="input_secret" on-read="parseQR(qrdata)"></div></div></div><hr><div class="col-xs-12" ng-if="storedCredential.otp">Current OTP settings</div><div class="col-xs-5 col-sm-4 col-md-2" ng-if="storedCredential.otp.qr_uri"><img ng-src="{{storedCredential.otp.qr_uri.image}}"></div><div class="col-sm-4 col-sm-5 col-md-5"><table ng-show="storedCredential.otp"><tr ng-show="storedCredential.otp.type"><td>Type:</td><td>{{storedCredential.otp.type}}</td></tr><tr ng-show="storedCredential.otp.label"><td>Label:</td><td>{{storedCredential.otp.label}}</td></tr><tr ng-show="storedCredential.otp.issuer"><td>Issuer:</td><td>{{storedCredential.otp.issuer}}</td></tr><tr ng-show="storedCredential.otp.secret"><td>Secret:</td><td>{{storedCredential.otp.secret}}</td></tr><tr ng-show="storedCredential.otp.secret"><td>OTP:</td><td><span otp-generator secret="storedCredential.otp.secret"></span></td></tr></table></div>');
|
||||
'<div class="row"><div class="col-xs-12"><div class="col-xs-2 nopadding">Upload your OTP qr code</div><div class="col-xs-6 nopadding"><input type="file" qrread on-read="parseQR(qrdata)" class="input_secret" on-read="parseQR(qrdata)"></div></div></div><div class="row"><div class="col-xs-12" ng-if="storedCredential.otp">Current OTP settings</div></div><div class="row"><div class="col-xs-5 col-sm-4 col-md-2" ng-if="storedCredential.otp.qr_uri"><img ng-src="{{storedCredential.otp.qr_uri.image}}"></div><div class="col-sm-4 col-sm-5 col-md-5"><table ng-show="storedCredential.otp"><tr ng-show="storedCredential.otp.type"><td>Type:</td><td>{{storedCredential.otp.type}}</td></tr><tr ng-show="storedCredential.otp.label"><td>Label:</td><td>{{storedCredential.otp.label}}</td></tr><tr ng-show="storedCredential.otp.issuer"><td>Issuer:</td><td>{{storedCredential.otp.issuer}}</td></tr><tr ng-show="storedCredential.otp.secret"><td>Secret:</td><td>{{storedCredential.otp.secret}}</td></tr><tr ng-show="storedCredential.otp.secret"><td>OTP:</td><td><span otp-generator secret="storedCredential.otp.secret"></span></td></tr></table></div></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/partials/forms/edit_credential/password.html', []).run(['$templateCache', function($templateCache) {
|
||||
|
@ -47,7 +45,7 @@ angular.module('views/partials/password-meter.html', []).run(['$templateCache',
|
|||
angular.module('views/show_vault.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/show_vault.html',
|
||||
'<div id="controls"><div class="breadcrumb"></div><div class="actions creatable"><span ng-click="menuOpen = !menuOpen" class="button new" ng-init="menuOpen = false" off-click="menuOpen = false;"><span>New</span></span><div class="actionList popovermenu bubble menu" ng-show="menuOpen"><ul><li><span ng-click="addCredential()" class="menuitem action"><span class="icon icon-rename"></span> <span>New credential</span></span></li><li><span href="#" class="menuitem action"><span class="icon icon-shared"></span> <span>New shared credential</span></span></li></ul></div><div class="searchboxContainer"><input type="text" ng-model="itemFilter.label" class="searchbox" placeholder="Search credential..."></div><span class="title" ng-if="delete_time">Showing deleted since: <span ng-if="delete_time == 1">All time</span> <span ng-if="delete_time > 1">{{delete_time | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</span></span></div></div><div off-click="closeSelected()"><table class="credential-table" ng-init="menuOpen = false;"><tr ng-repeat="credential in credentials | filter:itemFilter | tagFilter:selectedtags | as:this:\'filtered_credentials\'" ng-if="credential.hidden == 0 && showCredentialRow(credential)" ng-click="selectCredential(credential)" ng-class="{\'selected\': selectedCredential.credential_id == credential.credential_id}"><td><span class="icon"><i class="fa fa-lock"></i></span> <span class="label">{{credential.label}}</span> <span class="tags"><span class="tag" ng-repeat="tag in credential.tags_raw">{{tag.text}}</span></span></td></tr></table><div id="app-sidebar" class="detailsView scroll-container app_sidebar" ng-show="selectedCredential"><span class="close icon-close" ng-click="closeSelected()" alt="Close"></span><table><tr ng-show="selectedCredential.label"><td>Label</td><td>{{selectedCredential.label}}</td></tr><tr ng-show="selectedCredential.username"><td>Account</td><td><span credential-field value="selectedCredential.username"></span></td></tr><tr ng-show="selectedCredential.password"><td>Password</td><td><span credential-field value="selectedCredential.password" secret="\'true\'"></span></td></tr><tr ng-show="selectedCredential.otp.secret"><td>OTP</td><td><span otp-generator secret="selectedCredential.otp.secret"></span></td></tr><tr ng-show="selectedCredential.email"><td>E-mail</td><td><span credential-field value="selectedCredential.email"></span></td></tr><tr ng-show="selectedCredential.url"><td>URL</td><td><span credential-field value="selectedCredential.url"></span></td></tr><tr ng-show="selectedCredential.files.length > 0"><td>Files</td><td><div ng-repeat="file in selectedCredential.files" class="link" ng-click="downloadFile(file)">{{file.filename}} ({{file.size | bytes}})</div></td></tr><tr ng-repeat="field in selectedCredential.custom_fields"><td>{{field.label}}</td><td><span credential-field value="field.value" secret="field.secret"></span></td></tr><tr ng-show="selectedCredential.changed"><td>Changed</td><td>{{selectedCredential.changed * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td></tr><tr ng-show="selectedCredential.created"><td>Created</td><td>{{selectedCredential.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td></tr></table><div class="tags"><span class="tag" ng-repeat="tag in selectedCredential.tags">{{tag.text}}</span></div><div ng-show="selectedCredential"><span class="button" ng-click="editCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0"><span class="fa fa-edit"></span> Edit</span> <span class="button" ng-click="deleteCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0"><span class="fa fa-trash"></span> Delete</span> <span class="button" ng-if="selectedCredential.delete_time > 0" ng-click="recoverCredential(selectedCredential)"><span class="fa fa-recycle"></span> Recover</span> <span class="button" ng-if="selectedCredential.delete_time == 0"><span class="fa fa-share"></span> Share</span></div></div></div>');
|
||||
'<div id="controls"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a><i class="fa fa-home"></i></a></div><div class="crumb svg last"><a>{{active_vault.name}}</a></div></div></div><div class="actions creatable"><span ng-click="menuOpen = !menuOpen" class="button new" ng-init="menuOpen = false" off-click="menuOpen = false;"><span>+</span></span><div class="actionList popovermenu bubble menu" ng-show="menuOpen"><ul><li><span ng-click="addCredential()" class="menuitem action"><span class="icon icon-rename"></span> <span>New credential</span></span></li><li><span href="#" class="menuitem action"><span class="icon icon-shared"></span> <span>New shared credential</span></span></li></ul></div><div class="searchboxContainer"><input type="text" ng-model="itemFilter.label" class="searchbox" placeholder="Search credential..."></div><span class="title" ng-if="delete_time">Showing deleted since: <span ng-if="delete_time == 1">All time</span> <span ng-if="delete_time > 1">{{delete_time | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</span></span></div></div><div off-click="closeSelected()" off-click-filter="\'.link, .credential-table\'"><table class="credential-table" ng-init="menuOpen = false;"><tr ng-repeat="credential in credentials | filter:itemFilter | tagFilter:selectedtags | as:this:\'filtered_credentials\'" ng-if="credential.hidden == 0 && showCredentialRow(credential)" ng-click="selectCredential(credential)" ng-class="{\'selected\': selectedCredential.credential_id == credential.credential_id}"><td><span class="icon"><i class="fa fa-lock"></i></span> <span class="label">{{credential.label}}</span> <span class="tags"><span class="tag" ng-repeat="tag in credential.tags_raw">{{tag.text}}</span></span></td></tr></table><div id="app-sidebar" class="detailsView scroll-container app_sidebar" ng-show="selectedCredential"><span class="close icon-close" ng-click="closeSelected()" alt="Close"></span><table><tr ng-show="selectedCredential.label"><td>Label</td><td>{{selectedCredential.label}}</td></tr><tr ng-show="selectedCredential.username"><td>Account</td><td><span credential-field value="selectedCredential.username"></span></td></tr><tr ng-show="selectedCredential.password"><td>Password</td><td><span credential-field value="selectedCredential.password" secret="\'true\'"></span></td></tr><tr ng-show="selectedCredential.otp.secret"><td>OTP</td><td><span otp-generator secret="selectedCredential.otp.secret"></span></td></tr><tr ng-show="selectedCredential.email"><td>E-mail</td><td><span credential-field value="selectedCredential.email"></span></td></tr><tr ng-show="selectedCredential.url"><td>URL</td><td><span credential-field value="selectedCredential.url"></span></td></tr><tr ng-show="selectedCredential.files.length > 0"><td>Files</td><td><div ng-repeat="file in selectedCredential.files" class="link" ng-click="downloadFile(file)">{{file.filename}} ({{file.size | bytes}})</div></td></tr><tr ng-repeat="field in selectedCredential.custom_fields"><td>{{field.label}}</td><td><span credential-field value="field.value" secret="field.secret"></span></td></tr><tr ng-show="selectedCredential.changed"><td>Changed</td><td>{{selectedCredential.changed * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td></tr><tr ng-show="selectedCredential.created"><td>Created</td><td>{{selectedCredential.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td></tr></table><div class="tags"><span class="tag" ng-repeat="tag in selectedCredential.tags">{{tag.text}}</span></div><div ng-show="selectedCredential"><span class="button" ng-click="editCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0"><span class="fa fa-edit"></span> Edit</span> <span class="button" ng-click="deleteCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0"><span class="fa fa-trash"></span> Delete</span> <span class="button" ng-if="selectedCredential.delete_time > 0" ng-click="recoverCredential(selectedCredential)"><span class="fa fa-recycle"></span> Recover</span> <span class="button" ng-if="selectedCredential.delete_time == 0"><span class="fa fa-share"></span> Share</span></div></div></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/vaults.html', []).run(['$templateCache', function($templateCache) {
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
#app-content-wrapper {
|
||||
min-height: 95%;
|
||||
#controls{
|
||||
width: calc( 100% - 280px );
|
||||
border-bottom: 1px solid #c9c9c9
|
||||
}
|
||||
.actions.creatable {
|
||||
padding-left: 10px;
|
||||
width: 100%;
|
||||
|
||||
overflow: hidden;
|
||||
.bubble {
|
||||
position: relative;
|
||||
width: 185px;
|
||||
|
@ -36,6 +36,9 @@
|
|||
}
|
||||
.searchboxContainer{
|
||||
display: inline-block;
|
||||
float: right;
|
||||
margin-right: 10px;
|
||||
|
||||
.searchbox{
|
||||
display: inline-block;
|
||||
}
|
||||
|
@ -113,7 +116,6 @@
|
|||
}
|
||||
|
||||
.edit_credential {
|
||||
padding-top: 10px;
|
||||
label {
|
||||
display: block;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
.tab_header {
|
||||
margin: 44px 0 0;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
li.tab:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
|
|
@ -106,8 +106,10 @@ style('passman', 'app');
|
|||
</div>
|
||||
|
||||
<div id="app-content" ng-class="{'with-app-sidebar': app_sidebar}">
|
||||
<div id="app-content-wrapper" ng-view="">
|
||||
<div id="app-content-wrapper">
|
||||
<div id="content" ng-view="">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,14 +1,30 @@
|
|||
<div id="controls">
|
||||
<div class="actions creatable">
|
||||
<div class="breadcrumb">
|
||||
<div class="crumb svg ui-droppable" data-dir="/">
|
||||
<a><i class="fa fa-home"></i></a>
|
||||
</div>
|
||||
<div class="crumb svg" data-dir="/Test">
|
||||
<a>{{active_vault.name}}</a>
|
||||
</div>
|
||||
<div class="crumb svg last" data-dir="/Test">
|
||||
<a ng-if="storedCredential.credential_id">Edit credential
|
||||
"{{storedCredential.label}}"</a>
|
||||
<a ng-if="!storedCredential.credential_id">Create new
|
||||
credential</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="tab_header">
|
||||
<li ng-repeat="tab in tabs track by $index" class="tab"
|
||||
ng-class="{active:isActiveTab(tab)}"
|
||||
ng-click="onClickTab(tab)">{{tab.title}}</li>
|
||||
ng-click="onClickTab(tab)">{{tab.title}}
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="tab_container edit_credential">
|
||||
<div ng-include="currentTab.url"></div>
|
||||
<button ng-click="saveCredential()">Save</button>
|
||||
<button ng-click="cancel()">Cancel</button>
|
||||
</div>
|
||||
<button ng-click="saveCredential()">Save</button>
|
||||
<button ng-click="cancel()">Cancel</button>
|
||||
<textarea>
|
||||
{{storedCredential}}
|
||||
</textarea>
|
||||
|
|
|
@ -4,41 +4,45 @@
|
|||
Upload your OTP qr code
|
||||
</div>
|
||||
<div class="col-xs-6 nopadding">
|
||||
<input type="file" qrread on-read="parseQR(qrdata)" class="input_secret"
|
||||
on-read="parseQR(qrdata)" />
|
||||
<input type="file" qrread on-read="parseQR(qrdata)"
|
||||
class="input_secret"
|
||||
on-read="parseQR(qrdata)"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="col-xs-12" ng-if="storedCredential.otp">Current OTP settings</div>
|
||||
<div class="col-xs-5 col-sm-4 col-md-2" ng-if="storedCredential.otp.qr_uri">
|
||||
<img ng-src="{{storedCredential.otp.qr_uri.image}}"/>
|
||||
</div>
|
||||
<div class="col-sm-4 col-sm-5 col-md-5">
|
||||
<table ng-show="storedCredential.otp">
|
||||
<tr ng-show="storedCredential.otp.type">
|
||||
<td>Type:</td>
|
||||
<td>{{storedCredential.otp.type}}</td>
|
||||
</tr>
|
||||
<tr ng-show="storedCredential.otp.label">
|
||||
<td>Label:</td>
|
||||
<td>{{storedCredential.otp.label}}</td>
|
||||
</tr>
|
||||
<tr ng-show="storedCredential.otp.issuer">
|
||||
<td>Issuer:</td>
|
||||
<td>{{storedCredential.otp.issuer}}</td>
|
||||
</tr>
|
||||
<tr ng-show="storedCredential.otp.secret">
|
||||
<td>Secret:</td>
|
||||
<td>{{storedCredential.otp.secret}}</td>
|
||||
</tr>
|
||||
<tr ng-show="storedCredential.otp.secret">
|
||||
<td>OTP:</td>
|
||||
<td><span otp-generator
|
||||
secret="storedCredential.otp.secret"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="row">
|
||||
<div class="col-xs-12" ng-if="storedCredential.otp">Current OTP settings
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-5 col-sm-4 col-md-2" ng-if="storedCredential.otp.qr_uri">
|
||||
<img ng-src="{{storedCredential.otp.qr_uri.image}}"/>
|
||||
</div>
|
||||
<div class="col-sm-4 col-sm-5 col-md-5">
|
||||
<table ng-show="storedCredential.otp">
|
||||
<tr ng-show="storedCredential.otp.type">
|
||||
<td>Type:</td>
|
||||
<td>{{storedCredential.otp.type}}</td>
|
||||
</tr>
|
||||
<tr ng-show="storedCredential.otp.label">
|
||||
<td>Label:</td>
|
||||
<td>{{storedCredential.otp.label}}</td>
|
||||
</tr>
|
||||
<tr ng-show="storedCredential.otp.issuer">
|
||||
<td>Issuer:</td>
|
||||
<td>{{storedCredential.otp.issuer}}</td>
|
||||
</tr>
|
||||
<tr ng-show="storedCredential.otp.secret">
|
||||
<td>Secret:</td>
|
||||
<td>{{storedCredential.otp.secret}}</td>
|
||||
</tr>
|
||||
<tr ng-show="storedCredential.otp.secret">
|
||||
<td>OTP:</td>
|
||||
<td><span otp-generator
|
||||
secret="storedCredential.otp.secret"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
|
@ -1,16 +1,20 @@
|
|||
<div id="controls">
|
||||
<div class="breadcrumb">
|
||||
<!--<div class="crumb svg last" data-dir="/"><a-->
|
||||
<!--href="/ncdev/index.php/apps/files?dir=/"><img class="svg"-->
|
||||
<!--src="/ncdev/core/img/places/home.svg"-->
|
||||
<!--alt="Home"></a>-->
|
||||
<!--</div>-->
|
||||
<div class="breadcrumb">
|
||||
<div class="crumb svg ui-droppable" data-dir="/">
|
||||
<a><i class="fa fa-home"></i></a>
|
||||
</div>
|
||||
<div class="crumb svg last">
|
||||
<a>{{active_vault.name}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="actions creatable">
|
||||
|
||||
<span ng-click="menuOpen = !menuOpen" class="button new"
|
||||
ng-init="menuOpen = false" off-click="menuOpen = false;">
|
||||
<span
|
||||
>New</span></span>
|
||||
>+</span></span>
|
||||
<div class="actionList popovermenu bubble menu" ng-show="menuOpen">
|
||||
<ul>
|
||||
<li>
|
||||
|
@ -30,7 +34,8 @@
|
|||
</ul>
|
||||
</div>
|
||||
<div class="searchboxContainer">
|
||||
<input type="text" ng-model="itemFilter.label" class="searchbox" placeholder="Search credential...">
|
||||
<input type="text" ng-model="itemFilter.label" class="searchbox"
|
||||
placeholder="Search credential...">
|
||||
</div>
|
||||
<span class="title" ng-if="delete_time">
|
||||
Showing deleted since:
|
||||
|
@ -40,7 +45,7 @@
|
|||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div off-click="closeSelected()">
|
||||
<div off-click="closeSelected()" off-click-filter="'.link, .credential-table'">
|
||||
<table class="credential-table" ng-init="menuOpen = false;">
|
||||
<tr ng-repeat="credential in credentials | filter:itemFilter | tagFilter:selectedtags | as:this:'filtered_credentials'"
|
||||
ng-if="credential.hidden == 0 && showCredentialRow(credential)"
|
||||
|
@ -49,7 +54,7 @@
|
|||
<td>
|
||||
<span class="icon"><i class="fa fa-lock"></i> </span>
|
||||
<span class="label">{{credential.label}}</span>
|
||||
<span class="tags">
|
||||
<span class="tags">
|
||||
<span class="tag" ng-repeat="tag in credential.tags_raw">{{tag.text}}</span>
|
||||
|
||||
</span>
|
||||
|
@ -113,7 +118,7 @@
|
|||
</td>
|
||||
<td>
|
||||
<span otp-generator
|
||||
secret="selectedCredential.otp.secret"></span>
|
||||
secret="selectedCredential.otp.secret"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedCredential.email">
|
||||
|
@ -159,7 +164,8 @@
|
|||
Changed
|
||||
</td>
|
||||
<td>
|
||||
{{selectedCredential.changed * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
{{selectedCredential.changed * 1000 | date:'dd-MM-yyyy @
|
||||
HH:mm:ss'}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedCredential.created">
|
||||
|
@ -167,27 +173,31 @@
|
|||
Created
|
||||
</td>
|
||||
<td>
|
||||
{{selectedCredential.created * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
{{selectedCredential.created * 1000 | date:'dd-MM-yyyy @
|
||||
HH:mm:ss'}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<div class="tags">
|
||||
<span class="tag" ng-repeat="tag in selectedCredential.tags">{{tag.text}}</span>
|
||||
<span class="tag" ng-repeat="tag in selectedCredential.tags">{{tag.text}}</span>
|
||||
</div>
|
||||
|
||||
<div ng-show="selectedCredential">
|
||||
<span class="button" ng-click="editCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0" >
|
||||
<span class="button" ng-click="editCredential(selectedCredential)"
|
||||
ng-if="selectedCredential.delete_time == 0">
|
||||
<span class="fa fa-edit"></span> Edit
|
||||
</span>
|
||||
<span class="button" ng-click="deleteCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0" >
|
||||
<span class="fa fa-trash" ></span> Delete
|
||||
<span class="button" ng-click="deleteCredential(selectedCredential)"
|
||||
ng-if="selectedCredential.delete_time == 0">
|
||||
<span class="fa fa-trash"></span> Delete
|
||||
</span>
|
||||
<span class="button" ng-if="selectedCredential.delete_time > 0" ng-click="recoverCredential(selectedCredential)">
|
||||
<span class="fa fa-recycle" ></span> Recover
|
||||
<span class="button" ng-if="selectedCredential.delete_time > 0"
|
||||
ng-click="recoverCredential(selectedCredential)">
|
||||
<span class="fa fa-recycle"></span> Recover
|
||||
</span>
|
||||
<span class="button" ng-if="selectedCredential.delete_time == 0" >
|
||||
<span class="button" ng-if="selectedCredential.delete_time == 0">
|
||||
<span class="fa fa-share"></span> Share
|
||||
</span>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue