aboutsummaryrefslogtreecommitdiff
path: root/mod/embed
diff options
context:
space:
mode:
Diffstat (limited to 'mod/embed')
-rw-r--r--mod/embed/README.txt6
-rw-r--r--mod/embed/manifest.xml1
-rw-r--r--mod/embed/start.php8
-rw-r--r--mod/embed/views/default/embed/css.php4
-rw-r--r--mod/embed/views/default/embed/embed.php32
-rw-r--r--mod/embed/views/default/embed/item/list.php24
-rw-r--r--mod/embed/views/default/embed/js.php38
7 files changed, 66 insertions, 47 deletions
diff --git a/mod/embed/README.txt b/mod/embed/README.txt
index 98948da3f..33c9fff65 100644
--- a/mod/embed/README.txt
+++ b/mod/embed/README.txt
@@ -171,10 +171,10 @@ CONTENTS:
an onClick event via Javascript. Embed provides a helper function for
this:
- elggEmbedInsertContent(content, textAreaName)
+ elggEmbedInsertContent(content, textAreaId)
Content is the pre-formatted content to insert into the text area,
- and textAreaName is the name of the text area. This name is
+ and textAreaId is the name of the text area. This name is
sent via GET as 'internal_name.'
@@ -189,7 +189,7 @@ CONTENTS:
content into the specific text area. Variables available within
this view are:
str content The content to insert.
- str textAreaName The name of the textarea to receive the content.
+ str textAreaId The name of the textarea to receive the content.
Note: Extend this view; don't override it. It is important to correctly
extend this view for compatibility across multiple plugins and textarea
diff --git a/mod/embed/manifest.xml b/mod/embed/manifest.xml
index 102daa761..f61d27c23 100644
--- a/mod/embed/manifest.xml
+++ b/mod/embed/manifest.xml
@@ -4,6 +4,7 @@
<author>Core developers</author>
<version>1.8</version>
<category>bundled</category>
+ <category>enhancement</category>
<description>Allows users to easily upload and embed media into text areas.</description>
<website>http://www.elgg.org/</website>
<copyright>See COPYRIGHT.txt</copyright>
diff --git a/mod/embed/start.php b/mod/embed/start.php
index 78f06c158..f6f49a53f 100644
--- a/mod/embed/start.php
+++ b/mod/embed/start.php
@@ -34,10 +34,10 @@ function embed_longtext_menu($hook, $type, $items, $vars) {
$items[] = ElggMenuItem::factory(array(
'name' => 'embed',
- 'href' => "embed?{$active_section}internal_name={$vars['name']}",
+ 'href' => "embed?{$active_section}internal_id={$vars['id']}",
'text' => elgg_echo('media:insert'),
'rel' => 'facebox',
- 'class' => 'elgg-longtext-control',
+ 'link_class' => 'elgg-longtext-control',
'priority' => 1,
));
@@ -73,13 +73,13 @@ function embed_page_handler($page) {
elgg_sort_3d_array_by_value($sections, 'name');
elgg_sort_3d_array_by_value($upload_sections, 'name');
$active_section = get_input('active_section', NULL);
- $internal_name = get_input('internal_name', NULL);
+ $internal_id = get_input('internal_id', NULL);
echo elgg_view('embed/embed', array(
'sections' => $sections,
'active_section' => $active_section,
'upload_sections' => $upload_sections,
- 'internal_name' => $internal_name
+ 'internal_id' => $internal_id
));
break;
}
diff --git a/mod/embed/views/default/embed/css.php b/mod/embed/views/default/embed/css.php
index 736c6ae44..44491846b 100644
--- a/mod/embed/views/default/embed/css.php
+++ b/mod/embed/views/default/embed/css.php
@@ -89,9 +89,6 @@
.embed_data .elgg-image-block {
border-bottom:none;
}
-.embed_data:last-child {
- border-bottom:1px dotted #CCC;
-}
.embed_modal_videolist .elgg-image img {
width:75px;
height:auto;
@@ -111,7 +108,6 @@
width:auto;
margin-top:15px;
margin-left:15px;
- float:left;
}
.embed_data .elgg-image-block {
cursor:pointer;
diff --git a/mod/embed/views/default/embed/embed.php b/mod/embed/views/default/embed/embed.php
index 06d3f48f1..eeeb1d244 100644
--- a/mod/embed/views/default/embed/embed.php
+++ b/mod/embed/views/default/embed/embed.php
@@ -12,7 +12,7 @@
$sections = elgg_extract('sections', $vars, array());
$active_section = elgg_extract('active_section', $vars, array_shift(array_keys($sections)));
$upload_sections = elgg_extract('upload_sections', $vars, array());
-$internal_name = elgg_extract('internal_name', $vars);
+$internal_id = elgg_extract('internal_id', $vars);
if (!$sections) {
$content = elgg_echo('embed:no_sections');
@@ -65,7 +65,7 @@ if (!$sections) {
'limit' => $limit,
'section' => $active_section,
'upload_sections' => $upload_sections,
- 'internal_name' => $internal_name
+ 'internal_id' => $internal_id
);
// allow full override for this section
@@ -92,8 +92,8 @@ if (!$sections) {
} else {
$ecml_valid_keyword = FALSE;
}
-
- $items_content = '';
+
+ $items_content = '<ul class="elgg-list">';
foreach ($embed_info['items'] as $item) {
$item_params = array(
'section' => $active_section,
@@ -103,9 +103,10 @@ if (!$sections) {
'icon_size' => elgg_extract('icon_size', $section_info, 'tiny'),
);
- $items_content .= elgg_view($view, $item_params);
+ $items_content .= '<li class="elgg-list-item">' . elgg_view($view, $item_params) . '</li>';
}
-
+ $items_content .= '</ul>';
+
$params['content'] = $items_content;
$params['count'] = $embed_info['count'];
@@ -126,18 +127,25 @@ echo $content;
<?php //@todo: JS 1.8: ugly ?>
<script type="text/javascript">
$(function() {
- var internal_name = '<?php echo addslashes($internal_name); ?>';
+ var internal_id = '<?php echo addslashes($internal_id); ?>';
+
+ // Remove any existing "live" handlers
+ $('.embed_data').die('click');
+ $('.embed_section').die('click');
+ $('#facebox .elgg-pagination a').die('click');
// insert embed codes
$('.embed_data').live('click', function() {
- var embed_code = $(this).data('embed_code')
- elggEmbedInsertContent(embed_code, internal_name);
+ var embed_code = $(this).data('embed_code');
+ elggEmbedInsertContent(embed_code, internal_id);
+
+ return false;
});
// tabs
$('.embed_section').live('click', function() {
var section = $(this).attr('id');
- var url = elgg.config.wwwroot + 'embed/embed?active_section=' + section + '&internal_name=' + internal_name;
+ var url = elgg.config.wwwroot + 'embed/embed?active_section=' + section + '&internal_id=' + internal_id;
$('#facebox .body .content').load(url);
return false;
@@ -149,9 +157,7 @@ $(function() {
return false;
}
- $('.pagination-number').live('click', elggPaginationClick);
- $('.pagination-next').live('click', elggPaginationClick);
- $('.pagination-previous').live('click', elggPaginationClick);
+ $('#facebox .elgg-pagination a').live('click', elggPaginationClick);
});
</script>
diff --git a/mod/embed/views/default/embed/item/list.php b/mod/embed/views/default/embed/item/list.php
index c5c604854..89a2ffb63 100644
--- a/mod/embed/views/default/embed/item/list.php
+++ b/mod/embed/views/default/embed/item/list.php
@@ -13,8 +13,9 @@
$item = $vars['item'];
$section = $vars['section'];
$target = $vars['target'];
-$ecml_keyword = (isset($vars['ecml_enabled']) && isset($vars['ecml_keyword'])) ? $vars['ecml_keyword'] : NULL;
+$ecml_keyword = (isset($vars['ecml_enabled']) && $vars['ecml_enabled'] && isset($vars['ecml_keyword'])) ? $vars['ecml_keyword'] : NULL;
$icon_size = $vars['icon_size'];
+$owner = $item->getOwnerEntity();
// @todo add entity checking.
@@ -23,6 +24,11 @@ $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";
+
// @todo you can disable plugins that are required by other plugins
// (embed requires ecml) so fallback to a hard-coded check to see if ecml is enabled.
// #grumble
@@ -35,17 +41,23 @@ if ($ecml_keyword) {
$embed_code = elgg_view('output/url', array(
'href' => $item->getURL(),
'title' => $title,
- 'text' => $title,
+ 'text' => $icon,
'encode_text' => FALSE
));
}
-$icon = "<img src=\"{$item->getIcon($icon_size)}\" />";
-$info = "<p class='entity-title'>" . htmlentities($title, ENT_QUOTES, 'UTF-8') . "</p>";
-$info .= "<p class='entity-subtext'>" . elgg_view_friendly_time($vars['item']->time_created) . "</p>";
+$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_listing($icon, $info) . '</div>';
+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>"; \ No newline at end of file
diff --git a/mod/embed/views/default/embed/js.php b/mod/embed/views/default/embed/js.php
index f80d7367d..a0a2e8ff5 100644
--- a/mod/embed/views/default/embed/js.php
+++ b/mod/embed/views/default/embed/js.php
@@ -9,35 +9,39 @@
$(function() {
$('a[rel*=facebox]').facebox();
- // 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(elgg.get_site_url() + 'embed/embed?active_section=file');
- } else {
- $('.popup .content').find('form').prepend('<p>' + info.message + '</p>');
+ // Only apply the .live binding after facebox has been displayed
+ $(document).bind('afterReveal.facebox', function() {
+
+ // fire off the ajax upload
+ $('#file_embed_upload').live('submit', function() {
+ var options = {
+ success: function(data) {
+ var info = jQuery.parseJSON(data);
+
+ if (info.status == 'success') {
+ $('.popup .content').load(elgg.get_site_url() + 'embed/embed?active_section=file');
+ } else {
+ $('.popup .content').find('form').prepend('<p>' + info.message + '</p>');
+ }
}
- }
- };
- $(this).ajaxSubmit(options);
- return false;
+ };
+ $(this).ajaxSubmit(options);
+ return false;
+ });
});
});
-function elggEmbedInsertContent(content, textAreaName) {
+function elggEmbedInsertContent(content, textAreaId) {
content = ' ' + content + ' ';
// default input.
// if this doesn't match anything it won't add anything.
- $('textarea[name=' + textAreaName + ']').val($('textarea[name=' + textAreaName + ']').val() + ' ' + content);
+ $('#' + textAreaId).val($('#' + textAreaId).val() + ' ' + content);
<?php
// This view includes the guts of the function to do the inserting.
// Anything that overrides input/longtext with its own editor
// needs to supply its own function here that inserts
- // content into textAreaName.
+ // content into textAreaId.
// See TinyMCE as an example.
// for compatibility