//The build will inline common dependencies into this file. //For any third party dependencies, like jQuery, place them in the lib folder. //Configure loading modules from the lib directory, //except for 'app' ones, which are in a sibling directory. require.config({ // The shim config allows us to configure dependencies for // scripts that do not call define() to register a module shim: { underscore: { exports: '_' }, backbone: { deps: [ 'underscore', 'jquery' ], exports: 'Backbone' }, 'backbone.paginator': { deps: [ 'backbone' ], exports: 'BackbonePaginator' } }, paths: { 'jquery': 'lib/jquery', 'jquery.ui.core': 'lib/jquery.ui.core', 'jquery.ui.widget': 'lib/jquery.ui.widget.1.11.1', 'jquery.ui.progressbar': 'lib/jquery.ui.progressbar', 'jquery.ui.tabs': 'lib/jquery.ui.tabs', 'tmpl': 'lib/tmpl.min', 'jquery.iframe-transport': 'lib/jquery.iframe-transport.1.4', 'jquery.fileupload': 'lib/jquery.fileupload.5.42.1', 'jquery.fileupload-process': 'lib/jquery.fileupload.file-processing.1.3.0', 'jquery.fileupload-validate': 'lib/jquery.fileupload.validation.1.1.2', 'jquery.fileupload-ui': 'lib/jquery.fileupload.ui.9.6.0', 'jquery.magnific-popup': 'lib/jquery.magnific-popup', 'js.cookie': 'lib/js.cookie', simplemodal: 'lib/jquery.simplemodal', jstree: 'lib/jstree.1.0', select2: 'lib/select2-3.5.2', moment: 'lib/moment-with-locales', marked: 'lib/marked.min', underscore: 'lib/underscore', backbone: 'lib/backbone', 'backbone.paginator': 'lib/backbone.paginator', text: 'lib/text' } }); define([ 'jquery', 'underscore', 'text', // Workaround for r.js, otherwise text.js will not be included 'pinyin-by-unicode', 'moment', ], function($, _, text, PinyinByUnicode, Moment) { return { INFO_TIMEOUT: 10000, // 10 secs for info msg SUCCESS_TIMEOUT: 3000, // 3 secs for success msg ERROR_TIMEOUT: 3000, // 3 secs for error msg strChineseFirstPY: PinyinByUnicode.strChineseFirstPY, getUrl: function(options) { var siteRoot = app.config.siteRoot; var fileServerRoot = app.config.fileServerRoot; switch (options.name) { // File Operations case 'list_lib_dir': return siteRoot + 'ajax/lib/' + options.repo_id + '/dir/'; case 'del_dir': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/dir/'; case 'del_file': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/file/'; case 'download_dir_zip_url': return fileServerRoot + 'zip/' + options.zip_token; case 'zip_task': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/zip-task/'; case 'query_zip_progress': return siteRoot + 'api/v2.1/query-zip-progress/'; case 'rename_dir': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/dir/'; case 'rename_file': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/file/'; case 'mv_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/mv/'; case 'cp_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/cp/'; case 'mv_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/mv/'; case 'cp_file': return siteRoot + 'ajax/repo/' + options.repo_id + '/file/cp/'; case 'lock_or_unlock_file': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/file/'; case 'new_dir': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/dir/'; case 'new_file': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/file/'; case 'del_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/delete/'; case 'mv_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/move/'; case 'cp_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/copy/'; case 'get_cp_progress': return siteRoot + 'ajax/cp_progress/'; case 'cancel_cp': return siteRoot + 'ajax/cancel_cp/'; case 'get_file_op_url': return siteRoot + 'ajax/repo/' + options.repo_id + '/file_op_url/'; case 'get_file_uploaded_bytes': return siteRoot + 'ajax/repo/' + options.repo_id + '/get-file-uploaded-bytes/'; case 'get_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/'; // Repos case 'repos': return siteRoot + 'api2/repos/'; case 'pub_repos': return siteRoot + 'api2/repos/public/'; case 'get_my_unenc_repos': return siteRoot + 'ajax/my-unenc-repos/'; case 'unenc_rw_repos': return siteRoot + 'ajax/unenc-rw-repos/'; case 'api_v2.1_repo_set_password': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/set-password/'; case 'get_folder_perm_by_path': return siteRoot + 'ajax/repo/' + options.repo_id + '/get-folder-perm-by-path/'; case 'get_history_changes': return siteRoot + 'ajax/repo/' + options.repo_id + '/history/changes/'; case 'beshared_repo': return siteRoot + 'api2/beshared-repos/' + options.repo_id + '/'; case 'dir_shared_items': return siteRoot + 'api2/repos/' + options.repo_id + '/dir/shared_items/'; case 'shared_repos': return siteRoot + 'api2/shared-repos/' + options.repo_id + '/'; case 'repo': return siteRoot + 'api2/repos/' + options.repo_id + '/'; case 'repo_owner': return siteRoot + 'api2/repos/' + options.repo_id + '/owner/'; case 'repo_history_limit': return siteRoot + 'api2/repos/' + options.repo_id + '/history-limit/'; case 'repo_shared_download_links': return siteRoot + 'api2/repos/' + options.repo_id + '/download-shared-links/'; case 'repo_shared_download_link': return siteRoot + 'api2/repos/' + options.repo_id + '/download-shared-links/' + options.token + '/'; case 'repo_shared_upload_links': return siteRoot + 'api2/repos/' + options.repo_id + '/upload-shared-links/'; case 'repo_shared_upload_link': return siteRoot + 'api2/repos/' + options.repo_id + '/upload-shared-links/' + options.token + '/'; case 'repo_user_folder_perm': return siteRoot + 'api2/repos/' + options.repo_id + '/user-folder-perm/'; case 'repo_group_folder_perm': return siteRoot + 'api2/repos/' + options.repo_id + '/group-folder-perm/'; case 'repo_change_password': return siteRoot + 'ajax/repo/' + options.repo_id + '/setting/change-passwd/'; // Share admin case 'share_admin_repos': return siteRoot + 'api/v2.1/shared-repos/'; case 'share_admin_repo': return siteRoot + 'api/v2.1/shared-repos/' + options.repo_id + '/'; case 'share_admin_folders': return siteRoot + 'api/v2.1/shared-folders/'; case 'share_admin_share_links': return siteRoot + 'api/v2.1/share-links/'; case 'share_admin_share_link': return siteRoot + 'api/v2.1/share-links/' + options.token + '/'; case 'share_admin_upload_links': return siteRoot + 'api/v2.1/upload-links/'; case 'share_admin_upload_link': return siteRoot + 'api/v2.1/upload-links/' + options.token + '/'; // Permission case 'set_user_folder_perm': return siteRoot + 'ajax/repo/' + options.repo_id + '/set-user-folder-perm/'; case 'set_group_folder_perm': return siteRoot + 'ajax/repo/' + options.repo_id + '/set-group-folder-perm/'; // Links case 'send_shared_download_link': return siteRoot + 'share/link/send/'; case 'send_shared_upload_link': return siteRoot + 'share/upload_link/send/'; // Group case 'groups': return siteRoot + 'api/v2.1/groups/'; case 'search_group': return siteRoot + 'api/v2.1/search-group/'; case 'group': return siteRoot + 'api/v2.1/groups/' + options.group_id + '/'; case 'group_members': return siteRoot + 'api/v2.1/groups/' + options.group_id + '/members/'; case 'group_member': return siteRoot + 'api/v2.1/groups/' + options.group_id + '/members/' + options.email + '/'; case 'group_member_bulk': return siteRoot + 'api/v2.1/groups/' + options.group_id + '/members/bulk/'; case 'group_import_members': return siteRoot + 'ajax/group/' + options.group_id + '/members/import/'; case 'group_repos': return siteRoot + 'api2/groups/' + options.group_id + '/repos/'; case 'toggle_group_modules': return siteRoot + 'ajax/group/' + options.group_id + '/toggle-modules/'; case 'group_discussions': return siteRoot + 'api2/groups/' + options.group_id + '/discussions/'; case 'group_discussion': return siteRoot + 'api2/groups/' + options.group_id + '/discussions/' + options.discussion_id + '/'; // Misc case 'thumbnail_create': return siteRoot + 'thumbnail/' + options.repo_id + '/create/'; case 'get_user_contacts': return siteRoot + 'ajax/contacts/'; case 'get_popup_notices': return siteRoot + 'ajax/get_popup_notices/'; case 'set_notices_seen': return siteRoot + 'ajax/set_notices_seen/'; case 'get_unseen_notices_num': return siteRoot + 'ajax/unseen-notices-count/'; case 'set_notice_seen_by_id': return siteRoot + 'ajax/set_notice_seen_by_id/'; case 'toggle_personal_modules': return siteRoot + 'ajax/toggle-personal-modules/'; case 'starred_files': return siteRoot + 'api2/starredfiles/'; case 'events': return siteRoot + 'api2/events/'; case 'devices': return siteRoot + 'api2/devices/'; case 'invitations': return siteRoot + 'api/v2.1/invitations/'; case 'invitation': return siteRoot + 'api/v2.1/invitations/' + options.token + '/'; case 'search_user': return siteRoot + 'api2/search-user/'; case 'user_profile': return siteRoot + 'profile/' + options.username + '/'; case 'space_and_traffic': return siteRoot + 'ajax/space_and_traffic/'; // sysadmin case 'sysinfo': return siteRoot + 'api/v2.1/admin/sysinfo/'; case 'admin-devices': return siteRoot + 'api/v2.1/admin/devices/'; case 'admin-device-errors': return siteRoot + 'api/v2.1/admin/device-errors/'; case 'admin-libraries': return siteRoot + 'api/v2.1/admin/libraries/'; case 'admin-library': return siteRoot + 'api/v2.1/admin/libraries/' + options.repo_id + '/'; case 'admin-library-dirents': return siteRoot + 'api/v2.1/admin/libraries/' + options.repo_id + '/dirents/'; case 'admin-groups': return siteRoot + 'api/v2.1/admin/groups/'; case 'admin-group': return siteRoot + 'api/v2.1/admin/groups/' + options.group_id + '/'; case 'admin-system-library': return siteRoot + 'api/v2.1/admin/system-library/'; case 'admin-trash-libraries': return siteRoot + 'api/v2.1/admin/trash-libraries/'; case 'admin-trash-library': return siteRoot + 'api/v2.1/admin/trash-libraries/' + options.repo_id + '/'; case 'admin_library_user_shares': return siteRoot + 'api/v2.1/admin/libraries/' + options.repo_id + '/user-shares/'; case 'admin_library_user_share': return siteRoot + 'api/v2.1/admin/libraries/' + options.repo_id + '/user-share/'; case 'admin_library_group_shares': return siteRoot + 'api/v2.1/admin/libraries/' + options.repo_id + '/group-shares/'; case 'admin_library_group_share': return siteRoot + 'api/v2.1/admin/libraries/' + options.repo_id + '/group-share/'; } }, FILEEXT_ICON_MAP: { // text file 'md': 'txt.png', 'txt': 'txt.png', // pdf file 'pdf' : 'pdf.png', // document file 'doc' : 'word.png', 'docx' : 'word.png', 'ppt' : 'ppt.png', 'pptx' : 'ppt.png', 'xls' : 'excel.png', 'xlsx' : 'excel.png', 'txt' : 'txt.png', 'odt' : 'word.png', 'fodt' : 'word.png', 'ods' : 'excel.png', 'fods' : 'excel.png', 'odp' : 'ppt.png', 'fodp' : 'ppt.png', // music file 'mp3' : 'music.png', 'oga' : 'music.png', 'ogg' : 'music.png', 'flac' : 'music.png', 'aac' : 'music.png', 'ac3' : 'music.png', 'wma' : 'music.png', // image file 'jpg' : 'pic.png', 'jpeg' : 'pic.png', 'png' : 'pic.png', 'svg' : 'pic.png', 'gif' : 'pic.png', 'bmp' : 'pic.png', 'ico' : 'pic.png', // default 'default' : 'file.png' }, getFileIconUrl: function(filename, size) { if (size > 24) { size = 192; } else { size = 24; } var file_ext; if (filename.lastIndexOf('.') == -1) { return app.config.mediaUrl + "img/file/" + size + "/" + this.FILEEXT_ICON_MAP['default']; } else { file_ext = filename.substr(filename.lastIndexOf('.') + 1).toLowerCase(); } if (_.has(this.FILEEXT_ICON_MAP, file_ext)) { return app.config.mediaUrl + "img/file/" + size + "/" + this.FILEEXT_ICON_MAP[file_ext]; } else { return app.config.mediaUrl + "img/file/" + size + "/" + this.FILEEXT_ICON_MAP['default']; } }, getDirIconUrl: function(is_readonly, size) { if (size > 24) { if (is_readonly) { return app.config.mediaUrl + "img/folder-read-only-192.png"; } else { return app.config.mediaUrl + "img/folder-192.png"; } } else { if (is_readonly) { return app.config.mediaUrl + "img/folder-read-only-24.png"; } else { return app.config.mediaUrl + "img/folder-24.png"; } } }, getLibIconUrl: function(is_encrypted, is_readonly, size) { if (size > 24) { if (is_encrypted) { return app.config.mediaUrl + "img/lib/96/lib-encrypted.png"; } else if (is_readonly) { return app.config.mediaUrl + "img/lib/96/lib-readonly.png"; } else { return app.config.mediaUrl + "img/lib/96/lib.png"; } } else { if (is_encrypted) { return app.config.mediaUrl + "img/lib/24/lib-encrypted.png"; } else if (is_readonly) { return app.config.mediaUrl + "img/lib/24/lib-readonly.png"; } else { return app.config.mediaUrl + "img/lib/24/lib.png"; } } }, isHiDPI: function() { var pixelRatio = window.devicePixelRatio ? window.devicePixelRatio : 1; if (pixelRatio > 1) { return true; } else { return false; } }, showConfirm: function(title, content, yesCallback) { var $popup = $("#confirm-popup"); var $cont = $('#confirm-con'); var $yesBtn = $('#confirm-yes'); $cont.html('
' + content + '
'); $popup.modal({appendTo: '#main'}); $('#simplemodal-container').css({'height':'auto'}); $yesBtn.click(yesCallback); }, confirm_with_extra_option_template: _.template($('#confirm-dialog-with-extra-option-tmpl').html()), showConfirmWithExtraOption: function(title, content, extraOption, yesCallback) { var $popup = $("#confirm-popup"); var $cont = $('#confirm-con'); var $yesBtn = $('#confirm-yes'); var html = this.confirm_with_extra_option_template({ 'is_pro': app.pageOptions.is_pro, 'title': title, 'content': content, 'extraOption': extraOption }); $cont.html(html); $popup.modal({appendTo: '#main'}); $('#simplemodal-container').css({'height':'auto'}); $yesBtn.click(function() { var extraOptionChecked = $('#confirm-extra-option:checked').val() === 'on'; yesCallback(extraOptionChecked); }); }, closeModal: function() { $.modal.close(); }, feedback: function(con, type, time) { var time = time || 5000; if ($('.messages').length > 0) { $('.messages').html('