The version of vichan running on lainchan.org
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

128 lines
3.2KB

  1. /*
  2. * options.js - allow users choose board options as they wish
  3. *
  4. * Copyright (c) 2014 Marcin Łabanowski <marcin@6irc.net>
  5. *
  6. * Usage:
  7. * $config['additional_javascript'][] = 'js/jquery.min.js';
  8. * $config['additional_javascript'][] = 'js/options.js';
  9. */
  10. +function(){
  11. var options_button, options_handler, options_background, options_div
  12. , options_close, options_tablist, options_tabs, options_current_tab;
  13. var Options = {};
  14. window.Options = Options;
  15. var first_tab = function() {
  16. for (var i in options_tabs) {
  17. return i;
  18. }
  19. return false;
  20. };
  21. Options.show = function() {
  22. if (!options_current_tab) {
  23. Options.select_tab(first_tab(), true);
  24. }
  25. options_handler.fadeIn();
  26. };
  27. Options.hide = function() {
  28. options_handler.fadeOut();
  29. };
  30. options_tabs = {};
  31. Options.add_tab = function(id, icon, name, content) {
  32. var tab = {};
  33. if (typeof content == "string") {
  34. content = $("<div>"+content+"</div>");
  35. }
  36. tab.id = id;
  37. tab.name = name;
  38. tab.icon = $("<div class='options_tab_icon'><i class='fa fa-"+icon+"'></i><div>"+name+"</div></div>");
  39. tab.content = $("<div class='options_tab'></div>").css("display", "none");
  40. tab.content.appendTo(options_div);
  41. tab.icon.on("click", function() {
  42. Options.select_tab(id);
  43. }).appendTo(options_tablist);
  44. $("<h2>"+name+"</h2>").appendTo(tab.content);
  45. if (content) {
  46. content.appendTo(tab.content);
  47. }
  48. options_tabs[id] = tab;
  49. return tab;
  50. };
  51. Options.get_tab = function(id) {
  52. return options_tabs[id];
  53. };
  54. Options.extend_tab = function(id, content) {
  55. if (typeof content == "string") {
  56. content = $("<div>"+content+"</div>");
  57. }
  58. content.appendTo(options_tabs[id].content);
  59. return options_tabs[id];
  60. };
  61. Options.select_tab = function(id, quick) {
  62. if (options_current_tab) {
  63. if (options_current_tab.id == id) {
  64. return false;
  65. }
  66. options_current_tab.content.fadeOut();
  67. options_current_tab.icon.removeClass("active");
  68. }
  69. var tab = options_tabs[id];
  70. options_current_tab = tab;
  71. options_current_tab.icon.addClass("active");
  72. tab.content[quick? "show" : "fadeIn"]();
  73. return tab;
  74. };
  75. options_handler = $("<div id='options_handler'></div>").css("display", "none");
  76. options_background = $("<div id='options_background'></div>").on("click", Options.hide).appendTo(options_handler);
  77. options_div = $("<div id='options_div'></div>").appendTo(options_handler);
  78. options_close = $("<a id='options_close' href='javascript:void(0)'><i class='fa fa-times'></i></div>")
  79. .on("click", Options.hide).appendTo(options_div);
  80. options_tablist = $("<div id='options_tablist'></div>").appendTo(options_div);
  81. $(function(){
  82. options_button = $("<a href='javascript:void(0)' title='"+_("Options")+"'>["+_("Options")+"]</a>");
  83. if ($(".boardlist.compact-boardlist").length) {
  84. options_button.addClass("cb-item cb-fa").html("<i class='fa fa-gear'></i>");
  85. }
  86. if ($(".boardlist:first").length) {
  87. options_button.css('float', 'right').appendTo($(".boardlist:first"));
  88. }
  89. else {
  90. var optsdiv = $('<div style="text-align: right"></div>');
  91. options_button.appendTo(optsdiv);
  92. optsdiv.prependTo($(document.body));
  93. }
  94. options_button.on("click", Options.show);
  95. options_handler.appendTo($(document.body));
  96. });
  97. }();