2014-07-28 10:06:26 -04:00
|
|
|
aside#file-tree(ng-controller="FileTreeController").full-size
|
2014-07-11 08:55:14 -04:00
|
|
|
.toolbar.toolbar-small.toolbar-alt(ng-if="permissions.write")
|
2014-06-22 12:32:15 -04:00
|
|
|
a(
|
|
|
|
href,
|
|
|
|
ng-click="openNewDocModal()",
|
|
|
|
tooltip-html-unsafe="New<br>File",
|
|
|
|
tooltip-placement="bottom"
|
|
|
|
)
|
|
|
|
i.fa.fa-file
|
|
|
|
a(
|
|
|
|
href,
|
|
|
|
ng-click="openNewFolderModal()",
|
|
|
|
tooltip="New Folder",
|
|
|
|
tooltip-placement="bottom"
|
|
|
|
)
|
|
|
|
i.fa.fa-folder
|
|
|
|
a(
|
|
|
|
href,
|
|
|
|
ng-click="openUploadFileModal()",
|
|
|
|
tooltip="Upload",
|
|
|
|
tooltip-placement="bottom"
|
|
|
|
)
|
|
|
|
i.fa.fa-upload
|
|
|
|
|
|
|
|
.toolbar-right
|
2014-06-22 15:08:56 -04:00
|
|
|
a(
|
|
|
|
href,
|
|
|
|
ng-click="startRenamingSelected()",
|
|
|
|
tooltip="Rename",
|
|
|
|
tooltip-placement="bottom"
|
|
|
|
)
|
2014-06-22 12:32:15 -04:00
|
|
|
i.fa.fa-pencil
|
2014-06-22 15:49:58 -04:00
|
|
|
a(
|
|
|
|
href,
|
|
|
|
ng-click="openDeleteModalForSelected()",
|
|
|
|
tooltip="Delete",
|
|
|
|
tooltip-placement="bottom",
|
|
|
|
tooltip-append-to-body="true"
|
|
|
|
)
|
2014-06-22 12:32:15 -04:00
|
|
|
i.fa.fa-trash-o
|
|
|
|
|
2014-07-23 09:44:44 -04:00
|
|
|
|
2014-07-03 10:05:35 -04:00
|
|
|
.file-tree-inner(
|
2014-07-11 08:55:14 -04:00
|
|
|
ng-if="rootFolder",
|
2014-07-03 10:05:35 -04:00
|
|
|
ng-controller="FileTreeRootFolderController",
|
|
|
|
ng-class="{ 'no-toolbar': !permissions.write }"
|
|
|
|
)
|
2014-07-23 09:44:44 -04:00
|
|
|
|
|
|
|
div(ng-show="ui.pdfLayout == 'flat' && (ui.view == 'editor' || ui.view == 'pdf')")
|
|
|
|
ul.list-unstyled.file-tree-list
|
|
|
|
li(
|
|
|
|
ng-class="{ 'selected': ui.view == 'pdf' }"
|
|
|
|
)
|
|
|
|
.entity
|
|
|
|
.entity-name(
|
|
|
|
ng-click="ui.view = 'pdf'"
|
|
|
|
)
|
|
|
|
i.fa.fa-fw.toggle
|
|
|
|
i.fa.fa-fw.fa-file-pdf-o
|
|
|
|
| PDF
|
|
|
|
|
2014-07-03 06:01:41 -04:00
|
|
|
ul.list-unstyled.file-tree-list(
|
2014-07-03 10:05:35 -04:00
|
|
|
droppable="permissions.write"
|
2014-07-03 06:01:41 -04:00
|
|
|
accept=".entity-name"
|
|
|
|
on-drop-callback="onDrop"
|
|
|
|
)
|
2014-06-27 12:11:26 -04:00
|
|
|
file-entity(
|
|
|
|
entity="entity",
|
2014-07-03 10:05:35 -04:00
|
|
|
permissions="permissions",
|
2014-06-27 12:11:26 -04:00
|
|
|
ng-repeat="entity in rootFolder.children | orderBy:[orderByFoldersFirst, 'name']"
|
|
|
|
)
|
|
|
|
|
|
|
|
div(ng-show="deletedDocs.length > 0 && ui.view == 'track-changes'")
|
|
|
|
h3 Deleted Files
|
|
|
|
ul.list-unstyled.file-tree-list.deleted-docs
|
|
|
|
li(
|
|
|
|
ng-class="{ 'selected': entity.selected }",
|
|
|
|
ng-repeat="entity in deletedDocs | orderBy:'name'",
|
|
|
|
ng-controller="FileTreeEntityController"
|
|
|
|
)
|
|
|
|
.entity
|
|
|
|
.entity-name(
|
|
|
|
ng-click="select()"
|
|
|
|
)
|
|
|
|
//- Just a spacer to align with folders
|
|
|
|
i.fa.fa-fw.toggle
|
|
|
|
i.fa.fa-fw.fa-file
|
2014-06-22 12:32:15 -04:00
|
|
|
|
2014-06-27 12:11:26 -04:00
|
|
|
span {{ entity.name }}
|
2014-07-22 08:33:01 -04:00
|
|
|
|
|
|
|
|
2014-07-23 09:44:44 -04:00
|
|
|
|
2014-06-22 12:32:15 -04:00
|
|
|
|
|
|
|
script(type='text/ng-template', id='entityListItemTemplate')
|
|
|
|
li(
|
|
|
|
ng-class="{ 'selected': entity.selected }",
|
|
|
|
ng-controller="FileTreeEntityController"
|
|
|
|
)
|
2014-06-23 05:57:31 -04:00
|
|
|
.entity(ng-if="entity.type != 'folder'")
|
2014-06-22 15:08:56 -04:00
|
|
|
.entity-name(
|
|
|
|
ng-click="select()"
|
2014-07-03 10:05:35 -04:00
|
|
|
ng-dblclick="permissions.write && startRenaming()"
|
|
|
|
draggable="permissions.write"
|
2014-06-23 12:25:45 -04:00
|
|
|
context-menu
|
|
|
|
data-target="context-menu-{{ entity.id }}"
|
|
|
|
context-menu-container="body"
|
2014-07-03 10:05:35 -04:00
|
|
|
context-menu-disabled="!permissions.write"
|
2014-06-22 15:08:56 -04:00
|
|
|
)
|
2014-06-22 12:32:15 -04:00
|
|
|
//- Just a spacer to align with folders
|
2014-06-22 15:21:31 -04:00
|
|
|
i.fa.fa-fw.toggle(ng-if="entity.type != 'folder'")
|
2014-06-23 05:57:31 -04:00
|
|
|
|
|
|
|
i.fa.fa-fw.fa-file(ng-if="entity.type == 'doc'")
|
|
|
|
i.fa.fa-fw.fa-image(ng-if="entity.type == 'file'")
|
|
|
|
|
|
|
|
span(
|
|
|
|
ng-hide="entity.renaming"
|
|
|
|
) {{ entity.name }}
|
|
|
|
input(
|
2014-07-03 10:05:35 -04:00
|
|
|
ng-if="permissions.write",
|
2014-06-23 05:57:31 -04:00
|
|
|
ng-show="entity.renaming",
|
|
|
|
ng-model="inputs.name",
|
|
|
|
ng-blur="finishRenaming()",
|
2014-06-23 06:25:36 -04:00
|
|
|
select-name-when="entity.renaming",
|
2014-06-23 05:57:31 -04:00
|
|
|
on-enter="finishRenaming()"
|
|
|
|
)
|
|
|
|
|
2014-07-03 10:05:35 -04:00
|
|
|
span.dropdown(
|
|
|
|
ng-show="entity.selected",
|
|
|
|
ng-if="permissions.write"
|
|
|
|
)
|
2014-06-23 07:37:05 -04:00
|
|
|
a.dropdown-toggle(href)
|
|
|
|
i.fa.fa-chevron-down
|
|
|
|
|
|
|
|
ul.dropdown-menu.dropdown-menu-right
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
|
|
|
ng-click="startRenaming()"
|
|
|
|
) Rename
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
|
|
|
ng-click="openDeleteModal()"
|
|
|
|
) Delete
|
|
|
|
|
2014-07-03 10:05:35 -04:00
|
|
|
div.dropdown.context-menu(
|
|
|
|
id="context-menu-{{ entity.id }}",
|
|
|
|
ng-if="permissions.write"
|
|
|
|
)
|
2014-06-23 12:25:45 -04:00
|
|
|
ul.dropdown-menu
|
2014-06-23 07:37:05 -04:00
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
2014-06-23 12:25:45 -04:00
|
|
|
stop-propagation="click"
|
2014-06-23 07:37:05 -04:00
|
|
|
ng-click="startRenaming()"
|
|
|
|
) Rename
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
2014-06-23 12:25:45 -04:00
|
|
|
stop-propagation="click"
|
2014-06-23 07:37:05 -04:00
|
|
|
ng-click="openDeleteModal()"
|
|
|
|
) Delete
|
|
|
|
|
|
|
|
|
2014-06-23 12:25:45 -04:00
|
|
|
.entity(ng-if="entity.type == 'folder'", ng-controller="FileTreeFolderController")
|
|
|
|
.entity-name(
|
|
|
|
ng-click="select()"
|
2014-07-03 10:05:35 -04:00
|
|
|
ng-dblclick="permissions.write && startRenaming()"
|
|
|
|
draggable="permissions.write"
|
|
|
|
droppable="permissions.write"
|
2014-06-27 10:55:08 -04:00
|
|
|
accept=".entity-name"
|
2014-06-23 12:25:45 -04:00
|
|
|
on-drop-callback="onDrop"
|
|
|
|
)
|
|
|
|
div(
|
|
|
|
context-menu
|
|
|
|
data-target="context-menu-{{ entity.id }}"
|
|
|
|
context-menu-container="body"
|
2014-07-03 10:05:35 -04:00
|
|
|
context-menu-disabled="!permissions.write"
|
2014-06-23 12:25:45 -04:00
|
|
|
)
|
|
|
|
i.fa.fa-fw.toggle(
|
|
|
|
ng-if="entity.type == 'folder'"
|
|
|
|
ng-class="{'fa-chevron-right': !expanded, 'fa-chevron-down': expanded}"
|
|
|
|
ng-click="toggleExpanded()"
|
|
|
|
)
|
|
|
|
|
|
|
|
i.fa.fa-fw(
|
|
|
|
ng-if="entity.type == 'folder'"
|
|
|
|
ng-class="{\
|
|
|
|
'fa-folder': !expanded, \
|
|
|
|
'fa-folder-open': expanded \
|
|
|
|
}"
|
|
|
|
ng-click="select()"
|
|
|
|
)
|
|
|
|
|
|
|
|
span(
|
|
|
|
ng-hide="entity.renaming"
|
|
|
|
) {{ entity.name }}
|
|
|
|
input(
|
2014-07-03 10:05:35 -04:00
|
|
|
ng-if="permissions.write",
|
2014-06-23 12:25:45 -04:00
|
|
|
ng-show="entity.renaming",
|
|
|
|
ng-model="inputs.name",
|
|
|
|
ng-blur="finishRenaming()",
|
|
|
|
select-name-when="entity.renaming",
|
|
|
|
on-enter="finishRenaming()"
|
|
|
|
)
|
|
|
|
|
2014-07-03 10:05:35 -04:00
|
|
|
span.dropdown(
|
|
|
|
ng-if="permissions.write"
|
|
|
|
ng-show="entity.selected"
|
|
|
|
)
|
2014-06-23 12:25:45 -04:00
|
|
|
a.dropdown-toggle(href)
|
|
|
|
i.fa.fa-chevron-down
|
|
|
|
|
|
|
|
ul.dropdown-menu.dropdown-menu-right
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
|
|
|
ng-click="startRenaming()"
|
|
|
|
) Rename
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
|
|
|
ng-click="openDeleteModal()"
|
|
|
|
) Delete
|
|
|
|
li.divider
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
|
|
|
ng-click="openNewDocModal()"
|
|
|
|
) New File
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
|
|
|
ng-click="openNewFolderModal()"
|
|
|
|
) New Folder
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
|
|
|
ng-click="openUploadFileModal()"
|
|
|
|
) Upload File
|
|
|
|
|
2014-07-03 10:05:35 -04:00
|
|
|
.dropdown.context-menu(
|
|
|
|
ng-if="permissions.write"
|
|
|
|
id="context-menu-{{ entity.id }}"
|
|
|
|
)
|
2014-06-23 12:25:45 -04:00
|
|
|
ul.dropdown-menu
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
|
|
|
stop-propagation="click"
|
|
|
|
ng-click="startRenaming()"
|
|
|
|
) Rename
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
|
|
|
stop-propagation="click"
|
|
|
|
ng-click="openDeleteModal()"
|
|
|
|
) Delete
|
|
|
|
li.divider
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
|
|
|
stop-propagation="click"
|
|
|
|
ng-click="openNewDocModal()"
|
|
|
|
) New File
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
|
|
|
stop-propagation="click"
|
|
|
|
ng-click="openNewFolderModal()"
|
|
|
|
) New Folder
|
|
|
|
li
|
|
|
|
a(
|
|
|
|
href="#"
|
|
|
|
prevent-default="click"
|
|
|
|
stop-propagation="click"
|
|
|
|
ng-click="openUploadFileModal()"
|
|
|
|
) Upload File
|
|
|
|
|
2014-06-22 15:21:31 -04:00
|
|
|
ul.list-unstyled(
|
|
|
|
ng-if="entity.type == 'folder'"
|
|
|
|
ng-show="expanded"
|
2014-07-03 10:05:35 -04:00
|
|
|
droppable="permissions.write"
|
2014-06-27 10:55:08 -04:00
|
|
|
accept=".entity-name"
|
2014-06-23 05:57:31 -04:00
|
|
|
on-drop-callback="onDrop"
|
2014-06-22 15:21:31 -04:00
|
|
|
)
|
2014-06-23 05:57:31 -04:00
|
|
|
file-entity(
|
|
|
|
entity="child",
|
2014-07-03 10:05:35 -04:00
|
|
|
permissions="permissions",
|
2014-06-23 05:57:31 -04:00
|
|
|
ng-repeat="child in entity.children | orderBy:[orderByFoldersFirst, 'name']"
|
|
|
|
)
|
2014-07-11 08:55:14 -04:00
|
|
|
|
2014-06-22 12:32:15 -04:00
|
|
|
script(type='text/ng-template', id='newDocModalTemplate')
|
|
|
|
.modal-header
|
|
|
|
h3 New File
|
|
|
|
.modal-body
|
|
|
|
form(novalidate, name="newDocForm")
|
|
|
|
input.form-control(
|
|
|
|
type="text",
|
|
|
|
placeholder="File Name",
|
|
|
|
required,
|
|
|
|
ng-model="inputs.name",
|
2014-06-22 15:08:56 -04:00
|
|
|
on-enter="create()",
|
2014-06-23 06:25:36 -04:00
|
|
|
select-name-on="open"
|
2014-06-22 12:32:15 -04:00
|
|
|
)
|
|
|
|
.modal-footer
|
|
|
|
button.btn.btn-default(
|
|
|
|
ng-disabled="state.inflight"
|
|
|
|
ng-click="cancel()"
|
|
|
|
) Cancel
|
|
|
|
button.btn.btn-primary(
|
|
|
|
ng-disabled="newDocForm.$invalid || state.inflight"
|
|
|
|
ng-click="create()"
|
|
|
|
)
|
|
|
|
span(ng-hide="state.inflight") Create
|
|
|
|
span(ng-show="state.inflight") Creating...
|
|
|
|
|
|
|
|
script(type='text/ng-template', id='newFolderModalTemplate')
|
|
|
|
.modal-header
|
2014-07-17 07:03:26 -04:00
|
|
|
h3 New Folder
|
2014-06-22 12:32:15 -04:00
|
|
|
.modal-body
|
|
|
|
form(novalidate, name="newFolderForm")
|
|
|
|
input.form-control(
|
|
|
|
type="text",
|
|
|
|
placeholder="Folder Name",
|
|
|
|
required,
|
|
|
|
ng-model="inputs.name",
|
2014-06-22 15:08:56 -04:00
|
|
|
on-enter="create()",
|
2014-06-23 06:25:36 -04:00
|
|
|
select-name-on="open"
|
2014-06-22 12:32:15 -04:00
|
|
|
)
|
|
|
|
.modal-footer
|
|
|
|
button.btn.btn-default(
|
|
|
|
ng-disabled="state.inflight"
|
|
|
|
ng-click="cancel()"
|
|
|
|
) Cancel
|
|
|
|
button.btn.btn-primary(
|
|
|
|
ng-disabled="newFolderForm.$invalid || state.inflight"
|
|
|
|
ng-click="create()"
|
|
|
|
)
|
|
|
|
span(ng-hide="state.inflight") Create
|
|
|
|
span(ng-show="state.inflight") Creating...
|
|
|
|
|
|
|
|
script(type="text/ng-template", id="uploadFileModalTemplate")
|
|
|
|
.modal-header
|
|
|
|
h3 Upload File(s)
|
|
|
|
.modal-body(
|
|
|
|
fine-upload
|
|
|
|
endpoint="/project/{{ project_id }}/upload"
|
|
|
|
waiting-for-response-text="Inserting file..."
|
|
|
|
failed-upload-text="Upload failed, sorry :("
|
|
|
|
upload-button-text="Select file(s)"
|
|
|
|
drag-area-text="drag file(s)"
|
|
|
|
hint-text="Hint: Press and hold the Control (Ctrl) key to select multiple files"
|
|
|
|
multiple="true"
|
|
|
|
on-complete-callback="onComplete"
|
|
|
|
on-upload-callback="onUpload"
|
|
|
|
params="{'folder_id': parent_folder_id}"
|
|
|
|
)
|
|
|
|
span Upload file(s)
|
|
|
|
.modal-footer
|
|
|
|
button.btn.btn-default(ng-click="cancel()") Cancel
|
2014-06-22 15:49:58 -04:00
|
|
|
|
|
|
|
script(type='text/ng-template', id='deleteEntityModalTemplate')
|
|
|
|
.modal-header
|
|
|
|
h3 Delete {{ entity.name }}
|
|
|
|
.modal-body
|
|
|
|
p Are you sure you want to permanently delete <strong>{{ entity.name }}</strong>?
|
|
|
|
.modal-footer
|
|
|
|
button.btn.btn-default(
|
|
|
|
ng-disabled="state.inflight"
|
|
|
|
ng-click="cancel()"
|
|
|
|
) Cancel
|
|
|
|
button.btn.btn-danger(
|
|
|
|
ng-disabled="state.inflight"
|
|
|
|
ng-click="delete()"
|
|
|
|
)
|
|
|
|
span(ng-hide="state.inflight") Delete
|
|
|
|
span(ng-show="state.inflight") Deleting...
|