name = "[unbenannte Galerie]"; $this->buttonPreview = true; $this->buttonPublish = true; $this->images = array(); $this->visible = 1; } /** @see CmsObject::load() */ //----------------------------------------------- function load($path=array()){ //----------------------------------------------- parent::load($path); if(!$this->classId){ return; } $query = sprintf("SELECT * FROM bruckm_gallery WHERE id = %d", $this->classId); $result = dbQuery($query); $line = mysqli_fetch_array($result, MYSQLI_ASSOC); $this->images = array(); if(strlen($line['images']) > 0){ $images = explode("\t", $line['images']); foreach($images as $i){ $img = BuildingBlockFactory::instance($i); $img->load(); $img->setDirectories(GALLERY_DIR, GALLERY_THUMB_DIR); $img->useThumbs(); $this->images[] = $img; } } } /** @see Page::doSave() */ //---------------------------------------------- function doSave(){ //---------------------------------------------- $images = array(); foreach($this->images as $i=>$img){ $this->images[$i]->save(); $images[] = $this->images[$i]->getReference(); } $query = sprintf("UPDATE bruckm_gallery SET images = %s WHERE id = %d", sqlstring(implode("\t", $images)), sqlnum($this->classId)); dbQuery($query); parent::doSave(); } /** @see Page::doCreate() */ //---------------------------------------------- function doCreate(){ //---------------------------------------------- $query = sprintf("INSERT INTO bruckm_gallery (images) VALUES (%s)", sqlstring("")); dbQuery($query); $this->classId = mysql_insert_id(); parent::doCreate(); } /** @see Page::doDelete() */ //----------------------------------------------- function doDelete(){ //----------------------------------------------- parent::doDelete(); $query = sprintf("DELETE FROM bruckm_gallery WHERE id = %d LIMIT 1", $this->classId); dbQuery($query); foreach($this->images as $i=>$img){ $this->images[$i]->delete(); } } /** @see Page::install() */ //----------------------------------------------- function install(){ //----------------------------------------------- $query = sprintf("CREATE TABLE IF NOT EXISTS bruckm_gallery ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, images TEXT NOT NULL DEFAULT '', PRIMARY KEY (id) )"); dbQuery($query); ImageBlock::install(); } /** @see CmsObject::update() */ //----------------------------------------------- function update(){ //----------------------------------------------- parent::update(); if(isset($_POST['galleryname']) && $_POST['galleryname'] != "[unbenannte Galerie]"){ $this->name = $_POST['galleryname']; } foreach($this->images as $i=>$img){ $this->images[$i]->update(); } } /** @see CmsObject::doPrintClassContent() */ //----------------------------------------------- function doPrintClassContent(){ //----------------------------------------------- $t = new Template(CMS_TEMPLATE_DIR."gallery.html"); $t->setVar("NAME", $this->name); $out = $t->toString(); $out .= $this->doPrintBuildingBlockInsertBar(0); foreach($this->images as $i=>$img){ $out .= $this->images[$i]->printContent($i); $out .= $this->doPrintBuildingBlockInsertBar($i+1); } return $out; } /** @see CmsObject::printChildContent() */ //----------------------------------------------- function printChildContent(){ //----------------------------------------------- $t = new Template(CMS_TEMPLATE_DIR."gallerychild.html"); $t->setVar("TITLE", FlexiconFactory::nameOfClass(get_class($this))); $t->setVar("NAME", $this->name); $t->setVar("CLASS", strtolower(get_class($this))); $t->setVar("PATH", $this->printPath()); $t->setVar("ID", $this->id); $images = ""; for($i = 0; $iimages) && $i<9; $i++){ $images .= $this->images[$i]->printThumb(); } $t->setVar("IMAGES", $images); return $t->toString(); } /** @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::doPublish() */ //---------------------------------------------- function doPublish(){ //---------------------------------------------- $t = new Template(TEMPLATE_DIR."gallery.html"); $t->setVar("TITLE", htmlspecialchars($this->name)); $t->setVar("ID", $this->id); return $t->toString(); } /** @see CmsObject::canBePublished() */ //--------------------------------------------- function canBePublished(){ //--------------------------------------------- if(sizeof($this->images) == 0){ $this->addError("Die Galerie beinhaltet keine Bilder!"); return false; } return true; } /** @see Element::getCssClass() */ //------------------------------------------------ function getCssClass(){ //------------------------------------------------ return "itemGallery"; } // === ADDITIONAL METHODS ============================================================ // /** inserts a building block * @param class building block class * @param index position */ //----------------------------------------------- function doInsertBuildingBlock($index, $class){ //----------------------------------------------- $this->images = array_insert($this->images, $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->images = array_swap($this->images, $index, $index-1); } if($direction == "down" && $index < sizeof($this->buildingBlocks)-1){ $this->images = array_swap($this->images, $index, $index+1); } $this->save(); } /** deletes a building block object * @param index position */ //----------------------------------------------- function doDeleteBuildingBlock($index){ //----------------------------------------------- $this->images[$index]->delete(); $this->images = array_remove($this->images, $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, "Bild", $index, "imageblock", "imageblock", "Bild"); $t->setVar("CLASSES", $out); return $t->toString(); } /** returns an xml for the gallery flash component * @return xml string */ //----------------------------------------- function toXml(){ //----------------------------------------- $xml = ""; foreach($this->images as $i=>$img){ $xml .= $this->images[$i]->toXml(); } $xml .= ""; return $xml; } }; ?>