mirror of
https://github.com/overleaf/overleaf.git
synced 2025-03-15 04:24:52 +00:00
Allow dragging into the root folder
This commit is contained in:
parent
a4afc70f9b
commit
a13ee00e91
4 changed files with 27 additions and 5 deletions
|
@ -39,8 +39,12 @@ aside#file-tree(ng-controller="FileTreeController")
|
|||
)
|
||||
i.fa.fa-trash-o
|
||||
|
||||
.file-tree-inner
|
||||
ul.list-unstyled.file-tree-list
|
||||
.file-tree-inner(ng-if="rootFolder", ng-controller="FileTreeRootFolderController")
|
||||
ul.list-unstyled.file-tree-list(
|
||||
droppable
|
||||
accept=".entity-name"
|
||||
on-drop-callback="onDrop"
|
||||
)
|
||||
file-entity(
|
||||
entity="entity",
|
||||
ng-repeat="entity in rootFolder.children | orderBy:[orderByFoldersFirst, 'name']"
|
||||
|
|
|
@ -5,6 +5,7 @@ define [
|
|||
"ide/file-tree/controllers/FileTreeController"
|
||||
"ide/file-tree/controllers/FileTreeEntityController"
|
||||
"ide/file-tree/controllers/FileTreeFolderController"
|
||||
"ide/file-tree/controllers/FileTreeRootFolderController"
|
||||
], () ->
|
||||
class FileTreeManager
|
||||
constructor: (@ide, @$scope) ->
|
||||
|
@ -59,6 +60,7 @@ define [
|
|||
@ide.socket.on "reciveEntityMove", (entity_id, folder_id) =>
|
||||
entity = @findEntityById(entity_id)
|
||||
folder = @findEntityById(folder_id)
|
||||
console.log "Got recive ENTITY", entity_id, folder_id, entity, folder
|
||||
@$scope.$apply () =>
|
||||
@_moveEntityInScope(entity, folder)
|
||||
|
||||
|
@ -69,6 +71,8 @@ define [
|
|||
entity.selected = true
|
||||
|
||||
findEntityById: (id, options = {}) ->
|
||||
return @$scope.rootFolder if @$scope.rootFolder.id == id
|
||||
|
||||
entity = @_findEntityByIdInFolder @$scope.rootFolder, id
|
||||
return entity if entity?
|
||||
|
||||
|
@ -250,7 +254,7 @@ define [
|
|||
_csrf: window.csrfToken
|
||||
}
|
||||
|
||||
_deleteEntityFromScope: (entity) ->
|
||||
_deleteEntityFromScope: (entity, options = { moveToDeleted: true }) ->
|
||||
parent_folder = null
|
||||
@forEachEntity (possible_entity, folder) ->
|
||||
if possible_entity == entity
|
||||
|
@ -261,11 +265,11 @@ define [
|
|||
if index > -1
|
||||
parent_folder.children.splice(index, 1)
|
||||
|
||||
if entity.type == "doc"
|
||||
if entity.type == "doc" and options.moveToDeleted
|
||||
entity.deleted = true
|
||||
@$scope.deletedDocs.push entity
|
||||
|
||||
_moveEntityInScope: (entity, parent_folder) ->
|
||||
return if entity in parent_folder.children
|
||||
@_deleteEntityFromScope(entity)
|
||||
@_deleteEntityFromScope(entity, moveToDeleted: false)
|
||||
parent_folder.children.push(entity)
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
define [
|
||||
"base"
|
||||
], (App) ->
|
||||
App.controller "FileTreeRootFolderController", ["$scope", "ide", ($scope, ide) ->
|
||||
console.log "CREATING FileTreeRootFolderController"
|
||||
rootFolder = $scope.rootFolder
|
||||
console.log "ROOT FOLDER", rootFolder
|
||||
$scope.onDrop = (events, ui) ->
|
||||
source = $(ui.draggable).scope().entity
|
||||
console.log "DROPPED INTO ROOT", source, rootFolder
|
||||
return if !source?
|
||||
ide.fileTreeManager.moveEntity(source, rootFolder)
|
||||
]
|
|
@ -7,6 +7,7 @@ define [
|
|||
onDropCallback: "="
|
||||
}
|
||||
link: (scope, element, attrs) ->
|
||||
console.log "DROPPABLE", element, scope.onDropCallback
|
||||
element.droppable
|
||||
greedy: true
|
||||
hoverClass: "droppable-hover"
|
||||
|
|
Loading…
Reference in a new issue