aboutsummaryrefslogtreecommitdiff
path: root/mod/embed/start.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/embed/start.php')
-rw-r--r--mod/embed/start.php110
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;
+}