diff options
Diffstat (limited to 'mod/embed/start.php')
| -rw-r--r-- | mod/embed/start.php | 110 | 
1 files changed, 74 insertions, 36 deletions
| diff --git a/mod/embed/start.php b/mod/embed/start.php index bdd832b4e..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,47 +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 trigger for all right now. If we categorize these later we can trigger -			// for certain categories. -			$sections = elgg_trigger_plugin_hook('embed_get_sections', 'all', NULL, array()); -			$upload_sections = elgg_trigger_plugin_hook('embed_get_upload_sections', 'all', NULL, array());  -			 -			elgg_sort_3d_array_by_value($sections, 'name'); -			elgg_sort_3d_array_by_value($upload_sections, 'name'); -			$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;  } + +/** + * 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; +} | 
