toolbar_tools.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. function BxFilesBrowserTools(oOptions) {
  2. this._sView = oOptions.layout;
  3. this._bBookmarks = oOptions.bookmarks;
  4. this._sSorting = oOptions.sorting;
  5. this._sKeyword = oOptions.keyword;
  6. this._sUniq = oOptions.unique_ident;
  7. this._aRequestParams = oOptions.aRequestParams;
  8. this._iSearchTimeoutId = 0;
  9. this._sActionUrl = oOptions.sActionUrl;
  10. this._iContext = oOptions.context;
  11. this._iCurrentFolder = oOptions.current_folder;
  12. this._iCurrentPage = oOptions.current_page;
  13. this._oToolbarObject = $('#bx-files-browser-toolbar-' + this._sUniq).get(0);
  14. this.aSelectedFiles = [];
  15. var $this = this;
  16. $(document).ready(function(){
  17. $('input[type=checkbox]', $($this._oToolbarObject).parent()).change(function(){
  18. $this.updateBulkActionsPanelVisivility();
  19. });
  20. });
  21. $(window).on('files_browser.update', function(){
  22. $this.reloadBlock($this._iCurrentPage);
  23. });
  24. }
  25. BxFilesBrowserTools.prototype.findSelectedFiles = function() {
  26. this.aSelectedFiles = [];
  27. var $this = this;
  28. $('input[type=checkbox]:checked', $(this._oToolbarObject).parent()).each(function(i, el){
  29. if ($(el).val() > 0) $this.aSelectedFiles.push($(el).val());
  30. });
  31. }
  32. BxFilesBrowserTools.prototype.updateBulkActionsPanelVisivility = function() {
  33. this.findSelectedFiles();
  34. if (this.aSelectedFiles.length) $('.bx-files-bulk-actions', this._oToolbarObject).slideDown();
  35. else $('.bx-files-bulk-actions', this._oToolbarObject).slideUp();
  36. }
  37. BxFilesBrowserTools.prototype.reloadBlock = function(iPage) {
  38. if (typeof iPage == 'undefined') iPage = 0;
  39. loadDynamicBlockAutoPaginate(this._oToolbarObject, iPage, '0', this.getRequestUrl());
  40. }
  41. BxFilesBrowserTools.prototype.onChangeFilter = function(oFilter) {
  42. var $this = this;
  43. clearTimeout($this._iSearchTimeoutId);
  44. $this._iSearchTimeoutId = setTimeout(function () {
  45. $this._sKeyword = $(oFilter).val();
  46. $this.reloadBlock();
  47. }, 500);
  48. };
  49. BxFilesBrowserTools.prototype.setView = function(val) {
  50. this._sView = val;
  51. this.reloadBlock();
  52. }
  53. BxFilesBrowserTools.prototype.toggleBookmarks = function() {
  54. this._bBookmarks = this._bBookmarks ? 0 : 1;
  55. this.reloadBlock();
  56. }
  57. BxFilesBrowserTools.prototype.setSorting = function(val) {
  58. this._sSorting = val;
  59. this.reloadBlock();
  60. }
  61. BxFilesBrowserTools.prototype.getRequestUrl = function() {
  62. return this._aRequestParams.unit_view_param + '=' + this._sView + '&' +
  63. this._aRequestParams.bookmarks_param + '=' + this._bBookmarks + '&' +
  64. this._aRequestParams.sorting_param + '=' + this._sSorting + '&' +
  65. this._aRequestParams.keyword_param + '=' + this._sKeyword + '&' +
  66. this._aRequestParams.current_folder + '=' + this._iCurrentFolder;
  67. }
  68. BxFilesBrowserTools.prototype.onSelectAll = function(el) {
  69. $(el).
  70. closest('.bx-files-text-unit-simple-row').
  71. siblings().
  72. find('input[type=checkbox]').
  73. prop('checked', $(el).prop('checked')).change(function(){
  74. $(el).attr('checked', false);
  75. });
  76. };
  77. BxFilesBrowserTools.prototype.onBeforeUpload = function() {
  78. $.get(this._sActionUrl + 'clear_ghosts/');
  79. }
  80. BxFilesBrowserTools.prototype.onAfterUpload = function() {
  81. var $this = this;
  82. $.post(this._sActionUrl + 'upload_completed/', {context: this._iContext, folder: this._iCurrentFolder}, function(oData) {
  83. processJsonData(oData);
  84. $this.reloadBlock();
  85. }, 'json');
  86. }
  87. BxFilesBrowserTools.prototype.addFolder = function(sMessage) {
  88. var $this = this;
  89. bx_prompt(sMessage, '', function(oPopup) {
  90. var name = oPopup.getValue();
  91. $.post($this._sActionUrl + 'create_folder/', {context: $this._iContext, current_folder: $this._iCurrentFolder, name: name}, function (oData) {
  92. processJsonData(oData);
  93. $this.reloadBlock();
  94. }, 'json');
  95. });
  96. }
  97. BxFilesBrowserTools.prototype.folderNavigate = function(id) {
  98. this._iCurrentFolder = id >= 0 ? id : -this._iCurrentFolder;
  99. this.reloadBlock();
  100. }
  101. BxFilesBrowserTools.prototype.bookmarkFiles = function() {
  102. if (!this.aSelectedFiles.length) return;
  103. var $this = this;
  104. $.post(this._sActionUrl+'bookmark/0', {bulk: this.aSelectedFiles}, function(oData){
  105. processJsonData(oData);
  106. $this.reloadBlock();
  107. }, 'json');
  108. }
  109. BxFilesBrowserTools.prototype.deleteFiles = function() {
  110. if (!this.aSelectedFiles.length) return;
  111. var $this = this;
  112. bx_confirm(_t('_Are_you_sure'), function(){
  113. $.post($this._sActionUrl+'entry_delete/0', {bulk: $this.aSelectedFiles}, function(oData){
  114. processJsonData(oData);
  115. $this.reloadBlock();
  116. }, 'json');
  117. });
  118. }
  119. BxFilesBrowserTools.prototype.moveFiles = function() {
  120. if (!this.aSelectedFiles.length) return;
  121. $.post(this._sActionUrl + 'move_files/', {bulk: this.aSelectedFiles}, processJsonData, 'json');
  122. }
  123. BxFilesBrowserTools.prototype.downloadFiles = function() {
  124. if (!this.aSelectedFiles.length) return;
  125. window.open(this._sActionUrl + 'download/0/0/' + JSON.stringify(this.aSelectedFiles),'_blank');
  126. }