Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Sun, Feb 2, 1:04 AM

in-portal

Index: trunk/kernel/include/usersession.php
===================================================================
--- trunk/kernel/include/usersession.php (revision 231)
+++ trunk/kernel/include/usersession.php (revision 232)
@@ -1,1116 +1,1128 @@
<?php
class clsUserSession
{
//Common DB operation class variables
var $m_dirtyFieldsMap = array();
//Identity
var $m_SessionKey;
var $m_CurrentTempKey;
var $m_PrevTempKey;
//Required attributes
var $m_LastAccessed;
var $m_PortalUserId;
var $m_Language;
var $m_Theme;
var $m_GroupId;
var $adodbConnection;
var $m_Errors;
var $m_GroupList;
var $PermCache;
var $SysPermCache;
var $PermCacheGroups;
var $CurrentUser;
var $UseTempKeys;
function clsUserSession($id=NULL, $TempKeys=FALSE)
{
global $objConfig, $objLanguages, $objThemes, $m_var_list;
$this->m_Errors = new clsErrorManager();
$this->adodbConnection = GetADODBConnection();
$this->PermCache = array();
$this->PermCacheGroups ="";
$this->UseTempKeys = $TempKeys;
if( GetVar('help_usage') == 'install' ) return;
if(!$this->UseTempKeys || strlen($id)==0)
{
//echo "with cookies";
if( !isset($_SERVER['HTTP_REFERER']) ) $_SERVER['HTTP_REFERER'] = '';
if( strlen($id) && (strstr($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME'].$objConfig->Get("Site_Path")) || $_GET['destform'] == 'popup' || $_GET['continue_sess'] == 1))
{
$this->Set("SessionKey",$id);
return $this->LoadFromDatabase($id);
}
else
{
$this->Set("PortalUserId", 0);
$this->Set("Language", $objLanguages->GetPrimary());
$ThemeId = $m_var_list["theme"];
$this->SetThemeName($ThemeId);
//$this->Set("Theme", $objConfig->Get("Default_Theme"));
$this->Set("GroupList",0);
$this->Set("SessionKey","");
$this->Set("GroupList",$objConfig->Get("User_GuestGroup"));
}
}
else
{
//echo "without cookies";
return $this->LoadFromTempKey($id);
}
}
function CopyToNewSession()
{
$OldKey = $this->GetSessionKey();
$this->GetNewSession();
if($OldKey != $this->GetSessionKey())
{
$this->Set("PortalUserId",$this->Get("PortalUserId"));
$this->Set("GroupId",$this->Get("GroupId"));
$this->Set("GroupList",$this->Get("GroupList"));
$this->Set("Language",$this->Get("Language"));
$this->Set("tz",$this->Get("tz"));
$this->Set("LastAccessed",date("U"));
$this->Update();
}
}
function Get($name)
{
$var = "m_" . $name;
return isset($this->$var) ? $this->$var : '';
}
function Set($name, $value)
{
if (is_array($name))
{
for ($i=0; $i<sizeof($name); $i++)
{ $var = "m_" . $name[$i];
$this->$var = $value[$i];
$this->m_dirtyFieldsMap[$name[$i]] = $value[$i];
}
}
else
{
$var = "m_" . $name;
$this->$var = $value;
$this->m_dirtyFieldsMap[$name] = $value;
//echo "Set: $var = $value <br>\n";
}
}
function Validate()
{
$dataValid = true;
if(!isset($this->m_LastAccessed))
{
$this->m_Errors->AddError("error.fieldIsRequired",'LastAccessed',"","",get_class($this),"Validate");
$dataValid = false;
}
if(!isset($this->m_PortalUserId))
{
$this->m_Errors->AddError("error.fieldIsRequired",'PortalUserId',"","",get_class($this),"Validate");
$dataValid = false;
}
if(!isset($this->m_Language))
{
$this->m_Errors->AddError("error.fieldIsRequired",'Language',"","",get_class($this),"Validate");
$dataValid = false;
}
if(!isset($this->m_Theme))
{
$this->m_Errors->AddError("error.fieldIsRequired",'Theme',"","",get_class($this),"Validate");
$dataValid = false;
}
return $dataValid;
}
function Delete()
{
if(!isset($this->m_SessionKey))
{
$this->m_Errors->AddError("error.AppError",NULL,'Internal error: Delete requires set id',"",get_class($this),"Delete");
return false;
}
//Delete associated adata first
$sql = sprintf("DELETE FROM ".GetTablePrefix()."SessionData WHERE SessionKey = '%s'", $this->Get("SessionKey"));
$this->adodbConnection->Execute($sql);
$sql = sprintf("DROP TABLE %s%s_search",GetTablePrefix(), $this->Get("SessionKey"));
$this->adodbConnection->Execute($sql);
$sql = sprintf("DELETE FROM ".GetTablePrefix()."UserSession WHERE SessionKey = '%s'", $this->Get("SessionKey"));
$this->adodbConnection->Execute($sql);
if ($this->adodbConnection->Execute($sql) === false)
{
$this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Delete");
return false;
}
$this->Set("SessionKey","");
$this->Set("SessionDataLoaded",false);
return true;
}
function Update()
{
global $objConfig;
//$this->Set("LastAccessed",date("U"));
$this->Set("IpAddress",$_SERVER["REMOTE_ADDR"]);
if(!isset($this->m_SessionKey))
{
$this->m_Errors->AddError("error.AppError",NULL,'Internal error: Update requires set id',"",get_class($this),"Update");
return false;
}
if(!is_numeric($this->Get("PortalUserId")))
{
$this->Set("PortalUserId",0);
}
if(!strlen($this->Get("GroupList")))
{
$this->Set("GroupList",$objConfig->Get("User_GuestGroup"));
}
if(count($this->m_dirtyFieldsMap) == 0)
return true;
$sql = "UPDATE ".GetTablePrefix()."UserSession SET ";
$first = 1;
foreach ($this->m_dirtyFieldsMap as $key => $value)
{
if($first)
{
$sql = sprintf("%s %s=%s",$sql,$key,$this->adodbConnection->qstr($value));
$first = 0;
}
else
{
$sql = sprintf("%s, %s=%s",$sql,$key,$this->adodbConnection->qstr($value));
}
}
$sql = sprintf("%s WHERE SessionKey = '%s'",$sql, $this->Get("SessionKey"));
//echo $sql;
if ($this->adodbConnection->Execute($sql) === false)
{
$this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Update");
return false;
}
return true;
}
function Create()
{
global $objConfig;
$this->Set("LastAccessed", time());
if(!is_numeric($this->Get("PortalUserId")))
{
$this->Set("PortalUserId",0);
}
if(!strlen($this->Get("GroupList")))
{
$this->Set("GroupList",$objConfig->Get("User_GuestGroup"));
}
$sql = "INSERT INTO ".GetTablePrefix()."UserSession (";
$first = 1;
foreach ($this->m_dirtyFieldsMap as $key => $value)
{
if($first)
{
$sql = sprintf("%s %s",$sql,$key);
$first = 0;
}
else
{
$sql = sprintf("%s, %s",$sql,$key);
}
}
$sql = sprintf('%s ) VALUES (',$sql);
$first = 1;
foreach ($this->m_dirtyFieldsMap as $key => $value)
{
if($first)
{
$sql = sprintf("%s %s",$sql,$this->adodbConnection->qstr($value));
$first = 0;
}
else
{
$sql = sprintf("%s, %s",$sql,$this->adodbConnection->qstr($value));
}
}
$sql = sprintf('%s)',$sql);
//echo $sql."<br>\n";
if ($this->adodbConnection->Execute($sql) === false)
{
$this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Create");
return false;
}
return true;
}
function LoadFromTempKey($id=NULL)
{
global $objLanguages, $objConfig,$m_var_list;
$referer = $_SERVER["HTTP_REFERER"];
//echo "Referer: $referer <br>\n";
if(strlen($referer) && strpos($referer,"env="))
{
$keystart = strpos($referer,"env=")+4;
$referer = substr($referer,$keystart);
$keyend = strpos($referer,"-");
$LastKey = substr($referer,0,$keyend);
if(strlen($LastKey))
{
$sql = "SELECT * FROM ".GetTablePrefix()."UserSession WHERE (CurrentTempKey = '$id' OR PrevTempKey='$id' OR CurrentTempKey='$LastKey' OR PrevTempKey='$LastKey') ";
}
else
$sql = "SELECT * FROM ".GetTablePrefix()."UserSession WHERE CurrentTempKey = '$id' AND PrevTempKey IS NULL";
}
else
$sql = "SELECT * FROM ".GetTablePrefix()."UserSession WHERE CurrentTempKey = '$id' AND PrevTempKey IS NULL";
$result = $this->adodbConnection->Execute($sql);
if ($result === false)
{
$this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"LoadFromDatabase");
return false;
}
$data = $result->fields;
if (is_array($data))
{
foreach($data as $field => $value)
{
$mname = "m_" . $field;
$this->$mname = $data[$field];
}
if($this->Get("CurrentTempKey")) {
$this->Set("PrevTempKey",$this->Get("CurrentTempKey"));
$this->UseTempKeys=TRUE;
}
if (!$this->Get("CurrentTempKey") || !strstr($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME'].$objConfig->Get("Site_Path"))) {
//$this->Set("PrevTempKey",$this->Get("CurrentTempKey"));
//$this->Set("CurrentTempKey",$this->GetUniqueKey());
$this->UseTempKeys=FALSE;
$this->Set("PortalUserId", 0);
$this->Set("Language", $objLanguages->GetPrimary());
$ThemeId = $m_var_list["theme"];
$this->SetThemeName($ThemeId);
//$this->Set("Theme", $objConfig->Get("Default_Theme"));
$this->Set("GroupList",0);
$this->Set("SessionKey","");
$this->Set("GroupList",$objConfig->Get("User_GuestGroup"));
}
//$this->UseTempKeys=TRUE;
$this->Update();
return true;
}
else
{
$this->Set("PortalUserId", 0);
$this->Set("Language", $objLanguages->GetPrimary());
$ThemeId = $m_var_list["theme"];
$this->SetThemeName($ThemeId);
//$this->Set("Theme", $objConfig->Get("Default_Theme"));
$this->Set("GroupList",0);
$this->Set("SessionKey","");
$this->Set("GroupList",$objConfig->Get("User_GuestGroup"));
$this->Set("CurrentTempKey",$this->GetUniqueKey());
return false;
}
}
function LoadFromDatabase($id)
{
if(!isset($id))
{
$this->m_Errors->AddError("error.AppError",NULL,'Internal error: LoadFromDatabase id',"",get_class($this),"LoadFromDatabase");
return false;
}
$sql = sprintf("SELECT * FROM ".GetTablePrefix()."UserSession WHERE SessionKey = '%s'",$id);
$result = $this->adodbConnection->Execute($sql);
if ($result === false)
{
$this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"LoadFromDatabase");
return false;
}
$data = $result->fields;
if (is_array($data))
{
foreach($data as $field => $value)
{
$mname = "m_" . $field;
$this->$mname = $data[$field];
}
return true;
}
else
{
return false;
}
}
function Login($userLogin, $userPassword)
{
global $expired, $objConfig;
-
- if($userLogin=="root")
+
+ if($userLogin == "root")
{
+ // logging in "root" (admin only)
$rootpass = $objConfig->Get("RootPass");
if($rootpass!=$userPassword)
{
return FALSE;
}
else
{
if(!strlen($this->GetSessionKey()))
$this->GetNewSession();
$this->Set("PortalUserId",-1);
$this->Update();
return TRUE;
}
}
else
{
+ // logging in any user (admin & front)
$pre = GetTablePrefix();
$sql = "SELECT *,MD5(".$pre."PortalUser.Password) as md5pw FROM ".$pre."PortalUser LEFT JOIN ".$pre."UserGroup USING (PortalUserId) "
."LEFT JOIN ".$pre."PortalGroup ON (".$pre."UserGroup.GroupId=".$pre."PortalGroup.GroupId)
WHERE
".$pre."PortalUser.Login='$userLogin' AND ".$pre."PortalUser.Status=1
AND (".$pre."PortalUser.Password='$userPassword' OR MD5(".$pre."PortalUser.Password)='$userPassword' OR ".$pre."PortalUser.Password='".md5($userPassword)."')
ORDER BY ".$pre."UserGroup.PrimaryGroup DESC, ".$pre."PortalGroup.Personal DESC";
//echo $sql."<br>\n";
$result = $this->adodbConnection->Execute($sql);
if ($result === false)
{
$this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Login");
return false;
}
if($result->EOF)
return false;
}
if(!strlen($this->GetSessionKey()))
{
$this->GetNewSession();
}
$this->Set("PortalUserId", $result->fields["PortalUserId"]);
if(strlen($result->fields["tz"])>0)
$this->Set("tz",$result->fields["tz"]);
$PrimaryGroup=0;
$PersonalGroup=0;
$GroupList = array();
while($result && !$result->EOF)
{
$skipadd=0;
$g = $result->fields["GroupId"];
if($result->fields["PrimaryGroup"]==1)
{
$PrimaryGroup = $g;
$skipadd=1;
}
if($result->fields["Personal"]==1)
{
$PersonalGroup=$g;
$skipadd=0;
}
if(!$skipadd)
$GroupList[] = $g;
$result->MoveNext();
}
$extra_groups = implode(",",$GroupList);
if($PrimaryGroup)
$extra_groups = $PrimaryGroup.",".$extra_groups;
if($PersonalGroup)
{
$this->Set("GroupId",$PersonalGroup);
//$extra_groups .= ",".$PersonalGroup;
}
else
{
$this->Set("GroupId",$PrimaryGroup);
}
$this->Set("GroupList", $extra_groups);
$this->Set("LastAccessed",date("U"));
$this_login = $this->GetPersistantVariable("ThisLogin");
$this->SetPersistantVariable("LastLogin", $this_login);
$this->SetPersistantVariable("ThisLogin", time());
$this->ResetSysPermCache();
$this->PermCache = array();
$this->Update();
+
+ if($userLogin != 'root')
+ {
+ if( ! $this->HasSystemPermission('LOGIN') )
+ {
+ $this->Logout();
+ return false;
+ }
+ }
+
return true;
}
function Logout()
{
global $objConfig;
$this->Set("PortalUserId", 0);
$this->Set("GroupId", $objConfig->Get("User_GuestGroup"));
#$this->SetPersistantVariable("LastLogin", time());
$this->Set("GroupList",$objConfig->Get("User_GuestGroup"));
$this->Set("IpAddress",$_SERVER['REMOTE_ADDR']);
$this->DeleteSessionData($this->GetSessionKey());
$this->Update();
$this->Delete();
$this->ResetSysPermCache();
$this->PermCache = array();
}
function SetVariable( $variableName, $variableValue)
{
global $objConfig, $FrontEnd;
$objConfig->Set($variableName,$variableValue,2);
//if(!(int)$FrontEnd==1)
//{
$sessionkey = $this->GetSessionKey();
$sql = "SELECT * FROM ".GetTablePrefix()."SessionData WHERE VariableName='$variableName' AND SessionKey='$sessionkey'";
$rs = $this->adodbConnection->Execute($sql);
if($rs && !$rs->EOF)
{
$sql = "UPDATE ".GetTablePrefix()."SessionData SET VariableValue='$variableValue' WHERE VariableName='$variableName' AND SessionKey='$sessionkey'";
}
else
$sql = "INSERT INTO ".GetTablePrefix()."SessionData (VariableName,VariableValue,SessionKey) VALUES ('$variableName','$variableValue','$sessionkey')";
$this->adodbConnection->Execute($sql);
// echo "<BR>UPDATE: $sql<BR>";
//}
}
function SetPersistantVariable($variableName, $variableValue)
{
global $objConfig, $objUsers;
$userid = (int)$this->Get("PortalUserId");
if($userid > 0)
{
if(!is_object($this->CurrentUser))
$this->CurrentUser = $objUsers->GetItem($this->Get("PortalUserId"));
if(!$this->CurrentUser->VarsLoaded)
$this->CurrentUser->LoadPersistantVars();
//echo "setting current user' $variableName, $variableValue<br>";
$this->CurrentUser->SetPersistantVariable($variableName, $variableValue);
//$this->SetVariable($variableName,$variableValue);
}
else
$this->SetVariable($variableName,$variableValue);
}
function GetPersistantVariable($variableName)
{
global $objConfig, $objUsers;
if(is_numeric($this->Get("PortalUserId")))
{
if(!is_object($this->CurrentUser))
$this->CurrentUser = $objUsers->GetItem($this->Get("PortalUserId"));
if(!$this->CurrentUser->VarsLoaded)
$this->CurrentUser->LoadPersistantVars();
$val = $this->CurrentUser->GetPersistantVariable($variableName);
}
if(!strlen($val))
$val = $objConfig->Get($variableName);
return $val;
}
function GetVariable($variableName)
{
global $objConfig;
return $objConfig->Get($variableName);
}
function LoadSessionData()
{
global $objConfig, $objUsers;
if(is_numeric($this->Get("PortalUserId")))
{
$sql = "SELECT VariableName, VariableValue FROM ".GetTablePrefix()."SessionData where SessionKey='" . $this->Get("SessionKey") . "'";
//echo $sql."<br>\n";
$result = $this->adodbConnection->Execute($sql);
while ($result && !$result->EOF)
{
$data = $result->fields;
//echo "<PRE>"; print_r($data); echo "</PRE>";
$objConfig->Set($data["VariableName"],$data["VariableValue"],FALSE);
$result->MoveNext();
}
if(!is_object($this->CurrentUser))
$this->CurrentUser = $objUsers->GetItem($this->Get("PortalUserId"));
if(!$this->CurrentUser->VarsLoaded)
$this->CurrentUser->LoadPersistantVars();
}
if((int)$this->GetPersistantVariable("Language"))
$this->Set("Language",$objConfig->Get("Language"));
$this->DeleteExpiredSessions();
return true;
}
function DeleteSessionData($key)
{
$sql = "DELETE FROM ".GetTablePrefix()."SessionData WHERE SessionKey='$key'";
$this->adodbConnection->Execute($sql);
}
function SaveSessionData()
{
global $objConfig;
//echo "Saving Session Data..<br>\n";
if($this->SessionEnabled())
{
$data = $objConfig->GetDirtySessionValues(2); //session data
//echo "<PRE>"; print_r($data); echo "</PRE>";
$sessionkey = $this->GetSessionKey();
foreach($data as $field=>$value)
{
$sql = "UPDATE ".GetTablePrefix()."SessionData SET VariableValue='$value' WHERE VariableName='$field' AND SessionKey='$sessionkey'";
$this->adodbConnection->Execute($sql);
//echo $sql."<br>\n";
if($this->adodbConnection->Affected_Rows()==0)
{
$sql = "INSERT INTO ".GetTablePrefix()."SessionData (VariableName,VariableValue,SessionKey) VALUES ('$field','$value','$sessionkey')";
$this->adodbConnection->Execute($sql);
}
// echo $sql."<br>\n";
}
}
}
function DeleteEditTables()
{
$tables = $this->adodbConnection->MetaTables();
$sql = "SHOW TABLES";
//echo "<PRE>";print_r($tables); echo "</PRE>";
for($i=0;$i<count($tables);$i++)
{
$t = strtoupper($tables[$i]);
$p = strtoupper(GetTablePrefix()."ses_ad");
$k = substr($t,0,strlen($p));
if($k == $p && strpos($t,"FD_")>0)
{
$key = "AD".strtoupper(substr($t,strlen($p),strpos($t,"FD_")-strlen($p)))."FD";
$sql = "SELECT * FROM ".GetTablePrefix()."UserSession WHERE SessionKey='$key'";
//echo $sql."<br>\n";
$rs = $this->adodbConnection->Execute($sql);
if(!$rs || $rs->EOF)
{
//echo "Dropping Table $tables[$i] <br>\n";
@$this->adodbConnection->Execute("DROP TABLE ".$tables[$i]);
}
}
}
}
function DeleteExpiredSessions()
{
global $objConfig;
$cutoff = time()-$objConfig->Get("SessionTimeout");
$thiskey = $this->GetSessionKey();
$sql = "SELECT SessionKey from ".GetTablePrefix()."UserSession WHERE LastAccessed<$cutoff AND SessionKey != '$thiskey'";
$result = $this->adodbConnection->Execute($sql);
$keys = array();
while ($result && !$result->EOF)
{
$keys[] = "SessionKey='" . $result->fields["SessionKey"] . "'";
$result->MoveNext();
}
if(count($keys)>0)
{
$keywhere = implode(" OR ", $keys);
$sql = "DELETE FROM ".GetTablePrefix()."SessionData WHERE $keywhere";
//echo $sql;
$this->adodbConnection->Execute($sql);
$this->adodbConnection->Execute("DELETE FROM ".GetTablePrefix()."UserSession WHERE LastAccessed<$cutoff");
$this->DeleteEditTables();
}
}
function SetSysPermCache()
{
unset($this->SysPermCache);
$GroupList = $this->Get("GroupList");
if(strlen($GroupList) && $GroupList !="0")
{
$this->SysPermCache = array();
$sql = "SELECT * FROM ".GetTablePrefix()."Permissions WHERE Type=1 AND PermissionValue=1 AND GroupId IN (".$GroupList.")";
//echo $sql."<br>\n";
$rs = $this->adodbConnection->Execute($sql);
while($rs && !$rs->EOF)
{
$val = $rs->fields["PermissionValue"];
if($val==1)
$this->SysPermCache[$rs->fields["Permission"]] = 1;
$PermList[] = $rs->fields["Permission"];
$rs->MoveNext();
}
if( isset($PermList) && count($PermList) > 0) // I think this is never issued (comment by Alex)
$this->SetVariable("SysPerm",implode(",",$PermList));
}
}
function GetSysPermCache()
{
$perms = trim($this->GetVariable("SysPerm"));
if(!strlen($perms))
{
$this->SetSysPermCache();
}
else
{
$p = explode(",",$perms);
$this->SysPermCache = array();
for($i=0;$i<count($p);$i++)
{
$n = $p[$i];
$this->SysPermCache[$n]=1;
}
}
}
function SysPermCacheLoaded()
{
return (isset($this->SysPermCache));
}
function ResetSysPermCache()
{
// echo "Resetting Perm Cache<br>\n";
$this->SetVariable("SysPerm","");
unset($this->SysPermCache);
//$this->SysPermCache=array();
}
function HasSystemPermission($PermissionName)
{
global $objGroups;
if($this->Get("PortalUserId")==-1 && ($PermissionName=="ADMIN" || $PermissionName=="LOGIN"))
return TRUE;
//echo "Looking up $PermissionName:".$this->Get("GroupList")."<br>\n";
//echo $this->Get("GroupList")." - ".$this->PermCacheGroups;
$GroupList = $this->Get("GroupList");
if(substr($GroupList,-1)==",")
{
$GroupList = substr($GroupList,0,-1);
$this->Set("GroupList",$GroupList);
}
//print_pre( $GroupList);
if($this->Get("GroupList")!=$this->PermCacheGroups)
$this->ResetSysPermCache();
if(!$this->SysPermCacheLoaded())
{
//echo "Loading Perm Cache<br>\n";
$this->GetSysPermCache();
$this->PermCacheGroups = $this->Get("GroupList");
}
//echo "SysPerm $PermissionName: [". $this->SysPermCache[$PermissionName]."]<br>\n";
return isset($this->SysPermCache[$PermissionName]) ? $this->SysPermCache[$PermissionName] == 1 : false;
}
function HasCatPermission($PermissionName,$CatId=NULL)
{
global $objCatList, $objUsers;
$PermSet =FALSE;
$Value = 0;
if($this->Get("PortalUserId")==-1)
return TRUE;
if(!strlen($PermissionName))
return FALSE;
$GroupList = $this->Get("GroupList");
if(substr($GroupList,-1)==",")
{
$GroupList = substr($GroupList,0,-1);
$this->Set("GroupList",$GroupList);
}
if(!strlen($this->Get("SessionKey")))
$this->Set("GroupId",0);
if(strlen(trim($GroupList)))
{
if(strlen($this->Get("GroupId")))
{
$GroupList = $this->Get("GroupId").",".$GroupList;
}
}
else
{
$GroupList = $this->Get("GroupId");
}
if($CatId == NULL)
{
$CatId = $objCatList->CurrentCategoryID();
}
$Cat = &$objCatList->GetCategory($CatId);
$Value="";
for($p=0;$p<count($this->PermCache);$p++)
{
$pItem = $this->PermCache[$p];
if($pItem["perm"]==$PermissionName && $pItem["cat"]==$CatId)
{
$Value=$pItem["value"];
break;
}
}
if(is_object($Cat) && !is_numeric($Value))
{
$Value = 0;
$CatList = $Cat->Get("ParentPath");
$CatList = substr($CatList,1,-1);
$CatList = str_replace("|",",",$CatList);
if(strlen($CatList))
{
$CatList ="0,".$CatList;
}
else
$CatList = "0";
$sql = "SELECT * FROM ".GetTablePrefix()."Permissions WHERE Permission LIKE '$PermissionName' AND CatId IN ($CatList) AND GroupId IN ($GroupList)";
// echo $sql."<br>\n";
$rs = $this->adodbConnection->Execute($sql);
$PermValue = array();
while($rs && !$rs->EOF)
{
$index = $rs->fields["CatId"];
if(!is_numeric($PermValue[$index]))
$PermValue[$index] = $rs->fields["PermissionValue"];
$rs->MoveNext();
}
$cats = array_reverse(explode(",",$CatList));
for($c=0;$c<count($cats);$c++)
{
$index = $cats[$c];
if(is_numeric($PermValue[$index]))
{
$Value = $PermValue[$index];
break;
}
}
$perm = array();
$perm["perm"] = $PermissionName;
$perm["cat"] = $CatId;
$perm["value"] = $Value;
array_push($this->PermCache, $perm);
}
//echo $GroupList." Has Permission $PermissionName = $Value<br>\n";
return $Value;
}
function HasCatPermInList($PermList,$CatId=NULL, $System=FALSE)
{
$value = 0;
if(strlen($PermList))
{
$plist = explode(",",$PermList);
$value=0;
for($p=0;$p<count($plist);$p++)
{
if($this->HasCatPermission($plist[$p]))
{
$value = 1;
break;
}
else
{
if($System)
{
if($this->HasSystemPermission($plist[$p]))
{
$value = 1;
break;
}
}
}
}
}
return $value;
}
function GetACLClause()
{
$GroupList = $this->Get("GroupList");
if(strlen($GroupList))
$Groups = explode(",",$GroupList);
$acl_where = "";
if(@count($Groups)>0 && is_array($Groups))
{
$acl_where = array();
for($i=0;$i<count($Groups);$i++)
{
$g = $Groups[$i];
if(strlen($g)>0)
$acl_where[] = "(FIND_IN_SET($g,acl) OR ((NOT FIND_IN_SET($g,dacl)) AND acl='')) ";
}
if(count($acl_where))
{
$acl_where = "(".implode(" OR ",$acl_where).")";
}
else
$acl_where = "(FIND_IN_SET(0,acl))";
}
else
$acl_where = "(FIND_IN_SET(0,acl))";
return $acl_where;
}
function GetEditTable($base_table)
{
$prefix = GetTablePrefix();
if(strlen($prefix))
{
if(substr($base_table,0,strlen($prefix))!=$prefix)
$base_table = $prefix.$base_table;
}
$table = $prefix."ses_".$this->GetSessionKey()."_edit_".$base_table;
//echo "Table: $table <br>\n";
return $table;
}
function GetSessionTable($base_table,$name)
{
$prefix = GetTablePrefix();
if(strlen($prefix))
{
if(substr($base_table,0,strlen($prefix))!=$prefix)
$base_table = $prefix.$base_table;
}
$table = $prefix."ses_".$this->GetSessionKey()."_".$name.$base_table;
//echo "Table: $table <br>\n";
return $table;
}
function GetSearchTable($base_table="")
{
$prefix = GetTablePrefix();
if(strlen($base_table))
{
if(strlen($prefix))
{
if(substr($base_table,0,strlen($prefix))!=$prefix)
$base_table = $prefix.$base_table;
}
$table = $prefix."ses_".$this->GetSessionKey()."_search_".$base_table;
}
else
$table = $this->GetSessionTable('Search',''); //$prefix."ses_".$this->GetSessionKey()."_search";
return $table;
}
function GetTotalSessions()
{
# $time = time() - 900;
$sql = "SELECT count(*) as SesCount FROM ".GetTablePrefix()."UserSession";
$result = $this->adodbConnection->Execute($sql);
if ($result === false)
{
$this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"GetTotalSessions");
return false;
}
return $result->fields["SesCount"];
}
function Query_UserSession($whereClause,$orderByClause)
{
$resultSet = array();
$sql = "SELECT ".GetTablePrefix()."* FROM ".GetTablePrefix()."UserSession ";
if(isset($whereClause))
$sql = sprintf('%s WHERE %s',$sql,$whereClause);
if(isset($orderByClause))
$sql = sprintf('%s ORDER BY %s',$sql,$orderByClause);
$result = $this->adodbConnection->Execute($sql);
if ($result === false)
{
$this->m_Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Query_UserSession");
return false;
}
while (!$result->EOF)
{
$item = new clsUserSession(NULL);
$item->Set("SessionKey",$result->fields["SessionKey"]);
$item->Set("LastAccessed", $result->fields["LastAccessed"]);
$item->Set("PortalUserId", $result->fields["PortalUserId"]);
$item->Set("Language", $result->fields["Language"]);
$item->Set("Theme" , $result->fields["Theme"]);
array_push($resultSet,$item);
$result->MoveNext();
}
return $resultSet;
}
function GetUniqueKey()
{
while(true)
{
/* create the new session key here */
mt_srand(100000000*(double)microtime());
$sessionId=strtoupper(sprintf("AD%xFD",mt_rand(100000000,999999999))); //9 digit hex session id
$query = "select SessionKey from ".GetTablePrefix()."UserSession ";
$query .= "where SessionKey='$sessionId' OR CurrentTempKey='$sessionId' OR PrevTempKey='$sessionId'";
$rs = $this->adodbConnection->Execute($query);
if($rs->EOF)
break;
if($i>100)
{
return "";
}
$i++;
}
//echo "Getting Unique Key: $sessionId<br>";
return $sessionId;
}
function GetNewSession()
{
global $sessionId, $objConfig, $objLanguages, $m_var_list;
$i=0;
if($this->Get("PortalUserId")>0 || $objConfig->Get("GuestSessions")==1)
{
//echo "Creating Session<br>\n";
$sessionId = $this->GetUniqueKey();
$this->Set("SessionKey", $sessionId);
$this->Set("CurrentTempKey",$sessionId);
if($m_var_list["lang"])
{
$this->Set("Language",$m_var_list["lang"]);
}
else
$this->Set("Language", $objLanguages->GetPrimary());
$this->SetThemeName();
//$this->Set("Theme", $objConfig->Get("Default_Theme"));
$this->UpdateAccessTime();
$this->Set("IpAddress", $_SERVER['REMOTE_ADDR'] );
$this->Create();
}
else
$this->Set("SessionKey","");
}
function SessionEnabled()
{
$res = FALSE;
$key = $this->GetSessionKey();
if(strlen($key)>0)
$res = TRUE;
return $res;
}
function GetSessionKey()
{
return $this->Get("SessionKey");
}
function SetThemeName($id=0)
{
global $objThemes;
if($id==0)
$id = $objThemes->GetPrimaryTheme();
$Theme = $objThemes->GetItem($id);
$name = $Theme->Get("Name");
$this->Set("Theme",$name);
//$this->Update();
}
function ValidSession($SessionKey=NULL)
{
global $objConfig;
$a = $this->Get("LastAccessed");
$cutoff = time()-$objConfig->Get("SessionTimeout");
//echo $a." ".$cutoff."<br>";
//$ip = ($_SERVER['REMOTE_ADDR'] == $this->Get("IpAddress"));
//echo $this->Get("IpAddress");
//$ip = TRUE;
if ($a < $cutoff) {
//$this->UpdateAccessTime();
}
return ($a >= $cutoff);
}
function UpdateAccessTime()
{
$now = time();
$this->Set("LastAccessed",$now);
}
function InSpamControl($ResourceId,$DataType=NULL)
{
static $ClearStat;
if(!$ClearStat)
$this->PurgeSpamControl();
$ClearStat=1;
if(strlen($DataType))
$DataType="'".$DataType."'";
$sql = "SELECT count(*) as SpamCount FROM ".GetTablePrefix()."SpamControl WHERE ItemResourceId=$ResourceId AND DataType=$DataType";
if($this->Get("PortalUserId")==0)
{
$sql .= " AND PortalUserId=0 AND IPaddress='".$_SERVER["REMOTE_ADDR"]."'";
}
else
{
$sql .= " AND PortalUserId=".$this->Get("PortalUserId");
}
$rs = $this->adodbConnection->Execute($sql);
$value = (int)$rs->fields["SpamCount"];
if($value>0)
{
return TRUE;
}
else
return FALSE;
}
function AddToSpamControl($ResourceId,$secstoexpire,$DataType=NULL)
{
$expire = adodb_date("U") + $secstoexpire;
if(strlen($DataType))
$DataType = "'".$DataType."'";
$sql = "INSERT INTO ".GetTablePrefix()."SpamControl (ItemResourceId,IPaddress,Expire,PortalUserId,DataType) VALUES (";
$sql .= $ResourceId.",'".$_SERVER["REMOTE_ADDR"]."',$expire,".$this->Get("PortalUserId").",$DataType)";
//echo $sql;
$this->adodbConnection->Execute($sql);
}
function PurgeSpamControl()
{
$sql = "DELETE FROM ".GetTablePrefix()."SpamControl WHERE Expire<".adodb_date("U");
$this->adodbConnection->Execute($sql);
}
}/* clsUserSession */
?>
Property changes on: trunk/kernel/include/usersession.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.6
\ No newline at end of property
+1.7
\ No newline at end of property
Index: trunk/kernel/frontaction.php
===================================================================
--- trunk/kernel/frontaction.php (revision 231)
+++ trunk/kernel/frontaction.php (revision 232)
@@ -1,832 +1,859 @@
<?php
+
+if( defined('DEBUG_ACTIONS') && (DEBUG_ACTIONS & FRONT_KERNEL_ACTIONS) == FRONT_KERNEL_ACTIONS )
+{
+ if($Action) echo "Front, Kernel Action [<b>$Action</b>]<br>\n";
+}
+
+if( defined('DEBUG_ACTIONS') && (DEBUG_ACTIONS & FRONT_SHOW_REQUEST) == FRONT_SHOW_REQUEST )
+{
+ // don't show debug output in tree & header of admin & while logging in
+ $script = basename($_SERVER['PHP_SELF']);
+
+ echo '<table width="100%" cellspacing="0" cellpadding="5"><tr><td>';
+ echo "ScriptName: <b>$script</b> (<b>".dirname($_SERVER['PHP_SELF'])."</b>)<br><br>";
+ echo '<table border="0" cellspacing="0" cellpadding="4" class="debug_table">';
+ echo '<thead style="font-weight: bold;"><td>Src</td><td>Name</td><td>Value</td></thead>';
+
+ foreach($_REQUEST as $key => $value)
+ {
+ if( trim($value) == '' ) $value = '&nbsp;';
+ $src = isset($_GET[$key]) ? 'GE' : (isset($_POST[$key]) ? 'PO' : (isset($_COOKIE[$key]) ? 'CO' : '?') );
+ echo '<tr><td>'.$src.'</td><td>'.$key.'</td><td>'.print_r($value, true).'</td></tr>';
+ }
+ echo '</table>';
+ echo '</td></tr></table>';
+ unset($script);
+}
+
switch($Action)
{
case "m_login":
// if($objSession->ValidSession())
// $objSession->Logout();
//echo $objSession->GetSessionKey()."<br>\n";
if ($objConfig->Get("CookieSessions") == 1 && $_COOKIE["CookiesTest"] != "1") {
$FormError["login"]["login_user"] = language("lu_cookies_error");
}
else {
$MissingCount = SetMissingDataErrors("login");
if($MissingCount==2)
{
$FormError["login"]["login_user"]= language("lu_ferror_loginboth");
unset($FormError["login"]["login_password"]);
}
if($MissingCount==0)
{
if($_POST["login_user"]=="root")
{
$FormError["login"]["login_user"]= language("lu_access_denied");
}
else
{
if ($objSession->Login($_POST["login_user"], md5($_POST["login_password"])) == FALSE)
{
$FormError["login"]["login_password"] = language("lu_incorrect_login");
}
else
{
if(!headers_sent() && ($_POST["usercookie"]==1 || $_GET["usercookie"]==1))
{
$c = $_POST["login_user"]."|";
$pw = $_POST["login_password"];
if(strlen($pw)<31)
$pw = md5($pw);
$c .= $pw;
setcookie("login",$c,time()+2592000);
}
$dest = $_POST["dest"];
if(!strlen($dest))
$dest = $_GET["dest"];
if(!strlen($dest))
$dest = $_POST["DestTemplate"];
if(!strlen($dest))
$dest = $_GET["DestTemplate"];
if(strlen($dest))
{
$var_list["t"] = $dest;
//header("Location: ../../index.php?env=" . BuildEnv());
}
// echo "DEST: ".$t; die();
}
}
}
}
break;
case "m_forgotpw":
$MissingCount = SetMissingDataErrors("forgotpw");
if($MissingCount==0)
{
$username = $_POST["username"];
$email = $_POST["email"];
$found = FALSE;
if(strlen($username))
{
$u = $objUsers->GetItemByField("Login",$username);
if(is_object($u))
$found = ($u->Get("Login")==$username && $u->Get("Status")==1) && strlen($u->Get("Password"));
}
else if(strlen($email))
{
$u = $objUsers->GetItemByField("Email",$email);
if(is_object($u))
$found = ($u->Get("Email")==$email && $u->Get("Status")==1) && strlen($u->Get("Password"));
}
if($found)
{
$newpw = makepassword();
$u->Set("Password",$newpw);
$u->Update();
$u->SendUserEventMail("USER.PSWD",$u->Get("PortalUserId"));
$u->SendAdminEventMail("USER.PSWD");
$u->Set("Password",md5($newpw));
$u->Update();
$u->Clean();
}
else
{
if(!strlen($username) && !strlen($email))
{
$FormError["forgotpw"]["username"] = language("lu_ferror_forgotpw_nodata");
$MissingCount++;
}
else
{
if(strlen($username))
$FormError["forgotpw"]["username"] = language("lu_ferror_unknown_username");
if(strlen($email))
$FormError["forgotpw"]["email"] = language("lu_ferror_unknown_email");
$MissingCount++;
}
if(strlen($_GET["error"]))
$var_list["t"] = $_GET["error"];
}
}
else
if(strlen($_GET["error"]))
$var_list["t"] = $_GET["error"];
break;
case "m_subscribe_confirm":
$t = "";
$SubscribeAddress = $_POST["subscribe_email"];
if(!ValidEmail($SubscribeAddress)&& strlen($SubscribeAddress))
{
$t = $_GET["Error"];
$SubscribeError = "lu_invalid_emailaddress";
}
else
{
if((int)$objConfig->Get("User_SubscriberGroup")>0)
{
$g = $objGroups->GetItem($objConfig->Get("User_SubscriberGroup"));
if(is_object($g))
{
$email = $_POST["subscribe_email"];
if(strlen($email)>0)
{
$u = $objUsers->GetItemByField("Email",$email);
if(is_object($u))
{
if($u->CheckBanned())
{
$t = $_GET["Error"];
$SubscribeError ="lu_subscribe_banned";
}
else
{
if($u->IsInGroup($g->Get("GroupId")))
{
$t = $_GET["Unsubscribe"];
}
else
$t = $_GET["Subscribe"];
}
}
else
$t = $_GET["Subscribe"];
}
else
{
$t = $_GET["Error"];
$SubscribeError ="lu_subscribe_no_address";
}
}
else
{
$t = $_GET["Error"];
$SubscribeError ="lu_subscribe_unknown_error";
}
}
}
if(strlen($t))
{
$var_list["t"] = $t;
$var_list_update["t"] = $t;
}
break;
case "m_subscribe":
//phpinfo(INFO_VARIABLES);
if($_POST["buttons"][0]==language("lu_button_yes"))
{
$SubscribeAddress = $_POST["subscribe_email"];
if(strlen($SubscribeAddress)>0)
{
if(ValidEmail($SubscribeAddress))
{
$GroupId = (int)$objConfig->Get("User_SubscriberGroup");
if ($GroupId)
{
$g = $objGroups->GetItem($GroupId);
$u = $objUsers->GetItemByField("Email",$SubscribeAddress);
if(is_object($u))
{
if(strtolower($u->Get("Email"))==strtolower($SubscribeAddress))
{
$bExists = TRUE;
}
else
$bExists = FALSE;
}
if($bExists)
{
$g->AddUser($u->Get("PortalUserId"));
}
else
{
$u = new clsPortalUser(NULL);
$u->Set("Email",$SubscribeAddress);
$u->Set("ip",$_SERVER['REMOTE_ADDR']);
$u->Set("CreatedOn",date("U"));
$u->Set("Status",1);
if(!$u->CheckBanned())
{
$u->Create();
$g->AddUser($u->Get("PortalUserId"),1);
}
else
$SubscribeResult = "lu_subscribe_banned";
}
$SubscribeResult = "lu_subscribe_success";
$u->SendUserEventMail("USER.SUBSCRIBE",$u->Get("PortalUserId"));
$u->SendAdminEventMail("USER.SUBSCRIBE");
if(strlen($_GET["Subscribe"])>0)
$var_list["t"] = $_GET["Subscribe"];
}
}
else
{
$SubscribeResult = "lu_invalid_emailaddress";
}
}
else
$SubscribeResult = "lu_subscribe_missing_address";
}
if(!strlen($SubscribeResult))
$SubscribeResult = "lu_subscribe_success";
break;
case "m_unsubscribe":
if($_POST["buttons"][0]==language("lu_button_yes"))
{
$MissingCount = SetMissingDataErrors("m_unsubscribe");
if($MissingCount==0)
{
$email = $_POST["subscribe_email"];
$u = $objUsers->GetItemByField("Email",$email);
if(is_object($u))
{
if(strtolower($u->Get("Email"))==strtolower($email))
{
$GroupId = (int)$objConfig->Get("User_SubscriberGroup");
if($u->PrimaryGroup()==$GroupId)
{
$u_gorup_list = $u->GetGroupList();
if (count($u_gorup_list) > 1) {
$u->RemoveFromGroup($GroupId);
}
else {
$u->RemoveFromAllGroups();
$u->Delete();
}
}
else
{
$u->RemoveFromGroup($GroupId);
}
}
}
if(strlen($_GET["Subscribe"])>0)
$var_list["t"] = $_GET["Subscribe"];
}
}
break;
case "m_logout":
// $objSession->Logout();
//unset($objSession);
//$objSession = new clsUserSession();
// $var_list_update["t"] = "index";
// setcookie("login","",time()-3600);
break;
case "m_register":
$MissingCount = SetMissingDataErrors("m_register");
if(!$objConfig->Get("User_Password_Auto"))
{
if(($_POST["password"] != $_POST["passwordverify"]) || !strlen($_POST["passwordverify"]))
{
$MissingCount++;
$FormError["m_register"]["passwordverify"] = language("lu_ferror_pswd_mismatch");
}
}
if(strlen($_POST["password"])>30)
{
// echo "VAR: ".$_POST["password"]; die();
$MissingCount++;
$FormError["m_register"]["password"] = language("lu_ferror_pswd_toolong");
}
if (strlen($_POST['password']) < $objConfig->Get("Min_Password"))
{
$MissingCount++;
$FormError["m_register"]["password"] = language("lu_ferror_pswd_tooshort");
}
$u = $objUsers->GetItemByField("Login",$_POST["username"]);
if(is_object($u))
{
if($u->Get("Login")==$_POST["username"])
{
$MissingCount++;
$FormError["m_register"]["username"] = language("lu_user_exists");
}
}
if (strlen($_POST['username']) < $objConfig->Get("Min_UserName"))
{
$MissingCount++;
$FormError["m_register"]["username"] = language("lu_ferror_username_tooshort");
}
if(!$MissingCount)
{
$CreatedOn = adodb_date("U");
$GroupId = $objConfig->Get("User_NewGroup");
$Status=0;
/* determine the status of new users */
switch ($objConfig->Get("User_Allow_New"))
{
case "1":
$Status=1;
break;
case "3":
$Status=2;
break;
}
/* set Destination template */
$var_list["t"] = strlen($_GET["dest"])? $_GET["dest"] : "index";
if($Status>0)
{
if($objConfig->Get("User_Password_Auto"))
{
$password = makepassword();
}
else
$password = $_POST["password"];
$_POST["dob"] = $_POST["dob_month"]."/".$_POST["dob_day"]."/".$_POST["dob_year"];
$dob = DateTimestamp($_POST["dob"],GetDateFormat());
$ip = $_SERVER['REMOTE_ADDR'];
$u = &$objUsers->Add_User($_POST["username"], md5($password), $_POST["email"], $CreatedOn, $_POST["firstname"], $_POST["lastname"], $Status, $_POST["phone"], $_POST["street"], $_POST["city"], $_POST["state"], $_POST["zip"], $_POST["country"], $dob, $ip, TRUE);
if(!is_object($u))
{
$RuleId=$u;
$r = $objBanList->GetItem($RuleId);
$err = $r->Get("ErrorTag");
if(strlen($err))
{
$FormError["m_register"][$r->Get("ItemField")] = language($err);
$MissingCount++;
}
}
else
{
$u->Set("Password",$password);
$u->Clean();
if($GroupId>0)
{
$g = $objGroups->GetItem($GroupId);
$g->AddUser($u->Get("PortalUserId"),1);
}
$custom = $_POST["custom"];
if(is_array($custom))
{
for($x=0;$x<count($custom);$x++)
{
$u->SetCustomField($custom[$x],$_POST[$custom[$x]]);
}
$u->SaveCustomFields();
}
if($Status==1)
{
if($objConfig->Get("User_Password_Auto"))
{
$u->SendUserEventMail("USER.VALIDATE",$u->Get("PortalUserId"));
$u->SendAdminEventMail("USER.VALIDATE");
}
else
{
$doLoginNow = true;
$u->SendUserEventMail("USER.ADD",$u->Get("PortalUserId"));
$u->SendAdminEventMail("USER.ADD");
}
}
else
{
$u->SendUserEventMail("USER.ADD.PENDING",$u->Get("PortalUserId"));
$u->SendAdminEventMail("USER.ADD.PENDING");
}
if ($doLoginNow)
$objSession->Login($_POST["username"], md5($password));
}
}
}
break;
case "m_add_friend":
$id = $_GET["UserId"];
$userid = $objSession->Get("PortalUserId");
if($id!=$userid)
{
$u =& $objUsers->GetItem($id);
$u->AddFavorite($userid);
}
break;
case "m_del_friend":
$id = $_GET["UserId"];
$userid = $objSession->Get("PortalUserId");
$u =& $objUsers->GetItem($id);
$u->DeleteFavorite();
break;
case "m_acctinfo":
// phpinfo(INFO_VARIABLES);
$MissingCount = SetMissingDataErrors("m_acctinfo");
$UserId = $_GET["UserId"];
if($UserId != $objSession->Get("PortalUserId"))
{
$MissingCount++;
$FormError["m_acctinfo"]["UserId"] = language("lu_ferror_m_profile_userid");
}
if(strlen($_POST["password"])>0)
{
if(($_POST["password"] != $_POST["passwordverify"]) || !strlen($_POST["passwordverify"]))
{
$MissingCount++;
$FormError["m_acctinfo"]["passwordverify"] = language("lu_ferror_pswd_mismatch");
}
if(strlen($_POST["password"])>30)
{
// echo "VAR: ".$_POST["password"]; die();
$MissingCount++;
$FormError["m_acctinfo"]["password"] = language("lu_ferror_pswd_toolong");
}
if (strlen($_POST['password']) < $objConfig->Get("Min_Password"))
{
$MissingCount++;
$FormError["m_acctinfo"]["password"] = language("lu_ferror_pswd_tooshort");
}
}
if(!$MissingCount)
{
/* save profile */
$u =& $objUsers->GetItem($UserId);
$status = $u->Get("Status");
$_POST["dob"] = $_POST["dob_month"]."/".$_POST["dob_day"]."/".$_POST["dob_year"];
$dob = DateTimestamp($_POST["dob"], GetDateFormat());
if(strlen($_POST["password"])>0)
{
$password = md5($_POST["password"]);
}
else
$password = "";
$objUsers->Edit_User($UserId, $_POST["username"], $password, $_POST["email"], 0,
$_POST["firstname"], $_POST["lastname"], $status, $_POST["phone"],
$_POST["street"], $_POST["city"], $_POST["state"], $_POST["zip"],
$_POST["country"], $dob);
}
break;
case "m_profile":
$userid = $objSession->Get("PortalUserId");
if($userid>0)
{
$u = $objUsers->GetItem($userid);
foreach($_POST as $field=>$value)
{
if(substr($field,0,3)=="pp_")
{
$objSession->SetPersistantVariable($field,$value);
}
}
}
break;
case "m_set_lang":
$lang = $_GET["lang"];
$LangId = 0;
if(strlen($lang))
{
$l = $objLanguages->GetItemByField("PackName",$lang);
if(is_object($l))
{
$LangId = $l->Get("LanguageId");
}
}
if($LangId)
{
if($objSession->Get("PortalUserId")>0)
{
$objSession->SetPersistantVariable("Language",$LangId);
}
$objSession->Set("Language",$LangId);
$objSession->Update();
$m_var_list_update["lang"] = $LangId;
$m_var_list["lang"] = $LangId;
}
break;
case "m_set_theme":
$id = $_POST["ThemeId"];
if(!is_numeric($id))
$id = $_GET["ThemeId"];
if($id)
{
$objSession->SetThemeName($id);
$m_var_list["t"] = "index";
$m_var_list_update["theme"] = $id;
$m_var_list["theme"] = $id;
unset($CurrentTheme);
}
break;
case "m_sort_cats":
$objSession->SetVariable("Category_Sortfield",$_POST["cat_field_sort"]);
$objSession->SetVariable("Category_Sortorder",$_POST["cat_sort_order"]);
break;
case "m_add_cat_confirm":
// phpinfo(INFO_VARIABLES);
$perm = 0;
$CategoryId=$objCatList->CurrentCategoryID();
if ($objSession->HasCatPermission("CATEGORY.ADD.PENDING"))
$perm = 2;
if ($objSession->HasCatPermission("CATEGORY.ADD"))
$perm = 1;
if ($perm == 0)
{
$MissingCount++;
$FormError["m_addcat"]["name"] = language("lu_ferror_no_access");
}
else
{
$MissingCount = SetMissingDataErrors("m_addcat");
if(is_array($_FILES))
{
foreach($_FILES as $field => $file)
{
$allowed = TRUE;
if(strlen($_POST["imagetypes"][$field]))
{
$types = explode(",",strtolower($_POST["imagetypes"][$field]));
if(is_array($types))
{
if(count($types)>0)
{
$path_parts = pathinfo($file["name"]);
$ext = $path_parts["extension"];
$allowed = in_array($ext,$types);
if(!$allowed)
{
$MissingCount++;
$FormError["m_addcat"][$field] = language("lu_ferror_wrongtype");
}
}
}
}
$maxsize = (int)$_POST["maxsize"][$field];
if($maxsize>0 && $allowed && $file["size"]>$maxsize)
{
$allowed = FALSE;
$MissingCount++;
$FormError["m_addcat"][$field] = language("lu_ferror_toolarge");
}
}
}
if($MissingCount==0)
{
$CreatedOn = date("U");
$name = $_POST["name"];
$desc = $_POST["description"];
$metadesc = $_POST["meta_description"];
$keywords = $_POST["meta_keywords"];
$parent = $objCatList->CurrentCategoryID();
$cat =& $objCatList->Add($parent, $name, inp_escape($desc,0), $CreatedOn,
0, $perm, 2, 2, 2, 0, $keywords,$metadesc);
$cat->UpdateCachedPath();
$cat->Update();
$cat->UpdateACL();
$objCatList->UpdateMissingCacheData();
if(strlen($_GET["Confirm"]))
{
$var_list["t"] = $_GET["Confirm"];
}
else
$var_list["t"] = $_GET["DestTemplate"];
}
}
break;
case "m_front_review_add":
if($objSession->InSpamControl($_POST["ItemId"]))
{
$StatusMessage["review"] = language("la_Review_AlreadyReviewed");
}
else
{
$objReviews = new clsItemReviewList();
$Status = $objConfig->Get("Review_DefaultStatus");
$CreatedOn = adodb_date("U");
$html = (int)$objConfig->Get("Review_Html");
$ReviewText = inp_escape($_POST["review_text"],$html);
$r = $objReviews->AddReview($CreatedOn,$ReviewText,$Status, $IPAddress,
0, $_POST["ItemId"], $_POST["ItemType"], $objSession->Get("PortalUserId"));
foreach($ItemTypes as $type=>$id)
{
if($id==$_POST["ItemType"])
{
$ValName = $type."_ReviewDelay_Value";
$IntName = $type."_ReviewDelay_Interval";
break;
}
}
if(strlen($ValName) && strlen($IntName))
{
$exp_secs = $objConfig->Get($ValName) * $objConfig->Get($IntName);
$objSession->AddToSpamControl($_POST["ItemId"],$exp_secs);
if(is_object($r))
{
if($Status)
{
$StatusMessage["review"] = language("la_Review_Added");
}
else
$StatusMessage["review"] = language("la_Review_Pending");
}
else
$StatusMessage["review"] = language("la_Review_Error");
}
else
$StatusMessage["error"] = language("la_ConfigError_Review");
}
break;
case "m_suggest_email":
$cutoff = time()+(int)$objConfig->Get("Suggest_MinInterval");
$email = $_POST["suggest_email"];
if (strlen($email))
{
if(ValidEmail($email))
{
$sql = "SELECT * FROM ".GetTablePrefix()."SuggestMail WHERE email='".inp_escape($email,0)."' and sent<".$cutoff;
$adodbConnection = GetADODBConnection();
$rs = $adodbConnection->Execute($sql);
$rs = false;
if($rs && !$rs->EOF)
{
if(strlen($_GET["Error"])>0)
$var_list["t"] = $_GET["Error"];
$suggest_result = "$email ".language("lu_already_suggested ")." ".LangDate($rs->fields["sent"]);
}
else
{
$Event =& $objMessageList->GetEmailEventObject("USER.SUGGEST");
if(is_object($Event))
{
if($Event->Get("Enabled")=="1")
{
$Event->Item = $this;
$Event->SendToAddress($email);
$sql = "INSERT INTO ".GetTablePrefix()."SuggestMail (email,sent) VALUES ('".inp_escape($email,0)."','".time()."')";
$rs = $adodbConnection->Execute($sql);
$suggest_result=language("lu_suggest_success")." ".$email;
}
}
$e =& $objMessageList->GetEmailEventObject("USER.SUGGEST",1);
if($e->Get("Enabled")==1)
$e->SendAdmin();
if(strlen($_GET["Confirm"])>0)
$var_list["t"] = $_GET["Confirm"];
}
}
else
{
if(strlen($_GET["Error"])>0)
$var_list["t"] = $_GET["Error"];
$suggest_result=language("lu_invalid_emailaddress");
}
}
else
{
if(strlen($_GET["Error"])>0)
$var_list["t"] = $_GET["Error"];
$suggest_result=language("lu_suggest_no_address");
}
break;
case "m_simple_search":
$keywords = $_POST["keywords"];
$type = $objItemTypes->GetTypeByName("Category");
$objSearch = new clsSearchResults("Category","clsCategory");
if(strlen($keywords))
{
$objSearchList = new clsSearchLogList();
$objSearchList->UpdateKeyword($keywords,0);
$objSearch->SetKeywords($keywords);
$objSearch->AddSimpleFields();
if(is_numeric($objConfig->Get("SearchRel_Pop_category")))
$objSearch->PctPop = ($objConfig->Get("SearchRel_Pop_category")/100);
if(is_numeric($objConfig->Get("SearchRel_Keyword_category")))
$objSearch->PctRelevance = ($objConfig->Get("SearchRel_Keyword_category")/100);
if(is_numeric($objConfig->Get("SearchRel_Rating_article")))
$objSearch->PctRating = ($objConfig->Get("SearchRel_Rating_category")/100);
//echo "Searching On $keywords<br>\n";
$objSearch->PerformSearch(1,$SortOrder,TRUE);
$SearchPerformed = TRUE;
//$objSearch->SetRelevence($type->Get("ItemType"), "CategoryId");
//echo "Finished Setting Category Relevence<br>\n";
}
else
{
if(strlen($_GET["Error"])>0)
$var_list["t"] = $_GET["Error"];
$MissingCount = SetMissingDataErrors("m_simplesearch");
$MissingCount++;
$FormError["m_simplesearch"]["keywords"] = language("lu_no_keyword");
}
break;
case "m_adv_search":
if( !is_object($objSearchConfig) ) $objSearchConfig = new clsSearchConfigList();
switch($_GET["type"])
{
case 1: /* category */
//echo "Searching for categories<br>";
$objAdvSearch = new clsAdvancedSearchResults("Category","clsCategory");
foreach($objSearchConfig->Items as $field)
{
$fld = $field->Get("FieldName");
$Verb = $_POST["verb"][$field->Get("FieldName")];
if(!strlen($Verb) && $field->Get("FieldType")=="boolean")
{
if($_POST["value"][$field->Get("FieldName")]!=-1)
{
$Value = $_POST["value"][$field->Get("FieldName")];
$Verb = "is";
}
}
else
{
$Value = $_POST["value"][$field->Get("FieldName")];
}
switch( $_POST["andor"][$field->Get("FieldName")])
{
case 1:
$Conjuction = "AND";
break;
case 2:
$Conjuction = "OR";
break;
default:
$Conjuction = "";
break;
}
if(strlen($Verb)>0 && $Verb!="any")
{
//echo "Adding CAT SearchField: [".$field->Get("TableName")."]; [".$field->Get("FieldName")."]; [$Verb]; [$Value]; [$Conjuction]<br>";
$objAdvSearch->AddAdvancedField($field->Get("TableName"),$field->Get("FieldName"),$Verb,$Value,$Conjuction);
}
}
$objAdvSearch->PerformSearch(1,NULL,TRUE);
break;
}
break;
case "m_id":
echo $Action.":".$DownloadId;
die();
break;
case "m_simple_subsearch":
$keywords = $_POST["keywords"];
$type = $objItemTypes->GetTypeByName("Category");
$objSearch = new clsSearchResults("Category","clsCategory");
if(strlen($keywords))
{
$objSearchList = new clsSearchLogList();
$objSearchList->UpdateKeyword($keywords,0);
$objSearch->SetKeywords($keywords);
$objSearch->AddSimpleFields();
if(is_numeric($objConfig->Get("SearchRel_Pop_category")))
$objSearch->PctPop = ($objConfig->Get("SearchRel_Pop_category")/100);
if(is_numeric($objConfig->Get("SearchRel_Keyword_category")))
$objSearch->PctRelevance = ($objConfig->Get("SearchRel_Keyword_category")/100);
if(is_numeric($objConfig->Get("SearchRel_Rating_article")))
$objSearch->PctRating = ($objConfig->Get("SearchRel_Rating_category")/100);
$SearchResultIdList = $objSearch->Result_IdList();
if(count($SearchResultIdList)>0)
{
$objSearch->PerformSearch(1,$SortOrder,TRUE,$SearchResultIdList);
//$objSearch->SetRelevence($type->Get("ItemType"), "CategoryId");
}
$SearchPerformed = TRUE;
}
else {
$MissingCount = SetMissingDataErrors("m_simplesearch");
$MissingCount++;
$FormError["m_simplesearch"]["keywords"] = language("lu_no_keyword");
}
break;
}
?>
Property changes on: trunk/kernel/frontaction.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.5
\ No newline at end of property
+1.6
\ No newline at end of property
Index: trunk/themes/default/incs/inportal_main.css
===================================================================
--- trunk/themes/default/incs/inportal_main.css (revision 231)
+++ trunk/themes/default/incs/inportal_main.css (revision 232)
@@ -1,776 +1,788 @@
/*--- THE BASICS ---*/
body {
color : #000000;
background : #ffffff;
font-family : arial, helvetica, sans-serif;
font-size : 12px;
margin : 0;
padding: 0;
}
ul,ol,li {
color : #333333;
font-family : arial, helvetica, sans-serif;
font-size : 12px;
}
form {
margin : 0;
}
img, a img {
border: 0;
}
.img-intextleft {
margin-left: 5px;
margin-bottom: 5px;
}
a {
color : #1f569a;
text-decoration : underline;
}
a:link {
color : #1f569a;
text-decoration : underline;
}
a:hover {
color : #619ae0;
text-decoration : underline;
}
p {
font-family : arial, helvetica, sans-serif;
font-size : 11px;
font-weight : normal;
color: #000000;
line-height: 14px;
margin-top: 2px;
margin-bottom: 5px;
}
td {
font-family : arial, verdana, sans-serif;
font-size : 12px;
}
h1 {
font-family : verdana, helvetica, sans-serif;
font-size : 20px;
font-weight : bold;
color: #1f569a;
margin: 10px 0px;
line-height: 22px
}
h1 span {
font-size : 14px;
color: #999999;
}
h2, h2 span {
font-family : verdana, helvetica, sans-serif;
font-size : 20px;
font-weight : normal;
color: #009ff0;
margin : 0;
}
h2 span {
font-size : 14px;
color: #999999;
}
h3, h3 span {
font-family : verdana, helvetica, sans-serif;
font-size : 16px;
font-weight : normal;
color: #009ff0;
margin: 0;
}
h3 span {
font-size : 12px;
font-weight : normal;
color: #999999;
}
h4, h4 span {
font-family : verdana, helvetica, sans-serif;
font-size : 12px;
font-weight : normal;
color: #009ff0;
margin: 0;
}
h4 span {
font-size : 10px;
font-weight : normal;
color: #999999;
}
.tip {
cursor : help;
border-bottom : 1px dashed #999999;
}
.table-collapse {
border-collapse: collapse;
}
.input {
font-family : arial, verdana, sans-serif;
font-size : 11px;
color: #000000;
background-color: #ffffff;
border: 1px inset #94c0de;
}
.textarea {
font-family : arial, verdana, sans-serif;
font-size : 11px;
color: #000000;
background-color: #ffffff;
border: 1px inset #94c0de;
}
.button {
font-family: arial, helvetica, sans-serif;
font-size: 10px;
font-weight: normal;
text-decoration: none;
color: #000000;
padding: 0 2 0 2;
border-style: outset;
border-color: #ffffff #999999 #999999 #ffffff;
border-width: 1px;
width:auto;
cursor: hand;
background: #fcde79 url("../img/bgr_button.gif") repeat-x scroll right top;
margin: 1px;
}
select {
font-size: 11px;
}
/*--- HEADINGS ---*/
.welcome {
font-family : verdana, helvetica, sans-serif;
color : #009ff0;
font-size : 20px;
font-weight : bold;
text-decoration : none;
}
.page-title {
margin-bottom: 10px;
color : #1f569a;
}
.item, .item a, item a:hover,
.item-small, .item-small a, .item-small a:hover,
.item-spec, .item-spec a, .item-spec a:hover,
.item-my, .item-my a, item-my a:hover, .item-my-stat
.quick-title, .quick-title a, .quick-title a:hover,
.reviewer {
font-family : verdana, helvetica, sans-serif;
color : #1f569a;
font-size : 12px;
font-weight : bold;
text-decoration : none;
}
.item a {
text-decoration : underline;
}
.item a:hover {
color : #619ae0;
text-decoration : underline;
}
.item-spec {
font-size : 11px;
}
.item-spec a {
color: 3333ff;
font-size : 11px;
text-decoration : underline;
}
.item-spec a:hover {
color : #619ae0;
font-size : 11px;
text-decoration : underline;
}
.item-small {
font-size : 11px;
}
.item-small a {
font-size : 11px;
text-decoration : underline;
}
.item-small a:hover {
color : #619ae0;
font-size : 11px;
text-decoration : underline;
}
.item-my, .item-my a, .item-my a:hover {
font-size : 11px;
}
.item-my a:hover {
text-decoration : none;
}
.item-my-stat {
font-size : 10px;
font-weight : normal;
}
.quick-title {
color : #009FF0;
font-size : 11px;
font-weight : bold;
text-decoration : none;
}
.quick-title a {
color : #009FF0;
font-size : 11px;
text-decoration : underline;
}
.quick-title a:hover {
color : #1f569a;
font-size : 11px;
text-decoration : underline;
}
.reviewer {
color : #000000;
font-size : 12px;
font-weight : bold;
text-decoration : none;
}
.posts, a.posts, a:hover.posts, .posts a, .posts a:hover {
font: 11px verdana, helvetica, sans-serif;
color : #1f569a;
text-decoration : none;
}
a.posts {
text-decoration : none;
}
a:hover.posts {
color : #619ae0;
text-decoration : underline;
}
.posts a {
text-decoration : none;
}
.posts a:hover {
color : #619ae0;
text-decoration : underline;
}
.post-altern {
background: #E6F0F9
}
.new, .pop, .hot, .top {
font-family : arial, helvetica, sans-serif;
color : #00c600;
font-size : 9px;
vertical-align: super;
font-weight : normal;
text-decoration : none;
text-transform: uppercase;
}
.pop {
color : #00cece;
}
.hot {
color : #d92100;
}
.top {
color : #00cece;
}
.poster {
font: 10px verdana, sans-serif;
}
.forum-data, .forum-time {
font: 10px verdana, helvetica, sans-serif;
text-decoration : none;
}
.forum-time {
color : #666;
}
.forum-name td {
font: 11px verdana, sans-serif;
border-bottom: 1px dashed #ccc
}
.post-text, .post-text td {
font: 10px verdana, sans-serif;
}
.forum {
font: 14px arial, sans-serif;
text-decoration: none
}
.login-box-top, .friend-box-top, .login-name {
font-family : verdana, helvetica, sans-serif;
color : #ffffff;
font-size : 12px;
font-weight : bold;
text-decoration : none;
background-color: #64a1df;
padding: 5px;
padding-left: 7px;
}
.login-name {
font-size : 11px;
font-weight : normal;
text-decoration : none;
background-color: #64a1df;
padding: 1px;
}
.login-name a {
text-decoration: none;
color: #fff
}
.login-name a:hover {
color: #1f569a;
text-decoration: none
}
.friend-box-top {
color : #1f569a;
background-color: #94c0de;
border-top: 1px solid #64a1df;
}
.act-box-top, .act-title-it {
padding-left: 7px;
font-family : arial, helvetica, sans-serif;
color : #ffffff;
font-size : 20px;
font-weight : bold;
text-decoration : none;
letter-spacing: 0,5em;
background-color: #1F569A;
}
.act-sep {
color : #ffffff;
font-size : 16px;
font-weight : normal;
}
.act-title-it {
padding-left: 0px;
font-weight : normal;
font-style: oblique;
}
.bgr-login, .bgr-friend-box, .bgr-quick-links-top, .bgr-quick-links, .bgr-quick-links-bottom, .bgr-act {
padding: 7px;
background: #e3edf6 url("../img/bgr_login.jpg") repeat-y scroll left top;
border-bottom: 1px solid #64a1df;
}
.bgr-loggedin {
padding: 7px;
background: #e3edf6 url("../img/bgr_loggedin.jpg") no-repeat scroll right top;
}
.bgr-friend-box {
background: #ffffff url("../img/bgr_friendbox.jpg") repeat-y scroll left top;
border-bottom: 1px solid #64a1df;
}
.bgr-quick-links-top {
background: #ffffff url("../img/bgr_quick_links_top.jpg") no-repeat scroll right top;
border-bottom: none;
}
.bgr-quick-links {
background: #ffffff url("../img/bgr_quick_links.jpg") no-repeat scroll right top;
border-bottom: none;
}
.bgr-quick-links-bottom {
background: none;
}
.bgr-act {
padding-top: 0px;
background: #ffffff url("../img/bgr_actionbox.jpg") repeat-y scroll right top;
border-top: none;
border-bottom: none;
}
.bgr-act-bottom {
background: #ffffff url("../img/bgr_actionbox.jpg") repeat-y scroll right top;
border-bottom: 1px solid #64a1df;
padding: 0px;
}
.box {
border: 1px solid #64a1df;
}
.open-box {
border: 1px solid #64a1df;
border-top: none;
}
/*--- NAVIGATION STYLES ---*/
.head-nav, .head-nav td, .head-nav td a, head-nav td a:hover {
font-family : verdana, helvetica, sans-serif;
color : #ffffff;
font-size : 10px;
font-weight : bold;
text-decoration : none;
}
.head-nav td a {
color : #94c0de;
}
.head-highlight a, .head-nav td a:hover {
color : #ffffff;
text-decoration : none;
}
.head-highlight {
color : #ffffff;
text-decoration : none;
}
.post-action, .post-action a {
font-family : arial, helvetica, sans-serif;
color : #ffffff;
font-size : 10px;
font-weight : normal;
text-decoration : none;
}
.post-action a:hover {
color : #ffffff;
text-decoration : underline;
}
.post-action-alt,.post-action-alt, .post-action-alt a, .post-action-alt a {
font-family : arial, helvetica, sans-serif;
color : #ffffff;
font-size : 10px;
font-weight : normal;
text-decoration : none;
}
.post-action-alt a:hover,.post-action-alt-last a:hover {
color : #ffffff;
text-decoration : underline;
}
.path, .path a, .zoom {
font-family : arial, helvetica, sans-serif;
color : #ffffff;
font-size : 10px;
font-weight : normal;
text-decoration : none;
}
.path a {
text-decoration : underline;
color : #ffff00;
}
.path a:hover {
color : #ffffff;
text-decoration : underline;
}
.zoom, .zoom a, .zoom a:hover {
text-decoration : none;
}
.quick-links, .quick-links a, .quick-links a:hover, .links-action, .links-action a, .links-action a:hover,
.tips, .tips a, .tips a:hover,
.option-txt {
font-family : verdana, helvetica, sans-serif;
color : #1f569a;
font-size : 10px;
font-weight : normal;
text-decoration : none;
}
.quick-links a {
color : #1f569a;
text-decoration : underline;
}
.quick-links a:hover {
color : #619ae0;
text-decoration : underline;
}
.links-action a {
color : #999999;
text-decoration : none;
}
.links-action a:hover {
color : #1f569a;
text-decoration : none;
}
.tips-i {
font-family : verdana, helvetica, sans-serif;
font-size : 11px;
font-weight : normal;
font-style: oblique;
}
.tips, .tips-i {
color : #666666;
}
.tips a, .tips-i a {
text-decoration : underline;
color : #666666;
}
.tips a:hover, .tips-i a:hover {
text-decoration : underline;
color : #999999;
}
.option-txt {
color : #2c73cb;
}
.option-txt a {
text-decoration : underline;
color : #2c73cb;
}
.option-txt a:hover {
color : #619ae0;
text-decoration : underline;
}
.box-links {
font-family : Tahoma, helvetica, sans-serif;
color : #004080;
font-size : 11px;
font-weight : normal;
text-decoration : none;
}
.box-links a {
color : #004080;
text-decoration : none;
}
/*--- ---*/
.pagination, .pagination a, .pagination a:hover {
font: bold 11px verdana, sans-serif;
}
.pagination a {
color: #619ae0;
}
.pagination a:hover {
color: #1f569a;
background-color: #deebf8;
}
.updated {
font-family : arial, helvetica, sans-serif;
color : #778055;
font-size : 10px;
font-weight : normal;
text-decoration : none;
letter-spacing: 1px;
}
.statistics, .statistics span, .statistics a, .statistics a:hover, .statistics td a, .statistics td a:hover {
font-family : arial, helvetica, sans-serif;
color : #64a1df;
font-size : 10px;
font-weight : normal;
text-decoration : none;
}
.statistics span {
color : #999999;
font-size : 10px;
}
.statistics a {
color : #009ff0;
}
.statistics a:hover {
color : #94c0de;
}
.statistics td a {
color : #009ff0;
}
.statistics td a:hover {
color : #94c0de;
}
.comments, .field-title {
font-family : arial, helvetica, sans-serif;
color : #999999;
font-size : 10px;
font-weight : normal;
text-decoration : none;
}
.field-title {
color : #333333;
}
.welcome-text {
font-family : verdana, helvetica, sans-serif;
color : #666666;
font-size : 11px;
font-weight : normal;
text-decoration : none;
line-height: 14px;
}
.field-name {
font-family : verdana, helvetica, sans-serif;
color : #666666;
font-size : 11px;
font-weight : normal;
text-decoration : none;
background: #eeeeee none;
padding: 3px 10px 3px 10px;
white-space: nowrap;
}
.field-content, .field-content-top, .field-content-input {
padding: 4px 0px 4px 5px;
border-top: 1px dotted #eaeaea;
}
.field-content-input, .field-content-input-top {
padding: 1px 0px 1px 5px;
}
.field-content-top {
border-top: none;
}
.field-content-input-top {
border-top: none;
}
.copyright, .norate {
font-family : verdana, helvetica, sans-serif;
font-size : 9px;
color: #deebf8;
}
.norate {
color: #ff8000;
font-weight: normal;
}
.error {
color: #ff0000;
}
/*--- BACKGROUNDS ---*/
.bgr-categories {
background: #ffffff url("../img/bgr_categories.jpg") no-repeat scroll right top;
}
.bgr-myaccount {
background: #ffffff url("../img/bgr_empty.jpg") no-repeat scroll right top;
}
.bgr-news {
background: #ffffff url("../img/bgr_news.jpg") no-repeat scroll right top;
}
.bgr-links {
background: #ffffff url("../img/bgr_links.jpg") no-repeat scroll right top;
}
.bgr-forum {
background: #ffffff url("../img/bgr_forum.jpg") no-repeat scroll right top;
}
.bgr-logoside {
background: #ffffff url("../img/bgr_top_short.jpg") repeat-y scroll right top;
}
.bgr-logounder {
background: #1866AE url("../img/bgr_headmiddle.jpg") repeat-y scroll right top;
}
.bgr-headnav {
background: #1866AE url("../img/bgr_headnav.jpg") repeat-y scroll left top;
}
.bgr-topsquares {
background: #ffffff url("../img/bgr_topsquares.jpg") repeat-y scroll right top;
}
.bgr-path {
background: #61b0ec url("../img/bgr_path.jpg") repeat-y scroll left top;
}
.bott-line {
border-bottom: 1px solid #1f569a;
}
.dott-line {
border-bottom: 1px dotted #94c0de;
}
.bgr-updatefill {
background-color: #deebf8;
}
.bgr-dark {
background-color: #1f569a;
}
.bgr-updatelight {
background-color: #f5f9fd;
}
.bgr-on, .bgr-on td{
background-color: #e7f0fa;
}
.bgr-off, .bgr-off td {
background-color: #eeeeee;
}
.bgr-underactbox {
background: #e0ebf9 url("../img/bgr_underactbox.jpg") repeat-x scroll right top;
}
.bgr-welcome {
background-color: #ecede4;
}
.match {
background-color: #ffff00;
}
/* COLORS in use:
link hover: #619ae0
*/
.lang-box-top {
font-family : verdana, helvetica, sans-serif;
color : #ffffff;
font-size : 12px;
font-weight : bold;
text-decoration : none;
background-color: #1866AE;
padding: 5px;
padding-left: 7px;
}
.bgr-lang {
padding: 7px;
background: #e3edf6 url("../img/bgr_loggedin.jpg") no-repeat scroll right top;
border: 1px solid #64a1df;
}
.bgr-act-top {
background: #fff9dd url("../img/bgr_actbox.gif") no-repeat scroll right top;
border-top: none;
border-bottom: none;
}
.relevance-bar {
border-color: red;
border-width: 1px;
- }
\ No newline at end of file
+ }
+
+/* debug output styles */
+
+.debug_table {
+ border: 1px solid green;
+ border-width: 0 0 1 1;
+}
+
+.debug_table TD {
+ border: 1px solid green;
+ border-width: 1 1 0 0;
+}
\ No newline at end of file
Property changes on: trunk/themes/default/incs/inportal_main.css
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.1
\ No newline at end of property
+1.2
\ No newline at end of property
Index: trunk/admin/include/style.css
===================================================================
--- trunk/admin/include/style.css (revision 231)
+++ trunk/admin/include/style.css (revision 232)
@@ -1,449 +1,448 @@
.CURRENT_PAGE {font-size:12px; background-color: #C4C4C4; font-family: verdana; font-weight:bold; padding-left:1px; padding-right:1px}
.NAV_URL {font-size:12px; color: #1F569A; font-family: verdana; font-weight:bold; }
.NAV_ARROW {font-size:12px; color: #1F569A; font-family: verdana; font-weight:normal; padding-left:3px; padding-right:3px}
.NAV_CURRENT_ITEM {font-size:12px; color:#666666; font-family: verdana; font-weight:normal; font-weight:bold; }
.priority {color: #ff0000; padding-left:1px; padding-right:1px; font-size:11px; }
.validation_error {
FONT-WEIGHT: bold;
FONT-SIZE: 12px;
FONT-FAMILY: verdana, arial;
TEXT-DECORATION: none;
color: red;
}
.checksection {
BORDER-RIGHT: 1px; BORDER-TOP: 1px; LEFT: 0px; VISIBILITY: hidden; BORDER-LEFT: 1px; BORDER-BOTTOM: 1px; POSITION: absolute; TOP: 0px; BACKGROUND-COLOR: #acacac
}
.text {
FONT-WEIGHT: normal; FONT-SIZE: 12px; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.small {
FONT-SIZE: 9px; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
.tab {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: verdana, arial, helvetica; TEXT-DECORATION: none
}
.tab2 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ffffff; FONT-FAMILY: verdana, arial, helvetica; TEXT-DECORATION: none
}
.tab2:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: verdana, arial, helvetica; TEXT-DECORATION: none
}
.tab:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: verdana, arial, helvetica; TEXT-DECORATION: none
}
.tab_border {
BORDER-RIGHT: #000000 0px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 0px solid; BORDER-BOTTOM: #000000 0px solid
}
.table_tab {
FONT-WEIGHT: bold; FONT-SIZE: 20px; COLOR: #ffffff; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #666666; TEXT-DECORATION: none
}
.button {
FONT-WEIGHT: normal; FONT-SIZE: 12px; BACKGROUND: url(../images/button_back.gif) #f9eeae repeat-x; COLOR: black; FONT-FAMILY: arial, verdana; TEXT-DECORATION: none
}
.button1 {
FONT-SIZE: 9px; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #a3d799
}
.button2 {
FONT-SIZE: 9px; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #fe8b7e
}
.button3 {
FONT-SIZE: 9px; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #999999
}
.buttonsmall {
FONT-SIZE: 9px; CURSOR: hand; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #f9eeae
}
.toolbar {
BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 0px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #f0f1eb
}
.actionborder_full {
BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; FONT-SIZE: 10pt; BORDER-LEFT: #999999 1px solid; BORDER-BOTTOM: #999999 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.actiontitle {
FONT-SIZE: 8pt; COLOR: #ffffff; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #999999
}
.action_link {
FONT-SIZE: 10px; COLOR: black; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
.action_link:hover {
FONT-SIZE: 10px; COLOR: #009ff0; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
.pagenav {
BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 0px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #e0e0da
}
.navbar {
FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #006699; FONT-FAMILY: verdana, arial, sans-serif; TEXT-DECORATION: none
}
.navbar:hover {
FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #009ff0; FONT-FAMILY: verdana, arial, sans-serif; TEXT-DECORATION: none
}
.navbar_selected {
FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #ffffff; FONT-FAMILY: verdana, arial, sans-serif; BACKGROUND-COLOR: #006699; TEXT-DECORATION: none
}
.tablenav {
FONT-WEIGHT: bold;
FONT-SIZE: 14px;
COLOR: white;
FONT-FAMILY: verdana, arial;
BACKGROUND-COLOR: #73c4f5;
TEXT-DECORATION: none;
}
.tablenav_link {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.tablenav_link:hover {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #ffcc00; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.selection {
BACKGROUND-COLOR: #c6d6ef
}
.error {
FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #ff0000; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.error2 {
FONT-WEIGHT: bold; FONT-SIZE: 7pt; COLOR: #ff0000; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.disabled_text {
FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #CCCCCC; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.marg {
MARGIN: 5px
}
.table_header_text {
MARGIN-BOTTOM: 2px; MARGIN-LEFT: 5px
}
.table_text {
PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 8px; PADDING-TOP: 8px
}
.divider {
BACKGROUND-COLOR: #999999
}
.divider_tab {
BACKGROUND-COLOR: #999999
}
.admintitle, .admintitle-white {
FONT-WEIGHT: bold; FONT-SIZE: 20px; COLOR: #009ff0; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.admintitle-white {
color: #fff
}
.tabletitle {
FONT-WEIGHT: bold; FONT-SIZE: 17px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #73c4f5; TEXT-DECORATION: none
}
.subsectiontitle {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none; height: 24px
}
.subsectiontitle:hover {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #ffcc00; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
.columntitle {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
.columntitle:hover {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #ffcc00; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
.columntitle_small {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: white; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
.columntitle_small:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ffcc00; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
.permissions1 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #bb0000; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions1:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #bb0000; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions2 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #c8601a; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions2:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #c8601a; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions3 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ea8c00; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions3:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ea8c00; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions4 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #e6b800; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions4:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #e6b800; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions5 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #92bc2e; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions5:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #92bc2e; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions6 {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #339900; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions6:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #339900; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.permissions1_cell {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #bb0000; TEXT-DECORATION: none
}
.permissions2_cell {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #c8601a; TEXT-DECORATION: none
}
.permissions3_cell {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #ea8c00; TEXT-DECORATION: none
}
.permissions4_cell {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #e6b800; TEXT-DECORATION: none
}
.permissions5_cell {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #92bc2e; TEXT-DECORATION: none
}
.permissions6_cell {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #339900; TEXT-DECORATION: none
}
.table_color1 {
FONT-WEIGHT: normal; FONT-SIZE: 14px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #f6f6f6; TEXT-DECORATION: none
}
.table_color2 {
FONT-WEIGHT: normal; FONT-SIZE: 14px; COLOR: black; FONT-FAMILY: verdana, arial; BACKGROUND-COLOR: #ebebeb; TEXT-DECORATION: none
}
.head_version {
PADDING-RIGHT: 5px; FONT-WEIGHT: normal; FONT-SIZE: 10px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.form_note {
FONT-WEIGHT: normal; FONT-SIZE: 10px; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.tree_head {
FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.tree_head_credits {
FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
.tree_head_credits:hover {
FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: white; FONT-FAMILY: verdana, arial; TEXT-DECORATION: none
}
H1.selector {
FONT-WEIGHT: bold; FONT-SIZE: 18pt; FONT-FAMILY: Arial
}
BODY {
SCROLLBAR-FACE-COLOR: #009ffd; FONT-SIZE: 12px; SCROLLBAR-HIGHLIGHT-COLOR: #009ffd; SCROLLBAR-SHADOW-COLOR: #009ffd; COLOR: #000000; SCROLLBAR-3DLIGHT-COLOR: #333333; SCROLLBAR-ARROW-COLOR: #ffffff; SCROLLBAR-TRACK-COLOR: #88d2f8; FONT-FAMILY: Verdana, Arial, Helvetica, Sans-serif; SCROLLBAR-DARKSHADOW-COLOR: #333333;
OVERFLOW-X: auto; OVERFLOW-Y: auto;
}
TD {
FONT-SIZE: 10pt; FONT-FAMILY: verdana,helvetica; TEXT-DECORATION: none
}
.tableborder {
BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 0px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.tableborder_full {
BORDER-RIGHT: #000000 1px solid;
BORDER-TOP: #000000 1px solid;
FONT-SIZE: 10pt;
BORDER-LEFT: #000000 1px solid;
BORDER-BOTTOM: #000000 1px solid;
FONT-FAMILY: Arial, Helvetica, sans-serif;
background-image: url(../images/tab_middle.gif);
background-repeat: repeat-x;
}
.header_left_bg {
background-image: url(../images/tabnav_left.jpg);
background-repeat: no-repeat;
}
.tableborder_full_a {
BORDER-RIGHT: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif
}
A {
COLOR: #006699; TEXT-DECORATION: none
}
A:hover {
COLOR: #009ff0; TEXT-DECORATION: none
}
.control_link {font-size:12px; color: #1F569A; font-family: verdana; font-weight:bold; }
.control_link:hover {
FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #009ff0; FONT-FAMILY: verdana, arial
}
.header_link {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #003399; FONT-FAMILY: verdana, arial
}
.header_link:hover {
FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #009ff0; FONT-FAMILY: verdana, arial
}
.tree {
FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: helvetica, arial, verdana, helvetica; TEXT-DECORATION: none
}
.cat {
FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #003399; FONT-FAMILY: arial, helvetica, sans-serif
}
.cat:hover {
FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #009ff0; FONT-FAMILY: arial, helvetica, sans-serif
}
.catsub {
FONT-SIZE: 8pt; COLOR: #000090; FONT-FAMILY: arial, helvetica, sans-serif
}
.catsub:hover {
FONT-SIZE: 8pt; COLOR: #9d9ddc; FONT-FAMILY: arial, helvetica, sans-serif
}
.cat_no {
FONT-SIZE: 10px; COLOR: #707070; FONT-FAMILY: arial, verdana, sans-serif
}
.cat_desc {
FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: arial,verdana,sans-serif
}
.cat_new {
FONT-SIZE: 12px; VERTICAL-ALIGN: super; COLOR: blue; FONT-FAMILY: arial, verdana, sans-serif
}
.cat_pick {
FONT-SIZE: 12px; VERTICAL-ALIGN: super; COLOR: #009900; FONT-FAMILY: arial, helvetica, sans-serif
}
.cats_stats {
FONT-SIZE: 11px; COLOR: #707070; FONT-FAMILY: arial,verdana,sans-serif;
}
.cat_detail {
FONT-SIZE: 8pt; COLOR: #707070; FONT-FAMILY: arial,verdana,sans-serif
}
.cat_fullpath {
FONT-SIZE: 8pt; COLOR: #707070; FONT-FAMILY: arial,verdana,sans-serif
}
.action1 {
FONT-SIZE: 12px; COLOR: #006600; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action1:link {
FONT-SIZE: 12px; COLOR: #006600; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action1:unknown {
FONT-SIZE: 12px; COLOR: #006600; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action1:unknown {
FONT-SIZE: 12px; COLOR: #006600; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action1:hover {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action2 {
FONT-WEIGHT: normal; FONT-SIZE: 12px; COLOR: #990000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action2:link {
FONT-SIZE: 12px; COLOR: #990000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action2:unknown {
FONT-SIZE: 12px; COLOR: #990000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action2:unknown {
FONT-SIZE: 12px; COLOR: #990000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action2:hover {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action3 {
FONT-SIZE: 12px; COLOR: #a27900; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action3:link {
FONT-SIZE: 12px; COLOR: #a27900; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action3:unknown {
FONT-SIZE: 12px; COLOR: #a27900; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action3:unknown {
FONT-SIZE: 12px; COLOR: #a27900; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action3:hover {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action4 {
FONT-SIZE: 12px; COLOR: #800080; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action4:link {
FONT-SIZE: 12px; COLOR: #800080; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action4:unknown {
FONT-SIZE: 12px; COLOR: #800080; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action4:unknown {
FONT-SIZE: 12px; COLOR: #800080; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action4:hover {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action5 {
FONT-SIZE: 12px; COLOR: #0079a2; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action5:link {
FONT-SIZE: 12px; COLOR: #0079a2; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action5:unknown {
FONT-SIZE: 12px; COLOR: #0079a2; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action5:unknown {
FONT-SIZE: 12px; COLOR: #0079a2; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.action5:hover {
FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: none
}
.hint {
FONT-SIZE: 12px; COLOR: #666666; FONT-STYLE: normal; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.hint_red {
FONT-SIZE: 10px; COLOR: #FF0000; FONT-STYLE: normal; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.tabTable {
background-color: #d7d7d7;
border-width: 1px;
border-style: solid;
border-color: black;
}
.navbar_link {
FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #006699; FONT-FAMILY: verdana, arial, sans-serif; TEXT-DECORATION: underline;
}
form{
display : inline;
}
.admintitle-white {
color: #fff
}
.tableborder {
BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 0px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.tableborder_full {
BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 10pt; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.tableborder_full_a {
BORDER-RIGHT: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif
}
.link
{
cursor: hand;
}
.help_box
{
padding: 5px 10px 5px 10px;
}
/* debug output styles */
-
.debug_table {
border: 1px solid green;
border-width: 0 0 1 1;
}
.debug_table TD {
border: 1px solid green;
border-width: 1 1 0 0;
}
\ No newline at end of file
Property changes on: trunk/admin/include/style.css
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.4
\ No newline at end of property
+1.5
\ No newline at end of property

Event Timeline