From 9cd588b39a1dcdbe8d495138460b9e4d4ee8d568 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Mon, 9 Jun 2014 16:50:43 -0400 Subject: [PATCH] Updates for schedule app also updates for php5.3 --- Toolkit/Schedule/Calendar.php | 24 +-- Toolkit/Schedule/CalendarMonthDecorator.php | 4 +- Toolkit/Schedule/Database/tables/schedule.sql | 3 +- css/colorPicker.css | 29 +++ libjs/jquery.colorPicker.js | 166 ++++++++++++++++++ 5 files changed, 211 insertions(+), 15 deletions(-) create mode 100644 css/colorPicker.css create mode 100644 libjs/jquery.colorPicker.js diff --git a/Toolkit/Schedule/Calendar.php b/Toolkit/Schedule/Calendar.php index b93d00e..903ad2e 100644 --- a/Toolkit/Schedule/Calendar.php +++ b/Toolkit/Schedule/Calendar.php @@ -4,15 +4,15 @@ class Toolkit_Schedule_Calendar { /** * buildCalendar - * + * * @param type $month * @param type $year * @param type $dates - * @return string + * @return string */ public function buildCalendar($month, $year, $dates = array()) { - + $month = $month + 0; $year = $year + 0; $mCal = new Calendar_Month_Weekdays( @@ -20,11 +20,11 @@ class Toolkit_Schedule_Calendar $month, 0 ); - $wrapper = new Calendar_Decorator_Wrapper(&$mCal); + $wrapper = new Calendar_Decorator_Wrapper($mCal); $wrapper->build($dates); $calYear = $wrapper->thisYear(); $calMonthName = date( - 'F', + 'F', mktime( 0, 0, @@ -67,7 +67,7 @@ class Toolkit_Schedule_Calendar $html .= $day->thisMonth() . '/' . $day->thisDay() . '/' . $day->thisYear(); $html .= '">'.$day->thisDay().''; } - + if ($day->isLast()) { $html .= ' '; @@ -81,12 +81,12 @@ class Toolkit_Schedule_Calendar '; return $html; } - + /** * getDepartureColors - * + * * @param type $scheduleId - * @return type + * @return type */ public function getDepartureColors($scheduleId) { @@ -116,12 +116,12 @@ class Toolkit_Schedule_Calendar } return $colors; } - + /** * getDepartureDates - * + * * @param type $scheduleId - * @return Calendar_Day + * @return Calendar_Day */ public function getDepartureDates($scheduleId) { diff --git a/Toolkit/Schedule/CalendarMonthDecorator.php b/Toolkit/Schedule/CalendarMonthDecorator.php index bb66889..224eb0e 100644 --- a/Toolkit/Schedule/CalendarMonthDecorator.php +++ b/Toolkit/Schedule/CalendarMonthDecorator.php @@ -5,9 +5,9 @@ class Toolkit_Schedule_CalendarMonthDecorator { public function Toolkit_Schedule_CalendarMonthDecorator(&$Calendar) { - parent::Calendar_Decorator(&$Calendar); + parent::Calendar_Decorator($Calendar); } - + public function thisDay() { return parent::thisDay(); diff --git a/Toolkit/Schedule/Database/tables/schedule.sql b/Toolkit/Schedule/Database/tables/schedule.sql index ab4b169..db5841a 100644 --- a/Toolkit/Schedule/Database/tables/schedule.sql +++ b/Toolkit/Schedule/Database/tables/schedule.sql @@ -2,8 +2,9 @@ CREATE TABLE boats.schedules ( id SERIAL, name TEXT, active BOOLEAN DEFAULT false, +schedule_year INTEGER, PRIMARY KEY (id) ); GRANT ALL ON boats.schedules TO nobody; -GRANT ALL ON boats.schedules_id_seq TO nobody; \ No newline at end of file +GRANT ALL ON boats.schedules_id_seq TO nobody; diff --git a/css/colorPicker.css b/css/colorPicker.css new file mode 100644 index 0000000..01b7743 --- /dev/null +++ b/css/colorPicker.css @@ -0,0 +1,29 @@ +div.color_picker { + height: 16px; + width: 16px; + padding: 0 !important; + border: 1px solid #ccc; + cursor: pointer; + line-height: 16px; +} + +div#color_selector { + width: 110px; + position: absolute; + border: 1px solid #598FEF; + background-color: #EFEFEF; + padding: 2px; +} + div#color_custom {width: 100%; float:left } + div#color_custom label {font-size: 95%; color: #2F2F2F; margin: 5px 2px; width: 25%} + div#color_custom input {margin: 5px 2px; padding: 0; font-size: 95%; border: 1px solid #000; width: 65%; } + +div.color_swatch { + height: 12px; + width: 12px; + border: 1px solid #000; + margin: 2px; + float: left; + cursor: pointer; + line-height: 12px; +} diff --git a/libjs/jquery.colorPicker.js b/libjs/jquery.colorPicker.js new file mode 100644 index 0000000..50d2072 --- /dev/null +++ b/libjs/jquery.colorPicker.js @@ -0,0 +1,166 @@ +/** + * Really Simple Color Picker in jQuery + * + * Copyright (c) 2008 Lakshan Perera (www.laktek.com) + * Licensed under the MIT (MIT-LICENSE.txt) licenses. + * + */ + +(function($){ + $.fn.colorPicker = function(){ + if(this.length > 0) buildSelector(); + return this.each(function(i) { + buildPicker(this)}); + }; + + var selectorOwner; + var selectorShowing = true; + + buildPicker = function(element){ + //build color picker + control = $("
 
") + control.css('background-color', $(element).val()); + + //bind click event to color picker + control.bind("click", toggleSelector); + + //add the color picker section + $(element).after(control); + + //add even listener to input box + $(element).bind("change", function() { + selectedValue = toHex($(element).val()); + $(element).next(".color_picker").css("background-color", selectedValue); + }); + + //hide the input box + $(element).hide(); + + }; + + buildSelector = function(){ + selector = $("
"); + + //add color pallete + $.each($.fn.colorPicker.defaultColors, function(i){ + swatch = $("
 
") + swatch.css("background-color", "#" + this); + swatch.bind("click", function(e){ changeColor($(this).css("background-color")) }); + swatch.bind("mouseover", function(e){ + $(this).css("border-color", "#598FEF"); + $("input#color_value").val(toHex($(this).css("background-color"))); + }); + swatch.bind("mouseout", function(e){ + $(this).css("border-color", "#000"); + $("input#color_value").val(toHex($(selectorOwner).css("background-color"))); + }); + + swatch.appendTo(selector); + }); + + //add HEX value field + hex_field = $(""); + hex_field.bind("keydown", function(event){ + if(event.keyCode == 13) {changeColor($(this).val());} + if(event.keyCode == 27) {toggleSelector()} + }); + + $("
").append(hex_field).appendTo(selector); + + $("body").append(selector); + selector.hide(); + }; + + checkMouse = function(event){ + //check the click was on selector itself or on selectorOwner + var selector = "div#color_selector"; + var selectorParent = $(event.target).parents(selector).length; + if(event.target == $(selector)[0] || event.target == selectorOwner || selectorParent > 0) return + + hideSelector(); + } + + hideSelector = function(){ + var selector = $("div#color_selector"); + + $(document).unbind("mousedown", checkMouse); + selector.hide(); + selectorShowing = false + } + + showSelector = function(){ + var selector = $("div#color_selector"); + + //alert($(selectorOwner).offset().top); + + selector.css({ + top: $(selectorOwner).offset().top + ($(selectorOwner).outerHeight()), + left: $(selectorOwner).offset().left + }); + hexColor = $(selectorOwner).prev("input").val(); + $("input#color_value").val(hexColor); + selector.show(); + + //bind close event handler + $(document).bind("mousedown", checkMouse); + selectorShowing = true + } + + toggleSelector = function(event){ + selectorOwner = this; + selectorShowing ? hideSelector() : showSelector(); + } + + changeColor = function(value){ + if(selectedValue = toHex(value)){ + $(selectorOwner).css("background-color", selectedValue); +// alert(selectedValue); +// alert($(selectorOwner).prev("input").val()); + $(selectorOwner).prev("input").val(selectedValue).change(); + + //close the selector + hideSelector(); + } + }; + + //converts RGB string to HEX - inspired by http://code.google.com/p/jquery-color-utils + toHex = function(color){ + //valid HEX code is entered + if(color.match(/[0-9a-fA-F]{3}$/) || color.match(/[0-9a-fA-F]{6}$/)){ + color = (color.charAt(0) == "#") ? color : ("#" + color); + } + //rgb color value is entered (by selecting a swatch) + else if(color.match(/^rgb\(([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5]),[ ]{0,1}([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5]),[ ]{0,1}([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])\)$/)){ + var c = ([parseInt(RegExp.$1),parseInt(RegExp.$2),parseInt(RegExp.$3)]); + + var pad = function(str){ + if(str.length < 2){ + for(var i = 0,len = 2 - str.length ; i