Proyecto

General

Perfil

« Anterior | Siguiente » 

Revisión 187

Añadido por jredrejo hace más de 13 años

subida de fichero para versiones viejas de firefox/iceweasel

Ver diferencias:

controlies/trunk/applications/controlies/models/db.py
l=LdapConnection.LdapConnection(session)
l.process()
return l
def right_firefox_version(user_agent):
right=True
if "Mozilla" in user_agent:
k=user_agent.split("Firefox/")
if len(k)<2 : k=user_agent.split("Iceweasel/")
if len(k)>1:
version=k[1].split()[0]
if version <"4.0": right=False #firefox<4
return right
controlies/trunk/applications/controlies/controllers/gestion.py
@auth.requires_login()
def rayuela():
import StringIO
right_version=right_firefox_version(request.env.http_user_agent)
if not "archivos" in session.keys():
session.archivos=[]
form=SQLFORM.factory(Field('principiocurso','boolean',default=False ),submit_button='Enviar')
......
session.archivos=[]
return dict(form=form)
return dict(form=form,right_version=right_version)
......
# Used for file upload (with multiple file up) + Need rework (too much queries
#
###################################################
if "archivos" not in session.keys():archivos=[]
for r in request.vars:
if r=="qqfile":
if r=="qqfile" or r=="userfile":
try:
size = 0
#
......
parentpath="/tmp/"
file=request.vars.qqfile
if r=="qqfile":
file=request.vars.qqfile
else:
file=request.vars.userfile.filename
logger.debug('New file uploading : ' + file)
#
# Re-arange file
......
filename=file.replace(' ','_')
filepath=parentpath+filename
f = open(filepath, 'wb')
data=request.body.read()
if r=="qqfile":
data=request.body.read()
else:
data=request.vars.userfile.file.read()
f.write(data)
f.close()
controlies/trunk/applications/controlies/static/js/AjaxUpload.2.0.min.js
(function(){var G=document,K=window;function D(O){if(typeof O=="string"){O=G.getElementById(O)}return O}function C(Q,P,O){if(K.addEventListener){Q.addEventListener(P,O,false)}else{if(K.attachEvent){var R=function(){O.call(Q,K.event)};Q.attachEvent("on"+P,R)}}}var B=function(){var O=G.createElement("div");return function(P){O.innerHTML=P;var Q=O.childNodes[0];O.removeChild(Q);return Q}}();function E(P,O){return P.className.match(new RegExp("(\\s|^)"+O+"(\\s|$)"))}function F(P,O){if(!E(P,O)){P.className+=" "+O}}function L(Q,O){var P=new RegExp("(\\s|^)"+O+"(\\s|$)");Q.className=Q.className.replace(P," ")}function M(O){if(K.jQuery){return jQuery(O).offset()}var Q=0,P=0;do{Q+=O.offsetTop||0;P+=O.offsetLeft||0}while(O=O.offsetParent);return{left:P,top:Q}}function A(Q){var S,P,R,O;var T=M(Q);S=T.left;R=T.top;P=S+Q.offsetWidth;O=R+Q.offsetHeight;return{left:S,right:P,top:R,bottom:O}}function I(O){if(!O.pageX&&O.clientX){return{x:O.clientX+G.body.scrollLeft+G.documentElement.scrollLeft,y:O.clientY+G.body.scrollTop+G.documentElement.scrollTop}}return{x:O.pageX,y:O.pageY}}var H=function(){var O=0;return function(){return"ValumsAjaxUpload"+O++}}();function N(O){return O.replace(/.*(\/|\\)/,"")}function J(O){return(/[.]/.exec(O))?/[^.]+$/.exec(O.toLowerCase()):""}(function(){var O=null;Ajax_upload=AjaxUpload=function(R,P){if(R.jquery){R=R[0]}else{if(typeof R=="string"&&/^#.*/.test(R)){R=R.slice(1)}}R=D(R);this._input=null;this._button=R;this._disabled=false;this._submitting=false;this._settings={action:"upload.php",name:"userfile",data:{},autoSubmit:true,onChange:function(S,T){},onSubmit:function(S,T){},onComplete:function(T,S){}};for(var Q in P){this._settings[Q]=P[Q]}this._createInput();this._rerouteClicks();if(!O){this._createIframe()}};AjaxUpload.prototype={setData:function(P){this._settings.data=P},disable:function(){this._disabled=true},enable:function(){this._disabled=false},set_data:function(P){this.setData(P)},_createInput:function(){var Q=this;var P=G.createElement("input");P.setAttribute("type","file");P.setAttribute("name",this._settings.name);var S={position:"absolute",margin:"-5px 0 0 -175px",padding:0,width:"220px",height:"10px",opacity:0,cursor:"pointer",display:"none"};for(var R in S){P.style[R]=S[R]}if(!(P.style.opacity==="0")){P.style.filter="alpha(opacity=0)"}G.body.appendChild(P);C(P,"change",function(){var T=N(this.value);if(Q._settings.onChange.call(Q,T,J(T))==false){return }if(Q._settings.autoSubmit){Q.submit()}});this._input=P},_rerouteClicks:function(){var P=this;var Q,R=false;C(P._button,"mouseover",function(S){if(!P._input||R){return }R=true;Q=A(P._button)});C(document,"mousemove",function(T){var S=P._input;if(!S||!R){return }if(P._disabled){L(P._button,"hover");S.style.display="none";return }var U=I(T);if((U.x>=Q.left)&&(U.x<=Q.right)&&(U.y>=Q.top)&&(U.y<=Q.bottom)){S.style.top=U.y+"px";S.style.left=U.x+"px";S.style.display="block";F(P._button,"hover")}else{R=false;S.style.display="none";L(P._button,"hover")}})},_createIframe:function(){var P=H();_iframe=B('<iframe name="'+P+'" />');_iframe.id=P;_iframe.style.display="none";G.body.appendChild(_iframe)},submit:function(){var P=this,S=this._settings;if(this._input.value===""){return }var Q=N(this._input.value);if(!(S.onSubmit.call(this,Q,J(Q))==false)){var T=this._createForm();T.appendChild(this._input);T.submit();G.body.removeChild(T);T=null;this._input=null;this._createInput();var R=_iframe;C(R,"load",function(){var V=false;if(R.src=="about:blank"){if(V){R.remove()}return }var W=R.contentDocument?R.contentDocument:frames[R.id].document;var U=W.body.innerHTML;S.onComplete.call(P,Q,U);R.src="about:blank";V=true});this._createIframe()}else{this._input.value=""}},_createForm:function(){var Q=this._settings;var R=B('<form method="post" enctype="multipart/form-data"></form>');R.style.display="none";R.action=Q.action;R.target=_iframe.name;G.body.appendChild(R);for(var S in Q.data){var P=G.createElement("input");P.type="hidden";P.name=S;P.value=Q.data[S];R.appendChild(P)}return R}}})()})();
controlies/trunk/applications/controlies/static/css/AjaxUpload.css
/* CSS Document */
body {
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:12px;
color:#333333;
}
#upload_button {
width:120px;
height:35px;
text-align:center;
background-image:url(images/boton.png);
color:#CCCCCC;
font-weight:bold;
padding-top:15px;
margin:auto;
cursor:pointer;
}
#upload_button:hover{
color:#FFFFFF;
}
controlies/trunk/applications/controlies/views/gestion/rayuela.html
{{response.files.append(URL('static','js/fileuploader.css'))}}
{{response.files.append(URL('static','js/fileuploader.js'))}}
{{if right_version:}}
{{response.files.append(URL('static','js/fileuploader.js'))}}
{{else:}}
{{response.files.append(URL('static','css/AjaxUpload.css'))}}
{{response.files.append(URL('static','js/AjaxUpload.2.0.min.js'))}}
{{pass}}
{{extend 'layout.html'}}
<p><h1>Importación de datos de alumnos y profesores desde Rayuela</h1><p>
......
<center>
<br/>
{{if right_version:}}
<div id="file-upload">
<noscript>
<p>Please enable JavaScript to use file uploader.</p>
</noscript>
</div>
{{else:}}
<div id="upload_button">Subir un fichero</div>
<ul id="lista">
</ul>
{{pass}}
<div id="file-upload">
<noscript>
<p>Please enable JavaScript to use file uploader.</p>
</noscript>
</div>
<h3>Pulse Enviar después de que el archivo o archivos hayan terminado de subir al servidor</h3>
{{=form.custom.begin}}
......
generar inmediatamente las carpetas, basta con ejecutar el script <i>crearCarpetas</i>
en el servidor de NFS.
{{if right_version:}}
<script type="text/javascript">
function createUploader(){
var uploader = new qq.FileUploader({
......
}
window.onload = createUploader;
</script>
{{else:}}
<script language="javascript">
$(document).ready(function(){
var button = $('#upload_button'), interval;
new AjaxUpload('#upload_button', {
action: '{{=URL("subida_rayuela")}}',
onSubmit : function(file , ext){
if (! (ext && /^(zip|xml)$/.test(ext))){
// extensiones permitidas
alert('Error: Tiene una extensión incorrecta. Sólo se permiten estas extensiones: xml, zip');
// cancela upload
return false;
} else {
//Cambio el texto del boton y lo deshabilito
button.text('Subiendo fichero');
this.disable();
}
},
onComplete: function(file, response){
button.text('Subir un fichero');
// habilito upload button
this.enable();
// Agrega archivo a la lista
//$('#lista').appendTo('.files').text(file);
$( "<li ></li>" ).text( file ).appendTo( $('#lista'));
}
});
});
</script>
{{pass}}

Exportar a: Unified diff