admin.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. $(function()
  2. {
  3. var blockTitle = '';
  4. var preValue = '';
  5. var $titleInput;
  6. $(document).on('change', '#blockParams #paramstype', function()
  7. {
  8. $titleInput = $('#blockParams').find('#title');
  9. var title = $titleInput.val();
  10. var value = $(this).find('option:selected').text();
  11. if($blocksList.find('#moduleBlock').val() == 'scrumtest' && $('#paramstype').val() != 'all')
  12. {
  13. $titleInput.val(value);
  14. }
  15. else
  16. {
  17. var lang = config.clientLang;
  18. blockTitle = $blockParams.find('#title').val();
  19. if(lang.indexOf('zh') >= 0)
  20. {
  21. if(blockTitle.indexOf(preValue) >= 0)
  22. {
  23. blockTitle = blockTitle.replace(preValue, value);
  24. }
  25. else
  26. {
  27. if(blockTitle.indexOf(preValue) < 0) blockTitle = value + of + title;;
  28. }
  29. $titleInput.val(blockTitle);
  30. }
  31. else
  32. {
  33. var preIndex = blockTitle.indexOf(of + preValue);
  34. if(preIndex >= 0) blockTitle = blockTitle.substring(0, preIndex);
  35. $titleInput.val(blockTitle + of + value);
  36. }
  37. }
  38. preValue = value;
  39. });
  40. var $form = $('#blockAdminForm');
  41. $form.find('.chosen').chosen();
  42. // Used to dynamically load block list and set parameters.
  43. var $blocksList = $('#blocksList');
  44. var $blockParams = $('#blockParams');
  45. var updateParams = function(data)
  46. {
  47. $blockParams.html(data);
  48. $blockParams.find('.chosen').chosen();
  49. $.zui.ajustModalPosition();
  50. $form.removeClass('loading');
  51. $form.addClass('form-inited');
  52. $blockParams.find('input:first').focus();
  53. if($blockParams.find('#actionLink').size() > 0) $form.attr('action', $blockParams.find('#actionLink').val());
  54. $titleInput = $blockParams.find('#title');
  55. if($titleInput.length && $('#paramstype').length)
  56. {
  57. blockTitle = $titleInput.val();
  58. preValue = $('#paramstype').find('option:selected').text();
  59. var preIndex = blockTitle.indexOf(' - ' + preValue);
  60. if(preIndex >= 0) blockTitle = blockTitle.substring(0, preIndex);
  61. if($blocksList.find('#moduleBlock').val() == 'scrumtest')
  62. {
  63. $titleInput.val(preValue);
  64. }
  65. else
  66. {
  67. var lang = config.clientLang;
  68. if(!title && blockTitle.indexOf(of) < 0) lang.indexOf('zh') >= 0 ? $titleInput.val(preValue + of + blockTitle) : $titleInput.val(blockTitle + of + preValue);
  69. }
  70. }
  71. };
  72. // Get parameters for html and rss.
  73. var getNotSourceParams = function(type, blockID)
  74. {
  75. if (blockID === undefined) blockID = 0;
  76. $blockParams.empty();
  77. $form.removeClass('form-inited');
  78. $.get(createLink('block', 'set', 'id=' + blockID + '&type=' + type), function(data)
  79. {
  80. updateParams(data);
  81. if(type === 'welcome') $blockParams.find('#title').closest('.form-group').hide();
  82. });
  83. };
  84. // Set parameters to get the specified block.
  85. var getBlockParams = function(type, moduleID)
  86. {
  87. $blockParams.empty();
  88. $form.removeClass('form-inited');
  89. if(type == '') return;
  90. $form.addClass('loading');
  91. $.get(createLink('block', 'set', 'id=' + blockID + '&type=' + type + '&source=' + moduleID), updateParams);
  92. };
  93. // Get all available blocks under the specified module.
  94. var getBlocks = function(moduleID)
  95. {
  96. $blocksList.data('module', moduleID).empty();
  97. $form.removeClass('form-inited');
  98. $blockParams.empty();
  99. if(!moduleID) return;
  100. $form.addClass('loading');
  101. var onFinish = function()
  102. {
  103. $form.removeClass('loading');
  104. if($blocksList.find('#moduleBlock').val() != '') getBlockParams($blocksList.find('#moduleBlock').val(), $blocksList.data('module'));
  105. };
  106. if(moduleID.indexOf('hiddenBlock') != -1)
  107. {
  108. getNotSourceParams('html', moduleID.replace('hiddenBlock', ''), onFinish);
  109. return true;
  110. }
  111. if(moduleID == 'html' || moduleID == 'dynamic' || moduleID == 'guide' || moduleID == 'assigntome' || moduleID == 'welcome' || moduleID == 'contribute')
  112. {
  113. getNotSourceParams(moduleID, blockID, onFinish);
  114. return true;
  115. }
  116. $.get(createLink('block', 'main', 'module=' + moduleID + '&id=' + blockID), {mode:'getblocklist'}, function(data)
  117. {
  118. $blocksList.html(data);
  119. $blocksList.find('.chosen').chosen();
  120. onFinish();
  121. $.zui.ajustModalPosition();
  122. });
  123. };
  124. // Refresh parameter list when module selection changes.
  125. $('#modules').on('change', function()
  126. {
  127. getBlocks($(this).val());
  128. });
  129. $blocksList.on('change', '#moduleBlock', function()
  130. {
  131. getBlockParams($(this).val(), $blocksList.data('module'));
  132. });
  133. if(blockID) setTimeout(function(){getBlocks($('#modules').val());}, 200);
  134. if(module) $blocksList.data('module', module);
  135. });