1
0
This repository has been archived on 2021-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
gallery3-contrib/3.0/modules/plupload/views/form_plupload.html.php

262 lines
10 KiB
PHP

<?php defined("SYSPATH") or die("No direct script access.") ?>
<script type="text/javascript" src="<?= url::file("modules/plupload/lib/plupload.js") ?>"></script>
<script type="text/javascript" src="<?= url::file("modules/plupload/lib/plupload.flash.js") ?>"></script>
<script type="text/javascript" src="<?= url::file("modules/plupload/lib/plupload.html5.js") ?>"></script>
<script type="text/javascript">
// Convert divs to queue widgets when the DOM is ready
$("#g-add-photos-canvas").ready($(function() {
var success_count = 0, error_count = 0, updating = 0;
var uploader;
var update_status = function() {
if (updating) {
// poor man's mutex
setTimeout(function() { update_status(); }, 500);
}
updating = 1;
$.get("<?= url::site("uploader/status/_S/_E") ?>"
.replace("_S", success_count).replace("_E", error_count),
function(data) {
$("#g-add-photos-status-message").html(data);
updating = 0;
});
};
function remove_file_queue(file, spanclass) {
$('#g-plupload' + file.id).slideUp("slow").remove();
if (spanclass == "g-success") {
spantext = <?= t("Completed")->for_js() ?>;
} else {
spantext = <?= t("Cancelled")->for_js() ?>;
}
$("#g-add-photos-status ul").append(
"<li id=\"q" + file.id + "\" class=\"" + spanclass + "\"><span></span> - " + spantext + "</li>");
$("#g-add-photos-status li#q" + file.id + " span").text(file.name);
setTimeout(function() { $("#q" + file.id).slideUp("slow").remove() }, 5000);
}
function cancel_all_upload() {
var files = uploader.files;
while (files.length > 0) {
_cancel_upload(files[0]);
}
}
function cancel_upload(id) {
_cancel_upload(uploader.getFile(id));
}
function _cancel_upload(file) {
var status_before = file.status;
remove_file_queue(file, "g-error");
uploader.removeFile(file);
if(uploader.state == plupload.STARTED && status_before == plupload.UPLOADING) {
uploader.stop();
uploader.start();
}
}
uploader = new plupload.Uploader({
// General settings
runtimes : 'html5,flash',
url : "<?= url::site("uploader/add_photo/{$album->id}") ?>",
max_file_size : <?= $size_limit_bytes ?>,
max_file_count: <?= $simultaneous_upload_limit ?>, // user can add no more then 20 files at a time
//chunk_size : '1mb',
unique_names : true,
multiple_queues : true,
browse_button : 'g-add-photos-button',
container : "g-add-photos-canvas",
multipart : true,
multipart_params : <?= json_encode($script_data) ?>,
// Resize images on clientside if we can
resize : {width : <?= $resize_size ?>, height : <?= $resize_size ?>, quality : 90},
// Rename files by clicking on their titles
rename: true,
// Sort files
sortable: true,
// Specify what files to browse for
filters : [
{title : "Image files", extensions : "jpg,JPG,jpeg,JPEG,gif,GIF,png,PNG"},
{title : "Movie files", extensions : "flv,FLV,mp4,MP4,m4v,M4V"},
],
// Flash settings
flash_swf_url : 'modules/plupload/lib/plupload.flash.swf',
onError: function(event, queueID, fileObj, errorObj) {
if (errorObj.type == "HTTP") {
if (errorObj.info == "500") {
error_msg = <?= t("Unable to process this photo")->for_js() ?>;
} else if (errorObj.info == "404") {
error_msg = <?= t("The upload script was not found")->for_js() ?>;
} else if (errorObj.info == "400") {
error_msg = <?= t("This photo is too large (max is %size bytes)",
array("size" => $size_limit))->for_js() ?>;
} else {
msg += (<?= t("Server error: __INFO__ (__TYPE__)")->for_js() ?>
.replace("__INFO__", errorObj.info)
.replace("__TYPE__", errorObj.type));
}
} else if (errorObj.type == "File Size") {
error_msg = <?= t("This photo is too large (max is %size bytes)",
array("size" => $size_limit))->for_js() ?>;
} else {
error_msg = <?= t("Server error: __INFO__ (__TYPE__)")->for_js() ?>
.replace("__INFO__", errorObj.info)
.replace("__TYPE__", errorObj.type);
}
msg = " - <a target=\"_blank\" href=\"http://codex.gallery2.org/Gallery3:Troubleshooting:Uploading\">" +
error_msg + "</a>";
$("#g-add-photos-status ul").append(
"<li id=\"q" + queueID + "\" class=\"g-error\"><span></span>" + msg + "</li>");
$("#g-add-photos-status li#q" + queueID + " span").text(fileObj.name);
$("#g-plupload").uploadifyCancel(queueID);
error_count++;
update_status();
}
});
// http://www.plupload.com/example_jquery_ui.php
//var uploader = $("#g-plupload").plupload('getUploader');
uploader.bind('Init', function(up, params) {
$('#filelist').html("<div><b>Debug :</b>Current runtime: " + params.runtime + "</div>");
});
uploader.init();
uploader.bind('FilesAdded', function(up, files) {
$('#g-add-photos-canvas').append(
'<div id="g-pluploadQueue" class="uploadifyQueue">');
$.each(files, function(i, file) {
$('#g-pluploadQueue').append(
'<div id="g-plupload' + file.id + '" class="uploadifyQueueItem">' +
'<div class="cancel">' +
'<a id="g-plupload' + file.id + 'Cancel" href="#" ><img src="/lib/uploadify/cancel.png" border="0"></a>' +
'</div>' +
'<span class="fileName">"' + file.name + '" (' + plupload.formatSize(file.size) + ')</span>' +
'<span id="g-plupload' + file.id + 'Percentage" class="percentage"></span>' +
'<div class="uploadifyProgress">' +
'<div id="g-plupload' + file.id + 'ProgressBar" class="uploadifyProgressBar"><!--Progress Bar--></div>' +
'</div>' +
'</div>');
$('#g-plupload' + file.id + 'Cancel').bind('click', function(event) {
var reg = /g-plupload(.*)Cancel/g;
cancel_upload(reg.exec(this.id)[1]);
});
});
uploader.start();
if ($("#g-upload-cancel-all").hasClass("ui-state-disabled")) {
$("#g-upload-cancel-all")
.removeClass("ui-state-disabled")
.attr("disabled", null);
$("#g-upload-done")
.addClass("ui-state-disabled")
.attr("disabled", "disabled");
}
up.refresh(); // Reposition Flash/Silverlight
});
uploader.bind('UploadProgress', function(up, file) {
$('#g-plupload' + file.id + 'ProgressBar').css('width', file.percent + '%');
if (file.percent != 100) {
$('#g-plupload' + file.id + 'Percentage').text(' - ' +file.percent + '%');
} else {
$('#g-plupload' + file.id + 'Percentage').text(' - Completed');
}
});
uploader.bind('Error', function(up, err) {
$('#filelist').append("<div>Error: " + err.code +
", Message: " + err.message +
(err.file ? ", File: " + err.file.name : "") +
"</div>"
);
up.refresh(); // Reposition Flash/Silverlight
});
uploader.bind('FileUploaded', function(up, file) {
/* $('#g-plupload' + file.id).slideUp("slow").remove();
$("#g-add-photos-status ul").append(
"<li id=\"q" + file.id + "\" class=\"g-success\"><span></span> - " +
<?= t("Completed")->for_js() ?> + "</li>");
$("#g-add-photos-status li#q" + file.id + " span").text(file.name);
setTimeout(function() { $("#q" + file.id).slideUp("slow").remove() }, 5000); */
remove_file_queue(file, "g-success");
success_count++;
update_status();
});
uploader.bind('UploadComplete', function(up, files) {
$("#g-upload-cancel-all")
.addClass("ui-state-disabled")
.attr("disabled", "disabled");
$("#g-upload-done")
.removeClass("ui-state-disabled")
.attr("disabled", null);
});
$('#g-upload-cancel-all').bind('click', function(event){
cancel_all_upload();
uploader.trigger('UploadComplete');
return false;
});
})
);
</script>
<div>
<? if ($suhosin_session_encrypt || (identity::active_user()->admin && !$movies_allowed)): ?>
<div class="g-message-block g-info">
<? if ($suhosin_session_encrypt): ?>
<p class="g-error">
<?= 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/")) ?>
</p>
<? endif ?>
<? if (identity::active_user()->admin && !$movies_allowed): ?>
<p class="g-warning">
<?= t("Can't find <i>ffmpeg</i> on your system. Movie uploading disabled. <a href=\"%help_url\">Help!</a>", array("help_url" => "http://codex.gallery2.org/Gallery3:FAQ#Why_does_it_say_I.27m_missing_ffmpeg.3F")) ?>
</p>
<? endif ?>
</div>
<? endif ?>
<div>
<ul class="g-breadcrumbs">
<? foreach ($album->parents() as $i => $parent): ?>
<li<? if ($i == 0) print " class=\"g-first\"" ?>> <?= html::clean($parent->title) ?> </li>
<? endforeach ?>
<li class="g-active"> <?= html::purify($album->title) ?> </li>
</ul>
</div>
<div id="g-add-photos-canvas">
<button id="g-add-photos-button" class="g-button ui-state-default ui-corner-all" href="#"><?= t("Select photos (%size max per file)...", array("size" => $size_limit)) ?></button>
<div id="filelist">No runtime found.</div>
<span id="g-plupload"></span>
</div>
<div id="g-add-photos-status">
<ul id="g-action-status" class="g-message-block">
</ul>
</div>
<!-- Proxy the done request back to our form, since its been ajaxified -->
<div>
<button id="g-upload-done" class="ui-state-default ui-corner-all" onclick="$('#g-add-photos-form').submit();return false;">
<?= t("Done") ?>
</button>
<button id="g-upload-cancel-all" class="ui-state-default ui-corner-all ui-state-disabled" disabled="disabled">
<?= t("Cancel uploads") ?>
</button>
<span id="g-add-photos-status-message" />
</div>
</div>