2012-10-22 12:56:25 +00:00
< ? php
2012-10-23 15:44:36 +00:00
2012-10-22 12:56:25 +00:00
/* Copyright ( C ) 2009 Winch Gate Property Limited
*
* This file is part of ryzom_api .
* ryzom_api is free software : you can redistribute it and / or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* ryzom_api is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public License
* along with ryzom_api . If not , see < http :// www . gnu . org / licenses />.
*/
2012-10-23 15:44:36 +00:00
function ryzom_app_render ( $title , $content , $style = '' , $javascript = array (), $homeLink = false ) {
2012-10-22 12:56:25 +00:00
$c = '' ;
2012-10-23 15:44:36 +00:00
// get Lua code
$c .= ryLua :: get ( RYZOM_IG );
$at_end = ryLua :: getEnd ( RYZOM_IG );
2012-10-22 12:56:25 +00:00
// Render header
$title_prefix = '' ;
if ( ON_IPHONE ) {
$title_prefix = 'Ryzom - ' ;
}
2012-10-23 15:44:36 +00:00
if ( ! RYZOM_IG )
2012-10-22 12:56:25 +00:00
$c .= '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">' . " \n " ;
2012-10-23 15:44:36 +00:00
$c .= '<html><head>' . " \n " ;
$c .= ' <title>' . $title_prefix . ( translation_exists ( $title ) ? _t ( $title ) : $title ) . '</title>' . " \n " ;
if ( ! RYZOM_IG )
2012-10-22 12:56:25 +00:00
$c .= ' <meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8" />' . " \n " ;
2012-10-23 15:44:36 +00:00
$events = '' ;
if ( ! RYZOM_IG ) {
2012-10-22 12:56:25 +00:00
$c .= ryzom_render_header ();
$c .= ryzom_render_header_www ();
2012-10-23 15:44:36 +00:00
if ( function_exists ( 'newrelic_get_browser_timing_header' ))
$c .= newrelic_get_browser_timing_header ();
if ( ON_IPHONE ) $events = 'onorientationchange="updateOrientation();" ' ;
} else {
#if (!$style)
$style = 'bgcolor="#00000000"' ;
}
if ( ! RYZOM_IG ) {
2012-10-22 12:56:25 +00:00
// Javascript
$js_code = '' ;
2012-10-23 15:44:36 +00:00
if ( is_string ( $javascript ))
$javascript = array ( $javascript );
2012-10-22 12:56:25 +00:00
foreach ( $javascript as $js )
2012-10-23 15:44:36 +00:00
$js_code .= ' <script type="text/javascript" src="' . $js . '"></script>' . " \n " ;
2012-10-22 12:56:25 +00:00
$c .= $js_code ;
2012-10-23 15:44:36 +00:00
}
2012-10-22 12:56:25 +00:00
2012-10-23 15:44:36 +00:00
$c .= ' </head>' . " \n " ;
$c .= ' <body ' . $events . ' ' . $style . '>' . " \n " ;
if ( ! RYZOM_IG ) {
2012-10-22 12:56:25 +00:00
$c .= ryzom_render_www ( ryzom_render_window ( $title , $content , $homeLink ));
2012-10-23 15:44:36 +00:00
$c .= '</body>' ;
if ( function_exists ( 'newrelic_get_browser_timing_header' ))
$c .= newrelic_get_browser_timing_footer ();
2012-10-22 12:56:25 +00:00
} else {
2012-10-23 15:44:36 +00:00
$c .= $content . '<br /><table bgcolor="#000000"><tr><td>' . ryLogger :: getInstance () -> getLogs () . '</td></tr></table></body>' ;
2012-10-22 12:56:25 +00:00
}
2012-10-23 15:44:36 +00:00
$c .= '</html>' . $at_end ;
2012-10-22 12:56:25 +00:00
return $c ;
}
function ryzom_render_header () {
if ( ON_IPHONE ) {
return '' ;
} else {
return ' <link type="text/css" href="' . RYAPI_URL . 'data/css/ryzom_ui.css" rel="stylesheet" media="all" />' ;
}
}
// Call this inside the <head> part if you want to use ryzom_render_www
function ryzom_render_header_www () {
if ( ON_IPHONE ) {
return '
< meta name = " viewport " content = " width=device-width; initial-scale=1.0; maximum-scale=1.8; " >
< link rel = " apple-touch-icon " href = " data/img/ryzom_icon.png " />
< link type = " text/css " href = " data/css/ryzom_iphone.css " rel = " stylesheet " media = " all " />
< script type = " text/javascript " >
window . addEventListener ( " load " , function () { setTimeout ( loaded , 100 ) }, false );
window . onload = function initialLoad () { updateOrientation (); }
iPhone . DomLoad ( updateOrientation );
setInterval ( updateOrientation , 500 );
function loaded () {
document . getElementById ( " main " ) . style . visibility = " visible " ;
window . scrollTo ( 0 , 1 ); // hide the location bar
}
function updateOrientation (){
switch ( window . orientation ) {
case 0 :
case 180 :
contentType = " show_normal " ;
break ;
case - 90 :
case 90 :
default :
contentType = " show_wide " ;
break ;
}
document . getElementById ( " main " ) . setAttribute ( " class " , contentType );
}
function sizeTextarea ( t ) {
a = t . value . split ( \ ' \n\ ' );
b = 1 ;
for ( x = 0 ; x < a . length ; x ++ ) {
if ( a [ x ] . length >= t . cols ) b += Math . floor ( a [ x ] . length / t . cols );
}
b += a . length ;
if ( b > t . rows ) t . rows = b ;
}
</ script >
' ;
} else {
return '
< style type = " text/css " >
body { background - image : url ( '.RYAPI_URL.' data / img / bg . jpg ); background - repeat : no - repeat ; color : white ; background - color : black ; font - family : arial ; font - size : 12 px }
#main{width:95%;height:300px;margin-left:auto;margin-right:auto;text-align:left}
a , a : visited { color : orange ; font - size : 12 px }
td { font - size : 12 px }
a : hover { color : orange }
. error { padding :. 5 em ; background : #ff5555;color:white;font-weight:bold}
img { border : 0 px }
textarea { background - color : black ; color : white ; font - family : arial ; font - size : 12 px }
pre { overflow : auto ; width : 800 px }
</ style >
' ;
}
}
// Render a Ryzom style window
function ryzom_render_window ( $title , $content , $homeLink = false ) {
return ryzom_render_window_begin ( $title , $homeLink ) . $content . ryzom_render_window_end ();
}
function ryzom_render_window_begin ( $title , $homeLink = false ) {
if ( $homeLink === false )
$homeLink = '<span style="float:right;margin-right:12px;"><a href="' . RYAPP_URL . '/index.php" class="ryzom-ui-text-button">' . _t ( 'home' ) . '</a></span>' ;
return '
< div class = " ryzom-ui ryzom-ui-header " >
< div class = " ryzom-ui-tl " >< div class = " ryzom-ui-tr " >
< div class = " ryzom-ui-t " > '.(translation_exists($title)?_t($title):$title).$homeLink.' </ div >
</ div >
</ div >
< div class = " ryzom-ui-l " >< div class = " ryzom-ui-r " >< div class = " ryzom-ui-m " >
< div class = " ryzom-ui-body " >
' ;
}
function ryzom_render_window_end () {
2012-10-23 15:44:36 +00:00
global $user ;
2012-10-22 12:56:25 +00:00
return ' </ div >
2012-10-23 15:44:36 +00:00
< div > '.(isset( $user[' groups '])?implode(' : ', $user[' groups ']):' ').' </ div >
2012-10-22 12:56:25 +00:00
< div style = " background-color: #000000 " > '.ryLogger::getInstance()->getLogs().' </ div ></ div ></ div ></ div >
< div class = " ryzom-ui-bl " >< div class = " ryzom-ui-br " >< div class = " ryzom-ui-b " ></ div ></ div ></ div >< p class = " ryzom-ui-notice " > powered by < a class = " ryzom-ui-notice " href = " http://dev.ryzom.com/projects/ryzom-api/wiki " > ryzom - api </ a ></ p >
</ div >
' ;
}
// Render a webpage using www.ryzom.com style
function ryzom_render_www ( $content ) {
return ryzom_render_www_begin () . $content . ryzom_render_www_end ();
}
function ryzom_render_www_begin ( $url = '' ) {
$style1 = 'position: relative; padding-top: 20px; padding-right: 30px; margin-bottom: -3px' ;
$style2 = 'position: absolute; bottom: 0; right: 0; ' ;
if ( ON_IPHONE ) {
$style1 = 'position: relative; padding-top: 30px; padding-right: 30px; ' ;
$style2 = 'position: fixed; top: 0; right: 0; padding-right: 0px;' ;
$marginBottom = '' ;
}
if ( ! $url ) {
$url_params = parse_query ( $_SERVER [ 'REQUEST_URI' ]);
unset ( $url_params [ 'lang' ]);
$url = 'http://' . $_SERVER [ 'HTTP_HOST' ] . $_SERVER [ 'PHP_SELF' ] . '?' . http_build_query ( $url_params );
}
return '
< br />
< div id = " main " >
< div style = " '. $style1 .' " >
< a href = " '. $url .'&lang=en " >< img hspace = " 5 " border = " 0 " src = " '.RYAPI_URL.'data/img/lang/en.png " alt = " English " /></ a >
< a href = " '. $url .'&lang=fr " >< img hspace = " 5 " border = " 0 " src = " '.RYAPI_URL.'data/img/lang/fr.png " alt = " French " /></ a >
< a href = " '. $url .'&lang=de " >< img hspace = " 5 " border = " 0 " src = " '.RYAPI_URL.'data/img/lang/de.png " alt = " German " /></ a >
< a href = " '. $url .'&lang=ru " >< img hspace = " 5 " border = " 0 " src = " '.RYAPI_URL.'data/img/lang/ru.png " alt = " Russian " /></ a >
< div style = " '. $style2 .' " >
< a href = " http://www.ryzom.com/ " >< img border = " 0 " src = " '.RYAPI_URL.'data/img/logo.gif " alt = " " /></ a >
</ div >
</ div >
' ;
}
function ryzom_render_www_end () {
return '</div>' ;
}
2012-10-23 15:44:36 +00:00
function _s ( $tag , $text ) {
global $ryzom_render_styles , $ryzom_render_tmpls ;
if ( ! array_key_exists ( $tag , $ryzom_render_tmpls ))
return $text ;
if ( is_array ( $text ))
return $p = $text ;
else
$p [ 0 ] = $text ;
$p [ 'color1' ] = $ryzom_render_styles [ $tag ][ 0 ];
$p [ 'color2' ] = $ryzom_render_styles [ $tag ][ 1 ];
$code = '$c = "' . str_replace ( '"' , '\"' , $ryzom_render_tmpls [ $tag ]) . '";' ;
eval ( $code );
return $c ;
}
function ryzom_get_color_style ( $tag , $color = 0 ) {
global $ryzom_render_styles ;
if ( ! array_key_exists ( $tag , $ryzom_render_styles ))
return '000000' ;
return $ryzom_render_styles [ $tag ][ $color ];
}
function ryzom_set_title ( $title ) {
$GLOBALS [ 'ryzom_render_title' ] = $title ;
}
function ryzom_get_title () {
return $GLOBALS [ 'ryzom_render_title' ];
}
function ryzom_font ( $text , $color = " " , $size = " " ) {
if ( RYZOM_IG ) {
$color = $color ? 'color="' . $color . '"' : '' ;
$size = $size ? 'size="' . $size . '"' : '' ;
} else {
$color = $color ? 'color:' . $color . ';' : '' ;
$size = $size ? 'font-size:' . $size . 'pt' : '' ;
}
return ( RYZOM_IG ? " <font $color $size > " : " <font style= \" $color $size\ " > " ). $text .'</font>';
}
function ryzom_render_login_form ( $char , $aligned = true , $action = " " ) {
2012-10-22 12:56:25 +00:00
$c = '' ;
if ( $aligned ) {
2012-10-23 15:44:36 +00:00
$c .= '<form action="' . $action . '" method="post"><table>' ;
2012-10-22 12:56:25 +00:00
$c .= '<tr><td>' . _t ( 'enter_char' ) . '</td></tr>' ;
2012-10-23 15:44:36 +00:00
$c .= '<tr><td><input cols="80" style="width: 200px" type="text" name="char" value="' . $char . '"/></td></tr>' ;
2012-10-22 12:56:25 +00:00
$c .= '<tr><td>' . _t ( 'enter_password' ) . '</td></tr>' ;
2012-10-23 15:44:36 +00:00
if ( RYZOM_IG )
$c .= '<tr><td><input cols="80" style="width: 200px" type="text" name="password" /></td></tr>' ;
else
$c .= '<tr><td><input style="width: 200px" type="password" name="password" /></td></tr>' ;
2012-10-22 12:56:25 +00:00
$c .= '<tr><td><input type="submit" value="' . _t ( 'submit' ) . '" /></td></tr>' ;
} else {
2012-10-23 15:44:36 +00:00
$c .= '<form action="' . $action . '" method="post"><table width="100%">' ;
2012-10-22 12:56:25 +00:00
$c .= '<tr><td align="center">' . _t ( 'login' ) . '</td></tr>' ;
2012-10-23 15:44:36 +00:00
$c .= '<tr><td align="center"><input cols="80" style="width: 200px" type="text" name="char" value="' . $char . '"/></td></tr>' ;
2012-10-22 12:56:25 +00:00
$c .= '<tr><td align="center">' . _t ( 'password' ) . '</td></tr>' ;
2012-10-23 15:44:36 +00:00
if ( RYZOM_IG )
$c .= '<tr><td align="center"><input cols="80" style="width: 200px" type="text" name="password" /></td></tr>' ;
else
$c .= '<tr><td align="center"><input style="width: 200px" type="password" name="password" /></td></tr>' ;
2012-10-22 12:56:25 +00:00
$c .= '<tr><td align="center"><input type="submit" value="' . _t ( 'submit' ) . '" /></td></tr>' ;
}
$c .= '</table></form>' ;
return $c ;
}
2012-10-23 15:44:36 +00:00
function ryzom_dialog_yes_no ( $desc , $action , $name ) { // will append ryzom_dialog=yes|no to url
return '<table width="100%"><tr bgcolor="#333333"><td height="35px" align="center" valign="middle">' . ( RYZOM_IG ? '<font color="#DDAA33" size="11">' : '<font style="color:#DDAA33; font-size:11pt">' ) .
$desc . '<form action="' . $action . ' " method= " POST " >
< table width = " 100% " >
< tr >< td align = " center " >< select name = " '. $name .' " >< option value = " no " > '._t(' no ').' </ option >< option value = " yes " > '._t(' yes ').' </ option ></ select ></ td ></ tr >
< tr >< td align = " center " >< input type = " submit " value = " '._t('submit').' " /></ td ></ tr >
</ table >
</ form ></ font ></ td ></ tr ></ table > ' ;
}
$GLOBALS [ 'ryzom_render_title' ] = defined ( 'APP_NAME' ) ? APP_NAME : 'Ryzom' ;
$ig = ( isset ( $_SERVER [ 'HTTP_USER_AGENT' ]) && strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'Ryzom' )) || ryzom_get_param ( 'ig' ); // need be set using url param because auth is not done
$transparency = $ig ? '' : '' ;
$ryzom_render_styles = array ();
$ryzom_render_tmpls = array ();
$ryzom_render_styles [ 'main title' ] = array ( '#222222' . $transparency , '#FFFFFF' );
$ryzom_render_tmpls [ 'main title' ] = '<table width="100%" cellpadding="0" cellspacing="0"><tr bgcolor="${p[\'color1\']}"><td height="42px" valign="middle"><h1><font ' . ( $ig ? 'color="${p[\'color2\']}" size="14"' : 'style="color:${p[\'color2\']};font-size:16pt; font-weight: bold"' ) . '> ${p[0]}</font></h1></td></tr></table>' . " \n " ;
$ryzom_render_styles [ 'section' ] = array ( '#555555' . $transparency , '#FFFFFF' );
$ryzom_render_tmpls [ 'section' ] = '<table width="100%" cellpadding="0" cellspacing="0"><tr bgcolor="${p[\'color1\']}"><td height="30px" align="left" valign="middle"><font ' . ( $ig ? 'color="${p[\'color2\']}" size="12"' : 'style="color:${p[\'color2\']}; font-size:10pt; font-weight: bold"' ) . '> ${p[0]}</font></td></tr></table>' . " \n " ;
$ryzom_render_styles [ 'color' ] = array ( '' , '' );
$ryzom_render_tmpls [ 'color' ] = ( $ig ? '<font color="${p[0]}">' : '<font style="color:${p[0]}">' ) . '${p[0]}</font>' ;
$ryzom_render_styles [ 'link' ] = array ( '#111111' , '' );
$ryzom_render_tmpls [ 'link' ] = '<table width="100%" cellpadding="0" cellspacing="0"><tr bgcolor="${p[\'color1\']}" ><td height="24px" valign="middle"> ${p[0]}</td></tr></table>' . " \n " ;
$ryzom_render_styles [ 'button' ] = array ( '#000000' , '' );
$ryzom_render_tmpls [ 'button' ] = '<table cellpadding="5" cellspacing="0"><tr bgcolor="${p[\'color1\']}" ><td height="20px" align="center" valign="middle"> ${p[0]}</td></tr></table>' . " \n " ;
$ryzom_render_styles [ 'links' ] = array ( '#111111' . $transparency , '' );
$ryzom_render_tmpls [ 'links' ] = '<table width="100%" cellpadding="0" cellspacing="0"><tr bgcolor="${p[\'color1\']}"><td height="28px" valign="middle"> ${p[0]}</td></tr></table>' . " \n " ;
$ryzom_render_styles [ 'back' ] = array ( '#000000' . $transparency , '' );
$ryzom_render_tmpls [ 'back' ] = '<table cellpadding="0" cellspacing="0" width="100%"><tr valign="middle" bgcolor="${p[\'color1\']}"><td align="left" height="25px" nowrap> <b><a href="${p[0]}">«' . 'main' . '</a></b></td></tr><tr><td> </td></tr></table>' ;
$ryzom_render_styles [ 'highlight' ] = array ( '#55ff55' . $transparency , '' );
$ryzom_render_tmpls [ 'highlight' ] = '<font color="${p[\'color1\']}">${p[0]}</font>' ;
$ryzom_render_styles [ 'backlight' ] = array ( '#272727' . $transparency , '' );
$ryzom_render_tmpls [ 'backlight' ] = '<table width="100%"><tr bgcolor="${p[\'color1\']}"><td height="35px" valign="middle">${p[0]}</td></tr></table>' . " \n " ;
$ryzom_render_styles [ 'actionbar' ] = array ( '#555555' . $transparency , '' );
$ryzom_render_tmpls [ 'actionbar' ] = '<tr bgcolor="${p[\'color1\']}" valign="middle">${p[0]}</tr>' . " \n " ;
$ryzom_render_styles [ 'table' ] = array ( '#050505' . $transparency , '#FFFFFF' );
$ryzom_render_tmpls [ 'table' ] = '<table width="100%" cellpadding="0" cellspacing="0">${p[0]}</table>' . " \n " ;
$ryzom_render_styles [ 't header' ] = array ( '#111111' . $transparency , '#FFFFFF' );
$ryzom_render_tmpls [ 't header' ] = '<tr style="color: #FFFFFF" bgcolor="${p[\'color1\']}" valign="middle">${p[0]}</tr>' . " \n " ;
$ryzom_render_styles [ 't row 0' ] = array ( '#353535' . $transparency , '' );
$ryzom_render_tmpls [ 't row 0' ] = '<tr bgcolor="${p[\'color1\']}" valign="middle">${p[0]}</tr>' . " \n " ;
$ryzom_render_styles [ 't row 1' ] = array ( '#252525' . $transparency , '' );
$ryzom_render_tmpls [ 't row 1' ] = '<tr bgcolor="${p[\'color1\']}" valign="middle">${p[0]}</tr>' . " \n " ;
$ryzom_render_styles [ 't element' ] = array ( '#FFFFFF' . $transparency , '' );
$ryzom_render_tmpls [ 't element' ] = '<font color="${p[\'color1\']}">${p[0]}</font>' ;
$ryzom_render_styles [ 'log' ] = array ( '#001100' . $transparency , '' );
$ryzom_render_tmpls [ 'log' ] = '<div style="background-color: ${p[\'color1\']}"><pre style="width: auto">${p[0]}</pre></div>' . " \n " ;
$ryzom_render_styles [ 'message' ] = array ( '#445566' . $transparency , '' );
$ryzom_render_tmpls [ 'message' ] = '<table width="100%"><tr bgcolor="${p[\'color1\']}"><td align="center" valign="middle"><h3> ${p[0]}</h3></td></tr></table>' . " \n " ;
$ryzom_render_styles [ 'message warning' ] = array ( '#AA3300' . $transparency , '' );
$ryzom_render_tmpls [ 'message warning' ] = '<table width="100%"><tr bgcolor="${p[\'color1\']}"><td align="center" valign="middle"><h3> ${p[0]}</h3></td></tr></table>' . " \n " ;
$ryzom_render_styles [ 'message window' ] = array ( '#5555ff' . $transparency , '#7799ff' );
$ryzom_render_tmpls [ 'message window' ] = '<table width="100%" cellspacing="0" cellpadding="0"><tr><td bgcolor="${p[\'color2\']}" width="3px"></td><td height="3px" bgcolor="${p[\'color2\']}"></td><td bgcolor="${p[\'color2\']}"></td><td bgcolor="${p[\'color2\']}" width="3px"></td></tr>' . '<tr><td bgcolor="${p[\'color2\']}" width="3px"></td><td bgcolor="${p[\'color1\']}" align="center" valign="middle">${p[0]}</td><td bgcolor="${p[\'color1\']}" valign="top" align="right">${p[0]}</td><td width="3px" bgcolor="${p[\'color2\']}"></td>' .
'<tr bgcolor="${p[\'color1\']}"><td bgcolor="${p[\'color2\']}" width="3px"></td><td height="3px" bgcolor="${p[\'color2\']}"></td><td bgcolor="${p[\'color2\']}" width="3px"></td><td bgcolor="${p[\'color2\']}"></td></tr></table>' . " \n " ;
$ryzom_render_styles [ 'message ask' ] = array ( '#333333' . $transparency , '' );
$ryzom_render_tmpls [ 'message ask' ] = '<table width="100%"><tr bgcolor="${p[\'color1\']}"><td height="35px" align="center" valign="middle">' . ( $ig ? '<font color="#DDAA33" size="11">' : '<font style="color:#DDAA33; font-size:11pt">' ) . '${p[0]}</font></td></tr></table>' . " \n " ;
$ryzom_render_styles [ 'message error' ] = array ( '#AA2222' . $transparency , '' );
$ryzom_render_tmpls [ 'message error' ] = '<table width="100%"><tr bgcolor="${p[\'color1\']}"><td height="30px" align="center" valign="middle"><h3> ${p[0]}</h3></td></tr></table>' . " \n " ;
$ryzom_render_styles [ 'message debug' ] = array ( '#FFAA22' . $transparency , '' );
$ryzom_render_tmpls [ 'message debug' ] = '<table width="100%"><tr bgcolor="${p[\'color1\']}"><td height="30px" valign="middle"><font color="#000">${p[0]}</font></td></tr></table>' . " \n " ;
$ryzom_render_styles [ 'progress bar' ] = array ( '#FF0000' . $transparency , '#000000' );
$ryzom_render_tmpls [ 'progress bar' ] = '<table width="100%"><tr><td bgcolor="${p[\'color1\']}" height="30px" width="${p[0]}%" align="center" valign="middle"> </td>${p[0]}<td bgcolor="${p[\'color2\']}" height="30px" valign="middle" align="center">${p[0]} </td></tr></table>' . " \n " ;
2012-10-22 12:56:25 +00:00
?>