Author: sevein
Date: Thu Sep 17 17:20:31 2009
New Revision: 3398
Log:
New features and fixes in multi-file import:
- Uploads are removable by user before import.
- Files are renamed dinamically when you write into title field (placeholder).
- Almost ready repeated files detector...
Modified:
trunk/apps/qubit/modules/digitalobject/templates/multiFileUploadSuccess.php
trunk/web/js/multiFileUpload.js
Modified:
trunk/apps/qubit/modules/digitalobject/templates/multiFileUploadSuccess.php
==============================================================================
--- trunk/apps/qubit/modules/digitalobject/templates/multiFileUploadSuccess.php
Thu Sep 17 16:58:03 2009 (r3397)
+++ trunk/apps/qubit/modules/digitalobject/templates/multiFileUploadSuccess.php
Thu Sep 17 17:20:31 2009 (r3398)
@@ -12,7 +12,7 @@
<div class="form-item">
<label for="parent_id"><?php echo __('title'); ?></label>
- <?php echo object_input_tag($infoObjectTemplate, 'getTitle',
array('size' => 20)) ?>
+ <?php echo object_input_tag($infoObjectTemplate, 'getTitle',
array('size' => 20, 'onkeyup' => 'renumerateUploads()')) ?>
<span class="note"><?php echo __('The "<b>%dd%</b>" placeholder will be
replaced with a incremental number (e.g. \'image <b>01</b>\', \'image
<b>02</b>\')')?></span>
</div>
@@ -66,6 +66,7 @@
var i18nInfoObjectTitle = "'.__('%1% title', array('%1%' =>
sfConfig::get('app_ui_label_informationobject'))).'";
var i18nFilename = "'.__('file name').'";
var i18nFilesize = "'.__('file size').'";
+ var i18nDelete = "'.__('Delete').'";
var i18nOversizedFileListMessage = "'.__('These files couldn\'t be uploaded
because of file size upload limits').'";
'); ?>
@@ -73,6 +74,7 @@
var uploader = new YAHOO.widget.Uploader('uploaderOverlay');
var fileList;
+ var uploadedList = Array();
uploader.addListener('contentReady', handleContentReady);
uploader.addListener('fileSelect', onFileSelect)
Modified: trunk/web/js/multiFileUpload.js
==============================================================================
--- trunk/web/js/multiFileUpload.js Thu Sep 17 16:58:03 2009 (r3397)
+++ trunk/web/js/multiFileUpload.js Thu Sep 17 17:20:31 2009 (r3398)
@@ -61,7 +61,6 @@
if ('fileList' in event && event.fileList != null)
{
fileList = event.fileList;
- var oversizedFileList = new Array();
// Make space for a thumbnail and progress bar
for (var i in fileList)
@@ -70,9 +69,19 @@
var fileName = fileList[i].name;
var fileSize = fileList[i].size; // bytes
+ if (-1 < jQuery.inArray(fileHash, uploadedList))
+ {
+ break;
+ }
+
if (fileSize > maxUploadSize)
{
- oversizedFileList[oversizedFileList.length] = fileName;
+ // Create an upload block for this digital object
+ var uploadBlock = '<div id="upload-' + fileHash + '"
class="multiFileUpload">';
+ uploadBlock += '<ul class=\"validation_error\"><li>Warning, ' +
fileName + ' exceeds maximum upload size.</li></ul>';
+ uploadBlock += '</div>';
+ $('#uploads').append(uploadBlock);
+
uploader.removeFile(fileHash);
}
else
@@ -92,28 +101,8 @@
var progbar = '<div style="height:5px;width:' + thumbWidth +
'px;background-color:#CCC;"></div>';
$('#thumbnail-' + fileHash + ' div.progress-bar').html(progbar);
}
- }
-
- // Show a list of files that couldn't be uploaded because maxUploadSize
limit
- if (oversizedFileList.length > 0)
- {
- if ($('#oversizedFileList').length)
- {
- $('#oversizedFileList').remove();
- }
-
- var oversizedFileListBlock = '<div id=\"oversizedFileList\">';
- oversizedFileListBlock += '<p>' + i18nOversizedFileListMessage + ': ';
-
- for (var j in oversizedFileList)
- {
- oversizedFileListBlock += oversizedFileList[j] + (j <
(oversizedFileList.length - 1) ? ', ' : '');
- }
-
- oversizedFileListBlock += '.</p>';
- oversizedFileListBlock += '</div>';
- $('#uploads').before(oversizedFileListBlock);
+ uploadedList[uploadedList.length] = fileHash;
}
// Start upload
@@ -156,18 +145,10 @@
function onUploadResponse(event)
{
var uploadFiles = eval('(' + event['data'] + ')');
- var count = 0;
var inputTag, imageTag;
for (i in uploadFiles)
{
- if ($('input[type=hidden][name*=md5sum][value=' + uploadFiles[i].md5sum +
']').length)
- {
- $('div#upload-' + event['id']).remove();
- showWarning('Warning: duplicate of ', event['id']);
- continue;
- }
-
var thumbnail = '<img src="' + uploadTmpDir + '/' + uploadFiles[i].thumb +
'"/>';
$('#thumbnail-' + event['id']).html(thumbnail);
@@ -176,30 +157,32 @@
return $(this).attr('style') + '; min-height: 100px';
});
- // Get the file index counting objects already uploaded
- var lastInputName = $('input[type=hidden][name*=files]:last').attr("name");
- fileIndex = lastInputName ?
parseInt(lastInputName.match(/[0-9]+/).shift()) + 1 : 0;
-
- // Add 1 to the index to give a value > 0 and pad with a zero if < 10
- fileCounter = parseInt(fileIndex) + 1;
-
- // Match and replace %dd% placeholder
- var titleTemplate = document.getElementById('uploadForm')['title'].value;
- var ioTitle = replacePlaceHolder(titleTemplate, fileCounter);
+ // Get the file index from the id passed by YUI
+ var fileIndex = event['id'].match(/([0-9]+)$/).shift();
+ if (null == fileIndex || isNaN(parseInt(fileIndex)))
+ {
+ fileIndex = i;
+ }
// Write upload file data
var hiddenFields = '<input type="hidden" name="files[' + fileIndex +
'][name]" value="' + uploadFiles[i].name + '" />';
- hiddenFields += '<input type=\"hidden\" name=files[' + fileIndex +
'][md5sum]" value="' + uploadFiles[i].md5sum + '" />';
+ hiddenFields += '<input type="hidden" name=files[' + fileIndex +
'][md5sum]" value="' + uploadFiles[i].md5sum + '" />';
hiddenFields += '<input type="hidden" name="files[' + fileIndex +
'][tmpName]" value="' + uploadFiles[i].tmpName + '" />';
hiddenFields += '<input type="hidden" name="files[' + fileIndex +
'][thumb]" value="' + uploadFiles[i].thumb + '" />';
$('#uploadForm').append(hiddenFields);
- var uploadData = '<div class="form-item"><label>' + i18nInfoObjectTitle +
'</label><input type="text" name="files[' + fileIndex + '][infoObjectTitle]"
value="' + ioTitle + '" style="width: 250px"/></div>';
+ var uploadData = '<div class="form-item"><label>' + i18nInfoObjectTitle +
'</label><input type="text" name="files[' + fileIndex + '][infoObjectTitle]"
value="" style="width: 250px"/></div>';
uploadData += '<div class="form-item"><label>' + i18nFilename + '</label>'
+ uploadFiles[i].name + '</div>';
uploadData += '<div class="form-item"><label>' + i18nFilesize + '</label>'
+ uploadFiles[i].size + '</div>';
+
+ uploadData += '<div style="text-align: right;">';
+ uploadData += '<a href="#" onclick="deleteUpload(\'' + fileIndex + '\');
return false;">' + i18nDelete + '</a>';
+ uploadData += '</div>';
+
$('#upload-' + event['id']).append(uploadData);
- count++;
+ hilightRepeatedFiles();
+ renumerateUploads();
}
uploader.removeFile(event['id']);
@@ -233,13 +216,29 @@
return fileName;
}
-function showWarning(msg, id)
+function renumerateUploads()
+{
+ $('div.multiFileUpload').each(function(i) {
+ var newValue =
replacePlaceHolder(document.getElementById('uploadForm')['title'].value, i + 1);
+ $(this).find('input[type=text]').val(newValue); });
+}
+
+function hilightRepeatedFiles()
{
- var warning = '<ul id=\"warning_' + id + '\" class=\"validation_error\"
style=\"margin-bottom: 12px; display: none;\">';
- warning += '<li>' + msg + '</li>';
- warning += '<ul>';
+ // TODO: iterates over all div.multiFileUploads hilighting ones with same
md5sum (ignore first ocurrence)
+}
+
+function deleteUpload(id)
+{
+ $('div#upload-file' + id).slideUp('fast', function() {
+ // Remove the HTML block
+ $(this).remove();
+
+ // Remove hidden fields
+ $('input[type=hidden][name*=\[' + id + '\]]').remove();
- $('div#uploads').before(warning);
+ hilightRepeatedFiles();
+ renumerateUploads(); });
- $('ul#warning_' + id).show();
+ // TODO: Ajax call to remove temporary file
}
\ No newline at end of file
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.ca/group/qubit-commits?hl=en
-~----------~----~----~----~------~----~------~--~---