1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
22:
23: namespace picon;
24:
25: 26: 27: 28: 29: 30:
31: class HeaderResponse
32: {
33: private $actualResponse;
34: private $rendered = array();
35:
36: public function __construct(Response $response)
37: {
38: $this->actualResponse = $response;
39: }
40:
41: public function renderCSS($css)
42: {
43: if(is_string($css))
44: {
45: $this->renderCSSFile($css);
46: }
47: else if($css instanceof ResourceReference)
48: {
49: $this->renderCSSResourceReference($css);
50: }
51: else
52: {
53: throw new \InvalidArgumentException('renderCSS() expects a string');
54: }
55: }
56:
57: public function renderCSSFile($file)
58: {
59: if(!$this->checkRenderedFile($file))
60: {
61: $this->actualResponse->write(sprintf("<link type=\"text/css\" rel=\"stylesheet\" href=\"%s\" />", $file));
62: array_push($this->rendered, $file);
63: }
64: }
65:
66: public function renderJavaScript($javaScript)
67: {
68: if(is_string($javaScript))
69: {
70: $this->renderJavaScriptFile($javaScript);
71: }
72: else if($javaScript instanceof ResourceReference)
73: {
74: $this->renderJavaScriptResourceReference($javaScript);
75: }
76: else
77: {
78: throw new \InvalidArgumentException('renderJavaScript() expects a string');
79: }
80: }
81:
82: public function renderJavaScriptFile($file)
83: {
84: if(!$this->checkRenderedFile($file))
85: {
86: $this->actualResponse->write(sprintf("<script type=\"text/javascript\" src=\"%s\"></script>", $file));
87: array_push($this->rendered, $file);
88: }
89: }
90:
91: private function checkRenderedFile($file)
92: {
93: return in_array($file, $this->rendered);
94: }
95:
96: public function renderCSSResourceReference(ResourceReference $reference)
97: {
98: $target = new ResourceRequestTarget($reference);
99: $url = $GLOBALS['requestCycle']->generateUrl($target);
100: $this->renderCSSFile($url);
101: }
102:
103: public function renderJavaScriptResourceReference(ResourceReference $reference)
104: {
105: $target = new ResourceRequestTarget($reference);
106: $url = $GLOBALS['requestCycle']->generateUrl($target);
107: $this->renderJavaScriptFile($url);
108: }
109:
110: public function renderScript($script)
111: {
112: $this->actualResponse->write(sprintf("<script type=\"text/javascript\">%s</script>", $script));
113: }
114: }
115:
116: ?>
117: