PDA

View Full Version : Auto-Load Slideshow content and display lenght



StefanG
08-11-2016, 07:45 PM
Hello,

I've been browsing scripts and forum ... perhaps just using the wrong search terms...

The goal is to display a set of (.png, and .jpg) images through IE11 as a slideshow through an internal network on three (thin client) computers.

The goal is to drop/delete images in a network folder, the slideshow automatically adjusts to the folder content, and displays them for a varying amount of time each. - Some images change every hour, others are the same at times for 2 weeks or longer. A refresh, to look for the current folder content, every 60-minutes or so would work.

If one could name an image at the time of saving it to the network folder and include in the file name how long to display it in seconds would be excellent; so, 'ImageThisandThat-10.png' would display for 10 seconds, whereas 'SoAndSoImage-120.jpg' would stay up for 2 minutes?

I appreciate your time and suggestions.

Thank you,

Stefan

jscheuer1
08-11-2016, 08:43 PM
I'll give this more thought, but at first blush this cries out to me for an assist from server side code* - PHP preferably because that's what I and most folks here are familiar with (asp and ASP.NET would probably be workable as well, as I think I know what needs to be done with those in this regard - sort of). Do you have server side code available? And, if so, what sort(s)?

*Server side code can fetch all or only those images with certain extensions from a folder, determine from their name (given the naming convention you outline) and file-date if they are still eligible and then pass them over to some javascript for display in a slideshow. At one point IE (unlike the vast majority of browsers) was able to fetch the file-date (or was it file-size, not sure) of a given file, but was never able to grab all files of a certain type from a folder or even all files from a folder. I have my doubts if IE11 even retains that file-date reading capability (if IE ever had it). So I think you can appreciate the need for some server side coding to make this work.

StefanG
08-11-2016, 09:40 PM
Hello John,

Please forgive me; I'm likely completely off. I don't have any code yet. And it has been many years since I built an internal web site collection, all in HTML and a little JavaScript, at that time.

This 'slideshow-page' would live on our local network drive (K:\...\...\Slideshow) whereas the images to display are in (K:\...\...\Slideshow\Images). - Is there (still) some information for our network that you'd need to know?

Perhaps it was just as an example noted; does the file date matter if it is to play anything in the folder? Oh, we could simply limit to only .png files if it simplifies things. I am asking because at the present there are two images, they are always present, 'Slide01.png' and 'Slide02.png' that get updated every day (they would become 'Slide...-10.png' or whatever needed, to show them 10 seconds each). The Windows explorer shows the file 'Date' as April 12, 2016 which is the first time these two files were generated. The 'Date modified' however always shows the dated/time of the last save (overwrite) of the previous image file.

I hope this is of help to you to help me.

Stefan

Beverleyh
08-11-2016, 09:56 PM
Would this be for digital signage at all? If so, this may be of interest http://www.dynamicdrive.com/forums/entry.php?338-SiteShow-with-Controls-Fade-in-a-list-of-web-pages-URLs-as-a-fullscreen-SiteShow - it satisfies your need for different slides (the demo displays web pages but the urls could just as easily be plain image files) and differing slide duration. The demo uses a hardcoded menu (slide array) but that could very easily be scripted to auto generate using PHP as John suggested (if you have it available).

This isn't covered in the blog but I already have a custom version pulling images from a folder too, with a page reload after each complete slide cycle to check for and load in new content. It sounds very much like what you're describing, if I'm interpreting your post correctly.

StefanG
08-12-2016, 09:09 PM
Hello Beverleyh,

Sorry for the late response. I did not see your message until just now and did not get the forum notice of a reply.

This is what I am after, yes, you are right on - to display content in the way you show here: http://fofwebdesign.co.uk/template/_testing/siteshow-controls-fullscreen.php

If that could have the Previous/Pause/Resume/Next buttons too, and could grab images a process/user drops into a folder, they could even just all display for the same time frame as the user can interact with the screens if needed. Flexibility, to adjust the display length via part of the file name would be heaven right there! :)

Thank you,

Stefan

Beverleyh
08-13-2016, 04:24 AM
The issue I see at the moment is that you're working from a network drive and not a web server. The network drive would probably be able to display/use the linked demo script as a standard .htm/.html page because that version only uses client-side technology (JavaScript). You should try that out by copying and pasting the source code of the linked demo, and see if it works in your environment in the hardcoded way - when you have to manually edit the menu list items in order to change displayed screen content.

For any kind of automation, you would still need a server-side language, such as PHP, to automatically check for and load in new content periodically from a folder - to rewrite the menu list slide array on the fly. The only way I can think you'd be able to do that is if you install something like WAMP https://sourceforge.net/projects/wampserver/ or XAMPP https://www.apachefriends.org/index.html to give you a local server that runs PHP direct from a networked/local computer. You would need to explore the viability of this option in your environment though - can you install and display a PHP generated web page via WAMP/XAMPP over your network in the way you want? I'm not sure how/if that would work via thin clients (it isn't something I can test).

Further thoughts: Another possible problem could be with the location of the image folder. Assuming that WAMP/XAMPP works for you, in the sense that it could display a basic PHP generated web page via your thin clients, I suspect that it will require the images to be stored within it's own installation folder. I'm not sure if it will be able to "look outside" into another drive. Workarounds for this could be to;

1 - have users access the WAMP/XAMP installation folder in order to drop in images there themselves (probably not a good idea - security/permission issues)

2 - have users continue to drop images into the K:drive but then have an additional process that copies those files to the WAMP/XAMPP installation folder (this is where I fall down because I don't know what mechanism that could be, or what local computer script could do the job since my knowledge is more web-server based)

3 - have users upload images via the browser and into the WAMP/XAMPP installation folder using a PHP script (this is the option that I would go for since the WAMP/XAMPP installation would, in effect, be a locally hosted, self-contained website/server, so you can treat it like any other website). But this creates another challenge because you'd need to source and install a suitable file manager script. Luckily there are many free ones available: https://www.google.co.uk/search?q=php+file+manager+free

Beverleyh
08-14-2016, 01:02 PM
I've had a quick look around for a portable web server application and I think I've found something that may be a better choice for you over WAMP/XAMP. Its called QuickPHP http://www.zachsaw.com/?pg=quickphp_php_tester_debugger Its very small (3.16MB), lightweight and, most importantly, its portable, so it wouldn't need to be installed into a computer's C:drive. What I hope you'll be able to do is download it and unzip it to your networked K:drive slideshow folder. There is no install as such - its portable and will just run from the unzipped "QuickPHP.exe" file.

So, after unzipping the QuickPHP download pack, copy the following 2 files into your K:drive slideshow folder;
- php5ts.dll
- QuickPHP.exe

Now create a file called "index.php" in a plain text editor such as Notepad, and paste this PHP code inside;
<?php phpinfo();?>Save it into the same K:drive slideshow folder that holds the 2 files above.

Next double-click on the "QuickPHP.exe" file to start the web server application.

For the "Root folder" path, browse to and select your K:drive slideshow folder (the one that holds the "index.php" file that you've just created, and the 2 files from the QuickPHP pack). You'll only need to do this part once because a "QuickPHP.ini" settings file will be created with the path info stored inside.

Click the "Start" button.

Then open your web browser and visit this URL: "http://127.0.0.1:5723/". The "index.php" page that you created earlier should load by default.

If you see a web page with a blue header that says "PHP Version 5.3.8", and a load of PHP info below, it means that you've now got portable PHP support and can go ahead with your automated slideshow. Please note that the QuickPHP server will need to be running at all times. As soon as you stop the application, the "index.php" web page, or any .php page running in that browser instance, will fail. You also need to always view the web page via the 127.0.0.1:5723 URL above.

The benefit of this portable server is that your K:drive slideshow folder, and by extension the image folder inside, will be part of the QuickPHP server "installation", so your users will be able to access it as they currently do to manage the slide images inside, and the concern points from my "Further thoughts" posts above will be eliminated. You'd just need to worry about them;
- NOT deleting the "php5ts.dll", "QuickPHP.exe" and "QuickPHP.ini" files (or the "index.php" file that would eventually contain the slideshow script instead of the earlier phpinfo() test)
- viewing the auto-generated slideshow web page via the 127.0.0.1:5723 URL
- keeping the "QuickPHP.exe" application running.

If you can work with all these caveats, you might just have a way to support the PHP auto-generated slideshow you're after.