aboutsummaryrefslogtreecommitdiff
path: root/mod/file/start.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/file/start.php')
-rw-r--r--mod/file/start.php174
1 files changed, 95 insertions, 79 deletions
diff --git a/mod/file/start.php b/mod/file/start.php
index d4f12e903..7c0c216b2 100644
--- a/mod/file/start.php
+++ b/mod/file/start.php
@@ -22,6 +22,9 @@ function file_init() {
// Extend CSS
elgg_extend_view('css/elgg', 'file/css');
+ // add enclosure to rss item
+ elgg_extend_view('extensions/item', 'file/enclosure');
+
// extend group main page
elgg_extend_view('groups/tool_latest', 'file/group_module');
@@ -57,11 +60,30 @@ function file_init() {
// temporary - see #2010
elgg_register_action("file/download", "$action_path/download.php");
-
// embed support
- elgg_register_plugin_hook_handler('embed_get_sections', 'all', 'file_embed_get_sections');
- elgg_register_plugin_hook_handler('embed_get_items', 'file', 'file_embed_get_items');
- elgg_register_plugin_hook_handler('embed_get_upload_sections', 'all', 'file_embed_get_upload_sections');
+ $item = ElggMenuItem::factory(array(
+ 'name' => 'file',
+ 'text' => elgg_echo('file'),
+ 'priority' => 10,
+ 'data' => array(
+ 'options' => array(
+ 'type' => 'object',
+ 'subtype' => 'file',
+ ),
+ ),
+ ));
+ elgg_register_menu_item('embed', $item);
+
+ $item = ElggMenuItem::factory(array(
+ 'name' => 'file_upload',
+ 'text' => elgg_echo('file:upload'),
+ 'priority' => 100,
+ 'data' => array(
+ 'view' => 'embed/file_upload/content',
+ ),
+ ));
+
+ elgg_register_menu_item('embed', $item);
}
/**
@@ -73,12 +95,13 @@ function file_init() {
* View file: file/view/<guid>/<title>
* New file: file/add/<guid>
* Edit file: file/edit/<guid>
- * Group files: file/group/<guid>/owner
+ * Group files: file/group/<guid>/all
+ * Download: file/download/<guid>
*
* Title is ignored
*
* @param array $page
- * @return NULL
+ * @return bool
*/
function file_page_handler($page) {
@@ -91,11 +114,17 @@ function file_page_handler($page) {
$page_type = $page[0];
switch ($page_type) {
case 'owner':
+ file_register_toggle();
include "$file_dir/owner.php";
break;
case 'friends':
+ file_register_toggle();
include "$file_dir/friends.php";
break;
+ case 'read': // Elgg 1.7 compatibility
+ register_error(elgg_echo("changebookmark"));
+ forward("file/view/{$page[1]}");
+ break;
case 'view':
set_input('guid', $page[1]);
include "$file_dir/view.php";
@@ -108,25 +137,64 @@ function file_page_handler($page) {
include "$file_dir/edit.php";
break;
case 'search':
+ file_register_toggle();
include "$file_dir/search.php";
break;
case 'group':
+ file_register_toggle();
include "$file_dir/owner.php";
break;
case 'all':
- default:
+ file_register_toggle();
include "$file_dir/world.php";
break;
+ case 'download':
+ set_input('guid', $page[1]);
+ include "$file_dir/download.php";
+ break;
+ default:
+ return false;
}
+ return true;
+}
+
+/**
+ * Adds a toggle to extra menu for switching between list and gallery views
+ */
+function file_register_toggle() {
+ $url = elgg_http_remove_url_query_element(current_page_url(), 'list_type');
+
+ if (get_input('list_type', 'list') == 'list') {
+ $list_type = "gallery";
+ $icon = elgg_view_icon('grid');
+ } else {
+ $list_type = "list";
+ $icon = elgg_view_icon('list');
+ }
+
+ if (substr_count($url, '?')) {
+ $url .= "&list_type=" . $list_type;
+ } else {
+ $url .= "?list_type=" . $list_type;
+ }
+
+
+ elgg_register_menu_item('extras', array(
+ 'name' => 'file_list',
+ 'text' => $icon,
+ 'href' => $url,
+ 'title' => elgg_echo("file:list:$list_type"),
+ 'priority' => 1000,
+ ));
}
/**
* Creates the notification message body
*
- * @param unknown_type $hook
- * @param unknown_type $entity_type
- * @param unknown_type $returnvalue
- * @param unknown_type $params
+ * @param string $hook
+ * @param string $entity_type
+ * @param string $returnvalue
+ * @param array $params
*/
function file_notify_message($hook, $entity_type, $returnvalue, $params) {
$entity = $params['entity'];
@@ -152,7 +220,7 @@ function file_owner_block_menu($hook, $type, $return, $params) {
$return[] = $item;
} else {
if ($params['entity']->file_enable != "no") {
- $url = "file/group/{$params['entity']->guid}/owner";
+ $url = "file/group/{$params['entity']->guid}/all";
$item = new ElggMenuItem('file', elgg_echo('file:group'), $url);
$return[] = $item;
}
@@ -168,14 +236,22 @@ function file_owner_block_menu($hook, $type, $return, $params) {
* @return string The overall type
*/
function file_get_simple_type($mimetype) {
+
+ if ($simpletype = elgg_trigger_plugin_hook('file:simpletype', $mimetype, null, null)) {
+ return $simpletype;
+ }
switch ($mimetype) {
case "application/msword":
+ case "application/vnd.openxmlformats-officedocument.wordprocessingml.document":
return "document";
break;
case "application/pdf":
return "document";
break;
+ case "application/ogg":
+ return "audio";
+ break;
}
if (substr_count($mimetype, 'text/')) {
@@ -281,17 +357,22 @@ function file_icon_url_override($hook, $type, $returnvalue, $params) {
// thumbnails get first priority
if ($file->thumbnail) {
- return "mod/file/thumbnail.php?file_guid=$file->guid&size=$size";
+ $ts = (int)$file->icontime;
+ return "mod/file/thumbnail.php?file_guid=$file->guid&size=$size&icontime=$ts";
}
$mapping = array(
'application/excel' => 'excel',
'application/msword' => 'word',
+ 'application/ogg' => 'music',
'application/pdf' => 'pdf',
'application/powerpoint' => 'ppt',
'application/vnd.ms-excel' => 'excel',
'application/vnd.ms-powerpoint' => 'ppt',
'application/vnd.oasis.opendocument.text' => 'openoffice',
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'word',
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'excel',
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'ppt',
'application/x-gzip' => 'archive',
'application/x-rar-compressed' => 'archive',
'application/x-stuffit' => 'archive',
@@ -325,7 +406,7 @@ function file_icon_url_override($hook, $type, $returnvalue, $params) {
if ($size == 'large') {
$ext = '_lrg';
} else {
- $exit = '';
+ $ext = '';
}
$url = "mod/file/graphics/icons/{$type}{$ext}.gif";
@@ -333,68 +414,3 @@ function file_icon_url_override($hook, $type, $returnvalue, $params) {
return $url;
}
}
-
-/**
- * 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_sections($hook, $type, $value, $params) {
- $value['file'] = array(
- 'name' => elgg_echo('file'),
- 'layout' => 'list',
- 'icon_size' => 'small',
- );
-
- return $value;
-}
-
-/**
- * Return a list of files for embedding
- *
- * @param unknown_type $hook
- * @param unknown_type $type
- * @param unknown_type $value
- * @param unknown_type $params
- */
-function file_embed_get_items($hook, $type, $value, $params) {
- $options = array(
- 'owner_guid' => elgg_get_logged_in_user_guid(),
- 'type_subtype_pair' => array('object' => 'file'),
- 'count' => TRUE
- );
-
- if ($count = elgg_get_entities($options)) {
- $value['count'] += $count;
-
- unset($options['count']);
- $options['offset'] = $params['offset'];
- $options['limit'] = $params['limit'];
-
- $items = elgg_get_entities($options);
-
- $value['items'] = array_merge($items, $value['items']);
- }
-
- 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;
-}