public function updateCMSFields(FieldList $fields) { if ($this->classHasAdvertisements($this->owner->ClassName)) { $tabName = $this->MyTabName(); //advertisements shown... $where = '1 = 1'; if ($this->owner->AdvertisementsFolderID) { $images = Image::get()->filter("ParentID", $this->owner->AdvertisementsFolderID); if ($images->count()) { $where = "\"AdvertisementImageID\" IN (" . implode(",", $images->column("ID")) . ")"; } else { $where = " 1 = 2"; } } //$advertisementsCount = DB::query("SELECT COUNT(ID) FROM \"Advertisement\" $whereDB ;")->value(); $advertisements = $this->owner->Advertisements()->where($where); $txt = sprintf(_t("AdvertisementDecorator.ACTUAL", 'Current %1$s Shown'), Config::inst()->get("Advertisement", "plural_name")); $fields->addFieldToTab($tabName, $this->MyHeaderField($txt)); $txt = sprintf(_t("AdvertisementDecorator.SELECT", 'Select %1$s to show ... '), Config::inst()->get("Advertisement", "plural_name")); $advertisementsGridField = new GridField('Advertisements', $txt, $this->owner->Advertisements(), GridFieldConfig_RelationEditor::create()); $fields->addFieldToTab($tabName, $advertisementsGridField); if (Config::inst()->get("Advertisement", "resize_images") == 'no') { $totalSize = 0; foreach ($this->owner->Advertisements() as $advertisement) { $totalSize += $advertisement->AdvertisementImage()->getAbsoluteSize(); } $seconds = round(($totalSize + 1) / 524288); $fields->addFieldToTab($tabName, new LiteralField("TotalSize", '<p><em>Total download size: ' . File::format_size($totalSize) . ', good reception 3G network download time less than ~' . ($seconds + 1) . ' seconds.</em></p>')); } if (class_exists("DataObjectSorterController")) { $shownAdvertisements = $this->owner->getManyManyComponents('Advertisements'); if ($shownAdvertisements) { $array = $shownAdvertisements->column("ID"); $idString = implode(",", $array); $link = DataObjectSorterController::popup_link("Advertisement", $filterField = "ID", $filterValue = $idString, $linkText = "sort " . Config::inst()->get("Advertisement", "plural_name"), $titleField = "FullTitle"); $fields->addFieldToTab($tabName, new LiteralField("AdvertisementsSorter", $link)); } } if ($advertisements->count()) { } else { $txt = sprintf(_t("AdvertisementDecorator.CREATE", '<p>Please <a href="admin/%1$s/">create %2$s</a> on the <a href="admin/%1$s/">%3$s tab</a> first, or see below on how to create %2$s from a folder.</p>'), Config::inst()->get("AdvertisementAdmin", "url_segment"), Config::inst()->get("Advertisement", "plural_name"), Config::inst()->get("AdvertisementAdmin", "menu_title")); $fields->addFieldToTab($tabName, new LiteralField("AdvertisementsHowToCreate", $txt)); } if ($parent = $this->advertisementParent()) { $txt = sprintf(_t("AdvertisementDecorator.ORUSE", 'OR ... use %1$s from <i>%2$s</i>.'), Config::inst()->get("Advertisement", "plural_name"), $parent->Title); $fields->addFieldToTab($tabName, new CheckboxField("UseParentAdvertisements", $txt)); } //create new advertisements $txt = sprintf(_t("AdvertisementDecorator.CREATE", 'Create new %1$s'), Config::inst()->get("Advertisement", "plural_name")); $fields->addFieldToTab($tabName, $this->MyHeaderField($txt)); $txt = sprintf(_t("AdvertisementDecorator.CREATENEWFROMFOLDER_EXPLANATION", 'Create New %1$s from images in the folder selected - each image in the folder will be used to create a %3$s. %2$s'), Config::inst()->get("Advertisement", "plural_name"), Advertisement::recommended_image_size_statement(), Config::inst()->get("Advertisement", "singular_name")); if (Folder::get()->count()) { $fields->addFieldToTab($tabName, $treeDropdownField = new TreeDropdownField('AdvertisementsFolderID', _t("AdvertisementDecorator.CREATENEWFROMFOLDER", "Create from folder"), 'Folder')); $treeDropdownField->setRightTitle($txt); } $styles = AdvertisementStyle::get(); if ($styles->count()) { $fields->addFieldToTab($tabName, $this->MyHeaderField("Style")); $list = $styles->map("ID", "Title", $emptyString = _t("AdvertisementDecorator.SELECTSTYLE", "--select style--"), $sortByTitle = true); $fields->addFieldToTab($tabName, $selectStyleField = new DropdownField("AdvertisementStyleID", _t("AdvertisementDecorator.STYLECREATED", "Select style"), $list)); $selectStyleField->setRightTitle(_t("AdvertisementDecorator.STYLECREATED_EXPLANATION", "Styles are created by your developer")); } $txt = sprintf(_t("AdvertisementDecorator.EDIT", 'Edit %1$s'), Config::inst()->get("Advertisement", "plural_name")); $fields->addFieldToTab($tabName, $this->MyHeaderField($txt)); $txt = sprintf(_t("AdvertisementDecorator.PLEASEMANAGEEXISTING", '<p>Please manage existing %1$s on the <a href="admin/%2$s/">%3$s tab</a>.</p>'), Config::inst()->get("Advertisement", "plural_name"), Config::inst()->get("AdvertisementAdmin", "url_segment"), Config::inst()->get("AdvertisementAdmin", "menu_title")); $fields->addFieldToTab($tabName, new LiteralField("ManageAdvertisements", $txt)); $txt = sprintf(_t("AdvertisementDecorator.DELETE", 'Delete %1$s'), Config::inst()->get("Advertisement", "plural_name")); $fields->addFieldToTab($tabName, $this->MyHeaderField($txt)); $page = SiteTree::get()->byID($this->owner->ID); $txtRemove = sprintf(_t("AdvertisementDecorator.REMOVE", 'Remove all %1$s from this page (%1$s will not be deleted but are not longer associated with this page)'), Config::inst()->get("Advertisement", "plural_name")); $txtConfirmRemove = sprintf(_t("AdvertisementDecorator.CONFIRMREMOVE", 'Are you sure you want to remove all %1$s from this page?'), Config::inst()->get("Advertisement", "plural_name")); $removeallLink = 'advertisements/removealladvertisements/' . $this->owner->ID . '/'; $jquery = 'if(confirm(\'' . $txtConfirmRemove . '\')) {jQuery(\'#removealladvertisements\').load(\'' . $removeallLink . '\');} return false;'; $fields->addFieldToTab($tabName, new LiteralField("removealladvertisements", '<p class="message warning"><a href="' . $removeallLink . '" onclick="' . $jquery . '" id="removealladvertisements" class="ss-ui-button">' . $txtRemove . '</a></p>')); $txtDelete = sprintf(_t("AdvertisementDecorator.DELETE", 'Delete all %1$s from this website (but not the images associated with them)'), Config::inst()->get("Advertisement", "plural_name")); $txtConfirmDelete = sprintf(_t("AdvertisementDecorator.CONFIRMDELETE", 'Are you sure you want to delete all %1$s - there is no UNDO?'), Config::inst()->get("Advertisement", "plural_name")); $deleteallLink = 'advertisements/deletealladvertisements/' . $this->owner->ID . '/'; $jquery = 'if(confirm(\'' . $txtConfirmDelete . '\')) {jQuery(\'#deletealladvertisements\').load(\'' . $deleteallLink . '\');} return false;'; $fields->addFieldToTab($tabName, new LiteralField("deletealladvertisements", '<p class="message bad"><a href="' . $deleteallLink . '" onclick="' . $jquery . '" id="deletealladvertisements" class="ss-ui-button">' . $txtDelete . '</a></p>')); } return $fields; }