• デジタルアーカイブ公開システム(9)

    今まで開発していたプラグインの新しいバージョンとして、MLA(博物館・美術館、図書館、公文書館)などで利用できるように、今まで文書用プラグインで用いていたopenseadragonを用いて表示すること(書籍のように画面の拡大が可能なモード)及び、IIIF対応マニフェストによる画像などを表示できるようにした。

    openseadragonの利用のためjQueryは以下のようにした。

    jQuery(window).load(function () {
      wH=wW * .56; 
      var iw = jQuery('#sp-thumbnail').width();
      jQuery('#contentDiv').css('left', iw + 'px');
      jQuery('#contentDiv').css('height', wH + 'px');
      jQuery('#sp-thumbnail').css('height', wH + 'px');
      jQuery("#pageNum").html(1);
     //画面サイズ変更時に呼ばれる
      clearTimeout( checkResize );
      var checkResize;
      jQuery(window).resize(function(){
    if (!(jQuery('#contentDiv').hasClass('fullpage'))){
      checkResize = setTimeout( resizing, 100 );
    }
      });
      //リサイズ完了時に実行する処理
      function resizing() {
      var wW=jQuery('#bookcontents').width();
      wH=wW * .56; 
      var iw = jQuery('#sp-thumbnail').width();
      jQuery('#contentDiv').css('left', iw + 'px');
      jQuery('#contentDiv').css('height', wH + 'px');
      jQuery('#sp-thumbnail').css('height', wH + 'px');
      }
     //load-imageクラスのクリック
      jQuery(".load-image").click(function () {
        var spage = jQuery('li.load-image').index(this);
        var ipage = parseInt(spage);
        viewer.goToPage(ipage);
        OpenSeadragon.cancelEvent(event);
        });
    //OpenSeadragonで設定
      viewer = OpenSeadragon({
        id: "contentDiv",
        prefixUrl:     "images/",
        visibilityRatio:    1,
        defaultZoomLevel: 	1,
        minZoomLevel: 	1,
        maxZoomLevel: 	3,
        sequenceMode:  true,
        initialPage: 0,
        showNavigator: true,
        toolbar: "toolbarDiv",
        fullPageButton: "full-page",
        rotateLeftButton: "rotate-left",
        rotateRightButton: "rotate-right",
        zoomInButton: "zoom-in",
        zoomOutButton: "zoom-out",
        homeButton: "reset",
        nextButton: "next",
        previousButton: "previous",
        tileSources:   [ ]
    	});
    //OpenSeadragonで表示
      viewer.open(idata);
    	//ページ変更時イベント
      viewer.addHandler("page", function (data) {
        if (!(jQuery('#contentDiv').hasClass('fullpage')))
        {
          jQuery('#pageNum').value = (data.page +1);
          jQuery('#sp-thumbnail ul li').css('background-color', 'transparent'); 
          var target = jQuery('#sp-thumbnail ul li').eq(data.page);
          jQuery("#pageNum").html(data.page+1);
          target.css('background-color', '#f8f4e6');
          var box = jQuery('#sp-thumbnail');
          var top = box.scrollTop();
          var dif = 0;
          var pad = box.offset().top;
          dif = target.offset().top;
          box.scrollTop(top + dif - pad);
        }
      });
    });

    プラグインでは以下に赤字で示した部分でスクリプトにデータを設定している。

    // openseadragonで表示する
    
    function da_book_hyouji($attachments){
    	?>
    	<div id="bookcontainer">
    		<header>
    		<div id="toolbarDiv">
    		<span id="button-panel">
    		<a id="full-page" href="#full-page">全画面表示</a>
    		&nbsp;|&nbsp; <a id="reset" href="#reset">リセット</a>
    		&nbsp;|&nbsp; <a id="zoom-out" href="#zoom-out">縮小</a>
    		&nbsp;|&nbsp; <a id="zoom-in" href="#zoom-in">拡大</a>
    		</span>
    		</div>
    		</header>
    		<div id="bookcontents">
    			<div id="sp-thumbnail" >
    			<ul>
    <?php
    	$bno = 0;
    	foreach ($attachments as $attachment) {
    		$bno = $bno + 1;
    ?>
    			 <li class="load-image"  id=<?php echo $bno; ?> >
    			 <img src=<?php echo(wp_get_attachment_image_url($attachment->ID,'thumbnail')); ?> />
    			<br />
    			 </li>
      <?php
    	 }
    ?>
    			<li></li>
    			</ul>
    			</div>
    			<div id="contentDiv"  style="background-color:transparent; "></div>
    			</div>
    		<footer>
    			<div id="footerDiv" >
    			<a id="previous" href="#previous-page">前頁</a>
    			&nbsp;|&nbsp; <a id="next" href="#next-page">次頁</a>
    			&nbsp;|&nbsp; 画像番号:<div id="pageNum"></div>
    			</div>
    		</footer>
    	</div>
    </div>
    <script type="text/javascript">
    	var viewer;
    	var idata = [
    		<?php  foreach ($attachments as $attachment) {
    		?>
    	{  type: 'image',
    		url:' <?php echo(wp_get_attachment_image_url($attachment->ID,'full')); ?>',
    	},
    <?php
    	}
    ?>
    ];
    </script>
    <?php
    }

    IIIF対応マニフェストによる画像などを表示は以下のようにiframeに該当マニフェストを変数とし、miradorを用いたIIIF対応画像表示ページを呼び出している。

    /* IIIF 表示 */
    function da_iiif_hyouji($iiifurl){
    ?>
    <div id="layout" class="pure-g">
    <div class="pure-u-1 pure-u-md-3-5">
    <div class="l-box" >
    <?php
    $plugin_url = plugin_dir_url( __FILE__ );
    ?>
    <div class="iframe-iiif" style="padding-top:66.66%;">
    <iframe src="<?php echo $plugin_url."iiifm.html?manifest=".$iiifurl; ?>" width="800px" height="530px" frameborder="0" id="frame" allow="fullscreen">
    You need an iFrame capable browser to view this.
    </iframe>
    </div>
    </div></div>
    <div class="pure-u-1 pure-u-md-2-5">
    <div class="l-box">
    <?php echo da_mdlist();
    ?>
    </div>
    </div>
    <?php
    }

    これで今回開発したプラグインは一様完成とする。

    テーマはこのプラグイン用に作成したものを標準としているが、WordPress標準テーマTwnty Twentyの子テーマを作成したのでダウンロードして利用ください。

    子テーマダウンロード

     

     

  • IIIF対応画像表示できるデジタルアーカイブ公開プラグインを作成しました

    今まで開発していたプラグインの新しいバージョンとして、MLA(博物館・美術館、図書館、公文書館)などのデジタルアーカイブをインターネット上で検索・公開するためのWordPressのプラグインを作成しました。

    開発したプラグインは、知のデジタルアーカイブに関する研究会の提言「デジタルアーカイブ構築のガイドライン」の「システム機能仕様」の次の5項目をほぼ満足するものである。

    1. メタデータおよびコンテンツを1件ずつ画面から登録する機能
    2. 検索対象とするメタデータ項目について、項目を定めずにすべて検索を行う「簡易検索(全文検索)」機能。
    3. 検索対象とするメタデータ項目を複数指定でき、AND/OR条件を指定できる「詳細検索」機能。(AND条件のみ指定)
    4. 資料整理のため、および利用者の利便性のために、資料分類などの階層をたどりながら資料を閲覧する機能。(カテゴリー分け)
    5. 登録されたメタデータおよびコンテンツを業務担当者が確認し、編集できる、確認の結果、「公開承認」か「非公開」の判断を行い、それをシステムに登録できる機能。

    また、デジタルアーカイブにおいて画像を公開し共有するための国際的な枠組みが作られ(International Image Interoperability Framework、略してIIIF)、採用が広まりつつあることに対応するために、公開されているマニフェストを利用して画像表示を行えるようにしてある。

    実装例をhttps://rei.kanselab.net/に作成しました。

トップへ戻る