rjack-solr 3.6.2.0-java → 4.0.0.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (315) hide show
  1. data/History.rdoc +5 -0
  2. data/Manifest.txt +268 -33
  3. data/NOTICE.txt +1 -1
  4. data/README.rdoc +6 -6
  5. data/assembly.xml +2 -2
  6. data/bin/rjack-solr-fg +1 -1
  7. data/init/rjack-solr +2 -2
  8. data/lib/rjack-solr.rb +7 -2
  9. data/lib/rjack-solr/base.rb +2 -2
  10. data/lib/rjack-solr/commons-cli-1.2.jar +0 -0
  11. data/lib/rjack-solr/config.rb +1 -1
  12. data/lib/rjack-solr/server.rb +1 -1
  13. data/lib/rjack-solr/solr-core-4.0.0.jar +0 -0
  14. data/lib/rjack-solr/solr-solrj-4.0.0.jar +0 -0
  15. data/pom.xml +19 -6
  16. data/test/test_solr.rb +7 -5
  17. data/webapp/META-INF/LICENSE.txt +0 -940
  18. data/webapp/META-INF/MANIFEST.MF +5 -5
  19. data/webapp/META-INF/NOTICE.txt +160 -93
  20. data/webapp/WEB-INF/web.xml +57 -43
  21. data/webapp/admin.html +140 -0
  22. data/webapp/css/chosen.css +392 -0
  23. data/webapp/css/styles/analysis.css +293 -0
  24. data/webapp/css/styles/cloud.css +331 -0
  25. data/webapp/css/styles/common.css +593 -0
  26. data/webapp/css/styles/cores.css +203 -0
  27. data/webapp/css/styles/dashboard.css +127 -0
  28. data/webapp/css/styles/dataimport.css +222 -0
  29. data/webapp/css/styles/index.css +195 -0
  30. data/webapp/css/styles/java-properties.css +33 -0
  31. data/webapp/css/styles/logging.css +323 -0
  32. data/webapp/css/styles/menu.css +272 -0
  33. data/webapp/css/styles/plugins.css +175 -0
  34. data/webapp/css/styles/query.css +137 -0
  35. data/webapp/css/styles/replication.css +494 -0
  36. data/webapp/css/styles/schema-browser.css +476 -0
  37. data/webapp/css/styles/threads.css +153 -0
  38. data/webapp/img/ZeroClipboard.swf +0 -0
  39. data/webapp/img/chosen-sprite.png +0 -0
  40. data/webapp/img/div.gif +0 -0
  41. data/webapp/{admin → img}/favicon.ico +0 -0
  42. data/webapp/img/filetypes/7z.png +0 -0
  43. data/webapp/img/filetypes/README +27 -0
  44. data/webapp/img/filetypes/ai.png +0 -0
  45. data/webapp/img/filetypes/aiff.png +0 -0
  46. data/webapp/img/filetypes/asc.png +0 -0
  47. data/webapp/img/filetypes/audio.png +0 -0
  48. data/webapp/img/filetypes/bin.png +0 -0
  49. data/webapp/img/filetypes/bz2.png +0 -0
  50. data/webapp/img/filetypes/c.png +0 -0
  51. data/webapp/img/filetypes/cfc.png +0 -0
  52. data/webapp/img/filetypes/cfm.png +0 -0
  53. data/webapp/img/filetypes/chm.png +0 -0
  54. data/webapp/img/filetypes/class.png +0 -0
  55. data/webapp/img/filetypes/conf.png +0 -0
  56. data/webapp/img/filetypes/cpp.png +0 -0
  57. data/webapp/img/filetypes/cs.png +0 -0
  58. data/webapp/img/filetypes/css.png +0 -0
  59. data/webapp/img/filetypes/csv.png +0 -0
  60. data/webapp/img/filetypes/deb.png +0 -0
  61. data/webapp/img/filetypes/divx.png +0 -0
  62. data/webapp/img/filetypes/doc.png +0 -0
  63. data/webapp/img/filetypes/dot.png +0 -0
  64. data/webapp/img/filetypes/eml.png +0 -0
  65. data/webapp/img/filetypes/enc.png +0 -0
  66. data/webapp/img/filetypes/file.png +0 -0
  67. data/webapp/img/filetypes/gif.png +0 -0
  68. data/webapp/img/filetypes/gz.png +0 -0
  69. data/webapp/img/filetypes/hlp.png +0 -0
  70. data/webapp/img/filetypes/htm.png +0 -0
  71. data/webapp/img/filetypes/html.png +0 -0
  72. data/webapp/img/filetypes/image.png +0 -0
  73. data/webapp/img/filetypes/iso.png +0 -0
  74. data/webapp/img/filetypes/jar.png +0 -0
  75. data/webapp/img/filetypes/java.png +0 -0
  76. data/webapp/img/filetypes/jpeg.png +0 -0
  77. data/webapp/img/filetypes/jpg.png +0 -0
  78. data/webapp/img/filetypes/js.png +0 -0
  79. data/webapp/img/filetypes/lua.png +0 -0
  80. data/webapp/img/filetypes/m.png +0 -0
  81. data/webapp/img/filetypes/mm.png +0 -0
  82. data/webapp/img/filetypes/mov.png +0 -0
  83. data/webapp/img/filetypes/mp3.png +0 -0
  84. data/webapp/img/filetypes/mpg.png +0 -0
  85. data/webapp/img/filetypes/odc.png +0 -0
  86. data/webapp/img/filetypes/odf.png +0 -0
  87. data/webapp/img/filetypes/odg.png +0 -0
  88. data/webapp/img/filetypes/odi.png +0 -0
  89. data/webapp/img/filetypes/odp.png +0 -0
  90. data/webapp/img/filetypes/ods.png +0 -0
  91. data/webapp/img/filetypes/odt.png +0 -0
  92. data/webapp/img/filetypes/ogg.png +0 -0
  93. data/webapp/img/filetypes/pdf.png +0 -0
  94. data/webapp/img/filetypes/pgp.png +0 -0
  95. data/webapp/img/filetypes/php.png +0 -0
  96. data/webapp/img/filetypes/pl.png +0 -0
  97. data/webapp/img/filetypes/png.png +0 -0
  98. data/webapp/img/filetypes/ppt.png +0 -0
  99. data/webapp/img/filetypes/ps.png +0 -0
  100. data/webapp/img/filetypes/py.png +0 -0
  101. data/webapp/img/filetypes/ram.png +0 -0
  102. data/webapp/img/filetypes/rar.png +0 -0
  103. data/webapp/img/filetypes/rb.png +0 -0
  104. data/webapp/img/filetypes/rm.png +0 -0
  105. data/webapp/img/filetypes/rpm.png +0 -0
  106. data/webapp/img/filetypes/rtf.png +0 -0
  107. data/webapp/img/filetypes/sig.png +0 -0
  108. data/webapp/img/filetypes/sql.png +0 -0
  109. data/webapp/img/filetypes/swf.png +0 -0
  110. data/webapp/img/filetypes/sxc.png +0 -0
  111. data/webapp/img/filetypes/sxd.png +0 -0
  112. data/webapp/img/filetypes/sxi.png +0 -0
  113. data/webapp/img/filetypes/sxw.png +0 -0
  114. data/webapp/img/filetypes/tar.png +0 -0
  115. data/webapp/img/filetypes/tex.png +0 -0
  116. data/webapp/img/filetypes/tgz.png +0 -0
  117. data/webapp/img/filetypes/txt.png +0 -0
  118. data/webapp/img/filetypes/vcf.png +0 -0
  119. data/webapp/img/filetypes/video.png +0 -0
  120. data/webapp/img/filetypes/vsd.png +0 -0
  121. data/webapp/img/filetypes/wav.png +0 -0
  122. data/webapp/img/filetypes/wma.png +0 -0
  123. data/webapp/img/filetypes/wmv.png +0 -0
  124. data/webapp/img/filetypes/xls.png +0 -0
  125. data/webapp/img/filetypes/xml.png +0 -0
  126. data/webapp/img/filetypes/xpi.png +0 -0
  127. data/webapp/img/filetypes/xvid.png +0 -0
  128. data/webapp/img/filetypes/zip.png +0 -0
  129. data/webapp/img/ico/arrow-000-small.png +0 -0
  130. data/webapp/img/ico/arrow-circle.png +0 -0
  131. data/webapp/img/ico/arrow-switch.png +0 -0
  132. data/webapp/img/ico/asterisk.png +0 -0
  133. data/webapp/img/ico/battery.png +0 -0
  134. data/webapp/img/ico/block-small.png +0 -0
  135. data/webapp/img/ico/block.png +0 -0
  136. data/webapp/img/ico/book-open-text.png +0 -0
  137. data/webapp/img/ico/box.png +0 -0
  138. data/webapp/img/ico/bug.png +0 -0
  139. data/webapp/img/ico/chart.png +0 -0
  140. data/webapp/img/ico/chevron-small-expand.png +0 -0
  141. data/webapp/img/ico/chevron-small.png +0 -0
  142. data/webapp/img/ico/clipboard-list.png +0 -0
  143. data/webapp/img/ico/clipboard-paste-document-text.png +0 -0
  144. data/webapp/img/ico/clipboard-paste.png +0 -0
  145. data/webapp/img/ico/clock-select-remain.png +0 -0
  146. data/webapp/img/ico/clock-select.png +0 -0
  147. data/webapp/img/ico/construction.png +0 -0
  148. data/webapp/img/ico/cross-0.png +0 -0
  149. data/webapp/img/ico/cross-1.png +0 -0
  150. data/webapp/img/ico/cross.png +0 -0
  151. data/webapp/img/ico/dashboard.png +0 -0
  152. data/webapp/img/ico/database.png +0 -0
  153. data/webapp/img/ico/databases.png +0 -0
  154. data/webapp/img/ico/disk-black.png +0 -0
  155. data/webapp/img/ico/document-convert.png +0 -0
  156. data/webapp/img/ico/document-import.png +0 -0
  157. data/webapp/img/ico/document-list.png +0 -0
  158. data/webapp/img/ico/document-text.png +0 -0
  159. data/webapp/img/ico/download-cloud.png +0 -0
  160. data/webapp/img/ico/exclamation-button.png +0 -0
  161. data/webapp/img/ico/eye.png +0 -0
  162. data/webapp/img/ico/folder-export.png +0 -0
  163. data/webapp/img/ico/folder-tree.png +0 -0
  164. data/webapp/img/ico/folder.png +0 -0
  165. data/webapp/img/ico/funnel-small.png +0 -0
  166. data/webapp/img/ico/funnel.png +0 -0
  167. data/webapp/img/ico/gear.png +0 -0
  168. data/webapp/img/ico/globe-network.png +0 -0
  169. data/webapp/img/ico/globe.png +0 -0
  170. data/webapp/img/ico/hammer-screwdriver.png +0 -0
  171. data/webapp/img/ico/hand.png +0 -0
  172. data/webapp/img/ico/highlighter-text.png +0 -0
  173. data/webapp/img/ico/hourglass--exclamation.png +0 -0
  174. data/webapp/img/ico/hourglass.png +0 -0
  175. data/webapp/img/ico/inbox-document-text.png +0 -0
  176. data/webapp/img/ico/information-button.png +0 -0
  177. data/webapp/img/ico/information-small.png +0 -0
  178. data/webapp/img/ico/information-white.png +0 -0
  179. data/webapp/img/ico/information.png +0 -0
  180. data/webapp/img/ico/jar.png +0 -0
  181. data/webapp/img/ico/magnifier.png +0 -0
  182. data/webapp/img/ico/mail.png +0 -0
  183. data/webapp/img/ico/memory.png +0 -0
  184. data/webapp/img/ico/molecule.png +0 -0
  185. data/webapp/img/ico/network-cloud.png +0 -0
  186. data/webapp/img/ico/network-status-away.png +0 -0
  187. data/webapp/img/ico/network-status-busy.png +0 -0
  188. data/webapp/img/ico/network-status-offline.png +0 -0
  189. data/webapp/img/ico/network-status.png +0 -0
  190. data/webapp/img/ico/network.png +0 -0
  191. data/webapp/img/ico/node-design.png +0 -0
  192. data/webapp/img/ico/node-master.png +0 -0
  193. data/webapp/img/ico/node-select.png +0 -0
  194. data/webapp/img/ico/node-slave.png +0 -0
  195. data/webapp/img/ico/node.png +0 -0
  196. data/webapp/img/ico/pencil-small.png +0 -0
  197. data/webapp/img/ico/plus-button.png +0 -0
  198. data/webapp/img/ico/processor.png +0 -0
  199. data/webapp/img/ico/prohibition.png +0 -0
  200. data/webapp/img/ico/property.png +0 -0
  201. data/webapp/img/ico/question-small-white.png +0 -0
  202. data/webapp/img/ico/question-white.png +0 -0
  203. data/webapp/img/ico/question.png +0 -0
  204. data/webapp/img/ico/receipt-invoice.png +0 -0
  205. data/webapp/img/ico/receipt.png +0 -0
  206. data/webapp/img/ico/script-code.png +0 -0
  207. data/webapp/img/ico/server-cast.png +0 -0
  208. data/webapp/img/ico/server.png +0 -0
  209. data/webapp/img/ico/sitemap.png +0 -0
  210. data/webapp/img/ico/slash.png +0 -0
  211. data/webapp/img/ico/status-away.png +0 -0
  212. data/webapp/img/ico/status-busy.png +0 -0
  213. data/webapp/img/ico/status-offline.png +0 -0
  214. data/webapp/img/ico/status.png +0 -0
  215. data/webapp/img/ico/system-monitor--exclamation.png +0 -0
  216. data/webapp/img/ico/system-monitor.png +0 -0
  217. data/webapp/img/ico/table.png +0 -0
  218. data/webapp/img/ico/terminal.png +0 -0
  219. data/webapp/img/ico/tick-circle.png +0 -0
  220. data/webapp/img/ico/tick-red.png +0 -0
  221. data/webapp/img/ico/tick.png +0 -0
  222. data/webapp/img/ico/toggle-small-expand.png +0 -0
  223. data/webapp/img/ico/toggle-small.png +0 -0
  224. data/webapp/img/ico/toolbox.png +0 -0
  225. data/webapp/img/ico/ui-accordion.png +0 -0
  226. data/webapp/img/ico/ui-address-bar.png +0 -0
  227. data/webapp/img/ico/ui-check-box-uncheck.png +0 -0
  228. data/webapp/img/ico/ui-check-box.png +0 -0
  229. data/webapp/img/ico/ui-radio-button-uncheck.png +0 -0
  230. data/webapp/img/ico/ui-radio-button.png +0 -0
  231. data/webapp/img/ico/ui-text-field-select.png +0 -0
  232. data/webapp/img/ico/users.png +0 -0
  233. data/webapp/img/ico/wooden-box.png +0 -0
  234. data/webapp/img/ico/zone.png +0 -0
  235. data/webapp/img/loader-light.gif +0 -0
  236. data/webapp/img/loader.gif +0 -0
  237. data/webapp/img/lucene-ico.png +0 -0
  238. data/webapp/img/solr-ico.png +0 -0
  239. data/webapp/{admin/solr_small.png → img/solr.png} +0 -0
  240. data/webapp/img/tree.png +0 -0
  241. data/webapp/js/lib/ZeroClipboard.js +317 -0
  242. data/webapp/js/lib/chosen.js +953 -0
  243. data/webapp/{admin/get-properties.jsp → js/lib/console.js} +13 -10
  244. data/webapp/js/lib/d3.js +9342 -0
  245. data/webapp/js/lib/highlight.js +1 -0
  246. data/webapp/{admin/jquery-1.4.3.min.js → js/lib/jquery-1.7.2.min.js} +0 -0
  247. data/webapp/js/lib/jquery.blockUI.js +499 -0
  248. data/webapp/js/lib/jquery.cookie.js +47 -0
  249. data/webapp/js/lib/jquery.form.js +782 -0
  250. data/webapp/js/lib/jquery.jstree.js +3510 -0
  251. data/webapp/js/lib/jquery.sammy.js +1856 -0
  252. data/webapp/js/lib/jquery.sparkline.js +1271 -0
  253. data/webapp/js/lib/jquery.timeago.js +165 -0
  254. data/webapp/js/lib/linker.js +48 -0
  255. data/webapp/js/lib/order.js +189 -0
  256. data/webapp/js/main.js +57 -0
  257. data/webapp/js/require.js +11319 -0
  258. data/webapp/js/scripts/analysis.js +549 -0
  259. data/webapp/js/scripts/app.js +368 -0
  260. data/webapp/js/scripts/cloud.js +719 -0
  261. data/webapp/js/scripts/cores.js +540 -0
  262. data/webapp/js/scripts/dashboard.js +540 -0
  263. data/webapp/js/scripts/dataimport.js +567 -0
  264. data/webapp/js/scripts/file.js +56 -0
  265. data/webapp/js/scripts/index.js +344 -0
  266. data/webapp/js/scripts/java-properties.js +107 -0
  267. data/webapp/js/scripts/logging.js +519 -0
  268. data/webapp/js/scripts/ping.js +72 -0
  269. data/webapp/js/scripts/plugins.js +426 -0
  270. data/webapp/js/scripts/query.js +170 -0
  271. data/webapp/js/scripts/replication.js +557 -0
  272. data/webapp/js/scripts/schema-browser.js +1206 -0
  273. data/webapp/js/scripts/threads.js +159 -0
  274. data/webapp/tpl/analysis.html +83 -0
  275. data/webapp/tpl/cloud.html +54 -0
  276. data/webapp/tpl/cores.html +215 -0
  277. data/webapp/tpl/dashboard.html +164 -0
  278. data/webapp/tpl/dataimport.html +123 -0
  279. data/webapp/tpl/index.html +250 -0
  280. data/webapp/tpl/logging.html +23 -0
  281. data/webapp/tpl/plugins.html +39 -0
  282. data/webapp/tpl/query.html +318 -0
  283. data/webapp/tpl/replication.html +207 -0
  284. data/webapp/tpl/schema-browser.html +178 -0
  285. data/webapp/tpl/threads.html +56 -0
  286. metadata +307 -40
  287. data/lib/rjack-solr/solr-core-3.6.2.jar +0 -0
  288. data/lib/rjack-solr/solr-solrj-3.6.2.jar +0 -0
  289. data/webapp/admin/_info.jsp +0 -120
  290. data/webapp/admin/action.jsp +0 -94
  291. data/webapp/admin/analysis.jsp +0 -496
  292. data/webapp/admin/analysis.xsl +0 -179
  293. data/webapp/admin/dataimport.jsp +0 -53
  294. data/webapp/admin/debug.jsp +0 -103
  295. data/webapp/admin/distributiondump.jsp +0 -160
  296. data/webapp/admin/form.jsp +0 -152
  297. data/webapp/admin/get-file.jsp +0 -72
  298. data/webapp/admin/header.jsp +0 -44
  299. data/webapp/admin/index.jsp +0 -162
  300. data/webapp/admin/meta.xsl +0 -34
  301. data/webapp/admin/ping.jsp +0 -52
  302. data/webapp/admin/ping.xsl +0 -71
  303. data/webapp/admin/raw-schema.jsp +0 -38
  304. data/webapp/admin/registry.jsp +0 -107
  305. data/webapp/admin/registry.xsl +0 -321
  306. data/webapp/admin/replication/header.jsp +0 -89
  307. data/webapp/admin/replication/index.jsp +0 -378
  308. data/webapp/admin/schema.jsp +0 -690
  309. data/webapp/admin/solr-admin.css +0 -215
  310. data/webapp/admin/stats.jsp +0 -92
  311. data/webapp/admin/stats.xsl +0 -220
  312. data/webapp/admin/tabular.xsl +0 -141
  313. data/webapp/admin/threaddump.jsp +0 -110
  314. data/webapp/admin/threaddump.xsl +0 -103
  315. data/webapp/index.jsp +0 -49
@@ -0,0 +1,72 @@
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
+ $( '.ping a', app.menu_element )
19
+ .live
20
+ (
21
+ 'click',
22
+ function( event )
23
+ {
24
+ $.ajax
25
+ (
26
+ {
27
+ url : $( this ).attr( 'rel' ) + '?wt=json&ts=' + (new Date).getTime(),
28
+ dataType : 'json',
29
+ context: this,
30
+ beforeSend : function( arr, form, options )
31
+ {
32
+ loader.show( this );
33
+ },
34
+ success : function( response, text_status, xhr )
35
+ {
36
+ $( this )
37
+ .removeAttr( 'title' );
38
+
39
+ $( this ).parents( 'li' )
40
+ .removeClass( 'error' );
41
+
42
+ var qtime_element = $( '.qtime', this );
43
+
44
+ if( 0 === qtime_element.size() )
45
+ {
46
+ qtime_element = $( '<small class="qtime"> (<span></span>)</small>' );
47
+
48
+ $( this )
49
+ .append( qtime_element );
50
+ }
51
+
52
+ $( 'span', qtime_element )
53
+ .html( response.responseHeader.QTime + 'ms' );
54
+ },
55
+ error : function( xhr, text_status, error_thrown )
56
+ {
57
+ $( this )
58
+ .attr( 'title', '/admin/ping is not configured (' + xhr.status + ': ' + error_thrown + ')' );
59
+
60
+ $( this ).parents( 'li' )
61
+ .addClass( 'error' );
62
+ },
63
+ complete : function( xhr, text_status )
64
+ {
65
+ loader.hide( this );
66
+ }
67
+ }
68
+ );
69
+
70
+ return false;
71
+ }
72
+ );
@@ -0,0 +1,426 @@
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
+ var core_basepath = null;
19
+ var content_element = null;
20
+ var selected_type = null;
21
+ var context_path = null;
22
+ var active_context = null;
23
+ var changes = null;
24
+ var reference_xml = null;
25
+
26
+ var compute_plugin_data = function( response, changeset )
27
+ {
28
+ var types = [];
29
+ var sort_table = {};
30
+ var plugin_data = {};
31
+
32
+ var types_obj = {};
33
+ var plugin_key = null;
34
+
35
+ changes = { count : {}, list : {} }
36
+
37
+ for( var i = 0; i < response['solr-mbeans'].length; i++ )
38
+ {
39
+ if( !( i % 2 ) )
40
+ {
41
+ plugin_key = response['solr-mbeans'][i];
42
+ }
43
+ else
44
+ {
45
+ plugin_data[plugin_key] = response['solr-mbeans'][i];
46
+ }
47
+ }
48
+
49
+ for( var key in plugin_data )
50
+ {
51
+ sort_table[key] = {
52
+ url : [],
53
+ component : [],
54
+ handler : []
55
+ };
56
+ for( var part_key in plugin_data[key] )
57
+ {
58
+ if( plugin_data[key][part_key]['_changed_'] )
59
+ {
60
+ delete plugin_data[key][part_key]['_changed_'];
61
+
62
+ changes.count[key] = changes.count[key] || 0;
63
+ changes.count[key]++;
64
+
65
+ changes.list[key] = changes.list[key] || {};
66
+ changes.list[key][part_key] = true;
67
+ }
68
+
69
+ if( 0 < part_key.indexOf( '.' ) )
70
+ {
71
+ types_obj[key] = true;
72
+ sort_table[key]['handler'].push( part_key );
73
+ }
74
+ else if( 0 === part_key.indexOf( '/' ) )
75
+ {
76
+ types_obj[key] = true;
77
+ sort_table[key]['url'].push( part_key );
78
+ }
79
+ else
80
+ {
81
+ types_obj[key] = true;
82
+ sort_table[key]['component'].push( part_key );
83
+ }
84
+ }
85
+ }
86
+
87
+ for( var type in types_obj )
88
+ {
89
+ types.push( type );
90
+ }
91
+ types.sort();
92
+
93
+ return {
94
+ 'plugin_data' : plugin_data,
95
+ 'sort_table' : sort_table,
96
+ 'types' : types
97
+ };
98
+ };
99
+
100
+ var render_plugin_data = function( plugin_data, plugin_sort, types )
101
+ {
102
+ var frame_element = $( '#frame', content_element );
103
+ var navigation_element = $( '#navigation ul', content_element );
104
+
105
+ var navigation_content = [];
106
+ for( var i = 0; i < types.length; i++ )
107
+ {
108
+ var type_url = active_context.params.splat[0] + '/' + active_context.params.splat[1] + '/' + types[i].toLowerCase();
109
+
110
+ var navigation_markup = '<li class="' + types[i].toLowerCase().esc() + '">' +
111
+ '<a href="#/' + type_url + '" rel="' + types[i].esc() + '">' + types[i].esc();
112
+
113
+ if( changes.count[types[i]] )
114
+ {
115
+ navigation_markup += ' <span>' + changes.count[types[i]].esc() + '</span>';
116
+ }
117
+
118
+ navigation_markup += '</a>' +
119
+ '</li>';
120
+
121
+ navigation_content.push( navigation_markup );
122
+ }
123
+
124
+ navigation_content.push( '<li class="PLUGINCHANGES"><a href="#">Watch Changes</a></li>' );
125
+ navigation_content.push( '<li class="RELOAD"><a href="#" onClick="window.location.reload()">Refresh Values</a></li>' );
126
+
127
+ navigation_element
128
+ .html( navigation_content.join( "\n" ) );
129
+
130
+ $( '.PLUGINCHANGES a', navigation_element )
131
+ .die( 'click' )
132
+ .live
133
+ (
134
+ 'click',
135
+ function( event )
136
+ {
137
+ load_reference_xml();
138
+
139
+ changes = { count : {}, list : {} }
140
+ $( 'a > span', navigation_element ).remove();
141
+ $( '.entry.changed', frame_element ).removeClass( 'changed' );
142
+
143
+ $.blockUI
144
+ (
145
+ {
146
+ message: $('#recording'),
147
+ css: { width: '450px' }
148
+ }
149
+ );
150
+
151
+ return false;
152
+ }
153
+ );
154
+
155
+ $( '#recording button' )
156
+ .die( 'click' )
157
+ .live
158
+ (
159
+ 'click',
160
+ function( event )
161
+ {
162
+ $.ajax
163
+ (
164
+ {
165
+ type: 'POST',
166
+ url: core_basepath + '/admin/mbeans',
167
+ dataType : 'json',
168
+ data: {
169
+ 'stats': 'true',
170
+ 'wt': 'json',
171
+ 'diff': 'true',
172
+ 'all': 'true',
173
+ 'stream.body': reference_xml
174
+ },
175
+ success : function( response, text_status, xhr )
176
+ {
177
+ load_reference_xml();
178
+
179
+ app.plugin_data = compute_plugin_data( response );
180
+ render_plugin_data( app.plugin_data.plugin_data, app.plugin_data.sort_table, app.plugin_data.types );
181
+ }
182
+ }
183
+ );
184
+ $.unblockUI();
185
+ return false;
186
+ }
187
+ );
188
+
189
+ $( 'a[href="' + context_path + '"]', navigation_element )
190
+ .parent().addClass( 'current' );
191
+
192
+ var content = '<ul>';
193
+ for( var sort_key in plugin_sort[selected_type] )
194
+ {
195
+ plugin_sort[selected_type][sort_key].sort();
196
+ var plugin_type_length = plugin_sort[selected_type][sort_key].length;
197
+
198
+ for( var i = 0; i < plugin_type_length; i++ )
199
+ {
200
+ var bean = plugin_sort[selected_type][sort_key][i];
201
+ var classes = [ 'entry' ];
202
+
203
+ if( changes.list[selected_type] && changes.list[selected_type][bean] )
204
+ {
205
+ classes.push( 'changed' );
206
+ }
207
+
208
+ content += '<li class="' + classes.join( ' ' ) + '">' + "\n";
209
+ content += '<a href="' + context_path + '?entry=' + bean.esc() + '">';
210
+ content += '<span>' + bean.esc() + '</span>';
211
+ content += '</a>' + "\n";
212
+ content += '<ul class="detail">' + "\n";
213
+
214
+ var details = plugin_data[selected_type][ plugin_sort[selected_type][sort_key][i] ];
215
+ for( var detail_key in details )
216
+ {
217
+ if( 'stats' !== detail_key )
218
+ {
219
+ var detail_value = details[detail_key];
220
+
221
+ if( 'description' === detail_key )
222
+ {
223
+ // Link component list to their MBeans page
224
+ if(detail_value.match(/^Search using components: /)) {
225
+ var idx = detail_value.indexOf(':');
226
+ var url = '#/'+active_context.params.splat[0]+'/plugins/other?entry=';
227
+ var tmp = 'Search using components:<ul>';
228
+ $.each(detail_value.substr(idx+1).split(","), function(index, value) {
229
+ value = $.trim(value);
230
+ tmp += '<li><a href="'+url+value+'" class="linker">'+value+"</a></li>";
231
+ });
232
+ tmp += "</ul>";
233
+ detail_value = tmp;
234
+ }
235
+ }
236
+
237
+ content += '<li><dl class="clearfix">' + "\n";
238
+ content += '<dt>' + detail_key + ':</dt>' + "\n";
239
+ if($.isArray(detail_value)) {
240
+ $.each(detail_value, function(index, value) {
241
+ content += '<dd>' + value + '</dd>' + "\n";
242
+ });
243
+ }
244
+ else {
245
+ content += '<dd>' + detail_value + '</dd>' + "\n";
246
+ }
247
+ content += '</dl></li>' + "\n";
248
+ }
249
+ else if( 'stats' === detail_key && details[detail_key] )
250
+ {
251
+ content += '<li class="stats clearfix">' + "\n";
252
+ content += '<span>' + detail_key + ':</span>' + "\n";
253
+ content += '<ul>' + "\n";
254
+
255
+ for( var stats_key in details[detail_key] )
256
+ {
257
+ var stats_value = details[detail_key][stats_key];
258
+
259
+ if( 'readerDir' === stats_key )
260
+ {
261
+ stats_value = stats_value.replace( /@/g, '@&#8203;' );
262
+ }
263
+
264
+ content += '<li><dl class="clearfix">' + "\n";
265
+ content += '<dt>' + stats_key + ':</dt>' + "\n";
266
+ content += '<dd>' + stats_value + '</dd>' + "\n";
267
+ content += '</dl></li>' + "\n";
268
+ }
269
+
270
+ content += '</ul></li>' + "\n";
271
+ }
272
+ }
273
+
274
+ content += '</ul>' + "\n";
275
+ }
276
+ }
277
+ content += '</ul>' + "\n";
278
+
279
+ frame_element
280
+ .html( content );
281
+
282
+ $( 'a[href="' + decodeURIComponent( active_context.path ) + '"]', frame_element )
283
+ .parent().addClass( 'expanded' );
284
+
285
+ // Try to make links for anything with http (but leave the rest alone)
286
+ $( '.detail dd' ).each(function(index) {
287
+ var txt = $(this).html();
288
+ if(txt.indexOf("http") >= 0) {
289
+ $(this).linker({
290
+ className : 'linker',
291
+ });
292
+ }
293
+ });
294
+
295
+ // Add invisible whitespace after each slash
296
+ $( '.detail a.linker' ).each(function(index) {
297
+ $(this).html( $(this).html().replace( /\//g, '/&#8203;' ) );
298
+ });
299
+
300
+
301
+ $( '.entry', frame_element )
302
+ .each
303
+ (
304
+ function( i, entry )
305
+ {
306
+ $( '.detail > li', entry ).not( '.stats' ).filter( ':even' )
307
+ .addClass( 'odd' );
308
+
309
+ $( '.stats li:odd', entry )
310
+ .addClass( 'odd' );
311
+ }
312
+ );
313
+ };
314
+
315
+ var load_reference_xml = function()
316
+ {
317
+ $.ajax
318
+ (
319
+ {
320
+ type: 'GET',
321
+ url: core_basepath + '/admin/mbeans?stats=true&wt=xml',
322
+ dataType : 'text',
323
+ success: function( data )
324
+ {
325
+ reference_xml = data;
326
+ }
327
+ }
328
+ );
329
+ }
330
+
331
+ sammy.bind
332
+ (
333
+ 'plugins_load',
334
+ function( event, params )
335
+ {
336
+ var callback = function()
337
+ {
338
+ params.callback( app.plugin_data.plugin_data, app.plugin_data.sort_table, app.plugin_data.types );
339
+ }
340
+
341
+ if( app.plugin_data )
342
+ {
343
+ callback( app.plugin_data );
344
+ return true;
345
+ }
346
+
347
+ $.ajax
348
+ (
349
+ {
350
+ url : core_basepath + '/admin/mbeans?stats=true&wt=json',
351
+ dataType : 'json',
352
+ beforeSend : function( xhr, settings )
353
+ {
354
+ },
355
+ success : function( response, text_status, xhr )
356
+ {
357
+ app.plugin_data = compute_plugin_data( response );
358
+
359
+ $.get
360
+ (
361
+ 'tpl/plugins.html',
362
+ function( template )
363
+ {
364
+ $( '#content' )
365
+ .html( template );
366
+
367
+ callback( app.plugin_data );
368
+ }
369
+ );
370
+ },
371
+ error : function( xhr, text_status, error_thrown)
372
+ {
373
+ },
374
+ complete : function( xhr, text_status )
375
+ {
376
+ }
377
+ }
378
+ );
379
+ }
380
+ );
381
+
382
+ // #/:core/plugins/$type
383
+ sammy.get
384
+ (
385
+ /^#\/([\w\d-]+)\/(plugins)\/(\w+)$/,
386
+ function( context )
387
+ {
388
+ core_basepath = this.active_core.attr( 'data-basepath' );
389
+ content_element = $( '#content' );
390
+ selected_type = context.params.splat[2].toUpperCase();
391
+ context_path = context.path.split( '?' ).shift();
392
+ active_context = context;
393
+
394
+ sammy.trigger
395
+ (
396
+ 'plugins_load',
397
+ {
398
+ active_core : this.active_core,
399
+ callback : render_plugin_data
400
+ }
401
+ );
402
+ }
403
+ );
404
+
405
+ // #/:core/plugins
406
+ sammy.get
407
+ (
408
+ /^#\/([\w\d-]+)\/(plugins)$/,
409
+ function( context )
410
+ {
411
+ core_basepath = this.active_core.attr( 'data-basepath' );
412
+ delete app.plugin_data;
413
+
414
+ sammy.trigger
415
+ (
416
+ 'plugins_load',
417
+ {
418
+ active_core : this.active_core,
419
+ callback : function( plugin_data, plugin_sort, types )
420
+ {
421
+ context.redirect( context.path + '/' + types[0].toLowerCase() );
422
+ }
423
+ }
424
+ );
425
+ }
426
+ );