Events Manager - Version 2.0rc1

Version Description

Download this release

Release Info

Developer nutsmuggler
Plugin Icon 128x128 Events Manager
Version 2.0rc1
Comparing to
See all releases

Code changes from version 2.0b4 to 2.0rc1

Files changed (43) hide show
  1. FirePHPCore/FirePHP.class.php +0 -1375
  2. FirePHPCore/LICENSE +0 -29
  3. FirePHPCore/fb.php +0 -246
  4. dbem_events.php +67 -33
  5. dbem_global_map.js +1 -1
  6. dbem_rsvp.php +9 -1
  7. events-manager.php +10 -21
  8. events_manager.css +3 -0
  9. js/jquery-ui-datepicker/i18n/ui.datepicker-ar.js +23 -0
  10. js/jquery-ui-datepicker/i18n/ui.datepicker-bg.js +22 -0
  11. js/jquery-ui-datepicker/i18n/ui.datepicker-ca.js +22 -0
  12. js/jquery-ui-datepicker/i18n/ui.datepicker-cs.js +22 -0
  13. js/jquery-ui-datepicker/i18n/ui.datepicker-da.js +22 -0
  14. js/jquery-ui-datepicker/i18n/ui.datepicker-de.js +22 -0
  15. js/jquery-ui-datepicker/i18n/ui.datepicker-es.js +22 -0
  16. js/jquery-ui-datepicker/i18n/ui.datepicker-fi.js +24 -0
  17. js/jquery-ui-datepicker/i18n/ui.datepicker-fr.js +22 -0
  18. js/jquery-ui-datepicker/i18n/ui.datepicker-he.js +22 -0
  19. js/jquery-ui-datepicker/i18n/ui.datepicker-hu.js +22 -0
  20. js/jquery-ui-datepicker/i18n/ui.datepicker-hy.js +22 -0
  21. js/jquery-ui-datepicker/i18n/ui.datepicker-id.js +22 -0
  22. js/jquery-ui-datepicker/i18n/ui.datepicker-is.js +22 -0
  23. js/jquery-ui-datepicker/i18n/ui.datepicker-it.js +22 -0
  24. js/jquery-ui-datepicker/i18n/ui.datepicker-ja.js +22 -0
  25. js/jquery-ui-datepicker/i18n/ui.datepicker-ko.js +22 -0
  26. js/jquery-ui-datepicker/i18n/ui.datepicker-lt.js +25 -0
  27. js/jquery-ui-datepicker/i18n/ui.datepicker-lv.js +25 -0
  28. js/jquery-ui-datepicker/i18n/ui.datepicker-nl.js +21 -0
  29. js/jquery-ui-datepicker/i18n/ui.datepicker-no.js +23 -0
  30. js/jquery-ui-datepicker/i18n/ui.datepicker-pl.js +22 -0
  31. js/jquery-ui-datepicker/i18n/ui.datepicker-pt-BR.js +22 -0
  32. js/jquery-ui-datepicker/i18n/ui.datepicker-ro.js +22 -0
  33. js/jquery-ui-datepicker/i18n/ui.datepicker-ru.js +22 -0
  34. js/jquery-ui-datepicker/i18n/ui.datepicker-sk.js +22 -0
  35. js/jquery-ui-datepicker/i18n/ui.datepicker-sv.js +22 -0
  36. js/jquery-ui-datepicker/i18n/ui.datepicker-th.js +22 -0
  37. js/jquery-ui-datepicker/i18n/ui.datepicker-tr.js +22 -0
  38. js/jquery-ui-datepicker/i18n/ui.datepicker-uk.js +22 -0
  39. js/jquery-ui-datepicker/i18n/ui.datepicker-zh-CN.js +22 -0
  40. js/jquery-ui-datepicker/i18n/ui.datepicker-zh-TW.js +23 -0
  41. langs/dbem-it_IT.mo +0 -0
  42. langs/dbem-it_IT.po +55 -36
  43. readme.txt +16 -6
FirePHPCore/FirePHP.class.php DELETED
@@ -1,1375 +0,0 @@
1
- <?php
2
- /**
3
- * *** BEGIN LICENSE BLOCK *****
4
- *
5
- * This file is part of FirePHP (http://www.firephp.org/).
6
- *
7
- * Software License Agreement (New BSD License)
8
- *
9
- * Copyright (c) 2006-2008, Christoph Dorn
10
- * All rights reserved.
11
- *
12
- * Redistribution and use in source and binary forms, with or without modification,
13
- * are permitted provided that the following conditions are met:
14
- *
15
- * * Redistributions of source code must retain the above copyright notice,
16
- * this list of conditions and the following disclaimer.
17
- *
18
- * * Redistributions in binary form must reproduce the above copyright notice,
19
- * this list of conditions and the following disclaimer in the documentation
20
- * and/or other materials provided with the distribution.
21
- *
22
- * * Neither the name of Christoph Dorn nor the names of its
23
- * contributors may be used to endorse or promote products derived from this
24
- * software without specific prior written permission.
25
- *
26
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
27
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
30
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
33
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
- *
37
- * ***** END LICENSE BLOCK *****
38
- *
39
- * @copyright Copyright (C) 2007-2008 Christoph Dorn
40
- * @author Christoph Dorn <christoph@christophdorn.com>
41
- * @license http://www.opensource.org/licenses/bsd-license.php
42
- * @package FirePHP
43
- */
44
-
45
-
46
- /**
47
- * Sends the given data to the FirePHP Firefox Extension.
48
- * The data can be displayed in the Firebug Console or in the
49
- * "Server" request tab.
50
- *
51
- * For more information see: http://www.firephp.org/
52
- *
53
- * @copyright Copyright (C) 2007-2008 Christoph Dorn
54
- * @author Christoph Dorn <christoph@christophdorn.com>
55
- * @license http://www.opensource.org/licenses/bsd-license.php
56
- * @package FirePHP
57
- */
58
- class FirePHP {
59
-
60
- /**
61
- * FirePHP version
62
- *
63
- * @var string
64
- */
65
- const VERSION = '0.2.1';
66
-
67
- /**
68
- * Firebug LOG level
69
- *
70
- * Logs a message to firebug console.
71
- *
72
- * @var string
73
- */
74
- const LOG = 'LOG';
75
-
76
- /**
77
- * Firebug INFO level
78
- *
79
- * Logs a message to firebug console and displays an info icon before the message.
80
- *
81
- * @var string
82
- */
83
- const INFO = 'INFO';
84
-
85
- /**
86
- * Firebug WARN level
87
- *
88
- * Logs a message to firebug console, displays an warning icon before the message and colors the line turquoise.
89
- *
90
- * @var string
91
- */
92
- const WARN = 'WARN';
93
-
94
- /**
95
- * Firebug ERROR level
96
- *
97
- * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count.
98
- *
99
- * @var string
100
- */
101
- const ERROR = 'ERROR';
102
-
103
- /**
104
- * Dumps a variable to firebug's server panel
105
- *
106
- * @var string
107
- */
108
- const DUMP = 'DUMP';
109
-
110
- /**
111
- * Displays a stack trace in firebug console
112
- *
113
- * @var string
114
- */
115
- const TRACE = 'TRACE';
116
-
117
- /**
118
- * Displays an exception in firebug console
119
- *
120
- * Increments the firebug error count.
121
- *
122
- * @var string
123
- */
124
- const EXCEPTION = 'EXCEPTION';
125
-
126
- /**
127
- * Displays an table in firebug console
128
- *
129
- * @var string
130
- */
131
- const TABLE = 'TABLE';
132
-
133
- /**
134
- * Starts a group in firebug console
135
- *
136
- * @var string
137
- */
138
- const GROUP_START = 'GROUP_START';
139
-
140
- /**
141
- * Ends a group in firebug console
142
- *
143
- * @var string
144
- */
145
- const GROUP_END = 'GROUP_END';
146
-
147
- /**
148
- * Singleton instance of FirePHP
149
- *
150
- * @var FirePHP
151
- */
152
- protected static $instance = null;
153
-
154
- /**
155
- * Wildfire protocol message index
156
- *
157
- * @var int
158
- */
159
- protected $messageIndex = 1;
160
-
161
- /**
162
- * Options for the library
163
- *
164
- * @var array
165
- */
166
- protected $options = array();
167
-
168
- /**
169
- * Filters used to exclude object members when encoding
170
- *
171
- * @var array
172
- */
173
- protected $objectFilters = array();
174
-
175
- /**
176
- * A stack of objects used to detect recursion during object encoding
177
- *
178
- * @var object
179
- */
180
- protected $objectStack = array();
181
-
182
- /**
183
- * Flag to enable/disable logging
184
- *
185
- * @var boolean
186
- */
187
- protected $enabled = true;
188
-
189
- /**
190
- * The object constructor
191
- */
192
- function __construct() {
193
- $this->options['maxObjectDepth'] = 10;
194
- $this->options['maxArrayDepth'] = 20;
195
- $this->options['useNativeJsonEncode'] = true;
196
- $this->options['includeLineNumbers'] = true;
197
- }
198
-
199
- /**
200
- * When the object gets serialized only include specific object members.
201
- *
202
- * @return array
203
- */
204
- public function __sleep() {
205
- return array('options','objectFilters','enabled');
206
- }
207
-
208
- /**
209
- * Gets singleton instance of FirePHP
210
- *
211
- * @param boolean $AutoCreate
212
- * @return FirePHP
213
- */
214
- public static function getInstance($AutoCreate=false) {
215
- if($AutoCreate===true && !self::$instance) {
216
- self::init();
217
- }
218
- return self::$instance;
219
- }
220
-
221
- /**
222
- * Creates FirePHP object and stores it for singleton access
223
- *
224
- * @return FirePHP
225
- */
226
- public static function init() {
227
- return self::$instance = new self();
228
- }
229
-
230
- /**
231
- * Enable and disable logging to Firebug
232
- *
233
- * @param boolean $Enabled TRUE to enable, FALSE to disable
234
- * @return void
235
- */
236
- public function setEnabled($Enabled) {
237
- $this->enabled = $Enabled;
238
- }
239
-
240
- /**
241
- * Check if logging is enabled
242
- *
243
- * @return boolean TRUE if enabled
244
- */
245
- public function getEnabled() {
246
- return $this->enabled;
247
- }
248
-
249
- /**
250
- * Specify a filter to be used when encoding an object
251
- *
252
- * Filters are used to exclude object members.
253
- *
254
- * @param string $Class The class name of the object
255
- * @param array $Filter An array or members to exclude
256
- * @return void
257
- */
258
- public function setObjectFilter($Class, $Filter) {
259
- $this->objectFilters[$Class] = $Filter;
260
- }
261
-
262
- /**
263
- * Set some options for the library
264
- *
265
- * Options:
266
- * - maxObjectDepth: The maximum depth to traverse objects (default: 10)
267
- * - maxArrayDepth: The maximum depth to traverse arrays (default: 20)
268
- * - useNativeJsonEncode: If true will use json_encode() (default: true)
269
- * - includeLineNumbers: If true will include line numbers and filenames (default: true)
270
- *
271
- * @param array $Options The options to be set
272
- * @return void
273
- */
274
- public function setOptions($Options) {
275
- $this->options = array_merge($this->options,$Options);
276
- }
277
-
278
- /**
279
- * Register FirePHP as your error handler
280
- *
281
- * Will throw exceptions for each php error.
282
- */
283
- public function registerErrorHandler()
284
- {
285
- //NOTE: The following errors will not be caught by this error handler:
286
- // E_ERROR, E_PARSE, E_CORE_ERROR,
287
- // E_CORE_WARNING, E_COMPILE_ERROR,
288
- // E_COMPILE_WARNING, E_STRICT
289
-
290
- set_error_handler(array($this,'errorHandler'));
291
- }
292
-
293
- /**
294
- * FirePHP's error handler
295
- *
296
- * Throws exception for each php error that will occur.
297
- *
298
- * @param int $errno
299
- * @param string $errstr
300
- * @param string $errfile
301
- * @param int $errline
302
- * @param array $errcontext
303
- */
304
- public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext)
305
- {
306
- // Don't throw exception if error reporting is switched off
307
- if (error_reporting() == 0) {
308
- return;
309
- }
310
- // Only throw exceptions for errors we are asking for
311
- if (error_reporting() & $errno) {
312
- throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
313
- }
314
- }
315
-
316
- /**
317
- * Register FirePHP as your exception handler
318
- */
319
- public function registerExceptionHandler()
320
- {
321
- set_exception_handler(array($this,'exceptionHandler'));
322
- }
323
-
324
- /**
325
- * FirePHP's exception handler
326
- *
327
- * Logs all exceptions to your firebug console and then stops the script.
328
- *
329
- * @param Exception $Exception
330
- * @throws Exception
331
- */
332
- function exceptionHandler($Exception) {
333
- $this->fb($Exception);
334
- }
335
-
336
- /**
337
- * Set custom processor url for FirePHP
338
- *
339
- * @param string $URL
340
- */
341
- public function setProcessorUrl($URL)
342
- {
343
- $this->setHeader('X-FirePHP-ProcessorURL', $URL);
344
- }
345
-
346
- /**
347
- * Set custom renderer url for FirePHP
348
- *
349
- * @param string $URL
350
- */
351
- public function setRendererUrl($URL)
352
- {
353
- $this->setHeader('X-FirePHP-RendererURL', $URL);
354
- }
355
-
356
- /**
357
- * Start a group for following messages
358
- *
359
- * @param string $Name
360
- * @return true
361
- * @throws Exception
362
- */
363
- public function group($Name) {
364
- return $this->fb(null, $Name, FirePHP::GROUP_START);
365
- }
366
-
367
- /**
368
- * Ends a group you have started before
369
- *
370
- * @return true
371
- * @throws Exception
372
- */
373
- public function groupEnd() {
374
- return $this->fb(null, null, FirePHP::GROUP_END);
375
- }
376
-
377
- /**
378
- * Log object with label to firebug console
379
- *
380
- * @see FirePHP::LOG
381
- * @param mixes $Object
382
- * @param string $Label
383
- * @return true
384
- * @throws Exception
385
- */
386
- public function log($Object, $Label=null) {
387
- return $this->fb($Object, $Label, FirePHP::LOG);
388
- }
389
-
390
- /**
391
- * Log object with label to firebug console
392
- *
393
- * @see FirePHP::INFO
394
- * @param mixes $Object
395
- * @param string $Label
396
- * @return true
397
- * @throws Exception
398
- */
399
- public function info($Object, $Label=null) {
400
- return $this->fb($Object, $Label, FirePHP::INFO);
401
- }
402
-
403
- /**
404
- * Log object with label to firebug console
405
- *
406
- * @see FirePHP::WARN
407
- * @param mixes $Object
408
- * @param string $Label
409
- * @return true
410
- * @throws Exception
411
- */
412
- public function warn($Object, $Label=null) {
413
- return $this->fb($Object, $Label, FirePHP::WARN);
414
- }
415
-
416
- /**
417
- * Log object with label to firebug console
418
- *
419
- * @see FirePHP::ERROR
420
- * @param mixes $Object
421
- * @param string $Label
422
- * @return true
423
- * @throws Exception
424
- */
425
- public function error($Object, $Label=null) {
426
- return $this->fb($Object, $Label, FirePHP::ERROR);
427
- }
428
-
429
- /**
430
- * Dumps key and variable to firebug server panel
431
- *
432
- * @see FirePHP::DUMP
433
- * @param string $Key
434
- * @param mixed $Variable
435
- * @return true
436
- * @throws Exception
437
- */
438
- public function dump($Key, $Variable) {
439
- return $this->fb($Variable, $Key, FirePHP::DUMP);
440
- }
441
-
442
- /**
443
- * Log a trace in the firebug console
444
- *
445
- * @see FirePHP::TRACE
446
- * @param string $Label
447
- * @return true
448
- * @throws Exception
449
- */
450
- public function trace($Label) {
451
- return $this->fb($Label, FirePHP::TRACE);
452
- }
453
-
454
- /**
455
- * Log a table in the firebug console
456
- *
457
- * @see FirePHP::TABLE
458
- * @param string $Label
459
- * @param string $Table
460
- * @return true
461
- * @throws Exception
462
- */
463
- public function table($Label, $Table) {
464
- return $this->fb($Table, $Label, FirePHP::TABLE);
465
- }
466
-
467
- /**
468
- * Check if FirePHP is installed on client
469
- *
470
- * @return boolean
471
- */
472
- public function detectClientExtension() {
473
- /* Check if FirePHP is installed on client */
474
- if(!@preg_match_all('/\sFirePHP\/([\.|\d]*)\s?/si',$this->getUserAgent(),$m) ||
475
- !version_compare($m[1][0],'0.0.6','>=')) {
476
- return false;
477
- }
478
- return true;
479
- }
480
-
481
- /**
482
- * Log varible to Firebug
483
- *
484
- * @see http://www.firephp.org/Wiki/Reference/Fb
485
- * @param mixed $Object The variable to be logged
486
- * @return true Return TRUE if message was added to headers, FALSE otherwise
487
- * @throws Exception
488
- */
489
- public function fb($Object) {
490
-
491
- if(!$this->enabled) {
492
- return false;
493
- }
494
-
495
- if (headers_sent($filename, $linenum)) {
496
- throw $this->newException('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.');
497
- }
498
-
499
- $Type = null;
500
- $Label = null;
501
-
502
- if(func_num_args()==1) {
503
- } else
504
- if(func_num_args()==2) {
505
- switch(func_get_arg(1)) {
506
- case self::LOG:
507
- case self::INFO:
508
- case self::WARN:
509
- case self::ERROR:
510
- case self::DUMP:
511
- case self::TRACE:
512
- case self::EXCEPTION:
513
- case self::TABLE:
514
- case self::GROUP_START:
515
- case self::GROUP_END:
516
- $Type = func_get_arg(1);
517
- break;
518
- default:
519
- $Label = func_get_arg(1);
520
- break;
521
- }
522
- } else
523
- if(func_num_args()==3) {
524
- $Type = func_get_arg(2);
525
- $Label = func_get_arg(1);
526
- } else {
527
- throw $this->newException('Wrong number of arguments to fb() function!');
528
- }
529
-
530
-
531
- if(!$this->detectClientExtension()) {
532
- return false;
533
- }
534
-
535
- $meta = array();
536
- $skipFinalObjectEncode = false;
537
-
538
- if($Object instanceof Exception) {
539
-
540
- $meta['file'] = $this->_escapeTraceFile($Object->getFile());
541
- $meta['line'] = $Object->getLine();
542
-
543
- $trace = $Object->getTrace();
544
- if($Object instanceof ErrorException
545
- && isset($trace[0]['function'])
546
- && $trace[0]['function']=='errorHandler'
547
- && isset($trace[0]['class'])
548
- && $trace[0]['class']=='FirePHP') {
549
-
550
- $severity = false;
551
- switch($Object->getSeverity()) {
552
- case E_WARNING: $severity = 'E_WARNING'; break;
553
- case E_NOTICE: $severity = 'E_NOTICE'; break;
554
- case E_USER_ERROR: $severity = 'E_USER_ERROR'; break;
555
- case E_USER_WARNING: $severity = 'E_USER_WARNING'; break;
556
- case E_USER_NOTICE: $severity = 'E_USER_NOTICE'; break;
557
- case E_STRICT: $severity = 'E_STRICT'; break;
558
- case E_RECOVERABLE_ERROR: $severity = 'E_RECOVERABLE_ERROR'; break;
559
- case E_DEPRECATED: $severity = 'E_DEPRECATED'; break;
560
- case E_USER_DEPRECATED: $severity = 'E_USER_DEPRECATED'; break;
561
- }
562
-
563
- $Object = array('Class'=>get_class($Object),
564
- 'Message'=>$severity.': '.$Object->getMessage(),
565
- 'File'=>$this->_escapeTraceFile($Object->getFile()),
566
- 'Line'=>$Object->getLine(),
567
- 'Type'=>'trigger',
568
- 'Trace'=>$this->_escapeTrace(array_splice($trace,2)));
569
- $skipFinalObjectEncode = true;
570
- } else {
571
- $Object = array('Class'=>get_class($Object),
572
- 'Message'=>$Object->getMessage(),
573
- 'File'=>$this->_escapeTraceFile($Object->getFile()),
574
- 'Line'=>$Object->getLine(),
575
- 'Type'=>'throw',
576
- 'Trace'=>$this->_escapeTrace($trace));
577
- $skipFinalObjectEncode = true;
578
- }
579
- $Type = self::EXCEPTION;
580
-
581
- } else
582
- if($Type==self::TRACE) {
583
-
584
- $trace = debug_backtrace();
585
- if(!$trace) return false;
586
- for( $i=0 ; $i<sizeof($trace) ; $i++ ) {
587
-
588
- if(isset($trace[$i]['class'])
589
- && isset($trace[$i]['file'])
590
- && ($trace[$i]['class']=='FirePHP'
591
- || $trace[$i]['class']=='FB')
592
- && (substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php'
593
- || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) {
594
- /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
595
- } else
596
- if(isset($trace[$i]['class'])
597
- && isset($trace[$i+1]['file'])
598
- && $trace[$i]['class']=='FirePHP'
599
- && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') {
600
- /* Skip fb() */
601
- } else
602
- if($trace[$i]['function']=='fb'
603
- || $trace[$i]['function']=='trace'
604
- || $trace[$i]['function']=='send') {
605
- $Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'',
606
- 'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'',
607
- 'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'',
608
- 'Message'=>$trace[$i]['args'][0],
609
- 'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'',
610
- 'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'',
611
- 'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'',
612
- 'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1)));
613
-
614
- $skipFinalObjectEncode = true;
615
- $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'';
616
- $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:'';
617
- break;
618
- }
619
- }
620
-
621
- } else
622
- if($Type==self::TABLE) {
623
-
624
- if(isset($Object[0]) && is_string($Object[0])) {
625
- $Object[1] = $this->encodeTable($Object[1]);
626
- } else {
627
- $Object = $this->encodeTable($Object);
628
- }
629
-
630
- $skipFinalObjectEncode = true;
631
-
632
- } else {
633
- if($Type===null) {
634
- $Type = self::LOG;
635
- }
636
- }
637
-
638
- if($this->options['includeLineNumbers']) {
639
- if(!isset($meta['file']) || !isset($meta['line'])) {
640
-
641
- $trace = debug_backtrace();
642
- for( $i=0 ; $trace && $i<sizeof($trace) ; $i++ ) {
643
-
644
- if(isset($trace[$i]['class'])
645
- && isset($trace[$i]['file'])
646
- && ($trace[$i]['class']=='FirePHP'
647
- || $trace[$i]['class']=='FB')
648
- && (substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php'
649
- || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) {
650
- /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
651
- } else
652
- if(isset($trace[$i]['class'])
653
- && isset($trace[$i+1]['file'])
654
- && $trace[$i]['class']=='FirePHP'
655
- && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') {
656
- /* Skip fb() */
657
- } else
658
- if(isset($trace[$i]['file'])
659
- && substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') {
660
- /* Skip FB::fb() */
661
- } else {
662
- $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'';
663
- $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:'';
664
- break;
665
- }
666
- }
667
-
668
- }
669
- } else {
670
- unset($meta['file']);
671
- unset($meta['line']);
672
- }
673
-
674
- $this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2');
675
- $this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.self::VERSION);
676
-
677
- $structure_index = 1;
678
- if($Type==self::DUMP) {
679
- $structure_index = 2;
680
- $this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1');
681
- } else {
682
- $this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1');
683
- }
684
-
685
- if($Type==self::DUMP) {
686
- $msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}';
687
- } else {
688
- $msg_meta = array('Type'=>$Type);
689
- if($Label!==null) {
690
- $msg_meta['Label'] = $Label;
691
- }
692
- if(isset($meta['file'])) {
693
- $msg_meta['File'] = $meta['file'];
694
- }
695
- if(isset($meta['line'])) {
696
- $msg_meta['Line'] = $meta['line'];
697
- }
698
- $msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']';
699
- }
700
-
701
- $parts = explode("\n",chunk_split($msg, 5000, "\n"));
702
-
703
- for( $i=0 ; $i<count($parts) ; $i++) {
704
-
705
- $part = $parts[$i];
706
- if ($part) {
707
-
708
- if(count($parts)>2) {
709
- // Message needs to be split into multiple parts
710
- $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex,
711
- (($i==0)?strlen($msg):'')
712
- . '|' . $part . '|'
713
- . (($i<count($parts)-2)?'\\':''));
714
- } else {
715
- $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex,
716
- strlen($part) . '|' . $part . '|');
717
- }
718
-
719
- $this->messageIndex++;
720
-
721
- if ($this->messageIndex > 99999) {
722
- throw new Exception('Maximum number (99,999) of messages reached!');
723
- }
724
- }
725
- }
726
-
727
- $this->setHeader('X-Wf-1-Index',$this->messageIndex-1);
728
-
729
- return true;
730
- }
731
-
732
- /**
733
- * Standardizes path for windows systems.
734
- *
735
- * @param string $Path
736
- * @return string
737
- */
738
- protected function _standardizePath($Path) {
739
- return preg_replace('/\\\\+/','/',$Path);
740
- }
741
-
742
- /**
743
- * Escape trace path for windows systems
744
- *
745
- * @param array $Trace
746
- * @return array
747
- */
748
- protected function _escapeTrace($Trace) {
749
- if(!$Trace) return $Trace;
750
- for( $i=0 ; $i<sizeof($Trace) ; $i++ ) {
751
- if(isset($Trace[$i]['file'])) {
752
- $Trace[$i]['file'] = $this->_escapeTraceFile($Trace[$i]['file']);
753
- }
754
- if(isset($Trace[$i]['args'])) {
755
- $Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']);
756
- }
757
- }
758
- return $Trace;
759
- }
760
-
761
- /**
762
- * Escape file information of trace for windows systems
763
- *
764
- * @param string $File
765
- * @return string
766
- */
767
- protected function _escapeTraceFile($File) {
768
- /* Check if we have a windows filepath */
769
- if(strpos($File,'\\')) {
770
- /* First strip down to single \ */
771
-
772
- $file = preg_replace('/\\\\+/','\\',$File);
773
-
774
- return $file;
775
- }
776
- return $File;
777
- }
778
-
779
- /**
780
- * Send header
781
- *
782
- * @param string $Name
783
- * @param string_type $Value
784
- */
785
- protected function setHeader($Name, $Value) {
786
- return header($Name.': '.$Value);
787
- }
788
-
789
- /**
790
- * Get user agent
791
- *
792
- * @return string|false
793
- */
794
- protected function getUserAgent() {
795
- if(!isset($_SERVER['HTTP_USER_AGENT'])) return false;
796
- return $_SERVER['HTTP_USER_AGENT'];
797
- }
798
-
799
- /**
800
- * Returns a new exception
801
- *
802
- * @param string $Message
803
- * @return Exception
804
- */
805
- protected function newException($Message) {
806
- return new Exception($Message);
807
- }
808
-
809
- /**
810
- * Encode an object into a JSON string
811
- *
812
- * Uses PHP's jeson_encode() if available
813
- *
814
- * @param object $Object The object to be encoded
815
- * @return string The JSON string
816
- */
817
- public function jsonEncode($Object, $skipObjectEncode=false)
818
- {
819
- if(!$skipObjectEncode) {
820
- $Object = $this->encodeObject($Object);
821
- }
822
-
823
- if(function_exists('json_encode')
824
- && $this->options['useNativeJsonEncode']!=false) {
825
-
826
- return json_encode($Object);
827
- } else {
828
- return $this->json_encode($Object);
829
- }
830
- }
831
-
832
- /**
833
- * Encodes a table by encoding each row and column with encodeObject()
834
- *
835
- * @param array $Table The table to be encoded
836
- * @return array
837
- */
838
- protected function encodeTable($Table) {
839
- if(!$Table) return $Table;
840
- for( $i=0 ; $i<count($Table) ; $i++ ) {
841
- if(is_array($Table[$i])) {
842
- for( $j=0 ; $j<count($Table[$i]) ; $j++ ) {
843
- $Table[$i][$j] = $this->encodeObject($Table[$i][$j]);
844
- }
845
- }
846
- }
847
- return $Table;
848
- }
849
-
850
- /**
851
- * Encodes an object including members with
852
- * protected and private visibility
853
- *
854
- * @param Object $Object The object to be encoded
855
- * @param int $Depth The current traversal depth
856
- * @return array All members of the object
857
- */
858
- protected function encodeObject($Object, $ObjectDepth = 1, $ArrayDepth = 1)
859
- {
860
- $return = array();
861
-
862
- if (is_resource($Object)) {
863
-
864
- return '** '.(string)$Object.' **';
865
-
866
- } else
867
- if (is_object($Object)) {
868
-
869
- if ($ObjectDepth > $this->options['maxObjectDepth']) {
870
- return '** Max Object Depth ('.$this->options['maxObjectDepth'].') **';
871
- }
872
-
873
- foreach ($this->objectStack as $refVal) {
874
- if ($refVal === $Object) {
875
- return '** Recursion ('.get_class($Object).') **';
876
- }
877
- }
878
- array_push($this->objectStack, $Object);
879
-
880
- $return['__className'] = $class = get_class($Object);
881
-
882
- $reflectionClass = new ReflectionClass($class);
883
- $properties = array();
884
- foreach( $reflectionClass->getProperties() as $property) {
885
- $properties[$property->getName()] = $property;
886
- }
887
-
888
- $members = (array)$Object;
889
-
890
- foreach( $properties as $raw_name => $property ) {
891
-
892
- $name = $raw_name;
893
- if($property->isStatic()) {
894
- $name = 'static:'.$name;
895
- }
896
- if($property->isPublic()) {
897
- $name = 'public:'.$name;
898
- } else
899
- if($property->isPrivate()) {
900
- $name = 'private:'.$name;
901
- $raw_name = "\0".$class."\0".$raw_name;
902
- } else
903
- if($property->isProtected()) {
904
- $name = 'protected:'.$name;
905
- $raw_name = "\0".'*'."\0".$raw_name;
906
- }
907
-
908
- if(!(isset($this->objectFilters[$class])
909
- && is_array($this->objectFilters[$class])
910
- && in_array($raw_name,$this->objectFilters[$class]))) {
911
-
912
- if(array_key_exists($raw_name,$members)
913
- && !$property->isStatic()) {
914
-
915
- $return[$name] = $this->encodeObject($members[$raw_name], $ObjectDepth + 1, 1);
916
-
917
- } else {
918
- if(method_exists($property,'setAccessible')) {
919
- $property->setAccessible(true);
920
- $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1);
921
- } else
922
- if($property->isPublic()) {
923
- $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1);
924
- } else {
925
- $return[$name] = '** Need PHP 5.3 to get value **';
926
- }
927
- }
928
- } else {
929
- $return[$name] = '** Excluded by Filter **';
930
- }
931
- }
932
-
933
- // Include all members that are not defined in the class
934
- // but exist in the object
935
- foreach( $members as $raw_name => $value ) {
936
-
937
- $name = $raw_name;
938
-
939
- if ($name{0} == "\0") {
940
- $parts = explode("\0", $name);
941
- $name = $parts[2];
942
- }
943
-
944
- if(!isset($properties[$name])) {
945
- $name = 'undeclared:'.$name;
946
-
947
- if(!(isset($this->objectFilters[$class])
948
- && is_array($this->objectFilters[$class])
949
- && in_array($raw_name,$this->objectFilters[$class]))) {
950
-
951
- $return[$name] = $this->encodeObject($value, $ObjectDepth + 1, 1);
952
- } else {
953
- $return[$name] = '** Excluded by Filter **';
954
- }
955
- }
956
- }
957
-
958
- array_pop($this->objectStack);
959
-
960
- } elseif (is_array($Object)) {
961
-
962
- if ($ArrayDepth > $this->options['maxArrayDepth']) {
963
- return '** Max Array Depth ('.$this->options['maxArrayDepth'].') **';
964
- }
965
-
966
- foreach ($Object as $key => $val) {
967
-
968
- // Encoding the $GLOBALS PHP array causes an infinite loop
969
- // if the recursion is not reset here as it contains
970
- // a reference to itself. This is the only way I have come up
971
- // with to stop infinite recursion in this case.
972
- if($key=='GLOBALS'
973
- && is_array($val)
974
- && array_key_exists('GLOBALS',$val)) {
975
- $val['GLOBALS'] = '** Recursion (GLOBALS) **';
976
- }
977
-
978
- $return[$key] = $this->encodeObject($val, 1, $ArrayDepth + 1);
979
- }
980
- } else {
981
- if(self::is_utf8($Object)) {
982
- return $Object;
983
- } else {
984
- return utf8_encode($Object);
985
- }
986
- }
987
- return $return;
988
- }
989
-
990
- /**
991
- * Returns true if $string is valid UTF-8 and false otherwise.
992
- *
993
- * @param mixed $str String to be tested
994
- * @return boolean
995
- */
996
- protected static function is_utf8($str) {
997
- $c=0; $b=0;
998
- $bits=0;
999
- $len=strlen($str);
1000
- for($i=0; $i<$len; $i++){
1001
- $c=ord($str[$i]);
1002
- if($c > 128){
1003
- if(($c >= 254)) return false;
1004
- elseif($c >= 252) $bits=6;
1005
- elseif($c >= 248) $bits=5;
1006
- elseif($c >= 240) $bits=4;
1007
- elseif($c >= 224) $bits=3;
1008
- elseif($c >= 192) $bits=2;
1009
- else return false;
1010
- if(($i+$bits) > $len) return false;
1011
- while($bits > 1){
1012
- $i++;
1013
- $b=ord($str[$i]);
1014
- if($b < 128 || $b > 191) return false;
1015
- $bits--;
1016
- }
1017
- }
1018
- }
1019
- return true;
1020
- }
1021
-
1022
- /**
1023
- * Converts to and from JSON format.
1024
- *
1025
- * JSON (JavaScript Object Notation) is a lightweight data-interchange
1026
- * format. It is easy for humans to read and write. It is easy for machines
1027
- * to parse and generate. It is based on a subset of the JavaScript
1028
- * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
1029
- * This feature can also be found in Python. JSON is a text format that is
1030
- * completely language independent but uses conventions that are familiar
1031
- * to programmers of the C-family of languages, including C, C++, C#, Java,
1032
- * JavaScript, Perl, TCL, and many others. These properties make JSON an
1033
- * ideal data-interchange language.
1034
- *
1035
- * This package provides a simple encoder and decoder for JSON notation. It
1036
- * is intended for use with client-side Javascript applications that make
1037
- * use of HTTPRequest to perform server communication functions - data can
1038
- * be encoded into JSON notation for use in a client-side javascript, or
1039
- * decoded from incoming Javascript requests. JSON format is native to
1040
- * Javascript, and can be directly eval()'ed with no further parsing
1041
- * overhead
1042
- *
1043
- * All strings should be in ASCII or UTF-8 format!
1044
- *
1045
- * LICENSE: Redistribution and use in source and binary forms, with or
1046
- * without modification, are permitted provided that the following
1047
- * conditions are met: Redistributions of source code must retain the
1048
- * above copyright notice, this list of conditions and the following
1049
- * disclaimer. Redistributions in binary form must reproduce the above
1050
- * copyright notice, this list of conditions and the following disclaimer
1051
- * in the documentation and/or other materials provided with the
1052
- * distribution.
1053
- *
1054
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
1055
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1056
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
1057
- * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
1058
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
1059
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
1060
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
1061
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
1062
- * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
1063
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
1064
- * DAMAGE.
1065
- *
1066
- * @category
1067
- * @package Services_JSON
1068
- * @author Michal Migurski <mike-json@teczno.com>
1069
- * @author Matt Knapp <mdknapp[at]gmail[dot]com>
1070
- * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
1071
- * @author Christoph Dorn <christoph@christophdorn.com>
1072
- * @copyright 2005 Michal Migurski
1073
- * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
1074
- * @license http://www.opensource.org/licenses/bsd-license.php
1075
- * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
1076
- */
1077
-
1078
-
1079
- /**
1080
- * Keep a list of objects as we descend into the array so we can detect recursion.
1081
- */
1082
- private $json_objectStack = array();
1083
-
1084
-
1085
- /**
1086
- * convert a string from one UTF-8 char to one UTF-16 char
1087
- *
1088
- * Normally should be handled by mb_convert_encoding, but
1089
- * provides a slower PHP-only method for installations
1090
- * that lack the multibye string extension.
1091
- *
1092
- * @param string $utf8 UTF-8 character
1093
- * @return string UTF-16 character
1094
- * @access private
1095
- */
1096
- private function json_utf82utf16($utf8)
1097
- {
1098
- // oh please oh please oh please oh please oh please
1099
- if(function_exists('mb_convert_encoding')) {
1100
- return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
1101
- }
1102
-
1103
- switch(strlen($utf8)) {
1104
- case 1:
1105
- // this case should never be reached, because we are in ASCII range
1106
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
1107
- return $utf8;
1108
-
1109
- case 2:
1110
- // return a UTF-16 character from a 2-byte UTF-8 char
1111
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
1112
- return chr(0x07 & (ord($utf8{0}) >> 2))
1113
- . chr((0xC0 & (ord($utf8{0}) << 6))
1114
- | (0x3F & ord($utf8{1})));
1115
-
1116
- case 3:
1117
- // return a UTF-16 character from a 3-byte UTF-8 char
1118
- // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
1119
- return chr((0xF0 & (ord($utf8{0}) << 4))
1120
- | (0x0F & (ord($utf8{1}) >> 2)))
1121
- . chr((0xC0 & (ord($utf8{1}) << 6))
1122
- | (0x7F & ord($utf8{2})));
1123
- }
1124
-
1125
- // ignoring UTF-32 for now, sorry
1126
- return '';
1127
- }
1128
-
1129
- /**
1130
- * encodes an arbitrary variable into JSON format
1131
- *
1132
- * @param mixed $var any number, boolean, string, array, or object to be encoded.
1133
- * see argument 1 to Services_JSON() above for array-parsing behavior.
1134
- * if var is a strng, note that encode() always expects it
1135
- * to be in ASCII or UTF-8 format!
1136
- *
1137
- * @return mixed JSON string representation of input var or an error if a problem occurs
1138
- * @access public
1139
- */
1140
- private function json_encode($var)
1141
- {
1142
-
1143
- if(is_object($var)) {
1144
- if(in_array($var,$this->json_objectStack)) {
1145
- return '"** Recursion **"';
1146
- }
1147
- }
1148
-
1149
- switch (gettype($var)) {
1150
- case 'boolean':
1151
- return $var ? 'true' : 'false';
1152
-
1153
- case 'NULL':
1154
- return 'null';
1155
-
1156
- case 'integer':
1157
- return (int) $var;
1158
-
1159
- case 'double':
1160
- case 'float':
1161
- return (float) $var;
1162
-
1163
- case 'string':
1164
- // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
1165
- $ascii = '';
1166
- $strlen_var = strlen($var);
1167
-
1168
- /*
1169
- * Iterate over every character in the string,
1170
- * escaping with a slash or encoding to UTF-8 where necessary
1171
- */
1172
- for ($c = 0; $c < $strlen_var; ++$c) {
1173
-
1174
- $ord_var_c = ord($var{$c});
1175
-
1176
- switch (true) {
1177
- case $ord_var_c == 0x08:
1178
- $ascii .= '\b';
1179
- break;
1180
- case $ord_var_c == 0x09:
1181
- $ascii .= '\t';
1182
- break;
1183
- case $ord_var_c == 0x0A:
1184
- $ascii .= '\n';
1185
- break;
1186
- case $ord_var_c == 0x0C:
1187
- $ascii .= '\f';
1188
- break;
1189
- case $ord_var_c == 0x0D:
1190
- $ascii .= '\r';
1191
- break;
1192
-
1193
- case $ord_var_c == 0x22:
1194
- case $ord_var_c == 0x2F:
1195
- case $ord_var_c == 0x5C:
1196
- // double quote, slash, slosh
1197
- $ascii .= '\\'.$var{$c};
1198
- break;
1199
-
1200
- case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
1201
- // characters U-00000000 - U-0000007F (same as ASCII)
1202
- $ascii .= $var{$c};
1203
- break;
1204
-
1205
- case (($ord_var_c & 0xE0) == 0xC0):
1206
- // characters U-00000080 - U-000007FF, mask 110XXXXX
1207
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
1208
- $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
1209
- $c += 1;
1210
- $utf16 = $this->json_utf82utf16($char);
1211
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
1212
- break;
1213
-
1214
- case (($ord_var_c & 0xF0) == 0xE0):
1215
- // characters U-00000800 - U-0000FFFF, mask 1110XXXX
1216
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
1217
- $char = pack('C*', $ord_var_c,
1218
- ord($var{$c + 1}),
1219
- ord($var{$c + 2}));
1220
- $c += 2;
1221
- $utf16 = $this->json_utf82utf16($char);
1222
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
1223
- break;
1224
-
1225
- case (($ord_var_c & 0xF8) == 0xF0):
1226
- // characters U-00010000 - U-001FFFFF, mask 11110XXX
1227
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
1228
- $char = pack('C*', $ord_var_c,
1229
- ord($var{$c + 1}),
1230
- ord($var{$c + 2}),
1231
- ord($var{$c + 3}));
1232
- $c += 3;
1233
- $utf16 = $this->json_utf82utf16($char);
1234
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
1235
- break;
1236
-
1237
- case (($ord_var_c & 0xFC) == 0xF8):
1238
- // characters U-00200000 - U-03FFFFFF, mask 111110XX
1239
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
1240
- $char = pack('C*', $ord_var_c,
1241
- ord($var{$c + 1}),
1242
- ord($var{$c + 2}),
1243
- ord($var{$c + 3}),
1244
- ord($var{$c + 4}));
1245
- $c += 4;
1246
- $utf16 = $this->json_utf82utf16($char);
1247
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
1248
- break;
1249
-
1250
- case (($ord_var_c & 0xFE) == 0xFC):
1251
- // characters U-04000000 - U-7FFFFFFF, mask 1111110X
1252
- // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
1253
- $char = pack('C*', $ord_var_c,
1254
- ord($var{$c + 1}),
1255
- ord($var{$c + 2}),
1256
- ord($var{$c + 3}),
1257
- ord($var{$c + 4}),
1258
- ord($var{$c + 5}));
1259
- $c += 5;
1260
- $utf16 = $this->json_utf82utf16($char);
1261
- $ascii .= sprintf('\u%04s', bin2hex($utf16));
1262
- break;
1263
- }
1264
- }
1265
-
1266
- return '"'.$ascii.'"';
1267
-
1268
- case 'array':
1269
- /*
1270
- * As per JSON spec if any array key is not an integer
1271
- * we must treat the the whole array as an object. We
1272
- * also try to catch a sparsely populated associative
1273
- * array with numeric keys here because some JS engines
1274
- * will create an array with empty indexes up to
1275
- * max_index which can cause memory issues and because
1276
- * the keys, which may be relevant, will be remapped
1277
- * otherwise.
1278
- *
1279
- * As per the ECMA and JSON specification an object may
1280
- * have any string as a property. Unfortunately due to
1281
- * a hole in the ECMA specification if the key is a
1282
- * ECMA reserved word or starts with a digit the
1283
- * parameter is only accessible using ECMAScript's
1284
- * bracket notation.
1285
- */
1286
-
1287
- // treat as a JSON object
1288
- if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
1289
-
1290
- $this->json_objectStack[] = $var;
1291
-
1292
- $properties = array_map(array($this, 'json_name_value'),
1293
- array_keys($var),
1294
- array_values($var));
1295
-
1296
- array_pop($this->json_objectStack);
1297
-
1298
- foreach($properties as $property) {
1299
- if($property instanceof Exception) {
1300
- return $property;
1301
- }
1302
- }
1303
-
1304
- return '{' . join(',', $properties) . '}';
1305
- }
1306
-
1307
- $this->json_objectStack[] = $var;
1308
-
1309
- // treat it like a regular array
1310
- $elements = array_map(array($this, 'json_encode'), $var);
1311
-
1312
- array_pop($this->json_objectStack);
1313
-
1314
- foreach($elements as $element) {
1315
- if($element instanceof Exception) {
1316
- return $element;
1317
- }
1318
- }
1319
-
1320
- return '[' . join(',', $elements) . ']';
1321
-
1322
- case 'object':
1323
- $vars = self::encodeObject($var);
1324
-
1325
- $this->json_objectStack[] = $var;
1326
-
1327
- $properties = array_map(array($this, 'json_name_value'),
1328
- array_keys($vars),
1329
- array_values($vars));
1330
-
1331
- array_pop($this->json_objectStack);
1332
-
1333
- foreach($properties as $property) {
1334
- if($property instanceof Exception) {
1335
- return $property;
1336
- }
1337
- }
1338
-
1339
- return '{' . join(',', $properties) . '}';
1340
-
1341
- default:
1342
- return null;
1343
- }
1344
- }
1345
-
1346
- /**
1347
- * array-walking function for use in generating JSON-formatted name-value pairs
1348
- *
1349
- * @param string $name name of key to use
1350
- * @param mixed $value reference to an array element to be encoded
1351
- *
1352
- * @return string JSON-formatted name-value pair, like '"name":value'
1353
- * @access private
1354
- */
1355
- private function json_name_value($name, $value)
1356
- {
1357
- // Encoding the $GLOBALS PHP array causes an infinite loop
1358
- // if the recursion is not reset here as it contains
1359
- // a reference to itself. This is the only way I have come up
1360
- // with to stop infinite recursion in this case.
1361
- if($name=='GLOBALS'
1362
- && is_array($value)
1363
- && array_key_exists('GLOBALS',$value)) {
1364
- $value['GLOBALS'] = '** Recursion **';
1365
- }
1366
-
1367
- $encoded_value = $this->json_encode($value);
1368
-
1369
- if($encoded_value instanceof Exception) {
1370
- return $encoded_value;
1371
- }
1372
-
1373
- return $this->json_encode(strval($name)) . ':' . $encoded_value;
1374
- }
1375
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
FirePHPCore/LICENSE DELETED
@@ -1,29 +0,0 @@
1
- Software License Agreement (New BSD License)
2
-
3
- Copyright (c) 2006-2008, Christoph Dorn
4
- All rights reserved.
5
-
6
- Redistribution and use in source and binary forms, with or without modification,
7
- are permitted provided that the following conditions are met:
8
-
9
- * Redistributions of source code must retain the above copyright notice,
10
- this list of conditions and the following disclaimer.
11
-
12
- * Redistributions in binary form must reproduce the above copyright notice,
13
- this list of conditions and the following disclaimer in the documentation
14
- and/or other materials provided with the distribution.
15
-
16
- * Neither the name of Christoph Dorn nor the names of its
17
- contributors may be used to endorse or promote products derived from this
18
- software without specific prior written permission.
19
-
20
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
21
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
24
- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
27
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
FirePHPCore/fb.php DELETED
@@ -1,246 +0,0 @@
1
- <?php
2
-
3
- /* ***** BEGIN LICENSE BLOCK *****
4
- *
5
- * This file is part of FirePHP (http://www.firephp.org/).
6
- *
7
- * Software License Agreement (New BSD License)
8
- *
9
- * Copyright (c) 2006-2008, Christoph Dorn
10
- * All rights reserved.
11
- *
12
- * Redistribution and use in source and binary forms, with or without modification,
13
- * are permitted provided that the following conditions are met:
14
- *
15
- * * Redistributions of source code must retain the above copyright notice,
16
- * this list of conditions and the following disclaimer.
17
- *
18
- * * Redistributions in binary form must reproduce the above copyright notice,
19
- * this list of conditions and the following disclaimer in the documentation
20
- * and/or other materials provided with the distribution.
21
- *
22
- * * Neither the name of Christoph Dorn nor the names of its
23
- * contributors may be used to endorse or promote products derived from this
24
- * software without specific prior written permission.
25
- *
26
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
27
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
30
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
33
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
- *
37
- * ***** END LICENSE BLOCK *****
38
- *
39
- * @copyright Copyright (C) 2007-2008 Christoph Dorn
40
- * @author Christoph Dorn <christoph@christophdorn.com>
41
- * @license http://www.opensource.org/licenses/bsd-license.php
42
- * @package FirePHP
43
- */
44
-
45
- require_once dirname(__FILE__).'/FirePHP.class.php';
46
-
47
- /**
48
- * Sends the given data to the FirePHP Firefox Extension.
49
- * The data can be displayed in the Firebug Console or in the
50
- * "Server" request tab.
51
- *
52
- * @see http://www.firephp.org/Wiki/Reference/Fb
53
- * @param mixed $Object
54
- * @return true
55
- * @throws Exception
56
- */
57
- function fb()
58
- {
59
- $instance = FirePHP::getInstance(true);
60
-
61
- $args = func_get_args();
62
- return call_user_func_array(array($instance,'fb'),$args);
63
- }
64
-
65
-
66
- class FB
67
- {
68
- /**
69
- * Enable and disable logging to Firebug
70
- *
71
- * @see FirePHP->setEnabled()
72
- * @param boolean $Enabled TRUE to enable, FALSE to disable
73
- * @return void
74
- */
75
- public static function setEnabled($Enabled) {
76
- $instance = FirePHP::getInstance(true);
77
- $instance->setEnabled($Enabled);
78
- }
79
-
80
- /**
81
- * Check if logging is enabled
82
- *
83
- * @see FirePHP->getEnabled()
84
- * @return boolean TRUE if enabled
85
- */
86
- public static function getEnabled() {
87
- $instance = FirePHP::getInstance(true);
88
- return $instance->getEnabled();
89
- }
90
-
91
- /**
92
- * Specify a filter to be used when encoding an object
93
- *
94
- * Filters are used to exclude object members.
95
- *
96
- * @see FirePHP->setObjectFilter()
97
- * @param string $Class The class name of the object
98
- * @param array $Filter An array or members to exclude
99
- * @return void
100
- */
101
- public static function setObjectFilter($Class, $Filter) {
102
- $instance = FirePHP::getInstance(true);
103
- $instance->setObjectFilter($Class, $Filter);
104
- }
105
-
106
- /**
107
- * Set some options for the library
108
- *
109
- * @see FirePHP->setOptions()
110
- * @param array $Options The options to be set
111
- * @return void
112
- */
113
- public static function setOptions($Options) {
114
- $instance = FirePHP::getInstance(true);
115
- $instance->setOptions($Options);
116
- }
117
-
118
- /**
119
- * Log object to firebug
120
- *
121
- * @see http://www.firephp.org/Wiki/Reference/Fb
122
- * @param mixed $Object
123
- * @return true
124
- * @throws Exception
125
- */
126
- public static function send()
127
- {
128
- $instance = FirePHP::getInstance(true);
129
- $args = func_get_args();
130
- return call_user_func_array(array($instance,'fb'),$args);
131
- }
132
-
133
- /**
134
- * Start a group for following messages
135
- *
136
- * @param string $Name
137
- * @return true
138
- * @throws Exception
139
- */
140
- public static function group($Name) {
141
- return self::send(null, $Name, FirePHP::GROUP_START);
142
- }
143
-
144
- /**
145
- * Ends a group you have started before
146
- *
147
- * @return true
148
- * @throws Exception
149
- */
150
- public static function groupEnd() {
151
- return self::send(null, null, FirePHP::GROUP_END);
152
- }
153
-
154
- /**
155
- * Log object with label to firebug console
156
- *
157
- * @see FirePHP::LOG
158
- * @param mixes $Object
159
- * @param string $Label
160
- * @return true
161
- * @throws Exception
162
- */
163
- public static function log($Object, $Label=null) {
164
- return self::send($Object, $Label, FirePHP::LOG);
165
- }
166
-
167
- /**
168
- * Log object with label to firebug console
169
- *
170
- * @see FirePHP::INFO
171
- * @param mixes $Object
172
- * @param string $Label
173
- * @return true
174
- * @throws Exception
175
- */
176
- public static function info($Object, $Label=null) {
177
- return self::send($Object, $Label, FirePHP::INFO);
178
- }
179
-
180
- /**
181
- * Log object with label to firebug console
182
- *
183
- * @see FirePHP::WARN
184
- * @param mixes $Object
185
- * @param string $Label
186
- * @return true
187
- * @throws Exception
188
- */
189
- public static function warn($Object, $Label=null) {
190
- return self::send($Object, $Label, FirePHP::WARN);
191
- }
192
-
193
- /**
194
- * Log object with label to firebug console
195
- *
196
- * @see FirePHP::ERROR
197
- * @param mixes $Object
198
- * @param string $Label
199
- * @return true
200
- * @throws Exception
201
- */
202
- public static function error($Object, $Label=null) {
203
- return self::send($Object, $Label, FirePHP::ERROR);
204
- }
205
-
206
- /**
207
- * Dumps key and variable to firebug server panel
208
- *
209
- * @see FirePHP::DUMP
210
- * @param string $Key
211
- * @param mixed $Variable
212
- * @return true
213
- * @throws Exception
214
- */
215
- public static function dump($Key, $Variable) {
216
- return self::send($Variable, $Key, FirePHP::DUMP);
217
- }
218
-
219
- /**
220
- * Log a trace in the firebug console
221
- *
222
- * @see FirePHP::TRACE
223
- * @param string $Label
224
- * @return true
225
- * @throws Exception
226
- */
227
- public static function trace($Label) {
228
- return self::send($Label, FirePHP::TRACE);
229
- }
230
-
231
- /**
232
- * Log a table in the firebug console
233
- *
234
- * @see FirePHP::TABLE
235
- * @param string $Label
236
- * @param string $Table
237
- * @return true
238
- * @throws Exception
239
- */
240
- public static function table($Label, $Table) {
241
- return self::send($Table, $Label, FirePHP::TABLE);
242
- }
243
-
244
- }
245
-
246
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dbem_events.php CHANGED
@@ -4,7 +4,6 @@
4
  function dbem_new_event_page() {
5
 
6
  $title=__("Insert New Event", 'dbem');
7
- $event = dbem_get_event($element);
8
  dbem_event_form($event, $title, $element);
9
 
10
  }
@@ -100,7 +99,7 @@ function dbem_events_subpanel() {
100
  $validation_result = dbem_validate_event($event);
101
 
102
 
103
- if (true) { //RESETME( $validation_result == "OK") {
104
  // validation successful
105
 
106
  $related_location = dbem_get_identical_location($location);
@@ -120,7 +119,7 @@ function dbem_events_subpanel() {
120
 
121
  if(!$event_ID && !$recurrence_ID ) {
122
  // there isn't anything
123
- if ($_POST[repeated_event]) {
124
 
125
  //insert new recurrence
126
  dbem_insert_recurrent_event($event,$recurrence);
@@ -879,7 +878,7 @@ function dbem_events_table($events, $limit, $title) {
879
  <form id="posts-filter" action="" method="get">
880
  <input type='hidden' name='page' value='events-manager/events-manager.php'/>
881
  <ul class="subsubsub">
882
- <li><a href='edit.php' class="current"><? _e('Total', 'dbem');?> <span class="count">(<?php echo (count($events));?>)</span></a> </li></ul>
883
 
884
 
885
  <div class="tablenav">
@@ -890,7 +889,7 @@ function dbem_events_table($events, $limit, $title) {
890
  <option value="deleteEvents"><?php _e('Delete selected');?></option>
891
 
892
  </select>
893
- <input type="submit" value="<? _e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
894
  <select name="scope">
895
 
896
  <?php
@@ -1156,7 +1155,7 @@ function dbem_event_form($event, $title, $element) {
1156
 
1157
  <div class="postbox " >
1158
  <div class="handlediv" title="Fare clic per cambiare."><br /></div>
1159
- <h3 class='hndle'><span><? _e('Contact Person','dbem');?></span></h3>
1160
  <div class="inside">
1161
  <p>Contact: <?php wp_dropdown_users(array('name'=>'event_contactperson_id', 'show_option_none'=>__("Select...",'dbem'),'selected'=>$event['event_contactperson_id'])) ; ?></p>
1162
  </div>
@@ -1169,15 +1168,18 @@ function dbem_event_form($event, $title, $element) {
1169
  <h3 class='hndle'><span>RSVP</span></h3>
1170
  <div class="inside">
1171
 
1172
- <p><input id="rsvp-checkbox" name='event_rsvp' value='1' type='checkbox' <?php echo $event_RSVP_checked ?> /> <? _e('Enable registration for this event', 'dbem')?></p>
1173
  <div id='rsvp-data'>
 
1174
  <?php
1175
  if ($event['event_contactperson_id'] != NULL)
1176
  $selected = $event['event_contactperson_id'];
1177
  else
1178
  $selected = '0';?>
1179
- <p> <?php _e('Spaces');?>: <input id="seats-input" type="text" name="event_seats" size='5' value="<?php echo $event[$pref.'seats']?>" /></p>
1180
- <?php dbem_bookings_compact_table($event[$pref.'id']); ?>
 
 
1181
  </div>
1182
  </div>
1183
  </div>
@@ -1307,33 +1309,24 @@ function dbem_event_form($event, $title, $element) {
1307
  }
1308
 
1309
  function dbem_validate_event($event) {
1310
- // TODO decide which fields are required
1311
- // Implement type check for dates, etc
1312
  global $required_fields;
1313
-
1314
  foreach ($required_fields as $field) {
1315
  if ($event[$field] == "" ) {
1316
- return $field.__(" is missing!", "dbem");
1317
  }
1318
  }
1319
-
1320
- $event_year = substr($event['event_date'],0,4);
1321
- $event_month = substr($event['event_date'],5,2);
1322
- $event_day = substr($event['event_date'],8,2);
1323
-
1324
- // if (!_dbem_is_date_valid($event['event_date'])) {
1325
- // return __("invalid date!", "dbem");
1326
- // }
1327
- $time = $event['event_hh'].":".$event['event_mm'];
1328
- $end_time = $event['event_end_hh'].":".$event['event_end_mm'];
1329
- // TODO re-IMPLEMENT TIME VALIDATION
1330
- // if ( !_dbem_is_time_valid($time) ) {
1331
- // return __("invalid time","dbem");
1332
- // }
1333
- $use_event_end = get_option('dbem_use_event_end');
1334
- if ($use_event_end && $event['event_date']." ".$time > $event['event_end_date']." ".$end_time)
1335
- return __("end date before begin date", "dbem");
1336
- return "OK";
1337
 
1338
  }
1339
 
@@ -1513,7 +1506,48 @@ $j(document).ready( function() {
1513
  // }
1514
  jQuery('#event_notes h3').click( function() {
1515
  jQuery(jQuery(this).parent().get(0)).toggleClass('closed');
1516
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1517
  });
1518
  //]]>
1519
  </script>
@@ -1756,7 +1790,7 @@ function dbem_rss() {
1756
  $description = dbem_replace_placeholders($description_format, $event, "rss");
1757
  echo "<item>";
1758
  echo "<title>$title</title>\n";
1759
- echo "<link>$events_page_link".$joiner."event_id=$event->event_id</link>\n ";
1760
  echo "<description>$description </description>\n";
1761
  echo "</item>";
1762
  }
4
  function dbem_new_event_page() {
5
 
6
  $title=__("Insert New Event", 'dbem');
 
7
  dbem_event_form($event, $title, $element);
8
 
9
  }
99
  $validation_result = dbem_validate_event($event);
100
 
101
 
102
+ if ($validation_result == "OK") {
103
  // validation successful
104
 
105
  $related_location = dbem_get_identical_location($location);
119
 
120
  if(!$event_ID && !$recurrence_ID ) {
121
  // there isn't anything
122
+ if ($_POST['repeated_event']) {
123
 
124
  //insert new recurrence
125
  dbem_insert_recurrent_event($event,$recurrence);
878
  <form id="posts-filter" action="" method="get">
879
  <input type='hidden' name='page' value='events-manager/events-manager.php'/>
880
  <ul class="subsubsub">
881
+ <li><a href='edit.php' class="current"><?php _e('Total', 'dbem');?> <span class="count">(<?php echo (count($events));?>)</span></a> </li></ul>
882
 
883
 
884
  <div class="tablenav">
889
  <option value="deleteEvents"><?php _e('Delete selected');?></option>
890
 
891
  </select>
892
+ <input type="submit" value="<?php _e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
893
  <select name="scope">
894
 
895
  <?php
1155
 
1156
  <div class="postbox " >
1157
  <div class="handlediv" title="Fare clic per cambiare."><br /></div>
1158
+ <h3 class='hndle'><span><?php _e('Contact Person','dbem');?></span></h3>
1159
  <div class="inside">
1160
  <p>Contact: <?php wp_dropdown_users(array('name'=>'event_contactperson_id', 'show_option_none'=>__("Select...",'dbem'),'selected'=>$event['event_contactperson_id'])) ; ?></p>
1161
  </div>
1168
  <h3 class='hndle'><span>RSVP</span></h3>
1169
  <div class="inside">
1170
 
1171
+ <p><input id="rsvp-checkbox" name='event_rsvp' value='1' type='checkbox' <?php echo $event_RSVP_checked ?> /> <?php _e('Enable registration for this event', 'dbem')?></p>
1172
  <div id='rsvp-data'>
1173
+
1174
  <?php
1175
  if ($event['event_contactperson_id'] != NULL)
1176
  $selected = $event['event_contactperson_id'];
1177
  else
1178
  $selected = '0';?>
1179
+ <p> <?php _e('Spaces');?>: <input id="seats-input" type="text" name="event_seats" size='5' value="<?php echo $event[$pref.'seats']?>" /></p>
1180
+ <?php if($event['event_rsvp']){?>
1181
+ <?php dbem_bookings_compact_table($event[$pref.'id']); ?>
1182
+ <?php } ?>
1183
  </div>
1184
  </div>
1185
  </div>
1309
  }
1310
 
1311
  function dbem_validate_event($event) {
1312
+ // Only for emergencies, when JS is disabled
1313
+ // TODO make it fully functional without JS
1314
  global $required_fields;
1315
+ $errors = Array();
1316
  foreach ($required_fields as $field) {
1317
  if ($event[$field] == "" ) {
1318
+ $errors[] = $field;
1319
  }
1320
  }
1321
+ $error_message = "";
1322
+ if (count($errors) >0)
1323
+ $error_message = __('Missing fields: ').implode(", ", $errors).". ";
1324
+ if($_POST['repeated_event'] == "1" && $_POST['event_end_date'] == "")
1325
+ $error_message .= __('Since the event is repeated, you must specify an event date.','dbem');
1326
+ if ($error_message != "")
1327
+ return $error_message;
1328
+ else
1329
+ return "OK";
 
 
 
 
 
 
 
 
 
1330
 
1331
  }
1332
 
1506
  // }
1507
  jQuery('#event_notes h3').click( function() {
1508
  jQuery(jQuery(this).parent().get(0)).toggleClass('closed');
1509
+ });
1510
+
1511
+ // users cannot submit the event form unless some fields are filled
1512
+ function validateEventForm(){
1513
+ errors = "";
1514
+ var recurring = $j("input[@name=repeated_event]:checked").val();
1515
+ requiredFields= new Array('event_name', 'localised_event_date', 'location_name','location_address','location_town');
1516
+ var localisedRequiredFields = {'event_name':"<?php _e('Name','dbem')?>", 'localised_event_date':"<?php _e('Date','dbem')?>", 'location_name':"<?php _e('Location','dbem')?>",'location_address':"<?php _e('Address','dbem')?>",'location_town':"<?php _e('Town','dbem')?>"};
1517
+
1518
+ missingFields = new Array;
1519
+ for (var i in requiredFields) {
1520
+ if ($j("input[@name=" + requiredFields[i]+ "]").val() == 0) {
1521
+ missingFields.push(localisedRequiredFields[requiredFields[i]]);
1522
+ $j("input[@name=" + requiredFields[i]+ "]").css('border','2px solid red');
1523
+ } else {
1524
+ $j("input[@name=" + requiredFields[i]+ "]").css('border','1px solid #DFDFDF');
1525
+
1526
+ }
1527
+
1528
+ }
1529
+
1530
+ // alert('ciao ' + recurring+ " end: " + $j("input[@name=localised_event_end_date]").val());
1531
+ if (missingFields.length > 0) {
1532
+
1533
+ errors = "<?php echo _e('Some required fields are missing:','dbem' )?> " + missingFields.join(", ") + ".\n";
1534
+ }
1535
+ if(recurring && $j("input[@name=localised_event_end_date]").val() == "") {
1536
+ errors = errors + "<?php _e('Since the event is repeated, you must specify an end date','dbem')?>.";
1537
+ $j("input[@name=localised_event_end_date]").css('border','2px solid red');
1538
+ } else {
1539
+ $j("input[@name=localised_event_end_date]").css('border','1px solid #DFDFDF');
1540
+ }
1541
+ if(errors != "") {
1542
+ alert(errors);
1543
+ return false;
1544
+ }
1545
+ return true;
1546
+ }
1547
+
1548
+ $j('#eventForm').bind("submit", validateEventForm);
1549
+
1550
+
1551
  });
1552
  //]]>
1553
  </script>
1790
  $description = dbem_replace_placeholders($description_format, $event, "rss");
1791
  echo "<item>";
1792
  echo "<title>$title</title>\n";
1793
+ echo "<link>$events_page_link".$joiner."event_id=".$event['event_id']."</link>\n ";
1794
  echo "<description>$description </description>\n";
1795
  echo "</item>";
1796
  }
dbem_global_map.js CHANGED
@@ -1,5 +1,5 @@
1
  $j=jQuery.noConflict();
2
- console.log("eventful: " + eventful + " scope " + scope);
3
 
4
  $j(document.body).unload(function() {
5
  if (GBrowserIsCompatible()) {
1
  $j=jQuery.noConflict();
2
+ // console.log("eventful: " + eventful + " scope " + scope);
3
 
4
  $j(document.body).unload(function() {
5
  if (GBrowserIsCompatible()) {
dbem_rsvp.php CHANGED
@@ -228,7 +228,6 @@ function dbem_bookings_table($event_id) {
228
  }
229
 
230
  function dbem_bookings_compact_table($event_id) {
231
-
232
  $bookings = dbem_get_bookings_for($event_id);
233
  $destination = get_bloginfo('url')."/wp-admin/edit.php";
234
  $available_seats = dbem_get_available_seats($event_id);
@@ -376,4 +375,13 @@ function dbem_ascii_encode($e)
376
  return $output;
377
  }
378
 
 
 
 
 
 
 
 
 
 
379
  ?>
228
  }
229
 
230
  function dbem_bookings_compact_table($event_id) {
 
231
  $bookings = dbem_get_bookings_for($event_id);
232
  $destination = get_bloginfo('url')."/wp-admin/edit.php";
233
  $available_seats = dbem_get_available_seats($event_id);
375
  return $output;
376
  }
377
 
378
+ function dbem_is_event_rsvpable() {
379
+ if (dbem_is_single_event_page()) {
380
+ $event = dbem_get_event($_GET['event_id']);
381
+ if($event)
382
+ return $event['event_rsvp'];
383
+ }
384
+ return 0;
385
+ }
386
+
387
  ?>
events-manager.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /*
3
  Plugin Name: Events Manager
4
- Version: 2.0b4
5
  Plugin URI: http://davidebenini.it/wordpress-plugins/events-manager/
6
  Description: Manage events specifying precise spatial data (Location, Town, Province, etc).
7
  Author: Davide Benini
@@ -9,7 +9,7 @@ Author URI: http://www.davidebenini.it/blog
9
  */
10
 
11
  /*
12
- Copyright (c) 2008, Davide Benini. $Revision: 1 $
13
 
14
  This program is free software; you can redistribute it and/or
15
  modify it under the terms of the GNU General Public License
@@ -58,20 +58,9 @@ define('DEFAULT_IMAGE_MAX_WIDTH', 700);
58
  define('DEFAULT_IMAGE_MAX_HEIGHT', 700);
59
  define('DEFAULT_IMAGE_MAX_SIZE', 204800);
60
  // DEBUG constant for developing
61
- // if you are hacking this plugin, set to TRUE, alog will show in admin pages
62
- define('USE_FIREPHP', false);
63
- // DEBUG constant for developing
64
  // if you are hacking this plugin, set to TRUE, a log will show in admin pages
65
  define('DEBUG', false);
66
 
67
- // if (DEBUG) {
68
- // if (USE_FIREPHP) {
69
- // require('FirePHPCore/fb.php');
70
- // ob_start();
71
- // fb('FirePHP activated');
72
- // }
73
- // }
74
-
75
  // INCLUDES
76
  include("dbem_events.php");
77
  include("dbem_calendar.php");
@@ -130,9 +119,11 @@ function dbem_install() {
130
  dbem_create_bookings_table();
131
  dbem_create_people_table();
132
  dbem_add_options();
133
- dbem_migrate_old_events();
134
- update_option('dbem_version', 2);
135
-
 
 
136
  // Create events page if necessary
137
  $events_page_id = get_option('dbem_events_page') ;
138
  if ($events_page_id != "" ) {
@@ -340,9 +331,8 @@ function dbem_create_people_table() {
340
  }
341
 
342
  function dbem_migrate_old_events() {
343
- $version = get_option('dbem_version');
344
 
345
- if ($version < 2) {
346
  global $wpdb;
347
 
348
  $events_table = $wpdb->prefix.EVENTS_TBNAME;
@@ -375,7 +365,7 @@ function dbem_migrate_old_events() {
375
 
376
  }
377
 
378
- }
379
  }
380
 
381
  function dbem_add_options() {
@@ -413,8 +403,7 @@ function dbem_add_options() {
413
  'dbem_image_max_width' => DEFAULT_IMAGE_MAX_WIDTH,
414
  'dbem_image_max_height' => DEFAULT_IMAGE_MAX_HEIGHT,
415
  'dbem_image_max_size' => DEFAULT_IMAGE_MAX_SIZE,
416
- 'dbem_hello_to_user' => 1,
417
- 'dbem_version' => 1);
418
 
419
  foreach($dbem_options as $key => $value)
420
  dbem_add_option($key, $value);
1
  <?php
2
  /*
3
  Plugin Name: Events Manager
4
+ Version: 2.0rc1
5
  Plugin URI: http://davidebenini.it/wordpress-plugins/events-manager/
6
  Description: Manage events specifying precise spatial data (Location, Town, Province, etc).
7
  Author: Davide Benini
9
  */
10
 
11
  /*
12
+ Copyright (c) 2009, Davide Benini. $Revision: 1 $
13
 
14
  This program is free software; you can redistribute it and/or
15
  modify it under the terms of the GNU General Public License
58
  define('DEFAULT_IMAGE_MAX_HEIGHT', 700);
59
  define('DEFAULT_IMAGE_MAX_SIZE', 204800);
60
  // DEBUG constant for developing
 
 
 
61
  // if you are hacking this plugin, set to TRUE, a log will show in admin pages
62
  define('DEBUG', false);
63
 
 
 
 
 
 
 
 
 
64
  // INCLUDES
65
  include("dbem_events.php");
66
  include("dbem_calendar.php");
119
  dbem_create_bookings_table();
120
  dbem_create_people_table();
121
  dbem_add_options();
122
+ // if ANY 1.0 option is there AND the version options hasn't been set yet THEN launch the updat script
123
+ if (get_option('dbem_events_page') && !get_option('dbem_version'))
124
+ dbem_migrate_old_events();
125
+
126
+ update_option('dbem_version', 2);
127
  // Create events page if necessary
128
  $events_page_id = get_option('dbem_events_page') ;
129
  if ($events_page_id != "" ) {
331
  }
332
 
333
  function dbem_migrate_old_events() {
 
334
 
335
+
336
  global $wpdb;
337
 
338
  $events_table = $wpdb->prefix.EVENTS_TBNAME;
365
 
366
  }
367
 
368
+
369
  }
370
 
371
  function dbem_add_options() {
403
  'dbem_image_max_width' => DEFAULT_IMAGE_MAX_WIDTH,
404
  'dbem_image_max_height' => DEFAULT_IMAGE_MAX_HEIGHT,
405
  'dbem_image_max_size' => DEFAULT_IMAGE_MAX_SIZE,
406
+ 'dbem_hello_to_user' => 1);
 
407
 
408
  foreach($dbem_options as $key => $value)
409
  dbem_add_option($key, $value);
events_manager.css CHANGED
@@ -96,4 +96,7 @@ div#icon-events{
96
  table#dbem-location-data th {
97
  text-align: right;
98
  width: 50px;
 
 
 
99
  }
96
  table#dbem-location-data th {
97
  text-align: right;
98
  width: 50px;
99
+ }
100
+ #dbem-location-map img {
101
+ max-width: none;
102
  }
js/jquery-ui-datepicker/i18n/ui.datepicker-ar.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Arabic Translation for jQuery UI date picker plugin. */
2
+ /* Khaled Al Horani -- koko.dw@gmail.com */
3
+ /* خالد الحوراني -- koko.dw@gmail.com */
4
+ /* NOTE: monthNames are the original months names and thez are the Arabic names, not the new months name فبراير - يناير and there isnät any Arabic roots for these months */
5
+ jQuery(function($){
6
+ $.datepicker.regional['ar'] = {
7
+ clearText: 'مسح', clearStatus: 'امسح التاريخ الحالي',
8
+ closeText: 'إغلاق', closeStatus: 'إغلاق بدون حفظ',
9
+ prevText: '<السابق', prevStatus: 'عرض الشهر السابق',
10
+ nextText: 'التالي>', nextStatus: 'عرض الشهر القادم',
11
+ currentText: 'اليوم', currentStatus: 'عرض الشهر الحالي',
12
+ monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'آذار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
13
+ monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'],
14
+ monthStatus: 'عرض شهر آخر', yearStatus: 'عرض سنة آخرى',
15
+ weekHeader: 'أسبوع', weekStatus: 'أسبوع السنة',
16
+ dayNames: ['السبت', 'الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة'],
17
+ dayNamesShort: ['سبت', 'أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة'],
18
+ dayNamesMin: ['سبت', 'أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة'],
19
+ dayStatus: 'اختر DD لليوم الأول من الأسبوع', dateStatus: 'اختر D, M d',
20
+ dateFormat: 'dd/mm/yy', firstDay: 0,
21
+ initStatus: 'اختر يوم', isRTL: true};
22
+ $.datepicker.setDefaults($.datepicker.regional['ar']);
23
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-bg.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Bulgarian initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Stoyan Kyosev (http://svest.org). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['bg'] = {clearText: 'изчисти', clearStatus: 'изчисти актуалната дата',
5
+ closeText: 'затвори', closeStatus: 'затвори без промени',
6
+ prevText: '&#x3c;назад', prevStatus: 'покажи последния месец',
7
+ nextText: 'напред&#x3e;', nextStatus: 'покажи следващия месец',
8
+ currentText: 'днес', currentStatus: '',
9
+ monthNames: ['Януари','Февруари','Март','Април','Май','Юни',
10
+ 'Юли','Август','Септември','Октомври','Ноември','Декември'],
11
+ monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни',
12
+ 'Юли','Авг','Сеп','Окт','Нов','Дек'],
13
+ monthStatus: 'покажи друг месец', yearStatus: 'покажи друга година',
14
+ weekHeader: 'Wk', weekStatus: 'седмица от месеца',
15
+ dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'],
16
+ dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'],
17
+ dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'],
18
+ dayStatus: 'Сложи DD като първи ден от седмицата', dateStatus: 'Избери D, M d',
19
+ dateFormat: 'dd.mm.yy', firstDay: 1,
20
+ initStatus: 'Избери дата', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['bg']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-ca.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Inicialitzaci� en catal� per a l'extenci� 'calendar' per jQuery. */
2
+ /* Writers: (joan.leon@gmail.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['ca'] = {clearText: 'Netejar', clearStatus: '',
5
+ closeText: 'Tancar', closeStatus: '',
6
+ prevText: '&lt;Ant', prevStatus: '',
7
+ nextText: 'Seg&gt;', nextStatus: '',
8
+ currentText: 'Avui', currentStatus: '',
9
+ monthNames: ['Gener','Febrer','Mar&ccedil;','Abril','Maig','Juny',
10
+ 'Juliol','Agost','Setembre','Octubre','Novembre','Desembre'],
11
+ monthNamesShort: ['Gen','Feb','Mar','Abr','Mai','Jun',
12
+ 'Jul','Ago','Set','Oct','Nov','Des'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Sm', weekStatus: '',
15
+ dayNames: ['Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte'],
16
+ dayNamesShort: ['Dug','Dln','Dmt','Dmc','Djs','Dvn','Dsb'],
17
+ dayNamesMin: ['Dg','Dl','Dt','Dc','Dj','Dv','Ds'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'mm/dd/yy', firstDay: 0,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['ca']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-cs.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Czech initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Tomas Muller (tomas@tomas-muller.net). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['cs'] = {clearText: 'Vymazat', clearStatus: 'Vymaže zadané datum',
5
+ closeText: 'Zavřít', closeStatus: 'Zavře kalendář beze změny',
6
+ prevText: '&#x3c;Dříve', prevStatus: 'Přejít na předchozí měsí',
7
+ nextText: 'Později&#x3e;', nextStatus: 'Přejít na další měsíc',
8
+ currentText: 'Nyní', currentStatus: 'Přejde na aktuální měsíc',
9
+ monthNames: ['leden','únor','březen','duben','květen','červen',
10
+ 'červenec','srpen','září','říjen','listopad','prosinec'],
11
+ monthNamesShort: ['led','úno','bře','dub','kvě','čer',
12
+ 'čvc','srp','zář','říj','lis','pro'],
13
+ monthStatus: 'Přejít na jiný měsíc', yearStatus: 'Přejít na jiný rok',
14
+ weekHeader: 'Týd', weekStatus: 'Týden v roce',
15
+ dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
16
+ dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
17
+ dayNamesMin: ['ne','po','út','st','čt','pá','so'],
18
+ dayStatus: 'Nastavit DD jako první den v týdnu', dateStatus: '\'Vyber\' DD, M d',
19
+ dateFormat: 'dd.mm.yy', firstDay: 1,
20
+ initStatus: 'Vyberte datum', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['cs']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-da.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Danish initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Jan Christensen ( deletestuff@gmail.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['da'] = {clearText: 'Nulstil', clearStatus: 'Nulstil den aktuelle dato',
5
+ closeText: 'Luk', closeStatus: 'Luk uden ændringer',
6
+ prevText: '&#x3c;Forrige', prevStatus: 'Vis forrige måned',
7
+ nextText: 'Næste&#x3e;', nextStatus: 'Vis næste måned',
8
+ currentText: 'Idag', currentStatus: 'Vis aktuel måned',
9
+ monthNames: ['Januar','Februar','Marts','April','Maj','Juni',
10
+ 'Juli','August','September','Oktober','November','December'],
11
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
12
+ 'Jul','Aug','Sep','Okt','Nov','Dec'],
13
+ monthStatus: 'Vis en anden måned', yearStatus: 'Vis et andet år',
14
+ weekHeader: 'Uge', weekStatus: 'Årets uge',
15
+ dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],
16
+ dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],
17
+ dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],
18
+ dayStatus: 'Sæt DD som første ugedag', dateStatus: 'Vælg D, M d',
19
+ dateFormat: 'dd-mm-yy', firstDay: 0,
20
+ initStatus: 'Vælg en dato', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['da']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-de.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* German initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Milian Wolff (mail@milianw.de). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['de'] = {clearText: 'löschen', clearStatus: 'aktuelles Datum löschen',
5
+ closeText: 'schließen', closeStatus: 'ohne Änderungen schließen',
6
+ prevText: '&#x3c;zurück', prevStatus: 'letzten Monat zeigen',
7
+ nextText: 'Vor&#x3e;', nextStatus: 'nächsten Monat zeigen',
8
+ currentText: 'heute', currentStatus: '',
9
+ monthNames: ['Januar','Februar','März','April','Mai','Juni',
10
+ 'Juli','August','September','Oktober','November','Dezember'],
11
+ monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
12
+ 'Jul','Aug','Sep','Okt','Nov','Dez'],
13
+ monthStatus: 'anderen Monat anzeigen', yearStatus: 'anderes Jahr anzeigen',
14
+ weekHeader: 'Wo', weekStatus: 'Woche des Monats',
15
+ dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
16
+ dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
17
+ dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
18
+ dayStatus: 'Setze DD als ersten Wochentag', dateStatus: 'Wähle D, M d',
19
+ dateFormat: 'dd.mm.yy', firstDay: 1,
20
+ initStatus: 'Wähle ein Datum', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['de']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-es.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Inicializaci�n en espa�ol para la extensi�n 'UI date picker' para jQuery. */
2
+ /* Traducido por Vester (xvester@gmail.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['es'] = {clearText: 'Limpiar', clearStatus: '',
5
+ closeText: 'Cerrar', closeStatus: '',
6
+ prevText: '&lt;Ant', prevStatus: '',
7
+ nextText: 'Sig&gt;', nextStatus: '',
8
+ currentText: 'Hoy', currentStatus: '',
9
+ monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio',
10
+ 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
11
+ monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun',
12
+ 'Jul','Ago','Sep','Oct','Nov','Dic'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Sm', weekStatus: '',
15
+ dayNames: ['Domingo','Lunes','Martes','Mi&eacute;rcoles','Jueves','Viernes','S&aacute;dabo'],
16
+ dayNamesShort: ['Dom','Lun','Mar','Mi&eacute;','Juv','Vie','S&aacute;b'],
17
+ dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'dd/mm/yy', firstDay: 0,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['es']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-fi.js ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Finnish initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Harri Kilpi� (harrikilpio@gmail.com). */
3
+
4
+ $(document).ready(function(){
5
+ $.datepicker.regional['fi'] = {
6
+ clearText: 'Tyhjenn&auml;', clearStatus: '',
7
+ closeText: 'Sulje', closeStatus: '',
8
+ prevText: '&laquo;Edellinen', prevStatus: '',
9
+ nextText: 'Seuraava&raquo;', nextStatus: '',
10
+ currentText: 'T&auml;n&auml;&auml;n', currentStatus: '',
11
+ monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kes&auml;kuu',
12
+ 'Hein&auml;kuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],
13
+ monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kes&auml;',
14
+ 'Hein&auml;','Elo','Syys','Loka','Marras','Joulu'],
15
+ monthStatus: '', yearStatus: '',
16
+ weekHeader: 'Vk', weekStatus: '',
17
+ dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','Su'],
18
+ dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'],
19
+ dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'],
20
+ dayStatus: 'DD', dateStatus: 'D, M d',
21
+ dateFormat: 'dd.mm.yy', firstDay: 1,
22
+ initStatus: '', isRTL: false};
23
+ $.datepicker.setDefaults($.datepicker.regional['fi']);
24
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-fr.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* French initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Keith Wood (kbwood@virginbroadband.com.au) and Stéphane Nahmani (sholby@sholby.net). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['fr'] = {clearText: 'Effacer', clearStatus: '',
5
+ closeText: 'Fermer', closeStatus: 'Fermer sans modifier',
6
+ prevText: '&lt;Préc', prevStatus: 'Voir le mois précédent',
7
+ nextText: 'Suiv&gt;', nextStatus: 'Voir le mois suivant',
8
+ currentText: 'Courant', currentStatus: 'Voir le mois courant',
9
+ monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
10
+ 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
11
+ monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',
12
+ 'Jul','Aoû','Sep','Oct','Nov','Déc'],
13
+ monthStatus: 'Voir un autre mois', yearStatus: 'Voir un autre année',
14
+ weekHeader: 'Sm', weekStatus: '',
15
+ dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
16
+ dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
17
+ dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
18
+ dayStatus: 'Utiliser DD comme premier jour de la semaine', dateStatus: 'Choisir le DD, MM d',
19
+ dateFormat: 'dd/mm/yy', firstDay: 0,
20
+ initStatus: 'Choisir la date', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['fr']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-he.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Hebrew initialisation for the UI Datepicker extension. */
2
+ /* Written by Amir Hardon (ahardon at gmail dot com). */
3
+ jQuery(document).ready(function(){
4
+ jQuery.datepicker.regional['he'] = {clearText: 'נקה', clearStatus: '',
5
+ closeText: 'סגור', closeStatus: '',
6
+ prevText: '&#x3c;הקודם', prevStatus: '',
7
+ nextText: 'הבא&#x3e;', nextStatus: '',
8
+ currentText: 'היום', currentStatus: '',
9
+ monthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני',
10
+ 'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],
11
+ monthNamesShort: ['1','2','3','4','5','6',
12
+ '7','8','9','10','11','12'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Sm', weekStatus: '',
15
+ dayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],
16
+ dayNamesShort: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
17
+ dayNamesMin: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
18
+ dayStatus: 'DD', dateStatus: 'DD, M d',
19
+ dateFormat: 'dd/mm/yy', firstDay: 0,
20
+ initStatus: '', isRTL: true};
21
+ jQuery.datepicker.setDefaults($.datepicker.regional['he']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-hu.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Hungarian initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Istvan Karaszi (jquerycalendar@spam.raszi.hu). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['hu'] = {clearText: 'törlés', clearStatus: '',
5
+ closeText: 'bezárás', closeStatus: '',
6
+ prevText: '&laquo;&nbsp;vissza', prevStatus: '',
7
+ nextText: 'előre&nbsp;&raquo;', nextStatus: '',
8
+ currentText: 'ma', currentStatus: '',
9
+ monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június',
10
+ 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],
11
+ monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',
12
+ 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Hé', weekStatus: '',
15
+ dayNames: ['Vasámap', 'Hétfö', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],
16
+ dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'],
17
+ dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'yy-mm-dd', firstDay: 1,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['hu']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-hy.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/
3
+ jQuery(function($){
4
+ $.datepicker.regional['hy'] = {clearText: 'Մաքրել', clearStatus: '',
5
+ closeText: 'Փակել', closeStatus: '',
6
+ prevText: '&lt;Նախ.', prevStatus: '',
7
+ nextText: 'Հաջ.&gt;', nextStatus: '',
8
+ currentText: 'Այսօր', currentStatus: '',
9
+ monthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս',
10
+ 'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'],
11
+ monthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս',
12
+ 'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'ՇԲՏ', weekStatus: '',
15
+ dayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'],
16
+ dayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],
17
+ dayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'dd.mm.yy', firstDay: 1,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['hy']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-id.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Indonesian initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Deden Fathurahman (dedenf@gmail.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['id'] = {clearText: 'kosongkan', clearStatus: 'bersihkan tanggal yang sekarang',
5
+ closeText: 'Tutup', closeStatus: 'Tutup tanpa mengubah',
6
+ prevText: '&lt;mundur', prevStatus: 'Tampilkan bulan sebelumnya',
7
+ nextText: 'maju&gt;', nextStatus: 'Tampilkan bulan berikutnya',
8
+ currentText: 'hari ini', currentStatus: 'Tampilkan bulan sekarang',
9
+ monthNames: ['Januari','Februari','Maret','April','Mei','Juni',
10
+ 'Juli','Agustus','September','Oktober','Nopember','Desember'],
11
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun',
12
+ 'Jul','Agus','Sep','Okt','Nop','Des'],
13
+ monthStatus: 'Tampilkan bulan yang berbeda', yearStatus: 'Tampilkan tahun yang berbeda',
14
+ weekHeader: 'Mg', weekStatus: 'Minggu dalam tahun',
15
+ dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'],
16
+ dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'],
17
+ dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'],
18
+ dayStatus: 'gunakan DD sebagai awal hari dalam minggu', dateStatus: 'pilih le DD, MM d',
19
+ dateFormat: 'dd/mm/yy', firstDay: 0,
20
+ initStatus: 'Pilih Tanggal', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['id']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-is.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Icelandic initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Haukur H. Thorsson (haukur@eskill.is). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['is'] = {clearText: 'Hreinsa', clearStatus: '',
5
+ closeText: 'Loka', closeStatus: '',
6
+ prevText: '< Fyrri', prevStatus: '',
7
+ nextText: 'N&aelig;sti >', nextStatus: '',
8
+ currentText: '&Iacute; dag', currentStatus: '',
9
+ monthNames: ['Jan&uacute;ar','Febr&uacute;ar','Mars','Apr&iacute;l','Ma&iacute','J&uacute;n&iacute;',
10
+ 'J&uacute;l&iacute;','&Aacute;g&uacute;st','September','Okt&oacute;ber','N&oacute;vember','Desember'],
11
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Ma&iacute;','J&uacute;n',
12
+ 'J&uacute;l','&Aacute;g&uacute;','Sep','Okt','N&oacute;v','Des'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Vika', weekStatus: '',
15
+ dayNames: ['Sunnudagur','M&aacute;nudagur','&THORN;ri&eth;judagur','Mi&eth;vikudagur','Fimmtudagur','F&ouml;studagur','Laugardagur'],
16
+ dayNamesShort: ['Sun','M&aacute;n','&THORN;ri','Mi&eth;','Fim','F&ouml;s','Lau'],
17
+ dayNamesMin: ['Su','M&aacute;','&THORN;r','Mi','Fi','F&ouml;','La'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'dd/mm/yy', firstDay: 0,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['is']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-it.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Italian initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Apaella (apaella@gmail.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['it'] = {clearText: 'Svuota', clearStatus: '',
5
+ closeText: 'Chiudi', closeStatus: '',
6
+ prevText: '&lt;Prec', prevStatus: '',
7
+ nextText: 'Succ&gt;', nextStatus: '',
8
+ currentText: 'Oggi', currentStatus: '',
9
+ monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',
10
+ 'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],
11
+ monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu',
12
+ 'Lug','Ago','Set','Ott','Nov','Dic'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Sm', weekStatus: '',
15
+ dayNames: ['Domenica','Luned&#236','Marted&#236','Mercoled&#236','Gioved&#236','Venerd&#236','Sabato'],
16
+ dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],
17
+ dayNamesMin: ['Do','Lu','Ma','Me','Gio','Ve','Sa'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'dd/mm/yy', firstDay: 1,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['it']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-ja.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Japanese (UTF-8) initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Milly. */
3
+ jQuery(function($){
4
+ $.datepicker.regional['ja'] = {clearText: '&#21066;&#38500;', clearStatus: '',
5
+ closeText: '&#38281;&#12376;&#12427;', closeStatus: '',
6
+ prevText: '&lt;&#21069;&#26376;', prevStatus: '',
7
+ nextText: '&#27425;&#26376;&gt;', nextStatus: '',
8
+ currentText: '&#20170;&#26085;', currentStatus: '',
9
+ monthNames: ['1&#26376;','2&#26376;','3&#26376;','4&#26376;','5&#26376;','6&#26376;',
10
+ '7&#26376;','8&#26376;','9&#26376;','10&#26376;','11&#26376;','12&#26376;'],
11
+ monthNamesShort: ['1&#26376;','2&#26376;','3&#26376;','4&#26376;','5&#26376;','6&#26376;',
12
+ '7&#26376;','8&#26376;','9&#26376;','10&#26376;','11&#26376;','12&#26376;'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Wk', weekStatus: '',
15
+ dayNames: ['&#26085;','&#26376;','&#28779;','&#27700;','&#26408;','&#37329;','&#22303;'],
16
+ dayNamesShort: ['&#26085;','&#26376;','&#28779;','&#27700;','&#26408;','&#37329;','&#22303;'],
17
+ dayNamesMin: ['&#26085;','&#26376;','&#28779;','&#27700;','&#26408;','&#37329;','&#22303;'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'yy/mm/dd', firstDay: 0,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['ja']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-ko.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Korean initialisation for the jQuery calendar extension. */
2
+ /* Written by DaeKwon Kang (ncrash.dk@gmail.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['ko'] = {clearText: '지우기', clearStatus: '',
5
+ closeText: '닫기', closeStatus: '',
6
+ prevText: '이전달', prevStatus: '',
7
+ nextText: '다음달', nextStatus: '',
8
+ currentText: '오늘', currentStatus: '',
9
+ monthNames: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)',
10
+ '7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'],
11
+ monthNamesShort: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)',
12
+ '7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Wk', weekStatus: '',
15
+ dayNames: ['일','월','화','수','목','금','토'],
16
+ dayNamesShort: ['일','월','화','수','목','금','토'],
17
+ dayNamesMin: ['일','월','화','수','목','금','토'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'yy-mm-dd', firstDay: 0,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['ko']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-lt.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin.
3
+ *
4
+ * @author Arturas Paleicikas <arturas@avalon.lt>
5
+ */
6
+ jQuery(function($){
7
+ $.datepicker.regional['lt'] = {clearText: 'Išvalyti', clearStatus: '',
8
+ closeText: 'Uždaryti', closeStatus: '',
9
+ prevText: '&lt;Atgal', prevStatus: '',
10
+ nextText: 'Pirmyn&gt;', nextStatus: '',
11
+ currentText: 'Šiandien', currentStatus: '',
12
+ monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis',
13
+ 'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'],
14
+ monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir',
15
+ 'Lie','Rugp','Rugs','Spa','Lap','Gru'],
16
+ monthStatus: '', yearStatus: '',
17
+ weekHeader: '', weekStatus: '',
18
+ dayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'],
19
+ dayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'],
20
+ dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'],
21
+ dayStatus: 'DD', dateStatus: 'D, M d',
22
+ dateFormat: 'yy-mm-dd', firstDay: 1,
23
+ initStatus: '', isRTL: false};
24
+ $.datepicker.setDefaults($.datepicker.regional['lt']);
25
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-lv.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Latvian (UTF-8) initialisation for the jQuery UI date picker plugin.
3
+ * @author Arturas Paleicikas <arturas.paleicikas@metasite.net>
4
+ */
5
+ jQuery(function($){
6
+ $.datepicker.regional['lv'] = {
7
+ clearText: 'Notīrīt', clearStatus: '',
8
+ closeText: 'Aizvērt', closeStatus: '',
9
+ prevText: 'Iepr', prevStatus: '',
10
+ nextText: 'Nāka', nextStatus: '',
11
+ currentText: 'Šodien', currentStatus: '',
12
+ monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs',
13
+ 'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'],
14
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn',
15
+ 'Jūl','Aug','Sep','Okt','Nov','Dec'],
16
+ monthStatus: '', yearStatus: '',
17
+ weekHeader: 'Nav', weekStatus: '',
18
+ dayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'],
19
+ dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'],
20
+ dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'],
21
+ dayStatus: 'DD', dateStatus: 'D, M d',
22
+ dateFormat: 'dd-mm-yy', firstDay: 1,
23
+ initStatus: '', isRTL: false};
24
+ $.datepicker.setDefaults($.datepicker.regional['lv']);
25
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-nl.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */
2
+ jQuery(function($){
3
+ $.datepicker.regional['nl'] = {clearText: 'Wissen', clearStatus: 'Wis de huidige datum',
4
+ closeText: 'Sluiten', closeStatus: 'Sluit zonder verandering',
5
+ prevText: '&lt;Terug', prevStatus: 'Laat de voorgaande maand zien',
6
+ nextText: 'Volgende&gt;', nextStatus: 'Laat de volgende maand zien',
7
+ currentText: 'Vandaag', currentStatus: 'Laat de huidige maand zien',
8
+ monthNames: ['Januari','Februari','Maart','April','Mei','Juni',
9
+ 'Juli','Augustus','September','Oktober','November','December'],
10
+ monthNamesShort: ['Jan','Feb','Mrt','Apr','Mei','Jun',
11
+ 'Jul','Aug','Sep','Okt','Nov','Dec'],
12
+ monthStatus: 'Laat een andere maand zien', yearStatus: 'Laat een ander jaar zien',
13
+ weekHeader: 'Wk', weekStatus: 'Week van het jaar',
14
+ dayNames: ['Zondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag'],
15
+ dayNamesShort: ['Zon','Maa','Din','Woe','Don','Vri','Zat'],
16
+ dayNamesMin: ['Zo','Ma','Di','Wo','Do','Vr','Za'],
17
+ dayStatus: 'DD', dateStatus: 'D, M d',
18
+ dateFormat: 'dd.mm.yy', firstDay: 1,
19
+ initStatus: 'Kies een datum', isRTL: false};
20
+ $.datepicker.setDefaults($.datepicker.regional['nl']);
21
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-no.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Norwegian initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Naimdjon Takhirov (naimdjon@gmail.com). */
3
+
4
+ $(document).ready(function(){
5
+ $.datepicker.regional['no'] = {clearText: 'Tøm', clearStatus: '',
6
+ closeText: 'Lukk', closeStatus: '',
7
+ prevText: '&laquo;Forrige', prevStatus: '',
8
+ nextText: 'Neste&raquo;', nextStatus: '',
9
+ currentText: 'I dag', currentStatus: '',
10
+ monthNames: ['Januar','Februar','Mars','April','Mai','Juni',
11
+ 'Juli','August','September','Oktober','November','Desember'],
12
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun',
13
+ 'Jul','Aug','Sep','Okt','Nov','Des'],
14
+ monthStatus: '', yearStatus: '',
15
+ weekHeader: 'Uke', weekStatus: '',
16
+ dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],
17
+ dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],
18
+ dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],
19
+ dayStatus: 'DD', dateStatus: 'D, M d',
20
+ dateFormat: 'yy-mm-dd', firstDay: 0,
21
+ initStatus: '', isRTL: false};
22
+ $.datepicker.setDefaults($.datepicker.regional['no']);
23
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-pl.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Polish initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['pl'] = {clearText: 'Wyczyść', clearStatus: 'Wyczyść obecną datę',
5
+ closeText: 'Zamknij', closeStatus: 'Zamknij bez zapisywania',
6
+ prevText: '&#x3c;Poprzedni', prevStatus: 'Pokaż poprzedni miesiąc',
7
+ nextText: 'Następny&#x3e;', nextStatus: 'Pokaż następny miesiąc',
8
+ currentText: 'Dziś', currentStatus: 'Pokaż aktualny miesiąc',
9
+ monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
10
+ 'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
11
+ monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
12
+ 'Lip','Sie','Wrz','Pa','Lis','Gru'],
13
+ monthStatus: 'Pokaż inny miesiąc', yearStatus: 'Pokaż inny rok',
14
+ weekHeader: 'Tydz', weekStatus: 'Tydzień roku',
15
+ dayNames: ['Niedziela','Poniedzialek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
16
+ dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],
17
+ dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],
18
+ dayStatus: 'Ustaw DD jako pierwszy dzień tygodnia', dateStatus: 'Wybierz D, M d',
19
+ dateFormat: 'yy-mm-dd', firstDay: 1,
20
+ initStatus: 'Wybierz datę', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['pl']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-pt-BR.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Brazilian initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Leonildo Costa Silva (leocsilva@gmail.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['pt-BR'] = {clearText: 'Limpar', clearStatus: '',
5
+ closeText: 'Fechar', closeStatus: '',
6
+ prevText: '&lt;Anterior', prevStatus: '',
7
+ nextText: 'Pr&oacute;ximo&gt;', nextStatus: '',
8
+ currentText: 'Hoje', currentStatus: '',
9
+ monthNames: ['Janeiro','Fevereiro','Mar&ccedil;o','Abril','Maio','Junho',
10
+ 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
11
+ monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
12
+ 'Jul','Ago','Set','Out','Nov','Dez'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Sm', weekStatus: '',
15
+ dayNames: ['Domingo','Segunda-feira','Ter&ccedil;a-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sabado'],
16
+ dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'],
17
+ dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'dd/mm/yy', firstDay: 0,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['pt-BR']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-ro.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Romanian initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Edmond L. (ll_edmond@walla.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['ro'] = {clearText: 'Curat', clearStatus: 'Sterge data curenta',
5
+ closeText: 'Inchide', closeStatus: 'Inchide fara schimbare',
6
+ prevText: '&#x3c;Anterior', prevStatus: 'Arata luna trecuta',
7
+ nextText: 'Urmator&#x3e;', nextStatus: 'Arata luna urmatoare',
8
+ currentText: 'Azi', currentStatus: 'Arata luna curenta',
9
+ monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Junie',
10
+ 'Julie','August','Septembrie','Octobrie','Noiembrie','Decembrie'],
11
+ monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun',
12
+ 'Jul', 'Aug', 'Sep', 'Oct', 'Noi', 'Dec'],
13
+ monthStatus: 'Arata o luna diferita', yearStatus: 'Arat un an diferit',
14
+ weekHeader: 'Sapt', weekStatus: 'Saptamana anului',
15
+ dayNames: ['Duminica', 'Luni', 'Marti', 'Miercuri', 'Joi', 'Vineri', 'Sambata'],
16
+ dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sam'],
17
+ dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sa'],
18
+ dayStatus: 'Seteaza DD ca prima saptamana zi', dateStatus: 'Selecteaza D, M d',
19
+ dateFormat: 'mm/dd/yy', firstDay: 0,
20
+ initStatus: 'Selecteaza o data', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['ro']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-ru.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Andrew Stromnov (stromnov@gmail.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['ru'] = {clearText: 'Очистить', clearStatus: '',
5
+ closeText: 'Закрыть', closeStatus: '',
6
+ prevText: '&lt;Пред', prevStatus: '',
7
+ nextText: 'След&gt;', nextStatus: '',
8
+ currentText: 'Сегодня', currentStatus: '',
9
+ monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
10
+ 'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
11
+ monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
12
+ 'Июл','Авг','Сен','Окт','Ноя','Дек'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Не', weekStatus: '',
15
+ dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
16
+ dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
17
+ dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'dd.mm.yy', firstDay: 1,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['ru']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-sk.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Slovak initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Vojtech Rinik (vojto@hmm.sk). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['sk'] = {clearText: 'Zmazať', clearStatus: '',
5
+ closeText: 'Zavrieť', closeStatus: '',
6
+ prevText: '&lt;Predchádzajúci', prevStatus: '',
7
+ nextText: 'Nasledujúci&gt;', nextStatus: '',
8
+ currentText: 'Dnes', currentStatus: '',
9
+ monthNames: ['Január','Február','Marec','Apríl','Máj','Jún',
10
+ 'Júl','August','September','Október','November','December'],
11
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',
12
+ 'Júl','Aug','Sep','Okt','Nov','Dec'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Ty', weekStatus: '',
15
+ dayNames: ['Nedel\'a','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'],
16
+ dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],
17
+ dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'dd.mm.yy', firstDay: 0,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['sk']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-sv.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Swedish initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Anders Ekdahl ( anders@nomadiz.se). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['sv'] = {clearText: 'Rensa', clearStatus: '',
5
+ closeText: 'Stäng', closeStatus: '',
6
+ prevText: '&laquo;Förra', prevStatus: '',
7
+ nextText: 'Nästa&raquo;', nextStatus: '',
8
+ currentText: 'Idag', currentStatus: '',
9
+ monthNames: ['Januari','Februari','Mars','April','Maj','Juni',
10
+ 'Juli','Augusti','September','Oktober','November','December'],
11
+ monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
12
+ 'Jul','Aug','Sep','Okt','Nov','Dec'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Ve', weekStatus: '',
15
+ dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'],
16
+ dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],
17
+ dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'yy-mm-dd', firstDay: 1,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['sv']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-th.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Thai initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by pipo (pipo@sixhead.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['th'] = {clearText: 'ลบ', clearStatus: '',
5
+ closeText: 'ปิด', closeStatus: '',
6
+ prevText: '&laquo;&nbsp;ย้อน', prevStatus: '',
7
+ nextText: 'ถัดไป&nbsp;&raquo;', nextStatus: '',
8
+ currentText: 'วันนี้', currentStatus: '',
9
+ monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน',
10
+ 'กรกฏาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'],
11
+ monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.',
12
+ 'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Sm', weekStatus: '',
15
+ dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'],
16
+ dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
17
+ dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'dd/mm/yy', firstDay: 0,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['th']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-tr.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Turkish initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Izzet Emre Erkan (kara@karalamalar.net). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['tr'] = {clearText: 'temizle', clearStatus: 'geçerli tarihi temizler',
5
+ closeText: 'kapat', closeStatus: 'sadece göstergeyi kapat',
6
+ prevText: '&#x3c;geri', prevStatus: 'önceki ayı göster',
7
+ nextText: 'ileri&#x3e', nextStatus: 'sonraki ayı göster',
8
+ currentText: 'bugün', currentStatus: '',
9
+ monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran',
10
+ 'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],
11
+ monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz',
12
+ 'Tem','Ağu','Eyl','Eki','Kas','Ara'],
13
+ monthStatus: 'başka ay', yearStatus: 'başka yıl',
14
+ weekHeader: 'Hf', weekStatus: 'Ayın haftaları',
15
+ dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],
16
+ dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
17
+ dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'],
18
+ dayStatus: 'Haftanın ilk gününü belirleyin', dateStatus: 'D, M d seçiniz',
19
+ dateFormat: 'dd.mm.yy', firstDay: 1,
20
+ initStatus: 'Bir tarih seçiniz', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['tr']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-uk.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Maxim Drogobitskiy (maxdao@gmail.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['uk'] = {clearText: 'Очистити', clearStatus: '',
5
+ closeText: 'Закрити', closeStatus: '',
6
+ prevText: '&lt;&lt;', prevStatus: '',
7
+ nextText: '&gt;&gt;', nextStatus: '',
8
+ currentText: 'Сьогодні', currentStatus: '',
9
+ monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень',
10
+ 'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],
11
+ monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер',
12
+ 'Лип','Сер','Вер','Жов','Лис','Гру'],
13
+ monthStatus: '', yearStatus: '',
14
+ weekHeader: 'Не', weekStatus: '',
15
+ dayNames: ['неділя','понеділок','вівторок','середа','четвер','пятниця','суббота'],
16
+ dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'],
17
+ dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'],
18
+ dayStatus: 'DD', dateStatus: 'D, M d',
19
+ dateFormat: 'dd.mm.yy', firstDay: 1,
20
+ initStatus: '', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['uk']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-zh-CN.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Chinese initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Cloudream (cloudream@gmail.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['zh-CN'] = {clearText: '清除', clearStatus: '清除已选日期',
5
+ closeText: '关闭', closeStatus: '不改变当前选择',
6
+ prevText: '&lt;上月', prevStatus: '显示上月',
7
+ nextText: '下月&gt;', nextStatus: '显示下月',
8
+ currentText: '今天', currentStatus: '显示本月',
9
+ monthNames: ['一月','二月','三月','四月','五月','六月',
10
+ '七月','八月','九月','十月','十一月','十二月'],
11
+ monthNamesShort: ['一','二','三','四','五','六',
12
+ '七','八','九','十','十一','十二'],
13
+ monthStatus: '选择月份', yearStatus: '选择年份',
14
+ weekHeader: '周', weekStatus: '年内周次',
15
+ dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
16
+ dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
17
+ dayNamesMin: ['日','一','二','三','四','五','六'],
18
+ dayStatus: '设置 DD 为一周起始', dateStatus: '选择 m月 d日, DD',
19
+ dateFormat: 'yy-mm-dd', firstDay: 1,
20
+ initStatus: '请选择日期', isRTL: false};
21
+ $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
22
+ });
js/jquery-ui-datepicker/i18n/ui.datepicker-zh-TW.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Chinese initialisation for the jQuery UI date picker plugin. */
2
+ /* Written by Ressol (ressol@gmail.com). */
3
+ jQuery(function($){
4
+ $.datepicker.regional['zh-TW'] = {
5
+ clearText: '清除', clearStatus: '清除已選日期',
6
+ closeText: '關閉', closeStatus: '不改變目前的選擇',
7
+ prevText: '&lt;上月', prevStatus: '顯示上月',
8
+ nextText: '下月&gt;', nextStatus: '顯示下月',
9
+ currentText: '今天', currentStatus: '顯示本月',
10
+ monthNames: ['一月','二月','三月','四月','五月','六月',
11
+ '七月','八月','九月','十月','十一月','十二月'],
12
+ monthNamesShort: ['一','二','三','四','五','六',
13
+ '七','八','九','十','十一','十二'],
14
+ monthStatus: '選擇月份', yearStatus: '選擇年份',
15
+ weekHeader: '周', weekStatus: '年內周次',
16
+ dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
17
+ dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
18
+ dayNamesMin: ['日','一','二','三','四','五','六'],
19
+ dayStatus: '設定 DD 為一周起始', dateStatus: '選擇 m月 d日, DD',
20
+ dateFormat: 'yy/mm/dd', firstDay: 1,
21
+ initStatus: '請選擇日期', isRTL: false};
22
+ $.datepicker.setDefaults($.datepicker.regional['zh-TW']);
23
+ });
langs/dbem-it_IT.mo CHANGED
Binary file
langs/dbem-it_IT.po CHANGED
@@ -2,7 +2,7 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: events-manager\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2009-03-17 16:34+0100\n"
6
  "PO-Revision-Date: \n"
7
  "Last-Translator: Davide Benini <cno@cnomania.it>\n"
8
  "Language-Team: \n"
@@ -526,6 +526,7 @@ msgstr "Filtro"
526
 
527
  #: dbem_events.php:920
528
  #: dbem_events.php:1196
 
529
  #: dbem_locations.php:225
530
  #: dbem_locations.php:233
531
  #: dbem_people.php:90
@@ -536,6 +537,7 @@ msgstr "Nome"
536
 
537
  #: dbem_events.php:921
538
  #: dbem_events.php:1249
 
539
  msgid "Location"
540
  msgstr "Luogo"
541
 
@@ -759,24 +761,47 @@ msgstr "Note sull'evento"
759
  msgid "Submit Event"
760
  msgstr "Invia evento"
761
 
762
- #: dbem_events.php:1316
763
- #: dbem_locations.php:392
764
- msgid " is missing!"
765
- msgstr "non è presente!"
 
 
 
 
 
 
 
 
 
 
 
 
 
766
 
767
- #: dbem_events.php:1335
768
- msgid "end date before begin date"
769
- msgstr "la data finale precede quella iniziale"
 
 
770
 
771
- #: dbem_events.php:1661
 
 
 
 
 
 
 
 
772
  msgid "You cannot enable Google Maps integration without setting an appropriate API key."
773
  msgstr "Non è possibile abilitare l'integrazione con Google Maps senza impostare una chiave API."
774
 
775
- #: dbem_events.php:1801
776
  msgid "Add an event"
777
  msgstr "Aggiungi un evento"
778
 
779
- #: dbem_events.php:1856
780
  #, php-format
781
  msgid "This page corresponds to <strong>Events Manager</strong> events page. Its content will be overriden by <strong>Events Manager</strong>. If you want to display your content, you can can assign another page to <strong>Events Manager</strong> in the the <a href='%s'>Settings</a>. "
782
  msgstr "Questa pagina corriponde alla pagina eventi di <strong>Events Manager</strong>. Il suo contenuto verrà sovrascritto da <strong>Events Manager</strong>. Se vuoi visualizzare il tuo contenuto, puoi assegnare ad <strong>Events Manager</strong> un'altra pagina, tramite le <a href='%s'>Opzioni</a>. "
@@ -861,20 +886,10 @@ msgid "Update location"
861
  msgstr "Aggiorna il luogo"
862
 
863
  #: dbem_locations.php:203
864
- #: events-manager.php:444
865
  msgid "Locations"
866
  msgstr "Luoghi"
867
 
868
- #: dbem_locations.php:226
869
- #: dbem_locations.php:234
870
- msgid "Address"
871
- msgstr "Indirizzo"
872
-
873
- #: dbem_locations.php:227
874
- #: dbem_locations.php:235
875
- msgid "Town"
876
- msgstr "Città"
877
-
878
  #: dbem_locations.php:262
879
  msgid "No venues have been inserted yet!"
880
  msgstr "Non sono ancora stati inseriti luoghi!"
@@ -896,6 +911,10 @@ msgstr "Selezionare un'immagine da caricare."
896
  msgid "A description of the location. You may include any kind of info here."
897
  msgstr "Una descrizione del luogo. In questo campo è possibile inserire qualsiasi tipo di informazione."
898
 
 
 
 
 
899
  #: dbem_locations.php:400
900
  msgid "The image file is too big! Maximum size:"
901
  msgstr "Il file dell'immagine è troppo grande! Dimensione massima:"
@@ -1025,15 +1044,15 @@ msgstr "Prenotazione confermata"
1025
  #: dbem_widgets.php:10
1026
  #: dbem_widgets.php:35
1027
  #: events-manager.php:44
1028
- #: events-manager.php:394
1029
- #: events-manager.php:395
1030
- #: events-manager.php:440
1031
  msgid "Events"
1032
  msgstr "Eventi"
1033
 
1034
  #: dbem_widgets.php:19
1035
  #: events-manager.php:50
1036
- #: events-manager.php:387
1037
  msgid "No events"
1038
  msgstr "Nessun evento"
1039
 
@@ -1084,38 +1103,40 @@ msgstr "Calendario eventi"
1084
  msgid "<li>No events in this location</li>"
1085
  msgstr "<li>Nessun evento in questo luogo</li>"
1086
 
1087
- #: events-manager.php:378
1088
  msgid "#_RESPNAME (#_RESPEMAIL) will attend #_NAME on #m #d, #Y. He wants to reserve #_SPACES spaces.<br/> Now there are #_RESERVEDSPACES spaces reserved, #_AVAILABLESPACES are still available.<br/>Yours faithfully,<br/>Events Manager"
1089
  msgstr "#_RESPNAME (#_RESPEMAIL) parteciperà all'evento #_NAME su #m #d, #Y. Vuole prenotare #_SPACES posti.<br/> Ora ci sono #_RESERVEDSPACES posti prenotati, #_AVAILABLESPACES sono ancora liberi.<br/>A presto,<br/>Events Manager"
1090
 
1091
- #: events-manager.php:379
1092
  msgid "Dear #_RESPNAME, <br/>you have successfully reserved #_SPACES space/spaces for #_NAME.<br/>Yours faithfully,<br/> #_CONTACTPERSON"
1093
  msgstr "#_RESPNAME, <br/>la prenotazione di #_SPACES posto/i a nome di #_NAME è andata a buon fine.<br/>A presto,<br/> #_CONTACTPERSON"
1094
 
1095
- #: events-manager.php:429
1096
  msgid "events"
1097
  msgstr "eventi"
1098
 
1099
- #: events-manager.php:442
1100
  msgid "Edit"
1101
  msgstr "Modifica"
1102
 
1103
- #: events-manager.php:443
1104
  msgid "Add new"
1105
  msgstr "Aggiungi nuovo"
1106
 
1107
- #: events-manager.php:445
1108
  msgid "People"
1109
  msgstr "Persone"
1110
 
1111
- #: events-manager.php:447
1112
  msgid "Events Manager Settings"
1113
  msgstr "Impostazioni di Events Manager"
1114
 
1115
- #: events-manager.php:447
1116
  msgid "Settings"
1117
  msgstr "Impostazioni"
1118
 
 
 
1119
  #~ msgid "Example:"
1120
  #~ msgstr "Esempio: "
1121
  #~ msgid "Example: 2008-11-28"
@@ -1172,8 +1193,6 @@ msgstr "Impostazioni"
1172
  #~ msgstr "Il formato della descrizione di ciascun elemento nel feed RSS."
1173
  #~ msgid "ID"
1174
  #~ msgstr "ID"
1175
- #~ msgid "Date"
1176
- #~ msgstr "Data"
1177
  #~ msgid "Time"
1178
  #~ msgstr "Ora"
1179
  #~ msgid "Latitude"
2
  msgstr ""
3
  "Project-Id-Version: events-manager\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2009-03-30 19:56+0100\n"
6
  "PO-Revision-Date: \n"
7
  "Last-Translator: Davide Benini <cno@cnomania.it>\n"
8
  "Language-Team: \n"
526
 
527
  #: dbem_events.php:920
528
  #: dbem_events.php:1196
529
+ #: dbem_events.php:1514
530
  #: dbem_locations.php:225
531
  #: dbem_locations.php:233
532
  #: dbem_people.php:90
537
 
538
  #: dbem_events.php:921
539
  #: dbem_events.php:1249
540
+ #: dbem_events.php:1514
541
  msgid "Location"
542
  msgstr "Luogo"
543
 
761
  msgid "Submit Event"
762
  msgstr "Invia evento"
763
 
764
+ #: dbem_events.php:1321
765
+ msgid "Missing fields: "
766
+ msgstr "Campi obbligatori mancanti:"
767
+
768
+ #: dbem_events.php:1323
769
+ msgid "Since the event is repeated, you must specify an event date."
770
+ msgstr "Per gli eventi ripetuti è necessario specificare una data di fine."
771
+
772
+ #: dbem_events.php:1514
773
+ msgid "Date"
774
+ msgstr "Data"
775
+
776
+ #: dbem_events.php:1514
777
+ #: dbem_locations.php:226
778
+ #: dbem_locations.php:234
779
+ msgid "Address"
780
+ msgstr "Indirizzo"
781
 
782
+ #: dbem_events.php:1514
783
+ #: dbem_locations.php:227
784
+ #: dbem_locations.php:235
785
+ msgid "Town"
786
+ msgstr "Città"
787
 
788
+ #: dbem_events.php:1531
789
+ msgid "Some required fields are missing:"
790
+ msgstr "Mancano alcuni campi obbligatori:"
791
+
792
+ #: dbem_events.php:1534
793
+ msgid "Since the event is repeated, you must specify an end date"
794
+ msgstr "Per gli eventi ripetuti è necessario specificare una data di fine"
795
+
796
+ #: dbem_events.php:1689
797
  msgid "You cannot enable Google Maps integration without setting an appropriate API key."
798
  msgstr "Non è possibile abilitare l'integrazione con Google Maps senza impostare una chiave API."
799
 
800
+ #: dbem_events.php:1828
801
  msgid "Add an event"
802
  msgstr "Aggiungi un evento"
803
 
804
+ #: dbem_events.php:1883
805
  #, php-format
806
  msgid "This page corresponds to <strong>Events Manager</strong> events page. Its content will be overriden by <strong>Events Manager</strong>. If you want to display your content, you can can assign another page to <strong>Events Manager</strong> in the the <a href='%s'>Settings</a>. "
807
  msgstr "Questa pagina corriponde alla pagina eventi di <strong>Events Manager</strong>. Il suo contenuto verrà sovrascritto da <strong>Events Manager</strong>. Se vuoi visualizzare il tuo contenuto, puoi assegnare ad <strong>Events Manager</strong> un'altra pagina, tramite le <a href='%s'>Opzioni</a>. "
886
  msgstr "Aggiorna il luogo"
887
 
888
  #: dbem_locations.php:203
889
+ #: events-manager.php:448
890
  msgid "Locations"
891
  msgstr "Luoghi"
892
 
 
 
 
 
 
 
 
 
 
 
893
  #: dbem_locations.php:262
894
  msgid "No venues have been inserted yet!"
895
  msgstr "Non sono ancora stati inseriti luoghi!"
911
  msgid "A description of the location. You may include any kind of info here."
912
  msgstr "Una descrizione del luogo. In questo campo è possibile inserire qualsiasi tipo di informazione."
913
 
914
+ #: dbem_locations.php:392
915
+ msgid " is missing!"
916
+ msgstr "non è presente!"
917
+
918
  #: dbem_locations.php:400
919
  msgid "The image file is too big! Maximum size:"
920
  msgstr "Il file dell'immagine è troppo grande! Dimensione massima:"
1044
  #: dbem_widgets.php:10
1045
  #: dbem_widgets.php:35
1046
  #: events-manager.php:44
1047
+ #: events-manager.php:398
1048
+ #: events-manager.php:399
1049
+ #: events-manager.php:444
1050
  msgid "Events"
1051
  msgstr "Eventi"
1052
 
1053
  #: dbem_widgets.php:19
1054
  #: events-manager.php:50
1055
+ #: events-manager.php:391
1056
  msgid "No events"
1057
  msgstr "Nessun evento"
1058
 
1103
  msgid "<li>No events in this location</li>"
1104
  msgstr "<li>Nessun evento in questo luogo</li>"
1105
 
1106
+ #: events-manager.php:382
1107
  msgid "#_RESPNAME (#_RESPEMAIL) will attend #_NAME on #m #d, #Y. He wants to reserve #_SPACES spaces.<br/> Now there are #_RESERVEDSPACES spaces reserved, #_AVAILABLESPACES are still available.<br/>Yours faithfully,<br/>Events Manager"
1108
  msgstr "#_RESPNAME (#_RESPEMAIL) parteciperà all'evento #_NAME su #m #d, #Y. Vuole prenotare #_SPACES posti.<br/> Ora ci sono #_RESERVEDSPACES posti prenotati, #_AVAILABLESPACES sono ancora liberi.<br/>A presto,<br/>Events Manager"
1109
 
1110
+ #: events-manager.php:383
1111
  msgid "Dear #_RESPNAME, <br/>you have successfully reserved #_SPACES space/spaces for #_NAME.<br/>Yours faithfully,<br/> #_CONTACTPERSON"
1112
  msgstr "#_RESPNAME, <br/>la prenotazione di #_SPACES posto/i a nome di #_NAME è andata a buon fine.<br/>A presto,<br/> #_CONTACTPERSON"
1113
 
1114
+ #: events-manager.php:433
1115
  msgid "events"
1116
  msgstr "eventi"
1117
 
1118
+ #: events-manager.php:446
1119
  msgid "Edit"
1120
  msgstr "Modifica"
1121
 
1122
+ #: events-manager.php:447
1123
  msgid "Add new"
1124
  msgstr "Aggiungi nuovo"
1125
 
1126
+ #: events-manager.php:449
1127
  msgid "People"
1128
  msgstr "Persone"
1129
 
1130
+ #: events-manager.php:451
1131
  msgid "Events Manager Settings"
1132
  msgstr "Impostazioni di Events Manager"
1133
 
1134
+ #: events-manager.php:451
1135
  msgid "Settings"
1136
  msgstr "Impostazioni"
1137
 
1138
+ #~ msgid "end date before begin date"
1139
+ #~ msgstr "la data finale precede quella iniziale"
1140
  #~ msgid "Example:"
1141
  #~ msgstr "Esempio: "
1142
  #~ msgid "Example: 2008-11-28"
1193
  #~ msgstr "Il formato della descrizione di ciascun elemento nel feed RSS."
1194
  #~ msgid "ID"
1195
  #~ msgstr "ID"
 
 
1196
  #~ msgid "Time"
1197
  #~ msgstr "Ora"
1198
  #~ msgid "Latitude"
readme.txt CHANGED
@@ -2,9 +2,9 @@
2
  Contributors: nutsmuggler
3
  Donate link: http://davidebenini.it
4
  Tags: events, manager, calendar, gigs, concert, maps, geotagging
5
- Requires at least: 2.5.1
6
  Tested up to: 2.7.1
7
- Stable tag: 2.0b4
8
 
9
  Manage events and display them in your blog. Includes recurring events, location management, calendar, Google map integration, RSVP.
10
 
@@ -18,7 +18,9 @@ Events Manager provides also a RSS feed, to keep your subscribers updated about
18
 
19
  Events manager is fully customisable; you can customise the amount of data displayed and their format in events lists, pages and in the RSS feed. You can choose to show or hide the events page, and change its title.
20
 
21
- Events Manager is fully localisable. IN this release you will find the Italian and Spanish localizations; German and Swedish will follow soon.
 
 
22
 
23
  == Installation ==
24
 
@@ -28,9 +30,9 @@ Events Manager is fully localisable. IN this release you will find the Italian a
28
 
29
  Events Manager 1.* adopters should:
30
 
31
- 1. backup their Wordpress database.
32
  2. deactivate Events Manager 1.*
33
- 3. delete Events Managers 1.* and upload Events Manager 2.* to their server
34
  4. activate Events Manager 2.*
35
 
36
  Events Manager should take care of your events database migration automatically, but since this is a beta release it's much better to perform a database backup, as previously suggested.
@@ -156,4 +158,12 @@ Added alternate start and end time selector for those installs not supporting th
156
  Removed "Mappa totale" from the gloabl map code
157
  Fixed a problem in the back button in the events table
158
  Removed some debug "echo" from the RSVP form
159
- Hopefully fixed a database scheme bug that some users signalled
 
 
 
 
 
 
 
 
2
  Contributors: nutsmuggler
3
  Donate link: http://davidebenini.it
4
  Tags: events, manager, calendar, gigs, concert, maps, geotagging
5
+ Requires at least: 2.7
6
  Tested up to: 2.7.1
7
+ Stable tag: 2.0rc1
8
 
9
  Manage events and display them in your blog. Includes recurring events, location management, calendar, Google map integration, RSVP.
10
 
18
 
19
  Events manager is fully customisable; you can customise the amount of data displayed and their format in events lists, pages and in the RSS feed. You can choose to show or hide the events page, and change its title.
20
 
21
+ Events Manager is fully localisable and aòlready localised in Italian, Spanish, German and Swedish.
22
+
23
+ For more information visit the [Documentation Page](http://davidebenini.it/wordpress-plugins/events-manager/) and [Support Forum](http://davidebenini.it/events-manager-forum/).
24
 
25
  == Installation ==
26
 
30
 
31
  Events Manager 1.* adopters should:
32
 
33
+ 1. backup the Wordpress database.
34
  2. deactivate Events Manager 1.*
35
+ 3. delete Events Managers 1.* and upload Events Manager 2.* to the server
36
  4. activate Events Manager 2.*
37
 
38
  Events Manager should take care of your events database migration automatically, but since this is a beta release it's much better to perform a database backup, as previously suggested.
158
  Removed "Mappa totale" from the gloabl map code
159
  Fixed a problem in the back button in the events table
160
  Removed some debug "echo" from the RSVP form
161
+ Hopefully fixed a database scheme bug that some users signalled
162
+
163
+ 2.0rc1
164
+ Added JS validation and fallback server-side validation
165
+ Added a dbem\_is\_rsvpable() conditional template tag
166
+ Fixed a css bug with some themes, preventing the correct visualisation of the map.
167
+ Fixed MySql bugs in the main view and in the activation page
168
+ Added the proper expanded PHP tags
169
+ Fixed links in the RSS feed