PageRenderTime 34ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/web/js.php

https://bitbucket.org/wez/mtrack/
PHP | 147 lines | 125 code | 15 blank | 7 comment | 6 complexity | df9b7b06adcff9a5773bc5e083b6687f MD5 | raw file
Possible License(s): BSD-3-Clause, Apache-2.0
  1. <?php # vim:ts=2:sw=2:et:
  2. /* For licensing and copyright terms, see the file named LICENSE */
  3. include '../inc/common.php';
  4. $age = 3600;
  5. header('Content-Type: text/javascript');
  6. header("Cache-Control: public, max-age=$age, pre-check=$age");
  7. header('Expires: ' . date(DATE_COOKIE, time() + $age));
  8. $scripts = array(
  9. 'excanvas.pack.js',
  10. 'jquery-1.7.2.min.js',
  11. 'jquery-ui-1.8.16.custom.min.js',
  12. 'chosen.jquery.min.js',
  13. 'jquery.flot.min.js',
  14. 'jquery.MultiFile.pack.js',
  15. 'jquery.cookie.js',
  16. 'jquery.tablesorter.js',
  17. 'jquery.tablesorter.pager.js',
  18. 'jquery.metadata.js',
  19. 'jquery.markitup.js',
  20. 'jquery.timeago.js',
  21. 'json2.js',
  22. 'jquery.marcopolo.min.js',
  23. 'jquery.manifest.js',
  24. 'jquery.mjs.nestedSortable.js',
  25. 'underscore-min.js',
  26. 'backbone-min.js',
  27. 'quicksilver.js',
  28. 'models.js',
  29. 'views.js',
  30. 'modernizr.js',
  31. 'bootstrap.js',
  32. 'd3.min.js',
  33. 'd3.layout.min.js',
  34. 'rickshaw.js',
  35. // always last
  36. 'mtrack.js'
  37. );
  38. echo "var ABSWEB = '$ABSWEB';\n";
  39. $gaq_code = MTrackConfig::get('core', 'google_analytics');
  40. if($gaq_code) {
  41. echo "var _gaq_code = '$gaq_code';\n";
  42. }
  43. /* defaults for ticket fields */
  44. $tktdefs = new stdclass;
  45. $tktdefs->classification =
  46. MTrackConfig::get('ticket', 'default.classification');
  47. $tktdefs->severity =
  48. MTrackConfig::get('ticket', 'default.severity');
  49. $tktdefs->priority =
  50. MTrackConfig::get('ticket', 'default.priority');
  51. echo "var mtrack_ticket_defaults = " . json_encode($tktdefs) . ";\n";
  52. echo "var mtrack_wiki_syntax = " .
  53. (MTrackConfig::get('core', 'wikisyntax') == 'markdown' ?
  54. '"markdown"' : '"trac"') . ';';
  55. $pri_map = array();
  56. foreach (MTrackDB::q('select priorityname, value from priorities')
  57. ->fetchAll() as $row) {
  58. $pri_map[$row[0]] = (int)$row[1];
  59. }
  60. echo "var mtrack_priority_map = " . json_encode($pri_map) . ";\n";
  61. $sev_map = array();
  62. foreach (MTrackDB::q('select sevname, ordinal from severities')
  63. ->fetchAll() as $row) {
  64. $sev_map[$row[0]] = (int)$row[1];
  65. }
  66. echo "var mtrack_severity_map = " . json_encode($sev_map) . ";\n";
  67. $resolutions = array();
  68. $R = new MTrackResolution;
  69. $s = new stdclass;
  70. $s->id = '';
  71. $s->label = '';
  72. $resolutions[] = $s;
  73. foreach ($R->enumerate() as $id => $label) {
  74. $s = new stdclass;
  75. $s->id = $id;
  76. $s->label = $label;
  77. $resolutions[] = $s;
  78. }
  79. echo "var mtrack_resolutions = " . json_encode($resolutions) . ";\n";
  80. $states = array();
  81. $R = new MTrackTicketState;
  82. $s = new stdclass;
  83. foreach ($R->enumerate() as $id => $label) {
  84. $s = new stdclass;
  85. $s->id = $id;
  86. $s->label = $label;
  87. $states[] = $s;
  88. }
  89. echo "var mtrack_ticket_states = " . json_encode($states) . ";\n";
  90. $roles = array();
  91. foreach (MTrackConfig::getSection('user_class_roles') as $role => $rights) {
  92. $R = new stdclass;
  93. $R->id = $role;
  94. $R->label = $role;
  95. $roles[] = $R;
  96. }
  97. echo "var mtrack_roles = " . json_encode($roles) . ";\n";
  98. /* build up a list of template wiki pages */
  99. $tree = MTrackWikiItem::get_wiki_tree();
  100. if (isset($tree->Templates)) {
  101. $templates = array_keys(get_object_vars($tree->Templates));
  102. natsort($templates);
  103. } else {
  104. $templates = array();
  105. }
  106. echo "var mtrack_wiki_templates = " . json_encode($templates) . ";\n";
  107. echo "var mtrack_wiki_template_cache = {};\n";
  108. /* Available SCMs */
  109. $repotypes = array();
  110. foreach (MTrackRepo::getAvailableSCMs() as $t => $r) {
  111. $d = $r->getSCMMetaData();
  112. $repotypes[$t] = $d['name'];
  113. }
  114. echo "var mtrack_repotypes = " . json_encode($repotypes) . ";\n";
  115. echo "var mtrack_repotypes_select = " .
  116. json_encode(mtrack_select_box('type', $repotypes, null, true)) . ";\n";
  117. /* "Compile" underscore templates into a blob that we always send down
  118. * with this javascript blob */
  119. $templdir = dirname(__FILE__) . '/js/templates';
  120. $templates = array();
  121. foreach (scandir($templdir) as $name) {
  122. if ($name[0] == '.') continue;
  123. $id = preg_replace('/\.html$/', '', $name);
  124. $id = preg_replace('/[^a-z0-9]+/', '-', $id);
  125. $templates[$id] = file_get_contents("$templdir/$name");
  126. }
  127. echo "var mtrack_underscore_templates = " . json_encode($templates) . ";\n";
  128. foreach ($scripts as $name) {
  129. echo "\n// $name\n";
  130. readfile("js/$name");
  131. echo "\n;\n";
  132. }