From 9e3539d146ae9ab028130c5bf3ed1b51c00cc0c6 Mon Sep 17 00:00:00 2001 From: Chris Hallberg <crhallberg@gmail.com> Date: Thu, 6 Mar 2014 13:33:41 -0500 Subject: [PATCH] VuDL updates. --- module/VuDL/src/VuDL/Connection/Fedora.php | 4 +- .../src/VuDL/Controller/VudlController.php | 20 ++- module/VuDL/src/VuDL/OutlineGenerator.php | 15 +-- themes/bootstrap/css/vudl.css | 29 +++-- themes/bootstrap/images/vudl/default.png | Bin 0 -> 7707 bytes themes/bootstrap/images/vudl/msexcel.png | Bin 0 -> 5382 bytes themes/bootstrap/images/vudl/msword.png | Bin 15146 -> 7064 bytes themes/bootstrap/js/common.js | 35 +++++- themes/bootstrap/js/vudl/grid.js | 12 +- themes/bootstrap/js/vudl/record.js | 117 ++++++++++++------ themes/bootstrap/js/zoomy/zoomy.js | 35 ++++-- .../templates/breadcrumbs/default.phtml | 4 +- .../templates/breadcrumbs/multi.phtml | 8 +- .../templates/search/searchbox.phtml | 2 +- themes/bootstrap/templates/vudl/details.phtml | 12 +- themes/bootstrap/templates/vudl/grid.phtml | 2 +- themes/bootstrap/templates/vudl/home.phtml | 2 +- .../bootstrap/templates/vudl/master-tab.phtml | 16 ++- themes/bootstrap/templates/vudl/record.phtml | 27 ++-- .../bootstrap/templates/vudl/techinfo.phtml | 11 +- .../templates/vudl/views/audio.phtml | 9 +- .../templates/vudl/views/download.phtml | 33 +++-- .../bootstrap/templates/vudl/views/page.phtml | 14 ++- .../templates/vudl/views/video.phtml | 11 +- themes/bootstrap/theme.config.php | 2 +- 25 files changed, 285 insertions(+), 135 deletions(-) create mode 100644 themes/bootstrap/images/vudl/default.png create mode 100644 themes/bootstrap/images/vudl/msexcel.png diff --git a/module/VuDL/src/VuDL/Connection/Fedora.php b/module/VuDL/src/VuDL/Connection/Fedora.php index 118b45c371b..15a383ba455 100644 --- a/module/VuDL/src/VuDL/Connection/Fedora.php +++ b/module/VuDL/src/VuDL/Connection/Fedora.php @@ -408,7 +408,9 @@ class Fedora extends AbstractBase $record['id'], 'MASTER-MD' ); - $ret += $this->getSizeAndTypeInfo($record['techinfo']); + $info = $this->getSizeAndTypeInfo($record['techinfo']); + $ret['size'] = $info['size']; + $ret['type'] = $info['type']; } if ($renderer != null) { $ret['div'] = $renderer diff --git a/module/VuDL/src/VuDL/Controller/VudlController.php b/module/VuDL/src/VuDL/Controller/VudlController.php index 0f7bb48c0ed..49f06b571d1 100644 --- a/module/VuDL/src/VuDL/Controller/VudlController.php +++ b/module/VuDL/src/VuDL/Controller/VudlController.php @@ -85,7 +85,7 @@ class VudlController extends AbstractVuDL protected function getPage($parent, $child) { // GET LISTS - $lists = $this->getConnector()->getOrderedMembers($parent); + $lists = array_reverse($this->getConnector()->getOrderedMembers($parent)); // GET LIST ITEMS foreach ($lists as $list=>$list_data) { $items = $this->getConnector()->getOrderedMembers($list_data); @@ -117,6 +117,19 @@ class VudlController extends AbstractVuDL return $generator->getOutline($root, $start, $pageLength); } + /** + * Get the technical metadata for a record from POST + * + * @return array + */ + protected function getTechInfo() + { + return $this->getConnector()->getTechInfo( + $this->params()->fromPost(), + $this->getViewRenderer() + ); + } + /** * Ajax function for the VuDL view * Return JSON encoding of pages @@ -186,9 +199,6 @@ class VudlController extends AbstractVuDL { $renderer = $this->getViewRenderer(); $data = $this->params()->fromPost(); - if ($data == null) { - $data = $this->params()->fromPost(); - } if ($data == null) { $id = $this->params()->fromQuery('id'); $list = array(); @@ -200,7 +210,6 @@ class VudlController extends AbstractVuDL $data = array_flip($list[1]); $data['id'] = $id; } - $data['techinfo'] = $this->getConnector()->getTechInfo($data, $renderer); $data['keys'] = array_keys($data); try { $view = $renderer->render( @@ -273,7 +282,6 @@ class VudlController extends AbstractVuDL // Get ids for all files $outline = $this->getOutline( $root, - $this->params()->fromQuery('cache'), max(0, $view->initPage-($this->getConnector()->getPageLength()/2)) ); diff --git a/module/VuDL/src/VuDL/OutlineGenerator.php b/module/VuDL/src/VuDL/OutlineGenerator.php index d83806c3fcb..8cf28dd0c8d 100644 --- a/module/VuDL/src/VuDL/OutlineGenerator.php +++ b/module/VuDL/src/VuDL/OutlineGenerator.php @@ -67,13 +67,6 @@ class OutlineGenerator */ protected $cache; - /** - * Do we skip the cache for this outline? - * - * @var boolean - */ - protected $skipCache; - /** * Queues * @@ -124,9 +117,7 @@ class OutlineGenerator */ protected function getCache($key, $moddate = null) { - if (!$this->skipCache && $this->cache - && $cache_item = $this->cache->getItem($key) - ) { + if ($this->cache && $cache_item = $this->cache->getItem($key)) { if ($moddate == null || (isset($cache_item['moddate']) && date_create($cache_item['moddate']) >= date_create($moddate)) ) { @@ -294,15 +285,13 @@ class OutlineGenerator * Generate an array of all child pages and their information/images * * @param string $root record id to search under - * @param string $cache 'cache' get parameter for skipping the cache * @param string $start page/doc to start with for the return * @param int $pageLength page length (leave null to use default) * * @return associative array of the lists with their members */ - public function getOutline($root, $cache = null, $start = 0, $pageLength = null) + public function getOutline($root, $start = 0, $pageLength = null) { - $this->skipCache = $cache == 'no'; $this->loadLists($root); $this->loadPagesAndDocs($start, $pageLength); $this->injectUrls(); diff --git a/themes/bootstrap/css/vudl.css b/themes/bootstrap/css/vudl.css index b328afebd5d..1f204f93549 100644 --- a/themes/bootstrap/css/vudl.css +++ b/themes/bootstrap/css/vudl.css @@ -1,15 +1,10 @@ -.inspector_container #side-nav { - margin:auto 0; -} -.inspector_container #view { - margin:auto 0 auto 1%; -} -.inspector_container .grid-view { - margin-left:1%; -} -.item-list { - height:600px; -} +.inspector_container #side-nav { margin:auto 0 } +.inspector_container #view { margin:auto 0 auto 1% } +.inspector_container .grid-view { margin-left:1% } +.item-list { height:600px } +.nav>li.opener>a { display:none } +#view.wide { width:100% } + .page_grid .audio { background:url('../images/small/mp3.png'); box-shadow:none; @@ -26,7 +21,15 @@ } .page_grid .doc, .page_grid .msword { - background:url('../images/small/doc.png'); + background:url('../images/small/msword.jpg'); + box-shadow:none; + margin:auto; + width:116px; + height:85px; +} +.page_grid .xls, +.page_grid .msexcel { + background:url('../images/small/msexcel.jpg'); box-shadow:none; margin:auto; width:116px; diff --git a/themes/bootstrap/images/vudl/default.png b/themes/bootstrap/images/vudl/default.png new file mode 100644 index 0000000000000000000000000000000000000000..1776b6b4eaacdeb4ad9c57bf475c705b37185c70 GIT binary patch literal 7707 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 VB~((V1)Tr@002ovPDHLkV1gtVof`lE literal 0 HcmV?d00001 diff --git a/themes/bootstrap/images/vudl/msexcel.png b/themes/bootstrap/images/vudl/msexcel.png new file mode 100644 index 0000000000000000000000000000000000000000..772539caadaa4608d134709f613887194df3412e GIT binary patch literal 5382 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Ƣ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 YFl;v~i3PVl5SsuERb7?pSJvVG14UeWbN~PV literal 0 HcmV?d00001 diff --git a/themes/bootstrap/images/vudl/msword.png b/themes/bootstrap/images/vudl/msword.png index 447826c011b97641ad5c51f6828eb61addc9de8c..3b207687c927b426a35672add18989ca30efa2a4 100644 GIT binary patch literal 7064 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 Cp$y3Y literal 15146 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 Y0Pzl7s>Lb1&j0`b07*qoM6N<$g2W8!vH$=8 diff --git a/themes/bootstrap/js/common.js b/themes/bootstrap/js/common.js index 596a496ecf1..436d54ba9b3 100644 --- a/themes/bootstrap/js/common.js +++ b/themes/bootstrap/js/common.js @@ -116,7 +116,13 @@ $(document).ready(function() { } } }); - }, 600); // Delay request submission + }, 500); // Delay request submission + }, + updater : function(item) { // Submit on update + console.log(this.$element[0].form.submit); + this.$element[0].value = item; + this.$element[0].form.submit(); + return item; } }); @@ -184,4 +190,29 @@ $(document).ready(function() { Lightbox.addFormCallback('emailSearch', function(x) { Lightbox.confirm(vufindString['bulk_email_success']); }); -}); \ No newline at end of file +}); + +/* --- BOOTSTRAP LIBRARY TWEAKS --- */ +// Prevent typeahead highlighting +$.fn.typeahead.Constructor.prototype.render = function(items) { + var that = this + + items = $(items).map(function (i, item) { + i = $(that.options.item).attr('data-value', item) + i.find('a').html(that.highlighter(item)) + return i[0] + }) + + this.$menu.html(items) + return this +}; +// Enter without highlight does not delete the query +$.fn.typeahead.Constructor.prototype.select = function () { + var val = this.$menu.find('.active') + if(val.length > 0) val = val.attr('data-value') + else val = this.$element.val() + this.$element + .val(this.updater(val)) + .change() + return this.hide() +} \ No newline at end of file diff --git a/themes/bootstrap/js/vudl/grid.js b/themes/bootstrap/js/vudl/grid.js index db91fdc72c8..7c88850176b 100644 --- a/themes/bootstrap/js/vudl/grid.js +++ b/themes/bootstrap/js/vudl/grid.js @@ -3,7 +3,6 @@ */ var loading_pages = true; function ajaxLoadPages(response) { -//console.log(response); if(!loading_pages) return; // If we got any pages (length is set in the controller) if(response.data !== false && response.data.length > 0) { @@ -11,22 +10,19 @@ function ajaxLoadPages(response) { var trueStart = response.data.start < 0 ? 0 : response.data.start; for(var i=0;i<response.data.length;i++) { var page = response.data.outline[response.data.start]; - if(page == undefined) { - //console.log('done'); - loading_pages = false; - continue; - } + if(page == undefined) continue; $('.page-grid#item'+response.data.start) .attr('href','../Item/'+page.id) .attr('title',page.id) .attr('id', 'item'+response.data.start) .html('<div class="imgc"><img src="'+page.thumbnail+'"/></div>'+page.label) - .removeClass('loading'); + .removeClass('loading') + .removeClass('onscreen'); response.data.start++; } // Call the next round of page loading if(loading_pages) { - console.log(trueStart,response.data.start-1); + //console.log(trueStart,response.data.start-1); var target = Math.min(counts[0], Math.floor($('#list0').scrollTop()/159)); $.ajax({ url:'../VuDL/ajax?method=pageAjax&record='+documentID+'&start='+response.data.start+'&end='+(response.data.start+response.data.length), diff --git a/themes/bootstrap/js/vudl/record.js b/themes/bootstrap/js/vudl/record.js index 017a876f84a..64a1cbc5217 100644 --- a/themes/bootstrap/js/vudl/record.js +++ b/themes/bootstrap/js/vudl/record.js @@ -2,9 +2,15 @@ var currentType = 'imaginary'; var currTab = 'medium-tab'; var updateFunction; +var lastID = false; function ajaxGetView(pageObject) { + console.log(pageObject); pageObject['counts'] = counts; - if(currentType != pageObject['filetype']) { + if (currTab == 'master-tab' && lastID == pageObject['id']) { + // Trigger file download + //alert('download'); + $('#file-download').submit(); + } else if (currentType != pageObject['filetype']) { $.ajax({ type: 'POST', url : '../VuDL/ajax?method=viewLoad', @@ -12,6 +18,14 @@ function ajaxGetView(pageObject) { success: function(e) { $('#view').html(e.data); currentType = pageObject['filetype']; + var tab = $('#'+currTab, e.data); + if(tab.length > 0) { + tab.click(); + } else { + currTab = $('.nav-tabs li a:eq(0)')[0].id; + } + // Accordion size + resizeAccordions(); }, error: function(d,e){ console.log(d.responseText); @@ -23,14 +37,19 @@ function ajaxGetView(pageObject) { updateFunction(pageObject); $('#'+currTab).click(); } - updateTechInfo(pageObject['id']); + updateTechInfo(pageObject); + lastID = pageObject['id']; } -function updateTechInfo(id) { +function updateTechInfo(record) { $.ajax({dataType:'json', - url:'../VuDL/ajax?method=getTechInfo&id='+id, + type:'post', + url:path+'/VuDL/ajax?method=getTechInfo', + data:record, success:function(d){ $('#techinfo').html(d.data.div); + $('#file-download').attr('action', path+'/files/'+record.id+'/MASTER?download=true'); $('#download-button small').html(d.data.type+' ~ '+d.data.size); + $('#allFiles').addClass('in'); }, error:function(d,e){ console.log(d.responseText); @@ -44,11 +63,15 @@ var loadWait = false; // AJAX load all records flagged as on screen function findVisible() { var chunk = true,min = -1,max; - $('.page-link').each(function(index, value) { - if(chunk && $(value).hasClass('onscreen')) { - max = parseInt($(value).attr('title')); + // Flag pages on screen + $('.page-link').each(function(index, item) { + if($(item).offset().top > $('#collapse1').position().top-100 + && $(item).offset().top < $('#collapse1').position().top+$('#collapse1').height()+300 + && $(item).hasClass('loading')) { + $(item).removeClass('muted'); + $(item).removeClass('loading'); + max = parseInt($(item).attr('title')); if(min < 0) min = max; - $(value).removeClass('onscreen'); } else { if(min > -1) chunk = false; } @@ -63,30 +86,29 @@ function findVisible() { function ajaxLoadPages(min, max) { //console.log('ajax', min, max, counts); $.ajax({ - url:'../VuDL/ajax?method=pageAjax&record='+documentID+'&start='+min+'&end='+max, + url:path+'/VuDL/ajax?method=pageAjax&record='+documentID+'&start='+min+'&end='+max, dataType:'json', success : function(response) { loadWait = false; - //console.log('return'); // For each page for(var i=0;i<response.data.length;i++) { var page = response.data.outline[response.data.start]; if(page == undefined) continue; + var img = $('<img src="'+page.thumbnail+'"/>'); $('.page-link#item'+response.data.start) .attr('onClick','ajaxGetView('+JSON.stringify(page).replace(/"/g, "'")+', this)') .attr('title',page.id) .attr('alt',page.label) .attr('id', 'item'+response.data.start) - .html('<img class="img-polaroid" src="'+page.thumbnail+'"/><br/>'+page.label) + .html('<br/>'+page.label) + .prepend(img) .addClass('pointer') .removeClass('loading') - .removeClass('onscreen'); + .removeClass('onscreen') + .removeClass('muted'); response.data.start++; } - if($('.onscreen').length > 0) { - //console.log('go again'); - findVisible(); - } + findVisible(); }, error : function(d,e){ console.log(d.responseText); @@ -94,7 +116,7 @@ function ajaxLoadPages(min, max) { } }); } - +// Pages function prevPage() { $('.page-link.alert-info').prev('.page-link').click(); scrollToSelected(); @@ -104,34 +126,57 @@ function nextPage() { scrollToSelected(); } function scrollToSelected() { - $('#list0').scrollTop($('#list0').scrollTop()+$('#list0 .alert-info').offset().top-320); + $('#collapse1').scrollTop($('#collapse1').scrollTop()+$('#collapse1 .alert-info').position().top-10); } - +// Accordion size +function resizeAccordions(offset) { + var height = $(window).innerHeight()-40; + $('.tab-content').css('min-height',height-$('.tab-content').position().top-46); + var accordionHeight = height-160-($('#side-nav .accordion-heading').length-2)*30; + // All accordions + $('#side-nav .accordion-body').css({ + 'max-height':accordionHeight, + 'overflow-y':'auto' + }); + // Set height in the open accordion + $('#side-nav .accordion-body.in').css({ + 'height':accordionHeight + }); + $('.zoomy-container').css('height',height-$('.zoomy-container').parent().position().top+2); +} +// Toggle side menu +function toggleSideNav() { + $('#side-nav').toggle(); + var opener = $('#view .nav-tabs li.opener a'); + if(opener.is(":visible")) { + opener.hide(); + } else { + opener.css('display','inherit'); + } + $('#view').toggleClass('wide'); + $('#zoom').zoomyResize(); +} +// Ready? Let's go $(document).ready(function() { $('.page-link').click(function() { $('.page-link.alert-info').removeClass('alert-info'); $(this).addClass('alert-info'); }); - // Scroll Event - $('.item-list').scroll(function() { - // Flag pages on screen - $('.page-link').removeClass('onscreen').each(function(index, value) { - if($(value).offset().top > 0 - && $(value).offset().top < $('#list0').height()+300 - && $(value).hasClass('loading')) { - $(value).addClass('onscreen').removeClass('muted'); - } + // Load clicked items + $('.loading').click(function() { + scrollToSelected(); + findVisible(); }); + // Scroll Event + $('.item-list').parent().scroll(function() { if(loadWait) return; loadWait = true; findVisible(); }); - // Accordion size - $('.item-list').css({ - 'height':Math.max(200, $('#view').height()-$('#side-nav').position()-2), - 'overflow-y':'auto' - }) - // Initial events + setTimeout(findVisible, 1000); ajaxGetView(initPage); - scrollToSelected(); -}); \ No newline at end of file +}); +// Initial alignment +$( window ).load( scrollToSelected ); +// Accordion size +$( window ).resize( resizeAccordions ); \ No newline at end of file diff --git a/themes/bootstrap/js/zoomy/zoomy.js b/themes/bootstrap/js/zoomy/zoomy.js index 8e1542a5a56..f13682967c6 100644 --- a/themes/bootstrap/js/zoomy/zoomy.js +++ b/themes/bootstrap/js/zoomy/zoomy.js @@ -126,6 +126,18 @@ state.minimap.attr('src', src); } }, + resize: function() { + // Update container size + state.container.width = $('.zoomy-container').width(); + state.container.height = $('.zoomy-container').height(); + state.container.left = $('.zoomy-container').offset().left; + state.container.top = $('.zoomy-container').offset().top; + state.container.centerx = $('.zoomy-container').width()/2; + state.container.centery = $('.zoomy-container').height()/2; + // Do it + core.zoom({init:state.page.zoom,setZoom:true},0); + //console.log(state.bounds.width()); + }, rotateLeft: function() { //drawCross(centerX+(centerY-mouseY)-boxHeight,centerY+(mouseX-centerX)); core.rotate(state.page.theta + 90); @@ -167,13 +179,13 @@ state.map.elem.css({ 'width' :state.map.height, 'height':state.map.width, 'right' :(state.map.size+state.map.margin-state.map.height)/2, - 'bottom':(state.map.size+state.map.margin-state.map.width)/2-21 + 'bottom':(state.map.size+state.map.margin-state.map.width)/2 }); } else { state.map.elem.css({ 'width' :state.map.width, 'height':state.map.height, 'right' :(state.map.size+state.map.margin-state.map.width)/2, - 'bottom':(state.map.size+state.map.margin-state.map.height)/2-21 + 'bottom':(state.map.size+state.map.margin-state.map.height)/2 }); } var moffset = state.page.sideways && $.browser != "msie" @@ -304,9 +316,9 @@ toggleUI: function() { $('.zoomy-container .ui').toggle(); if($('.zoomy-container .ui').is(':hidden')) { - $('.zoomy-container #toggle').html('<i class="icon-resize-full icon-rotate-90"></i>'); + $('.zoomy-container #toggle').html('<span class="icon-stack"><i class="icon-sign-blank icon-muted icon-stack-base"></i><i class="icon-resize-full icon-rotate-90"></i></span>'); } else { - $('.zoomy-container #toggle').html('<i class="icon-resize-small icon-rotate-90"></i>'); + $('.zoomy-container #toggle').html('<span class="icon-stack"><i class="icon-sign-blank icon-muted icon-stack-base"></i><i class="icon-resize-small icon-rotate-90"></i></span>'); } } }; @@ -315,19 +327,19 @@ $('.zoomy-container .turn-left').unbind('click').bind('click', core.rotateLeft); $('.zoomy-container .turn-right').unbind('click').bind('click', core.rotateRight); - $('.zoomy-container .zoom-in').unbind('click').bind('click', function(){core.zoom({fake:1},1)}); - $('.zoomy-container .zoom-out').unbind('click').bind('click', function(){core.zoom({fake:1},-1)}); + $('.zoomy-container .zoom-in').unbind('click').bind('click', function(){core.zoom({fake:1},-1)}); + $('.zoomy-container .zoom-out').unbind('click').bind('click', function(){core.zoom({fake:1},1)}); $('.zoomy-container .zoom .level').unbind('keyup').bind('keyup', function(){core.zoom({setZoom:this.value/100},0)}); $('.zoomy-container #toggle').unbind('click').bind('click', function(){core.toggleUI()}); - return {'src':src,'load':core.load}; + return {'src':src,'load':core.load,'resize':core.resize}; }; $.fn.zoomy = function(src, thumb) { var elem = this, instance = elem.data('zoomy'); if(!instance) { // init - $(this).html('<div class="bounds"></div><div class="page"><img src=""></div><div class="map ui"><img src="" class="mini_map"><div class="scope"></div></div><div class="loading-bar"><div class="progress progress-striped active" style="width:40%;margin:auto;border:1px solid #FFF"><div class="bar" style="width:100%;">Loading...</div></div></div><div class="control"><a class="turn-right ui"><span class="icon-stack"><i class="icon-sign-blank icon-muted icon-stack-base"></i><i class="icon-rotate-left"></i></span></i></a><a class="turn-left ui"><span class="icon-stack"><i class="icon-sign-blank icon-muted icon-stack-base"></i><i class="icon-rotate-right"></i></span></a><a id="toggle"><i class="icon-resize-small icon-rotate-90"></i></a></div><div class="zoom ui"><a class="zoom-out"><span class="icon-stack"><i class="icon-sign-blank icon-muted icon-stack-base"></i><i class="icon-plus"></i></span></a><input class="level">%<a class="zoom-in"><span class="icon-stack"><i class="icon-sign-blank icon-muted icon-stack-base"></i><i class="icon-minus"></i></span></a></div>'); + $(this).html('<div class="bounds"></div><div class="page"><img src=""></div><div class="map ui"><img src="" class="mini_map"><div class="scope"></div></div><div class="loading-bar"><div class="progress progress-striped active" style="width:40%;margin:auto;border:1px solid #FFF"><div class="bar" style="width:100%;">Loading...</div></div></div><div class="control"><a class="turn-right ui"><span class="icon-stack"><i class="icon-sign-blank icon-muted icon-stack-base"></i><i class="icon-rotate-left"></i></span></i></a><a class="turn-left ui"><span class="icon-stack"><i class="icon-sign-blank icon-muted icon-stack-base"></i><i class="icon-rotate-right"></i></span></a><a id="toggle"><span class="icon-stack"><i class="icon-sign-blank icon-muted icon-stack-base"></i><i class="icon-resize-small icon-rotate-90"></i></span></a></div><div class="zoom ui"><a class="zoom-out"><span class="icon-stack"><i class="icon-sign-blank icon-muted icon-stack-base"></i><i class="icon-plus"></i></span></a><input class="level">%<a class="zoom-in"><span class="icon-stack"><i class="icon-sign-blank icon-muted icon-stack-base"></i><i class="icon-minus"></i></span></a></div>'); $(this).addClass('zoomy-container'); instance = new Zoomy(src, thumb); elem.data('zoomy', instance); @@ -340,4 +352,11 @@ } return this; } + + $.fn.zoomyResize = function() { + var instance = this.data('zoomy'); + //console.log(instance); + instance['resize'](); + + } })(jQuery); diff --git a/themes/bootstrap/templates/breadcrumbs/default.phtml b/themes/bootstrap/templates/breadcrumbs/default.phtml index beef0a381fb..0f31bec29db 100644 --- a/themes/bootstrap/templates/breadcrumbs/default.phtml +++ b/themes/bootstrap/templates/breadcrumbs/default.phtml @@ -5,8 +5,8 @@ <li><a href="<?=$this->url('collection', array('id'=>$id)) ?>"><?=$parent ?></a> <span class="divider">></span></li> <? endforeach; ?> <? if(isset($this->layout()->end)): ?> - <li title="<?=$this->title ?>"><?=$this->truncate($this->title, 100) ?> <span class="divider">></span></li> + <li title="<?=$this->layout()->title ?>"><?=$this->truncate($this->layout()->title, 100) ?> <span class="divider">></span></li> <li class="active"><?=$this->layout()->end ?></li> <? else: ?> - <li class="active" title="<?=$this->title ?>"><?=$this->title ?></li> + <li class="active" title="<?=$this->layout()->title ?>"><?=$this->truncate($this->layout()->title, 100) ?></li> <? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/breadcrumbs/multi.phtml b/themes/bootstrap/templates/breadcrumbs/multi.phtml index eaf8ddced91..9819107c852 100644 --- a/themes/bootstrap/templates/breadcrumbs/multi.phtml +++ b/themes/bootstrap/templates/breadcrumbs/multi.phtml @@ -1,9 +1,9 @@ <li><a href="<?=$this->url('home') ?>">Home</a> <span class="divider">></span></li> <li><a href="<?=$this->url('vudl-default-collection') ?>">Collections</a> <span class="divider">></span></li> <li class="dropdown"> - <a class="dropdown-toggle pointer">In <?=count($this->parents) ?> Collections</a> + <a class="dropdown-toggle pointer">In <?=count($this->layout()->breadcrumbs) ?> Collections</a> <ul class="dropdown-menu" role="menu"> - <? foreach ($this->parents as $trail): ?> + <? foreach ($this->layout()->breadcrumbs as $trail): ?> <ul class="inline" style="margin:0 .5em;white-space:nowrap"> <? foreach (array_reverse($trail) as $id=>$title): ?> <li><span class="muted">></span> <a href="<?=$this->url('vudl-record', array('id'=>$id))?>"><?=$title ?></a></li> @@ -14,9 +14,9 @@ <span class="divider">></span> </li> <? if(isset($this->layout()->end)): ?> - <li title="<?=$this->title ?>"><?=$this->truncate($this->title, 100) ?> <span class="divider">></span></li> + <li title="<?=$this->layout()->title ?>"><?=$this->truncate($this->layout()->title, 100) ?> <span class="divider">></span></li> <li class="active"><?=$this->layout()->end ?></li> <? else: ?> - <li class="active" title="<?=$this->title ?>"><?=$this->title ?></li> + <li class="active" title="<?=$this->layout()->title ?>"><?=$this->truncate($this->layout()->title, 100) ?></li> <? endif; ?> <script>$('.dropdown-toggle').dropdown()</script> diff --git a/themes/bootstrap/templates/search/searchbox.phtml b/themes/bootstrap/templates/search/searchbox.phtml index a3ecfdb79eb..e2bed076f31 100644 --- a/themes/bootstrap/templates/search/searchbox.phtml +++ b/themes/bootstrap/templates/search/searchbox.phtml @@ -47,7 +47,7 @@ <? elseif ($handlerCount == 1): ?> <input type="hidden" name="type" value="<?=$this->escapeHtml($handlers[0]['value'])?>" /> <? endif; ?> - <button type="submit" name="submit" class="btn" value="<?=$this->transEsc("Find")?>"><i class="icon-search"></i> <?=$this->transEsc("Find")?></button> + <button type="submit" class="btn"><i class="icon-search"></i> <?=$this->transEsc("Find")?></button> <? if ($advSearch): ?> <a href="<?=$this->url($advSearch)?>" class="btn btn-link"><?=$this->transEsc("Advanced")?></a> <? endif; ?> diff --git a/themes/bootstrap/templates/vudl/details.phtml b/themes/bootstrap/templates/vudl/details.phtml index 77cf0ba8fc3..bf72a8be084 100644 --- a/themes/bootstrap/templates/vudl/details.phtml +++ b/themes/bootstrap/templates/vudl/details.phtml @@ -1,6 +1,6 @@ <?php $skip = array( - 'license', 'special_license', 'description', 'title', 'title_alt' + 'license', 'special_license', 'description', 'title' ); $no_link = array('title', 'description'); ?> @@ -11,7 +11,9 @@ </a> </div> <div id="collapse0" class="accordion-body collapse"> - <table class="table table-striped small details"> + <div class="accordion-inner"> + <table class="table small details"> + <tr><td><?=$this->transEsc('Full Title') ?></td><td><?=$this->details['title']['value'] ?></td></tr> <? foreach ($this->details as $attr=>$val): // Skip items not placed in this table if(in_array($attr, $skip)) continue; ?> @@ -63,6 +65,7 @@ <? endif; ?> <? endif; ?> </table> + </div> <div class="pad text-center small"> <? if(isset($this->details['license'])): ?> <div class="block text-center"> @@ -81,9 +84,10 @@ </div> <br/><br/> <? endif; ?> - <a href="<?=$this->url('vudl-record', array('id'=>$this->id))?>"><i class="icon-link"></i> Permanent Link</a> + <a href="<?=$this->url('record', array('id'=>$this->id))?>"><i class="icon-link"></i> <?=$this->transEsc('More Details') ?></a><br/> + <a href="<?=$this->url('vudl-record', array('id'=>$this->id))?>"><i class="icon-save"></i> <?=$this->transEsc('Permanent Link') ?></a><br/> <br/><br/> - <? if(isset($this->details['description'])): ?><p class="text-left"><?=html_entity_decode($this->details['description']['value']) ?></p><? endif ?> + <? if(isset($this->details['description'])): ?><p class="text-left"><?=html_entity_decode($this->details['description']['value'], ENT_COMPAT|ENT_HTML401, 'UTF-8') ?></p><? endif ?> </div> </div> </div> \ No newline at end of file diff --git a/themes/bootstrap/templates/vudl/grid.phtml b/themes/bootstrap/templates/vudl/grid.phtml index b1324357ca7..2763bb35d36 100644 --- a/themes/bootstrap/templates/vudl/grid.phtml +++ b/themes/bootstrap/templates/vudl/grid.phtml @@ -48,7 +48,7 @@ <? endfor; ?> <!-- LOADED ITEMS --> <? foreach($list as $i=>$item): ?> - <a href="<?=$this->url('vudl-record', array('id'=>$item['id'])) ?>" class="span3 pull-left well text-center page-grid pointer" title="<?=$item['id'] ?>" id="item<?=$j?>"> + <a href="<?=$this->url('vudl-record', array('id'=>$item['id'])) ?>" class="span3 pull-left well text-center page-grid pointer" title="<?=$item['id'] ?>" id="item<?=$index?>"> <? if(isset($item['thumbnail'])): ?> <img class="img-polaroid" src="<?=$item['thumbnail'] ?>" alt="<?=$item['label'] ?>"/> <? else: ?> diff --git a/themes/bootstrap/templates/vudl/home.phtml b/themes/bootstrap/templates/vudl/home.phtml index 5374d3acdf2..d76a743584c 100644 --- a/themes/bootstrap/templates/vudl/home.phtml +++ b/themes/bootstrap/templates/vudl/home.phtml @@ -1,6 +1,6 @@ <? // Set page title. - $this->headTitle($this->translate($this->title) .' - '. $this->translate('Search Home')); + $this->headTitle($this->translate($this->translate($this->title))); // Set default value if necessary: if (!isset($this->searchClassId)) { diff --git a/themes/bootstrap/templates/vudl/master-tab.phtml b/themes/bootstrap/templates/vudl/master-tab.phtml index a964aff56a4..5496c549326 100644 --- a/themes/bootstrap/templates/vudl/master-tab.phtml +++ b/themes/bootstrap/templates/vudl/master-tab.phtml @@ -1,10 +1,14 @@ <? if(isset($this->master)): ?> - <a id="download-button" class="btn btn-large btn-primary" href="<?=$this->url('files', array('id'=>$this->id, 'type'=>'MASTER')) ?>?download=true" style="width:300px;margin-top:12px"> - <i class="icon-download-alt icon-2x pull-left"></i> Download Master File<br> - <small><?=$this->mimetype ?><?if(isset($this->techinfo['size'])):?> ~ <?=$this->techinfo['size'] ?><? endif ?></small> - </a> + <form method="get" id="file-download" action="<?=$this->url('files', array('id'=>$this->id, 'type'=>'MASTER')) ?>?download=true"> + <button id="download-button" class="btn btn-large btn-primary" style="width:300px;margin-top:12px"> + <i class="icon-download-alt icon-2x pull-left"></i> <?=$this->transEsc('Download File') ?><br> + <small><?=$this->techinfo['type'] ?><?if(isset($this->techinfo['size'])):?> ~ <?=$this->techinfo['size'] ?><? endif ?></small> + </button> + </form> <? else: ?> - <p class="big">Original Image File Not Available.</p> + <br/><br/> + <p>Original Image File Not Available.</p> + <p>See below for all available downloads.</p> <? endif; ?> -<br/><br/> +<br/> <div class="accordion" id="techinfo"><?=$this->techinfo['div'] ?></div> \ No newline at end of file diff --git a/themes/bootstrap/templates/vudl/record.phtml b/themes/bootstrap/templates/vudl/record.phtml index d9b4aa3a3ce..0ede159ec3d 100644 --- a/themes/bootstrap/templates/vudl/record.phtml +++ b/themes/bootstrap/templates/vudl/record.phtml @@ -43,12 +43,14 @@ function json_php_encode($op, $quotes = false) { if($quotes) { - return str_replace('"', "'", str_replace(''', "\'", str_replace('\/', '/', json_encode($op)))); + return str_replace('"', "'", str_replace("'", "\\'", str_replace('\/', '/', json_encode($op)))); } else { return str_replace('\/', '/', json_encode($op)); } } ?> + <? var_dump($this->initList) ?> + <? var_dump($this->initPage) ?> <script> google.load("swfobject", "2.2"); var documentID = '<?=$this->id ?>'; @@ -79,21 +81,28 @@ <? else: ?> <input type="hidden" name="trail" value="<?=current(array_keys($this->parents[0]))?>"/> <? endif; ?> - <a href="<?=$this->url('vudl-grid', array('id'=>$this->id)) ?>" class="btn grid-btn"><i class="icon-th"></i></a> <button class="btn" type="submit" name="next_x" value="1" title="<?=$this->transEsc('Next Item in Collection')?>"><?=$this->transEsc('Next Item')?> →</button> </form> <div class="inspector_container row-fluid"> <div id="side-nav" class="accordion span3"> + <div class="accordion-group closer"> + <div class="accordion-heading"> + <a class="accordion-toggle" onClick="toggleSideNav()"> + <i class="icon-caret-left"></i> + <i class="icon-caret-left"></i> + <i class="icon-caret-left"></i> + </a> + </div> + </div> <?=$this->context($this)->renderInContext('vudl/details.phtml', array())?> - <? $i=0; ?> <? foreach($this->outline['lists'] as $key=>$list): ?> <div class="accordion-group"> <div class="accordion-heading"> - <a class="accordion-toggle" data-toggle="collapse" data-parent="#side-nav" href="#collapse<?=($i+1)?>"> + <a class="accordion-toggle" data-toggle="collapse" data-parent="#side-nav" href="#collapse<?=$key+1 ?>"> <?=$this->outline['names'][$key] ?> </a> </div> - <div id="collapse<?=($i+1)?>" class="accordion-body collapse<? if($i==0): ?> in<? endif; ?>"> + <div id="collapse<?=$key+1 ?>" class="accordion-body collapse<? if($key==$this->initList): ?> in<? endif; ?>"> <div class="accordion-inner item-list" id="list<?=$key ?>"> <!-- PRE LOADING PLACEHOLDERS --> <? for($i=0;$i<current(array_keys($list))-1;$i++): ?> @@ -101,12 +110,14 @@ <? endfor; ?> <!-- LOADED ITEMS --> <? foreach($list as $j=>$item): ?> - <a title="<?=$item['id'] ?>" onClick="ajaxGetView(<?=json_php_encode($item, true) ?>, this)" class="well well-small block text-center page-link pointer<?=$key == 0 && $j == $this->initPage ?' alert-info':''?>" id="item<?=$j?>"> + <a title="<?=$item['id'] ?>" onClick="ajaxGetView(<?=json_php_encode($item, true) ?>, this)" class="well well-small block text-center page-link pointer<?=$key == $this->initList && $j == $this->initPage ?' alert-info':''?>" id="item<?=$j?>"> <? if(isset($item['thumbnail'])): ?> <img src="<?=$item['thumbnail'] ?>" alt="<?=$item['label'] ?>"/><br/> <? else: ?> - <? $imgSrc = $item['filetype'] == 'download' ? $item['fulltype'] : $item['filetype']; ?> - <img src="<?=$this->imageLink('vudl/'.$imgSrc.'.png') ?>" alt="<?=$imgSrc ?>"/><br/> + <? $imgType = $item['filetype'] == 'download' ? $item['fulltype'] : $item['filetype']; + $imgSrc = $this->imageLink('vudl/'.$imgType.'.png'); + if(empty($imgSrc)) $imgSrc = $this->imageLink('vudl/'.$imgType.'.jpg'); ?> + <img src="<?=$imgSrc ?>" alt="<?=$imgType ?>" style="max-width:100px"/><br/> <? endif; ?> <?=$item['label'] ?> </a> diff --git a/themes/bootstrap/templates/vudl/techinfo.phtml b/themes/bootstrap/templates/vudl/techinfo.phtml index 104699cf7ee..2e4ea6c1586 100644 --- a/themes/bootstrap/templates/vudl/techinfo.phtml +++ b/themes/bootstrap/templates/vudl/techinfo.phtml @@ -8,8 +8,14 @@ <div id="allFiles" class="accordion-body collapse"> <div class="accordion-inner"> <? foreach ($this->record as $key=>$link): ?> - <? if (is_array($this->record[$key]) || strpos($key, '-') !== false - || $link == $this->record['id']|| $key == 'techinfo') continue; ?> + <? $mtKey = array_search(strToUpper($key), $this->record['datastreams']); ?> + <? if ( + is_array($this->record[$key]) + || strpos($this->record['mimetypes'][$mtKey], 'text') !== false + || strpos($this->record['mimetypes'][$mtKey], 'xml') !== false + || strpos($key, '-') !== false + || $key == 'techinfo' + ) continue; ?> <a class="btn btn-block" href="<?=$this->url( 'files', array( @@ -19,7 +25,6 @@ )?>?download=true"> <?=strToUpper($this->transEsc($key)) ?> <? if (isset($this->record['mimetypes'])): ?> - <? $mtKey = array_search(strToUpper($key), $this->record['datastreams']); ?> <span class="pull-right small"><?=$this->record['mimetypes'][$mtKey] ?></span> <? endif; ?> </a> diff --git a/themes/bootstrap/templates/vudl/views/audio.phtml b/themes/bootstrap/templates/vudl/views/audio.phtml index 75f929f6289..677c52e6753 100644 --- a/themes/bootstrap/templates/vudl/views/audio.phtml +++ b/themes/bootstrap/templates/vudl/views/audio.phtml @@ -39,7 +39,14 @@ </div> <? endif; ?> <ul class="nav nav-tabs"> - <li class="active"><a>Original</a></li> + <li class="opener"> + <a onClick="toggleSideNav()"> + <i class="icon-caret-right"></i> + <i class="icon-caret-right"></i> + <i class="icon-caret-right"></i> + </a> + </li> + <li class="active"><a>Player and Downloads</a></li> <? if($this->counts[0] > 1): ?> <div class="btn-group pull-right hidden-phone"> <a href="javascript:prevPage()" class="btn btn-small">Prev Page</a> diff --git a/themes/bootstrap/templates/vudl/views/download.phtml b/themes/bootstrap/templates/vudl/views/download.phtml index 3c8ca9af5de..e93a2d18f7a 100644 --- a/themes/bootstrap/templates/vudl/views/download.phtml +++ b/themes/bootstrap/templates/vudl/views/download.phtml @@ -5,20 +5,29 @@ }; </script> <? if($this->counts[0] > 1): ?> - <div class="row-fluid btn-group visible-phone text-center"> - <a href="javascript:prevPage()" class="btn">Prev Page</a> - <a href="javascript:nextPage()" class="btn">Next Page</a> - <br/><br/> - </div> + <div class="row-fluid btn-group visible-phone text-center"> + <a href="javascript:prevPage()" class="btn">Prev Page</a> + <a href="<?=$this->url('vudl-grid', array('id'=>$this->id)) ?>" class="btn grid-btn"><i class="icon-th"></i></a> + <a href="javascript:nextPage()" class="btn">Next Page</a> + <br/><br/> + </div> <? endif; ?> <ul class="nav nav-tabs"> - <li class="active"><a href="#master" id="master-tab">Original</a></li> - <? if($this->counts[0] > 1): ?> - <div class="btn-group pull-right hidden-phone"> - <a href="javascript:prevPage()" class="btn btn-small">Prev Page</a> - <a href="javascript:nextPage()" class="btn btn-small">Next Page</a> - </div> - <? endif; ?> + <li class="opener"> + <a onClick="toggleSideNav()"> + <i class="icon-caret-right"></i> + <i class="icon-caret-right"></i> + <i class="icon-caret-right"></i> + </a> + </li> + <li class="active"><a href="#master" id="master-tab">Downloads</a></li> + <? if($this->counts[0] > 1): ?> + <div class="btn-group pull-right hidden-phone"> + <a href="javascript:prevPage()" class="btn btn-small">Prev Page</a> + <a href="<?=$this->url('vudl-grid', array('id'=>$this->id)) ?>" class="btn grid-btn"><i class="icon-th"></i></a> + <a href="javascript:nextPage()" class="btn btn-small">Next Page</a> + </div> + <? endif; ?> </ul> <div class="tab-container text-center tab-content"> <?=$this->context($this)->renderInContext('vudl/master-tab.phtml', array())?> diff --git a/themes/bootstrap/templates/vudl/views/page.phtml b/themes/bootstrap/templates/vudl/views/page.phtml index 47ed4703031..5e8fa4b3b98 100644 --- a/themes/bootstrap/templates/vudl/views/page.phtml +++ b/themes/bootstrap/templates/vudl/views/page.phtml @@ -35,7 +35,7 @@ } $(document).ready(function() { - $('#view .nav-tabs li a').click(function (e) { + $('#view .nav-tabs li:not(.opener) a').click(function (e) { e.preventDefault(); $(this).tab('show'); currTab = $(this).attr('id'); @@ -51,24 +51,32 @@ 'mimetype' :'<?=$this->mimetype ?>' }; updateFunction(pageData, 'medium-tab'); - updateTechInfo(pageData['id']) }); </script> <? if($this->counts[0] > 1): ?> <div class="row-fluid btn-group visible-phone text-center"> <a href="javascript:prevPage()" class="btn">Prev Page</a> + <a href="<?=$this->url('vudl-grid', array('id'=>$this->id)) ?>" class="btn grid-btn"><i class="icon-th"></i></a> <a href="javascript:nextPage()" class="btn">Next Page</a> <br/><br/> </div> <? endif; ?> <ul class="nav nav-tabs"> + <li class="opener"> + <a onClick="toggleSideNav()"> + <i class="icon-caret-right"></i> + <i class="icon-caret-right"></i> + <i class="icon-caret-right"></i> + </a> + </li> <li><a href="#image" id="medium-tab" onClick="showPreview('medium', this)">Medium</a></li> <li class="hidden-phone"><a href="#image" id="large-tab" onClick="showPreview('large', this)">Large</a></li> <li><a href="#zoom" id="zoom-tab" onClick="showZoom(this)">Zoom</a></li> - <li><a href="#master" id="master-tab">Original</a></li> + <li><a href="#master" id="master-tab">Downloads</a></li> <? if($this->counts[0] > 1): ?> <div class="btn-group pull-right hidden-phone"> <a href="javascript:prevPage()" class="btn btn-small">Prev Page</a> + <a href="<?=$this->url('vudl-grid', array('id'=>$this->id)) ?>" class="btn btn-small grid-btn"><i class="icon-th"></i></a> <a href="javascript:nextPage()" class="btn btn-small">Next Page</a> </div> <? endif; ?> diff --git a/themes/bootstrap/templates/vudl/views/video.phtml b/themes/bootstrap/templates/vudl/views/video.phtml index 344c1683b94..50c283013ce 100644 --- a/themes/bootstrap/templates/vudl/views/video.phtml +++ b/themes/bootstrap/templates/vudl/views/video.phtml @@ -119,15 +119,24 @@ <? if($this->counts[0] > 1): ?> <div class="row-fluid btn-group visible-phone text-center"> <a href="javascript:prevPage()" class="btn">Prev Page</a> + <a href="<?=$this->url('vudl-grid', array('id'=>$this->id)) ?>" class="btn grid-btn"><i class="icon-th"></i></a> <a href="javascript:nextPage()" class="btn">Next Page</a> <br/><br/> </div> <? endif; ?> <ul class="nav nav-tabs"> - <li class="active"><a>Original</a></li> + <li class="opener"> + <a onClick="toggleSideNav()"> + <i class="icon-caret-right"></i> + <i class="icon-caret-right"></i> + <i class="icon-caret-right"></i> + </a> + </li> + <li class="active"><a>Downloads</a></li> <? if($this->counts[0] > 1): ?> <div class="btn-group pull-right hidden-phone"> <a href="javascript:prevPage()" class="btn btn-small">Prev Page</a> + <a href="<?=$this->url('vudl-grid', array('id'=>$this->id)) ?>" class="btn grid-btn"><i class="icon-th"></i></a> <a href="javascript:nextPage()" class="btn btn-small">Next Page</a> </div> <? endif; ?> diff --git a/themes/bootstrap/theme.config.php b/themes/bootstrap/theme.config.php index b4d6fdfde0d..3ecae90a741 100644 --- a/themes/bootstrap/theme.config.php +++ b/themes/bootstrap/theme.config.php @@ -12,7 +12,7 @@ return array( ), 'js' => array( 'core/jquery.min.js', - 'core/bootstrap.js', + 'core/bootstrap.min.js', 'common.js', 'lightbox.js', 'rc4.js' -- GitLab