track-changes.jade 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. div#trackChanges(ng-show="ui.view == 'track-changes'")
  2. span(ng-controller="TrackChangesPremiumPopup")
  3. span(ng-if="versioningPopupType == 'default'")
  4. .upgrade-prompt(ng-show="!project.features.versioning")
  5. .message(ng-show="project.owner._id == user.id")
  6. p #{translate("upgrade_to_get_feature", {feature:"Entire Doc History"})}
  7. p.small(ng-show="startedFreeTrial") #{translate("refresh_page_after_starting_free_trial")}
  8. h4
  9. i.fa.fa-check  
  10. | #{translate("unlimited_projects")}
  11. h4
  12. i.fa.fa-check  
  13. | #{translate("collabs_per_proj", {collabcount:'Multiple'})}
  14. h4
  15. i.fa.fa-check  
  16. | #{translate("full_doc_history")}
  17. h4
  18. i.fa.fa-check  
  19. | #{translate("sync_to_dropbox")}
  20. h4
  21. i.fa.fa-check  
  22. | #{translate("sync_to_github")}
  23. h4
  24. i.fa.fa-check  
  25. |#{translate("compile_larger_projects")}
  26. p(ng-controller="FreeTrialModalController")
  27. a.btn.btn-success(
  28. href
  29. ng-class="buttonClass"
  30. ng-click="startFreeTrial('track-changes')"
  31. ) #{translate("start_free_trial")}
  32. .message(ng-show="project.owner._id != user.id")
  33. p #{translate("ask_proj_owner_to_upgrade_for_history")}
  34. p
  35. a.small(href, ng-click="toggleTrackChanges()") #{translate("cancel")}
  36. .upgrade-prompt(ng-show="!project.features.versioning", ng-if="versioningPopupType == 'discount'")
  37. .message(ng-show="project.owner._id == user.id")
  38. p #{translate("upgrade_to_get_feature", {feature:"Entire Doc History"})}
  39. h2(style="color:#a93529;") 20% Off First 6 Months!
  40. p.small(ng-show="startedFreeTrial") #{translate("refresh_page_after_starting_free_trial")}
  41. h4
  42. i.fa.fa-check  
  43. | #{translate("unlimited_projects")}
  44. h4
  45. i.fa.fa-check  
  46. | #{translate("collabs_per_proj", {collabcount:'Multiple'})}
  47. h4
  48. i.fa.fa-check  
  49. | #{translate("full_doc_history")}
  50. h4
  51. i.fa.fa-check  
  52. | #{translate("sync_to_dropbox")}
  53. h4
  54. i.fa.fa-check  
  55. | #{translate("sync_to_github")}
  56. h4
  57. i.fa.fa-check  
  58. |#{translate("compile_larger_projects")}
  59. p(ng-controller="FreeTrialModalController")
  60. a.btn.btn-success(
  61. href
  62. ng-class="buttonClass"
  63. ng-click="startFreeTrial('track-changes', 'cf3yutfzu7ztxz')"
  64. ) #{translate("start_free_trial")}
  65. .message(ng-show="project.owner._id != user.id")
  66. p #{translate("ask_proj_owner_to_upgrade_for_history")}
  67. p
  68. a.small(href, ng-click="toggleTrackChanges()") #{translate("cancel")}
  69. aside.change-list(
  70. ng-controller="TrackChangesListController"
  71. infinite-scroll="loadMore()"
  72. infinite-scroll-disabled="trackChanges.loading || trackChanges.atEnd"
  73. infinite-scroll-initialize="ui.view == 'track-changes'"
  74. )
  75. .infinite-scroll-inner
  76. ul.list-unstyled(
  77. ng-class="{\
  78. 'hover-state': trackChanges.hoveringOverListSelectors\
  79. }"
  80. )
  81. li.change(
  82. ng-repeat="update in trackChanges.updates"
  83. ng-class="{\
  84. 'first-in-day': update.meta.first_in_day,\
  85. 'selected': update.inSelection,\
  86. 'selected-to': update.selectedTo,\
  87. 'selected-from': update.selectedFrom,\
  88. 'hover-selected': update.inHoverSelection,\
  89. 'hover-selected-to': update.hoverSelectedTo,\
  90. 'hover-selected-from': update.hoverSelectedFrom,\
  91. }"
  92. ng-controller="TrackChangesListItemController"
  93. )
  94. div.day(ng-show="update.meta.first_in_day") {{ update.meta.end_ts | relativeDate }}
  95. div.selectors
  96. div.range
  97. form
  98. input.selector-from(
  99. type="radio"
  100. name="fromVersion"
  101. ng-model="update.selectedFrom"
  102. ng-value="true"
  103. ng-mouseover="mouseOverSelectedFrom()"
  104. ng-mouseout="mouseOutSelectedFrom()"
  105. ng-show="update.afterSelection || update.inSelection"
  106. )
  107. form
  108. input.selector-to(
  109. type="radio"
  110. name="toVersion"
  111. ng-model="update.selectedTo"
  112. ng-value="true"
  113. ng-mouseover="mouseOverSelectedTo()"
  114. ng-mouseout="mouseOutSelectedTo()"
  115. ng-show="update.beforeSelection || update.inSelection"
  116. )
  117. div.description(ng-click="select()")
  118. div.time {{ update.meta.end_ts | formatDate:'h:mm a' }}
  119. div.docs(ng-repeat="(doc_id, doc) in update.docs")
  120. span.doc {{ doc.entity.name }}
  121. div.users
  122. div.user(ng-repeat="update_user in update.meta.users")
  123. .color-square(ng-if="update_user != null", ng-style="{'background-color': 'hsl({{ update_user.hue }}, 70%, 50%)'}")
  124. .color-square(ng-if="update_user == null", ng-style="{'background-color': 'hsl(100, 70%, 50%)'}")
  125. .name(ng-if="update_user && update_user.id != user.id" ng-bind="displayName(update_user)")
  126. .name(ng-if="update_user && update_user.id == user.id") You
  127. .name(ng-if="update_user == null") #{translate("anonymous")}
  128. div.user(ng-if="update.meta.users.length == 0")
  129. .color-square(style="background-color: hsl(100, 100%, 50%)")
  130. span #{translate("anonymous")}
  131. .loading(ng-show="trackChanges.loading")
  132. i.fa.fa-spin.fa-refresh
  133. |    #{translate("loading")}...
  134. .diff-panel.full-size(ng-controller="TrackChangesDiffController")
  135. .diff(
  136. ng-show="!!trackChanges.diff && !trackChanges.diff.loading && !trackChanges.diff.deleted && !trackChanges.diff.error"
  137. )
  138. .toolbar.toolbar-alt
  139. span.name
  140. | <strong>{{trackChanges.diff.highlights.length}} </strong>
  141. ng-pluralize(
  142. count="trackChanges.diff.highlights.length",
  143. when="{\
  144. 'one': 'change',\
  145. 'other': 'changes'\
  146. }"
  147. )
  148. | in <strong>{{trackChanges.diff.doc.name}}</strong>
  149. .toolbar-right
  150. a.btn.btn-danger.btn-sm(
  151. href,
  152. ng-click="openRestoreDiffModal()"
  153. ) #{translate("restore_to_before_these_changes")}
  154. .diff-editor.hide-ace-cursor(
  155. ace-editor="track-changes",
  156. theme="settings.theme",
  157. font-size="settings.fontSize",
  158. text="trackChanges.diff.text",
  159. highlights="trackChanges.diff.highlights",
  160. read-only="true",
  161. resize-on="layout:main:resize",
  162. navigate-highlights="true"
  163. )
  164. .diff-deleted.text-centered(
  165. ng-show="trackChanges.diff.deleted"
  166. )
  167. p.text-serif #{translate("file_has_been_deleted", {filename:"{{ trackChanges.diff.doc.name }} "})}
  168. p
  169. a.btn.btn-primary.btn-lg(
  170. href,
  171. ng-click="restoreDeletedDoc()"
  172. ) #{translate("restore")}
  173. .loading-panel(ng-show="trackChanges.diff.loading")
  174. i.fa.fa-spin.fa-refresh
  175. | &nbsp;&nbsp;#{translate("loading")}...
  176. .error-panel(ng-show="trackChanges.diff.error")
  177. .alert.alert-danger #{translate("generic_something_went_wrong")}
  178. script(type="text/ng-template", id="trackChangesRestoreDiffModalTemplate")
  179. .modal-header
  180. button.close(
  181. type="button"
  182. data-dismiss="modal"
  183. ng-click="cancel()"
  184. ) &times;
  185. h3 #{translate("restore")} {{diff.doc.name}}
  186. .modal-body.modal-body-share
  187. p !{translate("sure_you_want_to_restore_before", {filename:"<strong>{{diff.doc.name}}</strong>", date:"{{diff.start_ts | formatDate}}"})}
  188. .modal-footer
  189. button.btn.btn-default(
  190. ng-click="cancel()",
  191. ng-disabled="state.inflight"
  192. ) #{translate("cancel")}
  193. button.btn.btn-danger(
  194. ng-click="restore()",
  195. ng-disabled="state.inflight"
  196. )
  197. span(ng-show="!state.inflight") #{translate("restore")}
  198. span(ng-show="state.inflight") #{translate("restoring")} ...