sunspot_solr 2.2.2 → 2.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (256) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sunspot-solr +2 -6
  3. data/lib/sunspot/solr/server.rb +2 -3
  4. data/solr/README.txt +181 -181
  5. data/solr/bin/post +29 -19
  6. data/solr/bin/solr +247 -428
  7. data/solr/bin/solr.cmd +102 -256
  8. data/solr/bin/solr.in.cmd +15 -7
  9. data/solr/bin/solr.in.sh +26 -12
  10. data/solr/server/README.txt +110 -113
  11. data/solr/server/contexts/solr-jetty-context.xml +8 -8
  12. data/solr/server/etc/jetty-http.xml +47 -0
  13. data/solr/server/etc/jetty-https-ssl.xml +175 -159
  14. data/solr/server/etc/jetty-https.xml +53 -0
  15. data/solr/server/etc/jetty-ssl.xml +46 -0
  16. data/solr/server/etc/jetty.xml +189 -167
  17. data/solr/server/etc/webdefault.xml +527 -527
  18. data/solr/server/lib/javax.servlet-api-3.1.0.jar +0 -0
  19. data/solr/server/lib/jetty-continuation-9.2.11.v20150529.jar +0 -0
  20. data/solr/server/lib/jetty-deploy-9.2.11.v20150529.jar +0 -0
  21. data/solr/server/lib/jetty-http-9.2.11.v20150529.jar +0 -0
  22. data/solr/server/lib/jetty-io-9.2.11.v20150529.jar +0 -0
  23. data/solr/server/lib/jetty-jmx-9.2.11.v20150529.jar +0 -0
  24. data/solr/server/lib/jetty-rewrite-9.2.11.v20150529.jar +0 -0
  25. data/solr/server/lib/jetty-security-9.2.11.v20150529.jar +0 -0
  26. data/solr/server/lib/jetty-server-9.2.11.v20150529.jar +0 -0
  27. data/solr/server/lib/jetty-servlet-9.2.11.v20150529.jar +0 -0
  28. data/solr/server/lib/jetty-servlets-9.2.11.v20150529.jar +0 -0
  29. data/solr/server/lib/jetty-util-9.2.11.v20150529.jar +0 -0
  30. data/solr/server/lib/jetty-webapp-9.2.11.v20150529.jar +0 -0
  31. data/solr/server/lib/jetty-xml-9.2.11.v20150529.jar +0 -0
  32. data/solr/server/modules/http.mod +9 -0
  33. data/solr/server/modules/https.mod +9 -0
  34. data/solr/server/modules/server.mod +11 -0
  35. data/solr/server/modules/ssl.mod +9 -0
  36. data/solr/server/resources/jetty-logging.properties +1 -0
  37. data/solr/server/resources/log4j.properties +24 -24
  38. data/solr/server/solr-webapp/webapp/WEB-INF/lib/commons-exec-1.3.jar +0 -0
  39. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{hadoop-annotations-2.3.0.jar → hadoop-annotations-2.6.0.jar} +0 -0
  40. data/solr/server/solr-webapp/webapp/WEB-INF/lib/hadoop-auth-2.6.0.jar +0 -0
  41. data/solr/server/solr-webapp/webapp/WEB-INF/lib/hadoop-common-2.6.0.jar +0 -0
  42. data/solr/server/solr-webapp/webapp/WEB-INF/lib/hadoop-hdfs-2.6.0.jar +0 -0
  43. data/solr/server/solr-webapp/webapp/WEB-INF/lib/htrace-core-3.0.4.jar +0 -0
  44. data/solr/server/solr-webapp/webapp/WEB-INF/lib/httpclient-4.4.1.jar +0 -0
  45. data/solr/server/solr-webapp/webapp/WEB-INF/lib/httpcore-4.4.1.jar +0 -0
  46. data/solr/server/solr-webapp/webapp/WEB-INF/lib/httpmime-4.4.1.jar +0 -0
  47. data/solr/server/solr-webapp/webapp/WEB-INF/lib/jackson-core-2.5.4.jar +0 -0
  48. data/solr/server/solr-webapp/webapp/WEB-INF/lib/jackson-dataformat-smile-2.5.4.jar +0 -0
  49. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{lucene-analyzers-common-5.0.0.jar → lucene-analyzers-common-5.3.1.jar} +0 -0
  50. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{lucene-analyzers-kuromoji-5.0.0.jar → lucene-analyzers-kuromoji-5.3.1.jar} +0 -0
  51. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{lucene-analyzers-phonetic-5.0.0.jar → lucene-analyzers-phonetic-5.3.1.jar} +0 -0
  52. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-backward-codecs-5.3.1.jar +0 -0
  53. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-codecs-5.3.1.jar +0 -0
  54. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-core-5.3.1.jar +0 -0
  55. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{lucene-expressions-5.0.0.jar → lucene-expressions-5.3.1.jar} +0 -0
  56. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{lucene-grouping-5.0.0.jar → lucene-grouping-5.3.1.jar} +0 -0
  57. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-highlighter-5.3.1.jar +0 -0
  58. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-join-5.3.1.jar +0 -0
  59. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-memory-5.3.1.jar +0 -0
  60. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-misc-5.3.1.jar +0 -0
  61. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-queries-5.3.1.jar +0 -0
  62. data/solr/server/solr-webapp/webapp/WEB-INF/lib/{lucene-queryparser-5.0.0.jar → lucene-queryparser-5.3.1.jar} +0 -0
  63. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-sandbox-5.3.1.jar +0 -0
  64. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-spatial-5.3.1.jar +0 -0
  65. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-suggest-5.3.1.jar +0 -0
  66. data/solr/server/solr-webapp/webapp/WEB-INF/lib/org.restlet-2.3.0.jar +0 -0
  67. data/solr/server/solr-webapp/webapp/WEB-INF/lib/org.restlet.ext.servlet-2.3.0.jar +0 -0
  68. data/solr/server/solr-webapp/webapp/WEB-INF/lib/solr-core-5.3.1.jar +0 -0
  69. data/solr/server/solr-webapp/webapp/WEB-INF/lib/solr-solrj-5.3.1.jar +0 -0
  70. data/solr/server/solr-webapp/webapp/WEB-INF/lib/t-digest-3.1.jar +0 -0
  71. data/solr/server/solr-webapp/webapp/WEB-INF/web.xml +169 -181
  72. data/solr/server/solr-webapp/webapp/WEB-INF/weblogic.xml +28 -28
  73. data/solr/server/solr-webapp/webapp/admin.html +164 -163
  74. data/solr/server/solr-webapp/webapp/css/angular/analysis.css +304 -0
  75. data/solr/server/solr-webapp/webapp/css/angular/chosen.css +465 -0
  76. data/solr/server/solr-webapp/webapp/css/angular/cloud.css +398 -0
  77. data/solr/server/solr-webapp/webapp/css/angular/common.css +724 -0
  78. data/solr/server/solr-webapp/webapp/css/angular/cores.css +233 -0
  79. data/solr/server/solr-webapp/webapp/css/angular/dataimport.css +370 -0
  80. data/solr/server/solr-webapp/webapp/css/angular/documents.css +179 -0
  81. data/solr/server/solr-webapp/webapp/css/angular/files.css +53 -0
  82. data/solr/server/solr-webapp/webapp/css/angular/index.css +206 -0
  83. data/solr/server/solr-webapp/webapp/css/angular/logging.css +376 -0
  84. data/solr/server/solr-webapp/webapp/css/angular/menu.css +321 -0
  85. data/solr/server/solr-webapp/webapp/css/angular/plugins.css +212 -0
  86. data/solr/server/solr-webapp/webapp/css/angular/query.css +162 -0
  87. data/solr/server/solr-webapp/webapp/css/angular/replication.css +500 -0
  88. data/solr/server/solr-webapp/webapp/css/angular/schema-browser.css +567 -0
  89. data/solr/server/solr-webapp/webapp/css/angular/segments.css +173 -0
  90. data/solr/server/solr-webapp/webapp/css/angular/threads.css +161 -0
  91. data/solr/server/solr-webapp/webapp/css/chosen.css +421 -421
  92. data/solr/server/solr-webapp/webapp/css/styles/analysis.css +311 -311
  93. data/solr/server/solr-webapp/webapp/css/styles/cloud.css +410 -410
  94. data/solr/server/solr-webapp/webapp/css/styles/common.css +701 -701
  95. data/solr/server/solr-webapp/webapp/css/styles/cores.css +244 -244
  96. data/solr/server/solr-webapp/webapp/css/styles/dashboard.css +155 -155
  97. data/solr/server/solr-webapp/webapp/css/styles/dataimport.css +403 -403
  98. data/solr/server/solr-webapp/webapp/css/styles/documents.css +197 -197
  99. data/solr/server/solr-webapp/webapp/css/styles/files.css +54 -54
  100. data/solr/server/solr-webapp/webapp/css/styles/index.css +207 -207
  101. data/solr/server/solr-webapp/webapp/css/styles/java-properties.css +52 -52
  102. data/solr/server/solr-webapp/webapp/css/styles/logging.css +391 -391
  103. data/solr/server/solr-webapp/webapp/css/styles/menu.css +329 -328
  104. data/solr/server/solr-webapp/webapp/css/styles/plugins.css +195 -195
  105. data/solr/server/solr-webapp/webapp/css/styles/query.css +173 -173
  106. data/solr/server/solr-webapp/webapp/css/styles/replication.css +515 -515
  107. data/solr/server/solr-webapp/webapp/css/styles/schema-browser.css +578 -578
  108. data/solr/server/solr-webapp/webapp/css/styles/segments.css +145 -0
  109. data/solr/server/solr-webapp/webapp/css/styles/threads.css +172 -172
  110. data/solr/server/solr-webapp/webapp/img/chosen-sprite-2x.png +0 -0
  111. data/solr/server/solr-webapp/webapp/img/filetypes/README +27 -27
  112. data/solr/server/solr-webapp/webapp/img/solr.svg +39 -39
  113. data/solr/server/solr-webapp/webapp/index.html +208 -0
  114. data/solr/server/solr-webapp/webapp/js/angular/app.js +713 -0
  115. data/solr/server/solr-webapp/webapp/js/angular/controllers/analysis.js +199 -0
  116. data/solr/server/solr-webapp/webapp/js/angular/controllers/cloud.js +528 -0
  117. data/solr/server/solr-webapp/webapp/js/angular/controllers/core-overview.js +225 -0
  118. data/solr/server/solr-webapp/webapp/js/angular/controllers/cores.js +465 -0
  119. data/solr/server/solr-webapp/webapp/js/angular/controllers/dataimport.js +284 -0
  120. data/solr/server/solr-webapp/webapp/js/angular/controllers/documents.js +139 -0
  121. data/solr/server/solr-webapp/webapp/js/angular/controllers/files.js +92 -0
  122. data/solr/server/solr-webapp/webapp/js/angular/controllers/index.js +95 -0
  123. data/solr/server/solr-webapp/webapp/js/angular/controllers/java-properties.js +45 -0
  124. data/solr/server/solr-webapp/webapp/js/angular/controllers/logging.js +146 -0
  125. data/solr/server/solr-webapp/webapp/js/angular/controllers/plugins.js +166 -0
  126. data/solr/server/solr-webapp/webapp/js/angular/controllers/query.js +99 -0
  127. data/solr/server/solr-webapp/webapp/js/angular/controllers/replication.js +227 -0
  128. data/solr/server/solr-webapp/webapp/js/angular/controllers/schema-browser.js +432 -0
  129. data/solr/server/solr-webapp/webapp/js/angular/controllers/segments.js +94 -0
  130. data/solr/server/solr-webapp/webapp/js/angular/controllers/threads.js +51 -0
  131. data/solr/server/solr-webapp/webapp/js/angular/services.js +214 -0
  132. data/solr/server/solr-webapp/webapp/js/lib/ZeroClipboard.js +342 -342
  133. data/solr/server/solr-webapp/webapp/js/lib/chosen.js +982 -982
  134. data/solr/server/solr-webapp/webapp/js/lib/console.js +29 -29
  135. data/solr/server/solr-webapp/webapp/js/lib/d3.js +9373 -9373
  136. data/solr/server/solr-webapp/webapp/js/lib/highlight.js +31 -31
  137. data/solr/server/solr-webapp/webapp/js/lib/jquery-1.7.2.min.js +30 -30
  138. data/solr/server/solr-webapp/webapp/js/lib/jquery.ajaxfileupload.js +184 -184
  139. data/solr/server/solr-webapp/webapp/js/lib/jquery.blockUI.js +523 -523
  140. data/solr/server/solr-webapp/webapp/js/lib/jquery.cookie.js +71 -71
  141. data/solr/server/solr-webapp/webapp/js/lib/jquery.form.js +806 -806
  142. data/solr/server/solr-webapp/webapp/js/lib/jquery.jstree.js +3534 -3534
  143. data/solr/server/solr-webapp/webapp/js/lib/jquery.sammy.js +1863 -1863
  144. data/solr/server/solr-webapp/webapp/js/lib/jquery.timeago.js +189 -189
  145. data/solr/server/solr-webapp/webapp/js/lib/linker.js +48 -48
  146. data/solr/server/solr-webapp/webapp/js/lib/naturalSort.js +82 -0
  147. data/solr/server/solr-webapp/webapp/js/lib/order.js +216 -216
  148. data/solr/server/solr-webapp/webapp/js/main.js +60 -58
  149. data/solr/server/solr-webapp/webapp/js/require.js +11349 -11349
  150. data/solr/server/solr-webapp/webapp/js/scripts/analysis.js +545 -545
  151. data/solr/server/solr-webapp/webapp/js/scripts/app.js +680 -679
  152. data/solr/server/solr-webapp/webapp/js/scripts/cloud.js +877 -877
  153. data/solr/server/solr-webapp/webapp/js/scripts/cores.js +719 -719
  154. data/solr/server/solr-webapp/webapp/js/scripts/dashboard.js +562 -562
  155. data/solr/server/solr-webapp/webapp/js/scripts/dataimport.js +812 -812
  156. data/solr/server/solr-webapp/webapp/js/scripts/documents.js +370 -370
  157. data/solr/server/solr-webapp/webapp/js/scripts/files.js +265 -265
  158. data/solr/server/solr-webapp/webapp/js/scripts/index.js +340 -340
  159. data/solr/server/solr-webapp/webapp/js/scripts/java-properties.js +106 -106
  160. data/solr/server/solr-webapp/webapp/js/scripts/logging.js +578 -576
  161. data/solr/server/solr-webapp/webapp/js/scripts/ping.js +72 -72
  162. data/solr/server/solr-webapp/webapp/js/scripts/plugins.js +462 -462
  163. data/solr/server/solr-webapp/webapp/js/scripts/query.js +229 -229
  164. data/solr/server/solr-webapp/webapp/js/scripts/replication.js +527 -527
  165. data/solr/server/solr-webapp/webapp/js/scripts/schema-browser.js +1229 -1229
  166. data/solr/server/solr-webapp/webapp/js/scripts/segments.js +206 -0
  167. data/solr/server/solr-webapp/webapp/js/scripts/threads.js +158 -158
  168. data/solr/server/solr-webapp/webapp/libs/angular-chosen.js +139 -0
  169. data/solr/server/solr-webapp/webapp/libs/angular-cookies.js +229 -0
  170. data/solr/server/solr-webapp/webapp/libs/angular-cookies.min.js +31 -0
  171. data/solr/server/solr-webapp/webapp/libs/angular-resource.min.js +36 -0
  172. data/solr/server/solr-webapp/webapp/libs/angular-route.js +1018 -0
  173. data/solr/server/solr-webapp/webapp/libs/angular-route.min.js +38 -0
  174. data/solr/server/solr-webapp/webapp/libs/angular-sanitize.js +703 -0
  175. data/solr/server/solr-webapp/webapp/libs/angular-sanitize.min.js +39 -0
  176. data/solr/server/solr-webapp/webapp/libs/angular.js +26093 -0
  177. data/solr/server/solr-webapp/webapp/libs/angular.min.js +273 -0
  178. data/solr/server/solr-webapp/webapp/libs/chosen.jquery.js +1194 -0
  179. data/solr/server/solr-webapp/webapp/libs/chosen.jquery.min.js +30 -0
  180. data/solr/server/solr-webapp/webapp/libs/d3.js +9373 -0
  181. data/solr/server/solr-webapp/webapp/libs/highlight.js +31 -0
  182. data/solr/server/solr-webapp/webapp/libs/jquery-2.1.3.min.js +29 -0
  183. data/solr/server/solr-webapp/webapp/libs/jquery.jstree.js +3534 -0
  184. data/solr/server/solr-webapp/webapp/libs/ngtimeago.js +102 -0
  185. data/solr/server/solr-webapp/webapp/partials/analysis.html +128 -0
  186. data/solr/server/solr-webapp/webapp/partials/cloud.html +104 -0
  187. data/solr/server/solr-webapp/webapp/partials/core_overview.html +227 -0
  188. data/solr/server/solr-webapp/webapp/partials/cores.html +231 -0
  189. data/solr/server/solr-webapp/webapp/partials/dataimport.html +209 -0
  190. data/solr/server/solr-webapp/webapp/partials/documents.html +118 -0
  191. data/solr/server/solr-webapp/webapp/partials/files.html +47 -0
  192. data/solr/server/solr-webapp/webapp/partials/index.html +261 -0
  193. data/solr/server/solr-webapp/webapp/partials/java-properties.html +27 -0
  194. data/solr/server/solr-webapp/webapp/partials/logging-levels.html +56 -0
  195. data/solr/server/solr-webapp/webapp/partials/logging.html +56 -0
  196. data/solr/server/solr-webapp/webapp/partials/plugins.html +72 -0
  197. data/solr/server/solr-webapp/webapp/partials/query.html +356 -0
  198. data/solr/server/solr-webapp/webapp/partials/replication.html +239 -0
  199. data/solr/server/solr-webapp/webapp/partials/schema-browser.html +206 -0
  200. data/solr/server/solr-webapp/webapp/partials/segments.html +99 -0
  201. data/solr/server/solr-webapp/webapp/partials/threads.html +65 -0
  202. data/solr/server/solr-webapp/webapp/tpl/analysis.html +83 -83
  203. data/solr/server/solr-webapp/webapp/tpl/cloud.html +87 -87
  204. data/solr/server/solr-webapp/webapp/tpl/cores.html +226 -226
  205. data/solr/server/solr-webapp/webapp/tpl/dashboard.html +201 -201
  206. data/solr/server/solr-webapp/webapp/tpl/dataimport.html +183 -183
  207. data/solr/server/solr-webapp/webapp/tpl/documents.html +107 -107
  208. data/solr/server/solr-webapp/webapp/tpl/files.html +44 -44
  209. data/solr/server/solr-webapp/webapp/tpl/index.html +250 -250
  210. data/solr/server/solr-webapp/webapp/tpl/logging.html +23 -23
  211. data/solr/server/solr-webapp/webapp/tpl/plugins.html +39 -39
  212. data/solr/server/solr-webapp/webapp/tpl/query.html +361 -361
  213. data/solr/server/solr-webapp/webapp/tpl/replication.html +216 -216
  214. data/solr/server/solr-webapp/webapp/tpl/schema-browser.html +192 -192
  215. data/solr/server/solr-webapp/webapp/tpl/segments.html +49 -0
  216. data/solr/server/solr-webapp/webapp/tpl/threads.html +56 -56
  217. data/solr/server/solr/README.txt +77 -77
  218. data/solr/server/solr/solr.xml +51 -51
  219. data/solr/server/solr/zoo.cfg +17 -17
  220. data/solr/server/start.jar +0 -0
  221. data/spec/server_spec.rb +3 -8
  222. metadata +132 -43
  223. data/solr/server/lib/jetty-continuation-8.1.10.v20130312.jar +0 -0
  224. data/solr/server/lib/jetty-deploy-8.1.10.v20130312.jar +0 -0
  225. data/solr/server/lib/jetty-http-8.1.10.v20130312.jar +0 -0
  226. data/solr/server/lib/jetty-io-8.1.10.v20130312.jar +0 -0
  227. data/solr/server/lib/jetty-jmx-8.1.10.v20130312.jar +0 -0
  228. data/solr/server/lib/jetty-security-8.1.10.v20130312.jar +0 -0
  229. data/solr/server/lib/jetty-server-8.1.10.v20130312.jar +0 -0
  230. data/solr/server/lib/jetty-servlet-8.1.10.v20130312.jar +0 -0
  231. data/solr/server/lib/jetty-util-8.1.10.v20130312.jar +0 -0
  232. data/solr/server/lib/jetty-webapp-8.1.10.v20130312.jar +0 -0
  233. data/solr/server/lib/jetty-xml-8.1.10.v20130312.jar +0 -0
  234. data/solr/server/lib/servlet-api-3.0.jar +0 -0
  235. data/solr/server/solr-webapp/webapp/.gitignore +0 -1
  236. data/solr/server/solr-webapp/webapp/WEB-INF/lib/hadoop-auth-2.3.0.jar +0 -0
  237. data/solr/server/solr-webapp/webapp/WEB-INF/lib/hadoop-common-2.3.0.jar +0 -0
  238. data/solr/server/solr-webapp/webapp/WEB-INF/lib/hadoop-hdfs-2.3.0.jar +0 -0
  239. data/solr/server/solr-webapp/webapp/WEB-INF/lib/httpclient-4.3.1.jar +0 -0
  240. data/solr/server/solr-webapp/webapp/WEB-INF/lib/httpcore-4.3.jar +0 -0
  241. data/solr/server/solr-webapp/webapp/WEB-INF/lib/httpmime-4.3.1.jar +0 -0
  242. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-backward-codecs-5.0.0.jar +0 -0
  243. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-codecs-5.0.0.jar +0 -0
  244. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-core-5.0.0.jar +0 -0
  245. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-highlighter-5.0.0.jar +0 -0
  246. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-join-5.0.0.jar +0 -0
  247. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-memory-5.0.0.jar +0 -0
  248. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-misc-5.0.0.jar +0 -0
  249. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-queries-5.0.0.jar +0 -0
  250. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-spatial-5.0.0.jar +0 -0
  251. data/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-suggest-5.0.0.jar +0 -0
  252. data/solr/server/solr-webapp/webapp/WEB-INF/lib/org.restlet-2.1.1.jar +0 -0
  253. data/solr/server/solr-webapp/webapp/WEB-INF/lib/org.restlet.ext.servlet-2.1.1.jar +0 -0
  254. data/solr/server/solr-webapp/webapp/WEB-INF/lib/solr-core-5.0.0.jar +0 -0
  255. data/solr/server/solr-webapp/webapp/WEB-INF/lib/solr-solrj-5.0.0.jar +0 -0
  256. data/solr/server/webapps/solr.war +0 -0
@@ -1,545 +1,545 @@
1
- /*
2
- Licensed to the Apache Software Foundation (ASF) under one or more
3
- contributor license agreements. See the NOTICE file distributed with
4
- this work for additional information regarding copyright ownership.
5
- The ASF licenses this file to You under the Apache License, Version 2.0
6
- (the "License"); you may not use this file except in compliance with
7
- the License. You may obtain a copy of the License at
8
-
9
- http://www.apache.org/licenses/LICENSE-2.0
10
-
11
- Unless required by applicable law or agreed to in writing, software
12
- distributed under the License is distributed on an "AS IS" BASIS,
13
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- See the License for the specific language governing permissions and
15
- limitations under the License.
16
- */
17
-
18
- // #/:core/analysis
19
- sammy.get
20
- (
21
- new RegExp( app.core_regex_base + '\\/(analysis)$' ),
22
- function( context )
23
- {
24
- var active_core = this.active_core;
25
- var core_basepath = active_core.attr( 'data-basepath' );
26
- var content_element = $( '#content' );
27
-
28
- $.get
29
- (
30
- 'tpl/analysis.html',
31
- function( template )
32
- {
33
- content_element
34
- .html( template );
35
-
36
- var analysis_element = $( '#analysis', content_element );
37
- var analysis_form = $( 'form', analysis_element );
38
- var analysis_result = $( '#analysis-result', analysis_element );
39
- analysis_result.hide();
40
-
41
- var verbose_link = $( '.verbose_output a', analysis_element );
42
-
43
- var type_or_name = $( '#type_or_name', analysis_form );
44
- var schema_browser_element = $( '#tor_schema' );
45
- var schema_browser_path = app.core_menu.find( '.schema-browser a' ).attr( 'href' );
46
- var schema_browser_map = { 'fieldname' : 'field', 'fieldtype' : 'type' };
47
-
48
- type_or_name
49
- .die( 'change' )
50
- .live
51
- (
52
- 'change',
53
- function( event )
54
- {
55
- var info = $( this ).val().split( '=' );
56
-
57
- schema_browser_element
58
- .attr( 'href', schema_browser_path + '?' + schema_browser_map[info[0]] + '=' + info[1] );
59
- }
60
- );
61
-
62
- $.ajax
63
- (
64
- {
65
- url : core_basepath + '/admin/luke?wt=json&show=schema',
66
- dataType : 'json',
67
- context : type_or_name,
68
- beforeSend : function( xhr, settings )
69
- {
70
- this
71
- .html( '<option value="">Loading ... </option>' )
72
- .addClass( 'loader' );
73
- },
74
- success : function( response, text_status, xhr )
75
- {
76
- var content = '';
77
-
78
- var fields = [];
79
- for( var field_name in response.schema.fields )
80
- {
81
- fields.push
82
- (
83
- '<option value="fieldname=' + field_name + '">' + field_name + '</option>'
84
- );
85
- }
86
- if( 0 !== fields.length )
87
- {
88
- content += '<optgroup label="Fields">' + "\n";
89
- content += fields.sort().join( "\n" ) + "\n";
90
- content += '</optgroup>' + "\n";
91
- }
92
-
93
- var types = [];
94
- for( var type_name in response.schema.types )
95
- {
96
- types.push
97
- (
98
- '<option value="fieldtype=' + type_name + '">' + type_name + '</option>'
99
- );
100
- }
101
- if( 0 !== types.length )
102
- {
103
- content += '<optgroup label="Types">' + "\n";
104
- content += types.sort().join( "\n" ) + "\n";
105
- content += '</optgroup>' + "\n";
106
- }
107
-
108
- this
109
- .html( content );
110
-
111
- var defaultSearchField = 'fieldname\=' + ( context.params['analysis.fieldname'] || response.schema.defaultSearchField );
112
-
113
- if( context.params['analysis.fieldtype'] )
114
- {
115
- defaultSearchField = 'fieldtype\=' + context.params['analysis.fieldtype'];
116
- }
117
-
118
- $( 'option[value="' + defaultSearchField + '"]', this )
119
- .attr( 'selected', 'selected' );
120
-
121
- this
122
- .chosen()
123
- .trigger( 'change' );
124
-
125
- var fields = 0;
126
- for( var key in context.params )
127
- {
128
- if( 'string' === typeof context.params[key] && 0 !== context.params[key].length )
129
- {
130
- fields++;
131
- $( '[name="' + key + '"]', analysis_form )
132
- .val( context.params[key] );
133
- }
134
- }
135
-
136
- if( 'undefined' !== typeof context.params.verbose_output )
137
- {
138
- verbose_link.trigger( 'toggle', !!context.params.verbose_output.match( /^(1|true)$/ ) );
139
- }
140
-
141
- if( 0 !== fields )
142
- {
143
- analysis_form
144
- .trigger( 'execute' );
145
- }
146
- },
147
- error : function( xhr, text_status, error_thrown)
148
- {
149
- },
150
- complete : function( xhr, text_status )
151
- {
152
- this
153
- .removeClass( 'loader' );
154
- }
155
- }
156
- );
157
-
158
- $( '.analysis-error .head a', analysis_element )
159
- .die( 'click' )
160
- .live
161
- (
162
- 'click',
163
- function( event )
164
- {
165
- $( this ).parents( '.analysis-error' )
166
- .toggleClass( 'expanded' );
167
- }
168
- );
169
-
170
- var check_empty_spacer = function()
171
- {
172
- var spacer_holder = $( 'td.part.data.spacer .holder', analysis_result );
173
-
174
- if( 0 === spacer_holder.size() )
175
- {
176
- return false;
177
- }
178
-
179
- var verbose_output = analysis_result.hasClass( 'verbose_output' );
180
-
181
- spacer_holder
182
- .each
183
- (
184
- function( index, element )
185
- {
186
- element = $( element );
187
-
188
- if( verbose_output )
189
- {
190
- var cell = element.parent();
191
- element.height( cell.height() );
192
- }
193
- else
194
- {
195
- element.removeAttr( 'style' );
196
- }
197
- }
198
- );
199
- }
200
-
201
- verbose_link
202
- .die( 'toggle' )
203
- .live
204
- (
205
- 'toggle',
206
- function( event, state )
207
- {
208
- $( this ).parent()
209
- .toggleClass( 'active', state );
210
-
211
- analysis_result
212
- .toggleClass( 'verbose_output', state );
213
-
214
- check_empty_spacer();
215
- }
216
- )
217
- .die( 'click' )
218
- .live
219
- (
220
- 'click',
221
- function( event )
222
- {
223
- $( this ).parent()
224
- .toggleClass( 'active' );
225
-
226
- analysis_form.trigger( 'submit' );
227
- }
228
- );
229
-
230
- var button = $( 'button', analysis_form )
231
-
232
- var compute_analysis_params = function()
233
- {
234
- var params = analysis_form.formToArray();
235
-
236
- var type_or_name = $( '#type_or_name', analysis_form ).val().split( '=' );
237
- params.push( { name: 'analysis.' + type_or_name[0], value: type_or_name[1] } );
238
- params.push( { name: 'verbose_output', value: $( '.verbose_output', analysis_element ).hasClass( 'active' ) ? 1 : 0 } );
239
-
240
- return params;
241
- }
242
-
243
- analysis_form
244
- .die( 'submit' )
245
- .live
246
- (
247
- 'submit',
248
- function( event )
249
- {
250
- var params = $.param( compute_analysis_params() )
251
- .replace( /[\w\.]+=\+*(&)/g, '$1' ) // remove empty parameters
252
- .replace( /(&)+/, '$1' ) // reduce multiple ampersands
253
- .replace( /^&/, '' ) // remove leading ampersand
254
- .replace( /\+/g, '%20' ); // replace plus-signs with encoded whitespaces
255
-
256
- context.redirect( context.path.split( '?' ).shift() + '?' + params );
257
- return false;
258
- }
259
- )
260
- .die( 'execute' )
261
- .live
262
- (
263
- 'execute',
264
- function( event )
265
- {
266
- var url = core_basepath + '/analysis/field?wt=json&analysis.showmatch=true&' + context.path.split( '?' ).pop();
267
- url = url.replace( /&verbose_output=\d/, '' );
268
-
269
- $.ajax
270
- (
271
- {
272
- url : url,
273
- dataType : 'json',
274
- beforeSend : function( xhr, settings )
275
- {
276
- loader.show( $( 'span', button ) );
277
- button.attr( 'disabled', true );
278
- },
279
- success : function( response, status_text, xhr, form )
280
- {
281
- $( '.analysis-error', analysis_element )
282
- .hide();
283
-
284
- analysis_result
285
- .empty()
286
- .show();
287
-
288
- for( var name in response.analysis.field_names )
289
- {
290
- build_analysis_table( 'name', name, response.analysis.field_names[name] );
291
- }
292
-
293
- for( var name in response.analysis.field_types )
294
- {
295
- build_analysis_table( 'type', name, response.analysis.field_types[name] );
296
- }
297
-
298
- check_empty_spacer();
299
- },
300
- error : function( xhr, text_status, error_thrown )
301
- {
302
- analysis_result
303
- .empty()
304
- .hide();
305
-
306
- if( 404 === xhr.status )
307
- {
308
- $( '#analysis-handler-missing', analysis_element )
309
- .show();
310
- }
311
- else
312
- {
313
- $( '#analysis-error', analysis_element )
314
- .show();
315
-
316
- var response = null;
317
- try
318
- {
319
- eval( 'response = ' + xhr.responseText + ';' );
320
- }
321
- catch( e )
322
- {
323
- console.error( e );
324
- }
325
-
326
- $( '#analysis-error .body', analysis_element )
327
- .text( response ? response.error.msg : xhr.responseText );
328
- }
329
- },
330
- complete : function()
331
- {
332
- loader.hide( $( 'span', button ) );
333
- button.removeAttr( 'disabled' );
334
- }
335
- }
336
- );
337
- }
338
- );
339
-
340
- var generate_class_name = function( type )
341
- {
342
- var classes = [type];
343
- if( 'text' !== type )
344
- {
345
- classes.push( 'verbose_output' );
346
- }
347
- return classes.join( ' ' );
348
- }
349
-
350
- var build_analysis_table = function( field_or_name, name, analysis_data )
351
- {
352
- for( var type in analysis_data )
353
- {
354
- var type_length = analysis_data[type].length;
355
- if( 0 !== type_length )
356
- {
357
- var global_elements_count = 0;
358
- if( 'string' === typeof analysis_data[type][1] )
359
- {
360
- analysis_data[type][1] = [{ 'text': analysis_data[type][1] }]
361
- }
362
-
363
- for( var i = 1; i < type_length; i += 2 )
364
- {
365
- var tmp_type_length = analysis_data[type][i].length;
366
- for( var j = 0; j < tmp_type_length; j++ )
367
- {
368
- global_elements_count = Math.max
369
- (
370
- ( analysis_data[type][i][j].positionHistory || [] )[0] || 1,
371
- global_elements_count
372
- );
373
- }
374
- }
375
-
376
- var content = '<div class="' + type + '">' + "\n";
377
- content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
378
-
379
- for( var i = 0; i < analysis_data[type].length; i += 2 )
380
- {
381
- var colspan = 1;
382
- var elements = analysis_data[type][i+1];
383
- var elements_count = global_elements_count;
384
-
385
- if( !elements[0] || !elements[0].positionHistory )
386
- {
387
- colspan = elements_count;
388
- elements_count = 1;
389
- }
390
-
391
- var legend = [];
392
- for( var key in elements[0] )
393
- {
394
- var key_parts = key.split( '#' );
395
- var used_key = key_parts.pop();
396
- var short_key = used_key;
397
-
398
- if( 1 === key_parts.length )
399
- {
400
- used_key = '<abbr title="' + key + '">' + used_key + '</abbr>';
401
- }
402
-
403
- if( 'positionHistory' === short_key || 'match' === short_key )
404
- {
405
- continue;
406
- }
407
-
408
- legend.push
409
- (
410
- '<tr class="' + generate_class_name( short_key ) + '">' +
411
- '<td>' + used_key + '</td>' +
412
- '</tr>'
413
- );
414
- }
415
-
416
- content += '<tbody>' + "\n";
417
- content += '<tr class="step">' + "\n";
418
-
419
- // analyzer
420
- var analyzer_name = analysis_data[type][i].replace( /(\$1)+$/g, '' );
421
-
422
- var analyzer_short = -1 !== analyzer_name.indexOf( '$' )
423
- ? analyzer_name.split( '$' )[1]
424
- : analyzer_name.split( '.' ).pop();
425
- analyzer_short = analyzer_short.match( /[A-Z]/g ).join( '' );
426
-
427
- content += '<td class="part analyzer"><div>' + "\n";
428
- content += '<abbr title="' + analysis_data[type][i].esc() + '">' + "\n";
429
- content += analyzer_short.esc() + '</abbr></div></td>' + "\n";
430
-
431
- // legend
432
- content += '<td class="part legend"><div class="holder">' + "\n";
433
- content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
434
- content += '<tr><td>' + "\n";
435
- content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
436
- content += legend.join( "\n" ) + "\n";
437
- content += '</table></td></tr></table></td>' + "\n";
438
-
439
- // data
440
- var cell_content = '<td class="part data spacer" colspan="' + colspan + '"><div class="holder">&nbsp;</div></td>';
441
- var cells = new Array( elements_count + 1 ).join( cell_content );
442
- content += cells + "\n";
443
-
444
- content += '</tr>' + "\n";
445
- content += '</tbody>' + "\n";
446
- }
447
- content += '</table>' + "\n";
448
- content += '</div>' + "\n";
449
-
450
- $( '.' + type, analysis_result )
451
- .remove();
452
-
453
- analysis_result
454
- .append( content );
455
-
456
- var analysis_result_type = $( '.' + type, analysis_result );
457
-
458
- for( var i = 0; i < analysis_data[type].length; i += 2 )
459
- {
460
- for( var j = 0; j < analysis_data[type][i+1].length; j += 1 )
461
- {
462
- var pos = analysis_data[type][i+1][j].positionHistory
463
- ? analysis_data[type][i+1][j].positionHistory[0]
464
- : 1;
465
- var selector = 'tr.step:eq(' + ( i / 2 ) +') '
466
- + 'td.data:eq(' + ( pos - 1 ) + ') '
467
- + '.holder';
468
- var cell = $( selector, analysis_result_type );
469
-
470
- cell.parent()
471
- .removeClass( 'spacer' );
472
-
473
- var table = $( 'table tr.details', cell );
474
- if( 0 === table.size() )
475
- {
476
- cell
477
- .html
478
- (
479
- '<table border="0" cellspacing="0" cellpadding="0">' +
480
- '<tr class="details"></tr></table>'
481
- );
482
- var table = $( 'table tr.details', cell );
483
- }
484
-
485
- var tokens = [];
486
- for( var key in analysis_data[type][i+1][j] )
487
- {
488
- var short_key = key.split( '#' ).pop();
489
-
490
- if( 'positionHistory' === short_key || 'match' === short_key )
491
- {
492
- continue;
493
- }
494
-
495
- var classes = [];
496
- classes.push( generate_class_name( short_key ) );
497
-
498
- var data = analysis_data[type][i+1][j][key];
499
- if( 'object' === typeof data && data instanceof Array )
500
- {
501
- data = data.join( ' ' );
502
- }
503
- if( 'string' === typeof data )
504
- {
505
- data = data.esc();
506
- }
507
-
508
- if( null === data || 0 === data.length )
509
- {
510
- classes.push( 'empty' );
511
- data = '&empty;';
512
- }
513
-
514
- if( analysis_data[type][i+1][j].match &&
515
- ( 'text' === short_key || 'raw_bytes' === short_key ) )
516
- {
517
- classes.push( 'match' );
518
- }
519
-
520
- tokens.push
521
- (
522
- '<tr class="' + classes.join( ' ' ) + '">' +
523
- '<td>' + data + '</td>' +
524
- '</tr>'
525
- );
526
- }
527
- table
528
- .append
529
- (
530
- '<td class="details">' +
531
- '<table border="0" cellspacing="0" cellpadding="0">' +
532
- tokens.join( "\n" ) +
533
- '</table></td>'
534
- );
535
- }
536
- }
537
-
538
- }
539
- }
540
- }
541
-
542
- }
543
- );
544
- }
545
- );
1
+ /*
2
+ Licensed to the Apache Software Foundation (ASF) under one or more
3
+ contributor license agreements. See the NOTICE file distributed with
4
+ this work for additional information regarding copyright ownership.
5
+ The ASF licenses this file to You under the Apache License, Version 2.0
6
+ (the "License"); you may not use this file except in compliance with
7
+ the License. You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ */
17
+
18
+ // #/:core/analysis
19
+ sammy.get
20
+ (
21
+ new RegExp( app.core_regex_base + '\\/(analysis)$' ),
22
+ function( context )
23
+ {
24
+ var active_core = this.active_core;
25
+ var core_basepath = active_core.attr( 'data-basepath' );
26
+ var content_element = $( '#content' );
27
+
28
+ $.get
29
+ (
30
+ 'tpl/analysis.html',
31
+ function( template )
32
+ {
33
+ content_element
34
+ .html( template );
35
+
36
+ var analysis_element = $( '#analysis', content_element );
37
+ var analysis_form = $( 'form', analysis_element );
38
+ var analysis_result = $( '#analysis-result', analysis_element );
39
+ analysis_result.hide();
40
+
41
+ var verbose_link = $( '.verbose_output a', analysis_element );
42
+
43
+ var type_or_name = $( '#type_or_name', analysis_form );
44
+ var schema_browser_element = $( '#tor_schema' );
45
+ var schema_browser_path = app.core_menu.find( '.schema-browser a' ).attr( 'href' );
46
+ var schema_browser_map = { 'fieldname' : 'field', 'fieldtype' : 'type' };
47
+
48
+ type_or_name
49
+ .die( 'change' )
50
+ .live
51
+ (
52
+ 'change',
53
+ function( event )
54
+ {
55
+ var info = $( this ).val().split( '=' );
56
+
57
+ schema_browser_element
58
+ .attr( 'href', schema_browser_path + '?' + schema_browser_map[info[0]] + '=' + info[1] );
59
+ }
60
+ );
61
+
62
+ $.ajax
63
+ (
64
+ {
65
+ url : core_basepath + '/admin/luke?wt=json&show=schema',
66
+ dataType : 'json',
67
+ context : type_or_name,
68
+ beforeSend : function( xhr, settings )
69
+ {
70
+ this
71
+ .html( '<option value="">Loading ... </option>' )
72
+ .addClass( 'loader' );
73
+ },
74
+ success : function( response, text_status, xhr )
75
+ {
76
+ var content = '';
77
+
78
+ var fields = [];
79
+ for( var field_name in response.schema.fields )
80
+ {
81
+ fields.push
82
+ (
83
+ '<option value="fieldname=' + field_name.esc() + '">' + field_name.esc() + '</option>'
84
+ );
85
+ }
86
+ if( 0 !== fields.length )
87
+ {
88
+ content += '<optgroup label="Fields">' + "\n";
89
+ content += fields.sort().join( "\n" ) + "\n";
90
+ content += '</optgroup>' + "\n";
91
+ }
92
+
93
+ var types = [];
94
+ for( var type_name in response.schema.types )
95
+ {
96
+ types.push
97
+ (
98
+ '<option value="fieldtype=' + type_name.esc() + '">' + type_name.esc() + '</option>'
99
+ );
100
+ }
101
+ if( 0 !== types.length )
102
+ {
103
+ content += '<optgroup label="Types">' + "\n";
104
+ content += types.sort().join( "\n" ) + "\n";
105
+ content += '</optgroup>' + "\n";
106
+ }
107
+
108
+ this
109
+ .html( content );
110
+
111
+ var defaultSearchField = 'fieldname\=' + ( context.params['analysis.fieldname'] || response.schema.defaultSearchField );
112
+
113
+ if( context.params['analysis.fieldtype'] )
114
+ {
115
+ defaultSearchField = 'fieldtype\=' + context.params['analysis.fieldtype'];
116
+ }
117
+
118
+ $( 'option[value="' + defaultSearchField + '"]', this )
119
+ .attr( 'selected', 'selected' );
120
+
121
+ this
122
+ .chosen()
123
+ .trigger( 'change' );
124
+
125
+ var fields = 0;
126
+ for( var key in context.params )
127
+ {
128
+ if( 'string' === typeof context.params[key] && 0 !== context.params[key].length )
129
+ {
130
+ fields++;
131
+ $( '[name="' + key + '"]', analysis_form )
132
+ .val( context.params[key] );
133
+ }
134
+ }
135
+
136
+ if( 'undefined' !== typeof context.params.verbose_output )
137
+ {
138
+ verbose_link.trigger( 'toggle', !!context.params.verbose_output.match( /^(1|true)$/ ) );
139
+ }
140
+
141
+ if( 0 !== fields )
142
+ {
143
+ analysis_form
144
+ .trigger( 'execute' );
145
+ }
146
+ },
147
+ error : function( xhr, text_status, error_thrown)
148
+ {
149
+ },
150
+ complete : function( xhr, text_status )
151
+ {
152
+ this
153
+ .removeClass( 'loader' );
154
+ }
155
+ }
156
+ );
157
+
158
+ $( '.analysis-error .head a', analysis_element )
159
+ .die( 'click' )
160
+ .live
161
+ (
162
+ 'click',
163
+ function( event )
164
+ {
165
+ $( this ).parents( '.analysis-error' )
166
+ .toggleClass( 'expanded' );
167
+ }
168
+ );
169
+
170
+ var check_empty_spacer = function()
171
+ {
172
+ var spacer_holder = $( 'td.part.data.spacer .holder', analysis_result );
173
+
174
+ if( 0 === spacer_holder.size() )
175
+ {
176
+ return false;
177
+ }
178
+
179
+ var verbose_output = analysis_result.hasClass( 'verbose_output' );
180
+
181
+ spacer_holder
182
+ .each
183
+ (
184
+ function( index, element )
185
+ {
186
+ element = $( element );
187
+
188
+ if( verbose_output )
189
+ {
190
+ var cell = element.parent();
191
+ element.height( cell.height() );
192
+ }
193
+ else
194
+ {
195
+ element.removeAttr( 'style' );
196
+ }
197
+ }
198
+ );
199
+ }
200
+
201
+ verbose_link
202
+ .die( 'toggle' )
203
+ .live
204
+ (
205
+ 'toggle',
206
+ function( event, state )
207
+ {
208
+ $( this ).parent()
209
+ .toggleClass( 'active', state );
210
+
211
+ analysis_result
212
+ .toggleClass( 'verbose_output', state );
213
+
214
+ check_empty_spacer();
215
+ }
216
+ )
217
+ .die( 'click' )
218
+ .live
219
+ (
220
+ 'click',
221
+ function( event )
222
+ {
223
+ $( this ).parent()
224
+ .toggleClass( 'active' );
225
+
226
+ analysis_form.trigger( 'submit' );
227
+ }
228
+ );
229
+
230
+ var button = $( 'button', analysis_form )
231
+
232
+ var compute_analysis_params = function()
233
+ {
234
+ var params = analysis_form.formToArray();
235
+
236
+ var type_or_name = $( '#type_or_name', analysis_form ).val().split( '=' );
237
+ params.push( { name: 'analysis.' + type_or_name[0], value: type_or_name[1] } );
238
+ params.push( { name: 'verbose_output', value: $( '.verbose_output', analysis_element ).hasClass( 'active' ) ? 1 : 0 } );
239
+
240
+ return params;
241
+ }
242
+
243
+ analysis_form
244
+ .die( 'submit' )
245
+ .live
246
+ (
247
+ 'submit',
248
+ function( event )
249
+ {
250
+ var params = $.param( compute_analysis_params() )
251
+ .replace( /[\w\.]+=\+*(&)/g, '$1' ) // remove empty parameters
252
+ .replace( /(&)+/, '$1' ) // reduce multiple ampersands
253
+ .replace( /^&/, '' ) // remove leading ampersand
254
+ .replace( /\+/g, '%20' ); // replace plus-signs with encoded whitespaces
255
+
256
+ context.redirect( context.path.split( '?' ).shift() + '?' + params );
257
+ return false;
258
+ }
259
+ )
260
+ .die( 'execute' )
261
+ .live
262
+ (
263
+ 'execute',
264
+ function( event )
265
+ {
266
+ var url = core_basepath + '/analysis/field?wt=json&analysis.showmatch=true&' + context.path.split( '?' ).pop();
267
+ url = url.replace( /&verbose_output=\d/, '' );
268
+
269
+ $.ajax
270
+ (
271
+ {
272
+ url : url,
273
+ dataType : 'json',
274
+ beforeSend : function( xhr, settings )
275
+ {
276
+ loader.show( $( 'span', button ) );
277
+ button.attr( 'disabled', true );
278
+ },
279
+ success : function( response, status_text, xhr, form )
280
+ {
281
+ $( '.analysis-error', analysis_element )
282
+ .hide();
283
+
284
+ analysis_result
285
+ .empty()
286
+ .show();
287
+
288
+ for( var name in response.analysis.field_names )
289
+ {
290
+ build_analysis_table( 'name', name, response.analysis.field_names[name] );
291
+ }
292
+
293
+ for( var name in response.analysis.field_types )
294
+ {
295
+ build_analysis_table( 'type', name, response.analysis.field_types[name] );
296
+ }
297
+
298
+ check_empty_spacer();
299
+ },
300
+ error : function( xhr, text_status, error_thrown )
301
+ {
302
+ analysis_result
303
+ .empty()
304
+ .hide();
305
+
306
+ if( 404 === xhr.status )
307
+ {
308
+ $( '#analysis-handler-missing', analysis_element )
309
+ .show();
310
+ }
311
+ else
312
+ {
313
+ $( '#analysis-error', analysis_element )
314
+ .show();
315
+
316
+ var response = null;
317
+ try
318
+ {
319
+ eval( 'response = ' + xhr.responseText + ';' );
320
+ }
321
+ catch( e )
322
+ {
323
+ console.error( e );
324
+ }
325
+
326
+ $( '#analysis-error .body', analysis_element )
327
+ .text( response ? response.error.msg : xhr.responseText );
328
+ }
329
+ },
330
+ complete : function()
331
+ {
332
+ loader.hide( $( 'span', button ) );
333
+ button.removeAttr( 'disabled' );
334
+ }
335
+ }
336
+ );
337
+ }
338
+ );
339
+
340
+ var generate_class_name = function( type )
341
+ {
342
+ var classes = [type];
343
+ if( 'text' !== type )
344
+ {
345
+ classes.push( 'verbose_output' );
346
+ }
347
+ return classes.join( ' ' );
348
+ }
349
+
350
+ var build_analysis_table = function( field_or_name, name, analysis_data )
351
+ {
352
+ for( var type in analysis_data )
353
+ {
354
+ var type_length = analysis_data[type].length;
355
+ if( 0 !== type_length )
356
+ {
357
+ var global_elements_count = 0;
358
+ if( 'string' === typeof analysis_data[type][1] )
359
+ {
360
+ analysis_data[type][1] = [{ 'text': analysis_data[type][1] }]
361
+ }
362
+
363
+ for( var i = 1; i < type_length; i += 2 )
364
+ {
365
+ var tmp_type_length = analysis_data[type][i].length;
366
+ for( var j = 0; j < tmp_type_length; j++ )
367
+ {
368
+ global_elements_count = Math.max
369
+ (
370
+ ( analysis_data[type][i][j].positionHistory || [] )[0] || 1,
371
+ global_elements_count
372
+ );
373
+ }
374
+ }
375
+
376
+ var content = '<div class="' + type + '">' + "\n";
377
+ content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
378
+
379
+ for( var i = 0; i < analysis_data[type].length; i += 2 )
380
+ {
381
+ var colspan = 1;
382
+ var elements = analysis_data[type][i+1];
383
+ var elements_count = global_elements_count;
384
+
385
+ if( !elements[0] || !elements[0].positionHistory )
386
+ {
387
+ colspan = elements_count;
388
+ elements_count = 1;
389
+ }
390
+
391
+ var legend = [];
392
+ for( var key in elements[0] )
393
+ {
394
+ var key_parts = key.split( '#' );
395
+ var used_key = key_parts.pop();
396
+ var short_key = used_key;
397
+
398
+ if( 1 === key_parts.length )
399
+ {
400
+ used_key = '<abbr title="' + key + '">' + used_key + '</abbr>';
401
+ }
402
+
403
+ if( 'positionHistory' === short_key || 'match' === short_key )
404
+ {
405
+ continue;
406
+ }
407
+
408
+ legend.push
409
+ (
410
+ '<tr class="' + generate_class_name( short_key ) + '">' +
411
+ '<td>' + used_key + '</td>' +
412
+ '</tr>'
413
+ );
414
+ }
415
+
416
+ content += '<tbody>' + "\n";
417
+ content += '<tr class="step">' + "\n";
418
+
419
+ // analyzer
420
+ var analyzer_name = analysis_data[type][i].replace( /(\$1)+$/g, '' );
421
+
422
+ var analyzer_short = -1 !== analyzer_name.indexOf( '$' )
423
+ ? analyzer_name.split( '$' )[1]
424
+ : analyzer_name.split( '.' ).pop();
425
+ analyzer_short = analyzer_short.match( /[A-Z]/g ).join( '' );
426
+
427
+ content += '<td class="part analyzer"><div>' + "\n";
428
+ content += '<abbr title="' + analysis_data[type][i].esc() + '">' + "\n";
429
+ content += analyzer_short.esc() + '</abbr></div></td>' + "\n";
430
+
431
+ // legend
432
+ content += '<td class="part legend"><div class="holder">' + "\n";
433
+ content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
434
+ content += '<tr><td>' + "\n";
435
+ content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
436
+ content += legend.join( "\n" ) + "\n";
437
+ content += '</table></td></tr></table></td>' + "\n";
438
+
439
+ // data
440
+ var cell_content = '<td class="part data spacer" colspan="' + colspan + '"><div class="holder">&nbsp;</div></td>';
441
+ var cells = new Array( elements_count + 1 ).join( cell_content );
442
+ content += cells + "\n";
443
+
444
+ content += '</tr>' + "\n";
445
+ content += '</tbody>' + "\n";
446
+ }
447
+ content += '</table>' + "\n";
448
+ content += '</div>' + "\n";
449
+
450
+ $( '.' + type, analysis_result )
451
+ .remove();
452
+
453
+ analysis_result
454
+ .append( content );
455
+
456
+ var analysis_result_type = $( '.' + type, analysis_result );
457
+
458
+ for( var i = 0; i < analysis_data[type].length; i += 2 )
459
+ {
460
+ for( var j = 0; j < analysis_data[type][i+1].length; j += 1 )
461
+ {
462
+ var pos = analysis_data[type][i+1][j].positionHistory
463
+ ? analysis_data[type][i+1][j].positionHistory[0]
464
+ : 1;
465
+ var selector = 'tr.step:eq(' + ( i / 2 ) +') '
466
+ + 'td.data:eq(' + ( pos - 1 ) + ') '
467
+ + '.holder';
468
+ var cell = $( selector, analysis_result_type );
469
+
470
+ cell.parent()
471
+ .removeClass( 'spacer' );
472
+
473
+ var table = $( 'table tr.details', cell );
474
+ if( 0 === table.size() )
475
+ {
476
+ cell
477
+ .html
478
+ (
479
+ '<table border="0" cellspacing="0" cellpadding="0">' +
480
+ '<tr class="details"></tr></table>'
481
+ );
482
+ var table = $( 'table tr.details', cell );
483
+ }
484
+
485
+ var tokens = [];
486
+ for( var key in analysis_data[type][i+1][j] )
487
+ {
488
+ var short_key = key.split( '#' ).pop();
489
+
490
+ if( 'positionHistory' === short_key || 'match' === short_key )
491
+ {
492
+ continue;
493
+ }
494
+
495
+ var classes = [];
496
+ classes.push( generate_class_name( short_key ) );
497
+
498
+ var data = analysis_data[type][i+1][j][key];
499
+ if( 'object' === typeof data && data instanceof Array )
500
+ {
501
+ data = data.join( ' ' );
502
+ }
503
+ if( 'string' === typeof data )
504
+ {
505
+ data = data.esc();
506
+ }
507
+
508
+ if( null === data || 0 === data.length )
509
+ {
510
+ classes.push( 'empty' );
511
+ data = '&empty;';
512
+ }
513
+
514
+ if( analysis_data[type][i+1][j].match &&
515
+ ( 'text' === short_key || 'raw_bytes' === short_key ) )
516
+ {
517
+ classes.push( 'match' );
518
+ }
519
+
520
+ tokens.push
521
+ (
522
+ '<tr class="' + classes.join( ' ' ) + '">' +
523
+ '<td>' + data + '</td>' +
524
+ '</tr>'
525
+ );
526
+ }
527
+ table
528
+ .append
529
+ (
530
+ '<td class="details">' +
531
+ '<table border="0" cellspacing="0" cellpadding="0">' +
532
+ tokens.join( "\n" ) +
533
+ '</table></td>'
534
+ );
535
+ }
536
+ }
537
+
538
+ }
539
+ }
540
+ }
541
+
542
+ }
543
+ );
544
+ }
545
+ );