/framework/core/zone/GuiZone.php

http://zoop.googlecode.com/ · PHP · 85 lines · 71 code · 13 blank · 1 comment · 11 complexity · c8d98a637b5bc53c84c83a4a13682065 MD5 · raw file

  1. <?php
  2. class GuiZone extends Zone
  3. {
  4. protected $displayed = false;
  5. protected $baseDir = NULL;
  6. protected $guiClass, $guiDriver, $layout;
  7. private $assigns = array();
  8. public function init($requestInfo = NULL, $params = array())
  9. {
  10. parent::init($requestInfo, $params);
  11. }
  12. public function setBaseDir($dir)
  13. {
  14. $this->baseDir = $dir;
  15. }
  16. public function getBaseDir()
  17. {
  18. return $this->baseDir;
  19. }
  20. protected function chooseGui($type)
  21. {
  22. // if they want something different they need to extend this class
  23. assert($type === NULL);
  24. if($this->guiClass)
  25. $className = $this->guiClass;
  26. else if(Config::get('zoop.gui.class'))
  27. $className = Config::get('zoop.gui.class');
  28. else if(class_exists('AppGui'))
  29. $className = 'AppGui';
  30. else
  31. $className = 'Gui';
  32. return new $className($this->guiDriver);
  33. }
  34. protected function getTemplateDir()
  35. {
  36. $className = get_class($this);
  37. $zoneName = strtolower(substr($className, 4));
  38. return $zoneName;
  39. }
  40. function assign($name, $value)
  41. {
  42. $this->assigns[$name] = $value;
  43. }
  44. function displayed()
  45. {
  46. return $this->displayed;
  47. }
  48. function display($templateName, $guiType = NULL)
  49. {
  50. $gui = $this->chooseGui($guiType);
  51. $gui->setLayout($this->layout);
  52. foreach($this->assigns as $name => $value)
  53. $gui->assign($name, $value);
  54. if(defined('script_url'))
  55. $gui->assign('scriptUrl', script_url);
  56. if(defined('ssl_script_url'))
  57. $gui->assign('sslScriptUrl', ssl_script_url);
  58. if(defined('base_url'))
  59. $gui->assign('baseUrl', base_url);
  60. if(defined('virtual_url'))
  61. $gui->assign('virtualUrl', virtual_url);
  62. if(defined('ssl_virtual_url'))
  63. $gui->assign('sslVirtualUrl', ssl_virtual_url);
  64. $gui->assign('zoneUrl', $this->getUrl());
  65. if(!$this->baseDir)
  66. $dirName = $this->getTemplateDir();
  67. else
  68. $dirName = $this->baseDir;
  69. $gui->display($dirName . '/'. $templateName . '.tpl');
  70. $this->displayed = true;
  71. }
  72. }