Apache-UploadMeter
view release on metacpan or search on metacpan
lib/Apache/UploadMeter.pm view on Meta::CPAN
PerlLoadModule Apache::UploadMeter
<UploadMeter MyUploadMeter>
UploadForm /form.html
UploadHandler /perl/upload
UploadMeter /perl/meter
MeterType XML
</UploadMeter>
(in /form.html)
<!--#uploadform-->
<INPUT TYPE="FILE" NAME="theFile"/>
<INPUT TYPE="SUBMIT"/>
</FORM>
Web 2.0 JS-based graphical meter
(in httpd.conf)
PerlLoadModule Apache::UploadMeter
<UploadMeter MyUploadMeter>
UploadForm /form.html
UploadHandler /perl/upload
UploadMeter /perl/meter
MeterType JSON
</UploadMeter>
(in /form.html)
<FORM ACTION="/perl/upload" ENCTYPE="multipart/form-data" METHOD="POST" class="uploadform">
<INPUT TYPE="FILE" NAME="theFile"/>
<INPUT TYPE="SUBMIT"/>
</FORM>
<DIV class="uploadmeter"></DIV>
=head1 ONLINE DEMO
An online demo of a (fairly) up-to-date version of the progress meter can be seen
at http://uploaddemo.beamartyr.net/ [To conserve bandwidth, this URL won't allow
more than 5MB of uploaded data. An attempt to upload more than that will cause
lib/Apache/UploadMeter/Resources/JavaScript.pm view on Meta::CPAN
var Element = new Object();
Element.extend = function(element) {
if (!element || _nativeExtensions || element.nodeType == 3) return element;
if (!element._extended && element.tagName && element != window) {
var methods = Object.clone(Element.Methods), cache = Element.extend.cache;
if (element.tagName == 'FORM')
Object.extend(methods, Form.Methods);
if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))
Object.extend(methods, Form.Element.Methods);
Object.extend(methods, Element.Methods.Simulated);
for (var property in methods) {
var value = methods[property];
if (typeof value == 'function' && !(property in element))
element[property] = cache.findOrStore(value);
}
}
lib/Apache/UploadMeter/Resources/JavaScript.pm view on Meta::CPAN
build: function(html) {
var element = this.node('div');
$(element).update(html.strip());
return element.down();
},
dump: function(scope) {
if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope
var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " +
"BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " +
"FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+
"KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+
"PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+
"TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);
tags.each( function(tag){
scope[tag] = function() {
return Builder.node.apply(Builder, [tag].concat($A(arguments)));
}
});
}
( run in 0.274 second using v1.01-cache-2.11-cpan-64827b87656 )