main.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. "use strict";
  2. (function(){
  3. var queryString = location.search;
  4. var query = {};
  5. var pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');
  6. for (var i = 0; i < pairs.length; i++) {
  7. var pair = pairs[i].split('=');
  8. query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
  9. }
  10. var fredToken = query.fredToken || '';
  11. delete query.fredToken;
  12. var serialize = function(obj, prefix) {
  13. var str = [],
  14. p;
  15. for (p in obj) {
  16. if (obj.hasOwnProperty(p)) {
  17. var k = prefix ? prefix + "[" + p + "]" : p,
  18. v = obj[p];
  19. str.push((v !== null && typeof v === "object") ?
  20. serialize(v, k) :
  21. encodeURIComponent(k) + "=" + encodeURIComponent(v));
  22. }
  23. }
  24. return str.join("&");
  25. };
  26. queryString = serialize(query);
  27. if (queryString.length > 0) {
  28. queryString = '?' + queryString;
  29. }
  30. var jqver = '3.2.1',
  31. uiver = '1.12.1',
  32. lang = (function() {
  33. var locq = window.location.search,
  34. fullLang, locm, lang;
  35. if (locq && (locm = locq.match(/lang=([a-zA-Z_-]+)/))) {
  36. fullLang = locm[1];
  37. } else {
  38. fullLang = (navigator.browserLanguage || navigator.language || navigator.userLanguage);
  39. }
  40. lang = fullLang.substr(0,2);
  41. if (lang === 'ja') lang = 'jp';
  42. else if (lang === 'pt') lang = 'pt_BR';
  43. else if (lang === 'ug') lang = 'ug_CN';
  44. else if (lang === 'zh') lang = (fullLang.substr(0,5) === 'zh-TW')? 'zh_TW' : 'zh_CN';
  45. return lang;
  46. })(),
  47. opts = {
  48. cssAutoLoad : ['../vendor/elfinder-themes/material/css/theme-gray.css'],
  49. getFileCallback : function(file, fm) {
  50. if (parent.fredFinderOnChange && (typeof parent.fredFinderOnChange === 'function')) {
  51. parent.fredFinderOnChange(file, fm);
  52. }
  53. },
  54. resizable : false,
  55. width : '100%',
  56. height : '100%',
  57. url : '../endpoints/elfinder.php' + queryString,
  58. customHeaders: {
  59. 'X-Fred-Token': fredToken
  60. },
  61. lang: lang,
  62. uiOptions: {
  63. toolbar: [
  64. ['home', 'back', 'forward', 'up', 'reload'],
  65. ['mkdir', 'upload', 'download'],
  66. ['undo', 'redo'],
  67. ['copy', 'cut', 'paste', 'rm'],
  68. ['duplicate', 'rename', 'edit', 'resize', 'chmod'],
  69. ['selectall', 'selectnone', 'selectinvert'],
  70. ['quicklook', 'info'],
  71. ['search'],
  72. ['view', 'sort']
  73. ]
  74. },
  75. contextmenu : {
  76. navbar : ['open', 'opennew', 'download', '|', 'upload', 'mkdir', '|', 'copy', 'cut', 'paste', 'duplicate', '|', 'rm', '|', 'rename', '|', 'places', 'info', 'chmod', 'netunmount'],
  77. cwd : ['undo', 'redo', '|', 'back', 'up', 'reload', '|', 'upload', 'mkdir', 'paste', '|', 'view', 'sort', 'selectall', 'colwidth', '|', 'places', 'info', 'chmod', 'netunmount', '|', 'fullscreen', '|', 'preference'],
  78. files : ['getfile', '|' ,'open', 'opennew', 'download', 'opendir', 'quicklook', '|', 'upload', 'mkdir', '|', 'copy', 'cut', 'paste', 'duplicate', '|', 'rm', '|', 'rename', 'edit', 'resize', '|', 'selectall', 'selectinvert', '|', 'places', 'info', 'chmod', 'netunmount']
  79. },
  80. },
  81. start = function(elFinder) {
  82. elFinder.prototype.loadCss('//cdnjs.cloudflare.com/ajax/libs/jqueryui/'+uiver+'/themes/smoothness/jquery-ui.css');
  83. $(function() {
  84. if (window.Encoding && Encoding.convert) {
  85. elFinder.prototype._options.rawStringDecoder = function(s) {
  86. return Encoding.convert(s,{to:'UNICODE',type:'string'});
  87. };
  88. }
  89. $('#elfinder').elfinder(opts).elfinder('instance').exec('fullscreen');
  90. });
  91. },
  92. load = function() {
  93. require(
  94. [
  95. 'elfinder',
  96. (lang !== 'en')? 'elfinder.lang' : null
  97. ],
  98. start,
  99. function(error) {
  100. alert(error.message);
  101. }
  102. );
  103. },
  104. ie8 = (typeof window.addEventListener === 'undefined' && typeof document.getElementsByClassName === 'undefined');
  105. require.config({
  106. baseUrl : '../vendor/elfinder/js',
  107. paths : {
  108. 'jquery' : '//cdnjs.cloudflare.com/ajax/libs/jquery/'+(ie8? '1.12.4' : jqver)+'/jquery.min',
  109. 'jquery-ui': '//cdnjs.cloudflare.com/ajax/libs/jqueryui/'+uiver+'/jquery-ui.min',
  110. 'elfinder' : 'elfinder.min',
  111. 'elfinder.lang': [
  112. 'i18n/elfinder.'+lang,
  113. 'i18n/elfinder.fallback'
  114. ]
  115. },
  116. waitSeconds : 10
  117. });
  118. load();
  119. })();