$desc = get_input("description");
$access_id = (int) get_input("access_id");
$container_guid = (int) get_input('container_guid', 0);
+ $ajax = get_input('ajax', FALSE);
+
if ($container_guid == 0) {
$container_guid = get_loggedin_userid();
}
$_SESSION['uploadtags'] = $tags;
$_SESSION['uploadaccessid'] = $access_id;
- register_error(elgg_echo('file:nofile'));
- forward($_SERVER['HTTP_REFERER']);
+ $error = elgg_echo('file:nofile');
+
+ if ($ajax) {
+ echo json_encode(array(
+ 'status' => 'error',
+ 'message' => $error
+ ));
+ exit;
+ } else {
+ register_error($error);
+ forward($_SERVER['HTTP_REFERER']);
+ }
}
$file = new FilePluginFile();
unset($_SESSION['uploadaccessid']);
// handle results differently for new files and file updates
+ // ajax is only for new files from embed right now.
if ($new_file) {
if ($guid) {
- system_message(elgg_echo("file:saved"));
- add_to_river('river/object/file/create', 'create', get_loggedin_userid(), $file->guid);
+ $message = elgg_echo("file:saved");
+ if ($ajax) {
+ echo json_encode(array(
+ 'status' => 'success',
+ 'message' => $message
+ ));
+ exit;
+
+ } else {
+ system_message($message);
+ add_to_river('river/object/file/create', 'create', get_loggedin_userid(), $file->guid);
+ }
} else {
// failed to save file object - nothing we can do about this
- register_error(elgg_echo("file:uploadfailed"));
+ $error = elgg_echo("file:uploadfailed");
+
+ if ($ajax) {
+ echo json_encode(array(
+ 'status' => 'error',
+ 'message' => $error
+ ));
+ exit;
+
+ } else {
+ register_error($error);
+ }
}
- $container_user = get_entity($container_guid);
- forward($CONFIG->wwwroot . "pg/file/" . $container_user->username);
+ if (!$ajax) {
+ $container_user = get_entity($container_guid);
+ forward($CONFIG->wwwroot . "pg/file/" . $container_user->username);
+ }
} else {
if ($guid) {
// embed support
register_plugin_hook('embed_get_sections', 'all', 'file_embed_get_sections');
register_plugin_hook('embed_get_items', 'file', 'file_embed_get_items');
+ register_plugin_hook('embed_get_upload_sections', 'all', 'file_embed_get_upload_sections');
+
}
/**
*/
function file_embed_get_sections($hook, $type, $value, $params) {
$value['file'] = array(
- 'name' => elgg_echo('file:files'),
+ 'name' => elgg_echo('file'),
'layout' => 'list',
- 'icon_size' => 'medium',
+ 'icon_size' => 'small',
);
return $value;
return $value;
}
+ /**
+ * Register file as an embed type.
+ *
+ * @param unknown_type $hook
+ * @param unknown_type $type
+ * @param unknown_type $value
+ * @param unknown_type $params
+ */
+ function file_embed_get_upload_sections($hook, $type, $value, $params) {
+ $value['file'] = array(
+ 'name' => elgg_echo('file'),
+ 'view' => 'file/embed_upload'
+ );
+
+ return $value;
+ }
+
+
/**
* Populates the ->getUrl() method for file objects
*
--- /dev/null
+<?php
+/**
+ * Files upload form for embed
+ */
+
+$access_id = get_default_access(get_loggedin_user());
+if ($categories = elgg_view('categories', $vars)) {
+ $categories = "<p>$categories</p>";
+}
+
+// recycling the upload action so some of these options are a bit weird.
+$form_body = '<p>' . elgg_view('input/file', array('internalname' => 'upload')) . '</p>';
+$form_body .= '<p>' . elgg_echo('file:title') . ": " . elgg_view("input/text", array('internalname' => 'title')) . '</p>';
+$form_body .= '<p>' . elgg_echo('file:desc') . ": " . elgg_view("input/text",array('internalname' => 'description')) . '</p>';
+$form_body .= '<p>' . elgg_echo('file:tags') . ": " . elgg_view("input/tags", array('internalname' => 'tags')) . '</p>';
+$form_body .= '<p>' . elgg_echo('access') . ": " . elgg_view('input/access', array('internalname' => 'access_id', 'value' => $access_id)) . '</p>';
+$form_body .= $categories;
+$form_body .= elgg_view('input/hidden', array('internalname' => 'ajax', 'value' => TRUE));
+$form_body .= '<p>' . elgg_view('input/submit', array('value' => elgg_echo('upload'))) . '</p>';
+$form_body .= '</div>';
+
+echo elgg_view('input/form', array(
+ 'body' => $form_body,
+ 'internalid' => 'file_embed_upload',
+ 'action' => $vars['url'] . 'action/file/upload',
+));
+
+?>
+
+<script type="text/javascript">
+$(document).ready(function() {
+ // fire off the ajax upload
+ $('#file_embed_upload').submit(function() {
+ var options = {
+ success: function(data) {
+ var info = jQuery.parseJSON(data);
+
+ if (info.status == 'success') {
+ $('.popup .content').load('<?php echo $vars['url'] . 'pg/embed/embed'; ?>?active_section=file');
+ } else {
+ $('.popup .content').find('form').prepend('<p>' + info.message + '</p>');
+ }
+ }
+ };
+ $(this).ajaxSubmit(options);
+ return false;
+ });
+});
+</script>