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.

78 lines
1.7 KiB

  1. /* globals form, ajax, options:true, showRootContent */
  2. var moduleOptions = {}
  3. var prevPage
  4. register_hook('init', function () {
  5. var menu = document.getElementById('menu')
  6. var li = document.createElement('li')
  7. menu.appendChild(li)
  8. var link = document.createElement('a')
  9. link.innerHTML = lang('main:options')
  10. link.href = '#options'
  11. link.onclick = moduleOptions.open
  12. li.appendChild(link)
  13. })
  14. moduleOptions.open = function () {
  15. var def = {
  16. 'debug': {
  17. 'type': 'boolean',
  18. 'name': 'Debug mode',
  19. 'weight': 10,
  20. 'reloadOnChange': true
  21. }
  22. }
  23. call_hooks('options_form', def)
  24. var optionsForm = new form('options', def)
  25. prevPage = document.getElementById('content').className
  26. document.getElementById('content').className = 'options'
  27. var dom = document.getElementById('contentOptions')
  28. dom.innerHTML = ''
  29. optionsForm.set_data(options)
  30. var f = document.createElement('form')
  31. f.onsubmit = moduleOptions.submit.bind(this, optionsForm)
  32. dom.appendChild(f)
  33. optionsForm.show(f)
  34. var input = document.createElement('button')
  35. input.innerHTML = lang('save')
  36. f.appendChild(input)
  37. return false
  38. }
  39. moduleOptions.submit = function (optionsForm) {
  40. var data = optionsForm.get_data()
  41. var reload = false
  42. for (var k in data) {
  43. if (optionsForm.def[k].reloadOnChange && options[k] !== data[k]) {
  44. reload = true
  45. }
  46. }
  47. ajax('options_save', null, data, function (ret) {
  48. old_options = options
  49. options = data
  50. document.getElementById('content').className = prevPage
  51. call_hooks('options_save', data, old_options)
  52. if (reload) {
  53. location.reload()
  54. }
  55. })
  56. return false
  57. }
  58. module.exports = moduleOptions