File: 0.00.1a/core/Skin.php (View as Code)

1: 2: /* ------------------------------------------------------------- 3: This file is part of FreeDESK 4: 5: FreeDESK is (C) Copyright 2012 David Cutting 6: 7: FreeDESK is free software: you can redistribute it and/or modify 8: it under the terms of the GNU General Public License as published by 9: the Free Software Foundation, either version 3 of the License, or 10: (at your option) any later version. 11: 12: FreeDESK is distributed in the hope that it will be useful, 13: but WITHOUT ANY WARRANTY; without even the implied warranty of 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15: GNU General Public License for more details. 16: 17: You should have received a copy of the GNU General Public License 18: along with FreeDESK. If not, see www.gnu.org/licenses 19: 20: For more information see www.purplepixie.org/freedesk/ 21: -------------------------------------------------------------- */ 22: 23: /** 24: * Skin class - controls skin elements as required 25: **/ 26: class Skin 27: { 28: /** 29: * FreeDESK instance 30: **/ 31: private $DESK = null; 32: 33: /** 34: * Current Skin 35: **/ 36: private $Skin = "default"; 37: 38: /** 39: * Default/Fallback Skin 40: **/ 41: private $Default = "default"; 42: 43: /** 44: * Constructor 45: * @param mixed &$freeDESK FreeDESK instance pointer 46: **/ 47: function Skin(&$freeDESK) 48: { 49: $this->DESK = &$freeDESK; 50: } 51: 52: /** 53: * Set skin 54: * @param string Skin 55: **/ 56: function SetSkin($skin) 57: { 58: $this->Skin = $skin; 59: } 60: 61: /** 62: * Get a (physical) file location 63: * @param string $file Filename 64: * @return mixed Filepath (string) or bool false on failure to find 65: **/ 66: function GetFileLocation($file) 67: { 68: $skinfile = $this->DESK->BaseDir . "skin/" . $this->Skin . "/" . $file; 69: $deffile = $this->DESK->BaseDir . "skin/" . $this->Default . "/" . $file; 70: if ($skinfile != $deffile) // seperate files to try 71: { 72: if (file_exists($skinfile)) 73: return $skinfile; 74: } 75: // Try the default 76: if (file_exists($deffile)) 77: return $deffile; 78: else 79: return false; // no file found 80: } 81: 82: /** 83: * Get a web location for a file 84: * @param string $file Filename 85: * @return mixed Filepath (string) or bool false on failure to find 86: **/ 87: function GetWebLocation($file) 88: { 89: $webfile = ""; 90: $skinfile = $this->DESK->BaseDir . "skin/" . $this->Skin . "/" . $file; 91: $deffile = $this->DESK->BaseDir . "skin/" . $this->Default . "/" . $file; 92: if ($skinfile != $deffile) // seperate files to try 93: { 94: if (file_exists($skinfile)) 95: $webfile="skin/".$this->Skin."/".$file; 96: } 97: // Try the default 98: if (($webfile=="")&&(file_exists($deffile))) 99: $webfile="skin/".$this->Default."/".$file; 100: else 101: return false; // no file found 102: 103: return $webfile; 104: } 105: 106: /** 107: * Include a file 108: * @param string $file Filename 109: * @param array $data Data element for skin element (optional) 110: * @return bool True on success or false on failure 111: **/ 112: function IncludeFile($file, $data=array()) 113: { 114: $filename=$this->GetFileLocation($file); 115: if ($filename === false) return false; // file not found 116: $DESK=&$this->DESK; 117: 118: include($filename); 119: } 120: 121: /** 122: * Get a file contents 123: * @param string $file Filename 124: * @return mixed Contents on success or bool false on failure 125: **/ 126: function GetFile($file) 127: { 128: $filename=$this->GetFileLocation($file); 129: if ($filename === false) return false; // file not found 130: 131: return file_get_contents($filename); 132: } 133: 134: /** 135: * Common Header Items Display 136: **/ 137: function CommonHeader() 138: { 139: $scripts = array("js/freedesk.js","js/ajax.js","js/alerts.js","js/search.js","js/request.js"); 140: 141: $pim_scripts = $this->DESK->PluginManager->GetScripts(); 142: 143: foreach($pim_scripts as $scr) 144: $scripts[]=$scr; 145: 146: $css = $this->DESK->PluginManager->GetCSS(); 147: 148: $mode = 1; // 0 - standard, 1 std with no cache, 2 include inline 149: 150: if ($mode==0) 151: { 152: foreach($scripts as $script) 153: echo "\n"; 154: foreach($css as $stylesheet) 155: echo "\n"; 156: } 157: else if ($mode==1) 158: { 159: mt_srand(microtime()*1000000); 160: $len=32; 161: $chars="abcdefghijklmnopqrstuvwxyz"; 162: $clen=strlen($chars); 163: foreach($scripts as $script) 164: { 165: $nc=""; 166: for($a=0; $a<$len; ++$a) 167: { 168: $nc.=$chars[mt_rand(0,$clen-1)]; 169: } 170: echo "\n"; 171: } 172: foreach($css as $stylesheet) 173: { 174: $nc=""; 175: for($a=0; $a<$len; ++$a) 176: { 177: $nc.=$chars[mt_rand(0,$clen-1)]; 178: } 179: echo "\n"; 180: } 181: 182: } 183: else 184: { 185: echo "\n"; 192: 193: echo "\n\n"; 200: } 201: 202: if ($this->DESK->ContextManager->IsOpen()) 203: { 204: // Login-specific settings such as SID and request statuses 205: echo "\n"; 230: } 231: 232: 233: } 234: 235: /** 236: * Common Footer Items (pre end of HTML) display 237: **/ 238: function CommonFooter() 239: { 240: echo "\n"; 241: echo "
\n"; 242: echo "\n"; 243: echo "\n";
244: } 245: 246: /** 247: * Common body items (just after the body tag) display 248: **/ 249: function CommonBody() 250: { 251: echo "\n"; 252: $this->IncludeFile("login.php"); 253: echo "
\n";
254: echo "
\n";
255: } 256: 257: } 258: ?> 259: 260: 261: 262: