From 874507d9825e6c9516ec1350b223bad737f30c4b Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Fri, 6 Apr 2012 18:16:26 +0000 Subject: [PATCH] SOLR-3326: Show plugin links as real links git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1310532 13f79535-47bb-0310-9956-ffa450edef68 --- solr/webapp/web/css/styles/plugins.css | 15 +++++++- solr/webapp/web/js/lib/linker.js | 48 ++++++++++++++++++++++++++ solr/webapp/web/js/main.js | 1 + solr/webapp/web/js/scripts/plugins.js | 39 +++++++++++++++++---- 4 files changed, 96 insertions(+), 7 deletions(-) create mode 100644 solr/webapp/web/js/lib/linker.js diff --git a/solr/webapp/web/css/styles/plugins.css b/solr/webapp/web/css/styles/plugins.css index e5f5874f929..1454520a90b 100644 --- a/solr/webapp/web/css/styles/plugins.css +++ b/solr/webapp/web/css/styles/plugins.css @@ -1,3 +1,4 @@ + #content #plugins #navigation { width: 20%; @@ -101,4 +102,16 @@ #content #plugins #frame .entry .stats dd { width: 72%; -} \ No newline at end of file +} + +#content #plugins #frame .entry.expanded a.linker { + background-image: none; + background-position: 0 0; + display: inline; + font-weight: normal; + padding:0px; +} + +#content #plugins #frame .entry.expanded a.linker:hover { + background-color:#F0F3FF; +} diff --git a/solr/webapp/web/js/lib/linker.js b/solr/webapp/web/js/lib/linker.js new file mode 100644 index 00000000000..565d37f5a0f --- /dev/null +++ b/solr/webapp/web/js/lib/linker.js @@ -0,0 +1,48 @@ +//by Michalis Tzikas & Vasilis Lolos +//07-03-2012 +//v1.0 +/* +Copyright (C) 2011 by Michalis Tzikas & Vasilis Lolos + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +(function( $ ){ + $.fn.linker = function(options) { + var defaults = { + target : '', //blank,self,parent,top + className : '', + rel : '' + }; + var options = $.extend(defaults, options); + + target_string = (options.target != '') ? 'target="_'+options.target+'"' : ''; + class_string = (options.className != '') ? 'class="'+options.className+'"' : ''; + rel_string = (options.rel != '') ? 'rel="'+options.rel+'"' : ''; + + $(this).each(function(){ + t = $(this).text(); + + t = t.replace(/(https\:\/\/|http:\/\/)([www\.]?)([^\s|<]+)/gi,'$1$2$3'); + t = t.replace(/([^https\:\/\/]|[^http:\/\/]|^)(www)\.([^\s|<]+)/gi,'$1$2.$3'); + t = t.replace(/<([^a]|^\/a])([^<>]+)>/g, "<$1$2>").replace(/<\/a>/g, "").replace(/<(.)>/g, "<$1>").replace(/\n/g, '
'); + + $(this).html(t); + }); + }; +})( jQuery ); \ No newline at end of file diff --git a/solr/webapp/web/js/main.js b/solr/webapp/web/js/main.js index c41c03e1095..10a10e65723 100644 --- a/solr/webapp/web/js/main.js +++ b/solr/webapp/web/js/main.js @@ -27,6 +27,7 @@ require 'lib/order!lib/jquery.sparkline', 'lib/order!lib/jquery.timeago', 'lib/order!lib/highlight', + 'lib/order!lib/linker', 'lib/order!lib/ZeroClipboard', 'lib/order!lib/d3', 'lib/order!lib/chosen', diff --git a/solr/webapp/web/js/scripts/plugins.js b/solr/webapp/web/js/scripts/plugins.js index 2adf6b854f7..39599dc7871 100644 --- a/solr/webapp/web/js/scripts/plugins.js +++ b/solr/webapp/web/js/scripts/plugins.js @@ -185,16 +185,25 @@ sammy.get if( 'description' === detail_key ) { - detail_value = detail_value.replace( /,/g, ',​' ); - } - else if( 'src' === detail_key ) - { - detail_value = detail_value.replace( /\//g, '/​' ); + // For list of components + if(detail_value.match(/^Search using components: /)) { + detail_value = detail_value + .replace( /: /, ':"; + } } content += '
  • ' + "\n"; content += '
    ' + detail_key + ':
    ' + "\n"; - content += '
    ' + detail_value + '
    ' + "\n"; + if($.isArray(detail_value)) { + $.each(detail_value, function(index, value) { + content += '
    ' + value + '
    ' + "\n"; + }); + } + else { + content += '
    ' + detail_value + '
    ' + "\n"; + } content += '
  • ' + "\n"; } else if( 'stats' === detail_key && details[detail_key] ) @@ -232,6 +241,24 @@ sammy.get $( 'a[href="' + decodeURIComponent( context.path ) + '"]', frame_element ) .parent().addClass( 'expanded' ); + + // Try to make links for anythign with http (but leave the rest alone) + $( '.detail dd' ).each(function(index) { + var txt = $(this).html(); + if(txt.indexOf("http") >= 0) { + $(this).linker({ + target: '', //blank,self,parent,top + className : 'linker', + rel : '' + }); + } + }); + + // Add invisible whitespace after each slash + $( '.detail a.linker' ).each(function(index) { + $(this).html( $(this).html().replace( /\//g, '/​' ) ); + }); + $( '.entry', frame_element ) .each