00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00022 class MainLayout extends SLayout2
00023 {
00024
00035 public function msBuild ($page, $ms, $layout)
00036 {
00037
00038 switch($ms)
00039 {
00040 case 'TopBar':
00041 return $this->layoutTopBar($page, $ms, $layout);
00042 case 'PathBar':
00043 return;# $this->layoutPathBar($page, $ms, $layout);
00044 case 'PageTitle':
00045 return ;#$this->layoutPageTitle($page, $ms, $layout);
00046 case 'Content':
00047 return $this->layoutContent($page, $ms, $layout);
00048 case 'ContentWell':
00049 return $this->layoutContentWell($page, $ms, $layout);
00050 case 'BottomBar':
00051 return $this->layoutBottomBar($page, $ms, $layout);
00052 case 'TabsBar1':
00053 return $this->layoutTabsBar1($page, $ms, $layout);
00054 case 'TabsBar2':
00055 return $this->layoutTabsBar2($page, $ms, $layout);
00056 case 'UpperFeatureWell':
00057 return $this->layoutUpperFeatureWell($page, $ms, $layout);
00058 case 'LowerFeatureWell':
00059 return $this->layoutLowerFeatureWell($page, $ms, $layout);
00060 case 'FlashWell':
00061 return $this->layoutFlashWell($page, $ms, $layout);
00062 default:
00063 return parent::msBuild($page, $ms, $layout);
00064 }
00065 }
00066
00067 function layoutHead($page, $ms, $dl)
00068 {
00069 $page->setSlot('WindowTitle', $page->getSlot('CollName') . ": " . $page->getSlot('PageName'));
00070 parent::layoutHead($page, $ms, $dl);
00071 }
00072
00080 function getMetaSlotDivider () {
00081 return <<<END
00082 <div class="PR2-MetaSlotDivider">
00083 <hr />
00084 </div>
00085
00086 END;
00087 }
00088
00089
00090
00091
00092
00093
00104 public function layoutFlashWell ($page, $ms, $dl)
00105 {
00106 $flash = $page->getSlot('Flash');
00107 if ($flash == "") return;
00108 $msd = $this->getMetaSlotDivider();
00109 $html =<<<END_HTML
00110 <!--************************************
00111 Flash
00112 ************************************-->
00113 <div class="PR2-MetaSlot-FlashWell">
00114 $flash
00115 </div>
00116 $msd
00117 END_HTML;
00118 $page->setMetaSlot('FlashWell', $html);
00119 }
00120
00121
00122
00123
00124
00125 function layoutTopBar($page, $ms, $dl)
00126 {
00127 $ctitle = $page->getSlot('CollName');
00128 $nw1 = $nw2 = $nw3 = " ";
00129 switch($dl){
00130 case 'ThreeNavWells':$nw1 = $page->getSlot('TopBarNavWell1');
00131 case 'TwoNavWells':$nw2 = $page->getSlot('TopBarNavWell2');
00132 case 'OneNavWell': $nw3 = $page->getSlot('TopBarNavWell3');
00133 default: break;
00134 }
00135 if ($nw2 == ""){ $nw2 = $nw1; $nw1 = " "; }
00136 if ($nw3 == ""){ $nw3 = $nw2; $nw2 = " "; }
00137
00138 $homeURL = SPath::getFullPath('Project');
00139
00140 $ss = ($page->getSlot('SearchScript')) ? $page->getSlot('SearchScript') : "Search";
00141
00142 $msd = $this->getMetaSlotDivider();
00143
00144 $tabs = $page->getSlot('TabsBar1');
00145 $topLinks = $page->getSlot('TopBarLinks');
00146 if ($topLinks == '') {
00147 $topLinks = "<a href='$homeURL/../sitemap/' >SITE MAP</a> |
00148 <a href='$homeURL/../about/contact/' >CONTACT US</a>";
00149 }
00150 $topBarExtra = $page->getSlot('TopBarExtra');
00151
00152 $search = $page->getSlot('GoogleCSE');
00153 if (empty($search)) {
00154 $search = <<<END_HTML
00155 <form action="$homeURL/search/" method="post"><p style="display:inline;"><input id="searchWords"
00156 name="words" value="" type="text" maxlength="255"/>
00157 <input type="hidden" name="page" value="1" /></p>
00158 </form>
00159 END_HTML;
00160 }
00161
00162 $html =<<<END_HTML
00163
00164 <!--************************************
00165 TopBar
00166 ************************************-->
00167 <div id="topBar">
00168 <h1 class="PR2-Slot-TopBarAltText">Shodor</h1>
00169 <h3 class="PR2-Slot-TopBarAltText">a national resource for computational science education</h3>
00170 <a href="$homeURL" style="display:none">HOME</a>
00171 <a href="$homeURL" id="logoBar"> </a>
00172 $topBarExtra
00173 <div class="topBarLinks">
00174 $topLinks
00175 </div>
00176 <div id="searchCell">
00177 $search
00178 </div>
00179 <div id="mainNavigation">
00180 $tabs
00181 </div></div>
00182 END_HTML;
00183 $page->setMetaSlot('TopBar', $html);
00184 }
00185
00186
00187
00188
00199 public function layoutPageTitle ($page, $ms, $dl)
00200 {
00201 if ($page->getSlot('PageTitleRightText') != "") {
00202 $rightSide = '<div class="PR2-Slot-PageTitleRightText">' . $page->getSlot('PageTitleRightText')
00203 . '</div>';
00204 } else {
00205 $rightSide = "";
00206 }
00207
00208 $ptitle = $page->getSlot('PageName');
00209
00210 $msd = $this->getMetaSlotDivider();
00211
00212 $html =<<<END_HTML
00213
00214 <!--************************************
00215 PageTitle
00216 ************************************-->
00217 <div id="PR2-MetaSlot-PageTitle">
00218 $rightSide
00219 $ptitle
00220 </div>
00221 END_HTML;
00222 $page->setMetaSlot('PageTitle', $html);
00223 }
00224
00225
00226
00227
00238 public function layoutPathBar ($page, $ms, $l)
00239 {
00240 $ptitle = $page->getSlot('PageName');
00241 $path = $page->getSlot('Path');
00242 $msd = $this->getMetaSlotDivider();
00243
00244 $fullPath = ($path != '') ? ($path . ' > ' . $ptitle) : '';
00245
00246
00247 $html =<<<END_HTML
00248
00249 <!--************************************
00250 PathBar
00251 ************************************-->
00252 <div id="PR2-MetaSlot-PathBar">
00253 $fullPath
00254 </div>
00255
00256 END_HTML;
00257 return($html);
00258 }
00259
00260
00261
00262
00263
00274 public function layoutUpperFeatureWell($page, $ms, $l)
00275 {
00276 $this->layoutWell('UpperFeatureWell', $page, $ms, $l);
00277 }
00278
00289 public function layoutLowerFeatureWell($page, $ms, $l)
00290 {
00291 $this->layoutWell('LowerFeatureWell', $page, $ms, $l);
00292 }
00293
00304 public function layoutContentWell ($page, $ms, $l)
00305 {
00306
00307 $main = $page->getSlot('Main');
00308 if ($this->parent->getOption('HidePageName')) {
00309 $pageName = '';
00310 } else {
00311 $pageName = $page->getSlot('PageName');
00312 }
00313 $tabsLevel1 = $page->getSlot('TabsBar1');
00314 $tabsLevel2 = $page->getSlot('TabsBar2');
00315
00316 $msd = $this->getMetaSlotDivider();
00317 $pathBar = '';
00318 if ($this->parent->getPageTemplate()->getDisplayForMetaSlot('PathBar'))
00319 $pathBar = $this->layoutPathBar($page, $ms, $l);
00320 $subTitle = $page->getSlot('SubTitle');
00321 $html =<<<END
00322
00323 <div class="ContentWrapper"><div class="ContentWrapperText"><div class="title">$pageName</div>
00324 <div class="subtitle">$subTitle</div>
00325 <div class="breadcrumbs">$pathBar</div>
00326 <div>
00327 $main
00328 </div>
00329
00330 <div class="ContentEndClearance"> </div></div></div>
00331 END;
00332 $page->setMetaSlot('ContentWell', $html);
00333 }
00334
00335
00346 public function layoutContent ($page, $ms, $l)
00347 {
00348 $msd = $this->getMetaSlotDivider();
00349
00350 $html =<<<END
00351 This is the content zone
00352
00353 $msd
00354 END;
00355 $page->setMetaSlot('Content', $html);
00356 }
00357
00358
00359
00360
00361
00362
00374 public function layoutWell ($wellname, $page, $ms, $l)
00375 {
00376
00377 $html =<<<END_HTML
00378
00379 <!--************************************
00380 $wellname
00381 ************************************-->
00382 <tbody id="$wellname">
00383 <tr>
00384 END_HTML;
00385
00386 $col2 = $col3 = $leftSideBar = $rightSideBar = "";
00387 $wrapperId = $wellname . "Wrapper";
00388
00389
00390 $wnc1 = $wellname . "Column1";
00391 $mainContent = ($wellname == "ContentWell") ? $page->getSlot('Main') : $page->getSlot("$wellname");
00392 $col1 = $this->packageColumn($mainContent, $wellname, '1');
00393 $wellTdName = $wellname . "Td";
00394
00395 $wellStart = <<<ENDSTART
00396 <td class="pageLeftBorder pageRightBorder" id="$wellTdName">
00397 <div align="center">
00398 <table class="WellWrapper" id="$wrapperId" border="0" cellspacing="0" cellpadding="0">
00399 <tr>
00400 ENDSTART;
00401 $wellEnd = <<<ENDEND
00402 </tr>
00403 </table>
00404 </div>
00405 </td>
00406 ENDEND;
00407
00408 $wellEnd .=<<<END_HTML
00409 </tr>
00410 <tr class="metaSlotDivider">
00411 <td><hr /></td>
00412 </tr>
00413 END_HTML;
00414
00415 $wellEnd .= "</tbody>";
00416
00417
00418
00419 switch($l){
00420 case 'Start':
00421 $page->setMetaSlot("$wellname", $html . $wellStart);
00422 return;
00423 case 'End':
00424 $page->setMetaSlot("$wellname", $wellEnd);
00425 return;
00426 case 'LeftSideBarOnly':
00427 $leftSideBar = $this->packageSideBar($page->getSlot($wellname . 'SideBar'), 'Left');
00428 $rightSideBar = "";
00429 break;
00430 case 'RightSideBarOnly':
00431 $leftSideBar = "";
00432 $rightSideBar = $this->packageSideBar($page->getSlot($wellname . 'SideBar'), 'Right');
00433 break;
00434 case 'BothSideBars':
00435 $leftSideBar = $this->packageSideBar($page->getSlot($wellname . 'SideBar'), 'Left');
00436 $rightSideBar = $this->packageSideBar($page->getSlot($wellname .'SideBar2'), 'Right');
00437 break;
00438 case 'ThreeColumns':
00439 $col3 = $this->packageColumn($page->getSlot($wellname . "Column3"), $wellname, '3');
00440
00441 case 'TwoColumns':
00442 $col2 = $this->packageColumn($page->getSlot($wellname . "Column2"), $wellname, '2');
00443 break;
00444 case 'OneColumn':
00445 case 'NoSideBars':
00446 default:
00447 break;
00448 }
00449
00450
00451 $html .=<<<END_HTML
00452 $wellStart
00453 $leftSideBar
00454 $col1
00455 $col2
00456 $col3
00457 $rightSideBar
00458 $wellEnd
00459 END_HTML;
00460
00461
00462 $page->setMetaSlot("$wellname", $html);
00463 }
00464
00475 protected function packageColumn ($content, $wellname, $number)
00476 {
00477 $id = $wellname . "Column" . $number;
00478
00479 return <<<END_RETURN
00480
00481 <td id="$id" valign="top">
00482 <div class="$wellname tdFillDiv">
00483 <div class="contentDiv">
00484 $content
00485 </div>
00486 </div>
00487 </td>
00488
00489 END_RETURN;
00490 }
00491
00501 protected function packageSideBar ($sidebar, $side)
00502 {
00503 $class = $side . "SideBarTd";
00504 return <<<END_RETURN
00505
00506 <td class="$class" valign="top">
00507 <div class="SideBar tdFillDiv">
00508 $sidebar
00509 </div>
00510 </td>
00511 END_RETURN;
00512 }
00513
00514
00515
00516
00527 public function layoutBottomBar ($page, $ms, $l)
00528 {
00529
00530 }
00531
00542 public function layoutBottomTags ($page, $ms, $layout)
00543 {
00544 $width = $this->parent->getOption('minPageWidth');
00545 $analytics = $page->getSlot('Analytics');
00546
00547 $bottomLinks = <<<LINKS
00548 <a class="bottomBarBtn" href="http://www.shodor.org/licensing/" id="licensingBtn"></a>
00549 <a class="bottomBarBtn" href="http://www.shodor.org/about/privacy/" id="privacyBtn"></a>
00550 <a class="bottomBarBtn" href="http://www.shodor.org/about/donate/" id="donationBtn"></a>
00551 <a class="bottomBarBtn" href="http://www.nsdl.org" id="nsdlBtn"></a>
00552 LINKS
00553 ;
00554
00555 if ($page->getSlot('BottomBarLinks') != '')
00556 $bottomLinks = $page->getSlot('BottomBarLinks');
00557
00558 $page->setMetaSlot('BottomTags', <<<END_TAGS
00559
00560 </div>
00561 </div>
00562 <div id="bottomBar">
00563 <div id="footer">
00564 <div id="btmTxtStrip"></div>
00565 $bottomLinks
00566 </div>
00567 </div>
00568 $analytics
00569 </body>
00570 </html>
00571 END_TAGS
00572 );
00573 }
00574
00585 public function layoutStartBodyTags($page, $ms, $layout)
00586 {
00587 $barHTML = <<<END_CONTENT
00588 <div class="PR2-MetaSlot-UniversalBar">
00589 <div class="PR2-UniversalBarLinks">
00590 <a class="PR2-UniversalBarLink" style="left: 245px;width: 75px;" href='/'></a>
00591 <a class="PR2-UniversalBarLink" style="left: 325px;width: 75px;" href='/about'></a>
00592 <a class="PR2-UniversalBarLink" style="left: 400px;width: 75px;" href='/students'></a>
00593 <a class="PR2-UniversalBarLink" style="left: 480px;width: 75px;" href='/parents'></a>
00594 <a class="PR2-UniversalBarLink" style="left: 558px;width: 75px;" href='/educators'></a>
00595 <a class="PR2-UniversalBarLink" style="left: 635px;width: 133px;" href='/activities'></a>
00596 </div>
00597 </div>
00598 END_CONTENT;
00599 $onload = $page->getSlot('OnLoad');
00600 $bodyId = $page->getSlot('BodyId');
00601 if ($bodyId != ""){ $bodyId = "id=\"$bodyId\""; }
00602 if ($onload != ""){ $onload = "javascript:" . $onload; }
00603 $showUniversalBar = SConfig::getOption('pr2.showUniversalBar');
00604 $universalBar = ($showUniversalBar) ? $barHTML : '';
00605
00606 $isMainPage = SConfig::getOption('pr2.mainPage');
00607 $extraClass = ($isMainPage?' PR2-MainPage':'');
00608
00609 $page->setMetaSlot('StartBodyTags', <<<END_TAGS
00610
00611 <body $bodyId class="PR2-Body{$extraClass}" onload="$onload">
00612 $universalBar
00613 <div class="PR2-PageMargins">
00614 <div class="PR2-Page">
00615
00616 END_TAGS
00617 );
00618
00619 }
00620
00621 }
00622
00623
00624 ?>