Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

CHContext (https://github.com/psnc-dl/chcontext/) to javascriptowy widżet dostarczający listę odnośników do zasobów dziedzictwa kulturowego utworzonych na podstawie wyników wyszukiwania bazującego na określonym elemencie zawartości określonego elementu strony WWW, na której widżet jest osadzony.

...

Dodaj następujący fragment kodu do pliku dlibra-webapp/WEB-INF/layout/templates/simple-inv.vm pomiędzy liniami #foreach( $comp in $left) a #if ( ${comp.RenderedTemplate}!= "" )

Code Block
languagexml
titledlibra-webapp/WEB-INF/layout/templates/simple-inv.vm
linenumberstrue
#if(4 == ${velocityCount} && ${pageId} == "docmetadata")

    <div id="chcontext-widget" class="chcontext-widget-wrapper" data-searchProvider="FBC+" data-resultCount="5" data-queryselector="span#Subject a" data-show-img="false">
        <h3 id="chc-widget-header" class="leftDiv"> $res.getProperty("CHContext.SeeAlso") <img src="${homepageUrl}/style/dlibra/[theme1]/l_open.gif" class="sh_button"></h3>
        <div class="chcontext-widget-container left_box"></div>
    </div>

    <script type="text/javascript" src="http://cdn.jsdelivr.net/chcontext/1.1.0/chcontext.min.js"></script>
#end

Alternatywnie można skopiować plik chcontext.min.js na serwer i wskazać na skrypt zlokalizowany na własnym serwerze.

Powyższa konfiguracja widżetu zakłada, że:

  • wyszukiwanie będzie realizowane poprzez FBC+ (data-searchProvider="FBC+")
  • wyświetlanych będzie 5 elementów (data-resultCount="5")
  • wyszukiwana będzie zawartość elementu wskazanego poprzez selektor span#Subject a (data-queryselector="span#Subject a"), czyli słowa kluczowe
  • nie będą wyświetlane miniaturki (data-show-img="false")
  • w dlibrze zdefiniowane są etykiety tekstowe dla klucza CHContext.SeeAlso
  • temat kolorystyczny to theme1.

Następnie należy zdefiniować etykiety tekstowe dla klucza . W tym celu w pliku dlibra-webapp/WEB-INF/components/resources/WEBAPP_pl.xml dodajemy wpis:

Code Block
titledlibra-webapp/WEB-INF/components/resources/WEBAPP_pl.xml
<entry key="CHContext.SeeAlso">Zobacz także</entry>

Analogicznie w pliku dlibra-webapp/WEB-INF/components/resources/WEBAPP_en.xml dodajemy:

Code Block
titledlibra-webapp/WEB-INF/components/resources/WEBAPP_en.xml
<entry key="CHContext.SeeAlso">See also</entry>
Code Block
languagexml
titledlibra-webapp/WEB-INF/components/templates/custom_library.vm
linenumberstrue
#macro ( dispNode $node $info)
    <span class="attributeJustify">
         #if($documentMetadata.getAttributeValues($info.Id, $metadataLanguage, $valueLangType).size() > 0)
         <a href="${homepageUrl}${servletName}/indexsearch?attId=${info.id}" class="attributeInfo"> 
         #set($t = "#printParentsLabels($node 0)")
         #if($printAttParents)
            ${t.trim()}:
         #else
             ${node.Info.Label}:
         #end
         </a>
     <ul>
     <li class="attributeValuesListElement">
     <span class="attribute" style="margin:0;">
            #foreach($value in $documentMetadata.getAttributeValues($info.Id, $metadataLanguage, $valueLangType))
       #if($velocityCount > 1); #end
        #if($value.toString().startsWith('http://'))
 #set($urlName = ${res.getProperty("element_metadata.link")})
           #set($urlValue = $value)
           #if($value.toString().indexOf(" ") > 0)
            #set($urlValue = $value.toString().substring(0,$value.toString().indexOf(" ")))
            #set($urlName = $value.toString().substring($value.toString().indexOf(" "), $value.toString().length()))
           #end
           <a href="${urlValue}" target="_blank">$urlName</a>
           <a href="${urlValue}" target="_blank">
                <img alt=" " src="${homepageUrl}/style/common/img/popicon.gif"/></a>
        #elseif($value.toString().startsWith('oai:'))
           #if(${conf.get("use.fbc")})
           <a href="${conf.get("fbc.url")}/id/${value}">${value}</a>
           #else
           <a href="${homepageUrl}${servletName}/docmetadata?id=${value}">${value}</a>
           #end
        #elseif(!$info.getRoleId().toString().equals("description"))
         #set ( $strValue = $value.toString() )
         <script type="text/javascript"><!--
              function submit${info.Id}_${velocityCount}() {
                        submitQuery(${info.Id},'\'${escapeUtil.escapeForJS($strValue)}\'');
                      }
           //--> </script>
         <a href="javascript:submit${info.Id}_${velocityCount}()">${escapeUtil.escapeHtml("${value}")}</a>
        ## perform slice of long data but considering only "description" attributes
        #else
           #set ( $strValue = $value.toString() )
           <script type="text/javascript"><!--
              function submit${info.Id}_${velocityCount}() {
                        return '\'${escapeUtil.escapeForJS($strValue)}\'';
                  }
           //--> </script> 
           <a href="javascript:submit${info.Id}_${velocityCount}()" id="attr_anch_${info.Id}_${velocityCount}">${escapeUtil.escapeHtml("${value}")}</a>
        #end
      #end
      </span>
      </li>
      </ul>
      #end
      </span>
    #end