sunspot_solr 2.2.2 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ );