Main Menu
collapse

Simple Portal Archived Forum

This is an Archive Forum.

The content in this forum may be out-of-date or have been superseded by newer information, and links in forum pages to other sites may not work.
This forum contains archives for future reference.

Visit our thread at Simple Machines Forum for current support.

SMF 2.1 users: EhPortal is a ported version of Simple Portal specifically designed for the SMF 2.1 branch.
Please visit web-develop.ca to download EhPortal and for its support.

User Info

Welcome Guest.
Please log in.

Who's Online

  • Dot Guests: 823
  • Dot Hidden: 0
  • Dot Users: 0

There aren't any users online.

Recent Posts

Adding Forums Button to Nav bar by jirapon
[August 01, 2019, 09:07:12 AM]


Re: Board Icons by ♦ Ninja ZX-10RR ♦
[July 30, 2019, 04:03:41 PM]


MOVED: Czech translation???? by ♦ Ninja ZX-10RR ♦
[July 30, 2019, 03:04:51 PM]


Board Icons by jirapon
[July 30, 2019, 07:28:44 AM]


Re: Thankyou Simpleportal, by ♦ Ninja ZX-10RR ♦
[July 29, 2019, 09:41:29 AM]


Blocks speak! Do you have an interest in getting more blocks - or even making your own? The Blocks Board is for you!

Blocks In Blocks

Started by [SiNaN], April 27, 2010, 06:07:08 AM

Previous topic - Next topic

0 Members and 3 Guests are viewing this topic.

glennk

Just what I was looking for, thankyou

J Dub

I just want to confirm something with this one, the 'outta block' that you set other blocks in, this decides who can see them all? you cant set so differant member groups can see for example one block inside and another member group could see 2?

kaustubh

i want to add php custom block to block in block...

But not getting a way to do it.

My PHP code is (Planning to add smf info center in block in block)

global $context, $txt, $settings, $modSettings, $sourcedir, $user_info;

   // Get the user online list.
   require_once($sourcedir . '/Subs-MembersOnline.php');
   $membersOnlineOptions = array(
      'show_hidden' => allowedTo('moderate_forum'),
      'sort' => 'log_time',
      'reverse_sort' => true,
   );
   $context += getMembersOnlineStats($membersOnlineOptions);

   $context['show_buddies'] = !empty($user_info['buddies']);

   // Are we showing all membergroups on the board index?
   if (!empty($settings['show_group_key']))
      $context['membergroups'] = cache_quick_get('membergroup_list', 'Subs-Membergroups.php', 'cache_getMembergroupList', array());

   // Track most online statistics? (Subs-MembersOnline.php)
   if (!empty($modSettings['trackStats']))
      trackStatsUsersOnline($context['num_guests'] + $context['num_spiders'] + $context['num_users_online']);

   // Retrieve the latests posts if the theme settings require it.
   if (isset($settings['number_recent_posts']) && $settings['number_recent_posts'] > 1)
   {
      $latestPostOptions = array(
         'number_posts' => $settings['number_recent_posts'],
      );
      $context['latest_posts'] = cache_quick_get('boardindex-latest_posts:' . md5($user_info['query_wanna_see_board'] . $user_info['language']), 'Subs-Recent.php', 'cache_getLastPosts', array($latestPostOptions));
   }

   $settings['display_recent_bar'] = !empty($settings['number_recent_posts']) ? $settings['number_recent_posts'] : 0;
   $settings['show_member_bar'] &= allowedTo('view_mlist');
   $context['show_stats'] = allowedTo('view_stats') && !empty($modSettings['trackStats']);
   $context['show_member_list'] = allowedTo('view_mlist');
   $context['show_who'] = allowedTo('who_view') && !empty($modSettings['who_enabled']);

   // Show statistical style information...
   if ($settings['show_stats_index'])
   {
      echo '
         <div class="title_barIC">
            <h4 class="titlebg">
               <span class="ie6_header floatleft">
                  <a href="', $scripturl, '?action=stats"><img class="icon" src="', $settings['images_url'], '/icons/info.gif" alt="', $txt['forum_stats'], '" /></a>
                  ', $txt['forum_stats'], '
               </span>
            </h4>
         </div>
         <p class="infobg2">
            ', $context['common_stats']['total_posts'], ' ', $txt['posts_made'], ' ', $txt['in'], ' ', $context['common_stats']['total_topics'], ' ', $txt['topics'], ' ', $txt['by'], ' ', $context['common_stats']['total_members'], ' ', $txt['members'], '. ', !empty($settings['show_latest_member']) ? $txt['latest_member'] . ': <strong> ' . $context['common_stats']['latest_member']['link'] . '</strong>' : '', '<br />
            ', (!empty($context['latest_post']) ? $txt['latest_post'] . ': <strong>&quot;' . $context['latest_post']['link'] . '&quot;</strong>  ( ' . $context['latest_post']['time'] . ' )<br />' : ''), '
            <a href="', $scripturl, '?action=recent">', $txt['recent_view'], '</a>', $context['show_stats'] ? '<br />
            <a href="' . $scripturl . '?action=stats">' . $txt['more_stats'] . '</a>' : '', '
         </p>';
   }
   // "Users online" - in order of activity.
   echo '
         <div class="title_barIC">
            <h4 class="titlebg">
               <span class="ie6_header floatleft">
                  ', $context['show_who'] ? '<a href="' . $scripturl . '?action=who' . '">' : '', '<img class="icon" src="', $settings['images_url'], '/icons/online.gif', '" alt="', $txt['online_users'], '" />', $context['show_who'] ? '</a>' : '', '
                  ', $txt['online_users'], '
               </span>
            </h4>
         </div>
         <div class="infobg2">
         <p class="inline stats">
            ', $context['show_who'] ? '<a href="' . $scripturl . '?action=who">' : '', comma_format($context['num_guests']), ' ', $context['num_guests'] == 1 ? $txt['guest'] : $txt['guests'], ', ' . comma_format($context['num_users_online']), ' ', $context['num_users_online'] == 1 ? $txt['user'] : $txt['users'];

   // Handle hidden users and buddies.
   $bracketList = array();
   if ($context['show_buddies'])
      $bracketList[] = comma_format($context['num_buddies']) . ' ' . ($context['num_buddies'] == 1 ? $txt['buddy'] : $txt['buddies']);
   if (!empty($context['num_spiders']))
      $bracketList[] = comma_format($context['num_spiders']) . ' ' . ($context['num_spiders'] == 1 ? $txt['spider'] : $txt['spiders']);
   if (!empty($context['num_users_hidden']))
      $bracketList[] = comma_format($context['num_users_hidden']) . ' ' . $txt['hidden'];

   if (!empty($bracketList))
      echo ' (' . implode(', ', $bracketList) . ')';

   echo $context['show_who'] ? '</a>' : '', '
         </p>
         <p class="inline smalltext">';

   // Assuming there ARE users online... each user in users_online has an id, username, name, group, href, and link.
   if (!empty($context['users_online']))
   {
      echo '
            ', sprintf($txt['users_active'], $modSettings['lastActive']), ':<br />', implode(', ', $context['list_users_online']);

      // Showing membergroups?
      if (!empty($settings['show_group_key']) && !empty($context['membergroups']))
         echo '
            <br />[' . implode(']&nbsp;&nbsp;[', $context['membergroups']) . ']';
   }

   echo '
         </p>
         <p class="last smalltext">
            ', $txt['most_online_today'], ': <strong>', comma_format($modSettings['mostOnlineToday']), '</strong>.
            ', $txt['most_online_ever'], ': ', comma_format($modSettings['mostOnline']), ' (', timeformat($modSettings['mostDate']), ')
         </p>
         </div>';

   // If they are logged in, but statistical information is off... show a personal message bar.
   if ($context['user']['is_logged'] && !$settings['show_stats_index'])
   {
      echo '
         <div class="title_barIC">
            <h4 class="titlebg">
               <span class="ie6_header floatleft">
                  ', $context['allow_pm'] ? '<a href="' . $scripturl . '?action=pm">' : '', '<img class="icon" src="', $settings['images_url'], '/message_sm.gif" alt="', $txt['personal_message'], '" />', $context['allow_pm'] ? '</a>' : '', '
                  <span>', $txt['personal_message'], '</span>
               </span>
            </h4>
         </div>
         <p class="pminfo">
            <strong><a href="', $scripturl, '?action=pm">', $txt['personal_message'], '</a></strong>
            <span class="smalltext">
               ', $txt['you_have'], ' ', comma_format($context['user']['messages']), ' ', $context['user']['messages'] == 1 ? $txt['message_lowercase'] : $txt['msg_alert_messages'], '.... ', $txt['click'], ' <a href="', $scripturl, '?action=pm">', $txt['here'], '</a> ', $txt['to_view'], '
            </span>
         </p>';
   }

   echo '
      </div>
   </div></div>';


How to add above php code in block in block???

AngelinaBelle

I would suggest putting that custom php code into a custom php block.

when you are satisfied with that, then explore using it inside another block.
Please to keep this website running, if you like SimplePortal, make a
one-time subscription. Thank you for your support.

Have you tried the SimplePortal documentation?

[SiNaN]

If you are using the method explained in this post, then you'll have to pass that whole code as the "content" parameter for sp_php block. However, it should be easier to do using the method explained at the very first post of this topic.
And slowly, you come to realize... It's all as it should be...

Divecall


[SiNaN]

I'm very sorry for the extremely delayed response. Do you still require assistance with that?
And slowly, you come to realize... It's all as it should be...

FireDitto

Quote from: [SiNaN] on April 27, 2010, 06:07:08 AM
You can even call the block functions, without the block template, using the proper parameters. And with some JavaScript, you can have pretty blocks like this:

http://simpleportal.net/index.php?page=blocks_in_block_sample#sp_collapse_54

global $txt;

$txt['recent_topics'] = 'Recent Topics';
$txt['recent_posts'] = 'Recent Posts';

$buttons = array(
   'recent_topics' => array(
      'text' => 'recent_topics',
      'image' => '',
      'lang' => true,
      'url' => '#recent_topics" id="b_rt" onclick="change_display(\'rp\'); return false;',
      'active' => true,
   ),
   'recent_posts' => array(
      'text' => 'recent_posts',
      'image' => '',
      'lang' => true,
      'url' => '#recent_posts" id="b_rp" onclick="change_display(\'rt\'); return false;',
   ),
);

echo '
<div style="overflow: auto;">
   ', template_button_strip($buttons), '
</div>
<div id="recent_topics">
   ', sp_recent(array('type' => 1, 'display' => 1), 0), '
</div>
<div id="recent_posts" style="display: none;">
   ', sp_recent(array('display' => 1), 0), '
</div>
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
   function change_display(block)
   {
      var current = block == \'rt\' ? 1 : 0;

      document.getElementById(\'recent_topics\').style.display = current ? \'none\' : \'\';
      document.getElementById(\'recent_posts\').style.display = current ? \'\' : \'none\';
      document.getElementById(\'b_rt\').className = current ? \'button_strip_recent_topics\' : \'button_strip_recent_topics active\';
      document.getElementById(\'b_rp\').className = current ? \'button_strip_recent_posts active\' : \'button_strip_recent_posts\';
   }
// ]]></script>';


So this is what I call "power of simplicity". I hope this gave a brief idea about how flexible and powerful SimplePortal is. If you have any questions, feel free to ask. ;)




There is also an alternative easier way explained here:

http://simpleportal.net/index.php?topic=5332.msg37841#msg37841

Edit: Fixed a minor issue with last block code.
Edit: disabled link to **** site

This is amazing; however, I can't seem to figure out how ot link to custom php blocks, as opposed to pre-made SP blocks?

This is the current code I'm using for my blocks, which also includes a piece to make sure the parent block only displays the inner blocks to the correct membergroups. I'd like to keep that aspect to it, as well, so that I can tab them all but not have X, Y or Z showing to the wrong membergroup.

This is just a regular block in block - how do I turn it into tabs?:
$block_ids = array(34, 15, 20, 26, 106, 92, 102, 79, 83, 85);

$block_data = array();
foreach ($block_ids as $block)
{
   $data = current(getBlockInfo(false, $block, false, false, true));
   if (empty($data))
      continue;
   $block_data[$block] = $data;
   $block_data[$block]['style'] = sportal_parse_style('explode', $block_data[$block]['style'], true);
}

foreach ($block_data as $data)
echo '<div>', template_block($data), '</div>';


Thank you for your time! :)

420connect

#88
Carrying off where others got stuck..

What is the correct code to call custom php blocks into the javascript version to work in tabs?

I've got this far but stuck calling the other block..

$block['style'] = sportal_parse_style('explode', $block['style'], true);  //Parse block style parameters.
template_block($block); // Output the block.
$blocks = array(
                   array(
'label' => 'Chat',
'type' => 'sp_shoutbox',
'parameters' => array('display' => 1, 'shoutbox' => 2),
),
array(
'label' => 'Who`s Online',
'type' => 'sp_whosonline',
'parameters' => array('display' => 1),
),
array(
'label' => 'Recent Posts',
'type' => 'sp_php',
'parameters' => array( 'display' => 67),
),
array(
'label' => 'Unread Posts',
'type' => 'sp_recent',
'parameters' => array(),
),

);

global $txt;

$button_list = array();
foreach ($blocks as $id => $block)
{
$txt['sp_bib_label_' . $id] = $block['label'];

$button_list[] = array(
'text' => 'sp_bib_label_' . $id,
'image' => '',
'lang' => true,
'url' => '#sp_bib_' . $id . '" id="sp_bib_button_' . $id . '" onclick="sp_bib_change(' . $id . '); return false;',
);
}

$button_list[0]['active'] = true;

echo '
<div style="overflow: auto;">
', template_button_strip($button_list), '
</div>';

foreach ($blocks as $id => $block)
{
echo '
<div id="sp_bib_', $id, '"', $id != 0 ? ' style="display: none;"' : '', '>';

$block['type']($block['parameters'], 0);

echo '
</div>';
}

echo '
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
function sp_bib_change(id)
{
for (var i = 0; i < ', count($blocks), '; i++)
{
document.getElementById(\'sp_bib_\' + i).style.display = i == id ? \'\' : \'none\';
document.getElementById(\'sp_bib_button_\' + i).className = \'button_strip_\' + i + (i == id ? \' active\' : \'\');
}
}
// ]]></script>';


But the Recent Posts isn't grabbing my custom block I'd like to use.. :(

ataru

#89
wow. great.

someone can tell me if it is possible to alter from container block some parameter of nested block(s)?

e.g. I have a custom php block where i open a shoutbox block named "Event #1 Chat".

I want to change that #1 with #n from custom block. where can i get the title of the block and change it before the output command?

Thanks


ok. found:

$block['label']