Skip to content

Commit

Permalink
Making all versions available.
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidASeibert committed Jan 23, 2018
1 parent 285ac22 commit a6aa300
Show file tree
Hide file tree
Showing 8 changed files with 300 additions and 191 deletions.
34 changes: 32 additions & 2 deletions src/main/resources/static/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@
<script type="text/javascript" src="javascript/PropertiesPage.js"></script>
<script type="text/javascript" src="javascript/SharePage.js"></script>
<script type="text/javascript" src="javascript/VersioningPage.js"></script>
<script type="text/javascript" src="javascript/VersionsAll.js"></script>
<script type="text/javascript" src="javascript/VersionsPage.js"></script>
<script type="text/javascript">
function getHashParameterByName( name ) {
Expand All @@ -108,7 +109,7 @@
uid: uid,
secret: secret,
endpoint: endpoint,
location: "/"
location: _s3Delimiter
}, $( '.main-content' ) );
console.trace();
console.log(browser);
Expand Down Expand Up @@ -198,7 +199,7 @@
<span class="s3Button s3PropertiesButton" title="Properties of selected item">Properties</span>
<span class="s3Button s3AclButton" title="ACL of selected item">ACL</span>
<!-- <span class="s3Button s3InfoButton" title="Storage information of selected item">Info</span>-->
<span class="s3Button s3VersionsButton" title="Versions of selected object">Versions</span>
<span class="s3Button s3VersionsButton" title="Versions and versioning satus">Versions</span>
<span class="s3Button s3FilterButton s3NamespaceButton" title="Filter results">Filter</span>
<span class="s3FilterContainer hidden">
<input type="text" class="s3FilterField"/>
Expand Down Expand Up @@ -688,6 +689,35 @@
</td>
</tr>
</script>
<script id="template.s3.versionsAll" type="text/html">
<div class="s3VersionsAll">
<div unselectable="on" class="s3ButtonBar">
<span class="s3Button s3CloseButton" title="Close">Close</span>
</div>
<div class="s3TableWrapper">
<form>
<table class="table s3VersionsAllTable">
</table>
</form>
</div>
</div>
</script>
<script id="template.s3.versionsAllRow" type="text/html">
<tr class="row">
<td class="cell s3VersionKey">%{version.key}</td>
<td class="cell s3VersionDeletion">%{version.deletion}</td>
<td class="cell s3VersionDate">D{version.lastModified}</td>
<td class="s3ButtonCell cell">
<div class="s3Button s3DownloadButton" title="Download this version">Download</div>
</td>
<td class="s3ButtonCell cell">
<div class="s3Button s3RestoreButton" title="Restore this version">Restore</div>
</td>
<td class="s3ButtonCell cell">
<div class="s3Button s3DeleteButton" title="Delete this version">Delete</div>
</td>
</tr>
</script>

</head>
<body>
Expand Down
52 changes: 17 additions & 35 deletions src/main/resources/static/javascript/PropertiesPage.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2011-2017, EMC Corporation. All rights reserved.
* Copyright (c) 2011-2018, EMC Corporation. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
Expand All @@ -19,7 +19,6 @@ PropertiesPage = function( entry, util, templateEngine ) {
var requiredSelectors = [
'.s3AddUserMetadataButton',
'.s3UserMetadataTable',

'.s3SystemMetadataTable',
'.s3SaveButton',
'.s3CancelButton'
Expand All @@ -37,6 +36,14 @@ PropertiesPage = function( entry, util, templateEngine ) {
if ( !entry.userMeta.hasOwnProperty( prop ) ) continue;
this.addTag( this.$userMetaTable, prop, entry.userMeta[prop], true );
}
if ( entry.systemMeta[ 'owner' ] ) {
if ( !entry.systemMeta[ 'ownerDisplayName' ] ) {
entry.systemMeta[ 'ownerDisplayName' ] = entry.systemMeta[ 'owner' ].displayName;
}
if ( !entry.systemMeta[ 'ownerId' ] ) {
entry.systemMeta[ 'ownerId' ] = entry.systemMeta[ 'owner' ].id;
}
}
for ( prop in entry.systemMeta ) {
if ( !entry.systemMeta.hasOwnProperty( prop ) ) continue;
this.addTag( $systemMetaTable, prop, entry.systemMeta[prop], false );
Expand Down Expand Up @@ -77,38 +84,13 @@ PropertiesPage.prototype.createTag = function() {
};
PropertiesPage.prototype.save = function() {
var page = this;

var meta = this._getProperties( this.$userMetaTable );
var allTags = Object.keys( meta );
var existingTags = Object.keys( page.entry.userMeta || {} );

var deletedTags = [];
for ( var i = 0; i < existingTags.length; i++ ) {
var p = existingTags[i];
if ( allTags.indexOf( p ) == -1 ) deletedTags.push( p );
}

var metaSaved = false, metaDeleted = false;
var callComplete = function() {
if ( metaSaved && metaDeleted ) page.modalWindow.remove();
};
if ( allTags.length > 0 ) {
page.util.setUserMetadata( page.entry, meta, function() {
metaSaved = true;
callComplete();
} );
} else metaSaved = true;
if ( deletedTags.length > 0 ) {
page.util.setUserMetadata( page.entry, meta, function() {
metaDeleted = true;
callComplete();
} );
} else metaDeleted = true;
callComplete(); // in case there's no metadata and no deletes
page.util.setUserMetadata( page.entry, page._getUserProperties(), function() {
page.modalWindow.remove();
} );
};
PropertiesPage.prototype._getProperties = function( $table ) {
PropertiesPage.prototype._getUserProperties = function() {
var properties = {};
$table.find( '.row' ).each( function() {
this.$userMetaTable.find( '.row' ).each( function() {
var $this = jQuery( this );
var prop = $this.find( '.s3PropertyName' ).text();
var $val = $this.find( '.s3PropertyValue' );
Expand All @@ -122,9 +104,9 @@ PropertiesPage.prototype._validTag = function( tag ) {
alert( this.templates.get( 'tagEmpty' ).render() );
return false;
}
var properties = {};
jQuery.extend( properties, this._getProperties( this.$userMetaTable ));
if ( properties.hasOwnProperty( tag ) ) {
var userProperties = {};
jQuery.extend( userProperties, this._getUserProperties() );
if ( userProperties.hasOwnProperty( tag ) ) {
alert( this.templates.get( 'tagExists' ).render( {tag: tag} ) );
return false;
}
Expand Down
48 changes: 34 additions & 14 deletions src/main/resources/static/javascript/S3Browser.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2011-2017, EMC Corporation. All rights reserved.
* Copyright (c) 2011-2018, EMC Corporation. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
Expand All @@ -22,7 +22,7 @@ S3Browser = function( options, $parent ) {
secret: null,
endpoint: null,
deletePrompt: true,
location: '/'
location: _s3Delimiter
};
if ( options ) {
jQuery.extend( this.settings, options );
Expand Down Expand Up @@ -146,10 +146,27 @@ S3Browser.prototype._init = function() {
fileRow = browser.singleSelectedRow();
if ( fileRow ) browser.showObjectInfo( fileRow.entry );
};
if ( this.$versionsButton.length > 0 ) this.$versionsButton[0].onclick = function() {
fileRow = browser.singleSelectedRow();
if ( fileRow ) browser.showVersions( fileRow.entry );
};
if ( this.$versionsButton.length > 0 ) {
this.$versionsButton[0].onclick = function() {
var selectedRows = browser.getSelectedRows();
if ( selectedRows.length == 1 ) { // handle the selected object
var entry = selectedRows[0].entry;
if ( browser.util.isBucket( entry.type ) ) {
browser.showVersioning( entry );
} else {
browser.showVersions( entry );
}
} else if ( selectedRows.length == 0 ) { // handle the parent object
if ( !browser.util.isRoot( browser.currentEntry ) ) {
browser.showVersions( browser.currentEntry );
} else {
browser.util.error( browser.templates.get( 'noRootVersioningError' ).render() );
}
} else { // more than one selected row
browser.util.error( browser.templates.get( 'multipleObjectVersionsError' ).render() );
}
}
};
if ( this.$filterButton.length > 0 ) this.$filterButton[0].onclick = function() {
browser.enableFilter();
};
Expand Down Expand Up @@ -376,12 +393,16 @@ S3Browser.prototype.showObjectInfo = function( entry ) {
} );
};

S3Browser.prototype.showVersioning = function( entry ) {
var browser = this;
this.util.getVersioning( entry, function( versioning ) {
new VersioningPage( entry, versioning, browser.util, browser.templates );
} );
};

S3Browser.prototype.showVersions = function( entry ) {
if (this.util.isBucket( entry.type ) ) {
var browser = this;
this.util.getVersioning( entry, function( versioning ) {
new VersioningPage( entry, versioning, browser.util, browser.templates );
} );
if ( this.util.isListable( entry.type ) ) {
new VersionsAll( entry, this.util, this.templates );
} else {
new VersionsPage( entry, this.util, this.templates );
}
Expand Down Expand Up @@ -439,7 +460,7 @@ S3Browser.prototype.uploadFile = function( file, useForm ) {

var entry = {
bucket: browser.currentEntry.bucket,
key: combineWithSlash( browser.currentEntry.key, fileName ),
key: combineWithDelimiter( browser.currentEntry.key, fileName ),
name : fileName,
size: (file ? file.Size : 'n/a'),
type: FileRow.ENTRY_TYPE.REGULAR
Expand Down Expand Up @@ -619,15 +640,14 @@ S3Browser.prototype.useHierarchicalMode = function() {
if ( this.util.useHierarchicalMode ) return;
this.util.useHierarchicalMode = true;
this.refresh();
jQuery( '.s3MoveButton' ).show();
};

S3Browser.prototype.useFlatMode = function() {
if ( !this.util.useHierarchicalMode ) return;
this.util.useHierarchicalMode = false;
this.currentEntry.key = null;
this.currentEntry.name = this.currentEntry.bucket;
this.refresh();
jQuery( '.s3MoveButton' ).hide();
};

/* remember credentials if possible using the HTML5 local storage API */
Expand Down
Loading

0 comments on commit a6aa300

Please sign in to comment.