name = "[unbenannte Seite]"; $this->buttonPublish = true; $this->buttonPreview = true; $this->template = ""; $this->buildingBlocks = array(); } /** @see CmsObject::load() */ //----------------------------------------------- function load($path=array()){ //----------------------------------------------- parent::load($path); if(!$this->classId){ return; } $query = sprintf("SELECT * FROM bruckm_stdpage WHERE id = %d", $this->classId); $result = dbQuery($query); $line = mysqli_fetch_array($result, MYSQLI_ASSOC); $this->template = $line['template']; $this->buildingBlocks = array(); if(strlen($line['buildingBlocks']) > 0){ $buildingBlocks = explode("\t", $line['buildingBlocks']); foreach($buildingBlocks as $b){ $block = BuildingBlockFactory::instance($b); $block->load(); $this->buildingBlocks[] = $block; } } } /** @see::CmsObjcet::unload() */ //---------------------------------------------- function unload($depth=1){ //---------------------------------------------- parent::unload($depth); for($i = 0; $i < sizeof($this->buildingBlocks); $i++){ unset($this->buildingBlocks[$i]); } unset($this->buildingBlocks); $this->buildingBlocks = array(); } /** @see Page::doSave() */ //---------------------------------------------- function doSave(){ //---------------------------------------------- $buildingBlocks = array(); foreach($this->buildingBlocks as $i=>$block){ $this->buildingBlocks[$i]->save(); $buildingBlocks[] = $this->buildingBlocks[$i]->getReference(); } $query = sprintf("UPDATE bruckm_stdpage SET template = %s, buildingBlocks = %s WHERE id = %d", sqlstring($this->template), sqlstring(implode("\t", $buildingBlocks)), sqlnum($this->classId)); dbQuery($query); parent::doSave(); } /** @see Page::doCreate() */ //---------------------------------------------- function doCreate(){ //---------------------------------------------- $query = sprintf("INSERT INTO bruckm_stdpage (template) VALUES (%s)", sqlstring($this->template)); dbQuery($query); $this->classId = mysql_insert_id(); parent::doCreate(); } /** @see Page::doDelete() */ //----------------------------------------------- function doDelete(){ //----------------------------------------------- parent::doDelete(); $query = sprintf("DELETE FROM bruckm_stdpage WHERE id = %d LIMIT 1", $this->classId); dbQuery($query); foreach($this->buildingBlocks as $i=>$block){ $this->buildingBlocks[$i]->delete(); } } /** @see Page::canBeDeleted() */ //---------------------------------------------- function canBeDeleted(){ //---------------------------------------------- if($copies = StdPageCopy::getCopiesOf($this->classId)){ $this->addError("Die Seite kann nicht gelöscht werden, da noch Kopien von Ihr bestehen!"); return false; } return true; } /** @see Page::install() */ //----------------------------------------------- function install(){ //----------------------------------------------- $query = sprintf("CREATE TABLE IF NOT EXISTS bruckm_stdpage ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, template VARCHAR(100) NOT NULL, buildingBlocks TEXT NOT NULL DEFAULT '', PRIMARY KEY (id) )"); dbQuery($query); TextBlock::install(); HeadingBlock::install(); HtmlBlock::install(); FileBlock::install(); ImageBlock::install(); GalleryBlock::install(); } /** @see CmsObject::update() */ //----------------------------------------------- function update(){ //----------------------------------------------- parent::update(); if(isset($_POST['template'])){ $this->template = $_POST['template']; } foreach($this->buildingBlocks as $i=>$block){ $this->buildingBlocks[$i]->update(); } } /** @see CmsObject::doPrintClassContent() */ //----------------------------------------------- function doPrintClassContent(){ //----------------------------------------------- $t = new Template(CMS_TEMPLATE_DIR."stdpage.html"); $templates = ""; $templateFiles = array(); $dir = opendir(TEMPLATE_DIR); while($file = readdir($dir)){ if(is_file(TEMPLATE_DIR.$file)){ $templateFiles[] = $file; } } sort($templateFiles); foreach($templateFiles as $file){ if($file == $this->template){ $templates .= ""; } else{ $templates .= "\n"; } } $t->setVar("TEMPLATES", $templates); if($_SESSION['userlevel'] == USER_ADMIN){ $t->setVar("TEMPLATE_DISABLED", ""); } else{ $t->setVar("TEMPLATE_DISABLED", "disabled=\"disabled\""); } $out = $t->toString(); $out .= $this->doPrintBuildingBlockInsertBar(0); foreach($this->buildingBlocks as $i=>$block){ $out .= $this->buildingBlocks[$i]->printContent($i); $out .= $this->doPrintBuildingBlockInsertBar($i+1); } return $out; } /** @see CmsObject::handleAction() */ //----------------------------------------------- function handleAction($action, $position, $type){ //----------------------------------------------- switch($action){ case "insertBuildingBlock": $this->doInsertBuildingBlock($position, $type); break; case "moveBuildingBlock": $this->doMoveBuildingBlock($position, $type); break; case "deleteBuildingBlock": $this->doDeleteBuildingBlock($position); break; } } /** @see CmsObject::publish() */ //--------------------------------------------- function publish(){ //--------------------------------------------- if($this->canBePublished()){ $out = $this->doPublish(); if(!$this->dynamic){ $query = sprintf("UPDATE bruckm_index SET cache = %s WHERE id = %d", sqlstring($out), sqlnum($this->id)); dbQuery($query); } $copies = StdPageCopy::getCopiesOf($this->classId); foreach($copies as $copy){ $copy->load(); $copy->publishCopy(); $copy->unload(); $copy->unloadParent(); } unset($copies); return true; } return false; } /** @see CmsObject::canBePublished() */ //---------------------------------------------- function canBePublished(){ //---------------------------------------------- if(empty($this->template)){ logError(3, "No template selected", __FILE__, __LINE__); $this->addError("Bitte wählen Sie ein Template aus!"); return false; } return true; } /** @see CmsObject::doPublish() */ //---------------------------------------------- function doPublish(){ //---------------------------------------------- $t = new Template(TEMPLATE_DIR.$this->template); $content = ""; foreach($this->buildingBlocks as $i=>$block){ $content .= $this->buildingBlocks[$i]->publish(); } $t->setVar("CONTENT", $content); if(!$this->parentObj || $this->parentObj->getId() != $this->parentId){ $this->parentObj = FlexiconFactory::instanceById($this->parentId); } if(!$this->parentObj->isLoaded()){ $this->parentObj->load(); } $t = $this->parentObj->printMenu($t); $t->setVar("TITLE", $this->toString()); return $t->toString(); } /** @see Element::getCssClass() */ //------------------------------------------------ function getCssClass(){ //------------------------------------------------ return "itemStdPage"; } // === IMPLEMENTATION OF PRINTABLE =========================================== // /** @see Printable::printVersion * //---------------------------------------------- function printVersion(){ //---------------------------------------------- $t =& new Template(TEMPLATE_DIR."printversion.html"); $content = ""; foreach($this->childElements as $child){ $content .= $this->childObjects[$i]->doPublish(); } $t->setVar("CONTENT", $content); return $t->toString(); }*/ // === ADDITIONAL METHODS ==================================================== // /** inserts a building block * @param class building block class * @param index position */ //----------------------------------------------- function doInsertBuildingBlock($index, $class){ //----------------------------------------------- $this->buildingBlocks = array_insert($this->buildingBlocks, $index, BuildingBlockFactory::instance("$class,0")); $this->save(); } /** moves a building block * @param direction up or down * @param index position */ //----------------------------------------------- function doMoveBuildingBlock($index, $direction){ //----------------------------------------------- if($direction == "up" && $index > 0){ $this->buildingBlocks = array_swap($this->buildingBlocks, $index, $index-1); } if($direction == "down" && $index < sizeof($this->buildingBlocks)-1){ $this->buildingBlocks = array_swap($this->buildingBlocks, $index, $index+1); } $this->save(); } /** deletes a building block object * @param index position */ //----------------------------------------------- function doDeleteBuildingBlock($index){ //----------------------------------------------- $this->buildingBlocks[$index]->delete(); $this->buildingBlocks = array_remove($this->buildingBlocks, $index); $this->save(); } /** prints a bar with buttons for inserting building blocks * @param index position, where the building block will be inserted * @return string */ //----------------------------------------------- function doPrintBuildingBlockInsertBar($index){ //----------------------------------------------- $t = new Template(CMS_TEMPLATE_DIR."insertbar.html"); $button = "
". "\"%s". "
"; $out .= sprintf($button, "Überschrift", $index, "headingblock", "headingblock", "Überschrift"); $out .= sprintf($button, "Text", $index, "textblock", "textblock", "Text"); $out .= sprintf($button, "Bild", $index, "imageblock", "imageblock", "Bild"); $out .= sprintf($button, "Text/Bild", $index, "textimageblock", "textimageblock", "Text/Bild"); $out .= sprintf($button, "Datei", $index, "fileblock", "fileblock", "Datei"); $out .= sprintf($button, "Bildergalerie", $index, "galleryblock", "galleryblock", "Bildergalerie"); $out .= sprintf($button, "Sound", $index, "audioblock", "audioblock", "Sound"); $out .= sprintf($button, "Video", $index, "videoblock", "videoblock", "Video"); $out .= sprintf($button, "HTML Code", $index, "htmlblock", "htmlblock", "HTML Code"); $t->setVar("CLASSES", $out); $t->removeBlock("PASTE"); return $t->toString(); } //---------------------------------------------- function setTemplate($template) { //---------------------------------------------- $this->template = $template; } }; ?>