diff --git a/services/web/app/coffee/infrastructure/ExpressLocals.coffee b/services/web/app/coffee/infrastructure/ExpressLocals.coffee index 0dbf56ff51..8062763923 100644 --- a/services/web/app/coffee/infrastructure/ExpressLocals.coffee +++ b/services/web/app/coffee/infrastructure/ExpressLocals.coffee @@ -346,8 +346,8 @@ module.exports = (app, webRouter, privateApiRouter, publicApiRouter)-> webRouter.use (req, res, next) -> if Settings.overleaf? res.locals.overallThemes = [ - { name: "Default", val: "", path: res.locals.buildCssPath(res.locals.buildCssFileName()) } - { name: "Light", val: "light-", path: res.locals.buildCssPath(res.locals.buildCssFileName("light-")) } + { name: "Default", val: "", path: res.locals.buildCssPath(res.locals.buildCssFileName(), {hashedPath:true}) } + { name: "Light", val: "light-", path: res.locals.buildCssPath(res.locals.buildCssFileName("light-"), {hashedPath:true}) } ] next() diff --git a/services/web/app/views/project/editor/header.pug b/services/web/app/views/project/editor/header.pug index 03b56d9e20..835192f298 100644 --- a/services/web/app/views/project/editor/header.pug +++ b/services/web/app/views/project/editor/header.pug @@ -93,17 +93,22 @@ header.toolbar.toolbar-header.toolbar-with-labels( a.btn.btn-full-height( href, ng-if="project.features.trackChangesVisible", - ng-class="{ active: ui.reviewPanelOpen }" + ng-class="{ active: ui.reviewPanelOpen && ui.view !== 'history' }" + ng-disabled="ui.view === 'history'" ng-click="toggleReviewPanel()" ) i.review-icon p.toolbar-label | #{translate("review")} - a.btn.btn-full-height#shareButton( - href, - ng-if="permissions.admin", - ng-click="openShareProjectModal();", - ng-controller="ShareController", + + a.btn.btn-full-height( + href + ng-class="{ 'btn-full-height-disabled' : !permissions.admin }" + ng-click="openShareProjectModal(permissions.admin);" + ng-controller="ShareController" + tooltip-enable="!permissions.admin" + tooltip="Only the project owner can use the Share menu at the moment, but we're working on making it accessible to collaborators, too." + tooltip-placement="bottom" ) i.fa.fa-fw.fa-group p.toolbar-label #{translate("share")} diff --git a/services/web/app/views/project/editor/review-panel.pug b/services/web/app/views/project/editor/review-panel.pug index 8328d313e5..17c17f90b5 100644 --- a/services/web/app/views/project/editor/review-panel.pug +++ b/services/web/app/views/project/editor/review-panel.pug @@ -306,14 +306,21 @@ script(type='text/ng-template', id='aggregateChangeEntryTemplate') .rp-entry-details .rp-entry-description | #{translate("aggregate_changed")} - del.rp-content-highlight {{ entry.metadata.replaced_content }} - | #{translate("aggregate_to")} - ins.rp-content-highlight {{ entry.content }} + del.rp-content-highlight + | {{ entry.metadata.replaced_content | limitTo:(isDeletionCollapsed ? contentLimit : entry.metadata.replaced_contentlength) }} a.rp-collapse-toggle( href - ng-if="needsCollapsing" - ng-click="toggleCollapse();" - ) {{ isCollapsed ? '... (#{translate("show_all")})' : ' (#{translate("show_less")})' }} + ng-if="deletionNeedsCollapsing" + ng-click="toggleDeletionCollapse();" + ) {{ isDeletionCollapsed ? '... (#{translate("show_all")})' : ' (#{translate("show_less")})' }} + | #{translate("aggregate_to")} + ins.rp-content-highlight + | {{ entry.content | limitTo:(isInsertionCollapsed ? contentLimit : entry.contentlength) }} + a.rp-collapse-toggle( + href + ng-if="insertionNeedsCollapsing" + ng-click="toggleInsertionCollapse();" + ) {{ isInsertionCollapsed ? '... (#{translate("show_all")})' : ' (#{translate("show_less")})' }} .rp-entry-metadata | {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} • span.rp-entry-user(style="color: hsl({{ user.hue }}, 70%, 40%);") {{ user.name }} diff --git a/services/web/app/views/project/list/item.pug b/services/web/app/views/project/list/item.pug index 5a9cb2138d..deb9863d04 100644 --- a/services/web/app/views/project/list/item.pug +++ b/services/web/app/views/project/list/item.pug @@ -49,41 +49,56 @@ div(class=lastUpdatedClasses) if settings.overleaf .hidden-xs.col-sm-3.col-md-2.action-btn-row - button.btn.btn-link.action-btn( - tooltip=translate('copy'), - tooltip-placement="top", - tooltip-append-to-body="true", - ng-click="clone($event)" + div( + ng-if="!project.isTableActionInflight" ) - i.icon.fa.fa-files-o - button.btn.btn-link.action-btn( - tooltip=translate('download'), - tooltip-placement="top", - tooltip-append-to-body="true", - ng-click="download($event)" + button.btn.btn-link.action-btn( + tooltip=translate('copy'), + tooltip-placement="top", + tooltip-append-to-body="true", + ng-click="clone($event)" + ) + i.icon.fa.fa-files-o + button.btn.btn-link.action-btn( + tooltip=translate('download'), + tooltip-placement="top", + tooltip-append-to-body="true", + ng-click="download($event)" + ) + i.icon.fa.fa-cloud-download + button.btn.btn-link.action-btn( + ng-if="!project.archived && isOwner()" + tooltip=translate('archive'), + tooltip-placement="top", + tooltip-append-to-body="true", + ng-click="archiveOrLeave($event)" + ) + i.icon.fa.fa-inbox + button.btn.btn-link.action-btn( + ng-if="!project.archived && !isOwner()" + tooltip=translate('leave'), + tooltip-placement="top", + tooltip-append-to-body="true", + ng-click="archiveOrLeave($event)" + ) + i.icon.fa.fa-sign-out + button.btn.btn-link.action-btn( + ng-if="project.archived" + tooltip=translate('unarchive'), + tooltip-placement="top", + tooltip-append-to-body="true", + ng-click="restore($event)" + ) + i.icon.fa.fa-reply + button.btn.btn-link.action-btn( + ng-if="project.archived && isOwner()" + tooltip=translate('delete_forever'), + tooltip-placement="top", + tooltip-append-to-body="true", + ng-click="deleteProject($event)" + ) + i.icon.fa.fa-trash + div( + ng-if="project.isTableActionInflight" ) - i.icon.fa.fa-cloud-download - button.btn.btn-link.action-btn( - ng-if="!project.archived && isOwner()" - tooltip=translate('archive'), - tooltip-placement="top", - tooltip-append-to-body="true", - ng-click="archiveOrLeave($event)" - ) - i.icon.fa.fa-inbox - button.btn.btn-link.action-btn( - ng-if="!project.archived && !isOwner()" - tooltip=translate('leave'), - tooltip-placement="top", - tooltip-append-to-body="true", - ng-click="archiveOrLeave($event)" - ) - i.icon.fa.fa-sign-out - button.btn.btn-link.action-btn( - ng-if="project.archived" - tooltip=translate('unarchive'), - tooltip-placement="top", - tooltip-append-to-body="true", - ng-click="restore($event)" - ) - i.icon.fa.fa-reply \ No newline at end of file + i.fa.fa-spinner.fa-spin \ No newline at end of file diff --git a/services/web/app/views/project/list/side-bar.pug b/services/web/app/views/project/list/side-bar.pug index ab8db43877..b2c8f11315 100644 --- a/services/web/app/views/project/list/side-bar.pug +++ b/services/web/app/views/project/list/side-bar.pug @@ -1,4 +1,7 @@ -.dropdown(dropdown) +.dropdown( + dropdown + dropdown-append-to-body +) a.btn.btn-primary.sidebar-new-proj-btn.dropdown-toggle( href="#", data-toggle="dropdown", diff --git a/services/web/public/coffee/ide/editor/components/spellMenu.coffee b/services/web/public/coffee/ide/editor/components/spellMenu.coffee index ff3462e03e..12923ed5f2 100644 --- a/services/web/public/coffee/ide/editor/components/spellMenu.coffee +++ b/services/web/public/coffee/ide/editor/components/spellMenu.coffee @@ -4,6 +4,7 @@ define ["base"], (App) -> open: "<" top: "<" left: "<" + layoutFromBottom: "<" highlight: "<" replaceWord: "&" learnWord: "&" @@ -13,7 +14,7 @@ define ["base"], (App) -> class="dropdown context-menu spell-check-menu" ng-show="$ctrl.open" ng-style="{top: $ctrl.top, left: $ctrl.left}" - ng-class="{open: $ctrl.open}" + ng-class="{open: $ctrl.open, 'spell-check-menu-from-bottom': $ctrl.layoutFromBottom}" >