diff --git a/.gitignore b/.gitignore index 335d6c77b0afa9a429ae234ddd9f4f6e7f2b4300..f58804377988104a051f1c6181da09e0fdbf48c9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,13 @@ .htaccess +sites/sites.php sites/*/ !sites/all/ !sites/default/ sites/all/settings.php sites/default/files sites/default/settings.php + +.buildpath +.project +.settings +.settings/* diff --git a/sites/all/themes/unl_digitalsignage/css/1920.css b/sites/all/themes/unl_digitalsignage/css/1920.css index 1871a248389acea4a8d337a95911f3bd70efda50..f4827670eb001ebc104f8bf9ea1d7369b817c997 100644 --- a/sites/all/themes/unl_digitalsignage/css/1920.css +++ b/sites/all/themes/unl_digitalsignage/css/1920.css @@ -72,10 +72,10 @@ body.node-type-digital-sign .field-name-field-beautyshots .field-item img { body.node-type-digital-sign .field-name-field-twitter { display: inline-block; float: right; - width: 350px; + width: 370px; min-height: 175px; padding: 20px 0 20px 20px; - margin: 20px 0 0 50px; + margin: 0 0 0 50px; border-radius: 10px 0 0 90px / 10px 0 0 163px; font-family: Helvetica Neue, Helvetica, Arial, sans-serif; background-color: rgba(255, 255, 255, 0.86); @@ -235,7 +235,7 @@ body.node-type-digital-sign .field-name-field-newssources .field-newssources-qrc border-radius: 0 10px 10px 0; } .field-name-field-newssources .field-display .desc { - line-height: 1.2em; + line-height: 1.3em; overflow: hidden; max-height: 221px; } @@ -348,3 +348,39 @@ body.node-type-digital-sign .field-name-field-videosources .field-videosources-d height: 100%; background-color: #fff; } + +/* Scroller +***************/ +.field-name-field-scroll { + position: absolute !important; + bottom: 0; + left: 0; + font-size: 36px; + font-family: Helvetica Neue, Helvetica, Arial, sans-serif; + background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#B70302),color-stop(100%,#9D0201)); + color: white; + padding: 10px 0; + opacity: .9; + box-shadow: 0 0px 6px #555; + width: 1920px; + overflow: hidden; + +} +.field-name-field-scroll .field-items { + position: relative; + overflow: hidden; +} +.field-name-field-scroll li { + float: left; + list-style-type: disc; + margin: 0 60px; + padding: 5px 0; +} + +/* Bottom Right Graphic +****************/ +.field-name-field-btm-img { + position: absolute !important; + bottom: 0; + left: 1700px; +} diff --git a/sites/all/themes/unl_digitalsignage/designfiles/designassets/backgrounds/FreeImageWorks.com_SSLightsSparkled-36.jpg b/sites/all/themes/unl_digitalsignage/designfiles/designassets/backgrounds/FreeImageWorks.com_SSLightsSparkled-36.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1ab773e8ea44395ac3d8516e3d51077978d40e2e Binary files /dev/null and b/sites/all/themes/unl_digitalsignage/designfiles/designassets/backgrounds/FreeImageWorks.com_SSLightsSparkled-36.jpg differ diff --git a/sites/all/themes/unl_digitalsignage/designfiles/designassets/backgrounds/abstract_colours_wallpaper_21ef8.jpg b/sites/all/themes/unl_digitalsignage/designfiles/designassets/backgrounds/abstract_colours_wallpaper_21ef8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cfe89fb9c8c1edae3d1be355715ea67ad3ed84aa Binary files /dev/null and b/sites/all/themes/unl_digitalsignage/designfiles/designassets/backgrounds/abstract_colours_wallpaper_21ef8.jpg differ diff --git a/sites/all/themes/unl_digitalsignage/designfiles/designassets/backgrounds/simply-red-backgrounds-wallpapers.jpg b/sites/all/themes/unl_digitalsignage/designfiles/designassets/backgrounds/simply-red-backgrounds-wallpapers.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9ececdf738d03a0d394562b3fa1d1006dbc6ad14 Binary files /dev/null and b/sites/all/themes/unl_digitalsignage/designfiles/designassets/backgrounds/simply-red-backgrounds-wallpapers.jpg differ diff --git a/sites/all/themes/unl_digitalsignage/images/background-lights.png b/sites/all/themes/unl_digitalsignage/images/background-lights.png new file mode 100644 index 0000000000000000000000000000000000000000..3abcb9c52a55e0eb185520684beb0a6f85e3d905 Binary files /dev/null and b/sites/all/themes/unl_digitalsignage/images/background-lights.png differ diff --git a/sites/all/themes/unl_digitalsignage/images/background-lines.png b/sites/all/themes/unl_digitalsignage/images/background-lines.png new file mode 100644 index 0000000000000000000000000000000000000000..f2e84aa8ace51da0b0b155ca8db1d7e759d8430f Binary files /dev/null and b/sites/all/themes/unl_digitalsignage/images/background-lines.png differ diff --git a/sites/all/themes/unl_digitalsignage/images/background-rainbow.png b/sites/all/themes/unl_digitalsignage/images/background-rainbow.png new file mode 100644 index 0000000000000000000000000000000000000000..32878d1f6cde87988a013377b80a27428f9b2bbd Binary files /dev/null and b/sites/all/themes/unl_digitalsignage/images/background-rainbow.png differ diff --git a/sites/all/themes/unl_digitalsignage/scripts/unl_digitalsignage.js b/sites/all/themes/unl_digitalsignage/scripts/unl_digitalsignage.js index 678066538aa9e0f6141e0354960464bd675c0e3b..5640ab579f02895f0280bb61ca830071bed515ce 100644 --- a/sites/all/themes/unl_digitalsignage/scripts/unl_digitalsignage.js +++ b/sites/all/themes/unl_digitalsignage/scripts/unl_digitalsignage.js @@ -5,36 +5,37 @@ UNL.digitalSignage = (function() { 'news' : 5, 'videos' : 10 }; - + return { // Populated by template.php feeds : {}, - + init : function() { console.log('UNL.digitalSignage.init called'); - + if ('1360' < window.innerWidth && window.innerWidth < '1372') { width = 1366; height = 768; } - + for (feed in UNL.digitalSignage.feeds) { if (UNL.digitalSignage.feeds.hasOwnProperty(feed)) { UNL.digitalSignage.setupFeed(feed); } } - + UNL.digitalSignage.rotateBeautyShots(); + UNL.digitalSignage.startScroll(); }, - + setupFeed : function(field) { console.log('UNL.digitalSignage.setupFeed called for: '+field); - + // How often to grab a new set of results from the feed var time; // Call it once to start us off, later we'll setInterval on this UNL.digitalSignage.updateFeed(field); - + switch(field) { case 'field_newssources': time = 600000; @@ -42,21 +43,17 @@ UNL.digitalSignage = (function() { default: time = 500000; } - - // Video feed will be updated by calling updateFeed with an ended event on the last video - if (field != 'field_videosources') { - //setInterval(function(){UNL.digitalSignage.updateFeed(field);}, time); - } + return false; }, - + updateFeed : function(field) { // Switch out the - with _ if this is a recursive call field = field.replace('-', '_'); - + console.log('UNL.digitalSignage.updateFeed feed called for: '+field); console.log('Getting data from: '+UNL.digitalSignage.feeds[field]); - + jQuery.getJSON(UNL.digitalSignage.feeds[field], function(data) { console.log('Success! Got the '+field+' data: '+data); // Switch out the _ with the - that is used by css identifiers @@ -65,7 +62,7 @@ UNL.digitalSignage = (function() { if (field !== 'field-twitter') { jQuery('.field-name-'+field).html(''); } - + switch(field) { case 'field-newssources': var news = []; @@ -73,14 +70,14 @@ UNL.digitalSignage = (function() { if (news.length >= maxItems['news']) { return false; } - + news.push('<li class="field-item '+(key%2 ? 'odd' : 'even')+'">'+ '<h3><span>'+val.title+'</span></h3>'+ '<div class="'+field+'-desc">'+val.description+'</div>'+ '<div class="'+field+'-link">'+val.link+'</div>'+ '<div class="'+field+'-qrcode"></div>'+ '</li>'); - + var sizeSmall = 42, sizeBig = 120; if (width < '1920') { var sizeSmall = 32; @@ -91,19 +88,19 @@ UNL.digitalSignage = (function() { // Big QR Code UNL.digitalSignage.addQrCode('.field-name-'+field+' .field-items .field-item:nth-child('+news.length+') .'+field+'-qrcode', 'img', sizeBig, val.link); }); - + // Add the list of news stories jQuery('<ul />', { 'class' : 'field-items', 'html' : news.join('') }).appendTo('.field-name-'+field); - + // Add the div that will display the story that is showing jQuery('<div />', { 'class' : 'field-display', 'html' : '<div class="qrcode"></div><div class="link"></div><div class="desc"></div>' }).appendTo('.field-name-'+field); - + UNL.digitalSignage.rotateNews(); break; case 'field-videosources': @@ -112,7 +109,7 @@ UNL.digitalSignage = (function() { jQuery.each(data.query.results.item, function(key, val) { videos.push({link:val.link, title:val.title, description:val.description}); }); - + jQuery('<div/>', { 'class': 'field-items', 'html': '<div class="field-item even">'+ @@ -122,28 +119,32 @@ UNL.digitalSignage = (function() { '<div class="'+field+'-desc"></div>'+ '</div>' }).appendTo('.field-name-'+field); - + var video = document.getElementById('unl-digitalsignage-video'); - + // "Helper" function due to trouble removing a listener that calls a function with parameters i.e. video.addEventListener('ended', callVideoUpdate(i+1), false); var callVideoUpdate = function() { videoUpdate(videoCounter+1); }; - + + // Initialize the ThreeDots variable + var threedots_object = jQuery('.field-videosources-desc').ThreeDots(); + var videoUpdate = function() { video.removeEventListener('ended', callVideoUpdate, false); - + video.src = videos[videoCounter].link; console.log('src for video #'+videoCounter+' loaded'); - + // Add the description jQuery('.'+field+'-desc').html(videos[videoCounter].description); // Truncate with ellipsis plugin if too long + jQuery('.field-videosources-desc').removeAttr('threedots'); jQuery('.field-videosources-desc').wrapInner('<span class="ellipsis_text" />'); - jQuery('.field-videosources-desc').ThreeDots({ max_rows:14 }); - // Add title of video, must be done after ellipsis call to avoid stripping h3 tag + threedots_object.ThreeDots.update({ max_rows:12 }); + // Add title of video, must be done after ThreeDots ellipsis call to avoid stripping h3 tag jQuery('.'+field+'-desc').prepend('<h3>'+videos[videoCounter].title+'</h3>'); - + // Set up recursion if (videos[videoCounter+1] !== undefined && videoCounter < maxItems['videos']) { console.log('Added "ended" listener that will call callVideoUpdate() i.e. videoUpdate('+videoCounter+'+1)'); @@ -156,7 +157,7 @@ UNL.digitalSignage = (function() { } videoCounter++; }; - + // Attach the first video to the dom to get the ball rolling videoUpdate(); break; @@ -184,35 +185,35 @@ UNL.digitalSignage = (function() { break; default: } - + }); return false; }, - + rotateBeautyShots : function() { // Store the initial css values of the page title var pageTitle = []; pageTitle['padding-left'] = jQuery('#page-title').css('padding-left'); pageTitle['color'] = jQuery('#page-title').css('color'); pageTitle['text-shadow'] = jQuery('#page-title').css('text-shadow'); - + // Things to give opacity to when beauty shot is full screen var opacityElements = '.field-name-field-videosources .field-videosources-desc, .field-name-field-newssources .field-items, .field-name-field-newssources .field-display, .field-name-field-twitter'; - + // Populate this var to make code below easier to read var fi = '.field-name-field-beautyshots .field-items .field-item'; - + var rotate = function() { // Get the first image var current = (jQuery(fi+'.show') ? jQuery(fi+'.show') : jQuery(fi+':first')); // Get next image, when it reaches the end, rotate it back to the first image var next = ((current.next().length) ? ((current.next().hasClass('show')) ? jQuery(fi+':first') : current.next()) : jQuery(fi+':first')); - + // Hide the current image current.removeClass('show').animate({opacity: 0.0}, 3000); // Show the next image next.css({opacity: 0.0}).addClass('show'); - + // Decide how to animate fading in the new image and whether to move the background (the +/- 2 is just for a little fudging) if (current.width() < width+2 && next.width() >= width-2) { next.animate({opacity: 1.0}, 3000, function() { @@ -224,6 +225,7 @@ UNL.digitalSignage = (function() { }, 2000); jQuery('#unl_digitalsignage_background').animate({'left' : '-'+width+'px'}, 2000, function() { jQuery(opacityElements).css('background-image','none'); + jQuery('.field-videosources-desc, .field-name-field-twitter').fadeOut(); }); }); } else if (current.width() >= width-2 && next.width() < width+2) { @@ -236,45 +238,54 @@ UNL.digitalSignage = (function() { jQuery('#unl_digitalsignage_background').animate({'left' : '0px'}, 2000, function() { next.animate({opacity : 1.0}, 3000); jQuery(opacityElements).css('background-image','inherit'); + jQuery('.field-videosources-desc, .field-name-field-twitter').fadeIn(); }); } else { next.animate({opacity : 1.0}, 3000); } }; - + // Set the opacity of all images to 0 jQuery(fi).css({opacity: 0.0}); - + // Get the first image and display it (gets set to full opacity) jQuery(fi+':first').css({opacity: 1.0}); - + // Call the rotator function to run the slideshow, (2000 = change to next image after 2 seconds) rotate(); setInterval(function(){rotate()}, 20000); }, - + rotateNews : function() { var fi = '.field-name-field-newssources .field-items .field-item'; + var counter = 0; var rotate = function() { + if (counter > maxItems.news-1) { + clearInterval(newsInterval); + UNL.digitalSignage.updateFeed('field_newssources'); + return false; + } // Get the first story var current = (jQuery(fi+'.show') ? jQuery(fi+'.show') : jQuery(fi+':first')); // Get next story, when it reaches the end, rotate it back to the first story var next = ((current.next().length) ? ((current.next().hasClass('show')) ? jQuery(fi+':first') : current.next()) : jQuery(fi+':first')); - + // Populate the display area with the content from the current (.show) li jQuery('.field-name-field-newssources .field-display .desc').html(next.find('.field-newssources-desc').html()); jQuery('.field-name-field-newssources .field-display .link').html(next.find('.field-newssources-link').html()); jQuery('.field-name-field-newssources .field-display .qrcode').html(next.find('.field-newssources-qrcode').html()); - + next.addClass('show'); current.removeClass('show'); + + counter++; }; - + // Call the rotator function to run the slideshow, (2000 = change to next story after 2 seconds) rotate(); - setInterval(function(){rotate()}, 10000); + var newsInterval = setInterval(function(){rotate()}, 10000); }, - + rotateTweets : function(tweets) { var fi = '.field-name-field-twitter .field-items .field-item'; var counter = 0; @@ -285,8 +296,8 @@ UNL.digitalSignage = (function() { UNL.digitalSignage.updateFeed('field_twitter'); return false; } - - if (tweets[counter].retweeted_status && tweets[counter].retweeted_status.user + + if (tweets[counter].retweeted_status && tweets[counter].retweeted_status.user && tweets[counter].retweeted_status.user.screen_name && tweets[counter].retweeted_status.user.profile_image_url && tweets[counter].retweeted_status.text) { // Retweet tweet['screen_name'] = tweets[counter].retweeted_status.user.screen_name; @@ -302,28 +313,28 @@ UNL.digitalSignage = (function() { tweet['text'] = tweets[counter].text; tweet['retweeted_by'] = undefined; } - + jQuery(fi).fadeOut('slow', function() { jQuery(fi).html('<div class="tweet">'+ '<img src="'+tweet['profile_image_url']+'" alt="Twitter Profile Icon" />'+ '<div class="tweet-user"><span class="tweet-user-name">@'+tweet['screen_name']+'</span><span class="tweet-full-name">'+tweet['name']+'</span></div>'+ '<div class="tweet-text">'+tweet['text']+'</div>'+ '</div>'); - + if (tweet['retweeted_by']) { jQuery(fi).append('<div class="retweet"><span>retweeted by</span> @'+tweet['retweeted_by']+'</div>'); } jQuery(fi).fadeIn(); counter++; }); - + }; - + // Call the rotator function (2000 = change to next tweet after 2 seconds) rotate(); var tweetInterval = setInterval(function(){rotate()}, 15000); }, - + addQrCode : function(element, type, size, url) { jQuery.post('http://go.unl.edu/api_create.php', { 'theURL' : url }, function(data) { console.log("GoURL generated URL is: "+data); @@ -332,15 +343,45 @@ UNL.digitalSignage = (function() { jQuery(element+' h3').css('background-image','url("'+qrlink+'")'); // Change the long story url to the newly created GoURL jQuery(element+' .field-newssources-link').html(data); + // Update the displayed URL in case the full URL was added before this returned (happens with first story when feed is updated) + if (jQuery(element).hasClass('show')) { + jQuery('.field-name-field-newssources .field-display .link').html(data); + } } else { jQuery(element).html('<img src="'+qrlink+'" alt="QR Code" />'); + // Update the displayed QR code in case the story displayed before this returned (happens with first story when feed is updated) + if (jQuery(element).parent().hasClass('show')) { + jQuery('.field-name-field-newssources .field-display .qrcode').html('<img src="'+qrlink+'" alt="QR Code" />'); + } } }); }, - + + startScroll : function() { + var speed = 2; + var items, scroller = jQuery('.field-name-field-scroll .field-items'); + var width = 0; + + scroller.html('<ul><li>'+scroller.html().split("\n").join("</li><li>")+'</li></ul>'); + scroller.find('li').each(function(){ + width += jQuery(this).outerWidth(true);console.log(width); + }); + scroller.css('width', width); + scroll(); + function scroll() { + items = scroller.children(); + var scrollWidth = items.eq(0).outerWidth(); + scroller.animate({'left' : 0 - scrollWidth}, scrollWidth * 100 / speed, 'linear', changeFirst); + } + function changeFirst() { + scroller.append(items.eq(0).remove()).css('left', '1920px'); + scroll(); + } + }, + clock : function() { - - + + } }; })();