From 8ae604cbb402a2e8a42412dbc4367fdf12672727 Mon Sep 17 00:00:00 2001 From: carlgmathisen <> Date: Mon, 1 Dec 2008 13:18:33 +0000 Subject: Issue 29 - position for popup in TDatePicker/TActiveDatePicker --- HISTORY | 1 + .../source/prado/activecontrols/activedatepicker.js | 7 +++++++ .../source/prado/datepicker/datepicker.js | 21 ++++++++++----------- framework/Web/UI/WebControls/TDatePicker.php | 1 + 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/HISTORY b/HISTORY index 04fdd673..a0ca371b 100644 --- a/HISTORY +++ b/HISTORY @@ -8,6 +8,7 @@ ENH: Issue#36 - Refactored TRatingList/TActiveRatingList, and added some docs (B ENH: Issue#52 - Upgraded to TinyMCE 3.2.1 ENH: Issue#72 - Add wildcard support to TUrlMapping (friendly-urls) (Michael) ENH: Issue#77 - TJsonService missing exception messages (Carl) +ENH: Issue#29 - Ability to specify position of popup TDatePicker (Carl) NEW: Issue#51 - Additional template tag (Carl) Version 3.1.3 November 1, 2008 diff --git a/framework/Web/Javascripts/source/prado/activecontrols/activedatepicker.js b/framework/Web/Javascripts/source/prado/activecontrols/activedatepicker.js index 27c2aeba..87b48bf3 100755 --- a/framework/Web/Javascripts/source/prado/activecontrols/activedatepicker.js +++ b/framework/Web/Javascripts/source/prado/activecontrols/activedatepicker.js @@ -11,6 +11,7 @@ Prado.WebUI.TActiveDatePicker = Class.extend(Prado.WebUI.TDatePicker, this.weekSlot = new Array(6); this.minimalDaysInFirstWeek = 4; this.selectedDate = this.newDate(); + this.positionMode = 'Bottom'; //which element to trigger to show the calendar if(this.options.Trigger) @@ -23,6 +24,12 @@ Prado.WebUI.TActiveDatePicker = Class.extend(Prado.WebUI.TDatePicker, this.trigger = this.control; var triggerEvent = this.options.TriggerEvent || "focus"; } + + // Popup position + if(this.options.PositionMode == 'Top') + { + this.positionMode = this.options.PositionMode; + } Object.extend(this,options); diff --git a/framework/Web/Javascripts/source/prado/datepicker/datepicker.js b/framework/Web/Javascripts/source/prado/datepicker/datepicker.js index 13637f6d..a16cc3d6 100644 --- a/framework/Web/Javascripts/source/prado/datepicker/datepicker.js +++ b/framework/Web/Javascripts/source/prado/datepicker/datepicker.js @@ -609,20 +609,11 @@ Prado.WebUI.TDatePicker.prototype = { var pos = this.control.positionedOffset(); - if(this.positionMode=='Top') - { - pos[1] = (document.body.clientHeight - pos[1]); - this._calDiv.style.bottom = (pos[1]-1) + "px"; - } - else - { - pos[1] += this.getDatePickerOffsetHeight(); - this._calDiv.style.top = (pos[1]-1) + "px"; - } + pos[1] += this.getDatePickerOffsetHeight(); + this._calDiv.style.top = (pos[1]-1) + "px"; this._calDiv.style.display = "block"; this._calDiv.style.left = pos[0] + "px"; - this.ieHack(false); this.documentClickEvent = this.hideOnClick.bindEvent(this); this.documentKeyDownEvent = this.keyPressed.bindEvent(this); Event.observe(document.body, "click", this.documentClickEvent); @@ -634,6 +625,14 @@ Prado.WebUI.TDatePicker.prototype = } Event.observe(document,"keydown", this.documentKeyDownEvent); this.showing = true; + + if(this.positionMode=='Top') + { + this._calDiv.style.top = ((pos[1]-1) - this.getDatePickerOffsetHeight() - this._calDiv.offsetHeight) + 'px'; + if(Prado.Browser().ie) + this.iePopup = this._calDiv.style.top; + } + this.ieHack(false); } }, diff --git a/framework/Web/UI/WebControls/TDatePicker.php b/framework/Web/UI/WebControls/TDatePicker.php index 916902cd..770099eb 100644 --- a/framework/Web/UI/WebControls/TDatePicker.php +++ b/framework/Web/UI/WebControls/TDatePicker.php @@ -64,6 +64,7 @@ Prado::using('System.Web.UI.WebControls.TTextBox'); * input field. * * @author Wei Zhuo + * @author Carl G. Mathisen * @version $Id$ * @package System.Web.UI.WebControls * @since 3.0 -- cgit v1.2.3