mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-16 07:08:55 +00:00
@@ -31,6 +31,18 @@ define([
|
||||
render: function() {
|
||||
var dir = this.dir;
|
||||
var dirent_path = Common.pathJoin([dir.path, this.model.get('obj_name')]);
|
||||
var is_pro = app.pageOptions.is_pro;
|
||||
|
||||
// for 'file lock'
|
||||
var enable_some_op = false; // op: 'del', 'rename', 'mv'
|
||||
if (!is_pro) {
|
||||
enable_some_op = true;
|
||||
} else {
|
||||
if (!this.model.get('is_locked') || this.model.get('locked_by_me')) {
|
||||
enable_some_op = true;
|
||||
}
|
||||
}
|
||||
|
||||
this.$el.html(this.template({
|
||||
dirent: this.model.attributes,
|
||||
dirent_path: dirent_path,
|
||||
@@ -39,9 +51,12 @@ define([
|
||||
repo_id: dir.repo_id,
|
||||
is_repo_owner: dir.is_repo_owner,
|
||||
can_generate_shared_link: app.pageOptions.can_generate_shared_link,
|
||||
is_pro: app.pageOptions.is_pro,
|
||||
is_pro: is_pro,
|
||||
enable_some_op: enable_some_op,
|
||||
repo_encrypted: dir.encrypted
|
||||
}));
|
||||
this.$('.file-locked-icon').attr('title', gettext("locked by {placeholder}").replace('{placeholder}', this.model.get('lock_owner_name')));
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
@@ -57,7 +72,9 @@ define([
|
||||
'click .rename': 'rename',
|
||||
'click .mv': 'mvcp',
|
||||
'click .cp': 'mvcp',
|
||||
'click .set-folder-permission': 'setFolderPerm'
|
||||
'click .set-folder-permission': 'setFolderPerm',
|
||||
'click .lock-file': 'lockFile',
|
||||
'click .unlock-file': 'unlockFile'
|
||||
},
|
||||
|
||||
highlight: function() {
|
||||
@@ -452,8 +469,63 @@ define([
|
||||
};
|
||||
new FolderPermView(options);
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
lockOrUnlockFile: function(params) {
|
||||
var dir = this.dir,
|
||||
filepath = Common.pathJoin([dir.path, this.model.get('obj_name')]),
|
||||
callback = params.after_success;
|
||||
|
||||
$.ajax({
|
||||
url: Common.getUrl({name: 'lock_or_unlock_file', repo_id: dir.repo_id}),
|
||||
type: 'PUT',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'operation': params.op,
|
||||
'p': filepath
|
||||
},
|
||||
cache: false,
|
||||
beforeSend: Common.prepareCSRFToken,
|
||||
success: function() {
|
||||
callback();
|
||||
},
|
||||
error: function (xhr) {
|
||||
Common.ajaxErrorHandler(xhr);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
lockFile: function() {
|
||||
var _this = this;
|
||||
this.lockOrUnlockFile({
|
||||
'op': 'lock',
|
||||
'after_success': function() {
|
||||
_this.model.set({
|
||||
'is_locked': true,
|
||||
'locked_by_me': true,
|
||||
'lock_owner_name': app.pageOptions.name
|
||||
});
|
||||
app.globalState.noFileOpPopup = true;
|
||||
_this.$el.removeClass('hl');
|
||||
}
|
||||
});
|
||||
return false;
|
||||
},
|
||||
|
||||
unlockFile: function() {
|
||||
var _this = this;
|
||||
this.lockOrUnlockFile({
|
||||
'op': 'unlock',
|
||||
'after_success': function() {
|
||||
_this.model.set({
|
||||
'is_locked': false
|
||||
});
|
||||
app.globalState.noFileOpPopup = true;
|
||||
_this.$el.removeClass('hl');
|
||||
}
|
||||
});
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
return DirentView;
|
||||
|
@@ -214,8 +214,14 @@ define([
|
||||
});
|
||||
$('#simplemodal-container').css({'height':'auto'});
|
||||
$('.yes', confirm_popup).click(function() {
|
||||
file.choose_to_update = true;
|
||||
$.modal.close();
|
||||
var selected_file = dirents.findWhere({'obj_name': file.name});
|
||||
if (selected_file.get('is_locked')) {
|
||||
$('.error', confirm_popup).html(gettext("File is locked")).removeClass('hide');
|
||||
Common.disableButton($(this));
|
||||
} else {
|
||||
file.choose_to_update = true;
|
||||
$.modal.close();
|
||||
}
|
||||
});
|
||||
$('.no', confirm_popup).click(function() {
|
||||
file.choose_to_upload = true;
|
||||
|
@@ -73,6 +73,7 @@ define([
|
||||
case 'cp_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/cp/';
|
||||
case 'mv_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/mv/';
|
||||
case 'cp_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/cp/';
|
||||
case 'lock_or_unlock_file': return siteRoot + 'api2/repos/' + options.repo_id + '/file/';
|
||||
case 'new_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/new/';
|
||||
case 'new_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/new/';
|
||||
case 'del_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/delete/';
|
||||
|
Reference in New Issue
Block a user