EZP Maintenance Mode - Version 0.6.2

Version Description

  • Bugfix: User theme directory wasn't created on startup
  • Bugfix: Hiding logo if not defined
Download this release

Release Info

Developer bobriley
Plugin Icon 128x128 EZP Maintenance Mode
Version 0.6.2
Comparing to
See all releases

Code changes from version 0.6.1 to 0.6.2

classes/class-easy-pie-mm-constants.php CHANGED
@@ -35,7 +35,7 @@ if (!class_exists('Easy_Pie_MM_Constants')) {
35
  const OPTION_NAME = 'easy-pie-mm-options';
36
  const MAIN_PAGE_KEY = 'easy-pie-mm-main-page';
37
  const PLUGIN_SLUG = 'easy-pie-maintenance-mode';
38
- const PLUGIN_VERSION = "0.6.1"; // RSR Version
39
 
40
  /* Pseudo constants */
41
 
35
  const OPTION_NAME = 'easy-pie-mm-options';
36
  const MAIN_PAGE_KEY = 'easy-pie-mm-main-page';
37
  const PLUGIN_SLUG = 'easy-pie-maintenance-mode';
38
+ const PLUGIN_VERSION = "0.6.2"; // RSR Version
39
 
40
  /* Pseudo constants */
41
 
classes/class-easy-pie-mm.php CHANGED
@@ -1,5 +1,4 @@
1
  <?php
2
-
3
  /*
4
  Easy Pie Maintenance Mode Plugin
5
  Copyright (C) 2013, Synthetic Thought LLC
@@ -8,7 +7,7 @@
8
  Easy Pie Maintenance Mode Plugin is distributed under the GNU General Public License, Version 3,
9
  June 2007. Copyright (C) 2007 Free Software Foundation, Inc., 51 Franklin
10
  St, Fifth Floor, Boston, MA 02110, USA
11
-
12
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
13
  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
14
  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@@ -19,7 +18,7 @@
19
  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
21
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
- */
23
 
24
  require_once("class-easy-pie-utility.php");
25
  require_once("class-easy-pie-plugin-base.php");
@@ -117,8 +116,8 @@ if (!class_exists('Easy_Pie_MM')) {
117
  $manifest = Easy_Pie_MM_Utility::load_manifest($active_manifest_path);
118
  }
119
 
120
- // $filename = $manifest->dir . "/" . $manifest->page;
121
-
122
  $contents = file_get_contents($manifest->dir . "/" . $manifest->page);
123
  $contents = $this->replace_page_template_fields($contents, $manifest->mini_theme_url);
124
 
@@ -164,13 +163,6 @@ if (!class_exists('Easy_Pie_MM')) {
164
  public static function activate() {
165
 
166
  Easy_Pie_MM_Utility::debug("activate");
167
-
168
- if(file_exists(Easy_Pie_MM_Utility::$MINI_THEMES_USER_DIRECTORY) == FALSE) {
169
-
170
- $dirCreate = mkdir(Easy_Pie_MM_Utility::$MINI_THEMES_USER_DIRECTORY, 0755, true);
171
-
172
- Easy_Pie_MM_Utility::debug(Easy_Pie_MM_Utility::__("Tried to create ") . Easy_Pie_MM_Utility::$MINI_THEMES_USER_DIRECTORY . "=" . $dirCreate);
173
- }
174
  }
175
 
176
  public static function deactivate() {
@@ -227,6 +219,7 @@ if (!class_exists('Easy_Pie_MM')) {
227
 
228
  register_setting(Easy_Pie_MM_Constants::MAIN_PAGE_KEY, Easy_Pie_MM_Constants::OPTION_NAME, array($this, 'validate_options'));
229
 
 
230
  $this->add_settings_sections();
231
  $this->add_filters();
232
  }
@@ -255,6 +248,16 @@ if (!class_exists('Easy_Pie_MM')) {
255
  return $optionArray[strtolower($subkey)];
256
  }
257
 
 
 
 
 
 
 
 
 
 
 
258
  // <editor-fold defaultstate="collapsed" desc=" Settings Logic ">
259
 
260
  function upgrade_processing() {
@@ -355,21 +358,20 @@ if (!class_exists('Easy_Pie_MM')) {
355
  ?>
356
  <div>
357
  <input style="margin-right:5px;" value="1" id="<?php echo $id; ?>" type="checkbox" name="<?php echo $optionExpression; ?>" <?php echo $checkedText; ?> >Yes</input>
358
- <?php
359
- if (isset($small_text)) {
360
- echo "<p><small>" . $small_text . "</small></p>";
361
- }
362
- ?>
363
- </div>
364
  <?php
365
- }
366
-
367
-
368
- public function render_logo_field() {
369
- $options = get_option(Easy_Pie_MM_Constants::OPTION_NAME);
370
- $optionExpression = Easy_Pie_MM_Constants::OPTION_NAME . "[logo_url]";
371
- $currentValue = $options["logo_url"];
372
  ?>
 
 
 
 
 
 
 
 
 
373
 
374
  <div>
375
  <input id="easy-pie-mm-field-logo" type="text" name="<?php echo $optionExpression; ?>" size="58" value="<?php echo $currentValue; ?>" />
@@ -381,7 +383,6 @@ if (!class_exists('Easy_Pie_MM')) {
381
  } else {
382
  $displayModifier = "";
383
  }
384
-
385
  ?>
386
 
387
  <div >
@@ -398,7 +399,7 @@ if (!class_exists('Easy_Pie_MM')) {
398
 
399
  public function render_theme_section() {
400
  // echo 'TODO: Theme is used to change what is displayed. Blah blah blah..';
401
- echo '<div id="bob">';
402
  }
403
 
404
  public function render_template_fields_section() {
@@ -409,18 +410,18 @@ if (!class_exists('Easy_Pie_MM')) {
409
 
410
  private function get_template_path($page_template_key) {
411
 
412
-
413
  $__dir__ = dirname(__FILE__);
414
-
415
-
416
  return $__dir__ . "../mini-themes/" . $page_template_key;
417
  }
418
 
419
  public function render_active_theme_selector($args) {
420
 
421
-
422
  $__dir__ = dirname(__FILE__);
423
-
424
  $path = $__dir__ . "../mini-themes/";
425
 
426
  $dirs = glob($path . "*", GLOB_ONLYDIR);
@@ -449,7 +450,7 @@ if (!class_exists('Easy_Pie_MM')) {
449
  $caption_text = $this->__('User Defined:') . $manifest->title;
450
  } else {
451
 
452
- $caption_text = $manifest->title . ' ' .$this->__('by') . " <a style='color:#DDD' target='_blank' href='" . $manifest->website_url . "'>" . $manifest->author_name . "</a>";
453
  }
454
 
455
 
@@ -468,10 +469,10 @@ if (!class_exists('Easy_Pie_MM')) {
468
  <li>
469
  <img style="display:none" idx="<?php echo $displayIndex; ?>" src="<?php echo $slidePath ?>" title="<?php echo $caption_text; ?>" onclick="jQuery('#<?php echo $id; ?>').attr('value', '<?php echo $manifest->key; ?>');" />
470
  </li>
471
- <?php
472
- $displayIndex++;
473
- }
474
- ?>
475
  <!-- ... (repeat for every image in the gallery)-->
476
  </ul>
477
 
@@ -503,72 +504,72 @@ if (!class_exists('Easy_Pie_MM')) {
503
  <li>
504
  <img style="display:none" idx="<?php echo $displayIndex; ?>" src="<?php echo $slidePath ?>" onclick="jQuery('#<?php echo $id; ?>').attr('value', '<?php echo $manifest->key; ?>');" />
505
  </li>
506
- <?php
507
- $displayIndex++;
508
- }
509
- ?>
510
  </ul>
511
 
512
  <input displayIndex="<?php echo $startingIndex; ?>" style="visibility:hidden" id="<?php echo $id; ?>" name="<?php echo $optionExpression; ?>" value="<?php echo $currentValue; ?>"/>
513
- <?php
514
- }
515
 
516
- public function validate_options($raw_input_array) {
517
 
518
- // Create our array for storing the validated options
519
- //$output = array();
520
- $output = get_option(Easy_Pie_MM_Constants::OPTION_NAME);
521
 
522
- $this->scrub_checkbox_value($raw_input_array, 'enabled');
523
- $this->scrub_checkbox_value($raw_input_array, '503_redirect');
524
 
525
- // Loop through each of the incoming options
526
- foreach ($raw_input_array as $key => $value) {
527
 
528
- // Check to see if the current option has a value. If so, process it.
529
- if (isset($raw_input_array[$key])) {
530
 
531
- // Strip all HTML and PHP tags and properly handle quoted strings
532
- //$output[$key] = strip_tags(stripslashes($raw_input_array[$key]));
533
- $output[$key] = $raw_input_array[$key];
534
- }
535
  }
536
-
537
- // return apply_filters(Easy_Pie_MM_Constants::MAIN_PAGE_KEY, $output, $raw_input_array);
538
- return $output;
539
  }
540
 
541
- private function scrub_checkbox_value(&$array, $key) {
 
 
542
 
543
- if (!array_key_exists($key, $array)) {
544
 
545
- $array[$key] = false;
546
- }
 
547
  }
 
548
 
549
- // </editor-fold>
550
 
551
- public function add_to_admin_menu() {
552
 
553
- // RSR TODO: Localize main page title and menu entry
554
- //$page_hook_suffix = add_options_page("Easy Pie Maintenance Mode", "Maintenance Mode", "manage_options", Easy_Pie_MM_Constants::MAIN_PAGE_KEY, array($this, 'display_options_page'));
555
- $page_hook_suffix = add_options_page("Easy Pie Maintenance Mode", "Maintenance Mode", "manage_options", Easy_Pie_MM_Constants::PLUGIN_SLUG, array($this, 'display_options_page'));
556
 
557
- add_action('admin_print_scripts-' . $page_hook_suffix, array($this, 'enqueue_scripts'));
558
 
559
- //Apply Styles
560
- add_action('admin_print_styles-' . $page_hook_suffix, array($this, 'enqueue_styles'));
561
- }
 
 
562
 
563
- // </editor-fold>
564
 
565
- function display_options_page() {
566
-
567
- $__dir__ = dirname(__FILE__);
568
-
569
- include($__dir__ . '/../pages/page-options.php');
570
- }
571
 
 
572
  }
573
 
574
- }
 
 
1
  <?php
 
2
  /*
3
  Easy Pie Maintenance Mode Plugin
4
  Copyright (C) 2013, Synthetic Thought LLC
7
  Easy Pie Maintenance Mode Plugin is distributed under the GNU General Public License, Version 3,
8
  June 2007. Copyright (C) 2007 Free Software Foundation, Inc., 51 Franklin
9
  St, Fifth Floor, Boston, MA 02110, USA
10
+
11
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
12
  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
13
  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
19
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
20
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21
+ */
22
 
23
  require_once("class-easy-pie-utility.php");
24
  require_once("class-easy-pie-plugin-base.php");
116
  $manifest = Easy_Pie_MM_Utility::load_manifest($active_manifest_path);
117
  }
118
 
119
+ // $filename = $manifest->dir . "/" . $manifest->page;
120
+
121
  $contents = file_get_contents($manifest->dir . "/" . $manifest->page);
122
  $contents = $this->replace_page_template_fields($contents, $manifest->mini_theme_url);
123
 
163
  public static function activate() {
164
 
165
  Easy_Pie_MM_Utility::debug("activate");
 
 
 
 
 
 
 
166
  }
167
 
168
  public static function deactivate() {
219
 
220
  register_setting(Easy_Pie_MM_Constants::MAIN_PAGE_KEY, Easy_Pie_MM_Constants::OPTION_NAME, array($this, 'validate_options'));
221
 
222
+ $this->init_user_theme_directory();
223
  $this->add_settings_sections();
224
  $this->add_filters();
225
  }
248
  return $optionArray[strtolower($subkey)];
249
  }
250
 
251
+ private function init_user_theme_directory() {
252
+
253
+ if (file_exists(Easy_Pie_MM_Utility::$MINI_THEMES_USER_DIRECTORY) == FALSE) {
254
+
255
+ $dirCreate = mkdir(Easy_Pie_MM_Utility::$MINI_THEMES_USER_DIRECTORY, 0755, true);
256
+
257
+ Easy_Pie_MM_Utility::debug(Easy_Pie_MM_Utility::__("Tried to create ") . Easy_Pie_MM_Utility::$MINI_THEMES_USER_DIRECTORY . "=" . $dirCreate);
258
+ }
259
+ }
260
+
261
  // <editor-fold defaultstate="collapsed" desc=" Settings Logic ">
262
 
263
  function upgrade_processing() {
358
  ?>
359
  <div>
360
  <input style="margin-right:5px;" value="1" id="<?php echo $id; ?>" type="checkbox" name="<?php echo $optionExpression; ?>" <?php echo $checkedText; ?> >Yes</input>
 
 
 
 
 
 
361
  <?php
362
+ if (isset($small_text)) {
363
+ echo "<p><small>" . $small_text . "</small></p>";
364
+ }
 
 
 
 
365
  ?>
366
+ </div>
367
+ <?php
368
+ }
369
+
370
+ public function render_logo_field() {
371
+ $options = get_option(Easy_Pie_MM_Constants::OPTION_NAME);
372
+ $optionExpression = Easy_Pie_MM_Constants::OPTION_NAME . "[logo_url]";
373
+ $currentValue = $options["logo_url"];
374
+ ?>
375
 
376
  <div>
377
  <input id="easy-pie-mm-field-logo" type="text" name="<?php echo $optionExpression; ?>" size="58" value="<?php echo $currentValue; ?>" />
383
  } else {
384
  $displayModifier = "";
385
  }
 
386
  ?>
387
 
388
  <div >
399
 
400
  public function render_theme_section() {
401
  // echo 'TODO: Theme is used to change what is displayed. Blah blah blah..';
402
+ echo '<div id="theme-section">';
403
  }
404
 
405
  public function render_template_fields_section() {
410
 
411
  private function get_template_path($page_template_key) {
412
 
413
+
414
  $__dir__ = dirname(__FILE__);
415
+
416
+
417
  return $__dir__ . "../mini-themes/" . $page_template_key;
418
  }
419
 
420
  public function render_active_theme_selector($args) {
421
 
422
+
423
  $__dir__ = dirname(__FILE__);
424
+
425
  $path = $__dir__ . "../mini-themes/";
426
 
427
  $dirs = glob($path . "*", GLOB_ONLYDIR);
450
  $caption_text = $this->__('User Defined:') . $manifest->title;
451
  } else {
452
 
453
+ $caption_text = $manifest->title . ' ' . $this->__('by') . " <a style='color:#DDD' target='_blank' href='" . $manifest->website_url . "'>" . $manifest->author_name . "</a>";
454
  }
455
 
456
 
469
  <li>
470
  <img style="display:none" idx="<?php echo $displayIndex; ?>" src="<?php echo $slidePath ?>" title="<?php echo $caption_text; ?>" onclick="jQuery('#<?php echo $id; ?>').attr('value', '<?php echo $manifest->key; ?>');" />
471
  </li>
472
+ <?php
473
+ $displayIndex++;
474
+ }
475
+ ?>
476
  <!-- ... (repeat for every image in the gallery)-->
477
  </ul>
478
 
504
  <li>
505
  <img style="display:none" idx="<?php echo $displayIndex; ?>" src="<?php echo $slidePath ?>" onclick="jQuery('#<?php echo $id; ?>').attr('value', '<?php echo $manifest->key; ?>');" />
506
  </li>
507
+ <?php
508
+ $displayIndex++;
509
+ }
510
+ ?>
511
  </ul>
512
 
513
  <input displayIndex="<?php echo $startingIndex; ?>" style="visibility:hidden" id="<?php echo $id; ?>" name="<?php echo $optionExpression; ?>" value="<?php echo $currentValue; ?>"/>
514
+ <?php
515
+ }
516
 
517
+ public function validate_options($raw_input_array) {
518
 
519
+ // Create our array for storing the validated options
520
+ //$output = array();
521
+ $output = get_option(Easy_Pie_MM_Constants::OPTION_NAME);
522
 
523
+ $this->scrub_checkbox_value($raw_input_array, 'enabled');
524
+ $this->scrub_checkbox_value($raw_input_array, '503_redirect');
525
 
526
+ // Loop through each of the incoming options
527
+ foreach ($raw_input_array as $key => $value) {
528
 
529
+ // Check to see if the current option has a value. If so, process it.
530
+ if (isset($raw_input_array[$key])) {
531
 
532
+ // Strip all HTML and PHP tags and properly handle quoted strings
533
+ //$output[$key] = strip_tags(stripslashes($raw_input_array[$key]));
534
+ $output[$key] = $raw_input_array[$key];
 
535
  }
 
 
 
536
  }
537
 
538
+ // return apply_filters(Easy_Pie_MM_Constants::MAIN_PAGE_KEY, $output, $raw_input_array);
539
+ return $output;
540
+ }
541
 
542
+ private function scrub_checkbox_value(&$array, $key) {
543
 
544
+ if (!array_key_exists($key, $array)) {
545
+
546
+ $array[$key] = false;
547
  }
548
+ }
549
 
550
+ // </editor-fold>
551
 
552
+ public function add_to_admin_menu() {
553
 
554
+ // RSR TODO: Localize main page title and menu entry
555
+ //$page_hook_suffix = add_options_page("Easy Pie Maintenance Mode", "Maintenance Mode", "manage_options", Easy_Pie_MM_Constants::MAIN_PAGE_KEY, array($this, 'display_options_page'));
556
+ $page_hook_suffix = add_options_page("Easy Pie Maintenance Mode", "Maintenance Mode", "manage_options", Easy_Pie_MM_Constants::PLUGIN_SLUG, array($this, 'display_options_page'));
557
 
558
+ add_action('admin_print_scripts-' . $page_hook_suffix, array($this, 'enqueue_scripts'));
559
 
560
+ //Apply Styles
561
+ add_action('admin_print_styles-' . $page_hook_suffix, array($this, 'enqueue_styles'));
562
+ }
563
+
564
+ // </editor-fold>
565
 
566
+ function display_options_page() {
567
 
568
+ $__dir__ = dirname(__FILE__);
 
 
 
 
 
569
 
570
+ include($__dir__ . '/../pages/page-options.php');
571
  }
572
 
573
+ }
574
+
575
+ }
easy-pie-maintenance-mode.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Easy Pie Maintenance Mode
4
  Plugin URI: http://easypiewp.com/easy-pie-maintenance-mode-faq/
5
  Description: Lets people know that your site is temporarily down.
6
- Version: 0.6.1
7
  Author: Bob Riley
8
  Author URI: http://www.easypiewp.com
9
  Text Domain: easy-pie-maintenance-mode
3
  Plugin Name: Easy Pie Maintenance Mode
4
  Plugin URI: http://easypiewp.com/easy-pie-maintenance-mode-faq/
5
  Description: Lets people know that your site is temporarily down.
6
+ Version: 0.6.2
7
  Author: Bob Riley
8
  Author URI: http://www.easypiewp.com
9
  Text Domain: easy-pie-maintenance-mode
js/functions.js CHANGED
@@ -67,7 +67,7 @@ easyPie.MM.getCookie = function(c_name)
67
 
68
 
69
  jQuery(document).ready(function($) {
70
- $(".form-table img").css({"display":"block"});
71
 
72
  var displayIndex = $("#easy-pie-mm-theme").attr("displayIndex");
73
 
67
 
68
 
69
  jQuery(document).ready(function($) {
70
+ $("#theme-section img").css({"display":"block"});
71
 
72
  var displayIndex = $("#easy-pie-mm-theme").attr("displayIndex");
73
 
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Easy Pie Maintenance Mode ===
2
  Contributors: bobriley
3
  Donate link: http://easypiewp.com/donate/
4
- Tags: maintenance, admin, administration, construction, under construction, maintenance mode, offline, unavailable, launch
5
  Requires at least: 3.5
6
  Tested up to: 3.7.1
7
- Stable tag: 0.6.1
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -24,6 +24,7 @@ Need to let your visitors know your site is temporarily down or is under constru
24
  * **User Mini Themes.** Change the built-in themes or create your own mini-themes from scratch.
25
 
26
  Thanks to the developers of [bxSlider](http://bxslider.com) for their cool image viewer.
 
27
  == Installation ==
28
 
29
  1. Click Plugins/Add New from the WordPress admin panel
@@ -81,6 +82,10 @@ Then, please [let me know](mailto:bob@easypiewp.com) what's going on, with as mu
81
 
82
  == Changelog ==
83
 
 
 
 
 
84
  = 0.6.1 =
85
  * A couple small bug fixes
86
 
@@ -100,15 +105,17 @@ Then, please [let me know](mailto:bob@easypiewp.com) what's going on, with as mu
100
 
101
  == Upgrade Notice ==
102
 
 
 
 
103
  = 0.6.1 =
104
- * Made screen draw smoother, small bug fixes
105
 
106
  = 0.6.0 =
107
- * This version adds custom themes, custom CSS, a notification that your site is in maintenance mode, PHP 5.2 compatibility and small bug fixes. Note: If you have hacked an existing theme please back it up before update because the v0.5 plugin directory is completely wiped on update.
108
 
109
  = 0.5.1 =
110
- * Small fix for PHP 5.2.x. If you aren't running PHP 5.2.x you don't need this although it won't hurt anything if you update anyway.
111
 
112
  = 0.5 =
113
- * Initial release
114
-
1
  === Easy Pie Maintenance Mode ===
2
  Contributors: bobriley
3
  Donate link: http://easypiewp.com/donate/
4
+ Tags: maintenance, maintenance mode, admin, administration, construction, under construction, underconstruction, coming soon, landing page, offline, unavailable, launch
5
  Requires at least: 3.5
6
  Tested up to: 3.7.1
7
+ Stable tag: 0.6.2
8
  License: GPLv3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
24
  * **User Mini Themes.** Change the built-in themes or create your own mini-themes from scratch.
25
 
26
  Thanks to the developers of [bxSlider](http://bxslider.com) for their cool image viewer.
27
+
28
  == Installation ==
29
 
30
  1. Click Plugins/Add New from the WordPress admin panel
82
 
83
  == Changelog ==
84
 
85
+ = 0.6.2 =
86
+ * Bugfix: User theme directory wasn't created on startup
87
+ * Bugfix: Hiding logo if not defined
88
+
89
  = 0.6.1 =
90
  * A couple small bug fixes
91
 
105
 
106
  == Upgrade Notice ==
107
 
108
+ = 0.6.2 =
109
+ Fixed upgrade bug that prevented viewing themes on admin panel.
110
+
111
  = 0.6.1 =
112
+ Made screen draw smoother, small bug fixes
113
 
114
  = 0.6.0 =
115
+ This version adds custom themes, custom CSS, a notification that your site is in maintenance mode, PHP 5.2 compatibility and small bug fixes. Note: If you have hacked an existing theme please back it up before update because the v0.5 plugin directory is completely wiped on update.
116
 
117
  = 0.5.1 =
118
+ Small fix for PHP 5.2.x. If you aren't running PHP 5.2.x you don't need this although it won't hurt anything if you update anyway.
119
 
120
  = 0.5 =
121
+ Initial release