Jump to content

Bottom Bar 1.0.1


Nuclear General

Recommended Posts

  • Replies 239
  • Created
  • Last Reply

I've edited mine somewhat drastically because I've edited some of the CSS and added some new links and created some new language bits. What do you think of it (I think it looks great though ^_^):


post-77917-12682376501_thumb.png


it looks awesome!

It would be great to have a settings page for this, to enable/install/uninstall any links to the bottom bar, rather than editing files for any changes you may want to do
Link to comment
Share on other sites

Here is a small video on the functionality of the Visibility feature for members. At the moment, the tab for the bottom bar doesn't show up and I can't seem to figure out why. I've tried all sorts of things, and nothing works. So for now, if you want to try it out, just enter your UserCP like usual, then at the end of the URL, type: &tab=bottombar. The full URL should look like this: app=core&module=usercp&tab=bottombar or app=core&module=usercp&tab=bottombar&area=settings.

http://videos.tiberiumstudios.net/bottom-bar-visibility/bottom-bar-visibility.htm

Link to comment
Share on other sites

You'd have to code something to accomplish that, but yeah, it can be done. I'm not real familiar with that type of stuff yet, so you'd have to ask another member to code it for you, or they can code it as an add-on for other members integrate it themselves. Like I have done with my four tutorials I have in my blog for this mod.

+1 to your post. :thumbsup: Also, you mistyped the word "changed", the first 'e' should an 'a'. Just thought I'd let ya know. :)

Link to comment
Share on other sites

Thank you for the updates. (BTW - the videos are quite hard to watch being so large)

Perhaps Brandon could implement one of the hiding methods into actual script.

Will have a play at adding extra icons etc., although first I need to add some code to hide it from everybody except one group - much easier getting things working if only 2 or 3 people can see it!

Link to comment
Share on other sites

@.Ian: I kinda figured as much, but I didn't feel like changing my resolution. Cuz on a wide-screen laptop, you can't see ****. :lol: Also, I change those methods to only allow certain groups to access the bottom bar if you like.

@ajmboy: The edit button goes away after like an hour or something. IPS uses the "Edit time in restriction:" option in Manager User Groups.

Link to comment
Share on other sites


Great mod. Chenged the css to match my site a bit. It would be nice to show a number of online friends next to the friends icon..like (3) or (4) same as in messages. Has anyone done this?


+1 from me



Will have a play at adding extra icons etc., although first I need to add some code to hide it from everybody except one group - much easier getting things working if only 2 or 3 people can see it!


Being able to select the groups that can use it would be nice. Then you could limit it to certain groups only (excluding only brand new members for example, but they get the ability after they've established themselves).



Sorry, I'm not adding any chatting functionality into this anytime in the immediate future.



CometChat integration would be great.


Nah, if any chat is integrated, I think it should be self sustaining and not rely on an external resource. If it does, it should be a resource of the admins choice.
Link to comment
Share on other sites

Changes/Additions for next release already done:

1) Added a setting to allow you to extend the bar 100% across the bottom
2) In doing so, added a "settings" page in ACP to get rid of the confusion caused by having no ACP page for the app
3) Added download manager link (if installed/enabled)

Stuff I'm still working on

1) Per-member ability to turn bar on/off
2) Fix overflow when there are a lot of messages/friends
3) Friend, favorite, notifications count on the button directly
4) Notifications support for IPB 3.1 (holding off until IPB 3.1 hits public beta, mostly)
5) Per-group permissions....maybe


Considerations for the future (but no promises)

1) Guest support (don't see the point personally)
2) ACP ability to control the left-hand links (add/edit/remove the links)
3) Apps "start menu". Main thing I'd need to know - would it just be a single vertical menu, or a multi-dimensional menu, and if multi-dimensional, would need to determine how to generate the submenus.




Does anyone want to help me? I'm not an images guy (I don't have Photoshop available right now either). I'd like to make the dark "bubble" more generic so it can support longer text easier. To do that, I need to have the image left/right, and a slice I can tile across the middle. Generally speaking, if you're good with images you probably already understand what I mean. If someone wants to do up the images for me, I'll try to implement them, so that longer text blurbs in the bubbles are supported properly.

Link to comment
Share on other sites


Changes/Additions for next release already done:



1) Added a setting to allow you to extend the bar 100% across the bottom


2) In doing so, added a "settings" page in ACP to get rid of the confusion caused by having no ACP page for the app


3) Added download manager link (if installed/enabled)



Awesome. Question though, will anything be done (if it's even possible) to add extra spaces at the bottom to prevent the bottom of the board/page from being hidden from view?



Stuff I'm still working on



1) Per-member ability to turn bar on/off


2) Fix overflow when there are a lot of messages/friends


3) Friend, favorite, notifications count on the button directly


4) Notifications support for IPB 3.1 (holding off until IPB 3.1 hits public beta, mostly)


5) Per-group permissions....maybe



1-3) Awesome
4) Can't wait.. Although I'm not quite sure what notifications you're talking about + 3.1, unless I've missed something?
5) PLZZZZZZZZ.



Considerations for the future (but no promises)



1) Guest support (don't see the point personally)


2) ACP ability to control the left-hand links (add/edit/remove the links)


3) Apps "start menu". Main thing I'd need to know - would it just be a single vertical menu, or a multi-dimensional menu, and if multi-dimensional, would need to determine how to generate the submenus.



1) I personally don't see a point to it, but if it helps any, if you do #5 from the above list, then I'd think that would automatically provide support for guests.
2) I like that idea.
3) What about having IPS apps in the first menu, with a branch off menu for 3rd party apps? Or (slightly more complex) a primary menu (main apps) with a "More apps>" menu, letting the admin select which apps appear in the main menu (the others would appear in the submenu).


I'm not that great with images myself, so I unfortunately cannot offer assistance to your help request. Wish I could though, this is a great mod.
Link to comment
Share on other sites

I have a fixed bottom bar already and now also installed this botom bar, but it is not showing up.

Do i have to remove my bottom bar in order to display this bottom bar?

Other than that, i'm pretty thankful for this app, since i couldn't find out how to add a css menu to it.

Link to comment
Share on other sites


Stuff I'm still working on


5) Per-group permissions....maybe



Yeah, I'd just make a single page in the ACP with a permissions matrix on. That way people won't moan that you don't have an ACP page ;)


Does anyone want to help me? I'm not an images guy (I don't have Photoshop available right now either). I'd like to make the dark "bubble" more generic so it can support longer text easier. To do that, I need to have the image left/right, and a slice I can tile across the middle. Generally speaking, if you're good with images you probably already understand what I mean. If someone wants to do up the images for me, I'll try to implement them, so that longer text blurbs in the bubbles are supported properly.



Haha, I've already roped Alex into doing some Prototype/JS for me :whistle:
Link to comment
Share on other sites


Changes/Additions for next release already done:



1) Added a setting to allow you to extend the bar 100% across the bottom


2) In doing so, added a "settings" page in ACP to get rid of the confusion caused by having no ACP page for the app


3) Added download manager link (if installed/enabled)



Stuff I'm still working on



1) Per-member ability to turn bar on/off


2) Fix overflow when there are a lot of messages/friends


3) Friend, favorite, notifications count on the button directly


4) Notifications support for IPB 3.1 (holding off until IPB 3.1 hits public beta, mostly)


5) Per-group permissions....maybe




Considerations for the future (but no promises)



1) Guest support (don't see the point personally)


2) ACP ability to control the left-hand links (add/edit/remove the links)


3) Apps "start menu". Main thing I'd need to know - would it just be a single vertical menu, or a multi-dimensional menu, and if multi-dimensional, would need to determine how to generate the submenus.






Does anyone want to help me? I'm not an images guy (I don't have Photoshop available right now either). I'd like to make the dark "bubble" more generic so it can support longer text easier. To do that, I need to have the image left/right, and a slice I can tile across the middle. Generally speaking, if you're good with images you probably already understand what I mean. If someone wants to do up the images for me, I'll try to implement them, so that longer text blurbs in the bubbles are supported properly.




I'd be glad to help you out Brandon, but I'm not an images guy either except for doing small changes such as layer properties for drop shadow, bevel & emboss, ect. I can do very basic PHP functions lol. Not that you'll need help with that because you're very good PHP yourself. :)
Link to comment
Share on other sites


Hello ,


I got this error when I login



%7Boption%7D

unbenanntgam.jpg' alt='' class='ipsImage

" alt="" class="ipsImage" width="1000" height="625">


thanks .






Post the contents of your skin_bottombar.php file for me please.









<?php

/*--------------------------------------------------*/

/* FILE GENERATED BY INVISION POWER BOARD 3 	*/

/* CACHE FILE: Skin set id: 31 	*/

/* CACHE FILE: Generated: Tue, 16 Mar 2010 15:16:28 GMT */

/* DO NOT EDIT DIRECTLY - THE CHANGES WILL NOT BE */

/* WRITTEN TO THE DATABASE AUTOMATICALLY 	*/

/*--------------------------------------------------*/


class skin_bottombar_31 {


/**

* Construct

*/

function __construct( ipsRegistry $registry )

{

	/* Make object */

	$this->registry = $registry;

	$this->DB 	= $this->registry->DB();

	$this->settings =& $this->registry->fetchSettings();

	$this->request	=& $this->registry->fetchRequest();

	$this->lang 	= $this->registry->getClass('class_localization');

	$this->member 	= $this->registry->member();

	$this->memberData =& $this->registry->member()->fetchMemberData();

	$this->cache 	= $this->registry->cache();

	$this->caches 	=& $this->registry->cache()->fetchCaches();

}

	/* -- showBottomBar --*/

function showBottomBar() {

$IPBHTML = "";


$version	= IPSLib::fetchVersionNumber();

	$this->registry->class_localization->loadLanguageFile( array( 'public_lang' ), 'bottombar' );


$friends	= array();

						$mIds		= array_keys( $this->memberData['_cache']['friends'] );

						$friends	= IPSMember::load( $mIds );

						$onlineF	= array();

						$offlineF	= array();

						if( is_array($friends) AND count($friends) )

						{

							foreach( $friends as $k => $v )

							{

								$member = IPSMember::buildDisplayData( $v );


								if( $member['_online'] )

								{

									$onlineF[]	= $member;

								}

								else

								{

									$offlineF[]	= $member;

								}

							}

						}


						$this->friends	= array_merge( $onlineF, $offlineF );

$IPBHTML .= "<link rel="stylesheet" type="text/css" href="{$this->settings['public_dir']}style_css/{$this->registry->getClass('output')->skin['_csscacheid']}/bottombar.css" />

<div id="footpanel">

	<ul id="mainpanel">

 	<li><a href="" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "", "public",'' ), "", "" ) . "" class="home">{$this->lang->words['bb_tab_home']} <small>{$this->lang->words['bb_tab_gohome']}</small></a></li>

 	<li><a href="" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "showuser={$this->memberData['member_id']}", "public",'' ), "{$this->memberData['members_seo_name']}", "showuser" ) . "" class="profile">{$this->lang->words['bb_tab_vp']} <small>{$this->lang->words['bb_tab_vp']}</small></a></li>

 	<li><a href="" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "app=core&amp;module=usercp", "public",'' ), "", "" ) . "" class="editprofile">{$this->lang->words['bb_tab_ep']} <small>{$this->lang->words['bb_tab_ep']}</small></a></li>

 	" . (($this->memberData['has_blog'] AND IPSLib::appIsInstalled( 'blog' )) ? ("

 		<li><a href="" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "app=blog&amp;module=display&amp;section=blog&amp;mid={$this->memberData['member_id']}", "public",'' ), "", "" ) . "" class="blog">{$this->lang->words['bb_tab_yb']} <small>{$this->lang->words['bb_tab_yb']}</small></a></li>

 	") : ("")) . "" . (($this->memberData['has_gallery'] AND IPSLib::appIsInstalled( 'gallery' )) ? ("

 		<li><a href="" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "app=gallery&amp;module=user&amp;section=user&amp;user={$this->memberData['member_id']}", "public",'' ), "", "" ) . "" class="gallery">{$this->lang->words['bb_tab_yg']} <small>{$this->lang->words['bb_tab_yg']}</small></a></li>

 	") : ("")) . "" . (($version['long'] >= 31000) ? ("

 	<li id="alertpanel">

 		<a href="#" class="alerts" id='alert-link' title='Alerts'>{$this->lang->words['bb_tab_alerts']}</a>

				<div class="subpanel" style='display:none;'>

					<h3><span> &ndash; </span>Notifications</h3>

					<ul>

						<li class="view"><a href="#">View All</a></li>

						<li>

							<a href="#" class="delete">X</a>

							<p><!--Content--></p>

						</li>

						<li>

							<a href="#" class="delete">X</a>

							<p><!--Content--></p>

						</li>

					</ul>

				</div>

 	</li>

		") : ("")) . "


 	<li id="favoritepanel">

 		<a href="#" class="favorites" id='favorites-link' title='{$this->lang->words['bb_tab_favs']}'>{$this->lang->words['bb_tab_favs']}</a>

			<div class="subpanel" style='display:none;'>

				<h3><span> &ndash; </span>{$this->lang->words['bb_bookmarks']}</h3>

				<ul id='favorites-bb'>

					<li class="view"><a href="#" id='add-favorite-link'>" . $this->registry->getClass('output')->getReplacement("approve") . " {$this->lang->words['bb_addpage']}</a></li>

				</ul>

			</div>

 	</li>

 	<li id="friendpanel">

 		<a href="#" class="friends" id='friends-link' title='{$this->lang->words['bb_tab_friends']}'>{$this->lang->words['bb_tab_friends']}</a>

			<div class="subpanel" style='display:none;'>

				<h3><span> &ndash; </span>{$this->lang->words['bb_tab_friends']}</h3>

				" . ((is_array($this->memberData['_cache']['friends']) AND count($this->memberData['_cache']['friends'])) ? ("

						 	<ul>

	 	<li class='view'><a href='" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "app=members&amp;module=profile&amp;section=friends&amp;do=list", "public",'' ), "", "" ) . "'>{$this->lang->words['bb_friendlist']}</a></li>

	 	".$this->__f__2a64bfcfe78f1d0fb52aa0732ce2f39d()."	 	</ul>

				") : ("

					<p class='center'><a href='" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "app=members", "public",'' ), "", "" ) . "'><em>{$this->lang->words['bb_ff']}</em></a></p>

				")) . "

			</div>

 	</li>

 	<li id="pmpanel">

 		<a href="#" class="pms" id='pm-link' title='{$this->memberData['msg_count_new']}{$this->lang->words['pc_suffix']}'>{$this->lang->words['bb_tab_inbox']} (<strong>{$this->memberData['msg_count_new']} {$this->lang->words['bb_pc_new']}</strong>)</a>

			<div class="subpanel" style='display:none;'>

				<h3><span> &ndash; </span>{$this->lang->words['bb_tab_pct']}</h3>

				<ul id='private-message-list-bb'>

					<li class="view"><a href="" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "app=members&amp;module=messaging", "public",'' ), "", "" ) . "">{$this->lang->words['bb_viewall']}</a></li>

				</ul>

			</div>

 	</li>

	</ul>

</div>

<script type='text/javascript' src='{$this->settings['public_dir']}js/bottombar.js'></script>

<script type='text/javascript'>

var bbzfavs	= "{$this->lang->words['bb_zfavs']}";

</script>";

return $IPBHTML;

}



function __f__2a64bfcfe78f1d0fb52aa0732ce2f39d()

{

	$_ips___x_retval = '';

	foreach( $this->friends as $member )

	{


		$_ips___x_retval .= "

	 		<li class='friend'>

	 			<div class="online-indicator">

	 				<img src='{$this->settings['img_url']}/bottombar/" . (($member['_online']) ? ("online.png") : ("offline.png")) . "' alt='" . (($member['_online']) ? ("online") : ("offline")) . "' title='" . (($member['_online']) ? ("{$this->lang->words['bb_useronline']}") : ("{$this->lang->words['bb_useroffline']}")) . "' />

	 			</div>

	 			<a href="" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "showuser={$member['member_id']}", "public",'' ), "{$member['members_seo_name']}", "showuser" ) . ""><img src='{$member['pp_mini_photo']}' alt="{$member['members_display_name']}{$this->lang->words['users_photo']}" width='{$member['pp_mini_width']}' height='{$member['pp_mini_height']}' class='photo' /> {$member['members_display_name']}</a>

	 		</li>


";

	}

	$_ips___x_retval .= '';

	return $_ips___x_retval;

}


/* -- showFavorites --*/

function showFavorites($urls) {

$IPBHTML = "";

$IPBHTML .= "" . ((count($urls)) ? ("".$this->__f__8424015df0782e2c3c68237e98751479($urls)."") : ("

	<li class='center'><em>{$this->lang->words['bb_zfavs']}</em></li>

")) . "";

return $IPBHTML;

}



function __f__8424015df0782e2c3c68237e98751479($urls)

{

	$_ips___x_retval = '';

	foreach( $urls as $url )

	{


		$_ips___x_retval .= "

		<li id='fav{$url['fav_id']}'>

			<a href='#' class='delete' rel="{$url['fav_id']}"> </a>

			<div class='favorite-row'><a href='{$url['fav_url']}' title='{$url['fav_title']}'>" . IPSText::truncate( $url['fav_title'], 28 ) . "</a></div>

		</li>


";

	}

	$_ips___x_retval .= '';

	return $_ips___x_retval;

}


/* -- showInbox --*/

function showInbox($messages) {

$IPBHTML = "";

$IPBHTML .= "" . ((count($messages)) ? ("".$this->__f__6b2bab7e716745bc859d587d04aa3154($messages)."") : ("

	<li class='center'><em>{$this->lang->words['bb_zmes']}</em></li>

")) . "";

return $IPBHTML;

}



function __f__6b2bab7e716745bc859d587d04aa3154($messages)

{

	$_ips___x_retval = '';

	foreach( $messages as $id => $msg )

	{


		$_ips___x_retval .= "

		<li id='message{$msg['mt_id']}'>

			<div class='inboxicon'>

				" . (($msg['mt_is_deleted'] OR $msg['map_user_banned']) ? ("

					" . $this->registry->getClass('output')->getReplacement("msg_deleted") . "

				") : ("" . (($msg['map_has_unread'] == 1) ? ("

						" . $this->registry->getClass('output')->getReplacement("msg_icon_new") . "

					") : ("

						" . $this->registry->getClass('output')->getReplacement("msg_icon") . "

					")) . "")) . "

			</div>

				" . (($msg['mt_hasattach']) ? ("

					" . $this->registry->getClass('output')->getReplacement("t_attach") . "

				") : ("")) . "

				<span class='m_title'>

					" . (($msg['map_has_unread'] == 1) ? ("

						<strong>

					") : ("")) . "

						<a href='" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "app=members&amp;module=messaging&amp;section=view&amp;do=findMessage&amp;topicID={$msg['mt_id']}&amp;msgID=__firstUnread__", "public",'' ), "", "" ) . "' title='{$this->lang->words['first_unread_reply']}'>{$msg['mt_title']}</a>

					" . (($msg['map_has_unread'] == 1) ? ("

						</strong>

					") : ("")) . "

				</span>

			<div class='desc'>

			{$this->lang->words['bb_from']}

				" . (($msg['_starterMemberData']['members_display_name']) ? ("

					<a href='" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "showuser={$msg['_starterMemberData']['member_id']}", "public",'' ), "{$msg['_starterMemberData']['members_seo_name']}", "showuser" ) . "'>{$msg['_starterMemberData']['members_display_name']}</a>" . $this->registry->getClass('output')->getTemplate('global')->user_popup($msg['_starterMemberData']['member_id'], $msg['_starterMemberData']['members_seo_name']) . "

				") : ("

					{$this->lang->words['deleted_user']}

				")) . "


				<div class='right'>" . ((!$msg['map_user_banned']) ? ("" . intval( $msg['mt_replies'] ) . " {$this->lang->words['bb_replies']}") : ("")) . "</div>

			</div>

		</li>


";

	}

	$_ips___x_retval .= '';

	return $_ips___x_retval;

}




}


/*--------------------------------------------------*/

/* END OF FILE 	*/

/*--------------------------------------------------*/


?>



thanks

Link to comment
Share on other sites

Can anyone help please?


I have a fixed bottom bar already and now also installed this botom bar, but it is not showing up.



Do i have to remove my bottom bar in order to display this bottom bar?



Other than that, i'm pretty thankful for this app, since i couldn't find out how to add a css menu to it.


Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...