Browse code

Initial commit

Benjamin Roth authored on26/03/2015 15:51:42
Showing14 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,100 @@
1
+<?php
2
+
3
+/**
4
+* eSales Media Cookie Policy
5
+*
6
+* Copyright (C) 2013-2015 eSalesMedia
7
+*
8
+* @package    eSM_cookiepolicy
9
+* @link       http://www.esales-media.de
10
+* @license    commercial
11
+*
12
+* @author     Benjamin Roth <benjamin@esales-media.de>
13
+*/
14
+
15
+namespace eSM_cookiepolicy;
16
+
17
+
18
+/**
19
+ * Class CookiePolicy
20
+ */
21
+class CookiePolicy extends \Frontend
22
+{
23
+
24
+	/**
25
+	 * Template
26
+	 * @var string
27
+	 */
28
+	protected $strTemplate = 'cookiepolicy_dialog';
29
+
30
+
31
+	/**
32
+	 * Cookie policy check
33
+	 */
34
+	public function cookiePolicyCheck(\PageModel $objPage, \LayoutModel $objLayout, \PageRegular $objPageRegular)
35
+	{
36
+		// Skip cookie policy if passed before
37
+		if ($this->Input->cookie('eSM_cookiepolicy_passed') || $objPage->esm_cookiepolicy_ignore)
38
+		{
39
+			return;
40
+		}
41
+
42
+		// Get root page
43
+		$objRootPage = $this->getRootPageFromUrl();
44
+
45
+		// Don't check if cookie policy is disabled
46
+		if (!$objRootPage->esm_cookiepolicy_check)
47
+		{
48
+			return;
49
+		}
50
+
51
+		// Get cookie policy page
52
+		$objPolicyPage = \PageModel::findByPk($objRootPage->esm_cookiepolicy_jumpTo);
53
+
54
+		// Load dialog template
55
+		$objTemplate = new \FrontendTemplate($this->strTemplate);
56
+		
57
+		// Set template vars
58
+		$objTemplate->title = $GLOBALS['TL_LANG']['MSC']['esm_cookiepolicy']['title'];
59
+		$objTemplate->text = sprintf($GLOBALS['TL_LANG']['MSC']['esm_cookiepolicy']['text'], $this->generateFrontendUrl($objPolicyPage->row()));
60
+		$objTemplate->btn_confirm = $GLOBALS['TL_LANG']['MSC']['esm_cookiepolicy']['btn_confirm'];
61
+		$objTemplate->commitURL = 'system/modules/eSM_cookiepolicy/ajax/Ajax.php?do=cookiepolicy_authentication&cookiepolicy_commit='.$this->createToken();
62
+
63
+		// Add dialog code to page
64
+		$GLOBALS['TL_JQUERY'][] = $objTemplate->parse();
65
+
66
+
67
+	}
68
+
69
+	public static function ajaxPassCookiePolicy()
70
+	{
71
+		if (!\Input::get('cookiepolicy_commit'))
72
+			return false;
73
+
74
+		if (\Input::get('cookiepolicy_commit') == $_SESSION['eSM_cookiepolicy_token'])
75
+		{
76
+			preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', \Environment::get('host'), $regs);
77
+
78
+			setcookie('eSM_cookiepolicy_passed', true, time()+31536000, '/','.'.$regs['domain']);
79
+			unset($_SESSION['eSM_cookiepolicy_token']);
80
+
81
+			return true;
82
+		}
83
+	}
84
+	
85
+	protected function createToken()
86
+	{
87
+		if (!$_SESSION['eSM_cookiepolicy_token'])
88
+		{
89
+			$length = 32;
90
+			$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
91
+			$random_string = "";
92
+			for ($p = 0; $p < $length; $p++)
93
+			{
94
+				$random_string .= $characters[mt_rand(0, strlen($characters))];
95
+			}
96
+			$_SESSION['eSM_cookiepolicy_token'] = $random_string;
97
+		}
98
+		return $_SESSION['eSM_cookiepolicy_token'];
99
+	}
100
+}
0 101
\ No newline at end of file
1 102
new file mode 100644
... ...
@@ -0,0 +1,2 @@
1
+order deny,allow
2
+allow from all
0 3
\ No newline at end of file
1 4
new file mode 100644
... ...
@@ -0,0 +1,93 @@
1
+<?php
2
+
3
+/**
4
+ * eSales Media Cookie Policy
5
+ *
6
+ * Copyright (C) 2013-2015 eSalesMedia
7
+ *
8
+ * @package    eSM_cookiepolicy
9
+ * @link       http://www.esales-media.de
10
+ * @license    commercial
11
+ *
12
+ * @author     Benjamin Roth <benjamin@esales-media.de>
13
+ */
14
+
15
+namespace eSM_cookiepolicy;
16
+
17
+/**
18
+ * AJAX check
19
+ */
20
+
21
+if(!$_SERVER['HTTP_X_REQUESTED_WITH'] || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
22
+	header('HTTP/1.1 403 Forbidden');
23
+	die("File cannot be executed directly");
24
+}
25
+
26
+
27
+/**
28
+ * Initialize the system
29
+ */
30
+
31
+define('TL_MODE', 'FE');
32
+require '../../../initialize.php';
33
+
34
+class CookiePolicyAsync extends \Frontend
35
+{
36
+	public function __construct()
37
+	{
38
+		\Controller::setStaticUrls();
39
+		\Controller::loadLanguageFile('default');
40
+
41
+		$this->import('FrontendUser', 'User');
42
+		parent::__construct();
43
+
44
+		// Check whether a user is logged in
45
+		define('BE_USER_LOGGED_IN', $this->getLoginStatus('BE_USER_AUTH'));
46
+		define('FE_USER_LOGGED_IN', $this->getLoginStatus('FE_USER_AUTH'));
47
+	}
48
+
49
+	public function run()
50
+	{
51
+		$this->User->authenticate();
52
+
53
+		$strBuffer = '';
54
+		switch(\Input::get('do'))
55
+		{
56
+			case 'cookiepolicy_authentication':
57
+				if (!is_null(\Input::get('cookiepolicy_commit')))
58
+				{
59
+					$strBuffer = json_encode(array('status'=>(CookiePolicy::ajaxPassCookiePolicy() ? 'OK' : 'FAILED')));
60
+				} else {
61
+					$this->preconditionFailed();
62
+				}
63
+				break;
64
+
65
+			default:
66
+				$this->preconditionFailed();
67
+				break;
68
+		}
69
+
70
+		header('Content-Type: application/json; charset=utf-8');
71
+		echo $strBuffer;
72
+		exit;
73
+	}
74
+
75
+	protected function authorizedOrDie()
76
+	{
77
+		if (!FE_USER_LOGGED_IN)
78
+		{
79
+			header('HTTP/1.1 403 Forbidden');
80
+			die('Community: User not logged in');
81
+		}
82
+	}
83
+
84
+	protected function preconditionFailed()
85
+	{
86
+		header('HTTP/1.1 412 Precondition Failed');
87
+		echo 'Community: Precondition failed';
88
+		exit();
89
+	}
90
+}
91
+
92
+$Ajax = new CookiePolicyAsync();
93
+$Ajax->run();
0 94
\ No newline at end of file
1 95
new file mode 100644
... ...
@@ -0,0 +1,2 @@
1
+order deny,allow
2
+allow from all
0 3
\ No newline at end of file
1 4
new file mode 100644
... ...
@@ -0,0 +1,656 @@
1
+@keyframes vex-dropin {
2
+  /* line 51, ../sass/_keyframes.sass */
3
+  0% {
4
+	  transform: translateY(100%);
5
+	  -webkit-transform: translateY(100%);
6
+	  -moz-transform: translateY(100%);
7
+	  -ms-transform: translateY(100%);
8
+	  -o-transform: translateY(100%);
9
+    opacity: 0;
10
+  }
11
+
12
+  /* line 54, ../sass/_keyframes.sass */
13
+  51% {
14
+    transform: translateY(100%);
15
+    -webkit-transform: translateY(100%);
16
+    -moz-transform: translateY(100%);
17
+    -ms-transform: translateY(100%);
18
+    -o-transform: translateY(100%);
19
+    opacity: 0;
20
+  }
21
+
22
+  /* line 59, ../sass/_keyframes.sass */
23
+  52% {
24
+    transform: translateY(100%);
25
+    -webkit-transform: translateY(100%);
26
+    -moz-transform: translateY(100%);
27
+    -ms-transform: translateY(100%);
28
+    -o-transform: translateY(100%);
29
+    opacity: 0;
30
+  }
31
+
32
+  /* line 62, ../sass/_keyframes.sass */
33
+  100% {
34
+    transform: translateY(0);
35
+    -webkit-transform: translateY(0);
36
+    -moz-transform: translateY(0);
37
+    -ms-transform: translateY(0);
38
+    -o-transform: translateY(0);
39
+    opacity: 1;
40
+  }
41
+}
42
+
43
+@-webkit-keyframes vex-dropin {
44
+  /* line 51, ../sass/_keyframes.sass */
45
+  0% {
46
+	  transform: translateY(100%);
47
+	  -webkit-transform: translateY(100%);
48
+	  -moz-transform: translateY(100%);
49
+	  -ms-transform: translateY(100%);
50
+	  -o-transform: translateY(100%);
51
+    opacity: 0;
52
+  }
53
+
54
+  /* line 54, ../sass/_keyframes.sass */
55
+  51% {
56
+    transform: translateY(100%);
57
+    -webkit-transform: translateY(100%);
58
+    -moz-transform: translateY(100%);
59
+    -ms-transform: translateY(100%);
60
+    -o-transform: translateY(100%);
61
+    opacity: 0;
62
+  }
63
+
64
+  /* line 59, ../sass/_keyframes.sass */
65
+  52% {
66
+    transform: translateY(100%);
67
+    -webkit-transform: translateY(100%);
68
+    -moz-transform: translateY(100%);
69
+    -ms-transform: translateY(100%);
70
+    -o-transform: translateY(100%);
71
+    opacity: 0;
72
+  }
73
+
74
+  /* line 62, ../sass/_keyframes.sass */
75
+  100% {
76
+    transform: translateY(0);
77
+    -webkit-transform: translateY(0);
78
+    -moz-transform: translateY(0);
79
+    -ms-transform: translateY(0);
80
+    -o-transform: translateY(0);
81
+    opacity: 1;
82
+  }
83
+}
84
+
85
+@-moz-keyframes vex-dropin {
86
+  /* line 51, ../sass/_keyframes.sass */
87
+  0% {
88
+	  transform: translateY(100%);
89
+	  -webkit-transform: translateY(100%);
90
+	  -moz-transform: translateY(100%);
91
+	  -ms-transform: translateY(100%);
92
+	  -o-transform: translateY(100%);
93
+    opacity: 0;
94
+  }
95
+
96
+  /* line 54, ../sass/_keyframes.sass */
97
+  51% {
98
+    transform: translateY(100%);
99
+    -webkit-transform: translateY(100%);
100
+    -moz-transform: translateY(100%);
101
+    -ms-transform: translateY(100%);
102
+    -o-transform: translateY(100%);
103
+    opacity: 0;
104
+  }
105
+
106
+  /* line 59, ../sass/_keyframes.sass */
107
+  52% {
108
+    transform: translateY(100%);
109
+    -webkit-transform: translateY(100%);
110
+    -moz-transform: translateY(100%);
111
+    -ms-transform: translateY(100%);
112
+    -o-transform: translateY(100%);
113
+    opacity: 0;
114
+  }
115
+
116
+  /* line 62, ../sass/_keyframes.sass */
117
+  100% {
118
+    transform: translateY(0);
119
+    -webkit-transform: translateY(0);
120
+    -moz-transform: translateY(0);
121
+    -ms-transform: translateY(0);
122
+    -o-transform: translateY(0);
123
+    opacity: 1;
124
+  }
125
+}
126
+
127
+@-ms-keyframes vex-dropin {
128
+  /* line 51, ../sass/_keyframes.sass */
129
+  0% {
130
+	  transform: translateY(100%);
131
+	  -webkit-transform: translateY(100%);
132
+	  -moz-transform: translateY(100%);
133
+	  -ms-transform: translateY(100%);
134
+	  -o-transform: translateY(100%);
135
+    opacity: 0;
136
+  }
137
+
138
+  /* line 54, ../sass/_keyframes.sass */
139
+  51% {
140
+    transform: translateY(100%);
141
+    -webkit-transform: translateY(100%);
142
+    -moz-transform: translateY(100%);
143
+    -ms-transform: translateY(100%);
144
+    -o-transform: translateY(100%);
145
+    opacity: 0;
146
+  }
147
+
148
+  /* line 59, ../sass/_keyframes.sass */
149
+  52% {
150
+    transform: translateY(100%);
151
+    -webkit-transform: translateY(100%);
152
+    -moz-transform: translateY(100%);
153
+    -ms-transform: translateY(100%);
154
+    -o-transform: translateY(100%);
155
+    opacity: 0;
156
+  }
157
+
158
+  /* line 62, ../sass/_keyframes.sass */
159
+  100% {
160
+    transform: translateY(0);
161
+    -webkit-transform: translateY(0);
162
+    -moz-transform: translateY(0);
163
+    -ms-transform: translateY(0);
164
+    -o-transform: translateY(0);
165
+    opacity: 1;
166
+  }
167
+}
168
+
169
+@-o-keyframes vex-dropin {
170
+  /* line 51, ../sass/_keyframes.sass */
171
+  0% {
172
+	  transform: translateY(100%);
173
+	  -webkit-transform: translateY(100%);
174
+	  -moz-transform: translateY(100%);
175
+	  -ms-transform: translateY(100%);
176
+	  -o-transform: translateY(100%);
177
+    opacity: 0;
178
+  }
179
+
180
+  /* line 54, ../sass/_keyframes.sass */
181
+  51% {
182
+    transform: translateY(100%);
183
+    -webkit-transform: translateY(100%);
184
+    -moz-transform: translateY(100%);
185
+    -ms-transform: translateY(100%);
186
+    -o-transform: translateY(100%);
187
+    opacity: 0;
188
+  }
189
+
190
+  /* line 59, ../sass/_keyframes.sass */
191
+  52% {
192
+    transform: translateY(100%);
193
+    -webkit-transform: translateY(100%);
194
+    -moz-transform: translateY(100%);
195
+    -ms-transform: translateY(100%);
196
+    -o-transform: translateY(100%);
197
+    opacity: 0;
198
+  }
199
+
200
+  /* line 62, ../sass/_keyframes.sass */
201
+  100% {
202
+    transform: translateY(0);
203
+    -webkit-transform: translateY(0);
204
+    -moz-transform: translateY(0);
205
+    -ms-transform: translateY(0);
206
+    -o-transform: translateY(0);
207
+    opacity: 1;
208
+  }
209
+}
210
+
211
+@keyframes vex-dropout {
212
+  /* line 68, ../sass/_keyframes.sass */
213
+  0% {
214
+    transform: translateY(0);
215
+    -webkit-transform: translateY(0);
216
+    -moz-transform: translateY(0);
217
+    -ms-transform: translateY(0);
218
+    -o-transform: translateY(0);
219
+    opacity: 1;
220
+  }
221
+
222
+  /* line 70, ../sass/_keyframes.sass */
223
+  100% {
224
+    transform: translateY(100%);
225
+    -webkit-transform: translateY(100%);
226
+    -moz-transform: translateY(100%);
227
+    -ms-transform: translateY(100%);
228
+    -o-transform: translateY(100%);
229
+	  opacity: 0;
230
+  }
231
+}
232
+
233
+@-webkit-keyframes vex-dropout {
234
+  /* line 68, ../sass/_keyframes.sass */
235
+  0% {
236
+    transform: translateY(0);
237
+    -webkit-transform: translateY(0);
238
+    -moz-transform: translateY(0);
239
+    -ms-transform: translateY(0);
240
+    -o-transform: translateY(0);
241
+	  opacity: 1;
242
+  }
243
+
244
+  /* line 70, ../sass/_keyframes.sass */
245
+  100% {
246
+    transform: translateY(100%);
247
+    -webkit-transform: translateY(100%);
248
+    -moz-transform: translateY(100%);
249
+    -ms-transform: translateY(100%);
250
+    -o-transform: translateY(100%);
251
+	  opacity: 0;
252
+  }
253
+}
254
+
255
+@-moz-keyframes vex-dropout {
256
+  /* line 68, ../sass/_keyframes.sass */
257
+  0% {
258
+    transform: translateY(0);
259
+    -webkit-transform: translateY(0);
260
+    -moz-transform: translateY(0);
261
+    -ms-transform: translateY(0);
262
+    -o-transform: translateY(0);
263
+	  opacity: 1;
264
+  }
265
+
266
+  /* line 70, ../sass/_keyframes.sass */
267
+  100% {
268
+    transform: translateY(100%);
269
+    -webkit-transform: translateY(100%);
270
+    -moz-transform: translateY(100%);
271
+    -ms-transform: translateY(100%);
272
+    -o-transform: translateY(100%);
273
+	  opacity: 0;
274
+  }
275
+}
276
+
277
+@-ms-keyframes vex-dropout {
278
+  /* line 68, ../sass/_keyframes.sass */
279
+  0% {
280
+    transform: translateY(0);
281
+    -webkit-transform: translateY(0);
282
+    -moz-transform: translateY(0);
283
+    -ms-transform: translateY(0);
284
+    -o-transform: translateY(0);
285
+	  opacity: 1;
286
+  }
287
+
288
+  /* line 70, ../sass/_keyframes.sass */
289
+  100% {
290
+    transform: translateY(100%);
291
+    -webkit-transform: translateY(100%);
292
+    -moz-transform: translateY(100%);
293
+    -ms-transform: translateY(100%);
294
+    -o-transform: translateY(100%);
295
+	  opacity: 0;
296
+  }
297
+}
298
+
299
+@-o-keyframes vex-dropout {
300
+  /* line 68, ../sass/_keyframes.sass */
301
+  0% {
302
+    transform: translateY(0);
303
+    -webkit-transform: translateY(0);
304
+    -moz-transform: translateY(0);
305
+    -ms-transform: translateY(0);
306
+    -o-transform: translateY(0);
307
+	  opacity: 1;
308
+  }
309
+
310
+  /* line 70, ../sass/_keyframes.sass */
311
+  100% {
312
+    transform: translateY(100%);
313
+    -webkit-transform: translateY(100%);
314
+    -moz-transform: translateY(100%);
315
+    -ms-transform: translateY(100%);
316
+    -o-transform: translateY(100%);
317
+	  opacity: 0;
318
+  }
319
+}
320
+
321
+@keyframes vex-pulse {
322
+  /* line 136, ../sass/_keyframes.sass */
323
+  0% {
324
+    -webkit-box-shadow: inset 0 0 0 300px transparent;
325
+    -moz-box-shadow: inset 0 0 0 300px transparent;
326
+    box-shadow: inset 0 0 0 300px transparent;
327
+  }
328
+
329
+  /* line 138, ../sass/_keyframes.sass */
330
+  70% {
331
+    -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
332
+    -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
333
+    box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
334
+  }
335
+
336
+  /* line 140, ../sass/_keyframes.sass */
337
+  100% {
338
+    -webkit-box-shadow: inset 0 0 0 300px transparent;
339
+    -moz-box-shadow: inset 0 0 0 300px transparent;
340
+    box-shadow: inset 0 0 0 300px transparent;
341
+  }
342
+}
343
+
344
+@-webkit-keyframes vex-pulse {
345
+  /* line 136, ../sass/_keyframes.sass */
346
+  0% {
347
+    -webkit-box-shadow: inset 0 0 0 300px transparent;
348
+    -moz-box-shadow: inset 0 0 0 300px transparent;
349
+    box-shadow: inset 0 0 0 300px transparent;
350
+  }
351
+
352
+  /* line 138, ../sass/_keyframes.sass */
353
+  70% {
354
+    -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
355
+    -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
356
+    box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
357
+  }
358
+
359
+  /* line 140, ../sass/_keyframes.sass */
360
+  100% {
361
+    -webkit-box-shadow: inset 0 0 0 300px transparent;
362
+    -moz-box-shadow: inset 0 0 0 300px transparent;
363
+    box-shadow: inset 0 0 0 300px transparent;
364
+  }
365
+}
366
+
367
+@-moz-keyframes vex-pulse {
368
+  /* line 136, ../sass/_keyframes.sass */
369
+  0% {
370
+    -webkit-box-shadow: inset 0 0 0 300px transparent;
371
+    -moz-box-shadow: inset 0 0 0 300px transparent;
372
+    box-shadow: inset 0 0 0 300px transparent;
373
+  }
374
+
375
+  /* line 138, ../sass/_keyframes.sass */
376
+  70% {
377
+    -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
378
+    -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
379
+    box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
380
+  }
381
+
382
+  /* line 140, ../sass/_keyframes.sass */
383
+  100% {
384
+    -webkit-box-shadow: inset 0 0 0 300px transparent;
385
+    -moz-box-shadow: inset 0 0 0 300px transparent;
386
+    box-shadow: inset 0 0 0 300px transparent;
387
+  }
388
+}
389
+
390
+@-ms-keyframes vex-pulse {
391
+  /* line 136, ../sass/_keyframes.sass */
392
+  0% {
393
+    -webkit-box-shadow: inset 0 0 0 300px transparent;
394
+    -moz-box-shadow: inset 0 0 0 300px transparent;
395
+    box-shadow: inset 0 0 0 300px transparent;
396
+  }
397
+
398
+  /* line 138, ../sass/_keyframes.sass */
399
+  70% {
400
+    -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
401
+    -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
402
+    box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
403
+  }
404
+
405
+  /* line 140, ../sass/_keyframes.sass */
406
+  100% {
407
+    -webkit-box-shadow: inset 0 0 0 300px transparent;
408
+    -moz-box-shadow: inset 0 0 0 300px transparent;
409
+    box-shadow: inset 0 0 0 300px transparent;
410
+  }
411
+}
412
+
413
+@-o-keyframes vex-pulse {
414
+  /* line 136, ../sass/_keyframes.sass */
415
+  0% {
416
+    -webkit-box-shadow: inset 0 0 0 300px transparent;
417
+    -moz-box-shadow: inset 0 0 0 300px transparent;
418
+    box-shadow: inset 0 0 0 300px transparent;
419
+  }
420
+
421
+  /* line 138, ../sass/_keyframes.sass */
422
+  70% {
423
+    -webkit-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
424
+    -moz-box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
425
+    box-shadow: inset 0 0 0 300px rgba(255, 255, 255, 0.25);
426
+  }
427
+
428
+  /* line 140, ../sass/_keyframes.sass */
429
+  100% {
430
+    -webkit-box-shadow: inset 0 0 0 300px transparent;
431
+    -moz-box-shadow: inset 0 0 0 300px transparent;
432
+    box-shadow: inset 0 0 0 300px transparent;
433
+  }
434
+}
435
+
436
+body.vex-open {
437
+	overflow: inherit;
438
+}
439
+
440
+.vex.vex-theme-cp-bottom {
441
+	top: auto;
442
+	bottom: 0;
443
+	right: 0;
444
+	overflow: visible;
445
+	z-index: 1110;
446
+}
447
+
448
+.vex.vex-theme-cp-bottom .vex-overlay {
449
+	display: none;
450
+}
451
+
452
+/* line 15, ../sass/vex-theme-cp-bottom.sass */
453
+.vex.vex-theme-cp-bottom.vex-closing .vex-content {
454
+  animation: vex-dropout 0.5s;
455
+  -webkit-animation: vex-dropout 0.5s;
456
+  -moz-animation: vex-dropout 0.5s;
457
+  -ms-animation: vex-dropout 0.5s;
458
+  -o-animation: vex-dropout 0.5s;
459
+  -webkit-backface-visibility: hidden;
460
+}
461
+/* line 18, ../sass/vex-theme-cp-bottom.sass */
462
+.vex.vex-theme-cp-bottom .vex-content {
463
+  animation: vex-dropin 2s;
464
+  -webkit-animation: vex-dropin 2s;
465
+  -moz-animation: vex-dropin 2s;
466
+  -ms-animation: vex-dropin 2s;
467
+  -o-animation: vex-dropin 2s;
468
+  -webkit-backface-visibility: hidden;
469
+	border-bottom-width: 0;
470
+}
471
+/* line 21, ../sass/vex-theme-cp-bottom.sass */
472
+.vex.vex-theme-cp-bottom .vex-content {
473
+	-webkit-border-radius: 5px 5px 0 0;
474
+	-moz-border-radius: 5px 5px 0 0;
475
+	border-radius: 5px 5px 0 0;
476
+  background: #a00831;
477
+  color: #fff;
478
+  padding: 15px;
479
+  position: relative;
480
+  margin: 0 auto;
481
+  max-width: 100%;
482
+  width: 900px;
483
+  font-size: 12px;
484
+  line-height: 1.5em;
485
+}
486
+
487
+.vex.vex-theme-cp-bottom .vex-content a {
488
+	color: #FF9292;
489
+}
490
+
491
+.vex.vex-theme-cp-bottom .vex-content .vex-header {
492
+	margin: -15px -15px 15px;
493
+	padding: 5px 15px;
494
+	border-bottom: 1px solid #790726;
495
+	line-height: 2;
496
+	font-size: 125%;
497
+	text-transform: uppercase;
498
+	-webkit-border-radius: 5px 5px 0 0;
499
+	-moz-border-radius: 5px 5px 0 0;
500
+	-ms-border-radius: 5px 5px 0 0;
501
+	-o-border-radius: 5px 5px 0 0;
502
+	border-radius: 5px 5px 0 0;
503
+	background-color: #790726;
504
+}
505
+/* line 34, ../sass/vex-theme-cp-bottom.sass */
506
+.vex.vex-theme-cp-bottom .vex-content h1, .vex.vex-theme-cp-bottom .vex-content h2, .vex.vex-theme-cp-bottom .vex-content h3, .vex.vex-theme-cp-bottom .vex-content h4, .vex.vex-theme-cp-bottom .vex-content h5, .vex.vex-theme-cp-bottom .vex-content h6, .vex.vex-theme-cp-bottom .vex-content p, .vex.vex-theme-cp-bottom .vex-content ul, .vex.vex-theme-cp-bottom .vex-content li {
507
+  color: inherit;
508
+}
509
+/* line 37, ../sass/vex-theme-cp-bottom.sass */
510
+.vex.vex-theme-cp-bottom .vex-close {
511
+  -webkit-border-radius: 5px;
512
+  -moz-border-radius: 5px;
513
+  -ms-border-radius: 5px;
514
+  -o-border-radius: 5px;
515
+  border-radius: 5px;
516
+  position: absolute;
517
+  top: 0;
518
+  right: 0;
519
+  cursor: pointer;
520
+}
521
+/* line 44, ../sass/vex-theme-cp-bottom.sass */
522
+.vex.vex-theme-cp-bottom .vex-close:before {
523
+  -webkit-border-radius: 3px;
524
+  -moz-border-radius: 3px;
525
+  -ms-border-radius: 3px;
526
+  -o-border-radius: 3px;
527
+  border-radius: 3px;
528
+  position: absolute;
529
+  content: "\00D7";
530
+  font-size: 26px;
531
+  font-weight: normal;
532
+  line-height: 31px;
533
+  height: 30px;
534
+  width: 30px;
535
+  text-align: center;
536
+  top: 3px;
537
+  right: 3px;
538
+  color: #bbbbbb;
539
+  background: transparent;
540
+}
541
+/* line 59, ../sass/vex-theme-cp-bottom.sass */
542
+.vex.vex-theme-cp-bottom .vex-close:hover:before, .vex.vex-theme-cp-bottom .vex-close:active:before {
543
+  color: #777777;
544
+  background: #e0e0e0;
545
+}
546
+/* line 65, ../sass/vex-theme-cp-bottom.sass */
547
+.vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-message {
548
+  margin-bottom: 0.5em;
549
+}
550
+/* line 68, ../sass/vex-theme-cp-bottom.sass */
551
+.vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input {
552
+  margin-bottom: 1em;
553
+}
554
+/* line 71, ../sass/vex-theme-cp-bottom.sass */
555
+.vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input textarea, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="date"], .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="datetime"], .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="datetime-local"], .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="email"], .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="month"], .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="number"], .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="password"], .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="search"], .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="tel"], .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="text"], .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="time"], .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="url"], .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="week"] {
556
+  -webkit-border-radius: 3px;
557
+  -moz-border-radius: 3px;
558
+  -ms-border-radius: 3px;
559
+  -o-border-radius: 3px;
560
+  border-radius: 3px;
561
+  background: white;
562
+  width: 100%;
563
+  padding: 0.25em 0.67em;
564
+  border: 0;
565
+  font-family: inherit;
566
+  font-weight: inherit;
567
+  font-size: inherit;
568
+  min-height: 2.5em;
569
+  margin: 0 0 0.25em;
570
+}
571
+/* line 83, ../sass/vex-theme-cp-bottom.sass */
572
+.vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input textarea:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="date"]:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="datetime"]:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="datetime-local"]:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="email"]:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="month"]:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="number"]:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="password"]:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="search"]:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="tel"]:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="text"]:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="time"]:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="url"]:focus, .vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-input input[type="week"]:focus {
573
+  -webkit-box-shadow: inset 0 0 0 2px #8dbdf1;
574
+  -moz-box-shadow: inset 0 0 0 2px #8dbdf1;
575
+  box-shadow: inset 0 0 0 2px #8dbdf1;
576
+  outline: none;
577
+}
578
+/* line 87, ../sass/vex-theme-cp-bottom.sass */
579
+.vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-buttons {
580
+  *zoom: 1;
581
+}
582
+/* line 38, ../../../../../.rvm/gems/ruby-1.9.3-p194/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.scss */
583
+.vex.vex-theme-cp-bottom .vex-dialog-form .vex-dialog-buttons:after {
584
+  content: "";
585
+  display: table;
586
+  clear: both;
587
+}
588
+/* line 90, ../sass/vex-theme-cp-bottom.sass */
589
+.vex.vex-theme-cp-bottom .vex-dialog-button {
590
+  -webkit-border-radius: 3px;
591
+  -moz-border-radius: 3px;
592
+  -ms-border-radius: 3px;
593
+  -o-border-radius: 3px;
594
+  border-radius: 3px;
595
+  border: 0;
596
+  float: right;
597
+  margin: 0 0 0 0.5em;
598
+  font-family: inherit;
599
+  text-transform: uppercase;
600
+  letter-spacing: 0.1em;
601
+  font-size: 0.8em;
602
+  line-height: 1em;
603
+  padding: 0.75em 2em;
604
+}
605
+/* line 102, ../sass/vex-theme-cp-bottom.sass */
606
+.vex.vex-theme-cp-bottom .vex-dialog-button.vex-last {
607
+  margin-left: 0;
608
+}
609
+/* line 105, ../sass/vex-theme-cp-bottom.sass */
610
+.vex.vex-theme-cp-bottom .vex-dialog-button:focus {
611
+  animation: vex-pulse 1.1s infinite;
612
+  -webkit-animation: vex-pulse 1.1s infinite;
613
+  -moz-animation: vex-pulse 1.1s infinite;
614
+  -ms-animation: vex-pulse 1.1s infinite;
615
+  -o-animation: vex-pulse 1.1s infinite;
616
+  -webkit-backface-visibility: hidden;
617
+  outline: none;
618
+}
619
+@media (max-width: 568px) {
620
+  /* line 105, ../sass/vex-theme-cp-bottom.sass */
621
+  .vex.vex-theme-cp-bottom .vex-dialog-button:focus {
622
+    animation: none;
623
+    -webkit-animation: none;
624
+    -moz-animation: none;
625
+    -ms-animation: none;
626
+    -o-animation: none;
627
+    -webkit-backface-visibility: hidden;
628
+  }
629
+}
630
+/* line 114, ../sass/vex-theme-cp-bottom.sass */
631
+.vex.vex-theme-cp-bottom .vex-dialog-button.vex-dialog-button-primary {
632
+  background: #790726;
633
+  color: white;
634
+}
635
+/* line 118, ../sass/vex-theme-cp-bottom.sass */
636
+.vex.vex-theme-cp-bottom .vex-dialog-button.vex-dialog-button-secondary {
637
+  background: #e0e0e0;
638
+  color: #777777;
639
+}
640
+
641
+/* line 122, ../sass/vex-theme-cp-bottom.sass */
642
+.vex-loading-spinner.vex-theme-cp-bottom {
643
+  -webkit-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
644
+  -moz-box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
645
+  box-shadow: 0 0 0 0.5em #f0f0f0, 0 0 1px 0.5em rgba(0, 0, 0, 0.3);
646
+  -webkit-border-radius: 100%;
647
+  -moz-border-radius: 100%;
648
+  -ms-border-radius: 100%;
649
+  -o-border-radius: 100%;
650
+  border-radius: 100%;
651
+  background: #f0f0f0;
652
+  border: 0.2em solid transparent;
653
+  border-top-color: #bbbbbb;
654
+  top: -1.1em;
655
+  bottom: auto;
656
+}
0 657
new file mode 100644
... ...
@@ -0,0 +1,20 @@
1
+;;
2
+; List modules which are required to be loaded beforehand
3
+;;
4
+requires[] = "core"
5
+requires[] = "eSM_vexdialog"
6
+
7
+;;
8
+; Configure what you want the autoload creator to register
9
+;;
10
+register_namespaces = true
11
+register_classes    = true
12
+register_templates  = true
13
+
14
+;;
15
+; Override the default configuration for certain sub directories
16
+;;
17
+[vendor/*]
18
+register_namespaces = false
19
+register_classes    = false
20
+register_templates  = false
0 21
new file mode 100644
... ...
@@ -0,0 +1,36 @@
1
+<?php
2
+
3
+/**
4
+ * Contao Open Source CMS
5
+ *
6
+ * Copyright (c) 2005-2015 Leo Feyer
7
+ *
8
+ * @license LGPL-3.0+
9
+ */
10
+
11
+
12
+/**
13
+ * Register the namespaces
14
+ */
15
+ClassLoader::addNamespaces(array
16
+(
17
+	'eSM_cookiepolicy',
18
+));
19
+
20
+
21
+/**
22
+ * Register the classes
23
+ */
24
+ClassLoader::addClasses(array
25
+(
26
+	'eSM_cookiepolicy\CookiePolicy' => 'system/modules/eSM_cookiepolicy/CookiePolicy.php',
27
+));
28
+
29
+
30
+/**
31
+ * Register the templates
32
+ */
33
+TemplateLoader::addFiles(array
34
+(
35
+	'cookiepolicy_dialog'          => 'system/modules/eSM_cookiepolicy/templates',
36
+));
0 37
new file mode 100644
... ...
@@ -0,0 +1,16 @@
1
+<?php
2
+
3
+/**
4
+ * eSales Media Cookie Policy
5
+ *
6
+ * Copyright (C) 2013-2015 eSalesMedia
7
+ *
8
+ * @package    eSM_cookiepolicy
9
+ * @link       http://www.esales-media.de
10
+ * @license    commercial
11
+ *
12
+ * @author     Benjamin Roth <benjamin@esales-media.de>
13
+ */
14
+
15
+
16
+$GLOBALS['TL_HOOKS']['generatePage'][] = array('\CookiePolicy', 'cookiePolicyCheck');
0 17
\ No newline at end of file
1 18
new file mode 100644
... ...
@@ -0,0 +1,53 @@
1
+<?php
2
+
3
+/**
4
+ * eSales Media Cookie Policy
5
+ *
6
+ * Copyright (C) 2013-2015 eSalesMedia
7
+ *
8
+ * @package    eSM_cookiepolicy
9
+ * @link       http://www.esales-media.de
10
+ * @license    commercial
11
+ *
12
+ * @author     Benjamin Roth <benjamin@esales-media.de>
13
+ */
14
+
15
+
16
+/**
17
+ * Palettes
18
+ */
19
+$GLOBALS['TL_DCA']['tl_page']['palettes']['root'] = str_replace('{meta_legend}', '{cookiepolicy_legend:hide},esm_cookiepolicy_check;{meta_legend}',$GLOBALS['TL_DCA']['tl_page']['palettes']['root']);
20
+$GLOBALS['TL_DCA']['tl_page']['palettes']['regular'] = str_replace('{meta_legend}', '{cookiepolicy_legend:hide},esm_cookiepolicy_ignore;{meta_legend}',$GLOBALS['TL_DCA']['tl_page']['palettes']['regular']);
21
+$GLOBALS['TL_DCA']['tl_page']['palettes']['__selector__'][] = 'esm_cookiepolicy_check';
22
+$GLOBALS['TL_DCA']['tl_page']['subpalettes']['esm_cookiepolicy_check'] = 'esm_cookiepolicy_jumpTo';
23
+
24
+/**
25
+ * Fields
26
+ */
27
+$GLOBALS['TL_DCA']['tl_page']['fields']['esm_cookiepolicy_check'] = array
28
+(
29
+	'label'                   => &$GLOBALS['TL_LANG']['tl_page']['esm_cookiepolicy_check'],
30
+	'exclude'                 => true,
31
+	'inputType'               => 'checkbox',
32
+	'eval'                    => array('submitOnChange'=>true),
33
+	'sql'                     => "char(1) NOT NULL default ''"
34
+);
35
+
36
+$GLOBALS['TL_DCA']['tl_page']['fields']['esm_cookiepolicy_jumpTo'] = array
37
+(
38
+	'label'                   => &$GLOBALS['TL_LANG']['tl_page']['esm_cookiepolicy_jumpTo'],
39
+	'exclude'                 => true,
40
+	'inputType'               => 'pageTree',
41
+	'foreignKey'              => 'tl_page.title',
42
+	'eval'                    => array('fieldType'=>'radio', 'mandatory'=>true),
43
+	'sql'                     => "int(10) unsigned NOT NULL default '0'",
44
+	'relation'                => array('type'=>'hasOne', 'load'=>'lazy')
45
+);
46
+
47
+$GLOBALS['TL_DCA']['tl_page']['fields']['esm_cookiepolicy_ignore'] = array
48
+(
49
+	'label'                   => &$GLOBALS['TL_LANG']['tl_page']['esm_cookiepolicy_ignore'],
50
+	'exclude'                 => true,
51
+	'inputType'               => 'checkbox',
52
+	'sql'                     => "char(1) NOT NULL default ''"
53
+);
0 54
\ No newline at end of file
1 55
new file mode 100644
... ...
@@ -0,0 +1,21 @@
1
+<?php
2
+
3
+/**
4
+ * eSales Media Cookie Policy
5
+ *
6
+ * Copyright (C) 2013-2015 eSalesMedia
7
+ *
8
+ * @package    eSM_cookiepolicy
9
+ * @link       http://www.esales-media.de
10
+ * @license    commercial
11
+ *
12
+ * @author     Benjamin Roth <benjamin@esales-media.de>
13
+ */
14
+
15
+
16
+/**
17
+ * Miscellaneous
18
+ */
19
+$GLOBALS['TL_LANG']['MSC']['esm_cookiepolicy']['title'] = 'Cookies auf dieser Seite';
20
+$GLOBALS['TL_LANG']['MSC']['esm_cookiepolicy']['text'] = 'Diese Webseite verwendet Cookies gemäß unseren <a href="%s" target="_blank">Datenschutzbestimmungen</a>. Durch die Nutzung unserer Webseite und dem abrufen von Inhalten, erklärst Du Dich mit der Verwendung von Cookies einverstanden.';
21
+$GLOBALS['TL_LANG']['MSC']['esm_cookiepolicy']['btn_confirm'] = 'Hinweis schließen';
0 22
new file mode 100644
... ...
@@ -0,0 +1,35 @@
1
+<?php
2
+
3
+/**
4
+ * eSales Media Cookie Policy
5
+ *
6
+ * Copyright (C) 2013-2015 eSalesMedia
7
+ *
8
+ * @package    eSM_cookiepolicy
9
+ * @link       http://www.esales-media.de
10
+ * @license    commercial
11
+ *
12
+ * @author     Benjamin Roth <benjamin@esales-media.de>
13
+ */
14
+
15
+
16
+/**
17
+ * Fields
18
+ */
19
+$GLOBALS['TL_LANG']['tl_page']['esm_cookiepolicy_check'] = array('Cookie-Hinweis anzeigen', 'Es erscheint eine Dialogbox mit dem Hinweis, dass diese Seite Cookies verwendet.');
20
+$GLOBALS['TL_LANG']['tl_page']['esm_cookiepolicy_jumpTo'] = array('Seite mit Datenschutzhinweisen', 'Die Seite, auf welcher sich die Datenschutzhinweise befinden.');
21
+$GLOBALS['TL_LANG']['tl_page']['esm_cookiepolicy_ignore'] = array('Cookie-Hinweis ignorieren', 'Auf dieser Seite wird der Cookie-Hinweis nicht dargestellt.');
22
+
23
+
24
+/**
25
+ * Reference
26
+ */
27
+$GLOBALS['TL_LANG']['tl_page'][''] = '';
28
+
29
+/**
30
+ * Legends
31
+ */
32
+$GLOBALS['TL_LANG']['tl_page']['cookiepolicy_legend'] = 'Cookie-Hinweis';
33
+
34
+
35
+?>
0 36
\ No newline at end of file
1 37
new file mode 100644
... ...
@@ -0,0 +1,21 @@
1
+<?php
2
+
3
+/**
4
+ * eSales Media Cookie Policy
5
+ *
6
+ * Copyright (C) 2013-2015 eSalesMedia
7
+ *
8
+ * @package    eSM_cookiepolicy
9
+ * @link       http://www.esales-media.de
10
+ * @license    commercial
11
+ *
12
+ * @author     Benjamin Roth <benjamin@esales-media.de>
13
+ */
14
+
15
+
16
+/**
17
+ * Miscellaneous
18
+ */
19
+$GLOBALS['TL_LANG']['MSC']['esm_cookiepolicy']['title'] = 'Cookies on this page';
20
+$GLOBALS['TL_LANG']['MSC']['esm_cookiepolicy']['text'] = 'This website is using cookies according to our <a href="%s" target="_blank">Privacy Policy</a>. By using this site and accessing provided informations, you accept the usage of cookies.';
21
+$GLOBALS['TL_LANG']['MSC']['esm_cookiepolicy']['btn_confirm'] = 'Close notification';
0 22
new file mode 100644
... ...
@@ -0,0 +1,35 @@
1
+<?php
2
+
3
+/**
4
+ * eSales Media Cookie Policy
5
+ *
6
+ * Copyright (C) 2013-2015 eSalesMedia
7
+ *
8
+ * @package    eSM_cookiepolicy
9
+ * @link       http://www.esales-media.de
10
+ * @license    commercial
11
+ *
12
+ * @author     Benjamin Roth <benjamin@esales-media.de>
13
+ */
14
+
15
+
16
+/**
17
+ * Fields
18
+ */
19
+$GLOBALS['TL_LANG']['tl_page']['esm_cookiepolicy_check'] = array('Show cookie policy', 'Will show a dialog with the information that this site is using cookies.');
20
+$GLOBALS['TL_LANG']['tl_page']['esm_cookiepolicy_jumpTo'] = array('Privacy Policy Page', 'The page containing the Privacy Policy.');
21
+$GLOBALS['TL_LANG']['tl_page']['esm_cookiepolicy_ignore'] = array('Ignore cookie policy', 'The page will not show the cookie policy dialog.');
22
+
23
+
24
+/**
25
+ * Reference
26
+ */
27
+$GLOBALS['TL_LANG']['tl_page'][''] = '';
28
+
29
+/**
30
+ * Legends
31
+ */
32
+$GLOBALS['TL_LANG']['tl_page']['cookiepolicy_legend'] = 'Cookie Policy';
33
+
34
+
35
+?>
0 36
\ No newline at end of file
1 37
new file mode 100644
... ...
@@ -0,0 +1,26 @@
1
+<?php
2
+$GLOBALS['TL_CSS']['COOKIE_POLICY'] = 'system/modules/eSM_cookiepolicy/assets/css/vex-theme-cp-bottom.css';
3
+?>
4
+
5
+<script>
6
+	var cookiePolicy = vex.dialog.open({
7
+		message: '<h1 class="vex-header"><?php echo $this->title; ?></h1>' +
8
+		'<?php echo $this->text; ?>',
9
+		overlayClosesOnClick: false,
10
+		escapeButtonCloses: false,
11
+		showCloseButton: false,
12
+		className: 'vex-theme-cp-bottom',
13
+		preventBodyClass: true,
14
+		buttons: [{text: '<?php echo $this->btn_confirm; ?>',type: 'button',className: 'vex-dialog-button-primary',click: function(vexContent, event) {
15
+			$.ajax({
16
+				url: '<?php echo $this->commitURL; ?>',
17
+				type: 'GET',
18
+				dataType: 'json',
19
+				success: function (data) {
20
+					return vex.close(vexContent.data().vex.id);
21
+				}
22
+			});
23
+		}}]
24
+	});
25
+
26
+</script>
0 27
\ No newline at end of file