div#trackChanges(ng-show="ui.view == 'track-changes'")
span(ng-controller="TrackChangesPremiumPopup")
span(ng-if="versioningPopupType == 'default'")
.upgrade-prompt(ng-show="!project.features.versioning")
.message(ng-show="project.owner._id == user.id")
p #{translate("need_to_upgrade_for_history")}
p(ng-controller="FreeTrialModalController")
a.btn(
href
ng-class="buttonClass"
sixpack-convert="track_changes_feature_info"
ng-click="startFreeTrial('track-changes')"
) #{translate("start_free_trial")}
|
a.small(href, ng-click="toggleTrackChanges()") #{translate("cancel")}
p.small(ng-show="startedFreeTrial") #{translate("refresh_page_after_starting_free_trial")}
.upgrade-prompt(ng-show="!project.features.versioning", ng-if="versioningPopupType == 'longform'")
.message(ng-show="project.owner._id == user.id")
p Upgrade to see your Entire Project History, plus:
p.small(ng-show="startedFreeTrial") #{translate("refresh_page_after_starting_free_trial")}
h4
i.fa.fa-check
| #{translate("unlimited_projects")}
h4
i.fa.fa-check
| #{translate("collabs_per_proj", {collabcount:'Multiple'})}
h4
i.fa.fa-check
| #{translate("full_doc_history")}
h4
i.fa.fa-check
| #{translate("sync_to_dropbox")}
h4
i.fa.fa-check
| #{translate("sync_to_github")}
h4
i.fa.fa-check
|#{translate("Compile Larger Projects")}
p(ng-controller="FreeTrialModalController")
a.btn.btn-success(
href
ng-class="buttonClass"
sixpack-convert="track_changes_feature_info"
ng-click="startFreeTrial('track-changes')"
) #{translate("start_free_trial")}
.message(ng-show="project.owner._id != user.id")
p #{translate("ask_proj_owner_to_upgrade_for_history")}
p
a.small(href, ng-click="toggleTrackChanges()") #{translate("cancel")}
aside.change-list(
ng-controller="TrackChangesListController"
infinite-scroll="loadMore()"
infinite-scroll-disabled="trackChanges.loading || trackChanges.atEnd"
infinite-scroll-initialize="ui.view == 'track-changes'"
)
.infinite-scroll-inner
ul.list-unstyled(
ng-class="{\
'hover-state': trackChanges.hoveringOverListSelectors\
}"
)
li.change(
ng-repeat="update in trackChanges.updates"
ng-class="{\
'first-in-day': update.meta.first_in_day,\
'selected': update.inSelection,\
'selected-to': update.selectedTo,\
'selected-from': update.selectedFrom,\
'hover-selected': update.inHoverSelection,\
'hover-selected-to': update.hoverSelectedTo,\
'hover-selected-from': update.hoverSelectedFrom,\
}"
ng-controller="TrackChangesListItemController"
)
div.day(ng-show="update.meta.first_in_day") {{ update.meta.end_ts | relativeDate }}
div.selectors
div.range
form
input.selector-from(
type="radio"
name="fromVersion"
ng-model="update.selectedFrom"
ng-value="true"
ng-mouseover="mouseOverSelectedFrom()"
ng-mouseout="mouseOutSelectedFrom()"
ng-show="update.afterSelection || update.inSelection"
)
form
input.selector-to(
type="radio"
name="toVersion"
ng-model="update.selectedTo"
ng-value="true"
ng-mouseover="mouseOverSelectedTo()"
ng-mouseout="mouseOutSelectedTo()"
ng-show="update.beforeSelection || update.inSelection"
)
div.description(ng-click="select()")
div.time {{ update.meta.end_ts | formatDate:'h:mm a' }}
div.docs(ng-repeat="(doc_id, doc) in update.docs")
span.doc {{ doc.entity.name }}
div.users
div.user(ng-repeat="update_user in update.meta.users")
.color-square(ng-if="update_user != null", ng-style="{'background-color': 'hsl({{ update_user.hue }}, 70%, 50%)'}")
.color-square(ng-if="update_user == null", ng-style="{'background-color': 'hsl(100, 70%, 50%)'}")
.name(ng-if="update_user && update_user.id != user.id" ng-bind="displayName(update_user)")
.name(ng-if="update_user && update_user.id == user.id") You
.name(ng-if="update_user == null") #{translate("anonymous")}
div.user(ng-if="update.meta.users.length == 0")
.color-square(style="background-color: hsl(100, 100%, 50%)")
span #{translate("anonymous")}
.loading(ng-show="trackChanges.loading")
i.fa.fa-spin.fa-refresh
| #{translate("loading")}...
.diff-panel.full-size(ng-controller="TrackChangesDiffController")
.diff(
ng-show="!!trackChanges.diff && !trackChanges.diff.loading && !trackChanges.diff.deleted && !trackChanges.diff.error"
)
.toolbar.toolbar-alt
span.name
| {{trackChanges.diff.highlights.length}}
ng-pluralize(
count="trackChanges.diff.highlights.length",
when="{\
'one': 'change',\
'other': 'changes'\
}"
)
| in {{trackChanges.diff.doc.name}}
.toolbar-right
a.btn.btn-danger.btn-sm(
href,
ng-click="openRestoreDiffModal()"
) #{translate("restore_to_before_these_changes")}
.diff-editor.hide-ace-cursor(
ace-editor="track-changes",
theme="settings.theme",
font-size="settings.fontSize",
text="trackChanges.diff.text",
highlights="trackChanges.diff.highlights",
read-only="true",
resize-on="layout:main:resize",
navigate-highlights="true"
)
.diff-deleted.text-centered(
ng-show="trackChanges.diff.deleted"
)
p.text-serif #{translate("file_has_been_deleted", {filename:"{{ trackChanges.diff.doc.name }} "})}
p
a.btn.btn-primary.btn-lg(
href,
ng-click="restoreDeletedDoc()"
) #{translate("restore")}
.loading-panel(ng-show="trackChanges.diff.loading")
i.fa.fa-spin.fa-refresh
| #{translate("loading")}...
.error-panel(ng-show="trackChanges.diff.error")
.alert.alert-danger #{translate("generic_something_went_wrong")}
script(type="text/ng-template", id="trackChangesRestoreDiffModalTemplate")
.modal-header
button.close(
type="button"
data-dismiss="modal"
ng-click="cancel()"
) ×
h3 #{translate("restore")} {{diff.doc.name}}
.modal-body.modal-body-share
p !{translate("sure_you_want_to_restore_before", {filename:"{{diff.doc.name}}", date:"{{diff.start_ts | formatDate}}"})}
.modal-footer
button.btn.btn-default(
ng-click="cancel()",
ng-disabled="state.inflight"
) #{translate("cancel")}
button.btn.btn-danger(
ng-click="restore()",
ng-disabled="state.inflight"
)
span(ng-show="!state.inflight") #{translate("restore")}
span(ng-show="state.inflight") #{translate("restoring")} ...