diff options
author | cash <cash.costello@gmail.com> | 2011-10-01 12:42:00 -0400 |
---|---|---|
committer | cash <cash.costello@gmail.com> | 2011-10-01 12:42:00 -0400 |
commit | c7b0817dabd1ea596086b03569d4480355e5f721 (patch) | |
tree | 41da241f906243771130b3df92ff4180f30ffeb8 /mod/embed/views/default | |
parent | 7c52743cc264e258d55c42dccde021b1032f2358 (diff) | |
download | elgg-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/default')
-rw-r--r-- | mod/embed/views/default/embed/item.php | 31 | ||||
-rw-r--r-- | mod/embed/views/default/embed/layout.php | 33 | ||||
-rw-r--r-- | mod/embed/views/default/embed/list.php | 61 | ||||
-rw-r--r-- | mod/embed/views/default/js/embed/embed.php | 10 | ||||
-rw-r--r-- | mod/embed/views/default/navigation/menu/embed.php | 21 |
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)); |