1. <?php
  2. class GalleryHolder extends Page {
  3. }
  4. class GalleryHolder_Controller extends Page_Controller {
  5. }
  6. class GalleryAlbum extends Page {
  7. private static $db = array(
  8. 'Heading' => 'Varchar(100)',
  9. );
  10. private static $extensions = array(
  11. "GalleryImageExtension",
  12. );
  13. private static $many_many = array(
  14. 'Quotes' => 'Quotes',
  15. );
  16. private static $has_one = array(
  17. 'BackgroundImage' => 'Image'
  18. );
  19. private static $has_many = array(
  20. 'GalleryImage' => 'GalleryImage'
  21. );
  22. public function getThumbnail() {
  23. return $this->Images()->CMSThumbnail();
  24. }
  25. public function getCMSFields() {
  26. $fields=parent::getCMSFields();
  27. $config = GridFieldConfig_RelationEditor::create();
  28. // set up the relatino manager
  29. $config->addComponent(new GridFieldManyRelationHandler(), 'GridFieldPaginator');
  30. // add the imageupload field for main background
  31. $fields->addFieldToTab("Root.Main", new UploadField('BackgroundImage'));
  32. // add the page title field
  33. $fields->addFieldToTab("Root.Main", new TextField("Heading", "Page Title"));
  34. // make the tab for images
  35. $fields->addFieldToTab('Root', Tab::create('Quotes', 'Quotes'));
  36. $fields->addFieldToTab('Root.Quotes', GridField::create(
  37. 'Quotes',
  38. 'Quotes',
  39. $this->Quotes(),
  40. $config
  41. ));
  42. return $fields;
  43. }
  44. public function GetGallery(){
  45. // get the gallery for 'this' page
  46. $res=galleryalbum::get()->byID($this->ID)->GalleryImage();
  47. return($res);
  48. }
  49. public function GetQuotes(){
  50. // get the gallery for 'this' page
  51. $res=quotes::get();
  52. return($res);
  53. }
  54. }
  55. class GalleryAlbum_Controller extends Page_Controller {
  56. }
  57. class GalleryImageExtension extends DataExtension {
  58. private static $has_many = array(
  59. "GalleryImage" => "GalleryImage",
  60. );
  61. public function updateCMSFields(FieldList $fields) {
  62. $fields->addFieldToTab('Root', Tab::create('Images', 'Gallery Images'));
  63. $fields->addFieldToTab('Root.Images', GridField::create(
  64. 'GalleryImage',
  65. 'Gallery Images',
  66. $this->owner->GalleryImage(),
  67. GridFieldConfig_RelationEditor::create()
  68. ));
  69. }
  70. }
  71. class GalleryImage extends Dataobject {
  72. private static $db = array(
  73. 'Title' => 'Varchar(100)',
  74. 'Blurb' => 'Varchar(255)'
  75. );
  76. private static $has_one = array(
  77. 'Image' => 'Image',
  78. );
  79. private static $belongs_many_many = array(
  80. 'Albums' => 'GalleryAlbum',
  81. );
  82. public function getCMSFields() {
  83. $fields=parent::getCMSFields();
  84. // add the page title field
  85. $fields->addFieldToTab("Root.Main", new TextAreaField("Blurb", "Blurb"));
  86. return $fields;
  87. }
  88. }
  89. class Quotes extends Dataobject {
  90. private static $db = array(
  91. 'QuoteTextitle' => 'Varchar(255)',
  92. 'Author' => 'Varchar(100)',
  93. 'Link' => 'Varchar(1255)'
  94. );
  95. private static $has_one = array(
  96. );
  97. private static $belongs_many_many = array(
  98. );
  99. }
  100. ?>