opacapp / opacclient

[unmaintained] A Java client library and an Android app to access more than 1,000 public and scientific libraries from all over the world.
https://opacapp.net
MIT License
156 stars 61 forks source link

Various compatibility issues with VoeBB #214

Open raphaelm opened 10 years ago

raphaelm commented 10 years ago

VOeBB is one aDIS installation for a bunch of libraries.

hurzl commented 9 years ago

I don't understand. Vielleicht auf deutsch? Warum geht VOEBB nicht?

Voebb used to work (partially) a month ago

raphaelm commented 9 years ago

Dass Voebb gerade nicht mehr geht habe ich selbst die Woche erst erfahren und hat hiermit nichts zu tun. Ich muss am Wochenende mal herausfinden, ob ich da was tun kann.

Hier geht es darum, dass man bei den voebb nicht vorbestellen kann, da das dort anders funktioniert als überall sonst.

Am 13. Februar 2015 15:20:15 MEZ, schrieb hurzl notifications@github.com:

I don't understand. Vielleicht auf deutsch? Warum geht VOEBB nicht?


Reply to this email directly or view it on GitHub: https://github.com/raphaelm/opacclient/issues/214#issuecomment-74259893

hurzl commented 9 years ago

Jetzt geht es wieder, aber wie auch schon vorher werden Vormerkungen/Bestellungen/Bereitstellungen nicht angezeigt. Wo muss ich da suchen?

raphaelm commented 9 years ago

Für das Parsen der in Berlin eingesetzten Bibliothekssoftware ist de.geeksfactory.opacclient.apis.Adis zuständig, konkret die Methode account() die dann wiederum eine Methode aufruft, die für die Vormerkungen zuständig ist.

hurzl commented 9 years ago

Adis.java, Zeile 1168 bitte "Vormerkungen" zulassen:

                                if (( tr.text().contains("Reservationen") ||
                                      tr.text().contains("Vormerkungen") )

dann erhält man die Tabelle der Vormerkungen. Die sieht jedoch wie folgt aus

 <tr class="rTable_tr_even"> 
  <td class=""> <label for="cellCheck" class="invisible">Markieren</label><input type="checkbox" name="cellCheck" fld="###CHK_1" id="cellCheck"> </td> 
  <td class=""> 15.02.2017 </td> 
  <td class=""> ZLB: Berliner Stadtbibliothek (BStB) </td> 
  <td class=""> [Titel ohne Autor] </td> 
  <td class=""> 15.02.2015 </td> 
 </tr>

daraus wird dann Autor "ZLB" und Titel "Berliner Stadtbibliothek (BStB)" gemacht (das ist aber der Abholort). Der Autor ist nicht in der Tabelle. Wie macht man das nun kompatibel bzw. wonach soll man unterscheiden wie man parsen soll? Und was ist mit AccountData.KEY_RESERVATION_BRANCH gemeint?

raphaelm commented 9 years ago

Danke für das Feedback :) Die Korrektur mit "Vormerkungen" statt Reservationen kommt natürlich ins nächste Update.

Dass der Autor nicht in der Tabelle ist, ist an sich kein Problem, man muss keinen Autor setzen. Interessant ist eben nur, dass der Titel hier wohl in Spalte 4 ist, während er in den meisten Adis-Bibliotheken in Spalte 3 zu sein scheint. Wie man das clever erkennt, müsste ich mir genauer angucken. Hast du mir ein HTML-Beispiel mit der ganzen Tabelle, also inklusive Tabellenkopf? Du darfst natürlich auch gerne selbst basteln, aber dann schaue ich mir das die Woche auch mal an.

KEY_RESERVATION_BRANCH wäre dann das Feld wo die Zweigstelle, also "ZLB: Berliner Stadtbibliothek (BStB)" reingeschrieben werden sollte.

hurzl commented 9 years ago

Ok man könnte zB. im header das VOEBB erkennen ...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
 <!-- solution for: conditional-comments block downloads  -->
 <!--[if IE]><![endif]-->
 <head>
  <style type="text/css">
           @import url(css/aDISStandard.css);
   </style>
  <script src="js/aDISMain.js" type="text/javascript"></script>
  <script src="js/fckeditor/fckeditor.js" type="text/javascript"></script>
  <title> Wir bringen Medien in Bewegung </title>
  <script type="text/javascript">
   var text = '';
   window.defaultStatus=text;
</script>
  <title>VOEBB</title>
  <!--
  (c) Software: aDIS/BMS und aDIS/Archiv by |a|S|tec| GmbH Berlin und Muenchen - www.astec.de
  CSS-Anpassungen/Beratung Barrierefreiheit: ena Webstudio - www.ena-webstudio.com
  Formulare, Tabellen, etc. werden automatisch durch aDIS generiert
  Projekt: VOEBB, Deutsch - OPAC03
  Letztes Update: 22.10.2011
  //-->
  <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame -->
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta http-equiv="content-style-type" content="text/css">
  <meta http-equiv="content-script-type" content="text/javascript">
  <meta http-equiv="content-language" content="de">
  <meta name="language" content="de">
  <!-- Individuelles Meta -->
  <meta name="description" content="Der Service der �ffentlichen Bibliotheken des Landes Berlin sowie der Zentral- und Landesbibliothek Berlin umfasst die Recherche im elektronischen Katalog mit einem Medienbestand von 2,7 Millionen Titeln und f�r eingetragene Bibliotheksnutzer die Bestellung von Medien, Kontoverwaltung, sowie zus�tzliche Angebote, wie zum Beispiel der kostenlose Zugang zum Munziger Archiv oder die Online-Ausleihe digitaler Medien wie E-Books, E-Audios und E-Videos �ber www.voebb.de">
  <!-- START: LAYOUT-Framework -->
  <link rel="stylesheet" href="/aDISWeb_vob/css/framework.css" type="text/css" media="screen">
  <!--[if lte IE 7]><link rel="stylesheet" href="/aDISWeb_vob/css/framework_iefixes.css" type="text/css" media="screen" /><![endif]-->
  <!-- START: aStec-Styles -->
  <link rel="stylesheet" href="/aDISWeb_vob/css/layout.css" type="text/css" media="screen">
  <!--[if lt IE 7]><link rel="stylesheet" href="/aDISWeb_vob/css/ieonly.css" type="text/css" media="screen" /><![endif]-->
  <!--[if IE 7]><link rel="stylesheet" href="/aDISWeb_vob/css/ieonly7.css" type="text/css" media="screen" /><![endif]-->
  <!--[if gte IE 8]><link rel="stylesheet" href="/aDISWeb_vob/css/ieonly8.css" type="text/css" media="screen" /><![endif]-->
  <link rel="stylesheet" href="/aDISWeb_vob/css/print.css" type="text/css" media="print">
  <!-- Mobildarstellung -->
  <meta name="viewport" content="width=device-width; initial-scale=1.0">
  <link rel="stylesheet" href="/aDISWeb_vob/css/media.css" type="text/css">
  <!--[if lt IE 9]>
   <script type="text/javascript" src="/aDISWeb_vob/js/css3-mediaqueries.js"></script>
   <![endif]-->
  <!-- Sonstiges -->
  <link rel="shortcut icon" type="image/x-icon" href="/aDISWeb_vob/favicon.ico">
  <script type="text/javascript" src="/aDISWeb_vob/js/cookies.js"></script>
  <script type="text/javascript" src="/aDISWeb_vob/js/efa_fontsize.js"></script>
 </head>
 <body class="zweier">
  <script type="text/javascript"><!--
function startIdleTimer() {
  if (typeof idleId != 'undefined')
    clearTimeout(idleId)
  idleId = window.setTimeout("to('"+ idleLink + "')", idleTime);
  }
function to(link) {
  location.href=link;
  }
function EventTarget() {
   this.handlers = [];
   }
EventTarget.prototype = {
   constructor : EventTarget,
   addhandler: function (type, handler) {
           if (typeof this.handlers[type] == "undefined")
                   this.handlers[type] = [];
           this.handlers[type].push(handler);
           },
   fire : function (event) {
           if (this.handlers[event.type] instanceof Array) {
                   var handlers = this.handlers[event.type];
                   for (var i = 0; i < handlers.length; i++)
                           handlers[i](event);
                   }
           },
   };
var eventHandler = new EventTarget();
function setupHandlers()  {
   document.onmousedown = docOnEvent;
   document.onkeydown = docOnEvent;
   document.onkeypress = docOnEvent;
   document.onhelp = cancelF1;

   initFormElements();
   initIframes();
   initScrollPos();
   }
function getDimensions()  {
   document.forms[0].scrDim.value = screen.width + ";" + screen.height;
   if (window.innerWidth)
           document.forms[0].winDim.value = window.innerWidth + ";" + window.innerHeight;
   else
           document.forms[0].winDim.value = document.body.offsetWidth + ";" + document.body.offsetHeight;
   node = document.getElementById("img_content");
   if (node != undefined)
           document.forms[0].imgDim.value = node.offsetWidth + ";" + node.offsetHeight;
   }
window.onload = function (e)
{
  idleTime=360000000;
  idleLink="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/$Timeout";
  startIdleTimer();
if (!e) var e = window.event;
document.forms[0].scriptEnabled.value=true;
if (self.specialOnLoad != undefined)
   specialOnLoad(e);
setupHandlers();
getDimensions();
}
// --></script>
  <script type="text/javascript">
// <![CDATA[
  if (efa_fontSize) efa_fontSize.efaInit();
// ]]>
</script>
  <div class="aDISMaske">
   <form method="post" name="Form0" action="/aDISWeb/app;jsessionid=XYZ" onsubmit="return formOnSubmit();">
    <input type="hidden" name="service" value="direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/$Form.form">
    <input type="hidden" name="sp" value="S0">
    <input type="hidden" name="Form0" value="focus,keyCode,stz,source,selected,requestCount,scriptEnabled,scrollPos,scrDim,winDim,imgDim,$FormConditional,textButton,$Toolbar,$FormConditional$0,textButton$0,$FormConditional$1,$FormConditional$2,$FormConditional$3,$FormConditional$4,$FormConditional$5,cellCheck,cellCheck$0,$FormConditional$6,textButton$1,$FormConditional$7,$FormConditional$8,$FormConditional$9,$FormConditional$10,$FormConditional$11,$Toolbar$0">
    <input type="hidden" name="focus" value="">
    <input type="hidden" name="keyCode" value="0">
    <input type="hidden" name="stz" value="">
    <input type="hidden" name="source" value="">
    <input type="hidden" name="selected" value="">
    <input type="hidden" name="requestCount" value="7">
    <input type="hidden" name="scriptEnabled" value="F">
    <input type="hidden" name="scrollPos" value="0">
    <input type="hidden" name="scrDim" value="">
    <input type="hidden" name="winDim" value="">
    <input type="hidden" name="imgDim" value="">
    <input type="hidden" name="$FormConditional" value="T">
    <input type="hidden" name="$FormConditional$0" value="T">
    <input type="hidden" name="$FormConditional$1" value="F">
    <input type="hidden" name="$FormConditional$2" value="F">
    <input type="hidden" name="$FormConditional$3" value="F">
    <input type="hidden" name="$FormConditional$4" value="F">
    <input type="hidden" name="$FormConditional$5" value="F">
    <input type="hidden" name="$FormConditional$6" value="T">
    <input type="hidden" name="$FormConditional$7" value="F">
    <input type="hidden" name="$FormConditional$8" value="F">
    <input type="hidden" name="$FormConditional$9" value="F">
    <input type="hidden" name="$FormConditional$10" value="F">
    <input type="hidden" name="$FormConditional$11" value="F">
    <div id="wrapper">
     <div id="wrapper_inside">
      <div id="header" role="banner">
       <div class="inside">
        <ul id="sprunglinks">
         <li><a class="sprung" href="#main">Zum Hauptinhalt</a></li>
         <li><a class="sprung" href="#left">Zur Navigation</a></li>
        </ul>
        <p id="logo"> <a href="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/$InternalLink.directlink&amp;sp=S%24%24GFNV_1&amp;sp=SStartseite%3DCW00&amp;requestCount=7" fld="$$GFNV_1" title="Zur Startseite"> <img src="/aDISWeb_vob/images/voebb_logo.gif" height="90" width="64" alt="Verbund der öffentlichen Bibliotheken Berlins"> </a> <span class="outside">.</span> </p>
        <script type="text/javascript">
          // <![CDATA[
            if (efa_fontSize) document.write(efa_fontSize.allLinks);
          // ]]>
          </script>
        <div class="block" id="spruch">
         <span> Wir bringen Medien in Bewegung </span>
        </div>
       </div>
      </div>
      <div id="container">
       <div id="container_inside">
        <div id="left">
         <div class="inside">
          <h1 class="invisible">Navigation</h1>
          <div class="block" id="navbox">
           <div id="R20">
            <span class="bnzeig"> Sie sind angemeldet </span>
            <span class="mmzeig"> </span>
           </div>
          </div>
          <div class="mod_navigation block" id="unav" role="navigation">
           <div class="tree_div">
            <ul class="tree_ul">
             <li class="tree_leaf_li"> <a href="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/$Tree.treeNodes&amp;sp=SH&amp;requestCount=7" class="tree_leaf_a"><span>Startseite</span></a><span class="outside">.</span></li>
             <li class="tree_leaf_li"> <span class="tree_disabled">Anmelden</span> <span class="outside">.</span></li>
             <li class="tree_leaf_li"> <a href="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/$Tree.treeNodes&amp;sp=SL2&amp;requestCount=7" class="tree_leaf_a"><span>Abmelden</span></a><span class="outside">.</span></li>
             <li class="tree_leaf_li"> <a href="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/$Tree.treeNodes&amp;sp=SAX&amp;requestCount=7" class="tree_leaf_a"><span>Aktuelles</span></a><span class="outside">.</span></li>
             <li class="tree_leaf_li_sel"> <strong><span class="tree_strong">Mein Konto</span></strong></li>
             <li class="tree_branch_li"> <a href="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/$Tree.treeNodes&amp;sp=SS1&amp;requestCount=7" class="tree_branch_a"><span>Suche</span></a><span class="outside">.</span></li>
             <li class="tree_branch_li"> <a href="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/$Tree.treeNodes&amp;sp=SF1&amp;requestCount=7" class="tree_branch_a"><span>Fernleihe</span></a><span class="outside">.</span></li>
             <li class="tree_leaf_li"> <a href="http://www.bibliothek-digital.de/berlin" class="tree_leaf_a"><span>VOeBB24</span></a><span class="outside">.</span></li>
             <li class="tree_leaf_li"> <a href="http://www.munzinger.de/search/login?portalid=50158" target="&quot;_blank&quot;" class="tree_leaf_a"><span>Munzinger</span></a><span class="outside">.</span></li>
             <li class="tree_leaf_li"> <a href="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/$Tree.treeNodes&amp;sp=SF3&amp;requestCount=7" class="tree_leaf_a"><span>Aufsätze im GBV</span></a><span class="outside">.</span></li>
             <li class="tree_branch_li"> <a href="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/$Tree.treeNodes&amp;sp=SK2&amp;requestCount=7" class="tree_branch_a"><span>Kontakt</span></a><span class="outside">.</span></li>
             <li class="tree_leaf_li"> <a href="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/$Tree.treeNodes&amp;sp=SW1&amp;requestCount=7" class="tree_leaf_a"><span>Informationen</span></a><span class="outside">.</span></li>
            </ul>
           </div>
          </div>
          <!-- incl=includeBOEB.html -->
          <p class="block" id="boeb"> <a href="http://service.berlin.de/stadtbibliotheken/" rel="external" onclick="window.open(this.href); return false;">Zu den Berliner Öffentlichen Bibliotheken <span class="invisible">(Link �ffnet in neuem Fenster)</span> </a> </p>
          <!-- stop -->
         </div>
        </div>
        <div id="main" role="main">
         <div class="inside">
          <div class="block">
           <div class="block" id="topleiste">
            <p id="breadcrumb"><span class="invisible">Vorige Seiten: </span> <span class="navicl"> <a href="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/navpath.intlink.directlink&amp;sp=S%24%24GFNV_1&amp;sp=SD%2F00&amp;requestCount=7" fld="$$GFNV_1" title="Startseite"> Startseite </a> <span class="outside">.</span> &gt; <a href="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/navpath.intlink.directlink&amp;sp=S%24%24GFNV_2&amp;sp=SI3AU&amp;requestCount=7" fld="$$GFNV_2" title="Anmeldung / Benutzerkonto"> Anmeldung / Benutzerkonto </a> <span class="outside">.</span> &gt; <a href="/aDISWeb/app;jsessionid=XYZ?service=direct/1/POOLVX00vb@@@@@@_4B004600_2EE8EF80/navpath.intlink.directlink&amp;sp=S%24%24GFNV_3&amp;sp=SAAAU&amp;requestCount=7" fld="$$GFNV_3" title="Benutzerkonto Übersicht"> Benutzerkonto Übersicht </a> <span class="outside">.</span> </span> </p>
            <div id="druckversion">
             <input type="submit" name="textButton" value="Druckversion" fld="$$GFBO_88">
            </div>
            <div class="clear"></div>
           </div>
           <h1><span class="invisible">Aktuelle Seite: </span> <span class="txtinsert"> Benutzerkonto Vormerkungen </span> </h1>
           <div class="toolbar_div">
            <ul class="toolbar_ul">
             <li class="toolbar_li"> <input type="image" src="/aDISWeb/images/POOLVX00vb@@@@@@/gif/POOLVX00vb@@@@@@_53010E00_25522680.gif;jsessionid=XYZ" alt="Zurück zur vorherigen Seite" id="Toolbar_0" name="$Toolbar_0" title="Zurück zur vorherigen Seite" onmouseover="self.status='Zurück zur vorherigen Seite';return true;" onmouseout="self.status='';" class="toolbar_img"><label for="Toolbar_0"><span class="toolbar_txt">Zurück</span></label></li>
             <li class="toolbar_li"> <input type="image" src="/aDISWeb/images/POOLVX00vb@@@@@@/gif/POOLVX00vb@@@@@@_53002400_228F8280.gif;jsessionid=XYZ" alt="Beenden der Recherche" id="Toolbar_2" name="$Toolbar_2" title="Beenden der Recherche" onmouseover="self.status='Beenden der Recherche';return true;" onmouseout="self.status='';" class="toolbar_img"><label for="Toolbar_2"><span class="toolbar_txt">Beenden</span></label></li>
             <li class="toolbar_li"> <input type="image" src="/aDISWeb/images/POOLVX00vb@@@@@@/gif/POOLVX00vb@@@@@@_53001D00_228F8280.gif;jsessionid=XYZ" alt="Hilfe zur Vollanzeige" id="Toolbar_3" name="$Toolbar_3" title="Hilfe zur Vollanzeige" onmouseover="self.status='Hilfe zur Vollanzeige';return true;" onmouseout="self.status='';" class="toolbar_img"><label for="Toolbar_3"><span class="toolbar_txt">Hilfe</span></label></li>
            </ul>
            <div style="clear:both"></div>
           </div>
           <div class="fsgrp">
           </div>
           <div class="fsgrp">
            <div id="OPACLI" style="   width:99%;" class="aDISListe">
             <div class="html_div" style="width:99%; height:100%;">
              <p>Ihre Vormerkungen: Zur Zeit gibt es keine verfügbaren Exemplare für diese Titel.<br>Wenn ein verfügbares Exemplar vorhanden ist, wird Ihnen dieses am gewählten Ausgabeort bereitgestellt - siehe "Bereitstellungen" in Ihrem Konto.</p>
              <p> hurzl von github - Abholcode: 42 Hu</p>
             </div>
            </div>
            <div id="R04">
             <p> <input type="submit" name="textButton$0" value="Markierte Titel löschen" class="buttong_l" fld="$$GFBO_2"> <br class="klar"> </p>
            </div>
            <div id="R05">
             <div style="   width:99%; ">
              <div class="rTable_div">
               <table class="rTable_table" colcase="[, , , , ]" coldisable="[true, true, true, true, true]" width="100%">
                <colgroup>
                 <col width="04%">
                </colgroup>
                <colgroup>
                 <col width="14%">
                </colgroup>
                <colgroup>
                 <col width="19%">
                </colgroup>
                <colgroup>
                 <col width="34%">
                </colgroup>
                <colgroup>
                 <col width="29%">
                </colgroup>
                <thead class="rTable_thead">
                 <tr>
                  <th scope="col" class="rTable_th"></th>
                  <th scope="col" class="rTable_th">Bis</th>
                  <th scope="col" class="rTable_th">Ausgabeort</th>
                  <th scope="col" class="rTable_th">Titel</th>
                  <th scope="col" class="rTable_th">Vorgemerkt am</th>
                 </tr>
                </thead>
                <tbody>
                 <tr class="rTable_tr_even">
                  <td class=""> <label for="cellCheck" class="invisible">Markieren</label><input type="checkbox" name="cellCheck" fld="###CHK_1" id="cellCheck"> </td>
                  <td class=""> 15.02.2017 </td>
                  <td class=""> ZLB: Berliner Stadtbibliothek (BStB) </td>
                  <td class=""> Der Titel </td>
                  <td class=""> 15.02.2015 </td>
                 </tr>
                 <tr class="rTable_tr_odd">
                  <td class="rTable_td_check"> <label for="cellCheck_0" class="invisible">Markieren</label><input type="checkbox" name="cellCheck$0" fld="###CHK_2" id="cellCheck_0"> </td>
                  <td class="rTable_td_text"> 17.08.2015 </td>
                  <td class="rTable_td_text"> ZLB: Berliner Stadtbibliothek (BStB) </td>
                  <td class="rTable_td_text"> Auch ein Titel </td>
                  <td class="rTable_td_text"> 16.02.2015 </td>
                 </tr>
                </tbody>
               </table>
              </div>
             </div>
             <object data="/aDISWeb/app;jsessionid=XYZ?service=aDISPrint/POOLVX00vb@@@@@@_4B004600_2EE8EF80/$Plugin" id="$Plugin" height="0" type="application/x-aStec-aDISPrint" width="0"></object>
            </div>
            <div id="R06">
             <input type="submit" name="textButton$1" value="Markierte Titel löschen" class="buttong_l" fld="$$GFBO_12">
             <br class="klar">
            </div>
            <br>
            <span style="line-height:12px;">&nbsp;</span>
            <br>
           </div>
           <div class="clear"></div>
           <div class="toolbar_div">
            <ul class="toolbar_ul">
             <li class="toolbar_li"> <input type="image" src="/aDISWeb/images/POOLVX00vb@@@@@@/gif/POOLVX00vb@@@@@@_53010E00_25522680.gif;jsessionid=XYZ" alt="Zurück zur vorherigen Seite" id="Toolbar$0_0" name="$Toolbar$0_0" title="Zurück zur vorherigen Seite" onmouseover="self.status='Zurück zur vorherigen Seite';return true;" onmouseout="self.status='';" class="toolbar_img"><label for="Toolbar$0_0"><span class="toolbar_txt">Zurück</span></label></li>
             <li class="toolbar_li"> <input type="image" src="/aDISWeb/images/POOLVX00vb@@@@@@/gif/POOLVX00vb@@@@@@_53002400_228F8280.gif;jsessionid=XYZ" alt="Beenden der Recherche" id="Toolbar$0_2" name="$Toolbar$0_2" title="Beenden der Recherche" onmouseover="self.status='Beenden der Recherche';return true;" onmouseout="self.status='';" class="toolbar_img"><label for="Toolbar$0_2"><span class="toolbar_txt">Beenden</span></label></li>
             <li class="toolbar_li"> <input type="image" src="/aDISWeb/images/POOLVX00vb@@@@@@/gif/POOLVX00vb@@@@@@_53001D00_228F8280.gif;jsessionid=XYZ" alt="Hilfe zur Vollanzeige" id="Toolbar$0_3" name="$Toolbar$0_3" title="Hilfe zur Vollanzeige" onmouseover="self.status='Hilfe zur Vollanzeige';return true;" onmouseout="self.status='';" class="toolbar_img"><label for="Toolbar$0_3"><span class="toolbar_txt">Hilfe</span></label></li>
            </ul>
            <div style="clear:both"></div>
           </div>
          </div>
          <div class="clear"></div>
         </div>
         <div id="clear"></div>
        </div>
       </div>
       <!-- /container_inside -->
      </div>
      <!-- /container -->
      <div id="footer">
       <div class="inside">
        <p class="block" id="goingup"> <a href="#wrapper">Seitenanfang</a> </p>
        <div class="clear"></div>
       </div>
      </div>
     </div>
     <!-- /wrapper_inside -->
    </div>
    <!-- /wrapper -->
    <script src="/aDISWeb_vob/js/yaml-focusfix.js" type="text/javascript"></script>
   </form>
  </div>
 </body>
</html>
raphaelm commented 9 years ago

Das wäre eine Notlösung, aber besser wäre es, die Spaltenüberschriften selbst zu erkennen, damit man nicht bei der nächsten Bibliothek mit anderen Spalten wieder von vorne anfangen muss

hurzl commented 9 years ago

Habe mal die primitivstmögliche Erkennung benutzt und soweit funkt es Z. 1179:

              boolean voebb = rdoc.head().html().contains("VOEBB");
            for (Element tr : rdoc.select(".rTable_div tbody tr")) {
                if (tr.children().size() >= 4) {
                    Map<String, String> line = new HashMap<String, String>();
                                        if (voebb) {
                                            line.put(AccountData.KEY_RESERVATION_BRANCH,
                                                     tr.child(2).text().trim());
                                            line.put(AccountData.KEY_RESERVATION_TITLE,
                                                     tr.child(3).text().trim());
                                        } else {
                                            String text = tr.child(2).html();
                                            ...
                                        }

hmmm schöner wäre es, wenn die Einrückungen Leerzeichen statt Tabs wären ...

raphaelm commented 9 years ago

Wunderbar. Ich gucke dann die Woche, ob ich dass noch besser hinkriege, weil mir das nicht gefällt mit dem Titel.

hurzl commented 9 years ago

Fernleihbestellungen werden derzeit noch überhaupt nicht behandelt, oder?

... und dann gibts auch noch "Bestellungen/Magazin" und "Bestellwünsche" ...

raphaelm commented 9 years ago

Kann sein. Ich habe nur Ausweise für 1-2 Adis-Bibliotheken und dort gibt's das nicht.

raphaelm commented 9 years ago

Ich habe in f4f84fb79a369d7387df70e08446aedb988564eb mal Änderungen vollzogen, die helfen sollten. Ich werde auch heute ein Update der App in den Play Store stellen. Testen konnte ich es natürlich nicht, daher freue ich mich also über Feedback.

hurzl commented 9 years ago

Leider sind Vormerkungen nicht das Einzige, bei dem die Spalten vertauscht sind. Ich habe auch Fernleih- und Magazinbestellungen behandelt, siehe https://github.com/hurzl/opacclient/commits/voebb Dann müsste man die Spaltenerkennung nochmal machen, viellieicht sollte man das allgemeiner lösen.

raphaelm commented 9 years ago

Danke für die Kommentare und Commits. Ich kann nicht wirklich viel verbesern, da ich kein Konto der VOeBB habe, mit dem ich testen kann (ganz vielleicht kriege ich das aber irgendwann…). Ansonsten darfst du gerne einen Pull-Request stellen, aber bitte bitte versuche, ein bessere Erkennung als if(voebb) zu bauen, ich will das Projekt auch in Jahren noch pflegen können und das wird nichts, wenn es 100 Spezialfälle für einzelne Bibliothek gibt (außerdem kann man dann keine weiteren Bibliotheken mit ähnlichen Problemen anbinden, ohne dort ein Konto zu haben).

hurzl commented 9 years ago

ich habe schon gedacht, dass man für voebb eine extra Unterklasse von Adis bauen müsste, weil so vieles anders ist. Vielleicht für andere Bibs auch? Einfacher würde das ganze vielleicht, wenn man die Splitterei und Zeilentrennerei also Stringbehandlung auslagern könnte?

raphaelm commented 9 years ago

ich habe schon gedacht, dass man für voebb eine extra Unterklasse von Adis bauen müsste, weil so vieles anders ist. Vielleicht für andere Bibs auch?

Eine Subklasse wäre optisch hübscher als ganz viele ifs, das finde ich auch. Die Frage ist halt, ob das in Berlin wirklich Spezialanforderungen sind, die nur in Berlin so sind, oder ob Adis derart konfigurierbar ist, dass jede Bibliothek eine beliebige Mischung dieser Einstellungen hat -- dann würden Subklassen sehr wenig Sinn machen, weil eine Subklasse pro Bibliothek gar nicht schön ist. Ich habe nächste Woche evtl. eine Möglichkeit, Kontakt zur Bibliothek herzustellen, vielleicht kriege ich da ja was hilfreiches raus.

Einfacher würde das ganze vielleicht, wenn man die Splitterei und Zeilentrennerei also Stringbehandlung auslagern könnte?

Ja, das auf jeden Fall. Solche Stringbehandlung ist sowieso immer unglaublich mies und immer nur ein Ratespiel, das versucht, in möglichst vielen Fällen gute Ergebnisse zu liefern. Geht halt leider nicht besser :(

johan12345 commented 9 years ago

Man kann natürlich auch immer statt den ifs, die auf irgendeinen Unterschied zwischen den bisherigen Adis-Bibliotheken und der VOeBB prüfen, Attribute in der JSON-Konfigurationsdatei einfügen, über die man das dann manuell konfiguriert. Das hat zwar gegenüber einem if(voebb) den Vorteil, dass es sich für andere Bibliotheken verwenden lässt, die nur einen Teil der Berliner Zusatzfeatures nutzen, aber den Nachteil, dass eben nicht automatisch erkannt wird, welche Konfiguration vorliegt, was das Hinzufügen von Bibliotheken, von denen man keine Nutzerdaten hat, schwierig macht.

raphaelm commented 9 years ago

Eben. Manuelle Konfiguration wäre eine Lösung, aber ich wünsche mir eigentlich, insgesamt von Konfigurationen wegzukommen und so viel wie möglich automatisch zu erkennen -- um (a) leichter neue Bibliotheken anbinden zu können und (b) nicht immer nachjustieren zu müssen, wenn die Bibliothek ihre Konfiguration ändert -- was bei unserer Anzahl Bibliotheken durchaus häufig vorkommt.

hurzl commented 9 years ago

Also wie soll man nun unterscheiden? Es wird nicht anders gehen, als dass man weiß, man ist bei VOeBB und kann nicht bei Vormerkungen den Titel in "Autor: Titel" trennen. Irgendeine Erkennung muss schon sein

raphaelm commented 9 years ago

Wenn ich morgen die Zeit finde, werde ich mal aus deinen und meinen Änderungen einen Vorschlag zusammenzimmern

raphaelm commented 9 years ago

Ich habe mal deine Änderungen so integriert, wie ich es für eleganter halte: https://github.com/raphaelm/opacclient/compare/hurzl-voebb Bist du einverstanden? :) Kannst du es mal testen? Ich konnte nur prüfen, dass in Zürich trotzdem noch alles funktioniert.

Sorry, dass der Diff nicht ganz einfach zu lesen ist, weil durch die Eclipse→Android-Studio-Umstellung manche Tabs durcheinandergeraten sind. Wir werden das bald in Ordnung bringen (siehe #281)

hurzl commented 9 years ago

Das Prinzip sieht soweit ok aus. Bei den Ausleihen wird allerdings wieder nach Doppelpunkt getrennt, was nicht sein sollte (beruht auf meiner vorletzten Version von gestern?) Die Fernleihen./Magazin/Vormerkungen kann ich i.M. gar nicht testen, weil bei mir nicht vorhanden. Ich fände es außerdem letztlich besser, wenn diese nicht alle unter "Vorbestellungen" aufgelistet würden, sondern unter eigenen Überschriften, aber das kann man später immer noch machen ...

raphaelm commented 9 years ago

Bei den Ausleihen wird allerdings wieder nach Doppelpunkt getrennt, was nicht sein sollte (beruht auf meiner vorletzten Version von gestern?)

Nein, das basiert eigentlich auf heute morgen. Ich habe in Zeile 1131 ja ein if (split_title_author) { vor der Ersetzung, quasi analog zu deinen Änderungen. Ich könnte mir aber auch vorstellen, das an der Stelle komplett wegzulassen, dafür gibt es dort ja den /.

Die Fernleihen./Magazin/Vormerkungen kann ich i.M. gar nicht testen, weil bei mir nicht vorhanden. Ich fände es außerdem letztlich besser, wenn diese nicht alle unter "Vorbestellungen" aufgelistet würden, sondern unter eigenen Überschriften, aber das kann man später immer noch machen ...

Das macht die Oberfläche und die Api aktuell nicht mit, das wirds erstmal nicht geben ;)

raphaelm commented 9 years ago

So, siehe 104b46b und 75ebd1d :)

hurzl commented 9 years ago

So sieht das vorerst gut aus, wobei ich wie gesagt i.M. nur Ausleihen sehen kann

raphaelm commented 9 years ago

Ja gut, das ist immer so bei diesem Projekt, dass man nur begrenzt testen kann. Ich merge das einfach mal und dann schauen wir, was passiert.

hurzl commented 9 years ago

Das Praefix "Bereitstellung: " für bereitgestellte Bücher finde ich nicht so toll. Es ist 1. so lang, dass für den Standort nur noch 3 Zeichen bleiben, und 2. versteht man nicht unbedingt, dass es bereitgestellt ist. Darum hatte ich "Bereit: " eingefügt.

raphaelm commented 9 years ago

Habe das in 12ed3c702d55b1acf0b37be65125cb6a731baedf mal geändert.

hurzl commented 9 years ago

Danke, und beide Strings "Vormerkungen" müssen in den Singular, sonst werden einzelne nicht aufgeführt.