/*
* Copyright 2014 OSBI Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* The delete query confirmation dialog
*/
var MoveRepositoryObject = Modal.extend({
type: "save",
closeText: "Move",
events: {
'click': 'select_root_folder', /* select root folder */
'click .dialog_footer a' : 'call',
'click .query': 'select_name',
'dblclick .query': 'open_query',
'click li.folder': 'toggle_folder',
'keyup .search_file' : 'search_file',
'click .cancel_search' : 'cancel_search',
'click .export_btn' : 'export_zip',
'change .file' : 'select_file'
},
buttons: [
{ id: "test", text: "Move", method: "open_query" },
{ text: "Cancel", method: "close" }
],
initialize: function(args) {
// Append events
var self = this;
var name = "";
this.movefolder = args.query;
this.success = args.success;
this.message = "
Please select a folder.....
Loading...
" +
" " +
'Search: ' +
'
';
_.extend(this.options, {
title: "Move"
});
this.selected_folder = null;
// Initialize repository
this.repository = new Repository({}, { dialog: this });
this.bind( 'open', function( ) {
var height = ( $( "body" ).height() / 2 ) + ( $( "body" ).height() / 6 );
if( height > 420 ) {
height = 420;
}
$(this.el).find('.RepositoryObjects').height( height );
$(this.el).dialog( 'option', 'position', 'center' );
$(this.el).parents('.ui-dialog').css({ width: "550px" });
$(this.el).find('.dialog_footer').find('a[href="#open_query"]').hide();
self.repository.fetch( );
} );
// Maintain `this`
_.bindAll( this, "populate", "toggle_folder", "select_name", "select_file", "select_folder", "open_query");
},
populate: function( repository ) {
var self = this;
$( this.el ).find( '.RepositoryObjects' ).html(
_.template( $( '#template-repository-objects' ).html( ) )( {
repoObjects: repository
} )
);
self.queries = {};
function getQueries( entries ) {
_.forEach( entries, function( entry ) {
if(entry.type === 'FOLDER') {
self.queries[ entry.path ] = entry;
//}
//if( entry.type === 'FOLDER' ) {
getQueries( entry.repoObjects );
}
} );
}
getQueries( repository );
},
select_root_folder: function( event ) {
var isNameInputField = $( event.target ).attr( 'name' ) === 'name';
if( !isNameInputField ) {
this.unselect_current_selected_folder( );
}
},
toggle_folder: function( event ) {
var $target = $( event.currentTarget );
this.unselect_current_selected_folder( );
$target.children('.folder_row').addClass( 'selected' );
var $queries = $target.children( '.folder_content' );
var isClosed = $target.children( '.folder_row' ).find('.sprite').hasClass( 'collapsed' );
if( isClosed ) {
$target.children( '.folder_row' ).find('.sprite').removeClass( 'collapsed' );
$queries.removeClass( 'hide' );
} else {
$target.children( '.folder_row' ).find('.sprite').addClass( 'collapsed' );
$queries.addClass( 'hide' );
}
this.select_folder();
this.select_name(event);
return false;
},
select_name: function( event ) {
var $currentTarget = $( event.currentTarget );
this.unselect_current_selected_folder( );
$currentTarget.parent( ).parent( ).has( '.folder' ).children('.folder_row').addClass( 'selected' );
var name = $currentTarget.find( 'a' ).attr('href');
name = name.replace('#','');
$(this.el).find('.query_name').html( $('
').text( name ).html() );
$(this.el).find('.dialog_footer').find('a[href="#open_query"]').show();
this.select_folder();
return false;
},
unselect_current_selected_folder: function( ) {
$( this.el ).find( '.selected' ).removeClass( 'selected' );
},
select_folder: function() {
var foldersSelected = $( this.el ).find( '.selected' );
var file = foldersSelected.length > 0 ? foldersSelected.children('a').attr('href').replace('#','') : null;
if (typeof file != "undefined" && file !== null && file !== "") {
var form = $('#importForm');
form.find('.directory').val(file);
var url = Settings.REST_URL + (new RepositoryZipExport()).url() + "upload";
form.attr('action', url);
$(this.el).find('.zip_folder').text(file);
this.selected_folder = file;
$(this.el).find('.export_btn, .import_btn').removeAttr('disabled');
this.select_file();
} else {
$(this.el).find('.import_btn, .export_btn').attr('disabled', 'true');
}
},
select_file: function() {
var form = $('#importForm');
var filename = form.find('.file').val();
if (typeof filename != "undefined" && filename !== "" && filename !== null && this.selected_folder !== null) {
$(this.el).find('.import_btn').removeAttr('disabled');
} else {
$(this.el).find('.import_btn').attr('disabled', 'true');
}
},
open_query: function(event) {
// Save the name for future reference
var $currentTarget = $( event.currentTarget );
var file = $(this.el).find('.query_name').html();
if ($currentTarget.hasClass('query')) {
file = $currentTarget.find( 'a' ).attr('href').replace('#','');
}
var that= this;
var picture_entity = new MoveObject;
picture_entity.save({source: this.movefolder.get("file"), target: file}, {success: function(){
that.close();
that.success();
}});
event.preventDefault();
return false;
}
});
var MoveObject = Backbone.Model.extend({
url: function(){
return "api/repository/resource/move";
}
});