]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
a better main content view structure
authorcash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Sat, 4 Dec 2010 04:43:26 +0000 (04:43 +0000)
committercash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Sat, 4 Dec 2010 04:43:26 +0000 (04:43 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@7525 36083f99-b078-4883-b0ff-0f9b5a30f544

mod/blog/blog_lib.php
mod/blog/start.php
views/default/content/filter.php [new file with mode: 0644]
views/default/content/footer.php [new file with mode: 0644]
views/default/content/header.php [new file with mode: 0644]
views/default/content/sidebar.php [new file with mode: 0644]
views/default/css/screen.php
views/default/layouts/main_content.php [new file with mode: 0644]

index adc888ce2545c568f168576db1f3f485c36e5abc..4db3effde077b5d24a1c79c502868dc59e23ef52 100644 (file)
@@ -20,28 +20,23 @@ function blog_get_page_content_read($owner_guid = NULL, $guid = NULL) {
        if ($guid) {
                $blog = get_entity($guid);
 
+               // no header or tabs for viewing an individual blog
+               $return['filter'] = '';
+               $return['header'] = '';
+
                if (!elgg_instanceof($blog, 'object', 'blog') || ($blog->status != 'published' && !$blog->canEdit())) {
-                       $return['body'] = elgg_echo('blog:error:post_not_found');
+                       $return['content'] = elgg_echo('blog:error:post_not_found');
                } else {
                        elgg_push_breadcrumb($blog->title, $blog->getURL());
-                       $return['body'] = elgg_view_entity($blog, TRUE);
+                       $return['content'] = elgg_view_entity($blog, TRUE);
                        //check to see if comment are on
                        if ($blog->comments_on != 'Off') {
-                               $return['body'] .= elgg_view_comments($blog);
+                               $return['content'] .= elgg_view_comments($blog);
                        }
                }
        } else {
 
-               $params = array(
-                       'type' => 'blog',
-               );
-               $return['header'] = elgg_view('page_elements/main_header', $params);
-
-               $params = array(
-                       'type' => 'blog',
-                       'context' => $owner_guid ? 'mine' : 'everyone',
-               );
-               $return['body'] = elgg_view('page_elements/main_nav', $params);
+               $return['filter_context'] = $owner_guid ? 'mine' : 'everyone';
 
                $options = array(
                        'type' => 'object',
@@ -50,20 +45,18 @@ function blog_get_page_content_read($owner_guid = NULL, $guid = NULL) {
                        //'order_by_metadata' => array('name'=>'publish_date', 'direction'=>'DESC', 'as'=>'int')
                );
 
-/*
                $loggedin_userid = get_loggedin_userid();
                if ($owner_guid) {
                        $options['owner_guid'] = $owner_guid;
-
+/*
                        if ($owner_guid != $loggedin_userid) {
                                // do not show content header when viewing other users' posts
                                $content = elgg_view('page_elements/content_header_member', array('type' => 'blog'));
                        }
-               }
- *
+ * 
  */
+               }
 
-/*
                // show all posts for admin or users looking at their own blogs
                // show only published posts for other users.
                if (!(isadminloggedin() || (isloggedin() && $owner_guid == $loggedin_userid))) {
@@ -72,13 +65,12 @@ function blog_get_page_content_read($owner_guid = NULL, $guid = NULL) {
                                //array('name' => 'publish_date', 'operand' => '<', 'value' => time())
                        );
                }
-*/
 
                $list = elgg_list_entities_from_metadata($options);
                if (!$list) {
-                       $return['body'] .= elgg_echo('blog:none');
+                       $return['content'] = elgg_echo('blog:none');
                } else {
-                       $return['body'] .= $list;
+                       $return['content'] = $list;
                }
        }
 
@@ -124,7 +116,12 @@ function blog_get_page_content_edit($guid, $revision = NULL) {
                //$sidebar = elgg_view('blog/sidebar_related');
        }
 
-       return array('body' => $content, 'sidebar' => $sidebar);
+       return array(
+               'content' => $content,
+               'sidebar' => $sidebar,
+               'header' => '',
+               'filter' => '',
+       );
 }
 
 /**
@@ -197,7 +194,9 @@ function blog_get_page_content_archive($owner_guid, $lower=0, $upper=0) {
        }
 
        return array(
-               'content' => $content
+               'content' => $content,
+               'filter' => '',
+               'header' => '',
        );
 }
 
@@ -212,14 +211,13 @@ function blog_get_page_content_friends($user_guid) {
 
        elgg_push_breadcrumb(elgg_echo('friends'));
 
-       $content = elgg_view('page_elements/content_header', array(
-               'context' => 'friends',
-               'type' => 'blog',
-               'all_link' => "pg/blog"
-       ));
+       $return = array();
+
+       $return['filter_context'] = 'friends';
 
        if (!$friends = get_user_friends($user_guid, ELGG_ENTITIES_ANY_VALUE, 0)) {
-               $content .= elgg_echo('friends:none:you');
+               $return['content'] .= elgg_echo('friends:none:you');
+               return $return;
        } else {
                $options = array(
                        'type' => 'object',
@@ -246,13 +244,13 @@ function blog_get_page_content_friends($user_guid) {
 
                $list = elgg_list_entities_from_metadata($options);
                if (!$list) {
-                       $content .= elgg_echo('blog:none');
+                       $return['content'] = elgg_echo('blog:none');
                } else {
-                       $content .= $list;
+                       $return['content'] = $list;
                }
        }
 
-       return array('content' => $content);
+       return $return;
 }
 
 /**
index b279de1a336f97d172f078b1ce28f01327d4adc0..0d0c58ac8acf34926d4893207c4d548aff4dbbef 100644 (file)
@@ -92,13 +92,13 @@ function blog_runonce() {
 function blog_page_handler($page) {
        global $CONFIG;
 
+       // push breadcrumb
+       elgg_push_breadcrumb(elgg_echo('blog:blogs'), "pg/blog");
+
        // see if we're showing all or just a user's
        if (isset($page[0]) && !empty($page[0])) {
                $username = $page[0];
 
-               // push breadcrumb
-               elgg_push_breadcrumb(elgg_echo('blog:blogs'), "pg/blog");
-
                // forward away if invalid user.
                if (!$user = get_user_by_username($username)) {
                        register_error('blog:error:unknown_username');
@@ -118,24 +118,24 @@ function blog_page_handler($page) {
                switch ($action) {
                        case 'read':
                                $title = elgg_echo('blog:title:user_blogs', array($user->name));
-                               $content_info = blog_get_page_content_read($user->getGUID(), $page2);
+                               $params = blog_get_page_content_read($user->getGUID(), $page2);
                                break;
 
                        case 'new':
                        case 'edit':
                                gatekeeper();
                                $title = elgg_echo('blog:edit');
-                               $content_info = blog_get_page_content_edit($page2, $page3);
+                               $params = blog_get_page_content_edit($page2, $page3);
                                break;
 
                        case 'archive':
                                $title = elgg_echo('blog:archives');
-                               $content_info = blog_get_page_content_archive($user->getGUID(), $page2, $page3);
+                               $params = blog_get_page_content_archive($user->getGUID(), $page2, $page3);
                                break;
 
                        case 'friends':
                                $title = elgg_echo('blog:title:friends');
-                               $content_info = blog_get_page_content_friends($user->getGUID());
+                               $params = blog_get_page_content_friends($user->getGUID());
                                break;
 
                        default:
@@ -144,27 +144,16 @@ function blog_page_handler($page) {
                }
        } else {
                $title = elgg_echo('blog:title:all_blogs');
-               $content_info = blog_get_page_content_read();
+               $params = blog_get_page_content_read();
        }
 
-       $sidebar = isset($content_info['sidebar']) ? $content_info['sidebar'] : '';
-
-       $sidebar .= elgg_view('blog/sidebar_menu', array(
+       $sidebar_menu = elgg_view('blog/sidebar_menu', array(
                'page' => isset($page[1]) ? $page[1] : FALSE,
        ));
 
-       $content = elgg_view('navigation/breadcrumbs');
-       $params = array(
-               'header' => $content_info['header'],
-               'body' =>  $content_info['body'],
-       );
-       $content .= elgg_view('page_elements/main_module', $params);
-
-       $params = array(
-               'content' => $content,
-               'sidebar' => $sidebar,
-       );
-       $body = elgg_view_layout('one_column_with_sidebar', $params);
+       $params['sidebar'] .= $sidebar_menu;
+
+       $body = elgg_view_layout('main_content', $params);
 
        echo elgg_view_page($title, $body);
 }
diff --git a/views/default/content/filter.php b/views/default/content/filter.php
new file mode 100644 (file)
index 0000000..b4d747c
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Main content filter
+ *
+ * Select between user, friends, and all content
+ *
+ * @uses $vars['filter_context'] Filter context: everyone, friends, mine
+ * @uses $vars['filter_override'] HTML for overriding the default filter (override)
+ * @uses $vars['context']         Page context (override)
+ */
+
+if (isset($vars['filter_override'])) {
+       echo $vars['filter_override'];
+       return true;
+}
+
+$context = elgg_get_array_value('context', $vars, elgg_get_context());
+
+if (isloggedin() && $context) {
+       $username = get_loggedin_user()->username;
+       $filter_context = elgg_get_array_value('filter_context', $vars, 'everyone');
+
+       // generate a list of default tabs
+       $tabs = array(
+               'all' => array(
+                       'title' => elgg_echo('all'),
+                       'url' => (isset($vars['all_link'])) ? $vars['all_link'] : "pg/$context/",
+                       'selected' => ($filter_context == 'everyone'),
+               ),
+               'mine' => array(
+                       'title' => elgg_echo('mine'),
+                       'url' => (isset($vars['mine_link'])) ? $vars['mine_link'] : "pg/$context/$username",
+                       'selected' => ($filter_context == 'mine'),
+               ),
+               'friend' => array(
+                       'title' => elgg_echo('friends'),
+                       'url' => (isset($vars['friend_link'])) ? $vars['friend_link'] : "pg/$context/$username/friends",
+                       'selected' => ($filter_context == 'friends'),
+               ),
+       );
+
+       echo elgg_view('navigation/tabs', array('tabs' => $tabs));
+}
diff --git a/views/default/content/footer.php b/views/default/content/footer.php
new file mode 100644 (file)
index 0000000..66f5d3f
--- /dev/null
@@ -0,0 +1,8 @@
+<?php
+/**
+ * Main content footer
+ *
+ * @uses $vars['content'] The content for the footer
+ */
+
+echo $vars['content'];
diff --git a/views/default/content/header.php b/views/default/content/header.php
new file mode 100644 (file)
index 0000000..b28dc17
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Main content header
+ *
+ * This includes a title and a new content button by default
+ *
+ * @uses $vars['header_override'] HTML for overriding the default header (override)
+ * @uses $vars['title']           Title text (override)
+ * @uses $vars['context']         Page context (override)
+ * @uses $vars['buttons']         Content header buttons (override)
+ */
+
+if (isset($vars['header_override'])) {
+       echo $vars['header_override'];
+       return true;
+}
+
+$context = elgg_get_array_value('context', $vars, elgg_get_context());
+if ($context) {
+       $title = elgg_get_array_value('title', $vars, '');
+       if (!$title) {
+               $title = elgg_echo($context);
+       }
+
+       if (isset($vars['buttons'])) {
+               $buttons = $vars['buttons'];
+       } else {
+               if (isloggedin() && $context) {
+                       $username = get_loggedin_user()->username;
+                       $new_link = elgg_get_array_value('new_link', $vars, "pg/$context/$username/new");
+                       $params = array(
+                               'href' => $new_link = elgg_normalize_url($new_link),
+                               'text' => elgg_echo("$context:new"),
+                               'class' => 'action-button right',
+                       );
+                       $buttons = elgg_view('output/url', $params);
+               }
+       }
+       echo <<<HTML
+<div id="elgg-main-header" class="elgg-header clearfix">
+       <h2 class="elgg-module-heading">$title</h2>$buttons
+</div>
+HTML;
+}
diff --git a/views/default/content/sidebar.php b/views/default/content/sidebar.php
new file mode 100644 (file)
index 0000000..86ca843
--- /dev/null
@@ -0,0 +1,8 @@
+<?php
+/**
+ * Main content sidebar
+ *
+ * @uses $vars['content] The content for the sidebar
+ */
+
+echo $vars['content'];
index 97303822c5ce58fa797a9288ae3953e77322f712..18e4a0bad992de0c9a015df8b3957b9e8282dea1 100644 (file)
@@ -294,6 +294,12 @@ h2 {
        border-top:1px solid #DEDEDE;
 }
 
+
+#elgg-main-header {
+    border-bottom: 1px solid #CCCCCC;
+    padding-bottom: 3px;
+}
+
 #elgg-header-contents {
        width:990px;
        position: relative;
diff --git a/views/default/layouts/main_content.php b/views/default/layouts/main_content.php
new file mode 100644 (file)
index 0000000..7c42065
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Main content area layout
+ *
+ * @uses $vars['content']        HTML of main content area
+ * @uses $vars['sidebar']        HTML of the sidebar
+ * @uses $vars['header']         HTML of the content area header (override)
+ * @uses $vars['nav']            HTML of the content area nav (override)
+ * @uses $vars['footer']         HTML of the content area footer
+ * @uses $vars['filter']         HTML of the content area filter (override)
+ * @uses $vars['title']          Title text (override)
+ * @uses $vars['context']        Page context (override)
+ * @uses $vars['buttons']        Content header buttons (override)
+ * @uses $vars['filter_context'] Filter context: everyone, friends, mine
+ */
+
+// give plugins an opportunity to add to content sidebars
+$sidebar_content = elgg_get_array_value('sidebar', $vars, '');
+$params = $vars;
+$params['content'] = $sidebar_content;
+$sidebar = elgg_view('content/sidebar', $params);
+
+// navigation defaults to breadcrumbs
+$nav = elgg_get_array_value('nav', $vars, elgg_view('navigation/breadcrumbs'));
+
+// allow page handlers to override the default header
+if (isset($vars['header'])) {
+       $vars['header_override'] = $vars['header'];
+}
+$header = elgg_view('content/header', $vars);
+
+// allow page handlers to override the default filter
+if (isset($vars['filter'])) {
+       $vars['filter_override'] = $vars['filter'];
+}
+$filter = elgg_view('content/filter', $vars);
+
+// the all important content
+$content = elgg_get_array_value('content', $vars, '');
+
+// optional footer for main content area
+$footer_content = elgg_get_array_value('footer', $vars, '');
+$params = $vars;
+$params['content'] = $footer_content;
+$footer = elgg_view('content/footer', $params);
+
+$body = $nav . $header . $filter . $content . $footer;
+
+$params = array(
+       'content' => $body,
+       'sidebar' => $sidebar,
+);
+echo elgg_view_layout('one_column_with_sidebar', $params);