aboutsummaryrefslogtreecommitdiff
path: root/mod/file
diff options
context:
space:
mode:
Diffstat (limited to 'mod/file')
-rw-r--r--mod/file/languages/en.php2
-rw-r--r--mod/file/pages/file/search.php5
-rw-r--r--mod/file/start.php87
-rw-r--r--mod/file/views/default/embed/file/content.php61
-rw-r--r--mod/file/views/default/embed/file_upload/content.php15
5 files changed, 100 insertions, 70 deletions
diff --git a/mod/file/languages/en.php b/mod/file/languages/en.php
index 72b198d54..aa30084a9 100644
--- a/mod/file/languages/en.php
+++ b/mod/file/languages/en.php
@@ -75,6 +75,8 @@ $english = array(
'item:object:file' => 'Files',
+ 'file:newupload' => 'A new file has been uploaded',
+
/**
* Embed media
**/
diff --git a/mod/file/pages/file/search.php b/mod/file/pages/file/search.php
index 3e85d45db..402a28933 100644
--- a/mod/file/pages/file/search.php
+++ b/mod/file/pages/file/search.php
@@ -6,6 +6,11 @@
*/
$page_owner_guid = get_input('page_owner', null);
+
+if ($page_owner_guid !== null) {
+ $page_owner_guid = sanitise_int($page_owner_guid);
+}
+
if ($page_owner_guid) {
elgg_set_page_owner_guid($page_owner_guid);
}
diff --git a/mod/file/start.php b/mod/file/start.php
index b94dc309a..749d7a519 100644
--- a/mod/file/start.php
+++ b/mod/file/start.php
@@ -57,11 +57,23 @@ 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'),
+ 'href' => '#',
+ 'section' => 'select'
+ ));
+ elgg_register_menu_item('embed:sections', $item);
+
+ $item = ElggMenuItem::factory(array(
+ 'name' => 'file_upload',
+ 'text' => elgg_echo('file:upload'),
+ 'href' => '#',
+ 'section' => 'upload'
+ ));
+
+ elgg_register_menu_item('embed:sections', $item);
}
/**
@@ -332,69 +344,4 @@ function file_icon_url_override($hook, $type, $returnvalue, $params) {
$url = elgg_trigger_plugin_hook('file:icon:url', 'override', $params, $url);
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;
-}
+} \ No newline at end of file
diff --git a/mod/file/views/default/embed/file/content.php b/mod/file/views/default/embed/file/content.php
new file mode 100644
index 000000000..eadcd1a6d
--- /dev/null
+++ b/mod/file/views/default/embed/file/content.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * List files available for upload
+ */
+
+$active_section = elgg_extract('active_section', $vars);
+
+$options = array(
+ 'owner_guid' => elgg_get_logged_in_user_guid(),
+ 'type_subtype_pair' => array('object' => 'file'),
+ 'count' => true
+);
+
+$count = elgg_get_entities($options);
+
+if ($count) {
+ echo "<div class='embed_modal_$active_section'>";
+
+ unset($options['count']);
+ $items = elgg_get_entities($options);
+
+ foreach ($items as $item) {
+
+ // different entity types have different title attribute names.
+ $title = isset($item->name) ? $item->name : $item->title;
+ // don't let it be too long
+ $title = elgg_get_excerpt($title);
+
+ $author_text = elgg_echo('byline', array($owner->name));
+ $date = elgg_view_friendly_time($item->time_created);
+
+ $subtitle = "$author_text $date";
+
+ $icon = "<img src=\"{$item->getIconURL($icon_size)}\" />";
+
+ $embed_code = elgg_view('output/url', array(
+ 'href' => $item->getURL(),
+ 'title' => $title,
+ 'text' => $icon,
+ 'encode_text' => FALSE
+ ));
+
+ $item_icon = elgg_view_entity_icon($item, $icon_size);
+
+ $params = array(
+ 'title' => $title,
+ 'entity' => $item,
+ 'subtitle' => $subtitle,
+ 'tags' => FALSE,
+ );
+ $list_body = elgg_view('object/elements/summary', $params);
+
+ // @todo JS 1.8: is this approach better than inline js?
+ echo "<div class=\"embed_data\" id=\"embed_{$item->getGUID()}\">" . elgg_view_image_block($item_icon, $list_body) . '</div>';
+ echo "<script type=\"text/javascript\">
+ $('#embed_{$item->getGUID()}').data('embed_code', " . json_encode($embed_code) . ");
+ </script>";
+ }
+
+ echo '</div>';
+} \ No newline at end of file
diff --git a/mod/file/views/default/embed/file_upload/content.php b/mod/file/views/default/embed/file_upload/content.php
new file mode 100644
index 000000000..13c18f745
--- /dev/null
+++ b/mod/file/views/default/embed/file_upload/content.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Upload a file through the embed interface
+ */
+
+$form_vars = array(
+ 'enctype' => 'multipart/form-data',
+ 'class' => 'elgg-form',
+);
+$upload_content = elgg_view_form('file/upload', $form_vars);
+
+echo "<div class='mbm'>" . elgg_echo('embed:upload_type') . "$input</div>";
+echo "<div class='embed-upload'>";
+echo $upload_content;
+echo "</div>"; \ No newline at end of file