1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
class PresentationPage extends Page |
4
|
|
|
{ |
5
|
|
|
|
6
|
|
|
private static $splash_image_location = '/assets/splasimages'; |
7
|
|
|
|
8
|
|
|
private static $db = array( |
9
|
|
|
'Website' => "Varchar(100)", |
10
|
|
|
'StartSlogan' => "Varchar(100)" |
11
|
|
|
); |
12
|
|
|
private static $has_one = array( |
13
|
|
|
'BackgroundImage' => "Image" |
14
|
|
|
); |
15
|
|
|
|
16
|
|
|
private static $icon = "mysite/images/treeicons/Presentation"; |
17
|
|
|
|
18
|
|
|
public function getCMSFields() |
19
|
|
|
{ |
20
|
|
|
$fields = parent::getCMSFields(); |
21
|
|
|
$fields->addFieldToTab("Root.Splash", TextField::create('Website')); |
22
|
|
|
$fields->addFieldToTab("Root.Splash", TextField::create('StartSlogan')); |
23
|
|
|
$fields->addFieldToTab("Root.Splash", UploadField::create('BackgroundImage','Background Image')); |
24
|
|
|
$fields->addFieldToTab("Root.Splash", HtmlEditorField::create('Content')); |
25
|
|
|
return $fields; |
26
|
|
|
} |
27
|
|
|
|
28
|
|
|
} |
29
|
|
|
|
30
|
|
|
class PresentationPage_Controller extends Page_Controller |
31
|
|
|
{ |
32
|
|
|
|
33
|
|
|
|
34
|
|
|
function init() |
35
|
|
|
{ |
36
|
|
|
ContentController::init(); |
37
|
|
|
} |
38
|
|
|
|
39
|
|
|
|
40
|
|
|
public function index() |
41
|
|
|
{ |
42
|
|
|
return $this->renderWith('PresentationPage_Splash'); |
43
|
|
|
} |
44
|
|
|
|
45
|
|
|
|
46
|
|
|
/** |
47
|
|
|
* Private variables to locally cache the selected image index and |
48
|
|
|
* shuffled array with the images URLs |
49
|
|
|
*/ |
50
|
|
|
private $_selectedImage = null; |
51
|
|
|
|
52
|
|
|
private $_shuffledImages = array(); |
53
|
|
|
|
54
|
|
|
|
55
|
|
|
/** |
56
|
|
|
* Returns the URL of the first image to be shown on the Splash |
57
|
|
|
* @return String |
58
|
|
|
*/ |
59
|
|
|
public function getRandomSplashImage() |
60
|
|
|
{ |
61
|
|
|
|
62
|
|
|
if ($this->_selectedImage === null) { |
63
|
|
|
if($this->BackgroundImageID) { |
64
|
|
|
if($image = $this->BackgroundImage()) { |
65
|
|
|
$this->_selectedImage = $image->Link(); |
66
|
|
|
} |
67
|
|
|
} |
68
|
|
|
if ($this->_selectedImage === null) { |
69
|
|
|
$this->_shuffledImages = Config::inst()->get('PresentationPage', 'splash_images'); |
70
|
|
|
shuffle($this->_shuffledImages); |
71
|
|
|
$randomIndex = array_rand($this->_shuffledImages); |
72
|
|
|
$this->_selectedImage = Config::inst()->get('PresentationPage', 'splash_image_location'). |
73
|
|
|
'/'. |
74
|
|
|
$this->_shuffledImages[$randomIndex]; |
75
|
|
|
} |
76
|
|
|
} |
77
|
|
|
return $this->_selectedImage; |
78
|
|
|
} |
79
|
|
|
|
80
|
|
|
/** |
81
|
|
|
* Returns the index of the first image to be shown on the Presentation Page Splash. |
82
|
|
|
* @return Integer |
83
|
|
|
*/ |
84
|
|
|
public function getRandomSplashImageIndex() |
85
|
|
|
{ |
86
|
|
|
return $this->_selectedImage; |
87
|
|
|
} |
88
|
|
|
|
89
|
|
|
/** |
90
|
|
|
* Generates a Javascript Array command from the list of Shuffled images. |
91
|
|
|
* @return String |
92
|
|
|
*/ |
93
|
|
|
public function getJavaImageArray() |
94
|
|
|
{ |
95
|
|
|
$imageArray = $this->_shuffledImages; //Config::inst()->get('Presentation Page', 'splash_images'); |
96
|
|
|
return "new Array('/images/".implode("', '/images/", $imageArray)."'),"; |
97
|
|
|
} |
98
|
|
|
|
99
|
|
|
/** |
100
|
|
|
* Returns an html message with tags other tahn <a><span> removed. |
101
|
|
|
* @return String |
102
|
|
|
*/ |
103
|
|
|
public function getSplashMessageClean() |
104
|
|
|
{ |
105
|
|
|
$strippedHMTL = str_replace('>', '>', $this->Content); |
106
|
|
|
$strippedHMTL = strip_tags($strippedHMTL, '<a><span>'); |
107
|
|
|
$strippedHMTL = str_replace(' ', ' ', $strippedHMTL); |
108
|
|
|
$obj = DBField::create_field('Varchar', $strippedHMTL); |
109
|
|
|
$value = $obj->raw(); |
110
|
|
|
$value = str_replace("'", '’', $value); |
111
|
|
|
$value = str_replace("\r", ' ', $value); |
112
|
|
|
$value = str_replace("\n", ' ', $value); |
113
|
|
|
$value = str_replace("\t", ' ', $value); |
114
|
|
|
$value = preg_replace("/\s{1,}/", " ", $value);; |
115
|
|
|
if(strlen($value) < 10) { |
116
|
|
|
return 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.'; |
117
|
|
|
} |
118
|
|
|
|
119
|
|
|
return $value; |
120
|
|
|
} |
121
|
|
|
|
122
|
|
View Code Duplication |
function PreviousPage() |
|
|
|
|
123
|
|
|
{ |
124
|
|
|
return PresentationPage::get() |
125
|
|
|
->sort(array('Sort' => 'DESC')) |
126
|
|
|
->where('Sort < '.$this->Sort.' AND ShowInSearch = 1') |
127
|
|
|
->First(); |
128
|
|
|
} |
129
|
|
|
|
130
|
|
View Code Duplication |
function NextPage() |
|
|
|
|
131
|
|
|
{ |
132
|
|
|
return PresentationPage::get() |
133
|
|
|
->where('Sort >= '.$this->Sort.' AND ShowInSearch = 1') |
134
|
|
|
->sort(array('Sort' => 'ASC')) |
135
|
|
|
->exclude(array('ID' => $this->ID)) |
136
|
|
|
->First(); |
137
|
|
|
} |
138
|
|
|
|
139
|
|
|
} |
140
|
|
|
|
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.