Thanks for pointing it out Adrian, I've restored the workeffort calendar styles in rev. 663842.
Regards Scott 2008/6/6 Adrian Crum <[EMAIL PROTECTED]>: > Why was the calendar CSS class removed in this commit? Now the workeffort > calendar screen layout is broken. > > -Adrian > > > [EMAIL PROTECTED] wrote: > >> Author: lektran >> Date: Thu Jun 5 01:45:10 2008 >> New Revision: 663501 >> >> URL: http://svn.apache.org/viewvc?rev=663501&view=rev >> Log: >> Replaced the Tigra calendar with Calendar Date Select ( >> http://code.google.com/p/calendardateselect/) - OFBIZ-1808 >> >> Added: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> (with props) >> Removed: >> ofbiz/trunk/framework/images/webapp/images/calendar.html >> ofbiz/trunk/framework/images/webapp/images/calendar1.js >> Modified: >> ofbiz/trunk/LICENSE >> ofbiz/trunk/NOTICE >> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >> ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >> ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >> ofbiz/trunk/framework/common/widget/CommonScreens.xml >> ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >> ofbiz/trunk/framework/images/webapp/images/maincss.css >> ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >> >> Modified: ofbiz/trunk/LICENSE >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/LICENSE?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/LICENSE (original) >> +++ ofbiz/trunk/LICENSE Thu Jun 5 01:45:10 2008 >> @@ -1184,6 +1184,7 @@ >> ofbiz/trunk/framework/base/lib/icu4j_3_6.jar >> ofbiz/trunk/framework/entity/lib/ofbiz-minerva.jar >> ofbiz/trunk/framework/images/webapp/images/htmledit/whizzywig_v55i.js >> +ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> ========================================================================= >> The MIT License >> @@ -2205,24 +2206,6 @@ >> of California, with venue lying in Santa Clara County, California. >> >> ========================================================================= >> -Apache OFBiz includes the Tigra Calendar HTML and JavaScript files: >> -ofbiz/trunk/framework/images/webapp/images/calendar.html >> -ofbiz/trunk/framework/images/webapp/images/calendar1.js >> -Tigra Calendar is licensed as follows: >> -========================================================================= >> -Title: Tigra Calendar >> -URL: http://www.softcomplex.com/products/tigra_calendar/ >> -Version: 3.2 >> -Date: 10/14/2002 (mm/dd/yyyy) >> -Feedback: [EMAIL PROTECTED] (specify product title in the >> subject) >> -Note: Permission given to use this script in ANY kind of applications if >> - header lines are left unchanged. >> -Note: Script consists of two files: calendar?.js and calendar.html >> -About us: Our company provides offshore IT consulting services. >> - Contact us at [EMAIL PROTECTED] if you have any programming task >> you >> - want to be handled by professionals. Our typical hourly rate is $20. >> - >> -========================================================================= >> Apache OFBiz includes the XML Schema files from the Open Applications >> Group, Inc >> NOTE: these files and the license are for an older version of the OAGIS >> specification, namely version 7.2.1. >> >> Modified: ofbiz/trunk/NOTICE >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/NOTICE?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/NOTICE (original) >> +++ ofbiz/trunk/NOTICE Thu Jun 5 01:45:10 2008 >> @@ -255,16 +255,6 @@ >> framework/images/webapp/images/pngbehavior.htc >> >> ========================================================================= >> -== Tigra Calendar Notice == >> -========================================================================= >> - >> -This product includes files developed by >> -Softcomplex (www.softcomplex.com): >> - >> -framework\images\webapp\images\calendar.html >> -framework\images\webapp\images\calendar1.js >> - >> -========================================================================= >> == JSON-LIB Notice == >> ========================================================================= >> >> Modified: >> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >> (original) >> +++ ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl Thu >> Jun 5 01:45:10 2008 >> @@ -21,10 +21,10 @@ >> <head> >> <title>Automation Groups - Main</title> >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> >> - <script language='javascript' >> src='<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>' >> type='text/javascript'></script> >> - <script language='javascript' >> src='<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>' >> type='text/javascript'></script> >> - <script language='javascript' >> src='<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>' >> type='text/javascript'></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <script language="javascript" >> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <link rel='stylesheet' >> href='<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>' >> type='text/css'> >> <link rel='stylesheet' >> href='<@ofbizContentUrl>/images/tabstyles.css</@ofbizContentUrl>' >> type='text/css'> >> <link rel='stylesheet' >> href='<@ofbizContentUrl>/ecommerce/images/blog.css</@ofbizContentUrl>' >> type='text/css'> >> >> Modified: ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml (original) >> +++ ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml Thu Jun 5 >> 01:45:10 2008 >> @@ -41,7 +41,7 @@ >> <!-- NOTE: this should be included on each screen that >> uses it to avoid including it in all screens: --> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <set field="layoutSettings.javaScripts[+0]" >> value="/images/prototypejs/validation.js" global="true"/> >> <set field="layoutSettings.javaScripts[+0]" >> value="/images/prototypejs/prototype.js" global="true"/> >> >> >> Modified: ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl (original) >> +++ ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl Thu Jun 5 >> 01:45:10 2008 >> @@ -22,9 +22,10 @@ >> <head> >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> >> <title>${title}</title> >> - <script language="javascript" >> src="<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <script language="javascript" >> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <script language="javascript" >> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <link rel="stylesheet" >> href="<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>" >> type="text/css"/> >> <script language="JavaScript" type="text/javascript"> >> >> Modified: ofbiz/trunk/framework/common/widget/CommonScreens.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/common/widget/CommonScreens.xml (original) >> +++ ofbiz/trunk/framework/common/widget/CommonScreens.xml Thu Jun 5 >> 01:45:10 2008 >> @@ -118,10 +118,10 @@ >> <set field="layoutSettings.rtlStyleSheets[+0]" >> value="/images/mainrtl.css" global="true"/> >> <!-- The default (global) java scripts --> >> <!-- NOTE: this should be included on each screen that >> uses it to avoid including it in all screens: <set >> field="layoutSettings.javaScripts[]" value="/images/dojo/dojo.js" >> global="true"/> --> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/prototypejs/prototype.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <!-- The default (global) shortcut icon --> >> <set field="layoutSettings.shortcutIcon" >> value="/images/ofbiz.ico" global="true"/> >> <!-- The default (global) logo --> >> @@ -227,10 +227,10 @@ >> <set field="layoutSettings.styleSheets[+0]" >> value="/images/maincss.css" global="true"/> >> <set field="layoutSettings.rtlStyleSheets[+0]" >> value="/images/mainrtl.css" global="true"/> >> <!-- The default (global) java scripts --> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/prototypejs/prototype.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <!-- The default (global) shortcut icon --> >> <set field="layoutSettings.shortcutIcon" >> value="/images/ofbiz.ico" global="true"/> >> <!-- The settings below are used for xsl-fo screens --> >> >> Added: ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js?rev=663501&view=auto >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> (added) >> +++ ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js Thu >> Jun 5 01:45:10 2008 >> @@ -0,0 +1,480 @@ >> +// CalendarDateSelect version 1.10.2 - a prototype based date picker >> +// Questions, comments, bugs? - email the Author - Tim Harper >> <"[EMAIL PROTECTED]".gsub("see", "c")> +if (typeof Prototype == >> 'undefined') alert("CalendarDateSelect Error: Prototype could not be found. >> Please make sure that your application's layout includes prototype.js (.g. >> <%= javascript_include_tag :defaults %>) *before* it includes >> calendar_date_select.js (.g. <%= calendar_date_select_includes %>)."); >> +if (Prototype.Version < "1.6") alert("Prototype 1.6.0 is required. If >> using earlier version of prototype, please use calendar_date_select version >> 1.8.3"); >> + >> +Element.addMethods({ >> + purgeChildren: function(element) { >> $A(element.childNodes).each(function(e){$(e).remove();}); }, >> + build: function(element, type, options, style) { >> + var newElement = Element.build(type, options, style); >> + element.appendChild(newElement); >> + return newElement; >> + } >> +}); >> + >> +Element.build = function(type, options, style) >> +{ >> + var e = $(document.createElement(type)); >> + $H(options).each(function(pair) { eval("e." + pair.key + " = >> pair.value" ); }); >> + if (style) + $H(style).each(function(pair) { eval("e.style." + >> pair.key + " = pair.value" ); }); >> + return e; >> +}; >> +nil = null; >> + >> +Date.one_day = 24*60*60*1000; >> +Date.weekdays = $w("S M T W T F S"); >> +Date.first_day_of_week = 0; >> +Date.months = $w("January February March April May June July August >> September October November December" ); >> +Date.padded2 = function(hour) { var padded2 = parseInt(hour, 10); if >> (hour < 10) padded2 = "0" + padded2; return padded2; } >> +Date.prototype.getPaddedMinutes = function() { return >> Date.padded2(this.getMinutes()); } >> +Date.prototype.getAMPMHour = function() { var hour = this.getHours(); >> return (hour == 0) ? 12 : (hour > 12 ? hour - 12 : hour ) } >> +Date.prototype.getAMPM = function() { return (this.getHours() < 12) ? >> "AM" : "PM"; } >> +Date.prototype.stripTime = function() { return new >> Date(this.getFullYear(), this.getMonth(), this.getDate());}; >> +Date.prototype.daysDistance = function(compare_date) { return >> Math.round((compare_date - this) / Date.one_day); }; >> +Date.prototype.toFormattedString = function(include_time){ >> + var hour, str; >> + str = Date.months[this.getMonth()] + " " + this.getDate() + ", " + >> this.getFullYear(); >> + + if (include_time) { hour = this.getHours(); str += " " + >> this.getAMPMHour() + ":" + this.getPaddedMinutes() + " " + this.getAMPM() } >> + return str; >> +} >> +Date.parseFormattedString = function(string) { return new Date(string);} >> +Math.floor_to_interval = function(n, i) { return Math.floor(n/i) * i;} >> +window.f_height = function() { return( [window.innerHeight ? >> window.innerHeight : null, document.documentElement ? >> document.documentElement.clientHeight : null, document.body ? >> document.body.clientHeight : null].select(function(x){return >> x>0}).first()||0); } >> +window.f_scrollTop = function() { return ([window.pageYOffset ? >> window.pageYOffset : null, document.documentElement ? >> document.documentElement.scrollTop : null, document.body ? >> document.body.scrollTop : null].select(function(x){return x>0}).first()||0 >> ); } >> + >> +_translations = { >> + "OK": "OK", >> + "Now": "Now", >> + "Today": "Today" >> +} >> +SelectBox = Class.create(); >> +SelectBox.prototype = { >> + initialize: function(parent_element, values, html_options, >> style_options) { >> + this.element = $(parent_element).build("select", html_options, >> style_options); >> + this.populate(values); >> + }, >> + populate: function(values) { >> + this.element.purgeChildren(); >> + var that = this; $A(values).each(function(pair) { if >> (typeof(pair)!="object") {pair = [pair, pair]}; that.element.build("option", >> { value: pair[1], innerHTML: pair[0]}) }); >> + }, >> + setValue: function(value) { >> + var e = this.element; >> + var matched = false; >> + $R(0, e.options.length - 1 ).each(function(i) { >> if(e.options[i].value==value.toString()) {e.selectedIndex = i; matched = >> true;}; } ); >> + return matched; >> + }, >> + getValue: function() { return $F(this.element)} >> +} >> +CalendarDateSelect = Class.create(); >> +CalendarDateSelect.prototype = { >> + initialize: function(target_element, options) { >> + this.target_element = $(target_element); // make sure it's an >> element, not a string >> + if (!this.target_element) { alert("Target element " + target_element >> + " not found!"); return false;} >> + if (this.target_element.tagName != "INPUT") this.target_element = >> this.target_element.down("INPUT") >> + + this.target_element.calendar_date_select = this; >> + this.last_click_at = 0; >> + // initialize the date control >> + this.options = $H({ >> + embedded: false, >> + popup: nil, >> + time: false, >> + buttons: true, >> + year_range: 10, >> + close_on_click: nil, >> + minute_interval: 5, >> + popup_by: this.target_element, >> + month_year: "dropdowns", >> + onchange: this.target_element.onchange, >> + valid_date_check: nil >> + }).merge(options || {}); >> + this.use_time = this.options.get("time"); >> + this.parseDate(); >> + this.callback("before_show") >> + this.initCalendarDiv(); >> + if(!this.options.get("embedded")) { >> + this.positionCalendarDiv() >> + // set the click handler to check if a user has clicked away from >> the document >> + Event.observe(document, "mousedown", this.closeIfClickedOut_handler >> = this.closeIfClickedOut.bindAsEventListener(this)); >> + Event.observe(document, "keypress", this.keyPress_handler = >> this.keyPress.bindAsEventListener(this)); >> + } >> + this.callback("after_show") >> + }, >> + positionCalendarDiv: function() { >> + var above = false; >> + var c_pos = this.calendar_div.cumulativeOffset(), c_left = c_pos[0], >> c_top = c_pos[1], c_dim = this.calendar_div.getDimensions(), c_height = >> c_dim.height, c_width = c_dim.width; + var w_top = window.f_scrollTop(), >> w_height = window.f_height(); >> + var e_dim = $(this.options.get("popup_by")).cumulativeOffset(), e_top >> = e_dim[1], e_left = e_dim[0], e_height = >> $(this.options.get("popup_by")).getDimensions().height, e_bottom = e_top + >> e_height; >> + + if ( (( e_bottom + c_height ) > (w_top + w_height)) && ( >> e_bottom - c_height > w_top )) above = true; >> + var left_px = e_left.toString() + "px", top_px = (above ? (e_top - >> c_height ) : ( e_top + e_height )).toString() + "px"; >> + + this.calendar_div.style.left = left_px; >> this.calendar_div.style.top = top_px; >> + + this.calendar_div.setStyle({visibility:""}); >> + + // draw an iframe behind the calendar -- ugly hack to make IE 6 >> happy >> + if(navigator.appName=="Microsoft Internet Explorer") this.iframe = >> $(document.body).build("iframe", {src: "javascript:false", className: >> "ie6_blocker"}, { left: left_px, top: top_px, height: >> c_height.toString()+"px", width: c_width.toString()+"px", border: "0px"}) >> + }, >> + initCalendarDiv: function() { >> + if (this.options.get("embedded")) { >> + var parent = this.target_element.parentNode; >> + var style = {} >> + } else { >> + var parent = document.body >> + var style = { position:"absolute", visibility: "hidden", left:0, >> top:0 } >> + } >> + this.calendar_div = $(parent).build('div', {className: >> "calendar_date_select"}, style); >> + + var that = this; >> + // create the divs >> + $w("top header body buttons footer bottom").each(function(name) { >> + eval("var " + name + "_div = that." + name + "_div = >> that.calendar_div.build('div', { className: 'cds_"+name+"' }, { clear: >> 'left'} ); "); >> + }); >> + + this.initHeaderDiv(); >> + this.initButtonsDiv(); >> + this.initCalendarGrid(); >> + this.updateFooter(" "); >> + + this.refresh(); >> + this.setUseTime(this.use_time); >> + }, >> + initHeaderDiv: function() { >> + var header_div = this.header_div; >> + this.close_button = header_div.build("a", { innerHTML: "x", href:"#", >> onclick:function () { this.close(); return false; >> }.bindAsEventListener(this), className: "close" }); >> + this.next_month_button = header_div.build("a", { innerHTML: ">", >> href:"#", onclick:function () { this.navMonth(this.date.getMonth() + 1 ); >> return false; }.bindAsEventListener(this), className: "next" }); >> + this.prev_month_button = header_div.build("a", { innerHTML: "<", >> href:"#", onclick:function () { this.navMonth(this.date.getMonth() - 1 ); >> return false; }.bindAsEventListener(this), className: "prev" }); >> + + if (this.options.get("month_year")=="dropdowns") { >> + this.month_select = new SelectBox(header_div, >> $R(0,11).map(function(m){return [Date.months[m], m]}), {className: "month", >> onchange: function () { this.navMonth(this.month_select.getValue()) >> }.bindAsEventListener(this)}); + this.year_select = new >> SelectBox(header_div, [], {className: "year", onchange: function () { >> this.navYear(this.year_select.getValue()) }.bindAsEventListener(this)}); + >> this.populateYearRange(); >> + } else { >> + this.month_year_label = header_div.build("span") >> + } >> + }, >> + initCalendarGrid: function() { >> + var body_div = this.body_div; >> + this.calendar_day_grid = []; >> + var days_table = body_div.build("table", { cellPadding: "0px", >> cellSpacing: "0px", width: "100%" }) >> + // make the weekdays! >> + var weekdays_row = days_table.build("thead").build("tr"); >> + Date.weekdays.each( function(weekday) { + >> weekdays_row.build("th", {innerHTML: weekday}); >> + }); >> + + var days_tbody = days_table.build("tbody") >> + // Make the days! >> + var row_number = 0, weekday; >> + for(var cell_index = 0; cell_index<42; cell_index++) >> + { >> + weekday = (cell_index+Date.first_day_of_week ) % 7; >> + if ( cell_index % 7==0 ) days_row = days_tbody.build("tr", >> {className: 'row_'+row_number++}); >> + (this.calendar_day_grid[cell_index] = days_row.build("td", { >> + calendar_date_select: this, >> + onmouseover: function () { >> this.calendar_date_select.dayHover(this); }, >> + onmouseout: function () { >> this.calendar_date_select.dayHoverOut(this) }, >> + onclick: function() { >> this.calendar_date_select.updateSelectedDate(this, true); }, >> + className: (weekday==0) || (weekday==6) ? " weekend" : "" >> //clear the class >> + }, >> + { cursor: "pointer" } >> + )).build("div"); >> + this.calendar_day_grid[cell_index]; >> + } >> + }, >> + initButtonsDiv: function() >> + { >> + var buttons_div = this.buttons_div; >> + if (this.options.get("time")) >> + { >> + var blank_time = $A(this.options.get("time")=="mixed" ? [[" - ", >> ""]] : []); >> + buttons_div.build("span", {innerHTML:"@", className: "at_sign"}); >> + + var t = new Date(); >> + this.hour_select = new SelectBox(buttons_div, >> + blank_time.concat($R(0,23).map(function(x) {t.setHours(x); return >> $A([t.getAMPMHour()+ " " + t.getAMPM(),x])} )), >> + { + calendar_date_select: this, + onchange: >> function() { this.calendar_date_select.updateSelectedDate( { hour: >> this.value });}, >> + className: "hour" + } >> + ); >> + buttons_div.build("span", {innerHTML:":", className: "seperator"}); >> + var that = this; >> + this.minute_select = new SelectBox(buttons_div, >> + blank_time.concat($R(0,59).select(function(x){return (x % >> that.options.get('minute_interval')==0)}).map(function(x){ return $A([ >> Date.padded2(x), x]); } ) ), >> + { + calendar_date_select: this, + onchange: >> function() { this.calendar_date_select.updateSelectedDate( {minute: >> this.value }) }, + className: "minute" + } >> + ); >> + + } else if (! this.options.get("buttons")) >> buttons_div.remove(); >> + + if (this.options.get("buttons")) { >> + buttons_div.build("span", {innerHTML: " "}); >> + if (this.options.get("time")=="mixed" || !this.options.get("time")) >> b = buttons_div.build("a", { >> + innerHTML: _translations["Today"], >> + href: "#", >> + onclick: function() {this.today(false); return >> false;}.bindAsEventListener(this) >> + }); >> + + if (this.options.get("time")=="mixed") >> buttons_div.build("span", {innerHTML: " | ", className:"button_seperator"}) >> + + if (this.options.get("time")) b = buttons_div.build("a", { >> + innerHTML: _translations["Now"], >> + href: "#", >> + onclick: function() {this.today(true); return >> false}.bindAsEventListener(this) >> + }); >> + + if (!this.options.get("embedded")) >> + { >> + buttons_div.build("span", {innerHTML: " "}); >> + buttons_div.build("a", { innerHTML: _translations["OK"], href: >> "#", onclick: function() {this.close(); return >> false;}.bindAsEventListener(this) }); >> + } >> + } >> + }, >> + refresh: function () >> + { >> + this.refreshMonthYear(); >> + this.refreshCalendarGrid(); >> + + this.setSelectedClass(); >> + this.updateFooter(); >> + }, >> + refreshCalendarGrid: function () { >> + this.beginning_date = new Date(this.date).stripTime(); >> + this.beginning_date.setDate(1); >> + this.beginning_date.setHours(12); // Prevent daylight savings time >> boundaries from showing a duplicate day >> + var pre_days = this.beginning_date.getDay() // draw some days before >> the fact >> + if (pre_days < 3) pre_days += 7; >> + this.beginning_date.setDate(1 - pre_days + Date.first_day_of_week); >> + + var iterator = new Date(this.beginning_date); >> + + var today = new Date().stripTime(); >> + var this_month = this.date.getMonth(); >> + vdc = this.options.get("valid_date_check"); >> + for (var cell_index = 0;cell_index<42; cell_index++) >> + { >> + day = iterator.getDate(); month = iterator.getMonth(); >> + cell = this.calendar_day_grid[cell_index]; >> + Element.remove(cell.childNodes[0]); div = cell.build("div", >> {innerHTML:day}); >> + if (month!=this_month) div.className = "other"; >> + cell.day = day; cell.month = month; cell.year = >> iterator.getFullYear(); >> + if (vdc) { if (vdc(iterator.stripTime())) >> cell.removeClassName("disabled"); else cell.addClassName("disabled") }; >> + iterator.setDate( day + 1); >> + } >> + + if (this.today_cell) this.today_cell.removeClassName("today"); >> + + if ( $R( 0, 41 ).include(days_until = >> this.beginning_date.stripTime().daysDistance(today)) ) { >> + this.today_cell = this.calendar_day_grid[days_until]; >> + this.today_cell.addClassName("today"); >> + } >> + }, >> + refreshMonthYear: function() { >> + var m = this.date.getMonth(); >> + var y = this.date.getFullYear(); >> + // set the month >> + if (this.options.get("month_year") == "dropdowns") + { >> + this.month_select.setValue(m, false); >> + + var e = this.year_select.element; + if >> (this.flexibleYearRange() && (!(this.year_select.setValue(y, false)) || >> e.selectedIndex <= 1 || e.selectedIndex >= e.options.length - 2 )) >> this.populateYearRange(); >> + + this.year_select.setValue(y); >> + + } else { >> + this.month_year_label.update( Date.months[m] + " " + y.toString() >> ); >> + } >> + }, >> + populateYearRange: function() { >> + this.year_select.populate(this.yearRange().toArray()); >> + }, >> + yearRange: function() { >> + if (!this.flexibleYearRange()) >> + return $R(this.options.get("year_range")[0], >> this.options.get("year_range")[1]); >> + + var y = this.date.getFullYear(); >> + return $R(y - this.options.get("year_range"), y + >> this.options.get("year_range")); >> + }, >> + flexibleYearRange: function() { return >> (typeof(this.options.get("year_range")) == "number"); }, >> + validYear: function(year) { if (this.flexibleYearRange()) { return >> true;} else { return this.yearRange().include(year);} }, >> + dayHover: function(element) { >> + var hover_date = new Date(this.selected_date); >> + hover_date.setYear(element.year); hover_date.setMonth(element.month); >> hover_date.setDate(element.day); >> + this.updateFooter(hover_date.toFormattedString(this.use_time)); >> + }, >> + dayHoverOut: function(element) { this.updateFooter(); }, >> + clearSelectedClass: function() {if (this.selected_cell) >> this.selected_cell.removeClassName("selected");}, >> + setSelectedClass: function() { >> + if (!this.selection_made) return; >> + this.clearSelectedClass() >> + if ($R(0,42).include( days_until = >> this.beginning_date.stripTime().daysDistance(this.selected_date.stripTime()) >> )) { >> + this.selected_cell = this.calendar_day_grid[days_until]; >> + this.selected_cell.addClassName("selected"); >> + } >> + }, >> + reparse: function() { this.parseDate(); this.refresh(); }, >> + dateString: function() { >> + return (this.selection_made) ? >> this.selected_date.toFormattedString(this.use_time) : " "; >> + }, >> + parseDate: function() >> + { >> + var value = $F(this.target_element).strip() >> + this.selection_made = (value != ""); >> + this.date = value=="" ? NaN : >> Date.parseFormattedString(this.options.get("date") || value); >> + if (isNaN(this.date)) this.date = new Date(); >> + if (!this.validYear(this.date.getFullYear())) this.date.setYear( >> (this.date.getFullYear() < this.yearRange().start) ? this.yearRange().start >> : this.yearRange().end); >> + this.selected_date = new Date(this.date); >> + this.use_time = /[0-9]:[0-9]{2}/.exec(value) ? true : false; >> + this.date.setDate(1); >> + }, >> + updateFooter:function(text) { if (!text) text = this.dateString(); >> this.footer_div.purgeChildren(); this.footer_div.build("span", {innerHTML: >> text }); }, >> + updateSelectedDate:function(partsOrElement, via_click) { >> + var parts = $H(partsOrElement); >> + if ((this.target_element.disabled || this.target_element.readOnly) && >> this.options.get("popup") != "force") return false; >> + if (parts.get("day")) { >> + var t_selected_date = this.selected_date, vdc = >> this.options.get("valid_date_check"); >> + for (var x = 0; x<=3; x++) >> t_selected_date.setDate(parts.get("day")); >> + t_selected_date.setYear(parts.get("year")); >> + t_selected_date.setMonth(parts.get("month")); >> + + if (vdc && ! vdc(t_selected_date.stripTime())) { return >> false; } >> + this.selected_date = t_selected_date; >> + this.selection_made = true; >> + } >> + + if (!isNaN(parts.get("hour"))) >> this.selected_date.setHours(parts.get("hour")); >> + if (!isNaN(parts.get("minute"))) this.selected_date.setMinutes( >> Math.floor_to_interval(parts.get("minute"), >> this.options.get("minute_interval")) ); >> + if (parts.get("hour") === "" || parts.get("minute") === "") + >> this.setUseTime(false); >> + else if (!isNaN(parts.get("hour")) || !isNaN(parts.get("minute"))) >> + this.setUseTime(true); >> + + this.updateFooter(); >> + this.setSelectedClass(); >> + + if (this.selection_made) this.updateValue(); >> + if (this.closeOnClick()) { this.close(); } >> + if (via_click && !this.options.get("embedded")) { >> + if ((new Date() - this.last_click_at) < 333) this.close(); >> + this.last_click_at = new Date(); >> + } >> + }, >> + closeOnClick: function() { >> + if (this.options.get("embedded")) return false; >> + if (this.options.get("close_on_click")===nil ) >> + return (this.options.get("time")) ? false : true >> + else >> + return (this.options.get("close_on_click")) >> + }, >> + navMonth: function(month) { (target_date = new >> Date(this.date)).setMonth(month); return (this.navTo(target_date)); }, >> + navYear: function(year) { (target_date = new >> Date(this.date)).setYear(year); return (this.navTo(target_date)); }, >> + navTo: function(date) { >> + if (!this.validYear(date.getFullYear())) return false; >> + this.date = date; >> + this.date.setDate(1); >> + this.refresh(); >> + this.callback("after_navigate", this.date); >> + return true; >> + }, >> + setUseTime: function(turn_on) { >> + this.use_time = this.options.get("time") && >> (this.options.get("time")=="mixed" ? turn_on : true) // force use_time to >> true if time==true && time!="mixed" >> + if (this.use_time && this.selected_date) { // only set hour/minute if >> a date is already selected >> + var minute = >> Math.floor_to_interval(this.selected_date.getMinutes(), >> this.options.get("minute_interval")); >> + var hour = this.selected_date.getHours(); >> + + this.hour_select.setValue(hour); >> + this.minute_select.setValue(minute) >> + } else if (this.options.get("time")=="mixed") { >> + this.hour_select.setValue(""); this.minute_select.setValue(""); >> + } >> + }, >> + updateValue: function() { >> + var last_value = this.target_element.value; >> + this.target_element.value = this.dateString(); >> + if (last_value!=this.target_element.value) this.callback("onchange"); >> + }, >> + today: function(now) { >> + var d = new Date(); this.date = new Date(); >> + var o = $H({ day: d.getDate(), month: d.getMonth(), year: >> d.getFullYear(), hour: d.getHours(), minute: d.getMinutes()}); >> + if ( ! now ) o = o.merge({hour: "", minute:""}); + >> this.updateSelectedDate(o, true); >> + this.refresh(); >> + }, >> + close: function() { >> + if (this.closed) return false; >> + this.callback("before_close"); >> + this.target_element.calendar_date_select = nil; >> + Event.stopObserving(document, "mousedown", >> this.closeIfClickedOut_handler); >> + Event.stopObserving(document, "keypress", this.keyPress_handler); >> + this.calendar_div.remove(); this.closed = true; >> + if (this.iframe) this.iframe.remove(); >> + if (this.target_element.type!="hidden") this.target_element.focus(); >> + this.callback("after_close"); >> + }, >> + closeIfClickedOut: function(e) { >> + if (! $(Event.element(e)).descendantOf(this.calendar_div) ) >> this.close(); >> + }, >> + keyPress: function(e) { >> + if (e.keyCode==Event.KEY_ESC) this.close(); >> + }, >> + callback: function(name, param) { if (this.options.get(name)) { >> this.options.get(name).bind(this.target_element)(param); } } >> + + >> +} >> + >> +// OFBiz addition: modified format_iso_date.js, included here for >> convenience >> +Date.prototype.toFormattedString = function(include_time) { >> + var str = this.getFullYear() + "-" + Date.padded2(this.getMonth() + >> 1) + "-" +Date.padded2(this.getDate()); >> + if (include_time) { >> + str += " " + this.getHours() + ":" + this.getPaddedMinutes() + >> ":" + Date.padded2(this.getSeconds()); >> + if (this.getMilliseconds > 0) { >> + str += "." + (this.getMilliseconds() < 100 ? '0' : '') + >> (this.getMilliseconds() < 10 ? '0' : '') + this.getMilliseconds(); >> + } else { >> + str += ".0"; >> + } >> + } >> + return str; >> +}; >> + >> +Date.parseFormattedString = function (string) { >> + var arr_datetime = string.split(' '); >> + var str_date = arr_datetime[0]; >> + var str_time = arr_datetime[1]; >> + >> + var arr_date = str_date.split('-'); >> + var dt_date = new Date(); >> + dt_date.setDate(1); >> + dt_date.setMonth(arr_date[1]-1); >> + if (arr_date[0] < 100) arr_date[2] = Number(arr_date[0]) + >> (arr_date[0] < 40 ? 2000 : 1900); >> + dt_date.setFullYear(arr_date[0]); >> + var dt_numdays = new Date(arr_date[0], arr_date[1], 0); >> + dt_date.setDate(arr_date[2]); >> + >> + var arr_time = String(str_time ? str_time : '').split(':'); >> + dt_date.setHours(arr_time[0]); >> + dt_date.setMinutes(arr_time[1]); >> + var arr_sec = String(arr_time[2] ? arr_time[2] : '').split('.'); >> + dt_date.setSeconds(arr_sec[0]); >> + if (!arr_sec[1]) dt_date.setMilliseconds(0); >> + dt_date.setMilliseconds(arr_sec[1]); >> + >> + return dt_date; >> +}; >> + >> +// OFBiz addition: functions to call the calendar >> +function call_cal(target, datetime) { + new >> CalendarDateSelect(target, {time:true, year_range:10} ); +} >> + >> +function call_cal_notime(target, datetime) { + new >> CalendarDateSelect(target, {year_range:10} ); +} >> \ No newline at end of file >> >> Propchange: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Propchange: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> >> ------------------------------------------------------------------------------ >> svn:keywords = "Date Rev Author URL Id" >> >> Propchange: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> >> ------------------------------------------------------------------------------ >> svn:mime-type = text/plain >> >> Modified: ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/fieldlookup.js?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/fieldlookup.js (original) >> +++ ofbiz/trunk/framework/images/webapp/images/fieldlookup.js Thu Jun 5 >> 01:45:10 2008 >> @@ -18,9 +18,25 @@ >> */ >> // ================= FIELD LOOKUP METHODS ============================ >> +var NS4 = (navigator.appName.indexOf("Netscape")>=0 && >> !document.getElementById)? true : false; >> +var IE4 = (document.all && !document.getElementById)? true : false; >> +var IE5 = (document.getElementById && document.all)? true : false; >> +var NS6 = (document.getElementById && >> navigator.appName.indexOf("Netscape")>=0 )? true: false; >> +var mx, my; >> + >> +function moveobj(evt) { >> + if (NS4 || NS6) { >> + mx=evt.screenX; >> + my=evt.screenY; >> + } else if (IE5 || IE4) { >> + mx=event.screenX; >> + my=event.screenY; >> + } >> +} >> var target = null; >> var target2 = null; >> +var lookups = []; >> function call_fieldlookup(target, viewName, >> formName,viewWidth,viewheight) { var fieldLookup = new >> fieldLookup1(target); >> Modified: ofbiz/trunk/framework/images/webapp/images/maincss.css >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/maincss.css?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/maincss.css (original) >> +++ ofbiz/trunk/framework/images/webapp/images/maincss.css Thu Jun 5 >> 01:45:10 2008 >> @@ -1722,41 +1722,138 @@ >> /* ===== Table decorator - Calendar ===== */ >> -.calendar { >> -border-right: 0.1em solid #cccccc; >> +.calendar_date_select { >> + color:white; >> + border:#777 1px solid; >> + display:block; >> + width:195px; >> + z-index: 1000; >> +} >> +/* this is a fun ie6 hack to get drop downs to stay behind the popup >> window. This should always be just underneath .calendar_date_select */ >> +iframe.ie6_blocker { >> + position: absolute; >> + z-index: 999; >> } >> -.calendar tr td { >> -border-bottom: 0.1em solid #cccccc; >> -border-left: 0.1em solid #cccccc; >> -vertical-align: top; >> -padding: 0.5em; >> +.calendar_date_select thead th { >> + font-weight:bold; >> + background-color: #000; >> + border-top:1px solid #777; >> + border-bottom:2px solid #333; >> + color: white !important; >> } >> -.calendar .header-row td { >> -background-color: #69a9d9; >> -border-bottom: 0.1em solid #cccccc; >> -border-left: 0.1em solid #cccccc; >> -color: #ffffff; >> -height: auto; >> -text-align: center; >> +.calendar_date_select .cds_buttons { >> + text-align:center; >> + padding:5px 0px; >> + background-color: #555; >> } >> -.calendar tr td .add-new { >> -float: right; >> +.calendar_date_select .cds_footer { >> + background-color: black; >> + padding:3px; >> + font-size:12px; >> + text-align:center; >> } >> -.calendar tr td .h1 { >> -color: #000099; >> -float: left; >> +.calendar_date_select table { >> + margin: 0px; >> + padding: 0px; >> } >> -.calendar .current-period { >> -background-color: #ffffcc; >> + >> +.calendar_date_select .cds_header { >> + background-color: #ccc; >> + border-bottom: 2px solid #aaa; >> + text-align:center; >> } >> -.calendar .active-period { >> -background-color: #eeeeee; >> +.calendar_date_select .cds_header span { >> + font-size:15px; >> + color: black; >> + font-weight: bold; >> +} >> + >> +.calendar_date_select select { font-size:11px;} >> + >> +.calendar_date_select .cds_header a:hover { >> + color: white; >> +} >> +.calendar_date_select .cds_header a { >> + width:22px; >> + height:20px; >> + text-decoration: none; >> + font-size:14px; >> + color:black !important; >> +} >> + >> +.calendar_date_select .cds_header a.prev { >> + float:left; >> +} >> +.calendar_date_select .cds_header a.next { >> + float:right; >> +} >> +.calendar_date_select .cds_header a.close { >> + float:right; >> + display:none; >> +} >> + >> +.calendar_date_select .cds_header select.month { >> + width:90px; >> +} >> + >> +.calendar_date_select .cds_header select.year { >> + width:61px; >> +} >> + >> +.calendar_date_select .cds_buttons a { >> + color: white; >> + font-size: 9px; >> +} >> +.calendar_date_select td { >> + font-size:12px; >> + width: 24px; >> + height: 21px; >> + text-align:center; >> + vertical-align: middle; >> + background-color: #666666; >> +} >> +.calendar_date_select td.weekend { >> + background-color: #606060; >> +} >> + >> +.calendar_date_select td div { >> + color: #fff; >> +} >> +.calendar_date_select td div.other { >> + color: #888; >> +} >> +.calendar_date_select td.selected div { >> + color:black; >> +} >> + >> +.calendar_date_select tbody td { >> + border-bottom: 1px solid #555; >> +} >> +.calendar_date_select td.selected { >> + background-color:white; >> +} >> + >> +.calendar_date_select td:hover { >> + background-color:#ccc; >> +} >> + >> +.calendar_date_select td.today { >> + border: 1px dashed #999; >> +} >> + >> +.calendar_date_select td.disabled div { >> + color: #454545; >> +} >> + >> + >> +.fieldWithErrors .calendar_date_select { >> + border: 2px solid red; >> } >> /* ======================= */ >> >> Modified: ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >> (original) >> +++ ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl Thu Jun >> 5 01:45:10 2008 >> @@ -19,9 +19,10 @@ >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> >> <title>${(decoratedContent.subcontent.title.render)?default("CMS Site >> Generic Title (Set subcontent 'title' on your content!)")}</title> >> <link rel="shortcut icon" href="/images/ofbiz.ico" /> - <script >> language="javascript" src="/images/calendar1.js" >> type="text/javascript"></script> >> - <script language="javascript" src="/images/selectall.js" >> type="text/javascript"></script> >> + <script language="javascript" src="/images/prototypejs/prototype.js" >> type="text/javascript"></script> >> <script language="javascript" src="/images/fieldlookup.js" >> type="text/javascript"></script> >> + <script language="javascript" src="/images/selectall.js" >> type="text/javascript"></script> >> + <script language="javascript" src="/images/calendar_date_select.js" >> type="text/javascript"></script> >> <link rel="stylesheet" href="/images/ecommain.css" type="text/css"/> >> <link rel="stylesheet" href="/ecommerce/images/blog.css" >> type="text/css"/> >> >> Modified: >> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >> (original) >> +++ ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml Thu >> Jun 5 01:45:10 2008 >> @@ -34,9 +34,10 @@ >> of stylesheets to the first and second position --> >> <set field="layoutSettings.styleSheets[+0]" >> value="/images/maincss.css" global="true"/> >> <!-- The default (global) java scripts --> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/prototypejs/prototype.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <set field="layoutSettings.companyName" >> from-field="uiLabelMap.GoogleBaseCompanyName" global="true"/> >> <set field="layoutSettings.companySubtitle" >> from-field="uiLabelMap.GoogleBaseApplication" global="true"/> >> >> >> >>
