diff options
-rw-r--r-- | mod/file/actions/file/delete.php (renamed from mod/file/actions/delete.php) | 0 | ||||
-rw-r--r-- | mod/file/actions/file/download.php (renamed from mod/file/actions/download.php) | 0 | ||||
-rw-r--r-- | mod/file/actions/file/save.php (renamed from mod/file/actions/save.php) | 0 | ||||
-rw-r--r-- | mod/file/actions/file/upload.php (renamed from mod/file/actions/upload.php) | 0 | ||||
-rw-r--r-- | mod/file/edit.php | 33 | ||||
-rw-r--r-- | mod/file/friends.php | 82 | ||||
-rw-r--r-- | mod/file/index.php | 98 | ||||
-rw-r--r-- | mod/file/languages/en.php | 198 | ||||
-rw-r--r-- | mod/file/start.php | 515 | ||||
-rw-r--r-- | mod/file/upload.php | 52 | ||||
-rw-r--r-- | mod/file/views/default/object/file.php | 110 | ||||
-rw-r--r-- | mod/file/world.php | 61 |
12 files changed, 623 insertions, 526 deletions
diff --git a/mod/file/actions/delete.php b/mod/file/actions/file/delete.php index 9357d4955..9357d4955 100644 --- a/mod/file/actions/delete.php +++ b/mod/file/actions/file/delete.php diff --git a/mod/file/actions/download.php b/mod/file/actions/file/download.php index 210735b74..210735b74 100644 --- a/mod/file/actions/download.php +++ b/mod/file/actions/file/download.php diff --git a/mod/file/actions/save.php b/mod/file/actions/file/save.php index 17a9b16fb..17a9b16fb 100644 --- a/mod/file/actions/save.php +++ b/mod/file/actions/file/save.php diff --git a/mod/file/actions/upload.php b/mod/file/actions/file/upload.php index 081b6a312..081b6a312 100644 --- a/mod/file/actions/upload.php +++ b/mod/file/actions/file/upload.php diff --git a/mod/file/edit.php b/mod/file/edit.php index 961332420..da22cacdf 100644 --- a/mod/file/edit.php +++ b/mod/file/edit.php @@ -1,38 +1,37 @@ <?php /** - * Elgg file saver + * Edit a file * * @package ElggFile */ -require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - gatekeeper(); -// Render the file upload page - -$file_guid = (int) get_input('file_guid'); +$file_guid = (int) get_input('guid'); $file = get_entity($file_guid); if (!$file) { forward(); } -// Set the page owner -$page_owner = elgg_get_page_owner(); -if (!$page_owner) { - $container_guid = $file->container_guid; - if ($container_guid) { - set_page_owner($container_guid); - } -} +elgg_push_breadcrumb(elgg_echo('file'), "pg/file/all/"); +elgg_push_breadcrumb($file->title, $file->getURL()); +elgg_push_breadcrumb(elgg_echo('file:edit')); + +elgg_set_page_owner_guid($file->getContainerGUID()); if (!$file->canEdit()) { forward(); } $title = elgg_echo('file:edit'); -$area1 = elgg_view_title($title); -$area1 .= elgg_view("file/upload", array('entity' => $file)); +$content = elgg_view_title($title); +$content .= elgg_view("file/upload", array('entity' => $file)); + +$body = elgg_view_layout('content', array( + 'content' => $content, + 'title' => $title, + 'filter' => '', + 'header' => '', +)); -$body = elgg_view_layout('one_column_with_sidebar', array('content' => $area1)); echo elgg_view_page($title, $body); diff --git a/mod/file/friends.php b/mod/file/friends.php index 6ead3cf40..201f86f62 100644 --- a/mod/file/friends.php +++ b/mod/file/friends.php @@ -1,44 +1,40 @@ <?php - /** - * Elgg file browser - * - * @package ElggFile - */ - - require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - - if (is_callable('group_gatekeeper')) { - group_gatekeeper(); - } - - $owner = elgg_get_page_owner(); - - $title = elgg_echo("file:friends",array($owner->name)); - $area1 = elgg_view('page/elements/content_header', array('context' => "friends", 'type' => 'file')); - elgg_push_context('search'); - // offset is grabbed in list_user_friends_objects - $content = list_user_friends_objects($owner->guid, 'file', 10, false); - elgg_pop_context(); - - $area1 .= get_filetype_cloud($owner->guid, true); - - // handle case where friends don't have any files - if (empty($content)) { - $area2 .= "<p class='margin-top'>".elgg_echo("file:none")."</p>"; - } else { - $area2 .= $content; - } - - //get the latest comments on all files - $comments = get_annotations(0, "object", "file", "generic_comment", "", 0, 4, 0, "desc"); - $area3 = elgg_view('comments/latest', array('comments' => $comments)); - - $content = "<div class='files'>".$area1.$area2."</div>"; - $params = array( - 'content' => $content, - 'sidebar' => $area3 - ); - $body = elgg_view_layout('one_column_with_sidebar', $params); - - echo elgg_view_page($title, $body); -?>
\ No newline at end of file +/** + * Friends Files + * + * @package ElggFile + */ + +elgg_push_breadcrumb(elgg_echo('file'), "pg/file/all/"); +elgg_push_breadcrumb($owner->name, "pg/file/owner/$owner->username"); + + +$owner = elgg_get_page_owner(); + +$title = elgg_echo("file:friends",array($owner->name)); + +elgg_push_context('search'); +// offset is grabbed in list_user_friends_objects +$content = list_user_friends_objects($owner->guid, 'file', 10, false); +elgg_pop_context(); + +$area1 .= get_filetype_cloud($owner->guid, true); + +// handle case where friends don't have any files +if (empty($content)) { + $area2 .= "<p class='margin-top'>".elgg_echo("file:none")."</p>"; +} else { + $area2 .= $content; +} + +//get the latest comments on all files +$comments = get_annotations(0, "object", "file", "generic_comment", "", 0, 4, 0, "desc"); +$area3 = elgg_view('comments/latest', array('comments' => $comments)); + +$body = elgg_view_layout('content', array( + 'filter_context' => 'friends', + 'content' => $content, + 'title' => $title, +)); + +echo elgg_view_page($title, $body); diff --git a/mod/file/index.php b/mod/file/index.php index e0ec1451f..b55f5c835 100644 --- a/mod/file/index.php +++ b/mod/file/index.php @@ -1,51 +1,49 @@ <?php - /** - * Elgg file browser - * - * @package ElggFile - * - * - * TODO: File icons, download & mime types - */ - - require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - - // access check for closed groups - group_gatekeeper(); - - //set the title - if (elgg_get_page_owner_guid() == get_loggedin_userid()) { - $title = elgg_echo('file:yours'); - $area1 = elgg_view('page/elements/content_header', array('context' => "mine", 'type' => 'file')); - } else { - $title = elgg_echo("file:user",array(elgg_get_page_owner()->name)); - $area1 = elgg_view('page/elements/content_header', array('context' => "friends", 'type' => 'file')); - } - - // Get objects - elgg_push_context('search'); - $offset = (int)get_input('offset', 0); - $area2 .= elgg_list_entities(array('types' => 'object', 'subtypes' => 'file', 'container_guid' => elgg_get_page_owner_guid(), 'limit' => 10, 'offset' => $offset, 'full_view' => FALSE)); - elgg_pop_context(); - - $get_filter = get_filetype_cloud(elgg_get_page_owner_guid()); - if ($get_filter) { - $area1 .= $get_filter; - } else { - $area2 .= "<p class='margin-top'>".elgg_echo("file:none")."</p>"; - } - - //get the latest comments on the current users files - $comments = get_annotations(0, "object", "file", "generic_comment", "", 0, 4, 0, "desc",0,0,elgg_get_page_owner_guid()); - $area3 = elgg_view('comments/latest', array('comments' => $comments)); - - $content = "<div class='files'>".$area1.$area2."</div>"; - - $params = array( - 'content' => $content, - 'sidebar' => $area3 - ); - $body = elgg_view_layout('one_column_with_sidebar', $params); - - echo elgg_view_page($title, $body); -?>
\ No newline at end of file +/** + * Elgg file browser + * + * @package ElggFile + */ + +// access check for closed groups +group_gatekeeper(); + +$owner = elgg_get_page_owner(); + +elgg_push_breadcrumb(elgg_echo('file'), "pg/file/all/"); +elgg_push_breadcrumb($owner->name); + + +//set the title +if (elgg_get_page_owner_guid() == get_loggedin_userid()) { + $title = elgg_echo('file:yours'); + $area1 = elgg_view('page/elements/content_header', array('context' => "mine", 'type' => 'file')); +} else { + $title = elgg_echo("file:user",array(elgg_get_page_owner()->name)); + $area1 = elgg_view('page/elements/content_header', array('context' => "friends", 'type' => 'file')); +} + +// Get objects +elgg_push_context('search'); +$offset = (int)get_input('offset', 0); +$content = elgg_list_entities(array('types' => 'object', 'subtypes' => 'file', 'container_guid' => elgg_get_page_owner_guid(), 'limit' => 10, 'offset' => $offset, 'full_view' => FALSE)); +elgg_pop_context(); + +$get_filter = get_filetype_cloud(elgg_get_page_owner_guid()); +if ($get_filter) { + $area1 .= $get_filter; +} else { + $area2 .= "<p class='margin-top'>".elgg_echo("file:none")."</p>"; +} + +//get the latest comments on the current users files +$comments = get_annotations(0, "object", "file", "generic_comment", "", 0, 4, 0, "desc",0,0,elgg_get_page_owner_guid()); +$area3 = elgg_view('comments/latest', array('comments' => $comments)); + +$body = elgg_view_layout('content', array( + 'filter_context' => 'mine', + 'content' => $content, + 'title' => $title, +)); + +echo elgg_view_page($title, $body);
\ No newline at end of file diff --git a/mod/file/languages/en.php b/mod/file/languages/en.php index 1372ae4ce..f06124031 100644 --- a/mod/file/languages/en.php +++ b/mod/file/languages/en.php @@ -1,104 +1,102 @@ <?php +/** + * Elgg file plugin language pack + * + * @package ElggFile + */ + +$english = array( + + /** + * Menu items and titles + */ + 'file' => "Files", + 'files' => "My Files", + 'file:yours' => "Your files", + 'file:yours:friends' => "Your friends' files", + 'file:user' => "%s's files", + 'file:friends' => "%s's friends' files", + 'file:all' => "All site files", + 'file:edit' => "Edit file", + 'file:more' => "More files", + 'file:list' => "list view", + 'file:group' => "Group files", + 'file:gallery' => "gallery view", + 'file:gallery_list' => "Gallery or list view", + 'file:num_files' => "Number of files to display", + 'file:user:gallery'=>'View %s gallery', + 'file:via' => 'via files', + 'file:upload' => "Upload a file", + 'file:replace' => 'Replace file content (leave blank to not change file)', + + 'file:new' => 'Upload a file', + + 'file:file' => "File", + 'file:title' => "Title", + 'file:desc' => "Description", + 'file:tags' => "Tags", + + 'file:types' => "Uploaded file types", + + 'file:type:all' => "All files", + 'file:type:video' => "Videos", + 'file:type:document' => "Documents", + 'file:type:audio' => "Audio", + 'file:type:image' => "Pictures", + 'file:type:general' => "General", + + 'file:user:type:video' => "%s's videos", + 'file:user:type:document' => "%s's documents", + 'file:user:type:audio' => "%s's audio", + 'file:user:type:image' => "%s's pictures", + 'file:user:type:general' => "%s's general files", + + 'file:friends:type:video' => "Your friends' videos", + 'file:friends:type:document' => "Your friends' documents", + 'file:friends:type:audio' => "Your friends' audio", + 'file:friends:type:image' => "Your friends' pictures", + 'file:friends:type:general' => "Your friends' general files", + + 'file:widget' => "File widget", + 'file:widget:description' => "Showcase your latest files", + + 'file:download' => "Download this", + + 'file:delete:confirm' => "Are you sure you want to delete this file?", + + 'file:tagcloud' => "Tag cloud", + + 'file:display:number' => "Number of files to display", + + 'file:river:create' => 'uploaded the file', + + 'item:object:file' => 'Files', + /** - * Elgg file plugin language pack - * - * @package ElggFile + * Embed media + **/ + + 'file:embed' => "Embed media", + 'file:embedall' => "All", + + /** + * Status messages + */ + + 'file:saved' => "Your file was successfully saved.", + 'file:deleted' => "Your file was successfully deleted.", + + /** + * Error messages */ - $english = array( - - /** - * Menu items and titles - */ - - 'file' => "Files", - 'files' => "My Files", - 'file:yours' => "Your files", - 'file:yours:friends' => "Your friends' files", - 'file:user' => "%s's files", - 'file:friends' => "%s's friends' files", - 'file:all' => "All site files", - 'file:edit' => "Edit file", - 'file:more' => "More files", - 'file:list' => "list view", - 'file:group' => "Group files", - 'file:gallery' => "gallery view", - 'file:gallery_list' => "Gallery or list view", - 'file:num_files' => "Number of files to display", - 'file:user:gallery'=>'View %s gallery', - 'file:via' => 'via files', - 'file:upload' => "Upload a file", - 'file:replace' => 'Replace file content (leave blank to not change file)', - - 'file:new' => 'Upload a file', - - 'file:file' => "File", - 'file:title' => "Title", - 'file:desc' => "Description", - 'file:tags' => "Tags", - - 'file:types' => "Uploaded file types", - - 'file:type:all' => "All files", - 'file:type:video' => "Videos", - 'file:type:document' => "Documents", - 'file:type:audio' => "Audio", - 'file:type:image' => "Pictures", - 'file:type:general' => "General", - - 'file:user:type:video' => "%s's videos", - 'file:user:type:document' => "%s's documents", - 'file:user:type:audio' => "%s's audio", - 'file:user:type:image' => "%s's pictures", - 'file:user:type:general' => "%s's general files", - - 'file:friends:type:video' => "Your friends' videos", - 'file:friends:type:document' => "Your friends' documents", - 'file:friends:type:audio' => "Your friends' audio", - 'file:friends:type:image' => "Your friends' pictures", - 'file:friends:type:general' => "Your friends' general files", - - 'file:widget' => "File widget", - 'file:widget:description' => "Showcase your latest files", - - 'file:download' => "Download this", - - 'file:delete:confirm' => "Are you sure you want to delete this file?", - - 'file:tagcloud' => "Tag cloud", - - 'file:display:number' => "Number of files to display", - - 'file:river:create' => 'uploaded the file', - - 'item:object:file' => 'Files', - - /** - * Embed media - **/ - - 'file:embed' => "Embed media", - 'file:embedall' => "All", - - /** - * Status messages - */ - - 'file:saved' => "Your file was successfully saved.", - 'file:deleted' => "Your file was successfully deleted.", - - /** - * Error messages - */ - - 'file:none' => "No files uploaded.", - 'file:uploadfailed' => "Sorry; we could not save your file.", - 'file:downloadfailed' => "Sorry; this file is not available at this time.", - 'file:deletefailed' => "Your file could not be deleted at this time.", - 'file:noaccess' => "You do not have permissions to change this file", - 'file:cannotload' => "There was an error loading the file", - 'file:nofile' => "You must select a file", - ); - - add_translation("en",$english); -?>
\ No newline at end of file + 'file:none' => "No files uploaded.", + 'file:uploadfailed' => "Sorry; we could not save your file.", + 'file:downloadfailed' => "Sorry; this file is not available at this time.", + 'file:deletefailed' => "Your file could not be deleted at this time.", + 'file:noaccess' => "You do not have permissions to change this file", + 'file:cannotload' => "There was an error loading the file", + 'file:nofile' => "You must select a file", +); + +add_translation("en", $english);
\ No newline at end of file diff --git a/mod/file/start.php b/mod/file/start.php index 3376befeb..64533616c 100644 --- a/mod/file/start.php +++ b/mod/file/start.php @@ -1,148 +1,163 @@ <?php - /** - * Elgg file browser - * - * @package ElggFile - */ +/** + * Elgg file browser + * + * @package ElggFile + */ - /** - * Override the ElggFile so that - */ - class FilePluginFile extends ElggFile { - protected function initialise_attributes() { - parent::initialise_attributes(); +/** + * Override the ElggFile so that + */ +class FilePluginFile extends ElggFile { + protected function initialise_attributes() { + parent::initialise_attributes(); - $this->attributes['subtype'] = "file"; - } + $this->attributes['subtype'] = "file"; + } - public function __construct($guid = null) { - parent::__construct($guid); - } + public function __construct($guid = null) { + parent::__construct($guid); } +} - /** - * File plugin initialisation functions. - */ - function file_init() { - global $CONFIG; +/** + * File plugin initialisation functions. + */ +function file_init() { + global $CONFIG; - // Set up menu (tools dropdown) - $item = new ElggMenuItem('file', elgg_echo('file'), 'pg/file'); - elgg_register_menu_item('site', $item); + // Site navigation + $item = new ElggMenuItem('file', elgg_echo('file'), 'pg/file/all'); + elgg_register_menu_item('site', $item); - // Extend CSS - elgg_extend_view('css/screen', 'file/css'); + // Extend CSS + elgg_extend_view('css/screen', 'file/css'); - // extend group main page - elgg_extend_view('groups/tool_latest','file/groupprofile_files'); + // extend group main page + elgg_extend_view('groups/tool_latest', 'file/groupprofile_files'); - // Register a page handler, so we can have nice URLs - register_page_handler('file','file_page_handler'); + // Register a page handler, so we can have nice URLs + register_page_handler('file', 'file_page_handler'); - // Add a new file widget - elgg_register_widget_type('filerepo',elgg_echo("file"),elgg_echo("file:widget:description")); + // Add a new file widget + elgg_register_widget_type('filerepo', elgg_echo("file"), elgg_echo("file:widget:description")); - // Register a URL handler for files - register_entity_url_handler('file_url','object','file'); + // Register a URL handler for files + register_entity_url_handler('file_url', 'object', 'file'); - // Register granular notification for this object type - if (is_callable('register_notification_object')) { - register_notification_object('object', 'file', elgg_echo('file:newupload')); - } + // Register granular notification for this object type + register_notification_object('object', 'file', elgg_echo('file:newupload')); - // Listen to notification events and supply a more useful message - elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'file_notify_message'); + // Listen to notification events and supply a more useful message + elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'file_notify_message'); - // add the group files tool option - add_group_tool_option('file',elgg_echo('groups:enablefiles'),true); + // add the group files tool option + add_group_tool_option('file', elgg_echo('groups:enablefiles'), true); - // Register entity type - register_entity_type('object','file'); + // Register entity type + register_entity_type('object', 'file'); - elgg_register_plugin_hook_handler('register', 'menu:owner_block', 'file_owner_block_menu'); + elgg_register_plugin_hook_handler('register', 'menu:owner_block', 'file_owner_block_menu'); + + // 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'); +} - // 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'); +/** + * Dispatches file pages. + * URLs take the form of + * All files: pg/file/all + * User's files: pg/file/owner/<username> + * Friends' files: pg/file/friends/<username> + * View file: pg/file/view/<guid>/<title> + * New file: pg/file/new/<guid> + * Edit file: pg/file/edit/<guid>/<revision> + * Group files: pg/file/group/<guid>/owner + * + * Title is ignored + * + * @param array $page + * @return NULL + */ +function file_page_handler($page) { + if (!isset($page[0])) { + $page[0] = 'all'; } - /** - * File page handler - * - * @param array $page Array of page elements, forwarded by the page handling mechanism - */ - function file_page_handler($page) { + $file_dir = elgg_get_plugin_path() . 'file'; + + $page_type = $page[0]; + switch ($page_type) { + case 'owner': + set_input('username', $page[1]); + include "$file_dir/index.php"; + break; + case 'friends': + set_input('username', $page[1]); + include "$file_dir/friends.php"; + break; + case 'view': + set_input('guid', $page[1]); + include "$file_dir/view.php"; + break; + case 'new': + set_input('guid', $page[1]); + include "$file_dir/upload.php"; + break; + case 'edit': + set_input('guid', $page[1]); + include "$file_dir/edit.php"; + break; + case 'group': + break; + case 'all': + default: + include "$file_dir/world.php"; + break; + } +} +/** + * Returns a more meaningful message + * + * @param unknown_type $hook + * @param unknown_type $entity_type + * @param unknown_type $returnvalue + * @param unknown_type $params +*/ +function file_notify_message($hook, $entity_type, $returnvalue, $params) { + $entity = $params['entity']; + $to_entity = $params['to_entity']; + $method = $params['method']; + if (($entity instanceof ElggEntity) && ($entity->getSubtype() == 'file')) + { + $descr = $entity->description; + $title = $entity->title; global $CONFIG; - - // The username should be the file we're getting - if (isset($page[0])) { - set_input('username',$page[0]); + $url = elgg_get_site_url() . "pg/view/" . $entity->guid; + if ($method == 'sms') { + $owner = $entity->getOwnerEntity(); + return $owner->name . ' ' . elgg_echo("file:via") . ': ' . $url . ' (' . $title . ')'; } - - if (isset($page[1])) { - switch($page[1]) { - case "read": - set_input('guid',$page[2]); - include(dirname(dirname(dirname(__FILE__))) . "/pages/entities/index.php"); - break; - case "friends": - include($CONFIG->pluginspath . "file/friends.php"); - break; - case "world": - include($CONFIG->pluginspath . "file/world.php"); - break; - case "new": - include($CONFIG->pluginspath . "file/upload.php"); - break; - } - } else { - // Include the standard profile index - include($CONFIG->pluginspath . "file/index.php"); + if ($method == 'email') { + $owner = $entity->getOwnerEntity(); + return $owner->name . ' ' . elgg_echo("file:via") . ': ' . $entity->title . "\n\n" . $descr . "\n\n" . $entity->getURL(); } - - } - - /** - * Returns a more meaningful message - * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params - */ - function file_notify_message($hook, $entity_type, $returnvalue, $params) { - $entity = $params['entity']; - $to_entity = $params['to_entity']; - $method = $params['method']; - if (($entity instanceof ElggEntity) && ($entity->getSubtype() == 'file')) - { - $descr = $entity->description; - $title = $entity->title; - global $CONFIG; - $url = elgg_get_site_url() . "pg/view/" . $entity->guid; - if ($method == 'sms') { - $owner = $entity->getOwnerEntity(); - return $owner->name . ' ' . elgg_echo("file:via") . ': ' . $url . ' (' . $title . ')'; - } - if ($method == 'email') { - $owner = $entity->getOwnerEntity(); - return $owner->name . ' ' . elgg_echo("file:via") . ': ' . $entity->title . "\n\n" . $descr . "\n\n" . $entity->getURL(); - } - if ($method == 'web') { - $owner = $entity->getOwnerEntity(); - return $owner->name . ' ' . elgg_echo("file:via") . ': ' . $entity->title . "\n\n" . $descr . "\n\n" . $entity->getURL(); - } - } - return null; + if ($method == 'web') { + $owner = $entity->getOwnerEntity(); + return $owner->name . ' ' . elgg_echo("file:via") . ': ' . $entity->title . "\n\n" . $descr . "\n\n" . $entity->getURL(); } + } + return null; +} /** - * Add a menu item to the user ownerblock - */ +* Add a menu item to the user ownerblock +*/ function file_owner_block_menu($hook, $type, $return, $params) { if (elgg_instanceof($params['entity'], 'user')) { $url = "pg/file/owner/{$params['entity']->username}"; @@ -159,164 +174,162 @@ function file_owner_block_menu($hook, $type, $return, $params) { return $return; } - /** - * Returns an overall file type from the mimetype - * - * @param string $mimetype The MIME type - * @return string The overall type - */ - function get_general_file_type($mimetype) { - - switch($mimetype) { - case "application/msword": - return "document"; - break; - case "application/pdf": - return "document"; - break; - } +/** + * Returns an overall file type from the mimetype + * + * @param string $mimetype The MIME type + * @return string The overall type + */ +function get_general_file_type($mimetype) { - if (substr_count($mimetype,'text/')) + switch($mimetype) { + case "application/msword": + return "document"; + break; + case "application/pdf": return "document"; + break; + } - if (substr_count($mimetype,'audio/')) - return "audio"; + if (substr_count($mimetype,'text/')) + return "document"; - if (substr_count($mimetype,'image/')) - return "image"; + if (substr_count($mimetype,'audio/')) + return "audio"; - if (substr_count($mimetype,'video/')) - return "video"; + if (substr_count($mimetype,'image/')) + return "image"; - if (substr_count($mimetype,'opendocument')) - return "document"; + if (substr_count($mimetype,'video/')) + return "video"; - return "general"; - } + if (substr_count($mimetype,'opendocument')) + return "document"; - /** - * Returns a list of filetypes to search specifically on - * - * @param int|array $owner_guid The GUID(s) of the owner(s) of the files - * @param true|false $friends Whether we're looking at the owner or the owner's friends - * @return string The typecloud - */ - function get_filetype_cloud($owner_guid = "", $friends = false) { - - if ($friends) { - if ($friendslist = get_user_friends($user_guid, "", 999999, 0)) { - $friendguids = array(); - foreach($friendslist as $friend) { - $friendguids[] = $friend->getGUID(); - } + return "general"; +} + +/** + * Returns a list of filetypes to search specifically on + * + * @param int|array $owner_guid The GUID(s) of the owner(s) of the files + * @param true|false $friends Whether we're looking at the owner or the owner's friends + * @return string The typecloud + */ +function get_filetype_cloud($owner_guid = "", $friends = false) { + + if ($friends) { + if ($friendslist = get_user_friends($user_guid, "", 999999, 0)) { + $friendguids = array(); + foreach($friendslist as $friend) { + $friendguids[] = $friend->getGUID(); } - $friendofguid = $owner_guid; - $owner_guid = $friendguids; - } else { - $friendofguid = false; } - - elgg_register_tag_metadata_name('simpletype'); - $options = array( - 'type' => 'object', - 'subtype' => 'file', - 'owner_guid' => $owner_guid, - 'threshold' => 0, - 'limit' => 10, - 'tag_names' => array('simpletype') - ); - $types = elgg_get_tags($options); - - return elgg_view('file/typecloud',array('owner_guid' => $owner_guid, 'friend_guid' => $friendofguid, 'types' => $types)); + $friendofguid = $owner_guid; + $owner_guid = $friendguids; + } else { + $friendofguid = false; } - /** - * 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; - } + elgg_register_tag_metadata_name('simpletype'); + $options = array( + 'type' => 'object', + 'subtype' => 'file', + 'owner_guid' => $owner_guid, + 'threshold' => 0, + 'limit' => 10, + 'tag_names' => array('simpletype') + ); + $types = elgg_get_tags($options); + + return elgg_view('file/typecloud',array('owner_guid' => $owner_guid, 'friend_guid' => $friendofguid, 'types' => $types)); +} - /** - * 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' => get_loggedin_userid(), - 'type_subtype_pair' => array('object' => 'file'), - 'count' => TRUE - ); +/** + * 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; +} - if ($count = elgg_get_entities($options)) { - $value['count'] += $count; +/** + * 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' => get_loggedin_userid(), + 'type_subtype_pair' => array('object' => 'file'), + 'count' => TRUE + ); - unset($options['count']); - $options['offset'] = $params['offset']; - $options['limit'] = $params['limit']; + if ($count = elgg_get_entities($options)) { + $value['count'] += $count; - $items = elgg_get_entities($options); + unset($options['count']); + $options['offset'] = $params['offset']; + $options['limit'] = $params['limit']; - $value['items'] = array_merge($items, $value['items']); - } + $items = elgg_get_entities($options); - return $value; + $value['items'] = array_merge($items, $value['items']); } - /** - * 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; - } + 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' + ); - /** - * Populates the ->getUrl() method for file objects - * - * @param ElggEntity $entity File entity - * @return string File URL - */ - function file_url($entity) { - $title = $entity->title; - $title = elgg_get_friendly_title($title); - return "pg/file/" . $entity->getOwnerEntity()->username . "/read/" . $entity->getGUID() . "/" . $title; - } + return $value; +} - // Make sure test_init is called on initialisation - elgg_register_event_handler('init','system','file_init'); - // Register actions - elgg_register_action("file/upload", $CONFIG->pluginspath . "file/actions/upload.php"); - elgg_register_action("file/save", $CONFIG->pluginspath . "file/actions/save.php"); - elgg_register_action("file/delete", $CONFIG->pluginspath. "file/actions/delete.php"); +/** + * Populates the ->getUrl() method for file objects + * + * @param ElggEntity $entity File entity + * @return string File URL + */ +function file_url($entity) { + $title = $entity->title; + $title = elgg_get_friendly_title($title); + return "pg/file/view/" . $entity->getGUID() . "/" . $title; +} + +// Make sure test_init is called on initialisation +elgg_register_event_handler('init','system','file_init'); - // temporary - see #2010 - elgg_register_action("file/download", $CONFIG->pluginspath. "file/actions/download.php"); +// Register actions +elgg_register_action("file/upload", $CONFIG->pluginspath . "file/actions/file/upload.php"); +elgg_register_action("file/save", $CONFIG->pluginspath . "file/actions/file/save.php"); +elgg_register_action("file/delete", $CONFIG->pluginspath. "file/actions/file/delete.php"); -?> +// temporary - see #2010 +elgg_register_action("file/download", $CONFIG->pluginspath. "file/actions/file/download.php"); diff --git a/mod/file/upload.php b/mod/file/upload.php index 2040c7240..0c89e64a5 100644 --- a/mod/file/upload.php +++ b/mod/file/upload.php @@ -1,24 +1,30 @@ <?php - /** - * Elgg file browser uploader - * - * @package ElggFile - */ - - require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - - gatekeeper(); - if (is_callable('group_gatekeeper')) { - group_gatekeeper(); - } - - // Render the file upload page - - $container_guid = elgg_get_page_owner_guid(); - $area1 = elgg_view_title($title = elgg_echo('file:upload')); - $area1 .= elgg_view("file/upload", array('container_guid' => $container_guid)); - $body = elgg_view_layout('one_column_with_sidebar', array('content' => $area1)); - - echo elgg_view_page(elgg_echo("file:upload"), $body); - -?>
\ No newline at end of file +/** + * Upload a new file + * + * @package ElggFile + */ + +elgg_set_page_owner_guid(get_input('guid')); + +gatekeeper(); +group_gatekeeper(); + +elgg_push_breadcrumb(elgg_echo('file'), "pg/file/all/"); +elgg_push_breadcrumb(elgg_echo('file:new')); + +$container_guid = elgg_get_page_owner_guid(); + +$title = elgg_echo('file:upload'); + +$content = elgg_view_title($title); + +$content .= elgg_view("file/upload", array('container_guid' => $container_guid)); +$body = elgg_view_layout('content', array( + 'content' => $content, + 'title' => $title, + 'filter' => '', + 'header' => '', +)); + +echo elgg_view_page($title, $body); diff --git a/mod/file/views/default/object/file.php b/mod/file/views/default/object/file.php index b4754cb18..0f128eed6 100644 --- a/mod/file/views/default/object/file.php +++ b/mod/file/views/default/object/file.php @@ -1,10 +1,108 @@ <?php - /** - * Elgg file browser. - * File renderer. - * - * @package ElggFile - */ +/** + * File renderer. + * + * @package ElggFile + */ + +$full = elgg_get_array_value('full', $vars, FALSE); +$file = elgg_get_array_value('entity', $vars, FALSE); + +if (!$file) { + return TRUE; +} + +$owner = $file->getOwnerEntity(); +$container = $file->getContainerEntity(); +$categories = elgg_view('categories/view', $vars); +$excerpt = elgg_get_excerpt($file->description); +$mime = $file->mimetype; + +$body = autop($file->description); +$owner_icon = elgg_view('profile/icon', array('entity' => $owner, 'size' => 'tiny')); +$owner_link = elgg_view('output/url', array( + 'href' => "pg/file/owner/$owner->username", + 'text' => $owner->name, +)); +$author_text = elgg_echo('blog:author_by_line', array($owner_link)); +if ($file->tags) { + $tags = "<p class=\"elgg-tags\">" . elgg_view('output/tags', array('tags' => $file->tags)) . "</p>"; +} else { + $tags = ""; +} +$date = elgg_view_friendly_time($file->time_created); + +$comments_count = elgg_count_comments($file); +//only display if there are commments +if ($comments_count != 0) { + $text = elgg_echo("comments") . " ($comments_count)"; + $comments_link = elgg_view('output/url', array( + 'href' => $file->getURL() . '#file-comments', + 'text' => $text, + )); +} else { + $comments_link = ''; +} + +$metadata = elgg_view('layout/objects/list/metadata', array( + 'entity' => $file, + 'handler' => 'file', +)); + +$subtitle = "$author_text $date $categories $comments_link"; + +// do not show the metadata and controls in widget view +if (elgg_in_context('widgets')) { + $metadata = ''; +} + +if ($full) { + + $header = elgg_view_title($file->title); + + $params = array( + 'entity' => $file, + 'title' => false, + 'metadata' => $metadata, + 'subtitle' => $subtitle, + 'tags' => $tags, + ); + $list_body = elgg_view('layout/objects/list/body', $params); + + $file_info = elgg_view_image_block($owner_icon, $list_body); + + if (elgg_view_exists('file/specialcontent/' . $mime)) { + $blah = "<div class='filerepo_specialcontent'>".elgg_view('file/specialcontent/' . $mime, $vars)."</div>"; + } else if (elgg_view_exists("file/specialcontent/" . substr($mime,0,strpos($mime,'/')) . "/default")) { + $blah = "<div class='filerepo_specialcontent'>".elgg_view("file/specialcontent/" . substr($mime,0,strpos($mime,'/')) . "/default", $vars)."</div>"; + } + + + echo <<<HTML +$header +$file_info +<div class="file elgg-content"> + $body + $blah +</div> +HTML; + +} else { + // brief view + + $params = array( + 'entity' => $file, + 'metadata' => $metadata, + 'subtitle' => $subtitle, + 'tags' => $tags, + 'content' => $excerpt, + ); + $list_body = elgg_view('layout/objects/list/body', $params); + + echo elgg_view_image_block($owner_icon, $list_body); +} + +return true; global $CONFIG; diff --git a/mod/file/world.php b/mod/file/world.php index 3bacaad00..1b8f5f828 100644 --- a/mod/file/world.php +++ b/mod/file/world.php @@ -1,40 +1,29 @@ <?php - /** - * Elgg file browser - * - * @package ElggFile - */ +/** + * All files + * + * @package ElggFile + */ - require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - - $limit = get_input("limit", 10); - $offset = get_input("offset", 0); - - // Get the current page's owner - $page_owner = elgg_get_page_owner(); - if ($page_owner === false || is_null($page_owner)) { - $page_owner = get_loggedin_user(); - set_page_owner(get_loggedin_userid()); - } - - $title = elgg_echo('file:all'); - - // Get objects - $area1 = elgg_view('page/elements/content_header', array('context' => "everyone", 'type' => 'file')); - $area1 .= get_filetype_cloud(); // the filter - elgg_push_context('search'); - $area2 .= elgg_list_entities(array('types' => 'object', 'subtypes' => 'file', 'limit' => $limit, 'offset' => $offset, 'full_view' => FALSE)); - elgg_pop_context(); +elgg_push_breadcrumb(elgg_echo('file')); - //get the latest comments on all files - $comments = get_annotations(0, "object", "file", "generic_comment", "", 0, 4, 0, "desc"); - $area3 = elgg_view('comments/latest', array('comments' => $comments)); - - $content = "<div class='files'>".$area1.$area2."</div>"; - $params = array( - 'content' => $content, - 'sidebar' => $area3 - ); - $body = elgg_view_layout('one_column_with_sidebar', $params); +$limit = get_input("limit", 10); - echo elgg_view_page($title, $body); +$title = elgg_echo('file:all'); + +elgg_push_context('search'); +$content = elgg_list_entities(array( + 'types' => 'object', + 'subtypes' => 'file', + 'limit' => $limit, + 'full_view' => FALSE +)); +elgg_pop_context(); + +$body = elgg_view_layout('content', array( + 'filter_context' => 'all', + 'content' => $content, + 'title' => $title, +)); + +echo elgg_view_page($title, $body); |