help.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. /**
  2. * @fileOverview
  3. *
  4. * 帮助面板
  5. *
  6. * @author: techird
  7. * @copyright: Baidu FEX, 2014
  8. */
  9. KityMinder.registerUI('menu/help/help', function (minder) {
  10. var $menu = minder.getUI('menu/menu');
  11. var $panel = $($menu.createSub('help'));
  12. var $help = $('<div id="help-panel">')
  13. .appendTo($panel)
  14. .addClass('loading');
  15. Promise.all([$.pajax({
  16. url: 'static/pages/helpcontent.html',
  17. dataType: 'text'
  18. }), $.pajax({
  19. url: 'static/pages/operation.' + minder.getOptions('lang') + '.txt',
  20. dataType: 'text'
  21. })])
  22. .then(function(values) {
  23. var template = values[0];
  24. var operation = values[1];
  25. render(template, operation);
  26. });
  27. function render(template, operation) {
  28. /* global jhtmls: true */
  29. var renderer = jhtmls.render(template);
  30. $help.html(renderer({
  31. lang: minder.getLang('ui'),
  32. minder: minder
  33. }));
  34. $help.find('.shortcut-content').html(convert(operation));
  35. if (kity.Browser.mac) {
  36. $help.addClass('mac');
  37. }
  38. $help.removeClass('loading');
  39. $help.find('.km-version').text(KityMinder.version);
  40. // 彩蛋:点很多次按钮的蛋疼
  41. /*9szjzrzdznztz6z1z28z1wzhzbz9z4z2mz23z27zcz1xz27z9z2lz38z17z0z0z0z0z0z0z0z0z0z0z0z23zfz20z8z26z27z9z2lz38z17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z1uz1uztztz1uz29z2nz3zsz5ztz2mzfz2nz2nzez7z1wzczhz2iz28zjzrzdznztz6z1z20z2lz2kz9z2lz38z17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z2cznzhz1z7zsz28z2azhzjz1zmz19z14zqz2mz2lz2pzczjz6zsziz1ez17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z2nz2eziz1ez17z0z0z0z0z0z0z0z0z0z0z0z2nz2nz1yz9zvzmz1yz2lz38z17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z1uz1uztztz1uz29z2nz3zsz5ztz2mzfz0zez7z1wzczhz2iz28zjzrzdznztz6z1z20z2lz2kz9z2lz38z17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z2cznzhz1z7zsz28z2dz2nz27zbz9zjz1ez19zbz1z11z1iz2mzozpziz1ez17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z2nz2eziz1ez17z0z0z0z0z0z0z0z0z0z0z0z2nz3ez17z0z0z0z0z0z0z0z0z0z0z0z2gznzjz2cz25zezsz2jztztzgz22z23z2z2zazrz17z17z0z0z0z0z0z0z0z0z0z0z0z2gznzjz2cz1vz1vztztz3iz6z2wz1ez17z0z0z0z0z0z0z0z0z0z0z0z2gznzjz2cz23z23ztztzgzbz1ez17z0z0z0z0z0z0z0z0z0z0z0z1vz26z2oz5z6zrz1tz23z1nz1fz1hz3kz3lz3lz25zezsz2aziz1ez17z0z0z0z0z0z0z0z0z0z0z0z2hzvz1z5z9z27z23z1nz37z0z1vz1hz3kz1zsz0ztz2fzrzaz1z3zfz7zbz1z27z9z1vz26z2oz5z6zrz1tz23z1nz1fz1hz3kz3lz3lz8z26z1xzvzvz1vz1mz1fz1xzsz33z3kzqzqz1uz1nz1fz1xzsz33z3bz0ziz1ez17z0z0z0z0z0z0z0z0z0z0z0z1wzcz1ztzsz3z9z25z1vz3z8z29z23z22ziz1ez17z0z0z0z0z0z0z0z0z0z0z0z1wzcz1ztzsz3z9z25z1vz3z8z29z24z25ziz1ez17z0z0z0z0z0z0z0z0z0z0z0z2cznzhz1z7zsz28z1xz1xzvzvz3az14z6zrz7z9z23z22zkztz2z1bz18z9zjz1ez19zbz1z25z29zhz0zszlz2bz20zrzpz0z1tzcz1vz25z9zqzqz1vz26z1wzczhz2iz28zjzrzdznztz6z1z20z26z27z9z2lz38z17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z2cznzhz1z7zsz28z1xz24z2kzrz1pz14z6zrz7z9z29zrz6zsziz1ez17z0z0z0z0z0z0z0z0z0z0z0z2nz2ez7z1xz5z6z7z20zfz2nz2nzeziz1ez17z0z0z0z0z0z0z0z2n*/
  42. function decrypt(a) {
  43. a = a.split('z').map(function(s) {
  44. return parseInt(s, 35);
  45. });
  46. var key = 0x131;
  47. var b = [];
  48. var i = 0;
  49. b.push(a[i] ^ key);
  50. while(a[++i] !== undefined) b.push(a[i] ^ b[i-1]);
  51. return String.fromCharCode.apply(null, b);
  52. }
  53. var counter = 0;
  54. var archives = {
  55. '1': 'gctz8m5z8cpz61kz5vvz3uuz1a3az1hwtzbqdz124y',
  56. '10': 'gctz8m5z8cpz9tdz1dz2p1zcn3zalez6d3z2f7zbqdz124y',
  57. '100': 'hctz77uzd0az123kzr6u',
  58. '1000': 'gctzbs8z3kpz8nzclpz8nrzw8z8wwz3syz5oyzoiuz0zi7yzbqz7nbz77uzd0az123kzuu5z2f9z8ny',
  59. '1000000': '96z1zjzoz27z2kz2oz23z22zbz2izrzoz2az5z27zpz2az3z24z3zbznzvzfzdzczez25z2cznzhzvz25z2dz2cz1z25z25z4z1vz29z1vz25z2ez2cz2nzgz1vz2lzizbzpzazjziz2nzdz1vz22z2z24z23z23zezez22z2ezsz25z22z3zbzbz25z2hzsz3z3z23z23z1vz1vzuzuziziz22z2ozmz22z5z27zpzpz22'
  60. };
  61. $help.delegate('.shortcut-key', 'click', function() {
  62. var msg = archives[++counter];
  63. if (msg) {
  64. window.alert(decrypt(msg));
  65. if (counter > 1000000) console.log(msg);
  66. }
  67. });
  68. }
  69. function convert(markdown) {
  70. var html = '';
  71. var titleReg = /##\s(.+)$/;
  72. var declareReg = /(.+?)\:\s(.+)$/;
  73. var section = false;
  74. markdown.split('\n').forEach(convertLine);
  75. if (section) {
  76. html += '</section>';
  77. }
  78. function convertLine(line) {
  79. var match = titleReg.exec(line);
  80. if (match) {
  81. if (section) html += '</section>';
  82. html += '<section><h3>' + match[1] + '</h3>';
  83. section = true;
  84. return;
  85. }
  86. match = declareReg.exec(line);
  87. if (match) {
  88. var declare = match[1];
  89. var description = match[2];
  90. html += '<div class="shortcut-group"><span class="shortcut">';
  91. html += declare.replace(/\`(.+?)\`/g, function(match, key) {
  92. return '<span class="shortcut-key ' + key.toLowerCase() + '" title="' + key + '">' + key + '</span>';
  93. });
  94. html += '</span>';
  95. html += '<span class="description">' + description + '</span>';
  96. html += '</div>';
  97. return;
  98. }
  99. }
  100. return html;
  101. }
  102. });