You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
2.2 KiB

6 years ago
6 years ago
6 years ago
6 years ago
  1. /* globals form, ajax, options:true */
  2. var moduleOptions = {}
  3. var prevPage
  4. var optionsFormEl
  5. register_hook('init', function () {
  6. var menu = document.getElementById('menu')
  7. var li = document.createElement('li')
  8. menu.appendChild(li)
  9. var link = document.createElement('a')
  10. link.innerHTML = lang('main:options')
  11. link.href = '#options'
  12. link.onclick = moduleOptions.open
  13. li.appendChild(link)
  14. })
  15. moduleOptions.open = function () {
  16. var def = {
  17. 'debug': {
  18. 'type': 'boolean',
  19. 'name': lang('options:debug_mode'),
  20. 'weight': 10,
  21. 'reloadOnChange': true
  22. }
  23. }
  24. call_hooks('options_form', def)
  25. var optionsForm = new form('options', def)
  26. prevPage = document.getElementById('content').className
  27. document.getElementById('content').className = 'options'
  28. var dom = document.getElementById('contentOptions')
  29. dom.innerHTML = ''
  30. let orig_options = {
  31. debug: false
  32. }
  33. call_hooks('options_orig_data', orig_options)
  34. for (let k in orig_options) {
  35. if (!(k in options)) {
  36. options[k] = orig_options[k]
  37. }
  38. }
  39. optionsForm.set_data(options)
  40. optionsFormEl = document.createElement('form')
  41. optionsFormEl.onsubmit = moduleOptions.submit.bind(this, optionsForm)
  42. dom.appendChild(optionsFormEl)
  43. optionsForm.show(optionsFormEl)
  44. var input = document.createElement('button')
  45. input.innerHTML = lang('save')
  46. optionsFormEl.appendChild(input)
  47. input = document.createElement('button')
  48. input.innerHTML = lang('cancel')
  49. optionsFormEl.appendChild(input)
  50. input.onclick = function () {
  51. document.getElementById('content').className = prevPage
  52. dom.removeChild(optionsFormEl)
  53. return false
  54. }
  55. return false
  56. }
  57. moduleOptions.submit = function (optionsForm) {
  58. var data = optionsForm.get_data()
  59. var reload = false
  60. for (var k in data) {
  61. if (optionsForm.def[k].reloadOnChange && options[k] !== data[k]) {
  62. reload = true
  63. }
  64. }
  65. ajax('options_save', null, data, function (ret) {
  66. let oldOptions = options
  67. options = data
  68. optionsFormEl.parentNode.removeChild(optionsFormEl)
  69. document.getElementById('content').className = prevPage
  70. call_hooks('options_save', data, oldOptions)
  71. if (reload) {
  72. location.reload()
  73. }
  74. })
  75. return false
  76. }
  77. module.exports = moduleOptions