123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- // $Id: swfupload.admin.inc,v 1.2 2010/06/17 18:24:57 eugenmayer Exp $
- /**
- * @file
- * Include file for all functions required while using the CCK widget (e.g.: in node-edit forms).
- */
- /**
- * Menu callback for menu item 'swfupload'.
- * This function is executed when SFWUpload.swf requests a file upload
- */
- function swfupload_js() {
- $p = (object) $_POST;
- $op = $p->op;
- $file = (isset($p->file) ? json_decode($p->file) : NULL);
- $instance = json_decode($p->instance);
- $instance_settings = json_decode($p->instance_settings);
- $file_path = $p->file_path;
- unset($p);
- switch ($op) {
- case 'init':
- // Add the default callback functions for the SWF Upload
- $instance->type = 'table';
- $instance->callbacks = array(
- 'swfupload_loaded_handler' => 'ref.swfUploadLoaded',
- 'file_queued_handler' => 'ref.fileQueued',
- 'queue_complete_handler' => 'ref.queueComplete',
- 'file_queue_error_handler' => 'ref.fileQueueError',
- 'file_dialog_complete_handler' => 'ref.dialogComplete',
- 'upload_success_handler' => 'ref.uploadSuccess',
- 'upload_progress_handler' => 'ref.uploadProgress',
- 'upload_error_handler' => 'ref.uploadError',
- 'upload_complete_handler' => 'ref.uploadComplete',
- 'init_complete_handler' => 'ref.initComplete',// This custom javascript callback function is used to place the markup inside the dom
- );
- $instance->elements = array(
- 'drag' => array(
- 'class' => 'drag first indentation',
- 'type' => 'drag',
- 'colspan' => 3,
- 'title' => t('Filename'),
- 'add_separator' => TRUE,
- ),
- 'icon' => array(
- 'type' => 'icon',
- 'class' => 'icon',
- ),
- 'filename' => array(
- 'type' => 'markup',
- 'value' => '[filename]',
- 'class' => 'text title',
- ),
- );
- break;
- case 'move_uploaded_file':
- $max_filesize = parse_size(file_upload_max_size());
- if (!empty($instance_settings->max_filesize) && parse_size($instance_settings->max_filesize) < $max_filesize) {
- $max_filesize = parse_size($instance_settings->max_filesize);
- }
- $file->validators = array(
- 'file_validate_extensions' => array($instance_settings->file_extensions),
- // 'filefield_validate_image_resolution' => array($instance_settings->max_resolution, $instance_settings->min_resolution),
- 'file_validate_size' => array($max_filesize),
- );
- $file->file_path = $file_path;
- // Allow other modules to change the file_path an validators
- foreach (module_implements('swfupload') as $module) {
- $function = $module . '_swfupload';
- $function($file, $op, $instance, $instance_settings);
- }
- $op = 'upload_complete';
- break;
- }
- // Allow other modules to change the returned data
- foreach (module_implements('swfupload') as $module) {
- $function = $module . '_swfupload';
- $function($file, $op, $instance, $instance_settings);
- // We want to make sure the last column of each tablerow contains the 'cancel' or 'delete' button.
- if ($op == 'init') {
- $instance->elements['cancel'] = array('class' => 'last', 'type' => 'cancel');
- }
- }
- // Replace keys named 'class' to 'classname'
- if (!empty($instance->elements)) {
- array_walk($instance->elements, '_class_to_classname');
- }
- $p->op = $op;
- $p->file = $file;
- $p->file_path = $file_path;
- $p->instance = $instance;
- $p->instance_settings = $instance_settings;
- $p->messages = drupal_get_messages();
- echo json_encode($p);
- exit(0);
- }
- /**
- * Helper function to replace instance elements class keys to classname keys
- * Safari hangs if you use 'class' in javascript
- */
- function _class_to_classname(&$element) {
- $element['classname'] = $element['class'];
- unset($element['class']);
- }
|