[drupal-devel] [feature] show online/offline status in theme('username')

Bèr Kessels drupal-devel at drupal.org
Fri Sep 2 13:01:16 UTC 2005


Issue status update for 
http://drupal.org/node/29281
Post a follow up: 
http://drupal.org/project/comments/add/29281

 Project:      Drupal
 Version:      cvs
 Component:    theme system
 Category:     feature requests
 Priority:     normal
 Assigned to:  moshe weitzman
 Reported by:  moshe weitzman
 Updated by:   Bèr Kessels
 Status:       patch (code needs work)

What I suggest, is that:
* Let this patch proceed as it is now. *without* default icons in
drupal.CSS. But *with* proper classes and IDs in user lists; Then we
add this to a site or a theme, to show how these classes can be used to
get icons. As well as a page in the handbook.
* If Dries's future idea gets momentum, we should consider adding
better themable function for
** Any profile field.
** icons in general. 


So, to be even more specific and to bring focus back on offline inline:
I believe that there should be no such *specific* CSS in drupal.css. A
lot of themers have been trying to get rid of the clutter in that file.
With some success. Esp. these kind of very specific styles are amost
annoying when themeing. If I dont want icons, I need to add at least
ten lines of CSS to my themes to 'disable' them. Often even more, if I
need to achieve another effect. 


I very much believe that drupal core (drupal with no themes enabled)
should be as minimalistic as is possible, without becoming unusable. 


So, what about this: add classes to the tagsoup. Add some CSS rules to
one of the core themes (or more), so that it shows icons, and thus
shows to other themers what is possible.




Bèr Kessels



Previous comments:
------------------------------------------------------------------------

Sun, 21 Aug 2005 01:01:04 +0000 : moshe weitzman

Attachment: http://drupal.org/files/issues/online.patch (9.41 KB)

add css class such that a theme can put nice online/offline indicators
when showing a username link.


i made sure the relevant queries in node, user, and tracker modules
were passing the $user->access parameter which triggers the addition of
this css class.


no added quries or JOINS needed.much of this patch is just moving the
'inactivity timer' pref from the Who's Online block config page to the
main admin/settings/user page.


would be nice if someone contributed small graphics for online offline
and added these to drupal.css. this would enhance our default
presentation. i'd like for this patch not to wait on that, if possible.




------------------------------------------------------------------------

Sun, 21 Aug 2005 09:10:41 +0000 : Bèr Kessels

I really like thi. +1. I managed to grey out my avatars of offline users
(looks very good!) with this patch.


One thing is the whos online block. IMO that should follow these same
rules.




------------------------------------------------------------------------

Sun, 21 Aug 2005 14:01:35 +0000 : moshe weitzman

Attachment: http://drupal.org/files/issues/online_0.patch (10.22 KB)

this feature already works for the who's new and who's online blocks.


here is a slightly improved version which adds offline indicator even
for admin created users who have not yet logged in.




------------------------------------------------------------------------

Sun, 21 Aug 2005 14:30:23 +0000 : Maat at drupal.hu

I patched a clean cvs install, but there are no classes in the  tags of
names of the owners of the nodes. I didn't can fix it and I have to go
away.
I drew the icons for the default theme:
http://maat.myip.hu/~maat/maat_drupal/drupal/misc/online.png &
http://maat.myip.hu/~maat/maat_drupal/drupal/misc/offline.png




------------------------------------------------------------------------

Sun, 21 Aug 2005 15:03:52 +0000 : Bèr Kessels

Excuse my ignorance. This pach already changed the whos online block. My
testsite had a too complex theme function, it was causing the whosonline
block to check fro the old variable still. My error. 


But my +1 still stands, though.




------------------------------------------------------------------------

Sun, 21 Aug 2005 19:31:49 +0000 : moshe weitzman

thanks for the icons ... this feature already works for the who's new
and who's online blocks. perhaps someone (steven?) can add some css to
include these images. otherwise, lets just get this improved markup
committed.




------------------------------------------------------------------------

Sun, 21 Aug 2005 20:29:19 +0000 : Uwe Hermann

Moshe, I think there's a left-over in your patch from another patch(?)
Look at the bluemarine stuff at the bottom.




------------------------------------------------------------------------

Sun, 21 Aug 2005 20:29:53 +0000 : Uwe Hermann

Oh, and +1 for the idea (didn't try the patch, yet).




------------------------------------------------------------------------

Mon, 22 Aug 2005 02:59:49 +0000 : moshe weitzman

Attachment: http://drupal.org/files/issues/online_1.patch (9.41 KB)

indeed, uwe was correct. here is a clean patch.




------------------------------------------------------------------------

Mon, 22 Aug 2005 08:07:17 +0000 : Dries

Sometimes variable_get('user_seconds_online', 2700) is used, sometimes
variable_get('user_seconds_online', 900); is used.  That can't be
right, can it?




------------------------------------------------------------------------

Mon, 22 Aug 2005 12:23:55 +0000 : moshe weitzman

Attachment: http://drupal.org/files/issues/online_2.patch (9.41 KB)

2700 => 900




------------------------------------------------------------------------

Mon, 22 Aug 2005 12:24:11 +0000 : moshe weitzman

Attachment: http://drupal.org/files/issues/online_3.patch (9.41 KB)

2700 => 900




------------------------------------------------------------------------

Mon, 22 Aug 2005 21:06:11 +0000 : Thomas Ilsche

+1
successfully tried the patch (in a small setup)




------------------------------------------------------------------------

Mon, 22 Aug 2005 21:07:05 +0000 : drumm

You can use variable_set() and variable_del() in updates.inc. I think
that would be best since you have to worry less about the cache.


The 'username' class won't be set on users who have not accessed the
site.


I know this is a themeable function, but I'm thinking this might want
to be configurable.




------------------------------------------------------------------------

Sat, 27 Aug 2005 21:27:14 +0000 : Maat at drupal.hu

Attachment: http://drupal.org/files/issues/online_4.patch (12.95 KB)

The patch works me well, but there were some bugs and/or missing
features.


1) the comment module's sql querys were not enough to get user-status
2) the "username t(offline/online)" css classes weren't useful (unicode
classname because of the t() function; two class...) (my version is
"username-online/offline")
3) there wasn't css style for usernames
4) the icons are available on http://maat.myip.hu/~maat/drupal/online




------------------------------------------------------------------------

Mon, 29 Aug 2005 19:36:34 +0000 : Maat at drupal.hu

There were 4 +1-s and my, also 5 ones. The patch works without errors.
I drew iecompatible icons and white backgrounds for the bluemarine
compatibility. http://maat.myip.hu/~maat/drupal/online




------------------------------------------------------------------------

Mon, 29 Aug 2005 19:37:52 +0000 : Dublin Drupaller

+1 from me..great idea


Dub




------------------------------------------------------------------------

Thu, 01 Sep 2005 07:47:59 +0000 : Dries

Patch no longer applies.


What does it 'mean' to be online or offline on a Drupal site?  I think
icons are handy, but not for online/offline purposes -- Drupal sites
aren't usually /real-time communities/ like IRC or IM are.  What is the
value of knowing someone is online? 


Icons to denote whether someone is an administrator or not, paying
member (gold icon) or not, male or female, contributor or user, etc.
sounds a lot more useful to me.  The fact this patch paves the way to
more useful things is what makes me support it.


Take a look at http://www.gfxartist.com/ to see how icons can be used
in a really useful manner.




------------------------------------------------------------------------

Thu, 01 Sep 2005 08:06:33 +0000 : Kobus

"Drupal sites aren't usually real-time communities like IRC or IM are.
What is the value of knowing someone is online? 

"
This is very handy when using a Drupal site for a dating service, or
other service where privatemsg.module is installed. It can also be used
to know if a site administrator is online, in the event of a user
experiencing trouble.


But, your point is taken, and why not implement BOTH approaches? For
online/offline, and to distinguish user roles?


Regards,


Kobus




------------------------------------------------------------------------

Thu, 01 Sep 2005 08:11:27 +0000 : stefan nagtegaal

The more popular forums (did I hear something lately about improving and
extending our own forum???) also displays your current status.. Think
about phpBB..


I do think it's a nice addition to drupal.. :-)




------------------------------------------------------------------------

Thu, 01 Sep 2005 08:13:02 +0000 : stefan nagtegaal

If more people would like to see this hot the trunk, I can update the
patch..


Please let me know..




------------------------------------------------------------------------

Thu, 01 Sep 2005 11:08:46 +0000 : Bèr Kessels

Dries' comment ade me change my mind. I think he is very right.
y idea is that we should simpley pass more information to theme
functions and let teh themes sort out iconifying stuff. Such specific
display options must not be rendered in core, nor oin other modules,
but in themes. That is what they are for, provided they have acces to
enough information.




------------------------------------------------------------------------

Thu, 01 Sep 2005 14:43:37 +0000 : Dries

In future, I'd like to do something like this:



<?php
$icon = '';
if ($user->gender == 'male') {
  $icon = 'male-';
}
else {
  $icon = 'female-';
}
if ($user->contributor) {
  $icon .= 'contributor-';
}
else {
  $icon .= 'user-';
}
$icon .= 'icon.png';
?>




Of course, offline/online could be used too.  This is merely an example
of other stuff one might want to do.  Better start creating more icons.
;)


Stefan: please update this patch to work with HEAD.  Thanks.




------------------------------------------------------------------------

Thu, 01 Sep 2005 14:53:29 +0000 : moshe weitzman

For better semantics, I suggest avoiding the image string. Extend the
technique proposed in this patch. In this example, it would be: 


<div class="female contributor">judy [1]</div>


and then this css


.female .contributor {
  background: url(female-contributor.png);
}


i can't preview this follow-up, so it might be ugly. also, it might
show up better on web than in email.


[1] http://drupal.org/user/25




------------------------------------------------------------------------

Thu, 01 Sep 2005 22:34:44 +0000 : Bèr Kessels

wow. That is very unflexible.
Why not go fora flexinode alike approach? There you can theme any
field.
And really, icons do not belong in core, unless maybe the ones in
admin. Especially such specific icons. Such icons should live in
themes.




------------------------------------------------------------------------

Thu, 01 Sep 2005 23:36:46 +0000 : adrian

Ok. i'm just going to put this out there. 


I think the current solution is quite inflexible, but the basic
functionality is essentially what _phptemplate_variables does (pass
more variables to the theme function / template). One of the (lesser)
reasons I would like to have core move towards using associative arrays
for theme() function parameters (apart from having all hooks
automatically be overridable using .tpl.php files, without writing stub
code in template.php), is that we could have a hook_variables, that
exposes extra variables to the theme function, that it can do whatever
with.


Anyway. Way off topic. Feel free to ignore me.


*goes to bed*




------------------------------------------------------------------------

Fri, 02 Sep 2005 07:10:26 +0000 : Kobus

I am with Ber on the fact that such icons should belong in themes.
Providing the functionality to allow theming of this functionality is
very important though.


Regards,


Kobus




------------------------------------------------------------------------

Fri, 02 Sep 2005 11:45:37 +0000 : moshe weitzman

what does it mean that 'icons should be supplied by themes'? the patch
provides default images that are specified in drupal.css. a theme can
override the images easily with its own css or by implementing
theme('username'). this is the same pattern found with the throbber,
the tablesort icons, the watchdog icons, the forum icons, etc.


are you saying that the css should be implemented in bluemarine's
style.css and pushbutton and chameleon. should the icons be packaged
with those themes (i.e duplication). should drupal not ship with
default icons for this, unlike the examples i cite above?


let's be specific in these patch reviews - what code belongs where?




------------------------------------------------------------------------

Fri, 02 Sep 2005 12:06:07 +0000 : Kobus

Moshe, you do have a point (and some good arguments) here. Hmmm... In
light of this, I think, since it is overridable, include it in Core...


Kobus







More information about the drupal-devel mailing list