Help
Discuss or request ArrowChat modifications
User avatar
GDe Bortoli
Customer
 
Posts: 12
Joined: 20 Sep 2010, 07:34

 

by GDe Bortoli 07 Aug 2011, 02:43

Hello ,
I have installed my arrowchat on Sociale Engine 4 . I have this code working as "who is on Chat" Facebook Styile for chat plugin of SE. I would like some help to modified this code to use with arrowchat. Code is divided in 2 files :

1) controller file :

Code: Select all
<?php

class Widget_FriendsOnChatController extends Engine_Content_Widget_Abstract
{
  public function indexAction()
  {
      if(Engine_Api::_()->getDbTable('Modules','core')->isModuleEnabled('chat'))
      {
        $params = $this->_getAllParams();
        $this->view->limitSearch = isset($params['limitSearch'])?$params['limitSearch']:9;
        $this->view->limitShow = isset($params['limitShow'])?$params['limitShow']:9;
        $this->view->ShowAll = isset($params['ShowAll'])?$params['ShowAll']:27;
      }
      else
      {
          $this->setNoRender();
      }
  }
  public function checkvalid()
  {
      $params = $this->_getAllParams();
      if($params['limitSearch'] >= $params['ShowAll'] || $params['limitShow'] >= $params['ShowAll'])
          throw new Exception("$username is not unique");
  }
}


2) tpl file and java code :

Code: Select all
<script type="text/javascript">
var _time;
var _time_setting;
var _chat_i = -2;
var _num = 0;
en4.core.runonce.add(function(){
    _time = setTimeout(default_page, 3000);
    _time_setting = setTimeout(setting_page_chat, 1000);
    $("search_friend").addEvent("click",function(){
        $("search_friend").select();
    });   
     $("search_friend").addEvent("focus",function(){
         clearTimeout(_time);         
         if($("im_menu_friends_body") != null)
         {
            if(parseInt($('hide_click').value)==0)
            {   
                $("search_friend").value = "";
                $('hide_click').value = 1;
            }
            else
            {               
                    _num = search();                   
                    if(_num==0)
                     {
                        _chat_i = -2;
                        $('hide_search').value = 0;
                        return;
                     }
                     _chat_i = 0;
                     var n = $("friend_online").getChildren('div');
                     var _str = n[_chat_i].getProperty('id');
                     var _id = _str.substring(_str.indexOf("(")+1,_str.indexOf(")"));
                     $('hide_search').value = _id;
                     n[_chat_i].addClass("active");                     
            }
            $("search_friend").setStyle('color', 'black');           
        }
        else
        {
             $("search_friend").setStyle('color', 'black');
             $("search_friend").value = "";             
        }
     });
});
</script>
<div class="friend_on_chat" id="setting_page">
    <div id="notification_setting_chat">
        You are currently offline. To chat with your friends, <span style="cursor: pointer; text-decoration: underline; color: blue;" onclick="online_chat();return false;">go online</span>.
     </div>   
     <div id="form_search">
            <input type="hidden" id="hide_search" />
            <input type="hidden" id="hide_click" value="0"/>
            <input type="text" id="search_friend" value="Friends on chat" autocomplete="Off" onkeyup="searchfriend(event);return false;" onkeydown="if(event.keyCode==9) tab_b(event);"/>
          <div id="friend_online">
            <div class="cl"></div>
         </div>
    </div>
</div>
<style type="text/css">
   .layout_friends_on_chat {
      margin-bottom: 15px;
      overflow: hidden;
   }
    .friend_on_chat{
        background-color: trasparent;
        border: 1px solid #D0E2EC;
        -moz-border-radius: 3px;
        -webkit-border-radius: 3px;
        border-radius: 3px;
        padding: 7px;
        overflow: hidden;       
    }
    #notification_setting_chat{
        display:none;
        height:0px;
        margin: 4px;
    }
    #form_search input{
        width: 143px;
        height: 14px;
        margin:4px;
    }
    .friend_photo{
        float: left;
        width: 48px;
        height: 48px;
        cursor: pointer;
        margin: 4px;
        border: 1px solid #DDDDDD;
    }
    #search_friend
    {
        background: url("application/modules/User/externals/images/links/search.png") no-repeat ;
        background-color: white;
        padding-left:20px;
    }
    .friend_photo_search img{       
        width: 25px;
        height: 25px;
    }   
    .friend_photo_search{
        cursor: pointer;
        line-height:25px;
        width:160px;
        margin: 4px 0px 4px 9px;
    }
    .friend_photo img{
        width: 48px;
        height: 48px;       
               
    }
    .cl{
        clear: left;
    }
    #friend_online span{
        color: trasparent;
        font-weight: 700;
        cursor:pointer;
        margin-left: 4px;
    }
    .active{
       background-color:none;       
    }
    .deactive{
       background-color:none;
    }
</style>
<script type="text/javascript">

//click blur   
    function click_blur(){
         if($("im_menu_friends_body") != null){
             //if(_delay == 0)
             //{
                if($("search_friend").value == "" )
                {
                    clearTimeout(_time);
                    _time = setTimeout(default_page, 1000);
                    $('hide_click').value = 0;
                    _chat_i = -2;
                    _num = 0;
                }
                else
                {
                    clearTimeout(_time);
                    _time = setTimeout(escape_b, 1000);
                }
         }
         else
         {
                $("search_friend").setStyle('color', '#7C8687');
                $("search_friend").value = "Friends on chat";
         }   
    }
    // show chat box and online
    // _type: change textbox search friend, 1 not change, 2 be changed
    function show_box(_id,_type)
    {
        if(_type == 2)
            $("search_friend").value = "";           
        chatHandler.im.open(_id,true);
        //_delay = 0;
        click_blur();
    }
    function online_chat()
    {
        chatHandler.im.items.settings.toggleOnline(1);
    }
    // setting user online or offline
    function setting_page_chat()
    {
       clearTimeout(_time_setting);
       var _span = $('im_main_settings').getChildren('span');
        if(_span[0].innerHTML=="Open Chat")
        {   
            $("form_search").setStyles({display:'none',height:'0px'});
            $("notification_setting_chat").setStyles({display:'block',height:'auto'});
        }
        else
        {
            $("form_search").setStyles({display:'block',height:'auto'});
            $("notification_setting_chat").setStyles({display:'none',height:'0px'});           
        }
        _time_setting = setTimeout(setting_page_chat, 1000);
    }
    //Show list friend
    function default_page()
    {       
        clearTimeout(_time);
        if($("im_menu_friends_body") != null){
            var num = $("im_menu_friends_body").getChildren('li').length;
            var n = $("im_menu_friends_body").getChildren('li');
            if(num > 0)
            {
                var _limit = 0;
               $("friend_online").innerHTML = "";
                for(var _i=0; _i<num; _i++)
                {
                   if(_limit >= <?php echo $this->limitShow;?> )
                   {
                       $("friend_online").innerHTML +="<br /><div id='full_page' style='width:150px;text-align:left;'><span onclick='full_page();return false;'>Expand</span></div>";break;               
                       break;
                   }
                  var _sid = n[_i].getProperty("id");
                  var _id = _sid.split("_");             
                  var _span = n[_i].getChildren("span");
                  var _img = _span[0].getChildren("img");
                  $("friend_online").innerHTML +="<div class=\"friend_photo\" onclick=\"show_box("+parseInt(_id[2])+",1);return false;\"><img src='"+_img.getProperty('src')+"' align='left' title='"+(_span[1].innerHTML).trim()+"'/></div>";
                  _limit = _limit + 1;
                }   
            }
            else
                $("friend_online").innerHTML = "<p style='margin-left:4px'>No one is available to chat</p>";
            $("search_friend").setStyle('color', '#7C8687');
             $("search_friend").value = "Friends on chat";
             
            _time = setTimeout(default_page, 10000);
        }
    }
    //Show all friend
    function full_page()
    {       
        clearTimeout(_time);
        if($("im_menu_friends_body") != null){
            var num = $("im_menu_friends_body").getChildren('li').length;
            var n = $("im_menu_friends_body").getChildren('li');

            if(num > 0)
            {
                var _limit = 0;
                $("friend_online").innerHTML = "";
                for(var _i=0; _i<num; _i++)
                {
                  if(_limit >= <?php echo $this->ShowAll;?>)
                      break;
                  var _sid = n[_i].getProperty("id");
                  var _id = _sid.split("_");             
                  var _span = n[_i].getChildren("span");
                  var _img = _span[0].getChildren("img");
                  $("friend_online").innerHTML +="<div class=\"friend_photo\" onclick=\"show_box("+parseInt(_id[2])+",1);return false;\"><img src='"+_img.getProperty('src')+"' align='left' title='"+(_span[1].innerHTML).trim()+"'/></div>";
                  _limit = _limit + 1;
                }
                $("friend_online").innerHTML +="<br /><div id='hide_page' style='width:159px;text-align:left;'><span onclick='default_page();return false;'> Hide </span></div>";           
            }
            else
                $("friend_online").innerHTML = "<p style='margin-left:4px'>No one is available to chat</p>";
            $("search_friend").setStyle('color', '#7C8687');
             $("search_friend").value = "Friends on chat";
            _time = setTimeout(default_page, 10000);
        }
    }
    // Search friend
    function search()
    {
        clearTimeout(_time);
        if($("im_menu_friends_body") != null){
            if($("search_friend").value != "" )
            {         
                var _str_find = (($("search_friend").value).toLowerCase().trim()).replace(/\s+/, " ");
                var num = $("im_menu_friends_body").getChildren('li').length;
                var n = $("im_menu_friends_body").getChildren('li');
                var _success = false;
                if(num > 0)
                {
                     $("friend_online").innerHTML = "";
                     var _count = 0;
                     var _limit = 0;
                    for(var _i=0; _i<num; _i++)
                    {
                        if(_limit >= <?php echo $this->limitSearch;?>)
                            break;
                        var _sid = n[_i].getProperty("id");
                        var _id = _sid.split("_");
                        var _span = n[_i].getChildren("span");
                        var _nSearch = ((_span[1].innerHTML).toLowerCase()).trim();                       
                        var _img = _span[0].getChildren("img");
                        var _p_find =  _nSearch.indexOf(_str_find);
                       
                        if(parseInt(_p_find) != -1)
                        {
                            var _c_first = -1;
                            do
                            {
                                if(parseInt(_p_find) == _c_first+1)
                                {
                                    _success = true;
                                    break;
                                }
                                _c_first = parseInt(_nSearch.indexOf(" ",_c_first+1));
                            }while(_c_first != -1);
                            if(_success)
                            {
                                $("friend_online").innerHTML +="<div class=\"friend_photo_search\" onmouseover=\"over_search("+_count+");return false;\" onmouseout=\"out_search("+_count+");return false;\" onclick=\"show_box("+parseInt(_id[2])+",2);return false;\" id=\"chat("+parseInt(_id[2])+")\"><img src='"+_img.getProperty('src')+"' align='left'/>&nbsp;&nbsp;"+(_span[1].innerHTML).trim()+"</div>";
                                _count = _count+1;
                                _limit = _limit + 1;
                                _success = false;
                            }
                        }
                    }
                    if(_count == 0)
                        $("friend_online").innerHTML = "<p style='margin-left:4px'>Friend not found on chat</p>";
                }
                else
                   $("friend_online").innerHTML = "<p style='margin-left:4px'>Friend not found on chat</p>";
               return _count;
            }
        }
        else
           return 0;
    }
    /////////////////////////////////////////////////// event key and mouse ////////////////////////
    //event click esc
    function over_search(_pos_over)
    {
        var n = $("friend_online").getChildren('div');
        if(_chat_i >= 0 && _chat_i < _num)
        {
            n[_chat_i].removeClass('active');
            n[_chat_i].addClass("deactive");
        }
        _chat_i = _pos_over;
        var _str = n[_chat_i].getProperty('id');
        var _id = _str.substring(_str.indexOf("(")+1,_str.indexOf(")"));
        $('hide_search').value = _id;       
       // n[_pos_over].removeClass('active');
        n[_pos_over].addClass("active");
    }
    function out_search(_pos_out)
    {
        var n = $("friend_online").getChildren('div');
        n[_pos_out].removeClass('active');
        n[_pos_out].addClass("deactive");       
    }
    function tab_b(event)
    {
        if(event.preventDefault) {
            event.preventDefault();
        }   
        if(_chat_i >= 0 && _chat_i < _num)
        {   
            show_box(parseInt($('hide_search').value),2);
        }
     
        return false;
    }
    function escape_b()
    {
        clearTimeout(_time);
        var _count_div = $('friend_online').getChildren('div').length;
        if(_count_div > 0)
        {
            if($("im_menu_friends_body") != null){
                var num = $("im_menu_friends_body").getChildren('li').length;
                var n = $("im_menu_friends_body").getChildren('li');
                if(num > 0)
                {
                    var _limit = 0;
                   $("friend_online").innerHTML = "";
                    for(var _i=0; _i<num; _i++)
                    {
                       if(_limit >= <?php echo $this->ShowAll;?> )
                       {
                         //  $("friend_online").innerHTML +="<br /><div id='full_page' style='width:150px;text-align:left;'><span onclick='full_page();return false;'>Expand</span></div>";break;               
                           break;
                       }
                      var _sid = n[_i].getProperty("id");
                      var _id = _sid.split("_");             
                      var _span = n[_i].getChildren("span");
                      var _img = _span[0].getChildren("img");
                      $("friend_online").innerHTML +="<div class=\"friend_photo\" onclick=\"show_box("+parseInt(_id[2])+",2);return false;\"><img src='"+_img.getProperty('src')+"' align='left' title='"+(_span[1].innerHTML).trim()+"'/></div>";
                      _limit = _limit + 1;
                    }   
                }
                else
                    $("friend_online").innerHTML = "<p style='margin-left:4px'>No one is available to chat</p>";
                $("search_friend").setStyle('color', '#7C8687');               
            }
        }
        _time = setTimeout(escape_b, 1000);
    }   
    //event click arrow down
    function arrow_down()
    {
        if(_chat_i==-2)
            return;
        var j;
        var n = $("friend_online").getChildren('div');
        if(_chat_i == _num)
        {   
           if(_num == 1)
           {
             _chat_i = 0;
             j = 1;                   
           }
           else{
             _chat_i = 0;
             j = _num-1;
           }
        }
        else
        {
            j = _chat_i;   
            _chat_i = _chat_i + 1;
            if(_chat_i==_num)
                $('hide_search').value = 0;
        }
        if(_chat_i<_num)
        {               
                var _str = n[_chat_i].getProperty('id');
                var _id = _str.substring(_str.indexOf("(")+1,_str.indexOf(")"));
                $('hide_search').value = _id;
                n[_chat_i].addClass("active");
        }
        if(j>=0 && j < _num){
                n[j].removeClass('active');
                n[j].addClass("deactive");
        }       
    }
    //event click arrow up
    function arrow_up()
    {
        if(_chat_i==-2)
            return ;                                   
        var n = $("friend_online").getChildren('div');
        var j;
        if(_chat_i == -1)
        {
            if(_num == 1)
            {
                _chat_i = 0;
                j = 1;               
            }
            else
            {
                _chat_i = _num-1;
                j = 0;
            }
        }
        else
        {
                j = _chat_i;
                _chat_i = _chat_i - 1;
            if(_chat_i<0)
                $('hide_search').value = 0;               
        }       
        if(_chat_i<_num && _chat_i >= 0)
        {
               
                var _str = n[_chat_i].getProperty('id');
                var _id = _str.substring(_str.indexOf("(")+1,_str.indexOf(")"));
                $('hide_search').value = _id;
                n[_chat_i].addClass("active");               
        }
        if(j<_num){
                n[j].removeClass('active');
                n[j].addClass("deactive");
        }     
    }
    /////////////////////////////////////////////////// end event key and mouse ////////////////////////
    //event input in text
    function searchfriend(event)
    {
        clearTimeout(_time);       
        if($("search_friend").value != "" )
        {         
            var num = $("im_menu_friends_body").getChildren('li').length;
            var n = $("im_menu_friends_body").getChildren('li');
            if(num > 0)
            {       
                var keyCode = ('which' in event) ? event.which : event.keyCode;
                switch(parseInt(keyCode))
                {
                        case 13:
                        {
                            if(parseInt($('hide_search').value)!=0)
                            {                               
                                show_box(parseInt($('hide_search').value),2);
                            }
                            break;
                        }
                        case 40:arrow_down();break;
                        case 38:arrow_up();break;
                        case 27:escape_b();break;
                        default:
                                {
                                    _num = search();
                                    if(_num==0)
                                     {
                                        _chat_i = -2;
                                        $('hide_search').value = 0;
                                        break;
                                     }
                                     _chat_i = 0;
                                     n = $("friend_online").getChildren('div');                                     
                                     var _str = n[_chat_i].getProperty('id');
                                     var _id = _str.substring(_str.indexOf("(")+1,_str.indexOf(")"));
                                     $('hide_search').value = _id;
                                     n[_chat_i].addClass("active");
                                }
                                        break;
                } 
            }
            else
               $("friend_online").innerHTML = "<p style='margin-left:4px'>Friend not found on chat</p>";             
        }
        else
        {
            var num = $("im_menu_friends_body").getChildren('li').length;
            var n = $("im_menu_friends_body").getChildren('li');
            if(num > 0)
            {
               var _limit = 0;
               $("friend_online").innerHTML = "";
                for(var _i=0; _i<num; _i++)
                {
                   if(_limit >= 9 )
                   {
                       $("friend_online").innerHTML +="<br /><div id='full_page' style='width:150px;text-align:left;'><span onclick='full_page();return false;'>Expand</span></div>";break;               
                   }
                  var _sid = n[_i].getProperty("id");
                  var _id = _sid.split("_");             
                  var _span = n[_i].getChildren("span");
                  var _img = _span[0].getChildren("img");
                  $("friend_online").innerHTML +="<div class=\"friend_photo\" onclick=\"show_box("+parseInt(_id[2])+");return false;\"><img src='"+_img.getProperty('src')+"' align='left' title='"+(_span[1].innerHTML).trim()+"'/></div>";
                  var _limit = _limit + 1;
                }   
            }
            else
                $("friend_online").innerHTML = "<p style='margin-left:4px'>No one is available to chat</p>";               
        }       
    }
    $('search_friend').onclick=function(e){
         if (e && e.stopPropagation) //if stopPropagation method supported
            e.stopPropagation()
         else
            event.cancelBubble=true
    }
    document.onclick=function(e){
         if($("im_menu_friends_body") != null){
                if($("search_friend").value == "" )
                {
                    clearTimeout(_time);
                    _time = setTimeout(default_page, 1000);
                    $('hide_click').value = 0;
                    _chat_i = -2;
                    _num = 0;
                }
                else
                {
                    if($("search_friend").value != "Friends on chat")
                        $("friend_online").innerHTML = "";
                }
         }
         else
         {
                $("search_friend").setStyle('color', '#7C8687');
                $("search_friend").value = "Friends on chat";
         } 
    }   
</script>




I hopw jason or someone help me..
User avatar
Staff Bot
ArrowChat Team
 
Posts: 8996
Joined: 07 Nov 2012, 13:41

 

by Staff Bot 07 Nov 2012, 12:40

This thread has been locked because the last post is greater than six months old. There is a good chance that the information in this thread is outdated. Please open a new topic if you wish to discuss this further.