share.pug 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. script(type='text/ng-template', id='shareProjectModalTemplate')
  2. .modal-header
  3. button.close(
  4. type="button"
  5. data-dismiss="modal"
  6. ng-click="cancel()"
  7. ) ×
  8. h3 #{translate("share_project")}
  9. .modal-body.modal-body-share
  10. .container-fluid
  11. .row.public-access-level(ng-show="project.publicAccesLevel == 'private'")
  12. .col-xs-12.text-center
  13. | #{translate("this_project_is_private")}
  14. |   
  15. a(
  16. href
  17. ng-click="openMakePublicModal()"
  18. ) #{translate("make_public")}
  19. .row.public-access-level(ng-show="project.publicAccesLevel != 'private'")
  20. .col-xs-12.text-center
  21. strong(ng-if="project.publicAccesLevel == 'readAndWrite'") #{translate("this_project_is_public")}
  22. strong(ng-if="project.publicAccesLevel == 'readOnly'") #{translate("this_project_is_public_read_only")}
  23. |   
  24. a(
  25. href
  26. ng-click="openMakePrivateModal()"
  27. ) #{translate("make_private")}
  28. .row.project-member
  29. .col-xs-8 {{ project.owner.email }}
  30. .text-left(
  31. ng-class="{'col-xs-3': project.members.length > 0, 'col-xs-4': project.members.length == 0}"
  32. ) #{translate("owner")}
  33. .row.project-member(ng-repeat="member in project.members")
  34. .col-xs-8 {{ member.email }}
  35. .col-xs-3.text-left
  36. span(ng-show="member.privileges == 'readAndWrite'") #{translate("can_edit")}
  37. span(ng-show="member.privileges == 'readOnly'") #{translate("read_only")}
  38. .col-xs-1
  39. a(
  40. href
  41. tooltip=translate('remove_collaborator')
  42. tooltip-placement="bottom"
  43. ng-click="removeMember(member)"
  44. )
  45. i.fa.fa-times
  46. .row.project-invite(ng-repeat="invite in project.invites")
  47. .col-xs-8 {{ invite.email }} 
  48. div.small
  49. | #{translate("invite_not_accepted")}. 
  50. a(href="#", ng-click="resendInvite(invite, $event)") #{translate("resend")}
  51. .col-xs-3.text-left
  52. // todo: get invite privileges
  53. span(ng-show="invite.privileges == 'readAndWrite'") #{translate("can_edit")}
  54. span(ng-show="invite.privileges == 'readOnly'") #{translate("read_only")}
  55. .col-xs-1
  56. a(
  57. href
  58. tooltip=translate('revoke_invite')
  59. tooltip-placement="bottom"
  60. ng-click="revokeInvite(invite)"
  61. )
  62. i.fa.fa-times
  63. .row.invite-controls
  64. form(ng-show="canAddCollaborators")
  65. .small #{translate("share_with_your_collabs")}
  66. .form-group
  67. tags-input(
  68. template="shareTagTemplate"
  69. placeholder=settings.customisation.shareProjectPlaceholder || 'joe@example.com, sue@example.com, ...'
  70. ng-model="inputs.contacts"
  71. focus-on="open"
  72. display-property="display"
  73. add-on-paste="true"
  74. add-on-enter="false"
  75. replace-spaces-with-dashes="false"
  76. type="email"
  77. )
  78. auto-complete(
  79. source="filterAutocompleteUsers($query)"
  80. template="shareAutocompleteTemplate"
  81. display-property="email"
  82. min-length="0"
  83. )
  84. .form-group
  85. .pull-right
  86. select.privileges.form-control(
  87. ng-model="inputs.privileges"
  88. name="privileges"
  89. )
  90. option(value="readAndWrite") #{translate("can_edit")}
  91. option(value="readOnly") #{translate("read_only")}
  92. |   
  93. //- We have to use mousedown here since click has issues with the
  94. //- blur handler in tags-input sometimes changing its height and
  95. //- moving this button, preventing the click registering.
  96. button.btn.btn-info(
  97. type="submit"
  98. ng-mousedown="addMembers()"
  99. ng-keyup="$event.keyCode == 13 ? addMembers() : null"
  100. ) #{translate("share")}
  101. div(ng-hide="canAddCollaborators")
  102. p.text-center #{translate("need_to_upgrade_for_more_collabs")}. Also:
  103. .row
  104. .col-md-8.col-md-offset-2
  105. ul.list-unstyled
  106. li
  107. i.fa.fa-check  
  108. | #{translate("unlimited_projects")}
  109. li
  110. i.fa.fa-check  
  111. | #{translate("collabs_per_proj", {collabcount:'Multiple'})}
  112. li
  113. i.fa.fa-check  
  114. | #{translate("full_doc_history")}
  115. li
  116. i.fa.fa-check  
  117. | #{translate("sync_to_dropbox")}
  118. li
  119. i.fa.fa-check  
  120. | #{translate("sync_to_github")}
  121. li
  122. i.fa.fa-check  
  123. |#{translate("compile_larger_projects")}
  124. p.text-center.row-spaced-thin(ng-controller="FreeTrialModalController")
  125. a.btn.btn-success(
  126. href
  127. ng-class="buttonClass"
  128. sixpack-convert="track_changes_feature_info"
  129. ng-click="startFreeTrial('projectMembers')"
  130. ) #{translate("start_free_trial")}
  131. p.small(ng-show="startedFreeTrial")
  132. | #{translate("refresh_page_after_starting_free_trial")}.
  133. .modal-footer.modal-footer-share
  134. .modal-footer-left
  135. i.fa.fa-refresh.fa-spin(ng-show="state.inflight")
  136. span.text-danger.error(ng-show="state.error")
  137. span(ng-switch="state.errorReason")
  138. span(ng-switch-when="cannot_invite_non_user")
  139. | #{translate("cannot_invite_non_user")}
  140. span(ng-switch-when="cannot_invite_self")
  141. | #{translate("cannot_invite_self")}
  142. span(ng-switch-when="invalid_email")
  143. | #{translate("invalid_email")}
  144. span(ng-switch-default)
  145. | #{translate("generic_something_went_wrong")}
  146. button.btn.btn-default(
  147. ng-click="done()"
  148. ) #{translate("close")}
  149. script(type="text/ng-template", id="makePublicModalTemplate")
  150. .modal-header
  151. button.close(
  152. type="button"
  153. data-dismiss="modal"
  154. ng-click="cancel()"
  155. ) ×
  156. h3 #{translate("make_project_public")}?
  157. .modal-body.modal-body-share
  158. p #{translate("make_project_public_consequences")}
  159. p
  160. select.form-control(
  161. ng-model="inputs.privileges"
  162. name="privileges"
  163. )
  164. option(value="readAndWrite") #{translate("allow_public_editing")}
  165. option(value="readOnly") #{translate("allow_public_read_only")}
  166. .modal-footer
  167. button.btn.btn-default(
  168. ng-click="cancel()"
  169. ) #{translate("cancel")}
  170. button.btn.btn-info(
  171. ng-click="makePublic()"
  172. ) #{translate("make_public")}
  173. script(type="text/ng-template", id="makePrivateModalTemplate")
  174. .modal-header
  175. button.close(
  176. type="button"
  177. data-dismiss="modal"
  178. ng-click="cancel()"
  179. ) ×
  180. h3 #{translate("make_project_private")}?
  181. .modal-body.modal-body-share
  182. p #{translate("make_project_private_consequences")}
  183. .modal-footer
  184. button.btn.btn-default(
  185. ng-click="cancel()"
  186. ) #{translate("cancel")}
  187. button.btn.btn-info(
  188. ng-click="makePrivate()"
  189. ) #{translate("make_private")}
  190. script(type="text/ng-template", id="shareTagTemplate")
  191. .tag-template
  192. span(ng-if="data.type")
  193. i.fa.fa-fw(ng-class="{'fa-user': data.type != 'group', 'fa-group': data.type == 'group'}")
  194. |
  195. span {{$getDisplayText()}}
  196. |
  197. a(href, ng-click="$removeTag()").remove-button
  198. i.fa.fa-fw.fa-close
  199. script(type="text/ng-template", id="shareAutocompleteTemplate")
  200. .autocomplete-template
  201. div(ng-if="data.type == 'user'")
  202. i.fa.fa-fw.fa-user
  203. |
  204. span(ng-bind-html="$highlight(data.display)")
  205. div(ng-if="data.type == 'group'")
  206. i.fa.fa-fw.fa-group
  207. |
  208. span(ng-bind-html="$highlight(data.name)")
  209. span.subdued.small(ng-show="data.member_count") ({{ data.member_count }} members)