folders.html 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <header id="folder-header" class="header" v-if="(active_view == 'folders' && active_folder)" v-cloak>
  2. <div v-cloak class="header-left pull-left">
  3. <a class="btn btn-stroke-darken btn-md btn-round btn-icon" href="/spaces">
  4. <span class="icon icon-home"></span>
  5. </a>
  6. <button v-if="logged_in && (active_space_role == 'editor' || active_space_role == 'admin')" class="btn btn-primary btn-md btn-round" v-on:click="create_space('space')">[[ __('create_space') ]]</button>
  7. <button v-if="logged_in && (active_space_role == 'editor' || active_space_role == 'admin')" class="btn btn-stroke-darken btn-md btn-round" v-on:click="create_space('folder')">
  8. <span v-bind:class="{'disabled-pro':!is_pro(user)}">[[ __('create_folder') ]]</span>
  9. </button>
  10. </div>
  11. <div class="header-right pull-right">
  12. <div class="dropdown top light m-r-20 compact-hidden" v-bind:class="{open : active_dropdown=='folder_sorting'}">
  13. <button class="btn btn-sm btn-nude" v-on:click="activate_dropdown('folder_sorting')">
  14. <span>[[ __('sort_by') ]]</span>:
  15. <b v-if="folder_sorting=='updated_at'">[[ __('last_modified') ]]</b>
  16. <b v-if="folder_sorting=='name'">[[ __('title') ]]</b>
  17. <b v-if="folder_sorting=='space_type'">[[ __('type') ]]</b>
  18. </button>
  19. <div class="dropdown-menu" role="menu">
  20. <ul class="select-list">
  21. <li v-bind:class="{checked:folder_sorting=='updated_at'}"
  22. v-on:click="set_folder_sorting('updated_at',true)">
  23. <span>[[ __('last_modified') ]]</span>
  24. </li>
  25. <li v-bind:class="{checked:folder_sorting=='name'}"
  26. v-on:click="set_folder_sorting('name',false)">
  27. <span>[[ __('title') ]]</span>
  28. </li>
  29. <li v-bind:class="{checked:folder_sorting=='space_type'}"
  30. v-on:click="set_folder_sorting('space_type',false)">
  31. <span>[[ __('type') ]]</span>
  32. </li>
  33. </ul>
  34. </div>
  35. </div>
  36. <label class="relative compact-hidden">
  37. <span class="icon icon-sm icon-zoom no-events absolute-top-left" style="margin: 5px;"></span>
  38. <input id="folder-search"
  39. type="search" name="search"
  40. style="padding-left: 40px !important; margin-right: 10px;"
  41. placeholder="[[ __('search') ]]"
  42. class="input input-md input-white input-round no-b w-2"
  43. v-model="folder_spaces_search" v-on:change="search_spaces">
  44. </label>
  45. <button class="btn btn-stroke-darken btn-md btn-round" v-if="!user.confirmed_at" v-on:click="confirm_again()">
  46. <span v-if="!account_confirmed_sent">[[ __('email_unconfirmed') ]]</span>
  47. <span v-if="account_confirmed_sent">[[ __('confirmation_sent') ]]</span>
  48. </button>
  49. <div class="dropdown top right light" v-bind:class="{open: active_dropdown=='account'}">
  50. <button
  51. class="profile-avatar btn btn-md btn-icon btn-darken btn-round"
  52. v-bind:style="background_image_style([user.avatar_thumb_uri])"
  53. v-bind:class="{'has-avatar-image':!!user.avatar_thumb_uri}" v-on:click="show_account();">
  54. <span class="icon icon-user" v-if="logged_in && !user.avatar_thumb_uri"></span></button>
  55. <div class="dropdown-menu" role="menu">
  56. <ul class="select-list">
  57. <li v-if="user.team && is_admin(user)">
  58. <a href="/team">
  59. <span class="icon icon-sm icon-user-group"></span>
  60. <span>[[ __('edit_team') ]]</span>
  61. </a>
  62. </li>
  63. <li>
  64. <a href="/account">
  65. <span class="icon icon-sm icon-user"></span>
  66. <span>[[ __('edit_account') ]]</span>
  67. </a>
  68. </li>
  69. <li v-on:click="activate_modal('support')">
  70. <span>
  71. <span class="icon icon-sm icon-info"></span>
  72. <span>[[ __('support') ]]</span>
  73. </span>
  74. </li>
  75. <li v-on:click="logout()">
  76. <span>
  77. <span class="icon icon-sm icon-logout"></span>
  78. <span>[[ __('log_out') ]]</span>
  79. </span>
  80. </li>
  81. </ul>
  82. </div>
  83. </div>
  84. <div class="btn-group dark round" id="meta-toggle" style="margin-right:10px">
  85. <button class="btn btn-md btn-transparent btn-icon btn-icon" v-on:click="toggle_meta()">
  86. <span class="jewel" style="color: white; background-color: red" v-if="meta_unseen>0">{{meta_unseen}}</span>
  87. <span class="icon icon-menu"></span>
  88. </button>
  89. </div>
  90. </div>
  91. </header>
  92. <div id="profile" v-cloak v-if="active_view == 'folders' && user">
  93. <div id="folder-wrapper">
  94. <div id="folder-breadcrumb">
  95. <a v-for="item in active_space_path" type="button" class="btn btn-sm btn-transparent" href="/{{item.space_type}}s/{{item._id}}" v-sd-droppable="handle_folder_drop;item">
  96. <span>{{item.name}}</span>
  97. <span class="seperator">/</span>
  98. </a>
  99. <a v-if="(active_space_role != 'admin')" type="button" class="btn btn-sm btn-transparent">
  100. <span>{{active_folder.name}}</span>
  101. </a>
  102. <div class="dropdown top light" v-bind:class="{open:active_dropdown=='breadcrumb'}" v-if="(active_folder._id != user.home_folder_id) && ((active_space_role == 'admin') || (active_space_role == 'editor'))">
  103. <button type="button" class="btn btn-sm btn-transparent btn-dropdown" data-toggle="dropdown" v-on:click=" activate_dropdown('breadcrumb')">
  104. <span>{{active_folder.name}}</span>
  105. </button>
  106. <div class="dropdown-menu" v-if="active_folder && active_folder._id != user.home_folder_id">
  107. <ul class="select-list">
  108. <li><span class="tile-rename" v-on:click="rename_folder(active_folder)">[[__("rename")]]</span></li>
  109. <li v-if="active_space_role == 'admin'"><span class="tile-share" v-on:click="activate_access()">[[__("share")]]</span></li>
  110. <li><a v-on:click=" open_url('[[config.endpoint]]/api/spaces/'+active_folder._id+'/list')" target="_blank">[[__("list")]]</a></li>
  111. </ul>
  112. </div>
  113. </div>
  114. <div v-if="active_folder._id == user.home_folder_id">
  115. <span>[[ __('home') ]]</span>
  116. </div>
  117. </div>
  118. <div id="folder-empty" v-if="(active_profile_spaces.length == 0)">
  119. <div>
  120. <p>[[ __('no_spaces_yet') ]]</p>
  121. </div>
  122. </div>
  123. <div id="folder-empty" v-if="folder_spaces_filter">
  124. <div v-if="active_profile_spaces | empty?">
  125. <p><b>"{{folder_spaces_filter}}"</b> <br/>[[ __('search_no_results') ]]</p>
  126. <button type="button" class="btn btn-md btn-round btn-stroke-darken events" v-on:click=" folder_spaces_filter = ''">[[ __('search_clear') ]]</button>
  127. </div>
  128. </div>
  129. <div id="folder-grid">
  130. <div
  131. v-for="item in active_profile_spaces | orderBy folder_sorting folder_reverse"
  132. v-sd-draggable="item"
  133. v-sd-droppable="handle_folder_drop;item"
  134. draggable="true"
  135. class="item" v-bind:class="item.space_type"
  136. v-bind:style="{'z-index': (active_profile_spaces.length - $index)}">
  137. <a href="/{{item.space_type}}s/{{item._id}}">
  138. <span class="item-thumbnail thumbnail-loading" v-if="item.space_type=='space'"></span>
  139. <span class="item-thumbnail" v-bind:style="space_thumbnail_style(item)"></span>
  140. </a>
  141. <div class="item-meta" >
  142. <span class="item-title">{{item.name}}</span>
  143. <div class="pull-right dropdown center light" v-if="active_space_role=='admin'" v-bind:class="{open:(active_dropdown=='space_'+item._id || active_dropdown=='space_share_'+item._id)}">
  144. <button type="button" class="btn btn-transparent btn-dropdown no-min-w no-p" data-toggle="dropdown" v-on:click="activate_dropdown('space_'+item._id)">
  145. </button>
  146. <div class="dropdown-menu" role="menu">
  147. <ul class="select-list">
  148. <li v-on:click="duplicate_space(item)"><span><span class="icon icon-sm icon-duplicate"></span>[[ __('duplicate') ]]</span></li>
  149. <li v-on:click="rename_space(item)"><span><span class="icon icon-sm icon-tag"></span>[[ __('rename') ]]</span></li>
  150. <li v-on:click="delete_space(item)"><span><span class="icon icon-sm icon-trash"></span>[[ __('delete') ]]</span></li>
  151. </ul>
  152. </div>
  153. </div>
  154. </div>
  155. <span class="item-appendix">
  156. <span class="pull-right item-date">{{item.updated_at | date 'YYYY-MM-DD'}}</span>
  157. <span class="item-author">
  158. <span class="profile-avatar btn btn-xs btn-icon btn-white btn-round m-r-10"
  159. v-bind:style="background_image_style([item.creator.avatar_thumb_uri])"
  160. v-bind:class="{'has-avatar-image':!!item.creator.avatar_thumb_uri}">
  161. <span class="icon icon-user" v-if="!item.creator.avatar_thumb_uri"></span>
  162. </span>
  163. {{item.creator.nickname}}
  164. </span>
  165. </span>
  166. </div>
  167. </div>
  168. </div>
  169. </div>