Hey everyone, I'm working on a custom component and am having trouble figuring out exactly how to dispatch a notification to a user. I was hoping there was some simple function I could call that took care of everything. Can I use OssnNotifications->add() in this way, or do I need to first setup some kind of hooks and/or callback functions? Thanks
Excuse me Bansh33 for flooding your thread with stuff that actually isn't related in any way to your topic.
And yes, I'd strongly recommend Villianer to start a new thread as "How to add a notification preview" and I'll move my stuff over there.
Yes, of course ... ;)
So let's try to get into it step by step.
As Bansh33 already mentioned the necessary changes have to be applied to the function ossn_likes_post_notifiation()
which is part of ossn_com.php
of the OssnWall
component.
And as you already investigated correctly the preview needs to be added to the data
class. Fine.
Having a look into the code this data class appears at line 178 at the bottom of the funtion like
return "<a href='{$notification_read}'>
<li {$viewed}> {$img}
<div class='notfi-meta'> {$type}
<div class='data'>" . ossn_print("ossn:notifications:{$notif->type}", array(
$user->fullname
)) . '</div>
</div></li></a>';
So my idea would be to add some static hmtl to that class first in order to get an idea which way things would look like ... as css may be tricky sometimes. Thus in hope to receive a new line in the notification drop-down I would add another div like
return "<a href='{$notification_read}'>
<li {$viewed}> {$img}
<div class='notfi-meta'> {$type}
<div class='data'>" . ossn_print("ossn:notifications:{$notif->type}", array(
$user->fullname
)) . '</div><div>Post preview goes here ...</div>
</div></li></a>';
But stop, and before applying any changes: Make sure you have a backup in place and you have enabled Error reporting from your Ossn Admin panel. Even more make sure that error reporting is working correctly by adding a line like
error_log('this is line number 175');
before the return ... and checking your error_log
file.
Good luck.
as far as I can tell, ossn-notifications-unviewed is a css class and not really relevant to this discussion.
I think what you wanna do is look at the function OssnNotifications->getByGUID() in components/OssnNotifications/classes/OssnNotifications.php (php class != css class lol). That function will retrieve all data associated with a particular notification (by guid). Parse that information and extract whatever you want, then add the appropriate html to the functions that I explained were part of the hook defintions (look at my post with all the ossn_add_hook()
lines). Or, if you want to get to know things a little better on your own, follow Z-Man's advice and use Chrome's developer tools to inspect the elements in the notification drop down, then search the ossn codebase to find the appropriate string and figure out where you need to modify the html that creates those notifications in the drop down menu.
basically i want to show a preview of
$url = ossnsiteurl("post/view/{$notif->subject_guid}");
in the notifications drop down
ossn-notification-unviewed
<li class="ossn-notification-unviewed">
Thats my wild guess :-)
i would want to add to the data class puting a part of the post that is being liked and or commented
Okay,
assuming there's a post on your wall, someone liked that post and you have read the instructions in https://www.opensource-socialnetwork.org/wiki/view/1137/how-to-find-something-a-word-pattern-in-the-source-code :
What's the HTML anchor of interest you want to search for?
i dont know why im having such an issue understanding the logic here. Anyone able to get me started?
oh... hmmm... I don't see why not. You'd need to modify the functions that define how those notifications look in that drop down. These functions are specified in the ossn_com.php
file for the OssnWall component (components/OssnWall/ossn_com.php
). These are the relevant hooks, so you'd need to modify the functions that they specify:
ossn_add_hook('notification:view', 'like:post', 'ossn_likes_post_notifiation');
ossn_add_hook('notification:view', 'comments:post', 'ossn_likes_post_notifiation');
ossn_add_hook('notification:view', 'wall:friends:tag', 'ossn_likes_post_notifiation');
ossn_add_hook('notification:view', 'comments:post:group:wall', 'ossn_group_comment_post');
ossn_add_hook('notification:view', 'like:post:group:wall', 'ossn_group_comment_post');
so for example, the first function you'd need to modify is ossn_likes_post_notifiation($hook, $type, $return, $params)
(it's in the same file, as you'll see, that's where it spits out the relevant html to create the content for the notifications in the dropdown menu). Hope that helps.
What I was meaning to say was like on most social networks their notifications say what posts was liked or commented on instead of saying someone liked your comment on a post. Or out says sunbathing like someone commented on your post. Is there a way to add a preview of what post without clicking on it?
Due to the many requests in the past for additonal features and components we have decided to develope a premium version. Features like Hashtags, Videos, Polls, Events, Stories, Link Preview, etc included in it.
$199 (Life Time)