diff --git a/services/web/app/views/modals.jade b/services/web/app/views/modals.jade
deleted file mode 100644
index 4b19853548..0000000000
--- a/services/web/app/views/modals.jade
+++ /dev/null
@@ -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
diff --git a/services/web/app/views/project/list.jade b/services/web/app/views/project/list.jade
index 77ba3b8862..a4abee9197 100644
--- a/services/web/app/views/project/list.jade
+++ b/services/web/app/views/project/list.jade
@@ -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
diff --git a/services/web/app/views/project/list/modals.jade b/services/web/app/views/project/list/modals.jade
new file mode 100644
index 0000000000..4c7c743e64
--- /dev/null
+++ b/services/web/app/views/project/list/modals.jade
@@ -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
diff --git a/services/web/app/views/project/list/project-list.jade b/services/web/app/views/project/list/project-list.jade
new file mode 100644
index 0000000000..c285a5f602
--- /dev/null
+++ b/services/web/app/views/project/list/project-list.jade
@@ -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.
\ No newline at end of file
diff --git a/services/web/app/views/project/list/side-bar.jade b/services/web/app/views/project/list/side-bar.jade
new file mode 100644
index 0000000000..b1bbf99a09
--- /dev/null
+++ b/services/web/app/views/project/list/side-bar.jade
@@ -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.
\ No newline at end of file
diff --git a/services/web/app/views/templates.jade b/services/web/app/views/templates.jade
deleted file mode 100644
index b679299a5a..0000000000
--- a/services/web/app/views/templates.jade
+++ /dev/null
@@ -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")
- | Watch out! 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 {{ name }}
- 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
diff --git a/services/web/public/coffee/main/project-list.coffee b/services/web/public/coffee/main/project-list.coffee
index fbae8a339e..656be90840 100644
--- a/services/web/public/coffee/main/project-list.coffee
+++ b/services/web/public/coffee/main/project-list.coffee
@@ -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) ->
diff --git a/services/web/public/stylesheets/app/editor.less b/services/web/public/stylesheets/app/editor.less
index 9a72122669..c71b6f6d78 100644
--- a/services/web/public/stylesheets/app/editor.less
+++ b/services/web/public/stylesheets/app/editor.less
@@ -58,10 +58,6 @@
width: 400px;
margin-left: -200px;
}
- .progress {
- background-color: white;
- border: 1px solid @toolbar-border-color;
- }
}
.loading-panel {
diff --git a/services/web/public/stylesheets/app/project-list.less b/services/web/public/stylesheets/app/project-list.less
index 2831302b49..e6456f0c00 100644
--- a/services/web/public/stylesheets/app/project-list.less
+++ b/services/web/public/stylesheets/app/project-list.less
@@ -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;
}
}
}
diff --git a/services/web/public/stylesheets/components/progress-bars.less b/services/web/public/stylesheets/components/progress-bars.less
index 76c87be17c..062ec48df2 100755
--- a/services/web/public/stylesheets/components/progress-bars.less
+++ b/services/web/public/stylesheets/components/progress-bars.less
@@ -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));
}
diff --git a/services/web/public/stylesheets/core/variables.less b/services/web/public/stylesheets/core/variables.less
index 341d506098..1561a5e4a5 100755
--- a/services/web/public/stylesheets/core/variables.less
+++ b/services/web/public/stylesheets/core/variables.less
@@ -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;