public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $fields->addFieldToTab("Root.Portfolio", new TextField("TimeLineHeader", "Time line header"));
     $fields->addFieldToTab("Root.Portfolio", new HtmlEditorField("TimeLineIntro", "Time line intro"));
     $itemOptionSet = WebPortfolioItem::get();
     $itemOptionSetMap = $itemOptionSet->count() ? $itemOptionSet->map('ID', 'Title')->toArray() : array();
     $fields->addFieldsToTab("Root.Portfolio", array(new LiteralField("UpdatePortfolio", "<h3>Update Portfolio</h3>"), new LiteralField("EditPortfolio", "<p><a href=\"/admin/webportfolio\" target=\"_blank\">edit portfolio</a></p>"), new LiteralField("RefreshPortfolio", "<p><a href=\"" . $this->Link("json/?flush=json") . "\" target=\"_blank\">clear portfolio cache</a> (portfolio data is cached to incrase loading speed)</p>"), new LiteralField("SelectPortfolio", "<h3>Select Portfolio</h3>"), new CheckboxSetField($name = "WebPortfolioItems", $title = "Items shown", $source = $itemOptionSetMap)));
     return $fields;
 }
 function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $fields->removeByName("Code");
     if ($this->ID) {
         $dos = WebPortfolioWhatWeDidDescriptor::get()->exclude(array("ID" => $this->ID));
         if ($dos->count()) {
             $dosArray = array("" => "--- do not merge ---");
             $dosArray += $dos->map("ID", "Name")->toArray();
             $fields->addFieldToTab("Root.Merge", new DropdownField("MergeID", "Merge <i>{$this->Name}</i> into:", $dosArray));
         }
     }
     $dos = WebPortfolioItem::get();
     if ($dos->count() && $this->ID) {
         $dosArray = $dos->map()->toArray();
         $fields->addFieldsToTab("Root.WebPortfolioItem", array(new CheckboxSetField("WebPortfolioItem", "Carried out for", $dosArray)));
     }
     if (class_exists("DataObjectOneFieldUpdateController")) {
         $link = DataObjectOneFieldUpdateController::popup_link($ClassName = $this->ClassName, $FieldName = "Description", $where = '', $sort = 'Description DESC', $linkText = 'Edit Description');
         $fields->addFieldToTab("Root.Main", new LiteralField("EditDescription", $link), "Description");
     }
     return $fields;
 }
 function SelectedWebPortfolioItems()
 {
     if ($this->hasFilter) {
     } else {
         $components = $this->getManyManyComponents('WebPortfolioItems');
         if ($components && $components->count()) {
             $this->IDArray = $components->column("ID");
         }
     }
     $reset = false;
     if (!$this->IDArray) {
         $reset = true;
     } elseif (!is_array($this->IDArray)) {
         $reset = true;
     } elseif (!count($this->IDArray)) {
         $reset = true;
     }
     if ($reset) {
         $this->IDArray = array(0 => 0);
     }
     $extraWhere = "";
     if (!$this->hasFilter) {
         $extraWhere = " AND \"Favourites\" = 1";
     }
     return WebPortfolioItem::get()->where("\"WebPortfolioItem\".\"ID\" IN (" . implode(",", $this->IDArray) . ") AND \"WebPortfolioPage_WebPortfolioItems\".\"WebPortfolioPageID\" = " . $this->ID . $extraWhere)->sort(array("Favourites" => "DESC", "RAND()" => "ASC"))->innerJoin("WebPortfolioPage_WebPortfolioItems", "\"WebPortfolioPage_WebPortfolioItems\".\"WebPortfolioItemID\" = \"WebPortfolioItem\".\"ID\"");
 }