Changeset 3988


Ignore:
Timestamp:
04/12/11 10:40:42 (13 years ago)
Author:
rafaelraymundo
Message:

Ticket #1726 - Corrigido url do link (voltar) do mobile, r3987

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.0.1/mobile/inc/class.mobiletemplate.inc.php

    r3867 r3988  
    140140 
    141141                private function process_back_link() { 
    142                         $url = $GLOBALS['phpgw']->session->appsession('mobile.last_url','mobile'); 
    143  
    144                         if($url) { 
    145                                 $params = $GLOBALS['phpgw']->session->appsession('mobile.last_request','mobile'); 
    146  
    147                                 $query_string = ""; 
    148                                 unset($params['sessionid']); 
    149                                 unset($params['domain']); 
    150                                 unset($params['last_loginid']); 
    151                                 unset($params['last_domain']); 
    152                                 unset($params['kp3']); 
    153                                 unset($params['showHeader']); 
    154                                  
    155                                 foreach ($params as $key => $value) { 
    156                                         $query_string .= "&".$key."=".$value; 
     142                        $trace = $GLOBALS['phpgw']->session->appsession('mobile.trace_urls','mobile'); 
     143 
     144                        $trace_idx = 0; 
     145 
     146                        if($trace) { 
     147                                $trace_idx = sizeof($trace)-1; 
     148 
     149                                if($_REQUEST["is_back_link"]) 
     150                                        $trace_idx = $trace_idx - 2; 
     151 
     152                                if($trace_idx < 0) $trace_idx = 0; 
     153 
     154                                $url = $trace[$trace_idx]["url"]; 
     155                                $params = $trace[$trace_idx]["request"]; 
     156 
     157                                $this->href_back = $this->build_url($url, $params); 
     158                        } else { 
     159                                $trace = array(); 
     160                                $this->href_back = ''; 
     161                        } 
     162                         
     163                        if(!$_REQUEST["is_back_link"]) { 
     164                                $current_url = $_SERVER["SCRIPT_NAME"]; 
     165                                $current_params = $_REQUEST; 
     166 
     167                                unset($current_params['sessionid']); 
     168                                unset($current_params['domain']); 
     169                                unset($current_params['last_loginid']); 
     170                                unset($current_params['last_domain']); 
     171                                unset($current_params['kp3']); 
     172                                unset($current_params['showHeader']); 
     173 
     174                                $built_current_url = $this->build_url($current_url, $current_params); 
     175 
     176                                //se der reload não vai gravar a url e vai sobreescrever o link do botão voltar para não voltar para a mesma página 
     177                                if(str_replace("&is_back_link=true","",$built_current_url) != str_replace("&is_back_link=true","",$this->href_back)) 
     178                                        $trace[sizeof($trace)] = array("url" => $current_url, "request" => $current_params); 
     179                                else { 
     180                                        if($trace_idx >= 1) $trace_idx--; 
     181                                        $this->href_back = $this->build_url($trace[$trace_idx]["url"], $trace[$trace_idx]["request"]); 
    157182                                } 
    158  
    159                                 if($query_string != "") 
    160                                         $url .= "?".substr($query_string,1); 
    161  
    162                                 $this->href_back = $url; 
    163183                        } else { 
    164                                 $this->href_back = 'javascript:history.back()'; 
    165                         } 
    166  
    167                         $GLOBALS['phpgw']->session->appsession('mobile.last_url','mobile',$_SERVER["SCRIPT_NAME"]); 
    168                         $GLOBALS['phpgw']->session->appsession('mobile.last_request','mobile',$_REQUEST); 
     184                                if(sizeof($trace) > 1) 
     185                                        unset($trace[sizeof($trace)-1]); 
     186                        } 
     187                         
     188                        if(sizeof($trace) > 0) 
     189                                $GLOBALS['phpgw']->session->appsession('mobile.trace_urls','mobile',$trace); 
     190                        else 
     191                                $GLOBALS['phpgw']->session->appsession('mobile.trace_urls','mobile',null); 
     192                         
     193                        $this->template->set_var('href_back', $this->href_back); 
     194                } 
     195                 
     196                private function build_url($url, $params) { 
     197                        $query_string = ""; 
     198                         
     199                        foreach ($params as $key => $value) { 
     200                                $query_string .= "&".$key."=".$value; 
     201                        } 
     202 
     203                        if($query_string != "") 
     204                                $url .= "?".substr($query_string,1); 
     205                         
     206                        if(!$params["is_back_link"]) 
     207                                $url .= "&is_back_link=true"; 
     208                         
     209                        return $url; 
    169210                } 
    170211 
Note: See TracChangeset for help on using the changeset viewer.