⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 freenav.jsp

📁 HomePlayer is an extention of the FreePlayer software provided by the french internet provider Free
💻 JSP
字号:
<%@ page contentType="text/html;charset=ISO-8859-15"
	pageEncoding="ISO-8859-1"%>
<%@page import="org.homeplayer.util.*"%>
<%@page import="org.homeplayer.web.*"%>
<%@page import="java.io.*"%>
<%@page import="java.util.*"%>
<%@page import="java.net.URL"%>
<%@page import="javax.swing.filechooser.FileSystemView"%>
<jsp:useBean id="hppc" class="org.homeplayer.web.HPPageContext"
	scope="request">
	<jsp:setProperty name="hppc" property="request" value="<%=request%>" />
	<jsp:setProperty name="hppc" property="serviceName" value="FreeNav" />
</jsp:useBean>
<%!


	/**
	@param o must be a File, a URL or a Shotcut
	*/
	public String getFolderFileName(Object dirObj, boolean isRoot, FreeNavService service) {
		String name;
	    if (dirObj instanceof File) {
	    	File dir = (File) dirObj;
	    	if( isRoot ) {
	    		if (FileSystemView.getFileSystemView().isFloppyDrive(dir) == true) {
					name = dir.getAbsolutePath() ;
	    		} else {
	            	name = service.getDisplayString(dir) ;
	            	name = name.equals("")||name.startsWith("Disque local") ? dir.getAbsolutePath() : name ;
	    		}
		    } else {
	            name = dir.getName().equals( "" ) ? dir.getAbsolutePath() : dir.getName() ;
		    }
	    } else if( dirObj instanceof URL ) {
	    	URL dir = (URL) dirObj;
	    	if( isRoot ) {
	    		name = dir.getFile().substring(1) + " (FB HD)";
	    	} else {
		    	name = new File(dir.getFile()).getName() ;
	    	}
	    } else if( dirObj instanceof Favorite ) {
	    	name = ((Favorite)dirObj).getName() ;
	    } else {
	    	Shortcut shortcut = (Shortcut) dirObj;
	        name = shortcut.getName();
	    } 
	    return name;
	}

	/**
		@param o must be a File, a URL or a Shotcut
	*/
	public String getFileName(Object o) {
		if (o instanceof File) {
			return ((File) o).getName();
		} else if (o instanceof URL) {
			String fullName = ((URL) o).getFile() ;
			int index = fullName.lastIndexOf("/") ;
			return fullName.substring(index+1,fullName.length());
		} else {
			return ((Shortcut) o).getName();
		}
	}

	public String getShort(String name, int nbChars) { 
		int idx = name.lastIndexOf('.');
		if (idx >= 1) {
			name = name.substring(0, idx);
		}
		return StringUtil.cut(name, nbChars, ".");
		
	}


	public String getShortName(Object o, int nbChars) {
		return getShort(getFileName(o), nbChars);
	}
%>
<%
FreeNavService service = new FreeNavService() ;

//-------------------------------------------------------------------------------------------
// List subdirectories
// -------------------------------------------------------------------------------------------




int MAX_HEIGHT_FOLDER = hppc.getSkin().getMenuHeight();
int FOLDER_ICON_WIDTH = 20;
int folderMenuWidth = hppc.getSkin().getMenuWidth();

int dirPage = WebUtil.getParam(request, "dirPage", 0) ;
String folder = WebUtil.getParam(request, "folder", null);
Object folderFile = (folder != null) ? (folder.startsWith("ftp") ? (Object)new URL(folder) : (Object)new File(folder)) : null;
boolean isRoot = (folder == null);

hppc.setNavLevel(service.getDeep(folder) + 1);

List folders = service.getDirectory(folder) ;
if( isRoot && HPConf.getBool(HPConf.FTP_ACTIVATED) && hppc.isFreeBoxHD() ) {
	try {
		Vector ftproots = FTPBrowser.getFBFTPBrowser().listDirectories( "" ) ;
		for( int i=0 ; i<ftproots.size() ; i++ ) {
			folders.add( new URL( FTPBrowser.getFBFTPBrowser().getServerPath()+"/"+ftproots.get(i) )) ;
		}
   	} catch ( Exception e ) {
		System.out.println( "Unable to connect to FBHD." ) ;
		System.out.println( "Error: "+e.getMessage() ) ;
   	}
}

if( isRoot ) {
	FavoriteManager favman = FavoriteManager.getInstance();
	if( favman.getFavorites("FreeNav").size()>0 ) {
		folders.add( null ) ;
	}
	for (Iterator it2 = favman.getFavorites("FreeNav").iterator(); it2.hasNext();) {
		Favorite fav = (Favorite) it2.next();
		if( fav.getUrl() != null ) {
			String favDir = WebUtil.getParam(fav.getUrl(), "folder","") ;
			if( favDir != null && fav.getName() != null ) {
				folders.add( fav ) ;
			}
		}
	}
}
dirPage = Math.min(folders.size()-1, dirPage) ;
dirPage = Math.max(0,dirPage) ;

// build the pages list (files to display on each pages
List<List<Object>> folderPages = new ArrayList<List<Object>>(folders.size() / 10 + 1);
int foldersHeightCpt = 0;
List<Object> foldersCurrentPage = new ArrayList<Object>(20);
folderPages.add(foldersCurrentPage);

for (int i = 0; i < folders.size(); i++) {
	Object o = folders.get(i); 
	if( o != null ) {
	    if ((o instanceof File) && ! isRoot) {
			if (((File) o).getName().equals("VIDEO_TS")) {
				request.setAttribute("isDvdDirectory", Boolean.TRUE);
			}
	    }
	
	    String name = getFolderFileName(o, isRoot, service);
	    if( name != null ) {
			int lineHeight = StringUtil.splitInMultipleLines(name, folderMenuWidth - FOLDER_ICON_WIDTH, 0).size() * 17 + 5;
			if (lineHeight + foldersHeightCpt > MAX_HEIGHT_FOLDER) {
				foldersCurrentPage = new ArrayList<Object>(20);
				folderPages.add(foldersCurrentPage);
				foldersHeightCpt = lineHeight;
			} else {
				foldersHeightCpt += lineHeight;
			}
	    }
	}
	foldersCurrentPage.add(o);
}

foldersCurrentPage = folderPages.get(dirPage);

if (dirPage > 0) {
	String url = "/freenav/freenav.jsp?dirPage="+(dirPage - 1);
	if (! isRoot) {
		url+= "&folder=" + WebUtil.urlEncode(folder);
	}
	hppc.addMenuItem(new HPMenuPrevious(url));
}

if (! isRoot) {
	// add the parent directory link
    String dirPath = service.getParentPath(folder) ;
    FavoriteManager favman = FavoriteManager.getInstance();
	for (Iterator it2 = favman.getFavorites("FreeNav").iterator(); it2.hasNext();) {
		Favorite fav = (Favorite) it2.next();
		if( fav.getUrl() != null ) {
			String favDir = WebUtil.getParam(fav.getUrl(), "folder","") ;
			if( favDir!=null && WebUtil.urlDecode(favDir).equals(folder) ) {
				dirPath = null ;
				break ;
			}
		}
	}
	String url = "/freenav/freenav.jsp";
	if (dirPath != null) {
		url += "?folder=" + WebUtil.urlEncode(dirPath);
	}
	hppc.addMenuItem(new HPMenuLink("<i>Dossier Parent</i>", url, "<img border=0 align=middle src=images/parent.gif width=20 height=20 alt=..>&nbsp;"));
}

for (int i=0; i<foldersCurrentPage.size(); i++) {
	Object dirObj = foldersCurrentPage.get(i);
	if( dirObj != null ) {
	    String name = getFolderFileName(dirObj, isRoot, service);
	    if( name != null ) {
			List<String> lines = StringUtil.splitInMultipleLines(name, folderMenuWidth - FOLDER_ICON_WIDTH, 0);
			StringBuilder buf = new StringBuilder();
			buf.append(lines.get(0));
			for (int j = 1; j < lines.size(); j++) {
				buf.append("<br>&nbsp;&nbsp;&nbsp;&nbsp;");
				buf.append(lines.get(j));
			}
			name = buf.toString();
		    
		    String url;
		    String icon = "" ;
		    if (dirObj instanceof File) {
		    	File dir = (File) dirObj;
		        url = "/freenav/freenav.jsp?folder="+WebUtil.urlEncode(dir.getAbsolutePath());
		        //icon = isRoot ? service.getIcon( dir ) : "" ;
		        icon = service.getIcon( dir );
		    } else if( dirObj instanceof URL ) {
		    	URL dir = (URL) dirObj;
		    	url = "/freenav/freenav.jsp?folder="+WebUtil.urlEncode(dir.toExternalForm());
		    	icon = isRoot && IOUtil.isWin() ? service.getIcon( new File("c:\\") ) : "" ;
		    } else if( dirObj instanceof Favorite ) {
		    	Favorite fav = (Favorite) dirObj;
		    	url = fav.getUrl();
		    	icon = "/images/favfreenav16.gif" ;
		    } else {
		    	Shortcut shortcut = (Shortcut) dirObj;
		        url = "/freenav/freenav.jsp?folder="+WebUtil.urlEncode(shortcut.getFile().getAbsolutePath());
		        //icon = isRoot ? service.getIcon( shortcut ) : "" ;
		        icon = service.getIcon( shortcut.getShortcutFile() );
		    } 
		    if( icon.equals("") == false ) {
		    	icon = "<img border=0 align=middle src=\""+icon+"\" width=16 height=16>&nbsp;" ;
		    }	
		    if( url!=null ) {
		    	HPMenuLink link = icon.equals("") ? new HPMenuLink(name, url) : new HPMenuLink(name, url, icon);
		    	link.setAlreadyFitToWidth(true);
		    	hppc.addMenuItem( link );
		    }
	    }
	} else {
		hppc.addMenuItem(new HPMenuSeparator()) ;
	}
}

if (dirPage < folderPages.size() - 1) {
	String url = "/freenav/freenav.jsp?dirPage="+(dirPage+1);
	if (! isRoot) {
		url+= "&folder=" + WebUtil.urlEncode(folder);
	}
	hppc.addMenuItem(new HPMenuNext(url));
}



//-------------------------------------------------------------------------------------------
//List files 
// -------------------------------------------------------------------------------------------


List files = (isRoot) ? Collections.EMPTY_LIST : service.getMediaFile(folder ) ;
hppc.setHeaderTitle((isRoot) ? "Ordinateur" : ( IOUtil.getSmartPath(folder) + " (" +files.size()+")" ));

//hppc.setChannelPage("/freenav/freenav.jsp?folder=" + WebUtil.urlEncode(folder)+"&start="+start+"&page=%d" ) ;

int MAX_HEIGHT = 345;
int ICON_WIDTH = 20;
int availableWidth = hppc.getSkin().getContentWidth() -25;

int filePage = WebUtil.getParam(request, "filePage", 0) ;

// build the pages list (files to display on each pages
List<List<Object>> pages = new ArrayList<List<Object>>(files.size() / 10 + 1);
int heightCpt = 0;
List<Object> currentPage = new ArrayList<Object>(20);
pages.add(currentPage);
String firstFileName = files.isEmpty() ? "" :  getShort(getFileName(files.get(0)), 100);
hppc.addPage(1, firstFileName, WebUtil.setParam(hppc.getLocalURL(), "filePage=0"));

for (int i = 0; i < files.size(); i++) {
	Object o = files.get(i);
	String name = getFileName(o);
	int lineHeight = StringUtil.splitInMultipleLines(name, availableWidth - ICON_WIDTH, 0).size() * 17 + 5;
	if (lineHeight + heightCpt > MAX_HEIGHT) {
		currentPage = new ArrayList<Object>(20);
		pages.add(currentPage);
		heightCpt = lineHeight;
		hppc.addPage(pages.size(), getShort(name, 100), WebUtil.setParam(hppc.getLocalURL(), "filePage=" + (pages.size()-1)));
	} else {
		heightCpt += lineHeight;
	}
	currentPage.add(o);

	// check if DVD directory
	if (o instanceof File) {
		if (name.equals("VIDEO_TS.VOB")) {
			request.setAttribute("isDvdDirectory", Boolean.TRUE);
		}
	}
}
filePage = Math.max(0,filePage) ;
filePage = Math.min(pages.size()-1,filePage) ;
hppc.setCurrentPage(filePage+1);

currentPage = pages.get(filePage);

if (! isRoot) {	
	String favoriteTitle = folderFile instanceof File ? (((File)folderFile).getName().equals("")? ((File)folderFile).getAbsolutePath() : ((File)folderFile).getName()) : ((URL)folderFile).getFile();
	hppc.setFavorite(hppc.getServiceName(), favoriteTitle, StringUtil.gsub(hppc.getLocalURL(),"filePage=","dummy="));
}

//-------------------------------------------------------------------------------------------
// create the top command
//-------------------------------------------------------------------------------------------

if (folder != null) {
	request.setAttribute("freenav.folder", folder);
	request.setAttribute("freenav.folders", folders);
	request.setAttribute("freenav.files", files);
	request.setAttribute("freenav.service", service);
	if( folderFile instanceof File ) {
		hppc.setTopCommandPage("/freenav/topCommand.jsp");
	}
}
%>
<jsp:include page="<%= hppc.getSkin().getHeader() %>" />
<table width=406 border=0>
	<tr>
		<td>
		<table width="100%" cellpadding=0 cellspacing=0>
			<%
				for (int i = 0; i < currentPage.size(); i++) {
					Object obj = currentPage.get(i);
					String icon;
					String url;
					if (obj instanceof Shortcut) {
						Shortcut shortcut = (Shortcut) obj;
						icon = service.getIcon(shortcut.getShortcutFile());
						url = shortcut.getFile().getAbsolutePath();
					} else if (obj instanceof URL) {
						URL item = (URL) obj;
						icon = service.getIcon(item.getFile());
						url = item.toString();
					} else {
						File item = (File) obj;
						icon = service.getIcon(item);
						url = item.getAbsolutePath();
					}
					
					String name = getFileName(obj);
					List<String> lines = StringUtil.splitInMultipleLines(name, availableWidth - ICON_WIDTH, 0);
					StringBuilder buf = new StringBuilder();
					buf.append(lines.get(0));
					for (int j = 1; j < lines.size(); j++) {
						buf.append("<br>&nbsp;&nbsp;&nbsp;&nbsp;");
						buf.append(lines.get(j));
					}
					String desc = buf.toString();
					
					String playurl = "play"
					+ (service.isImageFile(url) ? "Images" : "")
					+ ".jsp?level=" + (hppc.getNavLevel() + 1) + "&File="
					+ WebUtil.urlEncode(url);
			%>
			<tr>
				<td><%=hppc.getTableLink(icon, desc, playurl, hppc.getSkin().getProp("bodyColor"), 20, false)%></td>
			</tr>
			<%
			}
			%>
		</table>
		</td>
	</tr>
</table>
<jsp:include page="<%= hppc.getSkin().getFooter() %>" />

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -