/impl/conf/language/MessageResourcesFtpClient.properties |
---|
28,3 → 28,18 |
file.date=Data de Modificação |
file.up.dir=Anterior |
ftp.credentials.save.in.session=Guardar durante esta sessão |
ftp.credentials.explain.1=Por omissão esta gestão de pastas usa o Nome de Utilizador e a Palavra Passe da sua conta de correio electrónico |
ftp.credentials.explain.2=Se pretende alterar o Nome de Utilizador e a Palavra Passe com que vai administrar as pastas partilhadas introduza as novas credênciais neste formulário mas confirme as operações no botão do formulário de cima |
ftp.manager.update=Gerir ficheiros nesta Pasta |
ftp.manager.explain.1=Sabia que dentro da pasta onde se encontra pode enviar ou apagar um ficheiro e criar ou apagar uma pasta |
ftp.manager.explain.2=Coloque na primeira caixa de texto o nome da nova pasta que deseja criar, ou então escolha um ficheiro do seu disco clicando em "Procurar" |
ftp.manager.explain.3=Para executar as operações clique em confirmar |
ftp.manager.explain.4=Pode ainda apagar os ficheiros e directórios clicando na cruz que apareceu à esquerda dos mesmos |
ftp.manager.explain.5=Estas operações dependem das permissões atribuidas às pastas. |
ftp.manager.create.folder=Criar uma pasta com o nome: |
ftp.manager.upload.file=Enviar um ficheiro do meu computador: |
ftp.credentials.change=Alterar credênciais |
ftp.comfirm.delete=Tem a certeza que deseja apagar o ficheiro/directorio {0} |
/impl/conf/language/MessageResources.properties |
---|
35,8 → 35,8 |
errors.detail={0} |
errors.general=The process did not complete. Details should follow. |
errors.token=Request could not be completed. Operation is not in sequence. |
errors.file.too.long=Excedeu a capacidade máxima permitida de {0} Mbytes |
errors.ftp.no.permission=O servidor de pastas partilhadas não permite efectuar as operações desejadas. |
error.expiredate.expired=Data de expiração escolhida já expirou |
error.expiredate.lesser.than.start.date=A data de expiração é menor que a data de inicio |
forms.object.already.in.list={0} já está selecionado |
64,6 → 64,8 |
error.401.item.3=Seguiu um link proveniente de um web site exterior cuja informação pode estar desactualizada |
error.401.item.4=Seguiu um link interno errado ou desactualizado. |
ftp.operation.success=A operação foi efectuada com sucesso |
error.ftp.dir.not.empty=O directorio que pretende apagar não se encontra vazio. Por favor apague primeiro o seu conteúdo. |
organization=Organização |
areas=Areas |
310,7 → 312,7 |
authentication.first.time=Olá bem-vindo, é a primeira vez que que se esta a ligar |
authenticate.already.authenticated=O seu usuário já está autênticado |
username=Nome de Utilizador |
password=Password |
password=Palavra Passe |
password.again=Repita a password |
submit=Entrar |
edit=Editar |
428,3 → 430,4 |
/impl/conf/language/MessageResourcesCourseUnits.properties |
---|
59,6 → 59,7 |
courseunit.assignement.deliver.date=Data Limite de Entrega |
courseunit.assignement.deliver.type=Tipo de entrega |
courseunit.assignement.deliver.type.zipfile=Ficheiro Comprimido (ZIP) |
courseunit.assignement.deliver.type.file=Ficheiro Electrónico |
courseunit.assignement.deliver.grade=Nota |
courseunit.assignement.deliver.show.obs=Adicionar observações |
courseunit.assignement.deliver.obs=obs |
74,6 → 75,7 |
errors.courseunit.assignement.deliver.zip=Por favor escolha um ficheiro comprimido em formato ZIP |
errors.courseunit.assignement.file.type=Por favor escolha um ficheiro comprimido em formato ZIP |
courseunit.students=Estudantes |
courseunit.students.count=Total de estudantes inscritos |
courseunit.assignement.deliver.time=Entregue |
courseunit.assignement.deliver.time.ok=Entregue a Horas |
/impl/conf/WEB-INF/struts/tiles-courseunits.xml |
---|
83,6 → 83,7 |
<put name="topnav" value="/user/home/topnavCourseUnitStudent.jsp"/> |
</definition> |
<definition name="page.courseLayoutIOnline.proxy.ftp" extends="page.separators.home"> |
<put name="admin" value="/user/ftpclient/adminFolder.jsp"/> |
<put name="title" value="Conteudos da Unidade Curricular"/> |
<put name="left" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/ftpClient.jsp"/> |
/impl/conf/WEB-INF/struts/tiles-intranet.xml |
---|
12,6 → 12,7 |
<put name="navigationTop" value="/layout/topnavempty.jsp"/> |
<put name="left" value="/layout/topnavempty.jsp"/> |
<put name="right" value="/layout/topnavempty.jsp"/> |
<put name="admin" value="/layout/topnavempty.jsp"/> |
</definition> |
<definition name="page.separators.home" extends="base.separators"> |
41,6 → 42,7 |
</definition> |
<definition name="page.layoutIOnline.proxy.ftp" extends="base.separators"> |
<put name="admin" value="/user/ftpclient/adminFolder.jsp"/> |
<put name="separator" value="5" type="string"/> |
<put name="body" value="/user/ftpclient/ftpclient.jsp"/> |
</definition> |
/impl/conf/WEB-INF/web.xml |
---|
5,6 → 5,10 |
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" > |
<filter> |
<filter-name>RequestedUrlFilter</filter-name> |
<filter-class>pt.estgp.estgweb.web.filters.RequestURLFilter</filter-class> |
</filter> |
<filter> |
<filter-name>CookieFilter</filter-name> |
<filter-class>pt.estgp.estgweb.web.filters.CookieFilter</filter-class> |
</filter> |
50,6 → 54,10 |
<url-pattern>/*</url-pattern> |
</filter-mapping> |
<filter-mapping> |
<filter-name>RequestedUrlFilter</filter-name> |
<url-pattern>/*</url-pattern> |
</filter-mapping> |
<filter-mapping> |
<filter-name>TopImageFilter</filter-name> |
<url-pattern>/*</url-pattern> |
</filter-mapping> |
/impl/conf/app.properties |
---|
379,9 → 379,13 |
top.image.url.9=/proxy/contactosAlunosPortalMenu/estgp/public/portal/imagens/topTeacher.jpg |
############################################################################ |
# UPLOAD MAX SIZE |
# |
# |
max.file.size.upload.mbytes=20 |
########################################################################### |
# |
# AREAS CIENTIFICAS |
/impl/conf/directories/utilsIntranet.xml |
---|
2,10 → 2,8 |
<directory place="intranetUtils" label="Utilitários" layout="layoutIntranetUtils" layoutRoot="layoutIntranetUtils" targetRole="student" id="utilsIntranet" menuKey="intranet.separator.utils" style="styleIntranet.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/ directory.xsd"> |
<leaf absolute="false" label="Home Utilitários" layout="true" proxy="estgp" id="utils" url="/intranet/escola/utils.html"/> |
<leaf absolute="false" label="Secretaria" layout="true" proxy="estgp" id="secretaria" url="/intranet/escola/secretaria.html"> |
<leaf label="Calendário Escolar" id="calEscolar" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/CalEscolar"/> |
<leaf label="Calendário de Exames" id="calExames" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/CalExames"/> |
<leaf absolute="false" label="Documentos de Apoio" layout="true" proxy="estgp" id="documentosApoio" url="/intranet/escola/secretaria/documentosApoio.html"/> |
<leaf label="Formulários [alunos]" id="Forms.Alunos" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Forms.Alunos"/> |
<leaf absolute="false" label="Formulários [alunos]" layout="true" proxy="estgp" id="Forms.Alunos" url="/intranet/escola/secretaria/formulariosAlunos.html"/> |
<leaf absolute="false" label="Legislação" layout="true" proxy="estgp" id="legislacao" url="/intranet/escola/secretaria/legislacao.html"/> |
<leaf label="Folhas de Presenças" id="Folhas.Presencas" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Folhas.Presencas"/> |
<leaf label="Projectos-AA,CA,GE,MKT" id="Projectos.Finais" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Projectos.Finais"/> |
16,5 → 14,6 |
<leaf absolute="false" label="Horários de Docentes" layout="true" proxy="estgp" id="horariosDocentes" url="/intranet/escola/horarios_Docentes.html"/> |
<leaf absolute="false" label="Horários de Salas" layout="true" proxy="estgp" id="horariosSalas" url="/intranet/escola/horarios_salas.html"/> |
</leaf> |
<leaf absolute="false" label="Calendário de Exames" layout="true" proxy="estgp" id="exames" url="/intranet/escola/Exames.html"/> |
<leaf label="Calendário Escolar" id="calEscolar" absolute="true" url="ftp://www.global.estgp.pt/Intranet/Escola/Secretaria/CalEscolar/CL20082009.pdf"/> |
<leaf absolute="false" label="Calendário de Exames" layout="true" proxy="estgp" id="exames" url="/intranet/escola/Exames.html"/> |
</directory> |
/impl/conf/directories/styleIntranet.xsl |
---|
2,9 → 2,17 |
<xsl:stylesheet xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cmPort="http://www.cm-portalegre.pt/projectos/" version="1.0" xmlns:saxon="http://saxon.sf.net/" extension-element-prefixes="saxon" xmlns:d="http://www.estgp.pt/baco/directory/" xmlns:foo="foo" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" |
xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > |
<xsl:import href="style1.xsl"/> |
<xsl:template match="d:leaf" mode="topNav"> |
<xsl:template name="homeLink"> |
<a> |
<xsl:attribute name="href"><xsl:value-of select="$contextPath"/>/dir/<xsl:value-of select="/d:directory/@id"/>/<xsl:value-of select="/d:directory/*[1]/@id"/><xsl:value-of select="/d:directory/*[1]/@url"/></xsl:attribute> |
<xsl:value-of select="/d:directory/@label"/> |
</a> |
</xsl:template> |
<xsl:template match="d:leaf" mode="topNav"> |
<xsl:if test="not(local-name(..) = 'directory')"> |
<div id="topnav"> |
<ul> |
78,9 → 86,10 |
</xsl:if> |
<li class="navPlace"> |
<xsl:if test="not(local-name(..) = 'directory')"> |
<xsl:if test="local-name(..) = 'directory'"> |
<xsl:call-template name="homeLink"/> |
</xsl:if> |
> |
</xsl:if> |
<xsl:apply-templates select="." mode="link"/> |
</li> |
</xsl:template> |
91,10 → 100,10 |
</xsl:if> |
<li class="navPlace"> |
<xsl:if test="not(local-name(..) = 'directory')"> |
> |
</xsl:if> |
<xsl:apply-templates select="." mode="link"/> |
<xsl:if test="local-name(..) = 'directory'"> |
<xsl:call-template name="homeLink"/> |
</xsl:if> |
> <xsl:apply-templates select="." mode="link"/> |
</li> |
</xsl:template> |
180,6 → 189,6 |
</xsl:template> |
</xsl:stylesheet> |
/impl/conf/berserk/sd.xml |
---|
609,6 → 609,19 |
</filterChains> |
</service> |
<!--FTP Service--> |
<service> |
<name>FtpService</name> |
<implementationClass>pt.estgp.estgweb.services.ftpservices.FtpService</implementationClass> |
<description>Manage FTP Files and Folders</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="AuthenticatedUsers"/> |
</filterChains> |
</service> |
<!--Pop Email Services--> |
<service> |
<name>ReadEmailService</name> |
/impl/src/java/pt/estgp/estgweb/Globals.java |
---|
141,6 → 141,7 |
public static final int REMINDER_TEXT_SUMMARY_SIZE = ConfigProperties.getIntProperty("reminders.text.summary.size"); |
public static final int MAX_FILE_UPOLOAD_SIZE_MBYTES = ConfigProperties.getIntProperty("max.file.size.upload.mbytes"); |
public static final long MAX_BIGMAGE_FILE_SIZE_KBYTES = 500; |
public static final long MAX_SMALLIMAGE_FILE_SIZE_KBYTES = 500; |
public static final long MAX_BIGMAGE_FILE_SIZE_BYTES = MAX_BIGMAGE_FILE_SIZE_KBYTES * 1024; |
/impl/src/java/pt/estgp/estgweb/services/ftpservices/FtpRequestForm.java |
---|
New file |
0,0 → 1,119 |
package pt.estgp.estgweb.services.ftpservices; |
import org.apache.commons.fileupload.FileItem; |
import java.io.InputStream; |
import java.util.List; |
/** |
* @author Jorge |
* @date 26/Fev/2009 |
* @time 23:27:41 |
*/ |
public class FtpRequestForm |
{ |
boolean savePassword = false; |
String startPath; |
String serverUrl; |
String username; |
String password; |
String newFolderName; |
List<FileItem> filesToImport; |
String fileToDelete; |
String folderToDelete; |
public boolean isSavePassword() |
{ |
return savePassword; |
} |
public void setSavePassword(boolean savePassword) |
{ |
this.savePassword = savePassword; |
} |
public String getStartPath() |
{ |
return startPath; |
} |
public void setStartPath(String startPath) |
{ |
this.startPath = startPath; |
} |
public String getServerUrl() |
{ |
return serverUrl; |
} |
public void setServerUrl(String serverUrl) |
{ |
this.serverUrl = serverUrl; |
} |
public String getUsername() |
{ |
return username; |
} |
public void setUsername(String username) |
{ |
this.username = username; |
} |
public String getPassword() |
{ |
return password; |
} |
public void setPassword(String password) |
{ |
this.password = password; |
} |
public String getNewFolderName() |
{ |
return newFolderName; |
} |
public void setNewFolderName(String newFolderName) |
{ |
this.newFolderName = newFolderName; |
} |
public List<FileItem> getFilesToImport() |
{ |
return filesToImport; |
} |
public void setFilesToImport(List<FileItem> filesToImport) |
{ |
this.filesToImport = filesToImport; |
} |
public String getFileToDelete() |
{ |
return fileToDelete; |
} |
public void setFileToDelete(String fileToDelete) |
{ |
this.fileToDelete = fileToDelete; |
} |
public String getFolderToDelete() |
{ |
return folderToDelete; |
} |
public void setFolderToDelete(String folderToDelete) |
{ |
this.folderToDelete = folderToDelete; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/ftpservices/FtpService.java |
---|
New file |
0,0 → 1,105 |
package pt.estgp.estgweb.services.ftpservices; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.services.email.ReadEmailService; |
import pt.estgp.estgweb.services.email.IPopEmail; |
import pt.estgp.estgweb.services.email.IAddress; |
import pt.estgp.estgweb.services.email.impl.DefaultPopEmail; |
import pt.estgp.estgweb.services.email.impl.DefaultAddress; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import pt.estgp.estgweb.web.FtpServer; |
import org.apache.log4j.Logger; |
import org.apache.commons.net.ftp.FTPClient; |
import org.apache.commons.net.ftp.FTP; |
import org.apache.commons.fileupload.FileItem; |
import java.util.List; |
import java.util.Properties; |
import java.util.Date; |
import java.util.ArrayList; |
import java.io.*; |
import jomm.utils.DesUtils; |
import jomm.utils.StringsUtils; |
import javax.mail.*; |
import javax.mail.internet.InternetAddress; |
/** |
* @author Jorge Machado |
* @date 20/Mar/2008 |
* @time 18:31:00 |
* @see pt.estgp.estgweb.services.email |
*/ |
public class FtpService implements IService |
{ |
private static final Logger logger = Logger.getLogger(FtpService.class); |
private static final String FTP_PASSWORD = "pt.estgp.estgweb.services.ftpservices.FtpService.FTP_PASSWORD"; |
public String run(FtpRequestForm ftpRequestForm, UserSession userSession) throws IOException |
{ |
if(ftpRequestForm.isSavePassword() && ftpRequestForm.getPassword() != null && ftpRequestForm.getPassword().trim().length() > 0) |
{ |
((UserSessionImpl)userSession).put(FTP_PASSWORD,DesUtils.getInstance().encrypt(ftpRequestForm.getPassword())); |
} |
String passwordCode = (String) ((UserSessionImpl)userSession).get(FTP_PASSWORD); |
String password; |
if(passwordCode != null) |
{ |
logger.info("using saved password"); |
password = DesUtils.getInstance().decrypt(passwordCode); |
} |
else |
{ |
logger.info("trying pop 3 password"); |
password = DesUtils.getInstance().decrypt(userSession.getUser().getPop3password()); |
} |
String username = ftpRequestForm.getUsername(); |
if(username == null || username.trim().length() == 0) |
username = userSession.getUsername(); |
FtpServer server = FtpServer.getNewServer(ftpRequestForm.getServerUrl(),username,password); |
FTPClient client = server.getClient(); |
String result = "ftp.operation.success"; |
client.setFileType(FTP.BINARY_FILE_TYPE); |
client.changeWorkingDirectory(ftpRequestForm.getStartPath()); |
if(ftpRequestForm.getFilesToImport() != null) |
{ |
for(FileItem item: ftpRequestForm.getFilesToImport()) |
{ |
if(!client.storeFile(item.getName(),item.getInputStream())) |
result = "errors.ftp.no.permission"; |
} |
} |
if(ftpRequestForm.getNewFolderName() != null && ftpRequestForm.getNewFolderName().trim().length() > 0) |
{ |
if(!client.makeDirectory(ftpRequestForm.getNewFolderName())) |
result = "errors.ftp.no.permission"; |
} |
if(ftpRequestForm.getFileToDelete() != null && ftpRequestForm.getFileToDelete().trim().length() > 0) |
{ |
if(!client.deleteFile(ftpRequestForm.getFileToDelete())) |
result = "errors.ftp.no.permission"; |
} |
if(ftpRequestForm.getFolderToDelete() != null && ftpRequestForm.getFolderToDelete().trim().length() > 0) |
{ |
int code = client.rmd(ftpRequestForm.getFolderToDelete()); |
if(code != 250) |
{ |
if(code == 550) |
return "error.ftp.dir.not.empty"; |
else if(code == 530) |
return "errors.ftp.no.permission"; |
} |
} |
client.quit(); |
client.disconnect(); |
return result; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java |
---|
7,10 → 7,7 |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import java.io.Serializable; |
import java.util.Set; |
import java.util.List; |
import java.util.ArrayList; |
import java.util.HashSet; |
import java.util.*; |
/** |
* @author Jorge Machado |
42,6 → 39,8 |
private CourseUnit courseUnit; |
private Set<UserView> teachers; |
private Set<UserView> students; |
private List<UserView> studentsOrderedByName; |
private List<UserView> studentsOrderedByNumber; |
private String objectives; |
private String programStreamId; |
490,4 → 489,54 |
} |
return strBuilder.toString(); |
} |
public List<UserView> getStudentsOrderedByNumber() |
{ |
if(studentsOrderedByNumber == null && students != null) |
{ |
studentsOrderedByNumber = new ArrayList(students); |
Collections.sort(studentsOrderedByNumber,new Comparator<UserView>() |
{ |
public int compare(UserView o1, UserView o2) |
{ |
if(o1 == null) |
return 1; |
if(o2 == null) |
return -1; |
if(o1.getCode() > o2.getCode()) |
return 1; |
else if(o1.getCode() < o2.getCode()) |
return -1; |
else |
return 0; |
} |
} |
); |
} |
return studentsOrderedByNumber; |
} |
public List<UserView> getStudentsOrderedByName() |
{ |
if(studentsOrderedByName == null && students != null) |
{ |
studentsOrderedByName = new ArrayList(students); |
Collections.sort(studentsOrderedByName,new Comparator<UserView>() |
{ |
public int compare(UserView o1, UserView o2) |
{ |
if(o1 == null || o1.getName() == null) |
return 1; |
if(o2 == null || o2.getName() == null) |
return -1; |
return o1.getName().compareTo(o2.getName()); |
} |
} |
); |
} |
return studentsOrderedByName; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/DirWebProxy.java |
---|
4,6 → 4,7 |
import org.apache.commons.httpclient.util.URIUtil; |
import org.apache.commons.net.ftp.FTPClient; |
import org.apache.commons.net.ftp.FTPFile; |
import org.apache.commons.net.ftp.FTP; |
import org.dom4j.*; |
import org.dom4j.io.OutputFormat; |
38,6 → 39,8 |
public class DirWebProxy extends HttpServlet |
{ |
public static final String FTP_ACTUAL_PATH_KEY = "pt.estgp.estgweb.web.DirWebProxy.FTP_ACTUAL_PATH_KEY"; |
/** |
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. |
* |
195,6 → 198,7 |
protected static void extendDiretoryDocument(HttpServletRequest request, String path, String serverStr, String server, String startPath, Document directoryDocument) |
throws ServletException, IOException |
{ |
try |
{ |
String user = ConfigProperties.getProperty(serverStr + ".user"); |
205,11 → 209,12 |
FtpServer ftpServer = FtpServer.getServer(server, user, pass); |
FTPClient client = ftpServer.getClient(); |
Element actualNode = (Element) request.getAttribute("actualNode"); |
if(startPath.equals("/")) |
startPath = ""; |
request.setAttribute(FTP_ACTUAL_PATH_KEY,startPath); |
if (path.equals(startPath)) |
{ |
client.changeWorkingDirectory(path); |
250,7 → 255,7 |
pathFragments = pathAux.split("/"); |
client.changeWorkingDirectory(startPath); |
client.changeWorkingDirectory(startPath); |
FTPFile[] files = client.listFiles(); |
List<IFile> iFiles = FtpFile.init(files, server, path); |
Element goDeepElement = null; |
614,5 → 619,18 |
{ |
return "Proxy Servlet to forward to HTTP or FTP Proxy"; |
} |
public static void main(String[]args) throws IOException |
{ |
FtpServer server = FtpServer.getServer("ftp://www.global.estgp.pt","jmachado","linux5631"); |
FTPClient client = server.getClient(); |
client.setFileType(FTP.BINARY_FILE_TYPE); |
FileInputStream teste = new FileInputStream("D:\\resources.properties"); |
client.changeWorkingDirectory("/Engenharia.Informatica.9119/AnoLectivo.2008-2009/Semestre1/Engenharia.Do.Software"); |
client.makeDirectory("ttt"); |
System.out.println(client.storeFile("resources.properties",teste)); |
client.quit(); |
client.disconnect(); |
} |
// </editor-fold> |
} |
/impl/src/java/pt/estgp/estgweb/web/DirLayoutController.java |
---|
25,6 → 25,7 |
import pt.estgp.estgweb.utils.Dom4jUtil; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException; |
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController; |
import pt.estgp.estgweb.services.directories.DirectoryNodeType; |
import jomm.web.ftp.IFile; |
import jomm.web.ftp.impl.FtpFile; |
36,7 → 37,7 |
* @time 18:01:54 |
* @see pt.estgp.estgweb.web |
*/ |
public class DirLayoutController extends Action |
public class DirLayoutController extends ApplicationDispatchController |
{ |
private static final Logger logger = Logger.getLogger(DirLayoutController.class); |
213,6 → 214,7 |
if (layout != null && layout.length() > 0) layoutDo = Boolean.parseBoolean(layout); |
if (!layoutDo) layoutChoosed = "layoutEmpty"; |
putProxyAttributes(request, proxy, externalFile,xml,url); |
FtpManager.checkOperations(this,request,response); |
request.setAttribute("label", label); |
request.setAttribute("style", style); |
request.setAttribute("xml", xml); |
266,6 → 268,7 |
request.setAttribute("path", externalFile); |
request.setAttribute("startPath", confStartPath); |
if(confStartPath == null) |
confStartPath = ""; |
if(externalFile == null) |
/impl/src/java/pt/estgp/estgweb/web/FtpServer.java |
---|
21,8 → 21,6 |
private static HashMap<String, FtpServer> servers = new HashMap<String, FtpServer>(); |
String host = null; |
int port = 21; |
String username = null; |
103,7 → 101,32 |
return ftpServer; |
} |
/** |
public static FtpServer getNewServer(String urlStr, String user, String pass) |
{ |
try |
{ |
URL url = new URL(urlStr); |
String host = url.getHost(); |
int port = url.getPort(); |
if (port <= 0) |
port = 21; |
logger.info("Connecting to " + host + "in port:" + port); |
return new FtpServer(host, port, user, pass); |
} |
catch (MalformedURLException e) |
{ |
logger.error(e, e); |
} |
catch (IOException e) |
{ |
logger.error(e, e); |
} |
return null; |
} |
/** |
* Add a ftpServer to Cache |
* |
* @param urlStr to parse |
135,4 → 158,6 |
} |
return null; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/LayoutController.java |
---|
7,21 → 7,18 |
import org.apache.commons.net.ftp.FTPClient; |
import org.apache.commons.net.ftp.FTPFile; |
import org.apache.log4j.Logger; |
import org.apache.struts.action.Action; |
import org.apache.struts.action.ActionForm; |
import org.apache.struts.action.ActionForward; |
import org.apache.struts.action.ActionMapping; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController; |
import javax.servlet.ServletException; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import java.io.FileNotFoundException; |
import java.io.IOException; |
import java.net.MalformedURLException; |
import java.net.URL; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
/** |
30,9 → 27,11 |
* @time 18:01:54 |
* @see pt.estgp.estgweb.web |
*/ |
public class LayoutController extends Action |
public class LayoutController extends ApplicationDispatchController |
{ |
public static final String FTP_ACTUAL_PATH_KEY = "pt.estgp.estgweb.web.LayoutController.FTP_ACTUAL_PATH_KEY"; |
private static final Logger logger = Logger.getLogger(LayoutController.class); |
public ActionForward execute(ActionMapping mapping, |
80,7 → 79,7 |
// if(con.getContentType() != null && con.getContentType().toLowerCase().indexOf("html") >= 0) |
if (server.startsWith("ftp://")) |
{ |
processRequestFtp(request, path, serverParameter, server,startPath); |
processRequestFtp(request, response, path, serverParameter, server,startPath); |
return mapping.findForward(layout + ".ftp"); |
} |
else |
111,11 → 110,16 |
protected void processRequestFtp(HttpServletRequest request, String path, String serverStr, String server, String startPath) |
protected void processRequestFtp(HttpServletRequest request, HttpServletResponse response, String path, String serverStr, String server, String startPath) |
throws ServletException, IOException |
{ |
try |
{ |
request.setAttribute(FTP_ACTUAL_PATH_KEY,path); |
//Check if user wants to create folders or upload files |
FtpManager.checkOperations(this,request,response); |
String user = ConfigProperties.getProperty(serverStr + ".user"); |
String pass = ConfigProperties.getProperty(serverStr + ".pass"); |
/impl/src/java/pt/estgp/estgweb/web/form/courseunits/CourseUnitsForm.java |
---|
226,10 → 226,10 |
{ |
addMessageWithKeys(errors,httpServletRequest,"errors.required","courseunit.title"); |
} |
if(uploadFile != null && uploadFile.getFileSize() > 0 && !uploadFile.getFileName().endsWith(".zip")) |
{ |
addMessage(errors,httpServletRequest,"errors.courseunit.assignement.file.type"); |
} |
// if(uploadFile != null && uploadFile.getFileSize() > 0 && !uploadFile.getFileName().endsWith(".zip")) |
// { |
// addMessage(errors,httpServletRequest,"errors.courseunit.assignement.file.type"); |
// } |
return errors; |
} |
240,10 → 240,10 |
{ |
addMessage(errors,httpServletRequest,"errors.courseunit.assignement.deliver.file"); |
} |
if(uploadFile != null && uploadFile.getFileName() !=null && !uploadFile.getFileName().endsWith(".zip")) |
{ |
addMessage(errors,httpServletRequest,"errors.courseunit.assignement.deliver.zip"); |
} |
// if(uploadFile != null && uploadFile.getFileName() !=null && !uploadFile.getFileName().endsWith(".zip")) |
// { |
// addMessage(errors,httpServletRequest,"errors.courseunit.assignement.deliver.zip"); |
// } |
return errors; |
} |
/impl/src/java/pt/estgp/estgweb/web/FtpManager.java |
---|
New file |
0,0 → 1,133 |
package pt.estgp.estgweb.web; |
import org.apache.commons.fileupload.FileItem; |
import org.apache.commons.fileupload.FileUploadException; |
import org.apache.commons.fileupload.disk.DiskFileItemFactory; |
import org.apache.commons.fileupload.servlet.ServletFileUpload; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.services.ftpservices.FtpRequestForm; |
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import java.io.File; |
import java.io.InputStream; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* @author Jorge |
* @date 27/Fev/2009 |
* @time 1:19:57 |
*/ |
public class FtpManager |
{ |
private static final Logger logger = Logger.getLogger(FtpManager.class); |
public static void checkOperations(ApplicationDispatchController messageBack, HttpServletRequest request, HttpServletResponse response) |
{ |
String formUploadStyle = "display:none;"; |
int maxMegas = pt.estgp.estgweb.Globals.MAX_FILE_UPOLOAD_SIZE_MBYTES; |
try |
{ |
// Check that we have a file upload request |
boolean isMultipart = ServletFileUpload.isMultipartContent(request); |
if (isMultipart) |
{ |
// Create a factory for disk-based file items |
DiskFileItemFactory factory = new DiskFileItemFactory(); |
// Set factory constraints |
factory.setSizeThreshold(maxMegas * 1024 * 1024); |
factory.setRepository(new File(pt.estgp.estgweb.Globals.TMP_DIR)); |
// Create a new file upload handler |
ServletFileUpload upload = new ServletFileUpload(factory); |
// Set overall request size constraint |
upload.setSizeMax((maxMegas + 1) * 1024 * 1024); |
// Parse the request |
List<FileItem> items = upload.parseRequest(request); |
List<FileItem> items2import = new ArrayList<FileItem>(); |
for (FileItem item : items) |
{ |
InputStream stream = item.getInputStream(); |
if (item.isFormField()) |
{ |
request.setAttribute(item.getFieldName(), item.getString()); |
} |
if (stream != null && item.getSize() > 0 && item.getName() != null) |
{ |
items2import.add(item); |
} |
} |
String username = (String) request.getAttribute("username"); |
String password = (String) request.getAttribute("password"); |
String server = (String) request.getAttribute("server"); |
String startPath = (String) request.getAttribute(DirWebProxy.FTP_ACTUAL_PATH_KEY); |
if (startPath == null) |
startPath = (String) request.getAttribute(LayoutController.FTP_ACTUAL_PATH_KEY); |
String savePassword = (String) request.getAttribute("savePassword"); |
String newFolder = (String) request.getAttribute("newFolder"); |
String deleteFile = (String) request.getAttribute("deleteFile"); |
String deleteFolder = (String) request.getAttribute("deleteFolder"); |
if (items2import.size() > 0 |
|| |
(newFolder != null && newFolder.trim().length() > 0) |
|| |
(deleteFile != null && deleteFile.trim().length() > 0) |
|| |
(deleteFolder != null && deleteFolder.trim().length() > 0)) |
{ |
FtpRequestForm ftpRequestForm = new FtpRequestForm(); |
ftpRequestForm.setUsername(username); |
ftpRequestForm.setPassword(password); |
if (savePassword != null && savePassword.trim().length() > 0) |
ftpRequestForm.setSavePassword(true); |
ftpRequestForm.setNewFolderName(newFolder); |
ftpRequestForm.setFileToDelete(deleteFile); |
ftpRequestForm.setFolderToDelete(deleteFolder); |
ftpRequestForm.setServerUrl(server); |
ftpRequestForm.setStartPath(startPath); |
ftpRequestForm.setFilesToImport(items2import); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{ftpRequestForm}; |
try |
{ |
String result = (String) sm.execute(RequestUtils.getRequester(request, response), "FtpService", args, names); |
if(result.indexOf("error") >= 0) |
messageBack.addError(request, result); |
else |
messageBack.addMessage(request, result); |
} |
catch (Exception e) |
{ |
response.sendError(500,e.toString()); |
return; |
} |
catch (Throwable throwable) |
{ |
logger.error(throwable,throwable); |
} |
} |
} |
} |
catch (FileUploadException e) |
{ |
formUploadStyle = ""; |
messageBack.addError(request,"errors.file.too.long",""+maxMegas); |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
} |
request.setAttribute("formUploadStyle",formUploadStyle); |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsController.java |
---|
210,7 → 210,7 |
CourseUnitsForm cUF = (CourseUnitsForm) form; |
int id; |
if(request.getParameter("code")!=null) |
if(request.getParameter("code") != null) |
{ |
id = Integer.parseInt(request.getParameter("code")); |
UserView userView = new ProfileController().loadUserWithRecordsCode(id,request,response); |
/impl/src/java/pt/estgp/estgweb/web/filters/RequestURLFilter.java |
---|
New file |
0,0 → 1,66 |
package pt.estgp.estgweb.web.filters; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import javax.servlet.*; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import java.util.List; |
import java.io.IOException; |
/** |
* |
* @author Jorge Machado |
*/ |
public class RequestURLFilter implements Filter |
{ |
public static final String REQUESTED_URL = "pt.estgp.estgweb.web.filters.RequestURLFilter.REQUESTED_URL"; |
public RequestURLFilter() |
{ |
} |
public void init(FilterConfig config) |
{ |
} |
/** |
* |
* @param request The servlet request we are processing |
* @param chain The filter chain we are processing |
* |
* @exception java.io.IOException if an input/output error occurs |
* @exception javax.servlet.ServletException if a servlet error occurs |
*/ |
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) |
throws IOException, ServletException |
{ |
HttpServletRequest hrequest = (HttpServletRequest) request; |
String relativePath = hrequest.getServletPath(); |
if (relativePath == null) |
relativePath = ""; |
if (hrequest.getPathInfo() != null && hrequest.getPathInfo().length() > 0) |
{ |
relativePath += hrequest.getPathInfo(); |
} |
if(hrequest.getQueryString() != null && hrequest.getQueryString().length()>0) |
relativePath += "?" + hrequest.getQueryString(); |
String url = relativePath; |
hrequest.setAttribute(REQUESTED_URL,url); |
chain.doFilter(request,response); |
} |
public void destroy() |
{ |
// Nothing |
} |
} |
/impl/src/web/css/style.css |
---|
1378,6 → 1378,25 |
} |
table.quadro |
{ |
width:650px; |
border: 1px solid black; |
padding: 10px; |
} |
.quadro td |
{ |
text-align:center; |
} |
table.quadro th |
{ |
padding-bottom:5px; |
} |
table.quadro th.side |
{ |
padding:0px; |
text-align:left; |
} |
/*.messages td*/ |
.dataTable |
{ |
/impl/src/web/js/ajax.js |
---|
102,6 → 102,42 |
} |
} |
function getObjectByStartId(objectId) |
{ |
// cross-browser function to get an object's style object given its id |
try |
{ |
for(var element in document.elements) |
{ |
alert(element.value); |
} |
// if(document.getElementById && document.getElementById(objectId)) |
// { |
// // W3C DOM |
// return document.getElementById(objectId); |
// } |
// else if (document.all(objectId)) |
// { |
// // MSIE 4 DOM |
// return document.all(objectId); |
// } |
// else if (document.layers && document.layers[objectId]) |
// { |
// // NN 4 DOM.. note: this won't find nested layers |
// return document.layers[objectId]; |
// } |
// else |
// { |
// return false; |
// } |
} |
catch(e) |
{ |
return false; |
} |
} |
function hide(id,showId) |
{ |
hideOne(id); |
134,6 → 170,14 |
hideOne(id); |
} |
function showOrHideOneWithStartId(id) |
{ |
for(var i = 1; getObjectById(id + i) != '' && getObjectById(id + i) != null && getObjectById(id + i) != 'undefined'; i++) |
{ |
showOrHideOne(id + i); |
} |
} |
function showOrHide(id,hideValue,showValue) |
{ |
if(getObjectById(id).style.display == 'none') |
/impl/src/web/layout/layoutintranet.jsp |
---|
31,6 → 31,7 |
<tiles:insert attribute="left"/> |
</td> |
<td width="100%" valign="top"> |
<tiles:insert attribute="admin"/> |
<tiles:insert attribute="body"/> |
</td> |
<td id="rightPage" valign="top"> |
/impl/src/web/public/courses/courseList.jsp |
---|
15,19 → 15,17 |
<logic:notEmpty name="courseView" property="studiesPlanStreamId"> |
<li> |
<p><a href="javascript:showOrHideOne(${courseView.id})">${courseView.name}</a> - <%=Globals.NATIONAL_INSTITUTION_CODE%>/${courseView.code} - (<a href="<%=request.getContextPath() + "/startLoadCourse.do?type=" + request.getAttribute("type") + "&courseView.id=" + courseView.getId()%>"><bean:message key="course.studies.plan.users"/> </a>)</p> |
<logic:notEmpty name="courseView" property="description"> |
<div style="padding-left:20px;"> |
<div class="seccao borderLeft" style="display:none;" id="${courseView.id}"> |
<div style="padding-left:20px;"> |
<div class="seccao borderLeft" style="display:none;" id="${courseView.id}"> |
<logic:notEmpty name="courseView" property="formatedDescription"><p>${courseView.formatedDescription}</p></logic:notEmpty> |
<logic:notEmpty name="courseView" property="externalSitePath"> |
<% |
WebProxy.processHttpRequestService(out, courseView.getExternalSiteServer(), courseView.getExternalSitePath()); |
%> |
</logic:notEmpty> |
</div> |
<logic:notEmpty name="courseView" property="formatedDescription"><p>${courseView.formatedDescription}</p></logic:notEmpty> |
<logic:notEmpty name="courseView" property="externalSitePath"> |
<% |
WebProxy.processHttpRequestService(out, courseView.getExternalSiteServer(), courseView.getExternalSitePath()); |
%> |
</logic:notEmpty> |
</div> |
</logic:notEmpty> |
</div> |
</li> |
</logic:notEmpty> |
</logic:iterate> |
/impl/src/web/public/courses/course.jsp |
---|
12,11 → 12,6 |
<div class="seccao"> |
<h2>${CourseView.name} (<%=Globals.NATIONAL_INSTITUTION_CODE%> / ${CourseView.code})</h2> |
<logic:notEmpty name="CourseView" property="externalSitePath"> |
<% |
WebProxy.processHttpRequestService(out,CourseView.getExternalSiteServer(),CourseView.getExternalSitePath()); |
%> |
</logic:notEmpty> |
<logic:empty name="CourseView" property="cacheWebDocument"> |
<div class="seccao"> |
<h2>Unidades Curriculares</h2> |
/impl/src/web/public/portals/alunos/informacaoAcademicaLinks.jsp |
---|
13,6 → 13,4 |
topNav.addNavPlace(startLink + "/informacaoAcademicaCets.html"+Globals.PORTAL_ROLE_VIEW_STUDENT, "portal.informacao.academica.cets"); |
topNav.addNavPlace(startLink + "/informacaoAcademicaMaiores23.html"+Globals.PORTAL_ROLE_VIEW_STUDENT, "portal.informacao.academica.maiores.23"); |
topNav.addNavPlace(startLink + "/informacaoAcademicaOutrasFormacoes.html"+Globals.PORTAL_ROLE_VIEW_STUDENT, "portal.informacao.academica.outras.formacoes"); |
Outras Formações |
%> |
/impl/src/web/user/courseunits/courseunitworks.jsp |
---|
61,7 → 61,7 |
</th> |
<td> |
<html:select property="courseUnitAssignementView.deliverType"> |
<html:option value="zipfile" key="courseunit.assignement.deliver.type.zipfile"/> |
<html:option value="file" key="courseunit.assignement.deliver.type.file"/> |
<html:option value="nofile" key="courseunit.assignement.deliver.type.nofile"/> |
</html:select> |
</td> |
/impl/src/web/user/courseunits/students.jsp |
---|
22,17 → 22,25 |
} |
request.setAttribute("user", user); |
request.setAttribute("fromAction", fromAction); |
String orderBy = request.getParameter("order"); |
if(orderBy != null && orderBy.equals("byNumber")) |
request.setAttribute("students",CourseUnitView.getStudentsOrderedByNumber()); |
else |
request.setAttribute("students",CourseUnitView.getStudentsOrderedByName()); |
%> |
<div id="contentIntranet"> |
<div id="contentPane"> |
<p><bean:message key="courseunit.students.count"/>: ${CourseUnitView.studentsSize}</p> |
<table class="dataTable"> |
<tr> |
<th><bean:message key="number"/></th> |
<th><bean:message key="name"/></th> |
<th><html:link action="${user}/startLoadCourseUnitStudents${fromAction}?courseUnitView.id=${CourseUnitView.id}&order=byNumber"><bean:message key="number"/></html:link></th> |
<th><html:link action="${user}/startLoadCourseUnitStudents${fromAction}?courseUnitView.id=${CourseUnitView.id}&order=byName"><bean:message key="name"/></html:link></th> |
<th><bean:message key="user"/></th> |
<th><bean:message key="email"/></th> |
</tr> |
<logic:iterate id="student" name="CourseUnitView" property="students" type="pt.estgp.estgweb.domain.views.UserView"> |
<logic:iterate id="student" name="students" type="pt.estgp.estgweb.domain.views.UserView"> |
<tr> |
<td> |
${student.code} |
/impl/src/web/user/ftpclient/adminFolder.jsp |
---|
New file |
0,0 → 1,71 |
<%@ page import="pt.estgp.estgweb.web.filters.RequestURLFilter" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<div class="contentPane"> |
<div class="seccao"> |
<html:errors/> |
<jomm:messages/> |
<p><a href="javascript:showOrHideOne('adminZone');showOrHideOneWithStartId('FTP_NODE_')"><bean:message key="ftp.manager.update"/></a></p> |
<div id="adminZone" style="${formUploadStyle}"> |
<div class="contentPane"> |
<div class="seccao form blockForm"> |
<form name="FormFtpManager" action="<%=request.getContextPath() + request.getAttribute(RequestURLFilter.REQUESTED_URL)%>" method="post" enctype="multipart/form-data"> |
<input type="hidden" name="deleteFile"/> |
<input type="hidden" name="deleteFolder"/> |
<h3><bean:message key="ftp.manager.explain.1"/></h3> |
<p>(<bean:message key="ftp.manager.explain.5"/>)</p> |
<ul> |
<li><bean:message key="ftp.manager.explain.2"/></li> |
<li><bean:message key="ftp.manager.explain.3"/></li> |
<li><bean:message key="ftp.manager.explain.4"/></li> |
</ul> |
<table> |
<tr> |
<th><bean:message key="ftp.manager.create.folder"/></th> |
<td><input type="text" name="newFolder"></td> |
</tr> |
<tr> |
<th><bean:message key="ftp.manager.upload.file"/></th> |
<td><input type="file" name="newFile"></td> |
</tr> |
<tr> |
<td colspan="2"><input type="submit" value="Confirmar"></td> |
</tr> |
</table> |
<div class="seccao"> |
<p><a href="javascript:showOrHideOne('adminPasswordZone')"><bean:message key="ftp.credentials.change"/></a></p> |
<div id="adminPasswordZone" style="display:none;"> |
<ul> |
<li><bean:message key="ftp.credentials.explain.1"/></li> |
<li><bean:message key="ftp.credentials.explain.2"/></li> |
</ul> |
<table> |
<tr> |
<th><bean:message key="username"/></th> |
<td><input type="text" name="username"></td> |
</tr> |
<tr> |
<th><bean:message key="password"/></th> |
<td><input type="password" name="password"></td> |
</tr> |
<tr> |
<th><bean:message key="ftp.credentials.save.in.session"/></th> |
<td><input type="checkbox" name="savePassword"></td> |
</tr> |
</table> |
</div> |
</div> |
</form> |
</div> |
</div> |
</div> |
</div> |
</div> |
/impl/src/web/user/ftpclient/ftpclient.jsp |
---|
111,6 → 111,7 |
</th> |
</tr> |
<% |
int counter = 0; |
if (iFiles.size() > 0) |
{ |
%> |
119,9 → 120,13 |
{ |
if (i.isDirectory()) |
{ |
request.setAttribute("i",i); |
%> |
<tr class="dir"> |
<td colspan="3"> |
<a id="FTP_NODE_<%=++counter%>" style="display:none" href="javascript:if(confirmLink('<bean:message key="ftp.comfirm.delete" arg0="${i.name}"/>')){document.FormFtpManager.deleteFolder.value='<%=i.getName()%>';document.FormFtpManager.submit();}"><img border="0" src="<%=request.getContextPath()%>/imgs/delete.gif" alt="apagar"></a> |
|
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/folder.gif"> <a |
href="<%=i.getName(request)%>"><%=i.getName()%> |
</a> |
137,10 → 142,14 |
{ |
if (!i.isDirectory()) |
{ |
request.setAttribute("i",i); |
%> |
<tr class="file"> |
<td> |
<a id="FTP_NODE_<%=++counter%>" style="display:none" href="javascript:if(confirmLink('<bean:message key="ftp.comfirm.delete" arg0="${i.name}"/>')){document.FormFtpManager.deleteFile.value='<%=i.getName()%>';document.FormFtpManager.submit();}"><img border="0" src="<%=request.getContextPath()%>/imgs/delete.gif" alt="apagar"></a> |
|
<% |
if (i.getName().endsWith("doc") || i.getName().endsWith("rtf")) |
{ |
/common/commons/commons-fileupload-1.2.1.jar |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |