2009-02-14 23:03:09 +00:00
< ? php defined ( " SYSPATH " ) or die ( " No direct script access. " ) ?>
2009-03-17 05:20:37 +00:00
< script type = " text/javascript " src = " <?= url::file( " lib / swfupload / swfupload . js " ) ?> " ></ script >
< script type = " text/javascript " src = " <?= url::file( " lib / swfupload / swfupload . queue . js " ) ?> " ></ script >
2009-06-28 17:07:41 -07:00
< script type = " text/javascript " src = " <?= url::file( " lib / jquery . scrollTo . js " ) ?> " ></ script >
2009-03-17 05:20:37 +00:00
<!-- hack to set the title for the dialog -->
2009-06-01 22:40:22 -07:00
< form id = " gAddPhotosForm " action = " <?= url::site( " simple_uploader / finish ? csrf = $csrf " ) ?> " >
2009-02-18 07:33:38 +00:00
< fieldset >
2009-07-03 21:44:10 -07:00
< legend > < ? = t ( " Add photos to %album_title " , array ( " album_title " => p :: purify ( $item -> title ))) ?> </legend>
2009-02-18 07:33:38 +00:00
</ fieldset >
</ form >
2009-03-17 05:20:37 +00:00
< div id = " gAddPhotos " >
2009-05-10 20:54:15 +00:00
< ? if ( ini_get ( " suhosin.session.encrypt " )) : ?>
2009-05-10 21:32:27 +00:00
< ul id = " gMessage " >
< li class = " gError " >
< ? = t ( " Error: your server is configured to use the <a href= \" %encrypt_url \" ><code>suhosin.session.encrypt</code></a> setting from <a href= \" %suhosin_url \" >Suhosin</a>. You must disable this setting to upload photos. " ,
array ( " encrypt_url " => " http://www.hardened-php.net/suhosin/configuration.html#suhosin.session.encrypt " ,
" suhosin_url " => " http://www.hardened-php.net/suhosin/ " )) ?>
</ li >
</ ul >
2009-05-10 20:54:15 +00:00
< ? endif ?>
2009-03-17 05:20:37 +00:00
< p >
< ? = t ( " Photos will be uploaded to album: " ) ?>
</ p >
2009-03-17 05:57:40 +00:00
< ul class = " gBreadcrumbs " >
2009-03-17 05:20:37 +00:00
< ? foreach ( $item -> parents () as $parent ) : ?>
2009-05-31 00:11:48 -07:00
< li > < ? = p :: clean ( $parent -> title ) ?> </li>
2009-03-17 05:20:37 +00:00
< ? endforeach ?>
2009-07-03 21:44:10 -07:00
< li class = " active " > < ? = p :: purify ( $item -> title ) ?> </li>
2009-03-17 05:20:37 +00:00
</ ul >
2009-06-29 16:02:11 -04:00
< p >
2009-07-14 12:36:57 -07:00
< span id = " gUploadQueueInfo " >
< ? = t ( " Upload Queue " ) ?>
</ span >
2009-06-29 16:02:11 -04:00
< a id = " gUploadCancel " title = " <?= t( " Cancel all the pending uploads " ) ?> " onclick = " swfu.cancelQueue(); " >< ? = t ( " cancel " ) ?> </a>
</ p >
2009-03-20 17:22:12 +00:00
< div id = " gAddPhotosCanvas " style = " text-align: center; " >
2009-03-17 05:20:37 +00:00
< div id = " gAddPhotosQueue " ></ div >
< div id = " gEditPhotosQueue " ></ div >
2009-03-20 17:22:12 +00:00
< span id = " gChooseFilesButtonPlaceholder " ></ span >
2009-03-17 05:20:37 +00:00
</ div >
2009-06-29 16:02:11 -04:00
<!--
2009-03-17 05:57:40 +00:00
< button id = " gUploadCancel " class = " ui-state-default ui-corner-all " type = " button "
2009-03-17 05:20:37 +00:00
onclick = " swfu.cancelQueue(); "
disabled = " disabled " >
< ? = t ( " Cancel all " ) ?>
</ button >
2009-06-29 16:02:11 -04:00
-->
2009-03-17 05:20:37 +00:00
<!-- Proxy the done request back to our form , since its been ajaxified -->
2009-03-17 05:57:40 +00:00
< button class = " ui-state-default ui-corner-all " onclick = " $ ('#gAddPhotosForm').submit() " >
2009-07-10 14:12:13 -07:00
< ? = t ( " Close " ) ?>
2009-03-17 05:20:37 +00:00
</ button >
</ div >
2009-03-20 17:22:12 +00:00
< style >
#SWFUpload_0 {
margin - top : 100 px ;
}
#gAddPhotos .gBreadcrumbs {
border : 0 ;
margin : 0 ;
padding - left : 10 px ;
}
#gAddPhotosCanvas {
border : 1 px solid #CCCCCC;
margin : . 5 em 0 . 5 em 0 ;
width : 469 px ;
}
#gAddPhotos button {
margin - bottom : . 5 em ;
float : right ;
}
#gAddPhotos #gUploadCancel {
2009-06-29 16:02:11 -04:00
display : none ;
cursor : pointer ;
2009-03-20 17:22:12 +00:00
}
</ style >
2009-03-17 05:20:37 +00:00
< script type = " text/javascript " >
var swfu = new SWFUpload ({
2009-06-29 16:02:11 -04:00
flash_url : " <?= url::file( " lib / swfupload / swfupload . swf " ) ?> " ,
2009-03-17 05:20:37 +00:00
upload_url : " <?= url::site( " simple_uploader / add_photo / $item -> id " ) ?> " ,
post_params : {
" g3sid " : " <?= Session::instance()->id() ?> " ,
" user_agent " : " <?= Input::instance()->server( " HTTP_USER_AGENT " ) ?> " ,
2009-03-27 03:43:21 +00:00
" csrf " : " <?= $csrf ?> "
2009-03-17 05:20:37 +00:00
},
2009-06-29 16:02:11 -04:00
file_size_limit : " <?= ini_get( " upload_max_filesize " ) ? num::convert_to_bytes(ini_get( " upload_max_filesize " )). " B " : " 100 MB " ?> " ,
file_types : " *.gif;*.jpg;*.jpeg;*.png;*.flv;*.mp4;*.GIF;*.JPG;*.JPEG;*.PNG;*.FLV;*.MP4 " ,
file_types_description : " <?= t( " Photos and Movies " ) ?> " ,
file_upload_limit : 1000 ,
file_queue_limit : 0 ,
custom_settings : { },
2009-03-17 05:20:37 +00:00
debug : false ,
// Button settings
2009-03-20 17:22:12 +00:00
button_image_url : " <?= url::file( " themes / default / images / select - photos - backg . png " ) ?> " ,
button_width : " 202 " ,
button_height : " 45 " ,
2009-03-17 05:20:37 +00:00
button_placeholder_id : " gChooseFilesButtonPlaceholder " ,
2009-06-08 17:51:56 +08:00
button_text : '<span class="swfUploadFont"><?= t("Select photos...") ?></span>' ,
2009-03-20 17:22:12 +00:00
button_text_style : " .swfUploadFont { color: #2E6E9E; font-size: 16px; font-family: Lucida Grande,Lucida Sans,Arial,sans-serif; font-weight: bold; } " ,
button_text_left_padding : 30 ,
button_text_top_padding : 10 ,
2009-03-17 05:20:37 +00:00
// The event handler functions are defined in handlers.js
2009-06-29 16:02:11 -04:00
file_queued_handler : file_queued ,
file_queue_error_handler : file_queue_error ,
file_dialog_complete_handler : file_dialog_complete ,
upload_start_handler : upload_start ,
upload_progress_handler : upload_progress ,
upload_error_handler : upload_error ,
upload_success_handler : upload_success ,
upload_complete_handler : upload_complete ,
queue_complete_handler : queue_complete
2009-03-17 05:20:37 +00:00
});
// @todo add support for cancelling individual uploads
function File_Progress ( file ) {
this . box = $ ( " # " + file . id );
if ( ! this . box . length ) {
$ ( " #gAddPhotosQueue " ) . append (
" <div class= \" box \" id= \" " + file . id + " \" > " +
" <div class= \" title \" ></div> " +
" <div class= \" status \" ></div> " +
2009-06-29 16:02:11 -04:00
" <div class= \" progressbar \" ></div> " +
" </div> " );
2009-03-17 05:20:37 +00:00
this . box = $ ( " # " + file . id );
}
this . title = this . box . find ( " .title " );
this . status = this . box . find ( " .status " );
this . progress_bar = this . box . find ( " .progressbar " );
this . progress_bar . progressbar ();
this . progress_bar . css ( " visibility " , " hidden " );
}
File_Progress . prototype . set_status = function ( status_class , msg ) {
this . box . removeClass ( " pending error uploading complete " ) . addClass ( status_class );
this . status . html ( msg );
}
function file_queued ( file ) {
var fp = new File_Progress ( file );
fp . title . html ( file . name );
fp . set_status ( " pending " , " <?= t( " Pending ... " ) ?> " );
// @todo add cancel button to call this.cancelUpload(file.id)
}
function file_queue_error ( file , error_code , message ) {
if ( error_code === SWFUpload . QUEUE_ERROR . QUEUE_LIMIT_EXCEEDED ) {
alert ( " <?= t( " You have attempted to queue too many files . " ) ?> " );
return ;
}
var fp = new File_Progress ( file );
switch ( error_code ) {
case SWFUpload . QUEUE_ERROR . FILE_EXCEEDS_SIZE_LIMIT :
2009-06-04 21:05:33 -04:00
fp . title . html ( file . name );
2009-06-04 18:49:45 -07:00
fp . set_status ( " error " , " <?= t( " < strong > File is too big .</ strong > A likely error source is a too low value for < em > upload_max_filesize </ em > ( % upload_max_filesize ) in your < em > php . ini </ em >. " , array( " upload_max_filesize " => ini_get( " upload_max_filesize " ))) ?> " );
2009-03-17 05:20:37 +00:00
break ;
case SWFUpload . QUEUE_ERROR . ZERO_BYTE_FILE :
2009-06-04 21:05:33 -04:00
fp . title . html ( file . name );
2009-03-17 05:20:37 +00:00
fp . set_status ( " error " , " <?= t( " Cannot upload empty files . " ) ?> " );
break ;
case SWFUpload . QUEUE_ERROR . INVALID_FILETYPE :
2009-06-04 21:05:33 -04:00
fp . title . html ( file . name );
2009-03-17 05:20:37 +00:00
fp . set_status ( " error " , " <?= t( " Invalid file type . " ) ?> " );
break ;
default :
if ( file !== null ) {
2009-06-04 21:05:33 -04:00
fp . title . html ( file . name );
2009-03-17 05:20:37 +00:00
fp . set_status ( " error " , " <?= t( " Unknown error " ) ?> " );
}
break ;
}
}
function file_dialog_complete ( num_files_selected , num_files_queued ) {
if ( num_files_selected > 0 ) {
2009-06-29 16:02:11 -04:00
$ ( " #gUploadCancel " ) . show ();
2009-07-14 12:36:57 -07:00
$ ( " #gUploadQueueInfo " ) . text ( get_completed_status_msg ( this . getStats ()));
2009-03-17 05:20:37 +00:00
}
2009-07-03 21:44:10 -07:00
2009-03-17 05:20:37 +00:00
// Auto start the upload
this . startUpload ();
}
function upload_start ( file ) {
// Do all file validation on the server side. Update the UI here because in Linux
// no uploadProgress events are called (limitation in the Linux Flash VM).
var fp = new File_Progress ( file );
fp . title . html ( file . name );
fp . set_status ( " uploading " , " <?= t( " Uploading ... " ) ?> " );
2009-06-28 17:07:41 -07:00
$ ( " #gAddPhotosCanvas " ) . scrollTo ( fp . box , 1000 );
2009-03-17 05:20:37 +00:00
return true ;
// @todo add cancel button to call this.cancelUpload(file.id)
}
function upload_progress ( file , bytes_loaded , bytes_total ) {
var percent = Math . ceil (( bytes_loaded / bytes_total ) * 100 );
var fp = new File_Progress ( file );
fp . set_status ( " uploading " , " <?= t( " Uploading ... " ) ?> " );
fp . progress_bar . css ( " visibility " , " visible " );
fp . progress_bar . progressbar ( " value " , percent );
}
function upload_success ( file , serverData ) {
var fp = new File_Progress ( file );
fp . progress_bar . progressbar ( " value " , 100 );
fp . set_status ( " complete " , " <?= t( " Complete . " ) ?> " );
}
function upload_error ( file , error_code , message ) {
var fp = new File_Progress ( file );
switch ( error_code ) {
case SWFUpload . UPLOAD_ERROR . HTTP_ERROR :
fp . set_status ( " error " , " <?= t( " Upload error : " ) ?> " + message );
break ;
case SWFUpload . UPLOAD_ERROR . UPLOAD_FAILED :
fp . set_status ( " error " , " <?= t( " Upload failed " ) ?> " );
break ;
case SWFUpload . UPLOAD_ERROR . IO_ERROR :
fp . set_status ( " error " , " <?= t( " Server error " ) ?> " );
break ;
case SWFUpload . UPLOAD_ERROR . SECURITY_ERROR :
fp . set_status ( " error " , " <?= t( " Security error " ) ?> " );
break ;
case SWFUpload . UPLOAD_ERROR . UPLOAD_LIMIT_EXCEEDED :
fp . set_status ( " error " , " <?= t( " Upload limit exceeded " ) ?> " );
break ;
case SWFUpload . UPLOAD_ERROR . FILE_VALIDATION_FAILED :
fp . set_status ( " error " , " <?= t( " Failed validation . File skipped " ) ?> " );
break ;
case SWFUpload . UPLOAD_ERROR . FILE_CANCELLED :
// If there aren't any files left (they were all cancelled) disable the cancel button
if ( this . getStats () . files_queued === 0 ) {
2009-06-29 16:02:11 -04:00
$ ( " #gUploadCancel " ) . hide ();
2009-03-17 05:20:37 +00:00
}
fp . set_status ( " error " , " <?= t( " Cancelled " ) ?> " );
break ;
case SWFUpload . UPLOAD_ERROR . UPLOAD_STOPPED :
fp . set_status ( " error " , " <?= t( " Stopped " ) ?> " );
break ;
default :
fp . set_status ( " error " , " <?= t( " Unknown error : " ) ?> " + error_code );
break ;
}
}
function upload_complete ( file ) {
2009-06-29 16:02:11 -04:00
var stats = this . getStats ();
2009-07-14 12:36:57 -07:00
$ ( " #gUploadQueueInfo " ) . text ( get_completed_status_msg ( stats ));
2009-06-29 16:02:11 -04:00
if ( stats . files_queued === 0 ) {
$ ( " #gUploadCancel " ) . hide ();
2009-03-17 05:20:37 +00:00
}
}
2009-07-14 12:36:57 -07:00
function get_completed_status_msg ( stats ) {
var msg = " <?= t( " Upload Queue ( completed % completed of % total ) " , array( " completed " => " __COMPLETED__ " , " total " => " __TOTAL__ " )) ?> " ;
msg = msg . replace ( " __COMPLETED__ " , stats . successful_uploads );
msg = msg . replace ( " __TOTAL__ " , stats . files_queued + stats . successful_uploads +
stats . upload_errors + stats . upload_cancelled + stats . queue_errors );
return msg ;
}
2009-03-17 05:20:37 +00:00
// This event comes from the Queue Plugin
function queue_complete ( num_files_uploaded ) {
var status_msg = " <?= t( " Uploaded : __COUNT__ " ) ?> " ;
$ ( " #gUploadStatus " ) . html ( status_msg . replace ( " __COUNT__ " , num_files_uploaded ));
}
</ script >