aboutsummaryrefslogtreecommitdiff
path: root/mod/embed/views
diff options
context:
space:
mode:
authorcash <cash.costello@gmail.com>2011-10-01 12:42:00 -0400
committercash <cash.costello@gmail.com>2011-10-01 12:42:00 -0400
commitc7b0817dabd1ea596086b03569d4480355e5f721 (patch)
tree41da241f906243771130b3df92ff4180f30ffeb8 /mod/embed/views
parent7c52743cc264e258d55c42dccde021b1032f2358 (diff)
downloadelgg-c7b0817dabd1ea596086b03569d4480355e5f721.tar.gz
elgg-c7b0817dabd1ea596086b03569d4480355e5f721.tar.bz2
using the menu system for the embed tabs and adding a reusable select list view
Diffstat (limited to 'mod/embed/views')
-rw-r--r--mod/embed/views/default/embed/item.php31
-rw-r--r--mod/embed/views/default/embed/layout.php33
-rw-r--r--mod/embed/views/default/embed/list.php61
-rw-r--r--mod/embed/views/default/js/embed/embed.php10
-rw-r--r--mod/embed/views/default/navigation/menu/embed.php21
5 files changed, 150 insertions, 6 deletions
diff --git a/mod/embed/views/default/embed/item.php b/mod/embed/views/default/embed/item.php
new file mode 100644
index 000000000..a64a67d8b
--- /dev/null
+++ b/mod/embed/views/default/embed/item.php
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Embeddable content list item view
+ *
+ * @uses $vars['entity']
+ */
+
+$entity = $vars['entity'];
+
+$image = elgg_view_entity_icon($entity, 'small');
+
+$body = "<h4>" . $entity->title . "</h4>";
+
+$icon = "<img src=\"{$entity->getIconURL('small')}\" />";
+
+$embed_code = elgg_view('output/url', array(
+ 'href' => $entity->getURL(),
+ 'title' => $title,
+ 'text' => $icon,
+ 'encode_text' => FALSE
+));
+
+
+echo "<div class=\"embed_data\" id=\"embed_{$entity->getGUID()}\">";
+echo elgg_view_image_block($image, $body);
+echo '</div>';
+
+// @todo JS 1.8: is this approach better than inline js?
+echo "<script type=\"text/javascript\">
+ $('#embed_{$entity->getGUID()}').data('embed_code', " . json_encode($embed_code) . ");
+</script>";
diff --git a/mod/embed/views/default/embed/layout.php b/mod/embed/views/default/embed/layout.php
new file mode 100644
index 000000000..73c26810d
--- /dev/null
+++ b/mod/embed/views/default/embed/layout.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Layout of embed panel loaded in lightbox
+ */
+
+$title = elgg_view_title(elgg_echo('embed:media'));
+
+$menu = elgg_view_menu('embed');
+
+$selected = elgg_get_config('embed_tab');
+switch ($selected->getData('tab_type')) {
+ case 'select':
+ $tab = elgg_list_entities(
+ embed_get_list_options($selected->getData('options')),
+ 'elgg_get_entities',
+ 'embed_list_items'
+ );
+ if (!$tab) {
+ $tab = elgg_echo('embed:no_section_content');
+ }
+ break;
+ case 'upload':
+ $tab = elgg_view($selected->getData('view'), $vars);
+ break;
+}
+
+echo <<<HTML
+<div class="embed-wrapper">
+ $title
+ $menu
+ $tab
+</div>
+HTML;
diff --git a/mod/embed/views/default/embed/list.php b/mod/embed/views/default/embed/list.php
new file mode 100644
index 000000000..e36280e88
--- /dev/null
+++ b/mod/embed/views/default/embed/list.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * View a list of embeddable items
+ *
+ * @package Elgg
+ *
+ * @uses $vars['items'] Array of ElggEntity objects
+ * @uses $vars['offset'] Index of the first list item in complete list
+ * @uses $vars['limit'] Number of items per page
+ * @uses $vars['count'] Number of items in the complete list
+ *
+ * @uses $vars['pagination'] Show pagination? (default: true)
+ * @uses $vars['position'] Position of the pagination: before, after, or both
+ * @uses $vars['full_view'] Show the full view of the items (default: false)
+ * @uses $vars['list_class'] Additional CSS class for the <ul> element
+ * @uses $vars['item_class'] Additional CSS class for the <li> elements
+ */
+
+$items = $vars['items'];
+$offset = $vars['offset'];
+$limit = $vars['limit'];
+$count = $vars['count'];
+
+$offset_key = elgg_extract('offset_key', $vars, 'offset');
+
+$list_class = 'elgg-list';
+if (isset($vars['list_class'])) {
+ $list_class = "$list_class {$vars['list_class']}";
+}
+
+$item_class = 'elgg-item';
+if (isset($vars['item_class'])) {
+ $item_class = "$item_class {$vars['item_class']}";
+}
+
+$html = "";
+$nav = "";
+
+if ($count) {
+ $nav .= elgg_view('navigation/pagination', array(
+ 'offset' => $offset,
+ 'count' => $count,
+ 'limit' => $limit,
+ 'offset_key' => $offset_key,
+ ));
+}
+
+if (is_array($items) && count($items) > 0) {
+ $html .= "<ul class=\"$list_class\">";
+ foreach ($items as $item) {
+ $id = "elgg-{$item->getType()}-{$item->getGUID()}";
+ $html .= "<li id=\"$id\" class=\"$item_class\">";
+ $html .= elgg_view('embed/item', array('entity' => $item));
+ $html .= '</li>';
+ }
+ $html .= '</ul>';
+}
+
+$html .= $nav;
+
+echo $html;
diff --git a/mod/embed/views/default/js/embed/embed.php b/mod/embed/views/default/js/embed/embed.php
index e9e08f9a0..49c277b69 100644
--- a/mod/embed/views/default/js/embed/embed.php
+++ b/mod/embed/views/default/js/embed/embed.php
@@ -15,9 +15,9 @@ elgg.embed.init = function() {
});
// special pagination helper for lightbox
- $('.embed-wrapper .elgg-pagination a').live('click', elgg.embed.pagination);
+ $('.embed-wrapper .elgg-pagination a').live('click', elgg.embed.loadContent);
- $('.embed-section').live('click', elgg.embed.loadTab);
+ $('.embed-section').live('click', elgg.embed.loadContent);
$('.embed-upload .elgg-form').live('submit', elgg.embed.submit);
}
@@ -87,7 +87,7 @@ elgg.embed.submit = function(event) {
* @param {Object} event
* @return void
*/
-elgg.embed.pagination = function(event) {
+elgg.embed.loadContent = function(event) {
$('.embed-wrapper').parent().load($(this).attr('href'));
event.preventDefault();
}
@@ -99,9 +99,7 @@ elgg.embed.pagination = function(event) {
* @return void
*/
elgg.embed.loadTab = function(event) {
- var section = $(this).attr('id');
- var url = elgg.config.wwwroot + 'embed/embed?active_section=' + section;
- $('.embed-wrapper').parent().load(url);
+ $('.embed-wrapper').parent().load($(this).attr('href'));
event.preventDefault();
}
diff --git a/mod/embed/views/default/navigation/menu/embed.php b/mod/embed/views/default/navigation/menu/embed.php
new file mode 100644
index 000000000..36cedc47e
--- /dev/null
+++ b/mod/embed/views/default/navigation/menu/embed.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Embed tabs
+ *
+ * @uses $vars['menu']['select']
+ * @uses $vars['menu']['upload']
+ */
+
+$tabs = array();
+foreach (array('select', 'upload') as $type) {
+ foreach ($vars['menu'][$type] as $menu_item) {
+ $tabs[] = array(
+ 'title' => $menu_item->getText(),
+ 'url' => 'embed/tab/' . $menu_item->getName(),
+ 'url_class' => 'embed-section',
+ 'selected' => $menu_item->getSelected(),
+ );
+ }
+}
+
+echo elgg_view('navigation/tabs', array('tabs' => $tabs));