getone.mak 8.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <%inherit file="local:templates.master_authenticated_left_treeview_right_toolbar"/>
  2. <%namespace name="TIM" file="tracim.templates.pod"/>
  3. <%namespace name="TOOLBAR" file="tracim.templates.file.toolbar"/>
  4. <%namespace name="FORMS" file="tracim.templates.file.forms"/>
  5. <%namespace name="LEFT_MENU" file="tracim.templates.widgets.left_menu"/>
  6. <%namespace name="WIDGETS" file="tracim.templates.user_workspace_widgets"/>
  7. <%namespace name="BUTTON" file="tracim.templates.widgets.button"/>
  8. <%namespace name="TABLE_ROW" file="tracim.templates.widgets.table_row"/>
  9. <%namespace name="ICON" file="tracim.templates.widgets.icon"/>
  10. <%namespace name="P" file="tracim.templates.widgets.paragraph"/>
  11. <%def name="title()">${result.file.label}</%def>
  12. <%def name="SIDEBAR_LEFT_CONTENT()">
  13. ${LEFT_MENU.TREEVIEW('sidebar-left-menu', 'workspace_{}__item_{}'.format(result.file.workspace.id, result.file.id))}
  14. </%def>
  15. <%def name="SIDEBAR_RIGHT_CONTENT()">
  16. ${TOOLBAR.SECURED_FILE(fake_api.current_user, result.file.workspace, result.file)}
  17. </%def>
  18. <%def name="REQUIRED_DIALOGS()">
  19. ${TIM.MODAL_DIALOG('file-edit-modal-dialog', 'modal-lg')}
  20. ${TIM.HELP_MODAL_DIALOG('content-wiki-page-definition')}
  21. </%def>
  22. ############################################################################
  23. ##
  24. ## PAGE CONTENT BELOW
  25. ##
  26. ############################################################################
  27. <div class="content-container ${'not-editable' if not result.file.is_editable else ''} ${'archived' if result.file.is_archived else ''} ${'deleted' if result.file.is_deleted else ''}">
  28. <div class="t-page-header-row bg-secondary">
  29. <div class="main">
  30. <h1 class="page-header t-file-color-border">
  31. <i class="fa fa-fw fa-lg fa-paperclip tracim-less-visible t-file-color"></i>
  32. ${result.file.label}
  33. <span class="pull-right">
  34. ${WIDGETS.SECURED_SHOW_CHANGE_STATUS_FOR_FILE(fake_api.current_user, result.file.workspace, result.file)}
  35. </span>
  36. </h1>
  37. <div style="margin: -1.5em auto -1.5em auto;" class="tracim-less-visible">
  38. <% created_localized = h.get_with_timezone(result.file.created) %>
  39. <% updated_localized = h.get_with_timezone(result.file.updated) %>
  40. <% last_modification_author = result.file.last_modification_author.name %>
  41. <p>${_('file created on {date} at {time} by <b>{author}</b>').format(date=h.date(created_localized), time=h.time(created_localized), author=result.file.owner.name)|n}
  42. % if result.file.revision_nb > 1:
  43. ${_(' (last modification on {update_date} at {update_time} by {last_modification_author})').format(update_date=h.update_date(updated_localized), update_time=h.update_time(updated_localized), last_modification_author = last_modification_author)|n}
  44. % endif
  45. </p>
  46. </div>
  47. </div>
  48. </div>
  49. % if (result.file.is_archived) :
  50. <div class="alert alert-info" role="alert">
  51. <p>
  52. <span class="pull-left"><i class="fa fa-fw fa-2x fa-warning" alt="" title=""></i></span>
  53. ${_('You are looking at an <b>archived file</b>.')|n}
  54. </p>
  55. </div>
  56. % elif (result.file.is_deleted) :
  57. <div class="alert alert-info" role="alert">
  58. <p>
  59. <span class="pull-left"><i class="fa fa-fw fa-2x fa-warning" alt="" title=""></i></span>
  60. ${_('You are looking at a <b>deleted file</b>.')|n}
  61. </p>
  62. </div>
  63. % endif
  64. % if result.file.selected_revision!='latest':
  65. <div class="alert alert-warning" role="alert">
  66. <p>
  67. <span class="pull-left">${ICON.FA_FW_2X('fa-warning')}</span>
  68. ${_('You are reading <b>an old revision</b> of the current file. (the shown revision is r{}).').format(result.file.selected_revision)|n}
  69. </p>
  70. <a class="pull-right alert-link" href="${tg.url('/workspaces/{}/folders/{}/files/{}').format(result.file.workspace.id, result.file.parent.id, result.file.id)}">
  71. ${_('Show latest revision')}
  72. </a>
  73. </div>
  74. % endif
  75. % if result.file.status.id=='closed-deprecated':
  76. <div class="alert alert-warning" role="alert">
  77. <p>
  78. <span class="pull-left">${ICON.FA_FW_2X('fa-warning')}</span>
  79. ${_('<b>This file is deprecated</b>')|n}
  80. </p>
  81. </div>
  82. % endif
  83. <div class="content__detail file">
  84. <% download_url = tg.url('/workspaces/{}/folders/{}/files/{}/download?revision_id={}'.format(result.file.workspace.id, result.file.parent.id,result.file.id,result.file.selected_revision)) %>
  85. <div class="t-half-spacer-above">
  86. <div id='previewGenerator'></div>
  87. <script src="${tg.url('/assets/js/previewGenerator.vendor.bundle.js')}" type="text/javascript"></script>
  88. <script src="${tg.url('/assets/js/previewGenerator.app.entry.js')}" type="text/javascript"></script>
  89. <script type="text/javascript">
  90. <% created_localized = h.get_with_timezone(result.file.created) %>
  91. (function initialisePreviewGenerator() {
  92. previewGenerator(
  93. document.getElementById('previewGenerator'),
  94. globalTracimLang,
  95. [
  96. % for one_url in url:
  97. '${one_url}',
  98. % endfor
  99. ],
  100. '${nb_page}',
  101. '/previews/__FILE_ID__/pages/__CURRENT_PAGE__/__DOWNLOAD_TYPE__?revision_id=__REVISION_ID__',
  102. {
  103. id: '${result.file.id}',
  104. name: '${result.file.file.name}',
  105. selectedRevision: '${result.file.selected_revision}',
  106. weight: '${h.user_friendly_file_size(result.file.file.size)}',
  107. height: '300',
  108. modifiedAt: '${h.format_short(updated_localized)|n}',
  109. owner: '${result.file.owner.name}',
  110. sourceLink: '${download_url}',
  111. pdfAvailable: ${pdf_available}
  112. }
  113. )
  114. })()
  115. </script>
  116. </div>
  117. <div class="t-half-spacer-above">
  118. % if result.file.status.id in ('closed-validated', 'closed-unvalidated'):
  119. <span style="font-size: 1.5em;"><i class="pull-right fa fa-4x ${result.file.status.css} ${result.file.status.icon}"></i></span>
  120. % endif
  121. </div>
  122. % if result.file.content.strip(): # only show desc if really a content
  123. <div class="well">
  124. ${result.file.content|n}
  125. </div>
  126. % endif
  127. % if result.file.status.id!='open':
  128. <p class="tracim-less-visible">${_('<b>Note</b>: You need to change status in case you want to upload a new version')|n}</p>
  129. % else:
  130. % if h.user_role(fake_api.current_user, result.file.workspace)<=1: # User must be a contributor to be allowed to upload files
  131. ${WIDGETS.SECURED_SECTION_TITLE(fake_api.current_user, result.file.workspace, 'file-revisions', _('File revisions'))}
  132. <p>${_('This file contains {} revision(s)').format(result.file.revision_nb)}</p>
  133. % else:
  134. % if (h.user_role(fake_api.current_user, result.file.workspace)>1 and not result.file.is_archived and not result.file.is_deleted):
  135. ${BUTTON.DATA_TARGET_AS_TEXT('new-file-revision', _('upload a new revision and/or comment...'), 'btn btn-success t-spacer-below')}
  136. ${FORMS.NEW_FILE_REVISION_WITH_COMMENT_FORM('new-file-revision', result.file.workspace.id, result.file.parent.id, result.file.id)}
  137. % endif
  138. % endif
  139. % endif
  140. <div class="t-page-metadata-row t-spacer-above">
  141. <div class="t-spacer-above">
  142. <span id="associated-revisions"></span>
  143. <h4 class="anchored-title">${_('File history')}</h4>
  144. <div>
  145. <table class="table table-striped table-hover">
  146. % for event in result.file.history:
  147. ${WIDGETS.SECURED_HISTORY_VIRTUAL_EVENT_AS_TABLE_ROW(fake_api.current_user, event, result.file.selected_revision)}
  148. % endfor
  149. </table>
  150. </div>
  151. </div>
  152. <div/>
  153. </div>