mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-04 07:55:33 +00:00
Merge branch 'master-redesign' of https://github.com/sharelatex/web-sharelatex into master-redesign
This commit is contained in:
commit
4f91e40875
11 changed files with 489 additions and 1061 deletions
|
@ -1,113 +0,0 @@
|
|||
#archiveEntityModal(style='display: none')
|
||||
.modal
|
||||
.modal-header
|
||||
h3 Delete Project
|
||||
.modal-body
|
||||
span.message Are you sure you want to delete
|
||||
strong.name Project
|
||||
| ?
|
||||
.modal-footer
|
||||
button.btn.btn-danger.confirm Delete
|
||||
button.btn.cancel No
|
||||
|
||||
#deleteEntityModal(style='display: none')
|
||||
.modal
|
||||
.modal-header
|
||||
h3 Delete Project
|
||||
.modal-body
|
||||
p Are you sure you want to delete
|
||||
strong.name Project
|
||||
| ?
|
||||
|
||||
p
|
||||
strong It will not be possible to recover your project once deleted.
|
||||
.modal-footer
|
||||
button.btn.btn-danger.confirm Delete Forever
|
||||
button.btn.cancel No
|
||||
|
||||
#renameProjectModal(style='display: none')
|
||||
.modal
|
||||
.modal-header
|
||||
h3 Rename Project
|
||||
.modal-body
|
||||
form.form-horizontal(onkeydown="if (event.keyCode == 13){event.preventDefault(); document.getElementById('confirmRename').click()}")
|
||||
input.inputmodal#projectNewName(placeholder='name')
|
||||
.modal-footer
|
||||
button.btn.btn-primary#confirmRename Rename
|
||||
button.btn.cancel Cancel
|
||||
|
||||
#leaveProjectModal(style='display: none')
|
||||
.modal
|
||||
.modal-header
|
||||
h3 Leave Project
|
||||
.modal-body
|
||||
span.message Are you sure you want to leave
|
||||
strong.name Project
|
||||
| ?
|
||||
.modal-footer
|
||||
button.btn.btn-danger.confirm Leave
|
||||
button.btn.cancel No
|
||||
|
||||
#deleteUserAccountModal(style='display: none')
|
||||
.modal
|
||||
.modal-header
|
||||
h3 Delete Account
|
||||
.modal-body
|
||||
span.message Type
|
||||
strong Delete
|
||||
| below to confirm you want to delete your account forever
|
||||
div
|
||||
input.inputmodal(placeholder='')
|
||||
.modal-footer
|
||||
button.btn.btn-danger#confirmDeleteUser Delete Forever
|
||||
button.btn.cancel Cancel
|
||||
|
||||
#cloneProjectModal(style='display: none')
|
||||
.modal
|
||||
.modal-header
|
||||
h3 Clone Project
|
||||
.modal-body
|
||||
form.form-horizontal(onkeydown="if (event.keyCode == 13){event.preventDefault(); document.getElementById('confirmCloneProject').click()}")
|
||||
input.inputmodal#newProjectName(placeholder='New Name')
|
||||
.modal-footer
|
||||
button.btn.btn-primary#confirmCloneProject Create
|
||||
button.btn.cancel Cancel
|
||||
|
||||
#newProjectModal(style='display: none')
|
||||
.modal
|
||||
.modal-header
|
||||
h3 New Project
|
||||
.modal-body
|
||||
form.form-horizontal(onkeydown="if (event.keyCode == 13){event.preventDefault(); document.getElementById('confirmNewProject').click()}")
|
||||
input.inputmodal#newProjectName(placeholder='name')
|
||||
.modal-footer
|
||||
button.btn.btn-primary#confirmNewProject Create
|
||||
button.btn.cancel Cancel
|
||||
|
||||
#newEntityModal(style='display: none')
|
||||
.modal
|
||||
.modal-header
|
||||
h3
|
||||
.modal-body
|
||||
form.form-horizontal(onkeydown="if (event.keyCode == 13){event.preventDefault(); $('.in button#genericSave').click()}")
|
||||
input.inputmodal.span3(placeholder='name')
|
||||
.modal-footer
|
||||
button.btn.btn-primary#genericSave.confirm Save
|
||||
button.btn.cancel Cancel
|
||||
|
||||
|
||||
#errorModal(style='display: none')
|
||||
.modal
|
||||
.modal-header
|
||||
h3
|
||||
.modal-body
|
||||
span.message
|
||||
|
||||
#projectUploadModal(style='display: none')
|
||||
.modal
|
||||
.modal-header
|
||||
h3 Upload Zipped Project
|
||||
.modal-body#projectFileUpload
|
||||
span Upload a zipped project
|
||||
.modal-footer
|
||||
button.btn.cancel Cancel
|
|
@ -19,449 +19,9 @@ block content
|
|||
.container
|
||||
.row
|
||||
.col-md-2
|
||||
.dropdown
|
||||
a.btn.btn-primary.dropdown-toggle(
|
||||
href="#",
|
||||
data-toggle="dropdown"
|
||||
) New Project
|
||||
ul.dropdown-menu(role="menu")
|
||||
li
|
||||
a(
|
||||
href,
|
||||
ng-click="openCreateProjectModal()"
|
||||
) Blank Project
|
||||
li
|
||||
a(
|
||||
href,
|
||||
ng-click="openCreateProjectModal('example')"
|
||||
) Example Project
|
||||
li
|
||||
a(
|
||||
href,
|
||||
ng-click="openUploadProjectModal()"
|
||||
) Upload Project
|
||||
li.divider
|
||||
li.dropdown-header Templates
|
||||
li
|
||||
a.menu-indent(href="/templates/cv") CV or Resume
|
||||
li
|
||||
a.menu-indent(href="/templates/cover-letters") Cover Letter
|
||||
li
|
||||
a.menu-indent(href="/templates/journals") Journal Article
|
||||
li
|
||||
a.menu-indent(href="/templates/presentations") Presentation
|
||||
li
|
||||
a.menu-indent(href="/templates/thesis") Thesis
|
||||
li
|
||||
a.menu-indent(href="/templates/bibliographies") Bibliographies
|
||||
li
|
||||
a.menu-indent(href="/templates") View All »
|
||||
|
||||
.row-spaced(ng-if="projects.length > 0", ng-cloak)
|
||||
ul.list-unstyled.folders-menu(
|
||||
ng-controller="TagListController"
|
||||
)
|
||||
li(ng-class="{active: (filter == 'all')}")
|
||||
a(href, ng-click="filterProjects('all')") All projects
|
||||
li(ng-class="{active: (filter == 'owned')}")
|
||||
a(href, ng-click="filterProjects('owned')") Your projects
|
||||
li(ng-class="{active: (filter == 'shared')}")
|
||||
a(href, ng-click="filterProjects('shared')") Shared projects
|
||||
li(ng-class="{active: (filter == 'archived')}")
|
||||
a(href, ng-click="filterProjects('archived')") Deleted projects
|
||||
li(ng-if="tags.length > 0")
|
||||
h2 Folders
|
||||
li(
|
||||
ng-repeat="tag in tags | filter:nonEmpty",
|
||||
ng-controller="TagListItemController",
|
||||
ng-class="{active: tag.selected}",
|
||||
ng-cloak
|
||||
)
|
||||
a(href="#", ng-click="selectTag()")
|
||||
i.icon.fa(
|
||||
ng-class="{\
|
||||
'fa-folder-open-o': tag.selected,\
|
||||
'fa-folder-o': !tag.selected\
|
||||
}"
|
||||
)
|
||||
| {{tag.name}}
|
||||
span.subdued ({{tag.project_ids.length}})
|
||||
|
||||
.row-spaced(ng-if="projects.length == 0", ng-cloak)
|
||||
.first-project
|
||||
div
|
||||
i.fa.fa-arrow-up.fa-2x
|
||||
div
|
||||
strong Create your first project!
|
||||
|
||||
- if (showUserDetailsArea)
|
||||
.row-spaced#userProfileInformation(ng-if="projects.length > 0", ng-cloak)
|
||||
div(ng-controller="UserProfileController")
|
||||
hr(ng-show="percentComplete < 100")
|
||||
.text-centered.user-profile(ng-show="percentComplete < 100")
|
||||
.progress
|
||||
.progress-bar.progress-bar-info(ng-style="{'width' : (percentComplete+'%')}")
|
||||
|
||||
p.small
|
||||
| Your profile is
|
||||
strong {{percentComplete}}%
|
||||
| complete
|
||||
|
||||
button#completeUserProfileInformation.btn.btn-info(
|
||||
ng-hide="formVisable",
|
||||
ng-click="openUserProfileModal()"
|
||||
) Complete
|
||||
|
||||
-if (settings.enableSubscriptions && !hasSubscription)
|
||||
.row-spaced(ng-if="projects.length > 0", ng-cloak).text-centered
|
||||
hr
|
||||
p.small You are using the free version of ShareLaTeX.
|
||||
p
|
||||
a(href="/user/subscription/plans").btn.btn-primary Upgrade
|
||||
p.small
|
||||
| or unlock some free bonus features by
|
||||
a(href="/user/bonus") sharing ShareLaTeX.
|
||||
include ./list/side-bar
|
||||
|
||||
.col-md-10
|
||||
.container-fluid
|
||||
.row
|
||||
.col-md-12
|
||||
form.project-search.form-horizontal(role="form")
|
||||
.form-group.has-feedback.has-feedback-left.col-md-7
|
||||
input.form-control.col-md-7(
|
||||
placeholder='Search projects…',
|
||||
autofocus='autofocus',
|
||||
ng-model="searchText",
|
||||
focus-on='search:clear'
|
||||
)
|
||||
i.fa.fa-search.form-control-feedback-left
|
||||
i.fa.fa-times.form-control-feedback(
|
||||
ng-click="clearSearchText()",
|
||||
style="cursor: pointer;",
|
||||
ng-show="searchText.length > 0"
|
||||
)
|
||||
//- i.fa.fa-remove
|
||||
include ./list/project-list
|
||||
|
||||
.project-tools(ng-cloak)
|
||||
.btn-toolbar(ng-show="filter != 'archived'")
|
||||
.btn-group(ng-hide="selectedProjects.length < 1")
|
||||
a.btn.btn-default(
|
||||
href='#',
|
||||
tooltip="Download",
|
||||
tooltip-placement="bottom",
|
||||
ng-click="downloadSelectedProjects()"
|
||||
)
|
||||
i.fa.fa-cloud-download
|
||||
a.btn.btn-default(
|
||||
href='#',
|
||||
tooltip="Delete",
|
||||
tooltip-placement="bottom",
|
||||
ng-click="openArchiveProjectsModal()"
|
||||
)
|
||||
i.fa.fa-trash-o
|
||||
|
||||
.btn-group.dropdown(ng-hide="selectedProjects.length < 1")
|
||||
a.btn.btn-default.dropdown-toggle(
|
||||
href="#",
|
||||
data-toggle="dropdown",
|
||||
tooltip="Add to folders",
|
||||
tooltip-placement="bottom"
|
||||
)
|
||||
i.fa.fa-folder-open-o
|
||||
|
|
||||
span.caret
|
||||
ul.dropdown-menu.dropdown-menu-right.js-tags-dropdown-menu(
|
||||
role="menu"
|
||||
ng-controller="TagListController"
|
||||
)
|
||||
li.dropdown-header Add to folder
|
||||
li(
|
||||
ng-repeat="tag in tags | filter:nonEmpty | orderBy:'name'",
|
||||
ng-controller="TagDropdownItemController"
|
||||
)
|
||||
a(href="#", ng-click="addOrRemoveProjectsFromTag()", stop-propagation="click")
|
||||
i.fa(
|
||||
ng-class="{\
|
||||
'fa-check-square-o': areSelectedProjectsInTag == true,\
|
||||
'fa-square-o': areSelectedProjectsInTag == false,\
|
||||
'fa-minus-square-o': areSelectedProjectsInTag == 'partial'\
|
||||
}"
|
||||
)
|
||||
| {{tag.name}}
|
||||
li.divider
|
||||
li
|
||||
a(href="#", ng-click="openNewTagModal()", stop-propagation="click") Create New Folder
|
||||
|
||||
.btn-group(ng-hide="selectedProjects.length != 1").dropdown
|
||||
a.btn.btn-default.dropdown-toggle(
|
||||
href='#',
|
||||
data-toggle="dropdown"
|
||||
) More
|
||||
span.caret
|
||||
ul.dropdown-menu.dropdown-menu-right(role="menu")
|
||||
li(ng-show="getFirstSelectedProject().accessLevel == 'owner'")
|
||||
a(
|
||||
href='#',
|
||||
ng-click="openRenameProjectModal()"
|
||||
) Rename
|
||||
li
|
||||
a(
|
||||
href='#',
|
||||
ng-click="openCloneProjectModal()"
|
||||
) Make a copy
|
||||
|
||||
.btn-toolbar(ng-show="filter == 'archived'")
|
||||
.btn-group(ng-hide="selectedProjects.length < 1")
|
||||
a.btn.btn-default(
|
||||
href='#',
|
||||
data-original-title="Restore",
|
||||
data-toggle="tooltip",
|
||||
data-placement="bottom",
|
||||
ng-click="restoreSelectedProjects()"
|
||||
) Restore
|
||||
|
||||
.btn-group(ng-hide="selectedProjects.length < 1")
|
||||
a.btn.btn-danger(
|
||||
href='#',
|
||||
data-original-title="Delete Forever",
|
||||
data-toggle="tooltip",
|
||||
data-placement="bottom",
|
||||
ng-click="openDeleteProjectsModal()"
|
||||
) Delete Forever
|
||||
|
||||
.row.row-spaced
|
||||
.col-md-12
|
||||
.card.card-thin
|
||||
ul.list-unstyled.project-list.structured-list(
|
||||
select-all-list,
|
||||
ng-if="projects.length > 0",
|
||||
max-height="windowHeight - 290",
|
||||
ng-cloak
|
||||
)
|
||||
li.container-fluid
|
||||
.row
|
||||
.col-md-6
|
||||
input.select-all(
|
||||
select-all,
|
||||
type="checkbox"
|
||||
)
|
||||
span.header Title
|
||||
.col-md-2
|
||||
span.header Owner
|
||||
.col-md-4
|
||||
span.header Last Modified
|
||||
li.project_entry.container-fluid(
|
||||
ng-repeat="project in visibleProjects | orderBy:'lastUpdated':true",
|
||||
ng-controller="ProjectListItemController"
|
||||
)
|
||||
.row
|
||||
.col-md-6
|
||||
input.select-item(
|
||||
select-individual,
|
||||
type="checkbox",
|
||||
ng-model="project.selected"
|
||||
)
|
||||
span
|
||||
a.projectName(href="/project/{{project.id}}") {{project.name}}
|
||||
span.label.label-default.tag-label(ng-repeat='tag in project.tags')
|
||||
| {{tag.name}}
|
||||
.col-md-2
|
||||
span.owner {{ownerName()}}
|
||||
.col-md-4
|
||||
span.last-modified {{project.lastUpdated | formatDate}}
|
||||
li(
|
||||
ng-if="visibleProjects.length == 0",
|
||||
ng-cloak
|
||||
)
|
||||
.row
|
||||
.col-md-12.text-centered
|
||||
small No projects
|
||||
div.welcome.text-centered(ng-if="projects.length == 0", ng-cloak)
|
||||
h2 Welcome to ShareLaTeX!
|
||||
p New to LaTeX? Start by having a look at our
|
||||
a(href="/templates") templates
|
||||
| or
|
||||
a(href="/learn") help guides
|
||||
| ,
|
||||
br
|
||||
| or create your first project on the left.
|
||||
|
||||
script(type='text/ng-template', id='newTagModalTemplate')
|
||||
.modal-header
|
||||
h3 Create New Folder
|
||||
.modal-body
|
||||
form(name="newTagForm", novalidate)
|
||||
input.form-control(
|
||||
type="text",
|
||||
placeholder="New Folder Name",
|
||||
required,
|
||||
ng-model="inputs.newTagName",
|
||||
on-enter="create()",
|
||||
focus-on="open"
|
||||
)
|
||||
.modal-footer
|
||||
button.btn.btn-default(ng-click="cancel()") Cancel
|
||||
button.btn.btn-primary(
|
||||
ng-disabled="newTagForm.$invalid"
|
||||
ng-click="create()"
|
||||
) Create
|
||||
|
||||
script(type='text/ng-template', id='renameProjectModalTemplate')
|
||||
.modal-header
|
||||
h3 Rename Project
|
||||
.modal-body
|
||||
form(name="renameProjectForm", novalidate)
|
||||
input.form-control(
|
||||
type="text",
|
||||
placeholder="Project Name",
|
||||
ng-model="inputs.projectName",
|
||||
required,
|
||||
on-enter="rename()",
|
||||
focus-on="open"
|
||||
)
|
||||
.modal-footer
|
||||
button.btn.btn-default(ng-click="cancel()") Cancel
|
||||
button.btn.btn-primary(
|
||||
ng-click="rename()",
|
||||
ng-disabled="renameProjectForm.$invalid"
|
||||
) Rename
|
||||
|
||||
script(type='text/ng-template', id='cloneProjectModalTemplate')
|
||||
.modal-header
|
||||
h3 Copy Project
|
||||
.modal-body
|
||||
form(name="cloneProjectForm", novalidate)
|
||||
.form-group
|
||||
label New Name
|
||||
input.form-control(
|
||||
type="text",
|
||||
placeholder="New Project Name",
|
||||
required,
|
||||
ng-model="inputs.projectName",
|
||||
on-enter="clone()",
|
||||
focus-on="open"
|
||||
)
|
||||
.modal-footer
|
||||
button.btn.btn-default(
|
||||
ng-disabled="state.inflight"
|
||||
ng-click="cancel()"
|
||||
) Cancel
|
||||
button.btn.btn-primary(
|
||||
ng-disabled="cloneProjectForm.$invalid || state.inflight"
|
||||
ng-click="clone()"
|
||||
)
|
||||
span(ng-hide="state.inflight") Copy
|
||||
span(ng-show="state.inflight") Copying...
|
||||
|
||||
script(type='text/ng-template', id='newProjectModalTemplate')
|
||||
.modal-header
|
||||
h3 New Project
|
||||
.modal-body
|
||||
form(novalidate, name="newProjectForm")
|
||||
input.form-control(
|
||||
type="text",
|
||||
placeholder="Project Name",
|
||||
required,
|
||||
ng-model="inputs.projectName",
|
||||
on-enter="create()",
|
||||
focus-on="open"
|
||||
)
|
||||
.modal-footer
|
||||
button.btn.btn-default(
|
||||
ng-disabled="state.inflight"
|
||||
ng-click="cancel()"
|
||||
) Cancel
|
||||
button.btn.btn-primary(
|
||||
ng-disabled="newProjectForm.$invalid || state.inflight"
|
||||
ng-click="create()"
|
||||
)
|
||||
span(ng-hide="state.inflight") Create
|
||||
span(ng-show="state.inflight") Creating...
|
||||
|
||||
script(type='text/ng-template', id='deleteProjectsModalTemplate')
|
||||
.modal-header
|
||||
h3 {{action}} Projects
|
||||
.modal-body
|
||||
div(ng-show="projectsToDelete.length > 0")
|
||||
p You are about to delete the following projects:
|
||||
ul
|
||||
li(ng-repeat="project in projectsToDelete | orderBy:'name'")
|
||||
strong {{project.name}}
|
||||
div(ng-show="projectsToLeave.length > 0")
|
||||
p You are about to leave the following projects:
|
||||
ul
|
||||
li(ng-repeat="project in projectsToLeave | orderBy:'name'")
|
||||
strong {{project.name}}
|
||||
.modal-footer
|
||||
button.btn.btn-default(
|
||||
ng-click="cancel()"
|
||||
) Cancel
|
||||
button.btn.btn-danger(
|
||||
ng-click="delete()"
|
||||
) {{action}}
|
||||
|
||||
script(type="text/ng-template", id="uploadProjectModalTemplate")
|
||||
.modal-header
|
||||
h3 Upload Zipped Project
|
||||
.modal-body(
|
||||
fine-upload
|
||||
endpoint="/project/new/upload"
|
||||
waiting-for-response-text="Creating project..."
|
||||
failed-upload-text="Upload failed. Is it a valid zip file?"
|
||||
upload-button-text="Select a .zip file"
|
||||
drag-area-text="drag .zip file"
|
||||
multiple="false"
|
||||
allowed-extensions="['zip']"
|
||||
on-complete-callback="onComplete"
|
||||
)
|
||||
span Upload a zipped project
|
||||
.modal-footer
|
||||
button.btn.btn-default(ng-click="cancel()") Cancel
|
||||
|
||||
script(type="text/ng-template", id="userProfileModalTemplate")
|
||||
.modal-header
|
||||
h3 Your Profile
|
||||
.modal-body
|
||||
form(enctype='multipart/form-data', method='post')
|
||||
.form-group
|
||||
label(for="first_name") First Name
|
||||
input.form-control(
|
||||
type='text',
|
||||
name='first_name',
|
||||
ng-model="userInfoForm.first_name",
|
||||
ng-blur="sendUpdate()",
|
||||
placeholder="First Name",
|
||||
select-when="formVisable"
|
||||
)
|
||||
.form-group
|
||||
label(for="last_name") Last Name
|
||||
input.form-control(
|
||||
type='text',
|
||||
name='last_name',
|
||||
ng-model="userInfoForm.last_name",
|
||||
ng-blur="sendUpdate()",
|
||||
placeholder='Last Name'
|
||||
)
|
||||
.form-group#institution_auto_complete
|
||||
label(for="institution") Institution
|
||||
autocomplete(
|
||||
ng-model="userInfoForm.institution",
|
||||
name="institution",
|
||||
data="institutions",
|
||||
ng-blur="sendUpdate()",
|
||||
on-type="updateInstitutionsList",
|
||||
attr-placeholder="Institution",
|
||||
attr-inputclass="form-control"
|
||||
)
|
||||
.form-group
|
||||
label(for="role") Role
|
||||
input.form-control(
|
||||
type='text',
|
||||
name='role',
|
||||
ng-model="userInfoForm.role",
|
||||
placeholder='Role',
|
||||
ng-blur="sendUpdate()",
|
||||
typeahead="role for role in roles | filter:$viewValue"
|
||||
)
|
||||
.modal-footer
|
||||
button.btn.btn-info(ng-click="done()") Done
|
||||
include ./list/modals
|
||||
|
|
186
services/web/app/views/project/list/modals.jade
Normal file
186
services/web/app/views/project/list/modals.jade
Normal file
|
@ -0,0 +1,186 @@
|
|||
script(type='text/ng-template', id='newTagModalTemplate')
|
||||
.modal-header
|
||||
h3 Create New Folder
|
||||
.modal-body
|
||||
form(name="newTagForm", novalidate)
|
||||
input.form-control(
|
||||
type="text",
|
||||
placeholder="New Folder Name",
|
||||
required,
|
||||
ng-model="inputs.newTagName",
|
||||
on-enter="create()",
|
||||
focus-on="open",
|
||||
stop-propagation="click"
|
||||
)
|
||||
.modal-footer
|
||||
//- We stop propagation to stop the clicks from closing the
|
||||
//- 'move to folder' menu.
|
||||
button.btn.btn-default(
|
||||
ng-click="cancel()"
|
||||
stop-propagation="click"
|
||||
) Cancel
|
||||
button.btn.btn-primary(
|
||||
ng-disabled="newTagForm.$invalid"
|
||||
ng-click="create()"
|
||||
stop-propagation="click"
|
||||
) Create
|
||||
|
||||
script(type='text/ng-template', id='renameProjectModalTemplate')
|
||||
.modal-header
|
||||
h3 Rename Project
|
||||
.modal-body
|
||||
form(name="renameProjectForm", novalidate)
|
||||
input.form-control(
|
||||
type="text",
|
||||
placeholder="Project Name",
|
||||
ng-model="inputs.projectName",
|
||||
required,
|
||||
on-enter="rename()",
|
||||
focus-on="open"
|
||||
)
|
||||
.modal-footer
|
||||
button.btn.btn-default(ng-click="cancel()") Cancel
|
||||
button.btn.btn-primary(
|
||||
ng-click="rename()",
|
||||
ng-disabled="renameProjectForm.$invalid"
|
||||
) Rename
|
||||
|
||||
script(type='text/ng-template', id='cloneProjectModalTemplate')
|
||||
.modal-header
|
||||
h3 Copy Project
|
||||
.modal-body
|
||||
form(name="cloneProjectForm", novalidate)
|
||||
.form-group
|
||||
label New Name
|
||||
input.form-control(
|
||||
type="text",
|
||||
placeholder="New Project Name",
|
||||
required,
|
||||
ng-model="inputs.projectName",
|
||||
on-enter="clone()",
|
||||
focus-on="open"
|
||||
)
|
||||
.modal-footer
|
||||
button.btn.btn-default(
|
||||
ng-disabled="state.inflight"
|
||||
ng-click="cancel()"
|
||||
) Cancel
|
||||
button.btn.btn-primary(
|
||||
ng-disabled="cloneProjectForm.$invalid || state.inflight"
|
||||
ng-click="clone()"
|
||||
)
|
||||
span(ng-hide="state.inflight") Copy
|
||||
span(ng-show="state.inflight") Copying...
|
||||
|
||||
script(type='text/ng-template', id='newProjectModalTemplate')
|
||||
.modal-header
|
||||
h3 New Project
|
||||
.modal-body
|
||||
form(novalidate, name="newProjectForm")
|
||||
input.form-control(
|
||||
type="text",
|
||||
placeholder="Project Name",
|
||||
required,
|
||||
ng-model="inputs.projectName",
|
||||
on-enter="create()",
|
||||
focus-on="open"
|
||||
)
|
||||
.modal-footer
|
||||
button.btn.btn-default(
|
||||
ng-disabled="state.inflight"
|
||||
ng-click="cancel()"
|
||||
) Cancel
|
||||
button.btn.btn-primary(
|
||||
ng-disabled="newProjectForm.$invalid || state.inflight"
|
||||
ng-click="create()"
|
||||
)
|
||||
span(ng-hide="state.inflight") Create
|
||||
span(ng-show="state.inflight") Creating...
|
||||
|
||||
script(type='text/ng-template', id='deleteProjectsModalTemplate')
|
||||
.modal-header
|
||||
h3 {{action}} Projects
|
||||
.modal-body
|
||||
div(ng-show="projectsToDelete.length > 0")
|
||||
p You are about to delete the following projects:
|
||||
ul
|
||||
li(ng-repeat="project in projectsToDelete | orderBy:'name'")
|
||||
strong {{project.name}}
|
||||
div(ng-show="projectsToLeave.length > 0")
|
||||
p You are about to leave the following projects:
|
||||
ul
|
||||
li(ng-repeat="project in projectsToLeave | orderBy:'name'")
|
||||
strong {{project.name}}
|
||||
.modal-footer
|
||||
button.btn.btn-default(
|
||||
ng-click="cancel()"
|
||||
) Cancel
|
||||
button.btn.btn-danger(
|
||||
ng-click="delete()"
|
||||
) {{action}}
|
||||
|
||||
script(type="text/ng-template", id="uploadProjectModalTemplate")
|
||||
.modal-header
|
||||
h3 Upload Zipped Project
|
||||
.modal-body(
|
||||
fine-upload
|
||||
endpoint="/project/new/upload"
|
||||
waiting-for-response-text="Creating project..."
|
||||
failed-upload-text="Upload failed. Is it a valid zip file?"
|
||||
upload-button-text="Select a .zip file"
|
||||
drag-area-text="drag .zip file"
|
||||
multiple="false"
|
||||
allowed-extensions="['zip']"
|
||||
on-complete-callback="onComplete"
|
||||
)
|
||||
span Upload a zipped project
|
||||
.modal-footer
|
||||
button.btn.btn-default(ng-click="cancel()") Cancel
|
||||
|
||||
script(type="text/ng-template", id="userProfileModalTemplate")
|
||||
.modal-header
|
||||
h3 Your Profile
|
||||
.modal-body
|
||||
form(enctype='multipart/form-data', method='post')
|
||||
.form-group
|
||||
label(for="first_name") First Name
|
||||
input.form-control(
|
||||
type='text',
|
||||
name='first_name',
|
||||
ng-model="userInfoForm.first_name",
|
||||
ng-blur="sendUpdate()",
|
||||
placeholder="First Name",
|
||||
select-when="formVisable"
|
||||
)
|
||||
.form-group
|
||||
label(for="last_name") Last Name
|
||||
input.form-control(
|
||||
type='text',
|
||||
name='last_name',
|
||||
ng-model="userInfoForm.last_name",
|
||||
ng-blur="sendUpdate()",
|
||||
placeholder='Last Name'
|
||||
)
|
||||
.form-group#institution_auto_complete
|
||||
label(for="institution") Institution
|
||||
autocomplete(
|
||||
ng-model="userInfoForm.institution",
|
||||
name="institution",
|
||||
data="institutions",
|
||||
ng-blur="sendUpdate()",
|
||||
on-type="updateInstitutionsList",
|
||||
attr-placeholder="Institution",
|
||||
attr-inputclass="form-control"
|
||||
)
|
||||
.form-group
|
||||
label(for="role") Role
|
||||
input.form-control(
|
||||
type='text',
|
||||
name='role',
|
||||
ng-model="userInfoForm.role",
|
||||
placeholder='Role',
|
||||
ng-blur="sendUpdate()",
|
||||
typeahead="role for role in roles | filter:$viewValue"
|
||||
)
|
||||
.modal-footer
|
||||
button.btn.btn-info(ng-click="done()") Done
|
167
services/web/app/views/project/list/project-list.jade
Normal file
167
services/web/app/views/project/list/project-list.jade
Normal file
|
@ -0,0 +1,167 @@
|
|||
.row
|
||||
.col-md-12
|
||||
form.project-search.form-horizontal(role="form")
|
||||
.form-group.has-feedback.has-feedback-left.col-md-7
|
||||
input.form-control.col-md-7(
|
||||
placeholder='Search projects…',
|
||||
autofocus='autofocus',
|
||||
ng-model="searchText",
|
||||
focus-on='search:clear'
|
||||
)
|
||||
i.fa.fa-search.form-control-feedback-left
|
||||
i.fa.fa-times.form-control-feedback(
|
||||
ng-click="clearSearchText()",
|
||||
style="cursor: pointer;",
|
||||
ng-show="searchText.length > 0"
|
||||
)
|
||||
//- i.fa.fa-remove
|
||||
|
||||
.project-tools(ng-cloak)
|
||||
.btn-toolbar(ng-show="filter != 'archived'")
|
||||
.btn-group(ng-hide="selectedProjects.length < 1")
|
||||
a.btn.btn-default(
|
||||
href='#',
|
||||
tooltip="Download",
|
||||
tooltip-placement="bottom",
|
||||
ng-click="downloadSelectedProjects()"
|
||||
)
|
||||
i.fa.fa-cloud-download
|
||||
a.btn.btn-default(
|
||||
href='#',
|
||||
tooltip="Delete",
|
||||
tooltip-placement="bottom",
|
||||
ng-click="openArchiveProjectsModal()"
|
||||
)
|
||||
i.fa.fa-trash-o
|
||||
|
||||
.btn-group.dropdown(ng-hide="selectedProjects.length < 1")
|
||||
a.btn.btn-default.dropdown-toggle(
|
||||
href="#",
|
||||
data-toggle="dropdown",
|
||||
tooltip="Add to folders",
|
||||
tooltip-placement="bottom"
|
||||
)
|
||||
i.fa.fa-folder-open-o
|
||||
|
|
||||
span.caret
|
||||
ul.dropdown-menu.dropdown-menu-right.js-tags-dropdown-menu(
|
||||
role="menu"
|
||||
ng-controller="TagListController"
|
||||
)
|
||||
li.dropdown-header Add to folder
|
||||
li(
|
||||
ng-repeat="tag in tags | filter:nonEmpty | orderBy:'name'",
|
||||
ng-controller="TagDropdownItemController"
|
||||
)
|
||||
a(href="#", ng-click="addOrRemoveProjectsFromTag()", stop-propagation="click")
|
||||
i.fa(
|
||||
ng-class="{\
|
||||
'fa-check-square-o': areSelectedProjectsInTag == true,\
|
||||
'fa-square-o': areSelectedProjectsInTag == false,\
|
||||
'fa-minus-square-o': areSelectedProjectsInTag == 'partial'\
|
||||
}"
|
||||
)
|
||||
| {{tag.name}}
|
||||
li.divider
|
||||
li
|
||||
a(href="#", ng-click="openNewTagModal()", stop-propagation="click") Create New Folder
|
||||
|
||||
.btn-group(ng-hide="selectedProjects.length != 1").dropdown
|
||||
a.btn.btn-default.dropdown-toggle(
|
||||
href='#',
|
||||
data-toggle="dropdown"
|
||||
) More
|
||||
span.caret
|
||||
ul.dropdown-menu.dropdown-menu-right(role="menu")
|
||||
li(ng-show="getFirstSelectedProject().accessLevel == 'owner'")
|
||||
a(
|
||||
href='#',
|
||||
ng-click="openRenameProjectModal()"
|
||||
) Rename
|
||||
li
|
||||
a(
|
||||
href='#',
|
||||
ng-click="openCloneProjectModal()"
|
||||
) Make a copy
|
||||
|
||||
.btn-toolbar(ng-show="filter == 'archived'")
|
||||
.btn-group(ng-hide="selectedProjects.length < 1")
|
||||
a.btn.btn-default(
|
||||
href='#',
|
||||
data-original-title="Restore",
|
||||
data-toggle="tooltip",
|
||||
data-placement="bottom",
|
||||
ng-click="restoreSelectedProjects()"
|
||||
) Restore
|
||||
|
||||
.btn-group(ng-hide="selectedProjects.length < 1")
|
||||
a.btn.btn-danger(
|
||||
href='#',
|
||||
data-original-title="Delete Forever",
|
||||
data-toggle="tooltip",
|
||||
data-placement="bottom",
|
||||
ng-click="openDeleteProjectsModal()"
|
||||
) Delete Forever
|
||||
|
||||
.row.row-spaced
|
||||
.col-md-12
|
||||
.card.card-thin
|
||||
ul.list-unstyled.project-list.structured-list(
|
||||
select-all-list,
|
||||
ng-if="projects.length > 0",
|
||||
max-height="windowHeight - 290",
|
||||
ng-cloak
|
||||
)
|
||||
li.container-fluid
|
||||
.row
|
||||
.col-md-6
|
||||
input.select-all(
|
||||
select-all,
|
||||
type="checkbox"
|
||||
)
|
||||
span.header Title
|
||||
.col-md-2
|
||||
span.header Owner
|
||||
.col-md-4
|
||||
span.header Last Modified
|
||||
li.project_entry.container-fluid(
|
||||
ng-repeat="project in visibleProjects | orderBy:'lastUpdated':true",
|
||||
ng-controller="ProjectListItemController"
|
||||
)
|
||||
.row
|
||||
.col-md-6
|
||||
input.select-item(
|
||||
select-individual,
|
||||
type="checkbox",
|
||||
ng-model="project.selected"
|
||||
)
|
||||
span
|
||||
a.projectName(href="/project/{{project.id}}") {{project.name}}
|
||||
span(
|
||||
ng-controller="TagListController"
|
||||
)
|
||||
a.label.label-default.tag-label(
|
||||
href,
|
||||
ng-repeat='tag in project.tags',
|
||||
ng-click="selectTag(tag)"
|
||||
) {{tag.name}}
|
||||
.col-md-2
|
||||
span.owner {{ownerName()}}
|
||||
.col-md-4
|
||||
span.last-modified {{project.lastUpdated | formatDate}}
|
||||
li(
|
||||
ng-if="visibleProjects.length == 0",
|
||||
ng-cloak
|
||||
)
|
||||
.row
|
||||
.col-md-12.text-centered
|
||||
small No projects
|
||||
div.welcome.text-centered(ng-if="projects.length == 0", ng-cloak)
|
||||
h2 Welcome to ShareLaTeX!
|
||||
p New to LaTeX? Start by having a look at our
|
||||
a(href="/templates") templates
|
||||
| or
|
||||
a(href="/learn") help guides
|
||||
| ,
|
||||
br
|
||||
| or create your first project on the left.
|
105
services/web/app/views/project/list/side-bar.jade
Normal file
105
services/web/app/views/project/list/side-bar.jade
Normal file
|
@ -0,0 +1,105 @@
|
|||
.dropdown
|
||||
a.btn.btn-primary.dropdown-toggle(
|
||||
href="#",
|
||||
data-toggle="dropdown"
|
||||
) New Project
|
||||
ul.dropdown-menu(role="menu")
|
||||
li
|
||||
a(
|
||||
href,
|
||||
ng-click="openCreateProjectModal()"
|
||||
) Blank Project
|
||||
li
|
||||
a(
|
||||
href,
|
||||
ng-click="openCreateProjectModal('example')"
|
||||
) Example Project
|
||||
li
|
||||
a(
|
||||
href,
|
||||
ng-click="openUploadProjectModal()"
|
||||
) Upload Project
|
||||
li.divider
|
||||
li.dropdown-header Templates
|
||||
li
|
||||
a.menu-indent(href="/templates/cv") CV or Resume
|
||||
li
|
||||
a.menu-indent(href="/templates/cover-letters") Cover Letter
|
||||
li
|
||||
a.menu-indent(href="/templates/journals") Journal Article
|
||||
li
|
||||
a.menu-indent(href="/templates/presentations") Presentation
|
||||
li
|
||||
a.menu-indent(href="/templates/thesis") Thesis
|
||||
li
|
||||
a.menu-indent(href="/templates/bibliographies") Bibliographies
|
||||
li
|
||||
a.menu-indent(href="/templates") View All »
|
||||
|
||||
.row-spaced(ng-if="projects.length > 0", ng-cloak)
|
||||
ul.list-unstyled.folders-menu(
|
||||
ng-controller="TagListController"
|
||||
)
|
||||
li(ng-class="{active: (filter == 'all')}")
|
||||
a(href, ng-click="filterProjects('all')") All projects
|
||||
li(ng-class="{active: (filter == 'owned')}")
|
||||
a(href, ng-click="filterProjects('owned')") Your projects
|
||||
li(ng-class="{active: (filter == 'shared')}")
|
||||
a(href, ng-click="filterProjects('shared')") Shared with you
|
||||
li(ng-class="{active: (filter == 'archived')}")
|
||||
a(href, ng-click="filterProjects('archived')") Deleted projects
|
||||
li
|
||||
h2 Folders
|
||||
li(
|
||||
ng-repeat="tag in tags | filter:nonEmpty",
|
||||
ng-class="{active: tag.selected}",
|
||||
ng-cloak
|
||||
)
|
||||
a.tag(href, ng-click="selectTag(tag)")
|
||||
i.icon.fa.fa-fw(
|
||||
ng-class="{\
|
||||
'fa-folder-open-o': tag.selected,\
|
||||
'fa-folder-o': !tag.selected\
|
||||
}"
|
||||
)
|
||||
span.name {{tag.name}}
|
||||
span.subdued ({{tag.project_ids.length}})
|
||||
li(ng-cloak)
|
||||
a(href, ng-click="openNewTagModal()")
|
||||
i.fa.fa-fw.fa-plus
|
||||
| New Folder
|
||||
|
||||
.row-spaced(ng-if="projects.length == 0", ng-cloak)
|
||||
.first-project
|
||||
div
|
||||
i.fa.fa-arrow-up.fa-2x
|
||||
div
|
||||
strong Create your first project!
|
||||
|
||||
- if (showUserDetailsArea)
|
||||
.row-spaced#userProfileInformation(ng-if="projects.length > 0", ng-cloak)
|
||||
div(ng-controller="UserProfileController")
|
||||
hr(ng-show="percentComplete < 100")
|
||||
.text-centered.user-profile(ng-show="percentComplete < 100")
|
||||
.progress
|
||||
.progress-bar.progress-bar-info(ng-style="{'width' : (percentComplete+'%')}")
|
||||
|
||||
p.small
|
||||
| Your profile is
|
||||
strong {{percentComplete}}%
|
||||
| complete
|
||||
|
||||
button#completeUserProfileInformation.btn.btn-info(
|
||||
ng-hide="formVisable",
|
||||
ng-click="openUserProfileModal()"
|
||||
) Complete
|
||||
|
||||
-if (settings.enableSubscriptions && !hasSubscription)
|
||||
.row-spaced(ng-if="projects.length > 0", ng-cloak).text-centered
|
||||
hr
|
||||
p.small You are using the free version of ShareLaTeX.
|
||||
p
|
||||
a(href="/user/subscription/plans").btn.btn-primary Upgrade
|
||||
p.small
|
||||
| or unlock some free bonus features by
|
||||
a(href="/user/bonus") sharing ShareLaTeX.
|
|
@ -1,495 +0,0 @@
|
|||
#templates(style='display : none')
|
||||
|
||||
script(type="text/template")#editorLayoutTemplate
|
||||
div#mainSplitter
|
||||
aside#sidebar.ui-layout-west
|
||||
//input#search-field(type='search', placeholder='Filter Files by Name')
|
||||
// Position:relative is to get scrolling while dragging to work:
|
||||
// http://stackoverflow.com/questions/1718547/jquery-draggable-scroll-not-working-when-helper-clone-is-used
|
||||
#sections(style="position: relative;")
|
||||
#options
|
||||
span#saving-area
|
||||
|
||||
#content.content.ui-layout-center
|
||||
#loading.fullEditorArea
|
||||
#disconnect(style='display: none;').fullEditorArea
|
||||
#mainAreaMessage Sorry, your browser has lost the connection to our server. Please try refreshing the page.
|
||||
#projectDeleted(style='display: none;').fullEditorArea
|
||||
#mainAreaMessage This project has been renamed or deleted.
|
||||
#folderArea(style='display: none;').fullEditorArea
|
||||
#imageArea(style='display: none;').fullEditorArea
|
||||
iframe
|
||||
|
||||
script(type="text/template")#tabTemplate
|
||||
li(id="{{ id }}-tab-li")
|
||||
a(href="#", data-toggle="tab", data-target="\\#{{ show }}-tab", class="tab-link {{ id }}-tab")
|
||||
.content {{ name }}
|
||||
|
||||
script(type="text/template")#tabContentTemplate
|
||||
div.tab-pane(id="{{ id }}-tab")
|
||||
|
||||
script(type="text/template")#fileTreeTemplate
|
||||
.file-tree.js-file-tree
|
||||
|
||||
script(type="text/template")#fileTreeActionsTemplate
|
||||
.actions
|
||||
.new-entity.dropdown.js-new-entity-menu
|
||||
a.dropdown-toggle(href="#", data-toggle="dropdown", title="New file, folder or upload")
|
||||
i.icon-plus
|
||||
span.text New
|
||||
ul.dropdown-menu
|
||||
li
|
||||
a.js-new-file(href="#")
|
||||
img(src="/img/nide/doc.png")
|
||||
| New File
|
||||
li
|
||||
a.js-new-folder(href="#")
|
||||
img(src="/img/nide/folder.png")
|
||||
| New Folder
|
||||
li
|
||||
a.js-upload-file(href="#")
|
||||
img(src="/img/upload-file.png")
|
||||
| Upload file(s)
|
||||
.js-rename-btn.rename-btn
|
||||
a(href="#", title="Rename")
|
||||
i.icon-pencil
|
||||
.js-delete-btn.delete-btn
|
||||
a(href="#", title="Delete")
|
||||
i.icon-trash
|
||||
|
||||
script(type="text/template")#rootDocListEntity
|
||||
option {{name}}
|
||||
|
||||
script(type="text/template")#entityTemplate
|
||||
.entity-list-item(class="entity-{{ type }}", entity-type="{{ type }}", id="{{ id }}")
|
||||
.clickable.js-clickable
|
||||
i(class="sprite-{{ type }}")
|
||||
span.name {{ name }}
|
||||
input.rename.js-rename
|
||||
.dropdown-caret
|
||||
i.icon-chevron-down
|
||||
.entity-label.label.label-success
|
||||
|
||||
script(type="text/template")#folderTemplate
|
||||
.entity-list-item(class="entity-{{ type }}", entity-type="{{ type }}", id="{{ id }}")
|
||||
.toggle.js-toggle
|
||||
img(src="/img/nide/right-arrow.png").js-closed
|
||||
img(src="/img/nide/down-arrow.png").js-open
|
||||
.clickable.js-clickable
|
||||
i(class="sprite-{{ type }}")
|
||||
span.name {{ name }}
|
||||
input.rename.js-rename
|
||||
.dropdown-caret
|
||||
i.icon-chevron-down
|
||||
.entity-label.label.label-success
|
||||
|
||||
script(type="text/template")#deletedDocsFolderTemplate
|
||||
.entity-list-item.entity-deleted-docs-folder(class="entity-{{ type }}", entity-type="{{ type }}", id="{{ id }}")
|
||||
.clickable.js-clickable
|
||||
span.name {{ name }}
|
||||
.entity-label.label.label-success
|
||||
|
||||
script(type="text/template")#entityListTemplate
|
||||
.contents
|
||||
.entity-list(id="{{ id }}-file-list")
|
||||
|
||||
script(type="text/template")#newEntityModalTemplate
|
||||
div
|
||||
input.inputmodal(placeholder="name")
|
||||
|
||||
script(type="text/template")#messageTemplate
|
||||
.chatMessage
|
||||
span.name {{name}}
|
||||
span :
|
||||
span.message {{message}}
|
||||
|
||||
script(type="text/template")#spellingMenuTemplate
|
||||
div.btn-group.spell-check-menu
|
||||
a.btn.dropdown-toggle(data-toggle="dropdown", href="#")
|
||||
span.underlined Ab
|
||||
ul.dropdown-menu.pull-right
|
||||
li.divider
|
||||
li
|
||||
a#learnWord(href="#") Learn word
|
||||
|
||||
script(type="text/template")#spellingMenuEntryTemplate
|
||||
li.spelling-suggestion
|
||||
a(href="#") {{word}}
|
||||
|
||||
script(type="text/template")#contextMenuTemplate
|
||||
ul.dropdown-menu.context-menu
|
||||
|
||||
script(type="text/template")#contextMenuEntryTemplate
|
||||
li
|
||||
a(href="#") {{text}}
|
||||
|
||||
script(type="text/template")#contextMenuDividerTemplate
|
||||
li.divider
|
||||
|
||||
script(type="text/template")#genericModalTemplate
|
||||
.modal
|
||||
.modal-header
|
||||
h3 {{ title }}
|
||||
.modal-body
|
||||
.message {{{ message }}}
|
||||
.creditCardFreeTrialModal
|
||||
.modal-footer
|
||||
|
||||
|
||||
script(type="text/template")#creditCardFreeTrialModal
|
||||
.modal
|
||||
.modal-header
|
||||
h3 {{ title }}
|
||||
.modal-body
|
||||
#subscribeForm
|
||||
.modal-footer
|
||||
|
||||
script(type="text/template")#genericModalButtonTemplate
|
||||
button(class="btn {{ class }}") {{ text }}
|
||||
|
||||
script(type="text/template")#editorPanelTemplate
|
||||
#editorArea(style='display: none;')
|
||||
#editorSplitter
|
||||
#leftEditorPanel.ui-layout-center
|
||||
#editorWrapper
|
||||
#editor
|
||||
#undoConflictWarning(style="display: none")
|
||||
| <strong>Watch out!</strong> We had to undo some of your collaborators changes before we could undo yours.
|
||||
a(href="#").js-hide Hide
|
||||
#rightEditorPanel.ui-layout-east
|
||||
|
||||
script(type="text/template")#loadingIndicatorTemplate
|
||||
.loading
|
||||
|
||||
script(type="text/template")#pdfSideBarLinkTemplate
|
||||
ul
|
||||
li.root.project#pdf(title='Show PDF', alt='pdf')
|
||||
img(src='/img/pdf.png')
|
||||
span PDF
|
||||
|
||||
script(type="text/template")#helpLinkTemplate
|
||||
div
|
||||
a(href="#", title="LaTeX Help") LaTeX Help
|
||||
|
||||
script(type="text/template")#editorTourTemplate
|
||||
div
|
||||
a(href="#", title="Editor Tour")#editorTourLink Editor Tour
|
||||
|
||||
script(type="text/template")#pdfPanelTemplate
|
||||
#pdfArea(style='display: none;').fullEditorArea
|
||||
#pdfToolBar.btn-toolbar
|
||||
.btn-group
|
||||
button#recompilePdf.btn.btn-success(type='button') Recompile
|
||||
.btn-group#showLogGroup
|
||||
button#showLog.btn Logs
|
||||
.btn-group#showPdfGroup
|
||||
button#showPdf.btn Back to PDF
|
||||
.btn-group
|
||||
button#downloadPdf.btn Download
|
||||
button#downloadLinksButton.btn.dropdown-toggle(data-toggle="dropdown")
|
||||
span.caret
|
||||
ul.dropdown-menu
|
||||
#downloadLinks
|
||||
li.divider
|
||||
li.delete-cached-files
|
||||
a(href="#") Clear cached files
|
||||
.btn-group.pull-right(data-toggle="buttons-radio")
|
||||
button(type="button", title="Flat view")#flatViewButton.btn
|
||||
i.icon-flatview
|
||||
button(type="button", title="Split view")#splitViewButton.btn
|
||||
i.icon-splitview
|
||||
#pdfAreaContent
|
||||
.not-compiled-yet-message
|
||||
| Click here to preview your work as a PDF.
|
||||
.compiling-message(style='display: none;') Compiling...
|
||||
#logArea(style='display: none;')
|
||||
ul
|
||||
button.btn.btn-info.btn-large#showRawLog Show Raw Logs
|
||||
#rawLogArea(style='display: none;')
|
||||
pre
|
||||
|
||||
script(type="text/template")#syncButtonsTemplate
|
||||
div.sync-buttons
|
||||
button.btn.sync-code-to-pdf →
|
||||
button.btn.sync-pdf-to-code ←
|
||||
|
||||
script(type="text/template")#outputFileLinkTemplate
|
||||
li
|
||||
a(href="/project/{{ project_id }}/output/{{ path }}", target="_blank") Download {{ name }}
|
||||
|
||||
script(type="text/template")#pdfjsViewerTemplate
|
||||
.pdfjs-viewer
|
||||
.pdfjs-list-view
|
||||
.btn-group
|
||||
button.btn.btn-info.js-fit-height
|
||||
img(src="/img/iconshock/fit-to-height.png")
|
||||
button.btn.btn-info.js-fit-width
|
||||
img(src="/img/iconshock/fit-to-width.png")
|
||||
button.btn.btn-info.js-zoom-out
|
||||
img(src="/img/iconshock/zoom-out.png")
|
||||
button.btn.btn-info.js-zoom-in
|
||||
img(src="/img/iconshock/zoom-in.png")
|
||||
.progress.progress-info
|
||||
.bar
|
||||
span Loading
|
||||
|
||||
script(type="text/template")#compileSuccessTemplate
|
||||
li.alert.alert-success
|
||||
strong No errors.
|
||||
span Great Job!
|
||||
|
||||
script(type="text/template")#compileErrorTemplate
|
||||
li.alert.alert-error
|
||||
p
|
||||
strong Server Error.
|
||||
span Sorry, something went wrong and the project could not be compiled. Please try again in a few moments.
|
||||
p
|
||||
| If the problem persists, try
|
||||
a(href='#').js-clear-cache clearing the cache.
|
||||
| If that doesn't work, please contact support.
|
||||
script(type="text/template")#compileFailedTemplate
|
||||
li.alert.alert-error
|
||||
p
|
||||
strong Compile Error.
|
||||
span Sorry, your LaTeX code couldn't compile for some reason. Please check the errors below for details, or view the raw log.
|
||||
p
|
||||
| If the problem persists, try
|
||||
a(href='#').js-clear-cache clearing the cache.
|
||||
script(type="text/template")#compileTimeoutTemplate
|
||||
li.alert.alert-error
|
||||
strong Timed out.
|
||||
span Sorry, your compile was taking too long and timed out.
|
||||
| This may be due to a large number of high-res images, or lots of complicated diagrams.
|
||||
| Please try to make your document simpler, or contact support for help.
|
||||
script(type="text/template")#compileLogEntryTemplate
|
||||
li.alert.clickable(class="alert-{{ type }}")
|
||||
strong {{ title }}:
|
||||
span {{ message }}
|
||||
.small {{ content }}
|
||||
|
||||
script(type="text/template")#projectMemberListTemplate
|
||||
table.table
|
||||
thead
|
||||
tr
|
||||
th Email
|
||||
th Privileges
|
||||
th
|
||||
tbody
|
||||
!= '{{#showAdminControls}}'
|
||||
form.well.form-inline.addUserForm
|
||||
input(type="email",placeholder="someone@email.com")#newEmail.email.input-large
|
||||
select.privileges.input-medium
|
||||
option(value="readAndWrite") Read and write
|
||||
option(value="readOnly") Read Only
|
||||
button.btn.btn-primary.addUser Add New Collaborator
|
||||
!= '{{/showAdminControls}}'
|
||||
|
||||
script(type="text/template")#projectMemberListItemTemplate
|
||||
tr.projectMember
|
||||
td.email!= '{{ email }}'
|
||||
td.privileges!= '{{ privileges }}'
|
||||
td
|
||||
!= '{{#showRemove}}'
|
||||
button(href="#").btn.btn-danger.removeUser Remove
|
||||
!= '{{/showRemove}}'
|
||||
|
||||
script(type="text/template")#socialSharingTemplate
|
||||
.box
|
||||
.page-header
|
||||
h2 Share Publicly
|
||||
div.share-button
|
||||
a.btn.btn-twitter.btn-large(href="#")
|
||||
i.icon-twitter
|
||||
| Share on Twitter
|
||||
div.share-button
|
||||
.btn.btn-facebook.btn-large
|
||||
i.icon-facebook
|
||||
| Share on Facebook
|
||||
div.share-button
|
||||
.btn.btn-google-plus.btn-large
|
||||
i.icon-google-plus
|
||||
| Share on Google+
|
||||
div.share-button
|
||||
.btn.btn-large.btn-url
|
||||
i.icon-link
|
||||
| Share URL
|
||||
|
||||
|
||||
script(type="text/template")#publishProjectTemplate
|
||||
.box
|
||||
.page-header
|
||||
h2 Publish project as template
|
||||
|
||||
#publishedAsTemplateArea.show-when-published.alert.alert-success
|
||||
p
|
||||
.btn.btn-warning#unPublishProjectAsTemplate.pull-right Unpublish
|
||||
i.icon-ok
|
||||
| Your project is currently published.
|
||||
a#templateLink(href='{{canonicalUrl}}') View in template gallery.
|
||||
p
|
||||
| Lastest version: {{publishedDate}}.
|
||||
|
||||
#problemWithPublishingArea
|
||||
p There is a problem with our publishing service, please try again in a few minutes.
|
||||
#publishWorkingArea
|
||||
p Working...
|
||||
div.show-when-published.show-when-unpublished.project-description
|
||||
label(for="project-description") Description
|
||||
.row-fluid
|
||||
textarea(placeholder="Template description", name="project-description").span12#projectDescription {{description}}
|
||||
#unpublishedAsTemplateArea.show-when-unpublished
|
||||
.btn.btn-success#publishProjectAsTemplate Publish
|
||||
p.show-when-published
|
||||
button.btn.btn-success#republishProjectAsTemplate Re-Publish
|
||||
|
||||
|
||||
script(type="text/template")#settingsPanelTemplate
|
||||
.fullEditorArea.projectSettings
|
||||
include project/partials/manage
|
||||
|
||||
script(type="text/template")#userPanelTemplate
|
||||
.fullEditorArea.projectSettings
|
||||
.box
|
||||
.page-header
|
||||
h2 Share Privately (via email)
|
||||
#projectMembersList
|
||||
#socialSharing
|
||||
#publishProject
|
||||
|
||||
script(type='text/template')#fileViewTemplate
|
||||
!= '{{#image}}'
|
||||
div
|
||||
img(src='{{ previewUrl }}')
|
||||
!= '{{/image}}'
|
||||
!= '{{^image}}'
|
||||
.no-preview No preview available :(
|
||||
!= '{{/image}}'
|
||||
a(href='{{ downloadUrl }}', target="_blank").download.btn.btn-large!= 'Download {{ name }}'
|
||||
|
||||
script(type='text/template')#hotKeysLinkTemplate
|
||||
div
|
||||
a(href="#", title='Show Hot Keys List')#hotkeysLink Hot keys
|
||||
|
||||
script(type='text/template')#DebugLinkTemplate
|
||||
div
|
||||
a(href="#", title='Show Debug Information')#debugLink Debug
|
||||
|
||||
script(type='text/template')#trackChangesPanelTemplate
|
||||
#trackChangesPanel
|
||||
.track-changes-side-bar
|
||||
.track-changes-header
|
||||
h3 Recent changes
|
||||
a(href="#").track-changes-close
|
||||
i.icon-remove
|
||||
.change-list-area
|
||||
.track-changes-diff
|
||||
.track-changes-upgrade-popup(style="display: none;")
|
||||
.message.show-when-owner
|
||||
p You need to upgrade your plan to use the History feature.
|
||||
button.btn.btn-primary.start-free-trial Start free trial
|
||||
.message.show-when-not-owner
|
||||
p Please ask the project owner to upgrade to use the History feature.
|
||||
|
||||
script(type='text/template')#trackChangesDiffTemplate
|
||||
.track-changes-diff-toolbar.btn-toolbar
|
||||
.change-info
|
||||
.number-of-changes {{ changes }} in <strong>{{ name }}</strong>
|
||||
a(href="#").restore.btn.btn-small.btn-danger Restore to before these changes
|
||||
.deleted-info(style="display:none;")
|
||||
strong {{ name }}
|
||||
.controls
|
||||
span This file has been deleted
|
||||
a(href="#").restore-deleted.btn.btn-small.btn-success Restore
|
||||
.track-changes-diff-editor
|
||||
|
||||
script(type='text/template')#changeListItemTemplate
|
||||
div.track-changes-date-header {{ day }}
|
||||
|
||||
div.change-selectors
|
||||
div.range
|
||||
input(type="radio",name="fromVersion").change-selector-from
|
||||
input(type="radio",name="toVersion").change-selector-to
|
||||
|
||||
div.change-description
|
||||
div.change-time {{time}}
|
||||
div.changed-docs {{docs}}
|
||||
div {{{users}}}
|
||||
|
||||
script(type='text/template')#changeListItemUserTemplate
|
||||
div(class='change-name')
|
||||
div.color-square(style="background-color: hsl({{hue}}, 100%, 70%);")
|
||||
span {{name}}
|
||||
|
||||
script(type='text/template')#changeListTemplate
|
||||
ul.change-list.nav.nav-pills.nav-stacked
|
||||
li.loading-changes Loading...
|
||||
li.empty-message You haven't made any changes yet!
|
||||
|
||||
script(type='text/template')#hotKeysListTemplate
|
||||
.hotkeys
|
||||
h3 Common
|
||||
.hotkeys-column
|
||||
.hotkey
|
||||
span.combination.win Ctrl + F
|
||||
span.combination.mac Cmd + F
|
||||
span.description Find (and replace)
|
||||
.hotkey
|
||||
span.combination.win Ctrl + Enter
|
||||
span.combination.mac Cmd + Enter
|
||||
span.description Compile
|
||||
.hotkey
|
||||
span.combination.win Ctrl + /
|
||||
span.combination.mac Cmd + /
|
||||
span.description Toggle Comment
|
||||
.hotkeys-column
|
||||
.hotkey
|
||||
span.combination.win Ctrl + Z
|
||||
span.combination.mac Cmd + Z
|
||||
span.description Undo
|
||||
.hotkey
|
||||
span.combination.win Ctrl + Y
|
||||
span.combination.mac Cmd + Y
|
||||
span.description Redo
|
||||
.clear
|
||||
|
||||
h3 Navigation
|
||||
.hotkeys-column
|
||||
.hotkey
|
||||
span.combination.win Ctrl + Home
|
||||
span.combination.mac Cmd + Home
|
||||
span.description Beginning of document
|
||||
.hotkey
|
||||
span.combination.win Ctrl + End
|
||||
span.combination.mac Cmd + End
|
||||
span.description End of document
|
||||
.hotkeys-column
|
||||
.hotkey
|
||||
span.combination.win Ctrl + L
|
||||
span.combination.mac Cmd + L
|
||||
span.description Go To Line
|
||||
.clear
|
||||
|
||||
h3 Editing
|
||||
.hotkeys-column
|
||||
.hotkey
|
||||
span.combination.win Ctrl + D
|
||||
span.combination.mac Cmd + D
|
||||
span.description Delete Current Line
|
||||
.hotkey
|
||||
span.combination.win Ctrl + A
|
||||
span.combination.mac Cmd + A
|
||||
span.description Select All
|
||||
.hotkey
|
||||
span.combination.win Tab
|
||||
span.combination.mac Tab
|
||||
span.description Indent Selection
|
||||
.hotkeys-column
|
||||
.hotkey
|
||||
span.combination.win Ctrl + U
|
||||
span.combination.mac Ctrl + U
|
||||
span.description To Uppercase
|
||||
.hotkey
|
||||
span.combination.win Ctrl + Shift + U
|
||||
span.combination.mac Ctrl + Shift + U
|
||||
span.description To Lowercase
|
||||
.clear
|
|
@ -456,11 +456,10 @@ define [
|
|||
# modified during this session. Otherwise, tags which are empty
|
||||
# when loading the page are not shown.
|
||||
tag.project_ids.length > 0 or !!tag.showWhenEmpty
|
||||
|
||||
App.controller "TagListItemController", ($scope) ->
|
||||
$scope.selectTag = () ->
|
||||
|
||||
$scope.selectTag = (tag) ->
|
||||
$scope._clearTags()
|
||||
$scope.tag.selected = true
|
||||
tag.selected = true
|
||||
$scope.setFilter("tag")
|
||||
|
||||
App.controller "TagDropdownItemController", ($scope) ->
|
||||
|
|
|
@ -58,10 +58,6 @@
|
|||
width: 400px;
|
||||
margin-left: -200px;
|
||||
}
|
||||
.progress {
|
||||
background-color: white;
|
||||
border: 1px solid @toolbar-border-color;
|
||||
}
|
||||
}
|
||||
|
||||
.loading-panel {
|
||||
|
|
|
@ -40,7 +40,7 @@ ul.folders-menu {
|
|||
color: #333;
|
||||
padding: (@line-height-computed / 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
li.active {
|
||||
//border-right: 4px solid @red;
|
||||
a {
|
||||
|
@ -53,6 +53,9 @@ ul.folders-menu {
|
|||
}
|
||||
}
|
||||
}
|
||||
li > a.small {
|
||||
color: @gray;
|
||||
}
|
||||
h2 {
|
||||
margin-top: @line-height-computed / 2;
|
||||
margin-bottom: @line-height-computed / 4;
|
||||
|
@ -60,6 +63,21 @@ ul.folders-menu {
|
|||
font-weight: 500;
|
||||
font-family: @font-family-sans-serif;
|
||||
}
|
||||
a.tag {
|
||||
padding: 2px (@line-height-computed / 4);
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
i {
|
||||
position: absolute;
|
||||
top: 7px;
|
||||
left: 6px;
|
||||
}
|
||||
span.name {
|
||||
display: inline-block;
|
||||
padding-left: 22px;
|
||||
line-height: 1.4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
form.project-search {
|
||||
|
@ -125,6 +143,9 @@ ul.project-list {
|
|||
margin-left: @line-height-computed / 4;
|
||||
position: relative;
|
||||
top: -2px;
|
||||
padding-top: 0.25em;
|
||||
display: inline-block;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
margin-bottom: @line-height-computed;
|
||||
background-color: @progress-bg;
|
||||
border-radius: @border-radius-base;
|
||||
border: 1px solid @progress-border-color;
|
||||
.box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
|
||||
}
|
||||
|
||||
|
|
|
@ -599,7 +599,8 @@
|
|||
//##
|
||||
|
||||
//** Background color of the whole progress component
|
||||
@progress-bg: #f5f5f5;
|
||||
@progress-bg: white;
|
||||
@progress-border-color: @gray-lighter;
|
||||
//** Progress bar text color
|
||||
@progress-bar-color: #fff;
|
||||
|
||||
|
|
Loading…
Reference in a new issue