diff options
Diffstat (limited to 'mod/embed/start.php')
| -rw-r--r-- | mod/embed/start.php | 133 | 
1 files changed, 75 insertions, 58 deletions
diff --git a/mod/embed/start.php b/mod/embed/start.php index 6c26163e9..015c0c0e4 100644 --- a/mod/embed/start.php +++ b/mod/embed/start.php @@ -15,6 +15,7 @@ function embed_init() {  	elgg_extend_view('css/elgg', 'embed/css');  	elgg_register_plugin_hook_handler('register', 'menu:longtext', 'embed_longtext_menu'); +	elgg_register_plugin_hook_handler('register', 'menu:embed', 'embed_select_tab', 1000);  	// Page handler for the modal media embed  	elgg_register_page_handler('embed', 'embed_page_handler'); @@ -40,7 +41,7 @@ function embed_longtext_menu($hook, $type, $items, $vars) {  	$items[] = ElggMenuItem::factory(array(  		'name' => 'embed',  		'href' => "embed", -		'text' => elgg_echo('media:insert'), +		'text' => elgg_echo('embed:media'),  		'rel' => 'lightbox',  		'link_class' => "elgg-longtext-control elgg-lightbox embed-control embed-control-{$vars['id']}",  		'priority' => 10, @@ -54,68 +55,84 @@ function embed_longtext_menu($hook, $type, $items, $vars) {  }  /** - * Serves pages for upload and embed. + * Select the correct embed tab for display   * - * @param $page + * @param string $hook + * @param string $type + * @param array $items + * @param array $vars   */ -function embed_page_handler($page) { -	if (!isset($page[0])) { -		$page[0] = 'embed'; +function embed_select_tab($hook, $type, $items, $vars) { + +	$tab_name = array_pop(explode('/', full_url())); +	foreach ($items as $item) { +		if ($item->getName() == $tab_name) { +			$item->setSelected(); +			elgg_set_config('embed_tab', $item); +		}  	} -	switch ($page[0]) { -		case 'upload': -			echo elgg_view('embed/upload'); -			break; -		case 'embed': -		default: -			// trigger hook to get section tabs -			// use views for embed/section/ -			//	listing -			//	item -			// default to embed/listing | item if not found. - -			// @todo the menu system is good for registering and sorting, but not great for -			// displaying tabs. -			// Pulling in the menu manually and passing it through the embed/tabs view. -			// We should work on making it easier to use tabs through the menu system, then fix -			// this mess. -			$menus = get_config('menus'); -			$menu = $menus['embed:sections']; - -			$sections = array(); -			$upload_sections = array(); - -			foreach ($menu as $item) { -				switch ($item->section) { -					case 'upload': -						$upload_sections[$item->getName()] = array( -							'name' => $item->getText(), -						); -						break; - -					default: -						$sections[$item->getName()] = array( -							'name' => $item->getText(), -						); -						break; -				} -			} - -			$active_section = get_input('active_section', ''); -			$active_section = preg_replace('[\W]', '', $active_section); -			$internal_id = get_input('internal_id', ''); -			$internal_id = preg_replace('[\W]', '', $internal_id); - -			echo elgg_view('embed/embed', array( -				'sections' => $sections, -				'active_section' => $active_section, -				'upload_sections' => $upload_sections, -				'internal_id' => $internal_id -			)); -			break; +	if (!elgg_get_config('embed_tab') && count($items) > 0) { +		$items[0]->setSelected(); +		elgg_set_config('embed_tab', $items[0]);  	} +} + +/** + * Serves the content for the embed lightbox + * + * @param array $page URL segments + */ +function embed_page_handler($page) { + +	echo elgg_view('embed/layout');  	// exit because this is in a modal display.  	exit; -}
\ No newline at end of file +} + +/** + * A special listing function for selectable content + * + * This calls a custom list view for entities.  + * + * @param array $entities Array of ElggEntity objects + * @param array $vars     Display parameters + * @return string + */ +function embed_list_items($entities, $vars = array()) { + +	$defaults = array( +		'items' => $entities, +		'list_class' => 'elgg-list-entity', +	); + +	$vars = array_merge($defaults, $vars); + +	return elgg_view('embed/list', $vars); +} + +/** + * Set the options for the list of embedable content + * + * @param array $options + * @return array + */ +function embed_get_list_options($options = array()) { + +	if (elgg_get_page_owner_guid()) { +		$container_guid = elgg_get_page_owner_guid(); +	} else { +		$container_guid = elgg_get_logged_in_user_guid(); +	} + +	$defaults = array( +		'limit' => 6, +		'container_guid' => $container_guid, +		'item_class' => 'embed-item', +	); + +	$options = array_merge($defaults, $options); + +	return $options; +}  | 
