Download & Extend

REALNAME module disable Page Manager(ctools) working

Project:Real Name
Version:6.x-1.5
Component:Code
Category:bug report
Priority:normal
Assigned:Unassigned
Status:active

Issue Summary

Hi guys!
I have included a module REALNAME and found that the page type / blog /% user turn off the panel.
I found a similar issue in the topic, but they do not directly solve the problem with page_manager type blog.

This code overrides the function call($callbacks[$path]['page callback'] = 'realname_blog_page';), and it will lock page_manager

<?php
/**
* Implements hook_menu_alter().
*/
function realname_menu_alter(&$callbacks) {
 
$callbacks['user/%user_uid_optional']['title callback'] = 'realname_user_page_title';

 
// Adjust menu page callbacks to the real name alternatives.
 
foreach ($callbacks as $path => $callback) {
    if (isset(
$callback['page callback'])) {
      switch (
$callback['page callback']) {
        case
'user_view':
         
// Skip if the Page manager module is installed, which needs to
          // override
         
if ($path == 'user/%user_uid_optional' && module_exists('page_manager') && !variable_get('page_manager_user_view_disabled', TRUE)) {
            continue;
          }
        case
'user_edit':
        case
'tracker_page':
        case
'statistics_user_tracker':
        case
'content_profile_page_edit':
         
$callbacks[$path]['page callback'] = 'realname_' . $callback['page callback'];
          break;
        case
'contact_user_page':
         
$callbacks[$path]['page callback'] = 'realname_contact_user';
          break;
        case
'blog_page_user':
         
$callbacks[$path]['page callback'] = 'realname_blog_page';
          break;
      }
................
?>

//$callbacks[$path]['page callback'] = 'realname_blog_page';
If you disable this override will be called:

<?php
/**
* Entry point for our overridden user view.
*
* This function asks its assigned handlers who, if anyone, would like
* to run with it. If no one does, it passes through to Drupal core's
* user view, which is user_page_view().
*/
function page_manager_blog_user($account) {
 
// Load my task plugin:
 
$task = page_manager_get_task('blog_user');

 
// Load the account into a context.
 
ctools_include('context');
 
ctools_include('context-task-handler');
 
$contexts = ctools_context_handler_get_task_contexts($task, '', array($account));

 
$output = ctools_context_handler_render($task, '', $contexts, array($account->uid));
  if (
$output !== FALSE) {
    return
$output;
  }

 
module_load_include('inc', 'blog', 'blog.pages');
 
$function = 'blog_page_user';
  foreach (
module_implements('page_manager_override') as $module) {
   
$call = $module . '_page_manager_override';
    if ((
$rc = $call('blog_user')) && function_exists($rc)) {
     
$function = $rc;
      break;
    }
  }

 
// Otherwise, fall back.
 
return $function($account);
}
?>

In realname implemented hook_page_manager_override but you need to add some changes:

<?php
/**
* Ask Page Manager to use our version of the node page view instead of
* Drupal's when falling back.
*/
function realname_page_manager_override($type) {
   
dpm($type);
  if (
$type == 'user_view') {
    return
'realname_user_view';
+  } elseif (
$type == 'blog_user') {
+      return
'realname_blog_user';
+  }
}
?>

and

<?php
+function realname_blog_user($account) {
$output = blog_page_user($account);
drupal_set_title(t("@name's blog", array('@name' => $account->realname)));
+  return
$output;
+}
?>

Comments

#1

@@ -165,13 +165,10 @@ function realname_menu_alter(&$callbacks) {
           $callbacks[$path]['page callback'] = 'realname_' . $callback['page callback'];
           break;
         case 'contact_user_page':
           $callbacks[$path]['page callback'] = 'realname_contact_user';
           break;
-        case 'blog_page_user':
-          $callbacks[$path]['page callback'] = 'realname_blog_page';
-          break;
       }
     }
   }

   // Remove the core user_search, if requested.
@@ -195,10 +192,12 @@ function realname_delegator_override($type) {
* Drupal's when falling back.
*/
function realname_page_manager_override($type) {
   if ($type == 'user_view') {
     return 'realname_user_view';
+  } elseif ($type == 'blog_user') {
+    return 'realname_blog_page_user';
   }
}

/**
  * Implements hook_ctools_context_converter_alter().
@@ -251,11 +250,11 @@ function realname_user_edit($account, $category = 'account') {
}

/**
  * Intercept the user blog page.
  */
-function realname_blog_page($account) {
+function realname_blog_page_user($account) {
   if (module_exists('blogtitle')) {
     $output = blogtitle_blog_page_user($account);
   } else {
     $output = blog_page_user($account);
     drupal_set_title(t("@name's blog", array('@name' => $account->realname)));

#2

sorry
Forgot the situation when the page manager is not enabled.

#3