diff --git a/module/finc/src/finc/View/Helper/Root/Record.php b/module/finc/src/finc/View/Helper/Root/Record.php index 0ee9a8b12620a60eeb67ae596cf426a03a283c5c..63cb9fffe3821c1d3fa4f9f5a1df4c96f73cddd2 100644 --- a/module/finc/src/finc/View/Helper/Root/Record.php +++ b/module/finc/src/finc/View/Helper/Root/Record.php @@ -110,24 +110,29 @@ class Record extends \VuFind\View\Helper\Root\Record /** * Render a (list of) record icons. * + * @param string $tpl Define alternative template for record icon. Default: + * record-icon.phtml + * * @return string */ - public function getRecordIcon() + public function getRecordIcon($tpl = 'record-icon') { - return $this->renderTemplate('record-icon.phtml'); + return $this->renderTemplate($tpl . '.phtml'); } /** * Get the CSS class used to properly render an icon for given value * * @param string $value Value to convert into CSS class + * @param string $classfile Define alternative file for icon class without + * suffix. Default: record-icon-class.phtml * * @return string */ - public function getRecordIconClass($value) + public function getRecordIconClass($value, $classfile = 'record-icon-class') { return $this->renderTemplate( - 'record-icon-class.phtml', ['value' => $value] + $classfile . '.phtml', ['value' => $value] ); } diff --git a/themes/finc/images/sprite-mediaicons.png b/themes/finc/images/sprite-mediaicons.png new file mode 100644 index 0000000000000000000000000000000000000000..bef26e1f52b8b8c692e0b1825bd2135ace1e2a54 Binary files /dev/null and b/themes/finc/images/sprite-mediaicons.png differ diff --git a/themes/finc/scss/default.scss b/themes/finc/scss/default.scss index 338bc0ca9b17c4359f94f6a24844a14f0717e2db..48da08e2c9184a10cb8d209030f1fed1511d1767 100644 --- a/themes/finc/scss/default.scss +++ b/themes/finc/scss/default.scss @@ -148,4 +148,139 @@ form label {font-size: 1rem;} // Make sure, distance to close-button is sufficient .modal-body .alert-box { margin-top: 1.5rem; } // Secondary close button -.reveal-modal .secondary.close-reveal-modal { @include button-style($bg:$secondary-color); border-left-color: #fff; font-weight: 300; font-size: .8125rem; line-height: 15px; position: relative; right: auto; top: auto;} \ No newline at end of file +.reveal-modal .secondary.close-reveal-modal { @include button-style($bg:$secondary-color); border-left-color: #fff; font-weight: 300; font-size: .8125rem; line-height: 15px; position: relative; right: auto; top: auto;} + +//LIST VIEW +// Sprites Mediaicons +.sprite-media-icon { + width: 50px; + height: 54px; + float: left; + background: url('../../finc/images/sprite-mediaicons.png') 0 0 repeat; +} + +// 1st row +.book { + background-position: 0px 0px; +} + +.thesis { + background-position: -50px 0px; +} + +.ebook { + background-position: -100px 0px; +} + +.sets { + background-position: -150px 0px; +} + +.electronic { + background-position: -250px 0px; +} + +// 2nd row +.journal { + background-position: 0px -55px; +} + +.electronicjournal { + background-position: -50px -55px; +} + +.newspaper { + background-position: -100px -55px; +} + +.manuscript { + background-position: -150px -55px; +} + +.braille { + background-position: -200px -55px; +} + +.microfilm { + background-position: -250px -55px; +} + +// 3rd row +.software { + background-position: 0px -110px; +} + +.software-set { + background-position: -100px -110px; +} + +.kit { + background-position: -100px -110px; +} + +.image { + background-position: -150px -110px; +} + +.slide { + background-position: -200px -110px; +} + +.globe { + background-position: -250px -110px; +} + +// 4th row +.film { + background-position: 0px -165px; +} + +.dvd { + background-position: -50px -165px; +} + +.video { + background-position: -100px -165px; +} + +.video-set { + background-position: -100px -165px; +} + +.map { + background-position: -200px -165px; +} + +.unknown { + background-position: -250px -165px; +} + +// 5th row +.audio { + background-position: 0 -220px; +} + +.cd { + background-position: -50px -220px; +} + +.audiotape { + background-position: -100px -220px; +} + +.musicalscore { + background-position: -150px -220px; +} + +.chart { + background-position: -200px -220px; +} + +.physicalobject { + background-position: -250px -220px; +} + +// 6th row +.audio-set { + background-position: 0 -275px; +} \ No newline at end of file diff --git a/themes/finc/templates/RecordDriver/SolrDefault/record-icon-sprite-class.phtml b/themes/finc/templates/RecordDriver/SolrDefault/record-icon-sprite-class.phtml new file mode 100644 index 0000000000000000000000000000000000000000..67fd2b1e0804cc26a10bd364a160161d2184b85b --- /dev/null +++ b/themes/finc/templates/RecordDriver/SolrDefault/record-icon-sprite-class.phtml @@ -0,0 +1,175 @@ +<? +$normalizedValue = preg_replace('/[^a-z0-9]/', '', strtolower($this->value)); +// Convert normalizedValue to styles +switch ($normalizedValue) { + + //block book + case 'book': + case 'articles': + echo 'book'; + break; + //block general audio + case 'audio': + case 'musicrecording': + case 'record': + case 'soundrecordingmedium': + case 'soundrecording': + echo 'audio'; + break; + //block tape audio + case 'audiotape': + case 'cassette': + case 'soundcassette': + echo 'audiotape'; + break; + //block braille + case 'braille': + echo 'braille'; + break; + //block digital audio + case 'cd': + case 'dvdaudio': + case 'sounddisc': + echo 'cd'; + break; + //block digital video + case 'dvd': + case 'blueraydisc': + case 'dvdvideo': + case 'videodisc': + echo 'dvd'; + break; + //block ebook + case 'ebook': + echo 'ebook'; + break; + //block digital non-book + case 'electronicnewspaper': + case 'newspaperarticle': + case 'newspaper': + case 'textresource': + echo 'newspaper'; + break; + //block manuscripts + case 'manuscript': + case 'nachlass': + echo 'manuscript'; + break; + //block articles + case 'article': + case 'articlearticle': + case 'electronic': + case 'electronicarticle': + case 'electronicresourcedatacarrier': + case 'electronicresourceremoteaccess': + echo 'electronic'; + break; + //block globe + case 'globe': + echo 'globe'; + break; + //block kit + case 'kit': + echo 'kit'; + break; + //block journal + case 'journal': + case 'journalnewspaper': + case 'serial': + echo 'journal'; + break; + //block ejournal + case 'electronicjournal': + case 'electronicserial': + echo 'electronicjournal'; + break; + //block map + case 'map': + case 'atlas': + echo 'map'; + break; + //block microfilm + case 'microfilm': + case 'microfiche': + case 'microform': + echo 'microfilm'; + break; + //block musical score + case 'musicalscore': + case 'notatedmusic': + case 'electronicmusicalscore': + echo 'musicalscore'; + break; + //block images + case 'photo': + case 'artprint': + case 'collage': + case 'drawing': + case 'flashcard': + case 'painting': + case 'photonegative': + case 'placard': + case 'print': + case 'sensorimage': + case 'transparency': + echo 'image'; + break; + //block physical object + case 'physicalobject': + echo 'physicalobject'; + break; + //block othe rimages + case 'sensorimage': + case 'chart': + echo 'chart'; + break; + //block sets + case 'sets': + echo 'sets'; + break; + //block slide + case 'slide': + echo 'slide'; + break; + //block software + case 'software': + case 'cdrom': + case 'chipcartridge': + case 'disccartridge': + case 'dvdrom': + case 'floppydisk': + case 'tapecartridge': + case 'tapecassette': + case 'tapereel': + echo 'software'; + break; + //block thesis + case 'thesis': + case 'electronicthesis': + echo 'thesis'; + break; + + //block unknown + case 'unknown': + echo 'unknown'; + break; + //block analog video + case 'vhs': + case 'video': + case 'videotape': + case 'videocartridge': + case 'videocassette': + echo 'video'; + break; + //block film + case 'audiovisualmedia': + case 'filmstrip': + case 'motionpicture': + case 'videoreel': + echo 'film'; + break; + //default + default: + echo 'unknown'; + break; +} \ No newline at end of file diff --git a/themes/finc/templates/RecordDriver/SolrDefault/record-icon-sprite.phtml b/themes/finc/templates/RecordDriver/SolrDefault/record-icon-sprite.phtml new file mode 100644 index 0000000000000000000000000000000000000000..d50cbfc5586e22b2c1f5d3f0d613235bcf0254c5 --- /dev/null +++ b/themes/finc/templates/RecordDriver/SolrDefault/record-icon-sprite.phtml @@ -0,0 +1,11 @@ +<? +$formats = []; +foreach ($this->driver->getFormats() as $format) { + $formats[] = $this->record($this->driver)->getRecordIconClass( + $format, 'record-icon-sprite-class' + ); +} +$formats = array_unique($formats); +asort($formats); +?> +<span class="sprite-media-icon <?= array_pop($formats) ?>"></span> \ No newline at end of file